diff --git a/client-sdks/platform/openapi.json b/client-sdks/platform/openapi.json index 9acdfeb03..3cbfcb1ff 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","project.encryption","project.ai-gateway","project.remote-bindings"],"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,"pattern":"^(?:[0-9a-fA-F]{40}|[0-9a-fA-F]{64})$","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,"description":"The author identity recorded by Git. This is not guaranteed to be an RFC-valid email address.","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."},"customerConnections":{"type":"object","nullable":true,"properties":{"schemaVersion":{"type":"number","enum":[1]},"connections":{"type":"object","properties":{"deployment":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]}},"required":["enabled"],"additionalProperties":false},"keys":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]},"applicationEncryption":{"type":"boolean","enum":[true]}},"required":["enabled","applicationEncryption"],"additionalProperties":false},"models":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]},"allowedProviders":{"type":"array","items":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic","databricks","openai"]},"minItems":1,"maxItems":6},"requirements":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string","minLength":1,"maxLength":256},"clientApis":{"type":"array","items":{"type":"string","enum":["openai-chat","openai-responses","anthropic-messages"]},"minItems":1,"maxItems":3},"required":{"type":"boolean"}},"required":["publicModelId","clientApis","required"],"additionalProperties":false},"maxItems":100}},"required":["enabled","allowedProviders","requirements"],"additionalProperties":false},"storage":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]},"access":{"type":"string","enum":["read-write"]}},"required":["enabled","access"],"additionalProperties":false},"registry":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]},"repositories":{"type":"array","items":{"type":"string","minLength":1,"maxLength":128},"maxItems":100},"credentialPolicy":{"type":"string","enum":["pull-only","push-and-pull"]}},"required":["enabled","repositories","credentialPolicy"],"additionalProperties":false}},"additionalProperties":false}},"default":null,"required":["schemaVersion","connections"],"additionalProperties":false,"description":"Customer infrastructure offered by this Project through exact built-in or application-authored sources."},"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","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","nullable":true},"stack":{"allOf":[{"$ref":"#/components/schemas/StackByPlatform"}],"nullable":true}},"required":["id","version","stack"]},"supportedPlatforms":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","machines","local","test"],"description":"Represents the target cloud platform."}},"setupItems":{"type":"array","items":{"type":"string","enum":["alien-stack","models","keys","storage","registry"]}},"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"}},"setupPackagesStatus":{"type":"string","enum":["preparing","ready","failed"],"description":"Whether at least one complete automated setup package is ready across all selected setup items."}},"required":["activeRelease","supportedPlatforms","setupItems","visiblePackageTypes","visibleSetupMethods","setupPackagesStatus"]},"StackByPlatform":{"type":"object","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"]},"CustomerConnectionMaterialization":{"type":"object","properties":{"customerConnections":{"$ref":"#/components/schemas/CustomerConnections"},"source":{"type":"object","properties":{"definitionId":{"type":"string","enum":["customer-ai","customer-key","customer-storage"]},"definitionVersion":{"type":"string"},"releaseId":{"type":"string"}},"required":["definitionId","definitionVersion","releaseId"]},"packages":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["cloudformation","terraform"]},"status":{"type":"string","enum":["pending","building","ready","failed","canceled"]}},"required":["type","status"]}}},"required":["customerConnections","source","packages"]},"CustomerConnections":{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"connections":{"type":"object","properties":{"deployment":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]}},"required":["enabled"],"additionalProperties":false},"keys":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]},"applicationEncryption":{"type":"boolean","enum":[true]}},"required":["enabled","applicationEncryption"],"additionalProperties":false},"models":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]},"allowedProviders":{"type":"array","items":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic","databricks","openai"]},"minItems":1,"maxItems":6},"requirements":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string","minLength":1,"maxLength":256},"clientApis":{"type":"array","items":{"type":"string","enum":["openai-chat","openai-responses","anthropic-messages"]},"minItems":1,"maxItems":3},"required":{"type":"boolean"}},"required":["publicModelId","clientApis","required"],"additionalProperties":false},"maxItems":100}},"required":["enabled","allowedProviders","requirements"],"additionalProperties":false},"storage":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]},"access":{"type":"string","enum":["read-write"]}},"required":["enabled","access"],"additionalProperties":false},"registry":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]},"repositories":{"type":"array","items":{"type":"string","minLength":1,"maxLength":128},"maxItems":100},"credentialPolicy":{"type":"string","enum":["pull-only","push-and-pull"]}},"required":["enabled","repositories","credentialPolicy"],"additionalProperties":false}},"additionalProperties":false}},"required":["schemaVersion","connections"],"additionalProperties":false},"ConfigureCustomerModelsRequest":{"type":"object","properties":{"allowedProviders":{"type":"array","items":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic","databricks","openai"]},"minItems":1,"maxItems":5},"requirements":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string","minLength":1,"maxLength":256},"clientApis":{"type":"array","items":{"type":"string","enum":["openai-chat","openai-responses","anthropic-messages"]},"minItems":1,"maxItems":3},"required":{"type":"boolean"}},"required":["publicModelId","clientApis","required"],"additionalProperties":false},"maxItems":100}},"required":["allowedProviders","requirements"],"additionalProperties":false},"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"},"externalId":{"type":"string","nullable":true,"minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"},"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","externalId","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"},"externalId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"},"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"]},"EnsureDeploymentGroupByExternalIdRequest":{"type":"object","properties":{"externalId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"},"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":["externalId","name","project"]},"CreateSetupLinkResponse":{"allOf":[{"$ref":"#/components/schemas/CreateDeploymentGroupTokenResponse"},{"type":"object","properties":{"deploymentGroup":{"$ref":"#/components/schemas/DeploymentGroup"}},"required":["deploymentGroup"]}]},"CreateDeploymentGroupTokenResponse":{"type":"object","properties":{"token":{"type":"string","description":"The API key token"},"deploymentLink":{"type":"string","description":"Formatted deployment link"}},"required":["token","deploymentLink"]},"CreateSetupLinkRequest":{"allOf":[{"$ref":"#/components/schemas/EnsureDeploymentGroupByExternalIdRequest"},{"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"},"setupItems":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentSetupItemSelection"},"maxItems":8,"description":"Customer infrastructure to include. The server snapshots its exact reviewed sources."},"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"]},"DeploymentSetupItemSelection":{"type":"object","properties":{"item":{"type":"string","enum":["alien-stack","models","keys","storage","registry"]},"required":{"type":"boolean"},"releaseChannel":{"type":"string","minLength":1,"maxLength":63}},"required":["item","required"],"additionalProperties":false},"StackInputValuesRequest":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/StackInputValueRequest"},"default":{}},"StackInputValueRequest":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"type":"string"}}]},"ProjectIDOrNameQueryParam":{"type":"string","maxLength":100,"description":"Filter by project ID or name."},"SetDeploymentGroupExternalIdRequest":{"type":"object","properties":{"externalId":{"type":"string","nullable":true,"minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"}},"required":["externalId"]},"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"}}},"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"},"setupItems":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentSetupItemSelection"},"maxItems":8,"description":"Customer infrastructure to include. The server snapshots its exact reviewed sources."},"inputValues":{"$ref":"#/components/schemas/StackInputValuesRequest"}},"required":["deploymentSetupConfig"]},"CreateFirstPartyDeploymentSessionResponse":{"type":"object","properties":{"token":{"type":"string","description":"The deployment-group session token"}},"required":["token"]},"ExternalAIBindingState":{"type":"object","properties":{"binding":{"$ref":"#/components/schemas/ExternalAIBinding"}},"required":["binding"]},"ExternalAIBinding":{"type":"object","nullable":true,"properties":{"id":{"type":"string"},"provider":{"type":"string","enum":["anthropic","openai"]},"keyFingerprint":{"type":"string"},"availableProviderModelIds":{"type":"array","items":{"type":"string"}},"verifiedAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","provider","keyFingerprint","availableProviderModelIds","verifiedAt","updatedAt"]},"PutExternalAIBindingRequest":{"type":"object","properties":{"provider":{"type":"string","enum":["anthropic","openai"]},"apiKey":{"type":"string","minLength":1,"maxLength":512},"acknowledgeAlienCredentialAccess":{"type":"boolean","enum":[true]}},"required":["provider","apiKey","acknowledgeAlienCredentialAccess"],"additionalProperties":false},"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":{"currentChannels":{"type":"array","items":{"$ref":"#/components/schemas/ReleaseChannelName"},"description":"Channels for which this release is currently selected"},"commitUrl":{"type":"string","nullable":true,"format":"uri","description":"Validated canonical provider URL for the exact commit"},"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"},"createdBy":{"type":"object","nullable":true,"properties":{"id":{"type":"string","description":"User ID"},"name":{"type":"string","description":"User's display name"},"email":{"type":"string","description":"User's email address"},"image":{"type":"string","nullable":true,"description":"User's avatar image URL"}},"required":["id","name","email","image"],"description":"Platform user who created the release, included when ?include=createdBy is used"}},"required":["currentChannels","commitUrl"]}]},"ReleaseChannelName":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z][a-z0-9-]*$"},"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":{"allOf":[{"$ref":"#/components/schemas/StackByPlatform"}],"nullable":true},"setupFingerprints":{"allOf":[{"$ref":"#/components/schemas/SetupFingerprintMap"},{"description":"Per-target setup compatibility fingerprints for this release"}]},"rootDirectory":{"type":"string","nullable":true,"maxLength":256},"createdByUserId":{"type":"string","nullable":true,"maxLength":128,"description":"ID of the platform user who created the release, if known"},"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},"channel":{"allOf":[{"$ref":"#/components/schemas/ReleaseChannelName"},{"description":"Release channel to advance. Defaults to production."}]}},"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"]},"ReleaseDeploymentsResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ReleaseDeploymentItem"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"},"stateCounts":{"$ref":"#/components/schemas/ReleaseRolloutStateCounts"}},"required":["items","nextCursor","stateCounts"]},"ReleaseDeploymentItem":{"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."},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","machines","local","test"],"description":"Target platform 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"},"deploymentGroup":{"type":"object","nullable":true,"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"},"externalId":{"type":"string","nullable":true,"minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"}},"required":["id","name","externalId"],"description":"Deployment group this deployment belongs to"},"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"},"lastHeartbeatAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last received heartbeat"},"rolloutState":{"$ref":"#/components/schemas/ReleaseRolloutState"},"releasedAt":{"type":"string","format":"date-time","nullable":true,"description":"When this release went live on the deployment, null if it never did"},"durationMs":{"type":"integer","nullable":true,"description":"Time from release creation until the deployment finished updating, in milliseconds. Null for initial provisions and deployments that never ran this release."},"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"}},"required":["id","name","status","platform","rolloutState","releasedAt","durationMs"]},"ReleaseRolloutState":{"type":"string","enum":["updated","updating","failed","pending","pinned-other","superseded","on-other"]},"ReleaseRolloutStateCounts":{"type":"object","properties":{"updated":{"type":"integer"},"updating":{"type":"integer"},"failed":{"type":"integer"},"pending":{"type":"integer"},"pinned-other":{"type":"integer"},"superseded":{"type":"integer"},"on-other":{"type":"integer"}},"required":["updated","updating","failed","pending","pinned-other","superseded","on-other"],"description":"Deployment counts per rollout state across all deployments the filters allow (ignores the state filter)"},"ReleaseChannel":{"type":"object","properties":{"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"name":{"$ref":"#/components/schemas/ReleaseChannelName"},"currentReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"deploymentCount":{"type":"integer","minimum":0},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["workspaceId","projectId","name","currentReleaseId","createdAt","updatedAt"]},"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"},"purpose":{"$ref":"#/components/schemas/DeploymentPurpose"},"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"},"releaseChannel":{"allOf":[{"$ref":"#/components/schemas/ReleaseChannelName"},{"description":"Named release stream followed when the deployment is not pinned"}]},"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","purpose","releaseChannel","retryRequested","createdAt","updatedAt","managerId","workspaceId"]},"DeploymentProtocolVersion":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"DeploymentState protocol version owned by the runtime/manager"},"DeploymentPurpose":{"type":"string","enum":["application","encryption","ai","storage","container-registry"],"description":"Operational purpose of this deployment within its customer environment."},"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"},"externalId":{"type":"string","nullable":true,"minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"}},"required":["id","name","externalId"]},"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"}}}]},"DeploymentUpdateOperationSummary":{"type":"object","nullable":true,"properties":{"id":{"type":"string","pattern":"duop_[0-9a-z]{28}$","description":"Unique identifier for the deployment update operation.","example":"duop_0vtxpb1sw4sbcdwg2xo37q6"},"status":{"$ref":"#/components/schemas/DeploymentUpdateOperationStatus"},"reasons":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentUpdateReason"}},"targetReleaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"changedKeys":{"type":"array","items":{"type":"string"}},"requestedAt":{"type":"string","format":"date-time"},"startedAt":{"type":"string","format":"date-time","nullable":true},"completedAt":{"type":"string","format":"date-time","nullable":true}},"required":["id","status","reasons","targetReleaseId","changedKeys","requestedAt"]},"DeploymentUpdateOperationStatus":{"type":"string","enum":["queued","applying","succeeded","failed","superseded"]},"DeploymentUpdateReason":{"type":"string","enum":["configuration","redeploy","release"]},"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"},"purpose":{"$ref":"#/components/schemas/DeploymentPurpose"},"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":{"initialSetupAuthority":{"type":"string","enum":["importedHandoff","directSetup"],"description":"Actor that owns structural work during the initial setup phase."},"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}]},"persistedGateAnswers":{"type":"object","properties":{},"additionalProperties":{"type":"boolean"},"description":"Canonical resolved answers for inputs that gate Frozen resources,\nkeyed by input id, recorded when the deployment is created or its\nsetup import registers.\n\nA frozen gate's answer is fixed for the deployment's lifetime: the\nupdate path refuses input values that conflict with these, and a Live\nresource sharing such an input resolves the persisted answer forever."},"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"},"releaseChannel":{"allOf":[{"$ref":"#/components/schemas/ReleaseChannelName"},{"description":"Named release stream followed when the deployment is not pinned"}]},"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"},"updateState":{"type":"object","properties":{"active":{"$ref":"#/components/schemas/DeploymentUpdateOperationSummary"},"next":{"$ref":"#/components/schemas/DeploymentUpdateOperationSummary"},"latest":{"$ref":"#/components/schemas/DeploymentUpdateOperationSummary"}},"required":["active","next","latest"],"description":"Durable progress for deployment updates"},"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","purpose","stackSettings","releaseChannel","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."},"releaseChannel":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z][a-z0-9-]*$","default":"production","description":"Release channel followed while this deployment is not pinned."},"setupItem":{"type":"string","enum":["alien-stack","models","keys","storage"],"description":"Customer setup item selected from this deployment-group token."}},"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"},"setupItem":{"type":"string","enum":["alien-stack","models","keys","storage","registry"],"description":"Exact item selected from a tailored customer setup link."},"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":{"initialSetupAuthority":{"type":"string","enum":["importedHandoff","directSetup"],"description":"Actor that owns structural work during the initial setup phase."},"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}]},"persistedGateAnswers":{"type":"object","properties":{},"additionalProperties":{"type":"boolean"},"description":"Canonical resolved answers for inputs that gate Frozen resources,\nkeyed by input id, recorded when the deployment is created or its\nsetup import registers.\n\nA frozen gate's answer is fixed for the deployment's lifetime: the\nupdate path refuses input values that conflict with these, and a Live\nresource sharing such an input resolves the persisted answer forever."},"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 resume its followed channel.","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"},"outcome":{"type":"string","enum":["accepted","unchanged"]},"operation":{"$ref":"#/components/schemas/DeploymentUpdateOperationSummary"}},"required":["runtimeUpdateRequested","outcome","operation"]}]},"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","nullable":true,"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"},"items":{"type":"array","items":{"type":"object","properties":{"item":{"type":"string","enum":["alien-stack","models","keys","storage","registry"]},"source":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["application-release"]},"releaseChannel":{"type":"string","minLength":1,"maxLength":63},"releaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"resourceId":{"type":"string","minLength":1,"maxLength":256}},"required":["type","releaseChannel","releaseId"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["built-in"]},"definitionId":{"type":"string","enum":["customer-ai","customer-key","customer-storage","customer-registry"]},"version":{"type":"string","minLength":1,"maxLength":64},"sourceReleaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"}},"required":["type","definitionId","version","sourceReleaseId"],"additionalProperties":false}]},"required":{"type":"boolean"},"configuration":{"type":"object","properties":{"allowedProviders":{"type":"array","items":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic","databricks","openai"]},"minItems":1,"maxItems":6},"modelRequirements":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string","minLength":1,"maxLength":256},"clientApis":{"type":"array","items":{"type":"string","enum":["openai-chat","openai-responses","anthropic-messages"]},"minItems":1,"maxItems":3},"required":{"type":"boolean"}},"required":["publicModelId","clientApis","required"],"additionalProperties":false},"maxItems":100}},"additionalProperties":false}},"required":["item","source","required"],"additionalProperties":false},"maxItems":8,"description":"Immutable setup items and exact sources captured when this setup link is created."},"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}]},"channel":{"type":"string","description":"Name of the channel that moved"},"previousReleaseId":{"type":"string","nullable":true,"description":"ID of the release that was previously current, if any"},"releaseId":{"type":"string","description":"ID of the release that is now current"},"type":{"type":"string","enum":["ReleaseChannelUpdated"]}},"required":["channel","releaseId","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}]},"channel":{"type":"string","description":"Newly followed channel"},"deploymentId":{"type":"string","description":"ID of the deployment"},"previousChannel":{"type":"string","description":"Previously followed channel"},"type":{"type":"string","enum":["DeploymentReleaseChannelChanged"]}},"required":["channel","deploymentId","previousChannel","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"]},"GenerateManagerBindingTokenResponse":{"type":"object","properties":{"accessToken":{"type":"string"},"expiresIn":{"type":"number","nullable":true},"tokenType":{"type":"string","enum":["Bearer"]},"managerUrl":{"type":"string"}},"required":["accessToken","expiresIn","tokenType","managerUrl"]},"GenerateManagerBindingTokenRequest":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"}},"required":["deploymentId"],"additionalProperties":false},"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"}},"items":{"type":"array","items":{"type":"object","properties":{"item":{"type":"string","enum":["alien-stack","models","keys","storage","registry"]},"source":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["application-release"]},"releaseChannel":{"type":"string","minLength":1,"maxLength":63},"releaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"resourceId":{"type":"string","minLength":1,"maxLength":256}},"required":["type","releaseChannel","releaseId"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["built-in"]},"definitionId":{"type":"string","enum":["customer-ai","customer-key","customer-storage","customer-registry"]},"version":{"type":"string","minLength":1,"maxLength":64},"sourceReleaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"}},"required":["type","definitionId","version","sourceReleaseId"],"additionalProperties":false}]},"required":{"type":"boolean"},"configuration":{"type":"object","properties":{"allowedProviders":{"type":"array","items":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic","databricks","openai"]},"minItems":1,"maxItems":6},"modelRequirements":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string","minLength":1,"maxLength":256},"clientApis":{"type":"array","items":{"type":"string","enum":["openai-chat","openai-responses","anthropic-messages"]},"minItems":1,"maxItems":3},"required":{"type":"boolean"}},"required":["publicModelId","clientApis","required"],"additionalProperties":false},"maxItems":100}},"additionalProperties":false}},"required":["item","source","required"],"additionalProperties":false},"maxItems":8}},"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","nullable":true,"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"]},"CommandBootstrapResponse":{"type":"object","properties":{"managerUrl":{"type":"string","format":"uri","description":"Current customer-facing manager URL"},"token":{"type":"string","minLength":1,"description":"Short-lived command capability token"},"expiresAt":{"type":"string","format":"date-time","description":"Capability expiry in RFC 3339 format"},"target":{"$ref":"#/components/schemas/CommandReceiverBootstrapTarget"}},"required":["managerUrl","token","expiresAt"]},"CommandReceiverBootstrapTarget":{"type":"object","properties":{"resourceId":{"type":"string"},"resourceType":{"type":"string","enum":["container","daemon"]}},"required":["resourceId","resourceType"],"description":"Resolved target identity; present only for receiver bootstrap"},"CommandBootstrapRequest":{"oneOf":[{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"role":{"type":"string","enum":["sender"]}},"required":["deploymentId","role"],"additionalProperties":false},{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"role":{"type":"string","enum":["receiver"]},"target":{"type":"string","minLength":1,"maxLength":255}},"required":["deploymentId","role","target"],"additionalProperties":false}]},"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"},"startedAt":{"type":"string","format":"date-time"},"endedAt":{"type":"string","format":"date-time"},"expiredAt":{"type":"string","format":"date-time"},"exitCode":{"type":"integer","nullable":true},"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"},"customerModels":{"type":"boolean","description":"Whether this release offers one remotely accessible AI resource"},"resourceCounts":{"type":"object","properties":{"workers":{"type":"integer","minimum":0},"containers":{"type":"integer","minimum":0},"daemons":{"type":"integer","minimum":0,"description":"Daemon resources that run on managed runtime machines"},"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","customerModels","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"},"modelAvailabilitySources":{"type":"array","items":{"type":"object","properties":{"deploymentId":{"type":"string"},"resourceId":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"status":{"type":"string","enum":["current","stale","invalid"]},"availability":{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]}},"required":["deploymentId","resourceId","observedAt","status"]}},"setupItems":{"type":"array","items":{"$ref":"#/components/schemas/SetupItemStatus"}},"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","modelAvailabilitySources"]},"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"]},"SetupItemStatus":{"type":"object","properties":{"item":{"type":"string","enum":["alien-stack","models","keys","storage","registry"]},"source":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["application-release"]},"releaseChannel":{"type":"string","minLength":1,"maxLength":63},"releaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"resourceId":{"type":"string","minLength":1,"maxLength":256}},"required":["type","releaseChannel","releaseId"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["built-in"]},"definitionId":{"type":"string","enum":["customer-ai","customer-key","customer-storage","customer-registry"]},"version":{"type":"string","minLength":1,"maxLength":64},"sourceReleaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"}},"required":["type","definitionId","version","sourceReleaseId"],"additionalProperties":false}]},"required":{"type":"boolean"},"configuration":{"type":"object","properties":{"allowedProviders":{"type":"array","items":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic","databricks","openai"]},"minItems":1,"maxItems":6},"modelRequirements":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string","minLength":1,"maxLength":256},"clientApis":{"type":"array","items":{"type":"string","enum":["openai-chat","openai-responses","anthropic-messages"]},"minItems":1,"maxItems":3},"required":{"type":"boolean"}},"required":["publicModelId","clientApis","required"],"additionalProperties":false},"maxItems":100}},"additionalProperties":false},"status":{"type":"string","enum":["not-started","waiting","applying","verifying","connected","needs-attention","revoked"]},"deploymentIds":{"type":"array","items":{"type":"string"}},"blocker":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["item","source","required","status","deploymentIds"],"additionalProperties":false},"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"]}},"items":{"type":"array","items":{"type":"object","properties":{"item":{"type":"string","enum":["alien-stack","models","keys","storage","registry"]},"source":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["application-release"]},"releaseChannel":{"type":"string","minLength":1,"maxLength":63},"releaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"resourceId":{"type":"string","minLength":1,"maxLength":256}},"required":["type","releaseChannel","releaseId"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["built-in"]},"definitionId":{"type":"string","enum":["customer-ai","customer-key","customer-storage","customer-registry"]},"version":{"type":"string","minLength":1,"maxLength":64},"sourceReleaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"}},"required":["type","definitionId","version","sourceReleaseId"],"additionalProperties":false}]},"required":{"type":"boolean"},"configuration":{"type":"object","properties":{"allowedProviders":{"type":"array","items":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic","databricks","openai"]},"minItems":1,"maxItems":6},"modelRequirements":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string","minLength":1,"maxLength":256},"clientApis":{"type":"array","items":{"type":"string","enum":["openai-chat","openai-responses","anthropic-messages"]},"minItems":1,"maxItems":3},"required":{"type":"boolean"}},"required":["publicModelId","clientApis","required"],"additionalProperties":false},"maxItems":100}},"additionalProperties":false}},"required":["item","source","required"],"additionalProperties":false},"maxItems":8},"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"]},"ListOperationsPluginsResponse":{"type":"object","properties":{"plugins":{"type":"array","items":{"$ref":"#/components/schemas/OperationsPlugin"}}},"required":["plugins"]},"OperationsPlugin":{"type":"object","properties":{"name":{"type":"string"},"version":{"type":"string"},"tier":{"type":"string","enum":["read-only","mutating","destructive"],"description":"Plugin-level default tier."},"builtin":{"type":"boolean","description":"True for compiled-in plugins, false for custom bundles."},"enabled":{"type":"boolean"},"operations":{"type":"array","items":{"$ref":"#/components/schemas/OperationsPluginOperation"}}},"required":["name","version","tier","builtin","enabled","operations"]},"OperationsPluginOperation":{"type":"object","properties":{"name":{"type":"string","description":"Operation name, unique within the plugin."},"tier":{"type":"string","enum":["read-only","mutating","destructive"],"description":"Effective risk tier for this operation."},"description":{"type":"string","nullable":true,"description":"Human-readable description."}},"required":["name","tier","description"]},"OperationsBundleUploadUrlResponse":{"type":"object","properties":{"uploadUrl":{"type":"string","format":"uri","description":"Presigned S3 PUT URL to upload the bundle ZIP to."},"contentType":{"type":"string","description":"Content-Type header the PUT must send (must match the signature)."}},"required":["uploadUrl","contentType"]},"OperationsBundleUploadUrlRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Plugin name (from the bundle's metadata.json)."}},"required":["name"]},"PublishOperationsPluginResponse":{"type":"object","properties":{"name":{"type":"string"},"version":{"type":"string"},"tier":{"type":"string","enum":["read-only","mutating","destructive"],"description":"How risky an operation is (declared by the plugin metadata)."},"enabled":{"type":"boolean"}},"required":["name","version","tier","enabled"]},"PublishOperationsPluginRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Plugin name (from the bundle's metadata.json)."},"version":{"type":"string","minLength":1,"description":"Plugin version."},"tier":{"type":"string","enum":["read-only","mutating","destructive"],"description":"Plugin-level default risk tier."},"metadata":{"nullable":true,"description":"The verbatim metadata.json (operations[], binaries{})."}},"required":["name","version","tier"]},"SetOperationsPluginEnabledResponse":{"type":"object","properties":{"name":{"type":"string"},"builtin":{"type":"boolean"},"enabled":{"type":"boolean"}},"required":["name","builtin","enabled"]},"SetOperationsPluginEnabledRequest":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether the plugin should be baked into the operator image."}},"required":["enabled"]},"OperationsPolicyResponse":{"type":"object","properties":{"rules":{"type":"array","items":{"$ref":"#/components/schemas/OperationsPolicyRule"}},"default":{"type":"string","enum":["auto","manual"],"description":"Decision for commands no rule matches."}},"required":["rules","default"]},"OperationsPolicyRule":{"type":"object","properties":{"pattern":{"type":"string","description":"`plugin/operation`, `plugin/*`, or `*`."},"decision":{"type":"string","enum":["auto","manual"],"description":"auto: run immediately. manual: needs customer approval before running."}},"required":["pattern","decision"]},"UpdateOperationsPolicyRequest":{"type":"object","properties":{"rules":{"type":"array","items":{"$ref":"#/components/schemas/OperationsPolicyRule"},"description":"The full rule set (replaces the previous one)."}},"required":["rules"]},"InvokeOperationResponse":{"type":"object","properties":{"plugin":{"type":"string"},"operation":{"type":"string"},"tier":{"type":"string","enum":["read-only","mutating","destructive"],"description":"The operation's declared risk tier (informational)."},"decision":{"type":"string","enum":["auto","manual"],"description":"The approval decision the policy resolved to."},"status":{"type":"string","enum":["dispatched","pending-approval"],"description":"dispatched: auto-approved and running. pending-approval: needs customer sign-off."},"commandId":{"type":"string","description":"The created operation-command id when dispatched (absent when pending)."}},"required":["plugin","operation","tier","decision","status"]},"InvokeOperationRequest":{"type":"object","properties":{"deploymentId":{"type":"string","description":"Deployment to run the operation against."},"plugin":{"type":"string","description":"Plugin name."},"operation":{"type":"string","description":"Operation name exposed by the plugin."},"params":{"nullable":true,"description":"JSON params passed to the operation."}},"required":["deploymentId","plugin","operation"]},"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"},"purpose":{"$ref":"#/components/schemas/DeploymentPurpose"},"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":{"initialSetupAuthority":{"type":"string","enum":["importedHandoff","directSetup"],"description":"Actor that owns structural work during the initial setup phase."},"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}]},"persistedGateAnswers":{"type":"object","properties":{},"additionalProperties":{"type":"boolean"},"description":"Canonical resolved answers for inputs that gate Frozen resources,\nkeyed by input id, recorded when the deployment is created or its\nsetup import registers.\n\nA frozen gate's answer is fixed for the deployment's lifetime: the\nupdate path refuses input values that conflict with these, and a Live\nresource sharing such an input resolves the persisted answer forever."},"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"},"releaseChannel":{"allOf":[{"$ref":"#/components/schemas/ReleaseChannelName"},{"description":"Named release stream followed when the deployment is not pinned"}]},"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"},"updateState":{"type":"object","properties":{"active":{"$ref":"#/components/schemas/DeploymentUpdateOperationSummary"},"next":{"$ref":"#/components/schemas/DeploymentUpdateOperationSummary"},"latest":{"$ref":"#/components/schemas/DeploymentUpdateOperationSummary"}},"required":["active","next","latest"],"description":"Durable progress for deployment updates"},"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","purpose","stackSettings","releaseChannel","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":{"initialSetupAuthority":{"type":"string","enum":["importedHandoff","directSetup"],"description":"Actor that owns structural work during the initial setup phase."},"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}]},"persistedGateAnswers":{"type":"object","properties":{},"additionalProperties":{"type":"boolean"},"description":"Canonical resolved answers for inputs that gate Frozen resources,\nkeyed by input id, recorded when the deployment is created or its\nsetup import registers.\n\nA frozen gate's answer is fixed for the deployment's lifetime: the\nupdate path refuses input values that conflict with these, and a Live\nresource sharing such an input resolves the persisted answer forever."},"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"},"serverCaCertificates":{"oneOf":[{"type":"array","items":{"type":"string"}},{"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"},"sslMode":{"type":"string","enum":["verify-full","disable"],"description":"TLS policy for an operator-provided / BYO Postgres database.\n\nUnlike libpq's ambiguous `prefer` mode, both choices map exactly to the\nconnection settings exposed by every supported SDK."},"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"]}]},{"allOf":[{"type":"object","properties":{"apiKey":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"provider":{"type":"string","description":"The external AI provider name (e.g., \"openai\", \"anthropic\")"}},"required":["provider"],"description":"External AI provider binding configuration (BYO-key).\n\nThe operator-supplied secret rides inside the binding via\n`BindingValue`, so it is a literal on cloud platforms and gains\nKubernetes SecretRef resolution for free (`extract_binding_secrets` walks\nthe binding JSON for `secretRef`)."},{"type":"object","properties":{"type":{"type":"string","enum":["ai"]}},"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)"},"leaseExpiresAt":{"type":"string","nullable":true,"format":"date-time","description":"When the provisional leases on the returned deployments lapse. Confirm them with sync/renew before starting work. Null when nothing was acquired."}},"required":["deployments","failures","leaseExpiresAt"],"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"},"requestId":{"type":"string","minLength":1,"description":"Idempotency key for one logical acquire request"},"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","requestId","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":{"initialSetupAuthority":{"type":"string","enum":["importedHandoff","directSetup"],"description":"Actor that owns structural work during the initial setup phase."},"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}]},"persistedGateAnswers":{"type":"object","properties":{},"additionalProperties":{"type":"boolean"},"description":"Canonical resolved answers for inputs that gate Frozen resources,\nkeyed by input id, recorded when the deployment is created or its\nsetup import registers.\n\nA frozen gate's answer is fixed for the deployment's lifetime: the\nupdate path refuses input values that conflict with these, and a Live\nresource sharing such an input resolves the persisted answer forever."},"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"},"serverCaCertificates":{"oneOf":[{"type":"array","items":{"type":"string"}},{"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"},"sslMode":{"type":"string","enum":["verify-full","disable"],"description":"TLS policy for an operator-provided / BYO Postgres database.\n\nUnlike libpq's ambiguous `prefer` mode, both choices map exactly to the\nconnection settings exposed by every supported SDK."},"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"]}]},{"allOf":[{"type":"object","properties":{"apiKey":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"provider":{"type":"string","description":"The external AI provider name (e.g., \"openai\", \"anthropic\")"}},"required":["provider"],"description":"External AI provider binding configuration (BYO-key).\n\nThe operator-supplied secret rides inside the binding via\n`BindingValue`, so it is a literal on cloud platforms and gains\nKubernetes SecretRef resolution for free (`extract_binding_secrets` walks\nthe binding JSON for `secretRef`)."},{"type":"object","properties":{"type":{"type":"string","enum":["ai"]}},"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":{"initialSetupAuthority":{"type":"string","enum":["importedHandoff","directSetup"],"description":"Actor that owns structural work during the initial setup phase."},"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}]},"persistedGateAnswers":{"type":"object","properties":{},"additionalProperties":{"type":"boolean"},"description":"Canonical resolved answers for inputs that gate Frozen resources,\nkeyed by input id, recorded when the deployment is created or its\nsetup import registers.\n\nA frozen gate's answer is fixed for the deployment's lifetime: the\nupdate path refuses input values that conflict with these, and a Live\nresource sharing such an input resolves the persisted answer forever."},"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"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"availability":{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]},"region":{"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":["availability","region","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsBedrock"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"availability":{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]},"location":{"type":"string"},"project":{"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":["availability","location","project","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpVertex"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"accountName":{"type":"string"},"availability":{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]},"endpoint":{"type":"string","nullable":true},"location":{"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"]}},"required":["accountName","availability","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureFoundry"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"availability":{"oneOf":[{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]},{"nullable":true}]},"provider":{"type":"string","description":"The BYO-key provider serving this binding (e.g. \"openai\"). Used on the Local\nplatform, where the app brings its own provider key instead of an ambient cloud."},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["provider","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["external"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["ai"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"type":"object","properties":{"data":{"type":"object","properties":{"enabled":{"type":"boolean"},"keyArn":{"type":"string"},"keySpec":{"type":"string"},"keyState":{"type":"string"},"keyUsage":{"type":"string"},"status":{"type":"object","properties":{"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true}},"required":["health","lifecycle"]}},"required":["enabled","keyArn","keySpec","keyState","keyUsage","status"]},"provider":{"type":"string","enum":["aws-kms"]}},"required":["data","provider"]},{"type":"object","properties":{"data":{"type":"object","properties":{"algorithm":{"type":"string","nullable":true},"cryptoKeyName":{"type":"string"},"primaryState":{"type":"string","nullable":true},"primaryVersion":{"type":"string","nullable":true},"purpose":{"type":"string"},"status":{"type":"object","properties":{"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true}},"required":["health","lifecycle"]}},"required":["cryptoKeyName","purpose","status"]},"provider":{"type":"string","enum":["gcp-cloud-kms"]}},"required":["data","provider"]},{"type":"object","properties":{"data":{"type":"object","properties":{"enabled":{"type":"boolean","nullable":true},"keyId":{"type":"string"},"keyOperations":{"type":"array","items":{"type":"string"}},"keyType":{"type":"string"},"recoveryLevel":{"type":"string","nullable":true},"status":{"type":"object","properties":{"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true}},"required":["health","lifecycle"]}},"required":["keyId","keyOperations","keyType","status"]},"provider":{"type":"string","enum":["azure-key-vault"]}},"required":["data","provider"]}]},"resourceType":{"type":"string","enum":["key"]}},"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"},"SyncRenewRequest":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Single deployment to renew. Deprecated: use deploymentIds. Retained so a manager built against the previous API keeps renewing during rollout.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"deploymentIds":{"type":"array","items":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"minItems":1,"maxItems":100,"description":"Deployments to renew or confirm. Renewal is per deployment: the response reports each one independently."},"session":{"type":"string","minLength":1}},"required":["session"],"additionalProperties":false},"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"},"operations_custom_plugins":{"type":"boolean"},"sso_saml":{"type":"boolean"},"audit_logs":{"type":"boolean"},"airgapped":{"type":"boolean"}},"required":["custom_domains","private_managers","operations_custom_plugins","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}/source":{"post":{"operationId":"configureProjectSource","description":"Connect a GitHub repository or Alien template to an existing project and configure its release workflow.","x-speakeasy-group":"projects","x-speakeasy-name-override":"configureSource","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":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["repository"]},"gitRepository":{"type":"object","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},"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"}},"required":["mode","gitRepository"]},{"type":"object","properties":{"mode":{"type":"string","enum":["template"]},"targetNamespace":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-zA-Z0-9-]+$"},"templatePath":{"type":"string","enum":["examples/customer-models-ts","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"}},"required":["mode","targetNamespace","templatePath"]}]}}}},"responses":{"200":{"description":"Project source connected and GitHub Actions configured.","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/customer-models-ts","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"]}}}]}}}},"400":{"description":"Repository or template configuration is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Insufficient permission to update this project.","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"}}}},"503":{"description":"Template fork exists but is not ready yet.","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/customer-models-ts","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/customer-models-ts","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 production channel's current release. When deploymentId is provided, returns that deployment's effective release: its pin, or its followed channel's current 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":"Effective release retrieved successfully.","content":{"application/json":{"schema":{"nullable":true}}}},"404":{"description":"Project or effective 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}/customer-connections/models":{"put":{"operationId":"configureProjectCustomerModels","description":"Configure customer-owned model providers without requiring an application Release.","x-speakeasy-group":"projects","x-speakeasy-name-override":"configureCustomerModels","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/ConfigureCustomerModelsRequest"}}}},"responses":{"200":{"description":"Customer Models configured and its exact setup source materialized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerConnectionMaterialization"}}}},"403":{"description":"Insufficient permissions.","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}/customer-connections/keys":{"put":{"operationId":"configureProjectCustomerKey","description":"Enable customer-owned application encryption without requiring an application Release.","x-speakeasy-group":"projects","x-speakeasy-name-override":"configureCustomerKey","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":{"type":"object","properties":{"applicationEncryption":{"type":"boolean","enum":[true]}},"required":["applicationEncryption"],"additionalProperties":false}}}},"responses":{"200":{"description":"Customer Key configured and its exact setup source materialized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerConnectionMaterialization"}}}},"403":{"description":"Insufficient permissions.","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}/customer-connections/storage":{"put":{"operationId":"configureProjectCustomerStorage","description":"Enable customer-owned storage without requiring an application Release.","x-speakeasy-group":"projects","x-speakeasy-name-override":"configureCustomerStorage","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":{"type":"object","properties":{"access":{"type":"string","enum":["read-write"]}},"required":["access"],"additionalProperties":false}}}},"responses":{"200":{"description":"Customer Storage configured and its exact setup source materialized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerConnectionMaterialization"}}}},"403":{"description":"Insufficient permissions.","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/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/by-external-id":{"put":{"operationId":"ensureDeploymentGroupByExternalId","tags":["deployment-groups"],"summary":"Get or create a deployment group by project and external ID","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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/EnsureDeploymentGroupByExternalIdRequest"}}}},"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"}}}},"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"}}}}}},"get":{"operationId":"getDeploymentGroupByExternalId","tags":["deployment-groups"],"summary":"Get a deployment group by project and external ID","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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":100,"description":"Project ID or name. Optional for project-scoped API keys."},"required":false,"description":"Project ID or name. Optional for project-scoped API keys.","name":"project","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"},"required":true,"description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","name":"externalId","in":"query"}],"responses":{"200":{"description":"Deployment group returned successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentGroup"}}}},"404":{"description":"Project or 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/setup-links":{"post":{"operationId":"createSetupLink","tags":["setup-links"],"summary":"Create a customer setup link","description":"Ensures the Deployment Group identified by Project and external ID, then creates a replacement group-scoped setup link with exact captured sources.","x-speakeasy-group":"setupLinks","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":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSetupLinkRequest"}}}},"responses":{"200":{"description":"Customer environment ensured and setup link created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSetupLinkResponse"}}}},"400":{"description":"Customer environment or setup configuration is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Customer environment name or setup source conflicts","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}/external-id":{"put":{"operationId":"setDeploymentGroupExternalId","tags":["deployment-groups"],"summary":"Set or clear a deployment group's external ID","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":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetDeploymentGroupExternalIdRequest"}}}},"responses":{"200":{"description":"Deployment group external ID 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 external ID 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"}}}}}}},"/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/deployment-groups/{id}/ai/external":{"get":{"operationId":"getExternalAIBinding","tags":["deployment-groups"],"summary":"Get external AI connection state","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":"External AI connection state","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalAIBindingState"}}}},"403":{"description":"Insufficient permissions","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"}}}}}},"put":{"operationId":"putExternalAIBinding","tags":["deployment-groups"],"summary":"Connect or rotate an external AI provider key","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":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutExternalAIBindingRequest"}}}},"responses":{"200":{"description":"External AI connection verified and stored","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalAIBinding"}}}},"400":{"description":"The key is not valid for the selected provider","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment group not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"The group already has an active cloud AI source","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"Provider verification is temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"delete":{"operationId":"deleteExternalAIBinding","tags":["deployment-groups"],"summary":"Revoke the external AI connection","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":"External AI connection revoked"},"403":{"description":"Insufficient permissions","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/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","nullable":true,"minLength":1,"maxLength":63,"pattern":"^[a-z][a-z0-9-]*$","description":"Filter to releases promoted to this channel. Defaults to production."},"required":false,"description":"Filter to releases promoted to this channel. Defaults to production.","name":"channel","in":"query"},{"schema":{"type":"string","enum":["true","false"],"default":"false"},"required":false,"name":"allChannels","in":"query"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["project","rollout","createdBy"]},"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","createdBy"]},"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/releases/{id}/deployments":{"get":{"operationId":"listReleaseDeployments","description":"List the project's deployments with their rollout state relative to this release.","x-speakeasy-group":"releases","x-speakeasy-name-override":"listDeployments","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":{"$ref":"#/components/schemas/ReleaseRolloutState"},"description":"Filter deployments by rollout state"},"required":false,"description":"Filter deployments by rollout state","name":"state","in":"query"},{"schema":{"type":"string","description":"Filter by deployment group ID or name"},"required":false,"description":"Filter by deployment group ID or name","name":"deploymentGroup","in":"query"},{"schema":{"type":"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 release deployments.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReleaseDeploymentsResponse"}}}},"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/release-channels":{"get":{"operationId":"listReleaseChannels","summary":"List release channels","description":"List the release channels configured for a project.","x-speakeasy-group":"releaseChannels","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":true,"description":"Filter by project ID or name.","name":"project","in":"query","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}}],"responses":{"200":{"description":"Project release channels.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ReleaseChannel"}}},"required":["items"]}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createReleaseChannel","summary":"Create a release channel","description":"Create a release channel for a project.","x-speakeasy-group":"releaseChannels","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"},{"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"}}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"$ref":"#/components/schemas/ReleaseChannelName"},"releaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"}},"required":["name"],"additionalProperties":false}}}},"responses":{"201":{"description":"Channel created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReleaseChannel"}}}},"400":{"description":"Invalid release.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/release-channels/{name}/promote":{"post":{"operationId":"promoteRelease","x-speakeasy-group":"releases","x-speakeasy-name-override":"promote","parameters":[{"schema":{"$ref":"#/components/schemas/ReleaseChannelName"},"required":true,"name":"name","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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"}}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"releaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"expectedReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"}},"required":["releaseId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Release promoted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReleaseChannel"}}}},"404":{"description":"Project, channel, or release not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Channel changed concurrently.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/release-channels/{name}":{"delete":{"operationId":"deleteReleaseChannel","summary":"Delete a release channel","description":"Delete a release channel from a project.","x-speakeasy-group":"releaseChannels","x-speakeasy-name-override":"delete","parameters":[{"schema":{"$ref":"#/components/schemas/ReleaseChannelName"},"required":true,"name":"name","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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":{"204":{"description":"Channel deleted."},"400":{"description":"Reserved channel.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project or channel not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Channel is still followed by deployments.","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"},"operation":{"$ref":"#/components/schemas/DeploymentUpdateOperationSummary"}},"required":["message","operation"]}}}},"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}/release-channel":{"post":{"operationId":"setDeploymentReleaseChannel","x-speakeasy-group":"deployments","x-speakeasy-name-override":"setReleaseChannel","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":{"type":"object","properties":{"channel":{"$ref":"#/components/schemas/ReleaseChannelName"}},"required":["channel"],"additionalProperties":false}}}},"responses":{"200":{"description":"Deployment release channel updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Deployment"}}}},"400":{"description":"Channel release is unavailable for the deployment platform.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment or release channel not found.","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}/binding-token":{"post":{"operationId":"generateManagerBindingToken","description":"Generate a short-lived deployment-scoped token for resolving opted-in remote bindings through the currently assigned manager.","x-speakeasy-group":"managers","x-speakeasy-name-override":"generateManagerBindingToken","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":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateManagerBindingTokenRequest"}}}},"responses":{"200":{"description":"Remote Bindings token and assigned manager URL.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateManagerBindingTokenResponse"}}}},"403":{"description":"The caller cannot update the deployment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Assigned manager or deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"The assigned manager is offline.","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":"string","description":"Filter events to a single release."},"required":false,"description":"Filter events to a single release.","name":"releaseId","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/bootstrap":{"post":{"operationId":"bootstrapCommands","description":"Resolve a deployment's current manager and mint a five-minute command capability. Sender tokens can dispatch and observe commands only for this deployment. Receiver tokens can lease and complete commands only for the resolved Container or Daemon target.","x-speakeasy-group":"commands","x-speakeasy-name-override":"bootstrap","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandBootstrapRequest"}}}},"responses":{"200":{"description":"Manager connection details and a short-lived command capability.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandBootstrapResponse"}}}},"400":{"description":"Invalid request or deployment state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"401":{"description":"Authentication required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"The caller cannot operate this deployment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment, manager, or receiver target not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"422":{"description":"The selected resource cannot run an external receiver.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"The assigned manager is offline.","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"},{"schema":{"type":"string","enum":["alien-stack","models","keys","storage"]},"required":false,"name":"setupItem","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":{"setupItem":{"type":"string","enum":["alien-stack","models","keys","storage"]},"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":{"setupItem":{"type":"string","enum":["alien-stack","models","keys","storage"]},"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/operations/plugins":{"get":{"operationId":"listOperationsPlugins","description":"List available operations plugins (builtin + custom) for a project, with their operations and risk tiers.","x-speakeasy-group":"operations","x-speakeasy-name-override":"listPlugins","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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":"The operations plugin catalog.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListOperationsPluginsResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"publishOperationsPlugin","description":"Register a custom operations plugin whose bundle ZIP has already been uploaded to S3 (see POST /plugins/upload-url). Replaces any existing plugin of the same name in that project. New custom plugins are enabled by default.","x-speakeasy-group":"operations","x-speakeasy-name-override":"publishPlugin","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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"}}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishOperationsPluginRequest"}}}},"responses":{"201":{"description":"The plugin was published.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishOperationsPluginResponse"}}}},"400":{"description":"Invalid metadata.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"402":{"description":"Custom plugins require a higher plan tier.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/operations/plugins/upload-url":{"post":{"operationId":"createOperationsBundleUploadUrl","description":"Get a presigned S3 URL to upload a custom operations plugin bundle ZIP. Upload the ZIP with a PUT to the returned url (sending the given Content-Type), then call POST /plugins to register it.","x-speakeasy-group":"operations","x-speakeasy-name-override":"createBundleUploadUrl","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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"}}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationsBundleUploadUrlRequest"}}}},"responses":{"200":{"description":"A presigned upload URL for the bundle ZIP.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationsBundleUploadUrlResponse"}}}},"402":{"description":"Custom plugins require a higher plan tier.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"Bundle storage is not configured.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/operations/plugins/{name}/enabled":{"patch":{"operationId":"setOperationsPluginEnabled","description":"Enable or disable an operations plugin (builtin or custom) for a project. Only enabled plugins are baked into the operator image and can be invoked.","x-speakeasy-group":"operations","x-speakeasy-name-override":"setPluginEnabled","parameters":[{"schema":{"type":"string","description":"Plugin name."},"required":true,"description":"Plugin name.","name":"name","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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"}}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetOperationsPluginEnabledRequest"}}}},"responses":{"200":{"description":"The plugin's enabled state was updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetOperationsPluginEnabledResponse"}}}},"404":{"description":"No such plugin for this project.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/operations/policy":{"get":{"operationId":"getOperationsPolicy","description":"Get a project's per-command approval policy. Mirrors what the operator enforces: `plugin/operation` / `plugin/*` / `*` patterns → auto | manual.","x-speakeasy-group":"operations","x-speakeasy-name-override":"getPolicy","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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":"The approval policy rules and default.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationsPolicyResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"put":{"operationId":"updateOperationsPolicy","description":"Replace a project's per-command approval policy (full rule set). Patterns are `plugin/operation`, `plugin/*`, or `*`; each maps to auto | manual.","x-speakeasy-group":"operations","x-speakeasy-name-override":"updatePolicy","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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"}}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOperationsPolicyRequest"}}}},"responses":{"200":{"description":"The updated approval policy.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationsPolicyResponse"}}}},"400":{"description":"Invalid request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/operations/invoke":{"post":{"operationId":"invokeOperation","description":"Invoke a plugin operation against a deployment. Honors the project's per-command approval policy.","x-speakeasy-group":"operations","x-speakeasy-name-override":"invoke","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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"}}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvokeOperationRequest"}}}},"responses":{"200":{"description":"The operation was dispatched or queued for approval.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvokeOperationResponse"}}}},"402":{"description":"Custom plugins require a higher plan tier.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Caller may not create commands for this deployment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Plugin or 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/access-requests":{"post":{"operationId":"createAccessRequest","description":"Create a pending access request covering a remediation plan's commands. Awaits the engineer gate before it is queued for the operator.","x-speakeasy-group":"operations","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are 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":{"deploymentId":{"type":"string"},"remediationPlanId":{"type":"string"},"title":{"type":"string"},"reason":{"type":"string"},"commands":{"type":"array","items":{"type":"object","properties":{"command":{"type":"string","example":"kubernetes/get-pods"},"summary":{"type":"string","example":"List pods in the ingestion namespace"}},"required":["command","summary"]},"minItems":1}},"required":["deploymentId","remediationPlanId","title","commands"]}}}},"responses":{"201":{"description":"The created access request.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"deploymentId":{"type":"string"},"remediationPlanId":{"type":"string"},"title":{"type":"string"},"reason":{"type":"string","nullable":true},"commands":{"type":"array","items":{"type":"object","properties":{"command":{"type":"string","example":"kubernetes/get-pods"},"summary":{"type":"string","example":"List pods in the ingestion namespace"}},"required":["command","summary"]}},"status":{"type":"string","enum":["pending-approval","queued","customer-approved","expired","rejected"]},"approvedUntil":{"type":"string","nullable":true}},"required":["id","deploymentId","remediationPlanId","title","reason","commands","status","approvedUntil"]}}}},"404":{"description":"Deployment or remediation plan not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/access-requests/{id}/queue":{"post":{"operationId":"queueAccessRequest","description":"Engineer gate — approve a pending access request, queuing it for the operator to materialize. Records who queued it.","x-speakeasy-group":"operations","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":"The queued access request, with the customer approve command.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"deploymentId":{"type":"string"},"remediationPlanId":{"type":"string"},"title":{"type":"string"},"reason":{"type":"string","nullable":true},"commands":{"type":"array","items":{"type":"object","properties":{"command":{"type":"string","example":"kubernetes/get-pods"},"summary":{"type":"string","example":"List pods in the ingestion namespace"}},"required":["command","summary"]}},"status":{"type":"string","enum":["pending-approval","queued","customer-approved","expired","rejected"]},"approvedUntil":{"type":"string","nullable":true},"kubectlApprove":{"type":"string","nullable":true}},"required":["id","deploymentId","remediationPlanId","title","reason","commands","status","approvedUntil","kubectlApprove"]}}}},"404":{"description":"Access request not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Access request is not pending approval.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/access-requests/{id}/coordinates":{"get":{"operationId":"getAccessRequestCoordinates","description":"The customer's kubectl approve command for a queued access request, or null until the operator has materialized the grant CR and reported its coordinates. Polled by the Slack handler to update the access-plan card.","x-speakeasy-group":"operations","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":"The approve command (or null) and current status.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["pending-approval","queued","customer-approved","expired","rejected"]},"kubectlApprove":{"type":"string","nullable":true}},"required":["status","kubectlApprove"]}}}},"404":{"description":"Access request not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/access-requests/pending":{"get":{"operationId":"listPendingAccessRequests","description":"Operator-facing: the queued access requests for a deployment, for the access-request sync loop to materialize as grant CRs.","x-speakeasy-ignore":true,"parameters":[{"schema":{"type":"string"},"required":true,"name":"deploymentId","in":"query"}],"responses":{"200":{"description":"Queued access requests for the deployment.","content":{"application/json":{"schema":{"type":"object","properties":{"requests":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"reason":{"type":"string","nullable":true},"commands":{"type":"array","items":{"type":"object","properties":{"command":{"type":"string","example":"kubernetes/get-pods"},"summary":{"type":"string","example":"List pods in the ingestion namespace"}},"required":["command","summary"]}}},"required":["id","title","reason","commands"]}}},"required":["requests"]}}}},"403":{"description":"Caller is not the deployment's manager runtime.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/access-requests/materialized":{"post":{"operationId":"reportMaterializedAccessRequests","description":"Operator-facing: record the namespace + CRD plural the operator materialized the grant CRs in, so the control plane can render the customer's exact kubectl approve command.","x-speakeasy-ignore":true,"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"deploymentId":{"type":"string"},"requestIds":{"type":"array","items":{"type":"string"}},"namespace":{"type":"string","minLength":1},"resourcePlural":{"type":"string","minLength":1}},"required":["deploymentId","requestIds","namespace","resourcePlural"]}}}},"responses":{"200":{"description":"Number of requests updated with CR coordinates.","content":{"application/json":{"schema":{"type":"object","properties":{"recorded":{"type":"number"}},"required":["recorded"]}}}},"403":{"description":"Caller is not the deployment's manager runtime.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/access-requests/approvals":{"post":{"operationId":"reportAccessApprovals","description":"Operator-facing: record the customer's approval windows reported back by the sync loop. Moves each request to customer-approved and resumes the investigation to dispatch commands.","x-speakeasy-ignore":true,"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"deploymentId":{"type":"string"},"approvals":{"type":"array","items":{"type":"object","properties":{"requestId":{"type":"string"},"approvedUntil":{"type":"string"}},"required":["requestId","approvedUntil"]}}},"required":["deploymentId","approvals"]}}}},"responses":{"200":{"description":"Number of approvals recorded.","content":{"application/json":{"schema":{"type":"object","properties":{"recorded":{"type":"number"}},"required":["recorded"]}}}},"403":{"description":"Caller is not the deployment's manager runtime.","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/renew":{"post":{"operationId":"syncRenew","x-speakeasy-group":"sync","x-speakeasy-name-override":"renew","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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/SyncRenewRequest"}}}},"responses":{"200":{"description":"Renewal processed. Inspect `leases` for per-deployment outcomes; a lost lease is reported there rather than failing the whole batch.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"True when every requested deployment was renewed."},"leases":{"type":"array","items":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"renewed":{"type":"boolean","description":"False when this session no longer holds a live lease."},"leaseExpiresAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["deploymentId","renewed","leaseExpiresAt"]},"description":"Per-deployment renewal outcome."}},"required":["success","leases"]}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"The session no longer owns the deployment.","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","ai"]},"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","ai"]},"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","ai"]},"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 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"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"availability":{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]},"region":{"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":["availability","region","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsBedrock"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"availability":{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]},"location":{"type":"string"},"project":{"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":["availability","location","project","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpVertex"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"accountName":{"type":"string"},"availability":{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]},"endpoint":{"type":"string","nullable":true},"location":{"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"]}},"required":["accountName","availability","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureFoundry"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"availability":{"oneOf":[{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]},{"nullable":true}]},"provider":{"type":"string","description":"The BYO-key provider serving this binding (e.g. \"openai\"). Used on the Local\nplatform, where the app brings its own provider key instead of an ambient cloud."},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["provider","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["external"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["ai"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"type":"object","properties":{"data":{"type":"object","properties":{"enabled":{"type":"boolean"},"keyArn":{"type":"string"},"keySpec":{"type":"string"},"keyState":{"type":"string"},"keyUsage":{"type":"string"},"status":{"type":"object","properties":{"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true}},"required":["health","lifecycle"]}},"required":["enabled","keyArn","keySpec","keyState","keyUsage","status"]},"provider":{"type":"string","enum":["aws-kms"]}},"required":["data","provider"]},{"type":"object","properties":{"data":{"type":"object","properties":{"algorithm":{"type":"string","nullable":true},"cryptoKeyName":{"type":"string"},"primaryState":{"type":"string","nullable":true},"primaryVersion":{"type":"string","nullable":true},"purpose":{"type":"string"},"status":{"type":"object","properties":{"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true}},"required":["health","lifecycle"]}},"required":["cryptoKeyName","purpose","status"]},"provider":{"type":"string","enum":["gcp-cloud-kms"]}},"required":["data","provider"]},{"type":"object","properties":{"data":{"type":"object","properties":{"enabled":{"type":"boolean","nullable":true},"keyId":{"type":"string"},"keyOperations":{"type":"array","items":{"type":"string"}},"keyType":{"type":"string"},"recoveryLevel":{"type":"string","nullable":true},"status":{"type":"object","properties":{"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true}},"required":["health","lifecycle"]}},"required":["keyId","keyOperations","keyType","status"]},"provider":{"type":"string","enum":["azure-key-vault"]}},"required":["data","provider"]}]},"resourceType":{"type":"string","enum":["key"]}},"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/aws-virtual-keys":{"get":{"operationId":"listAwsVirtualKeys","parameters":[{"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":"AWS Virtual Keys in a project","content":{"application/json":{"schema":{"type":"object","properties":{"virtualKeys":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"projectId":{"type":"string"},"status":{"type":"string","enum":["provisioning","ready","action-required","decommissioning","deletion-pending","deleted","failed"]},"externalKeyId":{"type":"string"},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"customKeyStoreId":{"type":"string","nullable":true},"kmsKeyArn":{"type":"string","nullable":true},"alias":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"deletionWindowDays":{"type":"integer"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"canaryPassedAt":{"type":"string","nullable":true,"format":"date-time"},"deletionScheduledAt":{"type":"string","nullable":true,"format":"date-time"},"finalDeletionObservedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","status","externalKeyId","awsAccountId","awsRegion","customKeyStoreId","kmsKeyArn","alias","description","deletionWindowDays","tags","observedAt","canaryPassedAt","deletionScheduledAt","finalDeletionObservedAt","createdAt","updatedAt"]}}},"required":["virtualKeys"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createAwsVirtualKey","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"selector":{"oneOf":[{"type":"object","properties":{"externalId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"}},"required":["externalId"],"additionalProperties":false},{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"}},"required":["deploymentId"],"additionalProperties":false}]},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"idempotencyKey":{"type":"string","minLength":1,"maxLength":128},"alias":{"type":"string","nullable":true,"minLength":1,"maxLength":256},"description":{"type":"string","nullable":true,"maxLength":8192},"deletionWindowDays":{"type":"integer","minimum":7,"maximum":30,"default":30},"tags":{"type":"object","additionalProperties":{"type":"string","maxLength":256},"default":{}}},"required":["selector","awsAccountId","awsRegion","idempotencyKey"]}}}},"responses":{"200":{"description":"Created or resumed Virtual Key","content":{"application/json":{"schema":{"type":"object","properties":{"virtualKey":{"type":"object","properties":{"id":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"projectId":{"type":"string"},"status":{"type":"string","enum":["provisioning","ready","action-required","decommissioning","deletion-pending","deleted","failed"]},"externalKeyId":{"type":"string"},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"customKeyStoreId":{"type":"string","nullable":true},"kmsKeyArn":{"type":"string","nullable":true},"alias":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"deletionWindowDays":{"type":"integer"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"canaryPassedAt":{"type":"string","nullable":true,"format":"date-time"},"deletionScheduledAt":{"type":"string","nullable":true,"format":"date-time"},"finalDeletionObservedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","status","externalKeyId","awsAccountId","awsRegion","customKeyStoreId","kmsKeyArn","alias","description","deletionWindowDays","tags","observedAt","canaryPassedAt","deletionScheduledAt","finalDeletionObservedAt","createdAt","updatedAt"]},"setup":{"type":"object","properties":{"proxyUriEndpoint":{"type":"string","format":"uri"},"proxyUriPath":{"type":"string"},"accessKeyId":{"type":"string"},"secretAccessKey":{"type":"string"},"externalKeyId":{"type":"string"}},"required":["proxyUriEndpoint","proxyUriPath","accessKeyId","secretAccessKey","externalKeyId"]}},"required":["virtualKey","setup"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project or Enterprise Key not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Idempotency conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"Gateway unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/aws-virtual-keys/{id}/rotate-credential":{"post":{"operationId":"rotateAwsVirtualKeyCredential","parameters":[{"schema":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"required":true,"description":"Unique identifier for the aws virtual key.","name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"generation":{"type":"integer","minimum":2}},"required":["generation"]}}}},"responses":{"200":{"description":"The resumable XKS proxy credential rotation bundle","content":{"application/json":{"schema":{"type":"object","properties":{"virtualKey":{"type":"object","properties":{"id":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"projectId":{"type":"string"},"status":{"type":"string","enum":["provisioning","ready","action-required","decommissioning","deletion-pending","deleted","failed"]},"externalKeyId":{"type":"string"},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"customKeyStoreId":{"type":"string","nullable":true},"kmsKeyArn":{"type":"string","nullable":true},"alias":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"deletionWindowDays":{"type":"integer"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"canaryPassedAt":{"type":"string","nullable":true,"format":"date-time"},"deletionScheduledAt":{"type":"string","nullable":true,"format":"date-time"},"finalDeletionObservedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","status","externalKeyId","awsAccountId","awsRegion","customKeyStoreId","kmsKeyArn","alias","description","deletionWindowDays","tags","observedAt","canaryPassedAt","deletionScheduledAt","finalDeletionObservedAt","createdAt","updatedAt"]},"setup":{"type":"object","properties":{"proxyUriEndpoint":{"type":"string","format":"uri"},"proxyUriPath":{"type":"string"},"accessKeyId":{"type":"string"},"secretAccessKey":{"type":"string"},"externalKeyId":{"type":"string"}},"required":["proxyUriEndpoint","proxyUriPath","accessKeyId","secretAccessKey","externalKeyId"]}},"required":["virtualKey","setup"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Virtual Key not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Virtual Key cannot begin rotation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/aws-virtual-keys/{id}/restore":{"post":{"operationId":"restoreAwsVirtualKey","parameters":[{"schema":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"required":true,"description":"Unique identifier for the aws virtual key.","name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"kmsKeyArn":{"type":"string","pattern":"^arn:(?:aws|aws-us-gov):kms:[a-z0-9-]+:\\d{12}:key\\/[A-Za-z0-9-]+$"}},"required":["kmsKeyArn"]}}}},"responses":{"200":{"description":"Virtual Key awaiting a successful AWS XKS canary after restore","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"projectId":{"type":"string"},"status":{"type":"string","enum":["provisioning","ready","action-required","decommissioning","deletion-pending","deleted","failed"]},"externalKeyId":{"type":"string"},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"customKeyStoreId":{"type":"string","nullable":true},"kmsKeyArn":{"type":"string","nullable":true},"alias":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"deletionWindowDays":{"type":"integer"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"canaryPassedAt":{"type":"string","nullable":true,"format":"date-time"},"deletionScheduledAt":{"type":"string","nullable":true,"format":"date-time"},"finalDeletionObservedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","status","externalKeyId","awsAccountId","awsRegion","customKeyStoreId","kmsKeyArn","alias","description","deletionWindowDays","tags","observedAt","canaryPassedAt","deletionScheduledAt","finalDeletionObservedAt","createdAt","updatedAt"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Virtual Key not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Virtual Key cannot be restored","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/aws-virtual-keys/{id}/finalize-deletion":{"post":{"operationId":"finalizeAwsVirtualKeyDeletion","parameters":[{"schema":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"required":true,"description":"Unique identifier for the aws virtual key.","name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"kmsKeyArn":{"type":"string","pattern":"^arn:(?:aws|aws-us-gov):kms:[a-z0-9-]+:\\d{12}:key\\/[A-Za-z0-9-]+$"}},"required":["kmsKeyArn"]}}}},"responses":{"200":{"description":"Virtual Key whose final AWS KMS deletion was observed","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"projectId":{"type":"string"},"status":{"type":"string","enum":["provisioning","ready","action-required","decommissioning","deletion-pending","deleted","failed"]},"externalKeyId":{"type":"string"},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"customKeyStoreId":{"type":"string","nullable":true},"kmsKeyArn":{"type":"string","nullable":true},"alias":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"deletionWindowDays":{"type":"integer"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"canaryPassedAt":{"type":"string","nullable":true,"format":"date-time"},"deletionScheduledAt":{"type":"string","nullable":true,"format":"date-time"},"finalDeletionObservedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","status","externalKeyId","awsAccountId","awsRegion","customKeyStoreId","kmsKeyArn","alias","description","deletionWindowDays","tags","observedAt","canaryPassedAt","deletionScheduledAt","finalDeletionObservedAt","createdAt","updatedAt"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Virtual Key not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Virtual Key deletion cannot be finalized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/aws-virtual-keys/{id}/decommission":{"post":{"operationId":"decommissionAwsVirtualKey","parameters":[{"schema":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"required":true,"description":"Unique identifier for the aws virtual key.","name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"kmsKeyArn":{"type":"string","pattern":"^arn:(?:aws|aws-us-gov):kms:[a-z0-9-]+:\\d{12}:key\\/[A-Za-z0-9-]+$"},"deletionScheduledAt":{"type":"string","format":"date-time"}},"required":["kmsKeyArn","deletionScheduledAt"]}}}},"responses":{"200":{"description":"Virtual Key with AWS deletion scheduled","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"projectId":{"type":"string"},"status":{"type":"string","enum":["provisioning","ready","action-required","decommissioning","deletion-pending","deleted","failed"]},"externalKeyId":{"type":"string"},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"customKeyStoreId":{"type":"string","nullable":true},"kmsKeyArn":{"type":"string","nullable":true},"alias":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"deletionWindowDays":{"type":"integer"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"canaryPassedAt":{"type":"string","nullable":true,"format":"date-time"},"deletionScheduledAt":{"type":"string","nullable":true,"format":"date-time"},"finalDeletionObservedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","status","externalKeyId","awsAccountId","awsRegion","customKeyStoreId","kmsKeyArn","alias","description","deletionWindowDays","tags","observedAt","canaryPassedAt","deletionScheduledAt","finalDeletionObservedAt","createdAt","updatedAt"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Virtual Key not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"AWS key does not match","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/aws-virtual-keys/{id}":{"get":{"operationId":"getAwsVirtualKey","parameters":[{"schema":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"required":true,"description":"Unique identifier for the aws virtual key.","name":"id","in":"path"}],"responses":{"200":{"description":"AWS Virtual Key","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"projectId":{"type":"string"},"status":{"type":"string","enum":["provisioning","ready","action-required","decommissioning","deletion-pending","deleted","failed"]},"externalKeyId":{"type":"string"},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"customKeyStoreId":{"type":"string","nullable":true},"kmsKeyArn":{"type":"string","nullable":true},"alias":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"deletionWindowDays":{"type":"integer"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"canaryPassedAt":{"type":"string","nullable":true,"format":"date-time"},"deletionScheduledAt":{"type":"string","nullable":true,"format":"date-time"},"finalDeletionObservedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","status","externalKeyId","awsAccountId","awsRegion","customKeyStoreId","kmsKeyArn","alias","description","deletionWindowDays","tags","observedAt","canaryPassedAt","deletionScheduledAt","finalDeletionObservedAt","createdAt","updatedAt"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Virtual Key not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/aws-virtual-keys/{id}/continue":{"post":{"operationId":"continueAwsVirtualKey","parameters":[{"schema":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"required":true,"description":"Unique identifier for the aws virtual key.","name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"customKeyStoreId":{"type":"string","pattern":"^cks-[A-Za-z0-9]+$"},"kmsKeyArn":{"type":"string","pattern":"^arn:(?:aws|aws-us-gov):kms:[a-z0-9-]+:\\d{12}:key\\/[A-Za-z0-9-]+$"}},"required":["customKeyStoreId","kmsKeyArn"]}}}},"responses":{"200":{"description":"Updated AWS setup facts","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"projectId":{"type":"string"},"status":{"type":"string","enum":["provisioning","ready","action-required","decommissioning","deletion-pending","deleted","failed"]},"externalKeyId":{"type":"string"},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"customKeyStoreId":{"type":"string","nullable":true},"kmsKeyArn":{"type":"string","nullable":true},"alias":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"deletionWindowDays":{"type":"integer"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"canaryPassedAt":{"type":"string","nullable":true,"format":"date-time"},"deletionScheduledAt":{"type":"string","nullable":true,"format":"date-time"},"finalDeletionObservedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","status","externalKeyId","awsAccountId","awsRegion","customKeyStoreId","kmsKeyArn","alias","description","deletionWindowDays","tags","observedAt","canaryPassedAt","deletionScheduledAt","finalDeletionObservedAt","createdAt","updatedAt"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Virtual Key not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Setup facts conflict","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","project.encryption","project.ai-gateway","project.remote-bindings"],"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,"pattern":"^(?:[0-9a-fA-F]{40}|[0-9a-fA-F]{64})$","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,"description":"The author identity recorded by Git. This is not guaranteed to be an RFC-valid email address.","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."},"projectCapabilities":{"type":"object","nullable":true,"properties":{"schemaVersion":{"type":"number","enum":[1]},"capabilities":{"type":"object","properties":{"deployments":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]}},"required":["enabled"],"additionalProperties":false},"keys":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]},"applicationEncryption":{"type":"boolean","enum":[true]}},"required":["enabled","applicationEncryption"],"additionalProperties":false},"models":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]},"allowedProviders":{"type":"array","items":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic","databricks","openai"]},"minItems":1,"maxItems":6},"requirements":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string","minLength":1,"maxLength":256},"clientApis":{"type":"array","items":{"type":"string","enum":["openai-chat","openai-responses","anthropic-messages"]},"minItems":1,"maxItems":3},"required":{"type":"boolean"}},"required":["publicModelId","clientApis","required"],"additionalProperties":false},"maxItems":100}},"required":["enabled","allowedProviders","requirements"],"additionalProperties":false},"buckets":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]},"access":{"type":"string","enum":["read-write"]}},"required":["enabled","access"],"additionalProperties":false},"registry":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]},"repositories":{"type":"array","items":{"type":"string","minLength":1,"maxLength":128},"maxItems":100},"credentialPolicy":{"type":"string","enum":["pull-only","push-and-pull"]}},"required":["enabled","repositories","credentialPolicy"],"additionalProperties":false}},"additionalProperties":false}},"default":null,"required":["schemaVersion","capabilities"],"additionalProperties":false,"description":"Capabilities this Project may offer through setup links."},"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","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","nullable":true},"stack":{"allOf":[{"$ref":"#/components/schemas/StackByPlatform"}],"nullable":true}},"required":["id","version","stack"]},"supportedPlatforms":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","machines","local","test"],"description":"Represents the target cloud platform."}},"setupItems":{"type":"array","items":{"type":"string","enum":["deployment","models","keys","bucket","registry"]}},"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"}},"setupPackagesStatus":{"type":"string","enum":["preparing","ready","failed"],"description":"Whether at least one complete automated setup package is ready across all selected setup items."}},"required":["activeRelease","supportedPlatforms","setupItems","visiblePackageTypes","visibleSetupMethods","setupPackagesStatus"]},"StackByPlatform":{"type":"object","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"]},"ProjectCapabilities":{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"capabilities":{"type":"object","properties":{"deployments":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]}},"required":["enabled"],"additionalProperties":false},"keys":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]},"applicationEncryption":{"type":"boolean","enum":[true]}},"required":["enabled","applicationEncryption"],"additionalProperties":false},"models":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]},"allowedProviders":{"type":"array","items":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic","databricks","openai"]},"minItems":1,"maxItems":6},"requirements":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string","minLength":1,"maxLength":256},"clientApis":{"type":"array","items":{"type":"string","enum":["openai-chat","openai-responses","anthropic-messages"]},"minItems":1,"maxItems":3},"required":{"type":"boolean"}},"required":["publicModelId","clientApis","required"],"additionalProperties":false},"maxItems":100}},"required":["enabled","allowedProviders","requirements"],"additionalProperties":false},"buckets":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]},"access":{"type":"string","enum":["read-write"]}},"required":["enabled","access"],"additionalProperties":false},"registry":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]},"repositories":{"type":"array","items":{"type":"string","minLength":1,"maxLength":128},"maxItems":100},"credentialPolicy":{"type":"string","enum":["pull-only","push-and-pull"]}},"required":["enabled","repositories","credentialPolicy"],"additionalProperties":false}},"additionalProperties":false}},"required":["schemaVersion","capabilities"],"additionalProperties":false},"CapabilityMaterialization":{"type":"object","properties":{"projectCapabilities":{"$ref":"#/components/schemas/ProjectCapabilities"},"source":{"type":"object","properties":{"definitionId":{"type":"string","enum":["customer-ai","customer-key","customer-storage","customer-registry"]},"definitionVersion":{"type":"string"},"releaseId":{"type":"string"}},"required":["definitionId","definitionVersion","releaseId"]},"packages":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["cloudformation","terraform"]},"status":{"type":"string","enum":["pending","building","ready","failed","canceled"]}},"required":["type","status"]}}},"required":["projectCapabilities","source","packages"]},"ConfigureModelsRequest":{"type":"object","properties":{"allowedProviders":{"type":"array","items":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic","databricks","openai"]},"minItems":1,"maxItems":6},"requirements":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string","minLength":1,"maxLength":256},"clientApis":{"type":"array","items":{"type":"string","enum":["openai-chat","openai-responses","anthropic-messages"]},"minItems":1,"maxItems":3},"required":{"type":"boolean"}},"required":["publicModelId","clientApis","required"],"additionalProperties":false},"maxItems":100}},"required":["allowedProviders","requirements"],"additionalProperties":false},"ProjectCapabilityOverview":{"type":"object","properties":{"generatedAt":{"type":"string","format":"date-time"},"configurationStatus":{"type":"string","enum":["valid","invalid"]},"summary":{"type":"object","properties":{"groups":{"type":"integer","minimum":0},"capabilities":{"type":"object","properties":{"models":{"type":"object","properties":{"enabled":{"type":"boolean"},"connected":{"type":"integer","minimum":0},"settingUp":{"type":"integer","minimum":0},"needsAttention":{"type":"integer","minimum":0},"revoked":{"type":"integer","minimum":0},"notConnected":{"type":"integer","minimum":0}},"required":["enabled","connected","settingUp","needsAttention","revoked","notConnected"]},"keys":{"type":"object","properties":{"enabled":{"type":"boolean"},"connected":{"type":"integer","minimum":0},"settingUp":{"type":"integer","minimum":0},"needsAttention":{"type":"integer","minimum":0},"revoked":{"type":"integer","minimum":0},"notConnected":{"type":"integer","minimum":0}},"required":["enabled","connected","settingUp","needsAttention","revoked","notConnected"]},"buckets":{"type":"object","properties":{"enabled":{"type":"boolean"},"connected":{"type":"integer","minimum":0},"settingUp":{"type":"integer","minimum":0},"needsAttention":{"type":"integer","minimum":0},"revoked":{"type":"integer","minimum":0},"notConnected":{"type":"integer","minimum":0}},"required":["enabled","connected","settingUp","needsAttention","revoked","notConnected"]},"registry":{"type":"object","properties":{"enabled":{"type":"boolean"},"connected":{"type":"integer","minimum":0},"settingUp":{"type":"integer","minimum":0},"needsAttention":{"type":"integer","minimum":0},"revoked":{"type":"integer","minimum":0},"notConnected":{"type":"integer","minimum":0}},"required":["enabled","connected","settingUp","needsAttention","revoked","notConnected"]}},"required":["models","keys","buckets","registry"]}},"required":["groups","capabilities"]},"groups":{"type":"array","items":{"type":"object","properties":{"deploymentGroupId":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"name":{"type":"string"},"externalId":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"},"capabilities":{"type":"object","properties":{"models":{"type":"object","properties":{"capability":{"type":"string","enum":["models","keys","buckets","registry"]},"enabled":{"type":"boolean"},"state":{"type":"string","enum":["not-connected","setting-up","connected","needs-attention","revoked"]},"deploymentId":{"type":"string","nullable":true,"pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"observation":{"type":"object","nullable":true,"properties":{"provider":{"type":"string","nullable":true},"platform":{"type":"string","nullable":true,"enum":["aws","gcp","azure","local","kubernetes","machines","test",null]},"resourceId":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"account":{"type":"string","nullable":true},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"stale":{"type":"boolean"},"partial":{"type":"boolean"},"health":{"type":"string","nullable":true,"enum":["unknown","healthy","degraded","unhealthy",null]},"lifecycle":{"type":"string","nullable":true},"message":{"type":"string","nullable":true}},"required":["provider","platform","resourceId","location","account","observedAt","stale","partial","health","lifecycle","message"]},"modelCoverage":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string"},"required":{"type":"boolean"},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockerCodes":{"type":"array","items":{"type":"string"}},"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"accessObservedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["publicModelId","required","availability","blockerCodes","accessTest","accessObservedAt"]}},"directProvider":{"type":"object","properties":{"provider":{"type":"string","enum":["anthropic","databricks","openai"]},"providerEndpoint":{"type":"string","nullable":true},"keyFingerprint":{"type":"string"},"availableProviderModelIds":{"type":"array","items":{"type":"string"}},"verifiedAt":{"type":"string","format":"date-time"}},"required":["provider","providerEndpoint","keyFingerprint","availableProviderModelIds","verifiedAt"]},"root":{"type":"object","properties":{"state":{"type":"string","enum":["pending","ready","revoked"]},"createdAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["state","createdAt"]},"registry":{"type":"object","properties":{"repositories":{"type":"integer","minimum":0},"credentials":{"type":"integer","minimum":0},"credentialPolicy":{"type":"string","enum":["pull-only","push-and-pull","mixed","none"]},"lastVerifiedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["repositories","credentials","credentialPolicy","lastVerifiedAt"]}},"required":["capability","enabled","state","deploymentId","observation"]},"keys":{"type":"object","properties":{"capability":{"type":"string","enum":["models","keys","buckets","registry"]},"enabled":{"type":"boolean"},"state":{"type":"string","enum":["not-connected","setting-up","connected","needs-attention","revoked"]},"deploymentId":{"type":"string","nullable":true,"pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"observation":{"type":"object","nullable":true,"properties":{"provider":{"type":"string","nullable":true},"platform":{"type":"string","nullable":true,"enum":["aws","gcp","azure","local","kubernetes","machines","test",null]},"resourceId":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"account":{"type":"string","nullable":true},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"stale":{"type":"boolean"},"partial":{"type":"boolean"},"health":{"type":"string","nullable":true,"enum":["unknown","healthy","degraded","unhealthy",null]},"lifecycle":{"type":"string","nullable":true},"message":{"type":"string","nullable":true}},"required":["provider","platform","resourceId","location","account","observedAt","stale","partial","health","lifecycle","message"]},"modelCoverage":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string"},"required":{"type":"boolean"},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockerCodes":{"type":"array","items":{"type":"string"}},"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"accessObservedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["publicModelId","required","availability","blockerCodes","accessTest","accessObservedAt"]}},"directProvider":{"type":"object","properties":{"provider":{"type":"string","enum":["anthropic","databricks","openai"]},"providerEndpoint":{"type":"string","nullable":true},"keyFingerprint":{"type":"string"},"availableProviderModelIds":{"type":"array","items":{"type":"string"}},"verifiedAt":{"type":"string","format":"date-time"}},"required":["provider","providerEndpoint","keyFingerprint","availableProviderModelIds","verifiedAt"]},"root":{"type":"object","properties":{"state":{"type":"string","enum":["pending","ready","revoked"]},"createdAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["state","createdAt"]},"registry":{"type":"object","properties":{"repositories":{"type":"integer","minimum":0},"credentials":{"type":"integer","minimum":0},"credentialPolicy":{"type":"string","enum":["pull-only","push-and-pull","mixed","none"]},"lastVerifiedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["repositories","credentials","credentialPolicy","lastVerifiedAt"]}},"required":["capability","enabled","state","deploymentId","observation"]},"buckets":{"type":"object","properties":{"capability":{"type":"string","enum":["models","keys","buckets","registry"]},"enabled":{"type":"boolean"},"state":{"type":"string","enum":["not-connected","setting-up","connected","needs-attention","revoked"]},"deploymentId":{"type":"string","nullable":true,"pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"observation":{"type":"object","nullable":true,"properties":{"provider":{"type":"string","nullable":true},"platform":{"type":"string","nullable":true,"enum":["aws","gcp","azure","local","kubernetes","machines","test",null]},"resourceId":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"account":{"type":"string","nullable":true},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"stale":{"type":"boolean"},"partial":{"type":"boolean"},"health":{"type":"string","nullable":true,"enum":["unknown","healthy","degraded","unhealthy",null]},"lifecycle":{"type":"string","nullable":true},"message":{"type":"string","nullable":true}},"required":["provider","platform","resourceId","location","account","observedAt","stale","partial","health","lifecycle","message"]},"modelCoverage":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string"},"required":{"type":"boolean"},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockerCodes":{"type":"array","items":{"type":"string"}},"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"accessObservedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["publicModelId","required","availability","blockerCodes","accessTest","accessObservedAt"]}},"directProvider":{"type":"object","properties":{"provider":{"type":"string","enum":["anthropic","databricks","openai"]},"providerEndpoint":{"type":"string","nullable":true},"keyFingerprint":{"type":"string"},"availableProviderModelIds":{"type":"array","items":{"type":"string"}},"verifiedAt":{"type":"string","format":"date-time"}},"required":["provider","providerEndpoint","keyFingerprint","availableProviderModelIds","verifiedAt"]},"root":{"type":"object","properties":{"state":{"type":"string","enum":["pending","ready","revoked"]},"createdAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["state","createdAt"]},"registry":{"type":"object","properties":{"repositories":{"type":"integer","minimum":0},"credentials":{"type":"integer","minimum":0},"credentialPolicy":{"type":"string","enum":["pull-only","push-and-pull","mixed","none"]},"lastVerifiedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["repositories","credentials","credentialPolicy","lastVerifiedAt"]}},"required":["capability","enabled","state","deploymentId","observation"]},"registry":{"type":"object","properties":{"capability":{"type":"string","enum":["models","keys","buckets","registry"]},"enabled":{"type":"boolean"},"state":{"type":"string","enum":["not-connected","setting-up","connected","needs-attention","revoked"]},"deploymentId":{"type":"string","nullable":true,"pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"observation":{"type":"object","nullable":true,"properties":{"provider":{"type":"string","nullable":true},"platform":{"type":"string","nullable":true,"enum":["aws","gcp","azure","local","kubernetes","machines","test",null]},"resourceId":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"account":{"type":"string","nullable":true},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"stale":{"type":"boolean"},"partial":{"type":"boolean"},"health":{"type":"string","nullable":true,"enum":["unknown","healthy","degraded","unhealthy",null]},"lifecycle":{"type":"string","nullable":true},"message":{"type":"string","nullable":true}},"required":["provider","platform","resourceId","location","account","observedAt","stale","partial","health","lifecycle","message"]},"modelCoverage":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string"},"required":{"type":"boolean"},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockerCodes":{"type":"array","items":{"type":"string"}},"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"accessObservedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["publicModelId","required","availability","blockerCodes","accessTest","accessObservedAt"]}},"directProvider":{"type":"object","properties":{"provider":{"type":"string","enum":["anthropic","databricks","openai"]},"providerEndpoint":{"type":"string","nullable":true},"keyFingerprint":{"type":"string"},"availableProviderModelIds":{"type":"array","items":{"type":"string"}},"verifiedAt":{"type":"string","format":"date-time"}},"required":["provider","providerEndpoint","keyFingerprint","availableProviderModelIds","verifiedAt"]},"root":{"type":"object","properties":{"state":{"type":"string","enum":["pending","ready","revoked"]},"createdAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["state","createdAt"]},"registry":{"type":"object","properties":{"repositories":{"type":"integer","minimum":0},"credentials":{"type":"integer","minimum":0},"credentialPolicy":{"type":"string","enum":["pull-only","push-and-pull","mixed","none"]},"lastVerifiedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["repositories","credentials","credentialPolicy","lastVerifiedAt"]}},"required":["capability","enabled","state","deploymentId","observation"]}},"required":["models","keys","buckets","registry"]}},"required":["deploymentGroupId","name","externalId","createdAt","capabilities"]}}},"required":["generatedAt","configurationStatus","summary","groups"]},"RemoteBindingsExternalAccessResponse":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"resourceId":{"type":"string","minLength":1},"accessToken":{"type":"string"},"expiresIn":{"type":"number","nullable":true},"tokenType":{"type":"string","enum":["Bearer"]},"managerUrl":{"type":"string","format":"uri"}},"required":["deploymentId","resourceId","accessToken","expiresIn","tokenType","managerUrl"]},"RemoteBindingsExternalAccessRequest":{"type":"object","properties":{"externalId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"},"capability":{"type":"string","enum":["storage"]}},"required":["externalId","capability"],"additionalProperties":false},"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"},"externalId":{"type":"string","nullable":true,"minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"},"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","externalId","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"},"externalId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"},"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"]},"EnsureDeploymentGroupByExternalIdRequest":{"type":"object","properties":{"externalId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"},"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":["externalId","name","project"]},"CreateSetupLinkResponse":{"allOf":[{"$ref":"#/components/schemas/CreateDeploymentGroupTokenResponse"},{"type":"object","properties":{"deploymentGroup":{"$ref":"#/components/schemas/DeploymentGroup"}},"required":["deploymentGroup"]}]},"CreateDeploymentGroupTokenResponse":{"type":"object","properties":{"token":{"type":"string","description":"The API key token"},"deploymentLink":{"type":"string","description":"Formatted deployment link"}},"required":["token","deploymentLink"]},"CreateSetupLinkRequest":{"allOf":[{"$ref":"#/components/schemas/EnsureDeploymentGroupByExternalIdRequest"},{"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"},"setupItems":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentSetupItemSelection"},"maxItems":8,"description":"Customer infrastructure to include. The server snapshots its exact reviewed sources."},"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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"]},"DeploymentSetupItemSelection":{"type":"object","properties":{"item":{"type":"string","enum":["deployment","models","keys","bucket","registry"]},"required":{"type":"boolean"},"releaseChannel":{"type":"string","minLength":1,"maxLength":63}},"required":["item","required"],"additionalProperties":false},"StackInputValuesRequest":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/StackInputValueRequest"},"default":{}},"StackInputValueRequest":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"type":"string"}}]},"ProjectIDOrNameQueryParam":{"type":"string","maxLength":100,"description":"Filter by project ID or name."},"SetDeploymentGroupExternalIdRequest":{"type":"object","properties":{"externalId":{"type":"string","nullable":true,"minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"}},"required":["externalId"]},"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"}}},"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"},"setupItems":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentSetupItemSelection"},"maxItems":8,"description":"Customer infrastructure to include. The server snapshots its exact reviewed sources."},"inputValues":{"$ref":"#/components/schemas/StackInputValuesRequest"}},"required":["deploymentSetupConfig"]},"CreateFirstPartyDeploymentSessionResponse":{"type":"object","properties":{"token":{"type":"string","description":"The deployment-group session token"}},"required":["token"]},"ExternalAIBindingState":{"type":"object","properties":{"binding":{"$ref":"#/components/schemas/ExternalAIBinding"}},"required":["binding"]},"ExternalAIBinding":{"type":"object","nullable":true,"properties":{"id":{"type":"string"},"provider":{"type":"string","enum":["anthropic","databricks","openai"]},"providerEndpoint":{"type":"string","nullable":true},"providerClientId":{"type":"string","nullable":true},"keyFingerprint":{"type":"string"},"availableProviderModelIds":{"type":"array","items":{"type":"string"}},"requiredModelCoverage":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string"},"available":{"type":"boolean"}},"required":["publicModelId","available"]}},"verifiedAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","provider","providerEndpoint","providerClientId","keyFingerprint","availableProviderModelIds","requiredModelCoverage","verifiedAt","updatedAt"]},"PutExternalAIBindingRequest":{"oneOf":[{"type":"object","properties":{"provider":{"type":"string","enum":["anthropic","openai"]},"apiKey":{"type":"string","minLength":1,"maxLength":512},"acknowledgeAlienCredentialAccess":{"type":"boolean","enum":[true]}},"required":["provider","apiKey","acknowledgeAlienCredentialAccess"],"additionalProperties":false},{"type":"object","properties":{"provider":{"type":"string","enum":["databricks"]},"workspaceUrl":{"type":"string","minLength":1,"maxLength":512},"clientId":{"type":"string","minLength":1,"maxLength":512},"clientSecret":{"type":"string","minLength":1,"maxLength":4096},"acknowledgeAlienCredentialAccess":{"type":"boolean","enum":[true]}},"required":["provider","workspaceUrl","clientId","clientSecret","acknowledgeAlienCredentialAccess"],"additionalProperties":false}]},"ContainerRegistryState":{"type":"object","properties":{"route":{"type":"object","nullable":true,"properties":{"id":{"type":"string","pattern":"crroute_[0-9a-z]{28}$","description":"Unique identifier for the container registry route.","example":"crroute_c9t4xoy7fmiq7equtu20"},"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"managerId":{"type":"string"},"resourceId":{"type":"string"},"resourceRevision":{"type":"string","minLength":1},"desiredRevision":{"type":"integer","minimum":0},"appliedRevision":{"type":"integer","minimum":0},"status":{"type":"string","enum":["resolving","applying","connected","degraded","revoking","revoked"]},"lastVerifiedAt":{"type":"string","nullable":true,"format":"date-time"},"lastError":{"type":"string","nullable":true}},"required":["id","deploymentId","managerId","resourceId","resourceRevision","desiredRevision","appliedRevision","status","lastVerifiedAt","lastError"]},"endpoint":{"type":"object","nullable":true,"properties":{"url":{"type":"string","format":"uri"},"source":{"type":"string","enum":["runtime","custom-domain"]}},"required":["url","source"]},"repositories":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"crrepo_[0-9a-z]{28}$","description":"Unique identifier for the container registry repository.","example":"crrepo_625temdq3bnu25jw9rcux"},"logicalName":{"type":"string"},"desiredState":{"type":"string","enum":["present","deleteRequested","deleted"]},"status":{"type":"string","enum":["pending","creating","ready","deleting","deleted","failed"]},"verifiedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["id","logicalName","desiredState","status","verifiedAt"]}},"credentials":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"crcred_[0-9a-z]{28}$","description":"Unique identifier for the container registry credential.","example":"crcred_oz1xjr82f37j17g4gtmyu"},"label":{"type":"string"},"scope":{"type":"string","enum":["pull","pushPull"]},"repositorySubset":{"type":"array","nullable":true,"items":{"type":"string"}},"expiresAt":{"type":"string","nullable":true,"format":"date-time"},"lastUsedAt":{"type":"string","nullable":true,"format":"date-time"},"revokedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","label","scope","repositorySubset","expiresAt","lastUsedAt","revokedAt","createdAt"]}}},"required":["route","endpoint","repositories","credentials"]},"CreateContainerRegistryCredentialResponse":{"type":"object","properties":{"credential":{"type":"object","properties":{"id":{"type":"string","pattern":"crcred_[0-9a-z]{28}$","description":"Unique identifier for the container registry credential.","example":"crcred_oz1xjr82f37j17g4gtmyu"},"label":{"type":"string"},"scope":{"type":"string","enum":["pull","pushPull"]},"repositorySubset":{"type":"array","nullable":true,"items":{"type":"string"}},"expiresAt":{"type":"string","nullable":true,"format":"date-time"},"lastUsedAt":{"type":"string","nullable":true,"format":"date-time"},"revokedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","label","scope","repositorySubset","expiresAt","lastUsedAt","revokedAt","createdAt"]},"username":{"type":"string","enum":["alien"]},"password":{"type":"string"}},"required":["credential","username","password"]},"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":{"currentChannels":{"type":"array","items":{"$ref":"#/components/schemas/ReleaseChannelName"},"description":"Channels for which this release is currently selected"},"commitUrl":{"type":"string","nullable":true,"format":"uri","description":"Validated canonical provider URL for the exact commit"},"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"},"createdBy":{"type":"object","nullable":true,"properties":{"id":{"type":"string","description":"User ID"},"name":{"type":"string","description":"User's display name"},"email":{"type":"string","description":"User's email address"},"image":{"type":"string","nullable":true,"description":"User's avatar image URL"}},"required":["id","name","email","image"],"description":"Platform user who created the release, included when ?include=createdBy is used"}},"required":["currentChannels","commitUrl"]}]},"ReleaseChannelName":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z][a-z0-9-]*$"},"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":{"allOf":[{"$ref":"#/components/schemas/StackByPlatform"}],"nullable":true},"setupFingerprints":{"allOf":[{"$ref":"#/components/schemas/SetupFingerprintMap"},{"description":"Per-target setup compatibility fingerprints for this release"}]},"rootDirectory":{"type":"string","nullable":true,"maxLength":256},"createdByUserId":{"type":"string","nullable":true,"maxLength":128,"description":"ID of the platform user who created the release, if known"},"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},"channel":{"allOf":[{"$ref":"#/components/schemas/ReleaseChannelName"},{"description":"Release channel to advance. Defaults to production."}]}},"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"]},"ReleaseDeploymentsResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ReleaseDeploymentItem"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"},"stateCounts":{"$ref":"#/components/schemas/ReleaseRolloutStateCounts"}},"required":["items","nextCursor","stateCounts"]},"ReleaseDeploymentItem":{"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."},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","machines","local","test"],"description":"Target platform 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"},"deploymentGroup":{"type":"object","nullable":true,"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"},"externalId":{"type":"string","nullable":true,"minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"}},"required":["id","name","externalId"],"description":"Deployment group this deployment belongs to"},"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"},"lastHeartbeatAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last received heartbeat"},"rolloutState":{"$ref":"#/components/schemas/ReleaseRolloutState"},"releasedAt":{"type":"string","format":"date-time","nullable":true,"description":"When this release went live on the deployment, null if it never did"},"durationMs":{"type":"integer","nullable":true,"description":"Time from release creation until the deployment finished updating, in milliseconds. Null for initial provisions and deployments that never ran this release."},"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"}},"required":["id","name","status","platform","rolloutState","releasedAt","durationMs"]},"ReleaseRolloutState":{"type":"string","enum":["updated","updating","failed","pending","pinned-other","superseded","on-other"]},"ReleaseRolloutStateCounts":{"type":"object","properties":{"updated":{"type":"integer"},"updating":{"type":"integer"},"failed":{"type":"integer"},"pending":{"type":"integer"},"pinned-other":{"type":"integer"},"superseded":{"type":"integer"},"on-other":{"type":"integer"}},"required":["updated","updating","failed","pending","pinned-other","superseded","on-other"],"description":"Deployment counts per rollout state across all deployments the filters allow (ignores the state filter)"},"ReleaseChannel":{"type":"object","properties":{"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"name":{"$ref":"#/components/schemas/ReleaseChannelName"},"currentReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"deploymentCount":{"type":"integer","minimum":0},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["workspaceId","projectId","name","currentReleaseId","createdAt","updatedAt"]},"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"},"purpose":{"$ref":"#/components/schemas/DeploymentPurpose"},"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"},"releaseChannel":{"allOf":[{"$ref":"#/components/schemas/ReleaseChannelName"},{"description":"Named release stream followed when the deployment is not pinned"}]},"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","purpose","releaseChannel","retryRequested","createdAt","updatedAt","managerId","workspaceId"]},"DeploymentProtocolVersion":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"DeploymentState protocol version owned by the runtime/manager"},"DeploymentPurpose":{"type":"string","enum":["application","encryption","ai","storage","container-registry"],"description":"Operational purpose of this deployment within its customer environment."},"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"},"externalId":{"type":"string","nullable":true,"minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"}},"required":["id","name","externalId"]},"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."},"byOrigin":{"type":"object","properties":{"framework":{"type":"number"},"remoteOperator":{"type":"number"}},"description":"Count of deployments introduced through each deployment path."}},"required":["total","byStatus","byPlatform","byCurrentRelease","byPinnedRelease","byOrigin"]},"DeploymentDetailResponse":{"allOf":[{"$ref":"#/components/schemas/Deployment"},{"type":"object","properties":{"release":{"$ref":"#/components/schemas/DeploymentReleaseInfo"},"deploymentGroup":{"$ref":"#/components/schemas/DeploymentGroupInfo"},"project":{"$ref":"#/components/schemas/DeploymentProjectInfo"}}}]},"DeploymentUpdateOperationSummary":{"type":"object","nullable":true,"properties":{"id":{"type":"string","pattern":"duop_[0-9a-z]{28}$","description":"Unique identifier for the deployment update operation.","example":"duop_0vtxpb1sw4sbcdwg2xo37q6"},"status":{"$ref":"#/components/schemas/DeploymentUpdateOperationStatus"},"reasons":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentUpdateReason"}},"targetReleaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"changedKeys":{"type":"array","items":{"type":"string"}},"requestedAt":{"type":"string","format":"date-time"},"startedAt":{"type":"string","format":"date-time","nullable":true},"completedAt":{"type":"string","format":"date-time","nullable":true}},"required":["id","status","reasons","targetReleaseId","changedKeys","requestedAt"]},"DeploymentUpdateOperationStatus":{"type":"string","enum":["queued","applying","succeeded","failed","superseded"]},"DeploymentUpdateReason":{"type":"string","enum":["configuration","redeploy","release"]},"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"},"purpose":{"$ref":"#/components/schemas/DeploymentPurpose"},"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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":{"initialSetupAuthority":{"type":"string","enum":["importedHandoff","directSetup"],"description":"Actor that owns structural work during the initial setup phase."},"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}]},"persistedGateAnswers":{"type":"object","properties":{},"additionalProperties":{"type":"boolean"},"description":"Canonical resolved answers for inputs that gate Frozen resources,\nkeyed by input id, recorded when the deployment is created or its\nsetup import registers.\n\nA frozen gate's answer is fixed for the deployment's lifetime: the\nupdate path refuses input values that conflict with these, and a Live\nresource sharing such an input resolves the persisted answer forever."},"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"},"releaseChannel":{"allOf":[{"$ref":"#/components/schemas/ReleaseChannelName"},{"description":"Named release stream followed when the deployment is not pinned"}]},"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"},"updateState":{"type":"object","properties":{"active":{"$ref":"#/components/schemas/DeploymentUpdateOperationSummary"},"next":{"$ref":"#/components/schemas/DeploymentUpdateOperationSummary"},"latest":{"$ref":"#/components/schemas/DeploymentUpdateOperationSummary"}},"required":["active","next","latest"],"description":"Durable progress for deployment updates"},"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","purpose","stackSettings","releaseChannel","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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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."},"releaseChannel":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z][a-z0-9-]*$","default":"production","description":"Release channel followed while this deployment is not pinned."},"setupItem":{"type":"string","enum":["deployment","models","keys","bucket","registry"],"description":"Customer setup item selected from this deployment-group token."}},"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"},"setupItem":{"type":"string","enum":["deployment","models","keys","bucket","registry"],"description":"Exact item selected from a tailored customer setup link."},"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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":{"initialSetupAuthority":{"type":"string","enum":["importedHandoff","directSetup"],"description":"Actor that owns structural work during the initial setup phase."},"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}]},"persistedGateAnswers":{"type":"object","properties":{},"additionalProperties":{"type":"boolean"},"description":"Canonical resolved answers for inputs that gate Frozen resources,\nkeyed by input id, recorded when the deployment is created or its\nsetup import registers.\n\nA frozen gate's answer is fixed for the deployment's lifetime: the\nupdate path refuses input values that conflict with these, and a Live\nresource sharing such an input resolves the persisted answer forever."},"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 resume its followed channel.","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"},"outcome":{"type":"string","enum":["accepted","unchanged"]},"operation":{"$ref":"#/components/schemas/DeploymentUpdateOperationSummary"}},"required":["runtimeUpdateRequested","outcome","operation"]}]},"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","nullable":true,"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"},"items":{"type":"array","items":{"type":"object","properties":{"item":{"type":"string","enum":["deployment","models","keys","bucket","registry"]},"source":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["project-release"]},"releaseChannel":{"type":"string","minLength":1,"maxLength":63},"releaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"resourceId":{"type":"string","minLength":1,"maxLength":256}},"required":["type","releaseChannel","releaseId"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["built-in"]},"definitionId":{"type":"string","enum":["customer-ai","customer-key","customer-storage","customer-registry"]},"version":{"type":"string","minLength":1,"maxLength":64},"sourceReleaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"}},"required":["type","definitionId","version","sourceReleaseId"],"additionalProperties":false}]},"required":{"type":"boolean"},"configuration":{"type":"object","properties":{"allowedProviders":{"type":"array","items":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic","databricks","openai"]},"minItems":1,"maxItems":6},"modelRequirements":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string","minLength":1,"maxLength":256},"clientApis":{"type":"array","items":{"type":"string","enum":["openai-chat","openai-responses","anthropic-messages"]},"minItems":1,"maxItems":3},"required":{"type":"boolean"}},"required":["publicModelId","clientApis","required"],"additionalProperties":false},"maxItems":100}},"additionalProperties":false}},"required":["item","source","required"],"additionalProperties":false},"maxItems":8,"description":"Immutable setup items and exact sources captured when this setup link is created."},"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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}]},"channel":{"type":"string","description":"Name of the channel that moved"},"previousReleaseId":{"type":"string","nullable":true,"description":"ID of the release that was previously current, if any"},"releaseId":{"type":"string","description":"ID of the release that is now current"},"type":{"type":"string","enum":["ReleaseChannelUpdated"]}},"required":["channel","releaseId","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}]},"channel":{"type":"string","description":"Newly followed channel"},"deploymentId":{"type":"string","description":"ID of the deployment"},"previousChannel":{"type":"string","description":"Previously followed channel"},"type":{"type":"string","enum":["DeploymentReleaseChannelChanged"]}},"required":["channel","deploymentId","previousChannel","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"]},"GenerateManagerBindingTokenResponse":{"type":"object","properties":{"accessToken":{"type":"string"},"expiresIn":{"type":"number","nullable":true},"tokenType":{"type":"string","enum":["Bearer"]},"managerUrl":{"type":"string"}},"required":["accessToken","expiresIn","tokenType","managerUrl"]},"GenerateManagerBindingTokenRequest":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"}},"required":["deploymentId"],"additionalProperties":false},"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"]},"ContainerRegistryManagerSnapshot":{"type":"object","properties":{"generatedAt":{"type":"string","format":"date-time"},"routes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"crroute_[0-9a-z]{28}$","description":"Unique identifier for the container registry route.","example":"crroute_c9t4xoy7fmiq7equtu20"},"deploymentId":{"type":"string"},"resourceId":{"type":"string"},"resourceRevision":{"type":"string"},"desiredRevision":{"type":"integer","minimum":0},"appliedRevision":{"type":"integer","minimum":0},"status":{"type":"string","enum":["resolving","applying","connected","degraded","revoking","revoked"]},"repositories":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"crrepo_[0-9a-z]{28}$","description":"Unique identifier for the container registry repository.","example":"crrepo_625temdq3bnu25jw9rcux"},"logicalName":{"type":"string"},"desiredState":{"type":"string","enum":["present","deleteRequested","deleted"]},"routableUpstreamName":{"type":"string","nullable":true},"remoteResourceRevision":{"type":"string"}},"required":["id","logicalName","desiredState","routableUpstreamName","remoteResourceRevision"],"additionalProperties":false}},"credentials":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"crcred_[0-9a-z]{28}$","description":"Unique identifier for the container registry credential.","example":"crcred_oz1xjr82f37j17g4gtmyu"},"secretPrefix":{"type":"string"},"secretDigest":{"type":"string","pattern":"^[0-9a-f]{64}$"},"scope":{"type":"string","enum":["pull","pushPull"]},"repositorySubset":{"type":"array","nullable":true,"items":{"type":"string"}},"expiresAt":{"type":"string","nullable":true,"format":"date-time"},"revokedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["id","secretPrefix","secretDigest","scope","repositorySubset","expiresAt","revokedAt"],"additionalProperties":false}}},"required":["id","deploymentId","resourceId","resourceRevision","desiredRevision","appliedRevision","status","repositories","credentials"],"additionalProperties":false}}},"required":["generatedAt","routes"],"additionalProperties":false},"ApplyContainerRegistrySnapshotResponse":{"type":"object","properties":{"appliedRevision":{"type":"integer","minimum":0},"status":{"type":"string","enum":["applying","connected","degraded","revoked"]}},"required":["appliedRevision","status"],"additionalProperties":false},"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"}},"items":{"type":"array","items":{"type":"object","properties":{"item":{"type":"string","enum":["deployment","models","keys","bucket","registry"]},"source":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["project-release"]},"releaseChannel":{"type":"string","minLength":1,"maxLength":63},"releaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"resourceId":{"type":"string","minLength":1,"maxLength":256}},"required":["type","releaseChannel","releaseId"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["built-in"]},"definitionId":{"type":"string","enum":["customer-ai","customer-key","customer-storage","customer-registry"]},"version":{"type":"string","minLength":1,"maxLength":64},"sourceReleaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"}},"required":["type","definitionId","version","sourceReleaseId"],"additionalProperties":false}]},"required":{"type":"boolean"},"configuration":{"type":"object","properties":{"allowedProviders":{"type":"array","items":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic","databricks","openai"]},"minItems":1,"maxItems":6},"modelRequirements":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string","minLength":1,"maxLength":256},"clientApis":{"type":"array","items":{"type":"string","enum":["openai-chat","openai-responses","anthropic-messages"]},"minItems":1,"maxItems":3},"required":{"type":"boolean"}},"required":["publicModelId","clientApis","required"],"additionalProperties":false},"maxItems":100}},"additionalProperties":false}},"required":["item","source","required"],"additionalProperties":false},"maxItems":8}},"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","nullable":true,"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"]},"CommandBootstrapResponse":{"type":"object","properties":{"managerUrl":{"type":"string","format":"uri","description":"Current customer-facing manager URL"},"token":{"type":"string","minLength":1,"description":"Short-lived command capability token"},"expiresAt":{"type":"string","format":"date-time","description":"Capability expiry in RFC 3339 format"},"target":{"$ref":"#/components/schemas/CommandReceiverBootstrapTarget"}},"required":["managerUrl","token","expiresAt"]},"CommandReceiverBootstrapTarget":{"type":"object","properties":{"resourceId":{"type":"string"},"resourceType":{"type":"string","enum":["container","daemon"]}},"required":["resourceId","resourceType"],"description":"Resolved target identity; present only for receiver bootstrap"},"CommandBootstrapRequest":{"oneOf":[{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"role":{"type":"string","enum":["sender"]}},"required":["deploymentId","role"],"additionalProperties":false},{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"role":{"type":"string","enum":["receiver"]},"target":{"type":"string","minLength":1,"maxLength":255}},"required":["deploymentId","role","target"],"additionalProperties":false}]},"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"},"customerModels":{"type":"boolean","description":"Whether this release offers one remotely accessible AI resource"},"resourceCounts":{"type":"object","properties":{"workers":{"type":"integer","minimum":0},"containers":{"type":"integer","minimum":0},"daemons":{"type":"integer","minimum":0,"description":"Daemon resources that run on managed runtime machines"},"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","customerModels","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"},"modelAvailabilitySources":{"type":"array","items":{"type":"object","properties":{"deploymentId":{"type":"string"},"resourceId":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"status":{"type":"string","enum":["current","stale","invalid"]},"availability":{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]}},"required":["deploymentId","resourceId","observedAt","status"]}},"setupItems":{"type":"array","items":{"$ref":"#/components/schemas/SetupItemStatus"}},"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","modelAvailabilitySources"]},"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"]},"SetupItemStatus":{"type":"object","properties":{"item":{"type":"string","enum":["deployment","models","keys","bucket","registry"]},"source":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["project-release"]},"releaseChannel":{"type":"string","minLength":1,"maxLength":63},"releaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"resourceId":{"type":"string","minLength":1,"maxLength":256}},"required":["type","releaseChannel","releaseId"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["built-in"]},"definitionId":{"type":"string","enum":["customer-ai","customer-key","customer-storage","customer-registry"]},"version":{"type":"string","minLength":1,"maxLength":64},"sourceReleaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"}},"required":["type","definitionId","version","sourceReleaseId"],"additionalProperties":false}]},"required":{"type":"boolean"},"configuration":{"type":"object","properties":{"allowedProviders":{"type":"array","items":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic","databricks","openai"]},"minItems":1,"maxItems":6},"modelRequirements":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string","minLength":1,"maxLength":256},"clientApis":{"type":"array","items":{"type":"string","enum":["openai-chat","openai-responses","anthropic-messages"]},"minItems":1,"maxItems":3},"required":{"type":"boolean"}},"required":["publicModelId","clientApis","required"],"additionalProperties":false},"maxItems":100}},"additionalProperties":false},"status":{"type":"string","enum":["not-started","waiting","applying","verifying","connected","needs-attention","revoked"]},"deploymentIds":{"type":"array","items":{"type":"string"}},"blocker":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["item","source","required","status","deploymentIds"],"additionalProperties":false},"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"]}},"items":{"type":"array","items":{"type":"object","properties":{"item":{"type":"string","enum":["deployment","models","keys","bucket","registry"]},"source":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["project-release"]},"releaseChannel":{"type":"string","minLength":1,"maxLength":63},"releaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"resourceId":{"type":"string","minLength":1,"maxLength":256}},"required":["type","releaseChannel","releaseId"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["built-in"]},"definitionId":{"type":"string","enum":["customer-ai","customer-key","customer-storage","customer-registry"]},"version":{"type":"string","minLength":1,"maxLength":64},"sourceReleaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"}},"required":["type","definitionId","version","sourceReleaseId"],"additionalProperties":false}]},"required":{"type":"boolean"},"configuration":{"type":"object","properties":{"allowedProviders":{"type":"array","items":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic","databricks","openai"]},"minItems":1,"maxItems":6},"modelRequirements":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string","minLength":1,"maxLength":256},"clientApis":{"type":"array","items":{"type":"string","enum":["openai-chat","openai-responses","anthropic-messages"]},"minItems":1,"maxItems":3},"required":{"type":"boolean"}},"required":["publicModelId","clientApis","required"],"additionalProperties":false},"maxItems":100}},"additionalProperties":false}},"required":["item","source","required"],"additionalProperties":false},"maxItems":8},"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"]},"ListOperationsPluginsResponse":{"type":"object","properties":{"plugins":{"type":"array","items":{"$ref":"#/components/schemas/OperationsPlugin"}}},"required":["plugins"]},"OperationsPlugin":{"type":"object","properties":{"name":{"type":"string"},"version":{"type":"string"},"tier":{"type":"string","enum":["read-only","mutating","destructive"],"description":"Plugin-level default tier."},"builtin":{"type":"boolean","description":"True for compiled-in plugins, false for custom bundles."},"enabled":{"type":"boolean"},"operations":{"type":"array","items":{"$ref":"#/components/schemas/OperationsPluginOperation"}}},"required":["name","version","tier","builtin","enabled","operations"]},"OperationsPluginOperation":{"type":"object","properties":{"name":{"type":"string","description":"Operation name, unique within the plugin."},"tier":{"type":"string","enum":["read-only","mutating","destructive"],"description":"Effective risk tier for this operation."},"description":{"type":"string","nullable":true,"description":"Human-readable description."}},"required":["name","tier","description"]},"OperationsBundleUploadUrlResponse":{"type":"object","properties":{"uploadUrl":{"type":"string","format":"uri","description":"Presigned S3 PUT URL to upload the bundle ZIP to."},"contentType":{"type":"string","description":"Content-Type header the PUT must send (must match the signature)."}},"required":["uploadUrl","contentType"]},"OperationsBundleUploadUrlRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Plugin name (from the bundle's metadata.json)."}},"required":["name"]},"PublishOperationsPluginResponse":{"type":"object","properties":{"name":{"type":"string"},"version":{"type":"string"},"tier":{"type":"string","enum":["read-only","mutating","destructive"],"description":"How risky an operation is (declared by the plugin metadata)."},"enabled":{"type":"boolean"}},"required":["name","version","tier","enabled"]},"PublishOperationsPluginRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Plugin name (from the bundle's metadata.json)."},"version":{"type":"string","minLength":1,"description":"Plugin version."},"tier":{"type":"string","enum":["read-only","mutating","destructive"],"description":"Plugin-level default risk tier."},"metadata":{"nullable":true,"description":"The verbatim metadata.json (operations[], binaries{})."}},"required":["name","version","tier"]},"SetOperationsPluginEnabledResponse":{"type":"object","properties":{"name":{"type":"string"},"builtin":{"type":"boolean"},"enabled":{"type":"boolean"}},"required":["name","builtin","enabled"]},"SetOperationsPluginEnabledRequest":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether the plugin should be baked into the operator image."}},"required":["enabled"]},"OperationsPolicyResponse":{"type":"object","properties":{"rules":{"type":"array","items":{"$ref":"#/components/schemas/OperationsPolicyRule"}},"default":{"type":"string","enum":["auto","manual"],"description":"Decision for commands no rule matches."}},"required":["rules","default"]},"OperationsPolicyRule":{"type":"object","properties":{"pattern":{"type":"string","description":"`plugin/operation`, `plugin/*`, or `*`."},"decision":{"type":"string","enum":["auto","manual"],"description":"auto: run immediately. manual: needs customer approval before running."}},"required":["pattern","decision"]},"UpdateOperationsPolicyRequest":{"type":"object","properties":{"rules":{"type":"array","items":{"$ref":"#/components/schemas/OperationsPolicyRule"},"description":"The full rule set (replaces the previous one)."}},"required":["rules"]},"InvokeOperationResponse":{"type":"object","properties":{"plugin":{"type":"string"},"operation":{"type":"string"},"tier":{"type":"string","enum":["read-only","mutating","destructive"],"description":"The operation's declared risk tier (informational)."},"decision":{"type":"string","enum":["auto","manual"],"description":"The approval decision the policy resolved to."},"status":{"type":"string","enum":["dispatched","pending-approval"],"description":"dispatched: auto-approved and running. pending-approval: needs customer sign-off."},"commandId":{"type":"string","description":"The created operation-command id when dispatched (absent when pending)."}},"required":["plugin","operation","tier","decision","status"]},"InvokeOperationRequest":{"type":"object","properties":{"deploymentId":{"type":"string","description":"Deployment to run the operation against."},"plugin":{"type":"string","description":"Plugin name."},"operation":{"type":"string","description":"Operation name exposed by the plugin."},"params":{"nullable":true,"description":"JSON params passed to the operation."}},"required":["deploymentId","plugin","operation"]},"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"},"purpose":{"$ref":"#/components/schemas/DeploymentPurpose"},"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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":{"initialSetupAuthority":{"type":"string","enum":["importedHandoff","directSetup"],"description":"Actor that owns structural work during the initial setup phase."},"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}]},"persistedGateAnswers":{"type":"object","properties":{},"additionalProperties":{"type":"boolean"},"description":"Canonical resolved answers for inputs that gate Frozen resources,\nkeyed by input id, recorded when the deployment is created or its\nsetup import registers.\n\nA frozen gate's answer is fixed for the deployment's lifetime: the\nupdate path refuses input values that conflict with these, and a Live\nresource sharing such an input resolves the persisted answer forever."},"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"},"releaseChannel":{"allOf":[{"$ref":"#/components/schemas/ReleaseChannelName"},{"description":"Named release stream followed when the deployment is not pinned"}]},"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"},"updateState":{"type":"object","properties":{"active":{"$ref":"#/components/schemas/DeploymentUpdateOperationSummary"},"next":{"$ref":"#/components/schemas/DeploymentUpdateOperationSummary"},"latest":{"$ref":"#/components/schemas/DeploymentUpdateOperationSummary"}},"required":["active","next","latest"],"description":"Durable progress for deployment updates"},"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","purpose","stackSettings","releaseChannel","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":{"initialSetupAuthority":{"type":"string","enum":["importedHandoff","directSetup"],"description":"Actor that owns structural work during the initial setup phase."},"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}]},"persistedGateAnswers":{"type":"object","properties":{},"additionalProperties":{"type":"boolean"},"description":"Canonical resolved answers for inputs that gate Frozen resources,\nkeyed by input id, recorded when the deployment is created or its\nsetup import registers.\n\nA frozen gate's answer is fixed for the deployment's lifetime: the\nupdate path refuses input values that conflict with these, and a Live\nresource sharing such an input resolves the persisted answer forever."},"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"},"serverCaCertificates":{"oneOf":[{"type":"array","items":{"type":"string"}},{"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"},"sslMode":{"type":"string","enum":["verify-full","disable"],"description":"TLS policy for an operator-provided / BYO Postgres database.\n\nUnlike libpq's ambiguous `prefer` mode, both choices map exactly to the\nconnection settings exposed by every supported SDK."},"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"]}]},{"allOf":[{"type":"object","properties":{"apiKey":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"provider":{"type":"string","description":"The external AI provider name (e.g., \"openai\", \"anthropic\")"}},"required":["provider"],"description":"External AI provider binding configuration (BYO-key).\n\nThe operator-supplied secret rides inside the binding via\n`BindingValue`, so it is a literal on cloud platforms and gains\nKubernetes SecretRef resolution for free (`extract_binding_secrets` walks\nthe binding JSON for `secretRef`)."},{"type":"object","properties":{"type":{"type":"string","enum":["ai"]}},"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)"},"leaseExpiresAt":{"type":"string","nullable":true,"format":"date-time","description":"When the provisional leases on the returned deployments lapse. Confirm them with sync/renew before starting work. Null when nothing was acquired."}},"required":["deployments","failures","leaseExpiresAt"],"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"},"requestId":{"type":"string","minLength":1,"description":"Idempotency key for one logical acquire request"},"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","requestId","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":{"initialSetupAuthority":{"type":"string","enum":["importedHandoff","directSetup"],"description":"Actor that owns structural work during the initial setup phase."},"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}]},"persistedGateAnswers":{"type":"object","properties":{},"additionalProperties":{"type":"boolean"},"description":"Canonical resolved answers for inputs that gate Frozen resources,\nkeyed by input id, recorded when the deployment is created or its\nsetup import registers.\n\nA frozen gate's answer is fixed for the deployment's lifetime: the\nupdate path refuses input values that conflict with these, and a Live\nresource sharing such an input resolves the persisted answer forever."},"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"},"serverCaCertificates":{"oneOf":[{"type":"array","items":{"type":"string"}},{"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"},"sslMode":{"type":"string","enum":["verify-full","disable"],"description":"TLS policy for an operator-provided / BYO Postgres database.\n\nUnlike libpq's ambiguous `prefer` mode, both choices map exactly to the\nconnection settings exposed by every supported SDK."},"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"]}]},{"allOf":[{"type":"object","properties":{"apiKey":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"provider":{"type":"string","description":"The external AI provider name (e.g., \"openai\", \"anthropic\")"}},"required":["provider"],"description":"External AI provider binding configuration (BYO-key).\n\nThe operator-supplied secret rides inside the binding via\n`BindingValue`, so it is a literal on cloud platforms and gains\nKubernetes SecretRef resolution for free (`extract_binding_secrets` walks\nthe binding JSON for `secretRef`)."},{"type":"object","properties":{"type":{"type":"string","enum":["ai"]}},"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":{"initialSetupAuthority":{"type":"string","enum":["importedHandoff","directSetup"],"description":"Actor that owns structural work during the initial setup phase."},"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}]},"persistedGateAnswers":{"type":"object","properties":{},"additionalProperties":{"type":"boolean"},"description":"Canonical resolved answers for inputs that gate Frozen resources,\nkeyed by input id, recorded when the deployment is created or its\nsetup import registers.\n\nA frozen gate's answer is fixed for the deployment's lifetime: the\nupdate path refuses input values that conflict with these, and a Live\nresource sharing such an input resolves the persisted answer forever."},"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"]}],"description":"AWS Aurora Serverless v2 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"]}],"description":"GCP Cloud SQL 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"]}],"description":"Azure Flexible Server 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"]}],"description":"Local embedded Postgres 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"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"availability":{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]},"region":{"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":["availability","region","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsBedrock"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"availability":{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]},"location":{"type":"string"},"project":{"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":["availability","location","project","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpVertex"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"accountName":{"type":"string"},"availability":{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]},"endpoint":{"type":"string","nullable":true},"location":{"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"]}},"required":["accountName","availability","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureFoundry"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"availability":{"oneOf":[{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]},{"nullable":true}]},"provider":{"type":"string","description":"The BYO-key provider serving this binding (e.g. \"openai\"). Used on the Local\nplatform, where the app brings its own provider key instead of an ambient cloud."},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["provider","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["external"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["ai"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"type":"object","properties":{"data":{"type":"object","properties":{"enabled":{"type":"boolean"},"keyArn":{"type":"string"},"keySpec":{"type":"string"},"keyState":{"type":"string"},"keyUsage":{"type":"string"},"status":{"type":"object","properties":{"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true}},"required":["health","lifecycle"]}},"required":["enabled","keyArn","keySpec","keyState","keyUsage","status"]},"provider":{"type":"string","enum":["aws-kms"]}},"required":["data","provider"]},{"type":"object","properties":{"data":{"type":"object","properties":{"algorithm":{"type":"string","nullable":true},"cryptoKeyName":{"type":"string"},"primaryState":{"type":"string","nullable":true},"primaryVersion":{"type":"string","nullable":true},"purpose":{"type":"string"},"status":{"type":"object","properties":{"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true}},"required":["health","lifecycle"]}},"required":["cryptoKeyName","purpose","status"]},"provider":{"type":"string","enum":["gcp-cloud-kms"]}},"required":["data","provider"]},{"type":"object","properties":{"data":{"type":"object","properties":{"enabled":{"type":"boolean","nullable":true},"keyId":{"type":"string"},"keyOperations":{"type":"array","items":{"type":"string"}},"keyType":{"type":"string"},"recoveryLevel":{"type":"string","nullable":true},"status":{"type":"object","properties":{"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true}},"required":["health","lifecycle"]}},"required":["keyId","keyOperations","keyType","status"]},"provider":{"type":"string","enum":["azure-key-vault"]}},"required":["data","provider"]}]},"resourceType":{"type":"string","enum":["key"]}},"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"},"SyncRenewRequest":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Single deployment to renew. Deprecated: use deploymentIds. Retained so a manager built against the previous API keeps renewing during rollout.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"deploymentIds":{"type":"array","items":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"minItems":1,"maxItems":100,"description":"Deployments to renew or confirm. Renewal is per deployment: the response reports each one independently."},"session":{"type":"string","minLength":1}},"required":["session"],"additionalProperties":false},"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"},"operations_custom_plugins":{"type":"boolean"},"sso_saml":{"type":"boolean"},"audit_logs":{"type":"boolean"},"airgapped":{"type":"boolean"}},"required":["custom_domains","private_managers","operations_custom_plugins","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}/source":{"post":{"operationId":"configureProjectSource","description":"Connect a GitHub repository or Alien template to an existing project and configure its release workflow.","x-speakeasy-group":"projects","x-speakeasy-name-override":"configureSource","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":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["repository"]},"gitRepository":{"type":"object","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},"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"}},"required":["mode","gitRepository"]},{"type":"object","properties":{"mode":{"type":"string","enum":["template"]},"targetNamespace":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-zA-Z0-9-]+$"},"templatePath":{"type":"string","enum":["examples/customer-models-ts","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"}},"required":["mode","targetNamespace","templatePath"]}]}}}},"responses":{"200":{"description":"Project source connected and GitHub Actions configured.","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/customer-models-ts","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"]}}}]}}}},"400":{"description":"Repository or template configuration is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Insufficient permission to update this project.","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"}}}},"503":{"description":"Template fork exists but is not ready yet.","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/customer-models-ts","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/customer-models-ts","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 production channel's current release. When deploymentId is provided, returns that deployment's effective release: its pin, or its followed channel's current 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":"Effective release retrieved successfully.","content":{"application/json":{"schema":{"nullable":true}}}},"404":{"description":"Project or effective 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}/project-capabilities":{"put":{"operationId":"setProjectCapabilities","description":"Set the capabilities offered by a Project. Removing a capability prevents new setup without deleting existing customer resources.","x-speakeasy-group":"projects","x-speakeasy-name-override":"setCapabilities","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":{"type":"object","properties":{"enabled":{"type":"array","items":{"type":"string","enum":["deployments","models","keys","buckets","registry"]},"maxItems":5}},"required":["enabled"],"additionalProperties":false}}}},"responses":{"200":{"description":"The Project's enabled capabilities.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectCapabilities"}}}},"403":{"description":"Insufficient permissions.","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}/project-capabilities/deployments":{"put":{"operationId":"configureProjectDeployments","description":"Enable deployments for a Project.","x-speakeasy-group":"projects","x-speakeasy-name-override":"configureDeployments","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":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]}},"required":["enabled"],"additionalProperties":false}}}},"responses":{"200":{"description":"Deployments enabled for the Project.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectCapabilities"}}}},"403":{"description":"Insufficient permissions.","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}/project-capabilities/models":{"put":{"operationId":"configureProjectModels","description":"Configure customer-owned model providers without requiring an application Release.","x-speakeasy-group":"projects","x-speakeasy-name-override":"configureModels","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/ConfigureModelsRequest"}}}},"responses":{"200":{"description":"Customer Models configured and its exact setup source materialized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CapabilityMaterialization"}}}},"403":{"description":"Insufficient permissions.","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}/project-capabilities/keys":{"put":{"operationId":"configureProjectKeys","description":"Enable customer-owned application encryption without requiring an application Release.","x-speakeasy-group":"projects","x-speakeasy-name-override":"configureKeys","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":{"type":"object","properties":{"applicationEncryption":{"type":"boolean","enum":[true]}},"required":["applicationEncryption"],"additionalProperties":false}}}},"responses":{"200":{"description":"Customer Key configured and its exact setup source materialized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CapabilityMaterialization"}}}},"403":{"description":"Insufficient permissions.","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}/project-capabilities/buckets":{"put":{"operationId":"configureProjectBuckets","description":"Enable buckets without requiring a project Release.","x-speakeasy-group":"projects","x-speakeasy-name-override":"configureBuckets","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":{"type":"object","properties":{"access":{"type":"string","enum":["read-write"]}},"required":["access"],"additionalProperties":false}}}},"responses":{"200":{"description":"Buckets configured and their exact setup source materialized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CapabilityMaterialization"}}}},"403":{"description":"Insufficient permissions.","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}/project-capabilities/registry":{"put":{"operationId":"configureProjectRegistry","description":"Enable customer-owned container registries without requiring an application Release.","x-speakeasy-group":"projects","x-speakeasy-name-override":"configureRegistry","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":{"type":"object","properties":{"repositories":{"type":"array","items":{"type":"string","minLength":1,"maxLength":128},"maxItems":100},"credentialPolicy":{"type":"string","enum":["pull-only","push-and-pull"]}},"required":["repositories","credentialPolicy"],"additionalProperties":false}}}},"responses":{"200":{"description":"Customer Registry configured and its exact setup source materialized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CapabilityMaterialization"}}}},"403":{"description":"Insufficient permissions.","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}/project-capabilities/overview":{"get":{"operationId":"getProjectCapabilityOverview","description":"Get safe, server-derived capability status for a Project.","x-speakeasy-group":"projects","x-speakeasy-name-override":"getCapabilityOverview","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":"Project capability overview.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectCapabilityOverview"}}}},"403":{"description":"Insufficient permissions.","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}/remote-bindings/access":{"post":{"operationId":"createRemoteBindingsExternalAccess","tags":["remote-bindings"],"summary":"Create short-lived Remote Bindings access for a external resource","description":"Selects a connected external resource by Project and external ID, then returns a short-lived deployment-scoped Manager capability. The caller never receives the external cloud credentials from Platform.","x-speakeasy-group":"remoteBindings","x-speakeasy-name-override":"createExternalAccess","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":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteBindingsExternalAccessRequest"}}}},"responses":{"200":{"description":"Short-lived Remote Bindings access was created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteBindingsExternalAccessResponse"}}}},"401":{"description":"The API key is missing, invalid, expired, or disabled.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"The caller cannot access Remote Bindings for this Project.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"The Project or external ID was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"More than one active external resource matched.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"The external resource or its assigned Manager is not ready.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/projects/{idOrName}/ai-metrics":{"get":{"operationId":"getProjectAiUsage","x-speakeasy-group":"projects","x-speakeasy-name-override":"getAiUsage","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","enum":["24h","7d","30d"],"default":"24h"},"required":false,"name":"range","in":"query"}],"responses":{"200":{"description":"Privacy-safe AI Gateway usage aggregates.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"status":{"type":"string","enum":["unavailable"]},"reason":{"type":"string","enum":["not-configured","temporarily-unavailable"]}},"required":["status","reason"]},{"type":"object","properties":{"status":{"type":"string","enum":["available"]},"range":{"type":"string","enum":["24h","7d","30d"]},"pricing":{"type":"object","properties":{"label":{"type":"string","enum":["Estimated provider cost"]},"coverage":{"type":"number","minimum":0,"maximum":1},"revision":{"type":"string","nullable":true}},"required":["label","coverage","revision"]},"totals":{"type":"object","properties":{"requests":{"type":"integer","minimum":0},"successfulRequests":{"type":"integer","minimum":0},"errorRequests":{"type":"integer","minimum":0},"averageLatencyMs":{"type":"number","nullable":true,"minimum":0},"p95LatencyMs":{"type":"number","nullable":true,"minimum":0},"inputTokens":{"type":"integer","nullable":true,"minimum":0},"outputTokens":{"type":"integer","nullable":true,"minimum":0},"estimatedCostMicrousd":{"type":"integer","nullable":true,"minimum":0},"pricedRequests":{"type":"integer","minimum":0}},"required":["requests","successfulRequests","errorRequests","averageLatencyMs","p95LatencyMs","inputTokens","outputTokens","estimatedCostMicrousd","pricedRequests"]},"timeSeries":{"type":"array","items":{"type":"object","properties":{"requests":{"type":"integer","minimum":0},"successfulRequests":{"type":"integer","minimum":0},"errorRequests":{"type":"integer","minimum":0},"averageLatencyMs":{"type":"number","nullable":true,"minimum":0},"p95LatencyMs":{"type":"number","nullable":true,"minimum":0},"inputTokens":{"type":"integer","nullable":true,"minimum":0},"outputTokens":{"type":"integer","nullable":true,"minimum":0},"estimatedCostMicrousd":{"type":"integer","nullable":true,"minimum":0},"pricedRequests":{"type":"integer","minimum":0},"bucket":{"type":"string","format":"date-time"}},"required":["requests","successfulRequests","errorRequests","averageLatencyMs","p95LatencyMs","inputTokens","outputTokens","estimatedCostMicrousd","pricedRequests","bucket"]}},"customers":{"type":"array","items":{"type":"object","properties":{"requests":{"type":"integer","minimum":0},"successfulRequests":{"type":"integer","minimum":0},"errorRequests":{"type":"integer","minimum":0},"averageLatencyMs":{"type":"number","nullable":true,"minimum":0},"p95LatencyMs":{"type":"number","nullable":true,"minimum":0},"inputTokens":{"type":"integer","nullable":true,"minimum":0},"outputTokens":{"type":"integer","nullable":true,"minimum":0},"estimatedCostMicrousd":{"type":"integer","nullable":true,"minimum":0},"pricedRequests":{"type":"integer","minimum":0},"deploymentGroupId":{"type":"string"},"name":{"type":"string"},"externalId":{"type":"string","nullable":true}},"required":["requests","successfulRequests","errorRequests","averageLatencyMs","p95LatencyMs","inputTokens","outputTokens","estimatedCostMicrousd","pricedRequests","deploymentGroupId","name","externalId"]}},"models":{"type":"array","items":{"type":"object","properties":{"requests":{"type":"integer","minimum":0},"successfulRequests":{"type":"integer","minimum":0},"errorRequests":{"type":"integer","minimum":0},"averageLatencyMs":{"type":"number","nullable":true,"minimum":0},"p95LatencyMs":{"type":"number","nullable":true,"minimum":0},"inputTokens":{"type":"integer","nullable":true,"minimum":0},"outputTokens":{"type":"integer","nullable":true,"minimum":0},"estimatedCostMicrousd":{"type":"integer","nullable":true,"minimum":0},"pricedRequests":{"type":"integer","minimum":0},"publicModel":{"type":"string"},"provider":{"type":"string"}},"required":["requests","successfulRequests","errorRequests","averageLatencyMs","p95LatencyMs","inputTokens","outputTokens","estimatedCostMicrousd","pricedRequests","publicModel","provider"]}}},"required":["status","range","pricing","totals","timeSeries","customers","models"]}]}}}},"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/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/by-external-id":{"put":{"operationId":"ensureDeploymentGroupByExternalId","tags":["deployment-groups"],"summary":"Get or create a deployment group by project and external ID","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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/EnsureDeploymentGroupByExternalIdRequest"}}}},"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"}}}},"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"}}}}}},"get":{"operationId":"getDeploymentGroupByExternalId","tags":["deployment-groups"],"summary":"Get a deployment group by project and external ID","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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":100,"description":"Project ID or name. Optional for project-scoped API keys."},"required":false,"description":"Project ID or name. Optional for project-scoped API keys.","name":"project","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"},"required":true,"description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","name":"externalId","in":"query"}],"responses":{"200":{"description":"Deployment group returned successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentGroup"}}}},"404":{"description":"Project or 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/setup-links":{"post":{"operationId":"createSetupLink","tags":["setup-links"],"summary":"Create a customer setup link","description":"Ensures the Deployment Group identified by Project and external ID, then creates a replacement group-scoped setup link with exact captured sources.","x-speakeasy-group":"setupLinks","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":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSetupLinkRequest"}}}},"responses":{"200":{"description":"Customer environment ensured and setup link created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSetupLinkResponse"}}}},"400":{"description":"Customer environment or setup configuration is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Customer environment name or setup source conflicts","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}/external-id":{"put":{"operationId":"setDeploymentGroupExternalId","tags":["deployment-groups"],"summary":"Set or clear a deployment group's external ID","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":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetDeploymentGroupExternalIdRequest"}}}},"responses":{"200":{"description":"Deployment group external ID 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 external ID 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"}}}}}}},"/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/deployment-groups/{id}/ai/external":{"get":{"operationId":"getExternalAIBinding","tags":["deployment-groups"],"summary":"Get external AI connection state","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":"External AI connection state","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalAIBindingState"}}}},"403":{"description":"Insufficient permissions","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"}}}}}},"put":{"operationId":"putExternalAIBinding","tags":["deployment-groups"],"summary":"Connect or rotate an external AI provider key","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":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutExternalAIBindingRequest"}}}},"responses":{"200":{"description":"External AI connection verified and stored","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalAIBinding"}}}},"400":{"description":"The key is not valid for the selected provider","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment group not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"The group already has an active cloud AI source","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"Provider verification is temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"delete":{"operationId":"deleteExternalAIBinding","tags":["deployment-groups"],"summary":"Revoke the external AI connection","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":"External AI connection revoked"},"403":{"description":"Insufficient permissions","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}/container-registry":{"get":{"operationId":"getContainerRegistry","tags":["container-registry"],"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":"Container registry state","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContainerRegistryState"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Registry configuration conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"put":{"operationId":"putContainerRegistry","tags":["container-registry"],"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":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"resourceId":{"type":"string","minLength":1,"maxLength":128}},"required":["deploymentId","resourceId"]}}}},"responses":{"200":{"description":"Registry route","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"crroute_[0-9a-z]{28}$","description":"Unique identifier for the container registry route.","example":"crroute_c9t4xoy7fmiq7equtu20"},"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"managerId":{"type":"string"},"resourceId":{"type":"string"},"resourceRevision":{"type":"string","minLength":1},"desiredRevision":{"type":"integer","minimum":0},"appliedRevision":{"type":"integer","minimum":0},"status":{"type":"string","enum":["resolving","applying","connected","degraded","revoking","revoked"]},"lastVerifiedAt":{"type":"string","nullable":true,"format":"date-time"},"lastError":{"type":"string","nullable":true}},"required":["id","deploymentId","managerId","resourceId","resourceRevision","desiredRevision","appliedRevision","status","lastVerifiedAt","lastError"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Registry configuration conflict","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}/container-registry/repositories":{"post":{"operationId":"createContainerRegistryRepository","tags":["container-registry"],"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":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[a-z0-9]+(?:[._-][a-z0-9]+)*(?:\\/[a-z0-9]+(?:[._-][a-z0-9]+)*)*$"}},"required":["name"]}}}},"responses":{"201":{"description":"Repository requested","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"crrepo_[0-9a-z]{28}$","description":"Unique identifier for the container registry repository.","example":"crrepo_625temdq3bnu25jw9rcux"},"logicalName":{"type":"string"},"desiredState":{"type":"string","enum":["present","deleteRequested","deleted"]},"status":{"type":"string","enum":["pending","creating","ready","deleting","deleted","failed"]},"verifiedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["id","logicalName","desiredState","status","verifiedAt"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Registry configuration conflict","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}/container-registry/credentials":{"post":{"operationId":"createContainerRegistryCredential","tags":["container-registry"],"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":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":64},"scope":{"type":"string","enum":["pull","pushPull"]},"repositorySubset":{"type":"array","nullable":true,"items":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[a-z0-9]+(?:[._-][a-z0-9]+)*(?:\\/[a-z0-9]+(?:[._-][a-z0-9]+)*)*$"},"minItems":1,"maxItems":100},"expiresAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["label","scope"]}}}},"responses":{"201":{"description":"Credential created; password is returned once","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateContainerRegistryCredentialResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Registry configuration conflict","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}/container-registry/credentials/{credentialId}":{"delete":{"operationId":"revokeContainerRegistryCredential","tags":["container-registry"],"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","pattern":"crcred_[0-9a-z]{28}$","description":"Unique identifier for the container registry credential.","example":"crcred_oz1xjr82f37j17g4gtmyu"},"required":true,"description":"Unique identifier for the container registry credential.","name":"credentialId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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":"Credential revoked"},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Registry configuration conflict","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}/container-registry/repositories/{repositoryId}":{"delete":{"operationId":"deleteContainerRegistryRepository","tags":["container-registry"],"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","pattern":"crrepo_[0-9a-z]{28}$","description":"Unique identifier for the container registry repository.","example":"crrepo_625temdq3bnu25jw9rcux"},"required":true,"description":"Unique identifier for the container registry repository.","name":"repositoryId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are 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":{"confirmName":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[a-z0-9]+(?:[._-][a-z0-9]+)*(?:\\/[a-z0-9]+(?:[._-][a-z0-9]+)*)*$"},"disposition":{"type":"string","enum":["preserve","deleteContents"]}},"required":["confirmName","disposition"]}}}},"responses":{"202":{"description":"Repository deletion requested","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"crrepo_[0-9a-z]{28}$","description":"Unique identifier for the container registry repository.","example":"crrepo_625temdq3bnu25jw9rcux"},"logicalName":{"type":"string"},"desiredState":{"type":"string","enum":["present","deleteRequested","deleted"]},"status":{"type":"string","enum":["pending","creating","ready","deleting","deleted","failed"]},"verifiedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["id","logicalName","desiredState","status","verifiedAt"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Registry configuration conflict","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}/container-registry/verify":{"post":{"operationId":"verifyContainerRegistry","tags":["container-registry"],"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":{"202":{"description":"Verification requested","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"crroute_[0-9a-z]{28}$","description":"Unique identifier for the container registry route.","example":"crroute_c9t4xoy7fmiq7equtu20"},"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"managerId":{"type":"string"},"resourceId":{"type":"string"},"resourceRevision":{"type":"string","minLength":1},"desiredRevision":{"type":"integer","minimum":0},"appliedRevision":{"type":"integer","minimum":0},"status":{"type":"string","enum":["resolving","applying","connected","degraded","revoking","revoked"]},"lastVerifiedAt":{"type":"string","nullable":true,"format":"date-time"},"lastError":{"type":"string","nullable":true}},"required":["id","deploymentId","managerId","resourceId","resourceRevision","desiredRevision","appliedRevision","status","lastVerifiedAt","lastError"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Registry configuration conflict","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}/container-registry/revoke":{"post":{"operationId":"revokeContainerRegistry","tags":["container-registry"],"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":{"202":{"description":"Registry revocation requested","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"crroute_[0-9a-z]{28}$","description":"Unique identifier for the container registry route.","example":"crroute_c9t4xoy7fmiq7equtu20"},"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"managerId":{"type":"string"},"resourceId":{"type":"string"},"resourceRevision":{"type":"string","minLength":1},"desiredRevision":{"type":"integer","minimum":0},"appliedRevision":{"type":"integer","minimum":0},"status":{"type":"string","enum":["resolving","applying","connected","degraded","revoking","revoked"]},"lastVerifiedAt":{"type":"string","nullable":true,"format":"date-time"},"lastError":{"type":"string","nullable":true}},"required":["id","deploymentId","managerId","resourceId","resourceRevision","desiredRevision","appliedRevision","status","lastVerifiedAt","lastError"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Registry configuration conflict","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","nullable":true,"minLength":1,"maxLength":63,"pattern":"^[a-z][a-z0-9-]*$","description":"Filter to releases promoted to this channel. Defaults to production."},"required":false,"description":"Filter to releases promoted to this channel. Defaults to production.","name":"channel","in":"query"},{"schema":{"type":"string","enum":["true","false"],"default":"false"},"required":false,"name":"allChannels","in":"query"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["project","rollout","createdBy"]},"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","createdBy"]},"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/releases/{id}/deployments":{"get":{"operationId":"listReleaseDeployments","description":"List the project's deployments with their rollout state relative to this release.","x-speakeasy-group":"releases","x-speakeasy-name-override":"listDeployments","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":{"$ref":"#/components/schemas/ReleaseRolloutState"},"description":"Filter deployments by rollout state"},"required":false,"description":"Filter deployments by rollout state","name":"state","in":"query"},{"schema":{"type":"string","description":"Filter by deployment group ID or name"},"required":false,"description":"Filter by deployment group ID or name","name":"deploymentGroup","in":"query"},{"schema":{"type":"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 release deployments.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReleaseDeploymentsResponse"}}}},"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/release-channels":{"get":{"operationId":"listReleaseChannels","summary":"List release channels","description":"List the release channels configured for a project.","x-speakeasy-group":"releaseChannels","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":true,"description":"Filter by project ID or name.","name":"project","in":"query","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}}],"responses":{"200":{"description":"Project release channels.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ReleaseChannel"}}},"required":["items"]}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createReleaseChannel","summary":"Create a release channel","description":"Create a release channel for a project.","x-speakeasy-group":"releaseChannels","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"},{"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"}}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"$ref":"#/components/schemas/ReleaseChannelName"},"releaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"}},"required":["name"],"additionalProperties":false}}}},"responses":{"201":{"description":"Channel created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReleaseChannel"}}}},"400":{"description":"Invalid release.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/release-channels/{name}/promote":{"post":{"operationId":"promoteRelease","x-speakeasy-group":"releases","x-speakeasy-name-override":"promote","parameters":[{"schema":{"$ref":"#/components/schemas/ReleaseChannelName"},"required":true,"name":"name","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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"}}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"releaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"expectedReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"}},"required":["releaseId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Release promoted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReleaseChannel"}}}},"404":{"description":"Project, channel, or release not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Channel changed concurrently.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/release-channels/{name}":{"delete":{"operationId":"deleteReleaseChannel","summary":"Delete a release channel","description":"Delete a release channel from a project.","x-speakeasy-group":"releaseChannels","x-speakeasy-name-override":"delete","parameters":[{"schema":{"$ref":"#/components/schemas/ReleaseChannelName"},"required":true,"name":"name","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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":{"204":{"description":"Channel deleted."},"400":{"description":"Reserved channel.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project or channel not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Channel is still followed by deployments.","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":{"allOf":[{"$ref":"#/components/schemas/DeploymentPurpose"},{"description":"Filter by deployment purpose"}]},"required":false,"description":"Filter by deployment purpose","name":"purpose","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":{"allOf":[{"$ref":"#/components/schemas/DeploymentPurpose"},{"description":"Filter by deployment purpose"}]},"required":false,"description":"Filter by deployment purpose","name":"purpose","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"},"operation":{"$ref":"#/components/schemas/DeploymentUpdateOperationSummary"}},"required":["message","operation"]}}}},"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}/release-channel":{"post":{"operationId":"setDeploymentReleaseChannel","x-speakeasy-group":"deployments","x-speakeasy-name-override":"setReleaseChannel","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":{"type":"object","properties":{"channel":{"$ref":"#/components/schemas/ReleaseChannelName"}},"required":["channel"],"additionalProperties":false}}}},"responses":{"200":{"description":"Deployment release channel updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Deployment"}}}},"400":{"description":"Channel release is unavailable for the deployment platform.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment or release channel not found.","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}/binding-token":{"post":{"operationId":"generateManagerBindingToken","description":"Generate a short-lived deployment-scoped token for resolving opted-in remote bindings through the currently assigned manager.","x-speakeasy-group":"managers","x-speakeasy-name-override":"generateManagerBindingToken","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":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateManagerBindingTokenRequest"}}}},"responses":{"200":{"description":"Remote Bindings token and assigned manager URL.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateManagerBindingTokenResponse"}}}},"403":{"description":"The caller cannot access Remote Bindings for the deployment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Assigned manager or deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"The assigned manager is offline.","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/managers/{id}/container-registry/snapshot":{"get":{"operationId":"getContainerRegistryManagerSnapshot","tags":["container-registry"],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Complete desired registry snapshot assigned to this Manager","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContainerRegistryManagerSnapshot"}}}},"403":{"description":"Manager access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Snapshot revision conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/container-registry/applied":{"post":{"operationId":"applyContainerRegistryManagerSnapshot","tags":["container-registry"],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"routeId":{"type":"string","pattern":"crroute_[0-9a-z]{28}$","description":"Unique identifier for the container registry route.","example":"crroute_c9t4xoy7fmiq7equtu20"},"desiredRevision":{"type":"integer","minimum":0},"repositories":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"crrepo_[0-9a-z]{28}$","description":"Unique identifier for the container registry repository.","example":"crrepo_625temdq3bnu25jw9rcux"},"status":{"type":"string","enum":["ready","deleted","failed"]},"routableUpstreamName":{"type":"string","nullable":true,"minLength":1},"error":{"type":"string","nullable":true,"maxLength":2000}},"required":["id","status","routableUpstreamName","error"],"additionalProperties":false}},"verification":{"type":"object","nullable":true,"properties":{"succeeded":{"type":"boolean"},"observedAt":{"type":"string","format":"date-time"},"error":{"type":"string","nullable":true,"maxLength":2000}},"required":["succeeded","observedAt","error"],"additionalProperties":false}},"required":["routeId","desiredRevision","repositories","verification"],"additionalProperties":false}}}},"responses":{"200":{"description":"Applied registry snapshot revision","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplyContainerRegistrySnapshotResponse"}}}},"403":{"description":"Manager access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Snapshot revision conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","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":"string","description":"Filter events to a single release."},"required":false,"description":"Filter events to a single release.","name":"releaseId","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/bootstrap":{"post":{"operationId":"bootstrapCommands","description":"Resolve a deployment's current manager and mint a five-minute command capability. Sender tokens can dispatch and observe commands only for this deployment. Receiver tokens can lease and complete commands only for the resolved Container or Daemon target.","x-speakeasy-group":"commands","x-speakeasy-name-override":"bootstrap","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandBootstrapRequest"}}}},"responses":{"200":{"description":"Manager connection details and a short-lived command capability.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandBootstrapResponse"}}}},"400":{"description":"Invalid request or deployment state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"401":{"description":"Authentication required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"The caller cannot operate this deployment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment, manager, or receiver target not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"422":{"description":"The selected resource cannot run an external receiver.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"The assigned manager is offline.","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"},{"schema":{"type":"string","enum":["deployment","models","keys","bucket","registry"]},"required":false,"name":"setupItem","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":{"setupItem":{"type":"string","enum":["deployment","models","keys","bucket","registry"]},"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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":{"setupItem":{"type":"string","enum":["deployment","models","keys","bucket","registry"]},"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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/operations/plugins":{"get":{"operationId":"listOperationsPlugins","description":"List available operations plugins (builtin + custom) for a project, with their operations and risk tiers.","x-speakeasy-group":"operations","x-speakeasy-name-override":"listPlugins","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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":"The operations plugin catalog.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListOperationsPluginsResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"publishOperationsPlugin","description":"Register a custom operations plugin whose bundle ZIP has already been uploaded to S3 (see POST /plugins/upload-url). Replaces any existing plugin of the same name in that project. New custom plugins are enabled by default.","x-speakeasy-group":"operations","x-speakeasy-name-override":"publishPlugin","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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"}}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishOperationsPluginRequest"}}}},"responses":{"201":{"description":"The plugin was published.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishOperationsPluginResponse"}}}},"400":{"description":"Invalid metadata.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"402":{"description":"Custom plugins require a higher plan tier.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/operations/plugins/upload-url":{"post":{"operationId":"createOperationsBundleUploadUrl","description":"Get a presigned S3 URL to upload a custom operations plugin bundle ZIP. Upload the ZIP with a PUT to the returned url (sending the given Content-Type), then call POST /plugins to register it.","x-speakeasy-group":"operations","x-speakeasy-name-override":"createBundleUploadUrl","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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"}}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationsBundleUploadUrlRequest"}}}},"responses":{"200":{"description":"A presigned upload URL for the bundle ZIP.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationsBundleUploadUrlResponse"}}}},"402":{"description":"Custom plugins require a higher plan tier.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"Bundle storage is not configured.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/operations/plugins/{name}/enabled":{"patch":{"operationId":"setOperationsPluginEnabled","description":"Enable or disable an operations plugin (builtin or custom) for a project. Only enabled plugins are baked into the operator image and can be invoked.","x-speakeasy-group":"operations","x-speakeasy-name-override":"setPluginEnabled","parameters":[{"schema":{"type":"string","description":"Plugin name."},"required":true,"description":"Plugin name.","name":"name","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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"}}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetOperationsPluginEnabledRequest"}}}},"responses":{"200":{"description":"The plugin's enabled state was updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetOperationsPluginEnabledResponse"}}}},"404":{"description":"No such plugin for this project.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/operations/policy":{"get":{"operationId":"getOperationsPolicy","description":"Get a project's per-command approval policy. Mirrors what the operator enforces: `plugin/operation` / `plugin/*` / `*` patterns → auto | manual.","x-speakeasy-group":"operations","x-speakeasy-name-override":"getPolicy","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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":"The approval policy rules and default.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationsPolicyResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"put":{"operationId":"updateOperationsPolicy","description":"Replace a project's per-command approval policy (full rule set). Patterns are `plugin/operation`, `plugin/*`, or `*`; each maps to auto | manual.","x-speakeasy-group":"operations","x-speakeasy-name-override":"updatePolicy","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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"}}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOperationsPolicyRequest"}}}},"responses":{"200":{"description":"The updated approval policy.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationsPolicyResponse"}}}},"400":{"description":"Invalid request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/operations/invoke":{"post":{"operationId":"invokeOperation","description":"Invoke a plugin operation against a deployment. Honors the project's per-command approval policy.","x-speakeasy-group":"operations","x-speakeasy-name-override":"invoke","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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"}}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvokeOperationRequest"}}}},"responses":{"200":{"description":"The operation was dispatched or queued for approval.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvokeOperationResponse"}}}},"402":{"description":"Custom plugins require a higher plan tier.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Caller may not create commands for this deployment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Plugin or 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/access-requests":{"post":{"operationId":"createAccessRequest","description":"Create a pending access request covering a remediation plan's commands. Awaits the engineer gate before it is queued for the operator.","x-speakeasy-group":"operations","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are 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":{"deploymentId":{"type":"string"},"remediationPlanId":{"type":"string"},"title":{"type":"string"},"reason":{"type":"string"},"commands":{"type":"array","items":{"type":"object","properties":{"command":{"type":"string","example":"kubernetes/get-pods"},"summary":{"type":"string","example":"List pods in the ingestion namespace"}},"required":["command","summary"]},"minItems":1}},"required":["deploymentId","remediationPlanId","title","commands"]}}}},"responses":{"201":{"description":"The created access request.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"deploymentId":{"type":"string"},"remediationPlanId":{"type":"string"},"title":{"type":"string"},"reason":{"type":"string","nullable":true},"commands":{"type":"array","items":{"type":"object","properties":{"command":{"type":"string","example":"kubernetes/get-pods"},"summary":{"type":"string","example":"List pods in the ingestion namespace"}},"required":["command","summary"]}},"status":{"type":"string","enum":["pending-approval","queued","customer-approved","expired","rejected"]},"approvedUntil":{"type":"string","nullable":true}},"required":["id","deploymentId","remediationPlanId","title","reason","commands","status","approvedUntil"]}}}},"404":{"description":"Deployment or remediation plan not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/access-requests/{id}/queue":{"post":{"operationId":"queueAccessRequest","description":"Engineer gate — approve a pending access request, queuing it for the operator to materialize. Records who queued it.","x-speakeasy-group":"operations","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":"The queued access request, with the customer approve command.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"deploymentId":{"type":"string"},"remediationPlanId":{"type":"string"},"title":{"type":"string"},"reason":{"type":"string","nullable":true},"commands":{"type":"array","items":{"type":"object","properties":{"command":{"type":"string","example":"kubernetes/get-pods"},"summary":{"type":"string","example":"List pods in the ingestion namespace"}},"required":["command","summary"]}},"status":{"type":"string","enum":["pending-approval","queued","customer-approved","expired","rejected"]},"approvedUntil":{"type":"string","nullable":true},"kubectlApprove":{"type":"string","nullable":true}},"required":["id","deploymentId","remediationPlanId","title","reason","commands","status","approvedUntil","kubectlApprove"]}}}},"404":{"description":"Access request not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Access request is not pending approval.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/access-requests/{id}/coordinates":{"get":{"operationId":"getAccessRequestCoordinates","description":"The customer's kubectl approve command for a queued access request, or null until the operator has materialized the grant CR and reported its coordinates. Polled by the Slack handler to update the access-plan card.","x-speakeasy-group":"operations","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":"The approve command (or null) and current status.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["pending-approval","queued","customer-approved","expired","rejected"]},"kubectlApprove":{"type":"string","nullable":true}},"required":["status","kubectlApprove"]}}}},"404":{"description":"Access request not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/access-requests/pending":{"get":{"operationId":"listPendingAccessRequests","description":"Operator-facing: the queued access requests for a deployment, for the access-request sync loop to materialize as grant CRs.","x-speakeasy-ignore":true,"parameters":[{"schema":{"type":"string"},"required":true,"name":"deploymentId","in":"query"}],"responses":{"200":{"description":"Queued access requests for the deployment.","content":{"application/json":{"schema":{"type":"object","properties":{"requests":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"reason":{"type":"string","nullable":true},"commands":{"type":"array","items":{"type":"object","properties":{"command":{"type":"string","example":"kubernetes/get-pods"},"summary":{"type":"string","example":"List pods in the ingestion namespace"}},"required":["command","summary"]}}},"required":["id","title","reason","commands"]}}},"required":["requests"]}}}},"403":{"description":"Caller is not the deployment's manager runtime.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/access-requests/materialized":{"post":{"operationId":"reportMaterializedAccessRequests","description":"Operator-facing: record the namespace + CRD plural the operator materialized the grant CRs in, so the control plane can render the customer's exact kubectl approve command.","x-speakeasy-ignore":true,"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"deploymentId":{"type":"string"},"requestIds":{"type":"array","items":{"type":"string"}},"namespace":{"type":"string","minLength":1},"resourcePlural":{"type":"string","minLength":1}},"required":["deploymentId","requestIds","namespace","resourcePlural"]}}}},"responses":{"200":{"description":"Number of requests updated with CR coordinates.","content":{"application/json":{"schema":{"type":"object","properties":{"recorded":{"type":"number"}},"required":["recorded"]}}}},"403":{"description":"Caller is not the deployment's manager runtime.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/access-requests/approvals":{"post":{"operationId":"reportAccessApprovals","description":"Operator-facing: record the customer's approval windows reported back by the sync loop. Moves each request to customer-approved and resumes the investigation to dispatch commands.","x-speakeasy-ignore":true,"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"deploymentId":{"type":"string"},"approvals":{"type":"array","items":{"type":"object","properties":{"requestId":{"type":"string"},"approvedUntil":{"type":"string"}},"required":["requestId","approvedUntil"]}}},"required":["deploymentId","approvals"]}}}},"responses":{"200":{"description":"Number of approvals recorded.","content":{"application/json":{"schema":{"type":"object","properties":{"recorded":{"type":"number"}},"required":["recorded"]}}}},"403":{"description":"Caller is not the deployment's manager runtime.","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/renew":{"post":{"operationId":"syncRenew","x-speakeasy-group":"sync","x-speakeasy-name-override":"renew","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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/SyncRenewRequest"}}}},"responses":{"200":{"description":"Renewal processed. Inspect `leases` for per-deployment outcomes; a lost lease is reported there rather than failing the whole batch.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"True when every requested deployment was renewed."},"leases":{"type":"array","items":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"renewed":{"type":"boolean","description":"False when this session no longer holds a live lease."},"leaseExpiresAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["deploymentId","renewed","leaseExpiresAt"]},"description":"Per-deployment renewal outcome."}},"required":["success","leases"]}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"The session no longer owns the deployment.","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","ai"]},"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","ai"]},"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","ai"]},"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 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"]}],"description":"AWS Aurora Serverless v2 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"]}],"description":"GCP Cloud SQL 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"]}],"description":"Azure Flexible Server 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"]}],"description":"Local embedded Postgres 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"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"availability":{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]},"region":{"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":["availability","region","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsBedrock"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"availability":{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]},"location":{"type":"string"},"project":{"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":["availability","location","project","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpVertex"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"accountName":{"type":"string"},"availability":{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]},"endpoint":{"type":"string","nullable":true},"location":{"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"]}},"required":["accountName","availability","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureFoundry"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"availability":{"oneOf":[{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]},{"nullable":true}]},"provider":{"type":"string","description":"The BYO-key provider serving this binding (e.g. \"openai\"). Used on the Local\nplatform, where the app brings its own provider key instead of an ambient cloud."},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["provider","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["external"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["ai"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"type":"object","properties":{"data":{"type":"object","properties":{"enabled":{"type":"boolean"},"keyArn":{"type":"string"},"keySpec":{"type":"string"},"keyState":{"type":"string"},"keyUsage":{"type":"string"},"status":{"type":"object","properties":{"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true}},"required":["health","lifecycle"]}},"required":["enabled","keyArn","keySpec","keyState","keyUsage","status"]},"provider":{"type":"string","enum":["aws-kms"]}},"required":["data","provider"]},{"type":"object","properties":{"data":{"type":"object","properties":{"algorithm":{"type":"string","nullable":true},"cryptoKeyName":{"type":"string"},"primaryState":{"type":"string","nullable":true},"primaryVersion":{"type":"string","nullable":true},"purpose":{"type":"string"},"status":{"type":"object","properties":{"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true}},"required":["health","lifecycle"]}},"required":["cryptoKeyName","purpose","status"]},"provider":{"type":"string","enum":["gcp-cloud-kms"]}},"required":["data","provider"]},{"type":"object","properties":{"data":{"type":"object","properties":{"enabled":{"type":"boolean","nullable":true},"keyId":{"type":"string"},"keyOperations":{"type":"array","items":{"type":"string"}},"keyType":{"type":"string"},"recoveryLevel":{"type":"string","nullable":true},"status":{"type":"object","properties":{"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true}},"required":["health","lifecycle"]}},"required":["keyId","keyOperations","keyType","status"]},"provider":{"type":"string","enum":["azure-key-vault"]}},"required":["data","provider"]}]},"resourceType":{"type":"string","enum":["key"]}},"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/aws-virtual-keys":{"get":{"operationId":"listAwsVirtualKeys","parameters":[{"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":"AWS Virtual Keys in a project","content":{"application/json":{"schema":{"type":"object","properties":{"virtualKeys":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"projectId":{"type":"string"},"status":{"type":"string","enum":["provisioning","ready","action-required","decommissioning","deletion-pending","deleted","failed"]},"externalKeyId":{"type":"string"},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"customKeyStoreId":{"type":"string","nullable":true},"kmsKeyArn":{"type":"string","nullable":true},"alias":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"deletionWindowDays":{"type":"integer"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"canaryPassedAt":{"type":"string","nullable":true,"format":"date-time"},"deletionScheduledAt":{"type":"string","nullable":true,"format":"date-time"},"finalDeletionObservedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","status","externalKeyId","awsAccountId","awsRegion","customKeyStoreId","kmsKeyArn","alias","description","deletionWindowDays","tags","observedAt","canaryPassedAt","deletionScheduledAt","finalDeletionObservedAt","createdAt","updatedAt"]}}},"required":["virtualKeys"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createAwsVirtualKey","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"selector":{"oneOf":[{"type":"object","properties":{"externalId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"}},"required":["externalId"],"additionalProperties":false},{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"}},"required":["deploymentId"],"additionalProperties":false}]},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"idempotencyKey":{"type":"string","minLength":1,"maxLength":128},"alias":{"type":"string","nullable":true,"minLength":1,"maxLength":256},"description":{"type":"string","nullable":true,"maxLength":8192},"deletionWindowDays":{"type":"integer","minimum":7,"maximum":30,"default":30},"tags":{"type":"object","additionalProperties":{"type":"string","maxLength":256},"default":{}}},"required":["selector","awsAccountId","awsRegion","idempotencyKey"]}}}},"responses":{"200":{"description":"Created or resumed Virtual Key","content":{"application/json":{"schema":{"type":"object","properties":{"virtualKey":{"type":"object","properties":{"id":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"projectId":{"type":"string"},"status":{"type":"string","enum":["provisioning","ready","action-required","decommissioning","deletion-pending","deleted","failed"]},"externalKeyId":{"type":"string"},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"customKeyStoreId":{"type":"string","nullable":true},"kmsKeyArn":{"type":"string","nullable":true},"alias":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"deletionWindowDays":{"type":"integer"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"canaryPassedAt":{"type":"string","nullable":true,"format":"date-time"},"deletionScheduledAt":{"type":"string","nullable":true,"format":"date-time"},"finalDeletionObservedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","status","externalKeyId","awsAccountId","awsRegion","customKeyStoreId","kmsKeyArn","alias","description","deletionWindowDays","tags","observedAt","canaryPassedAt","deletionScheduledAt","finalDeletionObservedAt","createdAt","updatedAt"]},"setup":{"type":"object","properties":{"proxyUriEndpoint":{"type":"string","format":"uri"},"proxyUriPath":{"type":"string"},"accessKeyId":{"type":"string"},"secretAccessKey":{"type":"string"},"externalKeyId":{"type":"string"}},"required":["proxyUriEndpoint","proxyUriPath","accessKeyId","secretAccessKey","externalKeyId"]}},"required":["virtualKey","setup"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project or Enterprise Key not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Idempotency conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"Gateway unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/aws-virtual-keys/{id}/rotate-credential":{"post":{"operationId":"rotateAwsVirtualKeyCredential","parameters":[{"schema":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"required":true,"description":"Unique identifier for the aws virtual key.","name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"generation":{"type":"integer","minimum":2}},"required":["generation"]}}}},"responses":{"200":{"description":"The resumable XKS proxy credential rotation bundle","content":{"application/json":{"schema":{"type":"object","properties":{"virtualKey":{"type":"object","properties":{"id":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"projectId":{"type":"string"},"status":{"type":"string","enum":["provisioning","ready","action-required","decommissioning","deletion-pending","deleted","failed"]},"externalKeyId":{"type":"string"},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"customKeyStoreId":{"type":"string","nullable":true},"kmsKeyArn":{"type":"string","nullable":true},"alias":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"deletionWindowDays":{"type":"integer"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"canaryPassedAt":{"type":"string","nullable":true,"format":"date-time"},"deletionScheduledAt":{"type":"string","nullable":true,"format":"date-time"},"finalDeletionObservedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","status","externalKeyId","awsAccountId","awsRegion","customKeyStoreId","kmsKeyArn","alias","description","deletionWindowDays","tags","observedAt","canaryPassedAt","deletionScheduledAt","finalDeletionObservedAt","createdAt","updatedAt"]},"setup":{"type":"object","properties":{"proxyUriEndpoint":{"type":"string","format":"uri"},"proxyUriPath":{"type":"string"},"accessKeyId":{"type":"string"},"secretAccessKey":{"type":"string"},"externalKeyId":{"type":"string"}},"required":["proxyUriEndpoint","proxyUriPath","accessKeyId","secretAccessKey","externalKeyId"]}},"required":["virtualKey","setup"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Virtual Key not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Virtual Key cannot begin rotation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/aws-virtual-keys/{id}/restore":{"post":{"operationId":"restoreAwsVirtualKey","parameters":[{"schema":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"required":true,"description":"Unique identifier for the aws virtual key.","name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"kmsKeyArn":{"type":"string","pattern":"^arn:(?:aws|aws-us-gov):kms:[a-z0-9-]+:\\d{12}:key\\/[A-Za-z0-9-]+$"}},"required":["kmsKeyArn"]}}}},"responses":{"200":{"description":"Virtual Key awaiting a successful AWS XKS canary after restore","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"projectId":{"type":"string"},"status":{"type":"string","enum":["provisioning","ready","action-required","decommissioning","deletion-pending","deleted","failed"]},"externalKeyId":{"type":"string"},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"customKeyStoreId":{"type":"string","nullable":true},"kmsKeyArn":{"type":"string","nullable":true},"alias":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"deletionWindowDays":{"type":"integer"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"canaryPassedAt":{"type":"string","nullable":true,"format":"date-time"},"deletionScheduledAt":{"type":"string","nullable":true,"format":"date-time"},"finalDeletionObservedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","status","externalKeyId","awsAccountId","awsRegion","customKeyStoreId","kmsKeyArn","alias","description","deletionWindowDays","tags","observedAt","canaryPassedAt","deletionScheduledAt","finalDeletionObservedAt","createdAt","updatedAt"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Virtual Key not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Virtual Key cannot be restored","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/aws-virtual-keys/{id}/finalize-deletion":{"post":{"operationId":"finalizeAwsVirtualKeyDeletion","parameters":[{"schema":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"required":true,"description":"Unique identifier for the aws virtual key.","name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"kmsKeyArn":{"type":"string","pattern":"^arn:(?:aws|aws-us-gov):kms:[a-z0-9-]+:\\d{12}:key\\/[A-Za-z0-9-]+$"}},"required":["kmsKeyArn"]}}}},"responses":{"200":{"description":"Virtual Key whose final AWS KMS deletion was observed","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"projectId":{"type":"string"},"status":{"type":"string","enum":["provisioning","ready","action-required","decommissioning","deletion-pending","deleted","failed"]},"externalKeyId":{"type":"string"},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"customKeyStoreId":{"type":"string","nullable":true},"kmsKeyArn":{"type":"string","nullable":true},"alias":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"deletionWindowDays":{"type":"integer"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"canaryPassedAt":{"type":"string","nullable":true,"format":"date-time"},"deletionScheduledAt":{"type":"string","nullable":true,"format":"date-time"},"finalDeletionObservedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","status","externalKeyId","awsAccountId","awsRegion","customKeyStoreId","kmsKeyArn","alias","description","deletionWindowDays","tags","observedAt","canaryPassedAt","deletionScheduledAt","finalDeletionObservedAt","createdAt","updatedAt"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Virtual Key not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Virtual Key deletion cannot be finalized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/aws-virtual-keys/{id}/decommission":{"post":{"operationId":"decommissionAwsVirtualKey","parameters":[{"schema":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"required":true,"description":"Unique identifier for the aws virtual key.","name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"kmsKeyArn":{"type":"string","pattern":"^arn:(?:aws|aws-us-gov):kms:[a-z0-9-]+:\\d{12}:key\\/[A-Za-z0-9-]+$"},"deletionScheduledAt":{"type":"string","format":"date-time"}},"required":["kmsKeyArn","deletionScheduledAt"]}}}},"responses":{"200":{"description":"Virtual Key with AWS deletion scheduled","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"projectId":{"type":"string"},"status":{"type":"string","enum":["provisioning","ready","action-required","decommissioning","deletion-pending","deleted","failed"]},"externalKeyId":{"type":"string"},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"customKeyStoreId":{"type":"string","nullable":true},"kmsKeyArn":{"type":"string","nullable":true},"alias":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"deletionWindowDays":{"type":"integer"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"canaryPassedAt":{"type":"string","nullable":true,"format":"date-time"},"deletionScheduledAt":{"type":"string","nullable":true,"format":"date-time"},"finalDeletionObservedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","status","externalKeyId","awsAccountId","awsRegion","customKeyStoreId","kmsKeyArn","alias","description","deletionWindowDays","tags","observedAt","canaryPassedAt","deletionScheduledAt","finalDeletionObservedAt","createdAt","updatedAt"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Virtual Key not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"AWS key does not match","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/aws-virtual-keys/{id}":{"get":{"operationId":"getAwsVirtualKey","parameters":[{"schema":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"required":true,"description":"Unique identifier for the aws virtual key.","name":"id","in":"path"}],"responses":{"200":{"description":"AWS Virtual Key","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"projectId":{"type":"string"},"status":{"type":"string","enum":["provisioning","ready","action-required","decommissioning","deletion-pending","deleted","failed"]},"externalKeyId":{"type":"string"},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"customKeyStoreId":{"type":"string","nullable":true},"kmsKeyArn":{"type":"string","nullable":true},"alias":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"deletionWindowDays":{"type":"integer"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"canaryPassedAt":{"type":"string","nullable":true,"format":"date-time"},"deletionScheduledAt":{"type":"string","nullable":true,"format":"date-time"},"finalDeletionObservedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","status","externalKeyId","awsAccountId","awsRegion","customKeyStoreId","kmsKeyArn","alias","description","deletionWindowDays","tags","observedAt","canaryPassedAt","deletionScheduledAt","finalDeletionObservedAt","createdAt","updatedAt"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Virtual Key not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/aws-virtual-keys/{id}/continue":{"post":{"operationId":"continueAwsVirtualKey","parameters":[{"schema":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"required":true,"description":"Unique identifier for the aws virtual key.","name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"customKeyStoreId":{"type":"string","pattern":"^cks-[A-Za-z0-9]+$"},"kmsKeyArn":{"type":"string","pattern":"^arn:(?:aws|aws-us-gov):kms:[a-z0-9-]+:\\d{12}:key\\/[A-Za-z0-9-]+$"}},"required":["customKeyStoreId","kmsKeyArn"]}}}},"responses":{"200":{"description":"Updated AWS setup facts","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"projectId":{"type":"string"},"status":{"type":"string","enum":["provisioning","ready","action-required","decommissioning","deletion-pending","deleted","failed"]},"externalKeyId":{"type":"string"},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"customKeyStoreId":{"type":"string","nullable":true},"kmsKeyArn":{"type":"string","nullable":true},"alias":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"deletionWindowDays":{"type":"integer"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"canaryPassedAt":{"type":"string","nullable":true,"format":"date-time"},"deletionScheduledAt":{"type":"string","nullable":true,"format":"date-time"},"finalDeletionObservedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","status","externalKeyId","awsAccountId","awsRegion","customKeyStoreId","kmsKeyArn","alias","description","deletionWindowDays","tags","observedAt","canaryPassedAt","deletionScheduledAt","finalDeletionObservedAt","createdAt","updatedAt"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Virtual Key not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Setup facts conflict","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 9acdfeb03..3cbfcb1ff 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","project.encryption","project.ai-gateway","project.remote-bindings"],"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,"pattern":"^(?:[0-9a-fA-F]{40}|[0-9a-fA-F]{64})$","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,"description":"The author identity recorded by Git. This is not guaranteed to be an RFC-valid email address.","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."},"customerConnections":{"type":"object","nullable":true,"properties":{"schemaVersion":{"type":"number","enum":[1]},"connections":{"type":"object","properties":{"deployment":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]}},"required":["enabled"],"additionalProperties":false},"keys":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]},"applicationEncryption":{"type":"boolean","enum":[true]}},"required":["enabled","applicationEncryption"],"additionalProperties":false},"models":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]},"allowedProviders":{"type":"array","items":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic","databricks","openai"]},"minItems":1,"maxItems":6},"requirements":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string","minLength":1,"maxLength":256},"clientApis":{"type":"array","items":{"type":"string","enum":["openai-chat","openai-responses","anthropic-messages"]},"minItems":1,"maxItems":3},"required":{"type":"boolean"}},"required":["publicModelId","clientApis","required"],"additionalProperties":false},"maxItems":100}},"required":["enabled","allowedProviders","requirements"],"additionalProperties":false},"storage":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]},"access":{"type":"string","enum":["read-write"]}},"required":["enabled","access"],"additionalProperties":false},"registry":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]},"repositories":{"type":"array","items":{"type":"string","minLength":1,"maxLength":128},"maxItems":100},"credentialPolicy":{"type":"string","enum":["pull-only","push-and-pull"]}},"required":["enabled","repositories","credentialPolicy"],"additionalProperties":false}},"additionalProperties":false}},"default":null,"required":["schemaVersion","connections"],"additionalProperties":false,"description":"Customer infrastructure offered by this Project through exact built-in or application-authored sources."},"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","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","nullable":true},"stack":{"allOf":[{"$ref":"#/components/schemas/StackByPlatform"}],"nullable":true}},"required":["id","version","stack"]},"supportedPlatforms":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","machines","local","test"],"description":"Represents the target cloud platform."}},"setupItems":{"type":"array","items":{"type":"string","enum":["alien-stack","models","keys","storage","registry"]}},"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"}},"setupPackagesStatus":{"type":"string","enum":["preparing","ready","failed"],"description":"Whether at least one complete automated setup package is ready across all selected setup items."}},"required":["activeRelease","supportedPlatforms","setupItems","visiblePackageTypes","visibleSetupMethods","setupPackagesStatus"]},"StackByPlatform":{"type":"object","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"]},"CustomerConnectionMaterialization":{"type":"object","properties":{"customerConnections":{"$ref":"#/components/schemas/CustomerConnections"},"source":{"type":"object","properties":{"definitionId":{"type":"string","enum":["customer-ai","customer-key","customer-storage"]},"definitionVersion":{"type":"string"},"releaseId":{"type":"string"}},"required":["definitionId","definitionVersion","releaseId"]},"packages":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["cloudformation","terraform"]},"status":{"type":"string","enum":["pending","building","ready","failed","canceled"]}},"required":["type","status"]}}},"required":["customerConnections","source","packages"]},"CustomerConnections":{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"connections":{"type":"object","properties":{"deployment":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]}},"required":["enabled"],"additionalProperties":false},"keys":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]},"applicationEncryption":{"type":"boolean","enum":[true]}},"required":["enabled","applicationEncryption"],"additionalProperties":false},"models":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]},"allowedProviders":{"type":"array","items":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic","databricks","openai"]},"minItems":1,"maxItems":6},"requirements":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string","minLength":1,"maxLength":256},"clientApis":{"type":"array","items":{"type":"string","enum":["openai-chat","openai-responses","anthropic-messages"]},"minItems":1,"maxItems":3},"required":{"type":"boolean"}},"required":["publicModelId","clientApis","required"],"additionalProperties":false},"maxItems":100}},"required":["enabled","allowedProviders","requirements"],"additionalProperties":false},"storage":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]},"access":{"type":"string","enum":["read-write"]}},"required":["enabled","access"],"additionalProperties":false},"registry":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]},"repositories":{"type":"array","items":{"type":"string","minLength":1,"maxLength":128},"maxItems":100},"credentialPolicy":{"type":"string","enum":["pull-only","push-and-pull"]}},"required":["enabled","repositories","credentialPolicy"],"additionalProperties":false}},"additionalProperties":false}},"required":["schemaVersion","connections"],"additionalProperties":false},"ConfigureCustomerModelsRequest":{"type":"object","properties":{"allowedProviders":{"type":"array","items":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic","databricks","openai"]},"minItems":1,"maxItems":5},"requirements":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string","minLength":1,"maxLength":256},"clientApis":{"type":"array","items":{"type":"string","enum":["openai-chat","openai-responses","anthropic-messages"]},"minItems":1,"maxItems":3},"required":{"type":"boolean"}},"required":["publicModelId","clientApis","required"],"additionalProperties":false},"maxItems":100}},"required":["allowedProviders","requirements"],"additionalProperties":false},"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"},"externalId":{"type":"string","nullable":true,"minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"},"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","externalId","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"},"externalId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"},"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"]},"EnsureDeploymentGroupByExternalIdRequest":{"type":"object","properties":{"externalId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"},"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":["externalId","name","project"]},"CreateSetupLinkResponse":{"allOf":[{"$ref":"#/components/schemas/CreateDeploymentGroupTokenResponse"},{"type":"object","properties":{"deploymentGroup":{"$ref":"#/components/schemas/DeploymentGroup"}},"required":["deploymentGroup"]}]},"CreateDeploymentGroupTokenResponse":{"type":"object","properties":{"token":{"type":"string","description":"The API key token"},"deploymentLink":{"type":"string","description":"Formatted deployment link"}},"required":["token","deploymentLink"]},"CreateSetupLinkRequest":{"allOf":[{"$ref":"#/components/schemas/EnsureDeploymentGroupByExternalIdRequest"},{"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"},"setupItems":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentSetupItemSelection"},"maxItems":8,"description":"Customer infrastructure to include. The server snapshots its exact reviewed sources."},"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"]},"DeploymentSetupItemSelection":{"type":"object","properties":{"item":{"type":"string","enum":["alien-stack","models","keys","storage","registry"]},"required":{"type":"boolean"},"releaseChannel":{"type":"string","minLength":1,"maxLength":63}},"required":["item","required"],"additionalProperties":false},"StackInputValuesRequest":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/StackInputValueRequest"},"default":{}},"StackInputValueRequest":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"type":"string"}}]},"ProjectIDOrNameQueryParam":{"type":"string","maxLength":100,"description":"Filter by project ID or name."},"SetDeploymentGroupExternalIdRequest":{"type":"object","properties":{"externalId":{"type":"string","nullable":true,"minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"}},"required":["externalId"]},"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"}}},"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"},"setupItems":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentSetupItemSelection"},"maxItems":8,"description":"Customer infrastructure to include. The server snapshots its exact reviewed sources."},"inputValues":{"$ref":"#/components/schemas/StackInputValuesRequest"}},"required":["deploymentSetupConfig"]},"CreateFirstPartyDeploymentSessionResponse":{"type":"object","properties":{"token":{"type":"string","description":"The deployment-group session token"}},"required":["token"]},"ExternalAIBindingState":{"type":"object","properties":{"binding":{"$ref":"#/components/schemas/ExternalAIBinding"}},"required":["binding"]},"ExternalAIBinding":{"type":"object","nullable":true,"properties":{"id":{"type":"string"},"provider":{"type":"string","enum":["anthropic","openai"]},"keyFingerprint":{"type":"string"},"availableProviderModelIds":{"type":"array","items":{"type":"string"}},"verifiedAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","provider","keyFingerprint","availableProviderModelIds","verifiedAt","updatedAt"]},"PutExternalAIBindingRequest":{"type":"object","properties":{"provider":{"type":"string","enum":["anthropic","openai"]},"apiKey":{"type":"string","minLength":1,"maxLength":512},"acknowledgeAlienCredentialAccess":{"type":"boolean","enum":[true]}},"required":["provider","apiKey","acknowledgeAlienCredentialAccess"],"additionalProperties":false},"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":{"currentChannels":{"type":"array","items":{"$ref":"#/components/schemas/ReleaseChannelName"},"description":"Channels for which this release is currently selected"},"commitUrl":{"type":"string","nullable":true,"format":"uri","description":"Validated canonical provider URL for the exact commit"},"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"},"createdBy":{"type":"object","nullable":true,"properties":{"id":{"type":"string","description":"User ID"},"name":{"type":"string","description":"User's display name"},"email":{"type":"string","description":"User's email address"},"image":{"type":"string","nullable":true,"description":"User's avatar image URL"}},"required":["id","name","email","image"],"description":"Platform user who created the release, included when ?include=createdBy is used"}},"required":["currentChannels","commitUrl"]}]},"ReleaseChannelName":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z][a-z0-9-]*$"},"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":{"allOf":[{"$ref":"#/components/schemas/StackByPlatform"}],"nullable":true},"setupFingerprints":{"allOf":[{"$ref":"#/components/schemas/SetupFingerprintMap"},{"description":"Per-target setup compatibility fingerprints for this release"}]},"rootDirectory":{"type":"string","nullable":true,"maxLength":256},"createdByUserId":{"type":"string","nullable":true,"maxLength":128,"description":"ID of the platform user who created the release, if known"},"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},"channel":{"allOf":[{"$ref":"#/components/schemas/ReleaseChannelName"},{"description":"Release channel to advance. Defaults to production."}]}},"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"]},"ReleaseDeploymentsResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ReleaseDeploymentItem"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"},"stateCounts":{"$ref":"#/components/schemas/ReleaseRolloutStateCounts"}},"required":["items","nextCursor","stateCounts"]},"ReleaseDeploymentItem":{"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."},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","machines","local","test"],"description":"Target platform 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"},"deploymentGroup":{"type":"object","nullable":true,"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"},"externalId":{"type":"string","nullable":true,"minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"}},"required":["id","name","externalId"],"description":"Deployment group this deployment belongs to"},"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"},"lastHeartbeatAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last received heartbeat"},"rolloutState":{"$ref":"#/components/schemas/ReleaseRolloutState"},"releasedAt":{"type":"string","format":"date-time","nullable":true,"description":"When this release went live on the deployment, null if it never did"},"durationMs":{"type":"integer","nullable":true,"description":"Time from release creation until the deployment finished updating, in milliseconds. Null for initial provisions and deployments that never ran this release."},"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"}},"required":["id","name","status","platform","rolloutState","releasedAt","durationMs"]},"ReleaseRolloutState":{"type":"string","enum":["updated","updating","failed","pending","pinned-other","superseded","on-other"]},"ReleaseRolloutStateCounts":{"type":"object","properties":{"updated":{"type":"integer"},"updating":{"type":"integer"},"failed":{"type":"integer"},"pending":{"type":"integer"},"pinned-other":{"type":"integer"},"superseded":{"type":"integer"},"on-other":{"type":"integer"}},"required":["updated","updating","failed","pending","pinned-other","superseded","on-other"],"description":"Deployment counts per rollout state across all deployments the filters allow (ignores the state filter)"},"ReleaseChannel":{"type":"object","properties":{"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"name":{"$ref":"#/components/schemas/ReleaseChannelName"},"currentReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"deploymentCount":{"type":"integer","minimum":0},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["workspaceId","projectId","name","currentReleaseId","createdAt","updatedAt"]},"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"},"purpose":{"$ref":"#/components/schemas/DeploymentPurpose"},"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"},"releaseChannel":{"allOf":[{"$ref":"#/components/schemas/ReleaseChannelName"},{"description":"Named release stream followed when the deployment is not pinned"}]},"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","purpose","releaseChannel","retryRequested","createdAt","updatedAt","managerId","workspaceId"]},"DeploymentProtocolVersion":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"DeploymentState protocol version owned by the runtime/manager"},"DeploymentPurpose":{"type":"string","enum":["application","encryption","ai","storage","container-registry"],"description":"Operational purpose of this deployment within its customer environment."},"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"},"externalId":{"type":"string","nullable":true,"minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"}},"required":["id","name","externalId"]},"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"}}}]},"DeploymentUpdateOperationSummary":{"type":"object","nullable":true,"properties":{"id":{"type":"string","pattern":"duop_[0-9a-z]{28}$","description":"Unique identifier for the deployment update operation.","example":"duop_0vtxpb1sw4sbcdwg2xo37q6"},"status":{"$ref":"#/components/schemas/DeploymentUpdateOperationStatus"},"reasons":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentUpdateReason"}},"targetReleaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"changedKeys":{"type":"array","items":{"type":"string"}},"requestedAt":{"type":"string","format":"date-time"},"startedAt":{"type":"string","format":"date-time","nullable":true},"completedAt":{"type":"string","format":"date-time","nullable":true}},"required":["id","status","reasons","targetReleaseId","changedKeys","requestedAt"]},"DeploymentUpdateOperationStatus":{"type":"string","enum":["queued","applying","succeeded","failed","superseded"]},"DeploymentUpdateReason":{"type":"string","enum":["configuration","redeploy","release"]},"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"},"purpose":{"$ref":"#/components/schemas/DeploymentPurpose"},"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":{"initialSetupAuthority":{"type":"string","enum":["importedHandoff","directSetup"],"description":"Actor that owns structural work during the initial setup phase."},"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}]},"persistedGateAnswers":{"type":"object","properties":{},"additionalProperties":{"type":"boolean"},"description":"Canonical resolved answers for inputs that gate Frozen resources,\nkeyed by input id, recorded when the deployment is created or its\nsetup import registers.\n\nA frozen gate's answer is fixed for the deployment's lifetime: the\nupdate path refuses input values that conflict with these, and a Live\nresource sharing such an input resolves the persisted answer forever."},"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"},"releaseChannel":{"allOf":[{"$ref":"#/components/schemas/ReleaseChannelName"},{"description":"Named release stream followed when the deployment is not pinned"}]},"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"},"updateState":{"type":"object","properties":{"active":{"$ref":"#/components/schemas/DeploymentUpdateOperationSummary"},"next":{"$ref":"#/components/schemas/DeploymentUpdateOperationSummary"},"latest":{"$ref":"#/components/schemas/DeploymentUpdateOperationSummary"}},"required":["active","next","latest"],"description":"Durable progress for deployment updates"},"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","purpose","stackSettings","releaseChannel","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."},"releaseChannel":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z][a-z0-9-]*$","default":"production","description":"Release channel followed while this deployment is not pinned."},"setupItem":{"type":"string","enum":["alien-stack","models","keys","storage"],"description":"Customer setup item selected from this deployment-group token."}},"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"},"setupItem":{"type":"string","enum":["alien-stack","models","keys","storage","registry"],"description":"Exact item selected from a tailored customer setup link."},"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":{"initialSetupAuthority":{"type":"string","enum":["importedHandoff","directSetup"],"description":"Actor that owns structural work during the initial setup phase."},"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}]},"persistedGateAnswers":{"type":"object","properties":{},"additionalProperties":{"type":"boolean"},"description":"Canonical resolved answers for inputs that gate Frozen resources,\nkeyed by input id, recorded when the deployment is created or its\nsetup import registers.\n\nA frozen gate's answer is fixed for the deployment's lifetime: the\nupdate path refuses input values that conflict with these, and a Live\nresource sharing such an input resolves the persisted answer forever."},"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 resume its followed channel.","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"},"outcome":{"type":"string","enum":["accepted","unchanged"]},"operation":{"$ref":"#/components/schemas/DeploymentUpdateOperationSummary"}},"required":["runtimeUpdateRequested","outcome","operation"]}]},"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","nullable":true,"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"},"items":{"type":"array","items":{"type":"object","properties":{"item":{"type":"string","enum":["alien-stack","models","keys","storage","registry"]},"source":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["application-release"]},"releaseChannel":{"type":"string","minLength":1,"maxLength":63},"releaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"resourceId":{"type":"string","minLength":1,"maxLength":256}},"required":["type","releaseChannel","releaseId"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["built-in"]},"definitionId":{"type":"string","enum":["customer-ai","customer-key","customer-storage","customer-registry"]},"version":{"type":"string","minLength":1,"maxLength":64},"sourceReleaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"}},"required":["type","definitionId","version","sourceReleaseId"],"additionalProperties":false}]},"required":{"type":"boolean"},"configuration":{"type":"object","properties":{"allowedProviders":{"type":"array","items":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic","databricks","openai"]},"minItems":1,"maxItems":6},"modelRequirements":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string","minLength":1,"maxLength":256},"clientApis":{"type":"array","items":{"type":"string","enum":["openai-chat","openai-responses","anthropic-messages"]},"minItems":1,"maxItems":3},"required":{"type":"boolean"}},"required":["publicModelId","clientApis","required"],"additionalProperties":false},"maxItems":100}},"additionalProperties":false}},"required":["item","source","required"],"additionalProperties":false},"maxItems":8,"description":"Immutable setup items and exact sources captured when this setup link is created."},"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}]},"channel":{"type":"string","description":"Name of the channel that moved"},"previousReleaseId":{"type":"string","nullable":true,"description":"ID of the release that was previously current, if any"},"releaseId":{"type":"string","description":"ID of the release that is now current"},"type":{"type":"string","enum":["ReleaseChannelUpdated"]}},"required":["channel","releaseId","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}]},"channel":{"type":"string","description":"Newly followed channel"},"deploymentId":{"type":"string","description":"ID of the deployment"},"previousChannel":{"type":"string","description":"Previously followed channel"},"type":{"type":"string","enum":["DeploymentReleaseChannelChanged"]}},"required":["channel","deploymentId","previousChannel","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"]},"GenerateManagerBindingTokenResponse":{"type":"object","properties":{"accessToken":{"type":"string"},"expiresIn":{"type":"number","nullable":true},"tokenType":{"type":"string","enum":["Bearer"]},"managerUrl":{"type":"string"}},"required":["accessToken","expiresIn","tokenType","managerUrl"]},"GenerateManagerBindingTokenRequest":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"}},"required":["deploymentId"],"additionalProperties":false},"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"}},"items":{"type":"array","items":{"type":"object","properties":{"item":{"type":"string","enum":["alien-stack","models","keys","storage","registry"]},"source":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["application-release"]},"releaseChannel":{"type":"string","minLength":1,"maxLength":63},"releaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"resourceId":{"type":"string","minLength":1,"maxLength":256}},"required":["type","releaseChannel","releaseId"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["built-in"]},"definitionId":{"type":"string","enum":["customer-ai","customer-key","customer-storage","customer-registry"]},"version":{"type":"string","minLength":1,"maxLength":64},"sourceReleaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"}},"required":["type","definitionId","version","sourceReleaseId"],"additionalProperties":false}]},"required":{"type":"boolean"},"configuration":{"type":"object","properties":{"allowedProviders":{"type":"array","items":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic","databricks","openai"]},"minItems":1,"maxItems":6},"modelRequirements":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string","minLength":1,"maxLength":256},"clientApis":{"type":"array","items":{"type":"string","enum":["openai-chat","openai-responses","anthropic-messages"]},"minItems":1,"maxItems":3},"required":{"type":"boolean"}},"required":["publicModelId","clientApis","required"],"additionalProperties":false},"maxItems":100}},"additionalProperties":false}},"required":["item","source","required"],"additionalProperties":false},"maxItems":8}},"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","nullable":true,"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"]},"CommandBootstrapResponse":{"type":"object","properties":{"managerUrl":{"type":"string","format":"uri","description":"Current customer-facing manager URL"},"token":{"type":"string","minLength":1,"description":"Short-lived command capability token"},"expiresAt":{"type":"string","format":"date-time","description":"Capability expiry in RFC 3339 format"},"target":{"$ref":"#/components/schemas/CommandReceiverBootstrapTarget"}},"required":["managerUrl","token","expiresAt"]},"CommandReceiverBootstrapTarget":{"type":"object","properties":{"resourceId":{"type":"string"},"resourceType":{"type":"string","enum":["container","daemon"]}},"required":["resourceId","resourceType"],"description":"Resolved target identity; present only for receiver bootstrap"},"CommandBootstrapRequest":{"oneOf":[{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"role":{"type":"string","enum":["sender"]}},"required":["deploymentId","role"],"additionalProperties":false},{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"role":{"type":"string","enum":["receiver"]},"target":{"type":"string","minLength":1,"maxLength":255}},"required":["deploymentId","role","target"],"additionalProperties":false}]},"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"},"startedAt":{"type":"string","format":"date-time"},"endedAt":{"type":"string","format":"date-time"},"expiredAt":{"type":"string","format":"date-time"},"exitCode":{"type":"integer","nullable":true},"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"},"customerModels":{"type":"boolean","description":"Whether this release offers one remotely accessible AI resource"},"resourceCounts":{"type":"object","properties":{"workers":{"type":"integer","minimum":0},"containers":{"type":"integer","minimum":0},"daemons":{"type":"integer","minimum":0,"description":"Daemon resources that run on managed runtime machines"},"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","customerModels","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"},"modelAvailabilitySources":{"type":"array","items":{"type":"object","properties":{"deploymentId":{"type":"string"},"resourceId":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"status":{"type":"string","enum":["current","stale","invalid"]},"availability":{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]}},"required":["deploymentId","resourceId","observedAt","status"]}},"setupItems":{"type":"array","items":{"$ref":"#/components/schemas/SetupItemStatus"}},"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","modelAvailabilitySources"]},"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"]},"SetupItemStatus":{"type":"object","properties":{"item":{"type":"string","enum":["alien-stack","models","keys","storage","registry"]},"source":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["application-release"]},"releaseChannel":{"type":"string","minLength":1,"maxLength":63},"releaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"resourceId":{"type":"string","minLength":1,"maxLength":256}},"required":["type","releaseChannel","releaseId"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["built-in"]},"definitionId":{"type":"string","enum":["customer-ai","customer-key","customer-storage","customer-registry"]},"version":{"type":"string","minLength":1,"maxLength":64},"sourceReleaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"}},"required":["type","definitionId","version","sourceReleaseId"],"additionalProperties":false}]},"required":{"type":"boolean"},"configuration":{"type":"object","properties":{"allowedProviders":{"type":"array","items":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic","databricks","openai"]},"minItems":1,"maxItems":6},"modelRequirements":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string","minLength":1,"maxLength":256},"clientApis":{"type":"array","items":{"type":"string","enum":["openai-chat","openai-responses","anthropic-messages"]},"minItems":1,"maxItems":3},"required":{"type":"boolean"}},"required":["publicModelId","clientApis","required"],"additionalProperties":false},"maxItems":100}},"additionalProperties":false},"status":{"type":"string","enum":["not-started","waiting","applying","verifying","connected","needs-attention","revoked"]},"deploymentIds":{"type":"array","items":{"type":"string"}},"blocker":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["item","source","required","status","deploymentIds"],"additionalProperties":false},"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"]}},"items":{"type":"array","items":{"type":"object","properties":{"item":{"type":"string","enum":["alien-stack","models","keys","storage","registry"]},"source":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["application-release"]},"releaseChannel":{"type":"string","minLength":1,"maxLength":63},"releaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"resourceId":{"type":"string","minLength":1,"maxLength":256}},"required":["type","releaseChannel","releaseId"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["built-in"]},"definitionId":{"type":"string","enum":["customer-ai","customer-key","customer-storage","customer-registry"]},"version":{"type":"string","minLength":1,"maxLength":64},"sourceReleaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"}},"required":["type","definitionId","version","sourceReleaseId"],"additionalProperties":false}]},"required":{"type":"boolean"},"configuration":{"type":"object","properties":{"allowedProviders":{"type":"array","items":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic","databricks","openai"]},"minItems":1,"maxItems":6},"modelRequirements":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string","minLength":1,"maxLength":256},"clientApis":{"type":"array","items":{"type":"string","enum":["openai-chat","openai-responses","anthropic-messages"]},"minItems":1,"maxItems":3},"required":{"type":"boolean"}},"required":["publicModelId","clientApis","required"],"additionalProperties":false},"maxItems":100}},"additionalProperties":false}},"required":["item","source","required"],"additionalProperties":false},"maxItems":8},"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"]},"ListOperationsPluginsResponse":{"type":"object","properties":{"plugins":{"type":"array","items":{"$ref":"#/components/schemas/OperationsPlugin"}}},"required":["plugins"]},"OperationsPlugin":{"type":"object","properties":{"name":{"type":"string"},"version":{"type":"string"},"tier":{"type":"string","enum":["read-only","mutating","destructive"],"description":"Plugin-level default tier."},"builtin":{"type":"boolean","description":"True for compiled-in plugins, false for custom bundles."},"enabled":{"type":"boolean"},"operations":{"type":"array","items":{"$ref":"#/components/schemas/OperationsPluginOperation"}}},"required":["name","version","tier","builtin","enabled","operations"]},"OperationsPluginOperation":{"type":"object","properties":{"name":{"type":"string","description":"Operation name, unique within the plugin."},"tier":{"type":"string","enum":["read-only","mutating","destructive"],"description":"Effective risk tier for this operation."},"description":{"type":"string","nullable":true,"description":"Human-readable description."}},"required":["name","tier","description"]},"OperationsBundleUploadUrlResponse":{"type":"object","properties":{"uploadUrl":{"type":"string","format":"uri","description":"Presigned S3 PUT URL to upload the bundle ZIP to."},"contentType":{"type":"string","description":"Content-Type header the PUT must send (must match the signature)."}},"required":["uploadUrl","contentType"]},"OperationsBundleUploadUrlRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Plugin name (from the bundle's metadata.json)."}},"required":["name"]},"PublishOperationsPluginResponse":{"type":"object","properties":{"name":{"type":"string"},"version":{"type":"string"},"tier":{"type":"string","enum":["read-only","mutating","destructive"],"description":"How risky an operation is (declared by the plugin metadata)."},"enabled":{"type":"boolean"}},"required":["name","version","tier","enabled"]},"PublishOperationsPluginRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Plugin name (from the bundle's metadata.json)."},"version":{"type":"string","minLength":1,"description":"Plugin version."},"tier":{"type":"string","enum":["read-only","mutating","destructive"],"description":"Plugin-level default risk tier."},"metadata":{"nullable":true,"description":"The verbatim metadata.json (operations[], binaries{})."}},"required":["name","version","tier"]},"SetOperationsPluginEnabledResponse":{"type":"object","properties":{"name":{"type":"string"},"builtin":{"type":"boolean"},"enabled":{"type":"boolean"}},"required":["name","builtin","enabled"]},"SetOperationsPluginEnabledRequest":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether the plugin should be baked into the operator image."}},"required":["enabled"]},"OperationsPolicyResponse":{"type":"object","properties":{"rules":{"type":"array","items":{"$ref":"#/components/schemas/OperationsPolicyRule"}},"default":{"type":"string","enum":["auto","manual"],"description":"Decision for commands no rule matches."}},"required":["rules","default"]},"OperationsPolicyRule":{"type":"object","properties":{"pattern":{"type":"string","description":"`plugin/operation`, `plugin/*`, or `*`."},"decision":{"type":"string","enum":["auto","manual"],"description":"auto: run immediately. manual: needs customer approval before running."}},"required":["pattern","decision"]},"UpdateOperationsPolicyRequest":{"type":"object","properties":{"rules":{"type":"array","items":{"$ref":"#/components/schemas/OperationsPolicyRule"},"description":"The full rule set (replaces the previous one)."}},"required":["rules"]},"InvokeOperationResponse":{"type":"object","properties":{"plugin":{"type":"string"},"operation":{"type":"string"},"tier":{"type":"string","enum":["read-only","mutating","destructive"],"description":"The operation's declared risk tier (informational)."},"decision":{"type":"string","enum":["auto","manual"],"description":"The approval decision the policy resolved to."},"status":{"type":"string","enum":["dispatched","pending-approval"],"description":"dispatched: auto-approved and running. pending-approval: needs customer sign-off."},"commandId":{"type":"string","description":"The created operation-command id when dispatched (absent when pending)."}},"required":["plugin","operation","tier","decision","status"]},"InvokeOperationRequest":{"type":"object","properties":{"deploymentId":{"type":"string","description":"Deployment to run the operation against."},"plugin":{"type":"string","description":"Plugin name."},"operation":{"type":"string","description":"Operation name exposed by the plugin."},"params":{"nullable":true,"description":"JSON params passed to the operation."}},"required":["deploymentId","plugin","operation"]},"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"},"purpose":{"$ref":"#/components/schemas/DeploymentPurpose"},"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":{"initialSetupAuthority":{"type":"string","enum":["importedHandoff","directSetup"],"description":"Actor that owns structural work during the initial setup phase."},"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}]},"persistedGateAnswers":{"type":"object","properties":{},"additionalProperties":{"type":"boolean"},"description":"Canonical resolved answers for inputs that gate Frozen resources,\nkeyed by input id, recorded when the deployment is created or its\nsetup import registers.\n\nA frozen gate's answer is fixed for the deployment's lifetime: the\nupdate path refuses input values that conflict with these, and a Live\nresource sharing such an input resolves the persisted answer forever."},"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"},"releaseChannel":{"allOf":[{"$ref":"#/components/schemas/ReleaseChannelName"},{"description":"Named release stream followed when the deployment is not pinned"}]},"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"},"updateState":{"type":"object","properties":{"active":{"$ref":"#/components/schemas/DeploymentUpdateOperationSummary"},"next":{"$ref":"#/components/schemas/DeploymentUpdateOperationSummary"},"latest":{"$ref":"#/components/schemas/DeploymentUpdateOperationSummary"}},"required":["active","next","latest"],"description":"Durable progress for deployment updates"},"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","purpose","stackSettings","releaseChannel","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":{"initialSetupAuthority":{"type":"string","enum":["importedHandoff","directSetup"],"description":"Actor that owns structural work during the initial setup phase."},"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}]},"persistedGateAnswers":{"type":"object","properties":{},"additionalProperties":{"type":"boolean"},"description":"Canonical resolved answers for inputs that gate Frozen resources,\nkeyed by input id, recorded when the deployment is created or its\nsetup import registers.\n\nA frozen gate's answer is fixed for the deployment's lifetime: the\nupdate path refuses input values that conflict with these, and a Live\nresource sharing such an input resolves the persisted answer forever."},"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"},"serverCaCertificates":{"oneOf":[{"type":"array","items":{"type":"string"}},{"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"},"sslMode":{"type":"string","enum":["verify-full","disable"],"description":"TLS policy for an operator-provided / BYO Postgres database.\n\nUnlike libpq's ambiguous `prefer` mode, both choices map exactly to the\nconnection settings exposed by every supported SDK."},"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"]}]},{"allOf":[{"type":"object","properties":{"apiKey":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"provider":{"type":"string","description":"The external AI provider name (e.g., \"openai\", \"anthropic\")"}},"required":["provider"],"description":"External AI provider binding configuration (BYO-key).\n\nThe operator-supplied secret rides inside the binding via\n`BindingValue`, so it is a literal on cloud platforms and gains\nKubernetes SecretRef resolution for free (`extract_binding_secrets` walks\nthe binding JSON for `secretRef`)."},{"type":"object","properties":{"type":{"type":"string","enum":["ai"]}},"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)"},"leaseExpiresAt":{"type":"string","nullable":true,"format":"date-time","description":"When the provisional leases on the returned deployments lapse. Confirm them with sync/renew before starting work. Null when nothing was acquired."}},"required":["deployments","failures","leaseExpiresAt"],"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"},"requestId":{"type":"string","minLength":1,"description":"Idempotency key for one logical acquire request"},"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","requestId","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":{"initialSetupAuthority":{"type":"string","enum":["importedHandoff","directSetup"],"description":"Actor that owns structural work during the initial setup phase."},"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}]},"persistedGateAnswers":{"type":"object","properties":{},"additionalProperties":{"type":"boolean"},"description":"Canonical resolved answers for inputs that gate Frozen resources,\nkeyed by input id, recorded when the deployment is created or its\nsetup import registers.\n\nA frozen gate's answer is fixed for the deployment's lifetime: the\nupdate path refuses input values that conflict with these, and a Live\nresource sharing such an input resolves the persisted answer forever."},"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"},"serverCaCertificates":{"oneOf":[{"type":"array","items":{"type":"string"}},{"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"},"sslMode":{"type":"string","enum":["verify-full","disable"],"description":"TLS policy for an operator-provided / BYO Postgres database.\n\nUnlike libpq's ambiguous `prefer` mode, both choices map exactly to the\nconnection settings exposed by every supported SDK."},"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"]}]},{"allOf":[{"type":"object","properties":{"apiKey":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"provider":{"type":"string","description":"The external AI provider name (e.g., \"openai\", \"anthropic\")"}},"required":["provider"],"description":"External AI provider binding configuration (BYO-key).\n\nThe operator-supplied secret rides inside the binding via\n`BindingValue`, so it is a literal on cloud platforms and gains\nKubernetes SecretRef resolution for free (`extract_binding_secrets` walks\nthe binding JSON for `secretRef`)."},{"type":"object","properties":{"type":{"type":"string","enum":["ai"]}},"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":{"initialSetupAuthority":{"type":"string","enum":["importedHandoff","directSetup"],"description":"Actor that owns structural work during the initial setup phase."},"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}]},"persistedGateAnswers":{"type":"object","properties":{},"additionalProperties":{"type":"boolean"},"description":"Canonical resolved answers for inputs that gate Frozen resources,\nkeyed by input id, recorded when the deployment is created or its\nsetup import registers.\n\nA frozen gate's answer is fixed for the deployment's lifetime: the\nupdate path refuses input values that conflict with these, and a Live\nresource sharing such an input resolves the persisted answer forever."},"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"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"availability":{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]},"region":{"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":["availability","region","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsBedrock"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"availability":{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]},"location":{"type":"string"},"project":{"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":["availability","location","project","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpVertex"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"accountName":{"type":"string"},"availability":{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]},"endpoint":{"type":"string","nullable":true},"location":{"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"]}},"required":["accountName","availability","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureFoundry"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"availability":{"oneOf":[{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]},{"nullable":true}]},"provider":{"type":"string","description":"The BYO-key provider serving this binding (e.g. \"openai\"). Used on the Local\nplatform, where the app brings its own provider key instead of an ambient cloud."},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["provider","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["external"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["ai"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"type":"object","properties":{"data":{"type":"object","properties":{"enabled":{"type":"boolean"},"keyArn":{"type":"string"},"keySpec":{"type":"string"},"keyState":{"type":"string"},"keyUsage":{"type":"string"},"status":{"type":"object","properties":{"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true}},"required":["health","lifecycle"]}},"required":["enabled","keyArn","keySpec","keyState","keyUsage","status"]},"provider":{"type":"string","enum":["aws-kms"]}},"required":["data","provider"]},{"type":"object","properties":{"data":{"type":"object","properties":{"algorithm":{"type":"string","nullable":true},"cryptoKeyName":{"type":"string"},"primaryState":{"type":"string","nullable":true},"primaryVersion":{"type":"string","nullable":true},"purpose":{"type":"string"},"status":{"type":"object","properties":{"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true}},"required":["health","lifecycle"]}},"required":["cryptoKeyName","purpose","status"]},"provider":{"type":"string","enum":["gcp-cloud-kms"]}},"required":["data","provider"]},{"type":"object","properties":{"data":{"type":"object","properties":{"enabled":{"type":"boolean","nullable":true},"keyId":{"type":"string"},"keyOperations":{"type":"array","items":{"type":"string"}},"keyType":{"type":"string"},"recoveryLevel":{"type":"string","nullable":true},"status":{"type":"object","properties":{"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true}},"required":["health","lifecycle"]}},"required":["keyId","keyOperations","keyType","status"]},"provider":{"type":"string","enum":["azure-key-vault"]}},"required":["data","provider"]}]},"resourceType":{"type":"string","enum":["key"]}},"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"},"SyncRenewRequest":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Single deployment to renew. Deprecated: use deploymentIds. Retained so a manager built against the previous API keeps renewing during rollout.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"deploymentIds":{"type":"array","items":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"minItems":1,"maxItems":100,"description":"Deployments to renew or confirm. Renewal is per deployment: the response reports each one independently."},"session":{"type":"string","minLength":1}},"required":["session"],"additionalProperties":false},"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"},"operations_custom_plugins":{"type":"boolean"},"sso_saml":{"type":"boolean"},"audit_logs":{"type":"boolean"},"airgapped":{"type":"boolean"}},"required":["custom_domains","private_managers","operations_custom_plugins","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}/source":{"post":{"operationId":"configureProjectSource","description":"Connect a GitHub repository or Alien template to an existing project and configure its release workflow.","x-speakeasy-group":"projects","x-speakeasy-name-override":"configureSource","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":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["repository"]},"gitRepository":{"type":"object","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},"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"}},"required":["mode","gitRepository"]},{"type":"object","properties":{"mode":{"type":"string","enum":["template"]},"targetNamespace":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-zA-Z0-9-]+$"},"templatePath":{"type":"string","enum":["examples/customer-models-ts","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"}},"required":["mode","targetNamespace","templatePath"]}]}}}},"responses":{"200":{"description":"Project source connected and GitHub Actions configured.","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/customer-models-ts","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"]}}}]}}}},"400":{"description":"Repository or template configuration is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Insufficient permission to update this project.","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"}}}},"503":{"description":"Template fork exists but is not ready yet.","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/customer-models-ts","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/customer-models-ts","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 production channel's current release. When deploymentId is provided, returns that deployment's effective release: its pin, or its followed channel's current 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":"Effective release retrieved successfully.","content":{"application/json":{"schema":{"nullable":true}}}},"404":{"description":"Project or effective 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}/customer-connections/models":{"put":{"operationId":"configureProjectCustomerModels","description":"Configure customer-owned model providers without requiring an application Release.","x-speakeasy-group":"projects","x-speakeasy-name-override":"configureCustomerModels","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/ConfigureCustomerModelsRequest"}}}},"responses":{"200":{"description":"Customer Models configured and its exact setup source materialized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerConnectionMaterialization"}}}},"403":{"description":"Insufficient permissions.","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}/customer-connections/keys":{"put":{"operationId":"configureProjectCustomerKey","description":"Enable customer-owned application encryption without requiring an application Release.","x-speakeasy-group":"projects","x-speakeasy-name-override":"configureCustomerKey","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":{"type":"object","properties":{"applicationEncryption":{"type":"boolean","enum":[true]}},"required":["applicationEncryption"],"additionalProperties":false}}}},"responses":{"200":{"description":"Customer Key configured and its exact setup source materialized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerConnectionMaterialization"}}}},"403":{"description":"Insufficient permissions.","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}/customer-connections/storage":{"put":{"operationId":"configureProjectCustomerStorage","description":"Enable customer-owned storage without requiring an application Release.","x-speakeasy-group":"projects","x-speakeasy-name-override":"configureCustomerStorage","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":{"type":"object","properties":{"access":{"type":"string","enum":["read-write"]}},"required":["access"],"additionalProperties":false}}}},"responses":{"200":{"description":"Customer Storage configured and its exact setup source materialized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerConnectionMaterialization"}}}},"403":{"description":"Insufficient permissions.","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/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/by-external-id":{"put":{"operationId":"ensureDeploymentGroupByExternalId","tags":["deployment-groups"],"summary":"Get or create a deployment group by project and external ID","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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/EnsureDeploymentGroupByExternalIdRequest"}}}},"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"}}}},"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"}}}}}},"get":{"operationId":"getDeploymentGroupByExternalId","tags":["deployment-groups"],"summary":"Get a deployment group by project and external ID","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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":100,"description":"Project ID or name. Optional for project-scoped API keys."},"required":false,"description":"Project ID or name. Optional for project-scoped API keys.","name":"project","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"},"required":true,"description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","name":"externalId","in":"query"}],"responses":{"200":{"description":"Deployment group returned successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentGroup"}}}},"404":{"description":"Project or 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/setup-links":{"post":{"operationId":"createSetupLink","tags":["setup-links"],"summary":"Create a customer setup link","description":"Ensures the Deployment Group identified by Project and external ID, then creates a replacement group-scoped setup link with exact captured sources.","x-speakeasy-group":"setupLinks","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":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSetupLinkRequest"}}}},"responses":{"200":{"description":"Customer environment ensured and setup link created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSetupLinkResponse"}}}},"400":{"description":"Customer environment or setup configuration is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Customer environment name or setup source conflicts","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}/external-id":{"put":{"operationId":"setDeploymentGroupExternalId","tags":["deployment-groups"],"summary":"Set or clear a deployment group's external ID","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":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetDeploymentGroupExternalIdRequest"}}}},"responses":{"200":{"description":"Deployment group external ID 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 external ID 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"}}}}}}},"/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/deployment-groups/{id}/ai/external":{"get":{"operationId":"getExternalAIBinding","tags":["deployment-groups"],"summary":"Get external AI connection state","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":"External AI connection state","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalAIBindingState"}}}},"403":{"description":"Insufficient permissions","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"}}}}}},"put":{"operationId":"putExternalAIBinding","tags":["deployment-groups"],"summary":"Connect or rotate an external AI provider key","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":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutExternalAIBindingRequest"}}}},"responses":{"200":{"description":"External AI connection verified and stored","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalAIBinding"}}}},"400":{"description":"The key is not valid for the selected provider","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment group not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"The group already has an active cloud AI source","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"Provider verification is temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"delete":{"operationId":"deleteExternalAIBinding","tags":["deployment-groups"],"summary":"Revoke the external AI connection","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":"External AI connection revoked"},"403":{"description":"Insufficient permissions","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/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","nullable":true,"minLength":1,"maxLength":63,"pattern":"^[a-z][a-z0-9-]*$","description":"Filter to releases promoted to this channel. Defaults to production."},"required":false,"description":"Filter to releases promoted to this channel. Defaults to production.","name":"channel","in":"query"},{"schema":{"type":"string","enum":["true","false"],"default":"false"},"required":false,"name":"allChannels","in":"query"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["project","rollout","createdBy"]},"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","createdBy"]},"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/releases/{id}/deployments":{"get":{"operationId":"listReleaseDeployments","description":"List the project's deployments with their rollout state relative to this release.","x-speakeasy-group":"releases","x-speakeasy-name-override":"listDeployments","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":{"$ref":"#/components/schemas/ReleaseRolloutState"},"description":"Filter deployments by rollout state"},"required":false,"description":"Filter deployments by rollout state","name":"state","in":"query"},{"schema":{"type":"string","description":"Filter by deployment group ID or name"},"required":false,"description":"Filter by deployment group ID or name","name":"deploymentGroup","in":"query"},{"schema":{"type":"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 release deployments.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReleaseDeploymentsResponse"}}}},"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/release-channels":{"get":{"operationId":"listReleaseChannels","summary":"List release channels","description":"List the release channels configured for a project.","x-speakeasy-group":"releaseChannels","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":true,"description":"Filter by project ID or name.","name":"project","in":"query","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}}],"responses":{"200":{"description":"Project release channels.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ReleaseChannel"}}},"required":["items"]}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createReleaseChannel","summary":"Create a release channel","description":"Create a release channel for a project.","x-speakeasy-group":"releaseChannels","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"},{"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"}}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"$ref":"#/components/schemas/ReleaseChannelName"},"releaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"}},"required":["name"],"additionalProperties":false}}}},"responses":{"201":{"description":"Channel created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReleaseChannel"}}}},"400":{"description":"Invalid release.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/release-channels/{name}/promote":{"post":{"operationId":"promoteRelease","x-speakeasy-group":"releases","x-speakeasy-name-override":"promote","parameters":[{"schema":{"$ref":"#/components/schemas/ReleaseChannelName"},"required":true,"name":"name","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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"}}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"releaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"expectedReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"}},"required":["releaseId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Release promoted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReleaseChannel"}}}},"404":{"description":"Project, channel, or release not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Channel changed concurrently.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/release-channels/{name}":{"delete":{"operationId":"deleteReleaseChannel","summary":"Delete a release channel","description":"Delete a release channel from a project.","x-speakeasy-group":"releaseChannels","x-speakeasy-name-override":"delete","parameters":[{"schema":{"$ref":"#/components/schemas/ReleaseChannelName"},"required":true,"name":"name","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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":{"204":{"description":"Channel deleted."},"400":{"description":"Reserved channel.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project or channel not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Channel is still followed by deployments.","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"},"operation":{"$ref":"#/components/schemas/DeploymentUpdateOperationSummary"}},"required":["message","operation"]}}}},"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}/release-channel":{"post":{"operationId":"setDeploymentReleaseChannel","x-speakeasy-group":"deployments","x-speakeasy-name-override":"setReleaseChannel","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":{"type":"object","properties":{"channel":{"$ref":"#/components/schemas/ReleaseChannelName"}},"required":["channel"],"additionalProperties":false}}}},"responses":{"200":{"description":"Deployment release channel updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Deployment"}}}},"400":{"description":"Channel release is unavailable for the deployment platform.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment or release channel not found.","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}/binding-token":{"post":{"operationId":"generateManagerBindingToken","description":"Generate a short-lived deployment-scoped token for resolving opted-in remote bindings through the currently assigned manager.","x-speakeasy-group":"managers","x-speakeasy-name-override":"generateManagerBindingToken","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":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateManagerBindingTokenRequest"}}}},"responses":{"200":{"description":"Remote Bindings token and assigned manager URL.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateManagerBindingTokenResponse"}}}},"403":{"description":"The caller cannot update the deployment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Assigned manager or deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"The assigned manager is offline.","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":"string","description":"Filter events to a single release."},"required":false,"description":"Filter events to a single release.","name":"releaseId","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/bootstrap":{"post":{"operationId":"bootstrapCommands","description":"Resolve a deployment's current manager and mint a five-minute command capability. Sender tokens can dispatch and observe commands only for this deployment. Receiver tokens can lease and complete commands only for the resolved Container or Daemon target.","x-speakeasy-group":"commands","x-speakeasy-name-override":"bootstrap","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandBootstrapRequest"}}}},"responses":{"200":{"description":"Manager connection details and a short-lived command capability.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandBootstrapResponse"}}}},"400":{"description":"Invalid request or deployment state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"401":{"description":"Authentication required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"The caller cannot operate this deployment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment, manager, or receiver target not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"422":{"description":"The selected resource cannot run an external receiver.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"The assigned manager is offline.","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"},{"schema":{"type":"string","enum":["alien-stack","models","keys","storage"]},"required":false,"name":"setupItem","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":{"setupItem":{"type":"string","enum":["alien-stack","models","keys","storage"]},"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":{"setupItem":{"type":"string","enum":["alien-stack","models","keys","storage"]},"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/operations/plugins":{"get":{"operationId":"listOperationsPlugins","description":"List available operations plugins (builtin + custom) for a project, with their operations and risk tiers.","x-speakeasy-group":"operations","x-speakeasy-name-override":"listPlugins","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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":"The operations plugin catalog.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListOperationsPluginsResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"publishOperationsPlugin","description":"Register a custom operations plugin whose bundle ZIP has already been uploaded to S3 (see POST /plugins/upload-url). Replaces any existing plugin of the same name in that project. New custom plugins are enabled by default.","x-speakeasy-group":"operations","x-speakeasy-name-override":"publishPlugin","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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"}}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishOperationsPluginRequest"}}}},"responses":{"201":{"description":"The plugin was published.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishOperationsPluginResponse"}}}},"400":{"description":"Invalid metadata.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"402":{"description":"Custom plugins require a higher plan tier.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/operations/plugins/upload-url":{"post":{"operationId":"createOperationsBundleUploadUrl","description":"Get a presigned S3 URL to upload a custom operations plugin bundle ZIP. Upload the ZIP with a PUT to the returned url (sending the given Content-Type), then call POST /plugins to register it.","x-speakeasy-group":"operations","x-speakeasy-name-override":"createBundleUploadUrl","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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"}}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationsBundleUploadUrlRequest"}}}},"responses":{"200":{"description":"A presigned upload URL for the bundle ZIP.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationsBundleUploadUrlResponse"}}}},"402":{"description":"Custom plugins require a higher plan tier.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"Bundle storage is not configured.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/operations/plugins/{name}/enabled":{"patch":{"operationId":"setOperationsPluginEnabled","description":"Enable or disable an operations plugin (builtin or custom) for a project. Only enabled plugins are baked into the operator image and can be invoked.","x-speakeasy-group":"operations","x-speakeasy-name-override":"setPluginEnabled","parameters":[{"schema":{"type":"string","description":"Plugin name."},"required":true,"description":"Plugin name.","name":"name","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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"}}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetOperationsPluginEnabledRequest"}}}},"responses":{"200":{"description":"The plugin's enabled state was updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetOperationsPluginEnabledResponse"}}}},"404":{"description":"No such plugin for this project.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/operations/policy":{"get":{"operationId":"getOperationsPolicy","description":"Get a project's per-command approval policy. Mirrors what the operator enforces: `plugin/operation` / `plugin/*` / `*` patterns → auto | manual.","x-speakeasy-group":"operations","x-speakeasy-name-override":"getPolicy","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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":"The approval policy rules and default.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationsPolicyResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"put":{"operationId":"updateOperationsPolicy","description":"Replace a project's per-command approval policy (full rule set). Patterns are `plugin/operation`, `plugin/*`, or `*`; each maps to auto | manual.","x-speakeasy-group":"operations","x-speakeasy-name-override":"updatePolicy","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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"}}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOperationsPolicyRequest"}}}},"responses":{"200":{"description":"The updated approval policy.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationsPolicyResponse"}}}},"400":{"description":"Invalid request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/operations/invoke":{"post":{"operationId":"invokeOperation","description":"Invoke a plugin operation against a deployment. Honors the project's per-command approval policy.","x-speakeasy-group":"operations","x-speakeasy-name-override":"invoke","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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"}}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvokeOperationRequest"}}}},"responses":{"200":{"description":"The operation was dispatched or queued for approval.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvokeOperationResponse"}}}},"402":{"description":"Custom plugins require a higher plan tier.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Caller may not create commands for this deployment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Plugin or 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/access-requests":{"post":{"operationId":"createAccessRequest","description":"Create a pending access request covering a remediation plan's commands. Awaits the engineer gate before it is queued for the operator.","x-speakeasy-group":"operations","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are 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":{"deploymentId":{"type":"string"},"remediationPlanId":{"type":"string"},"title":{"type":"string"},"reason":{"type":"string"},"commands":{"type":"array","items":{"type":"object","properties":{"command":{"type":"string","example":"kubernetes/get-pods"},"summary":{"type":"string","example":"List pods in the ingestion namespace"}},"required":["command","summary"]},"minItems":1}},"required":["deploymentId","remediationPlanId","title","commands"]}}}},"responses":{"201":{"description":"The created access request.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"deploymentId":{"type":"string"},"remediationPlanId":{"type":"string"},"title":{"type":"string"},"reason":{"type":"string","nullable":true},"commands":{"type":"array","items":{"type":"object","properties":{"command":{"type":"string","example":"kubernetes/get-pods"},"summary":{"type":"string","example":"List pods in the ingestion namespace"}},"required":["command","summary"]}},"status":{"type":"string","enum":["pending-approval","queued","customer-approved","expired","rejected"]},"approvedUntil":{"type":"string","nullable":true}},"required":["id","deploymentId","remediationPlanId","title","reason","commands","status","approvedUntil"]}}}},"404":{"description":"Deployment or remediation plan not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/access-requests/{id}/queue":{"post":{"operationId":"queueAccessRequest","description":"Engineer gate — approve a pending access request, queuing it for the operator to materialize. Records who queued it.","x-speakeasy-group":"operations","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":"The queued access request, with the customer approve command.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"deploymentId":{"type":"string"},"remediationPlanId":{"type":"string"},"title":{"type":"string"},"reason":{"type":"string","nullable":true},"commands":{"type":"array","items":{"type":"object","properties":{"command":{"type":"string","example":"kubernetes/get-pods"},"summary":{"type":"string","example":"List pods in the ingestion namespace"}},"required":["command","summary"]}},"status":{"type":"string","enum":["pending-approval","queued","customer-approved","expired","rejected"]},"approvedUntil":{"type":"string","nullable":true},"kubectlApprove":{"type":"string","nullable":true}},"required":["id","deploymentId","remediationPlanId","title","reason","commands","status","approvedUntil","kubectlApprove"]}}}},"404":{"description":"Access request not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Access request is not pending approval.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/access-requests/{id}/coordinates":{"get":{"operationId":"getAccessRequestCoordinates","description":"The customer's kubectl approve command for a queued access request, or null until the operator has materialized the grant CR and reported its coordinates. Polled by the Slack handler to update the access-plan card.","x-speakeasy-group":"operations","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":"The approve command (or null) and current status.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["pending-approval","queued","customer-approved","expired","rejected"]},"kubectlApprove":{"type":"string","nullable":true}},"required":["status","kubectlApprove"]}}}},"404":{"description":"Access request not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/access-requests/pending":{"get":{"operationId":"listPendingAccessRequests","description":"Operator-facing: the queued access requests for a deployment, for the access-request sync loop to materialize as grant CRs.","x-speakeasy-ignore":true,"parameters":[{"schema":{"type":"string"},"required":true,"name":"deploymentId","in":"query"}],"responses":{"200":{"description":"Queued access requests for the deployment.","content":{"application/json":{"schema":{"type":"object","properties":{"requests":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"reason":{"type":"string","nullable":true},"commands":{"type":"array","items":{"type":"object","properties":{"command":{"type":"string","example":"kubernetes/get-pods"},"summary":{"type":"string","example":"List pods in the ingestion namespace"}},"required":["command","summary"]}}},"required":["id","title","reason","commands"]}}},"required":["requests"]}}}},"403":{"description":"Caller is not the deployment's manager runtime.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/access-requests/materialized":{"post":{"operationId":"reportMaterializedAccessRequests","description":"Operator-facing: record the namespace + CRD plural the operator materialized the grant CRs in, so the control plane can render the customer's exact kubectl approve command.","x-speakeasy-ignore":true,"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"deploymentId":{"type":"string"},"requestIds":{"type":"array","items":{"type":"string"}},"namespace":{"type":"string","minLength":1},"resourcePlural":{"type":"string","minLength":1}},"required":["deploymentId","requestIds","namespace","resourcePlural"]}}}},"responses":{"200":{"description":"Number of requests updated with CR coordinates.","content":{"application/json":{"schema":{"type":"object","properties":{"recorded":{"type":"number"}},"required":["recorded"]}}}},"403":{"description":"Caller is not the deployment's manager runtime.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/access-requests/approvals":{"post":{"operationId":"reportAccessApprovals","description":"Operator-facing: record the customer's approval windows reported back by the sync loop. Moves each request to customer-approved and resumes the investigation to dispatch commands.","x-speakeasy-ignore":true,"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"deploymentId":{"type":"string"},"approvals":{"type":"array","items":{"type":"object","properties":{"requestId":{"type":"string"},"approvedUntil":{"type":"string"}},"required":["requestId","approvedUntil"]}}},"required":["deploymentId","approvals"]}}}},"responses":{"200":{"description":"Number of approvals recorded.","content":{"application/json":{"schema":{"type":"object","properties":{"recorded":{"type":"number"}},"required":["recorded"]}}}},"403":{"description":"Caller is not the deployment's manager runtime.","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/renew":{"post":{"operationId":"syncRenew","x-speakeasy-group":"sync","x-speakeasy-name-override":"renew","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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/SyncRenewRequest"}}}},"responses":{"200":{"description":"Renewal processed. Inspect `leases` for per-deployment outcomes; a lost lease is reported there rather than failing the whole batch.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"True when every requested deployment was renewed."},"leases":{"type":"array","items":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"renewed":{"type":"boolean","description":"False when this session no longer holds a live lease."},"leaseExpiresAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["deploymentId","renewed","leaseExpiresAt"]},"description":"Per-deployment renewal outcome."}},"required":["success","leases"]}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"The session no longer owns the deployment.","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","ai"]},"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","ai"]},"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","ai"]},"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 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"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"availability":{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]},"region":{"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":["availability","region","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsBedrock"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"availability":{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]},"location":{"type":"string"},"project":{"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":["availability","location","project","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpVertex"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"accountName":{"type":"string"},"availability":{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]},"endpoint":{"type":"string","nullable":true},"location":{"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"]}},"required":["accountName","availability","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureFoundry"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"availability":{"oneOf":[{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]},{"nullable":true}]},"provider":{"type":"string","description":"The BYO-key provider serving this binding (e.g. \"openai\"). Used on the Local\nplatform, where the app brings its own provider key instead of an ambient cloud."},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["provider","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["external"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["ai"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"type":"object","properties":{"data":{"type":"object","properties":{"enabled":{"type":"boolean"},"keyArn":{"type":"string"},"keySpec":{"type":"string"},"keyState":{"type":"string"},"keyUsage":{"type":"string"},"status":{"type":"object","properties":{"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true}},"required":["health","lifecycle"]}},"required":["enabled","keyArn","keySpec","keyState","keyUsage","status"]},"provider":{"type":"string","enum":["aws-kms"]}},"required":["data","provider"]},{"type":"object","properties":{"data":{"type":"object","properties":{"algorithm":{"type":"string","nullable":true},"cryptoKeyName":{"type":"string"},"primaryState":{"type":"string","nullable":true},"primaryVersion":{"type":"string","nullable":true},"purpose":{"type":"string"},"status":{"type":"object","properties":{"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true}},"required":["health","lifecycle"]}},"required":["cryptoKeyName","purpose","status"]},"provider":{"type":"string","enum":["gcp-cloud-kms"]}},"required":["data","provider"]},{"type":"object","properties":{"data":{"type":"object","properties":{"enabled":{"type":"boolean","nullable":true},"keyId":{"type":"string"},"keyOperations":{"type":"array","items":{"type":"string"}},"keyType":{"type":"string"},"recoveryLevel":{"type":"string","nullable":true},"status":{"type":"object","properties":{"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true}},"required":["health","lifecycle"]}},"required":["keyId","keyOperations","keyType","status"]},"provider":{"type":"string","enum":["azure-key-vault"]}},"required":["data","provider"]}]},"resourceType":{"type":"string","enum":["key"]}},"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/aws-virtual-keys":{"get":{"operationId":"listAwsVirtualKeys","parameters":[{"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":"AWS Virtual Keys in a project","content":{"application/json":{"schema":{"type":"object","properties":{"virtualKeys":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"projectId":{"type":"string"},"status":{"type":"string","enum":["provisioning","ready","action-required","decommissioning","deletion-pending","deleted","failed"]},"externalKeyId":{"type":"string"},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"customKeyStoreId":{"type":"string","nullable":true},"kmsKeyArn":{"type":"string","nullable":true},"alias":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"deletionWindowDays":{"type":"integer"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"canaryPassedAt":{"type":"string","nullable":true,"format":"date-time"},"deletionScheduledAt":{"type":"string","nullable":true,"format":"date-time"},"finalDeletionObservedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","status","externalKeyId","awsAccountId","awsRegion","customKeyStoreId","kmsKeyArn","alias","description","deletionWindowDays","tags","observedAt","canaryPassedAt","deletionScheduledAt","finalDeletionObservedAt","createdAt","updatedAt"]}}},"required":["virtualKeys"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createAwsVirtualKey","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"selector":{"oneOf":[{"type":"object","properties":{"externalId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"}},"required":["externalId"],"additionalProperties":false},{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"}},"required":["deploymentId"],"additionalProperties":false}]},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"idempotencyKey":{"type":"string","minLength":1,"maxLength":128},"alias":{"type":"string","nullable":true,"minLength":1,"maxLength":256},"description":{"type":"string","nullable":true,"maxLength":8192},"deletionWindowDays":{"type":"integer","minimum":7,"maximum":30,"default":30},"tags":{"type":"object","additionalProperties":{"type":"string","maxLength":256},"default":{}}},"required":["selector","awsAccountId","awsRegion","idempotencyKey"]}}}},"responses":{"200":{"description":"Created or resumed Virtual Key","content":{"application/json":{"schema":{"type":"object","properties":{"virtualKey":{"type":"object","properties":{"id":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"projectId":{"type":"string"},"status":{"type":"string","enum":["provisioning","ready","action-required","decommissioning","deletion-pending","deleted","failed"]},"externalKeyId":{"type":"string"},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"customKeyStoreId":{"type":"string","nullable":true},"kmsKeyArn":{"type":"string","nullable":true},"alias":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"deletionWindowDays":{"type":"integer"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"canaryPassedAt":{"type":"string","nullable":true,"format":"date-time"},"deletionScheduledAt":{"type":"string","nullable":true,"format":"date-time"},"finalDeletionObservedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","status","externalKeyId","awsAccountId","awsRegion","customKeyStoreId","kmsKeyArn","alias","description","deletionWindowDays","tags","observedAt","canaryPassedAt","deletionScheduledAt","finalDeletionObservedAt","createdAt","updatedAt"]},"setup":{"type":"object","properties":{"proxyUriEndpoint":{"type":"string","format":"uri"},"proxyUriPath":{"type":"string"},"accessKeyId":{"type":"string"},"secretAccessKey":{"type":"string"},"externalKeyId":{"type":"string"}},"required":["proxyUriEndpoint","proxyUriPath","accessKeyId","secretAccessKey","externalKeyId"]}},"required":["virtualKey","setup"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project or Enterprise Key not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Idempotency conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"Gateway unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/aws-virtual-keys/{id}/rotate-credential":{"post":{"operationId":"rotateAwsVirtualKeyCredential","parameters":[{"schema":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"required":true,"description":"Unique identifier for the aws virtual key.","name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"generation":{"type":"integer","minimum":2}},"required":["generation"]}}}},"responses":{"200":{"description":"The resumable XKS proxy credential rotation bundle","content":{"application/json":{"schema":{"type":"object","properties":{"virtualKey":{"type":"object","properties":{"id":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"projectId":{"type":"string"},"status":{"type":"string","enum":["provisioning","ready","action-required","decommissioning","deletion-pending","deleted","failed"]},"externalKeyId":{"type":"string"},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"customKeyStoreId":{"type":"string","nullable":true},"kmsKeyArn":{"type":"string","nullable":true},"alias":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"deletionWindowDays":{"type":"integer"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"canaryPassedAt":{"type":"string","nullable":true,"format":"date-time"},"deletionScheduledAt":{"type":"string","nullable":true,"format":"date-time"},"finalDeletionObservedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","status","externalKeyId","awsAccountId","awsRegion","customKeyStoreId","kmsKeyArn","alias","description","deletionWindowDays","tags","observedAt","canaryPassedAt","deletionScheduledAt","finalDeletionObservedAt","createdAt","updatedAt"]},"setup":{"type":"object","properties":{"proxyUriEndpoint":{"type":"string","format":"uri"},"proxyUriPath":{"type":"string"},"accessKeyId":{"type":"string"},"secretAccessKey":{"type":"string"},"externalKeyId":{"type":"string"}},"required":["proxyUriEndpoint","proxyUriPath","accessKeyId","secretAccessKey","externalKeyId"]}},"required":["virtualKey","setup"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Virtual Key not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Virtual Key cannot begin rotation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/aws-virtual-keys/{id}/restore":{"post":{"operationId":"restoreAwsVirtualKey","parameters":[{"schema":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"required":true,"description":"Unique identifier for the aws virtual key.","name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"kmsKeyArn":{"type":"string","pattern":"^arn:(?:aws|aws-us-gov):kms:[a-z0-9-]+:\\d{12}:key\\/[A-Za-z0-9-]+$"}},"required":["kmsKeyArn"]}}}},"responses":{"200":{"description":"Virtual Key awaiting a successful AWS XKS canary after restore","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"projectId":{"type":"string"},"status":{"type":"string","enum":["provisioning","ready","action-required","decommissioning","deletion-pending","deleted","failed"]},"externalKeyId":{"type":"string"},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"customKeyStoreId":{"type":"string","nullable":true},"kmsKeyArn":{"type":"string","nullable":true},"alias":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"deletionWindowDays":{"type":"integer"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"canaryPassedAt":{"type":"string","nullable":true,"format":"date-time"},"deletionScheduledAt":{"type":"string","nullable":true,"format":"date-time"},"finalDeletionObservedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","status","externalKeyId","awsAccountId","awsRegion","customKeyStoreId","kmsKeyArn","alias","description","deletionWindowDays","tags","observedAt","canaryPassedAt","deletionScheduledAt","finalDeletionObservedAt","createdAt","updatedAt"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Virtual Key not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Virtual Key cannot be restored","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/aws-virtual-keys/{id}/finalize-deletion":{"post":{"operationId":"finalizeAwsVirtualKeyDeletion","parameters":[{"schema":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"required":true,"description":"Unique identifier for the aws virtual key.","name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"kmsKeyArn":{"type":"string","pattern":"^arn:(?:aws|aws-us-gov):kms:[a-z0-9-]+:\\d{12}:key\\/[A-Za-z0-9-]+$"}},"required":["kmsKeyArn"]}}}},"responses":{"200":{"description":"Virtual Key whose final AWS KMS deletion was observed","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"projectId":{"type":"string"},"status":{"type":"string","enum":["provisioning","ready","action-required","decommissioning","deletion-pending","deleted","failed"]},"externalKeyId":{"type":"string"},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"customKeyStoreId":{"type":"string","nullable":true},"kmsKeyArn":{"type":"string","nullable":true},"alias":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"deletionWindowDays":{"type":"integer"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"canaryPassedAt":{"type":"string","nullable":true,"format":"date-time"},"deletionScheduledAt":{"type":"string","nullable":true,"format":"date-time"},"finalDeletionObservedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","status","externalKeyId","awsAccountId","awsRegion","customKeyStoreId","kmsKeyArn","alias","description","deletionWindowDays","tags","observedAt","canaryPassedAt","deletionScheduledAt","finalDeletionObservedAt","createdAt","updatedAt"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Virtual Key not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Virtual Key deletion cannot be finalized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/aws-virtual-keys/{id}/decommission":{"post":{"operationId":"decommissionAwsVirtualKey","parameters":[{"schema":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"required":true,"description":"Unique identifier for the aws virtual key.","name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"kmsKeyArn":{"type":"string","pattern":"^arn:(?:aws|aws-us-gov):kms:[a-z0-9-]+:\\d{12}:key\\/[A-Za-z0-9-]+$"},"deletionScheduledAt":{"type":"string","format":"date-time"}},"required":["kmsKeyArn","deletionScheduledAt"]}}}},"responses":{"200":{"description":"Virtual Key with AWS deletion scheduled","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"projectId":{"type":"string"},"status":{"type":"string","enum":["provisioning","ready","action-required","decommissioning","deletion-pending","deleted","failed"]},"externalKeyId":{"type":"string"},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"customKeyStoreId":{"type":"string","nullable":true},"kmsKeyArn":{"type":"string","nullable":true},"alias":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"deletionWindowDays":{"type":"integer"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"canaryPassedAt":{"type":"string","nullable":true,"format":"date-time"},"deletionScheduledAt":{"type":"string","nullable":true,"format":"date-time"},"finalDeletionObservedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","status","externalKeyId","awsAccountId","awsRegion","customKeyStoreId","kmsKeyArn","alias","description","deletionWindowDays","tags","observedAt","canaryPassedAt","deletionScheduledAt","finalDeletionObservedAt","createdAt","updatedAt"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Virtual Key not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"AWS key does not match","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/aws-virtual-keys/{id}":{"get":{"operationId":"getAwsVirtualKey","parameters":[{"schema":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"required":true,"description":"Unique identifier for the aws virtual key.","name":"id","in":"path"}],"responses":{"200":{"description":"AWS Virtual Key","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"projectId":{"type":"string"},"status":{"type":"string","enum":["provisioning","ready","action-required","decommissioning","deletion-pending","deleted","failed"]},"externalKeyId":{"type":"string"},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"customKeyStoreId":{"type":"string","nullable":true},"kmsKeyArn":{"type":"string","nullable":true},"alias":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"deletionWindowDays":{"type":"integer"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"canaryPassedAt":{"type":"string","nullable":true,"format":"date-time"},"deletionScheduledAt":{"type":"string","nullable":true,"format":"date-time"},"finalDeletionObservedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","status","externalKeyId","awsAccountId","awsRegion","customKeyStoreId","kmsKeyArn","alias","description","deletionWindowDays","tags","observedAt","canaryPassedAt","deletionScheduledAt","finalDeletionObservedAt","createdAt","updatedAt"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Virtual Key not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/aws-virtual-keys/{id}/continue":{"post":{"operationId":"continueAwsVirtualKey","parameters":[{"schema":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"required":true,"description":"Unique identifier for the aws virtual key.","name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"customKeyStoreId":{"type":"string","pattern":"^cks-[A-Za-z0-9]+$"},"kmsKeyArn":{"type":"string","pattern":"^arn:(?:aws|aws-us-gov):kms:[a-z0-9-]+:\\d{12}:key\\/[A-Za-z0-9-]+$"}},"required":["customKeyStoreId","kmsKeyArn"]}}}},"responses":{"200":{"description":"Updated AWS setup facts","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"projectId":{"type":"string"},"status":{"type":"string","enum":["provisioning","ready","action-required","decommissioning","deletion-pending","deleted","failed"]},"externalKeyId":{"type":"string"},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"customKeyStoreId":{"type":"string","nullable":true},"kmsKeyArn":{"type":"string","nullable":true},"alias":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"deletionWindowDays":{"type":"integer"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"canaryPassedAt":{"type":"string","nullable":true,"format":"date-time"},"deletionScheduledAt":{"type":"string","nullable":true,"format":"date-time"},"finalDeletionObservedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","status","externalKeyId","awsAccountId","awsRegion","customKeyStoreId","kmsKeyArn","alias","description","deletionWindowDays","tags","observedAt","canaryPassedAt","deletionScheduledAt","finalDeletionObservedAt","createdAt","updatedAt"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Virtual Key not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Setup facts conflict","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","project.encryption","project.ai-gateway","project.remote-bindings"],"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,"pattern":"^(?:[0-9a-fA-F]{40}|[0-9a-fA-F]{64})$","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,"description":"The author identity recorded by Git. This is not guaranteed to be an RFC-valid email address.","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."},"projectCapabilities":{"type":"object","nullable":true,"properties":{"schemaVersion":{"type":"number","enum":[1]},"capabilities":{"type":"object","properties":{"deployments":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]}},"required":["enabled"],"additionalProperties":false},"keys":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]},"applicationEncryption":{"type":"boolean","enum":[true]}},"required":["enabled","applicationEncryption"],"additionalProperties":false},"models":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]},"allowedProviders":{"type":"array","items":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic","databricks","openai"]},"minItems":1,"maxItems":6},"requirements":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string","minLength":1,"maxLength":256},"clientApis":{"type":"array","items":{"type":"string","enum":["openai-chat","openai-responses","anthropic-messages"]},"minItems":1,"maxItems":3},"required":{"type":"boolean"}},"required":["publicModelId","clientApis","required"],"additionalProperties":false},"maxItems":100}},"required":["enabled","allowedProviders","requirements"],"additionalProperties":false},"buckets":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]},"access":{"type":"string","enum":["read-write"]}},"required":["enabled","access"],"additionalProperties":false},"registry":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]},"repositories":{"type":"array","items":{"type":"string","minLength":1,"maxLength":128},"maxItems":100},"credentialPolicy":{"type":"string","enum":["pull-only","push-and-pull"]}},"required":["enabled","repositories","credentialPolicy"],"additionalProperties":false}},"additionalProperties":false}},"default":null,"required":["schemaVersion","capabilities"],"additionalProperties":false,"description":"Capabilities this Project may offer through setup links."},"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","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","nullable":true},"stack":{"allOf":[{"$ref":"#/components/schemas/StackByPlatform"}],"nullable":true}},"required":["id","version","stack"]},"supportedPlatforms":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","machines","local","test"],"description":"Represents the target cloud platform."}},"setupItems":{"type":"array","items":{"type":"string","enum":["deployment","models","keys","bucket","registry"]}},"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"}},"setupPackagesStatus":{"type":"string","enum":["preparing","ready","failed"],"description":"Whether at least one complete automated setup package is ready across all selected setup items."}},"required":["activeRelease","supportedPlatforms","setupItems","visiblePackageTypes","visibleSetupMethods","setupPackagesStatus"]},"StackByPlatform":{"type":"object","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"]},"ProjectCapabilities":{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"capabilities":{"type":"object","properties":{"deployments":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]}},"required":["enabled"],"additionalProperties":false},"keys":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]},"applicationEncryption":{"type":"boolean","enum":[true]}},"required":["enabled","applicationEncryption"],"additionalProperties":false},"models":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]},"allowedProviders":{"type":"array","items":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic","databricks","openai"]},"minItems":1,"maxItems":6},"requirements":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string","minLength":1,"maxLength":256},"clientApis":{"type":"array","items":{"type":"string","enum":["openai-chat","openai-responses","anthropic-messages"]},"minItems":1,"maxItems":3},"required":{"type":"boolean"}},"required":["publicModelId","clientApis","required"],"additionalProperties":false},"maxItems":100}},"required":["enabled","allowedProviders","requirements"],"additionalProperties":false},"buckets":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]},"access":{"type":"string","enum":["read-write"]}},"required":["enabled","access"],"additionalProperties":false},"registry":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]},"repositories":{"type":"array","items":{"type":"string","minLength":1,"maxLength":128},"maxItems":100},"credentialPolicy":{"type":"string","enum":["pull-only","push-and-pull"]}},"required":["enabled","repositories","credentialPolicy"],"additionalProperties":false}},"additionalProperties":false}},"required":["schemaVersion","capabilities"],"additionalProperties":false},"CapabilityMaterialization":{"type":"object","properties":{"projectCapabilities":{"$ref":"#/components/schemas/ProjectCapabilities"},"source":{"type":"object","properties":{"definitionId":{"type":"string","enum":["customer-ai","customer-key","customer-storage","customer-registry"]},"definitionVersion":{"type":"string"},"releaseId":{"type":"string"}},"required":["definitionId","definitionVersion","releaseId"]},"packages":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["cloudformation","terraform"]},"status":{"type":"string","enum":["pending","building","ready","failed","canceled"]}},"required":["type","status"]}}},"required":["projectCapabilities","source","packages"]},"ConfigureModelsRequest":{"type":"object","properties":{"allowedProviders":{"type":"array","items":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic","databricks","openai"]},"minItems":1,"maxItems":6},"requirements":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string","minLength":1,"maxLength":256},"clientApis":{"type":"array","items":{"type":"string","enum":["openai-chat","openai-responses","anthropic-messages"]},"minItems":1,"maxItems":3},"required":{"type":"boolean"}},"required":["publicModelId","clientApis","required"],"additionalProperties":false},"maxItems":100}},"required":["allowedProviders","requirements"],"additionalProperties":false},"ProjectCapabilityOverview":{"type":"object","properties":{"generatedAt":{"type":"string","format":"date-time"},"configurationStatus":{"type":"string","enum":["valid","invalid"]},"summary":{"type":"object","properties":{"groups":{"type":"integer","minimum":0},"capabilities":{"type":"object","properties":{"models":{"type":"object","properties":{"enabled":{"type":"boolean"},"connected":{"type":"integer","minimum":0},"settingUp":{"type":"integer","minimum":0},"needsAttention":{"type":"integer","minimum":0},"revoked":{"type":"integer","minimum":0},"notConnected":{"type":"integer","minimum":0}},"required":["enabled","connected","settingUp","needsAttention","revoked","notConnected"]},"keys":{"type":"object","properties":{"enabled":{"type":"boolean"},"connected":{"type":"integer","minimum":0},"settingUp":{"type":"integer","minimum":0},"needsAttention":{"type":"integer","minimum":0},"revoked":{"type":"integer","minimum":0},"notConnected":{"type":"integer","minimum":0}},"required":["enabled","connected","settingUp","needsAttention","revoked","notConnected"]},"buckets":{"type":"object","properties":{"enabled":{"type":"boolean"},"connected":{"type":"integer","minimum":0},"settingUp":{"type":"integer","minimum":0},"needsAttention":{"type":"integer","minimum":0},"revoked":{"type":"integer","minimum":0},"notConnected":{"type":"integer","minimum":0}},"required":["enabled","connected","settingUp","needsAttention","revoked","notConnected"]},"registry":{"type":"object","properties":{"enabled":{"type":"boolean"},"connected":{"type":"integer","minimum":0},"settingUp":{"type":"integer","minimum":0},"needsAttention":{"type":"integer","minimum":0},"revoked":{"type":"integer","minimum":0},"notConnected":{"type":"integer","minimum":0}},"required":["enabled","connected","settingUp","needsAttention","revoked","notConnected"]}},"required":["models","keys","buckets","registry"]}},"required":["groups","capabilities"]},"groups":{"type":"array","items":{"type":"object","properties":{"deploymentGroupId":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"name":{"type":"string"},"externalId":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"},"capabilities":{"type":"object","properties":{"models":{"type":"object","properties":{"capability":{"type":"string","enum":["models","keys","buckets","registry"]},"enabled":{"type":"boolean"},"state":{"type":"string","enum":["not-connected","setting-up","connected","needs-attention","revoked"]},"deploymentId":{"type":"string","nullable":true,"pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"observation":{"type":"object","nullable":true,"properties":{"provider":{"type":"string","nullable":true},"platform":{"type":"string","nullable":true,"enum":["aws","gcp","azure","local","kubernetes","machines","test",null]},"resourceId":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"account":{"type":"string","nullable":true},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"stale":{"type":"boolean"},"partial":{"type":"boolean"},"health":{"type":"string","nullable":true,"enum":["unknown","healthy","degraded","unhealthy",null]},"lifecycle":{"type":"string","nullable":true},"message":{"type":"string","nullable":true}},"required":["provider","platform","resourceId","location","account","observedAt","stale","partial","health","lifecycle","message"]},"modelCoverage":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string"},"required":{"type":"boolean"},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockerCodes":{"type":"array","items":{"type":"string"}},"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"accessObservedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["publicModelId","required","availability","blockerCodes","accessTest","accessObservedAt"]}},"directProvider":{"type":"object","properties":{"provider":{"type":"string","enum":["anthropic","databricks","openai"]},"providerEndpoint":{"type":"string","nullable":true},"keyFingerprint":{"type":"string"},"availableProviderModelIds":{"type":"array","items":{"type":"string"}},"verifiedAt":{"type":"string","format":"date-time"}},"required":["provider","providerEndpoint","keyFingerprint","availableProviderModelIds","verifiedAt"]},"root":{"type":"object","properties":{"state":{"type":"string","enum":["pending","ready","revoked"]},"createdAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["state","createdAt"]},"registry":{"type":"object","properties":{"repositories":{"type":"integer","minimum":0},"credentials":{"type":"integer","minimum":0},"credentialPolicy":{"type":"string","enum":["pull-only","push-and-pull","mixed","none"]},"lastVerifiedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["repositories","credentials","credentialPolicy","lastVerifiedAt"]}},"required":["capability","enabled","state","deploymentId","observation"]},"keys":{"type":"object","properties":{"capability":{"type":"string","enum":["models","keys","buckets","registry"]},"enabled":{"type":"boolean"},"state":{"type":"string","enum":["not-connected","setting-up","connected","needs-attention","revoked"]},"deploymentId":{"type":"string","nullable":true,"pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"observation":{"type":"object","nullable":true,"properties":{"provider":{"type":"string","nullable":true},"platform":{"type":"string","nullable":true,"enum":["aws","gcp","azure","local","kubernetes","machines","test",null]},"resourceId":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"account":{"type":"string","nullable":true},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"stale":{"type":"boolean"},"partial":{"type":"boolean"},"health":{"type":"string","nullable":true,"enum":["unknown","healthy","degraded","unhealthy",null]},"lifecycle":{"type":"string","nullable":true},"message":{"type":"string","nullable":true}},"required":["provider","platform","resourceId","location","account","observedAt","stale","partial","health","lifecycle","message"]},"modelCoverage":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string"},"required":{"type":"boolean"},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockerCodes":{"type":"array","items":{"type":"string"}},"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"accessObservedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["publicModelId","required","availability","blockerCodes","accessTest","accessObservedAt"]}},"directProvider":{"type":"object","properties":{"provider":{"type":"string","enum":["anthropic","databricks","openai"]},"providerEndpoint":{"type":"string","nullable":true},"keyFingerprint":{"type":"string"},"availableProviderModelIds":{"type":"array","items":{"type":"string"}},"verifiedAt":{"type":"string","format":"date-time"}},"required":["provider","providerEndpoint","keyFingerprint","availableProviderModelIds","verifiedAt"]},"root":{"type":"object","properties":{"state":{"type":"string","enum":["pending","ready","revoked"]},"createdAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["state","createdAt"]},"registry":{"type":"object","properties":{"repositories":{"type":"integer","minimum":0},"credentials":{"type":"integer","minimum":0},"credentialPolicy":{"type":"string","enum":["pull-only","push-and-pull","mixed","none"]},"lastVerifiedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["repositories","credentials","credentialPolicy","lastVerifiedAt"]}},"required":["capability","enabled","state","deploymentId","observation"]},"buckets":{"type":"object","properties":{"capability":{"type":"string","enum":["models","keys","buckets","registry"]},"enabled":{"type":"boolean"},"state":{"type":"string","enum":["not-connected","setting-up","connected","needs-attention","revoked"]},"deploymentId":{"type":"string","nullable":true,"pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"observation":{"type":"object","nullable":true,"properties":{"provider":{"type":"string","nullable":true},"platform":{"type":"string","nullable":true,"enum":["aws","gcp","azure","local","kubernetes","machines","test",null]},"resourceId":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"account":{"type":"string","nullable":true},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"stale":{"type":"boolean"},"partial":{"type":"boolean"},"health":{"type":"string","nullable":true,"enum":["unknown","healthy","degraded","unhealthy",null]},"lifecycle":{"type":"string","nullable":true},"message":{"type":"string","nullable":true}},"required":["provider","platform","resourceId","location","account","observedAt","stale","partial","health","lifecycle","message"]},"modelCoverage":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string"},"required":{"type":"boolean"},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockerCodes":{"type":"array","items":{"type":"string"}},"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"accessObservedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["publicModelId","required","availability","blockerCodes","accessTest","accessObservedAt"]}},"directProvider":{"type":"object","properties":{"provider":{"type":"string","enum":["anthropic","databricks","openai"]},"providerEndpoint":{"type":"string","nullable":true},"keyFingerprint":{"type":"string"},"availableProviderModelIds":{"type":"array","items":{"type":"string"}},"verifiedAt":{"type":"string","format":"date-time"}},"required":["provider","providerEndpoint","keyFingerprint","availableProviderModelIds","verifiedAt"]},"root":{"type":"object","properties":{"state":{"type":"string","enum":["pending","ready","revoked"]},"createdAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["state","createdAt"]},"registry":{"type":"object","properties":{"repositories":{"type":"integer","minimum":0},"credentials":{"type":"integer","minimum":0},"credentialPolicy":{"type":"string","enum":["pull-only","push-and-pull","mixed","none"]},"lastVerifiedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["repositories","credentials","credentialPolicy","lastVerifiedAt"]}},"required":["capability","enabled","state","deploymentId","observation"]},"registry":{"type":"object","properties":{"capability":{"type":"string","enum":["models","keys","buckets","registry"]},"enabled":{"type":"boolean"},"state":{"type":"string","enum":["not-connected","setting-up","connected","needs-attention","revoked"]},"deploymentId":{"type":"string","nullable":true,"pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"observation":{"type":"object","nullable":true,"properties":{"provider":{"type":"string","nullable":true},"platform":{"type":"string","nullable":true,"enum":["aws","gcp","azure","local","kubernetes","machines","test",null]},"resourceId":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"account":{"type":"string","nullable":true},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"stale":{"type":"boolean"},"partial":{"type":"boolean"},"health":{"type":"string","nullable":true,"enum":["unknown","healthy","degraded","unhealthy",null]},"lifecycle":{"type":"string","nullable":true},"message":{"type":"string","nullable":true}},"required":["provider","platform","resourceId","location","account","observedAt","stale","partial","health","lifecycle","message"]},"modelCoverage":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string"},"required":{"type":"boolean"},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockerCodes":{"type":"array","items":{"type":"string"}},"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"accessObservedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["publicModelId","required","availability","blockerCodes","accessTest","accessObservedAt"]}},"directProvider":{"type":"object","properties":{"provider":{"type":"string","enum":["anthropic","databricks","openai"]},"providerEndpoint":{"type":"string","nullable":true},"keyFingerprint":{"type":"string"},"availableProviderModelIds":{"type":"array","items":{"type":"string"}},"verifiedAt":{"type":"string","format":"date-time"}},"required":["provider","providerEndpoint","keyFingerprint","availableProviderModelIds","verifiedAt"]},"root":{"type":"object","properties":{"state":{"type":"string","enum":["pending","ready","revoked"]},"createdAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["state","createdAt"]},"registry":{"type":"object","properties":{"repositories":{"type":"integer","minimum":0},"credentials":{"type":"integer","minimum":0},"credentialPolicy":{"type":"string","enum":["pull-only","push-and-pull","mixed","none"]},"lastVerifiedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["repositories","credentials","credentialPolicy","lastVerifiedAt"]}},"required":["capability","enabled","state","deploymentId","observation"]}},"required":["models","keys","buckets","registry"]}},"required":["deploymentGroupId","name","externalId","createdAt","capabilities"]}}},"required":["generatedAt","configurationStatus","summary","groups"]},"RemoteBindingsExternalAccessResponse":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"resourceId":{"type":"string","minLength":1},"accessToken":{"type":"string"},"expiresIn":{"type":"number","nullable":true},"tokenType":{"type":"string","enum":["Bearer"]},"managerUrl":{"type":"string","format":"uri"}},"required":["deploymentId","resourceId","accessToken","expiresIn","tokenType","managerUrl"]},"RemoteBindingsExternalAccessRequest":{"type":"object","properties":{"externalId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"},"capability":{"type":"string","enum":["storage"]}},"required":["externalId","capability"],"additionalProperties":false},"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"},"externalId":{"type":"string","nullable":true,"minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"},"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","externalId","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"},"externalId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"},"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"]},"EnsureDeploymentGroupByExternalIdRequest":{"type":"object","properties":{"externalId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"},"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":["externalId","name","project"]},"CreateSetupLinkResponse":{"allOf":[{"$ref":"#/components/schemas/CreateDeploymentGroupTokenResponse"},{"type":"object","properties":{"deploymentGroup":{"$ref":"#/components/schemas/DeploymentGroup"}},"required":["deploymentGroup"]}]},"CreateDeploymentGroupTokenResponse":{"type":"object","properties":{"token":{"type":"string","description":"The API key token"},"deploymentLink":{"type":"string","description":"Formatted deployment link"}},"required":["token","deploymentLink"]},"CreateSetupLinkRequest":{"allOf":[{"$ref":"#/components/schemas/EnsureDeploymentGroupByExternalIdRequest"},{"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"},"setupItems":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentSetupItemSelection"},"maxItems":8,"description":"Customer infrastructure to include. The server snapshots its exact reviewed sources."},"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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"]},"DeploymentSetupItemSelection":{"type":"object","properties":{"item":{"type":"string","enum":["deployment","models","keys","bucket","registry"]},"required":{"type":"boolean"},"releaseChannel":{"type":"string","minLength":1,"maxLength":63}},"required":["item","required"],"additionalProperties":false},"StackInputValuesRequest":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/StackInputValueRequest"},"default":{}},"StackInputValueRequest":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"type":"string"}}]},"ProjectIDOrNameQueryParam":{"type":"string","maxLength":100,"description":"Filter by project ID or name."},"SetDeploymentGroupExternalIdRequest":{"type":"object","properties":{"externalId":{"type":"string","nullable":true,"minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"}},"required":["externalId"]},"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"}}},"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"},"setupItems":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentSetupItemSelection"},"maxItems":8,"description":"Customer infrastructure to include. The server snapshots its exact reviewed sources."},"inputValues":{"$ref":"#/components/schemas/StackInputValuesRequest"}},"required":["deploymentSetupConfig"]},"CreateFirstPartyDeploymentSessionResponse":{"type":"object","properties":{"token":{"type":"string","description":"The deployment-group session token"}},"required":["token"]},"ExternalAIBindingState":{"type":"object","properties":{"binding":{"$ref":"#/components/schemas/ExternalAIBinding"}},"required":["binding"]},"ExternalAIBinding":{"type":"object","nullable":true,"properties":{"id":{"type":"string"},"provider":{"type":"string","enum":["anthropic","databricks","openai"]},"providerEndpoint":{"type":"string","nullable":true},"providerClientId":{"type":"string","nullable":true},"keyFingerprint":{"type":"string"},"availableProviderModelIds":{"type":"array","items":{"type":"string"}},"requiredModelCoverage":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string"},"available":{"type":"boolean"}},"required":["publicModelId","available"]}},"verifiedAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","provider","providerEndpoint","providerClientId","keyFingerprint","availableProviderModelIds","requiredModelCoverage","verifiedAt","updatedAt"]},"PutExternalAIBindingRequest":{"oneOf":[{"type":"object","properties":{"provider":{"type":"string","enum":["anthropic","openai"]},"apiKey":{"type":"string","minLength":1,"maxLength":512},"acknowledgeAlienCredentialAccess":{"type":"boolean","enum":[true]}},"required":["provider","apiKey","acknowledgeAlienCredentialAccess"],"additionalProperties":false},{"type":"object","properties":{"provider":{"type":"string","enum":["databricks"]},"workspaceUrl":{"type":"string","minLength":1,"maxLength":512},"clientId":{"type":"string","minLength":1,"maxLength":512},"clientSecret":{"type":"string","minLength":1,"maxLength":4096},"acknowledgeAlienCredentialAccess":{"type":"boolean","enum":[true]}},"required":["provider","workspaceUrl","clientId","clientSecret","acknowledgeAlienCredentialAccess"],"additionalProperties":false}]},"ContainerRegistryState":{"type":"object","properties":{"route":{"type":"object","nullable":true,"properties":{"id":{"type":"string","pattern":"crroute_[0-9a-z]{28}$","description":"Unique identifier for the container registry route.","example":"crroute_c9t4xoy7fmiq7equtu20"},"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"managerId":{"type":"string"},"resourceId":{"type":"string"},"resourceRevision":{"type":"string","minLength":1},"desiredRevision":{"type":"integer","minimum":0},"appliedRevision":{"type":"integer","minimum":0},"status":{"type":"string","enum":["resolving","applying","connected","degraded","revoking","revoked"]},"lastVerifiedAt":{"type":"string","nullable":true,"format":"date-time"},"lastError":{"type":"string","nullable":true}},"required":["id","deploymentId","managerId","resourceId","resourceRevision","desiredRevision","appliedRevision","status","lastVerifiedAt","lastError"]},"endpoint":{"type":"object","nullable":true,"properties":{"url":{"type":"string","format":"uri"},"source":{"type":"string","enum":["runtime","custom-domain"]}},"required":["url","source"]},"repositories":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"crrepo_[0-9a-z]{28}$","description":"Unique identifier for the container registry repository.","example":"crrepo_625temdq3bnu25jw9rcux"},"logicalName":{"type":"string"},"desiredState":{"type":"string","enum":["present","deleteRequested","deleted"]},"status":{"type":"string","enum":["pending","creating","ready","deleting","deleted","failed"]},"verifiedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["id","logicalName","desiredState","status","verifiedAt"]}},"credentials":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"crcred_[0-9a-z]{28}$","description":"Unique identifier for the container registry credential.","example":"crcred_oz1xjr82f37j17g4gtmyu"},"label":{"type":"string"},"scope":{"type":"string","enum":["pull","pushPull"]},"repositorySubset":{"type":"array","nullable":true,"items":{"type":"string"}},"expiresAt":{"type":"string","nullable":true,"format":"date-time"},"lastUsedAt":{"type":"string","nullable":true,"format":"date-time"},"revokedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","label","scope","repositorySubset","expiresAt","lastUsedAt","revokedAt","createdAt"]}}},"required":["route","endpoint","repositories","credentials"]},"CreateContainerRegistryCredentialResponse":{"type":"object","properties":{"credential":{"type":"object","properties":{"id":{"type":"string","pattern":"crcred_[0-9a-z]{28}$","description":"Unique identifier for the container registry credential.","example":"crcred_oz1xjr82f37j17g4gtmyu"},"label":{"type":"string"},"scope":{"type":"string","enum":["pull","pushPull"]},"repositorySubset":{"type":"array","nullable":true,"items":{"type":"string"}},"expiresAt":{"type":"string","nullable":true,"format":"date-time"},"lastUsedAt":{"type":"string","nullable":true,"format":"date-time"},"revokedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","label","scope","repositorySubset","expiresAt","lastUsedAt","revokedAt","createdAt"]},"username":{"type":"string","enum":["alien"]},"password":{"type":"string"}},"required":["credential","username","password"]},"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":{"currentChannels":{"type":"array","items":{"$ref":"#/components/schemas/ReleaseChannelName"},"description":"Channels for which this release is currently selected"},"commitUrl":{"type":"string","nullable":true,"format":"uri","description":"Validated canonical provider URL for the exact commit"},"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"},"createdBy":{"type":"object","nullable":true,"properties":{"id":{"type":"string","description":"User ID"},"name":{"type":"string","description":"User's display name"},"email":{"type":"string","description":"User's email address"},"image":{"type":"string","nullable":true,"description":"User's avatar image URL"}},"required":["id","name","email","image"],"description":"Platform user who created the release, included when ?include=createdBy is used"}},"required":["currentChannels","commitUrl"]}]},"ReleaseChannelName":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z][a-z0-9-]*$"},"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":{"allOf":[{"$ref":"#/components/schemas/StackByPlatform"}],"nullable":true},"setupFingerprints":{"allOf":[{"$ref":"#/components/schemas/SetupFingerprintMap"},{"description":"Per-target setup compatibility fingerprints for this release"}]},"rootDirectory":{"type":"string","nullable":true,"maxLength":256},"createdByUserId":{"type":"string","nullable":true,"maxLength":128,"description":"ID of the platform user who created the release, if known"},"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},"channel":{"allOf":[{"$ref":"#/components/schemas/ReleaseChannelName"},{"description":"Release channel to advance. Defaults to production."}]}},"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"]},"ReleaseDeploymentsResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ReleaseDeploymentItem"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"},"stateCounts":{"$ref":"#/components/schemas/ReleaseRolloutStateCounts"}},"required":["items","nextCursor","stateCounts"]},"ReleaseDeploymentItem":{"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."},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","machines","local","test"],"description":"Target platform 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"},"deploymentGroup":{"type":"object","nullable":true,"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"},"externalId":{"type":"string","nullable":true,"minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"}},"required":["id","name","externalId"],"description":"Deployment group this deployment belongs to"},"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"},"lastHeartbeatAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last received heartbeat"},"rolloutState":{"$ref":"#/components/schemas/ReleaseRolloutState"},"releasedAt":{"type":"string","format":"date-time","nullable":true,"description":"When this release went live on the deployment, null if it never did"},"durationMs":{"type":"integer","nullable":true,"description":"Time from release creation until the deployment finished updating, in milliseconds. Null for initial provisions and deployments that never ran this release."},"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"}},"required":["id","name","status","platform","rolloutState","releasedAt","durationMs"]},"ReleaseRolloutState":{"type":"string","enum":["updated","updating","failed","pending","pinned-other","superseded","on-other"]},"ReleaseRolloutStateCounts":{"type":"object","properties":{"updated":{"type":"integer"},"updating":{"type":"integer"},"failed":{"type":"integer"},"pending":{"type":"integer"},"pinned-other":{"type":"integer"},"superseded":{"type":"integer"},"on-other":{"type":"integer"}},"required":["updated","updating","failed","pending","pinned-other","superseded","on-other"],"description":"Deployment counts per rollout state across all deployments the filters allow (ignores the state filter)"},"ReleaseChannel":{"type":"object","properties":{"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"name":{"$ref":"#/components/schemas/ReleaseChannelName"},"currentReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"deploymentCount":{"type":"integer","minimum":0},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["workspaceId","projectId","name","currentReleaseId","createdAt","updatedAt"]},"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"},"purpose":{"$ref":"#/components/schemas/DeploymentPurpose"},"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"},"releaseChannel":{"allOf":[{"$ref":"#/components/schemas/ReleaseChannelName"},{"description":"Named release stream followed when the deployment is not pinned"}]},"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","purpose","releaseChannel","retryRequested","createdAt","updatedAt","managerId","workspaceId"]},"DeploymentProtocolVersion":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"DeploymentState protocol version owned by the runtime/manager"},"DeploymentPurpose":{"type":"string","enum":["application","encryption","ai","storage","container-registry"],"description":"Operational purpose of this deployment within its customer environment."},"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"},"externalId":{"type":"string","nullable":true,"minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"}},"required":["id","name","externalId"]},"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."},"byOrigin":{"type":"object","properties":{"framework":{"type":"number"},"remoteOperator":{"type":"number"}},"description":"Count of deployments introduced through each deployment path."}},"required":["total","byStatus","byPlatform","byCurrentRelease","byPinnedRelease","byOrigin"]},"DeploymentDetailResponse":{"allOf":[{"$ref":"#/components/schemas/Deployment"},{"type":"object","properties":{"release":{"$ref":"#/components/schemas/DeploymentReleaseInfo"},"deploymentGroup":{"$ref":"#/components/schemas/DeploymentGroupInfo"},"project":{"$ref":"#/components/schemas/DeploymentProjectInfo"}}}]},"DeploymentUpdateOperationSummary":{"type":"object","nullable":true,"properties":{"id":{"type":"string","pattern":"duop_[0-9a-z]{28}$","description":"Unique identifier for the deployment update operation.","example":"duop_0vtxpb1sw4sbcdwg2xo37q6"},"status":{"$ref":"#/components/schemas/DeploymentUpdateOperationStatus"},"reasons":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentUpdateReason"}},"targetReleaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"changedKeys":{"type":"array","items":{"type":"string"}},"requestedAt":{"type":"string","format":"date-time"},"startedAt":{"type":"string","format":"date-time","nullable":true},"completedAt":{"type":"string","format":"date-time","nullable":true}},"required":["id","status","reasons","targetReleaseId","changedKeys","requestedAt"]},"DeploymentUpdateOperationStatus":{"type":"string","enum":["queued","applying","succeeded","failed","superseded"]},"DeploymentUpdateReason":{"type":"string","enum":["configuration","redeploy","release"]},"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"},"purpose":{"$ref":"#/components/schemas/DeploymentPurpose"},"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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":{"initialSetupAuthority":{"type":"string","enum":["importedHandoff","directSetup"],"description":"Actor that owns structural work during the initial setup phase."},"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}]},"persistedGateAnswers":{"type":"object","properties":{},"additionalProperties":{"type":"boolean"},"description":"Canonical resolved answers for inputs that gate Frozen resources,\nkeyed by input id, recorded when the deployment is created or its\nsetup import registers.\n\nA frozen gate's answer is fixed for the deployment's lifetime: the\nupdate path refuses input values that conflict with these, and a Live\nresource sharing such an input resolves the persisted answer forever."},"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"},"releaseChannel":{"allOf":[{"$ref":"#/components/schemas/ReleaseChannelName"},{"description":"Named release stream followed when the deployment is not pinned"}]},"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"},"updateState":{"type":"object","properties":{"active":{"$ref":"#/components/schemas/DeploymentUpdateOperationSummary"},"next":{"$ref":"#/components/schemas/DeploymentUpdateOperationSummary"},"latest":{"$ref":"#/components/schemas/DeploymentUpdateOperationSummary"}},"required":["active","next","latest"],"description":"Durable progress for deployment updates"},"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","purpose","stackSettings","releaseChannel","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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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."},"releaseChannel":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z][a-z0-9-]*$","default":"production","description":"Release channel followed while this deployment is not pinned."},"setupItem":{"type":"string","enum":["deployment","models","keys","bucket","registry"],"description":"Customer setup item selected from this deployment-group token."}},"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"},"setupItem":{"type":"string","enum":["deployment","models","keys","bucket","registry"],"description":"Exact item selected from a tailored customer setup link."},"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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":{"initialSetupAuthority":{"type":"string","enum":["importedHandoff","directSetup"],"description":"Actor that owns structural work during the initial setup phase."},"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}]},"persistedGateAnswers":{"type":"object","properties":{},"additionalProperties":{"type":"boolean"},"description":"Canonical resolved answers for inputs that gate Frozen resources,\nkeyed by input id, recorded when the deployment is created or its\nsetup import registers.\n\nA frozen gate's answer is fixed for the deployment's lifetime: the\nupdate path refuses input values that conflict with these, and a Live\nresource sharing such an input resolves the persisted answer forever."},"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 resume its followed channel.","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"},"outcome":{"type":"string","enum":["accepted","unchanged"]},"operation":{"$ref":"#/components/schemas/DeploymentUpdateOperationSummary"}},"required":["runtimeUpdateRequested","outcome","operation"]}]},"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","nullable":true,"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"},"items":{"type":"array","items":{"type":"object","properties":{"item":{"type":"string","enum":["deployment","models","keys","bucket","registry"]},"source":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["project-release"]},"releaseChannel":{"type":"string","minLength":1,"maxLength":63},"releaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"resourceId":{"type":"string","minLength":1,"maxLength":256}},"required":["type","releaseChannel","releaseId"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["built-in"]},"definitionId":{"type":"string","enum":["customer-ai","customer-key","customer-storage","customer-registry"]},"version":{"type":"string","minLength":1,"maxLength":64},"sourceReleaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"}},"required":["type","definitionId","version","sourceReleaseId"],"additionalProperties":false}]},"required":{"type":"boolean"},"configuration":{"type":"object","properties":{"allowedProviders":{"type":"array","items":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic","databricks","openai"]},"minItems":1,"maxItems":6},"modelRequirements":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string","minLength":1,"maxLength":256},"clientApis":{"type":"array","items":{"type":"string","enum":["openai-chat","openai-responses","anthropic-messages"]},"minItems":1,"maxItems":3},"required":{"type":"boolean"}},"required":["publicModelId","clientApis","required"],"additionalProperties":false},"maxItems":100}},"additionalProperties":false}},"required":["item","source","required"],"additionalProperties":false},"maxItems":8,"description":"Immutable setup items and exact sources captured when this setup link is created."},"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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}]},"channel":{"type":"string","description":"Name of the channel that moved"},"previousReleaseId":{"type":"string","nullable":true,"description":"ID of the release that was previously current, if any"},"releaseId":{"type":"string","description":"ID of the release that is now current"},"type":{"type":"string","enum":["ReleaseChannelUpdated"]}},"required":["channel","releaseId","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}]},"channel":{"type":"string","description":"Newly followed channel"},"deploymentId":{"type":"string","description":"ID of the deployment"},"previousChannel":{"type":"string","description":"Previously followed channel"},"type":{"type":"string","enum":["DeploymentReleaseChannelChanged"]}},"required":["channel","deploymentId","previousChannel","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"]},"GenerateManagerBindingTokenResponse":{"type":"object","properties":{"accessToken":{"type":"string"},"expiresIn":{"type":"number","nullable":true},"tokenType":{"type":"string","enum":["Bearer"]},"managerUrl":{"type":"string"}},"required":["accessToken","expiresIn","tokenType","managerUrl"]},"GenerateManagerBindingTokenRequest":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"}},"required":["deploymentId"],"additionalProperties":false},"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"]},"ContainerRegistryManagerSnapshot":{"type":"object","properties":{"generatedAt":{"type":"string","format":"date-time"},"routes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"crroute_[0-9a-z]{28}$","description":"Unique identifier for the container registry route.","example":"crroute_c9t4xoy7fmiq7equtu20"},"deploymentId":{"type":"string"},"resourceId":{"type":"string"},"resourceRevision":{"type":"string"},"desiredRevision":{"type":"integer","minimum":0},"appliedRevision":{"type":"integer","minimum":0},"status":{"type":"string","enum":["resolving","applying","connected","degraded","revoking","revoked"]},"repositories":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"crrepo_[0-9a-z]{28}$","description":"Unique identifier for the container registry repository.","example":"crrepo_625temdq3bnu25jw9rcux"},"logicalName":{"type":"string"},"desiredState":{"type":"string","enum":["present","deleteRequested","deleted"]},"routableUpstreamName":{"type":"string","nullable":true},"remoteResourceRevision":{"type":"string"}},"required":["id","logicalName","desiredState","routableUpstreamName","remoteResourceRevision"],"additionalProperties":false}},"credentials":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"crcred_[0-9a-z]{28}$","description":"Unique identifier for the container registry credential.","example":"crcred_oz1xjr82f37j17g4gtmyu"},"secretPrefix":{"type":"string"},"secretDigest":{"type":"string","pattern":"^[0-9a-f]{64}$"},"scope":{"type":"string","enum":["pull","pushPull"]},"repositorySubset":{"type":"array","nullable":true,"items":{"type":"string"}},"expiresAt":{"type":"string","nullable":true,"format":"date-time"},"revokedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["id","secretPrefix","secretDigest","scope","repositorySubset","expiresAt","revokedAt"],"additionalProperties":false}}},"required":["id","deploymentId","resourceId","resourceRevision","desiredRevision","appliedRevision","status","repositories","credentials"],"additionalProperties":false}}},"required":["generatedAt","routes"],"additionalProperties":false},"ApplyContainerRegistrySnapshotResponse":{"type":"object","properties":{"appliedRevision":{"type":"integer","minimum":0},"status":{"type":"string","enum":["applying","connected","degraded","revoked"]}},"required":["appliedRevision","status"],"additionalProperties":false},"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"}},"items":{"type":"array","items":{"type":"object","properties":{"item":{"type":"string","enum":["deployment","models","keys","bucket","registry"]},"source":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["project-release"]},"releaseChannel":{"type":"string","minLength":1,"maxLength":63},"releaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"resourceId":{"type":"string","minLength":1,"maxLength":256}},"required":["type","releaseChannel","releaseId"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["built-in"]},"definitionId":{"type":"string","enum":["customer-ai","customer-key","customer-storage","customer-registry"]},"version":{"type":"string","minLength":1,"maxLength":64},"sourceReleaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"}},"required":["type","definitionId","version","sourceReleaseId"],"additionalProperties":false}]},"required":{"type":"boolean"},"configuration":{"type":"object","properties":{"allowedProviders":{"type":"array","items":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic","databricks","openai"]},"minItems":1,"maxItems":6},"modelRequirements":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string","minLength":1,"maxLength":256},"clientApis":{"type":"array","items":{"type":"string","enum":["openai-chat","openai-responses","anthropic-messages"]},"minItems":1,"maxItems":3},"required":{"type":"boolean"}},"required":["publicModelId","clientApis","required"],"additionalProperties":false},"maxItems":100}},"additionalProperties":false}},"required":["item","source","required"],"additionalProperties":false},"maxItems":8}},"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","nullable":true,"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"]},"CommandBootstrapResponse":{"type":"object","properties":{"managerUrl":{"type":"string","format":"uri","description":"Current customer-facing manager URL"},"token":{"type":"string","minLength":1,"description":"Short-lived command capability token"},"expiresAt":{"type":"string","format":"date-time","description":"Capability expiry in RFC 3339 format"},"target":{"$ref":"#/components/schemas/CommandReceiverBootstrapTarget"}},"required":["managerUrl","token","expiresAt"]},"CommandReceiverBootstrapTarget":{"type":"object","properties":{"resourceId":{"type":"string"},"resourceType":{"type":"string","enum":["container","daemon"]}},"required":["resourceId","resourceType"],"description":"Resolved target identity; present only for receiver bootstrap"},"CommandBootstrapRequest":{"oneOf":[{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"role":{"type":"string","enum":["sender"]}},"required":["deploymentId","role"],"additionalProperties":false},{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"role":{"type":"string","enum":["receiver"]},"target":{"type":"string","minLength":1,"maxLength":255}},"required":["deploymentId","role","target"],"additionalProperties":false}]},"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"},"customerModels":{"type":"boolean","description":"Whether this release offers one remotely accessible AI resource"},"resourceCounts":{"type":"object","properties":{"workers":{"type":"integer","minimum":0},"containers":{"type":"integer","minimum":0},"daemons":{"type":"integer","minimum":0,"description":"Daemon resources that run on managed runtime machines"},"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","customerModels","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"},"modelAvailabilitySources":{"type":"array","items":{"type":"object","properties":{"deploymentId":{"type":"string"},"resourceId":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"status":{"type":"string","enum":["current","stale","invalid"]},"availability":{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]}},"required":["deploymentId","resourceId","observedAt","status"]}},"setupItems":{"type":"array","items":{"$ref":"#/components/schemas/SetupItemStatus"}},"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","modelAvailabilitySources"]},"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"]},"SetupItemStatus":{"type":"object","properties":{"item":{"type":"string","enum":["deployment","models","keys","bucket","registry"]},"source":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["project-release"]},"releaseChannel":{"type":"string","minLength":1,"maxLength":63},"releaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"resourceId":{"type":"string","minLength":1,"maxLength":256}},"required":["type","releaseChannel","releaseId"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["built-in"]},"definitionId":{"type":"string","enum":["customer-ai","customer-key","customer-storage","customer-registry"]},"version":{"type":"string","minLength":1,"maxLength":64},"sourceReleaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"}},"required":["type","definitionId","version","sourceReleaseId"],"additionalProperties":false}]},"required":{"type":"boolean"},"configuration":{"type":"object","properties":{"allowedProviders":{"type":"array","items":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic","databricks","openai"]},"minItems":1,"maxItems":6},"modelRequirements":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string","minLength":1,"maxLength":256},"clientApis":{"type":"array","items":{"type":"string","enum":["openai-chat","openai-responses","anthropic-messages"]},"minItems":1,"maxItems":3},"required":{"type":"boolean"}},"required":["publicModelId","clientApis","required"],"additionalProperties":false},"maxItems":100}},"additionalProperties":false},"status":{"type":"string","enum":["not-started","waiting","applying","verifying","connected","needs-attention","revoked"]},"deploymentIds":{"type":"array","items":{"type":"string"}},"blocker":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["item","source","required","status","deploymentIds"],"additionalProperties":false},"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"]}},"items":{"type":"array","items":{"type":"object","properties":{"item":{"type":"string","enum":["deployment","models","keys","bucket","registry"]},"source":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["project-release"]},"releaseChannel":{"type":"string","minLength":1,"maxLength":63},"releaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"resourceId":{"type":"string","minLength":1,"maxLength":256}},"required":["type","releaseChannel","releaseId"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["built-in"]},"definitionId":{"type":"string","enum":["customer-ai","customer-key","customer-storage","customer-registry"]},"version":{"type":"string","minLength":1,"maxLength":64},"sourceReleaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"}},"required":["type","definitionId","version","sourceReleaseId"],"additionalProperties":false}]},"required":{"type":"boolean"},"configuration":{"type":"object","properties":{"allowedProviders":{"type":"array","items":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic","databricks","openai"]},"minItems":1,"maxItems":6},"modelRequirements":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string","minLength":1,"maxLength":256},"clientApis":{"type":"array","items":{"type":"string","enum":["openai-chat","openai-responses","anthropic-messages"]},"minItems":1,"maxItems":3},"required":{"type":"boolean"}},"required":["publicModelId","clientApis","required"],"additionalProperties":false},"maxItems":100}},"additionalProperties":false}},"required":["item","source","required"],"additionalProperties":false},"maxItems":8},"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"]},"ListOperationsPluginsResponse":{"type":"object","properties":{"plugins":{"type":"array","items":{"$ref":"#/components/schemas/OperationsPlugin"}}},"required":["plugins"]},"OperationsPlugin":{"type":"object","properties":{"name":{"type":"string"},"version":{"type":"string"},"tier":{"type":"string","enum":["read-only","mutating","destructive"],"description":"Plugin-level default tier."},"builtin":{"type":"boolean","description":"True for compiled-in plugins, false for custom bundles."},"enabled":{"type":"boolean"},"operations":{"type":"array","items":{"$ref":"#/components/schemas/OperationsPluginOperation"}}},"required":["name","version","tier","builtin","enabled","operations"]},"OperationsPluginOperation":{"type":"object","properties":{"name":{"type":"string","description":"Operation name, unique within the plugin."},"tier":{"type":"string","enum":["read-only","mutating","destructive"],"description":"Effective risk tier for this operation."},"description":{"type":"string","nullable":true,"description":"Human-readable description."}},"required":["name","tier","description"]},"OperationsBundleUploadUrlResponse":{"type":"object","properties":{"uploadUrl":{"type":"string","format":"uri","description":"Presigned S3 PUT URL to upload the bundle ZIP to."},"contentType":{"type":"string","description":"Content-Type header the PUT must send (must match the signature)."}},"required":["uploadUrl","contentType"]},"OperationsBundleUploadUrlRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Plugin name (from the bundle's metadata.json)."}},"required":["name"]},"PublishOperationsPluginResponse":{"type":"object","properties":{"name":{"type":"string"},"version":{"type":"string"},"tier":{"type":"string","enum":["read-only","mutating","destructive"],"description":"How risky an operation is (declared by the plugin metadata)."},"enabled":{"type":"boolean"}},"required":["name","version","tier","enabled"]},"PublishOperationsPluginRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Plugin name (from the bundle's metadata.json)."},"version":{"type":"string","minLength":1,"description":"Plugin version."},"tier":{"type":"string","enum":["read-only","mutating","destructive"],"description":"Plugin-level default risk tier."},"metadata":{"nullable":true,"description":"The verbatim metadata.json (operations[], binaries{})."}},"required":["name","version","tier"]},"SetOperationsPluginEnabledResponse":{"type":"object","properties":{"name":{"type":"string"},"builtin":{"type":"boolean"},"enabled":{"type":"boolean"}},"required":["name","builtin","enabled"]},"SetOperationsPluginEnabledRequest":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether the plugin should be baked into the operator image."}},"required":["enabled"]},"OperationsPolicyResponse":{"type":"object","properties":{"rules":{"type":"array","items":{"$ref":"#/components/schemas/OperationsPolicyRule"}},"default":{"type":"string","enum":["auto","manual"],"description":"Decision for commands no rule matches."}},"required":["rules","default"]},"OperationsPolicyRule":{"type":"object","properties":{"pattern":{"type":"string","description":"`plugin/operation`, `plugin/*`, or `*`."},"decision":{"type":"string","enum":["auto","manual"],"description":"auto: run immediately. manual: needs customer approval before running."}},"required":["pattern","decision"]},"UpdateOperationsPolicyRequest":{"type":"object","properties":{"rules":{"type":"array","items":{"$ref":"#/components/schemas/OperationsPolicyRule"},"description":"The full rule set (replaces the previous one)."}},"required":["rules"]},"InvokeOperationResponse":{"type":"object","properties":{"plugin":{"type":"string"},"operation":{"type":"string"},"tier":{"type":"string","enum":["read-only","mutating","destructive"],"description":"The operation's declared risk tier (informational)."},"decision":{"type":"string","enum":["auto","manual"],"description":"The approval decision the policy resolved to."},"status":{"type":"string","enum":["dispatched","pending-approval"],"description":"dispatched: auto-approved and running. pending-approval: needs customer sign-off."},"commandId":{"type":"string","description":"The created operation-command id when dispatched (absent when pending)."}},"required":["plugin","operation","tier","decision","status"]},"InvokeOperationRequest":{"type":"object","properties":{"deploymentId":{"type":"string","description":"Deployment to run the operation against."},"plugin":{"type":"string","description":"Plugin name."},"operation":{"type":"string","description":"Operation name exposed by the plugin."},"params":{"nullable":true,"description":"JSON params passed to the operation."}},"required":["deploymentId","plugin","operation"]},"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"},"purpose":{"$ref":"#/components/schemas/DeploymentPurpose"},"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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":{"initialSetupAuthority":{"type":"string","enum":["importedHandoff","directSetup"],"description":"Actor that owns structural work during the initial setup phase."},"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}]},"persistedGateAnswers":{"type":"object","properties":{},"additionalProperties":{"type":"boolean"},"description":"Canonical resolved answers for inputs that gate Frozen resources,\nkeyed by input id, recorded when the deployment is created or its\nsetup import registers.\n\nA frozen gate's answer is fixed for the deployment's lifetime: the\nupdate path refuses input values that conflict with these, and a Live\nresource sharing such an input resolves the persisted answer forever."},"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"},"releaseChannel":{"allOf":[{"$ref":"#/components/schemas/ReleaseChannelName"},{"description":"Named release stream followed when the deployment is not pinned"}]},"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"},"updateState":{"type":"object","properties":{"active":{"$ref":"#/components/schemas/DeploymentUpdateOperationSummary"},"next":{"$ref":"#/components/schemas/DeploymentUpdateOperationSummary"},"latest":{"$ref":"#/components/schemas/DeploymentUpdateOperationSummary"}},"required":["active","next","latest"],"description":"Durable progress for deployment updates"},"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","purpose","stackSettings","releaseChannel","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":{"initialSetupAuthority":{"type":"string","enum":["importedHandoff","directSetup"],"description":"Actor that owns structural work during the initial setup phase."},"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}]},"persistedGateAnswers":{"type":"object","properties":{},"additionalProperties":{"type":"boolean"},"description":"Canonical resolved answers for inputs that gate Frozen resources,\nkeyed by input id, recorded when the deployment is created or its\nsetup import registers.\n\nA frozen gate's answer is fixed for the deployment's lifetime: the\nupdate path refuses input values that conflict with these, and a Live\nresource sharing such an input resolves the persisted answer forever."},"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"},"serverCaCertificates":{"oneOf":[{"type":"array","items":{"type":"string"}},{"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"},"sslMode":{"type":"string","enum":["verify-full","disable"],"description":"TLS policy for an operator-provided / BYO Postgres database.\n\nUnlike libpq's ambiguous `prefer` mode, both choices map exactly to the\nconnection settings exposed by every supported SDK."},"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"]}]},{"allOf":[{"type":"object","properties":{"apiKey":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"provider":{"type":"string","description":"The external AI provider name (e.g., \"openai\", \"anthropic\")"}},"required":["provider"],"description":"External AI provider binding configuration (BYO-key).\n\nThe operator-supplied secret rides inside the binding via\n`BindingValue`, so it is a literal on cloud platforms and gains\nKubernetes SecretRef resolution for free (`extract_binding_secrets` walks\nthe binding JSON for `secretRef`)."},{"type":"object","properties":{"type":{"type":"string","enum":["ai"]}},"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)"},"leaseExpiresAt":{"type":"string","nullable":true,"format":"date-time","description":"When the provisional leases on the returned deployments lapse. Confirm them with sync/renew before starting work. Null when nothing was acquired."}},"required":["deployments","failures","leaseExpiresAt"],"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"},"requestId":{"type":"string","minLength":1,"description":"Idempotency key for one logical acquire request"},"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","requestId","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":{"initialSetupAuthority":{"type":"string","enum":["importedHandoff","directSetup"],"description":"Actor that owns structural work during the initial setup phase."},"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}]},"persistedGateAnswers":{"type":"object","properties":{},"additionalProperties":{"type":"boolean"},"description":"Canonical resolved answers for inputs that gate Frozen resources,\nkeyed by input id, recorded when the deployment is created or its\nsetup import registers.\n\nA frozen gate's answer is fixed for the deployment's lifetime: the\nupdate path refuses input values that conflict with these, and a Live\nresource sharing such an input resolves the persisted answer forever."},"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"},"serverCaCertificates":{"oneOf":[{"type":"array","items":{"type":"string"}},{"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"},"sslMode":{"type":"string","enum":["verify-full","disable"],"description":"TLS policy for an operator-provided / BYO Postgres database.\n\nUnlike libpq's ambiguous `prefer` mode, both choices map exactly to the\nconnection settings exposed by every supported SDK."},"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"]}]},{"allOf":[{"type":"object","properties":{"apiKey":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"provider":{"type":"string","description":"The external AI provider name (e.g., \"openai\", \"anthropic\")"}},"required":["provider"],"description":"External AI provider binding configuration (BYO-key).\n\nThe operator-supplied secret rides inside the binding via\n`BindingValue`, so it is a literal on cloud platforms and gains\nKubernetes SecretRef resolution for free (`extract_binding_secrets` walks\nthe binding JSON for `secretRef`)."},{"type":"object","properties":{"type":{"type":"string","enum":["ai"]}},"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":{"initialSetupAuthority":{"type":"string","enum":["importedHandoff","directSetup"],"description":"Actor that owns structural work during the initial setup phase."},"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}]},"persistedGateAnswers":{"type":"object","properties":{},"additionalProperties":{"type":"boolean"},"description":"Canonical resolved answers for inputs that gate Frozen resources,\nkeyed by input id, recorded when the deployment is created or its\nsetup import registers.\n\nA frozen gate's answer is fixed for the deployment's lifetime: the\nupdate path refuses input values that conflict with these, and a Live\nresource sharing such an input resolves the persisted answer forever."},"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"]}],"description":"AWS Aurora Serverless v2 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"]}],"description":"GCP Cloud SQL 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"]}],"description":"Azure Flexible Server 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"]}],"description":"Local embedded Postgres 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"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"availability":{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]},"region":{"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":["availability","region","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsBedrock"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"availability":{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]},"location":{"type":"string"},"project":{"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":["availability","location","project","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpVertex"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"accountName":{"type":"string"},"availability":{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]},"endpoint":{"type":"string","nullable":true},"location":{"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"]}},"required":["accountName","availability","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureFoundry"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"availability":{"oneOf":[{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]},{"nullable":true}]},"provider":{"type":"string","description":"The BYO-key provider serving this binding (e.g. \"openai\"). Used on the Local\nplatform, where the app brings its own provider key instead of an ambient cloud."},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["provider","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["external"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["ai"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"type":"object","properties":{"data":{"type":"object","properties":{"enabled":{"type":"boolean"},"keyArn":{"type":"string"},"keySpec":{"type":"string"},"keyState":{"type":"string"},"keyUsage":{"type":"string"},"status":{"type":"object","properties":{"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true}},"required":["health","lifecycle"]}},"required":["enabled","keyArn","keySpec","keyState","keyUsage","status"]},"provider":{"type":"string","enum":["aws-kms"]}},"required":["data","provider"]},{"type":"object","properties":{"data":{"type":"object","properties":{"algorithm":{"type":"string","nullable":true},"cryptoKeyName":{"type":"string"},"primaryState":{"type":"string","nullable":true},"primaryVersion":{"type":"string","nullable":true},"purpose":{"type":"string"},"status":{"type":"object","properties":{"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true}},"required":["health","lifecycle"]}},"required":["cryptoKeyName","purpose","status"]},"provider":{"type":"string","enum":["gcp-cloud-kms"]}},"required":["data","provider"]},{"type":"object","properties":{"data":{"type":"object","properties":{"enabled":{"type":"boolean","nullable":true},"keyId":{"type":"string"},"keyOperations":{"type":"array","items":{"type":"string"}},"keyType":{"type":"string"},"recoveryLevel":{"type":"string","nullable":true},"status":{"type":"object","properties":{"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true}},"required":["health","lifecycle"]}},"required":["keyId","keyOperations","keyType","status"]},"provider":{"type":"string","enum":["azure-key-vault"]}},"required":["data","provider"]}]},"resourceType":{"type":"string","enum":["key"]}},"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"},"SyncRenewRequest":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Single deployment to renew. Deprecated: use deploymentIds. Retained so a manager built against the previous API keeps renewing during rollout.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"deploymentIds":{"type":"array","items":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"minItems":1,"maxItems":100,"description":"Deployments to renew or confirm. Renewal is per deployment: the response reports each one independently."},"session":{"type":"string","minLength":1}},"required":["session"],"additionalProperties":false},"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"},"operations_custom_plugins":{"type":"boolean"},"sso_saml":{"type":"boolean"},"audit_logs":{"type":"boolean"},"airgapped":{"type":"boolean"}},"required":["custom_domains","private_managers","operations_custom_plugins","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}/source":{"post":{"operationId":"configureProjectSource","description":"Connect a GitHub repository or Alien template to an existing project and configure its release workflow.","x-speakeasy-group":"projects","x-speakeasy-name-override":"configureSource","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":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["repository"]},"gitRepository":{"type":"object","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},"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"}},"required":["mode","gitRepository"]},{"type":"object","properties":{"mode":{"type":"string","enum":["template"]},"targetNamespace":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-zA-Z0-9-]+$"},"templatePath":{"type":"string","enum":["examples/customer-models-ts","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"}},"required":["mode","targetNamespace","templatePath"]}]}}}},"responses":{"200":{"description":"Project source connected and GitHub Actions configured.","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/customer-models-ts","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"]}}}]}}}},"400":{"description":"Repository or template configuration is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Insufficient permission to update this project.","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"}}}},"503":{"description":"Template fork exists but is not ready yet.","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/customer-models-ts","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/customer-models-ts","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 production channel's current release. When deploymentId is provided, returns that deployment's effective release: its pin, or its followed channel's current 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":"Effective release retrieved successfully.","content":{"application/json":{"schema":{"nullable":true}}}},"404":{"description":"Project or effective 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}/project-capabilities":{"put":{"operationId":"setProjectCapabilities","description":"Set the capabilities offered by a Project. Removing a capability prevents new setup without deleting existing customer resources.","x-speakeasy-group":"projects","x-speakeasy-name-override":"setCapabilities","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":{"type":"object","properties":{"enabled":{"type":"array","items":{"type":"string","enum":["deployments","models","keys","buckets","registry"]},"maxItems":5}},"required":["enabled"],"additionalProperties":false}}}},"responses":{"200":{"description":"The Project's enabled capabilities.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectCapabilities"}}}},"403":{"description":"Insufficient permissions.","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}/project-capabilities/deployments":{"put":{"operationId":"configureProjectDeployments","description":"Enable deployments for a Project.","x-speakeasy-group":"projects","x-speakeasy-name-override":"configureDeployments","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":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]}},"required":["enabled"],"additionalProperties":false}}}},"responses":{"200":{"description":"Deployments enabled for the Project.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectCapabilities"}}}},"403":{"description":"Insufficient permissions.","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}/project-capabilities/models":{"put":{"operationId":"configureProjectModels","description":"Configure customer-owned model providers without requiring an application Release.","x-speakeasy-group":"projects","x-speakeasy-name-override":"configureModels","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/ConfigureModelsRequest"}}}},"responses":{"200":{"description":"Customer Models configured and its exact setup source materialized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CapabilityMaterialization"}}}},"403":{"description":"Insufficient permissions.","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}/project-capabilities/keys":{"put":{"operationId":"configureProjectKeys","description":"Enable customer-owned application encryption without requiring an application Release.","x-speakeasy-group":"projects","x-speakeasy-name-override":"configureKeys","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":{"type":"object","properties":{"applicationEncryption":{"type":"boolean","enum":[true]}},"required":["applicationEncryption"],"additionalProperties":false}}}},"responses":{"200":{"description":"Customer Key configured and its exact setup source materialized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CapabilityMaterialization"}}}},"403":{"description":"Insufficient permissions.","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}/project-capabilities/buckets":{"put":{"operationId":"configureProjectBuckets","description":"Enable buckets without requiring a project Release.","x-speakeasy-group":"projects","x-speakeasy-name-override":"configureBuckets","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":{"type":"object","properties":{"access":{"type":"string","enum":["read-write"]}},"required":["access"],"additionalProperties":false}}}},"responses":{"200":{"description":"Buckets configured and their exact setup source materialized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CapabilityMaterialization"}}}},"403":{"description":"Insufficient permissions.","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}/project-capabilities/registry":{"put":{"operationId":"configureProjectRegistry","description":"Enable customer-owned container registries without requiring an application Release.","x-speakeasy-group":"projects","x-speakeasy-name-override":"configureRegistry","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":{"type":"object","properties":{"repositories":{"type":"array","items":{"type":"string","minLength":1,"maxLength":128},"maxItems":100},"credentialPolicy":{"type":"string","enum":["pull-only","push-and-pull"]}},"required":["repositories","credentialPolicy"],"additionalProperties":false}}}},"responses":{"200":{"description":"Customer Registry configured and its exact setup source materialized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CapabilityMaterialization"}}}},"403":{"description":"Insufficient permissions.","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}/project-capabilities/overview":{"get":{"operationId":"getProjectCapabilityOverview","description":"Get safe, server-derived capability status for a Project.","x-speakeasy-group":"projects","x-speakeasy-name-override":"getCapabilityOverview","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":"Project capability overview.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectCapabilityOverview"}}}},"403":{"description":"Insufficient permissions.","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}/remote-bindings/access":{"post":{"operationId":"createRemoteBindingsExternalAccess","tags":["remote-bindings"],"summary":"Create short-lived Remote Bindings access for a external resource","description":"Selects a connected external resource by Project and external ID, then returns a short-lived deployment-scoped Manager capability. The caller never receives the external cloud credentials from Platform.","x-speakeasy-group":"remoteBindings","x-speakeasy-name-override":"createExternalAccess","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":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteBindingsExternalAccessRequest"}}}},"responses":{"200":{"description":"Short-lived Remote Bindings access was created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteBindingsExternalAccessResponse"}}}},"401":{"description":"The API key is missing, invalid, expired, or disabled.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"The caller cannot access Remote Bindings for this Project.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"The Project or external ID was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"More than one active external resource matched.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"The external resource or its assigned Manager is not ready.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/projects/{idOrName}/ai-metrics":{"get":{"operationId":"getProjectAiUsage","x-speakeasy-group":"projects","x-speakeasy-name-override":"getAiUsage","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","enum":["24h","7d","30d"],"default":"24h"},"required":false,"name":"range","in":"query"}],"responses":{"200":{"description":"Privacy-safe AI Gateway usage aggregates.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"status":{"type":"string","enum":["unavailable"]},"reason":{"type":"string","enum":["not-configured","temporarily-unavailable"]}},"required":["status","reason"]},{"type":"object","properties":{"status":{"type":"string","enum":["available"]},"range":{"type":"string","enum":["24h","7d","30d"]},"pricing":{"type":"object","properties":{"label":{"type":"string","enum":["Estimated provider cost"]},"coverage":{"type":"number","minimum":0,"maximum":1},"revision":{"type":"string","nullable":true}},"required":["label","coverage","revision"]},"totals":{"type":"object","properties":{"requests":{"type":"integer","minimum":0},"successfulRequests":{"type":"integer","minimum":0},"errorRequests":{"type":"integer","minimum":0},"averageLatencyMs":{"type":"number","nullable":true,"minimum":0},"p95LatencyMs":{"type":"number","nullable":true,"minimum":0},"inputTokens":{"type":"integer","nullable":true,"minimum":0},"outputTokens":{"type":"integer","nullable":true,"minimum":0},"estimatedCostMicrousd":{"type":"integer","nullable":true,"minimum":0},"pricedRequests":{"type":"integer","minimum":0}},"required":["requests","successfulRequests","errorRequests","averageLatencyMs","p95LatencyMs","inputTokens","outputTokens","estimatedCostMicrousd","pricedRequests"]},"timeSeries":{"type":"array","items":{"type":"object","properties":{"requests":{"type":"integer","minimum":0},"successfulRequests":{"type":"integer","minimum":0},"errorRequests":{"type":"integer","minimum":0},"averageLatencyMs":{"type":"number","nullable":true,"minimum":0},"p95LatencyMs":{"type":"number","nullable":true,"minimum":0},"inputTokens":{"type":"integer","nullable":true,"minimum":0},"outputTokens":{"type":"integer","nullable":true,"minimum":0},"estimatedCostMicrousd":{"type":"integer","nullable":true,"minimum":0},"pricedRequests":{"type":"integer","minimum":0},"bucket":{"type":"string","format":"date-time"}},"required":["requests","successfulRequests","errorRequests","averageLatencyMs","p95LatencyMs","inputTokens","outputTokens","estimatedCostMicrousd","pricedRequests","bucket"]}},"customers":{"type":"array","items":{"type":"object","properties":{"requests":{"type":"integer","minimum":0},"successfulRequests":{"type":"integer","minimum":0},"errorRequests":{"type":"integer","minimum":0},"averageLatencyMs":{"type":"number","nullable":true,"minimum":0},"p95LatencyMs":{"type":"number","nullable":true,"minimum":0},"inputTokens":{"type":"integer","nullable":true,"minimum":0},"outputTokens":{"type":"integer","nullable":true,"minimum":0},"estimatedCostMicrousd":{"type":"integer","nullable":true,"minimum":0},"pricedRequests":{"type":"integer","minimum":0},"deploymentGroupId":{"type":"string"},"name":{"type":"string"},"externalId":{"type":"string","nullable":true}},"required":["requests","successfulRequests","errorRequests","averageLatencyMs","p95LatencyMs","inputTokens","outputTokens","estimatedCostMicrousd","pricedRequests","deploymentGroupId","name","externalId"]}},"models":{"type":"array","items":{"type":"object","properties":{"requests":{"type":"integer","minimum":0},"successfulRequests":{"type":"integer","minimum":0},"errorRequests":{"type":"integer","minimum":0},"averageLatencyMs":{"type":"number","nullable":true,"minimum":0},"p95LatencyMs":{"type":"number","nullable":true,"minimum":0},"inputTokens":{"type":"integer","nullable":true,"minimum":0},"outputTokens":{"type":"integer","nullable":true,"minimum":0},"estimatedCostMicrousd":{"type":"integer","nullable":true,"minimum":0},"pricedRequests":{"type":"integer","minimum":0},"publicModel":{"type":"string"},"provider":{"type":"string"}},"required":["requests","successfulRequests","errorRequests","averageLatencyMs","p95LatencyMs","inputTokens","outputTokens","estimatedCostMicrousd","pricedRequests","publicModel","provider"]}}},"required":["status","range","pricing","totals","timeSeries","customers","models"]}]}}}},"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/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/by-external-id":{"put":{"operationId":"ensureDeploymentGroupByExternalId","tags":["deployment-groups"],"summary":"Get or create a deployment group by project and external ID","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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/EnsureDeploymentGroupByExternalIdRequest"}}}},"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"}}}},"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"}}}}}},"get":{"operationId":"getDeploymentGroupByExternalId","tags":["deployment-groups"],"summary":"Get a deployment group by project and external ID","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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":100,"description":"Project ID or name. Optional for project-scoped API keys."},"required":false,"description":"Project ID or name. Optional for project-scoped API keys.","name":"project","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"},"required":true,"description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","name":"externalId","in":"query"}],"responses":{"200":{"description":"Deployment group returned successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentGroup"}}}},"404":{"description":"Project or 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/setup-links":{"post":{"operationId":"createSetupLink","tags":["setup-links"],"summary":"Create a customer setup link","description":"Ensures the Deployment Group identified by Project and external ID, then creates a replacement group-scoped setup link with exact captured sources.","x-speakeasy-group":"setupLinks","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":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSetupLinkRequest"}}}},"responses":{"200":{"description":"Customer environment ensured and setup link created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSetupLinkResponse"}}}},"400":{"description":"Customer environment or setup configuration is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Customer environment name or setup source conflicts","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}/external-id":{"put":{"operationId":"setDeploymentGroupExternalId","tags":["deployment-groups"],"summary":"Set or clear a deployment group's external ID","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":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetDeploymentGroupExternalIdRequest"}}}},"responses":{"200":{"description":"Deployment group external ID 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 external ID 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"}}}}}}},"/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/deployment-groups/{id}/ai/external":{"get":{"operationId":"getExternalAIBinding","tags":["deployment-groups"],"summary":"Get external AI connection state","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":"External AI connection state","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalAIBindingState"}}}},"403":{"description":"Insufficient permissions","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"}}}}}},"put":{"operationId":"putExternalAIBinding","tags":["deployment-groups"],"summary":"Connect or rotate an external AI provider key","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":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutExternalAIBindingRequest"}}}},"responses":{"200":{"description":"External AI connection verified and stored","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalAIBinding"}}}},"400":{"description":"The key is not valid for the selected provider","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment group not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"The group already has an active cloud AI source","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"Provider verification is temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"delete":{"operationId":"deleteExternalAIBinding","tags":["deployment-groups"],"summary":"Revoke the external AI connection","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":"External AI connection revoked"},"403":{"description":"Insufficient permissions","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}/container-registry":{"get":{"operationId":"getContainerRegistry","tags":["container-registry"],"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":"Container registry state","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContainerRegistryState"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Registry configuration conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"put":{"operationId":"putContainerRegistry","tags":["container-registry"],"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":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"resourceId":{"type":"string","minLength":1,"maxLength":128}},"required":["deploymentId","resourceId"]}}}},"responses":{"200":{"description":"Registry route","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"crroute_[0-9a-z]{28}$","description":"Unique identifier for the container registry route.","example":"crroute_c9t4xoy7fmiq7equtu20"},"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"managerId":{"type":"string"},"resourceId":{"type":"string"},"resourceRevision":{"type":"string","minLength":1},"desiredRevision":{"type":"integer","minimum":0},"appliedRevision":{"type":"integer","minimum":0},"status":{"type":"string","enum":["resolving","applying","connected","degraded","revoking","revoked"]},"lastVerifiedAt":{"type":"string","nullable":true,"format":"date-time"},"lastError":{"type":"string","nullable":true}},"required":["id","deploymentId","managerId","resourceId","resourceRevision","desiredRevision","appliedRevision","status","lastVerifiedAt","lastError"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Registry configuration conflict","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}/container-registry/repositories":{"post":{"operationId":"createContainerRegistryRepository","tags":["container-registry"],"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":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[a-z0-9]+(?:[._-][a-z0-9]+)*(?:\\/[a-z0-9]+(?:[._-][a-z0-9]+)*)*$"}},"required":["name"]}}}},"responses":{"201":{"description":"Repository requested","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"crrepo_[0-9a-z]{28}$","description":"Unique identifier for the container registry repository.","example":"crrepo_625temdq3bnu25jw9rcux"},"logicalName":{"type":"string"},"desiredState":{"type":"string","enum":["present","deleteRequested","deleted"]},"status":{"type":"string","enum":["pending","creating","ready","deleting","deleted","failed"]},"verifiedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["id","logicalName","desiredState","status","verifiedAt"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Registry configuration conflict","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}/container-registry/credentials":{"post":{"operationId":"createContainerRegistryCredential","tags":["container-registry"],"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":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":64},"scope":{"type":"string","enum":["pull","pushPull"]},"repositorySubset":{"type":"array","nullable":true,"items":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[a-z0-9]+(?:[._-][a-z0-9]+)*(?:\\/[a-z0-9]+(?:[._-][a-z0-9]+)*)*$"},"minItems":1,"maxItems":100},"expiresAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["label","scope"]}}}},"responses":{"201":{"description":"Credential created; password is returned once","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateContainerRegistryCredentialResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Registry configuration conflict","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}/container-registry/credentials/{credentialId}":{"delete":{"operationId":"revokeContainerRegistryCredential","tags":["container-registry"],"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","pattern":"crcred_[0-9a-z]{28}$","description":"Unique identifier for the container registry credential.","example":"crcred_oz1xjr82f37j17g4gtmyu"},"required":true,"description":"Unique identifier for the container registry credential.","name":"credentialId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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":"Credential revoked"},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Registry configuration conflict","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}/container-registry/repositories/{repositoryId}":{"delete":{"operationId":"deleteContainerRegistryRepository","tags":["container-registry"],"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","pattern":"crrepo_[0-9a-z]{28}$","description":"Unique identifier for the container registry repository.","example":"crrepo_625temdq3bnu25jw9rcux"},"required":true,"description":"Unique identifier for the container registry repository.","name":"repositoryId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are 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":{"confirmName":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[a-z0-9]+(?:[._-][a-z0-9]+)*(?:\\/[a-z0-9]+(?:[._-][a-z0-9]+)*)*$"},"disposition":{"type":"string","enum":["preserve","deleteContents"]}},"required":["confirmName","disposition"]}}}},"responses":{"202":{"description":"Repository deletion requested","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"crrepo_[0-9a-z]{28}$","description":"Unique identifier for the container registry repository.","example":"crrepo_625temdq3bnu25jw9rcux"},"logicalName":{"type":"string"},"desiredState":{"type":"string","enum":["present","deleteRequested","deleted"]},"status":{"type":"string","enum":["pending","creating","ready","deleting","deleted","failed"]},"verifiedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["id","logicalName","desiredState","status","verifiedAt"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Registry configuration conflict","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}/container-registry/verify":{"post":{"operationId":"verifyContainerRegistry","tags":["container-registry"],"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":{"202":{"description":"Verification requested","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"crroute_[0-9a-z]{28}$","description":"Unique identifier for the container registry route.","example":"crroute_c9t4xoy7fmiq7equtu20"},"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"managerId":{"type":"string"},"resourceId":{"type":"string"},"resourceRevision":{"type":"string","minLength":1},"desiredRevision":{"type":"integer","minimum":0},"appliedRevision":{"type":"integer","minimum":0},"status":{"type":"string","enum":["resolving","applying","connected","degraded","revoking","revoked"]},"lastVerifiedAt":{"type":"string","nullable":true,"format":"date-time"},"lastError":{"type":"string","nullable":true}},"required":["id","deploymentId","managerId","resourceId","resourceRevision","desiredRevision","appliedRevision","status","lastVerifiedAt","lastError"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Registry configuration conflict","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}/container-registry/revoke":{"post":{"operationId":"revokeContainerRegistry","tags":["container-registry"],"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":{"202":{"description":"Registry revocation requested","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"crroute_[0-9a-z]{28}$","description":"Unique identifier for the container registry route.","example":"crroute_c9t4xoy7fmiq7equtu20"},"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"managerId":{"type":"string"},"resourceId":{"type":"string"},"resourceRevision":{"type":"string","minLength":1},"desiredRevision":{"type":"integer","minimum":0},"appliedRevision":{"type":"integer","minimum":0},"status":{"type":"string","enum":["resolving","applying","connected","degraded","revoking","revoked"]},"lastVerifiedAt":{"type":"string","nullable":true,"format":"date-time"},"lastError":{"type":"string","nullable":true}},"required":["id","deploymentId","managerId","resourceId","resourceRevision","desiredRevision","appliedRevision","status","lastVerifiedAt","lastError"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Registry configuration conflict","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","nullable":true,"minLength":1,"maxLength":63,"pattern":"^[a-z][a-z0-9-]*$","description":"Filter to releases promoted to this channel. Defaults to production."},"required":false,"description":"Filter to releases promoted to this channel. Defaults to production.","name":"channel","in":"query"},{"schema":{"type":"string","enum":["true","false"],"default":"false"},"required":false,"name":"allChannels","in":"query"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["project","rollout","createdBy"]},"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","createdBy"]},"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/releases/{id}/deployments":{"get":{"operationId":"listReleaseDeployments","description":"List the project's deployments with their rollout state relative to this release.","x-speakeasy-group":"releases","x-speakeasy-name-override":"listDeployments","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":{"$ref":"#/components/schemas/ReleaseRolloutState"},"description":"Filter deployments by rollout state"},"required":false,"description":"Filter deployments by rollout state","name":"state","in":"query"},{"schema":{"type":"string","description":"Filter by deployment group ID or name"},"required":false,"description":"Filter by deployment group ID or name","name":"deploymentGroup","in":"query"},{"schema":{"type":"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 release deployments.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReleaseDeploymentsResponse"}}}},"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/release-channels":{"get":{"operationId":"listReleaseChannels","summary":"List release channels","description":"List the release channels configured for a project.","x-speakeasy-group":"releaseChannels","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":true,"description":"Filter by project ID or name.","name":"project","in":"query","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}}],"responses":{"200":{"description":"Project release channels.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ReleaseChannel"}}},"required":["items"]}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createReleaseChannel","summary":"Create a release channel","description":"Create a release channel for a project.","x-speakeasy-group":"releaseChannels","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"},{"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"}}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"$ref":"#/components/schemas/ReleaseChannelName"},"releaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"}},"required":["name"],"additionalProperties":false}}}},"responses":{"201":{"description":"Channel created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReleaseChannel"}}}},"400":{"description":"Invalid release.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/release-channels/{name}/promote":{"post":{"operationId":"promoteRelease","x-speakeasy-group":"releases","x-speakeasy-name-override":"promote","parameters":[{"schema":{"$ref":"#/components/schemas/ReleaseChannelName"},"required":true,"name":"name","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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"}}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"releaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"expectedReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"}},"required":["releaseId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Release promoted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReleaseChannel"}}}},"404":{"description":"Project, channel, or release not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Channel changed concurrently.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/release-channels/{name}":{"delete":{"operationId":"deleteReleaseChannel","summary":"Delete a release channel","description":"Delete a release channel from a project.","x-speakeasy-group":"releaseChannels","x-speakeasy-name-override":"delete","parameters":[{"schema":{"$ref":"#/components/schemas/ReleaseChannelName"},"required":true,"name":"name","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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":{"204":{"description":"Channel deleted."},"400":{"description":"Reserved channel.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project or channel not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Channel is still followed by deployments.","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":{"allOf":[{"$ref":"#/components/schemas/DeploymentPurpose"},{"description":"Filter by deployment purpose"}]},"required":false,"description":"Filter by deployment purpose","name":"purpose","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":{"allOf":[{"$ref":"#/components/schemas/DeploymentPurpose"},{"description":"Filter by deployment purpose"}]},"required":false,"description":"Filter by deployment purpose","name":"purpose","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"},"operation":{"$ref":"#/components/schemas/DeploymentUpdateOperationSummary"}},"required":["message","operation"]}}}},"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}/release-channel":{"post":{"operationId":"setDeploymentReleaseChannel","x-speakeasy-group":"deployments","x-speakeasy-name-override":"setReleaseChannel","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":{"type":"object","properties":{"channel":{"$ref":"#/components/schemas/ReleaseChannelName"}},"required":["channel"],"additionalProperties":false}}}},"responses":{"200":{"description":"Deployment release channel updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Deployment"}}}},"400":{"description":"Channel release is unavailable for the deployment platform.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment or release channel not found.","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}/binding-token":{"post":{"operationId":"generateManagerBindingToken","description":"Generate a short-lived deployment-scoped token for resolving opted-in remote bindings through the currently assigned manager.","x-speakeasy-group":"managers","x-speakeasy-name-override":"generateManagerBindingToken","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":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateManagerBindingTokenRequest"}}}},"responses":{"200":{"description":"Remote Bindings token and assigned manager URL.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateManagerBindingTokenResponse"}}}},"403":{"description":"The caller cannot access Remote Bindings for the deployment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Assigned manager or deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"The assigned manager is offline.","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/managers/{id}/container-registry/snapshot":{"get":{"operationId":"getContainerRegistryManagerSnapshot","tags":["container-registry"],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Complete desired registry snapshot assigned to this Manager","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContainerRegistryManagerSnapshot"}}}},"403":{"description":"Manager access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Snapshot revision conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/container-registry/applied":{"post":{"operationId":"applyContainerRegistryManagerSnapshot","tags":["container-registry"],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"routeId":{"type":"string","pattern":"crroute_[0-9a-z]{28}$","description":"Unique identifier for the container registry route.","example":"crroute_c9t4xoy7fmiq7equtu20"},"desiredRevision":{"type":"integer","minimum":0},"repositories":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"crrepo_[0-9a-z]{28}$","description":"Unique identifier for the container registry repository.","example":"crrepo_625temdq3bnu25jw9rcux"},"status":{"type":"string","enum":["ready","deleted","failed"]},"routableUpstreamName":{"type":"string","nullable":true,"minLength":1},"error":{"type":"string","nullable":true,"maxLength":2000}},"required":["id","status","routableUpstreamName","error"],"additionalProperties":false}},"verification":{"type":"object","nullable":true,"properties":{"succeeded":{"type":"boolean"},"observedAt":{"type":"string","format":"date-time"},"error":{"type":"string","nullable":true,"maxLength":2000}},"required":["succeeded","observedAt","error"],"additionalProperties":false}},"required":["routeId","desiredRevision","repositories","verification"],"additionalProperties":false}}}},"responses":{"200":{"description":"Applied registry snapshot revision","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplyContainerRegistrySnapshotResponse"}}}},"403":{"description":"Manager access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Snapshot revision conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","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":"string","description":"Filter events to a single release."},"required":false,"description":"Filter events to a single release.","name":"releaseId","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/bootstrap":{"post":{"operationId":"bootstrapCommands","description":"Resolve a deployment's current manager and mint a five-minute command capability. Sender tokens can dispatch and observe commands only for this deployment. Receiver tokens can lease and complete commands only for the resolved Container or Daemon target.","x-speakeasy-group":"commands","x-speakeasy-name-override":"bootstrap","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandBootstrapRequest"}}}},"responses":{"200":{"description":"Manager connection details and a short-lived command capability.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandBootstrapResponse"}}}},"400":{"description":"Invalid request or deployment state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"401":{"description":"Authentication required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"The caller cannot operate this deployment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment, manager, or receiver target not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"422":{"description":"The selected resource cannot run an external receiver.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"The assigned manager is offline.","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"},{"schema":{"type":"string","enum":["deployment","models","keys","bucket","registry"]},"required":false,"name":"setupItem","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":{"setupItem":{"type":"string","enum":["deployment","models","keys","bucket","registry"]},"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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":{"setupItem":{"type":"string","enum":["deployment","models","keys","bucket","registry"]},"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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/operations/plugins":{"get":{"operationId":"listOperationsPlugins","description":"List available operations plugins (builtin + custom) for a project, with their operations and risk tiers.","x-speakeasy-group":"operations","x-speakeasy-name-override":"listPlugins","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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":"The operations plugin catalog.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListOperationsPluginsResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"publishOperationsPlugin","description":"Register a custom operations plugin whose bundle ZIP has already been uploaded to S3 (see POST /plugins/upload-url). Replaces any existing plugin of the same name in that project. New custom plugins are enabled by default.","x-speakeasy-group":"operations","x-speakeasy-name-override":"publishPlugin","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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"}}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishOperationsPluginRequest"}}}},"responses":{"201":{"description":"The plugin was published.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishOperationsPluginResponse"}}}},"400":{"description":"Invalid metadata.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"402":{"description":"Custom plugins require a higher plan tier.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/operations/plugins/upload-url":{"post":{"operationId":"createOperationsBundleUploadUrl","description":"Get a presigned S3 URL to upload a custom operations plugin bundle ZIP. Upload the ZIP with a PUT to the returned url (sending the given Content-Type), then call POST /plugins to register it.","x-speakeasy-group":"operations","x-speakeasy-name-override":"createBundleUploadUrl","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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"}}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationsBundleUploadUrlRequest"}}}},"responses":{"200":{"description":"A presigned upload URL for the bundle ZIP.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationsBundleUploadUrlResponse"}}}},"402":{"description":"Custom plugins require a higher plan tier.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"Bundle storage is not configured.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/operations/plugins/{name}/enabled":{"patch":{"operationId":"setOperationsPluginEnabled","description":"Enable or disable an operations plugin (builtin or custom) for a project. Only enabled plugins are baked into the operator image and can be invoked.","x-speakeasy-group":"operations","x-speakeasy-name-override":"setPluginEnabled","parameters":[{"schema":{"type":"string","description":"Plugin name."},"required":true,"description":"Plugin name.","name":"name","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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"}}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetOperationsPluginEnabledRequest"}}}},"responses":{"200":{"description":"The plugin's enabled state was updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetOperationsPluginEnabledResponse"}}}},"404":{"description":"No such plugin for this project.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/operations/policy":{"get":{"operationId":"getOperationsPolicy","description":"Get a project's per-command approval policy. Mirrors what the operator enforces: `plugin/operation` / `plugin/*` / `*` patterns → auto | manual.","x-speakeasy-group":"operations","x-speakeasy-name-override":"getPolicy","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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":"The approval policy rules and default.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationsPolicyResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"put":{"operationId":"updateOperationsPolicy","description":"Replace a project's per-command approval policy (full rule set). Patterns are `plugin/operation`, `plugin/*`, or `*`; each maps to auto | manual.","x-speakeasy-group":"operations","x-speakeasy-name-override":"updatePolicy","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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"}}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOperationsPolicyRequest"}}}},"responses":{"200":{"description":"The updated approval policy.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationsPolicyResponse"}}}},"400":{"description":"Invalid request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/operations/invoke":{"post":{"operationId":"invokeOperation","description":"Invoke a plugin operation against a deployment. Honors the project's per-command approval policy.","x-speakeasy-group":"operations","x-speakeasy-name-override":"invoke","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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"}}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvokeOperationRequest"}}}},"responses":{"200":{"description":"The operation was dispatched or queued for approval.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvokeOperationResponse"}}}},"402":{"description":"Custom plugins require a higher plan tier.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Caller may not create commands for this deployment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Plugin or 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/access-requests":{"post":{"operationId":"createAccessRequest","description":"Create a pending access request covering a remediation plan's commands. Awaits the engineer gate before it is queued for the operator.","x-speakeasy-group":"operations","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are 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":{"deploymentId":{"type":"string"},"remediationPlanId":{"type":"string"},"title":{"type":"string"},"reason":{"type":"string"},"commands":{"type":"array","items":{"type":"object","properties":{"command":{"type":"string","example":"kubernetes/get-pods"},"summary":{"type":"string","example":"List pods in the ingestion namespace"}},"required":["command","summary"]},"minItems":1}},"required":["deploymentId","remediationPlanId","title","commands"]}}}},"responses":{"201":{"description":"The created access request.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"deploymentId":{"type":"string"},"remediationPlanId":{"type":"string"},"title":{"type":"string"},"reason":{"type":"string","nullable":true},"commands":{"type":"array","items":{"type":"object","properties":{"command":{"type":"string","example":"kubernetes/get-pods"},"summary":{"type":"string","example":"List pods in the ingestion namespace"}},"required":["command","summary"]}},"status":{"type":"string","enum":["pending-approval","queued","customer-approved","expired","rejected"]},"approvedUntil":{"type":"string","nullable":true}},"required":["id","deploymentId","remediationPlanId","title","reason","commands","status","approvedUntil"]}}}},"404":{"description":"Deployment or remediation plan not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/access-requests/{id}/queue":{"post":{"operationId":"queueAccessRequest","description":"Engineer gate — approve a pending access request, queuing it for the operator to materialize. Records who queued it.","x-speakeasy-group":"operations","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":"The queued access request, with the customer approve command.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"deploymentId":{"type":"string"},"remediationPlanId":{"type":"string"},"title":{"type":"string"},"reason":{"type":"string","nullable":true},"commands":{"type":"array","items":{"type":"object","properties":{"command":{"type":"string","example":"kubernetes/get-pods"},"summary":{"type":"string","example":"List pods in the ingestion namespace"}},"required":["command","summary"]}},"status":{"type":"string","enum":["pending-approval","queued","customer-approved","expired","rejected"]},"approvedUntil":{"type":"string","nullable":true},"kubectlApprove":{"type":"string","nullable":true}},"required":["id","deploymentId","remediationPlanId","title","reason","commands","status","approvedUntil","kubectlApprove"]}}}},"404":{"description":"Access request not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Access request is not pending approval.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/access-requests/{id}/coordinates":{"get":{"operationId":"getAccessRequestCoordinates","description":"The customer's kubectl approve command for a queued access request, or null until the operator has materialized the grant CR and reported its coordinates. Polled by the Slack handler to update the access-plan card.","x-speakeasy-group":"operations","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":"The approve command (or null) and current status.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["pending-approval","queued","customer-approved","expired","rejected"]},"kubectlApprove":{"type":"string","nullable":true}},"required":["status","kubectlApprove"]}}}},"404":{"description":"Access request not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/access-requests/pending":{"get":{"operationId":"listPendingAccessRequests","description":"Operator-facing: the queued access requests for a deployment, for the access-request sync loop to materialize as grant CRs.","x-speakeasy-ignore":true,"parameters":[{"schema":{"type":"string"},"required":true,"name":"deploymentId","in":"query"}],"responses":{"200":{"description":"Queued access requests for the deployment.","content":{"application/json":{"schema":{"type":"object","properties":{"requests":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"reason":{"type":"string","nullable":true},"commands":{"type":"array","items":{"type":"object","properties":{"command":{"type":"string","example":"kubernetes/get-pods"},"summary":{"type":"string","example":"List pods in the ingestion namespace"}},"required":["command","summary"]}}},"required":["id","title","reason","commands"]}}},"required":["requests"]}}}},"403":{"description":"Caller is not the deployment's manager runtime.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/access-requests/materialized":{"post":{"operationId":"reportMaterializedAccessRequests","description":"Operator-facing: record the namespace + CRD plural the operator materialized the grant CRs in, so the control plane can render the customer's exact kubectl approve command.","x-speakeasy-ignore":true,"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"deploymentId":{"type":"string"},"requestIds":{"type":"array","items":{"type":"string"}},"namespace":{"type":"string","minLength":1},"resourcePlural":{"type":"string","minLength":1}},"required":["deploymentId","requestIds","namespace","resourcePlural"]}}}},"responses":{"200":{"description":"Number of requests updated with CR coordinates.","content":{"application/json":{"schema":{"type":"object","properties":{"recorded":{"type":"number"}},"required":["recorded"]}}}},"403":{"description":"Caller is not the deployment's manager runtime.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/access-requests/approvals":{"post":{"operationId":"reportAccessApprovals","description":"Operator-facing: record the customer's approval windows reported back by the sync loop. Moves each request to customer-approved and resumes the investigation to dispatch commands.","x-speakeasy-ignore":true,"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"deploymentId":{"type":"string"},"approvals":{"type":"array","items":{"type":"object","properties":{"requestId":{"type":"string"},"approvedUntil":{"type":"string"}},"required":["requestId","approvedUntil"]}}},"required":["deploymentId","approvals"]}}}},"responses":{"200":{"description":"Number of approvals recorded.","content":{"application/json":{"schema":{"type":"object","properties":{"recorded":{"type":"number"}},"required":["recorded"]}}}},"403":{"description":"Caller is not the deployment's manager runtime.","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/renew":{"post":{"operationId":"syncRenew","x-speakeasy-group":"sync","x-speakeasy-name-override":"renew","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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/SyncRenewRequest"}}}},"responses":{"200":{"description":"Renewal processed. Inspect `leases` for per-deployment outcomes; a lost lease is reported there rather than failing the whole batch.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"True when every requested deployment was renewed."},"leases":{"type":"array","items":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"renewed":{"type":"boolean","description":"False when this session no longer holds a live lease."},"leaseExpiresAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["deploymentId","renewed","leaseExpiresAt"]},"description":"Per-deployment renewal outcome."}},"required":["success","leases"]}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"The session no longer owns the deployment.","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","ai"]},"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","ai"]},"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","ai"]},"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 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"]}],"description":"AWS Aurora Serverless v2 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"]}],"description":"GCP Cloud SQL 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"]}],"description":"Azure Flexible Server 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"]}],"description":"Local embedded Postgres 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"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"availability":{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]},"region":{"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":["availability","region","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsBedrock"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"availability":{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]},"location":{"type":"string"},"project":{"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":["availability","location","project","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpVertex"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"accountName":{"type":"string"},"availability":{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]},"endpoint":{"type":"string","nullable":true},"location":{"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"]}},"required":["accountName","availability","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureFoundry"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"availability":{"oneOf":[{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]},{"nullable":true}]},"provider":{"type":"string","description":"The BYO-key provider serving this binding (e.g. \"openai\"). Used on the Local\nplatform, where the app brings its own provider key instead of an ambient cloud."},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["provider","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["external"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["ai"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"type":"object","properties":{"data":{"type":"object","properties":{"enabled":{"type":"boolean"},"keyArn":{"type":"string"},"keySpec":{"type":"string"},"keyState":{"type":"string"},"keyUsage":{"type":"string"},"status":{"type":"object","properties":{"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true}},"required":["health","lifecycle"]}},"required":["enabled","keyArn","keySpec","keyState","keyUsage","status"]},"provider":{"type":"string","enum":["aws-kms"]}},"required":["data","provider"]},{"type":"object","properties":{"data":{"type":"object","properties":{"algorithm":{"type":"string","nullable":true},"cryptoKeyName":{"type":"string"},"primaryState":{"type":"string","nullable":true},"primaryVersion":{"type":"string","nullable":true},"purpose":{"type":"string"},"status":{"type":"object","properties":{"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true}},"required":["health","lifecycle"]}},"required":["cryptoKeyName","purpose","status"]},"provider":{"type":"string","enum":["gcp-cloud-kms"]}},"required":["data","provider"]},{"type":"object","properties":{"data":{"type":"object","properties":{"enabled":{"type":"boolean","nullable":true},"keyId":{"type":"string"},"keyOperations":{"type":"array","items":{"type":"string"}},"keyType":{"type":"string"},"recoveryLevel":{"type":"string","nullable":true},"status":{"type":"object","properties":{"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true}},"required":["health","lifecycle"]}},"required":["keyId","keyOperations","keyType","status"]},"provider":{"type":"string","enum":["azure-key-vault"]}},"required":["data","provider"]}]},"resourceType":{"type":"string","enum":["key"]}},"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/aws-virtual-keys":{"get":{"operationId":"listAwsVirtualKeys","parameters":[{"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":"AWS Virtual Keys in a project","content":{"application/json":{"schema":{"type":"object","properties":{"virtualKeys":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"projectId":{"type":"string"},"status":{"type":"string","enum":["provisioning","ready","action-required","decommissioning","deletion-pending","deleted","failed"]},"externalKeyId":{"type":"string"},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"customKeyStoreId":{"type":"string","nullable":true},"kmsKeyArn":{"type":"string","nullable":true},"alias":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"deletionWindowDays":{"type":"integer"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"canaryPassedAt":{"type":"string","nullable":true,"format":"date-time"},"deletionScheduledAt":{"type":"string","nullable":true,"format":"date-time"},"finalDeletionObservedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","status","externalKeyId","awsAccountId","awsRegion","customKeyStoreId","kmsKeyArn","alias","description","deletionWindowDays","tags","observedAt","canaryPassedAt","deletionScheduledAt","finalDeletionObservedAt","createdAt","updatedAt"]}}},"required":["virtualKeys"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createAwsVirtualKey","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"selector":{"oneOf":[{"type":"object","properties":{"externalId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"}},"required":["externalId"],"additionalProperties":false},{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"}},"required":["deploymentId"],"additionalProperties":false}]},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"idempotencyKey":{"type":"string","minLength":1,"maxLength":128},"alias":{"type":"string","nullable":true,"minLength":1,"maxLength":256},"description":{"type":"string","nullable":true,"maxLength":8192},"deletionWindowDays":{"type":"integer","minimum":7,"maximum":30,"default":30},"tags":{"type":"object","additionalProperties":{"type":"string","maxLength":256},"default":{}}},"required":["selector","awsAccountId","awsRegion","idempotencyKey"]}}}},"responses":{"200":{"description":"Created or resumed Virtual Key","content":{"application/json":{"schema":{"type":"object","properties":{"virtualKey":{"type":"object","properties":{"id":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"projectId":{"type":"string"},"status":{"type":"string","enum":["provisioning","ready","action-required","decommissioning","deletion-pending","deleted","failed"]},"externalKeyId":{"type":"string"},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"customKeyStoreId":{"type":"string","nullable":true},"kmsKeyArn":{"type":"string","nullable":true},"alias":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"deletionWindowDays":{"type":"integer"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"canaryPassedAt":{"type":"string","nullable":true,"format":"date-time"},"deletionScheduledAt":{"type":"string","nullable":true,"format":"date-time"},"finalDeletionObservedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","status","externalKeyId","awsAccountId","awsRegion","customKeyStoreId","kmsKeyArn","alias","description","deletionWindowDays","tags","observedAt","canaryPassedAt","deletionScheduledAt","finalDeletionObservedAt","createdAt","updatedAt"]},"setup":{"type":"object","properties":{"proxyUriEndpoint":{"type":"string","format":"uri"},"proxyUriPath":{"type":"string"},"accessKeyId":{"type":"string"},"secretAccessKey":{"type":"string"},"externalKeyId":{"type":"string"}},"required":["proxyUriEndpoint","proxyUriPath","accessKeyId","secretAccessKey","externalKeyId"]}},"required":["virtualKey","setup"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project or Enterprise Key not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Idempotency conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"Gateway unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/aws-virtual-keys/{id}/rotate-credential":{"post":{"operationId":"rotateAwsVirtualKeyCredential","parameters":[{"schema":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"required":true,"description":"Unique identifier for the aws virtual key.","name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"generation":{"type":"integer","minimum":2}},"required":["generation"]}}}},"responses":{"200":{"description":"The resumable XKS proxy credential rotation bundle","content":{"application/json":{"schema":{"type":"object","properties":{"virtualKey":{"type":"object","properties":{"id":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"projectId":{"type":"string"},"status":{"type":"string","enum":["provisioning","ready","action-required","decommissioning","deletion-pending","deleted","failed"]},"externalKeyId":{"type":"string"},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"customKeyStoreId":{"type":"string","nullable":true},"kmsKeyArn":{"type":"string","nullable":true},"alias":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"deletionWindowDays":{"type":"integer"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"canaryPassedAt":{"type":"string","nullable":true,"format":"date-time"},"deletionScheduledAt":{"type":"string","nullable":true,"format":"date-time"},"finalDeletionObservedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","status","externalKeyId","awsAccountId","awsRegion","customKeyStoreId","kmsKeyArn","alias","description","deletionWindowDays","tags","observedAt","canaryPassedAt","deletionScheduledAt","finalDeletionObservedAt","createdAt","updatedAt"]},"setup":{"type":"object","properties":{"proxyUriEndpoint":{"type":"string","format":"uri"},"proxyUriPath":{"type":"string"},"accessKeyId":{"type":"string"},"secretAccessKey":{"type":"string"},"externalKeyId":{"type":"string"}},"required":["proxyUriEndpoint","proxyUriPath","accessKeyId","secretAccessKey","externalKeyId"]}},"required":["virtualKey","setup"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Virtual Key not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Virtual Key cannot begin rotation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/aws-virtual-keys/{id}/restore":{"post":{"operationId":"restoreAwsVirtualKey","parameters":[{"schema":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"required":true,"description":"Unique identifier for the aws virtual key.","name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"kmsKeyArn":{"type":"string","pattern":"^arn:(?:aws|aws-us-gov):kms:[a-z0-9-]+:\\d{12}:key\\/[A-Za-z0-9-]+$"}},"required":["kmsKeyArn"]}}}},"responses":{"200":{"description":"Virtual Key awaiting a successful AWS XKS canary after restore","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"projectId":{"type":"string"},"status":{"type":"string","enum":["provisioning","ready","action-required","decommissioning","deletion-pending","deleted","failed"]},"externalKeyId":{"type":"string"},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"customKeyStoreId":{"type":"string","nullable":true},"kmsKeyArn":{"type":"string","nullable":true},"alias":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"deletionWindowDays":{"type":"integer"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"canaryPassedAt":{"type":"string","nullable":true,"format":"date-time"},"deletionScheduledAt":{"type":"string","nullable":true,"format":"date-time"},"finalDeletionObservedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","status","externalKeyId","awsAccountId","awsRegion","customKeyStoreId","kmsKeyArn","alias","description","deletionWindowDays","tags","observedAt","canaryPassedAt","deletionScheduledAt","finalDeletionObservedAt","createdAt","updatedAt"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Virtual Key not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Virtual Key cannot be restored","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/aws-virtual-keys/{id}/finalize-deletion":{"post":{"operationId":"finalizeAwsVirtualKeyDeletion","parameters":[{"schema":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"required":true,"description":"Unique identifier for the aws virtual key.","name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"kmsKeyArn":{"type":"string","pattern":"^arn:(?:aws|aws-us-gov):kms:[a-z0-9-]+:\\d{12}:key\\/[A-Za-z0-9-]+$"}},"required":["kmsKeyArn"]}}}},"responses":{"200":{"description":"Virtual Key whose final AWS KMS deletion was observed","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"projectId":{"type":"string"},"status":{"type":"string","enum":["provisioning","ready","action-required","decommissioning","deletion-pending","deleted","failed"]},"externalKeyId":{"type":"string"},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"customKeyStoreId":{"type":"string","nullable":true},"kmsKeyArn":{"type":"string","nullable":true},"alias":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"deletionWindowDays":{"type":"integer"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"canaryPassedAt":{"type":"string","nullable":true,"format":"date-time"},"deletionScheduledAt":{"type":"string","nullable":true,"format":"date-time"},"finalDeletionObservedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","status","externalKeyId","awsAccountId","awsRegion","customKeyStoreId","kmsKeyArn","alias","description","deletionWindowDays","tags","observedAt","canaryPassedAt","deletionScheduledAt","finalDeletionObservedAt","createdAt","updatedAt"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Virtual Key not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Virtual Key deletion cannot be finalized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/aws-virtual-keys/{id}/decommission":{"post":{"operationId":"decommissionAwsVirtualKey","parameters":[{"schema":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"required":true,"description":"Unique identifier for the aws virtual key.","name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"kmsKeyArn":{"type":"string","pattern":"^arn:(?:aws|aws-us-gov):kms:[a-z0-9-]+:\\d{12}:key\\/[A-Za-z0-9-]+$"},"deletionScheduledAt":{"type":"string","format":"date-time"}},"required":["kmsKeyArn","deletionScheduledAt"]}}}},"responses":{"200":{"description":"Virtual Key with AWS deletion scheduled","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"projectId":{"type":"string"},"status":{"type":"string","enum":["provisioning","ready","action-required","decommissioning","deletion-pending","deleted","failed"]},"externalKeyId":{"type":"string"},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"customKeyStoreId":{"type":"string","nullable":true},"kmsKeyArn":{"type":"string","nullable":true},"alias":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"deletionWindowDays":{"type":"integer"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"canaryPassedAt":{"type":"string","nullable":true,"format":"date-time"},"deletionScheduledAt":{"type":"string","nullable":true,"format":"date-time"},"finalDeletionObservedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","status","externalKeyId","awsAccountId","awsRegion","customKeyStoreId","kmsKeyArn","alias","description","deletionWindowDays","tags","observedAt","canaryPassedAt","deletionScheduledAt","finalDeletionObservedAt","createdAt","updatedAt"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Virtual Key not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"AWS key does not match","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/aws-virtual-keys/{id}":{"get":{"operationId":"getAwsVirtualKey","parameters":[{"schema":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"required":true,"description":"Unique identifier for the aws virtual key.","name":"id","in":"path"}],"responses":{"200":{"description":"AWS Virtual Key","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"projectId":{"type":"string"},"status":{"type":"string","enum":["provisioning","ready","action-required","decommissioning","deletion-pending","deleted","failed"]},"externalKeyId":{"type":"string"},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"customKeyStoreId":{"type":"string","nullable":true},"kmsKeyArn":{"type":"string","nullable":true},"alias":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"deletionWindowDays":{"type":"integer"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"canaryPassedAt":{"type":"string","nullable":true,"format":"date-time"},"deletionScheduledAt":{"type":"string","nullable":true,"format":"date-time"},"finalDeletionObservedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","status","externalKeyId","awsAccountId","awsRegion","customKeyStoreId","kmsKeyArn","alias","description","deletionWindowDays","tags","observedAt","canaryPassedAt","deletionScheduledAt","finalDeletionObservedAt","createdAt","updatedAt"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Virtual Key not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/aws-virtual-keys/{id}/continue":{"post":{"operationId":"continueAwsVirtualKey","parameters":[{"schema":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"required":true,"description":"Unique identifier for the aws virtual key.","name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"customKeyStoreId":{"type":"string","pattern":"^cks-[A-Za-z0-9]+$"},"kmsKeyArn":{"type":"string","pattern":"^arn:(?:aws|aws-us-gov):kms:[a-z0-9-]+:\\d{12}:key\\/[A-Za-z0-9-]+$"}},"required":["customKeyStoreId","kmsKeyArn"]}}}},"responses":{"200":{"description":"Updated AWS setup facts","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"projectId":{"type":"string"},"status":{"type":"string","enum":["provisioning","ready","action-required","decommissioning","deletion-pending","deleted","failed"]},"externalKeyId":{"type":"string"},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"customKeyStoreId":{"type":"string","nullable":true},"kmsKeyArn":{"type":"string","nullable":true},"alias":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"deletionWindowDays":{"type":"integer"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"canaryPassedAt":{"type":"string","nullable":true,"format":"date-time"},"deletionScheduledAt":{"type":"string","nullable":true,"format":"date-time"},"finalDeletionObservedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","status","externalKeyId","awsAccountId","awsRegion","customKeyStoreId","kmsKeyArn","alias","description","deletionWindowDays","tags","observedAt","canaryPassedAt","deletionScheduledAt","finalDeletionObservedAt","createdAt","updatedAt"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Virtual Key not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Setup facts conflict","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 9acdfeb03..3cbfcb1ff 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","project.encryption","project.ai-gateway","project.remote-bindings"],"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,"pattern":"^(?:[0-9a-fA-F]{40}|[0-9a-fA-F]{64})$","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,"description":"The author identity recorded by Git. This is not guaranteed to be an RFC-valid email address.","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."},"customerConnections":{"type":"object","nullable":true,"properties":{"schemaVersion":{"type":"number","enum":[1]},"connections":{"type":"object","properties":{"deployment":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]}},"required":["enabled"],"additionalProperties":false},"keys":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]},"applicationEncryption":{"type":"boolean","enum":[true]}},"required":["enabled","applicationEncryption"],"additionalProperties":false},"models":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]},"allowedProviders":{"type":"array","items":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic","databricks","openai"]},"minItems":1,"maxItems":6},"requirements":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string","minLength":1,"maxLength":256},"clientApis":{"type":"array","items":{"type":"string","enum":["openai-chat","openai-responses","anthropic-messages"]},"minItems":1,"maxItems":3},"required":{"type":"boolean"}},"required":["publicModelId","clientApis","required"],"additionalProperties":false},"maxItems":100}},"required":["enabled","allowedProviders","requirements"],"additionalProperties":false},"storage":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]},"access":{"type":"string","enum":["read-write"]}},"required":["enabled","access"],"additionalProperties":false},"registry":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]},"repositories":{"type":"array","items":{"type":"string","minLength":1,"maxLength":128},"maxItems":100},"credentialPolicy":{"type":"string","enum":["pull-only","push-and-pull"]}},"required":["enabled","repositories","credentialPolicy"],"additionalProperties":false}},"additionalProperties":false}},"default":null,"required":["schemaVersion","connections"],"additionalProperties":false,"description":"Customer infrastructure offered by this Project through exact built-in or application-authored sources."},"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","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","nullable":true},"stack":{"allOf":[{"$ref":"#/components/schemas/StackByPlatform"}],"nullable":true}},"required":["id","version","stack"]},"supportedPlatforms":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","machines","local","test"],"description":"Represents the target cloud platform."}},"setupItems":{"type":"array","items":{"type":"string","enum":["alien-stack","models","keys","storage","registry"]}},"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"}},"setupPackagesStatus":{"type":"string","enum":["preparing","ready","failed"],"description":"Whether at least one complete automated setup package is ready across all selected setup items."}},"required":["activeRelease","supportedPlatforms","setupItems","visiblePackageTypes","visibleSetupMethods","setupPackagesStatus"]},"StackByPlatform":{"type":"object","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"]},"CustomerConnectionMaterialization":{"type":"object","properties":{"customerConnections":{"$ref":"#/components/schemas/CustomerConnections"},"source":{"type":"object","properties":{"definitionId":{"type":"string","enum":["customer-ai","customer-key","customer-storage"]},"definitionVersion":{"type":"string"},"releaseId":{"type":"string"}},"required":["definitionId","definitionVersion","releaseId"]},"packages":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["cloudformation","terraform"]},"status":{"type":"string","enum":["pending","building","ready","failed","canceled"]}},"required":["type","status"]}}},"required":["customerConnections","source","packages"]},"CustomerConnections":{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"connections":{"type":"object","properties":{"deployment":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]}},"required":["enabled"],"additionalProperties":false},"keys":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]},"applicationEncryption":{"type":"boolean","enum":[true]}},"required":["enabled","applicationEncryption"],"additionalProperties":false},"models":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]},"allowedProviders":{"type":"array","items":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic","databricks","openai"]},"minItems":1,"maxItems":6},"requirements":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string","minLength":1,"maxLength":256},"clientApis":{"type":"array","items":{"type":"string","enum":["openai-chat","openai-responses","anthropic-messages"]},"minItems":1,"maxItems":3},"required":{"type":"boolean"}},"required":["publicModelId","clientApis","required"],"additionalProperties":false},"maxItems":100}},"required":["enabled","allowedProviders","requirements"],"additionalProperties":false},"storage":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]},"access":{"type":"string","enum":["read-write"]}},"required":["enabled","access"],"additionalProperties":false},"registry":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]},"repositories":{"type":"array","items":{"type":"string","minLength":1,"maxLength":128},"maxItems":100},"credentialPolicy":{"type":"string","enum":["pull-only","push-and-pull"]}},"required":["enabled","repositories","credentialPolicy"],"additionalProperties":false}},"additionalProperties":false}},"required":["schemaVersion","connections"],"additionalProperties":false},"ConfigureCustomerModelsRequest":{"type":"object","properties":{"allowedProviders":{"type":"array","items":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic","databricks","openai"]},"minItems":1,"maxItems":5},"requirements":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string","minLength":1,"maxLength":256},"clientApis":{"type":"array","items":{"type":"string","enum":["openai-chat","openai-responses","anthropic-messages"]},"minItems":1,"maxItems":3},"required":{"type":"boolean"}},"required":["publicModelId","clientApis","required"],"additionalProperties":false},"maxItems":100}},"required":["allowedProviders","requirements"],"additionalProperties":false},"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"},"externalId":{"type":"string","nullable":true,"minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"},"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","externalId","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"},"externalId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"},"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"]},"EnsureDeploymentGroupByExternalIdRequest":{"type":"object","properties":{"externalId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"},"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":["externalId","name","project"]},"CreateSetupLinkResponse":{"allOf":[{"$ref":"#/components/schemas/CreateDeploymentGroupTokenResponse"},{"type":"object","properties":{"deploymentGroup":{"$ref":"#/components/schemas/DeploymentGroup"}},"required":["deploymentGroup"]}]},"CreateDeploymentGroupTokenResponse":{"type":"object","properties":{"token":{"type":"string","description":"The API key token"},"deploymentLink":{"type":"string","description":"Formatted deployment link"}},"required":["token","deploymentLink"]},"CreateSetupLinkRequest":{"allOf":[{"$ref":"#/components/schemas/EnsureDeploymentGroupByExternalIdRequest"},{"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"},"setupItems":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentSetupItemSelection"},"maxItems":8,"description":"Customer infrastructure to include. The server snapshots its exact reviewed sources."},"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"]},"DeploymentSetupItemSelection":{"type":"object","properties":{"item":{"type":"string","enum":["alien-stack","models","keys","storage","registry"]},"required":{"type":"boolean"},"releaseChannel":{"type":"string","minLength":1,"maxLength":63}},"required":["item","required"],"additionalProperties":false},"StackInputValuesRequest":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/StackInputValueRequest"},"default":{}},"StackInputValueRequest":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"type":"string"}}]},"ProjectIDOrNameQueryParam":{"type":"string","maxLength":100,"description":"Filter by project ID or name."},"SetDeploymentGroupExternalIdRequest":{"type":"object","properties":{"externalId":{"type":"string","nullable":true,"minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"}},"required":["externalId"]},"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"}}},"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"},"setupItems":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentSetupItemSelection"},"maxItems":8,"description":"Customer infrastructure to include. The server snapshots its exact reviewed sources."},"inputValues":{"$ref":"#/components/schemas/StackInputValuesRequest"}},"required":["deploymentSetupConfig"]},"CreateFirstPartyDeploymentSessionResponse":{"type":"object","properties":{"token":{"type":"string","description":"The deployment-group session token"}},"required":["token"]},"ExternalAIBindingState":{"type":"object","properties":{"binding":{"$ref":"#/components/schemas/ExternalAIBinding"}},"required":["binding"]},"ExternalAIBinding":{"type":"object","nullable":true,"properties":{"id":{"type":"string"},"provider":{"type":"string","enum":["anthropic","openai"]},"keyFingerprint":{"type":"string"},"availableProviderModelIds":{"type":"array","items":{"type":"string"}},"verifiedAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","provider","keyFingerprint","availableProviderModelIds","verifiedAt","updatedAt"]},"PutExternalAIBindingRequest":{"type":"object","properties":{"provider":{"type":"string","enum":["anthropic","openai"]},"apiKey":{"type":"string","minLength":1,"maxLength":512},"acknowledgeAlienCredentialAccess":{"type":"boolean","enum":[true]}},"required":["provider","apiKey","acknowledgeAlienCredentialAccess"],"additionalProperties":false},"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":{"currentChannels":{"type":"array","items":{"$ref":"#/components/schemas/ReleaseChannelName"},"description":"Channels for which this release is currently selected"},"commitUrl":{"type":"string","nullable":true,"format":"uri","description":"Validated canonical provider URL for the exact commit"},"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"},"createdBy":{"type":"object","nullable":true,"properties":{"id":{"type":"string","description":"User ID"},"name":{"type":"string","description":"User's display name"},"email":{"type":"string","description":"User's email address"},"image":{"type":"string","nullable":true,"description":"User's avatar image URL"}},"required":["id","name","email","image"],"description":"Platform user who created the release, included when ?include=createdBy is used"}},"required":["currentChannels","commitUrl"]}]},"ReleaseChannelName":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z][a-z0-9-]*$"},"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":{"allOf":[{"$ref":"#/components/schemas/StackByPlatform"}],"nullable":true},"setupFingerprints":{"allOf":[{"$ref":"#/components/schemas/SetupFingerprintMap"},{"description":"Per-target setup compatibility fingerprints for this release"}]},"rootDirectory":{"type":"string","nullable":true,"maxLength":256},"createdByUserId":{"type":"string","nullable":true,"maxLength":128,"description":"ID of the platform user who created the release, if known"},"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},"channel":{"allOf":[{"$ref":"#/components/schemas/ReleaseChannelName"},{"description":"Release channel to advance. Defaults to production."}]}},"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"]},"ReleaseDeploymentsResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ReleaseDeploymentItem"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"},"stateCounts":{"$ref":"#/components/schemas/ReleaseRolloutStateCounts"}},"required":["items","nextCursor","stateCounts"]},"ReleaseDeploymentItem":{"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."},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","machines","local","test"],"description":"Target platform 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"},"deploymentGroup":{"type":"object","nullable":true,"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"},"externalId":{"type":"string","nullable":true,"minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"}},"required":["id","name","externalId"],"description":"Deployment group this deployment belongs to"},"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"},"lastHeartbeatAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last received heartbeat"},"rolloutState":{"$ref":"#/components/schemas/ReleaseRolloutState"},"releasedAt":{"type":"string","format":"date-time","nullable":true,"description":"When this release went live on the deployment, null if it never did"},"durationMs":{"type":"integer","nullable":true,"description":"Time from release creation until the deployment finished updating, in milliseconds. Null for initial provisions and deployments that never ran this release."},"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"}},"required":["id","name","status","platform","rolloutState","releasedAt","durationMs"]},"ReleaseRolloutState":{"type":"string","enum":["updated","updating","failed","pending","pinned-other","superseded","on-other"]},"ReleaseRolloutStateCounts":{"type":"object","properties":{"updated":{"type":"integer"},"updating":{"type":"integer"},"failed":{"type":"integer"},"pending":{"type":"integer"},"pinned-other":{"type":"integer"},"superseded":{"type":"integer"},"on-other":{"type":"integer"}},"required":["updated","updating","failed","pending","pinned-other","superseded","on-other"],"description":"Deployment counts per rollout state across all deployments the filters allow (ignores the state filter)"},"ReleaseChannel":{"type":"object","properties":{"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"name":{"$ref":"#/components/schemas/ReleaseChannelName"},"currentReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"deploymentCount":{"type":"integer","minimum":0},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["workspaceId","projectId","name","currentReleaseId","createdAt","updatedAt"]},"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"},"purpose":{"$ref":"#/components/schemas/DeploymentPurpose"},"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"},"releaseChannel":{"allOf":[{"$ref":"#/components/schemas/ReleaseChannelName"},{"description":"Named release stream followed when the deployment is not pinned"}]},"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","purpose","releaseChannel","retryRequested","createdAt","updatedAt","managerId","workspaceId"]},"DeploymentProtocolVersion":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"DeploymentState protocol version owned by the runtime/manager"},"DeploymentPurpose":{"type":"string","enum":["application","encryption","ai","storage","container-registry"],"description":"Operational purpose of this deployment within its customer environment."},"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"},"externalId":{"type":"string","nullable":true,"minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"}},"required":["id","name","externalId"]},"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"}}}]},"DeploymentUpdateOperationSummary":{"type":"object","nullable":true,"properties":{"id":{"type":"string","pattern":"duop_[0-9a-z]{28}$","description":"Unique identifier for the deployment update operation.","example":"duop_0vtxpb1sw4sbcdwg2xo37q6"},"status":{"$ref":"#/components/schemas/DeploymentUpdateOperationStatus"},"reasons":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentUpdateReason"}},"targetReleaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"changedKeys":{"type":"array","items":{"type":"string"}},"requestedAt":{"type":"string","format":"date-time"},"startedAt":{"type":"string","format":"date-time","nullable":true},"completedAt":{"type":"string","format":"date-time","nullable":true}},"required":["id","status","reasons","targetReleaseId","changedKeys","requestedAt"]},"DeploymentUpdateOperationStatus":{"type":"string","enum":["queued","applying","succeeded","failed","superseded"]},"DeploymentUpdateReason":{"type":"string","enum":["configuration","redeploy","release"]},"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"},"purpose":{"$ref":"#/components/schemas/DeploymentPurpose"},"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":{"initialSetupAuthority":{"type":"string","enum":["importedHandoff","directSetup"],"description":"Actor that owns structural work during the initial setup phase."},"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}]},"persistedGateAnswers":{"type":"object","properties":{},"additionalProperties":{"type":"boolean"},"description":"Canonical resolved answers for inputs that gate Frozen resources,\nkeyed by input id, recorded when the deployment is created or its\nsetup import registers.\n\nA frozen gate's answer is fixed for the deployment's lifetime: the\nupdate path refuses input values that conflict with these, and a Live\nresource sharing such an input resolves the persisted answer forever."},"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"},"releaseChannel":{"allOf":[{"$ref":"#/components/schemas/ReleaseChannelName"},{"description":"Named release stream followed when the deployment is not pinned"}]},"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"},"updateState":{"type":"object","properties":{"active":{"$ref":"#/components/schemas/DeploymentUpdateOperationSummary"},"next":{"$ref":"#/components/schemas/DeploymentUpdateOperationSummary"},"latest":{"$ref":"#/components/schemas/DeploymentUpdateOperationSummary"}},"required":["active","next","latest"],"description":"Durable progress for deployment updates"},"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","purpose","stackSettings","releaseChannel","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."},"releaseChannel":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z][a-z0-9-]*$","default":"production","description":"Release channel followed while this deployment is not pinned."},"setupItem":{"type":"string","enum":["alien-stack","models","keys","storage"],"description":"Customer setup item selected from this deployment-group token."}},"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"},"setupItem":{"type":"string","enum":["alien-stack","models","keys","storage","registry"],"description":"Exact item selected from a tailored customer setup link."},"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":{"initialSetupAuthority":{"type":"string","enum":["importedHandoff","directSetup"],"description":"Actor that owns structural work during the initial setup phase."},"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}]},"persistedGateAnswers":{"type":"object","properties":{},"additionalProperties":{"type":"boolean"},"description":"Canonical resolved answers for inputs that gate Frozen resources,\nkeyed by input id, recorded when the deployment is created or its\nsetup import registers.\n\nA frozen gate's answer is fixed for the deployment's lifetime: the\nupdate path refuses input values that conflict with these, and a Live\nresource sharing such an input resolves the persisted answer forever."},"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 resume its followed channel.","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"},"outcome":{"type":"string","enum":["accepted","unchanged"]},"operation":{"$ref":"#/components/schemas/DeploymentUpdateOperationSummary"}},"required":["runtimeUpdateRequested","outcome","operation"]}]},"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","nullable":true,"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"},"items":{"type":"array","items":{"type":"object","properties":{"item":{"type":"string","enum":["alien-stack","models","keys","storage","registry"]},"source":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["application-release"]},"releaseChannel":{"type":"string","minLength":1,"maxLength":63},"releaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"resourceId":{"type":"string","minLength":1,"maxLength":256}},"required":["type","releaseChannel","releaseId"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["built-in"]},"definitionId":{"type":"string","enum":["customer-ai","customer-key","customer-storage","customer-registry"]},"version":{"type":"string","minLength":1,"maxLength":64},"sourceReleaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"}},"required":["type","definitionId","version","sourceReleaseId"],"additionalProperties":false}]},"required":{"type":"boolean"},"configuration":{"type":"object","properties":{"allowedProviders":{"type":"array","items":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic","databricks","openai"]},"minItems":1,"maxItems":6},"modelRequirements":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string","minLength":1,"maxLength":256},"clientApis":{"type":"array","items":{"type":"string","enum":["openai-chat","openai-responses","anthropic-messages"]},"minItems":1,"maxItems":3},"required":{"type":"boolean"}},"required":["publicModelId","clientApis","required"],"additionalProperties":false},"maxItems":100}},"additionalProperties":false}},"required":["item","source","required"],"additionalProperties":false},"maxItems":8,"description":"Immutable setup items and exact sources captured when this setup link is created."},"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}]},"channel":{"type":"string","description":"Name of the channel that moved"},"previousReleaseId":{"type":"string","nullable":true,"description":"ID of the release that was previously current, if any"},"releaseId":{"type":"string","description":"ID of the release that is now current"},"type":{"type":"string","enum":["ReleaseChannelUpdated"]}},"required":["channel","releaseId","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}]},"channel":{"type":"string","description":"Newly followed channel"},"deploymentId":{"type":"string","description":"ID of the deployment"},"previousChannel":{"type":"string","description":"Previously followed channel"},"type":{"type":"string","enum":["DeploymentReleaseChannelChanged"]}},"required":["channel","deploymentId","previousChannel","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"]},"GenerateManagerBindingTokenResponse":{"type":"object","properties":{"accessToken":{"type":"string"},"expiresIn":{"type":"number","nullable":true},"tokenType":{"type":"string","enum":["Bearer"]},"managerUrl":{"type":"string"}},"required":["accessToken","expiresIn","tokenType","managerUrl"]},"GenerateManagerBindingTokenRequest":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"}},"required":["deploymentId"],"additionalProperties":false},"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"}},"items":{"type":"array","items":{"type":"object","properties":{"item":{"type":"string","enum":["alien-stack","models","keys","storage","registry"]},"source":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["application-release"]},"releaseChannel":{"type":"string","minLength":1,"maxLength":63},"releaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"resourceId":{"type":"string","minLength":1,"maxLength":256}},"required":["type","releaseChannel","releaseId"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["built-in"]},"definitionId":{"type":"string","enum":["customer-ai","customer-key","customer-storage","customer-registry"]},"version":{"type":"string","minLength":1,"maxLength":64},"sourceReleaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"}},"required":["type","definitionId","version","sourceReleaseId"],"additionalProperties":false}]},"required":{"type":"boolean"},"configuration":{"type":"object","properties":{"allowedProviders":{"type":"array","items":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic","databricks","openai"]},"minItems":1,"maxItems":6},"modelRequirements":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string","minLength":1,"maxLength":256},"clientApis":{"type":"array","items":{"type":"string","enum":["openai-chat","openai-responses","anthropic-messages"]},"minItems":1,"maxItems":3},"required":{"type":"boolean"}},"required":["publicModelId","clientApis","required"],"additionalProperties":false},"maxItems":100}},"additionalProperties":false}},"required":["item","source","required"],"additionalProperties":false},"maxItems":8}},"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","nullable":true,"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"]},"CommandBootstrapResponse":{"type":"object","properties":{"managerUrl":{"type":"string","format":"uri","description":"Current customer-facing manager URL"},"token":{"type":"string","minLength":1,"description":"Short-lived command capability token"},"expiresAt":{"type":"string","format":"date-time","description":"Capability expiry in RFC 3339 format"},"target":{"$ref":"#/components/schemas/CommandReceiverBootstrapTarget"}},"required":["managerUrl","token","expiresAt"]},"CommandReceiverBootstrapTarget":{"type":"object","properties":{"resourceId":{"type":"string"},"resourceType":{"type":"string","enum":["container","daemon"]}},"required":["resourceId","resourceType"],"description":"Resolved target identity; present only for receiver bootstrap"},"CommandBootstrapRequest":{"oneOf":[{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"role":{"type":"string","enum":["sender"]}},"required":["deploymentId","role"],"additionalProperties":false},{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"role":{"type":"string","enum":["receiver"]},"target":{"type":"string","minLength":1,"maxLength":255}},"required":["deploymentId","role","target"],"additionalProperties":false}]},"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"},"startedAt":{"type":"string","format":"date-time"},"endedAt":{"type":"string","format":"date-time"},"expiredAt":{"type":"string","format":"date-time"},"exitCode":{"type":"integer","nullable":true},"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"},"customerModels":{"type":"boolean","description":"Whether this release offers one remotely accessible AI resource"},"resourceCounts":{"type":"object","properties":{"workers":{"type":"integer","minimum":0},"containers":{"type":"integer","minimum":0},"daemons":{"type":"integer","minimum":0,"description":"Daemon resources that run on managed runtime machines"},"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","customerModels","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"},"modelAvailabilitySources":{"type":"array","items":{"type":"object","properties":{"deploymentId":{"type":"string"},"resourceId":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"status":{"type":"string","enum":["current","stale","invalid"]},"availability":{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]}},"required":["deploymentId","resourceId","observedAt","status"]}},"setupItems":{"type":"array","items":{"$ref":"#/components/schemas/SetupItemStatus"}},"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","modelAvailabilitySources"]},"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"]},"SetupItemStatus":{"type":"object","properties":{"item":{"type":"string","enum":["alien-stack","models","keys","storage","registry"]},"source":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["application-release"]},"releaseChannel":{"type":"string","minLength":1,"maxLength":63},"releaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"resourceId":{"type":"string","minLength":1,"maxLength":256}},"required":["type","releaseChannel","releaseId"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["built-in"]},"definitionId":{"type":"string","enum":["customer-ai","customer-key","customer-storage","customer-registry"]},"version":{"type":"string","minLength":1,"maxLength":64},"sourceReleaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"}},"required":["type","definitionId","version","sourceReleaseId"],"additionalProperties":false}]},"required":{"type":"boolean"},"configuration":{"type":"object","properties":{"allowedProviders":{"type":"array","items":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic","databricks","openai"]},"minItems":1,"maxItems":6},"modelRequirements":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string","minLength":1,"maxLength":256},"clientApis":{"type":"array","items":{"type":"string","enum":["openai-chat","openai-responses","anthropic-messages"]},"minItems":1,"maxItems":3},"required":{"type":"boolean"}},"required":["publicModelId","clientApis","required"],"additionalProperties":false},"maxItems":100}},"additionalProperties":false},"status":{"type":"string","enum":["not-started","waiting","applying","verifying","connected","needs-attention","revoked"]},"deploymentIds":{"type":"array","items":{"type":"string"}},"blocker":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["item","source","required","status","deploymentIds"],"additionalProperties":false},"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"]}},"items":{"type":"array","items":{"type":"object","properties":{"item":{"type":"string","enum":["alien-stack","models","keys","storage","registry"]},"source":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["application-release"]},"releaseChannel":{"type":"string","minLength":1,"maxLength":63},"releaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"resourceId":{"type":"string","minLength":1,"maxLength":256}},"required":["type","releaseChannel","releaseId"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["built-in"]},"definitionId":{"type":"string","enum":["customer-ai","customer-key","customer-storage","customer-registry"]},"version":{"type":"string","minLength":1,"maxLength":64},"sourceReleaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"}},"required":["type","definitionId","version","sourceReleaseId"],"additionalProperties":false}]},"required":{"type":"boolean"},"configuration":{"type":"object","properties":{"allowedProviders":{"type":"array","items":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic","databricks","openai"]},"minItems":1,"maxItems":6},"modelRequirements":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string","minLength":1,"maxLength":256},"clientApis":{"type":"array","items":{"type":"string","enum":["openai-chat","openai-responses","anthropic-messages"]},"minItems":1,"maxItems":3},"required":{"type":"boolean"}},"required":["publicModelId","clientApis","required"],"additionalProperties":false},"maxItems":100}},"additionalProperties":false}},"required":["item","source","required"],"additionalProperties":false},"maxItems":8},"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"]},"ListOperationsPluginsResponse":{"type":"object","properties":{"plugins":{"type":"array","items":{"$ref":"#/components/schemas/OperationsPlugin"}}},"required":["plugins"]},"OperationsPlugin":{"type":"object","properties":{"name":{"type":"string"},"version":{"type":"string"},"tier":{"type":"string","enum":["read-only","mutating","destructive"],"description":"Plugin-level default tier."},"builtin":{"type":"boolean","description":"True for compiled-in plugins, false for custom bundles."},"enabled":{"type":"boolean"},"operations":{"type":"array","items":{"$ref":"#/components/schemas/OperationsPluginOperation"}}},"required":["name","version","tier","builtin","enabled","operations"]},"OperationsPluginOperation":{"type":"object","properties":{"name":{"type":"string","description":"Operation name, unique within the plugin."},"tier":{"type":"string","enum":["read-only","mutating","destructive"],"description":"Effective risk tier for this operation."},"description":{"type":"string","nullable":true,"description":"Human-readable description."}},"required":["name","tier","description"]},"OperationsBundleUploadUrlResponse":{"type":"object","properties":{"uploadUrl":{"type":"string","format":"uri","description":"Presigned S3 PUT URL to upload the bundle ZIP to."},"contentType":{"type":"string","description":"Content-Type header the PUT must send (must match the signature)."}},"required":["uploadUrl","contentType"]},"OperationsBundleUploadUrlRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Plugin name (from the bundle's metadata.json)."}},"required":["name"]},"PublishOperationsPluginResponse":{"type":"object","properties":{"name":{"type":"string"},"version":{"type":"string"},"tier":{"type":"string","enum":["read-only","mutating","destructive"],"description":"How risky an operation is (declared by the plugin metadata)."},"enabled":{"type":"boolean"}},"required":["name","version","tier","enabled"]},"PublishOperationsPluginRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Plugin name (from the bundle's metadata.json)."},"version":{"type":"string","minLength":1,"description":"Plugin version."},"tier":{"type":"string","enum":["read-only","mutating","destructive"],"description":"Plugin-level default risk tier."},"metadata":{"nullable":true,"description":"The verbatim metadata.json (operations[], binaries{})."}},"required":["name","version","tier"]},"SetOperationsPluginEnabledResponse":{"type":"object","properties":{"name":{"type":"string"},"builtin":{"type":"boolean"},"enabled":{"type":"boolean"}},"required":["name","builtin","enabled"]},"SetOperationsPluginEnabledRequest":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether the plugin should be baked into the operator image."}},"required":["enabled"]},"OperationsPolicyResponse":{"type":"object","properties":{"rules":{"type":"array","items":{"$ref":"#/components/schemas/OperationsPolicyRule"}},"default":{"type":"string","enum":["auto","manual"],"description":"Decision for commands no rule matches."}},"required":["rules","default"]},"OperationsPolicyRule":{"type":"object","properties":{"pattern":{"type":"string","description":"`plugin/operation`, `plugin/*`, or `*`."},"decision":{"type":"string","enum":["auto","manual"],"description":"auto: run immediately. manual: needs customer approval before running."}},"required":["pattern","decision"]},"UpdateOperationsPolicyRequest":{"type":"object","properties":{"rules":{"type":"array","items":{"$ref":"#/components/schemas/OperationsPolicyRule"},"description":"The full rule set (replaces the previous one)."}},"required":["rules"]},"InvokeOperationResponse":{"type":"object","properties":{"plugin":{"type":"string"},"operation":{"type":"string"},"tier":{"type":"string","enum":["read-only","mutating","destructive"],"description":"The operation's declared risk tier (informational)."},"decision":{"type":"string","enum":["auto","manual"],"description":"The approval decision the policy resolved to."},"status":{"type":"string","enum":["dispatched","pending-approval"],"description":"dispatched: auto-approved and running. pending-approval: needs customer sign-off."},"commandId":{"type":"string","description":"The created operation-command id when dispatched (absent when pending)."}},"required":["plugin","operation","tier","decision","status"]},"InvokeOperationRequest":{"type":"object","properties":{"deploymentId":{"type":"string","description":"Deployment to run the operation against."},"plugin":{"type":"string","description":"Plugin name."},"operation":{"type":"string","description":"Operation name exposed by the plugin."},"params":{"nullable":true,"description":"JSON params passed to the operation."}},"required":["deploymentId","plugin","operation"]},"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"},"purpose":{"$ref":"#/components/schemas/DeploymentPurpose"},"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":{"initialSetupAuthority":{"type":"string","enum":["importedHandoff","directSetup"],"description":"Actor that owns structural work during the initial setup phase."},"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}]},"persistedGateAnswers":{"type":"object","properties":{},"additionalProperties":{"type":"boolean"},"description":"Canonical resolved answers for inputs that gate Frozen resources,\nkeyed by input id, recorded when the deployment is created or its\nsetup import registers.\n\nA frozen gate's answer is fixed for the deployment's lifetime: the\nupdate path refuses input values that conflict with these, and a Live\nresource sharing such an input resolves the persisted answer forever."},"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"},"releaseChannel":{"allOf":[{"$ref":"#/components/schemas/ReleaseChannelName"},{"description":"Named release stream followed when the deployment is not pinned"}]},"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"},"updateState":{"type":"object","properties":{"active":{"$ref":"#/components/schemas/DeploymentUpdateOperationSummary"},"next":{"$ref":"#/components/schemas/DeploymentUpdateOperationSummary"},"latest":{"$ref":"#/components/schemas/DeploymentUpdateOperationSummary"}},"required":["active","next","latest"],"description":"Durable progress for deployment updates"},"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","purpose","stackSettings","releaseChannel","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":{"initialSetupAuthority":{"type":"string","enum":["importedHandoff","directSetup"],"description":"Actor that owns structural work during the initial setup phase."},"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}]},"persistedGateAnswers":{"type":"object","properties":{},"additionalProperties":{"type":"boolean"},"description":"Canonical resolved answers for inputs that gate Frozen resources,\nkeyed by input id, recorded when the deployment is created or its\nsetup import registers.\n\nA frozen gate's answer is fixed for the deployment's lifetime: the\nupdate path refuses input values that conflict with these, and a Live\nresource sharing such an input resolves the persisted answer forever."},"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"},"serverCaCertificates":{"oneOf":[{"type":"array","items":{"type":"string"}},{"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"},"sslMode":{"type":"string","enum":["verify-full","disable"],"description":"TLS policy for an operator-provided / BYO Postgres database.\n\nUnlike libpq's ambiguous `prefer` mode, both choices map exactly to the\nconnection settings exposed by every supported SDK."},"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"]}]},{"allOf":[{"type":"object","properties":{"apiKey":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"provider":{"type":"string","description":"The external AI provider name (e.g., \"openai\", \"anthropic\")"}},"required":["provider"],"description":"External AI provider binding configuration (BYO-key).\n\nThe operator-supplied secret rides inside the binding via\n`BindingValue`, so it is a literal on cloud platforms and gains\nKubernetes SecretRef resolution for free (`extract_binding_secrets` walks\nthe binding JSON for `secretRef`)."},{"type":"object","properties":{"type":{"type":"string","enum":["ai"]}},"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)"},"leaseExpiresAt":{"type":"string","nullable":true,"format":"date-time","description":"When the provisional leases on the returned deployments lapse. Confirm them with sync/renew before starting work. Null when nothing was acquired."}},"required":["deployments","failures","leaseExpiresAt"],"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"},"requestId":{"type":"string","minLength":1,"description":"Idempotency key for one logical acquire request"},"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","requestId","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":{"initialSetupAuthority":{"type":"string","enum":["importedHandoff","directSetup"],"description":"Actor that owns structural work during the initial setup phase."},"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}]},"persistedGateAnswers":{"type":"object","properties":{},"additionalProperties":{"type":"boolean"},"description":"Canonical resolved answers for inputs that gate Frozen resources,\nkeyed by input id, recorded when the deployment is created or its\nsetup import registers.\n\nA frozen gate's answer is fixed for the deployment's lifetime: the\nupdate path refuses input values that conflict with these, and a Live\nresource sharing such an input resolves the persisted answer forever."},"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"},"serverCaCertificates":{"oneOf":[{"type":"array","items":{"type":"string"}},{"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"},"sslMode":{"type":"string","enum":["verify-full","disable"],"description":"TLS policy for an operator-provided / BYO Postgres database.\n\nUnlike libpq's ambiguous `prefer` mode, both choices map exactly to the\nconnection settings exposed by every supported SDK."},"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"]}]},{"allOf":[{"type":"object","properties":{"apiKey":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"provider":{"type":"string","description":"The external AI provider name (e.g., \"openai\", \"anthropic\")"}},"required":["provider"],"description":"External AI provider binding configuration (BYO-key).\n\nThe operator-supplied secret rides inside the binding via\n`BindingValue`, so it is a literal on cloud platforms and gains\nKubernetes SecretRef resolution for free (`extract_binding_secrets` walks\nthe binding JSON for `secretRef`)."},{"type":"object","properties":{"type":{"type":"string","enum":["ai"]}},"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":{"initialSetupAuthority":{"type":"string","enum":["importedHandoff","directSetup"],"description":"Actor that owns structural work during the initial setup phase."},"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}]},"persistedGateAnswers":{"type":"object","properties":{},"additionalProperties":{"type":"boolean"},"description":"Canonical resolved answers for inputs that gate Frozen resources,\nkeyed by input id, recorded when the deployment is created or its\nsetup import registers.\n\nA frozen gate's answer is fixed for the deployment's lifetime: the\nupdate path refuses input values that conflict with these, and a Live\nresource sharing such an input resolves the persisted answer forever."},"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"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"availability":{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]},"region":{"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":["availability","region","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsBedrock"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"availability":{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]},"location":{"type":"string"},"project":{"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":["availability","location","project","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpVertex"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"accountName":{"type":"string"},"availability":{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]},"endpoint":{"type":"string","nullable":true},"location":{"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"]}},"required":["accountName","availability","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureFoundry"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"availability":{"oneOf":[{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]},{"nullable":true}]},"provider":{"type":"string","description":"The BYO-key provider serving this binding (e.g. \"openai\"). Used on the Local\nplatform, where the app brings its own provider key instead of an ambient cloud."},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["provider","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["external"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["ai"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"type":"object","properties":{"data":{"type":"object","properties":{"enabled":{"type":"boolean"},"keyArn":{"type":"string"},"keySpec":{"type":"string"},"keyState":{"type":"string"},"keyUsage":{"type":"string"},"status":{"type":"object","properties":{"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true}},"required":["health","lifecycle"]}},"required":["enabled","keyArn","keySpec","keyState","keyUsage","status"]},"provider":{"type":"string","enum":["aws-kms"]}},"required":["data","provider"]},{"type":"object","properties":{"data":{"type":"object","properties":{"algorithm":{"type":"string","nullable":true},"cryptoKeyName":{"type":"string"},"primaryState":{"type":"string","nullable":true},"primaryVersion":{"type":"string","nullable":true},"purpose":{"type":"string"},"status":{"type":"object","properties":{"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true}},"required":["health","lifecycle"]}},"required":["cryptoKeyName","purpose","status"]},"provider":{"type":"string","enum":["gcp-cloud-kms"]}},"required":["data","provider"]},{"type":"object","properties":{"data":{"type":"object","properties":{"enabled":{"type":"boolean","nullable":true},"keyId":{"type":"string"},"keyOperations":{"type":"array","items":{"type":"string"}},"keyType":{"type":"string"},"recoveryLevel":{"type":"string","nullable":true},"status":{"type":"object","properties":{"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true}},"required":["health","lifecycle"]}},"required":["keyId","keyOperations","keyType","status"]},"provider":{"type":"string","enum":["azure-key-vault"]}},"required":["data","provider"]}]},"resourceType":{"type":"string","enum":["key"]}},"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"},"SyncRenewRequest":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Single deployment to renew. Deprecated: use deploymentIds. Retained so a manager built against the previous API keeps renewing during rollout.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"deploymentIds":{"type":"array","items":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"minItems":1,"maxItems":100,"description":"Deployments to renew or confirm. Renewal is per deployment: the response reports each one independently."},"session":{"type":"string","minLength":1}},"required":["session"],"additionalProperties":false},"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"},"operations_custom_plugins":{"type":"boolean"},"sso_saml":{"type":"boolean"},"audit_logs":{"type":"boolean"},"airgapped":{"type":"boolean"}},"required":["custom_domains","private_managers","operations_custom_plugins","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}/source":{"post":{"operationId":"configureProjectSource","description":"Connect a GitHub repository or Alien template to an existing project and configure its release workflow.","x-speakeasy-group":"projects","x-speakeasy-name-override":"configureSource","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":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["repository"]},"gitRepository":{"type":"object","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},"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"}},"required":["mode","gitRepository"]},{"type":"object","properties":{"mode":{"type":"string","enum":["template"]},"targetNamespace":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-zA-Z0-9-]+$"},"templatePath":{"type":"string","enum":["examples/customer-models-ts","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"}},"required":["mode","targetNamespace","templatePath"]}]}}}},"responses":{"200":{"description":"Project source connected and GitHub Actions configured.","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/customer-models-ts","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"]}}}]}}}},"400":{"description":"Repository or template configuration is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Insufficient permission to update this project.","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"}}}},"503":{"description":"Template fork exists but is not ready yet.","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/customer-models-ts","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/customer-models-ts","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 production channel's current release. When deploymentId is provided, returns that deployment's effective release: its pin, or its followed channel's current 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":"Effective release retrieved successfully.","content":{"application/json":{"schema":{"nullable":true}}}},"404":{"description":"Project or effective 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}/customer-connections/models":{"put":{"operationId":"configureProjectCustomerModels","description":"Configure customer-owned model providers without requiring an application Release.","x-speakeasy-group":"projects","x-speakeasy-name-override":"configureCustomerModels","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/ConfigureCustomerModelsRequest"}}}},"responses":{"200":{"description":"Customer Models configured and its exact setup source materialized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerConnectionMaterialization"}}}},"403":{"description":"Insufficient permissions.","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}/customer-connections/keys":{"put":{"operationId":"configureProjectCustomerKey","description":"Enable customer-owned application encryption without requiring an application Release.","x-speakeasy-group":"projects","x-speakeasy-name-override":"configureCustomerKey","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":{"type":"object","properties":{"applicationEncryption":{"type":"boolean","enum":[true]}},"required":["applicationEncryption"],"additionalProperties":false}}}},"responses":{"200":{"description":"Customer Key configured and its exact setup source materialized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerConnectionMaterialization"}}}},"403":{"description":"Insufficient permissions.","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}/customer-connections/storage":{"put":{"operationId":"configureProjectCustomerStorage","description":"Enable customer-owned storage without requiring an application Release.","x-speakeasy-group":"projects","x-speakeasy-name-override":"configureCustomerStorage","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":{"type":"object","properties":{"access":{"type":"string","enum":["read-write"]}},"required":["access"],"additionalProperties":false}}}},"responses":{"200":{"description":"Customer Storage configured and its exact setup source materialized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerConnectionMaterialization"}}}},"403":{"description":"Insufficient permissions.","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/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/by-external-id":{"put":{"operationId":"ensureDeploymentGroupByExternalId","tags":["deployment-groups"],"summary":"Get or create a deployment group by project and external ID","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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/EnsureDeploymentGroupByExternalIdRequest"}}}},"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"}}}},"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"}}}}}},"get":{"operationId":"getDeploymentGroupByExternalId","tags":["deployment-groups"],"summary":"Get a deployment group by project and external ID","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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":100,"description":"Project ID or name. Optional for project-scoped API keys."},"required":false,"description":"Project ID or name. Optional for project-scoped API keys.","name":"project","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"},"required":true,"description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","name":"externalId","in":"query"}],"responses":{"200":{"description":"Deployment group returned successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentGroup"}}}},"404":{"description":"Project or 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/setup-links":{"post":{"operationId":"createSetupLink","tags":["setup-links"],"summary":"Create a customer setup link","description":"Ensures the Deployment Group identified by Project and external ID, then creates a replacement group-scoped setup link with exact captured sources.","x-speakeasy-group":"setupLinks","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":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSetupLinkRequest"}}}},"responses":{"200":{"description":"Customer environment ensured and setup link created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSetupLinkResponse"}}}},"400":{"description":"Customer environment or setup configuration is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Customer environment name or setup source conflicts","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}/external-id":{"put":{"operationId":"setDeploymentGroupExternalId","tags":["deployment-groups"],"summary":"Set or clear a deployment group's external ID","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":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetDeploymentGroupExternalIdRequest"}}}},"responses":{"200":{"description":"Deployment group external ID 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 external ID 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"}}}}}}},"/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/deployment-groups/{id}/ai/external":{"get":{"operationId":"getExternalAIBinding","tags":["deployment-groups"],"summary":"Get external AI connection state","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":"External AI connection state","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalAIBindingState"}}}},"403":{"description":"Insufficient permissions","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"}}}}}},"put":{"operationId":"putExternalAIBinding","tags":["deployment-groups"],"summary":"Connect or rotate an external AI provider key","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":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutExternalAIBindingRequest"}}}},"responses":{"200":{"description":"External AI connection verified and stored","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalAIBinding"}}}},"400":{"description":"The key is not valid for the selected provider","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment group not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"The group already has an active cloud AI source","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"Provider verification is temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"delete":{"operationId":"deleteExternalAIBinding","tags":["deployment-groups"],"summary":"Revoke the external AI connection","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":"External AI connection revoked"},"403":{"description":"Insufficient permissions","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/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","nullable":true,"minLength":1,"maxLength":63,"pattern":"^[a-z][a-z0-9-]*$","description":"Filter to releases promoted to this channel. Defaults to production."},"required":false,"description":"Filter to releases promoted to this channel. Defaults to production.","name":"channel","in":"query"},{"schema":{"type":"string","enum":["true","false"],"default":"false"},"required":false,"name":"allChannels","in":"query"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["project","rollout","createdBy"]},"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","createdBy"]},"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/releases/{id}/deployments":{"get":{"operationId":"listReleaseDeployments","description":"List the project's deployments with their rollout state relative to this release.","x-speakeasy-group":"releases","x-speakeasy-name-override":"listDeployments","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":{"$ref":"#/components/schemas/ReleaseRolloutState"},"description":"Filter deployments by rollout state"},"required":false,"description":"Filter deployments by rollout state","name":"state","in":"query"},{"schema":{"type":"string","description":"Filter by deployment group ID or name"},"required":false,"description":"Filter by deployment group ID or name","name":"deploymentGroup","in":"query"},{"schema":{"type":"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 release deployments.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReleaseDeploymentsResponse"}}}},"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/release-channels":{"get":{"operationId":"listReleaseChannels","summary":"List release channels","description":"List the release channels configured for a project.","x-speakeasy-group":"releaseChannels","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":true,"description":"Filter by project ID or name.","name":"project","in":"query","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}}],"responses":{"200":{"description":"Project release channels.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ReleaseChannel"}}},"required":["items"]}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createReleaseChannel","summary":"Create a release channel","description":"Create a release channel for a project.","x-speakeasy-group":"releaseChannels","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"},{"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"}}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"$ref":"#/components/schemas/ReleaseChannelName"},"releaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"}},"required":["name"],"additionalProperties":false}}}},"responses":{"201":{"description":"Channel created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReleaseChannel"}}}},"400":{"description":"Invalid release.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/release-channels/{name}/promote":{"post":{"operationId":"promoteRelease","x-speakeasy-group":"releases","x-speakeasy-name-override":"promote","parameters":[{"schema":{"$ref":"#/components/schemas/ReleaseChannelName"},"required":true,"name":"name","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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"}}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"releaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"expectedReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"}},"required":["releaseId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Release promoted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReleaseChannel"}}}},"404":{"description":"Project, channel, or release not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Channel changed concurrently.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/release-channels/{name}":{"delete":{"operationId":"deleteReleaseChannel","summary":"Delete a release channel","description":"Delete a release channel from a project.","x-speakeasy-group":"releaseChannels","x-speakeasy-name-override":"delete","parameters":[{"schema":{"$ref":"#/components/schemas/ReleaseChannelName"},"required":true,"name":"name","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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":{"204":{"description":"Channel deleted."},"400":{"description":"Reserved channel.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project or channel not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Channel is still followed by deployments.","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"},"operation":{"$ref":"#/components/schemas/DeploymentUpdateOperationSummary"}},"required":["message","operation"]}}}},"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}/release-channel":{"post":{"operationId":"setDeploymentReleaseChannel","x-speakeasy-group":"deployments","x-speakeasy-name-override":"setReleaseChannel","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":{"type":"object","properties":{"channel":{"$ref":"#/components/schemas/ReleaseChannelName"}},"required":["channel"],"additionalProperties":false}}}},"responses":{"200":{"description":"Deployment release channel updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Deployment"}}}},"400":{"description":"Channel release is unavailable for the deployment platform.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment or release channel not found.","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}/binding-token":{"post":{"operationId":"generateManagerBindingToken","description":"Generate a short-lived deployment-scoped token for resolving opted-in remote bindings through the currently assigned manager.","x-speakeasy-group":"managers","x-speakeasy-name-override":"generateManagerBindingToken","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":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateManagerBindingTokenRequest"}}}},"responses":{"200":{"description":"Remote Bindings token and assigned manager URL.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateManagerBindingTokenResponse"}}}},"403":{"description":"The caller cannot update the deployment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Assigned manager or deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"The assigned manager is offline.","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":"string","description":"Filter events to a single release."},"required":false,"description":"Filter events to a single release.","name":"releaseId","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/bootstrap":{"post":{"operationId":"bootstrapCommands","description":"Resolve a deployment's current manager and mint a five-minute command capability. Sender tokens can dispatch and observe commands only for this deployment. Receiver tokens can lease and complete commands only for the resolved Container or Daemon target.","x-speakeasy-group":"commands","x-speakeasy-name-override":"bootstrap","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandBootstrapRequest"}}}},"responses":{"200":{"description":"Manager connection details and a short-lived command capability.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandBootstrapResponse"}}}},"400":{"description":"Invalid request or deployment state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"401":{"description":"Authentication required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"The caller cannot operate this deployment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment, manager, or receiver target not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"422":{"description":"The selected resource cannot run an external receiver.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"The assigned manager is offline.","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"},{"schema":{"type":"string","enum":["alien-stack","models","keys","storage"]},"required":false,"name":"setupItem","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":{"setupItem":{"type":"string","enum":["alien-stack","models","keys","storage"]},"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":{"setupItem":{"type":"string","enum":["alien-stack","models","keys","storage"]},"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/operations/plugins":{"get":{"operationId":"listOperationsPlugins","description":"List available operations plugins (builtin + custom) for a project, with their operations and risk tiers.","x-speakeasy-group":"operations","x-speakeasy-name-override":"listPlugins","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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":"The operations plugin catalog.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListOperationsPluginsResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"publishOperationsPlugin","description":"Register a custom operations plugin whose bundle ZIP has already been uploaded to S3 (see POST /plugins/upload-url). Replaces any existing plugin of the same name in that project. New custom plugins are enabled by default.","x-speakeasy-group":"operations","x-speakeasy-name-override":"publishPlugin","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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"}}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishOperationsPluginRequest"}}}},"responses":{"201":{"description":"The plugin was published.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishOperationsPluginResponse"}}}},"400":{"description":"Invalid metadata.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"402":{"description":"Custom plugins require a higher plan tier.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/operations/plugins/upload-url":{"post":{"operationId":"createOperationsBundleUploadUrl","description":"Get a presigned S3 URL to upload a custom operations plugin bundle ZIP. Upload the ZIP with a PUT to the returned url (sending the given Content-Type), then call POST /plugins to register it.","x-speakeasy-group":"operations","x-speakeasy-name-override":"createBundleUploadUrl","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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"}}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationsBundleUploadUrlRequest"}}}},"responses":{"200":{"description":"A presigned upload URL for the bundle ZIP.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationsBundleUploadUrlResponse"}}}},"402":{"description":"Custom plugins require a higher plan tier.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"Bundle storage is not configured.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/operations/plugins/{name}/enabled":{"patch":{"operationId":"setOperationsPluginEnabled","description":"Enable or disable an operations plugin (builtin or custom) for a project. Only enabled plugins are baked into the operator image and can be invoked.","x-speakeasy-group":"operations","x-speakeasy-name-override":"setPluginEnabled","parameters":[{"schema":{"type":"string","description":"Plugin name."},"required":true,"description":"Plugin name.","name":"name","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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"}}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetOperationsPluginEnabledRequest"}}}},"responses":{"200":{"description":"The plugin's enabled state was updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetOperationsPluginEnabledResponse"}}}},"404":{"description":"No such plugin for this project.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/operations/policy":{"get":{"operationId":"getOperationsPolicy","description":"Get a project's per-command approval policy. Mirrors what the operator enforces: `plugin/operation` / `plugin/*` / `*` patterns → auto | manual.","x-speakeasy-group":"operations","x-speakeasy-name-override":"getPolicy","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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":"The approval policy rules and default.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationsPolicyResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"put":{"operationId":"updateOperationsPolicy","description":"Replace a project's per-command approval policy (full rule set). Patterns are `plugin/operation`, `plugin/*`, or `*`; each maps to auto | manual.","x-speakeasy-group":"operations","x-speakeasy-name-override":"updatePolicy","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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"}}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOperationsPolicyRequest"}}}},"responses":{"200":{"description":"The updated approval policy.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationsPolicyResponse"}}}},"400":{"description":"Invalid request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/operations/invoke":{"post":{"operationId":"invokeOperation","description":"Invoke a plugin operation against a deployment. Honors the project's per-command approval policy.","x-speakeasy-group":"operations","x-speakeasy-name-override":"invoke","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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"}}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvokeOperationRequest"}}}},"responses":{"200":{"description":"The operation was dispatched or queued for approval.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvokeOperationResponse"}}}},"402":{"description":"Custom plugins require a higher plan tier.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Caller may not create commands for this deployment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Plugin or 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/access-requests":{"post":{"operationId":"createAccessRequest","description":"Create a pending access request covering a remediation plan's commands. Awaits the engineer gate before it is queued for the operator.","x-speakeasy-group":"operations","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are 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":{"deploymentId":{"type":"string"},"remediationPlanId":{"type":"string"},"title":{"type":"string"},"reason":{"type":"string"},"commands":{"type":"array","items":{"type":"object","properties":{"command":{"type":"string","example":"kubernetes/get-pods"},"summary":{"type":"string","example":"List pods in the ingestion namespace"}},"required":["command","summary"]},"minItems":1}},"required":["deploymentId","remediationPlanId","title","commands"]}}}},"responses":{"201":{"description":"The created access request.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"deploymentId":{"type":"string"},"remediationPlanId":{"type":"string"},"title":{"type":"string"},"reason":{"type":"string","nullable":true},"commands":{"type":"array","items":{"type":"object","properties":{"command":{"type":"string","example":"kubernetes/get-pods"},"summary":{"type":"string","example":"List pods in the ingestion namespace"}},"required":["command","summary"]}},"status":{"type":"string","enum":["pending-approval","queued","customer-approved","expired","rejected"]},"approvedUntil":{"type":"string","nullable":true}},"required":["id","deploymentId","remediationPlanId","title","reason","commands","status","approvedUntil"]}}}},"404":{"description":"Deployment or remediation plan not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/access-requests/{id}/queue":{"post":{"operationId":"queueAccessRequest","description":"Engineer gate — approve a pending access request, queuing it for the operator to materialize. Records who queued it.","x-speakeasy-group":"operations","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":"The queued access request, with the customer approve command.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"deploymentId":{"type":"string"},"remediationPlanId":{"type":"string"},"title":{"type":"string"},"reason":{"type":"string","nullable":true},"commands":{"type":"array","items":{"type":"object","properties":{"command":{"type":"string","example":"kubernetes/get-pods"},"summary":{"type":"string","example":"List pods in the ingestion namespace"}},"required":["command","summary"]}},"status":{"type":"string","enum":["pending-approval","queued","customer-approved","expired","rejected"]},"approvedUntil":{"type":"string","nullable":true},"kubectlApprove":{"type":"string","nullable":true}},"required":["id","deploymentId","remediationPlanId","title","reason","commands","status","approvedUntil","kubectlApprove"]}}}},"404":{"description":"Access request not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Access request is not pending approval.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/access-requests/{id}/coordinates":{"get":{"operationId":"getAccessRequestCoordinates","description":"The customer's kubectl approve command for a queued access request, or null until the operator has materialized the grant CR and reported its coordinates. Polled by the Slack handler to update the access-plan card.","x-speakeasy-group":"operations","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":"The approve command (or null) and current status.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["pending-approval","queued","customer-approved","expired","rejected"]},"kubectlApprove":{"type":"string","nullable":true}},"required":["status","kubectlApprove"]}}}},"404":{"description":"Access request not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/access-requests/pending":{"get":{"operationId":"listPendingAccessRequests","description":"Operator-facing: the queued access requests for a deployment, for the access-request sync loop to materialize as grant CRs.","x-speakeasy-ignore":true,"parameters":[{"schema":{"type":"string"},"required":true,"name":"deploymentId","in":"query"}],"responses":{"200":{"description":"Queued access requests for the deployment.","content":{"application/json":{"schema":{"type":"object","properties":{"requests":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"reason":{"type":"string","nullable":true},"commands":{"type":"array","items":{"type":"object","properties":{"command":{"type":"string","example":"kubernetes/get-pods"},"summary":{"type":"string","example":"List pods in the ingestion namespace"}},"required":["command","summary"]}}},"required":["id","title","reason","commands"]}}},"required":["requests"]}}}},"403":{"description":"Caller is not the deployment's manager runtime.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/access-requests/materialized":{"post":{"operationId":"reportMaterializedAccessRequests","description":"Operator-facing: record the namespace + CRD plural the operator materialized the grant CRs in, so the control plane can render the customer's exact kubectl approve command.","x-speakeasy-ignore":true,"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"deploymentId":{"type":"string"},"requestIds":{"type":"array","items":{"type":"string"}},"namespace":{"type":"string","minLength":1},"resourcePlural":{"type":"string","minLength":1}},"required":["deploymentId","requestIds","namespace","resourcePlural"]}}}},"responses":{"200":{"description":"Number of requests updated with CR coordinates.","content":{"application/json":{"schema":{"type":"object","properties":{"recorded":{"type":"number"}},"required":["recorded"]}}}},"403":{"description":"Caller is not the deployment's manager runtime.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/access-requests/approvals":{"post":{"operationId":"reportAccessApprovals","description":"Operator-facing: record the customer's approval windows reported back by the sync loop. Moves each request to customer-approved and resumes the investigation to dispatch commands.","x-speakeasy-ignore":true,"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"deploymentId":{"type":"string"},"approvals":{"type":"array","items":{"type":"object","properties":{"requestId":{"type":"string"},"approvedUntil":{"type":"string"}},"required":["requestId","approvedUntil"]}}},"required":["deploymentId","approvals"]}}}},"responses":{"200":{"description":"Number of approvals recorded.","content":{"application/json":{"schema":{"type":"object","properties":{"recorded":{"type":"number"}},"required":["recorded"]}}}},"403":{"description":"Caller is not the deployment's manager runtime.","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/renew":{"post":{"operationId":"syncRenew","x-speakeasy-group":"sync","x-speakeasy-name-override":"renew","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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/SyncRenewRequest"}}}},"responses":{"200":{"description":"Renewal processed. Inspect `leases` for per-deployment outcomes; a lost lease is reported there rather than failing the whole batch.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"True when every requested deployment was renewed."},"leases":{"type":"array","items":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"renewed":{"type":"boolean","description":"False when this session no longer holds a live lease."},"leaseExpiresAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["deploymentId","renewed","leaseExpiresAt"]},"description":"Per-deployment renewal outcome."}},"required":["success","leases"]}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"The session no longer owns the deployment.","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","ai"]},"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","ai"]},"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","ai"]},"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 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"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"availability":{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]},"region":{"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":["availability","region","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsBedrock"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"availability":{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]},"location":{"type":"string"},"project":{"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":["availability","location","project","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpVertex"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"accountName":{"type":"string"},"availability":{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]},"endpoint":{"type":"string","nullable":true},"location":{"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"]}},"required":["accountName","availability","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureFoundry"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"availability":{"oneOf":[{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]},{"nullable":true}]},"provider":{"type":"string","description":"The BYO-key provider serving this binding (e.g. \"openai\"). Used on the Local\nplatform, where the app brings its own provider key instead of an ambient cloud."},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["provider","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["external"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["ai"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"type":"object","properties":{"data":{"type":"object","properties":{"enabled":{"type":"boolean"},"keyArn":{"type":"string"},"keySpec":{"type":"string"},"keyState":{"type":"string"},"keyUsage":{"type":"string"},"status":{"type":"object","properties":{"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true}},"required":["health","lifecycle"]}},"required":["enabled","keyArn","keySpec","keyState","keyUsage","status"]},"provider":{"type":"string","enum":["aws-kms"]}},"required":["data","provider"]},{"type":"object","properties":{"data":{"type":"object","properties":{"algorithm":{"type":"string","nullable":true},"cryptoKeyName":{"type":"string"},"primaryState":{"type":"string","nullable":true},"primaryVersion":{"type":"string","nullable":true},"purpose":{"type":"string"},"status":{"type":"object","properties":{"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true}},"required":["health","lifecycle"]}},"required":["cryptoKeyName","purpose","status"]},"provider":{"type":"string","enum":["gcp-cloud-kms"]}},"required":["data","provider"]},{"type":"object","properties":{"data":{"type":"object","properties":{"enabled":{"type":"boolean","nullable":true},"keyId":{"type":"string"},"keyOperations":{"type":"array","items":{"type":"string"}},"keyType":{"type":"string"},"recoveryLevel":{"type":"string","nullable":true},"status":{"type":"object","properties":{"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true}},"required":["health","lifecycle"]}},"required":["keyId","keyOperations","keyType","status"]},"provider":{"type":"string","enum":["azure-key-vault"]}},"required":["data","provider"]}]},"resourceType":{"type":"string","enum":["key"]}},"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/aws-virtual-keys":{"get":{"operationId":"listAwsVirtualKeys","parameters":[{"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":"AWS Virtual Keys in a project","content":{"application/json":{"schema":{"type":"object","properties":{"virtualKeys":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"projectId":{"type":"string"},"status":{"type":"string","enum":["provisioning","ready","action-required","decommissioning","deletion-pending","deleted","failed"]},"externalKeyId":{"type":"string"},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"customKeyStoreId":{"type":"string","nullable":true},"kmsKeyArn":{"type":"string","nullable":true},"alias":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"deletionWindowDays":{"type":"integer"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"canaryPassedAt":{"type":"string","nullable":true,"format":"date-time"},"deletionScheduledAt":{"type":"string","nullable":true,"format":"date-time"},"finalDeletionObservedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","status","externalKeyId","awsAccountId","awsRegion","customKeyStoreId","kmsKeyArn","alias","description","deletionWindowDays","tags","observedAt","canaryPassedAt","deletionScheduledAt","finalDeletionObservedAt","createdAt","updatedAt"]}}},"required":["virtualKeys"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createAwsVirtualKey","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"selector":{"oneOf":[{"type":"object","properties":{"externalId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"}},"required":["externalId"],"additionalProperties":false},{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"}},"required":["deploymentId"],"additionalProperties":false}]},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"idempotencyKey":{"type":"string","minLength":1,"maxLength":128},"alias":{"type":"string","nullable":true,"minLength":1,"maxLength":256},"description":{"type":"string","nullable":true,"maxLength":8192},"deletionWindowDays":{"type":"integer","minimum":7,"maximum":30,"default":30},"tags":{"type":"object","additionalProperties":{"type":"string","maxLength":256},"default":{}}},"required":["selector","awsAccountId","awsRegion","idempotencyKey"]}}}},"responses":{"200":{"description":"Created or resumed Virtual Key","content":{"application/json":{"schema":{"type":"object","properties":{"virtualKey":{"type":"object","properties":{"id":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"projectId":{"type":"string"},"status":{"type":"string","enum":["provisioning","ready","action-required","decommissioning","deletion-pending","deleted","failed"]},"externalKeyId":{"type":"string"},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"customKeyStoreId":{"type":"string","nullable":true},"kmsKeyArn":{"type":"string","nullable":true},"alias":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"deletionWindowDays":{"type":"integer"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"canaryPassedAt":{"type":"string","nullable":true,"format":"date-time"},"deletionScheduledAt":{"type":"string","nullable":true,"format":"date-time"},"finalDeletionObservedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","status","externalKeyId","awsAccountId","awsRegion","customKeyStoreId","kmsKeyArn","alias","description","deletionWindowDays","tags","observedAt","canaryPassedAt","deletionScheduledAt","finalDeletionObservedAt","createdAt","updatedAt"]},"setup":{"type":"object","properties":{"proxyUriEndpoint":{"type":"string","format":"uri"},"proxyUriPath":{"type":"string"},"accessKeyId":{"type":"string"},"secretAccessKey":{"type":"string"},"externalKeyId":{"type":"string"}},"required":["proxyUriEndpoint","proxyUriPath","accessKeyId","secretAccessKey","externalKeyId"]}},"required":["virtualKey","setup"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project or Enterprise Key not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Idempotency conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"Gateway unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/aws-virtual-keys/{id}/rotate-credential":{"post":{"operationId":"rotateAwsVirtualKeyCredential","parameters":[{"schema":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"required":true,"description":"Unique identifier for the aws virtual key.","name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"generation":{"type":"integer","minimum":2}},"required":["generation"]}}}},"responses":{"200":{"description":"The resumable XKS proxy credential rotation bundle","content":{"application/json":{"schema":{"type":"object","properties":{"virtualKey":{"type":"object","properties":{"id":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"projectId":{"type":"string"},"status":{"type":"string","enum":["provisioning","ready","action-required","decommissioning","deletion-pending","deleted","failed"]},"externalKeyId":{"type":"string"},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"customKeyStoreId":{"type":"string","nullable":true},"kmsKeyArn":{"type":"string","nullable":true},"alias":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"deletionWindowDays":{"type":"integer"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"canaryPassedAt":{"type":"string","nullable":true,"format":"date-time"},"deletionScheduledAt":{"type":"string","nullable":true,"format":"date-time"},"finalDeletionObservedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","status","externalKeyId","awsAccountId","awsRegion","customKeyStoreId","kmsKeyArn","alias","description","deletionWindowDays","tags","observedAt","canaryPassedAt","deletionScheduledAt","finalDeletionObservedAt","createdAt","updatedAt"]},"setup":{"type":"object","properties":{"proxyUriEndpoint":{"type":"string","format":"uri"},"proxyUriPath":{"type":"string"},"accessKeyId":{"type":"string"},"secretAccessKey":{"type":"string"},"externalKeyId":{"type":"string"}},"required":["proxyUriEndpoint","proxyUriPath","accessKeyId","secretAccessKey","externalKeyId"]}},"required":["virtualKey","setup"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Virtual Key not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Virtual Key cannot begin rotation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/aws-virtual-keys/{id}/restore":{"post":{"operationId":"restoreAwsVirtualKey","parameters":[{"schema":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"required":true,"description":"Unique identifier for the aws virtual key.","name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"kmsKeyArn":{"type":"string","pattern":"^arn:(?:aws|aws-us-gov):kms:[a-z0-9-]+:\\d{12}:key\\/[A-Za-z0-9-]+$"}},"required":["kmsKeyArn"]}}}},"responses":{"200":{"description":"Virtual Key awaiting a successful AWS XKS canary after restore","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"projectId":{"type":"string"},"status":{"type":"string","enum":["provisioning","ready","action-required","decommissioning","deletion-pending","deleted","failed"]},"externalKeyId":{"type":"string"},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"customKeyStoreId":{"type":"string","nullable":true},"kmsKeyArn":{"type":"string","nullable":true},"alias":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"deletionWindowDays":{"type":"integer"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"canaryPassedAt":{"type":"string","nullable":true,"format":"date-time"},"deletionScheduledAt":{"type":"string","nullable":true,"format":"date-time"},"finalDeletionObservedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","status","externalKeyId","awsAccountId","awsRegion","customKeyStoreId","kmsKeyArn","alias","description","deletionWindowDays","tags","observedAt","canaryPassedAt","deletionScheduledAt","finalDeletionObservedAt","createdAt","updatedAt"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Virtual Key not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Virtual Key cannot be restored","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/aws-virtual-keys/{id}/finalize-deletion":{"post":{"operationId":"finalizeAwsVirtualKeyDeletion","parameters":[{"schema":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"required":true,"description":"Unique identifier for the aws virtual key.","name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"kmsKeyArn":{"type":"string","pattern":"^arn:(?:aws|aws-us-gov):kms:[a-z0-9-]+:\\d{12}:key\\/[A-Za-z0-9-]+$"}},"required":["kmsKeyArn"]}}}},"responses":{"200":{"description":"Virtual Key whose final AWS KMS deletion was observed","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"projectId":{"type":"string"},"status":{"type":"string","enum":["provisioning","ready","action-required","decommissioning","deletion-pending","deleted","failed"]},"externalKeyId":{"type":"string"},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"customKeyStoreId":{"type":"string","nullable":true},"kmsKeyArn":{"type":"string","nullable":true},"alias":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"deletionWindowDays":{"type":"integer"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"canaryPassedAt":{"type":"string","nullable":true,"format":"date-time"},"deletionScheduledAt":{"type":"string","nullable":true,"format":"date-time"},"finalDeletionObservedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","status","externalKeyId","awsAccountId","awsRegion","customKeyStoreId","kmsKeyArn","alias","description","deletionWindowDays","tags","observedAt","canaryPassedAt","deletionScheduledAt","finalDeletionObservedAt","createdAt","updatedAt"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Virtual Key not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Virtual Key deletion cannot be finalized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/aws-virtual-keys/{id}/decommission":{"post":{"operationId":"decommissionAwsVirtualKey","parameters":[{"schema":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"required":true,"description":"Unique identifier for the aws virtual key.","name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"kmsKeyArn":{"type":"string","pattern":"^arn:(?:aws|aws-us-gov):kms:[a-z0-9-]+:\\d{12}:key\\/[A-Za-z0-9-]+$"},"deletionScheduledAt":{"type":"string","format":"date-time"}},"required":["kmsKeyArn","deletionScheduledAt"]}}}},"responses":{"200":{"description":"Virtual Key with AWS deletion scheduled","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"projectId":{"type":"string"},"status":{"type":"string","enum":["provisioning","ready","action-required","decommissioning","deletion-pending","deleted","failed"]},"externalKeyId":{"type":"string"},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"customKeyStoreId":{"type":"string","nullable":true},"kmsKeyArn":{"type":"string","nullable":true},"alias":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"deletionWindowDays":{"type":"integer"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"canaryPassedAt":{"type":"string","nullable":true,"format":"date-time"},"deletionScheduledAt":{"type":"string","nullable":true,"format":"date-time"},"finalDeletionObservedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","status","externalKeyId","awsAccountId","awsRegion","customKeyStoreId","kmsKeyArn","alias","description","deletionWindowDays","tags","observedAt","canaryPassedAt","deletionScheduledAt","finalDeletionObservedAt","createdAt","updatedAt"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Virtual Key not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"AWS key does not match","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/aws-virtual-keys/{id}":{"get":{"operationId":"getAwsVirtualKey","parameters":[{"schema":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"required":true,"description":"Unique identifier for the aws virtual key.","name":"id","in":"path"}],"responses":{"200":{"description":"AWS Virtual Key","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"projectId":{"type":"string"},"status":{"type":"string","enum":["provisioning","ready","action-required","decommissioning","deletion-pending","deleted","failed"]},"externalKeyId":{"type":"string"},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"customKeyStoreId":{"type":"string","nullable":true},"kmsKeyArn":{"type":"string","nullable":true},"alias":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"deletionWindowDays":{"type":"integer"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"canaryPassedAt":{"type":"string","nullable":true,"format":"date-time"},"deletionScheduledAt":{"type":"string","nullable":true,"format":"date-time"},"finalDeletionObservedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","status","externalKeyId","awsAccountId","awsRegion","customKeyStoreId","kmsKeyArn","alias","description","deletionWindowDays","tags","observedAt","canaryPassedAt","deletionScheduledAt","finalDeletionObservedAt","createdAt","updatedAt"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Virtual Key not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/aws-virtual-keys/{id}/continue":{"post":{"operationId":"continueAwsVirtualKey","parameters":[{"schema":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"required":true,"description":"Unique identifier for the aws virtual key.","name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"customKeyStoreId":{"type":"string","pattern":"^cks-[A-Za-z0-9]+$"},"kmsKeyArn":{"type":"string","pattern":"^arn:(?:aws|aws-us-gov):kms:[a-z0-9-]+:\\d{12}:key\\/[A-Za-z0-9-]+$"}},"required":["customKeyStoreId","kmsKeyArn"]}}}},"responses":{"200":{"description":"Updated AWS setup facts","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"projectId":{"type":"string"},"status":{"type":"string","enum":["provisioning","ready","action-required","decommissioning","deletion-pending","deleted","failed"]},"externalKeyId":{"type":"string"},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"customKeyStoreId":{"type":"string","nullable":true},"kmsKeyArn":{"type":"string","nullable":true},"alias":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"deletionWindowDays":{"type":"integer"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"canaryPassedAt":{"type":"string","nullable":true,"format":"date-time"},"deletionScheduledAt":{"type":"string","nullable":true,"format":"date-time"},"finalDeletionObservedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","status","externalKeyId","awsAccountId","awsRegion","customKeyStoreId","kmsKeyArn","alias","description","deletionWindowDays","tags","observedAt","canaryPassedAt","deletionScheduledAt","finalDeletionObservedAt","createdAt","updatedAt"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Virtual Key not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Setup facts conflict","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","project.encryption","project.ai-gateway","project.remote-bindings"],"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,"pattern":"^(?:[0-9a-fA-F]{40}|[0-9a-fA-F]{64})$","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,"description":"The author identity recorded by Git. This is not guaranteed to be an RFC-valid email address.","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."},"projectCapabilities":{"type":"object","nullable":true,"properties":{"schemaVersion":{"type":"number","enum":[1]},"capabilities":{"type":"object","properties":{"deployments":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]}},"required":["enabled"],"additionalProperties":false},"keys":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]},"applicationEncryption":{"type":"boolean","enum":[true]}},"required":["enabled","applicationEncryption"],"additionalProperties":false},"models":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]},"allowedProviders":{"type":"array","items":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic","databricks","openai"]},"minItems":1,"maxItems":6},"requirements":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string","minLength":1,"maxLength":256},"clientApis":{"type":"array","items":{"type":"string","enum":["openai-chat","openai-responses","anthropic-messages"]},"minItems":1,"maxItems":3},"required":{"type":"boolean"}},"required":["publicModelId","clientApis","required"],"additionalProperties":false},"maxItems":100}},"required":["enabled","allowedProviders","requirements"],"additionalProperties":false},"buckets":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]},"access":{"type":"string","enum":["read-write"]}},"required":["enabled","access"],"additionalProperties":false},"registry":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]},"repositories":{"type":"array","items":{"type":"string","minLength":1,"maxLength":128},"maxItems":100},"credentialPolicy":{"type":"string","enum":["pull-only","push-and-pull"]}},"required":["enabled","repositories","credentialPolicy"],"additionalProperties":false}},"additionalProperties":false}},"default":null,"required":["schemaVersion","capabilities"],"additionalProperties":false,"description":"Capabilities this Project may offer through setup links."},"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","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","nullable":true},"stack":{"allOf":[{"$ref":"#/components/schemas/StackByPlatform"}],"nullable":true}},"required":["id","version","stack"]},"supportedPlatforms":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","machines","local","test"],"description":"Represents the target cloud platform."}},"setupItems":{"type":"array","items":{"type":"string","enum":["deployment","models","keys","bucket","registry"]}},"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"}},"setupPackagesStatus":{"type":"string","enum":["preparing","ready","failed"],"description":"Whether at least one complete automated setup package is ready across all selected setup items."}},"required":["activeRelease","supportedPlatforms","setupItems","visiblePackageTypes","visibleSetupMethods","setupPackagesStatus"]},"StackByPlatform":{"type":"object","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"]},"ProjectCapabilities":{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"capabilities":{"type":"object","properties":{"deployments":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]}},"required":["enabled"],"additionalProperties":false},"keys":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]},"applicationEncryption":{"type":"boolean","enum":[true]}},"required":["enabled","applicationEncryption"],"additionalProperties":false},"models":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]},"allowedProviders":{"type":"array","items":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic","databricks","openai"]},"minItems":1,"maxItems":6},"requirements":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string","minLength":1,"maxLength":256},"clientApis":{"type":"array","items":{"type":"string","enum":["openai-chat","openai-responses","anthropic-messages"]},"minItems":1,"maxItems":3},"required":{"type":"boolean"}},"required":["publicModelId","clientApis","required"],"additionalProperties":false},"maxItems":100}},"required":["enabled","allowedProviders","requirements"],"additionalProperties":false},"buckets":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]},"access":{"type":"string","enum":["read-write"]}},"required":["enabled","access"],"additionalProperties":false},"registry":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]},"repositories":{"type":"array","items":{"type":"string","minLength":1,"maxLength":128},"maxItems":100},"credentialPolicy":{"type":"string","enum":["pull-only","push-and-pull"]}},"required":["enabled","repositories","credentialPolicy"],"additionalProperties":false}},"additionalProperties":false}},"required":["schemaVersion","capabilities"],"additionalProperties":false},"CapabilityMaterialization":{"type":"object","properties":{"projectCapabilities":{"$ref":"#/components/schemas/ProjectCapabilities"},"source":{"type":"object","properties":{"definitionId":{"type":"string","enum":["customer-ai","customer-key","customer-storage","customer-registry"]},"definitionVersion":{"type":"string"},"releaseId":{"type":"string"}},"required":["definitionId","definitionVersion","releaseId"]},"packages":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["cloudformation","terraform"]},"status":{"type":"string","enum":["pending","building","ready","failed","canceled"]}},"required":["type","status"]}}},"required":["projectCapabilities","source","packages"]},"ConfigureModelsRequest":{"type":"object","properties":{"allowedProviders":{"type":"array","items":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic","databricks","openai"]},"minItems":1,"maxItems":6},"requirements":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string","minLength":1,"maxLength":256},"clientApis":{"type":"array","items":{"type":"string","enum":["openai-chat","openai-responses","anthropic-messages"]},"minItems":1,"maxItems":3},"required":{"type":"boolean"}},"required":["publicModelId","clientApis","required"],"additionalProperties":false},"maxItems":100}},"required":["allowedProviders","requirements"],"additionalProperties":false},"ProjectCapabilityOverview":{"type":"object","properties":{"generatedAt":{"type":"string","format":"date-time"},"configurationStatus":{"type":"string","enum":["valid","invalid"]},"summary":{"type":"object","properties":{"groups":{"type":"integer","minimum":0},"capabilities":{"type":"object","properties":{"models":{"type":"object","properties":{"enabled":{"type":"boolean"},"connected":{"type":"integer","minimum":0},"settingUp":{"type":"integer","minimum":0},"needsAttention":{"type":"integer","minimum":0},"revoked":{"type":"integer","minimum":0},"notConnected":{"type":"integer","minimum":0}},"required":["enabled","connected","settingUp","needsAttention","revoked","notConnected"]},"keys":{"type":"object","properties":{"enabled":{"type":"boolean"},"connected":{"type":"integer","minimum":0},"settingUp":{"type":"integer","minimum":0},"needsAttention":{"type":"integer","minimum":0},"revoked":{"type":"integer","minimum":0},"notConnected":{"type":"integer","minimum":0}},"required":["enabled","connected","settingUp","needsAttention","revoked","notConnected"]},"buckets":{"type":"object","properties":{"enabled":{"type":"boolean"},"connected":{"type":"integer","minimum":0},"settingUp":{"type":"integer","minimum":0},"needsAttention":{"type":"integer","minimum":0},"revoked":{"type":"integer","minimum":0},"notConnected":{"type":"integer","minimum":0}},"required":["enabled","connected","settingUp","needsAttention","revoked","notConnected"]},"registry":{"type":"object","properties":{"enabled":{"type":"boolean"},"connected":{"type":"integer","minimum":0},"settingUp":{"type":"integer","minimum":0},"needsAttention":{"type":"integer","minimum":0},"revoked":{"type":"integer","minimum":0},"notConnected":{"type":"integer","minimum":0}},"required":["enabled","connected","settingUp","needsAttention","revoked","notConnected"]}},"required":["models","keys","buckets","registry"]}},"required":["groups","capabilities"]},"groups":{"type":"array","items":{"type":"object","properties":{"deploymentGroupId":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"name":{"type":"string"},"externalId":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"},"capabilities":{"type":"object","properties":{"models":{"type":"object","properties":{"capability":{"type":"string","enum":["models","keys","buckets","registry"]},"enabled":{"type":"boolean"},"state":{"type":"string","enum":["not-connected","setting-up","connected","needs-attention","revoked"]},"deploymentId":{"type":"string","nullable":true,"pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"observation":{"type":"object","nullable":true,"properties":{"provider":{"type":"string","nullable":true},"platform":{"type":"string","nullable":true,"enum":["aws","gcp","azure","local","kubernetes","machines","test",null]},"resourceId":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"account":{"type":"string","nullable":true},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"stale":{"type":"boolean"},"partial":{"type":"boolean"},"health":{"type":"string","nullable":true,"enum":["unknown","healthy","degraded","unhealthy",null]},"lifecycle":{"type":"string","nullable":true},"message":{"type":"string","nullable":true}},"required":["provider","platform","resourceId","location","account","observedAt","stale","partial","health","lifecycle","message"]},"modelCoverage":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string"},"required":{"type":"boolean"},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockerCodes":{"type":"array","items":{"type":"string"}},"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"accessObservedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["publicModelId","required","availability","blockerCodes","accessTest","accessObservedAt"]}},"directProvider":{"type":"object","properties":{"provider":{"type":"string","enum":["anthropic","databricks","openai"]},"providerEndpoint":{"type":"string","nullable":true},"keyFingerprint":{"type":"string"},"availableProviderModelIds":{"type":"array","items":{"type":"string"}},"verifiedAt":{"type":"string","format":"date-time"}},"required":["provider","providerEndpoint","keyFingerprint","availableProviderModelIds","verifiedAt"]},"root":{"type":"object","properties":{"state":{"type":"string","enum":["pending","ready","revoked"]},"createdAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["state","createdAt"]},"registry":{"type":"object","properties":{"repositories":{"type":"integer","minimum":0},"credentials":{"type":"integer","minimum":0},"credentialPolicy":{"type":"string","enum":["pull-only","push-and-pull","mixed","none"]},"lastVerifiedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["repositories","credentials","credentialPolicy","lastVerifiedAt"]}},"required":["capability","enabled","state","deploymentId","observation"]},"keys":{"type":"object","properties":{"capability":{"type":"string","enum":["models","keys","buckets","registry"]},"enabled":{"type":"boolean"},"state":{"type":"string","enum":["not-connected","setting-up","connected","needs-attention","revoked"]},"deploymentId":{"type":"string","nullable":true,"pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"observation":{"type":"object","nullable":true,"properties":{"provider":{"type":"string","nullable":true},"platform":{"type":"string","nullable":true,"enum":["aws","gcp","azure","local","kubernetes","machines","test",null]},"resourceId":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"account":{"type":"string","nullable":true},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"stale":{"type":"boolean"},"partial":{"type":"boolean"},"health":{"type":"string","nullable":true,"enum":["unknown","healthy","degraded","unhealthy",null]},"lifecycle":{"type":"string","nullable":true},"message":{"type":"string","nullable":true}},"required":["provider","platform","resourceId","location","account","observedAt","stale","partial","health","lifecycle","message"]},"modelCoverage":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string"},"required":{"type":"boolean"},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockerCodes":{"type":"array","items":{"type":"string"}},"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"accessObservedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["publicModelId","required","availability","blockerCodes","accessTest","accessObservedAt"]}},"directProvider":{"type":"object","properties":{"provider":{"type":"string","enum":["anthropic","databricks","openai"]},"providerEndpoint":{"type":"string","nullable":true},"keyFingerprint":{"type":"string"},"availableProviderModelIds":{"type":"array","items":{"type":"string"}},"verifiedAt":{"type":"string","format":"date-time"}},"required":["provider","providerEndpoint","keyFingerprint","availableProviderModelIds","verifiedAt"]},"root":{"type":"object","properties":{"state":{"type":"string","enum":["pending","ready","revoked"]},"createdAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["state","createdAt"]},"registry":{"type":"object","properties":{"repositories":{"type":"integer","minimum":0},"credentials":{"type":"integer","minimum":0},"credentialPolicy":{"type":"string","enum":["pull-only","push-and-pull","mixed","none"]},"lastVerifiedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["repositories","credentials","credentialPolicy","lastVerifiedAt"]}},"required":["capability","enabled","state","deploymentId","observation"]},"buckets":{"type":"object","properties":{"capability":{"type":"string","enum":["models","keys","buckets","registry"]},"enabled":{"type":"boolean"},"state":{"type":"string","enum":["not-connected","setting-up","connected","needs-attention","revoked"]},"deploymentId":{"type":"string","nullable":true,"pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"observation":{"type":"object","nullable":true,"properties":{"provider":{"type":"string","nullable":true},"platform":{"type":"string","nullable":true,"enum":["aws","gcp","azure","local","kubernetes","machines","test",null]},"resourceId":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"account":{"type":"string","nullable":true},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"stale":{"type":"boolean"},"partial":{"type":"boolean"},"health":{"type":"string","nullable":true,"enum":["unknown","healthy","degraded","unhealthy",null]},"lifecycle":{"type":"string","nullable":true},"message":{"type":"string","nullable":true}},"required":["provider","platform","resourceId","location","account","observedAt","stale","partial","health","lifecycle","message"]},"modelCoverage":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string"},"required":{"type":"boolean"},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockerCodes":{"type":"array","items":{"type":"string"}},"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"accessObservedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["publicModelId","required","availability","blockerCodes","accessTest","accessObservedAt"]}},"directProvider":{"type":"object","properties":{"provider":{"type":"string","enum":["anthropic","databricks","openai"]},"providerEndpoint":{"type":"string","nullable":true},"keyFingerprint":{"type":"string"},"availableProviderModelIds":{"type":"array","items":{"type":"string"}},"verifiedAt":{"type":"string","format":"date-time"}},"required":["provider","providerEndpoint","keyFingerprint","availableProviderModelIds","verifiedAt"]},"root":{"type":"object","properties":{"state":{"type":"string","enum":["pending","ready","revoked"]},"createdAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["state","createdAt"]},"registry":{"type":"object","properties":{"repositories":{"type":"integer","minimum":0},"credentials":{"type":"integer","minimum":0},"credentialPolicy":{"type":"string","enum":["pull-only","push-and-pull","mixed","none"]},"lastVerifiedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["repositories","credentials","credentialPolicy","lastVerifiedAt"]}},"required":["capability","enabled","state","deploymentId","observation"]},"registry":{"type":"object","properties":{"capability":{"type":"string","enum":["models","keys","buckets","registry"]},"enabled":{"type":"boolean"},"state":{"type":"string","enum":["not-connected","setting-up","connected","needs-attention","revoked"]},"deploymentId":{"type":"string","nullable":true,"pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"observation":{"type":"object","nullable":true,"properties":{"provider":{"type":"string","nullable":true},"platform":{"type":"string","nullable":true,"enum":["aws","gcp","azure","local","kubernetes","machines","test",null]},"resourceId":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"account":{"type":"string","nullable":true},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"stale":{"type":"boolean"},"partial":{"type":"boolean"},"health":{"type":"string","nullable":true,"enum":["unknown","healthy","degraded","unhealthy",null]},"lifecycle":{"type":"string","nullable":true},"message":{"type":"string","nullable":true}},"required":["provider","platform","resourceId","location","account","observedAt","stale","partial","health","lifecycle","message"]},"modelCoverage":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string"},"required":{"type":"boolean"},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockerCodes":{"type":"array","items":{"type":"string"}},"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"accessObservedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["publicModelId","required","availability","blockerCodes","accessTest","accessObservedAt"]}},"directProvider":{"type":"object","properties":{"provider":{"type":"string","enum":["anthropic","databricks","openai"]},"providerEndpoint":{"type":"string","nullable":true},"keyFingerprint":{"type":"string"},"availableProviderModelIds":{"type":"array","items":{"type":"string"}},"verifiedAt":{"type":"string","format":"date-time"}},"required":["provider","providerEndpoint","keyFingerprint","availableProviderModelIds","verifiedAt"]},"root":{"type":"object","properties":{"state":{"type":"string","enum":["pending","ready","revoked"]},"createdAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["state","createdAt"]},"registry":{"type":"object","properties":{"repositories":{"type":"integer","minimum":0},"credentials":{"type":"integer","minimum":0},"credentialPolicy":{"type":"string","enum":["pull-only","push-and-pull","mixed","none"]},"lastVerifiedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["repositories","credentials","credentialPolicy","lastVerifiedAt"]}},"required":["capability","enabled","state","deploymentId","observation"]}},"required":["models","keys","buckets","registry"]}},"required":["deploymentGroupId","name","externalId","createdAt","capabilities"]}}},"required":["generatedAt","configurationStatus","summary","groups"]},"RemoteBindingsExternalAccessResponse":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"resourceId":{"type":"string","minLength":1},"accessToken":{"type":"string"},"expiresIn":{"type":"number","nullable":true},"tokenType":{"type":"string","enum":["Bearer"]},"managerUrl":{"type":"string","format":"uri"}},"required":["deploymentId","resourceId","accessToken","expiresIn","tokenType","managerUrl"]},"RemoteBindingsExternalAccessRequest":{"type":"object","properties":{"externalId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"},"capability":{"type":"string","enum":["storage"]}},"required":["externalId","capability"],"additionalProperties":false},"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"},"externalId":{"type":"string","nullable":true,"minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"},"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","externalId","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"},"externalId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"},"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"]},"EnsureDeploymentGroupByExternalIdRequest":{"type":"object","properties":{"externalId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"},"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":["externalId","name","project"]},"CreateSetupLinkResponse":{"allOf":[{"$ref":"#/components/schemas/CreateDeploymentGroupTokenResponse"},{"type":"object","properties":{"deploymentGroup":{"$ref":"#/components/schemas/DeploymentGroup"}},"required":["deploymentGroup"]}]},"CreateDeploymentGroupTokenResponse":{"type":"object","properties":{"token":{"type":"string","description":"The API key token"},"deploymentLink":{"type":"string","description":"Formatted deployment link"}},"required":["token","deploymentLink"]},"CreateSetupLinkRequest":{"allOf":[{"$ref":"#/components/schemas/EnsureDeploymentGroupByExternalIdRequest"},{"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"},"setupItems":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentSetupItemSelection"},"maxItems":8,"description":"Customer infrastructure to include. The server snapshots its exact reviewed sources."},"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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"]},"DeploymentSetupItemSelection":{"type":"object","properties":{"item":{"type":"string","enum":["deployment","models","keys","bucket","registry"]},"required":{"type":"boolean"},"releaseChannel":{"type":"string","minLength":1,"maxLength":63}},"required":["item","required"],"additionalProperties":false},"StackInputValuesRequest":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/StackInputValueRequest"},"default":{}},"StackInputValueRequest":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"type":"string"}}]},"ProjectIDOrNameQueryParam":{"type":"string","maxLength":100,"description":"Filter by project ID or name."},"SetDeploymentGroupExternalIdRequest":{"type":"object","properties":{"externalId":{"type":"string","nullable":true,"minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"}},"required":["externalId"]},"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"}}},"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"},"setupItems":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentSetupItemSelection"},"maxItems":8,"description":"Customer infrastructure to include. The server snapshots its exact reviewed sources."},"inputValues":{"$ref":"#/components/schemas/StackInputValuesRequest"}},"required":["deploymentSetupConfig"]},"CreateFirstPartyDeploymentSessionResponse":{"type":"object","properties":{"token":{"type":"string","description":"The deployment-group session token"}},"required":["token"]},"ExternalAIBindingState":{"type":"object","properties":{"binding":{"$ref":"#/components/schemas/ExternalAIBinding"}},"required":["binding"]},"ExternalAIBinding":{"type":"object","nullable":true,"properties":{"id":{"type":"string"},"provider":{"type":"string","enum":["anthropic","databricks","openai"]},"providerEndpoint":{"type":"string","nullable":true},"providerClientId":{"type":"string","nullable":true},"keyFingerprint":{"type":"string"},"availableProviderModelIds":{"type":"array","items":{"type":"string"}},"requiredModelCoverage":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string"},"available":{"type":"boolean"}},"required":["publicModelId","available"]}},"verifiedAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","provider","providerEndpoint","providerClientId","keyFingerprint","availableProviderModelIds","requiredModelCoverage","verifiedAt","updatedAt"]},"PutExternalAIBindingRequest":{"oneOf":[{"type":"object","properties":{"provider":{"type":"string","enum":["anthropic","openai"]},"apiKey":{"type":"string","minLength":1,"maxLength":512},"acknowledgeAlienCredentialAccess":{"type":"boolean","enum":[true]}},"required":["provider","apiKey","acknowledgeAlienCredentialAccess"],"additionalProperties":false},{"type":"object","properties":{"provider":{"type":"string","enum":["databricks"]},"workspaceUrl":{"type":"string","minLength":1,"maxLength":512},"clientId":{"type":"string","minLength":1,"maxLength":512},"clientSecret":{"type":"string","minLength":1,"maxLength":4096},"acknowledgeAlienCredentialAccess":{"type":"boolean","enum":[true]}},"required":["provider","workspaceUrl","clientId","clientSecret","acknowledgeAlienCredentialAccess"],"additionalProperties":false}]},"ContainerRegistryState":{"type":"object","properties":{"route":{"type":"object","nullable":true,"properties":{"id":{"type":"string","pattern":"crroute_[0-9a-z]{28}$","description":"Unique identifier for the container registry route.","example":"crroute_c9t4xoy7fmiq7equtu20"},"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"managerId":{"type":"string"},"resourceId":{"type":"string"},"resourceRevision":{"type":"string","minLength":1},"desiredRevision":{"type":"integer","minimum":0},"appliedRevision":{"type":"integer","minimum":0},"status":{"type":"string","enum":["resolving","applying","connected","degraded","revoking","revoked"]},"lastVerifiedAt":{"type":"string","nullable":true,"format":"date-time"},"lastError":{"type":"string","nullable":true}},"required":["id","deploymentId","managerId","resourceId","resourceRevision","desiredRevision","appliedRevision","status","lastVerifiedAt","lastError"]},"endpoint":{"type":"object","nullable":true,"properties":{"url":{"type":"string","format":"uri"},"source":{"type":"string","enum":["runtime","custom-domain"]}},"required":["url","source"]},"repositories":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"crrepo_[0-9a-z]{28}$","description":"Unique identifier for the container registry repository.","example":"crrepo_625temdq3bnu25jw9rcux"},"logicalName":{"type":"string"},"desiredState":{"type":"string","enum":["present","deleteRequested","deleted"]},"status":{"type":"string","enum":["pending","creating","ready","deleting","deleted","failed"]},"verifiedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["id","logicalName","desiredState","status","verifiedAt"]}},"credentials":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"crcred_[0-9a-z]{28}$","description":"Unique identifier for the container registry credential.","example":"crcred_oz1xjr82f37j17g4gtmyu"},"label":{"type":"string"},"scope":{"type":"string","enum":["pull","pushPull"]},"repositorySubset":{"type":"array","nullable":true,"items":{"type":"string"}},"expiresAt":{"type":"string","nullable":true,"format":"date-time"},"lastUsedAt":{"type":"string","nullable":true,"format":"date-time"},"revokedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","label","scope","repositorySubset","expiresAt","lastUsedAt","revokedAt","createdAt"]}}},"required":["route","endpoint","repositories","credentials"]},"CreateContainerRegistryCredentialResponse":{"type":"object","properties":{"credential":{"type":"object","properties":{"id":{"type":"string","pattern":"crcred_[0-9a-z]{28}$","description":"Unique identifier for the container registry credential.","example":"crcred_oz1xjr82f37j17g4gtmyu"},"label":{"type":"string"},"scope":{"type":"string","enum":["pull","pushPull"]},"repositorySubset":{"type":"array","nullable":true,"items":{"type":"string"}},"expiresAt":{"type":"string","nullable":true,"format":"date-time"},"lastUsedAt":{"type":"string","nullable":true,"format":"date-time"},"revokedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","label","scope","repositorySubset","expiresAt","lastUsedAt","revokedAt","createdAt"]},"username":{"type":"string","enum":["alien"]},"password":{"type":"string"}},"required":["credential","username","password"]},"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":{"currentChannels":{"type":"array","items":{"$ref":"#/components/schemas/ReleaseChannelName"},"description":"Channels for which this release is currently selected"},"commitUrl":{"type":"string","nullable":true,"format":"uri","description":"Validated canonical provider URL for the exact commit"},"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"},"createdBy":{"type":"object","nullable":true,"properties":{"id":{"type":"string","description":"User ID"},"name":{"type":"string","description":"User's display name"},"email":{"type":"string","description":"User's email address"},"image":{"type":"string","nullable":true,"description":"User's avatar image URL"}},"required":["id","name","email","image"],"description":"Platform user who created the release, included when ?include=createdBy is used"}},"required":["currentChannels","commitUrl"]}]},"ReleaseChannelName":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z][a-z0-9-]*$"},"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":{"allOf":[{"$ref":"#/components/schemas/StackByPlatform"}],"nullable":true},"setupFingerprints":{"allOf":[{"$ref":"#/components/schemas/SetupFingerprintMap"},{"description":"Per-target setup compatibility fingerprints for this release"}]},"rootDirectory":{"type":"string","nullable":true,"maxLength":256},"createdByUserId":{"type":"string","nullable":true,"maxLength":128,"description":"ID of the platform user who created the release, if known"},"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},"channel":{"allOf":[{"$ref":"#/components/schemas/ReleaseChannelName"},{"description":"Release channel to advance. Defaults to production."}]}},"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"]},"ReleaseDeploymentsResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ReleaseDeploymentItem"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"},"stateCounts":{"$ref":"#/components/schemas/ReleaseRolloutStateCounts"}},"required":["items","nextCursor","stateCounts"]},"ReleaseDeploymentItem":{"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."},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","machines","local","test"],"description":"Target platform 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"},"deploymentGroup":{"type":"object","nullable":true,"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"},"externalId":{"type":"string","nullable":true,"minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"}},"required":["id","name","externalId"],"description":"Deployment group this deployment belongs to"},"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"},"lastHeartbeatAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last received heartbeat"},"rolloutState":{"$ref":"#/components/schemas/ReleaseRolloutState"},"releasedAt":{"type":"string","format":"date-time","nullable":true,"description":"When this release went live on the deployment, null if it never did"},"durationMs":{"type":"integer","nullable":true,"description":"Time from release creation until the deployment finished updating, in milliseconds. Null for initial provisions and deployments that never ran this release."},"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"}},"required":["id","name","status","platform","rolloutState","releasedAt","durationMs"]},"ReleaseRolloutState":{"type":"string","enum":["updated","updating","failed","pending","pinned-other","superseded","on-other"]},"ReleaseRolloutStateCounts":{"type":"object","properties":{"updated":{"type":"integer"},"updating":{"type":"integer"},"failed":{"type":"integer"},"pending":{"type":"integer"},"pinned-other":{"type":"integer"},"superseded":{"type":"integer"},"on-other":{"type":"integer"}},"required":["updated","updating","failed","pending","pinned-other","superseded","on-other"],"description":"Deployment counts per rollout state across all deployments the filters allow (ignores the state filter)"},"ReleaseChannel":{"type":"object","properties":{"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"name":{"$ref":"#/components/schemas/ReleaseChannelName"},"currentReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"deploymentCount":{"type":"integer","minimum":0},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["workspaceId","projectId","name","currentReleaseId","createdAt","updatedAt"]},"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"},"purpose":{"$ref":"#/components/schemas/DeploymentPurpose"},"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"},"releaseChannel":{"allOf":[{"$ref":"#/components/schemas/ReleaseChannelName"},{"description":"Named release stream followed when the deployment is not pinned"}]},"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","purpose","releaseChannel","retryRequested","createdAt","updatedAt","managerId","workspaceId"]},"DeploymentProtocolVersion":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"DeploymentState protocol version owned by the runtime/manager"},"DeploymentPurpose":{"type":"string","enum":["application","encryption","ai","storage","container-registry"],"description":"Operational purpose of this deployment within its customer environment."},"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"},"externalId":{"type":"string","nullable":true,"minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"}},"required":["id","name","externalId"]},"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."},"byOrigin":{"type":"object","properties":{"framework":{"type":"number"},"remoteOperator":{"type":"number"}},"description":"Count of deployments introduced through each deployment path."}},"required":["total","byStatus","byPlatform","byCurrentRelease","byPinnedRelease","byOrigin"]},"DeploymentDetailResponse":{"allOf":[{"$ref":"#/components/schemas/Deployment"},{"type":"object","properties":{"release":{"$ref":"#/components/schemas/DeploymentReleaseInfo"},"deploymentGroup":{"$ref":"#/components/schemas/DeploymentGroupInfo"},"project":{"$ref":"#/components/schemas/DeploymentProjectInfo"}}}]},"DeploymentUpdateOperationSummary":{"type":"object","nullable":true,"properties":{"id":{"type":"string","pattern":"duop_[0-9a-z]{28}$","description":"Unique identifier for the deployment update operation.","example":"duop_0vtxpb1sw4sbcdwg2xo37q6"},"status":{"$ref":"#/components/schemas/DeploymentUpdateOperationStatus"},"reasons":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentUpdateReason"}},"targetReleaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"changedKeys":{"type":"array","items":{"type":"string"}},"requestedAt":{"type":"string","format":"date-time"},"startedAt":{"type":"string","format":"date-time","nullable":true},"completedAt":{"type":"string","format":"date-time","nullable":true}},"required":["id","status","reasons","targetReleaseId","changedKeys","requestedAt"]},"DeploymentUpdateOperationStatus":{"type":"string","enum":["queued","applying","succeeded","failed","superseded"]},"DeploymentUpdateReason":{"type":"string","enum":["configuration","redeploy","release"]},"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"},"purpose":{"$ref":"#/components/schemas/DeploymentPurpose"},"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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":{"initialSetupAuthority":{"type":"string","enum":["importedHandoff","directSetup"],"description":"Actor that owns structural work during the initial setup phase."},"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}]},"persistedGateAnswers":{"type":"object","properties":{},"additionalProperties":{"type":"boolean"},"description":"Canonical resolved answers for inputs that gate Frozen resources,\nkeyed by input id, recorded when the deployment is created or its\nsetup import registers.\n\nA frozen gate's answer is fixed for the deployment's lifetime: the\nupdate path refuses input values that conflict with these, and a Live\nresource sharing such an input resolves the persisted answer forever."},"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"},"releaseChannel":{"allOf":[{"$ref":"#/components/schemas/ReleaseChannelName"},{"description":"Named release stream followed when the deployment is not pinned"}]},"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"},"updateState":{"type":"object","properties":{"active":{"$ref":"#/components/schemas/DeploymentUpdateOperationSummary"},"next":{"$ref":"#/components/schemas/DeploymentUpdateOperationSummary"},"latest":{"$ref":"#/components/schemas/DeploymentUpdateOperationSummary"}},"required":["active","next","latest"],"description":"Durable progress for deployment updates"},"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","purpose","stackSettings","releaseChannel","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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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."},"releaseChannel":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z][a-z0-9-]*$","default":"production","description":"Release channel followed while this deployment is not pinned."},"setupItem":{"type":"string","enum":["deployment","models","keys","bucket","registry"],"description":"Customer setup item selected from this deployment-group token."}},"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"},"setupItem":{"type":"string","enum":["deployment","models","keys","bucket","registry"],"description":"Exact item selected from a tailored customer setup link."},"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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":{"initialSetupAuthority":{"type":"string","enum":["importedHandoff","directSetup"],"description":"Actor that owns structural work during the initial setup phase."},"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}]},"persistedGateAnswers":{"type":"object","properties":{},"additionalProperties":{"type":"boolean"},"description":"Canonical resolved answers for inputs that gate Frozen resources,\nkeyed by input id, recorded when the deployment is created or its\nsetup import registers.\n\nA frozen gate's answer is fixed for the deployment's lifetime: the\nupdate path refuses input values that conflict with these, and a Live\nresource sharing such an input resolves the persisted answer forever."},"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 resume its followed channel.","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"},"outcome":{"type":"string","enum":["accepted","unchanged"]},"operation":{"$ref":"#/components/schemas/DeploymentUpdateOperationSummary"}},"required":["runtimeUpdateRequested","outcome","operation"]}]},"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","nullable":true,"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"},"items":{"type":"array","items":{"type":"object","properties":{"item":{"type":"string","enum":["deployment","models","keys","bucket","registry"]},"source":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["project-release"]},"releaseChannel":{"type":"string","minLength":1,"maxLength":63},"releaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"resourceId":{"type":"string","minLength":1,"maxLength":256}},"required":["type","releaseChannel","releaseId"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["built-in"]},"definitionId":{"type":"string","enum":["customer-ai","customer-key","customer-storage","customer-registry"]},"version":{"type":"string","minLength":1,"maxLength":64},"sourceReleaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"}},"required":["type","definitionId","version","sourceReleaseId"],"additionalProperties":false}]},"required":{"type":"boolean"},"configuration":{"type":"object","properties":{"allowedProviders":{"type":"array","items":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic","databricks","openai"]},"minItems":1,"maxItems":6},"modelRequirements":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string","minLength":1,"maxLength":256},"clientApis":{"type":"array","items":{"type":"string","enum":["openai-chat","openai-responses","anthropic-messages"]},"minItems":1,"maxItems":3},"required":{"type":"boolean"}},"required":["publicModelId","clientApis","required"],"additionalProperties":false},"maxItems":100}},"additionalProperties":false}},"required":["item","source","required"],"additionalProperties":false},"maxItems":8,"description":"Immutable setup items and exact sources captured when this setup link is created."},"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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}]},"channel":{"type":"string","description":"Name of the channel that moved"},"previousReleaseId":{"type":"string","nullable":true,"description":"ID of the release that was previously current, if any"},"releaseId":{"type":"string","description":"ID of the release that is now current"},"type":{"type":"string","enum":["ReleaseChannelUpdated"]}},"required":["channel","releaseId","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}]},"channel":{"type":"string","description":"Newly followed channel"},"deploymentId":{"type":"string","description":"ID of the deployment"},"previousChannel":{"type":"string","description":"Previously followed channel"},"type":{"type":"string","enum":["DeploymentReleaseChannelChanged"]}},"required":["channel","deploymentId","previousChannel","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"]},"GenerateManagerBindingTokenResponse":{"type":"object","properties":{"accessToken":{"type":"string"},"expiresIn":{"type":"number","nullable":true},"tokenType":{"type":"string","enum":["Bearer"]},"managerUrl":{"type":"string"}},"required":["accessToken","expiresIn","tokenType","managerUrl"]},"GenerateManagerBindingTokenRequest":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"}},"required":["deploymentId"],"additionalProperties":false},"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"]},"ContainerRegistryManagerSnapshot":{"type":"object","properties":{"generatedAt":{"type":"string","format":"date-time"},"routes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"crroute_[0-9a-z]{28}$","description":"Unique identifier for the container registry route.","example":"crroute_c9t4xoy7fmiq7equtu20"},"deploymentId":{"type":"string"},"resourceId":{"type":"string"},"resourceRevision":{"type":"string"},"desiredRevision":{"type":"integer","minimum":0},"appliedRevision":{"type":"integer","minimum":0},"status":{"type":"string","enum":["resolving","applying","connected","degraded","revoking","revoked"]},"repositories":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"crrepo_[0-9a-z]{28}$","description":"Unique identifier for the container registry repository.","example":"crrepo_625temdq3bnu25jw9rcux"},"logicalName":{"type":"string"},"desiredState":{"type":"string","enum":["present","deleteRequested","deleted"]},"routableUpstreamName":{"type":"string","nullable":true},"remoteResourceRevision":{"type":"string"}},"required":["id","logicalName","desiredState","routableUpstreamName","remoteResourceRevision"],"additionalProperties":false}},"credentials":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"crcred_[0-9a-z]{28}$","description":"Unique identifier for the container registry credential.","example":"crcred_oz1xjr82f37j17g4gtmyu"},"secretPrefix":{"type":"string"},"secretDigest":{"type":"string","pattern":"^[0-9a-f]{64}$"},"scope":{"type":"string","enum":["pull","pushPull"]},"repositorySubset":{"type":"array","nullable":true,"items":{"type":"string"}},"expiresAt":{"type":"string","nullable":true,"format":"date-time"},"revokedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["id","secretPrefix","secretDigest","scope","repositorySubset","expiresAt","revokedAt"],"additionalProperties":false}}},"required":["id","deploymentId","resourceId","resourceRevision","desiredRevision","appliedRevision","status","repositories","credentials"],"additionalProperties":false}}},"required":["generatedAt","routes"],"additionalProperties":false},"ApplyContainerRegistrySnapshotResponse":{"type":"object","properties":{"appliedRevision":{"type":"integer","minimum":0},"status":{"type":"string","enum":["applying","connected","degraded","revoked"]}},"required":["appliedRevision","status"],"additionalProperties":false},"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"}},"items":{"type":"array","items":{"type":"object","properties":{"item":{"type":"string","enum":["deployment","models","keys","bucket","registry"]},"source":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["project-release"]},"releaseChannel":{"type":"string","minLength":1,"maxLength":63},"releaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"resourceId":{"type":"string","minLength":1,"maxLength":256}},"required":["type","releaseChannel","releaseId"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["built-in"]},"definitionId":{"type":"string","enum":["customer-ai","customer-key","customer-storage","customer-registry"]},"version":{"type":"string","minLength":1,"maxLength":64},"sourceReleaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"}},"required":["type","definitionId","version","sourceReleaseId"],"additionalProperties":false}]},"required":{"type":"boolean"},"configuration":{"type":"object","properties":{"allowedProviders":{"type":"array","items":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic","databricks","openai"]},"minItems":1,"maxItems":6},"modelRequirements":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string","minLength":1,"maxLength":256},"clientApis":{"type":"array","items":{"type":"string","enum":["openai-chat","openai-responses","anthropic-messages"]},"minItems":1,"maxItems":3},"required":{"type":"boolean"}},"required":["publicModelId","clientApis","required"],"additionalProperties":false},"maxItems":100}},"additionalProperties":false}},"required":["item","source","required"],"additionalProperties":false},"maxItems":8}},"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","nullable":true,"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"]},"CommandBootstrapResponse":{"type":"object","properties":{"managerUrl":{"type":"string","format":"uri","description":"Current customer-facing manager URL"},"token":{"type":"string","minLength":1,"description":"Short-lived command capability token"},"expiresAt":{"type":"string","format":"date-time","description":"Capability expiry in RFC 3339 format"},"target":{"$ref":"#/components/schemas/CommandReceiverBootstrapTarget"}},"required":["managerUrl","token","expiresAt"]},"CommandReceiverBootstrapTarget":{"type":"object","properties":{"resourceId":{"type":"string"},"resourceType":{"type":"string","enum":["container","daemon"]}},"required":["resourceId","resourceType"],"description":"Resolved target identity; present only for receiver bootstrap"},"CommandBootstrapRequest":{"oneOf":[{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"role":{"type":"string","enum":["sender"]}},"required":["deploymentId","role"],"additionalProperties":false},{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"role":{"type":"string","enum":["receiver"]},"target":{"type":"string","minLength":1,"maxLength":255}},"required":["deploymentId","role","target"],"additionalProperties":false}]},"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"},"customerModels":{"type":"boolean","description":"Whether this release offers one remotely accessible AI resource"},"resourceCounts":{"type":"object","properties":{"workers":{"type":"integer","minimum":0},"containers":{"type":"integer","minimum":0},"daemons":{"type":"integer","minimum":0,"description":"Daemon resources that run on managed runtime machines"},"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","customerModels","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"},"modelAvailabilitySources":{"type":"array","items":{"type":"object","properties":{"deploymentId":{"type":"string"},"resourceId":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"status":{"type":"string","enum":["current","stale","invalid"]},"availability":{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]}},"required":["deploymentId","resourceId","observedAt","status"]}},"setupItems":{"type":"array","items":{"$ref":"#/components/schemas/SetupItemStatus"}},"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","modelAvailabilitySources"]},"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"]},"SetupItemStatus":{"type":"object","properties":{"item":{"type":"string","enum":["deployment","models","keys","bucket","registry"]},"source":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["project-release"]},"releaseChannel":{"type":"string","minLength":1,"maxLength":63},"releaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"resourceId":{"type":"string","minLength":1,"maxLength":256}},"required":["type","releaseChannel","releaseId"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["built-in"]},"definitionId":{"type":"string","enum":["customer-ai","customer-key","customer-storage","customer-registry"]},"version":{"type":"string","minLength":1,"maxLength":64},"sourceReleaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"}},"required":["type","definitionId","version","sourceReleaseId"],"additionalProperties":false}]},"required":{"type":"boolean"},"configuration":{"type":"object","properties":{"allowedProviders":{"type":"array","items":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic","databricks","openai"]},"minItems":1,"maxItems":6},"modelRequirements":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string","minLength":1,"maxLength":256},"clientApis":{"type":"array","items":{"type":"string","enum":["openai-chat","openai-responses","anthropic-messages"]},"minItems":1,"maxItems":3},"required":{"type":"boolean"}},"required":["publicModelId","clientApis","required"],"additionalProperties":false},"maxItems":100}},"additionalProperties":false},"status":{"type":"string","enum":["not-started","waiting","applying","verifying","connected","needs-attention","revoked"]},"deploymentIds":{"type":"array","items":{"type":"string"}},"blocker":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["item","source","required","status","deploymentIds"],"additionalProperties":false},"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"]}},"items":{"type":"array","items":{"type":"object","properties":{"item":{"type":"string","enum":["deployment","models","keys","bucket","registry"]},"source":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["project-release"]},"releaseChannel":{"type":"string","minLength":1,"maxLength":63},"releaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"resourceId":{"type":"string","minLength":1,"maxLength":256}},"required":["type","releaseChannel","releaseId"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["built-in"]},"definitionId":{"type":"string","enum":["customer-ai","customer-key","customer-storage","customer-registry"]},"version":{"type":"string","minLength":1,"maxLength":64},"sourceReleaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"}},"required":["type","definitionId","version","sourceReleaseId"],"additionalProperties":false}]},"required":{"type":"boolean"},"configuration":{"type":"object","properties":{"allowedProviders":{"type":"array","items":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic","databricks","openai"]},"minItems":1,"maxItems":6},"modelRequirements":{"type":"array","items":{"type":"object","properties":{"publicModelId":{"type":"string","minLength":1,"maxLength":256},"clientApis":{"type":"array","items":{"type":"string","enum":["openai-chat","openai-responses","anthropic-messages"]},"minItems":1,"maxItems":3},"required":{"type":"boolean"}},"required":["publicModelId","clientApis","required"],"additionalProperties":false},"maxItems":100}},"additionalProperties":false}},"required":["item","source","required"],"additionalProperties":false},"maxItems":8},"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"]},"ListOperationsPluginsResponse":{"type":"object","properties":{"plugins":{"type":"array","items":{"$ref":"#/components/schemas/OperationsPlugin"}}},"required":["plugins"]},"OperationsPlugin":{"type":"object","properties":{"name":{"type":"string"},"version":{"type":"string"},"tier":{"type":"string","enum":["read-only","mutating","destructive"],"description":"Plugin-level default tier."},"builtin":{"type":"boolean","description":"True for compiled-in plugins, false for custom bundles."},"enabled":{"type":"boolean"},"operations":{"type":"array","items":{"$ref":"#/components/schemas/OperationsPluginOperation"}}},"required":["name","version","tier","builtin","enabled","operations"]},"OperationsPluginOperation":{"type":"object","properties":{"name":{"type":"string","description":"Operation name, unique within the plugin."},"tier":{"type":"string","enum":["read-only","mutating","destructive"],"description":"Effective risk tier for this operation."},"description":{"type":"string","nullable":true,"description":"Human-readable description."}},"required":["name","tier","description"]},"OperationsBundleUploadUrlResponse":{"type":"object","properties":{"uploadUrl":{"type":"string","format":"uri","description":"Presigned S3 PUT URL to upload the bundle ZIP to."},"contentType":{"type":"string","description":"Content-Type header the PUT must send (must match the signature)."}},"required":["uploadUrl","contentType"]},"OperationsBundleUploadUrlRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Plugin name (from the bundle's metadata.json)."}},"required":["name"]},"PublishOperationsPluginResponse":{"type":"object","properties":{"name":{"type":"string"},"version":{"type":"string"},"tier":{"type":"string","enum":["read-only","mutating","destructive"],"description":"How risky an operation is (declared by the plugin metadata)."},"enabled":{"type":"boolean"}},"required":["name","version","tier","enabled"]},"PublishOperationsPluginRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Plugin name (from the bundle's metadata.json)."},"version":{"type":"string","minLength":1,"description":"Plugin version."},"tier":{"type":"string","enum":["read-only","mutating","destructive"],"description":"Plugin-level default risk tier."},"metadata":{"nullable":true,"description":"The verbatim metadata.json (operations[], binaries{})."}},"required":["name","version","tier"]},"SetOperationsPluginEnabledResponse":{"type":"object","properties":{"name":{"type":"string"},"builtin":{"type":"boolean"},"enabled":{"type":"boolean"}},"required":["name","builtin","enabled"]},"SetOperationsPluginEnabledRequest":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether the plugin should be baked into the operator image."}},"required":["enabled"]},"OperationsPolicyResponse":{"type":"object","properties":{"rules":{"type":"array","items":{"$ref":"#/components/schemas/OperationsPolicyRule"}},"default":{"type":"string","enum":["auto","manual"],"description":"Decision for commands no rule matches."}},"required":["rules","default"]},"OperationsPolicyRule":{"type":"object","properties":{"pattern":{"type":"string","description":"`plugin/operation`, `plugin/*`, or `*`."},"decision":{"type":"string","enum":["auto","manual"],"description":"auto: run immediately. manual: needs customer approval before running."}},"required":["pattern","decision"]},"UpdateOperationsPolicyRequest":{"type":"object","properties":{"rules":{"type":"array","items":{"$ref":"#/components/schemas/OperationsPolicyRule"},"description":"The full rule set (replaces the previous one)."}},"required":["rules"]},"InvokeOperationResponse":{"type":"object","properties":{"plugin":{"type":"string"},"operation":{"type":"string"},"tier":{"type":"string","enum":["read-only","mutating","destructive"],"description":"The operation's declared risk tier (informational)."},"decision":{"type":"string","enum":["auto","manual"],"description":"The approval decision the policy resolved to."},"status":{"type":"string","enum":["dispatched","pending-approval"],"description":"dispatched: auto-approved and running. pending-approval: needs customer sign-off."},"commandId":{"type":"string","description":"The created operation-command id when dispatched (absent when pending)."}},"required":["plugin","operation","tier","decision","status"]},"InvokeOperationRequest":{"type":"object","properties":{"deploymentId":{"type":"string","description":"Deployment to run the operation against."},"plugin":{"type":"string","description":"Plugin name."},"operation":{"type":"string","description":"Operation name exposed by the plugin."},"params":{"nullable":true,"description":"JSON params passed to the operation."}},"required":["deploymentId","plugin","operation"]},"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"},"purpose":{"$ref":"#/components/schemas/DeploymentPurpose"},"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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":{"initialSetupAuthority":{"type":"string","enum":["importedHandoff","directSetup"],"description":"Actor that owns structural work during the initial setup phase."},"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}]},"persistedGateAnswers":{"type":"object","properties":{},"additionalProperties":{"type":"boolean"},"description":"Canonical resolved answers for inputs that gate Frozen resources,\nkeyed by input id, recorded when the deployment is created or its\nsetup import registers.\n\nA frozen gate's answer is fixed for the deployment's lifetime: the\nupdate path refuses input values that conflict with these, and a Live\nresource sharing such an input resolves the persisted answer forever."},"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"},"releaseChannel":{"allOf":[{"$ref":"#/components/schemas/ReleaseChannelName"},{"description":"Named release stream followed when the deployment is not pinned"}]},"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"},"updateState":{"type":"object","properties":{"active":{"$ref":"#/components/schemas/DeploymentUpdateOperationSummary"},"next":{"$ref":"#/components/schemas/DeploymentUpdateOperationSummary"},"latest":{"$ref":"#/components/schemas/DeploymentUpdateOperationSummary"}},"required":["active","next","latest"],"description":"Durable progress for deployment updates"},"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","purpose","stackSettings","releaseChannel","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":{"initialSetupAuthority":{"type":"string","enum":["importedHandoff","directSetup"],"description":"Actor that owns structural work during the initial setup phase."},"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}]},"persistedGateAnswers":{"type":"object","properties":{},"additionalProperties":{"type":"boolean"},"description":"Canonical resolved answers for inputs that gate Frozen resources,\nkeyed by input id, recorded when the deployment is created or its\nsetup import registers.\n\nA frozen gate's answer is fixed for the deployment's lifetime: the\nupdate path refuses input values that conflict with these, and a Live\nresource sharing such an input resolves the persisted answer forever."},"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"},"serverCaCertificates":{"oneOf":[{"type":"array","items":{"type":"string"}},{"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"},"sslMode":{"type":"string","enum":["verify-full","disable"],"description":"TLS policy for an operator-provided / BYO Postgres database.\n\nUnlike libpq's ambiguous `prefer` mode, both choices map exactly to the\nconnection settings exposed by every supported SDK."},"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"]}]},{"allOf":[{"type":"object","properties":{"apiKey":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"provider":{"type":"string","description":"The external AI provider name (e.g., \"openai\", \"anthropic\")"}},"required":["provider"],"description":"External AI provider binding configuration (BYO-key).\n\nThe operator-supplied secret rides inside the binding via\n`BindingValue`, so it is a literal on cloud platforms and gains\nKubernetes SecretRef resolution for free (`extract_binding_secrets` walks\nthe binding JSON for `secretRef`)."},{"type":"object","properties":{"type":{"type":"string","enum":["ai"]}},"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)"},"leaseExpiresAt":{"type":"string","nullable":true,"format":"date-time","description":"When the provisional leases on the returned deployments lapse. Confirm them with sync/renew before starting work. Null when nothing was acquired."}},"required":["deployments","failures","leaseExpiresAt"],"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"},"requestId":{"type":"string","minLength":1,"description":"Idempotency key for one logical acquire request"},"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","requestId","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":{"initialSetupAuthority":{"type":"string","enum":["importedHandoff","directSetup"],"description":"Actor that owns structural work during the initial setup phase."},"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}]},"persistedGateAnswers":{"type":"object","properties":{},"additionalProperties":{"type":"boolean"},"description":"Canonical resolved answers for inputs that gate Frozen resources,\nkeyed by input id, recorded when the deployment is created or its\nsetup import registers.\n\nA frozen gate's answer is fixed for the deployment's lifetime: the\nupdate path refuses input values that conflict with these, and a Live\nresource sharing such an input resolves the persisted answer forever."},"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"},"serverCaCertificates":{"oneOf":[{"type":"array","items":{"type":"string"}},{"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"},"sslMode":{"type":"string","enum":["verify-full","disable"],"description":"TLS policy for an operator-provided / BYO Postgres database.\n\nUnlike libpq's ambiguous `prefer` mode, both choices map exactly to the\nconnection settings exposed by every supported SDK."},"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"]}]},{"allOf":[{"type":"object","properties":{"apiKey":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"provider":{"type":"string","description":"The external AI provider name (e.g., \"openai\", \"anthropic\")"}},"required":["provider"],"description":"External AI provider binding configuration (BYO-key).\n\nThe operator-supplied secret rides inside the binding via\n`BindingValue`, so it is a literal on cloud platforms and gains\nKubernetes SecretRef resolution for free (`extract_binding_secrets` walks\nthe binding JSON for `secretRef`)."},{"type":"object","properties":{"type":{"type":"string","enum":["ai"]}},"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":{"initialSetupAuthority":{"type":"string","enum":["importedHandoff","directSetup"],"description":"Actor that owns structural work during the initial setup phase."},"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}]},"persistedGateAnswers":{"type":"object","properties":{},"additionalProperties":{"type":"boolean"},"description":"Canonical resolved answers for inputs that gate Frozen resources,\nkeyed by input id, recorded when the deployment is created or its\nsetup import registers.\n\nA frozen gate's answer is fixed for the deployment's lifetime: the\nupdate path refuses input values that conflict with these, and a Live\nresource sharing such an input resolves the persisted answer forever."},"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"]}],"description":"AWS Aurora Serverless v2 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"]}],"description":"GCP Cloud SQL 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"]}],"description":"Azure Flexible Server 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"]}],"description":"Local embedded Postgres 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"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"availability":{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]},"region":{"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":["availability","region","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsBedrock"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"availability":{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]},"location":{"type":"string"},"project":{"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":["availability","location","project","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpVertex"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"accountName":{"type":"string"},"availability":{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]},"endpoint":{"type":"string","nullable":true},"location":{"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"]}},"required":["accountName","availability","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureFoundry"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"availability":{"oneOf":[{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]},{"nullable":true}]},"provider":{"type":"string","description":"The BYO-key provider serving this binding (e.g. \"openai\"). Used on the Local\nplatform, where the app brings its own provider key instead of an ambient cloud."},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["provider","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["external"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["ai"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"type":"object","properties":{"data":{"type":"object","properties":{"enabled":{"type":"boolean"},"keyArn":{"type":"string"},"keySpec":{"type":"string"},"keyState":{"type":"string"},"keyUsage":{"type":"string"},"status":{"type":"object","properties":{"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true}},"required":["health","lifecycle"]}},"required":["enabled","keyArn","keySpec","keyState","keyUsage","status"]},"provider":{"type":"string","enum":["aws-kms"]}},"required":["data","provider"]},{"type":"object","properties":{"data":{"type":"object","properties":{"algorithm":{"type":"string","nullable":true},"cryptoKeyName":{"type":"string"},"primaryState":{"type":"string","nullable":true},"primaryVersion":{"type":"string","nullable":true},"purpose":{"type":"string"},"status":{"type":"object","properties":{"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true}},"required":["health","lifecycle"]}},"required":["cryptoKeyName","purpose","status"]},"provider":{"type":"string","enum":["gcp-cloud-kms"]}},"required":["data","provider"]},{"type":"object","properties":{"data":{"type":"object","properties":{"enabled":{"type":"boolean","nullable":true},"keyId":{"type":"string"},"keyOperations":{"type":"array","items":{"type":"string"}},"keyType":{"type":"string"},"recoveryLevel":{"type":"string","nullable":true},"status":{"type":"object","properties":{"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true}},"required":["health","lifecycle"]}},"required":["keyId","keyOperations","keyType","status"]},"provider":{"type":"string","enum":["azure-key-vault"]}},"required":["data","provider"]}]},"resourceType":{"type":"string","enum":["key"]}},"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"},"SyncRenewRequest":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Single deployment to renew. Deprecated: use deploymentIds. Retained so a manager built against the previous API keeps renewing during rollout.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"deploymentIds":{"type":"array","items":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"minItems":1,"maxItems":100,"description":"Deployments to renew or confirm. Renewal is per deployment: the response reports each one independently."},"session":{"type":"string","minLength":1}},"required":["session"],"additionalProperties":false},"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"},"operations_custom_plugins":{"type":"boolean"},"sso_saml":{"type":"boolean"},"audit_logs":{"type":"boolean"},"airgapped":{"type":"boolean"}},"required":["custom_domains","private_managers","operations_custom_plugins","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}/source":{"post":{"operationId":"configureProjectSource","description":"Connect a GitHub repository or Alien template to an existing project and configure its release workflow.","x-speakeasy-group":"projects","x-speakeasy-name-override":"configureSource","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":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["repository"]},"gitRepository":{"type":"object","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},"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"}},"required":["mode","gitRepository"]},{"type":"object","properties":{"mode":{"type":"string","enum":["template"]},"targetNamespace":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-zA-Z0-9-]+$"},"templatePath":{"type":"string","enum":["examples/customer-models-ts","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"}},"required":["mode","targetNamespace","templatePath"]}]}}}},"responses":{"200":{"description":"Project source connected and GitHub Actions configured.","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/customer-models-ts","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"]}}}]}}}},"400":{"description":"Repository or template configuration is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Insufficient permission to update this project.","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"}}}},"503":{"description":"Template fork exists but is not ready yet.","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/customer-models-ts","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/customer-models-ts","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 production channel's current release. When deploymentId is provided, returns that deployment's effective release: its pin, or its followed channel's current 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":"Effective release retrieved successfully.","content":{"application/json":{"schema":{"nullable":true}}}},"404":{"description":"Project or effective 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}/project-capabilities":{"put":{"operationId":"setProjectCapabilities","description":"Set the capabilities offered by a Project. Removing a capability prevents new setup without deleting existing customer resources.","x-speakeasy-group":"projects","x-speakeasy-name-override":"setCapabilities","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":{"type":"object","properties":{"enabled":{"type":"array","items":{"type":"string","enum":["deployments","models","keys","buckets","registry"]},"maxItems":5}},"required":["enabled"],"additionalProperties":false}}}},"responses":{"200":{"description":"The Project's enabled capabilities.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectCapabilities"}}}},"403":{"description":"Insufficient permissions.","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}/project-capabilities/deployments":{"put":{"operationId":"configureProjectDeployments","description":"Enable deployments for a Project.","x-speakeasy-group":"projects","x-speakeasy-name-override":"configureDeployments","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":{"type":"object","properties":{"enabled":{"type":"boolean","enum":[true]}},"required":["enabled"],"additionalProperties":false}}}},"responses":{"200":{"description":"Deployments enabled for the Project.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectCapabilities"}}}},"403":{"description":"Insufficient permissions.","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}/project-capabilities/models":{"put":{"operationId":"configureProjectModels","description":"Configure customer-owned model providers without requiring an application Release.","x-speakeasy-group":"projects","x-speakeasy-name-override":"configureModels","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/ConfigureModelsRequest"}}}},"responses":{"200":{"description":"Customer Models configured and its exact setup source materialized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CapabilityMaterialization"}}}},"403":{"description":"Insufficient permissions.","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}/project-capabilities/keys":{"put":{"operationId":"configureProjectKeys","description":"Enable customer-owned application encryption without requiring an application Release.","x-speakeasy-group":"projects","x-speakeasy-name-override":"configureKeys","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":{"type":"object","properties":{"applicationEncryption":{"type":"boolean","enum":[true]}},"required":["applicationEncryption"],"additionalProperties":false}}}},"responses":{"200":{"description":"Customer Key configured and its exact setup source materialized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CapabilityMaterialization"}}}},"403":{"description":"Insufficient permissions.","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}/project-capabilities/buckets":{"put":{"operationId":"configureProjectBuckets","description":"Enable buckets without requiring a project Release.","x-speakeasy-group":"projects","x-speakeasy-name-override":"configureBuckets","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":{"type":"object","properties":{"access":{"type":"string","enum":["read-write"]}},"required":["access"],"additionalProperties":false}}}},"responses":{"200":{"description":"Buckets configured and their exact setup source materialized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CapabilityMaterialization"}}}},"403":{"description":"Insufficient permissions.","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}/project-capabilities/registry":{"put":{"operationId":"configureProjectRegistry","description":"Enable customer-owned container registries without requiring an application Release.","x-speakeasy-group":"projects","x-speakeasy-name-override":"configureRegistry","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":{"type":"object","properties":{"repositories":{"type":"array","items":{"type":"string","minLength":1,"maxLength":128},"maxItems":100},"credentialPolicy":{"type":"string","enum":["pull-only","push-and-pull"]}},"required":["repositories","credentialPolicy"],"additionalProperties":false}}}},"responses":{"200":{"description":"Customer Registry configured and its exact setup source materialized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CapabilityMaterialization"}}}},"403":{"description":"Insufficient permissions.","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}/project-capabilities/overview":{"get":{"operationId":"getProjectCapabilityOverview","description":"Get safe, server-derived capability status for a Project.","x-speakeasy-group":"projects","x-speakeasy-name-override":"getCapabilityOverview","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":"Project capability overview.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectCapabilityOverview"}}}},"403":{"description":"Insufficient permissions.","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}/remote-bindings/access":{"post":{"operationId":"createRemoteBindingsExternalAccess","tags":["remote-bindings"],"summary":"Create short-lived Remote Bindings access for a external resource","description":"Selects a connected external resource by Project and external ID, then returns a short-lived deployment-scoped Manager capability. The caller never receives the external cloud credentials from Platform.","x-speakeasy-group":"remoteBindings","x-speakeasy-name-override":"createExternalAccess","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":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteBindingsExternalAccessRequest"}}}},"responses":{"200":{"description":"Short-lived Remote Bindings access was created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteBindingsExternalAccessResponse"}}}},"401":{"description":"The API key is missing, invalid, expired, or disabled.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"The caller cannot access Remote Bindings for this Project.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"The Project or external ID was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"More than one active external resource matched.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"The external resource or its assigned Manager is not ready.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/projects/{idOrName}/ai-metrics":{"get":{"operationId":"getProjectAiUsage","x-speakeasy-group":"projects","x-speakeasy-name-override":"getAiUsage","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","enum":["24h","7d","30d"],"default":"24h"},"required":false,"name":"range","in":"query"}],"responses":{"200":{"description":"Privacy-safe AI Gateway usage aggregates.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"status":{"type":"string","enum":["unavailable"]},"reason":{"type":"string","enum":["not-configured","temporarily-unavailable"]}},"required":["status","reason"]},{"type":"object","properties":{"status":{"type":"string","enum":["available"]},"range":{"type":"string","enum":["24h","7d","30d"]},"pricing":{"type":"object","properties":{"label":{"type":"string","enum":["Estimated provider cost"]},"coverage":{"type":"number","minimum":0,"maximum":1},"revision":{"type":"string","nullable":true}},"required":["label","coverage","revision"]},"totals":{"type":"object","properties":{"requests":{"type":"integer","minimum":0},"successfulRequests":{"type":"integer","minimum":0},"errorRequests":{"type":"integer","minimum":0},"averageLatencyMs":{"type":"number","nullable":true,"minimum":0},"p95LatencyMs":{"type":"number","nullable":true,"minimum":0},"inputTokens":{"type":"integer","nullable":true,"minimum":0},"outputTokens":{"type":"integer","nullable":true,"minimum":0},"estimatedCostMicrousd":{"type":"integer","nullable":true,"minimum":0},"pricedRequests":{"type":"integer","minimum":0}},"required":["requests","successfulRequests","errorRequests","averageLatencyMs","p95LatencyMs","inputTokens","outputTokens","estimatedCostMicrousd","pricedRequests"]},"timeSeries":{"type":"array","items":{"type":"object","properties":{"requests":{"type":"integer","minimum":0},"successfulRequests":{"type":"integer","minimum":0},"errorRequests":{"type":"integer","minimum":0},"averageLatencyMs":{"type":"number","nullable":true,"minimum":0},"p95LatencyMs":{"type":"number","nullable":true,"minimum":0},"inputTokens":{"type":"integer","nullable":true,"minimum":0},"outputTokens":{"type":"integer","nullable":true,"minimum":0},"estimatedCostMicrousd":{"type":"integer","nullable":true,"minimum":0},"pricedRequests":{"type":"integer","minimum":0},"bucket":{"type":"string","format":"date-time"}},"required":["requests","successfulRequests","errorRequests","averageLatencyMs","p95LatencyMs","inputTokens","outputTokens","estimatedCostMicrousd","pricedRequests","bucket"]}},"customers":{"type":"array","items":{"type":"object","properties":{"requests":{"type":"integer","minimum":0},"successfulRequests":{"type":"integer","minimum":0},"errorRequests":{"type":"integer","minimum":0},"averageLatencyMs":{"type":"number","nullable":true,"minimum":0},"p95LatencyMs":{"type":"number","nullable":true,"minimum":0},"inputTokens":{"type":"integer","nullable":true,"minimum":0},"outputTokens":{"type":"integer","nullable":true,"minimum":0},"estimatedCostMicrousd":{"type":"integer","nullable":true,"minimum":0},"pricedRequests":{"type":"integer","minimum":0},"deploymentGroupId":{"type":"string"},"name":{"type":"string"},"externalId":{"type":"string","nullable":true}},"required":["requests","successfulRequests","errorRequests","averageLatencyMs","p95LatencyMs","inputTokens","outputTokens","estimatedCostMicrousd","pricedRequests","deploymentGroupId","name","externalId"]}},"models":{"type":"array","items":{"type":"object","properties":{"requests":{"type":"integer","minimum":0},"successfulRequests":{"type":"integer","minimum":0},"errorRequests":{"type":"integer","minimum":0},"averageLatencyMs":{"type":"number","nullable":true,"minimum":0},"p95LatencyMs":{"type":"number","nullable":true,"minimum":0},"inputTokens":{"type":"integer","nullable":true,"minimum":0},"outputTokens":{"type":"integer","nullable":true,"minimum":0},"estimatedCostMicrousd":{"type":"integer","nullable":true,"minimum":0},"pricedRequests":{"type":"integer","minimum":0},"publicModel":{"type":"string"},"provider":{"type":"string"}},"required":["requests","successfulRequests","errorRequests","averageLatencyMs","p95LatencyMs","inputTokens","outputTokens","estimatedCostMicrousd","pricedRequests","publicModel","provider"]}}},"required":["status","range","pricing","totals","timeSeries","customers","models"]}]}}}},"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/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/by-external-id":{"put":{"operationId":"ensureDeploymentGroupByExternalId","tags":["deployment-groups"],"summary":"Get or create a deployment group by project and external ID","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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/EnsureDeploymentGroupByExternalIdRequest"}}}},"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"}}}},"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"}}}}}},"get":{"operationId":"getDeploymentGroupByExternalId","tags":["deployment-groups"],"summary":"Get a deployment group by project and external ID","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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":100,"description":"Project ID or name. Optional for project-scoped API keys."},"required":false,"description":"Project ID or name. Optional for project-scoped API keys.","name":"project","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"},"required":true,"description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","name":"externalId","in":"query"}],"responses":{"200":{"description":"Deployment group returned successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentGroup"}}}},"404":{"description":"Project or 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/setup-links":{"post":{"operationId":"createSetupLink","tags":["setup-links"],"summary":"Create a customer setup link","description":"Ensures the Deployment Group identified by Project and external ID, then creates a replacement group-scoped setup link with exact captured sources.","x-speakeasy-group":"setupLinks","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":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSetupLinkRequest"}}}},"responses":{"200":{"description":"Customer environment ensured and setup link created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSetupLinkResponse"}}}},"400":{"description":"Customer environment or setup configuration is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Customer environment name or setup source conflicts","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}/external-id":{"put":{"operationId":"setDeploymentGroupExternalId","tags":["deployment-groups"],"summary":"Set or clear a deployment group's external ID","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":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetDeploymentGroupExternalIdRequest"}}}},"responses":{"200":{"description":"Deployment group external ID 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 external ID 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"}}}}}}},"/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/deployment-groups/{id}/ai/external":{"get":{"operationId":"getExternalAIBinding","tags":["deployment-groups"],"summary":"Get external AI connection state","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":"External AI connection state","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalAIBindingState"}}}},"403":{"description":"Insufficient permissions","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"}}}}}},"put":{"operationId":"putExternalAIBinding","tags":["deployment-groups"],"summary":"Connect or rotate an external AI provider key","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":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutExternalAIBindingRequest"}}}},"responses":{"200":{"description":"External AI connection verified and stored","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalAIBinding"}}}},"400":{"description":"The key is not valid for the selected provider","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Insufficient permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment group not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"The group already has an active cloud AI source","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"Provider verification is temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"delete":{"operationId":"deleteExternalAIBinding","tags":["deployment-groups"],"summary":"Revoke the external AI connection","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":"External AI connection revoked"},"403":{"description":"Insufficient permissions","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}/container-registry":{"get":{"operationId":"getContainerRegistry","tags":["container-registry"],"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":"Container registry state","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContainerRegistryState"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Registry configuration conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"put":{"operationId":"putContainerRegistry","tags":["container-registry"],"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":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"resourceId":{"type":"string","minLength":1,"maxLength":128}},"required":["deploymentId","resourceId"]}}}},"responses":{"200":{"description":"Registry route","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"crroute_[0-9a-z]{28}$","description":"Unique identifier for the container registry route.","example":"crroute_c9t4xoy7fmiq7equtu20"},"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"managerId":{"type":"string"},"resourceId":{"type":"string"},"resourceRevision":{"type":"string","minLength":1},"desiredRevision":{"type":"integer","minimum":0},"appliedRevision":{"type":"integer","minimum":0},"status":{"type":"string","enum":["resolving","applying","connected","degraded","revoking","revoked"]},"lastVerifiedAt":{"type":"string","nullable":true,"format":"date-time"},"lastError":{"type":"string","nullable":true}},"required":["id","deploymentId","managerId","resourceId","resourceRevision","desiredRevision","appliedRevision","status","lastVerifiedAt","lastError"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Registry configuration conflict","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}/container-registry/repositories":{"post":{"operationId":"createContainerRegistryRepository","tags":["container-registry"],"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":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[a-z0-9]+(?:[._-][a-z0-9]+)*(?:\\/[a-z0-9]+(?:[._-][a-z0-9]+)*)*$"}},"required":["name"]}}}},"responses":{"201":{"description":"Repository requested","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"crrepo_[0-9a-z]{28}$","description":"Unique identifier for the container registry repository.","example":"crrepo_625temdq3bnu25jw9rcux"},"logicalName":{"type":"string"},"desiredState":{"type":"string","enum":["present","deleteRequested","deleted"]},"status":{"type":"string","enum":["pending","creating","ready","deleting","deleted","failed"]},"verifiedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["id","logicalName","desiredState","status","verifiedAt"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Registry configuration conflict","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}/container-registry/credentials":{"post":{"operationId":"createContainerRegistryCredential","tags":["container-registry"],"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":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":64},"scope":{"type":"string","enum":["pull","pushPull"]},"repositorySubset":{"type":"array","nullable":true,"items":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[a-z0-9]+(?:[._-][a-z0-9]+)*(?:\\/[a-z0-9]+(?:[._-][a-z0-9]+)*)*$"},"minItems":1,"maxItems":100},"expiresAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["label","scope"]}}}},"responses":{"201":{"description":"Credential created; password is returned once","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateContainerRegistryCredentialResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Registry configuration conflict","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}/container-registry/credentials/{credentialId}":{"delete":{"operationId":"revokeContainerRegistryCredential","tags":["container-registry"],"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","pattern":"crcred_[0-9a-z]{28}$","description":"Unique identifier for the container registry credential.","example":"crcred_oz1xjr82f37j17g4gtmyu"},"required":true,"description":"Unique identifier for the container registry credential.","name":"credentialId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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":"Credential revoked"},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Registry configuration conflict","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}/container-registry/repositories/{repositoryId}":{"delete":{"operationId":"deleteContainerRegistryRepository","tags":["container-registry"],"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","pattern":"crrepo_[0-9a-z]{28}$","description":"Unique identifier for the container registry repository.","example":"crrepo_625temdq3bnu25jw9rcux"},"required":true,"description":"Unique identifier for the container registry repository.","name":"repositoryId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are 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":{"confirmName":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[a-z0-9]+(?:[._-][a-z0-9]+)*(?:\\/[a-z0-9]+(?:[._-][a-z0-9]+)*)*$"},"disposition":{"type":"string","enum":["preserve","deleteContents"]}},"required":["confirmName","disposition"]}}}},"responses":{"202":{"description":"Repository deletion requested","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"crrepo_[0-9a-z]{28}$","description":"Unique identifier for the container registry repository.","example":"crrepo_625temdq3bnu25jw9rcux"},"logicalName":{"type":"string"},"desiredState":{"type":"string","enum":["present","deleteRequested","deleted"]},"status":{"type":"string","enum":["pending","creating","ready","deleting","deleted","failed"]},"verifiedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["id","logicalName","desiredState","status","verifiedAt"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Registry configuration conflict","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}/container-registry/verify":{"post":{"operationId":"verifyContainerRegistry","tags":["container-registry"],"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":{"202":{"description":"Verification requested","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"crroute_[0-9a-z]{28}$","description":"Unique identifier for the container registry route.","example":"crroute_c9t4xoy7fmiq7equtu20"},"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"managerId":{"type":"string"},"resourceId":{"type":"string"},"resourceRevision":{"type":"string","minLength":1},"desiredRevision":{"type":"integer","minimum":0},"appliedRevision":{"type":"integer","minimum":0},"status":{"type":"string","enum":["resolving","applying","connected","degraded","revoking","revoked"]},"lastVerifiedAt":{"type":"string","nullable":true,"format":"date-time"},"lastError":{"type":"string","nullable":true}},"required":["id","deploymentId","managerId","resourceId","resourceRevision","desiredRevision","appliedRevision","status","lastVerifiedAt","lastError"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Registry configuration conflict","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}/container-registry/revoke":{"post":{"operationId":"revokeContainerRegistry","tags":["container-registry"],"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":{"202":{"description":"Registry revocation requested","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"crroute_[0-9a-z]{28}$","description":"Unique identifier for the container registry route.","example":"crroute_c9t4xoy7fmiq7equtu20"},"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"managerId":{"type":"string"},"resourceId":{"type":"string"},"resourceRevision":{"type":"string","minLength":1},"desiredRevision":{"type":"integer","minimum":0},"appliedRevision":{"type":"integer","minimum":0},"status":{"type":"string","enum":["resolving","applying","connected","degraded","revoking","revoked"]},"lastVerifiedAt":{"type":"string","nullable":true,"format":"date-time"},"lastError":{"type":"string","nullable":true}},"required":["id","deploymentId","managerId","resourceId","resourceRevision","desiredRevision","appliedRevision","status","lastVerifiedAt","lastError"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Registry configuration conflict","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","nullable":true,"minLength":1,"maxLength":63,"pattern":"^[a-z][a-z0-9-]*$","description":"Filter to releases promoted to this channel. Defaults to production."},"required":false,"description":"Filter to releases promoted to this channel. Defaults to production.","name":"channel","in":"query"},{"schema":{"type":"string","enum":["true","false"],"default":"false"},"required":false,"name":"allChannels","in":"query"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["project","rollout","createdBy"]},"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","createdBy"]},"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/releases/{id}/deployments":{"get":{"operationId":"listReleaseDeployments","description":"List the project's deployments with their rollout state relative to this release.","x-speakeasy-group":"releases","x-speakeasy-name-override":"listDeployments","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":{"$ref":"#/components/schemas/ReleaseRolloutState"},"description":"Filter deployments by rollout state"},"required":false,"description":"Filter deployments by rollout state","name":"state","in":"query"},{"schema":{"type":"string","description":"Filter by deployment group ID or name"},"required":false,"description":"Filter by deployment group ID or name","name":"deploymentGroup","in":"query"},{"schema":{"type":"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 release deployments.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReleaseDeploymentsResponse"}}}},"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/release-channels":{"get":{"operationId":"listReleaseChannels","summary":"List release channels","description":"List the release channels configured for a project.","x-speakeasy-group":"releaseChannels","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":true,"description":"Filter by project ID or name.","name":"project","in":"query","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}}],"responses":{"200":{"description":"Project release channels.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ReleaseChannel"}}},"required":["items"]}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createReleaseChannel","summary":"Create a release channel","description":"Create a release channel for a project.","x-speakeasy-group":"releaseChannels","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"},{"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"}}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"$ref":"#/components/schemas/ReleaseChannelName"},"releaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"}},"required":["name"],"additionalProperties":false}}}},"responses":{"201":{"description":"Channel created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReleaseChannel"}}}},"400":{"description":"Invalid release.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/release-channels/{name}/promote":{"post":{"operationId":"promoteRelease","x-speakeasy-group":"releases","x-speakeasy-name-override":"promote","parameters":[{"schema":{"$ref":"#/components/schemas/ReleaseChannelName"},"required":true,"name":"name","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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"}}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"releaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"expectedReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"}},"required":["releaseId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Release promoted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReleaseChannel"}}}},"404":{"description":"Project, channel, or release not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Channel changed concurrently.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/release-channels/{name}":{"delete":{"operationId":"deleteReleaseChannel","summary":"Delete a release channel","description":"Delete a release channel from a project.","x-speakeasy-group":"releaseChannels","x-speakeasy-name-override":"delete","parameters":[{"schema":{"$ref":"#/components/schemas/ReleaseChannelName"},"required":true,"name":"name","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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":{"204":{"description":"Channel deleted."},"400":{"description":"Reserved channel.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project or channel not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Channel is still followed by deployments.","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":{"allOf":[{"$ref":"#/components/schemas/DeploymentPurpose"},{"description":"Filter by deployment purpose"}]},"required":false,"description":"Filter by deployment purpose","name":"purpose","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":{"allOf":[{"$ref":"#/components/schemas/DeploymentPurpose"},{"description":"Filter by deployment purpose"}]},"required":false,"description":"Filter by deployment purpose","name":"purpose","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"},"operation":{"$ref":"#/components/schemas/DeploymentUpdateOperationSummary"}},"required":["message","operation"]}}}},"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}/release-channel":{"post":{"operationId":"setDeploymentReleaseChannel","x-speakeasy-group":"deployments","x-speakeasy-name-override":"setReleaseChannel","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":{"type":"object","properties":{"channel":{"$ref":"#/components/schemas/ReleaseChannelName"}},"required":["channel"],"additionalProperties":false}}}},"responses":{"200":{"description":"Deployment release channel updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Deployment"}}}},"400":{"description":"Channel release is unavailable for the deployment platform.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment or release channel not found.","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}/binding-token":{"post":{"operationId":"generateManagerBindingToken","description":"Generate a short-lived deployment-scoped token for resolving opted-in remote bindings through the currently assigned manager.","x-speakeasy-group":"managers","x-speakeasy-name-override":"generateManagerBindingToken","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":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateManagerBindingTokenRequest"}}}},"responses":{"200":{"description":"Remote Bindings token and assigned manager URL.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateManagerBindingTokenResponse"}}}},"403":{"description":"The caller cannot access Remote Bindings for the deployment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Assigned manager or deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"The assigned manager is offline.","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/managers/{id}/container-registry/snapshot":{"get":{"operationId":"getContainerRegistryManagerSnapshot","tags":["container-registry"],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Complete desired registry snapshot assigned to this Manager","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContainerRegistryManagerSnapshot"}}}},"403":{"description":"Manager access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Snapshot revision conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/container-registry/applied":{"post":{"operationId":"applyContainerRegistryManagerSnapshot","tags":["container-registry"],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"routeId":{"type":"string","pattern":"crroute_[0-9a-z]{28}$","description":"Unique identifier for the container registry route.","example":"crroute_c9t4xoy7fmiq7equtu20"},"desiredRevision":{"type":"integer","minimum":0},"repositories":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"crrepo_[0-9a-z]{28}$","description":"Unique identifier for the container registry repository.","example":"crrepo_625temdq3bnu25jw9rcux"},"status":{"type":"string","enum":["ready","deleted","failed"]},"routableUpstreamName":{"type":"string","nullable":true,"minLength":1},"error":{"type":"string","nullable":true,"maxLength":2000}},"required":["id","status","routableUpstreamName","error"],"additionalProperties":false}},"verification":{"type":"object","nullable":true,"properties":{"succeeded":{"type":"boolean"},"observedAt":{"type":"string","format":"date-time"},"error":{"type":"string","nullable":true,"maxLength":2000}},"required":["succeeded","observedAt","error"],"additionalProperties":false}},"required":["routeId","desiredRevision","repositories","verification"],"additionalProperties":false}}}},"responses":{"200":{"description":"Applied registry snapshot revision","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplyContainerRegistrySnapshotResponse"}}}},"403":{"description":"Manager access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Snapshot revision conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","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":"string","description":"Filter events to a single release."},"required":false,"description":"Filter events to a single release.","name":"releaseId","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/bootstrap":{"post":{"operationId":"bootstrapCommands","description":"Resolve a deployment's current manager and mint a five-minute command capability. Sender tokens can dispatch and observe commands only for this deployment. Receiver tokens can lease and complete commands only for the resolved Container or Daemon target.","x-speakeasy-group":"commands","x-speakeasy-name-override":"bootstrap","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandBootstrapRequest"}}}},"responses":{"200":{"description":"Manager connection details and a short-lived command capability.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandBootstrapResponse"}}}},"400":{"description":"Invalid request or deployment state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"401":{"description":"Authentication required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"The caller cannot operate this deployment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment, manager, or receiver target not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"422":{"description":"The selected resource cannot run an external receiver.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"The assigned manager is offline.","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"},{"schema":{"type":"string","enum":["deployment","models","keys","bucket","registry"]},"required":false,"name":"setupItem","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":{"setupItem":{"type":"string","enum":["deployment","models","keys","bucket","registry"]},"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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":{"setupItem":{"type":"string","enum":["deployment","models","keys","bucket","registry"]},"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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"]}],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment 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"]}],"description":"Shared Ingress route profile values."},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}],"description":"Shared Gateway API route profile values."}],"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/operations/plugins":{"get":{"operationId":"listOperationsPlugins","description":"List available operations plugins (builtin + custom) for a project, with their operations and risk tiers.","x-speakeasy-group":"operations","x-speakeasy-name-override":"listPlugins","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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":"The operations plugin catalog.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListOperationsPluginsResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"publishOperationsPlugin","description":"Register a custom operations plugin whose bundle ZIP has already been uploaded to S3 (see POST /plugins/upload-url). Replaces any existing plugin of the same name in that project. New custom plugins are enabled by default.","x-speakeasy-group":"operations","x-speakeasy-name-override":"publishPlugin","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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"}}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishOperationsPluginRequest"}}}},"responses":{"201":{"description":"The plugin was published.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishOperationsPluginResponse"}}}},"400":{"description":"Invalid metadata.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"402":{"description":"Custom plugins require a higher plan tier.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/operations/plugins/upload-url":{"post":{"operationId":"createOperationsBundleUploadUrl","description":"Get a presigned S3 URL to upload a custom operations plugin bundle ZIP. Upload the ZIP with a PUT to the returned url (sending the given Content-Type), then call POST /plugins to register it.","x-speakeasy-group":"operations","x-speakeasy-name-override":"createBundleUploadUrl","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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"}}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationsBundleUploadUrlRequest"}}}},"responses":{"200":{"description":"A presigned upload URL for the bundle ZIP.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationsBundleUploadUrlResponse"}}}},"402":{"description":"Custom plugins require a higher plan tier.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"Bundle storage is not configured.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/operations/plugins/{name}/enabled":{"patch":{"operationId":"setOperationsPluginEnabled","description":"Enable or disable an operations plugin (builtin or custom) for a project. Only enabled plugins are baked into the operator image and can be invoked.","x-speakeasy-group":"operations","x-speakeasy-name-override":"setPluginEnabled","parameters":[{"schema":{"type":"string","description":"Plugin name."},"required":true,"description":"Plugin name.","name":"name","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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"}}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetOperationsPluginEnabledRequest"}}}},"responses":{"200":{"description":"The plugin's enabled state was updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetOperationsPluginEnabledResponse"}}}},"404":{"description":"No such plugin for this project.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/operations/policy":{"get":{"operationId":"getOperationsPolicy","description":"Get a project's per-command approval policy. Mirrors what the operator enforces: `plugin/operation` / `plugin/*` / `*` patterns → auto | manual.","x-speakeasy-group":"operations","x-speakeasy-name-override":"getPolicy","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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":"The approval policy rules and default.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationsPolicyResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"put":{"operationId":"updateOperationsPolicy","description":"Replace a project's per-command approval policy (full rule set). Patterns are `plugin/operation`, `plugin/*`, or `*`; each maps to auto | manual.","x-speakeasy-group":"operations","x-speakeasy-name-override":"updatePolicy","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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"}}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOperationsPolicyRequest"}}}},"responses":{"200":{"description":"The updated approval policy.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationsPolicyResponse"}}}},"400":{"description":"Invalid request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/operations/invoke":{"post":{"operationId":"invokeOperation","description":"Invoke a plugin operation against a deployment. Honors the project's per-command approval policy.","x-speakeasy-group":"operations","x-speakeasy-name-override":"invoke","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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"}}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvokeOperationRequest"}}}},"responses":{"200":{"description":"The operation was dispatched or queued for approval.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvokeOperationResponse"}}}},"402":{"description":"Custom plugins require a higher plan tier.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Caller may not create commands for this deployment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Plugin or 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/access-requests":{"post":{"operationId":"createAccessRequest","description":"Create a pending access request covering a remediation plan's commands. Awaits the engineer gate before it is queued for the operator.","x-speakeasy-group":"operations","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are 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":{"deploymentId":{"type":"string"},"remediationPlanId":{"type":"string"},"title":{"type":"string"},"reason":{"type":"string"},"commands":{"type":"array","items":{"type":"object","properties":{"command":{"type":"string","example":"kubernetes/get-pods"},"summary":{"type":"string","example":"List pods in the ingestion namespace"}},"required":["command","summary"]},"minItems":1}},"required":["deploymentId","remediationPlanId","title","commands"]}}}},"responses":{"201":{"description":"The created access request.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"deploymentId":{"type":"string"},"remediationPlanId":{"type":"string"},"title":{"type":"string"},"reason":{"type":"string","nullable":true},"commands":{"type":"array","items":{"type":"object","properties":{"command":{"type":"string","example":"kubernetes/get-pods"},"summary":{"type":"string","example":"List pods in the ingestion namespace"}},"required":["command","summary"]}},"status":{"type":"string","enum":["pending-approval","queued","customer-approved","expired","rejected"]},"approvedUntil":{"type":"string","nullable":true}},"required":["id","deploymentId","remediationPlanId","title","reason","commands","status","approvedUntil"]}}}},"404":{"description":"Deployment or remediation plan not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/access-requests/{id}/queue":{"post":{"operationId":"queueAccessRequest","description":"Engineer gate — approve a pending access request, queuing it for the operator to materialize. Records who queued it.","x-speakeasy-group":"operations","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":"The queued access request, with the customer approve command.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"deploymentId":{"type":"string"},"remediationPlanId":{"type":"string"},"title":{"type":"string"},"reason":{"type":"string","nullable":true},"commands":{"type":"array","items":{"type":"object","properties":{"command":{"type":"string","example":"kubernetes/get-pods"},"summary":{"type":"string","example":"List pods in the ingestion namespace"}},"required":["command","summary"]}},"status":{"type":"string","enum":["pending-approval","queued","customer-approved","expired","rejected"]},"approvedUntil":{"type":"string","nullable":true},"kubectlApprove":{"type":"string","nullable":true}},"required":["id","deploymentId","remediationPlanId","title","reason","commands","status","approvedUntil","kubectlApprove"]}}}},"404":{"description":"Access request not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Access request is not pending approval.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/access-requests/{id}/coordinates":{"get":{"operationId":"getAccessRequestCoordinates","description":"The customer's kubectl approve command for a queued access request, or null until the operator has materialized the grant CR and reported its coordinates. Polled by the Slack handler to update the access-plan card.","x-speakeasy-group":"operations","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":"The approve command (or null) and current status.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["pending-approval","queued","customer-approved","expired","rejected"]},"kubectlApprove":{"type":"string","nullable":true}},"required":["status","kubectlApprove"]}}}},"404":{"description":"Access request not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/access-requests/pending":{"get":{"operationId":"listPendingAccessRequests","description":"Operator-facing: the queued access requests for a deployment, for the access-request sync loop to materialize as grant CRs.","x-speakeasy-ignore":true,"parameters":[{"schema":{"type":"string"},"required":true,"name":"deploymentId","in":"query"}],"responses":{"200":{"description":"Queued access requests for the deployment.","content":{"application/json":{"schema":{"type":"object","properties":{"requests":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"reason":{"type":"string","nullable":true},"commands":{"type":"array","items":{"type":"object","properties":{"command":{"type":"string","example":"kubernetes/get-pods"},"summary":{"type":"string","example":"List pods in the ingestion namespace"}},"required":["command","summary"]}}},"required":["id","title","reason","commands"]}}},"required":["requests"]}}}},"403":{"description":"Caller is not the deployment's manager runtime.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/access-requests/materialized":{"post":{"operationId":"reportMaterializedAccessRequests","description":"Operator-facing: record the namespace + CRD plural the operator materialized the grant CRs in, so the control plane can render the customer's exact kubectl approve command.","x-speakeasy-ignore":true,"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"deploymentId":{"type":"string"},"requestIds":{"type":"array","items":{"type":"string"}},"namespace":{"type":"string","minLength":1},"resourcePlural":{"type":"string","minLength":1}},"required":["deploymentId","requestIds","namespace","resourcePlural"]}}}},"responses":{"200":{"description":"Number of requests updated with CR coordinates.","content":{"application/json":{"schema":{"type":"object","properties":{"recorded":{"type":"number"}},"required":["recorded"]}}}},"403":{"description":"Caller is not the deployment's manager runtime.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/access-requests/approvals":{"post":{"operationId":"reportAccessApprovals","description":"Operator-facing: record the customer's approval windows reported back by the sync loop. Moves each request to customer-approved and resumes the investigation to dispatch commands.","x-speakeasy-ignore":true,"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"deploymentId":{"type":"string"},"approvals":{"type":"array","items":{"type":"object","properties":{"requestId":{"type":"string"},"approvedUntil":{"type":"string"}},"required":["requestId","approvedUntil"]}}},"required":["deploymentId","approvals"]}}}},"responses":{"200":{"description":"Number of approvals recorded.","content":{"application/json":{"schema":{"type":"object","properties":{"recorded":{"type":"number"}},"required":["recorded"]}}}},"403":{"description":"Caller is not the deployment's manager runtime.","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/renew":{"post":{"operationId":"syncRenew","x-speakeasy-group":"sync","x-speakeasy-name-override":"renew","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys 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/SyncRenewRequest"}}}},"responses":{"200":{"description":"Renewal processed. Inspect `leases` for per-deployment outcomes; a lost lease is reported there rather than failing the whole batch.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"True when every requested deployment was renewed."},"leases":{"type":"array","items":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"renewed":{"type":"boolean","description":"False when this session no longer holds a live lease."},"leaseExpiresAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["deploymentId","renewed","leaseExpiresAt"]},"description":"Per-deployment renewal outcome."}},"required":["success","leases"]}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"The session no longer owns the deployment.","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","ai"]},"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","ai"]},"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","ai"]},"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 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"]}],"description":"AWS Aurora Serverless v2 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"]}],"description":"GCP Cloud SQL 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"]}],"description":"Azure Flexible Server 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"]}],"description":"Local embedded Postgres 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"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"availability":{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]},"region":{"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":["availability","region","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsBedrock"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"availability":{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]},"location":{"type":"string"},"project":{"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":["availability","location","project","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpVertex"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"accountName":{"type":"string"},"availability":{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]},"endpoint":{"type":"string","nullable":true},"location":{"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"]}},"required":["accountName","availability","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureFoundry"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"availability":{"oneOf":[{"type":"object","properties":{"catalogRevision":{"type":"string"},"location":{"type":"string","nullable":true},"models":{"type":"array","items":{"type":"object","properties":{"accessTest":{"type":"string","enum":["verified","failed","not-checked"]},"availability":{"type":"string","enum":["available","blocked","unknown"]},"blockers":{"type":"array","items":{"type":"string","enum":["agreement-required","entitlement-required","model-activation-required","deployment-required","quota-configuration-required","region-unavailable","access-denied","observation-failed"]}},"clientApis":{"type":"array","items":{"type":"string","enum":["open-ai-chat-completions","open-ai-responses","anthropic-messages"],"description":"A public API accepted from an application client."}},"errorCode":{"type":"string","nullable":true},"publicModelId":{"type":"string"},"testedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["accessTest","availability","blockers","clientApis","publicModelId"]}},"source":{"type":"string","enum":["aws-bedrock","gcp-vertex","azure-foundry","anthropic"],"description":"Provider control plane used to observe model availability without invoking\na model, spending customer quota, or accepting provider terms."}},"required":["catalogRevision","models","source"]},{"nullable":true}]},"provider":{"type":"string","description":"The BYO-key provider serving this binding (e.g. \"openai\"). Used on the Local\nplatform, where the app brings its own provider key instead of an ambient cloud."},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["provider","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["external"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["ai"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"type":"object","properties":{"data":{"type":"object","properties":{"enabled":{"type":"boolean"},"keyArn":{"type":"string"},"keySpec":{"type":"string"},"keyState":{"type":"string"},"keyUsage":{"type":"string"},"status":{"type":"object","properties":{"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true}},"required":["health","lifecycle"]}},"required":["enabled","keyArn","keySpec","keyState","keyUsage","status"]},"provider":{"type":"string","enum":["aws-kms"]}},"required":["data","provider"]},{"type":"object","properties":{"data":{"type":"object","properties":{"algorithm":{"type":"string","nullable":true},"cryptoKeyName":{"type":"string"},"primaryState":{"type":"string","nullable":true},"primaryVersion":{"type":"string","nullable":true},"purpose":{"type":"string"},"status":{"type":"object","properties":{"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true}},"required":["health","lifecycle"]}},"required":["cryptoKeyName","purpose","status"]},"provider":{"type":"string","enum":["gcp-cloud-kms"]}},"required":["data","provider"]},{"type":"object","properties":{"data":{"type":"object","properties":{"enabled":{"type":"boolean","nullable":true},"keyId":{"type":"string"},"keyOperations":{"type":"array","items":{"type":"string"}},"keyType":{"type":"string"},"recoveryLevel":{"type":"string","nullable":true},"status":{"type":"object","properties":{"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true}},"required":["health","lifecycle"]}},"required":["keyId","keyOperations","keyType","status"]},"provider":{"type":"string","enum":["azure-key-vault"]}},"required":["data","provider"]}]},"resourceType":{"type":"string","enum":["key"]}},"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/aws-virtual-keys":{"get":{"operationId":"listAwsVirtualKeys","parameters":[{"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":"AWS Virtual Keys in a project","content":{"application/json":{"schema":{"type":"object","properties":{"virtualKeys":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"projectId":{"type":"string"},"status":{"type":"string","enum":["provisioning","ready","action-required","decommissioning","deletion-pending","deleted","failed"]},"externalKeyId":{"type":"string"},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"customKeyStoreId":{"type":"string","nullable":true},"kmsKeyArn":{"type":"string","nullable":true},"alias":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"deletionWindowDays":{"type":"integer"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"canaryPassedAt":{"type":"string","nullable":true,"format":"date-time"},"deletionScheduledAt":{"type":"string","nullable":true,"format":"date-time"},"finalDeletionObservedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","status","externalKeyId","awsAccountId","awsRegion","customKeyStoreId","kmsKeyArn","alias","description","deletionWindowDays","tags","observedAt","canaryPassedAt","deletionScheduledAt","finalDeletionObservedAt","createdAt","updatedAt"]}}},"required":["virtualKeys"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createAwsVirtualKey","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"selector":{"oneOf":[{"type":"object","properties":{"externalId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~-]*$","description":"Case-sensitive, URL- and header-safe identifier from the integrating application.","example":"ext_example_01"}},"required":["externalId"],"additionalProperties":false},{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"}},"required":["deploymentId"],"additionalProperties":false}]},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"idempotencyKey":{"type":"string","minLength":1,"maxLength":128},"alias":{"type":"string","nullable":true,"minLength":1,"maxLength":256},"description":{"type":"string","nullable":true,"maxLength":8192},"deletionWindowDays":{"type":"integer","minimum":7,"maximum":30,"default":30},"tags":{"type":"object","additionalProperties":{"type":"string","maxLength":256},"default":{}}},"required":["selector","awsAccountId","awsRegion","idempotencyKey"]}}}},"responses":{"200":{"description":"Created or resumed Virtual Key","content":{"application/json":{"schema":{"type":"object","properties":{"virtualKey":{"type":"object","properties":{"id":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"projectId":{"type":"string"},"status":{"type":"string","enum":["provisioning","ready","action-required","decommissioning","deletion-pending","deleted","failed"]},"externalKeyId":{"type":"string"},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"customKeyStoreId":{"type":"string","nullable":true},"kmsKeyArn":{"type":"string","nullable":true},"alias":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"deletionWindowDays":{"type":"integer"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"canaryPassedAt":{"type":"string","nullable":true,"format":"date-time"},"deletionScheduledAt":{"type":"string","nullable":true,"format":"date-time"},"finalDeletionObservedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","status","externalKeyId","awsAccountId","awsRegion","customKeyStoreId","kmsKeyArn","alias","description","deletionWindowDays","tags","observedAt","canaryPassedAt","deletionScheduledAt","finalDeletionObservedAt","createdAt","updatedAt"]},"setup":{"type":"object","properties":{"proxyUriEndpoint":{"type":"string","format":"uri"},"proxyUriPath":{"type":"string"},"accessKeyId":{"type":"string"},"secretAccessKey":{"type":"string"},"externalKeyId":{"type":"string"}},"required":["proxyUriEndpoint","proxyUriPath","accessKeyId","secretAccessKey","externalKeyId"]}},"required":["virtualKey","setup"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project or Enterprise Key not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Idempotency conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"Gateway unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/aws-virtual-keys/{id}/rotate-credential":{"post":{"operationId":"rotateAwsVirtualKeyCredential","parameters":[{"schema":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"required":true,"description":"Unique identifier for the aws virtual key.","name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"generation":{"type":"integer","minimum":2}},"required":["generation"]}}}},"responses":{"200":{"description":"The resumable XKS proxy credential rotation bundle","content":{"application/json":{"schema":{"type":"object","properties":{"virtualKey":{"type":"object","properties":{"id":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"projectId":{"type":"string"},"status":{"type":"string","enum":["provisioning","ready","action-required","decommissioning","deletion-pending","deleted","failed"]},"externalKeyId":{"type":"string"},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"customKeyStoreId":{"type":"string","nullable":true},"kmsKeyArn":{"type":"string","nullable":true},"alias":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"deletionWindowDays":{"type":"integer"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"canaryPassedAt":{"type":"string","nullable":true,"format":"date-time"},"deletionScheduledAt":{"type":"string","nullable":true,"format":"date-time"},"finalDeletionObservedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","status","externalKeyId","awsAccountId","awsRegion","customKeyStoreId","kmsKeyArn","alias","description","deletionWindowDays","tags","observedAt","canaryPassedAt","deletionScheduledAt","finalDeletionObservedAt","createdAt","updatedAt"]},"setup":{"type":"object","properties":{"proxyUriEndpoint":{"type":"string","format":"uri"},"proxyUriPath":{"type":"string"},"accessKeyId":{"type":"string"},"secretAccessKey":{"type":"string"},"externalKeyId":{"type":"string"}},"required":["proxyUriEndpoint","proxyUriPath","accessKeyId","secretAccessKey","externalKeyId"]}},"required":["virtualKey","setup"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Virtual Key not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Virtual Key cannot begin rotation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/aws-virtual-keys/{id}/restore":{"post":{"operationId":"restoreAwsVirtualKey","parameters":[{"schema":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"required":true,"description":"Unique identifier for the aws virtual key.","name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"kmsKeyArn":{"type":"string","pattern":"^arn:(?:aws|aws-us-gov):kms:[a-z0-9-]+:\\d{12}:key\\/[A-Za-z0-9-]+$"}},"required":["kmsKeyArn"]}}}},"responses":{"200":{"description":"Virtual Key awaiting a successful AWS XKS canary after restore","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"projectId":{"type":"string"},"status":{"type":"string","enum":["provisioning","ready","action-required","decommissioning","deletion-pending","deleted","failed"]},"externalKeyId":{"type":"string"},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"customKeyStoreId":{"type":"string","nullable":true},"kmsKeyArn":{"type":"string","nullable":true},"alias":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"deletionWindowDays":{"type":"integer"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"canaryPassedAt":{"type":"string","nullable":true,"format":"date-time"},"deletionScheduledAt":{"type":"string","nullable":true,"format":"date-time"},"finalDeletionObservedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","status","externalKeyId","awsAccountId","awsRegion","customKeyStoreId","kmsKeyArn","alias","description","deletionWindowDays","tags","observedAt","canaryPassedAt","deletionScheduledAt","finalDeletionObservedAt","createdAt","updatedAt"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Virtual Key not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Virtual Key cannot be restored","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/aws-virtual-keys/{id}/finalize-deletion":{"post":{"operationId":"finalizeAwsVirtualKeyDeletion","parameters":[{"schema":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"required":true,"description":"Unique identifier for the aws virtual key.","name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"kmsKeyArn":{"type":"string","pattern":"^arn:(?:aws|aws-us-gov):kms:[a-z0-9-]+:\\d{12}:key\\/[A-Za-z0-9-]+$"}},"required":["kmsKeyArn"]}}}},"responses":{"200":{"description":"Virtual Key whose final AWS KMS deletion was observed","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"projectId":{"type":"string"},"status":{"type":"string","enum":["provisioning","ready","action-required","decommissioning","deletion-pending","deleted","failed"]},"externalKeyId":{"type":"string"},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"customKeyStoreId":{"type":"string","nullable":true},"kmsKeyArn":{"type":"string","nullable":true},"alias":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"deletionWindowDays":{"type":"integer"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"canaryPassedAt":{"type":"string","nullable":true,"format":"date-time"},"deletionScheduledAt":{"type":"string","nullable":true,"format":"date-time"},"finalDeletionObservedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","status","externalKeyId","awsAccountId","awsRegion","customKeyStoreId","kmsKeyArn","alias","description","deletionWindowDays","tags","observedAt","canaryPassedAt","deletionScheduledAt","finalDeletionObservedAt","createdAt","updatedAt"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Virtual Key not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Virtual Key deletion cannot be finalized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/aws-virtual-keys/{id}/decommission":{"post":{"operationId":"decommissionAwsVirtualKey","parameters":[{"schema":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"required":true,"description":"Unique identifier for the aws virtual key.","name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"kmsKeyArn":{"type":"string","pattern":"^arn:(?:aws|aws-us-gov):kms:[a-z0-9-]+:\\d{12}:key\\/[A-Za-z0-9-]+$"},"deletionScheduledAt":{"type":"string","format":"date-time"}},"required":["kmsKeyArn","deletionScheduledAt"]}}}},"responses":{"200":{"description":"Virtual Key with AWS deletion scheduled","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"projectId":{"type":"string"},"status":{"type":"string","enum":["provisioning","ready","action-required","decommissioning","deletion-pending","deleted","failed"]},"externalKeyId":{"type":"string"},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"customKeyStoreId":{"type":"string","nullable":true},"kmsKeyArn":{"type":"string","nullable":true},"alias":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"deletionWindowDays":{"type":"integer"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"canaryPassedAt":{"type":"string","nullable":true,"format":"date-time"},"deletionScheduledAt":{"type":"string","nullable":true,"format":"date-time"},"finalDeletionObservedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","status","externalKeyId","awsAccountId","awsRegion","customKeyStoreId","kmsKeyArn","alias","description","deletionWindowDays","tags","observedAt","canaryPassedAt","deletionScheduledAt","finalDeletionObservedAt","createdAt","updatedAt"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Virtual Key not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"AWS key does not match","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/aws-virtual-keys/{id}":{"get":{"operationId":"getAwsVirtualKey","parameters":[{"schema":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"required":true,"description":"Unique identifier for the aws virtual key.","name":"id","in":"path"}],"responses":{"200":{"description":"AWS Virtual Key","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"projectId":{"type":"string"},"status":{"type":"string","enum":["provisioning","ready","action-required","decommissioning","deletion-pending","deleted","failed"]},"externalKeyId":{"type":"string"},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"customKeyStoreId":{"type":"string","nullable":true},"kmsKeyArn":{"type":"string","nullable":true},"alias":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"deletionWindowDays":{"type":"integer"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"canaryPassedAt":{"type":"string","nullable":true,"format":"date-time"},"deletionScheduledAt":{"type":"string","nullable":true,"format":"date-time"},"finalDeletionObservedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","status","externalKeyId","awsAccountId","awsRegion","customKeyStoreId","kmsKeyArn","alias","description","deletionWindowDays","tags","observedAt","canaryPassedAt","deletionScheduledAt","finalDeletionObservedAt","createdAt","updatedAt"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Virtual Key not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/aws-virtual-keys/{id}/continue":{"post":{"operationId":"continueAwsVirtualKey","parameters":[{"schema":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"required":true,"description":"Unique identifier for the aws virtual key.","name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"customKeyStoreId":{"type":"string","pattern":"^cks-[A-Za-z0-9]+$"},"kmsKeyArn":{"type":"string","pattern":"^arn:(?:aws|aws-us-gov):kms:[a-z0-9-]+:\\d{12}:key\\/[A-Za-z0-9-]+$"}},"required":["customKeyStoreId","kmsKeyArn"]}}}},"responses":{"200":{"description":"Updated AWS setup facts","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"vkey_[0-9a-z]{28}$","description":"Unique identifier for the aws virtual key.","example":"vkey_0p9nwqgtftugsoey99lqyqq"},"projectId":{"type":"string"},"status":{"type":"string","enum":["provisioning","ready","action-required","decommissioning","deletion-pending","deleted","failed"]},"externalKeyId":{"type":"string"},"awsAccountId":{"type":"string","pattern":"^\\d{12}$"},"awsRegion":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"},"customKeyStoreId":{"type":"string","nullable":true},"kmsKeyArn":{"type":"string","nullable":true},"alias":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"deletionWindowDays":{"type":"integer"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"observedAt":{"type":"string","nullable":true,"format":"date-time"},"canaryPassedAt":{"type":"string","nullable":true,"format":"date-time"},"deletionScheduledAt":{"type":"string","nullable":true,"format":"date-time"},"finalDeletionObservedAt":{"type":"string","nullable":true,"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","status","externalKeyId","awsAccountId","awsRegion","customKeyStoreId","kmsKeyArn","alias","description","deletionWindowDays","tags","observedAt","canaryPassedAt","deletionScheduledAt","finalDeletionObservedAt","createdAt","updatedAt"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Virtual Key not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Setup facts conflict","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/typescript/.speakeasy/gen.lock b/client-sdks/platform/typescript/.speakeasy/gen.lock index 68875d29b..03b5fe8ef 100644 --- a/client-sdks/platform/typescript/.speakeasy/gen.lock +++ b/client-sdks/platform/typescript/.speakeasy/gen.lock @@ -1,12 +1,12 @@ lockVersion: 2.0.0 id: bc51eaa5-3f88-4290-b64f-cae16746dd5d management: - docChecksum: 00107cedc4334c3871e5d334c2b0a914 + docChecksum: 82cff40c0ef74cf2244d0e4ad1c4c8df docVersion: 1.0.0 speakeasyVersion: 1.680.11 generationVersion: 2.788.15 releaseVersion: 3.3.12 - configChecksum: 63869a3d2a5d56230cef83f771a82d02 + configChecksum: a8354cfdfa79daf4aa1d6bd66be075cf persistentEdits: generation_id: db6ac3e5-6bcc-4de5-a81f-eb659048385d pristine_commit_hash: 13c44a72093f4387918cbb07b6c85d4fbfa92cc6 @@ -26,6 +26,7 @@ features: globalSecurityFlattening: 0.1.0 globalServerURLs: 2.83.0 groups: 2.81.3 + ignores: 2.81.1 methodArguments: 0.1.2 nameOverrides: 2.81.2 nullables: 0.1.1 @@ -56,7 +57,7 @@ trackedFiles: pristine_git_object: cf98a6bf092538eb10ff0edc915102682ce9a6e6 FUNCTIONS.md: id: 21b9df02aaeb - last_write_checksum: sha1:ab2b06c33898806991c52b65abe91e2646e37cbd + last_write_checksum: sha1:67cc398afb6ef4f884ed5057d3e077a483edcf33 pristine_git_object: 2f62253f5bf4f2ea763bd876093cbfbddd1d1e82 RUNTIMES.md: id: 620c490847b6 @@ -64,28 +65,84 @@ trackedFiles: pristine_git_object: 27731c3b5ace66bedc454ed5acbe15075aacd3dc USAGE.md: id: 3aed33ce6e6f - last_write_checksum: sha1:fe52152d4f3b3c1f28811e59dc980986f2b0d069 + last_write_checksum: sha1:d620c7e234c18bcdb50b903c73f1f23e8d665fd3 pristine_git_object: 662dae6d1d60e71ad8179bdfbe4311d2548a01fd docs/lib/utils/retryconfig.md: id: 0ce9707cb848 last_write_checksum: sha1:bc4454e196fcd219f5a78da690375a884f5ed07b pristine_git_object: 08f95f4552349360b2c0b01802aa71ec3a55d2c2 + docs/models/acceptworkspaceinvitationresponse.md: + last_write_checksum: sha1:52685dc007e54cdb1a5bad2fcf7cc5203b2f9910 + docs/models/acceptworkspaceinvitationresponseoutcome.md: + last_write_checksum: sha1:334c55420437f10cc5ae9606c48c68458fabdbb0 docs/models/acquiremode.md: id: 2da2ba33bf92 last_write_checksum: sha1:98645df55f0ce0c869d15b4da92bb5b6121e5bb4 pristine_git_object: e4c3bdd6beea0db1b930677ff240be8e73f58cad docs/models/activerelease.md: id: 8334265c22b7 - last_write_checksum: sha1:ba9619bd55828ba54a5df057af093ebd804e9c87 + last_write_checksum: sha1:e6b2200496aa58099f35f7a825f8d3269746a33d pristine_git_object: 0c79a99c40f36b1af14cafb0772f94d03eda20a0 - docs/models/actor1.md: - last_write_checksum: sha1:bf623ff81028fd9d927beb267200936f7cededd3 - docs/models/actor2.md: - last_write_checksum: sha1:4839fe1be0a5fb30d846ae66359473a2fa1501c5 - docs/models/actorunion1.md: - last_write_checksum: sha1:766370184186d4162137336ff1ebd84640042df0 - docs/models/actorunion2.md: - last_write_checksum: sha1:1341324a1c15ff23f787ba2212475a072d2579b4 + docs/models/agentsessionapprovalgrantedevent.md: + last_write_checksum: sha1:7f3e0614c3d86f54e063bfa1533c60cb6d1bcdaa + docs/models/agentsessionapprovalgrantedeventpayload.md: + last_write_checksum: sha1:a557796ca0e264977a529029438df4928121c6c2 + docs/models/agentsessionapprovalgrantedeventsource.md: + last_write_checksum: sha1:126335a52d7f05c8b790cf1649539563f6f220d9 + docs/models/agentsessionapprovalrequestedevent.md: + last_write_checksum: sha1:bf1baf83d369a6b7eb269b7f0eee65babe6ffc5f + docs/models/agentsessionapprovalrequestedeventpayload.md: + last_write_checksum: sha1:55a0197d3fe013946ff59d9c0be0905c492a9070 + docs/models/agentsessionapproveresponse.md: + last_write_checksum: sha1:641557884e281688574b35a9a44dd83901c5f694 + docs/models/agentsessiondetail.md: + last_write_checksum: sha1:03049e62f4f00d63e68a0a7f358ffb5a28fdb414 + docs/models/agentsessionevent.md: + last_write_checksum: sha1:c307f967f50eb509ebdb020e30531f1df914de60 + docs/models/agentsessioneventsresponse.md: + last_write_checksum: sha1:80050104519f37e39dd93e3fa9564c95e1d6fe09 + docs/models/agentsessioneventstruncatedevent.md: + last_write_checksum: sha1:2b2a7b91b51a4ccd4e5e08eeb6f1ab068d4e5e21 + docs/models/agentsessioneventstruncatedeventpayload.md: + last_write_checksum: sha1:01e4826d7baf208c506fd29bc72e07b66df21480 + docs/models/agentsessionlistitem.md: + last_write_checksum: sha1:12c8f7eb482cf584e38189437b1e249f4243198b + docs/models/agentsessionlistresponse.md: + last_write_checksum: sha1:01adec9b321d97e5cfbb6e8c6fbb5902b6a619d7 + docs/models/agentsessionmarkdownevent.md: + last_write_checksum: sha1:01aaad731fe9d00cb777c237d1de9cb77a8c4512 + docs/models/agentsessionmarkdowneventpayload.md: + last_write_checksum: sha1:b41e9da1411a6d4bad09ea3ab6fcf131a8797f58 + docs/models/agentsessionrestartedevent.md: + last_write_checksum: sha1:735440ce80877e7e44dce35a01b1592a0301ba8c + docs/models/agentsessionrestartedeventpayload.md: + last_write_checksum: sha1:01db84f0841c7b494b853079a09888e12843aadd + docs/models/agentsessionstatusevent.md: + last_write_checksum: sha1:a35aa20d74be6f06f4102215c9d9c13173f20834 + docs/models/agentsessionstatuseventpayload.md: + last_write_checksum: sha1:9a2c9ca3fb833458180f18330a7883a11b260671 + docs/models/agentsessionstepevent.md: + last_write_checksum: sha1:9bc89ed07dbbe8ab9479e503387145af5654d664 + docs/models/agentsessionstepeventpayload.md: + last_write_checksum: sha1:0461c91c97657e5d5de804970e0f8c756a4dfdcc + docs/models/agentsessionstepeventstatus.md: + last_write_checksum: sha1:2bfccd5713f1b45ac49a07aa2bf25a5ac975461c + docs/models/agentsessionstopresponse.md: + last_write_checksum: sha1:e2a16a4baabb7c1c081c9c193b4d15c4bc3e6e85 + docs/models/agentsessionsubject.md: + last_write_checksum: sha1:3cc734a0d113e1d6eb6661eca62ed321c5efcb3b + docs/models/agentsessiontoolcallevent.md: + last_write_checksum: sha1:96fbd75d87915809f6d9eb7d295750014f89572c + docs/models/agentsessiontoolcalleventpayload.md: + last_write_checksum: sha1:cc17c9fb475716a4e683119b7d000adc3c8fb7f5 + docs/models/agentsessiontoolresultevent.md: + last_write_checksum: sha1:a733bd0d4e8575ee03ba5e702e3b55e67b38754e + docs/models/agentsessiontoolresulteventpayload.md: + last_write_checksum: sha1:d67d3f048d42c8024606dcdc2943fbd7153694fa + docs/models/agentsettings.md: + last_write_checksum: sha1:ce5de71907b72e60ac85e7cb9b26df83ae4da3f3 + docs/models/agentsettingsdebugpermissionmode.md: + last_write_checksum: sha1:ecea287ae4bd4eb85acf5a0d634a9465c481dfb7 docs/models/allocatable.md: id: f5e4ed9861ea last_write_checksum: sha1:57e689252e391d47f3d94ef7e87c95c1f13cb24f @@ -132,12 +189,32 @@ trackedFiles: pristine_git_object: 384ee37f3879db1819d585ad6bb8702c8c3fb77d docs/models/apikey.md: id: 3cd1b4235d4f - last_write_checksum: sha1:1fd3969add312c09614f4f96e1cf62170780c204 + last_write_checksum: sha1:67fd4cc3d3371b8c2eab0835c05df3945ae302b5 pristine_git_object: e81bb271ba1e9235dc56d3b78b0b636d1fb9063d docs/models/apikeydeploymentsetupconfig.md: id: 94e948d4277d - last_write_checksum: sha1:e6907825e541da0f67c0f237d6743bee58f5cf8e + last_write_checksum: sha1:3c6265ed51c0e42b4da6fc056f4b75951d2f75f3 pristine_git_object: 225b98c318b4a9c5c49506edfb4bf236e7852ef1 + docs/models/apikeydeploymentsetupconfigallowedprovider.md: + last_write_checksum: sha1:0ceb4e16c274461ec27cef43da69d60514a879e2 + docs/models/apikeydeploymentsetupconfigclientapi.md: + last_write_checksum: sha1:cc019a118469ef4aa0e1cf43b46dfa8161f55d05 + docs/models/apikeydeploymentsetupconfigconfiguration.md: + last_write_checksum: sha1:13c2fe2cf3df4a0799d8a8703e735aad39897133 + docs/models/apikeydeploymentsetupconfigdefinitionid.md: + last_write_checksum: sha1:3c564bad8fdf9d8b216aba28f577a5165981251a + docs/models/apikeydeploymentsetupconfigitem.md: + last_write_checksum: sha1:e382d3a8ccdb0233fd83c16b1e44fae20cb89b7e + docs/models/apikeydeploymentsetupconfigitemenum.md: + last_write_checksum: sha1:d4153fa5a61b04309db43e477da4cff659723079 + docs/models/apikeydeploymentsetupconfigmodelrequirement.md: + last_write_checksum: sha1:57fa01be61a855f9ad39ccb1138496746910880a + docs/models/apikeydeploymentsetupconfigsourcebuiltin.md: + last_write_checksum: sha1:c583a71ac20d4c2971f7a76de5f48c0cd0529a2c + docs/models/apikeydeploymentsetupconfigsourceprojectrelease.md: + last_write_checksum: sha1:aad603bd1865b0a0713eeff53b4dc655747d5f93 + docs/models/apikeydeploymentsetupconfigsourceunion.md: + last_write_checksum: sha1:58cb4a6342ec2dffd08de8c7baec0d3d0a0f55a9 docs/models/apikeydeploymentsetupenvironmentvariable.md: id: c70b47f3747b last_write_checksum: sha1:89f528544b787581513fca341123a65770fec18d @@ -146,10 +223,16 @@ trackedFiles: id: dc953f115b61 last_write_checksum: sha1:7ba0b32360bdb7b6a1f97c9a3a9cd55ce1a03d10 pristine_git_object: f7729b2294f7b2971f9a8dfd366497600a54388c + docs/models/applycontainerregistrysnapshotresponse.md: + last_write_checksum: sha1:3cded5961f15ca913516d836db5f4bcc63ca2b2f + docs/models/applycontainerregistrysnapshotresponsestatus.md: + last_write_checksum: sha1:da74402e5cd41f7796a9424aeec5d5f99e60b30b docs/models/arc.md: id: ee921219595e last_write_checksum: sha1:c71d08572ee16fb9628dc9d71c1b611dcd66a660 pristine_git_object: f0f8e176942934e58229d7c3587fc5ce156a0c21 + docs/models/availability.md: + last_write_checksum: sha1:4a0dcf03d815be580eaad06f7cd6a9a2dd2ad265 docs/models/azuretargetstacksettings.md: id: 5025c3d232b3 last_write_checksum: sha1:52d1d0a285d3f6228019ac2b9d12d759bfdeb58a @@ -160,7 +243,7 @@ trackedFiles: pristine_git_object: c8eba336f60374958cf2daaab3c0563aebdfb5fc docs/models/billingfeatureflags.md: id: 1cae481644a5 - last_write_checksum: sha1:82f63e779d9372bbafd87d628c197d6665480e4a + last_write_checksum: sha1:68412911847592ed8717489df0cbc2f3acd5ca1f pristine_git_object: eb2df4c59d05c40daefaf12fe3a809a6eb134241 docs/models/billinglimits.md: id: 353f49ee2d29 @@ -170,28 +253,54 @@ trackedFiles: id: 5a46cf0db1b3 last_write_checksum: sha1:0c16cfaaa21609779183d9284666e64b32907d63 pristine_git_object: d1a0ca802eed152adb467d2af67603ca373f8d9f - docs/models/blocker1.md: - id: 507cd016d998 - last_write_checksum: sha1:77053e8b94d7091e5b293c38bd0f5f0498c49369 - pristine_git_object: 2fe0fc84f9ff76a6f0162ffc64b02858850bf785 - docs/models/blocker2.md: - id: f01996218dd0 - last_write_checksum: sha1:405cfebb74595d93a7b9de75d86c7b3254fdc0e4 - pristine_git_object: ff965e3a1db8f83693893c9efda1881231039935 - docs/models/blocker3.md: - id: 5cf6f72c1bc6 - last_write_checksum: sha1:51ac5ca9e8fd8ae034d2f07642b2cd07f0748105 - pristine_git_object: 484343a2d8557d2bcab763cfbcf79b5f8ddbb7db - docs/models/blocker4.md: - id: 3e5133e0ccf4 - last_write_checksum: sha1:7e51bd175aea71babdaab475cf4dee5252533451 - pristine_git_object: 63003c959639415571049440ac4064aa60ee8a2a + docs/models/bucketsaccesstest.md: + last_write_checksum: sha1:df55e4c7367110fe75d557418befe70bcc95334c + docs/models/bucketsavailability.md: + last_write_checksum: sha1:6051950eff014b22e525980aa0b5fef27c190102 + docs/models/bucketscapability.md: + last_write_checksum: sha1:38f463e11b019d5052caba71325bd5a32bf8cff2 + docs/models/bucketscredentialpolicy.md: + last_write_checksum: sha1:1dbde460879912e1f51ead28cf954698d6c558d3 + docs/models/bucketsdirectprovider.md: + last_write_checksum: sha1:0e9279c9040f253c95244b4fbb7e7a98e948cf78 + docs/models/bucketshealth.md: + last_write_checksum: sha1:29c264465aca90ce7cc87edddff70b30cbcda407 + docs/models/bucketsmodelcoverage.md: + last_write_checksum: sha1:974c571764a87e4daba436f522ec64f5a6d573ad + docs/models/bucketsobservation.md: + last_write_checksum: sha1:56e518b983fa05dfaf2179f69540466cb3e9de09 + docs/models/bucketsplatform.md: + last_write_checksum: sha1:8bc1c37370def6d87686cadf74552b629d09f30b + docs/models/bucketsprovider.md: + last_write_checksum: sha1:7b45b0b14b6cfd75ec5a47acebfefc083efe49d0 + docs/models/bucketsregistry.md: + last_write_checksum: sha1:f98f187c0c3670b9d4b0984589344600acb71aff + docs/models/bucketsroot.md: + last_write_checksum: sha1:494a896a750c805a3b5c8b62c414898b59974dbe + docs/models/bucketsrootstate.md: + last_write_checksum: sha1:56d4d4f8af8fb3f3d738d028c31f320438592349 + docs/models/bucketsstate.md: + last_write_checksum: sha1:e3717e8c1973de2b2ee662ef96798b94f584e634 docs/models/buildphase.md: last_write_checksum: sha1:e5e2e979bd69fa37e8dade60e41909ffc8e9f0f2 + docs/models/byorigin.md: + last_write_checksum: sha1:7228cb3c84dc70315f6b896e4e233de76d56caf1 docs/models/cancelmachinesmachinedrainresponse.md: id: 0d40d8090a0f last_write_checksum: sha1:d92fe2d1b4ab038a644d23bc6d49e51e611e4874 pristine_git_object: c514aede26066cc7dc6112069d5c94b7c5fecc4d + docs/models/capabilitymaterialization.md: + last_write_checksum: sha1:628fa462bbae887d9dc9788d79551befe20f2865 + docs/models/capabilitymaterializationdefinitionid.md: + last_write_checksum: sha1:ae89eb273863ba0744cecb053e49dc64a3f61307 + docs/models/capabilitymaterializationpackage.md: + last_write_checksum: sha1:38b0288992ddbec4e25401969bd835a75663bce8 + docs/models/capabilitymaterializationsource.md: + last_write_checksum: sha1:a5193639b96c7cd4aa78fdaee5b31c8ca2d944fc + docs/models/capabilitymaterializationstatus.md: + last_write_checksum: sha1:88f78207b42f0d502bba43405c5a5297222dc0e3 + docs/models/capabilitymaterializationtype.md: + last_write_checksum: sha1:9fa9ffea637c4ff2f60857be894019b04d5f198d docs/models/capacity.md: id: e18b850f79ea last_write_checksum: sha1:6086bef6eed51a58991233e7ab3bad5189c51711 @@ -308,6 +417,14 @@ trackedFiles: id: aec40f6b6410 last_write_checksum: sha1:5cf706dca94e12542b7a2aa29e3125aaf22b8079 pristine_git_object: 55eb65e306316ea04f881dfe7dadc2e7c03fd0e4 + docs/models/commandbootstraprequest.md: + last_write_checksum: sha1:f094dc2aee07c929436d6ebf98e38743647b49f0 + docs/models/commandbootstraprequestreceiver.md: + last_write_checksum: sha1:d97785f1806c39974db85eb9286ce9f3bbc9370e + docs/models/commandbootstraprequestsender.md: + last_write_checksum: sha1:a1a8cfab16426ddbbd2e73d248dbc4aab7e62149 + docs/models/commandbootstrapresponse.md: + last_write_checksum: sha1:6cdc2dbafb0515d63c5a400bb9e850087ca376ff docs/models/commanddeploymentgroupinfo.md: id: aeef0c5cd8bc last_write_checksum: sha1:8a5dcbe5acb876cc411263914ad58f541d68e0ab @@ -392,6 +509,10 @@ trackedFiles: id: 2315ad610dce last_write_checksum: sha1:abe8a1e204c735a1b7ddf625b0396900ae2730e7 pristine_git_object: 518b5423c3149cc9e211380608d86a71b0cea479 + docs/models/commandreceiverbootstraptarget.md: + last_write_checksum: sha1:0ff2fbf7a34f14ccf4b67b4d2135729c1a45e6d7 + docs/models/commandreceiverbootstraptargetresourcetype.md: + last_write_checksum: sha1:48f5cdeebea4f3813bd66e3688e2dd607feb2b58 docs/models/commandresourcetype.md: id: 57e7ca737b0b last_write_checksum: sha1:dce9a259847d6f324e080b35062ce1dbeda2235c @@ -444,6 +565,46 @@ trackedFiles: id: 5abb2c3da416 last_write_checksum: sha1:1fd64333ba2029881a3ff2875285f26ff8dc2fc8 pristine_git_object: 4bb9765a84e791232e394873c0db4454f258e874 + docs/models/configurationstatus.md: + last_write_checksum: sha1:ff8039f9c6652318b9acd78f4c2828ea693a5925 + docs/models/configuremodelsrequest.md: + last_write_checksum: sha1:a29969c2326f2e1f4bcce0d936508e0a8e88242c + docs/models/configuremodelsrequestallowedprovider.md: + last_write_checksum: sha1:9d299778016bc9aee8f312f668d59472a26ca8a6 + docs/models/configuremodelsrequestclientapi.md: + last_write_checksum: sha1:4e816255eb5a0991aeaa3b4cb036d95ae0005661 + docs/models/configuremodelsrequestrequirement.md: + last_write_checksum: sha1:73fb98a51c203bd5ea7cf14d75a0d27829190d93 + docs/models/containerregistrymanagersnapshot.md: + last_write_checksum: sha1:8e05ffae4257ec5b4a9312bec55fbe1aeec388bb + docs/models/containerregistrymanagersnapshotcredential.md: + last_write_checksum: sha1:c50a38318c7df927ee4c5fc8620f514e11c971e3 + docs/models/containerregistrymanagersnapshotdesiredstate.md: + last_write_checksum: sha1:a9d8c4b54d07e6de4af0bad75146a10177bfb7a1 + docs/models/containerregistrymanagersnapshotrepository.md: + last_write_checksum: sha1:ccf7bd63b88e28af625376e4f200494c58eed397 + docs/models/containerregistrymanagersnapshotroute.md: + last_write_checksum: sha1:d39c44300ab856dbd4f40b2f6dd6ea9649dabf42 + docs/models/containerregistrymanagersnapshotscope.md: + last_write_checksum: sha1:15bb11768a584e9c0b42c600b562a2e251ac9851 + docs/models/containerregistrymanagersnapshotstatus.md: + last_write_checksum: sha1:5db35adfd0654acd586ac43d29dee75cef7ba0a3 + docs/models/containerregistrystate.md: + last_write_checksum: sha1:c3b1cca0360446aa2438492a7541b771b80fc23c + docs/models/containerregistrystatecredential.md: + last_write_checksum: sha1:f24f67fe2181d89582681f37c830cc2365a743f8 + docs/models/containerregistrystatedesiredstate.md: + last_write_checksum: sha1:9f0505d0872b424f0b5caf4f7d0248d0a1b30f87 + docs/models/containerregistrystaterepository.md: + last_write_checksum: sha1:8cf06bca6d00fb2e0a64394ea39a25d07d253f95 + docs/models/containerregistrystateroute.md: + last_write_checksum: sha1:254c49ba69c89b45674d960185ec90386146c4dc + docs/models/containerregistrystateroutestatus.md: + last_write_checksum: sha1:aeb342b4bf328b33cd493eaceee5238c91199f5e + docs/models/containerregistrystatescope.md: + last_write_checksum: sha1:5407b48479a78b505eee7bb595f4cea70eb5ff10 + docs/models/containerregistrystatesource.md: + last_write_checksum: sha1:9053320301b55690eeef9c0995d9db380c8edbc7 docs/models/containerunit.md: id: 1cbfedd7886e last_write_checksum: sha1:2f910aa3e48b59fc9f6dc05313088d89bbbe6dbb @@ -710,7 +871,7 @@ trackedFiles: pristine_git_object: fb419607eddc72c62487fe371f773d47443cb0e2 docs/models/createapikeyresponse.md: id: 996065c0a0a7 - last_write_checksum: sha1:ebacec95b1644ee5623fadeeb247ae9f0bf16d6c + last_write_checksum: sha1:385ba896b58a1352050bde034ba2f4eae3871ee6 pristine_git_object: 33a675c3efc193380afc87185f83d0c8810cb914 docs/models/createapikeyresponsetype.md: id: 4e3b885278af @@ -740,6 +901,14 @@ trackedFiles: id: 6fb2d2ed429a last_write_checksum: sha1:838f8335e47bb60b9981232093994164e88269c8 pristine_git_object: e42fd0f648f4d056c5c4e07837875b7f5d0a5d73 + docs/models/createcontainerregistrycredentialresponse.md: + last_write_checksum: sha1:4244f2e479f5f53d43c4b17451d44a00b1681960 + docs/models/createcontainerregistrycredentialresponsecredential.md: + last_write_checksum: sha1:e506501139bcd4b9e2f4a1e1e5c4f1a7945887e9 + docs/models/createcontainerregistrycredentialresponsescope.md: + last_write_checksum: sha1:56d0a31cdf5a7b4551431400d05f161fe4bc1a75 + docs/models/createdby.md: + last_write_checksum: sha1:00c9ce9571a58f03954e5512ed17f29c44600967 docs/models/createdbyuser.md: id: 7edc5072a546 last_write_checksum: sha1:1eceed53828cfb7f87a5e705b1fdebfce728ea66 @@ -750,11 +919,11 @@ trackedFiles: pristine_git_object: 5e650afd873b87c30698dc25391cf1b696bb25d6 docs/models/createdeploymentgrouprequest.md: id: c766039a815c - last_write_checksum: sha1:2bc9cc02abd2b3f0addeb7abbb3ce0b6994697c1 + last_write_checksum: sha1:624b08291f86cbaf9311e885fa6e1beed408d8db pristine_git_object: d8c4c8a1a07fd40184460fca5dbfc23f4793005e docs/models/createdeploymentgrouptokenrequest.md: id: 6a628edd53de - last_write_checksum: sha1:eca2e9f66912f4ada328a7ebffbf972dced8911b + last_write_checksum: sha1:a36a685b67cc4ca091ee2571906c72588f1ad3e1 pristine_git_object: 0a0b12f140126dde52d3de6458f8795acc342097 docs/models/createdeploymentgrouptokenresponse.md: id: eeac48f28c45 @@ -762,7 +931,7 @@ trackedFiles: pristine_git_object: 2dad4d8973b11b7f21d659b5f31969678ee5d79d docs/models/createdeploymentresponse.md: id: d0094ab801d5 - last_write_checksum: sha1:63e56a679739a1f6b8b27c8d85398c5e0fe216eb + last_write_checksum: sha1:ba8d8e1457044037542adbe3feb7002ee2746b40 pristine_git_object: f4a8e527b319110bc420664795c203322960f3b7 docs/models/createdeploymentresponsedeploymentmodel.md: id: 154b0e1730f7 @@ -786,8 +955,10 @@ trackedFiles: pristine_git_object: a4f55cf55ca190a6cc661a37ed934bfbf26b2de4 docs/models/createmanagerresponse.md: id: 0a11154b47da - last_write_checksum: sha1:2e7f061ea5ce06b7f601c574b35e0128bb713072 + last_write_checksum: sha1:6671a45ab31498e7293f6f5e0b0651337029a91c pristine_git_object: f87e7633ac6b6473514a59f63ecfc711ebbc90db + docs/models/createmanagerresponseallowedprovider.md: + last_write_checksum: sha1:9c9b29f6ebf20ad07673fe6e253d08c410ff9974 docs/models/createmanagerresponseaws1.md: id: 5755836d97fd last_write_checksum: sha1:94cd7279402cb76472768bd18584fc9ad08e4f34 @@ -980,6 +1151,8 @@ trackedFiles: id: "222891839069" last_write_checksum: sha1:d173b1f5e8d7635d760d0bccb3752d35b468416f pristine_git_object: 4321d6135fb42bfae18f5811eba6695d81dedeb3 + docs/models/createmanagerresponseclientapi.md: + last_write_checksum: sha1:d819e8e043018edb345b16c77b5b41ab0eaacd6e docs/models/createmanagerresponsecloud1.md: id: 6c17abbf9b3b last_write_checksum: sha1:7c65daf6f836260e9cbd132fc8599c499af495c2 @@ -1052,6 +1225,8 @@ trackedFiles: id: 740064737b47 last_write_checksum: sha1:acc96a256e38948d82dedf280e0f1e6da3197bdc pristine_git_object: 3c74d03f80ad3a4c9164ea18f35c3c19fc118c28 + docs/models/createmanagerresponseconfiguration.md: + last_write_checksum: sha1:e023b2d6f8d5f35a7895333cd6d92a8cb5e3df8f docs/models/createmanagerresponsecustomdomains1.md: id: 737c80d02c69 last_write_checksum: sha1:80a468fc933fb8fc1e6b0de5940fc45a38f7ef42 @@ -1064,6 +1239,8 @@ trackedFiles: id: 3c3e19ce7dc0 last_write_checksum: sha1:42bb83523c0fa4295370f5d1171a7d97245f2358 pristine_git_object: ebecb7041cb156163f835287e0024ed0b86342e7 + docs/models/createmanagerresponsedefinitionid.md: + last_write_checksum: sha1:71c5360aaf87d1b62434243e915e709dffc52b43 docs/models/createmanagerresponsedeploymentmodel1.md: id: f0aa1a3d448f last_write_checksum: sha1:1537f1e3cc939ed7cbebe6fd3b6389324cb95e7e @@ -1204,6 +1381,30 @@ trackedFiles: id: 51df42a7ca56 last_write_checksum: sha1:5f8d3077353b97a38d90820cd751e73beafff70b pristine_git_object: bd665b6a1aa916b6d2129c86fd7c76d605b32405 + docs/models/createmanagerresponsefailuredomains1.md: + last_write_checksum: sha1:942f6ee4949b2a491fe472204075f284c9f31962 + docs/models/createmanagerresponsefailuredomains2.md: + last_write_checksum: sha1:5ab6471cfab979ddb0f234e0caa37059f941bc57 + docs/models/createmanagerresponsefailuredomains3.md: + last_write_checksum: sha1:908fc54b5d0ad2db482ff260ea478d00f68bea5a + docs/models/createmanagerresponsefailuredomains4.md: + last_write_checksum: sha1:dd794d26123b54f09433038718cbd2125d0573b8 + docs/models/createmanagerresponsefailuredomains5.md: + last_write_checksum: sha1:2512ae64739dcb4b5ae93bcbfa7f5765da1ee14e + docs/models/createmanagerresponsefailuredomains6.md: + last_write_checksum: sha1:75ae039b3d0eccdca27524b6e1fe3e35ab1c4605 + docs/models/createmanagerresponsefailuredomainsunion1.md: + last_write_checksum: sha1:045e34f5da371ee4e1dca6a6dcaa0e1a350c3c26 + docs/models/createmanagerresponsefailuredomainsunion2.md: + last_write_checksum: sha1:cf01b5d87c5c18ad65f23b2360f23f7c9f6bd96e + docs/models/createmanagerresponsefailuredomainsunion3.md: + last_write_checksum: sha1:9dfd64464ba2a1729f19d4022ed8bcb4ccc8403f + docs/models/createmanagerresponsefailuredomainsunion4.md: + last_write_checksum: sha1:3a32593d17c56759606bf988030e3bc9c5b76a96 + docs/models/createmanagerresponsefailuredomainsunion5.md: + last_write_checksum: sha1:a14d3ed6725b0fde2b12b1ef51e4d7829487347b + docs/models/createmanagerresponsefailuredomainsunion6.md: + last_write_checksum: sha1:948dc4dbac53ff5b29a485d3378a846f40153e16 docs/models/createmanagerresponsegcp1.md: id: eb22a80b3824 last_write_checksum: sha1:5eddafb4c9686069fbd0ba5dfd819a7cd0fe6542 @@ -1240,6 +1441,10 @@ trackedFiles: id: 06aec909604d last_write_checksum: sha1:33075668a21f9cfbb51b72627314374d22cc3c0a pristine_git_object: dae1e05970dbe7548bc83cd290d4b41dc2d16942 + docs/models/createmanagerresponseitem.md: + last_write_checksum: sha1:d4054f81c51b0d280540acd1b2da7adc1f6f58e0 + docs/models/createmanagerresponseitemenum.md: + last_write_checksum: sha1:e834636388a6ed7d5c9475be3f39826ddae816c0 docs/models/createmanagerresponsekubernetes1.md: id: 6d832152ca7a last_write_checksum: sha1:7dc00790058a5a86c7f952af64949a9eb1e52d01 @@ -1312,6 +1517,8 @@ trackedFiles: id: 32738e33d2e1 last_write_checksum: sha1:fa0e6f14a86702137a4bda1e58ab8d41729237c1 pristine_git_object: 062bf839eca46bf590ce86519be8a7e102c8a4e1 + docs/models/createmanagerresponsemodelrequirement.md: + last_write_checksum: sha1:30e7b19a8305afc0537fb9104fe0e2d997dac467 docs/models/createmanagerresponsemodemachineaddresses1.md: id: 9d02fac4c231 last_write_checksum: sha1:6c17d6fe4832ee8c00103bbbf55aaee3b2fa6a1e @@ -1410,27 +1617,27 @@ trackedFiles: pristine_git_object: 14c78dedfe2c01baab18da282a00bef00e64f1f5 docs/models/createmanagerresponsepoolsautoscale1.md: id: 7e4b16fc9837 - last_write_checksum: sha1:b770a769f6a3e84feca0770a93e1d50ab78a8d81 + last_write_checksum: sha1:cce919accaff4c80b69fdf6ffd14f8057427b3e8 pristine_git_object: cb1ecb7c35583e407b93d96ca2dd56e9a5af33ba docs/models/createmanagerresponsepoolsautoscale2.md: id: 20092f13dd60 - last_write_checksum: sha1:6027be9498dfc61a66e86b79bdcf041b19b7606a + last_write_checksum: sha1:688b4f1acd9d19d2704f51acdb5d40c553569b9d pristine_git_object: f7f0d20316e564ba550d0e8d810697cc643a25d0 docs/models/createmanagerresponsepoolsautoscale3.md: id: 4e00d6a93c2e - last_write_checksum: sha1:bfa6a423fb59f448bcdcd1cf689fb334eea94b0c + last_write_checksum: sha1:971ca80e0f88b7de5890500fbea9232272349be0 pristine_git_object: 9d13dc814ad58814f61e6f96cc648319b3ef7095 docs/models/createmanagerresponsepoolsfixed1.md: id: d3b9d57808b5 - last_write_checksum: sha1:2cfa5b67cc909ecf54604f0f852e9c192816c28d + last_write_checksum: sha1:dcb007210493358d9b8a5933900173282a34d19d pristine_git_object: 7dee6b6068177d4d7bec0ac84320802e04dc175b docs/models/createmanagerresponsepoolsfixed2.md: id: d2bee126027c - last_write_checksum: sha1:a944b25ecdf7cb39455120820d21a63a6ea9e307 + last_write_checksum: sha1:e6b37e77d740fa3019c9ab3c2f95683def2dc432 pristine_git_object: 1cc3557ea3f292eee18f0a2f4a134bf00399e53a docs/models/createmanagerresponsepoolsfixed3.md: id: 2872c45be94c - last_write_checksum: sha1:ff2a8e81720fc00e6460766cc7270393d7fee429 + last_write_checksum: sha1:2569b40a439f8be34fa6c35c06d76cf0d0032a7b pristine_git_object: 5bf975c7b47fabf116540e2209fc908b33541701 docs/models/createmanagerresponsepoolsunion1.md: id: f444c1fc8f6c @@ -1894,7 +2101,7 @@ trackedFiles: pristine_git_object: 9f27025d64b6f3997426a355d78e5710754a81b0 docs/models/createmanagerresponsesetupconfig.md: id: ae97736792ae - last_write_checksum: sha1:e88d54f00826da0d7955fad36197ccc32cf2a3f7 + last_write_checksum: sha1:0aa4736a80978859a397b0b62e988da7ab133b64 pristine_git_object: 0f3a67f07ab314fe56f098349171b4229eeca7aa docs/models/createmanagerresponsesetupgoogleoauth.md: id: 6f6f72183056 @@ -1912,6 +2119,12 @@ trackedFiles: id: be9f701cfca9 last_write_checksum: sha1:a364d3a549439056fae0f91acb6540f72169b99b pristine_git_object: 817d9b8f200b4954d2eb9112962fc84420e70370 + docs/models/createmanagerresponsesourcebuiltin.md: + last_write_checksum: sha1:0d65a30f88655258b156a3aba7d8fcdeab8c4084 + docs/models/createmanagerresponsesourceprojectrelease.md: + last_write_checksum: sha1:e30307d6a8514fa5f26d30ce0d71bc48cfa0e55c + docs/models/createmanagerresponsesourceunion.md: + last_write_checksum: sha1:fb6847fff4ce937b4610ed21d8d59a8f87640d1b docs/models/createmanagerresponsestacksettings1.md: id: 62a049fd2f4b last_write_checksum: sha1:2370583cb9f3a70dd33a3a9d4538ec64b78c3f38 @@ -2022,11 +2235,15 @@ trackedFiles: pristine_git_object: fadc1c463f3ef9fc7e6f8e9b0ada28db4d12b01c docs/models/createreleaserequest.md: id: 04c80489018b - last_write_checksum: sha1:f5552f647ac4a4e710c18338b40cc10eb84df65a + last_write_checksum: sha1:4b443149c00932fddf1bdeda6b1bbe15a8e77cdc pristine_git_object: b26f05c7575e138c6953669e1b7f28d66fe8dcad + docs/models/createsetuplinkrequest.md: + last_write_checksum: sha1:7384cd9d74b733fbb2a0fb40ed8da5af6a25cbbc + docs/models/createsetuplinkresponse.md: + last_write_checksum: sha1:91af4c121f50bd85c18041e328bad21005a47910 docs/models/createsetupregistrationoperationrequest.md: id: 58e8c2d278b2 - last_write_checksum: sha1:1e0136b2ee4230d50f7c558760fcd8081e337389 + last_write_checksum: sha1:cab60d4ee8c270faf1842850ec0d4f9058ad8ce4 pristine_git_object: 5ef3701004068745aacee70691a00360803a6071 docs/models/createsetupregistrationoperationrequestaws.md: id: 417f099237fe @@ -2164,6 +2381,14 @@ trackedFiles: id: e18d82512d65 last_write_checksum: sha1:10067605d8e26c5649ecd0b200f35a6b4d154fb9 pristine_git_object: 19ebf9a4ba59d6cafec88daa5db84167fd552b65 + docs/models/createsetupregistrationoperationrequestfailuredomains1.md: + last_write_checksum: sha1:596f9b2eb05e52e45685bb9dc9f0a455aac63a33 + docs/models/createsetupregistrationoperationrequestfailuredomains2.md: + last_write_checksum: sha1:bb9bed5006fdfd1fea666372e3a8441c3468b743 + docs/models/createsetupregistrationoperationrequestfailuredomainsunion1.md: + last_write_checksum: sha1:4b76e1e969d7665dc2bc2a80692938bafa7eb1ba + docs/models/createsetupregistrationoperationrequestfailuredomainsunion2.md: + last_write_checksum: sha1:b6f1d25b58d6371ae77eeaefed394ac5484c01ea docs/models/createsetupregistrationoperationrequestgcp.md: id: 5608a171b819 last_write_checksum: sha1:e644b7ffb9c43dbe3020276c06b900d35a90b712 @@ -2274,11 +2499,11 @@ trackedFiles: pristine_git_object: 867d5d25f129f32f5be1cba247d787306aad506e docs/models/createsetupregistrationoperationrequestpoolsautoscale.md: id: 85d445130720 - last_write_checksum: sha1:02f9cb3762dca82f9454546be34a98e6c2afd5cb + last_write_checksum: sha1:c6d8193e387c129ee1aa786ccf1442d6549374d7 pristine_git_object: a3088980ff6eb64aae3352ee4127f1a121f0ee37 docs/models/createsetupregistrationoperationrequestpoolsfixed.md: id: 0e3d85b24fbc - last_write_checksum: sha1:439f0ced83ee4dbc7e61c2617364da07828dff36 + last_write_checksum: sha1:73ade5ed71ec01fc81cad221c812ab042207df63 pristine_git_object: e76d3e7c137a8d3fccd1cc0a15bf99c85baa0303 docs/models/createsetupregistrationoperationrequestpoolsunion.md: id: d08fe90df826 @@ -2434,7 +2659,7 @@ trackedFiles: pristine_git_object: fb4db879451ee867285dc9a402994c587232e5b7 docs/models/createsetupregistrationoperationrequestsource.md: id: 7a84ffef345a - last_write_checksum: sha1:062d961d00efcbe71fc7d350fc51328ecd1306ed + last_write_checksum: sha1:9972bcc563e7b5b7df87820de0dee89550f4d4a4 pristine_git_object: 65b4a4a44824480a719d692db9eed1e88917dae9 docs/models/createsetupregistrationoperationrequeststacksettings.md: id: 629acb1b8791 @@ -2648,26 +2873,26 @@ trackedFiles: id: fd6b15529498 last_write_checksum: sha1:b37585a65e44d2d2cef42d6b1a9ec2e6d392c006 pristine_git_object: b2454da5a59dd385063fa4881ccc53da5c936495 + docs/models/dataai.md: + last_write_checksum: sha1:9daca03a0b31d553c1c3e47607d3abb7086402f8 docs/models/dataartifactregistry.md: id: 94e318c7b775 last_write_checksum: sha1:97fe78c24a26d8b5f5f4c09c68fc6caf0fcf1975 pristine_git_object: 401e9ba5215e2afef55f937a5f8ef22bc682cc3c - docs/models/dataassumingrole.md: - id: 7b72799ea2e0 - last_write_checksum: sha1:52e904ca5d50dd4d4ac2e86c6f0f7a4e400d1bb3 - pristine_git_object: 3b44fd7931f23f2fa791a171bfbb0aa4afb440c6 docs/models/dataaurora.md: id: ebef36103990 - last_write_checksum: sha1:c1b40f15a57106074bfea1dff6e39e6f463e80ef + last_write_checksum: sha1:4aaa6e76e2e48d396cb9857013a7ae46431f7b2c pristine_git_object: 845576f5c988f4d81850364cc2fcfd7b2490fb3f docs/models/dataaws1.md: id: 4e43c89c248b - last_write_checksum: sha1:04a98ac4486942858abe56fb57f015bfb4464858 + last_write_checksum: sha1:4300e1cf2640bf7963f9c1f5c2320a341394659d pristine_git_object: e5001eef3ea912b3bc71573cf41ca340c20f9bb8 docs/models/dataaws2.md: id: 015288489f0e last_write_checksum: sha1:f916a73361fe97e7ff73458765cffd4305c97fe5 pristine_git_object: dc78efe59f39412d276e3ee1872b95ead339ebf5 + docs/models/dataawsbedrock.md: + last_write_checksum: sha1:bbbbcc937a579f49cb4f2e3553450a49041839ff docs/models/dataawscodebuild.md: id: c8757e186b23 last_write_checksum: sha1:79ac5434d827a7f19ff4b21386c2592733dfac46 @@ -2678,7 +2903,7 @@ trackedFiles: pristine_git_object: b95d5bd57b8748f4c2310f818ac7787e674cea78 docs/models/dataawsecr.md: id: 5517ab785e40 - last_write_checksum: sha1:fe248b0dda392f91927a6b2603e99093b8519489 + last_write_checksum: sha1:e6f6a32f0d37cf088a345cb51700e34b99c5d0ab pristine_git_object: e5e7226ba2b4a28a63d7d7805a8089274cb937d1 docs/models/dataawsiamrole1.md: id: 47fc977ca8c9 @@ -2688,6 +2913,8 @@ trackedFiles: id: 5ec841c1419e last_write_checksum: sha1:fb43a1e250be7fa292436b70bc73ee1cf13223fa pristine_git_object: 466a4f93cf8e0188ab14e01f0aff14d6eb3c1753 + docs/models/dataawskms.md: + last_write_checksum: sha1:4673927940c718cac1ca8e050a2673910f7461b6 docs/models/dataawslambda.md: id: f64f7f57ccf4 last_write_checksum: sha1:1350769c43becc3cd6a0298959ffdf4f7231bac1 @@ -2710,7 +2937,7 @@ trackedFiles: pristine_git_object: db8341fa8e49e3275ff15ad96666cd9737fc922e docs/models/dataazure1.md: id: a79343db7624 - last_write_checksum: sha1:10536e750f58e86e8bf26c9dfcd0884a513a77f6 + last_write_checksum: sha1:90e6b29dc47643118eb7d00c83d8b454c9431e75 pristine_git_object: 379971c487a7db8a568ea05b25f80e99f4027f54 docs/models/dataazure2.md: id: ea5119b629e6 @@ -2736,10 +2963,12 @@ trackedFiles: id: deb9f89405d3 last_write_checksum: sha1:fc3053bf2218474a1501b6291461ae8c49473047 pristine_git_object: 6bf4dcd9cd90f28eb5781409c3e1baf0ecc271f3 - docs/models/dataazurekeyvault.md: - id: f34b429d814f - last_write_checksum: sha1:ab251e4ddf12ac406b1532440448ba6def24ec1e - pristine_git_object: fa903de85df6638f739edf74806b5906dfd990bd + docs/models/dataazurefoundry.md: + last_write_checksum: sha1:ec1765dff7c793fc688d49e56373760de61835cb + docs/models/dataazurekeyvault1.md: + last_write_checksum: sha1:f78bf8eb863179dae295c3ba3a735ec02e8ce6eb + docs/models/dataazurekeyvault2.md: + last_write_checksum: sha1:f4414f4d11d95013cc7c1bbdfd0d10b10426d763 docs/models/dataazuremanagedidentity1.md: id: 42038bde58b3 last_write_checksum: sha1:1b6f0c47962f508957bc1f3113b324889d3c9e30 @@ -2780,29 +3009,9 @@ trackedFiles: id: d7f02587b7be last_write_checksum: sha1:2b44a5c9c5e28c60b0715ed9d469ed91e8f2251b pristine_git_object: 76bcd3919cef5ca1cec3a2f8d4dddf877bfb0cb9 - docs/models/databuildingimage.md: - id: ae8ac7d1ab1d - last_write_checksum: sha1:0c4f0da59ae94502f69d2a73879ea9984212b5a5 - pristine_git_object: 8451bcb4751b76b0100b9d693c11a80952a9ac11 - docs/models/databuildingresource.md: - id: 4757a944e420 - last_write_checksum: sha1:97e9b8dac05f159725e16f0630e076c67352019c - pristine_git_object: 697efce49df9f6428bd8a3c15e0c50ed90a6fb06 - docs/models/databuildingstack.md: - id: b9439804fa81 - last_write_checksum: sha1:b5bbce5cf16c2a7c437dd80d6b71fb269c4887b9 - pristine_git_object: ebc60fb551f4672ce36a5dac3e82e1401ac0daea - docs/models/datacleaningupenvironment.md: - id: 3f58261956a8 - last_write_checksum: sha1:ad1219d8780108ae4c5bac6cd6ebc77ee8bf5cdd - pristine_git_object: 5ee56c6583beeca76940ceaa1c2a7c6ebcf45a55 - docs/models/datacleaningupstack.md: - id: bb58eaeffbe0 - last_write_checksum: sha1:635d10d83fbb65aa12ecbab5b75c03ca365d0726 - pristine_git_object: 8496daa1d6cc6017e58f9015254f5e3b936c46f7 docs/models/datacloudsql.md: id: 0f5d5326c164 - last_write_checksum: sha1:a7d1b5ab03bc60e8c0e84c08d39036321bbfba63 + last_write_checksum: sha1:2ccd28fae03b453bc73b1445a70884f495c91ed5 pristine_git_object: 2ff9e53b982841a35234f730e31328f866a24ca5 docs/models/datacollectionissue1.md: id: c9949444bfb6 @@ -3052,6 +3261,14 @@ trackedFiles: id: 1ce50f99ad6b last_write_checksum: sha1:80fc3d7db83ddc5fa642ba9a942386beab73d65b pristine_git_object: 2133357d1f2bffc1dc6df465e0f5b451f7f7b2ad + docs/models/datacollectionissue66.md: + last_write_checksum: sha1:bc0f00b5781d0270b03b559f9bbc047346c846d6 + docs/models/datacollectionissue67.md: + last_write_checksum: sha1:4ec13864b5ff9ba4f984c63bc0d7e6774deabbf5 + docs/models/datacollectionissue68.md: + last_write_checksum: sha1:2f38c22510723b0d97e53e35fee9f7ee5ff44f87 + docs/models/datacollectionissue69.md: + last_write_checksum: sha1:3007a3ec1df89f672bde95f1cb9c669e37538187 docs/models/datacollectionissue7.md: id: 010a315ec94a last_write_checksum: sha1:5d033b6006cfa63ea9a0833f7ee80d3c31fb1baa @@ -3064,10 +3281,6 @@ trackedFiles: id: 7f8bfcd83914 last_write_checksum: sha1:b2a5c22b154043fb2ddb680627f0d2e01783bdce pristine_git_object: 0108650ac9d2be03f9ffb83382da0bc30b86d0fc - docs/models/datacompilingcode.md: - id: 46c0bff28614 - last_write_checksum: sha1:8db0540624f103ab8a9d936ae6c23aba1859e7db - pristine_git_object: 1a14afdd25edfaf67b5de2649899b92b4b53cf2b docs/models/datacomputecluster.md: id: 570b6ceef1ae last_write_checksum: sha1:ff774fbd839d36ac566a0ba1efef98dbb97375db @@ -3076,111 +3289,19 @@ trackedFiles: id: 268420ee4dd3 last_write_checksum: sha1:2542f9639629ff2460310cf1442f995b15cf1a72 pristine_git_object: 787120ac4682133d94cb12930a1c3fb021fc737c - docs/models/datacreatingrelease.md: - id: f07dd9072d78 - last_write_checksum: sha1:2bfb8184604223614f5c8bc744d55175ae741e30 - pristine_git_object: af2526d5a2aeacea6d41840868082d7a52d1af1a docs/models/datadaemon.md: id: 16b0ad709d6f last_write_checksum: sha1:7804059700a19b0512e05f2848598f015409edf7 pristine_git_object: a881640e344632797755924eef0546232f908d15 - docs/models/datadebuggingagent.md: - id: aba80ec1eb83 - last_write_checksum: sha1:489837d27293005887e915fcc13f91defe0d6ce2 - pristine_git_object: 595ffc79cc22a5175c6f28ccdeacb9b486130183 - docs/models/datadeletingagent.md: - id: bad29cbe37df - last_write_checksum: sha1:cb5156641758770a39a9f6c1ca9bd820735a25b7 - pristine_git_object: ea7feeb31c30b8da4350ad5efa4284f7bf97179f - docs/models/datadeletingcloudformationstack.md: - id: d4b93652f442 - last_write_checksum: sha1:21b6aecae715825ede871f1a0d6852df82bcfa9b - pristine_git_object: 93b4be6aab4eb13c07a2434209a04a6abba7287e - docs/models/datadeployingcloudformationstack.md: - id: 7e283b200ed2 - last_write_checksum: sha1:f02a370bfc0f83cabac75cf4a6f1e6ec573d2f2c - pristine_git_object: 1079d63322623ef5ad4980694b583d0adeb655fe - docs/models/datadeployingstack.md: - id: 535767541eeb - last_write_checksum: sha1:93c6f6ff7b429f4fd7d723c2780953fc287a60de - pristine_git_object: 49c811e65402371062533594cbf345a377e80006 - docs/models/datadeploymentcreated.md: - id: c92f8f571066 - last_write_checksum: sha1:8df1761b2c1d63ab2aa39bfbfc664bec21e73c50 - pristine_git_object: c13c03230d1c8ee221ddad3d9552ee3055c4150d - docs/models/datadeploymentdegraded.md: - id: 98daf5bd8a62 - last_write_checksum: sha1:1afd25a4df43d9070650a8c9668028678d29c716 - pristine_git_object: bc800471943e40b6ef68e066b2f47135af8118c2 - docs/models/datadeploymentdeleted.md: - id: d417d5815c96 - last_write_checksum: sha1:e76077f202ea70fb8b887e7cd3bafd78d8aed328 - pristine_git_object: 572373e0ffce1d11fb53e0a52cb233dd6009d9aa - docs/models/datadeploymentdeletionrequested.md: - id: 29b2dcc04f40 - last_write_checksum: sha1:880676ab8665922d49f58943335bebaeeafd38dc - pristine_git_object: 1382144047447077b25f1bee22e2a0aa1151ec8f - docs/models/datadeploymentenvironmentupdated.md: - id: 10f44b4d8678 - last_write_checksum: sha1:8a51455193787a89d194e4463aa60092e3a222e1 - pristine_git_object: b4e94540150e8d8a78a23b0fe78b73517d2f3897 - docs/models/datadeploymentfailed.md: - id: 5af8ee73d66f - last_write_checksum: sha1:2e842f281e33868b56c751b20acda39d013000f4 - pristine_git_object: c21788f88e9687016e49ca43dcf06bdf051d4d7d - docs/models/datadeploymentrecovered.md: - id: 39231634e572 - last_write_checksum: sha1:1e213f283636b1d999d542ff00c1af65369ea659 - pristine_git_object: 6833109bc0306881bf2dc4a1a7f33e6cd23e3220 - docs/models/datadeploymentredeployrequested.md: - id: 1f5ce29dbb2f - last_write_checksum: sha1:2abf5b064af370b1cc2160f120e59b651ea77dd4 - pristine_git_object: d3b46276d867b517682d59c03663792117d42a4c - docs/models/datadeploymentreleased.md: - id: 7c94572003bc - last_write_checksum: sha1:8106af7ace27180117079fb1428b43901f2dc9a3 - pristine_git_object: cf9ffeb9f7b0ca75b2b62db33fabe01c367fe645 - docs/models/datadeploymentreleasepinned.md: - id: e869ebf4e641 - last_write_checksum: sha1:d68b39c7d328900288d5d909b6f6d610740ed279 - pristine_git_object: 26abd58c4afbd9f43224cf3d7efa1b59013b5d0b - docs/models/datadeploymentreleaseunpinned.md: - id: 6129a292b662 - last_write_checksum: sha1:2eb3b32ce89a7b7530577c661e3a11b519153f06 - pristine_git_object: 5f9000befc4fba080419e704fc621ca7f52dce78 - docs/models/datadeploymentretryrequested.md: - id: ef7906ef5135 - last_write_checksum: sha1:43b309068048d924c373cf27c6e652cef6600512 - pristine_git_object: 034e56f22ba47377e4309b3895f09245faff2971 - docs/models/datadownloadingalienruntime.md: - last_write_checksum: sha1:9bf5130186142021d64e0f6dbea7dcec4bdb954e - docs/models/dataemptyingbuckets.md: - id: 48eb0000bfe6 - last_write_checksum: sha1:05b9d191726a460f68704e27767d525b1c369137 - pristine_git_object: 0c5dba194732657e1a5bbdad970f57a8873d3249 - docs/models/dataensuringdockerrepository.md: - id: f02f868523c3 - last_write_checksum: sha1:6a736b644bac91462025ca09f7abd7dcd3890e88 - pristine_git_object: d73067ba0e7b53b4791b1ad63cae382e7a556996 - docs/models/dataerror1.md: - id: 209fab812981 - last_write_checksum: sha1:d2077ef00eaeb7b17bdd65f9dcf9e09a21c28cc2 - pristine_git_object: 7a697b901bc77c6c7317c5853da1406e76ca0a84 - docs/models/dataerror2.md: - id: 10689a917b52 - last_write_checksum: sha1:5149a7bb1f2384f22e4e893fdab517b573b1ad2a - pristine_git_object: cd2c5cb5a1b23b6a140764ecce46f3a069a138ff - docs/models/datafinished.md: - id: 48d2627a55e1 - last_write_checksum: sha1:d83144245ccb53563e190f3eee9b1cb9e2b18c4a - pristine_git_object: 0669e0ef8c3f4844bb2947e20c0dbc266c62eb73 + docs/models/dataexternal.md: + last_write_checksum: sha1:3e32e5e3a873804cb9b37b459e8a0c5a3a73433f docs/models/dataflexibleserver.md: id: 2f1ebd3fc027 - last_write_checksum: sha1:f57b3b72393468213e37109085e8cfd636778e71 + last_write_checksum: sha1:aae079800a013ca9e15aa7596f98f7d1a2cc6e82 pristine_git_object: 8d4c58d98f162d4dc6e84a0fe6d1e1c244fecc2e docs/models/datagcp1.md: id: 029d6b531c5b - last_write_checksum: sha1:69a378756bf79b9ad8b0bf859cf4b541bbd5c5b1 + last_write_checksum: sha1:3f52adb7f03eb5ec6a4a23961d83fbf7f024fd03 pristine_git_object: ba5d59e1c74002d9116faf4906fe3e5f0195d638 docs/models/datagcp2.md: id: 0beeab4d9b37 @@ -3194,6 +3315,8 @@ trackedFiles: id: a39aab4d2834 last_write_checksum: sha1:26690f894a2e2118fe9a023ddd04a83ab6eb5786 pristine_git_object: 0141c9e951471f47af9cd241db3e60fb56c43af1 + docs/models/datagcpcloudkms.md: + last_write_checksum: sha1:24e8e532c3606b75a999ef3d644f764a2f0b12b1 docs/models/datagcpcloudrun.md: id: 3a66d6274bbc last_write_checksum: sha1:2c9eb65e44a355c9992934fe613eb5d98a859af9 @@ -3226,18 +3349,12 @@ trackedFiles: id: 80009dfbbc14 last_write_checksum: sha1:d23eff1448b820f6e2f4a8c7e6ac0e14d66a0ba6 pristine_git_object: 94cee6a3504edc39fe4c71b3050a5a5f7622c3db + docs/models/datagcpvertex.md: + last_write_checksum: sha1:108db45c88725cedf19f83fc8407a3b84007fe74 docs/models/datagcpvpc.md: id: a48c8a2142d6 last_write_checksum: sha1:ecdfb55e973c1ac75ad75d57bf73f3d879ecf3e3 pristine_git_object: 35401801a2a8749983dfbae04150e4160c225b81 - docs/models/datageneratingcloudformationtemplate.md: - id: 381027571b71 - last_write_checksum: sha1:cc7ea1791525fb2c951f233740b244612fa27c58 - pristine_git_object: 13e9bd0e6d134440b233f91d6fbdcf8e0575db01 - docs/models/datageneratingtemplate.md: - id: 9660148684b7 - last_write_checksum: sha1:fbd83764982727ccd4cd5762cb74e04ed8778725 - pristine_git_object: e83d11e190c23a086c50f0ae058f3218e2900f94 docs/models/datahealth1.md: id: fe849c8ee783 last_write_checksum: sha1:8b5e543044f2156646339fbd4acf1bf869c125b9 @@ -3486,10 +3603,24 @@ trackedFiles: id: 6722e06302e9 last_write_checksum: sha1:26ee913ee554d61996818de2de96b24102fdc5bb pristine_git_object: 42a077b1794407356dd4fd521e005408e688dd30 + docs/models/datahealth66.md: + last_write_checksum: sha1:3b9534ef167ccb707f6af8718bdfbf4d3ae0d48d + docs/models/datahealth67.md: + last_write_checksum: sha1:bb3150076e2ddfcf63f866ed6b456f6b9209cbb8 + docs/models/datahealth68.md: + last_write_checksum: sha1:135e6ae6a6d51b59478b5f789706fc5156ec016c + docs/models/datahealth69.md: + last_write_checksum: sha1:4c9a94888ff690a1111e3b89788f9e678eb80268 docs/models/datahealth7.md: id: c15d02a79867 last_write_checksum: sha1:3a2370d20ce5ecda3f85c599db8ee7a2332319ea pristine_git_object: 948b09c151470f21192436e0f6178b046eea1759 + docs/models/datahealth70.md: + last_write_checksum: sha1:d25e40370f0259ad82cbff511677ff83f3e2bae1 + docs/models/datahealth71.md: + last_write_checksum: sha1:b544d0d01b36dadce8fd19b5671508073847fa38 + docs/models/datahealth72.md: + last_write_checksum: sha1:6b69bae64823ec52e08742c37b2509a38de5130a docs/models/datahealth8.md: id: ebf7dec693fb last_write_checksum: sha1:57122e413cbd35a8c4a3b39811a84538b4963164 @@ -3500,12 +3631,10 @@ trackedFiles: pristine_git_object: e32150dbf3450a07ebd7f519d011e9d1658aa8e5 docs/models/datahorizonplatform.md: id: 9ba5c768edf1 - last_write_checksum: sha1:4be8538e2201bb979d33ce6f5eb69e185492afd3 + last_write_checksum: sha1:e5ce285da37bde7f34d9fd33369835b96bf65cb3 pristine_git_object: ea5b52c3059ed0aa8ee5a333452c8f59e9735e05 - docs/models/dataimportingstackstatefromcloudformation.md: - id: e2a2623a21b3 - last_write_checksum: sha1:4802f7fbbd261e7dfd0497df378d1acdabead82f - pristine_git_object: 8320b3128898402c86039b2ad47279dd181d4fc9 + docs/models/datakey.md: + last_write_checksum: sha1:10baa563943a97c791dc0d31bf83fd130bd4c7d9 docs/models/datakubernetes1.md: id: 74224d2bec4e last_write_checksum: sha1:9409ef3ab875afb3a6a3660b6aa2ddc4bed91244 @@ -3534,10 +3663,6 @@ trackedFiles: id: c1e906c7a015 last_write_checksum: sha1:f251a5d0789f3806cb2c8e693cb46281fd445602 pristine_git_object: 2d0d5fa63bae094fbfeeff37b4c71c1ba98acd76 - docs/models/dataloadingconfiguration.md: - id: cd0bd855dcb1 - last_write_checksum: sha1:1593a0d85b0f622686835d2b7205010672a35b6b - pristine_git_object: 5cb5148eed4f282d2d0ad480b789d1a0eee967f6 docs/models/datalocal1.md: id: 7ced19acc7a2 last_write_checksum: sha1:4018aaf6ad2c754b079102ffbecfe6df70bcbeb3 @@ -3576,7 +3701,7 @@ trackedFiles: pristine_git_object: 5460a00f6033f3c4631303efa36288e8f757a11a docs/models/datalocal8.md: id: 816b8468a77d - last_write_checksum: sha1:a6b2d7693be3f7ddee4c33c3bf86f5fe1f31ed6a + last_write_checksum: sha1:76638847c8abb35f3a46efa3e4f379d812231acc pristine_git_object: 71c22b229f54dacee9911865f3c6472bb310d9f9 docs/models/datalocal9.md: id: 8e73cec0f4f1 @@ -3584,7 +3709,7 @@ trackedFiles: pristine_git_object: 95c28cfa7a0c024d3e20f830a371c65ac328ca45 docs/models/datamachines1.md: id: 0d4e62962ae4 - last_write_checksum: sha1:bf2487328ce2ae511d71caa41eeb0a2af9892155 + last_write_checksum: sha1:0eab9da443767a65c5e7e33d01883b5db0f0630d pristine_git_object: b049d4b97a0f2cd8dd837a55a065702807991bf8 docs/models/datamachines2.md: id: 9506c5dfe4a9 @@ -3598,26 +3723,6 @@ trackedFiles: id: 47cb3abe0c8a last_write_checksum: sha1:245e7124e305834e85348890d9cdadae78d487b8 pristine_git_object: 5d3c81eee1887fa267a0dbaddb18f37d17d135f6 - docs/models/datapreparingenvironment.md: - id: 9f74baf1b294 - last_write_checksum: sha1:ed5f853e0366b7e54cfe9c71e86a82dd0983a662 - pristine_git_object: 52f8c8f3f79df5b64122d9923a8f7376e23f927f - docs/models/dataprovisioningagent.md: - id: a164fbc73c1f - last_write_checksum: sha1:8bbee5e755f52852f659a8d5c0a55d8ccab14802 - pristine_git_object: bc8856ca54fdecf85f7186407f158a48de2b9116 - docs/models/datapushingimage.md: - id: 460fa9e77dff - last_write_checksum: sha1:e1590b75673593645e1030b03a4f1b0417e18aea - pristine_git_object: 4fc451a2f4d025d3f5ea74c96c9fdb7c90c9d63e - docs/models/datapushingresource.md: - id: 14d57fff1132 - last_write_checksum: sha1:caf791154370880c6cc04b12a46c4f0e9a6e1b3d - pristine_git_object: 4e4a2078334dda0552fc8f035ee187942b896c1d - docs/models/datapushingstack.md: - id: 6e089c7a5290 - last_write_checksum: sha1:43955a7e9be76b480c2892530aaee28ebaa212c4 - pristine_git_object: b5da8bdc4cba98c405748d69dcfc11dd24cfb0a1 docs/models/dataqueue.md: id: 790fc933b7de last_write_checksum: sha1:9bf83f69c4de8bf38ac5e0dd2c9c31ede621fff5 @@ -3870,6 +3975,14 @@ trackedFiles: id: 4d51ce64f572 last_write_checksum: sha1:8b8e5d937dc10be94f977edac181a14f98cfffde pristine_git_object: 72f4fe8e7f0722c7d64e1f4ea2fdc5f05e40517f + docs/models/datareason66.md: + last_write_checksum: sha1:997039b1a83dac74a92c15ab767f67cbb8b756e6 + docs/models/datareason67.md: + last_write_checksum: sha1:55f5e97085b8376fa5ef247bd99236cc9e404b17 + docs/models/datareason68.md: + last_write_checksum: sha1:6fcc130812110d7b91315e8ebe389539c6d79947 + docs/models/datareason69.md: + last_write_checksum: sha1:2b77544d2ff19a5476e9349c6a3b82d4ba035413 docs/models/datareason7.md: id: 899e68a68ebb last_write_checksum: sha1:1200b1d244024845e90009a3e5ba1e5d718ca3d9 @@ -3886,14 +3999,6 @@ trackedFiles: id: 609a6e0bfff8 last_write_checksum: sha1:82e9fcb6a5b809f2cd4afa4147202bc376d15ac9 pristine_git_object: 9701267344348b7faf2c5742e4c7023c99be0af6 - docs/models/datarunningpreflights.md: - id: 41eac019b13a - last_write_checksum: sha1:4e3bf9b38b895bf50be21e1a95fcc88c45205fed - pristine_git_object: aa2c9ddb41ad65534417e0385287d01e985c527b - docs/models/datarunningtestworker.md: - id: ddfb0531481f - last_write_checksum: sha1:bc8b5701c604189a87a56c63e9fe10965f44b4dc - pristine_git_object: 475f34733524d7028c57507daff8a69e53bf1866 docs/models/dataserviceaccount.md: id: 69ffe7d6e718 last_write_checksum: sha1:66e800a7ba64573502058cd7b3b178c96580aba9 @@ -3902,22 +4007,10 @@ trackedFiles: id: e5ef919f557f last_write_checksum: sha1:38519fda9d2a386654c3d8a8729d5123356ed599 pristine_git_object: 5a3ccc997dd95d12c1ec8a6bdb4e59a826cdb0d6 - docs/models/datasettingupplatformcontext.md: - id: 98e52999db7b - last_write_checksum: sha1:2a45c3e5feedf64265cbb4120358a0b7ac4f2f82 - pristine_git_object: 2caff39861d376bb188031d84ca6c31db80e4b37 - docs/models/datastackstep.md: - id: ce973b8e73af - last_write_checksum: sha1:67e508ac6679244ac8dcf9739f4d7468d6c72e62 - pristine_git_object: 30d528696aae56b2aaf9828ebcb47ed865c42bef docs/models/datastorage.md: id: d13f9e6843dc last_write_checksum: sha1:ea8cb906ec2196557cd1044ffe366d96c111f063 pristine_git_object: 84dba92a67d703038ab565b279e7a4c4fc47e0dd - docs/models/dataupdatingagent.md: - id: d6c56f7c9536 - last_write_checksum: sha1:b3ac2d86e27f7f20a0691c8d3cc3a4bba648f59a - pristine_git_object: 79e63e3fbb08a1f23b63f2f73cd395a4e5ce69a4 docs/models/datavault.md: id: f7188cc0add6 last_write_checksum: sha1:a93d55c9060f825ae857ce32ae4a3673a6cc062b @@ -3950,6 +4043,8 @@ trackedFiles: id: 8e574faf723c last_write_checksum: sha1:6415c0ea1a8b8780351c9318021ff47795389ea3 pristine_git_object: 018b7628518fad42f79c415c633d0013345b18df + docs/models/defaultenum.md: + last_write_checksum: sha1:c3222eb6cd61f759dfae010f25b4a24d0c23e1ca docs/models/defaultreleaseinfoboolean.md: id: b52e3329025d last_write_checksum: sha1:4567fbcd7f8530d55c702424e0e86c922100c441 @@ -3990,9 +4085,11 @@ trackedFiles: id: 76db72e79688 last_write_checksum: sha1:dd991a07fe690c86f68b11cbf298a1717a7d3328 pristine_git_object: 3c2c58061fcc626b206dd478b4908772363536f5 + docs/models/deliverystatus.md: + last_write_checksum: sha1:72ddcd0ece31d2d13f50c1149a878e6582d11205 docs/models/deployment.md: id: e43ddcf597c5 - last_write_checksum: sha1:c1a2d4b8b4c1fce5c26515dc3fe59ee9700a987c + last_write_checksum: sha1:f1077ea071f0945f0fbe2b0d7da2451604e8ccdf pristine_git_object: bc502aba0233b228e3f95bc6c79f896f2969391c docs/models/deploymentaws.md: id: 394331ec4c8d @@ -4126,33 +4223,13 @@ trackedFiles: id: 6c5375fdcca7 last_write_checksum: sha1:438405e75a2153c75735335283dc46c2e59f169e pristine_git_object: 1f9c56b24624364a3d58fdb01c06f2ee3db9ea21 - docs/models/deploymentdefaultboolean.md: - id: 6e2c86a3cb19 - last_write_checksum: sha1:b7359420caf29fb51a3d0a705ae1fd4a1fc16a21 - pristine_git_object: a3b912e0af87d379e6907e96502bf8e1778f6c65 - docs/models/deploymentdefaultnumber.md: - id: 6c52fdb6e322 - last_write_checksum: sha1:84217b4033261db2ce1caad7ba9ad6fc000352eb - pristine_git_object: 558b97aa896db2cd44ef10ff79711292f145ee83 - docs/models/deploymentdefaultstring.md: - id: 1a2d2fdc0cca - last_write_checksum: sha1:c656c7c2323a3007d4e0c1e829be45289f207a2e - pristine_git_object: 517a60fde979cc95ae5f03b06bced8b7685092a2 - docs/models/deploymentdefaultstringlist.md: - id: fa329743b031 - last_write_checksum: sha1:90284ba7e671151dd473c6a77f31d20711ffe0b2 - pristine_git_object: 54075985b0733a51eb44f81bf88f6f09816637de - docs/models/deploymentdefaultunion.md: - id: be82f3761caa - last_write_checksum: sha1:1ff690e5e7a3a8164befd44cea0889d4d1bcc4ff - pristine_git_object: d98673fadf6a336e4a15563496de50873cd162fe docs/models/deploymentdeploymentmodel.md: id: 81ff42dd9a74 last_write_checksum: sha1:ef84a8326e61973cd6d23b5f9e935d5efde5ba06 pristine_git_object: d493877a3400acbdbf8b9bbb6a36754fb60bb6f6 docs/models/deploymentdetailresponse.md: id: 712f7bbc8cc0 - last_write_checksum: sha1:007f2df1b7520e0a39a6d2df380624201fb1343e + last_write_checksum: sha1:7aba99b4ace493f711508d596ab66fe6edf5ab76 pristine_git_object: 3edeebf1fc9f84d959a0c609e32588a548a5f00f docs/models/deploymentdetailresponseaws.md: id: c1ab737c8113 @@ -4262,26 +4339,6 @@ trackedFiles: id: e25e09f5bd43 last_write_checksum: sha1:d0c8996c057c02f883e6fe74e629e2ce6aa972e9 pristine_git_object: 0f7fa5712fa8f95f5a0e6919f8501a9fc0045bb9 - docs/models/deploymentdetailresponsedefaultboolean.md: - id: 2b338c7a7e3f - last_write_checksum: sha1:23d99dfcc0e71f48651f2a7b2a5a2dbed8225be8 - pristine_git_object: a0c8820c988ff47c1b1c716d308aa7a28204b0c9 - docs/models/deploymentdetailresponsedefaultnumber.md: - id: fb6dba14e559 - last_write_checksum: sha1:0d0e8f76d50cb8c828cde7e0944838e744e09719 - pristine_git_object: 331a30acebd50de9f15150e8c4762fa1afebe134 - docs/models/deploymentdetailresponsedefaultstring.md: - id: c6f36efb3939 - last_write_checksum: sha1:54722a2d9745616b7485e9b0ceb8531a85548cc5 - pristine_git_object: 8f4e09e3c9177b3b1f9c2a1ce538172ce9f67c33 - docs/models/deploymentdetailresponsedefaultstringlist.md: - id: a916380b130a - last_write_checksum: sha1:c27328de49c0f357e3970521feeb6f00c1ecf008 - pristine_git_object: d3192be77be7f80574ba1d8b4d66400f068458c3 - docs/models/deploymentdetailresponsedefaultunion.md: - id: e3f8a73b48a7 - last_write_checksum: sha1:6e41e835db18cac644389bf5dc5a3b0f19436998 - pristine_git_object: 0f8867ec8e7df9918753c288ceadde53eb9e2b95 docs/models/deploymentdetailresponsedeploymentmodel.md: id: 097384e10aaa last_write_checksum: sha1:fd7640ca41318b398ef227ad66139cc299517c49 @@ -4306,10 +4363,6 @@ trackedFiles: id: 35daebcbeb2a last_write_checksum: sha1:dc96181a39de817923d83a236f1e22ae3ab8f574 pristine_git_object: 71f1bcb6ac36590615a19e189a6f1cea8bd97edf - docs/models/deploymentdetailresponseenv.md: - id: 422fc7af6a93 - last_write_checksum: sha1:fd56d5030baba40b51855c2e54c8eb9704e7dca0 - pristine_git_object: a4630e177b292adb274d5d1ec8cf47bbab2f0744 docs/models/deploymentdetailresponseenvironmentinfoaws.md: id: 12771a984be6 last_write_checksum: sha1:9dc4e9d3512dd115b2822c21279c1a9fd8802b8b @@ -4362,102 +4415,18 @@ trackedFiles: id: b87ce1c9b33d last_write_checksum: sha1:dd3f996efb1851a7f7b47dce785ae2c20fd11e26 pristine_git_object: 8b8f7280fa0e7b8ac8fbf8b210fe792a551a208a - docs/models/deploymentdetailresponseextend.md: - id: 9879f1df604e - last_write_checksum: sha1:70f28c8351be754be4582219fc94f4f214005d42 - pristine_git_object: c20cbbb0331f401106cfa4decb9f863501f84174 - docs/models/deploymentdetailresponseextendaw.md: - id: 490e6eab6db9 - last_write_checksum: sha1:dcf654670c5234104fc88d2fbfb3525ec731d239 - pristine_git_object: 695f927a7bd5cc11b36018fa06362e38c00ba8d8 - docs/models/deploymentdetailresponseextendawbinding.md: - id: 93114dd45b8c - last_write_checksum: sha1:b194b61fecb246998fc4ae1789493fb08da82b9d - pristine_git_object: fb65dafa1a4234c15815104248dadb1078cb4418 - docs/models/deploymentdetailresponseextendawgrant.md: - id: 861a9839b46c - last_write_checksum: sha1:05f3a8016ce0db103c24c3ce89309385bf445a45 - pristine_git_object: c321c42962b81e1fb31ab46f8a0f8e65ee02ddf1 - docs/models/deploymentdetailresponseextendawresource.md: - id: ba6b1b933dd1 - last_write_checksum: sha1:aca26434aa148197cf6fb251f696492484c33f49 - pristine_git_object: ac2278fe3bfa0f8acaef34f9823032a9e2e13404 - docs/models/deploymentdetailresponseextendawstack.md: - id: 255a3420ea70 - last_write_checksum: sha1:623a8208bb723557ab9ebc839a6bce983c52ce18 - pristine_git_object: d707ad91881268896d0f798434bd774f47eb1643 - docs/models/deploymentdetailresponseextendazure.md: - id: f290a27aa861 - last_write_checksum: sha1:f40a75a8c3d4d3b00d29072921ff78afd8834af5 - pristine_git_object: c9e06f22dd7bf0d237d23c93dff4403fb98e7700 - docs/models/deploymentdetailresponseextendazurebinding.md: - id: 4038fe245c63 - last_write_checksum: sha1:c0e65cd50162b4e33fc5dca119b6e9ec39578798 - pristine_git_object: 9d78cc1ce59746367c23fb49fe2ddbbf9ff2d15d - docs/models/deploymentdetailresponseextendazuregrant.md: - id: 4ab0b68e5b4b - last_write_checksum: sha1:2afeb0fe8ab228e2b51e7a6cd2ffc06cf9448276 - pristine_git_object: 9c7b01cabc782854f1d054fc1def3e2158733d88 - docs/models/deploymentdetailresponseextendazureresource.md: - id: "094925366348" - last_write_checksum: sha1:e103ff28dde61c101f4613fe51b3cce2f205e5e1 - pristine_git_object: 8c7f98216b629d4f37de4129a7a2b72e5bf87485 - docs/models/deploymentdetailresponseextendazurestack.md: - id: 9a2b41a40b36 - last_write_checksum: sha1:420c189702769cd329d71b07ef468999aabfbfae - pristine_git_object: 99cb94a373f6e1cd8d1a639a825a843e99ece7b4 - docs/models/deploymentdetailresponseextendconditionresource.md: - id: 7bdfbf891505 - last_write_checksum: sha1:7f3760b9b3185970d3b69128be050f7a201b8cf9 - pristine_git_object: 97c8752682e257a367a279e395e3a998b7b3d6ec - docs/models/deploymentdetailresponseextendconditionstack.md: - id: cf7c08b9363a - last_write_checksum: sha1:76b475d7703d5b3e68a9cdc8e7ac9d50bbaef8d3 - pristine_git_object: 2a688ff7cee6ad8ce920b1ea1d7470365f882a76 - docs/models/deploymentdetailresponseextendeffect.md: - id: 7a0a85c2e41e - last_write_checksum: sha1:359ed802f0f6bf61fd642ec6808b686b942efaa8 - pristine_git_object: e146007c329947d57e2619f2951686a79986aacf - docs/models/deploymentdetailresponseextendgcp.md: - id: 21cba32b3f3f - last_write_checksum: sha1:7d2b8236f138d5654b2566fd734e025096353f6e - pristine_git_object: 50fd114d1c31719fcab3ddc5bed0a05ae6bfb625 - docs/models/deploymentdetailresponseextendgcpbinding.md: - id: 08b7c2533865 - last_write_checksum: sha1:5776cfb79a22f41799942cda7884226be83b5ad5 - pristine_git_object: 565702231f91e318d458b2b8df483fde028ce79c - docs/models/deploymentdetailresponseextendgcpgrant.md: - id: cdb9bf0d22a6 - last_write_checksum: sha1:e01d3ff8442c2a97292db42cd253179e9658961e - pristine_git_object: 289010cbb37b280ef32bffd58a59a83e8f9428de - docs/models/deploymentdetailresponseextendgcpresource.md: - id: 24e68e0e3e61 - last_write_checksum: sha1:da54f299ef70a75e786a65c78bb331a8ad919487 - pristine_git_object: 8cad3f4121c60924b66a845931081e037e90e7df - docs/models/deploymentdetailresponseextendgcpstack.md: - id: 934c61c15278 - last_write_checksum: sha1:2e2c208660c0289689185dd69331d07118d9d896 - pristine_git_object: 6c15305bf1b1f30fc733672f029cd500f9cb5da0 - docs/models/deploymentdetailresponseextendplatforms.md: - id: ac38683843a6 - last_write_checksum: sha1:d361790f509460399ab4d9f7f9d995bb9e71a75b - pristine_git_object: a0473f156561f989be67e82e38e30c043757425d - docs/models/deploymentdetailresponseextendresourceconditionunion.md: - id: 93034b1a3f42 - last_write_checksum: sha1:c5df9e2f2de0636b4373cf66b9f470e1c0e99ec2 - pristine_git_object: 0b5e5216335df1a73eef2e65d294f92ef5bb2314 - docs/models/deploymentdetailresponseextendstackconditionunion.md: - id: 57934c6a1310 - last_write_checksum: sha1:bb7ef00bdce1a67dd3d916a889a0f026d30463f7 - pristine_git_object: 58883f707b4f235f46c54da1fa1cdb16a6194b2d - docs/models/deploymentdetailresponseextendunion.md: - id: edd8c0a8b87c - last_write_checksum: sha1:34110cf86f4cf48e80c30d1157311a53d8d8727e - pristine_git_object: fff71bf176eeeaa88ff206c1fd55af327e9349fc docs/models/deploymentdetailresponseexternalbindings.md: id: 9057d03ab118 last_write_checksum: sha1:449b20fdcdc6fd1c22b6de158b3ff07080533156 pristine_git_object: 95942807f971d672d5cdbfb2ac571d4c2f9e5223 + docs/models/deploymentdetailresponsefailuredomains1.md: + last_write_checksum: sha1:6cba627d730d86c25304b9eb916d8d0123234fb0 + docs/models/deploymentdetailresponsefailuredomains2.md: + last_write_checksum: sha1:a4137ae1d787e917c01fcee129bdb965ca1a5aa4 + docs/models/deploymentdetailresponsefailuredomainsunion1.md: + last_write_checksum: sha1:33efec8133ed8bcf42f9c10c6ae915f4fd83b429 + docs/models/deploymentdetailresponsefailuredomainsunion2.md: + last_write_checksum: sha1:58cc0146a8247ce9ccc2e629c03992c1aa57bf47 docs/models/deploymentdetailresponsegcpstacksettings.md: id: feccced930d4 last_write_checksum: sha1:e35bdf553f2022767c7159ac29fe2ded1d937227 @@ -4474,14 +4443,8 @@ trackedFiles: id: ed69aa0792f8 last_write_checksum: sha1:b854e9c779eeffd6c5768e5bc3434b357cf76565 pristine_git_object: e3292701a6938b0048d314c640ded60d11b51611 - docs/models/deploymentdetailresponseinput.md: - id: 138c8d395567 - last_write_checksum: sha1:f772a0aef790d9c0db3bf228188b0966fd292a2f - pristine_git_object: 014b0801e7462b649c8ff2c00e4969351f408a52 - docs/models/deploymentdetailresponsekind.md: - id: a67606a4d660 - last_write_checksum: sha1:4aa62641d6ddf10b8b84c8eb72163ac0aab33758 - pristine_git_object: e183d12aa56e9e14193234232dd95f27de706429 + docs/models/deploymentdetailresponseinitialsetupauthority.md: + last_write_checksum: sha1:ac3207405d86dcfb96dae3da2c0f2f352fcf15f7 docs/models/deploymentdetailresponsekubernetes.md: id: 5d8c298959ae last_write_checksum: sha1:436bbd071c9d3fe985add3300661717ffc8d2e0e @@ -4498,22 +4461,6 @@ trackedFiles: id: ef4f0f6ce5d3 last_write_checksum: sha1:c7cf034c1756258624e3d77d4ae1f86e3af53248 pristine_git_object: 5af2a020d9b55a492f6cc14e9e5311d67b27cbb0 - docs/models/deploymentdetailresponsemanagement1.md: - id: ce4103614205 - last_write_checksum: sha1:dd8ce120e703aa718968153d6e57f6a5abd43a9d - pristine_git_object: 7c2345b1be1ef528ede771593b3432179851db9a - docs/models/deploymentdetailresponsemanagement2.md: - id: a4661887a243 - last_write_checksum: sha1:9b6121f2cb035482f39bfe691f4a544cecfa3dc9 - pristine_git_object: ea22791df42fa08f94a6e2c7b12bb73034c8d2a8 - docs/models/deploymentdetailresponsemanagementenum.md: - id: 23b0a2562255 - last_write_checksum: sha1:09a04c00bb7ca6266b1931b590ecdcaad1506ba4 - pristine_git_object: a9c932982730d205c922098b2b85c3d3a238d735 - docs/models/deploymentdetailresponsemanagementunion.md: - id: 4253dc86062b - last_write_checksum: sha1:58422df96c19f6b12ef1ae34d46c1986a5835258 - pristine_git_object: 0bcce718754dbfe66cb81c4927f5a68e67061901 docs/models/deploymentdetailresponsemodecustom.md: id: 31a56006f52f last_write_checksum: sha1:3d96f63df506c7f9e60c254bbe0a767fe68b3bc2 @@ -4566,106 +4513,208 @@ trackedFiles: id: fd0cc6e279e3 last_write_checksum: sha1:8cd2db61b6063498a22d17a593707ddfe0db6b59 pristine_git_object: 288ba854f02521c0b8f3a4e63f8c390e999c0d01 - docs/models/deploymentdetailresponseoverride.md: - id: f336aa151b82 - last_write_checksum: sha1:9020ccc7d88be6e84b93b0cb6feeccd0d22ede02 - pristine_git_object: 071f7765e0638c13316983b5cfd49bfd0c3b92ce - docs/models/deploymentdetailresponseoverrideaw.md: - id: 5787561ddd12 - last_write_checksum: sha1:6891432c181741763966926c4559d3c53f8f11da - pristine_git_object: 700073994f7012d685c0f7e88890bc9ba4b89e4a - docs/models/deploymentdetailresponseoverrideawbinding.md: - id: 60a21e12947c - last_write_checksum: sha1:4e5f6baeb160dfd88e0b678ceb21d4acb52fbb31 - pristine_git_object: 04e0f75dc4de25fa46f9ff176482c1e6b02eda76 - docs/models/deploymentdetailresponseoverrideawgrant.md: - id: e756d201c593 - last_write_checksum: sha1:f1350fc32eb0e81f9e635308bfcacbd64c74673a - pristine_git_object: d6bfdf58506dfa6ad90d2d131c8b73053d39daec - docs/models/deploymentdetailresponseoverrideawresource.md: - id: 490f96801039 - last_write_checksum: sha1:b786f3ac04ea587385babcab4482cf862cb48972 - pristine_git_object: 819c0afc7a992aefe0ec94b363a376af781e386a - docs/models/deploymentdetailresponseoverrideawstack.md: - id: 6d038a087de5 - last_write_checksum: sha1:2efc4ee98255f0398f9daac402cd914469831f7a - pristine_git_object: 2afbef6a8d09030164f38e68232c8d1e7fe056d1 - docs/models/deploymentdetailresponseoverrideazure.md: - id: 97bf0e32c8e2 - last_write_checksum: sha1:a0ce55083d9ccc2907d037d67000380c4836a8bc - pristine_git_object: d754d5097b41f3d07bdde4ae364113449b5f589a - docs/models/deploymentdetailresponseoverrideazurebinding.md: - id: 8c92153786e6 - last_write_checksum: sha1:56dee61869e723ff56521fa1a09919b96b51d09c - pristine_git_object: 9563fad45d27b5f20413813b64f0a1068acf834d - docs/models/deploymentdetailresponseoverrideazuregrant.md: - id: 8baf5a0e7aec - last_write_checksum: sha1:2a4ff82e0623e80ddba891aa89ff9c5d6d5f39e5 - pristine_git_object: 83846b0aafd19f4aa35ff78e1a57b38e18d50918 - docs/models/deploymentdetailresponseoverrideazureresource.md: - id: 7f82421e1c26 - last_write_checksum: sha1:d7057d92fbad783956431909345055d838442fb2 - pristine_git_object: 0c30c43b06f839a35cab69b0d7f324c2d1ba853f - docs/models/deploymentdetailresponseoverrideazurestack.md: - id: f2224b5f7b64 - last_write_checksum: sha1:0e0bbfdac554523bd11d4cc5235bbc4868561509 - pristine_git_object: 7be375f03b6c2d4593daf74559405d569527aad3 - docs/models/deploymentdetailresponseoverrideconditionresource.md: - id: 083ae4c00bef - last_write_checksum: sha1:81a291d1685a003267f70a71ba1077b09a2ab968 - pristine_git_object: 7685ba33d2a8625ca64ba2e7e59a877bb6414057 - docs/models/deploymentdetailresponseoverrideconditionstack.md: - id: 57b2a6ebcbb3 - last_write_checksum: sha1:dade19477479c65edfe3db6d8ca2ac004d0d9b17 - pristine_git_object: d44f96a54484aff1cb5becdae20c235828f206c5 - docs/models/deploymentdetailresponseoverrideeffect.md: - id: 574ee0e6140e - last_write_checksum: sha1:620e0ed42cc523f3a78f06327f6798e7af439229 - pristine_git_object: bedb8d3a89d22e77fac2e42dbe8f042177ef554b - docs/models/deploymentdetailresponseoverridegcp.md: - id: 2676420d62cb - last_write_checksum: sha1:7bc657ac80c1136e7e416e97661fd79292f0f4d2 - pristine_git_object: 7e7e20fc319a326f93e1a75529a8d4c161d1a2b5 - docs/models/deploymentdetailresponseoverridegcpbinding.md: - id: 812f30c5a2f7 - last_write_checksum: sha1:b32940b7af435f7ebabfafd08b0881ae19ae95af - pristine_git_object: f96ea22549f735b1c8118785f077f53c55fcb8d4 - docs/models/deploymentdetailresponseoverridegcpgrant.md: - id: 4e1bbf920d10 - last_write_checksum: sha1:6782b2bc4ee6fd8a18307afb5d7178393aecce1f - pristine_git_object: ef844b1888ae71f499158c60486e0676af8fa689 - docs/models/deploymentdetailresponseoverridegcpresource.md: - id: 9b69d2487eab - last_write_checksum: sha1:9dbfcc999090360abc2dedd6fc6c4e17b6321e8d - pristine_git_object: 741e62b033b41e67ab4a7848a5a425903ad98387 - docs/models/deploymentdetailresponseoverridegcpstack.md: - id: 38d30040ab0f - last_write_checksum: sha1:0b41208742782373e750698f68d251effecd5ec5 - pristine_git_object: fb8511e55106863195d8dee7bfdd51443295ad21 - docs/models/deploymentdetailresponseoverrideplatforms.md: - id: b387235e66e0 - last_write_checksum: sha1:a65600769659e40de79f8d14e2c6bfa5858e94df - pristine_git_object: ccae4039390f9b810c61745a3a25a8ad78312ebe - docs/models/deploymentdetailresponseoverrideresourceconditionunion.md: - id: ff2ea980a63f - last_write_checksum: sha1:de6823833ebef8a820ea880bb9f27c7a207cc8ba - pristine_git_object: dc23b0b3f71883bd3127b0a704f3597cd5185075 - docs/models/deploymentdetailresponseoverridestackconditionunion.md: - id: 94686173ff64 - last_write_checksum: sha1:d724a64be6a2b53bf0de6e1a2d1b35d65e745a37 - pristine_git_object: 0b39721ed7e8951dc8d80def9bf508b2414cd1be - docs/models/deploymentdetailresponseoverrideunion.md: - id: f0e3e34ca27f - last_write_checksum: sha1:2f55e3b0667a85a2450c2da1504a6df197bc34c5 - pristine_git_object: 9f2a38d0ee7f51faed28e86e14ef365a0e7a18a0 docs/models/deploymentdetailresponseownership.md: id: cb03f50a4674 last_write_checksum: sha1:4ac16a50af2da6a506285606acf2edfebfe216c4 pristine_git_object: a5d81b7d1700dcc394656ea679e33e0470e3b176 - docs/models/deploymentdetailresponsepermissions.md: - id: 046b6d823240 - last_write_checksum: sha1:dc7f1737a60ca186c0ad1474716e51a17cca1928 - pristine_git_object: 095bee0cf5c70cbfec5053a201eee5601862ad5b + docs/models/deploymentdetailresponsependingpreparedstack.md: + last_write_checksum: sha1:fda2d4a2b8a0650e7fe1dfda2497a44de79013a6 + docs/models/deploymentdetailresponsependingpreparedstackconfig.md: + last_write_checksum: sha1:2a4d43aff18ae6a48ef09d473f5ca6c9d2b1ddda + docs/models/deploymentdetailresponsependingpreparedstackdefaultboolean.md: + last_write_checksum: sha1:a2fb83f0ccf34a4017d3cbcc67e41f0fd705d0e6 + docs/models/deploymentdetailresponsependingpreparedstackdefaultnumber.md: + last_write_checksum: sha1:98517719bdf09f9b7eccda3c4bb1479aeb4db6b5 + docs/models/deploymentdetailresponsependingpreparedstackdefaultstring.md: + last_write_checksum: sha1:db3de4aa53dfb6f3c2859e47f29bae5eb51e1bf9 + docs/models/deploymentdetailresponsependingpreparedstackdefaultstringlist.md: + last_write_checksum: sha1:e3030dadb3ad39ad8e09060c5b12595f593895e0 + docs/models/deploymentdetailresponsependingpreparedstackdefaultunion.md: + last_write_checksum: sha1:494a876db24e4fd6d80a160224e97b0d4c6ff9f0 + docs/models/deploymentdetailresponsependingpreparedstackdependency.md: + last_write_checksum: sha1:a09f6580c57ab52c18dba4e28d0ff3af42eccc92 + docs/models/deploymentdetailresponsependingpreparedstackenv.md: + last_write_checksum: sha1:b6bb23fe72ba5d0dd33c5932563e1e0abcac8a60 + docs/models/deploymentdetailresponsependingpreparedstackextend.md: + last_write_checksum: sha1:8bd86d24a347314a9c8adb8958994b9e679578cd + docs/models/deploymentdetailresponsependingpreparedstackextendaw.md: + last_write_checksum: sha1:2bf7045e6977db9ed628dfdd19091d63567b96c2 + docs/models/deploymentdetailresponsependingpreparedstackextendawbinding.md: + last_write_checksum: sha1:f4efde1aa3f728b83842009e02a9a5e5aeb1b000 + docs/models/deploymentdetailresponsependingpreparedstackextendawgrant.md: + last_write_checksum: sha1:4ec51d6ce43cc453e06553b4811561aad7a39625 + docs/models/deploymentdetailresponsependingpreparedstackextendawresource.md: + last_write_checksum: sha1:976d8a6de22bb1f40e972506fca8c0190a81ff76 + docs/models/deploymentdetailresponsependingpreparedstackextendawstack.md: + last_write_checksum: sha1:35d31142c422b48cfa7e1242459c0ac6443ba356 + docs/models/deploymentdetailresponsependingpreparedstackextendazure.md: + last_write_checksum: sha1:9e838d79f4f54abca2ea399c84adc397fbc1d9ac + docs/models/deploymentdetailresponsependingpreparedstackextendazurebinding.md: + last_write_checksum: sha1:4cb301b0e2cfb691a2c060e8ae51b732bccd2ea5 + docs/models/deploymentdetailresponsependingpreparedstackextendazuregrant.md: + last_write_checksum: sha1:3138830eef7130cd6ef82f485d6e28e803d6e542 + docs/models/deploymentdetailresponsependingpreparedstackextendazureresource.md: + last_write_checksum: sha1:95b0eb7deb14c2b6b05bd0b588ba141e109ec872 + docs/models/deploymentdetailresponsependingpreparedstackextendazurestack.md: + last_write_checksum: sha1:c0803d28c5104c278502b0d400ae58216ece358a + docs/models/deploymentdetailresponsependingpreparedstackextendconditionresource.md: + last_write_checksum: sha1:1179f535fd1a2cc59ff03dedc6d2a3a1f81bc1e3 + docs/models/deploymentdetailresponsependingpreparedstackextendconditionstack.md: + last_write_checksum: sha1:b3af4e4a9a4c4ff62c93e3e22011059fa85b6827 + docs/models/deploymentdetailresponsependingpreparedstackextendeffect.md: + last_write_checksum: sha1:be005c4be703f3a96ec799d54a4aec25f04cc83c + docs/models/deploymentdetailresponsependingpreparedstackextendgcp.md: + last_write_checksum: sha1:fc344e3fc90f033e7d2768f7167d4bdd00586acb + docs/models/deploymentdetailresponsependingpreparedstackextendgcpbinding.md: + last_write_checksum: sha1:6de2816618e08a13990d1b55176bcf53a020fbf3 + docs/models/deploymentdetailresponsependingpreparedstackextendgcpgrant.md: + last_write_checksum: sha1:dba5471486fc030dba78a0c237e8a5f2ec4f532c + docs/models/deploymentdetailresponsependingpreparedstackextendgcpresource.md: + last_write_checksum: sha1:ec0960f63203854672647afae0b9bf527d3e4586 + docs/models/deploymentdetailresponsependingpreparedstackextendgcpstack.md: + last_write_checksum: sha1:61d8708727d4b52e284346ed5363f09c22a86983 + docs/models/deploymentdetailresponsependingpreparedstackextendplatforms.md: + last_write_checksum: sha1:51b57a3bd0532b2eb86b3210486464a9386c0239 + docs/models/deploymentdetailresponsependingpreparedstackextendresourceconditionunion.md: + last_write_checksum: sha1:4445d5d870ed8ae048ef6c003e13e4113cf173c5 + docs/models/deploymentdetailresponsependingpreparedstackextendstackconditionunion.md: + last_write_checksum: sha1:621491f6d024c5687c598e6975bf3bcf62d206be + docs/models/deploymentdetailresponsependingpreparedstackextendunion.md: + last_write_checksum: sha1:31e67a323527b4ec7ad8298206be5a5e40560c8e + docs/models/deploymentdetailresponsependingpreparedstackinput.md: + last_write_checksum: sha1:78ff32ac46e64ea02e7ce782c0a0db27774e51d2 + docs/models/deploymentdetailresponsependingpreparedstackkind.md: + last_write_checksum: sha1:1e1ce67b8572fe8babd40f57e753ff4381a100e5 + docs/models/deploymentdetailresponsependingpreparedstacklifecycle.md: + last_write_checksum: sha1:62999d3b2adc9d48cffe3359db26e1499f9183ec + docs/models/deploymentdetailresponsependingpreparedstackmanagement1.md: + last_write_checksum: sha1:69df043a28e750231c1a9a923eeb9aa22533f2f3 + docs/models/deploymentdetailresponsependingpreparedstackmanagement2.md: + last_write_checksum: sha1:0e76e62ea53f89e6f6421be1c9a608350ba9c2e7 + docs/models/deploymentdetailresponsependingpreparedstackmanagementenum.md: + last_write_checksum: sha1:b7ffdd918e695b5fa56d8edf8c13712a978b41e6 + docs/models/deploymentdetailresponsependingpreparedstackmanagementunion.md: + last_write_checksum: sha1:e998f8de635229730bd4a9c235cf72bbd1653acf + docs/models/deploymentdetailresponsependingpreparedstackoverride.md: + last_write_checksum: sha1:36828c81b3b53cc20aec88deb219a48b9a8706a7 + docs/models/deploymentdetailresponsependingpreparedstackoverrideaw.md: + last_write_checksum: sha1:8f8f81f3090673af5b88479b88661fe06ed140b2 + docs/models/deploymentdetailresponsependingpreparedstackoverrideawbinding.md: + last_write_checksum: sha1:e1ddcb7f845badd17f6a84d619e11be07ad3d8ac + docs/models/deploymentdetailresponsependingpreparedstackoverrideawgrant.md: + last_write_checksum: sha1:af74a5de38bc660ac0b95737d9987f0cd49ca1ba + docs/models/deploymentdetailresponsependingpreparedstackoverrideawresource.md: + last_write_checksum: sha1:c20c46dbd17af00b042188dff02e037723719f80 + docs/models/deploymentdetailresponsependingpreparedstackoverrideawstack.md: + last_write_checksum: sha1:cd471e5b2ad626b5044585324de2f056de1cb035 + docs/models/deploymentdetailresponsependingpreparedstackoverrideazure.md: + last_write_checksum: sha1:af742f0c43ef37745fcfb34363b5341632a44649 + docs/models/deploymentdetailresponsependingpreparedstackoverrideazurebinding.md: + last_write_checksum: sha1:d95024a3a37e9c19c223e2babd9c61db94a5b803 + docs/models/deploymentdetailresponsependingpreparedstackoverrideazuregrant.md: + last_write_checksum: sha1:b7ae9a61929ffe2a327a2882f33fbc977b464d8e + docs/models/deploymentdetailresponsependingpreparedstackoverrideazureresource.md: + last_write_checksum: sha1:83f712d7efb5a324f29967385f748ac843eaf008 + docs/models/deploymentdetailresponsependingpreparedstackoverrideazurestack.md: + last_write_checksum: sha1:eb84a87899b891c1d461dcd3adc1f861f0ad356d + docs/models/deploymentdetailresponsependingpreparedstackoverrideconditionresource.md: + last_write_checksum: sha1:eee8e927cad10ee190f942809e6d0ef2e4e7f361 + docs/models/deploymentdetailresponsependingpreparedstackoverrideconditionstack.md: + last_write_checksum: sha1:e693f43f55dd64bea1ac835f12d250cfd19c2ca3 + docs/models/deploymentdetailresponsependingpreparedstackoverrideeffect.md: + last_write_checksum: sha1:631a979428198bb0868596b0791499218448b91d + docs/models/deploymentdetailresponsependingpreparedstackoverridegcp.md: + last_write_checksum: sha1:feb42a597a15b2b77fd2235f76c07cfb30c1d084 + docs/models/deploymentdetailresponsependingpreparedstackoverridegcpbinding.md: + last_write_checksum: sha1:16949679862fb274feee6648d0ae08637a1c4f09 + docs/models/deploymentdetailresponsependingpreparedstackoverridegcpgrant.md: + last_write_checksum: sha1:4c293efd3d1886f1e4a2a4035306caf3357276f6 + docs/models/deploymentdetailresponsependingpreparedstackoverridegcpresource.md: + last_write_checksum: sha1:6ce7909e0a4cd13dbd9dedc865371ae527165947 + docs/models/deploymentdetailresponsependingpreparedstackoverridegcpstack.md: + last_write_checksum: sha1:9d637f8892951b19e22b85fc5fe614d6c86c7628 + docs/models/deploymentdetailresponsependingpreparedstackoverrideplatforms.md: + last_write_checksum: sha1:f0eee048832ff4eebd237570cf10b54e9cd2d06e + docs/models/deploymentdetailresponsependingpreparedstackoverrideresourceconditionunion.md: + last_write_checksum: sha1:829b5253318b872aa80204506203f1431f04ff07 + docs/models/deploymentdetailresponsependingpreparedstackoverridestackconditionunion.md: + last_write_checksum: sha1:03647201a4577b79e7c2c92b3ad2dbb01704831b + docs/models/deploymentdetailresponsependingpreparedstackoverrideunion.md: + last_write_checksum: sha1:73d55af71ffd5d82411b82dca23d369695a2e65b + docs/models/deploymentdetailresponsependingpreparedstackpermissions.md: + last_write_checksum: sha1:f43dc402e5c43e144d545f6e9b22d53ddf492792 + docs/models/deploymentdetailresponsependingpreparedstackplatform.md: + last_write_checksum: sha1:52c6bdc30843f47f9d9a253693fef1a3305f2580 + docs/models/deploymentdetailresponsependingpreparedstackprofile.md: + last_write_checksum: sha1:37ab12ecb11d06f9e8fd9df93020816f71381340 + docs/models/deploymentdetailresponsependingpreparedstackprofileaw.md: + last_write_checksum: sha1:3f99d83c19b166ac486f257c96e35bb612b136ad + docs/models/deploymentdetailresponsependingpreparedstackprofileawbinding.md: + last_write_checksum: sha1:7bbcb7e3313343a789e01ab77e6a31e7a314d2a6 + docs/models/deploymentdetailresponsependingpreparedstackprofileawgrant.md: + last_write_checksum: sha1:14deb343cc395717d365ebdc596384fe1deb8f67 + docs/models/deploymentdetailresponsependingpreparedstackprofileawresource.md: + last_write_checksum: sha1:b55932e9e9254859347355486cf67fac8e43c494 + docs/models/deploymentdetailresponsependingpreparedstackprofileawstack.md: + last_write_checksum: sha1:fb35993de2156acdf113a161fee4567afa40bd89 + docs/models/deploymentdetailresponsependingpreparedstackprofileazure.md: + last_write_checksum: sha1:4ec838c1552e474c14e443780d8280f5a27c132f + docs/models/deploymentdetailresponsependingpreparedstackprofileazurebinding.md: + last_write_checksum: sha1:45fda2c45513d3571504574007ec2a7b61f41b3b + docs/models/deploymentdetailresponsependingpreparedstackprofileazuregrant.md: + last_write_checksum: sha1:8b0d4e26c5f3b4d2986f131b9a319f19f64bc223 + docs/models/deploymentdetailresponsependingpreparedstackprofileazureresource.md: + last_write_checksum: sha1:cf68674e4cc58b4f30be4854041e0030bbbb8a8c + docs/models/deploymentdetailresponsependingpreparedstackprofileazurestack.md: + last_write_checksum: sha1:6b413e400da5f82683046efa15dce7ec03c39443 + docs/models/deploymentdetailresponsependingpreparedstackprofileconditionresource.md: + last_write_checksum: sha1:44c272ba68681e1547677fdda2ef8253af44ee4a + docs/models/deploymentdetailresponsependingpreparedstackprofileconditionstack.md: + last_write_checksum: sha1:a54159c4a6adee143d24ee1e1eb253c09842f716 + docs/models/deploymentdetailresponsependingpreparedstackprofileeffect.md: + last_write_checksum: sha1:b112e1442dc0e6766c973c0a69554238f1e36a30 + docs/models/deploymentdetailresponsependingpreparedstackprofilegcp.md: + last_write_checksum: sha1:89b8a52fd123c174b26afa9795100a36029ee335 + docs/models/deploymentdetailresponsependingpreparedstackprofilegcpbinding.md: + last_write_checksum: sha1:7bfb6fbc65b29f131b2b3424c73d35df2f626ef0 + docs/models/deploymentdetailresponsependingpreparedstackprofilegcpgrant.md: + last_write_checksum: sha1:c54bfbc8142269dce04cbc9b20fff5125a6c0897 + docs/models/deploymentdetailresponsependingpreparedstackprofilegcpresource.md: + last_write_checksum: sha1:d01992f62584f6f63a51c3675f54a96717f5fa28 + docs/models/deploymentdetailresponsependingpreparedstackprofilegcpstack.md: + last_write_checksum: sha1:bb7b44f44ceca9d4714fbd2b1e22d165c1479ea3 + docs/models/deploymentdetailresponsependingpreparedstackprofileplatforms.md: + last_write_checksum: sha1:927c39050435a0e44502e297514b31ccd88e677c + docs/models/deploymentdetailresponsependingpreparedstackprofileresourceconditionunion.md: + last_write_checksum: sha1:b860c122ef9ce5a40bbc482f2f45b458f720682c + docs/models/deploymentdetailresponsependingpreparedstackprofilestackconditionunion.md: + last_write_checksum: sha1:13ed3f7f5c3ce8cc321f690546407b668e10db27 + docs/models/deploymentdetailresponsependingpreparedstackprofileunion.md: + last_write_checksum: sha1:4f2f783d06c36596f55db61d2b5b9409db83b4fb + docs/models/deploymentdetailresponsependingpreparedstackprovidedby.md: + last_write_checksum: sha1:0f318bb1c5acd96d5d311be011fa44b41852f468 + docs/models/deploymentdetailresponsependingpreparedstackresources.md: + last_write_checksum: sha1:644dfd45d5270e793e1cde60fe77e84ec29c57c7 + docs/models/deploymentdetailresponsependingpreparedstacksupportedplatform.md: + last_write_checksum: sha1:047d3af9eadf213436a7ce2df8310f2f4c646782 + docs/models/deploymentdetailresponsependingpreparedstacktypeboolean.md: + last_write_checksum: sha1:c3fc69439b012ebd5dd53585564daebc75181333 + docs/models/deploymentdetailresponsependingpreparedstacktypeenvenum.md: + last_write_checksum: sha1:abcdd0afee7dd85b78d0d35f8866de66a2059494 + docs/models/deploymentdetailresponsependingpreparedstacktypenumber.md: + last_write_checksum: sha1:388378d03622a2652eba0cfe6f5b4bd3b581d841 + docs/models/deploymentdetailresponsependingpreparedstacktypestring.md: + last_write_checksum: sha1:8f68fe2ed5003b251ff0c19be49e73143da9acf5 + docs/models/deploymentdetailresponsependingpreparedstacktypestringlist.md: + last_write_checksum: sha1:c952d2b8b6b3d6cd65ecbc057afb6e55268ea789 + docs/models/deploymentdetailresponsependingpreparedstacktypeunion.md: + last_write_checksum: sha1:5eacf4724a4de1d94735e1c9841ae15f9bf90dc3 + docs/models/deploymentdetailresponsependingpreparedstackunion.md: + last_write_checksum: sha1:138388899caf6a94612074ae56906b58cfcf8f79 + docs/models/deploymentdetailresponsependingpreparedstackvalidation.md: + last_write_checksum: sha1:37c0027ebc99734f3c40eebcfb25e663424151b8 + docs/models/deploymentdetailresponsependingpreparedstackvalidationunion.md: + last_write_checksum: sha1:5ec675eae7dd3355a27edac99192efd8e787bb14 docs/models/deploymentdetailresponseplatform.md: id: f3d24ab5d14f last_write_checksum: sha1:e2a01cf66281ab939b3f8f399b49340a1def5a19 @@ -4692,11 +4741,11 @@ trackedFiles: pristine_git_object: e38ed1e779eb21f12bfc0d494c61c99cb9f0cd7b docs/models/deploymentdetailresponsepoolsautoscale.md: id: bcad5af95501 - last_write_checksum: sha1:669696a6a22c37377bb861ba0c48c205e8f7f15a + last_write_checksum: sha1:b078a1242f39551827283d70574bd04569846242 pristine_git_object: c4488832fe874bcb0b96205a6ea8cb4f05cf2a8a docs/models/deploymentdetailresponsepoolsfixed.md: id: c350e7dc47c7 - last_write_checksum: sha1:7b017fa07e6c77835481974dea788980cb314e86 + last_write_checksum: sha1:c93dd1c38b9cc58c973f1b181e2bc227b098646c pristine_git_object: f978ffc1a2948ce31f336864133475b1f57287e4 docs/models/deploymentdetailresponsepoolsunion.md: id: cc2d38f56cbb @@ -4704,32 +4753,216 @@ trackedFiles: pristine_git_object: ff4b57534738d4c64824ac027692e96d87e9acec docs/models/deploymentdetailresponsepreparedstack.md: id: 4f5cd431a210 - last_write_checksum: sha1:670217e9538cb6cc30745fbd1f5d3b92cac3812f + last_write_checksum: sha1:6052031c4c6b80234fe20e8c98c1a7c13987fdf4 pristine_git_object: 7dddc9ca8b47c9a097eedb6d7d84f6a8618d1d20 docs/models/deploymentdetailresponsepreparedstackconfig.md: id: 433a700da80f last_write_checksum: sha1:046d411d2a34537b764667eec2d726f1ca4bf525 pristine_git_object: bb173a2bfe987c82efcce9b3bff85c0545dab1c8 + docs/models/deploymentdetailresponsepreparedstackdefaultboolean.md: + last_write_checksum: sha1:59e91f23d11bc204067806b84b0280f9f75b0917 + docs/models/deploymentdetailresponsepreparedstackdefaultnumber.md: + last_write_checksum: sha1:288fa97a91a97a2d0b7dfefc8b88c7e4534f10fa + docs/models/deploymentdetailresponsepreparedstackdefaultstring.md: + last_write_checksum: sha1:c607b367a3dada96fa77a7adbe3e860a639bbf5d + docs/models/deploymentdetailresponsepreparedstackdefaultstringlist.md: + last_write_checksum: sha1:8290647bd21848902336ff28c81cc1d626d5567f + docs/models/deploymentdetailresponsepreparedstackdefaultunion.md: + last_write_checksum: sha1:e837b869e9b7f9317acb71bb916565ae47f7f408 docs/models/deploymentdetailresponsepreparedstackdependency.md: id: 2d2ee6fd9b98 last_write_checksum: sha1:8e722a4adf419a569957c56ae0fd43a7efca0f52 pristine_git_object: 4e3608892f75746b5b43549b5912da4b0a48171f + docs/models/deploymentdetailresponsepreparedstackenv.md: + last_write_checksum: sha1:227c188e7fcddd8d0df2b66be00f46c519a0efc3 + docs/models/deploymentdetailresponsepreparedstackextend.md: + last_write_checksum: sha1:6dfaee7224b9c4b97aaa2679a7dfd2f5c994d334 + docs/models/deploymentdetailresponsepreparedstackextendaw.md: + last_write_checksum: sha1:a9e355b1a8223b86bac972d90712b3170bed6a42 + docs/models/deploymentdetailresponsepreparedstackextendawbinding.md: + last_write_checksum: sha1:e6d03b9625494b7ff591783309347f7823cace3d + docs/models/deploymentdetailresponsepreparedstackextendawgrant.md: + last_write_checksum: sha1:ee27cb5054d77734a7f8789e022ff93ba6ed3a07 + docs/models/deploymentdetailresponsepreparedstackextendawresource.md: + last_write_checksum: sha1:6beadd0f755b2936e42144ea821c5b7c44b4ae97 + docs/models/deploymentdetailresponsepreparedstackextendawstack.md: + last_write_checksum: sha1:0c056de712a647067c8e59100412abe317b5a089 + docs/models/deploymentdetailresponsepreparedstackextendazure.md: + last_write_checksum: sha1:1655073d2b026695611614145b060b80e89821bd + docs/models/deploymentdetailresponsepreparedstackextendazurebinding.md: + last_write_checksum: sha1:91c526af8dd3bea2be95a7a8768c68595f7aca5a + docs/models/deploymentdetailresponsepreparedstackextendazuregrant.md: + last_write_checksum: sha1:c32e109822c1baadceadf786f12f997385036d59 + docs/models/deploymentdetailresponsepreparedstackextendazureresource.md: + last_write_checksum: sha1:7bed1ec3c9bf1a2a93826d9fcce8dfd66fa60113 + docs/models/deploymentdetailresponsepreparedstackextendazurestack.md: + last_write_checksum: sha1:9613aea248aae976e2ffd80b517faf1a17b5e93a + docs/models/deploymentdetailresponsepreparedstackextendconditionresource.md: + last_write_checksum: sha1:ea63e0b6e625b71bf628efbd915ea943ae2a67f7 + docs/models/deploymentdetailresponsepreparedstackextendconditionstack.md: + last_write_checksum: sha1:762e94a8f5db707cf7eedb2d739da4829e4d374b + docs/models/deploymentdetailresponsepreparedstackextendeffect.md: + last_write_checksum: sha1:93ecbc749447ce7123a602c2f347da68a714b582 + docs/models/deploymentdetailresponsepreparedstackextendgcp.md: + last_write_checksum: sha1:1162b9761fec8ce1507b081fc200258b233e57cd + docs/models/deploymentdetailresponsepreparedstackextendgcpbinding.md: + last_write_checksum: sha1:ffb3276c9d29d54c45371967f7a26dfc5a19685f + docs/models/deploymentdetailresponsepreparedstackextendgcpgrant.md: + last_write_checksum: sha1:8694f490c185dbd131a063353670ffd715792525 + docs/models/deploymentdetailresponsepreparedstackextendgcpresource.md: + last_write_checksum: sha1:61c18755931afd067edb0cfda786a97b9e4e206a + docs/models/deploymentdetailresponsepreparedstackextendgcpstack.md: + last_write_checksum: sha1:5269834a284e9cb3111fb859e6a71311adf2498f + docs/models/deploymentdetailresponsepreparedstackextendplatforms.md: + last_write_checksum: sha1:850e163f50152fab244e226741062ed7eef61750 + docs/models/deploymentdetailresponsepreparedstackextendresourceconditionunion.md: + last_write_checksum: sha1:6dd49b00ea5ade884f7eec184edde2e57a0a989d + docs/models/deploymentdetailresponsepreparedstackextendstackconditionunion.md: + last_write_checksum: sha1:c5469d6f3dd5ed84342d6500fea07d79661403b1 + docs/models/deploymentdetailresponsepreparedstackextendunion.md: + last_write_checksum: sha1:2d52f207725788eba41d4fb01c850d2274cacf90 + docs/models/deploymentdetailresponsepreparedstackinput.md: + last_write_checksum: sha1:3154818f36fff8b8d249dcc35010dc2f53efeef9 + docs/models/deploymentdetailresponsepreparedstackkind.md: + last_write_checksum: sha1:382a41664767c1327b521fcfe9522496532b9f75 docs/models/deploymentdetailresponsepreparedstacklifecycle.md: id: dee4bcc11412 last_write_checksum: sha1:ab59d01238c849caecd585cd1c4849439fa82e1c pristine_git_object: 6aff0d010d87cadde14795b88dda4508f9d249ed + docs/models/deploymentdetailresponsepreparedstackmanagement1.md: + last_write_checksum: sha1:10cd78d06ac7bbf965acee1ed9c6e618db92fba3 + docs/models/deploymentdetailresponsepreparedstackmanagement2.md: + last_write_checksum: sha1:033b1a3fad0d1fa6a91d4e8f13684ca2b36038ae + docs/models/deploymentdetailresponsepreparedstackmanagementenum.md: + last_write_checksum: sha1:cae660f6b81006edddf1c2c5d394c895c5e6d258 + docs/models/deploymentdetailresponsepreparedstackmanagementunion.md: + last_write_checksum: sha1:4a45863e0709dfd5ac2b5eb6bd9a7fb97f232a97 + docs/models/deploymentdetailresponsepreparedstackoverride.md: + last_write_checksum: sha1:0ad579017cfd2db32b3485a698580e59956e4a18 + docs/models/deploymentdetailresponsepreparedstackoverrideaw.md: + last_write_checksum: sha1:2969445df7e5e74c5a0624347d015c986d232864 + docs/models/deploymentdetailresponsepreparedstackoverrideawbinding.md: + last_write_checksum: sha1:15a0ddc8748ea8faf06f190d4954436ba2c292bc + docs/models/deploymentdetailresponsepreparedstackoverrideawgrant.md: + last_write_checksum: sha1:9b97bd586667dd2f4b0a213de55810ef64e5351d + docs/models/deploymentdetailresponsepreparedstackoverrideawresource.md: + last_write_checksum: sha1:2aaf6814bb19d44e6cd60d676288eea8d980134f + docs/models/deploymentdetailresponsepreparedstackoverrideawstack.md: + last_write_checksum: sha1:48f54076d54fce3805e7ac04c6b56b56e23e2fa0 + docs/models/deploymentdetailresponsepreparedstackoverrideazure.md: + last_write_checksum: sha1:8daada5db6828ba4703ecd56a040cc8dd9c9c555 + docs/models/deploymentdetailresponsepreparedstackoverrideazurebinding.md: + last_write_checksum: sha1:92e3b46cf1e9837335cd93b3e56aa1437b7f4194 + docs/models/deploymentdetailresponsepreparedstackoverrideazuregrant.md: + last_write_checksum: sha1:e697ee60404d2d4798a554358e24958dbe293621 + docs/models/deploymentdetailresponsepreparedstackoverrideazureresource.md: + last_write_checksum: sha1:72c6894cdf0484c1766b63a098486f2a39f73cb7 + docs/models/deploymentdetailresponsepreparedstackoverrideazurestack.md: + last_write_checksum: sha1:e53d2d6e2890336e1b180c2643e054bf57e38de9 + docs/models/deploymentdetailresponsepreparedstackoverrideconditionresource.md: + last_write_checksum: sha1:57cfce2a41e837f69a478aed46057f5641492928 + docs/models/deploymentdetailresponsepreparedstackoverrideconditionstack.md: + last_write_checksum: sha1:3405d9bd60885e03b1c86e0a0ea22fc2acdd7a97 + docs/models/deploymentdetailresponsepreparedstackoverrideeffect.md: + last_write_checksum: sha1:0d0f21d9234e3bb2a6ce96b73b62991b39a46822 + docs/models/deploymentdetailresponsepreparedstackoverridegcp.md: + last_write_checksum: sha1:433d4f9b5336f6a98bec338a21283610dd10fe1c + docs/models/deploymentdetailresponsepreparedstackoverridegcpbinding.md: + last_write_checksum: sha1:e919c32352af3078b8540b70069c380959fef36c + docs/models/deploymentdetailresponsepreparedstackoverridegcpgrant.md: + last_write_checksum: sha1:8b3aebac8541e9ce96cc90c0b396fc8f4b6824a4 + docs/models/deploymentdetailresponsepreparedstackoverridegcpresource.md: + last_write_checksum: sha1:7ecfbfcc303713e6534d551440ccfa73a55920d1 + docs/models/deploymentdetailresponsepreparedstackoverridegcpstack.md: + last_write_checksum: sha1:2d0d915054bef23911b58403b451caa9cc6d5c15 + docs/models/deploymentdetailresponsepreparedstackoverrideplatforms.md: + last_write_checksum: sha1:52a2a9c990101f320bd0a6c770774edb74bbea18 + docs/models/deploymentdetailresponsepreparedstackoverrideresourceconditionunion.md: + last_write_checksum: sha1:05cccfd98974cef068ed6534dc2efabd24c8e80e + docs/models/deploymentdetailresponsepreparedstackoverridestackconditionunion.md: + last_write_checksum: sha1:decc8d0579ea470f980f6a276760787ee0db3867 + docs/models/deploymentdetailresponsepreparedstackoverrideunion.md: + last_write_checksum: sha1:c8c7ba09f139427aec1b005dae631db86d86b4f7 + docs/models/deploymentdetailresponsepreparedstackpermissions.md: + last_write_checksum: sha1:594dd6bb064e44aa01ae3b768db0d75b17553878 docs/models/deploymentdetailresponsepreparedstackplatform.md: id: 853d0259f05a last_write_checksum: sha1:ce9a5948fac337143ce691d22582712f2acd3070 pristine_git_object: 053564e5c3c3e29ee6ccbdd73c902c53a1720753 + docs/models/deploymentdetailresponsepreparedstackprofile.md: + last_write_checksum: sha1:f89e87c2275fe899ced73ef95317c3e9fc21098f + docs/models/deploymentdetailresponsepreparedstackprofileaw.md: + last_write_checksum: sha1:a0f5848d4a9e7dd78b4eabdef1bf305f23c2cf91 + docs/models/deploymentdetailresponsepreparedstackprofileawbinding.md: + last_write_checksum: sha1:41f799c3c30c7f99783a7a60d38e1268ba4605a7 + docs/models/deploymentdetailresponsepreparedstackprofileawgrant.md: + last_write_checksum: sha1:7f693dd69cb298cda91eb5f1e40a4fd0978a885b + docs/models/deploymentdetailresponsepreparedstackprofileawresource.md: + last_write_checksum: sha1:97ebeb86bfb4df89a814cc8a51925ef50ed81613 + docs/models/deploymentdetailresponsepreparedstackprofileawstack.md: + last_write_checksum: sha1:6cee5b7f7cecb638c1ca4578f5a0cb9537dc9280 + docs/models/deploymentdetailresponsepreparedstackprofileazure.md: + last_write_checksum: sha1:1367ab4133853482480af149e907f64e5606dacd + docs/models/deploymentdetailresponsepreparedstackprofileazurebinding.md: + last_write_checksum: sha1:5702f54eacbce3fe92e151c92917dcb5f2511cf5 + docs/models/deploymentdetailresponsepreparedstackprofileazuregrant.md: + last_write_checksum: sha1:8d71386ad71f4559ede774c4d648c92dd3c92532 + docs/models/deploymentdetailresponsepreparedstackprofileazureresource.md: + last_write_checksum: sha1:55bb157741324f44633a37004c074d98cd32d40e + docs/models/deploymentdetailresponsepreparedstackprofileazurestack.md: + last_write_checksum: sha1:a2a349d2151bfc5345d2a9d0fe55538962524b01 + docs/models/deploymentdetailresponsepreparedstackprofileconditionresource.md: + last_write_checksum: sha1:5e8b1aa61859db3a77317227f341c0de5e44d10b + docs/models/deploymentdetailresponsepreparedstackprofileconditionstack.md: + last_write_checksum: sha1:441ff357b6b591b62c9f63b9a610dbc80c759565 + docs/models/deploymentdetailresponsepreparedstackprofileeffect.md: + last_write_checksum: sha1:adb2f74e7785dd19df629b90b803512d24ddb207 + docs/models/deploymentdetailresponsepreparedstackprofilegcp.md: + last_write_checksum: sha1:756ffa97a98563effa5680c15294115d411bc69d + docs/models/deploymentdetailresponsepreparedstackprofilegcpbinding.md: + last_write_checksum: sha1:03dc953799c6fc7cd5e7fd72026be1825847ffd3 + docs/models/deploymentdetailresponsepreparedstackprofilegcpgrant.md: + last_write_checksum: sha1:29c01f42d6d1a7e1f08f658c74d43505ea8a843f + docs/models/deploymentdetailresponsepreparedstackprofilegcpresource.md: + last_write_checksum: sha1:a7709b97fd51d0deb62bfcfd998284f535164844 + docs/models/deploymentdetailresponsepreparedstackprofilegcpstack.md: + last_write_checksum: sha1:dd6e27f57747bb21b0c6cc98c57c9b752a29d04d + docs/models/deploymentdetailresponsepreparedstackprofileplatforms.md: + last_write_checksum: sha1:26f1270b4629591e0794cd8655f8f345eed6b407 + docs/models/deploymentdetailresponsepreparedstackprofileresourceconditionunion.md: + last_write_checksum: sha1:fc782bbb16c616861080da6a704fcce810efe98e + docs/models/deploymentdetailresponsepreparedstackprofilestackconditionunion.md: + last_write_checksum: sha1:aba984359191757bd750d2a378c2fd81ea53667a + docs/models/deploymentdetailresponsepreparedstackprofileunion.md: + last_write_checksum: sha1:1744c2f46dc6b76455bffa24030565739c368ee3 + docs/models/deploymentdetailresponsepreparedstackprovidedby.md: + last_write_checksum: sha1:1e1113f9a49c82ef25f7f284edcfa25b9dcc4332 docs/models/deploymentdetailresponsepreparedstackresources.md: id: 029bdce1ddff - last_write_checksum: sha1:f7324014eaefef6ba063cae20b3c183db5026d9a + last_write_checksum: sha1:cf85b319e25fbf9ed032fae1f6b4e7c3c819a2b3 pristine_git_object: d935c4eb330c1a302a9fca950889111669e06fbe + docs/models/deploymentdetailresponsepreparedstacksupportedplatform.md: + last_write_checksum: sha1:44e04bf448e9fad0ccba6b056ac85077c4d314f7 + docs/models/deploymentdetailresponsepreparedstacktypeboolean.md: + last_write_checksum: sha1:ee5a577f1d4718effaeed26bc49a34ab1f92a799 + docs/models/deploymentdetailresponsepreparedstacktypeenvenum.md: + last_write_checksum: sha1:25be1b5471e4d33ddca224634610d948ce7342d7 + docs/models/deploymentdetailresponsepreparedstacktypenumber.md: + last_write_checksum: sha1:f3351f34343db41fb5cdbfcc66609db94f8a72bf + docs/models/deploymentdetailresponsepreparedstacktypestring.md: + last_write_checksum: sha1:50563ec3473440b668161e35ec46e78d51a7a15d + docs/models/deploymentdetailresponsepreparedstacktypestringlist.md: + last_write_checksum: sha1:abb985a225aac2043b7665af481361dfc2098e11 + docs/models/deploymentdetailresponsepreparedstacktypeunion.md: + last_write_checksum: sha1:60ef05d39318ead1cb1f3065aa95a29deeaf2b44 docs/models/deploymentdetailresponsepreparedstackunion.md: id: 52e1da15130a last_write_checksum: sha1:4d67a02c771917d812c818d79fb479b01e5dd612 pristine_git_object: fc16b8cb1ef13515bae6a293301d8c1c71cab8e1 + docs/models/deploymentdetailresponsepreparedstackvalidation.md: + last_write_checksum: sha1:114c56333848f061e4fe566e4ed79080c294898c + docs/models/deploymentdetailresponsepreparedstackvalidationunion.md: + last_write_checksum: sha1:8582f1ca6efdac888fd95ff3736b8450bd42c282 docs/models/deploymentdetailresponsepreviousconfig.md: id: f69f69f15286 last_write_checksum: sha1:d6300e5a49569630a4728715b9cb7d2a62ffa800 @@ -4738,102 +4971,6 @@ trackedFiles: id: "429325394931" last_write_checksum: sha1:74e0b05fae2eab2c8640a069e7959d860d41aa80 pristine_git_object: 3de62c9201c62bae5c88da7282b5d82ce8f50f43 - docs/models/deploymentdetailresponseprofile.md: - id: e5dd409e53e7 - last_write_checksum: sha1:48a26515119d2abf56135c399dd6a6249e7283b9 - pristine_git_object: 8c37cb01efe537db22bb36e5af954af1af372af1 - docs/models/deploymentdetailresponseprofileaw.md: - id: ab6b650e8f07 - last_write_checksum: sha1:9d38e6617f57b24d9465db1f43fa775d7478f26e - pristine_git_object: 066acad94ee62399915647b05407a29d3fffc39e - docs/models/deploymentdetailresponseprofileawbinding.md: - id: e4ab0c200bb9 - last_write_checksum: sha1:0c355b180990f8c42e9c5db41a0826f30e12fe72 - pristine_git_object: c51fbe38e3a8a98aae56324208e10419ae8e57b7 - docs/models/deploymentdetailresponseprofileawgrant.md: - id: 1c5ef7af15d7 - last_write_checksum: sha1:4040bc1eb360b9cda7e79f2a6ec6936f539654cf - pristine_git_object: 3e45a26dd0860eba15202663333d73becf5a75a9 - docs/models/deploymentdetailresponseprofileawresource.md: - id: b042ceb27810 - last_write_checksum: sha1:0ba32d5ece244b0f3a620190558e34fee2089241 - pristine_git_object: cf04e1ff82af11392ee0b200bbf31ba403b58f0b - docs/models/deploymentdetailresponseprofileawstack.md: - id: 4564261882db - last_write_checksum: sha1:7db71e772db84a372073cc66e25b2458f2863b10 - pristine_git_object: ccaaa7b84490b744d11fce7510ae27c6449d7728 - docs/models/deploymentdetailresponseprofileazure.md: - id: 87865cd51db0 - last_write_checksum: sha1:150606fefa1d66ed706d35903ce659defaeef16e - pristine_git_object: 35c0493b602263a2c2f02d77482d6f1d813b9948 - docs/models/deploymentdetailresponseprofileazurebinding.md: - id: f42dfe31133e - last_write_checksum: sha1:bf263dd8b005f4b0e9e75364d9580489878b233d - pristine_git_object: 1b0b2d979df5677d6928dc773fab71de1a249efa - docs/models/deploymentdetailresponseprofileazuregrant.md: - id: 96f626723e8c - last_write_checksum: sha1:8ef213e3baf1d1c2b53ccf0fae062cfe7c4fb496 - pristine_git_object: 6352c4086855bb551144b687cc6a0009fc1fd07c - docs/models/deploymentdetailresponseprofileazureresource.md: - id: fae14c0bf128 - last_write_checksum: sha1:c0c183e74412ed843f326807216f36d291502184 - pristine_git_object: b11e6f90a4a98d596bd657291237922a959b2326 - docs/models/deploymentdetailresponseprofileazurestack.md: - id: bc4e4b15b802 - last_write_checksum: sha1:00f6f9128b3309f7312b00340680602160fd19be - pristine_git_object: e472bfc129b99bc2f62b0e0dead9b6cb41625375 - docs/models/deploymentdetailresponseprofileconditionresource.md: - id: 0e8005fc1d68 - last_write_checksum: sha1:9a381b974f8797a8f4a2f08ca0fbf0df2ac7feb7 - pristine_git_object: eb2c19d968f9e551a5dcbd9a98a6d7412d6bd703 - docs/models/deploymentdetailresponseprofileconditionstack.md: - id: 2eb913d8986a - last_write_checksum: sha1:8b6af234070930c7b3ee3c4083f9b71a4a0f094a - pristine_git_object: c73efb071305cee21d603f0ba437f0b1bf8f6b16 - docs/models/deploymentdetailresponseprofileeffect.md: - id: d77814ce595a - last_write_checksum: sha1:c88c8121b9654599e0b9cc6806e1c503819ba81d - pristine_git_object: d62e2054439ddce9c59201cd8d290e8cd306859f - docs/models/deploymentdetailresponseprofilegcp.md: - id: d91f432ebe8e - last_write_checksum: sha1:56109adf753524f5108497411dfb1aa533164478 - pristine_git_object: d3266af628706381d0657836fc70f2fbf05a3743 - docs/models/deploymentdetailresponseprofilegcpbinding.md: - id: bb7d1307ad83 - last_write_checksum: sha1:e04e12f61e7f2fc791c169e8e210b93d7641479a - pristine_git_object: 654cad612a766e191fe017a2b7c315068ef15f9b - docs/models/deploymentdetailresponseprofilegcpgrant.md: - id: 646bb01ea4e6 - last_write_checksum: sha1:3f83b68fc5ed8e52ad00da29de9a870f3154d5bf - pristine_git_object: 038fa473a8348b417b4b6ee04813db51848f2816 - docs/models/deploymentdetailresponseprofilegcpresource.md: - id: 6c241a05d8c8 - last_write_checksum: sha1:873dea4593fc069edb050cf2d0c8f0b347d9190b - pristine_git_object: c2a1a98289eb5c802c0714201ec43b51f1f11d1c - docs/models/deploymentdetailresponseprofilegcpstack.md: - id: 19ea359174b2 - last_write_checksum: sha1:f5fea67b0b4b536f6d0f7d83566dbbe16f7d18fa - pristine_git_object: 94f57e2f98f281940c9ba50f436419e55050852f - docs/models/deploymentdetailresponseprofileplatforms.md: - id: 225dbe0c1c95 - last_write_checksum: sha1:25e634e42765c7adc4720a1636fd8f65e2240917 - pristine_git_object: 770e063140e8be6087ef030f9c8c034527441561 - docs/models/deploymentdetailresponseprofileresourceconditionunion.md: - id: e187981a7821 - last_write_checksum: sha1:e06a0ee737abde891c76ff10162ba3f2d0cf341e - pristine_git_object: 1bf66e67c68f80e732be3a3dce56d5841f253c84 - docs/models/deploymentdetailresponseprofilestackconditionunion.md: - id: 74aef4924612 - last_write_checksum: sha1:ea3c79da78b936334e816e167e65cf9b473e8081 - pristine_git_object: 2c37ebe625e7ce7e582be67c9cf47918175df86e - docs/models/deploymentdetailresponseprofileunion.md: - id: 89c642ad18cc - last_write_checksum: sha1:3c546d4fb2d6d694655305bd75f61cae38e3932e - pristine_git_object: ca58c6f7699dd1868fc47a7bb0dab14bba4fea7c - docs/models/deploymentdetailresponseprovidedby.md: - id: b4a4498bbc3b - last_write_checksum: sha1:73c81444eb4edb2f5e221f294371b188e06a0eaa - pristine_git_object: 7c64aad2e8475025c67880b6fdfd746b13af4da5 docs/models/deploymentdetailresponseproviderawsalb1.md: id: dd250307a56b last_write_checksum: sha1:86e042ca23f1ab51fbeed85c0ff2b99c776ca749 @@ -4984,12 +5121,16 @@ trackedFiles: pristine_git_object: a55f7d0a49d51b89f2558f3be439bbc0667b47ed docs/models/deploymentdetailresponseruntimemetadata.md: id: 99c9d501c0f3 - last_write_checksum: sha1:6b13a8bd7a8778fcfc26812f955eb84106f5b569 + last_write_checksum: sha1:ea56f4a2103aaef1e657c05446516528be0dd029 pristine_git_object: 347272d4b0617a1aeb7a6c90f2928ba0c052d901 docs/models/deploymentdetailresponsesetupmethod.md: id: a90909a89d17 last_write_checksum: sha1:c74703e20e65675919264821235c021350413c42 pristine_git_object: ec70e745a87da01df69850bd0f9f53020ede715a + docs/models/deploymentdetailresponsesetupupdateauthorization.md: + last_write_checksum: sha1:f8ee6041e0df8484516b5fee4ba831bef8be8322 + docs/models/deploymentdetailresponsesetupupdateauthorizationunion.md: + last_write_checksum: sha1:40bda9d82d3ff20dc48453203bb984cf4c803646 docs/models/deploymentdetailresponsestacksettings.md: id: 422d0568beeb last_write_checksum: sha1:6edb7a84c86e9686b29436df854299bb75fbda21 @@ -5022,10 +5163,6 @@ trackedFiles: id: 91903655c7ae last_write_checksum: sha1:c20d9f59ae7a340fc31f2bbc6401649f023b4343 pristine_git_object: 447b5e29eb2c75e2909e2e8ef8002e5a95933b22 - docs/models/deploymentdetailresponsesupportedplatform.md: - id: 21cffbfc08d6 - last_write_checksum: sha1:a712ca6d8a7ebd81a48e03caa23baa14f7876eb8 - pristine_git_object: 2fe773d2dec95899d89dec47943e36e059cc730c docs/models/deploymentdetailresponsetargetenvironmentvariables.md: id: 9dadea580a7b last_write_checksum: sha1:efc790cb92e71bd32b58d14baeb7c7a72c2a7d80 @@ -5038,10 +5175,6 @@ trackedFiles: id: 5fc74e4f4bf8 last_write_checksum: sha1:6758d6a073b3bb61fd83b58c2355c8a0ee346fac pristine_git_object: 35b3358a450f4f55db41bc913ff77a49aacfaff2 - docs/models/deploymentdetailresponsetypeboolean.md: - id: 2e0d5e3c42d2 - last_write_checksum: sha1:1e17a7c159acf40ee5f37126e90900839717c515 - pristine_git_object: 46ac28ffe4941028a3a1e48a76a05a21fb938c3d docs/models/deploymentdetailresponsetypebyovnetazure.md: id: 6f11adc68a0b last_write_checksum: sha1:7cf79ba5475c183eb87d1315506aa6e401f6f64a @@ -5058,26 +5191,6 @@ trackedFiles: id: 2e1a559f7278 last_write_checksum: sha1:2d2cdacd8b3e45f62ea4bf44ac5ccee6897bd636 pristine_git_object: 0a85a08aaefd1d7a7d1251dcba1fe73b0497c9fc - docs/models/deploymentdetailresponsetypeenvenum.md: - id: f412c6b61edc - last_write_checksum: sha1:a7ad3c1085b158453fbc4a726004b91e6f6f63e6 - pristine_git_object: 53138fbd969d6065963d7f37cb1a0b3fae53c90d - docs/models/deploymentdetailresponsetypenumber.md: - id: 572ff40fbe2f - last_write_checksum: sha1:8ad799536dc703c60377648e5ed566fdb993e025 - pristine_git_object: 0d5ae771f1160cb1a30a1287abae7f6890565797 - docs/models/deploymentdetailresponsetypestring.md: - id: c79e7339d63d - last_write_checksum: sha1:c31c89e5bf715c31c246d4033a21aa0fee58b087 - pristine_git_object: 4524a579acba8c98312359986dac65ebf3f2c918 - docs/models/deploymentdetailresponsetypestringlist.md: - id: 29f200cd5798 - last_write_checksum: sha1:999924704d31816f9f6c1e1d23da2da9d07e365d - pristine_git_object: 76ddbc00f77ab7b999174be35e2e2fb03a146a56 - docs/models/deploymentdetailresponsetypeunion.md: - id: b0f6d137b329 - last_write_checksum: sha1:387772255a0821ed26763d81589a0312e89119a9 - pristine_git_object: c14562901e7075e8ef11af25f32b2f6aab35962a docs/models/deploymentdetailresponsetypeusedefault.md: id: b0467ca20a5a last_write_checksum: sha1:e748ed426894bb169ea320402d1e5378958fcc77 @@ -5086,14 +5199,8 @@ trackedFiles: id: 54a867c88294 last_write_checksum: sha1:7539ce7935405fddcbf68a32418bd1384e5e9d02 pristine_git_object: a84ec2040058e4e6b6d83b37bf670b41a04c0f9d - docs/models/deploymentdetailresponsevalidation.md: - id: e75c53ccea4f - last_write_checksum: sha1:a3923d64a36da5dc2cf7d8282db0bce89cfbc3b4 - pristine_git_object: 8c8c0dbb198866f575a71b6a8695fd5a49ea366d - docs/models/deploymentdetailresponsevalidationunion.md: - id: 3aac83a07b23 - last_write_checksum: sha1:8d6019d842ae0a9aaa6902533077db02e3a43895 - pristine_git_object: 2c875f9416bfe14733bee2252c59eb7b46847a82 + docs/models/deploymentdetailresponseupdatestate.md: + last_write_checksum: sha1:ccd3c1281a6f8009d5d3edb50adcff9d77dee939 docs/models/deploymentdomains.md: id: 63c2670028c7 last_write_checksum: sha1:f882e0eb77139ec38a7715f14ea852c268eea518 @@ -5114,10 +5221,6 @@ trackedFiles: id: 980d093742d6 last_write_checksum: sha1:07655d3e1803c4e40f6f9e08338329fdf8045f5c pristine_git_object: b438fdccbe1953f9e70b85beac44b73ea6f977e8 - docs/models/deploymentenv.md: - id: e0d7bf442b5a - last_write_checksum: sha1:562bb0f6e32cd2fc68d1a406b47801c371a0903d - pristine_git_object: f1c85e427185d8423f38fcecdb31ec9c201fef9d docs/models/deploymentenvironmentinfoaws.md: id: c4a19924beac last_write_checksum: sha1:4e828a535bb2b41f0a34352fcbc2db509224565c @@ -5170,102 +5273,18 @@ trackedFiles: id: 05b0600a7c0b last_write_checksum: sha1:e00e885f8cf252e379a9a5663479bb1892f42658 pristine_git_object: 3f68f258f3c1f866c5cb8c297173ab63d39e5287 - docs/models/deploymentextend.md: - id: 7c245adf2775 - last_write_checksum: sha1:7763c5ad1d49423796eb35995824728e8b047de0 - pristine_git_object: f9014b6d2baa1dcc25a758dbe38cf04355a616f2 - docs/models/deploymentextendaw.md: - id: 51b8f9961f1d - last_write_checksum: sha1:5e8aba8bf5c712b372ad58e4e1dc0f5d8e9d1442 - pristine_git_object: 7b9300f5e3fcaa35e3db6c8ef1fae8db9885e077 - docs/models/deploymentextendawbinding.md: - id: b97b9236c36e - last_write_checksum: sha1:249db585c81b9e591dfc6ed1a648e59107babebc - pristine_git_object: 38b60b6636d00e6eb0d704694c885a7737ffb242 - docs/models/deploymentextendawgrant.md: - id: 43e746d8098c - last_write_checksum: sha1:d4943e7a2d5fc66bc8a0aa048264af29e2702152 - pristine_git_object: 25175ec5ae9fba4b02a0823f543009b9a73ec236 - docs/models/deploymentextendawresource.md: - id: 6416d06a9b71 - last_write_checksum: sha1:33c497f4c309f14dac7920ac8cadda017be3f304 - pristine_git_object: 5648a927faf55dc8339c170ae9404fa09f80814d - docs/models/deploymentextendawstack.md: - id: 28da8109d9d6 - last_write_checksum: sha1:89613d2e88f25b0aa40193e79c451453bdfde379 - pristine_git_object: 7e368cbd7aac75d966301142cdcf0546d6bfcc6b - docs/models/deploymentextendazure.md: - id: 901cc35c350a - last_write_checksum: sha1:863758fdab67cc55751cf7e8a4215663bbff8183 - pristine_git_object: 876ffc5575e7309c9798daa1980e3348c7470fea - docs/models/deploymentextendazurebinding.md: - id: 73fa7cae9923 - last_write_checksum: sha1:38b5de6a72da326833a3f2de99e0213aedc767b6 - pristine_git_object: e28f5419c00327f232ea55004b9dd5ea4e6917f2 - docs/models/deploymentextendazuregrant.md: - id: 5463e5af1c75 - last_write_checksum: sha1:051e7575055fbce0464544775b666bdb9d1b2646 - pristine_git_object: db53152bc732e83e6f542baaea885841db52a89a - docs/models/deploymentextendazureresource.md: - id: 12e7a50dc241 - last_write_checksum: sha1:7d9916cc33f5a04e7a58c8e42ade52c597b5b264 - pristine_git_object: 15ea38b688eebf835f938f7f71e0bc7ebe1da424 - docs/models/deploymentextendazurestack.md: - id: 57b789896de8 - last_write_checksum: sha1:66e1d2dc350f3aa90097042d4cc873b433f80ef5 - pristine_git_object: 3e9f66f01d54dcbbef2ca71927c589d55d9954ab - docs/models/deploymentextendconditionresource.md: - id: "753689327360" - last_write_checksum: sha1:cc298320f61cb1b70d61a9e3c4b6409468a4062e - pristine_git_object: 9872c5706067663cadd3a3b39e25da762ebf61f4 - docs/models/deploymentextendconditionstack.md: - id: 006051df5d24 - last_write_checksum: sha1:f7a27dc4181856962a11cc4f7485ab96a81f9463 - pristine_git_object: 1c796cef728e3e5681f178ee0a022b6c092e1555 - docs/models/deploymentextendeffect.md: - id: 57e7d8e12cf9 - last_write_checksum: sha1:a576f44794d31e8dd1f89c48d7eaec32a26da400 - pristine_git_object: 8e1264c9d0e2fa12374292bdea41549febdbb988 - docs/models/deploymentextendgcp.md: - id: 222c98ffefc2 - last_write_checksum: sha1:a9f062353b42cf859cf4b8616b4a50b2e4b71737 - pristine_git_object: d00b92983653403351be59577b8b0edc35e7b10f - docs/models/deploymentextendgcpbinding.md: - id: 0f6a096d8dd6 - last_write_checksum: sha1:ba066aa355b7e6944298654fb5771b42b900c26d - pristine_git_object: f4d4bdc9296e35e8ebd27792ca8328b4045685ee - docs/models/deploymentextendgcpgrant.md: - id: 964e950633c2 - last_write_checksum: sha1:a57e24f0e18a63d122a1644438a6d3137cc17950 - pristine_git_object: 4db5da902f1b3894edc570e181821eb15e642782 - docs/models/deploymentextendgcpresource.md: - id: 5c70ba1f3865 - last_write_checksum: sha1:ea74b57b86a28002fda983ca5dac554b23db35b7 - pristine_git_object: 0fd3a8bf87fbdae893ae4383b74e14488df8e85b - docs/models/deploymentextendgcpstack.md: - id: e4315264bd63 - last_write_checksum: sha1:7097bb30b982be2072f1f79db154e288fc742ff0 - pristine_git_object: 00d11ec22f28eb5a7626fa0a5df6030eba3e1f38 - docs/models/deploymentextendplatforms.md: - id: abbf957b90cf - last_write_checksum: sha1:70f6b0235d4209c0e3cedccdd68ae0051cccdfa1 - pristine_git_object: 8aac8606bf570b782cd6a9d480fac72177a9df39 - docs/models/deploymentextendresourceconditionunion.md: - id: 2f582984ac2c - last_write_checksum: sha1:9e26716d0abb4aebf7f2da14194f8222d828117a - pristine_git_object: 61e6d0a0463529d03da5b6d6d7002d17ca6e35a7 - docs/models/deploymentextendstackconditionunion.md: - id: 89b77df73437 - last_write_checksum: sha1:b4edd2959137aa0a69b869d7ececf598113fc909 - pristine_git_object: 6d62bbceb3c7a2ea4e2e268179b600b6fec0b56d - docs/models/deploymentextendunion.md: - id: bb85ab8a0ccc - last_write_checksum: sha1:c750917d15e01ce52fc79ae07a8ec9d7287b0a80 - pristine_git_object: 6cfe6e132bb4d2a4803ff035da3b76f02982262d docs/models/deploymentexternalbindings.md: id: 1c9d6ad23641 last_write_checksum: sha1:172f3fd7bfe9c8117f875a502fe06cc6dd51fd80 pristine_git_object: 13a0a3eed55c6ac1697f627b0892d4ff385647ca + docs/models/deploymentfailuredomains1.md: + last_write_checksum: sha1:115f51a465ddf5523f28b6781affd065b44c86f6 + docs/models/deploymentfailuredomains2.md: + last_write_checksum: sha1:0077ac8a3ccad10858e158fee4a9f2d94bc32924 + docs/models/deploymentfailuredomainsunion1.md: + last_write_checksum: sha1:c5fa1def22f5c41ee617965952016dc591f4d137 + docs/models/deploymentfailuredomainsunion2.md: + last_write_checksum: sha1:6b250c8b21757453da7e7370be23d6b2a75b7175 docs/models/deploymentgcpstacksettings.md: id: 72b66396ab2c last_write_checksum: sha1:af725aec5971563a7db1bf2698616dbb3fc5c050 @@ -5276,11 +5295,11 @@ trackedFiles: pristine_git_object: 6c2b6303845ecac2f08a2882be32e4364456a0ef docs/models/deploymentgroup.md: id: c4f51b1b8497 - last_write_checksum: sha1:7e9a4c1edaf08a9336e9d15f3b9b03c0ebc277e6 + last_write_checksum: sha1:3645c49563e000b276948f6a7120f62a1e705412 pristine_git_object: 85953a802acadca3de15e6da59031e9e1dd22d76 docs/models/deploymentgroupinfo.md: id: 3ef9481f298d - last_write_checksum: sha1:b720ecc88b420bf44f0650f2837300459f72d6fd + last_write_checksum: sha1:7bdce1fbddbf765f9583b6fd3ad3cf6ea1b6607f pristine_git_object: 31f5d00be7c67dc0ebe71190559abe81c5e0777b docs/models/deploymentgrouprole.md: id: ef063eae8a87 @@ -5300,12 +5319,18 @@ trackedFiles: pristine_git_object: 7163f5ae177f62abe47807b3538be2828fa4d99b docs/models/deploymentinfo.md: id: 2437b9c7c1ab - last_write_checksum: sha1:1650ec2d4887b744dec67708f549b0fcdbb68327 + last_write_checksum: sha1:4eb0c60498d4a8b687d474d2a75e0c28783aa8c1 pristine_git_object: 95344123680fd34164938feac4cd0dca7515af87 + docs/models/deploymentinfoaccesstest.md: + last_write_checksum: sha1:fb5c817de1fa2a3ef56dd86e2fd52293b535444e + docs/models/deploymentinfoavailability.md: + last_write_checksum: sha1:472d9d7d5e2fbe8bf62f82321c1db20613d2e38e docs/models/deploymentinfobinaries.md: id: 61ad942bd829 last_write_checksum: sha1:9bc376dc644e532dbcfa0fbfdf5236ca7eef0bbf pristine_git_object: 21061cceaaf8269a5f82d491b80fe2f9f9466003 + docs/models/deploymentinfoblocker.md: + last_write_checksum: sha1:a99205b3580ce91335861ecb5100ae7099247150 docs/models/deploymentinfobuildinfo.md: id: b3b949155a10 last_write_checksum: sha1:38821b8c9d62be50337bdba9749e83eac2b5625a @@ -5314,6 +5339,8 @@ trackedFiles: id: 00c054792aca last_write_checksum: sha1:1c9705db3840c0ef384b15ad73b9ca2d2f7d81bb pristine_git_object: ea31e9da331ce627f5423389c793fc18fafd5856 + docs/models/deploymentinfoclientapi.md: + last_write_checksum: sha1:18253e5b3fd52ecd90b26231868231a2597bdcea docs/models/deploymentinfocloudformation.md: id: a5e62cab7297 last_write_checksum: sha1:965dc066772524a8a8efc15bdda7527005bba2fb @@ -5366,6 +5393,10 @@ trackedFiles: id: efcca7af414a last_write_checksum: sha1:1d33f9a40a6d4da0bbb9625430c72d91135ca0ca pristine_git_object: 84784218b8f19b89de3458cc306431ba516a1cc1 + docs/models/deploymentinfomodel.md: + last_write_checksum: sha1:18bc12f8d97f01c40013f06536f5252b38c26cc7 + docs/models/deploymentinfomodelavailability.md: + last_write_checksum: sha1:33b4a862d5ad9404bdc17d3bb79a0353d0bdaa5d docs/models/deploymentinfomodules.md: id: c632c11203ae last_write_checksum: sha1:71365d0996c4752240d4d2cbb1ffecc1e7d5907c @@ -5384,8 +5415,14 @@ trackedFiles: pristine_git_object: 21f73a916e8e48e727ffffd0f946cf827b59a50f docs/models/deploymentinfosetupconfig.md: id: 370e54adcc80 - last_write_checksum: sha1:437d56966c5a65a30836e821fd9a72285adf5a0a + last_write_checksum: sha1:8be64c9ac46118c5363c6d2c96359e9ebf4c813d pristine_git_object: f871422032f1e8615d079128016b05319a3313a9 + docs/models/deploymentinfosetupconfigallowedprovider.md: + last_write_checksum: sha1:01c658d490f3da677539bb4083d12b4c57b973af + docs/models/deploymentinfosetupconfigclientapi.md: + last_write_checksum: sha1:e64784e9226fdb9ce956a26ed3460f2839ba6a13 + docs/models/deploymentinfosetupconfigconfiguration.md: + last_write_checksum: sha1:ad61d74455aeaef9b809b0e2e6c943fedfdfb769 docs/models/deploymentinfosetupconfigdefaultboolean.md: id: 38e24f35f91c last_write_checksum: sha1:977f56187d889cd1b0b3b3ce5e5743d38a718950 @@ -5406,6 +5443,8 @@ trackedFiles: id: 094212ad62d8 last_write_checksum: sha1:d2c5b64a16cc14628238b7fe52a78d8c63f9a464 pristine_git_object: 7cae4404f89715a8bb25b2e1bd48bcf421c7175e + docs/models/deploymentinfosetupconfigdefinitionid.md: + last_write_checksum: sha1:c047ad0bf056744e1b1f4b416a779a5da5ad0fb9 docs/models/deploymentinfosetupconfigenv.md: id: a811d84a1de3 last_write_checksum: sha1:51c1e64139549862d07aba4a31ffc0499cfdef32 @@ -5418,10 +5457,16 @@ trackedFiles: id: 81b23a7b5eee last_write_checksum: sha1:27e7f7ac0f3254e83ca8d865278c26761c87d991 pristine_git_object: ac6b3207bc5dfbe029f11cda2d2415cff48b1a72 + docs/models/deploymentinfosetupconfigitem.md: + last_write_checksum: sha1:f2088f02d7cc268548ba9142ce0ba5f77e00d7b3 + docs/models/deploymentinfosetupconfigitemenum.md: + last_write_checksum: sha1:6602ad487791a0017921ebfa47b77373e4216431 docs/models/deploymentinfosetupconfigkind.md: id: bdff1f84fa66 last_write_checksum: sha1:3f05cf6501f5b31db3fec190d8d0a41b0f8fdc44 pristine_git_object: 72efb2c3a7aa55bdf662ecf7fe2a75265f0988d3 + docs/models/deploymentinfosetupconfigmodelrequirement.md: + last_write_checksum: sha1:a94cf03d6cba0db200378e9f0b430d866093f665 docs/models/deploymentinfosetupconfigplatform.md: id: c5bba8e89eed last_write_checksum: sha1:2d5ec30db735a9f47eeecdbc66a7aa02a2abdf66 @@ -5430,6 +5475,12 @@ trackedFiles: id: 33c60aea9d2b last_write_checksum: sha1:1aac8ecdd9e35fb7fed2110b46d1d46fac05bdb4 pristine_git_object: c3c5cee0e6b6563b3d6ecf3a01835dfe2e4ce108 + docs/models/deploymentinfosetupconfigsourcebuiltin.md: + last_write_checksum: sha1:804b26e2ddc81a1e9a2d7c36e014c3de77e13bbb + docs/models/deploymentinfosetupconfigsourceprojectrelease.md: + last_write_checksum: sha1:c84d886f579e42714fad252a0236989f39cff358 + docs/models/deploymentinfosetupconfigsourceunion.md: + last_write_checksum: sha1:2aca24a260073245616b8e3d9dd782028920d538 docs/models/deploymentinfosetupconfigtypeboolean.md: id: 6190c430ad51 last_write_checksum: sha1:03c899cd4f024878018f5220d6df9823afc631aa @@ -5462,6 +5513,8 @@ trackedFiles: id: 62596916c3d1 last_write_checksum: sha1:13003a6ee575dc2354780392512c4576c79bcf52 pristine_git_object: 42c6f630922a209956491b1507a6abd7084cd254 + docs/models/deploymentinfosource.md: + last_write_checksum: sha1:7cddc912d120174befb70627ba891eea9d4c4e42 docs/models/deploymentinfoterraform.md: id: 1162f3e4c9ab last_write_checksum: sha1:a1ee552f91ca0e1e5ca3f834ef7a52da312704c0 @@ -5474,10 +5527,8 @@ trackedFiles: id: 26f32ced3fb0 last_write_checksum: sha1:06385c85e232595f57eb5f9b5df6de676bbc9798 pristine_git_object: f07bea1452287201f77aee9961bab4aaee12db3d - docs/models/deploymentinput.md: - id: bb3a00f035d5 - last_write_checksum: sha1:f16dd7034e6ac35c2944afdfd0df01003677ec0a - pristine_git_object: f7bb6e136e78c89268285138ebfc86948b0d46a3 + docs/models/deploymentinitialsetupauthority.md: + last_write_checksum: sha1:fb89faca9bf8ff937966c12d9565754c6ae30168 docs/models/deploymentinputsresponse.md: id: 78b427121785 last_write_checksum: sha1:91e52094054a9c348d018474e07cdb444c575df6 @@ -5554,10 +5605,6 @@ trackedFiles: id: ec24470e1cc4 last_write_checksum: sha1:0982595396dcce66dba2cad85d68171636e5c4ed pristine_git_object: 599665b560a2786c5a2779849c82e43573ecf481 - docs/models/deploymentkind.md: - id: 27343b972b36 - last_write_checksum: sha1:4af7e6cd8bad282e27c85253ad0b4ef5ce5949eb - pristine_git_object: 8f015661a58d38eea92df1a6c83e1cedb22c68e2 docs/models/deploymentkubernetes.md: id: 60cf1a6ad569 last_write_checksum: sha1:a3f0b3ee70f45173b7f2e2e8f1b93b6a7e773f66 @@ -5576,11 +5623,17 @@ trackedFiles: pristine_git_object: 71e03ffad01a0476b62dc946106a938b1e2efb00 docs/models/deploymentlinksetupresponse.md: id: 1421b4def84f - last_write_checksum: sha1:ae67ae16baab8f2b121b5282942afdbb35860aeb + last_write_checksum: sha1:0764dc91d020d3955c8cf70c3982692dd4bbb80e pristine_git_object: 1beae0860466ff51345094ba9113c8836aa31214 + docs/models/deploymentlinksetupresponsesetupitem.md: + last_write_checksum: sha1:15d527f151c53f299df454c7c803a16f5c143bb7 + docs/models/deploymentlinksetupresponsestack.md: + last_write_checksum: sha1:58d888ff45fc0f9b2f9bc35a99c50fd9bf398faa + docs/models/deploymentlinksetupresponsesupportedplatform.md: + last_write_checksum: sha1:bf4edb1d5e1c435a1d40e9f403fa0c8906fe90ec docs/models/deploymentlistitemresponse.md: id: d8baf621fe6e - last_write_checksum: sha1:c3956d62aaeac1fa7bf05447674abafb6d99083f + last_write_checksum: sha1:3d16498cc431b159e2f5a38cac3043bfe6af5770 pristine_git_object: 27b34315d5486530bfcbd3460776ffddf923d243 docs/models/deploymentlistitemresponseenvironmentinfoaws.md: id: 5916867664ec @@ -5646,22 +5699,6 @@ trackedFiles: id: 794e171667be last_write_checksum: sha1:811832bd6e64fa56014b085accafba59ba14d372 pristine_git_object: 5d72b72794c1c4a7b0df763600618a6d93016c7a - docs/models/deploymentmanagement1.md: - id: 3e2980f652e2 - last_write_checksum: sha1:f68ceae958715acf50b0a11ce498021922dc0faa - pristine_git_object: 4982ac804877fbcf6dfd0731cf0ffdddd70b9031 - docs/models/deploymentmanagement2.md: - id: 4cab8fd1ed91 - last_write_checksum: sha1:3f5dabaca4c05866c04dd453e407aba6d3e9267f - pristine_git_object: e576c40e5a6ce9bc34a95cb8a96a0b3795b93aa8 - docs/models/deploymentmanagementenum.md: - id: 409f44f8c0b8 - last_write_checksum: sha1:f1ba1df5a2cf22200e8b27fa29c70fb79a432ac5 - pristine_git_object: 66d8610aed45cd9cc136a0bdd49fce53f924c232 - docs/models/deploymentmanagementunion.md: - id: 78f7339f69a7 - last_write_checksum: sha1:035dcee5512b425bb5f7e957735dc312aa60e5b8 - pristine_git_object: 5d208e6c22d287e90a8f160d319a86fdb1ba2050 docs/models/deploymentmodecustom.md: id: 298985923d84 last_write_checksum: sha1:e996cd05d4e84a1f35c174deb252dc48062076eb @@ -5714,106 +5751,208 @@ trackedFiles: id: d4ae7af6e6df last_write_checksum: sha1:0db779fd495ef3c0dfc3b1b8dd379a0dd90a54a5 pristine_git_object: a9b2acae458271f209b3f884756ef4d413f695a3 - docs/models/deploymentoverride.md: - id: 9356ff497c9d - last_write_checksum: sha1:2fb83978665b4cdef0a0383c71c54c24af4fe5c9 - pristine_git_object: e6b372d44f870c22c31b81d49f08dad031a5c18e - docs/models/deploymentoverrideaw.md: - id: c73167ed9ea6 - last_write_checksum: sha1:c43ba67de804f7d5d00a6265f762230c62d0b74f - pristine_git_object: 4d2e2153ade099f973316195b0a1df49f9dc5c83 - docs/models/deploymentoverrideawbinding.md: - id: 9447aa240138 - last_write_checksum: sha1:5d435b9fc8e8dcb33c71f31366db515071cd4ce7 - pristine_git_object: 0d3e9d40662bc06a45cf0df3478172a6865de854 - docs/models/deploymentoverrideawgrant.md: - id: 05d2d07fe911 - last_write_checksum: sha1:8ad1357ae77932118fef8d843e354f8e19d8dc28 - pristine_git_object: 8246edd30b70467191a5ddaf8f73e90fa2b6c3a4 - docs/models/deploymentoverrideawresource.md: - id: 915da3c8692e - last_write_checksum: sha1:7eab926cde4a4b3e5170e442269dd095cf1635b3 - pristine_git_object: d55b19deda4b22676f28ea52daa22a91b6f2d19c - docs/models/deploymentoverrideawstack.md: - id: a9dde2f7cf54 - last_write_checksum: sha1:4ab57a79a0b66c38a67c74a6436704144c19bb19 - pristine_git_object: 0ced95dcd4ec44493330fce8b63eec9f567e7692 - docs/models/deploymentoverrideazure.md: - id: a27e70d38938 - last_write_checksum: sha1:91d792c2a3f5e5cae382f72ddd08de90d28cef12 - pristine_git_object: aa43ffedfa3c7949e6ae551fb57daf12cc6ec7f8 - docs/models/deploymentoverrideazurebinding.md: - id: 52910d952959 - last_write_checksum: sha1:f99fd1db8c5e53edcb92e5da305f8d129c5584e5 - pristine_git_object: 2be51019d4a80fbd01e358d635016abb4af9ff2c - docs/models/deploymentoverrideazuregrant.md: - id: 50744bfe6597 - last_write_checksum: sha1:719dedcc4b3ace12289c7ca2f1780b42ce6738da - pristine_git_object: 9935256825cd2109726fe4f4f8b08c95a9f9e275 - docs/models/deploymentoverrideazureresource.md: - id: a8ab252d99df - last_write_checksum: sha1:ad32f446718828a21e455dbd201c2b0a977490ec - pristine_git_object: 13355c19c0940680fe7f9231cee900f220be0711 - docs/models/deploymentoverrideazurestack.md: - id: 237c376b6421 - last_write_checksum: sha1:ebf7a20c1449e402b476bbe9703933027bee7622 - pristine_git_object: 229de554b2cc1eba7cfb0c0a846f58b891628bd2 - docs/models/deploymentoverrideconditionresource.md: - id: 7802e3f556ba - last_write_checksum: sha1:96fc2db553cbb9725cd1ddb5ba72ca02e81788fb - pristine_git_object: cc755e3385ba8c651877540df45a5f14e6b52419 - docs/models/deploymentoverrideconditionstack.md: - id: 966537e4d4ed - last_write_checksum: sha1:b766ca33f6f9073f962d484989fa31039f2f3173 - pristine_git_object: 0c15c4ee739a62c3e0a82b1885ea0bff967c012f - docs/models/deploymentoverrideeffect.md: - id: 2dd070c0e163 - last_write_checksum: sha1:96e36d62d3c51167a7a1d63294087a6205c84eaf - pristine_git_object: a73e20edd1443a6666963010151614ff110e866e - docs/models/deploymentoverridegcp.md: - id: 44f31f89ec60 - last_write_checksum: sha1:9da45b5c7d920dcc638a32558519c178659440a4 - pristine_git_object: 29b3d394920b864329f8df789045610c648f266b - docs/models/deploymentoverridegcpbinding.md: - id: 195ab8fe096d - last_write_checksum: sha1:16cad8e25037d45aef35d1e99778759b6d8d5275 - pristine_git_object: 1753dd590cbd25b3fa35354debba5c0aa7d44d3c - docs/models/deploymentoverridegcpgrant.md: - id: fb4b64b67fba - last_write_checksum: sha1:d81dd87459421f4c0a39e290f8555bcf902d36e2 - pristine_git_object: 24b44010110e3877c93f43c0e9ee008b90c70cd8 - docs/models/deploymentoverridegcpresource.md: - id: 4d0f3899ba9d - last_write_checksum: sha1:82c7791635c0ad2593a658c5cd805758e4e851c6 - pristine_git_object: 130490517293981a2894e2c741ad4600c602e706 - docs/models/deploymentoverridegcpstack.md: - id: 17f91dd499fe - last_write_checksum: sha1:7cf91fb7d8e8cb2d87b48109795946292d265a45 - pristine_git_object: 68e988182bb0e1eb92ab8432d34bb569aa80ab46 - docs/models/deploymentoverrideplatforms.md: - id: ab8fdf944626 - last_write_checksum: sha1:2f9f9cbb6219acd4f0cd61d556a77b6ec9d9f695 - pristine_git_object: 255b50186d83f0db7940c563f460b7fc185d3eed - docs/models/deploymentoverrideresourceconditionunion.md: - id: 6669c82fa2fd - last_write_checksum: sha1:634297301268c6a50f910227b45825ce1a617305 - pristine_git_object: 0b79f4d2651d243e9f5c218de516eebfdf3a5129 - docs/models/deploymentoverridestackconditionunion.md: - id: 9440985f38df - last_write_checksum: sha1:1d81804141aea91679ed0b8f637fa319d1eaf62b - pristine_git_object: ece774ad733f7c4cce94b2142cc3bf3dfb89b6af - docs/models/deploymentoverrideunion.md: - id: 983e4d674fa8 - last_write_checksum: sha1:ec90ae6fedc92374c7d642f4ec34a3d50786fb07 - pristine_git_object: b640d8a0af290383c6475ea8b155ee79e0c7603c docs/models/deploymentownership.md: id: 8b306a671106 last_write_checksum: sha1:075acefff25957d497a4bbe55572f2565d2b3f68 pristine_git_object: 62464392b14bedd8df522a2b3f60309adbec448f - docs/models/deploymentpermissions.md: - id: 97756d6e5e03 - last_write_checksum: sha1:99cdd53c445bd8cbee9bca2f99ca3bd9776151c6 - pristine_git_object: 1ac3bfd8841fdea0dac439d83adf451b8b5a6026 + docs/models/deploymentpendingpreparedstack.md: + last_write_checksum: sha1:031e1c5741c5483d34b6abb4a6efcf4133b97716 + docs/models/deploymentpendingpreparedstackconfig.md: + last_write_checksum: sha1:69779eec1bb8330c90b65177b5a5c929511dafca + docs/models/deploymentpendingpreparedstackdefaultboolean.md: + last_write_checksum: sha1:f7a4c42ebd7992bb2d074748871640536331508d + docs/models/deploymentpendingpreparedstackdefaultnumber.md: + last_write_checksum: sha1:eefe9f9d8a737c4d1e03165f7633c8a40cfdbbb5 + docs/models/deploymentpendingpreparedstackdefaultstring.md: + last_write_checksum: sha1:1eb1089a0e93b2c2523c10c96b6f04724afde18f + docs/models/deploymentpendingpreparedstackdefaultstringlist.md: + last_write_checksum: sha1:cef235bc68e1c2e5b44cb7b34604c9d51a20cdb8 + docs/models/deploymentpendingpreparedstackdefaultunion.md: + last_write_checksum: sha1:d159ffe5a799fecd7770c3bc9d9cf042bb9653c2 + docs/models/deploymentpendingpreparedstackdependency.md: + last_write_checksum: sha1:9be5bc2057f224353cd2c088a8dbcbb367587d8f + docs/models/deploymentpendingpreparedstackenv.md: + last_write_checksum: sha1:8703c84191f2fe8b3b217eb2508df53d009f0b4c + docs/models/deploymentpendingpreparedstackextend.md: + last_write_checksum: sha1:8f04ed2dfba87714c22eeef43b400275b8002511 + docs/models/deploymentpendingpreparedstackextendaw.md: + last_write_checksum: sha1:a3960e7144ddf192f5831c7e6afb1eeb4a6ec849 + docs/models/deploymentpendingpreparedstackextendawbinding.md: + last_write_checksum: sha1:7954e38f1de2d65bd3b077505094b04db44f818c + docs/models/deploymentpendingpreparedstackextendawgrant.md: + last_write_checksum: sha1:ab3d9dd654540650026fcf559641b2400dbfa5d8 + docs/models/deploymentpendingpreparedstackextendawresource.md: + last_write_checksum: sha1:b96c7bf9e631572e880e637f543c7476310fb48a + docs/models/deploymentpendingpreparedstackextendawstack.md: + last_write_checksum: sha1:64e078c8c1161abb9a3750f61737dfbd53b1ff00 + docs/models/deploymentpendingpreparedstackextendazure.md: + last_write_checksum: sha1:eb8e660fe5fdf7b1372f7e1ab821d0cd407c6f4b + docs/models/deploymentpendingpreparedstackextendazurebinding.md: + last_write_checksum: sha1:50df3f94e43a7f569f342eab037e446d8f27d10c + docs/models/deploymentpendingpreparedstackextendazuregrant.md: + last_write_checksum: sha1:288409d367b6880d0392e6691386bdea83975c00 + docs/models/deploymentpendingpreparedstackextendazureresource.md: + last_write_checksum: sha1:fc65ef445d9984ddcb4e90cc5ae090891293dd96 + docs/models/deploymentpendingpreparedstackextendazurestack.md: + last_write_checksum: sha1:c9f5af6bde7436241d47793a77b72e8b65b7e5c9 + docs/models/deploymentpendingpreparedstackextendconditionresource.md: + last_write_checksum: sha1:2af5ac39b0c5588b971ef436e3873333ac8469b2 + docs/models/deploymentpendingpreparedstackextendconditionstack.md: + last_write_checksum: sha1:894665ac10995d762ab1fcf21895f51b2e3d7121 + docs/models/deploymentpendingpreparedstackextendeffect.md: + last_write_checksum: sha1:5d7a14690f20bc96f5467e39202bf59322455b47 + docs/models/deploymentpendingpreparedstackextendgcp.md: + last_write_checksum: sha1:79a7b51328e549d094846aacf93da99718a5c815 + docs/models/deploymentpendingpreparedstackextendgcpbinding.md: + last_write_checksum: sha1:35140f019f953b9daf5e88fbee27ecca2e2e49db + docs/models/deploymentpendingpreparedstackextendgcpgrant.md: + last_write_checksum: sha1:efc2afdf48bd16b4556dde861c333dd833f4c86e + docs/models/deploymentpendingpreparedstackextendgcpresource.md: + last_write_checksum: sha1:adf6ccee1f5cc8c72e9fe45e4834754b35cdb837 + docs/models/deploymentpendingpreparedstackextendgcpstack.md: + last_write_checksum: sha1:ccda2bd034dc32d8fbb651c93daa7a04cd9c446f + docs/models/deploymentpendingpreparedstackextendplatforms.md: + last_write_checksum: sha1:8ac2406b05c29abd700be9e6b3ce28196a9a9341 + docs/models/deploymentpendingpreparedstackextendresourceconditionunion.md: + last_write_checksum: sha1:e6565cb5fd26ff8e4cc33e601296cc126a7246f8 + docs/models/deploymentpendingpreparedstackextendstackconditionunion.md: + last_write_checksum: sha1:14a29b6bfff13aa97dd9b2baeb8ccfa838e579ac + docs/models/deploymentpendingpreparedstackextendunion.md: + last_write_checksum: sha1:8003791f3acac2e39a8a4c39acf4266495ff6032 + docs/models/deploymentpendingpreparedstackinput.md: + last_write_checksum: sha1:52a978f23aa0b728401d78efd41b723f6a3daa55 + docs/models/deploymentpendingpreparedstackkind.md: + last_write_checksum: sha1:ab06677391212b9ac92853653e7afdbf7f65bf74 + docs/models/deploymentpendingpreparedstacklifecycle.md: + last_write_checksum: sha1:311d880c07c52ec6b86d1faaa1d4d601bee058a0 + docs/models/deploymentpendingpreparedstackmanagement1.md: + last_write_checksum: sha1:eb6a5b2d8e1a6bb02b50e0960230ac1b58eca3ee + docs/models/deploymentpendingpreparedstackmanagement2.md: + last_write_checksum: sha1:18881b8792b944ff8546dd1a418efe74a84127c1 + docs/models/deploymentpendingpreparedstackmanagementenum.md: + last_write_checksum: sha1:978f73aa08ee842dc4e607554b3a69812b52ecc7 + docs/models/deploymentpendingpreparedstackmanagementunion.md: + last_write_checksum: sha1:468e0a8389f73b8d01ad22e6cc23aad76e4f6413 + docs/models/deploymentpendingpreparedstackoverride.md: + last_write_checksum: sha1:880f9b3e778a1f8ba256bf9397cd3b3b3c04986d + docs/models/deploymentpendingpreparedstackoverrideaw.md: + last_write_checksum: sha1:b863e40b8d386362e199a557a3dd03067e11f145 + docs/models/deploymentpendingpreparedstackoverrideawbinding.md: + last_write_checksum: sha1:501ec1532170e8c5f6a061f1aca8e91d6cd2ee8e + docs/models/deploymentpendingpreparedstackoverrideawgrant.md: + last_write_checksum: sha1:5df21d35df34ac395d7c6fac657bc7661e39a3a9 + docs/models/deploymentpendingpreparedstackoverrideawresource.md: + last_write_checksum: sha1:e3ddffc391aaf79bf6c84b20898a96929b2dd15e + docs/models/deploymentpendingpreparedstackoverrideawstack.md: + last_write_checksum: sha1:6f4d50b83fa008726e1484cb4f96bab45a2f857b + docs/models/deploymentpendingpreparedstackoverrideazure.md: + last_write_checksum: sha1:e350068f06cceb424932b511b513ee1fd802820f + docs/models/deploymentpendingpreparedstackoverrideazurebinding.md: + last_write_checksum: sha1:fd187812bb121da268ee965ac8259f4d35641ec5 + docs/models/deploymentpendingpreparedstackoverrideazuregrant.md: + last_write_checksum: sha1:155c62924c26e73199b322de90531c78a21f34b2 + docs/models/deploymentpendingpreparedstackoverrideazureresource.md: + last_write_checksum: sha1:618882a9ce3b9c8449f0aac3d2ed065ed5916a18 + docs/models/deploymentpendingpreparedstackoverrideazurestack.md: + last_write_checksum: sha1:997070c8091916a32baab0ac78d551f0ec0ae366 + docs/models/deploymentpendingpreparedstackoverrideconditionresource.md: + last_write_checksum: sha1:79372e888250bc964ea77cec7670b38fdef23bb9 + docs/models/deploymentpendingpreparedstackoverrideconditionstack.md: + last_write_checksum: sha1:374265c927cb993f4742e48b851f65733c4c17b9 + docs/models/deploymentpendingpreparedstackoverrideeffect.md: + last_write_checksum: sha1:ffd1625b83914ae1ba53d4629b9c3609ac58b619 + docs/models/deploymentpendingpreparedstackoverridegcp.md: + last_write_checksum: sha1:0b5b1a5e03c56aad3e82e87aabeecd043a92b304 + docs/models/deploymentpendingpreparedstackoverridegcpbinding.md: + last_write_checksum: sha1:7d7524aca499b96bc3b469d214e8bfff039b3cdc + docs/models/deploymentpendingpreparedstackoverridegcpgrant.md: + last_write_checksum: sha1:90f0e7b4a610dbd105197c78d0076ec6fbed55e0 + docs/models/deploymentpendingpreparedstackoverridegcpresource.md: + last_write_checksum: sha1:8ea5b57ee9217f04ab7488bd7c8a470e3425266f + docs/models/deploymentpendingpreparedstackoverridegcpstack.md: + last_write_checksum: sha1:d9f2052cc3cabf65f7ecd46ad7b06b5137ef605b + docs/models/deploymentpendingpreparedstackoverrideplatforms.md: + last_write_checksum: sha1:c27de63a6b98ec8e9f2759aeac1813478fe04b82 + docs/models/deploymentpendingpreparedstackoverrideresourceconditionunion.md: + last_write_checksum: sha1:5295d8ab3218c517a2faaee399adf97afe167d89 + docs/models/deploymentpendingpreparedstackoverridestackconditionunion.md: + last_write_checksum: sha1:9f0c6f990ce0ce162a6028a3fb172afa1fae4ce8 + docs/models/deploymentpendingpreparedstackoverrideunion.md: + last_write_checksum: sha1:37233dbeaa9d67703f3d93538fe777cc9dfff1e3 + docs/models/deploymentpendingpreparedstackpermissions.md: + last_write_checksum: sha1:09d628291968252d4067b5e128d12f652e250f32 + docs/models/deploymentpendingpreparedstackplatform.md: + last_write_checksum: sha1:1efed42e562a93d5defc5253d81bb8a708db58b1 + docs/models/deploymentpendingpreparedstackprofile.md: + last_write_checksum: sha1:c9c33fb19adfdd1be89c4866b744b4596eec4411 + docs/models/deploymentpendingpreparedstackprofileaw.md: + last_write_checksum: sha1:ab10ff694b7cb8d53d2a6aff20fab7656e39befa + docs/models/deploymentpendingpreparedstackprofileawbinding.md: + last_write_checksum: sha1:32db27c3b4fe7b55605f107c4e02fd78124dce6c + docs/models/deploymentpendingpreparedstackprofileawgrant.md: + last_write_checksum: sha1:153385421f8776880b0c252affa1b41b7ee34767 + docs/models/deploymentpendingpreparedstackprofileawresource.md: + last_write_checksum: sha1:62f510b282df3269e39199bcfa19cb81a0341047 + docs/models/deploymentpendingpreparedstackprofileawstack.md: + last_write_checksum: sha1:17f782143eaa6c481dac3e203c310946a552f6dd + docs/models/deploymentpendingpreparedstackprofileazure.md: + last_write_checksum: sha1:515989f44983af7e1f403bfd224595afbb873f96 + docs/models/deploymentpendingpreparedstackprofileazurebinding.md: + last_write_checksum: sha1:3d533c72d64dd0ff1f9299f5f0bb72181240f5b0 + docs/models/deploymentpendingpreparedstackprofileazuregrant.md: + last_write_checksum: sha1:ad14d9e2d6c17820787b3549253610a7302e1abf + docs/models/deploymentpendingpreparedstackprofileazureresource.md: + last_write_checksum: sha1:8e99e8eaedabf487c67505a0885b560528eb0fa7 + docs/models/deploymentpendingpreparedstackprofileazurestack.md: + last_write_checksum: sha1:71745dc0d77f0ed57c31a98c7b67a0898fd9c6d7 + docs/models/deploymentpendingpreparedstackprofileconditionresource.md: + last_write_checksum: sha1:4164dbca121e77aa867c8f1bb3d6c17a1df19b89 + docs/models/deploymentpendingpreparedstackprofileconditionstack.md: + last_write_checksum: sha1:2d18cdce169a4c7226d18144c8c7f7869603302d + docs/models/deploymentpendingpreparedstackprofileeffect.md: + last_write_checksum: sha1:2bfff86a613856aacbf69abbcd20840c3b4d8a17 + docs/models/deploymentpendingpreparedstackprofilegcp.md: + last_write_checksum: sha1:4086348e526ed9bcc6d87b3f29ea5a6d09d4b88f + docs/models/deploymentpendingpreparedstackprofilegcpbinding.md: + last_write_checksum: sha1:362df3d85f9f672e3c45f50285e29822766075fb + docs/models/deploymentpendingpreparedstackprofilegcpgrant.md: + last_write_checksum: sha1:d8ffc772d7cc34c9c922fe8e59071e8c19061147 + docs/models/deploymentpendingpreparedstackprofilegcpresource.md: + last_write_checksum: sha1:4eac0b1b09d7be27dc21a610980eed1520f333d2 + docs/models/deploymentpendingpreparedstackprofilegcpstack.md: + last_write_checksum: sha1:e6e7997e7009e44aa705ecc97487f730b37e06a8 + docs/models/deploymentpendingpreparedstackprofileplatforms.md: + last_write_checksum: sha1:47d445c763f34ebfc667a3bca599ef45843fde43 + docs/models/deploymentpendingpreparedstackprofileresourceconditionunion.md: + last_write_checksum: sha1:8b7b015508be3c436f7f90039d446aeb61247320 + docs/models/deploymentpendingpreparedstackprofilestackconditionunion.md: + last_write_checksum: sha1:2526a0c6e98eae69b4260fc72e1f36e7b67ae785 + docs/models/deploymentpendingpreparedstackprofileunion.md: + last_write_checksum: sha1:9d8f1fdcf37fe388638593573e0d3578b1cd1349 + docs/models/deploymentpendingpreparedstackprovidedby.md: + last_write_checksum: sha1:ba588a8a70bd84f89ee419701d890b7ede2e1b91 + docs/models/deploymentpendingpreparedstackresources.md: + last_write_checksum: sha1:4d091b47c19e08b5582f494570b1d1281242ddae + docs/models/deploymentpendingpreparedstacksupportedplatform.md: + last_write_checksum: sha1:e90905d2f79e6a15c4928990068b8ecae7e936e8 + docs/models/deploymentpendingpreparedstacktypeboolean.md: + last_write_checksum: sha1:3988cddf820a4cbe701e5cc44e908c2580034a2b + docs/models/deploymentpendingpreparedstacktypeenvenum.md: + last_write_checksum: sha1:428b152711604a6490ee9e5f7d50c40dfaf5f403 + docs/models/deploymentpendingpreparedstacktypenumber.md: + last_write_checksum: sha1:3d05b8ab09a7ae4c3db548c25e461f052813da51 + docs/models/deploymentpendingpreparedstacktypestring.md: + last_write_checksum: sha1:c18de3b424349e326bd97d93745ee7ff2d857356 + docs/models/deploymentpendingpreparedstacktypestringlist.md: + last_write_checksum: sha1:8d1ba6c10cc01a225162da533d787a17cd39428e + docs/models/deploymentpendingpreparedstacktypeunion.md: + last_write_checksum: sha1:70809cfa2acadfd857b118e6ad130746f116e637 + docs/models/deploymentpendingpreparedstackunion.md: + last_write_checksum: sha1:6d2c999b5cc9a8eb1598bedce46fcaf6dda2be32 + docs/models/deploymentpendingpreparedstackvalidation.md: + last_write_checksum: sha1:bb4dbe9665d5ce0cae5950fb3dba396041b35b04 + docs/models/deploymentpendingpreparedstackvalidationunion.md: + last_write_checksum: sha1:1450286e6f32fff63c7833c9586566bd62158093 docs/models/deploymentplatform.md: id: 5242b74d1dce last_write_checksum: sha1:b4966ffe6412669c0d71239a160d5511af8eca9e @@ -5840,11 +5979,11 @@ trackedFiles: pristine_git_object: e3f8a1b94213f7c9f24eb11d256d0911aa3bcb75 docs/models/deploymentpoolsautoscale.md: id: 0d416acee1c0 - last_write_checksum: sha1:f7517713e1598ba6e0e66dd072b5036711b2a4a4 + last_write_checksum: sha1:eef6b93090b30680d9fef50e9c4d08d8bb6c6478 pristine_git_object: 409f808bf6db27d97b6eaf7eb1b190acb76bf7a9 docs/models/deploymentpoolsfixed.md: id: ce79ac4bfbfb - last_write_checksum: sha1:4a5ea051eb0bd4e0e46a799052692050c1b17690 + last_write_checksum: sha1:a87a6f3b1ec7cb9e2c1fba55e3ef48449035c0b6 pristine_git_object: fea8c3d58e0236a0af4d73a63c5af718be054fb7 docs/models/deploymentpoolsunion.md: id: 9ee235cfa730 @@ -5876,32 +6015,216 @@ trackedFiles: pristine_git_object: 73a19ea51d500c1901316099a386152614a99727 docs/models/deploymentpreparedstack.md: id: bd6ed6d020ff - last_write_checksum: sha1:b61b6e1b864c103c096b5179652d0a7ec7ee291e + last_write_checksum: sha1:513561f7aee5056e3367a32be8095f48e945c655 pristine_git_object: a9c286790b55ed80b805adcc515e18a6fc6522a9 docs/models/deploymentpreparedstackconfig.md: id: 587f5b9d7c5a last_write_checksum: sha1:7bdd3637202fe0d76db316c3926a011dd11915aa pristine_git_object: 3664317ebab22dac5408c16273ea651db0265775 + docs/models/deploymentpreparedstackdefaultboolean.md: + last_write_checksum: sha1:feaf6467cb81474666e2e2295418fad09ff25b71 + docs/models/deploymentpreparedstackdefaultnumber.md: + last_write_checksum: sha1:edb28dd4b567b395bdae047e4de5fac59d43a4c6 + docs/models/deploymentpreparedstackdefaultstring.md: + last_write_checksum: sha1:a447eb500d94916ba7e9379b57eb8acbed9ad4f3 + docs/models/deploymentpreparedstackdefaultstringlist.md: + last_write_checksum: sha1:7e36c1239f3e6dd71a5b2bf425ec55ee5f957cec + docs/models/deploymentpreparedstackdefaultunion.md: + last_write_checksum: sha1:7fca087fbea852b7c8053aee6c9a5acf03a057f9 docs/models/deploymentpreparedstackdependency.md: id: bfdde345332f last_write_checksum: sha1:79bafc0b1b442ba71f76f0fb9d9bb9fda0324775 pristine_git_object: 4dd159d8a799ce31d2f153880ed64368661bcd9e + docs/models/deploymentpreparedstackenv.md: + last_write_checksum: sha1:8f9aadc68bb223326f4f38ce15b05c394e300bde + docs/models/deploymentpreparedstackextend.md: + last_write_checksum: sha1:3f27fb536a0c6b3e9ce1b160624b76538c9af98c + docs/models/deploymentpreparedstackextendaw.md: + last_write_checksum: sha1:939449d6754c6331a5a7bc7d83d5417d6ed84691 + docs/models/deploymentpreparedstackextendawbinding.md: + last_write_checksum: sha1:1c470a9a47e539dd52e9211419828b36a46b1980 + docs/models/deploymentpreparedstackextendawgrant.md: + last_write_checksum: sha1:2fd97f6def7299d726a7b5a1e9420162c426d6b8 + docs/models/deploymentpreparedstackextendawresource.md: + last_write_checksum: sha1:c127a0cb99e165b51333be43c383920b288860a3 + docs/models/deploymentpreparedstackextendawstack.md: + last_write_checksum: sha1:ce57b052f6ed1d481d3b9091a84dbe912277255f + docs/models/deploymentpreparedstackextendazure.md: + last_write_checksum: sha1:07979c7ab367b87ecd8bed0669473bc2df622463 + docs/models/deploymentpreparedstackextendazurebinding.md: + last_write_checksum: sha1:90c01f65a9290c1d5fa9a96d5beeaf03cf0efc3a + docs/models/deploymentpreparedstackextendazuregrant.md: + last_write_checksum: sha1:5ef5c57d8176970fe84560e42055aa5358d37a96 + docs/models/deploymentpreparedstackextendazureresource.md: + last_write_checksum: sha1:eec5c61218704de251ed99b27ce04110cd1762d8 + docs/models/deploymentpreparedstackextendazurestack.md: + last_write_checksum: sha1:a23a4e0b6c514d93d89eab6c5ba12cb9d86534b7 + docs/models/deploymentpreparedstackextendconditionresource.md: + last_write_checksum: sha1:5978a257c210536682825641c6a56cd508bdd2bc + docs/models/deploymentpreparedstackextendconditionstack.md: + last_write_checksum: sha1:f1956cde460f62667383f8db72fecf8fc09f7f39 + docs/models/deploymentpreparedstackextendeffect.md: + last_write_checksum: sha1:2368e8bef7e8c6cf3d5f6db9a8e4286ed39efca4 + docs/models/deploymentpreparedstackextendgcp.md: + last_write_checksum: sha1:0269157cef635f7943a879c079ca420ed1ef8e44 + docs/models/deploymentpreparedstackextendgcpbinding.md: + last_write_checksum: sha1:236d071f1d2804ed865aeb238e25929ae1fdb455 + docs/models/deploymentpreparedstackextendgcpgrant.md: + last_write_checksum: sha1:17b4d6cfdb17c86ed185160f8231f556ebfce65c + docs/models/deploymentpreparedstackextendgcpresource.md: + last_write_checksum: sha1:5cd38e5e2a73b986f602622d2eea9e482bed335c + docs/models/deploymentpreparedstackextendgcpstack.md: + last_write_checksum: sha1:ba7931b0df0c6ce2ebd11a7d0593fd2491a46de7 + docs/models/deploymentpreparedstackextendplatforms.md: + last_write_checksum: sha1:5c5b12eba952bda92ffc79017b5b25622fe48a79 + docs/models/deploymentpreparedstackextendresourceconditionunion.md: + last_write_checksum: sha1:5f5c6a1adb19c51640a4a5de9bed2ac53811e049 + docs/models/deploymentpreparedstackextendstackconditionunion.md: + last_write_checksum: sha1:d3d416bf87984c909f5a82be257bcfe2128658c9 + docs/models/deploymentpreparedstackextendunion.md: + last_write_checksum: sha1:ad796d9cc87909e1c006aa6812b75b3e18073545 + docs/models/deploymentpreparedstackinput.md: + last_write_checksum: sha1:d1a0ec44571f3626c081e9b9a96b8bd55b7c1564 + docs/models/deploymentpreparedstackkind.md: + last_write_checksum: sha1:54a1d60bbc4d80765eb3d35be2ee40bb87be3f75 docs/models/deploymentpreparedstacklifecycle.md: id: ff0f724944aa last_write_checksum: sha1:42d17e2edb84269f36140be39eecb7475c3992fd pristine_git_object: 76c7e6c249245e88c35876aee4c67d3af2375f9d + docs/models/deploymentpreparedstackmanagement1.md: + last_write_checksum: sha1:ce2017ef7ee4415c014b322bb91f45b667a8dbe9 + docs/models/deploymentpreparedstackmanagement2.md: + last_write_checksum: sha1:80f946ea6b9ba4dbe16ab14a66eaca71ea89c91d + docs/models/deploymentpreparedstackmanagementenum.md: + last_write_checksum: sha1:8969f84b6e1f6ed508d23b4267c44b7d34acfdcb + docs/models/deploymentpreparedstackmanagementunion.md: + last_write_checksum: sha1:57b77d5ae8498981755dd44bdfa478a2d3c0e67c + docs/models/deploymentpreparedstackoverride.md: + last_write_checksum: sha1:46d979e0e9f98a77d9f84106b968c9ac16b3a3c3 + docs/models/deploymentpreparedstackoverrideaw.md: + last_write_checksum: sha1:8fda3c6b3e76ef42c503bd0d382c0c8a4b7db036 + docs/models/deploymentpreparedstackoverrideawbinding.md: + last_write_checksum: sha1:100386e555c0a5bcd4d399ce9b24286213ab9c38 + docs/models/deploymentpreparedstackoverrideawgrant.md: + last_write_checksum: sha1:19c7da1f8e0314e392f94d9606fef501d4a399d8 + docs/models/deploymentpreparedstackoverrideawresource.md: + last_write_checksum: sha1:f49949a2bda2484f8afc627583bb31d3beb29f24 + docs/models/deploymentpreparedstackoverrideawstack.md: + last_write_checksum: sha1:47e3ff43ea426047759474584532496789ec2365 + docs/models/deploymentpreparedstackoverrideazure.md: + last_write_checksum: sha1:246ec061ef52953958c12fa877e0439b890080d2 + docs/models/deploymentpreparedstackoverrideazurebinding.md: + last_write_checksum: sha1:b47d0c5563fcebe2988aaca17788239b540016c1 + docs/models/deploymentpreparedstackoverrideazuregrant.md: + last_write_checksum: sha1:bc6e1381214a7ea0185c93a93ca7e9fbbc8cd873 + docs/models/deploymentpreparedstackoverrideazureresource.md: + last_write_checksum: sha1:4be28f53a49c722d101045d48c67098eeb72d3be + docs/models/deploymentpreparedstackoverrideazurestack.md: + last_write_checksum: sha1:720bc2593fb17b3aaad506117a10bd2b33d2bc01 + docs/models/deploymentpreparedstackoverrideconditionresource.md: + last_write_checksum: sha1:289ba607789e2103250ee19def6d381f156a470d + docs/models/deploymentpreparedstackoverrideconditionstack.md: + last_write_checksum: sha1:658e7454d1ffd440551ff8c5c4ddb1a7e0bc68bd + docs/models/deploymentpreparedstackoverrideeffect.md: + last_write_checksum: sha1:2315dc48d3f2f0083bb115c14b543f7513dfc0b9 + docs/models/deploymentpreparedstackoverridegcp.md: + last_write_checksum: sha1:d807b21c1a6085163af7ec4eb94abffc5b030bf2 + docs/models/deploymentpreparedstackoverridegcpbinding.md: + last_write_checksum: sha1:67d3d38cc71194d90840ff3ea30d42ed9862d960 + docs/models/deploymentpreparedstackoverridegcpgrant.md: + last_write_checksum: sha1:ec38dbf4b9f115febc43ffceb768071e64ecbce2 + docs/models/deploymentpreparedstackoverridegcpresource.md: + last_write_checksum: sha1:7d84c561e74e2ad7a9b8a8db5434e0fc6b2a07b1 + docs/models/deploymentpreparedstackoverridegcpstack.md: + last_write_checksum: sha1:96c181160e2f051b6ce649d3d4bee03e88105d0a + docs/models/deploymentpreparedstackoverrideplatforms.md: + last_write_checksum: sha1:773826217d858ad47d08e5d3077e8d04e78fd2d9 + docs/models/deploymentpreparedstackoverrideresourceconditionunion.md: + last_write_checksum: sha1:76453b9a403db044919f4a9ec56a41125ccb69e2 + docs/models/deploymentpreparedstackoverridestackconditionunion.md: + last_write_checksum: sha1:edb47b68d5c9f800a7d89fdc2cc38dfda4b31f3f + docs/models/deploymentpreparedstackoverrideunion.md: + last_write_checksum: sha1:37296c3ed1d0fad186cc62c111879ef9d39fc859 + docs/models/deploymentpreparedstackpermissions.md: + last_write_checksum: sha1:7c9389c023ee4d3753a1fd595f3731ccbadcf982 docs/models/deploymentpreparedstackplatform.md: id: 7281e9eca758 last_write_checksum: sha1:81525fdd225b4b584a9824a7c6b3d062dc0e3810 pristine_git_object: 62f0db880cb4f8e722c20a91d7cd1b53f7843047 + docs/models/deploymentpreparedstackprofile.md: + last_write_checksum: sha1:833d08b39576786ae90032ba111903ea4cdd8d31 + docs/models/deploymentpreparedstackprofileaw.md: + last_write_checksum: sha1:c733cd799985424b36b90012e5dff250f28a892f + docs/models/deploymentpreparedstackprofileawbinding.md: + last_write_checksum: sha1:f39661f08692a64c875f5e752fa63f30fde2de16 + docs/models/deploymentpreparedstackprofileawgrant.md: + last_write_checksum: sha1:eef57148eb29e843006dd6f321d79f33d4e82293 + docs/models/deploymentpreparedstackprofileawresource.md: + last_write_checksum: sha1:ae4d2f0c15589581e90929888330eb8cc2bde771 + docs/models/deploymentpreparedstackprofileawstack.md: + last_write_checksum: sha1:cf76ebd37407dbbe07cc572b1542d005c51743e4 + docs/models/deploymentpreparedstackprofileazure.md: + last_write_checksum: sha1:fea152f3f2c6bb9928d0e4f993cc650a660f25c7 + docs/models/deploymentpreparedstackprofileazurebinding.md: + last_write_checksum: sha1:18d045af5270f6623a623b6526a0269c3110650b + docs/models/deploymentpreparedstackprofileazuregrant.md: + last_write_checksum: sha1:f2e388a48748e8b73c6f7789bf8a8ccded1031b1 + docs/models/deploymentpreparedstackprofileazureresource.md: + last_write_checksum: sha1:cc17f46c2f4abd4f14453432004a6ad222b3c312 + docs/models/deploymentpreparedstackprofileazurestack.md: + last_write_checksum: sha1:550272b29a605e2c15ec03448457b949d01525a1 + docs/models/deploymentpreparedstackprofileconditionresource.md: + last_write_checksum: sha1:e2eb7f171927030c1d6c6c2202436eec15a25640 + docs/models/deploymentpreparedstackprofileconditionstack.md: + last_write_checksum: sha1:995116e1be78adf9cb9c6add5ddfc2592bd0d1e4 + docs/models/deploymentpreparedstackprofileeffect.md: + last_write_checksum: sha1:6c2d5d7f8ee819464404cce67aab809b365a32d5 + docs/models/deploymentpreparedstackprofilegcp.md: + last_write_checksum: sha1:388ca92a439bd9d071fd74efed09bc4555171e88 + docs/models/deploymentpreparedstackprofilegcpbinding.md: + last_write_checksum: sha1:93653e44c32b3ce82ed501445653b5689f37c044 + docs/models/deploymentpreparedstackprofilegcpgrant.md: + last_write_checksum: sha1:bd248f41b281c279001b127c57b7531f3bd084e3 + docs/models/deploymentpreparedstackprofilegcpresource.md: + last_write_checksum: sha1:0ccf8206257451f83d7b642ad0d5ccfa46519b24 + docs/models/deploymentpreparedstackprofilegcpstack.md: + last_write_checksum: sha1:cb5f660846ed96d037bcc45ee1d39d86d41594ed + docs/models/deploymentpreparedstackprofileplatforms.md: + last_write_checksum: sha1:bbb635522789cb8f88d908096cff195196de9de4 + docs/models/deploymentpreparedstackprofileresourceconditionunion.md: + last_write_checksum: sha1:2d8bd478a49acba8843bd27738a7730e7d1f3e86 + docs/models/deploymentpreparedstackprofilestackconditionunion.md: + last_write_checksum: sha1:dab6e6a9a9acaacf298f052c411bc3505ba7217d + docs/models/deploymentpreparedstackprofileunion.md: + last_write_checksum: sha1:eb934b6f84beda9091c79cd8b15cf440bfede532 + docs/models/deploymentpreparedstackprovidedby.md: + last_write_checksum: sha1:2d34c5e2d1e059fb8002a820834b527ed5194b88 docs/models/deploymentpreparedstackresources.md: id: 3fd12e8af72d - last_write_checksum: sha1:7563638e099e29b1483feab0254c66a5529525e6 + last_write_checksum: sha1:5b22191ca01906272dd9aa7c8391823ad9ac98a2 pristine_git_object: 51c0abc722410b04f32db300d071a0a38bc49d92 + docs/models/deploymentpreparedstacksupportedplatform.md: + last_write_checksum: sha1:4d2e5dc6f9295643aa8bf508290cb8b459d071d3 + docs/models/deploymentpreparedstacktypeboolean.md: + last_write_checksum: sha1:4eb35ef917b059e9b82a9c911e4034b7e7edb2b0 + docs/models/deploymentpreparedstacktypeenvenum.md: + last_write_checksum: sha1:3351153279d83bdf2d57bdcd5b6c09fcca0a91d1 + docs/models/deploymentpreparedstacktypenumber.md: + last_write_checksum: sha1:3b28dbac73c1d3d98884ac42383bb07f368844d3 + docs/models/deploymentpreparedstacktypestring.md: + last_write_checksum: sha1:3bba8609e791c0564246427a123956f4b5680ee4 + docs/models/deploymentpreparedstacktypestringlist.md: + last_write_checksum: sha1:0516e0b7d0fad9af4b7b4b34de03a6c0647eb724 + docs/models/deploymentpreparedstacktypeunion.md: + last_write_checksum: sha1:27803a5db44313d998db695ad44fe08d48573b1e docs/models/deploymentpreparedstackunion.md: id: ee964e497218 last_write_checksum: sha1:8eeb0f210426b25372aba24d50f6be7640a69fe0 pristine_git_object: 85b3892b543f5de4ffa8fc77f7b9a47646dead35 + docs/models/deploymentpreparedstackvalidation.md: + last_write_checksum: sha1:971b288990b9cce5c93e688ea4325cd3c2f7c9ee + docs/models/deploymentpreparedstackvalidationunion.md: + last_write_checksum: sha1:a98de9f5a46a81fc05a9b9f55bc727345e97c464 docs/models/deploymentpreviousconfig.md: id: ff8387105270 last_write_checksum: sha1:d14e2d5e90d42b62d4ee523902a522a28dd3ffa8 @@ -5910,106 +6233,10 @@ trackedFiles: id: 0d65faf71ccb last_write_checksum: sha1:96898ee12344edc1eb5d721c2113378643729cc0 pristine_git_object: 8660d73fe5b837ead4a5bfae054d2985af2f5174 - docs/models/deploymentprofile.md: - id: 858e1ba29b3c - last_write_checksum: sha1:39336a45ba1ab332c4a2e599d68ec91fd687bc37 - pristine_git_object: c5e7249db174fc55eceb2eae30f627aad1a904e4 - docs/models/deploymentprofileaw.md: - id: 104038f20c50 - last_write_checksum: sha1:7cf55c6bff9b4c15f46118607ed7325a01277b40 - pristine_git_object: 297636daa9e05d20b5809d6bef8fb401cc2f7070 - docs/models/deploymentprofileawbinding.md: - id: 02d699b6a446 - last_write_checksum: sha1:f61816dc028d4d328f290b14114502cde4243984 - pristine_git_object: d1d6c7e72e7ca28d00965a68b11f17d544b735b5 - docs/models/deploymentprofileawgrant.md: - id: b491ce32db5b - last_write_checksum: sha1:555b9cd21964904847407c94589626cafb39b835 - pristine_git_object: 817d6abbaa87f0c0760f05d7c66e329fb456d6a1 - docs/models/deploymentprofileawresource.md: - id: 2b6d3ff320e0 - last_write_checksum: sha1:499bd9e70e1d600f2f393602474f2c9e98f7a703 - pristine_git_object: 3cb8ca1b49e9e72819828b933e09fda5d4154174 - docs/models/deploymentprofileawstack.md: - id: 8a0e3473951f - last_write_checksum: sha1:cdb3b868e5dd1f8db4172d91ea263c52902e2f25 - pristine_git_object: 20186ebade7d330af00bcb2d353e34354f59336b - docs/models/deploymentprofileazure.md: - id: 2bb2b2bd2fec - last_write_checksum: sha1:69e55c30619afcd231cfc57656a728943abcdb1d - pristine_git_object: f3b706a2e701a6f3874dbc3f47663f81667940f4 - docs/models/deploymentprofileazurebinding.md: - id: 3613a66f0171 - last_write_checksum: sha1:860c0c9a377759a43cb6144d96d2d605a0913339 - pristine_git_object: 2cf6bb8ac3a8dbbd380719e9228ea506f712b00c - docs/models/deploymentprofileazuregrant.md: - id: 3d439e36a7d0 - last_write_checksum: sha1:28c3f31fff61c10dd74d6c82b6f7c5263ccd6db2 - pristine_git_object: cdab8b12aba9fe59f0a268f869997477c6b3bc48 - docs/models/deploymentprofileazureresource.md: - id: 4821d0291fdd - last_write_checksum: sha1:65de798a2a50014828d33c2498ecd82af5ecc238 - pristine_git_object: 9bbea435ee0fbd884ba88fa08538a74cd10db982 - docs/models/deploymentprofileazurestack.md: - id: 54b50442883d - last_write_checksum: sha1:3a33fe7f6146024e5320a721cf2a241ea2117995 - pristine_git_object: 764297ef295adf8703b2d6d2ec8a486f07f96ffd - docs/models/deploymentprofileconditionresource.md: - id: 5c9fb8831f02 - last_write_checksum: sha1:0357f00915d5c05c85e114b9ebc09c1a10e381dc - pristine_git_object: d3c6cec62615b99cc10c2c1547b82fb96cb34854 - docs/models/deploymentprofileconditionstack.md: - id: ad8753b33b93 - last_write_checksum: sha1:664e99440ec5fc6cf56cb9cea86f113b877aa284 - pristine_git_object: 3a682d7476869cdae73771fc51292d498b2a82a9 - docs/models/deploymentprofileeffect.md: - id: 380c685841eb - last_write_checksum: sha1:34bde51b6a97683cf6212f749734ce68b20a03dd - pristine_git_object: a5d8f9645f676077396ab19c9c1ec079712c7ad4 - docs/models/deploymentprofilegcp.md: - id: 8a8f32fe1910 - last_write_checksum: sha1:c4fa82f83aaee0f068d1294b25211a9a9dbb7ae0 - pristine_git_object: 080c0b7a5132084506905a5399a62ea36880a3a5 - docs/models/deploymentprofilegcpbinding.md: - id: 643c7975a2eb - last_write_checksum: sha1:790c82fc92598527fb744a1665d5cd65b7de9e6c - pristine_git_object: a33c8944e696d98d844e0c41cd611f84bce6b549 - docs/models/deploymentprofilegcpgrant.md: - id: 971191f88fcb - last_write_checksum: sha1:6290bffe528571de1ae12031c36a91ff1aafdada - pristine_git_object: b7e351845e6c4c22df4c1812ac11784b918c7932 - docs/models/deploymentprofilegcpresource.md: - id: f9a3ce7d1fb9 - last_write_checksum: sha1:e3df0da65e0c4e4b39cb67098d778420e5025c85 - pristine_git_object: ac93f41fadf9a2ca8f48caadc59d54582022a0f7 - docs/models/deploymentprofilegcpstack.md: - id: 1d0068cdacba - last_write_checksum: sha1:fbf92172747a16c6b954a321f1b1e31cc130da04 - pristine_git_object: b161e0f69b7db953c88cd2e60b3be122fa658299 - docs/models/deploymentprofileplatforms.md: - id: 1e07f7107019 - last_write_checksum: sha1:51977fd34405732d7e5e2ed17bf9a63175a45fd9 - pristine_git_object: 30082868f8e7966a3bb11c64896a6126fb93d7b5 - docs/models/deploymentprofileresourceconditionunion.md: - id: 3804c7190544 - last_write_checksum: sha1:3d087dedb7c931a8f822c13b6aa5e6d1f8714db8 - pristine_git_object: 4cc57c5b4f8b8a48c0640c410b71e13b1ae8ea75 - docs/models/deploymentprofilestackconditionunion.md: - id: aae5ec7a0947 - last_write_checksum: sha1:d11a31cdf2af5ea1009d2c4e751cd3495d0e7c6d - pristine_git_object: a972b2b84fd27662058bbbc18d181c20c5f1e34b - docs/models/deploymentprofileunion.md: - id: 46dae6114556 - last_write_checksum: sha1:fdeec0e6d83f0e03c9e34a203f405e3aa097deef - pristine_git_object: 3145219a26006a20347ecb172fe65b4118b1c576 docs/models/deploymentprojectinfo.md: id: acfaebd38bb9 last_write_checksum: sha1:ead0a3af886e8d9547c04e0e388db98526f6d42a pristine_git_object: cccd32759618bfaa0da5ff26f47819384d04f3c7 - docs/models/deploymentprovidedby.md: - id: 6c6d0f94fdac - last_write_checksum: sha1:5f0c38ce39a3743fa3a517317f7dd5541e27b4b7 - pristine_git_object: 1daba96f3886c492a252f673a845fefa5b3f4abc docs/models/deploymentproviderawsalb1.md: id: c4264ed261a4 last_write_checksum: sha1:81b5d16acea1cadb02dfe9228317dd675a958c83 @@ -6134,6 +6361,8 @@ trackedFiles: id: f1ba873222c8 last_write_checksum: sha1:f214480d4d184505c8eec28ecf60a176cf3481fb pristine_git_object: f441480f2412171ff65ba2603580c5f62a8cd18f + docs/models/deploymentpurpose.md: + last_write_checksum: sha1:99e99a4c0287741b67e60af37d6c94b0b2d485ec docs/models/deploymentreleaseinfo.md: id: 31fe37e6a49b last_write_checksum: sha1:d91fda53b25769f78452c70f3e8e2d54c57be09b @@ -6168,7 +6397,7 @@ trackedFiles: pristine_git_object: 0bd70ae00587aae14d707b77759f40d645ba845c docs/models/deploymentruntimemetadata.md: id: fe994367ec66 - last_write_checksum: sha1:dcf02e40dc7c3e24d42cd1964be20a12c9be667e + last_write_checksum: sha1:3dec0dad0f11b723d62957353f6a1d3c39d7422d pristine_git_object: 8313fe7e61e35070d7eae3351d56566f8de2a802 docs/models/deploymentscope.md: id: 0fcde4ae9c17 @@ -6176,8 +6405,12 @@ trackedFiles: pristine_git_object: 4e20f3d152be7e16520480d37f2c6d3537cc0c85 docs/models/deploymentsetupconfig.md: id: eac9af2e4f7a - last_write_checksum: sha1:7ac47d209050a97f449eca7c87147ccd81061e32 + last_write_checksum: sha1:776ad454dc84e18a8cb17dc529cbecf442da83eb pristine_git_object: 660afbdc9fb4d1c20370ad02424548b9bc8244c1 + docs/models/deploymentsetupitemselection.md: + last_write_checksum: sha1:07e17fba78f238b9db94f7130c12b42409e36e52 + docs/models/deploymentsetupitemselectionitem.md: + last_write_checksum: sha1:31d47aa430320b7b658e555efc94f239752f03ef docs/models/deploymentsetupmethod.md: id: 046d10120cce last_write_checksum: sha1:ca519671f635c4b82fbfe0841943faddeb9d3f39 @@ -6330,6 +6563,14 @@ trackedFiles: id: e2e37126bd84 last_write_checksum: sha1:25e4b1f2483bcf5cf61ae062e3eb16827d95960e pristine_git_object: f143fb3e766241151d0e2cf447f7f28cdcc16f16 + docs/models/deploymentsetupstacksettingspolicyfailuredomains1.md: + last_write_checksum: sha1:a699670ce2368b60a651323b7a2d98919d240854 + docs/models/deploymentsetupstacksettingspolicyfailuredomains2.md: + last_write_checksum: sha1:c9b91e53cc885fb08cb14e96693826b9343a141b + docs/models/deploymentsetupstacksettingspolicyfailuredomainsunion1.md: + last_write_checksum: sha1:0bc1330f136193656d5deb442e0472cb3814d54a + docs/models/deploymentsetupstacksettingspolicyfailuredomainsunion2.md: + last_write_checksum: sha1:4fee4b924ca1fd5c62da504d54218974a905490c docs/models/deploymentsetupstacksettingspolicygcp.md: id: 466e99ebd9d7 last_write_checksum: sha1:8a2871ba2979e54f71b85f65a509921ac2399932 @@ -6400,11 +6641,11 @@ trackedFiles: pristine_git_object: a61a2e06b22b4a729b3cbe51844d079999a675e6 docs/models/deploymentsetupstacksettingspolicypoolsautoscale.md: id: eb35c5478db4 - last_write_checksum: sha1:522cb32da4ba2d49c89cc3a1d213e374ffaa74f5 + last_write_checksum: sha1:96961918b4a1a02fb97a327357b7738aefe17580 pristine_git_object: 92a0235a6e8796cff0c364498dc1a7ded944d1ab docs/models/deploymentsetupstacksettingspolicypoolsfixed.md: id: 4771dc71782c - last_write_checksum: sha1:713aa29160a1b2e391df66f23efd204386d1e97e + last_write_checksum: sha1:e7164c1d8371bff8755ff68d476175503fbb6bc4 pristine_git_object: b259684b47992403bcd4fc246fcf2c1ea59a99ef docs/models/deploymentsetupstacksettingspolicypoolsunion.md: id: 20182635222b @@ -6590,6 +6831,10 @@ trackedFiles: id: 6f3dd0748a45 last_write_checksum: sha1:31869828936572679c7025fbfd02ea4a60695466 pristine_git_object: 58e04aaf08f9af599ddbd329940cedddd5fbb126 + docs/models/deploymentsetupupdateauthorization.md: + last_write_checksum: sha1:bdbf5947923c7f2e3953d59fcb185d447405f0f3 + docs/models/deploymentsetupupdateauthorizationunion.md: + last_write_checksum: sha1:784a762382b8b12dacf949cdd56394a96dfe96d0 docs/models/deploymentstacksettings.md: id: 3adb06a59207 last_write_checksum: sha1:6071842f37c010c3d26af0f96c8f6bd2b87c0b82 @@ -6620,16 +6865,12 @@ trackedFiles: pristine_git_object: 0c86b540d02aa46338dabeafa1b50376818a0964 docs/models/deploymentstats.md: id: 920eca5090c5 - last_write_checksum: sha1:ed9240f9bf71a8b75966133a980890ec505bef70 + last_write_checksum: sha1:beaf971204e884f3eef04bc1dd7ffc0454d29863 pristine_git_object: cbea7034dae3c11bf451342770792c9c3e6fc88e docs/models/deploymentstatus.md: id: b039895c72a9 last_write_checksum: sha1:bbcd15cf34c085d78c55e70f2334395b073c977d pristine_git_object: 0df89008f32c7c4266a829f8df4d06e6cb7dba74 - docs/models/deploymentsupportedplatform.md: - id: ee0c8fd79005 - last_write_checksum: sha1:4bad683e75aea9bd5236b02e7e9fb262f4d419e2 - pristine_git_object: 543070b1e26420c3a15413e0ee8e882db067e17f docs/models/deploymenttargetenvironmentvariables.md: id: de09b362a5d0 last_write_checksum: sha1:9c045c6d06c6903b6df2628aa4400ca84c316ab1 @@ -6642,10 +6883,6 @@ trackedFiles: id: 0cadd0a8df1e last_write_checksum: sha1:476a64bb8351b162a9ecb62f3afd19c696408ac7 pristine_git_object: 94bc7ad046367af8bcaed97b04cf47af17c9d9bc - docs/models/deploymenttypeboolean.md: - id: 70c1cf6d42b8 - last_write_checksum: sha1:c8cfb0b557d67286d84ad9e93fe7d317b63c1eab - pristine_git_object: 6e6f5f621794edb21434cca9eab0e002ae863fbb docs/models/deploymenttypebyovnetazure.md: id: ea9a2c28dce3 last_write_checksum: sha1:867b3d0bfc3506ed06430e883ba0609c19eb8789 @@ -6662,46 +6899,26 @@ trackedFiles: id: 9b97614cc4f8 last_write_checksum: sha1:a97a2c733e00363230a10bc108110dd8ba76b3e3 pristine_git_object: 128acdc80f5ffcdd045148631908d6cd3c0f4d92 - docs/models/deploymenttypeenvenum.md: - id: 799628553dad - last_write_checksum: sha1:7a4631ee91c04df3e67d8376a5dae7c10ea29170 - pristine_git_object: 869a7e55995a510e88fea8857fed395c5c332cc2 - docs/models/deploymenttypenumber.md: - id: c2626a138026 - last_write_checksum: sha1:e2e2e09a51cf527fc335da9f87d8aff8d0b81bca - pristine_git_object: a8d7c7a21af9040ccbab0073eef1608d9bd1dc3b - docs/models/deploymenttypestring.md: - id: 960d0924e44d - last_write_checksum: sha1:284f14176fef53558270eeb9969fcccf883b3ce7 - pristine_git_object: e6b2e43610b5b07f68c4444c9b3227ada60f6abf - docs/models/deploymenttypestringlist.md: - id: 301c18a6e97e - last_write_checksum: sha1:2a3e8bd9d7d4f4489acbc9a538c0cddea07bb355 - pristine_git_object: e72dc90782b098e9638b53ba1dd61f1e49e1b344 - docs/models/deploymenttypeunion.md: - id: a76ea9eea032 - last_write_checksum: sha1:d9643e7842d55367fd998c41e022e5ce35b430cf - pristine_git_object: 0a42e1a12459d05bdc8ef888a0cc67d89ae5c156 docs/models/deploymenttypeusedefault.md: id: ea52cb0f4b72 last_write_checksum: sha1:00d9d2a6574a8a44675a971a1bb09deade944867 pristine_git_object: 7ec1b34823c621e36aea230c3ca18c26174f0f55 + docs/models/deploymentupdateoperationstatus.md: + last_write_checksum: sha1:2d668ef9ceb4cb62ca756ea2b599d1065e47b1a4 + docs/models/deploymentupdateoperationsummary.md: + last_write_checksum: sha1:bae13d49bde315212cf7a88522a3b6bb32d5ce3a + docs/models/deploymentupdatereason.md: + last_write_checksum: sha1:b636e5de800094b3b93b36917fb977616fee5dd5 docs/models/deploymentupdates.md: id: 106a8ec47979 last_write_checksum: sha1:980bf9a48c554949003f5af5c3268e3d280f93b3 pristine_git_object: 145cc5afb910684279d72fc7cbb35f9629aed486 + docs/models/deploymentupdatestate.md: + last_write_checksum: sha1:f55f28e29b4e7a88d1b5d78f61ab8a8f4fd2eb6a docs/models/deploymenturlproject.md: id: e9c391a7a1e8 last_write_checksum: sha1:4692cd26cac03e786ddc06befd7785473ca7b6d0 pristine_git_object: 0a631c64bcd366170b8f3f7ca75bcafbb13d2d3d - docs/models/deploymentvalidation.md: - id: 78b63a46e09e - last_write_checksum: sha1:b07ccc2cddd1ce194bbfe75a425b9651ad443bff - pristine_git_object: 00e5951130d3a97ff8ad9f70c903bea04c0d0379 - docs/models/deploymentvalidationunion.md: - id: 88d83ec748e3 - last_write_checksum: sha1:ba8057139bace57f61d1b2ce82aa27e1cee3ba31 - pristine_git_object: 583bedc8fb525813d63de3aa16c89213955f3cf1 docs/models/dispatchcommandrequest.md: id: b7ff4aeafd55 last_write_checksum: sha1:8f64ca126a48b932876b14c76d6f6b3110da8578 @@ -6764,20 +6981,28 @@ trackedFiles: pristine_git_object: b670cea583ec2be90d0cfbb6936a2aabef66728b docs/models/drainprogress1.md: id: 3717dd412882 - last_write_checksum: sha1:dcd2babb727c94d8f4fe38789cdcab682ce2fae7 + last_write_checksum: sha1:9eb8f6f3083771a7f6cb5819b232916de11d27bb pristine_git_object: 79309d50180b419bfeda3ccb859a28256cb43f9a docs/models/drainprogress2.md: id: 5d7188102fca - last_write_checksum: sha1:e1c10c1635ba61bcee5ce2e91d0c355a0ac96a78 + last_write_checksum: sha1:5252d9e34f00c00f80554bfe70a90d46d31b1852 pristine_git_object: a2c4c17f2a8705577905196a89efd394fb81564e docs/models/drainprogress3.md: id: 18b1032fdfff - last_write_checksum: sha1:81c1e6c2bfb52dbf4760e3fe56de7700dac012ef + last_write_checksum: sha1:78863a10a6d858ac4caca1385c72ad82c60d377e pristine_git_object: 6576ec8afb1973c00e3a0aabd0653d89746784c6 docs/models/drainprogress4.md: id: ea550b0cbce6 - last_write_checksum: sha1:4222f712d4f4b7fa021cd8a674abd8da4d894a52 + last_write_checksum: sha1:30a2cac66d2a527fb37dd0bdb12bdd8b72d90979 pristine_git_object: d74a7914b750accb589b78efa221aee25098c2d7 + docs/models/drainprogressblocker1.md: + last_write_checksum: sha1:11ecbea8e09604a095e291537698a54ccbc7c537 + docs/models/drainprogressblocker2.md: + last_write_checksum: sha1:5f33277c322e881a7e74f4d9e991149b114fd88e + docs/models/drainprogressblocker3.md: + last_write_checksum: sha1:96b378e551ce1e45f7aacc6dd48d32f75e27f06e + docs/models/drainprogressblocker4.md: + last_write_checksum: sha1:0e724b4462fb2c866e09870f9cbe4a51602431de docs/models/drainprogressstatus1.md: id: ed9b9dcf079b last_write_checksum: sha1:105eb43451137b2c8b2e666e1ce7533ab9db4b2e @@ -6818,6 +7043,10 @@ trackedFiles: id: f10eb1f78554 last_write_checksum: sha1:1e710c753623b962464b157a1974e6108ac8abf0 pristine_git_object: a1e611a256b90fb73b195f2227cc5150b17841f0 + docs/models/endpoint.md: + last_write_checksum: sha1:b42eb2bdf4e662b10cb4d8a31948eb450b5764b1 + docs/models/ensuredeploymentgroupbyexternalidrequest.md: + last_write_checksum: sha1:6b811351983ff019d9f94cf3da5114982ed5f309 docs/models/ensuredeploymentgroupbynamerequest.md: id: ffc06a5e49e2 last_write_checksum: sha1:aaecca093caa21cb5a352e01ca65fd392abe1378 @@ -6830,22 +7059,30 @@ trackedFiles: id: f8f0907c6906 last_write_checksum: sha1:043bcede96337ffc27ee75bccd4b8b46241f87e0 pristine_git_object: 5d3a934d19f7f5d6676549477a8d149dc35473f0 - docs/models/errorfailed.md: - id: bca9dab46c94 - last_write_checksum: sha1:3a6ff5a27ee817f52c6e3809a0ab82272a2b8eff - pristine_git_object: 3975b4dccdf46d7afc10210cf02ecdf4d7fb63e0 - docs/models/errornextstate.md: - id: 3d9d89513e0f - last_write_checksum: sha1:35f1f8b31d201817a383e4c34a35006289afa74e - pristine_git_object: 27b4d6de190255f90534896822d20cec2fbeb8b3 docs/models/errors/apierror.md: id: df4a0e23247e last_write_checksum: sha1:b9241801fa5ddb3575921ba48dd27c3fd6b5f786 pristine_git_object: 9fa1f23a2a013d2d8bf4674df7703f6edb544f9d docs/models/event.md: id: 311c22a8574a - last_write_checksum: sha1:2d710b10d08524e5538c616ae8576a3611c07d4a + last_write_checksum: sha1:549b328a7ddd2cb36fae217fb48f067bf2310292 pristine_git_object: 4088af26db7a48fa6f0b18906384eb1643e1d297 + docs/models/eventactor1.md: + last_write_checksum: sha1:b0bffa277cc3cc5cddedd79433da3d159e9c54d4 + docs/models/eventactor2.md: + last_write_checksum: sha1:b4b5b79354b88f985fb67b7f7b78b58d18e468a4 + docs/models/eventactor3.md: + last_write_checksum: sha1:3cda8225e2fab418b612c65ae22e2e940f64b0ab + docs/models/eventactor4.md: + last_write_checksum: sha1:ae7acce9bb0a06249b3083f1dcde88f891350509 + docs/models/eventactorunion1.md: + last_write_checksum: sha1:2faa553a63fec228b405ac453e18ee11319621e6 + docs/models/eventactorunion2.md: + last_write_checksum: sha1:06839c612e2af6cddaf2229e0dc3bfff52b2abe3 + docs/models/eventactorunion3.md: + last_write_checksum: sha1:6e1b859327cc979d37ba18c840d730e16191b317 + docs/models/eventactorunion4.md: + last_write_checksum: sha1:19d1cb6477ecd6aa689ff0c89b6cb0c250a737e0 docs/models/eventconfig.md: id: a812f6f1c32b last_write_checksum: sha1:2cedd8d01fbed51336dc1f5878161263832eb1c0 @@ -6858,18 +7095,124 @@ trackedFiles: id: f9f13e960056 last_write_checksum: sha1:e38a6a836fe1487b57ab3925df9f203f5e20f6f3 pristine_git_object: 1013223491ee42ff9eaf960e15aa0a5c211b519c + docs/models/eventdataassumingrole.md: + last_write_checksum: sha1:4bc143febc853ba1a9b47412fbda74e1ac5499b1 + docs/models/eventdatabuildingimage.md: + last_write_checksum: sha1:b8ca75333ea970d93fd9cb209d5b1c614de26522 + docs/models/eventdatabuildingresource.md: + last_write_checksum: sha1:79f471531b3b29b26ac452a2117afdfc1b826e22 + docs/models/eventdatabuildingstack.md: + last_write_checksum: sha1:cd305687e58df1489bf3702f99784c9cf366e235 + docs/models/eventdatacleaningupenvironment.md: + last_write_checksum: sha1:92c1ee56ffd28c75652cbfe3f5f3bdda704427d2 + docs/models/eventdatacleaningupstack.md: + last_write_checksum: sha1:1f17258ba9ea153017c3032553c77a8005c89a29 + docs/models/eventdatacompilingcode.md: + last_write_checksum: sha1:7c0f6c1eb092faa6ab7af73a117a355f0df4ae38 + docs/models/eventdatacreatingrelease.md: + last_write_checksum: sha1:8abfcd4147ea9f64c9ccb57b8f8f3995bb421852 + docs/models/eventdatadebuggingagent.md: + last_write_checksum: sha1:6677e95f8d71f8850d0c8742f7034cf6ec683a07 + docs/models/eventdatadeletingagent.md: + last_write_checksum: sha1:94b4f26c6353023aa01788b7e4df035117dd13a8 + docs/models/eventdatadeletingcloudformationstack.md: + last_write_checksum: sha1:3405a24cc65d54c52696570b294520b06193c0bc + docs/models/eventdatadeployingcloudformationstack.md: + last_write_checksum: sha1:9390c4f0b7f7369e34ac5748e05917696e83aa01 + docs/models/eventdatadeployingstack.md: + last_write_checksum: sha1:a92cb6119aed821f7169f2bcf52b7d3f1cea9fed + docs/models/eventdatadeploymentcreated.md: + last_write_checksum: sha1:7c36de7a2ad4f39d5b0ac6e746b4ddda222002b3 + docs/models/eventdatadeploymentdegraded.md: + last_write_checksum: sha1:309155c26092d7656e2fa20ff563b0140647d585 + docs/models/eventdatadeploymentdeleted.md: + last_write_checksum: sha1:5db53cb6de34666814ee72dc1025a15ebe56a83d + docs/models/eventdatadeploymentdeletionrequested.md: + last_write_checksum: sha1:fa0e7020426356266a3e414bb755691bb83177b4 + docs/models/eventdatadeploymentenvironmentupdated.md: + last_write_checksum: sha1:1f78a64f2a4a640bc47f1c2a07da31559ecf99a8 + docs/models/eventdatadeploymentfailed.md: + last_write_checksum: sha1:f7e757b2d932c13663d4436496933079c703e15d + docs/models/eventdatadeploymentrecovered.md: + last_write_checksum: sha1:52d7a543610ad18d1e9c65a6d20a525b84648333 + docs/models/eventdatadeploymentredeployrequested.md: + last_write_checksum: sha1:9a7d45e0977f8b8088ad4ddfa9bc1c69042ef7c6 + docs/models/eventdatadeploymentreleasechannelchanged.md: + last_write_checksum: sha1:0124606778e776141a9ea0776c395aae0de1bed2 + docs/models/eventdatadeploymentreleased.md: + last_write_checksum: sha1:f07bb1dea2214570877e437a951ab9b613dddcf5 + docs/models/eventdatadeploymentreleasepinned.md: + last_write_checksum: sha1:73f40aa3faf4f5dd896f3a597a8001cd5b1ec249 + docs/models/eventdatadeploymentreleaseunpinned.md: + last_write_checksum: sha1:baddfa5d8de21449afd49cbfed0c9aa1dbf051b5 + docs/models/eventdatadeploymentretryrequested.md: + last_write_checksum: sha1:090282ece9d72681f12b9916e501181a160befed + docs/models/eventdatadownloadingalienruntime.md: + last_write_checksum: sha1:a3807f8f26603c29121e6ed0684371d3b42f5cdc + docs/models/eventdataemptyingbuckets.md: + last_write_checksum: sha1:100316023995fdf184f60a41dbeb997b3809bf07 + docs/models/eventdataensuringdockerrepository.md: + last_write_checksum: sha1:38a9deeb9d9d5e7dafe0b8b9be20aa2c992cd5e6 + docs/models/eventdataerror1.md: + last_write_checksum: sha1:a45e37db3d4d210ca4c7433659a0ee8567f3ed4c + docs/models/eventdataerror2.md: + last_write_checksum: sha1:f78fcde892ff72a3e0f4b2c693599585a244dda8 + docs/models/eventdatafinished.md: + last_write_checksum: sha1:8706939c9b6e4a2c1d1486d183830bc6cbe6e5b6 + docs/models/eventdatageneratingcloudformationtemplate.md: + last_write_checksum: sha1:9dff0f7ae6ee2faa3de7ae4a5e567ebebc0f675e + docs/models/eventdatageneratingtemplate.md: + last_write_checksum: sha1:77b772c605c7fdb48a2da2f883c2aedfe3da5aea + docs/models/eventdataimportingstackstatefromcloudformation.md: + last_write_checksum: sha1:42d323cfdfd84e29c6a34691ac9b43ee6ae285ed + docs/models/eventdataloadingconfiguration.md: + last_write_checksum: sha1:01f334d82f42ddb6b062e320271b078479e29c5f + docs/models/eventdatapreparingenvironment.md: + last_write_checksum: sha1:28e1f6591e18645560728fb6ab0b4b77283a4651 + docs/models/eventdataprovisioningagent.md: + last_write_checksum: sha1:4c1ab8bcdc7531ba5fc48d40b4350dc7b65db2a6 + docs/models/eventdatapushingimage.md: + last_write_checksum: sha1:fb251817aae52ca3124624b25e61fe2178912cc5 + docs/models/eventdatapushingresource.md: + last_write_checksum: sha1:8de2966a3a6d9a64b131b3511d2efe0c15b64108 + docs/models/eventdatapushingstack.md: + last_write_checksum: sha1:3c6874c24d05e57804d08de96094403dd7f2f236 + docs/models/eventdatareleasechannelupdated.md: + last_write_checksum: sha1:3c2250fe2196d89ee9daf4d3eb0abdd6b05688e2 + docs/models/eventdatarunningpreflights.md: + last_write_checksum: sha1:9b09ca6cb207ec77f55eae345fd56b140ba3b62f + docs/models/eventdatarunningtestworker.md: + last_write_checksum: sha1:e5bac38b98974e46dfa922d6c62193ac623d3c7a + docs/models/eventdatasettingupplatformcontext.md: + last_write_checksum: sha1:83429cdf6240fe0a5529f287481ea29155a11ac5 + docs/models/eventdatastackstep.md: + last_write_checksum: sha1:6d7a42c240cf7d45ed8af9cf1a0200c3990640f3 docs/models/eventdataunion.md: id: 5af073344910 - last_write_checksum: sha1:cba36fabfff539fc14600022191bac1609b992a9 + last_write_checksum: sha1:699c3b68d368c70e7096aab4b93db4b310d00343 pristine_git_object: fc796097eb5c99354b56af0166a7734799f10d2a + docs/models/eventdataupdatingagent.md: + last_write_checksum: sha1:1634075996f239e337a7fa502aae99f59746465e docs/models/eventdependency.md: id: 8b54666b2bdb last_write_checksum: sha1:99707895c4e521f7f47cce37ee6dc12394445bb5 pristine_git_object: 8284bcb45e2596dfea6a928356719bf612cd59bd + docs/models/eventerrorfailed.md: + last_write_checksum: sha1:7bf0d7ff7c89b47d58171f94e4292116bc53f3ed + docs/models/eventerrornextstate.md: + last_write_checksum: sha1:e4c18edf6915e9b633b0c27d0a3d6b17e12c0314 + docs/models/eventfailed.md: + last_write_checksum: sha1:4fe5c68a03cc14bf50a38b87bcc09295af8b6463 + docs/models/eventfailederrorunion.md: + last_write_checksum: sha1:a2cebe792ad7657c4b8fbabba44c7d56f7ae6937 docs/models/eventkind1.md: last_write_checksum: sha1:18fbb87844cf845b4d2204438bcd9b0672a2f670 docs/models/eventkind2.md: last_write_checksum: sha1:9f859c72c06d1e0a52d244d02bdb0ee0b509faf0 + docs/models/eventkind3.md: + last_write_checksum: sha1:9950801c4d31d7fbebab7e8241dc42a317a18abf + docs/models/eventkind4.md: + last_write_checksum: sha1:704c805945627a27ef72914f0807a6f19e2517f4 docs/models/eventlifecycleenum.md: id: 731d608bd042 last_write_checksum: sha1:b98f8f01488cce84c55365a26c722a064077e6ee @@ -6878,6 +7221,190 @@ trackedFiles: id: dbc4c6930fa8 last_write_checksum: sha1:75d3faf6d44d1438f84f546c7a26c375f100ce89 pristine_git_object: 7716c4e839cc25b3d223f207f11d80387f71acdf + docs/models/eventlistitemresponse.md: + last_write_checksum: sha1:cfb6a56d697732c3842007b3672e0d60676149fe + docs/models/eventlistitemresponseactor1.md: + last_write_checksum: sha1:01cf57ccd4016ef73f915ec783f8ac6f6fd7ecf0 + docs/models/eventlistitemresponseactor2.md: + last_write_checksum: sha1:7870aa5fa1d22607a585828d4078f0c899551c6a + docs/models/eventlistitemresponseactor3.md: + last_write_checksum: sha1:72fc58e72719bddfc0dc9c28188dfba962d6a841 + docs/models/eventlistitemresponseactor4.md: + last_write_checksum: sha1:fc97381358ec06a52bf8e14714683b7cf01b76f1 + docs/models/eventlistitemresponseactorunion1.md: + last_write_checksum: sha1:fd2388cb7d464b252eb075cd70bc7c890530d728 + docs/models/eventlistitemresponseactorunion2.md: + last_write_checksum: sha1:ca9d285921c8a82a77980331cf1070c0e554afa1 + docs/models/eventlistitemresponseactorunion3.md: + last_write_checksum: sha1:28fb078165cd9c1931c4531868737774d43a63c9 + docs/models/eventlistitemresponseactorunion4.md: + last_write_checksum: sha1:b01619399d51a3c89db326c23df543b5c335267c + docs/models/eventlistitemresponseconfig.md: + last_write_checksum: sha1:0602df8c4fb09267b6b79db5bc6e4dff50c4a418 + docs/models/eventlistitemresponsecontrollerplatformenum.md: + last_write_checksum: sha1:72679707af66acca226320eebbe9a940f73e9654 + docs/models/eventlistitemresponsecontrollerplatformunion.md: + last_write_checksum: sha1:0f3f5c22ab1564a53ce4cf35b482e46205a45607 + docs/models/eventlistitemresponsedataassumingrole.md: + last_write_checksum: sha1:bad514957fce4e8f529a26d4a11efb48ec4b5cae + docs/models/eventlistitemresponsedatabuildingimage.md: + last_write_checksum: sha1:850975c18d0edeeda93f92ec05dabf5d70eceb02 + docs/models/eventlistitemresponsedatabuildingresource.md: + last_write_checksum: sha1:aab88bfb688b91cbd9c505140320031f6e8d2396 + docs/models/eventlistitemresponsedatabuildingstack.md: + last_write_checksum: sha1:6a8963290f4e339a031c5560d0ffc12b9268ea5e + docs/models/eventlistitemresponsedatacleaningupenvironment.md: + last_write_checksum: sha1:135494165d78fc964a07408cb27cbbe3328b35f1 + docs/models/eventlistitemresponsedatacleaningupstack.md: + last_write_checksum: sha1:48635cd80ec9b7c27d8e7a603a36ec478cdcef35 + docs/models/eventlistitemresponsedatacompilingcode.md: + last_write_checksum: sha1:98d2ad47147a7e9e2bc36121c09c2fec33ced97f + docs/models/eventlistitemresponsedatacreatingrelease.md: + last_write_checksum: sha1:095a1cb239fa5adb574db0dbaf83462e621f7f1a + docs/models/eventlistitemresponsedatadebuggingagent.md: + last_write_checksum: sha1:57a1ee2876ab94e7fdf1f29c60f4d1c9a64b48f0 + docs/models/eventlistitemresponsedatadeletingagent.md: + last_write_checksum: sha1:f367f1f9a32c6ca400ea0d40536d263a1d11f1f6 + docs/models/eventlistitemresponsedatadeletingcloudformationstack.md: + last_write_checksum: sha1:766d785ed212de339b3eccfb1d6e2dd7ac0ecbac + docs/models/eventlistitemresponsedatadeployingcloudformationstack.md: + last_write_checksum: sha1:8927fc2e3d64f1cf05769116420806e15464ceec + docs/models/eventlistitemresponsedatadeployingstack.md: + last_write_checksum: sha1:1ba886f7b44e1a3972d3884fa7eb767cd6831494 + docs/models/eventlistitemresponsedatadeploymentcreated.md: + last_write_checksum: sha1:5e2f125e0bb379c0feada68cd77b37845485afa5 + docs/models/eventlistitemresponsedatadeploymentdegraded.md: + last_write_checksum: sha1:8126ce44b27aaba9ad6a37df0a3ff0d7631f2c56 + docs/models/eventlistitemresponsedatadeploymentdeleted.md: + last_write_checksum: sha1:77e72d0a5ca491b427f21e21d3476991c28fcff0 + docs/models/eventlistitemresponsedatadeploymentdeletionrequested.md: + last_write_checksum: sha1:ac66b376aec25d6da16bc4c6a6f729dd1ce92972 + docs/models/eventlistitemresponsedatadeploymentenvironmentupdated.md: + last_write_checksum: sha1:e6e08ae4c2cfd8c2cbd251074291400d5ecfdb07 + docs/models/eventlistitemresponsedatadeploymentfailed.md: + last_write_checksum: sha1:ca75c4203a4fb5d0a0fd1cdc10b8bc9034c84cb1 + docs/models/eventlistitemresponsedatadeploymentrecovered.md: + last_write_checksum: sha1:4ad45f6f4fb67d34c349332ea2de1aa3db2fa9b4 + docs/models/eventlistitemresponsedatadeploymentredeployrequested.md: + last_write_checksum: sha1:6218b79c8eabd09b0daf6c76c40dd57f29baa5d9 + docs/models/eventlistitemresponsedatadeploymentreleasechannelchanged.md: + last_write_checksum: sha1:ccbfce66c6f5e1cf9f3c102fa4fc108cc8bfc3fe + docs/models/eventlistitemresponsedatadeploymentreleased.md: + last_write_checksum: sha1:6a02a3895e786f0c7dfd6026384e79d1a2fc4602 + docs/models/eventlistitemresponsedatadeploymentreleasepinned.md: + last_write_checksum: sha1:8d9ef1f307710d65cc9fedec263d4cd701192f35 + docs/models/eventlistitemresponsedatadeploymentreleaseunpinned.md: + last_write_checksum: sha1:6ba41b8baf4400aa84ece4416caaae0bcf9c5998 + docs/models/eventlistitemresponsedatadeploymentretryrequested.md: + last_write_checksum: sha1:3d435f7e107fe5bb28c6ccce6811ca2370ec4e63 + docs/models/eventlistitemresponsedatadownloadingalienruntime.md: + last_write_checksum: sha1:5607287d7c0c679f63b26fe77c4e1db52d3bb56e + docs/models/eventlistitemresponsedataemptyingbuckets.md: + last_write_checksum: sha1:48a5897795a83a237883f575a63262e3a2898e4e + docs/models/eventlistitemresponsedataensuringdockerrepository.md: + last_write_checksum: sha1:8126fff4e1a44f100f6ac31f2fd9531aa2b96c44 + docs/models/eventlistitemresponsedataerror1.md: + last_write_checksum: sha1:b988506c92a35468f292250a1ef74654d359c735 + docs/models/eventlistitemresponsedataerror2.md: + last_write_checksum: sha1:7f5ffba8fdb491d1194c794f7e9c4dceaf4d57f7 + docs/models/eventlistitemresponsedatafinished.md: + last_write_checksum: sha1:39531880a72dbc1b8d87265acbaa78963ae3dadf + docs/models/eventlistitemresponsedatageneratingcloudformationtemplate.md: + last_write_checksum: sha1:a8ff0e4ef14796c14f841a865fcca0658277cfe1 + docs/models/eventlistitemresponsedatageneratingtemplate.md: + last_write_checksum: sha1:1e8f1f6171acae58fd3a6408b842df6b475f6ab0 + docs/models/eventlistitemresponsedataimportingstackstatefromcloudformation.md: + last_write_checksum: sha1:85b2ec4ff171fe7b3a65de66b97dbc56c1aaddf6 + docs/models/eventlistitemresponsedataloadingconfiguration.md: + last_write_checksum: sha1:1807e2c5153c8faa08bbb6931e1fb457bbc5c6db + docs/models/eventlistitemresponsedatapreparingenvironment.md: + last_write_checksum: sha1:26290cbcccdf5c96251c2c3877c5dbc81f58f465 + docs/models/eventlistitemresponsedataprovisioningagent.md: + last_write_checksum: sha1:16feba293c8d97e6b805c58b511aa9862e5140b6 + docs/models/eventlistitemresponsedatapushingimage.md: + last_write_checksum: sha1:75b649c1be629b52306e63bbeb51135ec0168c8d + docs/models/eventlistitemresponsedatapushingresource.md: + last_write_checksum: sha1:f6dfc74614f04b342a1369e9b21f82d263dc4495 + docs/models/eventlistitemresponsedatapushingstack.md: + last_write_checksum: sha1:8f285e992fce96066408ef5a718f0cffef4fb15f + docs/models/eventlistitemresponsedatareleasechannelupdated.md: + last_write_checksum: sha1:091508a8075e091e2caf1ca4faf3989def5f1087 + docs/models/eventlistitemresponsedatarunningpreflights.md: + last_write_checksum: sha1:898594e5e1b7b1202bcf7f7c647ea5d6f04f6041 + docs/models/eventlistitemresponsedatarunningtestworker.md: + last_write_checksum: sha1:0a8b31cb1d3372cacc549f09aebcf684cfea0d09 + docs/models/eventlistitemresponsedatasettingupplatformcontext.md: + last_write_checksum: sha1:325a2feb929c3f01470c3e7a89f8aa4aa43002e4 + docs/models/eventlistitemresponsedatastackstep.md: + last_write_checksum: sha1:6b25a63e446f383758d808c81ca35777a671ae03 + docs/models/eventlistitemresponsedataunion.md: + last_write_checksum: sha1:62a31ce7766eb913fe34fb4cb4927dd5213578a1 + docs/models/eventlistitemresponsedataupdatingagent.md: + last_write_checksum: sha1:0be6e7a524020a9b5d85a9dca30b6725cbec0883 + docs/models/eventlistitemresponsedependency.md: + last_write_checksum: sha1:db31807738557c6012f358d9dbca29759de7b520 + docs/models/eventlistitemresponseerrorfailed.md: + last_write_checksum: sha1:40116575045ed251ca00b391ea78b1780ac15599 + docs/models/eventlistitemresponseerrornextstate.md: + last_write_checksum: sha1:4eca9da3b89bc3b7f2cf053932d5a15db966551e + docs/models/eventlistitemresponsefailed.md: + last_write_checksum: sha1:0cf6c42e4c7a3b604dac53f50c6bff36cb388e04 + docs/models/eventlistitemresponsefailederrorunion.md: + last_write_checksum: sha1:53e7d2c00efcb47f7cfdf82e1d8df390720e014d + docs/models/eventlistitemresponsekind1.md: + last_write_checksum: sha1:b5d2b76bb24597e479095c2fef59f85fab14b21b + docs/models/eventlistitemresponsekind2.md: + last_write_checksum: sha1:94e667f38339448c7a2196e62bec68e3801f9207 + docs/models/eventlistitemresponsekind3.md: + last_write_checksum: sha1:ba2eef2308fb377582b4bf75c9a64d78944283b6 + docs/models/eventlistitemresponsekind4.md: + last_write_checksum: sha1:0a4832a999e6b573bb41d8f7702301a895fd62b8 + docs/models/eventlistitemresponselifecycleenum.md: + last_write_checksum: sha1:38046635579dc6dce8036d7c0478ab2ca991d89e + docs/models/eventlistitemresponselifecycleunion.md: + last_write_checksum: sha1:135a4c1395d93b6c027005e8ec7fdc75d885d713 + docs/models/eventlistitemresponsenextstate.md: + last_write_checksum: sha1:627b2a793f1c75bfaf20d93700f098b7e50623c2 + docs/models/eventlistitemresponsenextstateerrorunion.md: + last_write_checksum: sha1:5d7b9aa6a13695c0e9ff2ecaa8f9b7dc501c61bf + docs/models/eventlistitemresponseoutputs.md: + last_write_checksum: sha1:8d52ca5acc8b4fd93ec69741931dcfe9aac44df6 + docs/models/eventlistitemresponseoutputsunion.md: + last_write_checksum: sha1:3c59e86fc66f3d7240625801c324394caaa6bc7b + docs/models/eventlistitemresponsephase.md: + last_write_checksum: sha1:13b1a01848f8efbbfd6e84cce88b0ca88ad6afee + docs/models/eventlistitemresponseplatform.md: + last_write_checksum: sha1:1592a66337f9c87e598fb34585ca4a765f53f5ac + docs/models/eventlistitemresponsepreviousconfig.md: + last_write_checksum: sha1:8792353d8c640ecd1232aba55578527f97763f49 + docs/models/eventlistitemresponsepreviousconfigunion.md: + last_write_checksum: sha1:af6ba5be7c9373a8a207a01bebbd32d41f903d90 + docs/models/eventlistitemresponsepreviouserror.md: + last_write_checksum: sha1:6631a048530d1773b1206d26eb44b8b0c66c379e + docs/models/eventlistitemresponsepreviouserrorunion.md: + last_write_checksum: sha1:2fe66d3ac0e9bd2ae0c2ca769606ec9d1bd925fa + docs/models/eventlistitemresponseprogress.md: + last_write_checksum: sha1:b7069eed55ff23bb100ad3599d689815aabd9188 + docs/models/eventlistitemresponseprogressunion.md: + last_write_checksum: sha1:75470db5f19beb3b309a5386d3e35479b2894a7c + docs/models/eventlistitemresponseresources.md: + last_write_checksum: sha1:4b9e88449977bf5598ac12ae729e845f4d30a41e + docs/models/eventlistitemresponsestate.md: + last_write_checksum: sha1:c62036be79fb4cc9ab84713831c9ab7c291ddec5 + docs/models/eventlistitemresponsestatenone.md: + last_write_checksum: sha1:27a1d8ab8485dca444c1bd30b45c8dc5c74cd742 + docs/models/eventlistitemresponsestatestarted.md: + last_write_checksum: sha1:4be0545cc94391968f9fc5add12b6f36678efed5 + docs/models/eventlistitemresponsestatesuccess.md: + last_write_checksum: sha1:3feec479fed60d81664655887aeff37c8e455172 + docs/models/eventlistitemresponsestateunion.md: + last_write_checksum: sha1:57d610183a3ebc0bc545c1e461dff245fcc9ace0 + docs/models/eventlistitemresponsestatus.md: + last_write_checksum: sha1:77b94249508cd34735fc35e69d3e165826eabe82 + docs/models/eventnextstate.md: + last_write_checksum: sha1:04302dc4569f7d9c67b37f56d9bd21dd983cb0a7 + docs/models/eventnextstateerrorunion.md: + last_write_checksum: sha1:a6a46cf0ba9dd2153c02a6d87856eccdf271a2fd docs/models/eventoutputs.md: id: 144262e477cd last_write_checksum: sha1:c3b8caf3933fb98801c3b38db45b11b645041f60 @@ -6886,6 +7413,8 @@ trackedFiles: id: 83c923c6f7b9 last_write_checksum: sha1:4525841766e8530ea2c67c86da54a6a720105fc2 pristine_git_object: a50a659f5c95f0cf91bcb3a44758405f218d68f6 + docs/models/eventphase.md: + last_write_checksum: sha1:96a29aa16ee1f8016e15f92bfa29469319adc52f docs/models/eventplatform.md: id: d90a73aee944 last_write_checksum: sha1:a39efdb2cd84c3a0ba4ff4ae4804cd426ec95a34 @@ -6898,9 +7427,17 @@ trackedFiles: id: 2352a4457665 last_write_checksum: sha1:5e4e052a4eeec49a55d80c5b42b336a41628c6a9 pristine_git_object: d5a119649539a17d2dd1b2f52f2e55e76d04c666 + docs/models/eventpreviouserror.md: + last_write_checksum: sha1:5280e25ab1d52a1852779853a29c12d6bbe05f00 + docs/models/eventpreviouserrorunion.md: + last_write_checksum: sha1:9f3ea06de13fa7d5d174ce203885e08437666836 + docs/models/eventprogress.md: + last_write_checksum: sha1:5aee489d79e0ed270d6b8b00ad8bd63fa4963c21 + docs/models/eventprogressunion.md: + last_write_checksum: sha1:4d84ac9dce69fbb590a2ca977bd5e22fca34e1d4 docs/models/eventresources.md: id: 7050a908473f - last_write_checksum: sha1:f5aba6889882c23c01dc10e8af07575fa8d437f1 + last_write_checksum: sha1:2c3ff057a5625b47391a1ece56a6bda6fe9fa1d4 pristine_git_object: 3abda94018b40ac51333d0eda8f3e8da162dfb0d docs/models/eventseverity1.md: id: 6b13b8c3529b @@ -6914,10 +7451,38 @@ trackedFiles: id: 66763e00989d last_write_checksum: sha1:6492882fa9172760d547fc140b69972dc6d2399f pristine_git_object: 3385f3555f987d8c6ab284de8b1b23f6db239ebe + docs/models/eventsourceunion1.md: + last_write_checksum: sha1:a2a634cb249ac2a6cd435102a98f074107b19be8 + docs/models/eventsourceunion10.md: + last_write_checksum: sha1:3b9bccf421998f1c68c88e2f767d9fc3b41d5c4f + docs/models/eventsourceunion2.md: + last_write_checksum: sha1:4f5f6737b48534c4dc451beb717f206590876300 + docs/models/eventsourceunion3.md: + last_write_checksum: sha1:2126e338b30433159d4f224b302e1e8f6efd46a9 + docs/models/eventsourceunion4.md: + last_write_checksum: sha1:dc06d56dc7c10067328a7f8b3504ed76c70f57d1 + docs/models/eventsourceunion5.md: + last_write_checksum: sha1:3ee64346c8d7297dc0abb8848e868b65caf518ff + docs/models/eventsourceunion6.md: + last_write_checksum: sha1:b2b8ef3e77b01b4a57780ade49f778b3a753c8d2 + docs/models/eventsourceunion7.md: + last_write_checksum: sha1:b40132e45e9455faa5060305f0910fb72cfab97d + docs/models/eventsourceunion8.md: + last_write_checksum: sha1:8b086938bb81d4275b09aa52a46c8f77f427c313 + docs/models/eventsourceunion9.md: + last_write_checksum: sha1:343fa8656b495efe9df4c5c7de763e7c5947e1e1 docs/models/eventstate.md: id: 9750637b2abc - last_write_checksum: sha1:5904601f83550737a968d06cb1b39f3d7c9ce2c5 + last_write_checksum: sha1:cfe269ba4cd63c9424b411722d85e8025b69d361 pristine_git_object: 9bd2f980f6fbdb2e21276f99f49ed75e86121fb7 + docs/models/eventstatenone.md: + last_write_checksum: sha1:75d35c698cc00e73096aef7af0dec3ee3d7279ff + docs/models/eventstatestarted.md: + last_write_checksum: sha1:9ca5b83cc6812ca546598191c3208de5eaee65c7 + docs/models/eventstatesuccess.md: + last_write_checksum: sha1:a15b0fab22178601a714af955ad4f8c9e66bf73d + docs/models/eventstateunion.md: + last_write_checksum: sha1:77fb4587c55281677e5f3ab1c930716bc0752f58 docs/models/eventstatus.md: id: 0848b1e061a2 last_write_checksum: sha1:fc2c28aa4d6b070f9ad32bbc7dd2a74cff8a7837 @@ -7010,26 +7575,26 @@ trackedFiles: id: 29f8588f12fa last_write_checksum: sha1:a1cd3421d85c592c3c55c6b60f3aa94e3753cba0 pristine_git_object: 04c45ae6ee2081b9d4c6a3add4cde3d5cf73728e - docs/models/failed.md: - id: 1a81e7fa1ca5 - last_write_checksum: sha1:c6f11baec19bee51d910e31683ad88c85654549c - pristine_git_object: 44e94835829d4a9eb4782ad37991a905b599c49a - docs/models/failederrorunion.md: - id: f5252a79145b - last_write_checksum: sha1:ef88281c359917f031b1b85e445718170fd9450c - pristine_git_object: 92d60bd095f3eeb55c262f72533712b9b2f43514 + docs/models/externalaibinding.md: + last_write_checksum: sha1:15a0b5a37efaac46773cf3657437d1843faafb52 + docs/models/externalaibindingprovider.md: + last_write_checksum: sha1:3b3352cf068b12b2f0544b6793d6519d7825dd36 + docs/models/externalaibindingstate.md: + last_write_checksum: sha1:2d7e71d1cd47aabb35ff4dc04b387c5fb4625503 docs/models/failure.md: id: 3f79c7d64eac last_write_checksum: sha1:e737dfe23a9232b67b4f1b202d7601b64a846fff pristine_git_object: 27f95ef9cd6741328345705811a2747981c6d80a docs/models/forwardimportrequest.md: id: "652670843092" - last_write_checksum: sha1:187b6fa79a4e7b4bc58bedf7c42bd06f7046ac40 + last_write_checksum: sha1:e8d8a9ab4ada6220093492930efcd37e59eaa9a2 pristine_git_object: 7e5bd6b51b1e2f2d675e79fcfb5e70912df88de1 docs/models/forwardimportrequestmode.md: id: 2f86df92c3e5 last_write_checksum: sha1:c8f1b5fa8cee0661d048c98fbb08ccb6c335076e pristine_git_object: 4a5bbc5dfc2027410713242c4e8a91b4cdb41edc + docs/models/forwardimportrequestsetupitem.md: + last_write_checksum: sha1:f4600b7d94d3b8fc5068989f1cb873840aa63649 docs/models/gcptargetstacksettings.md: id: 052dac1b861c last_write_checksum: sha1:9c26f50994afb69c4e46c6862c8a921ab26d97cc @@ -7038,9 +7603,15 @@ trackedFiles: id: e6a62e536d1b last_write_checksum: sha1:f8da06e308b916defb96835cdc797b7825c5cec8 pristine_git_object: 202d2d1aff78648b8722b94902903be382929789 + docs/models/generatemanagerbindingtokenrequest.md: + last_write_checksum: sha1:eaa0a2fbbcd34e00745e0443630d01f62788c261 + docs/models/generatemanagerbindingtokenresponse.md: + last_write_checksum: sha1:4666be75360afba00f00a93b0b1d3af9ff93f5fb + docs/models/generatemanagerbindingtokenresponsetokentype.md: + last_write_checksum: sha1:0582c9d794f45c4db9e637f7d879a52def20d6fa docs/models/generatemanagertokenrequest.md: id: 8390570078a9 - last_write_checksum: sha1:465cf7721d9a092c9a96029b57143dfb770b5f6a + last_write_checksum: sha1:5d78df140ab34e9972161d2f0588b806aa86ce9f pristine_git_object: 95fd3c5f182ae9a47116fd3da279175b39d0fb74 docs/models/generatemanagertokenresponse.md: id: 4e2794042c0c @@ -7068,7 +7639,7 @@ trackedFiles: pristine_git_object: 1fde08883923e2115ebad4918d913eff9f5a210b docs/models/gitmetadata.md: id: 4f307a0f1c00 - last_write_checksum: sha1:b8d4a44b4f6ff9287e3e19565e35af2d7f16e64a + last_write_checksum: sha1:9886843bd8d8339a5ef11d3f1fcd10ab55d1a985 pristine_git_object: 49247cc5a3da62bc9fe65e7b6e2d18f6f36e3f95 docs/models/gitnamespace.md: id: 017f80257daa @@ -7090,6 +7661,20 @@ trackedFiles: id: e3e28770ee19 last_write_checksum: sha1:85cacbefa4d3b8c425c02fddecc61e39be5b0b6a pristine_git_object: eeb0f477fa4e8f156a6799a2683a975d92c591e3 + docs/models/group.md: + last_write_checksum: sha1:b204528370b9d83249d9e880b5f0ea34425b0a48 + docs/models/groupbuckets.md: + last_write_checksum: sha1:40cd40ab152c314ef648aaab8d86bbf08931cffa + docs/models/groupcapabilities.md: + last_write_checksum: sha1:0be5ebaa70b054d8fb298bea243ed672e6bf6b07 + docs/models/groupkeys.md: + last_write_checksum: sha1:4c54134c2c077b3e2263fb91bdd9d4663994e794 + docs/models/groupmodels.md: + last_write_checksum: sha1:4744f3fa5c1ade65d01a429bfe9c52510c12a1e2 + docs/models/groupregistry.md: + last_write_checksum: sha1:2a3acaa30874e50df779b5edcd6cc47b2fd8685e + docs/models/groupregistryregistry.md: + last_write_checksum: sha1:5fd393360e4b59953f76a1d27afdc60121330759 docs/models/helmoutputs.md: id: 5e97a15fdea9 last_write_checksum: sha1:73955c103b1a32bd256c64fa176a57ee3f98b7fa @@ -7116,7 +7701,7 @@ trackedFiles: pristine_git_object: aa891e7058f90e6a511b235657a54fb66449a8fb docs/models/importdeploymentrequest.md: id: 6dd014230199 - last_write_checksum: sha1:1c0bbc21d8d324e59bee12a0578549f67663e5ec + last_write_checksum: sha1:5afcb20399e51edacd07d90d0b6a46287e61e4e0 pristine_git_object: a15c4351176918405c5afdf0a6caf525e1a66089 docs/models/importedresource.md: id: 03878e5a9d0e @@ -7124,7 +7709,7 @@ trackedFiles: pristine_git_object: c673c8ec6db5c2ce71448e5dbe8da4ac6623f162 docs/models/importsource.md: id: ba92656fe7f9 - last_write_checksum: sha1:8042363416165371aabfb031cd92166a8a422fb4 + last_write_checksum: sha1:16570d2fd462f34ac7cde9139c57860fb0c611f4 pristine_git_object: 83fddd6adbb2ddc243f204afc73b733682592eac docs/models/importsourceaws.md: id: 7da17ec3e88a @@ -7262,6 +7847,14 @@ trackedFiles: id: e9ac23929cca last_write_checksum: sha1:b800b7f1ecfe9cf94300b245230f7ed136336f30 pristine_git_object: e9f81700c83c75f0a26f3d2a4ba879b3971b8931 + docs/models/importsourcefailuredomains1.md: + last_write_checksum: sha1:493bb3b04d5d13d5eaf211a25722379f5fa2102b + docs/models/importsourcefailuredomains2.md: + last_write_checksum: sha1:18fd9d2934d2d6dfe13fb9e015936e0025dc65aa + docs/models/importsourcefailuredomainsunion1.md: + last_write_checksum: sha1:e613c69cd922e97fbd53a9554d3ec04b146ab97b + docs/models/importsourcefailuredomainsunion2.md: + last_write_checksum: sha1:1091e434a5695892f47a9d3b0a66d5e56c9fbf56 docs/models/importsourcegcp.md: id: 5cf2b91c12a2 last_write_checksum: sha1:fd434db85fd517107bf3e27a267af56afb9d48a2 @@ -7376,11 +7969,11 @@ trackedFiles: pristine_git_object: b7a6c664a91b2c281ace7537cf0d5222ecf68eef docs/models/importsourcepoolsautoscale.md: id: d23175c0acbe - last_write_checksum: sha1:59f11a93f33881b9ac17a501773cc8b691892cde + last_write_checksum: sha1:41d5fb24eaa3a8d12862d1a93f92e11461189c64 pristine_git_object: ee2cca309d34992641d8c4bb2e472135b91eb4e8 docs/models/importsourcepoolsfixed.md: id: 261100a7326c - last_write_checksum: sha1:a51eed069bca00573ac347ba51663f3bee4956bb + last_write_checksum: sha1:4d773bd62a1857033818edd567c452dd8079344b pristine_git_object: add5ba47823d0cbcbdbd79d02898310142b12901 docs/models/importsourcepoolsunion.md: id: 9bd7562cb44d @@ -7590,6 +8183,18 @@ trackedFiles: id: abc76bb1b172 last_write_checksum: sha1:20e0355859569bbb11e7a89efb0b4ef07c10b19f pristine_git_object: f4e1a92aad5be751dfa757425678a2eb4ae8f971 + docs/models/inviter.md: + last_write_checksum: sha1:beb150682b7f483ba0c8b35b33f474a48ac8feaa + docs/models/invokeoperationrequest.md: + last_write_checksum: sha1:703e1b174a1728674e4254b1f3e3a913d4ada55b + docs/models/invokeoperationresponse.md: + last_write_checksum: sha1:c2288865e4a01e649ef6eddb8c3460910bc1b0f8 + docs/models/invokeoperationresponsedecision.md: + last_write_checksum: sha1:1530b2fc4ec08f9a3daded8e7ac1169ce0175879 + docs/models/invokeoperationresponsestatus.md: + last_write_checksum: sha1:a16226607ef7bd31c3972cec720804fa601ee3fd + docs/models/invokeoperationresponsetier.md: + last_write_checksum: sha1:d155279905769937dd826b1635755388324330cb docs/models/involvedobject1.md: id: 6946ea66c33b last_write_checksum: sha1:49931b98fa3e1ad066fee5c5185804dac57d0cf3 @@ -7672,12 +8277,40 @@ trackedFiles: pristine_git_object: 9396c3183c975ef39f37a6ef55c05c492dc163d8 docs/models/keyinfo.md: id: 861bee65e06b - last_write_checksum: sha1:aef7310cd3e82d209a7453b2b94bcf4b219a8769 + last_write_checksum: sha1:69713df2f58323e966ad294ac4247ccf5376ac4b pristine_git_object: 764a6aa110ff857b65d527d1f5d8859f3387dcf3 + docs/models/keysaccesstest.md: + last_write_checksum: sha1:dc2d44dcee92bd5745d4202352875f95b617f1f9 + docs/models/keysavailability.md: + last_write_checksum: sha1:b37a9a7cd6fa8af14202a9b9860795e644719f28 + docs/models/keyscapability.md: + last_write_checksum: sha1:900c1ce670dcfd3d9253abee945ab044bafde4a7 docs/models/keyschema.md: id: dbf5c167e65b last_write_checksum: sha1:3c4dfc7987791c77b8723d9e6ec2909e62ab66be pristine_git_object: ea97c38d814ee3e999254ce09c0b21b366a27ede + docs/models/keyscredentialpolicy.md: + last_write_checksum: sha1:5f0bd88232cfaba95463ea5cc65929df16caa44f + docs/models/keysdirectprovider.md: + last_write_checksum: sha1:fffee9766e941c8ad97d3200d2d58f5ea5ff081a + docs/models/keyshealth.md: + last_write_checksum: sha1:97a3b52ee545cc55c0ed6251c4640f4ca928f9a8 + docs/models/keysmodelcoverage.md: + last_write_checksum: sha1:86a019f566e311dad2e7dcd7eeb6cb0cce293cd6 + docs/models/keysobservation.md: + last_write_checksum: sha1:203e12a401962c07e82ab8714bbf4d3d60599110 + docs/models/keysplatform.md: + last_write_checksum: sha1:709b4b460b4e2b869216e342b83f01c84b9a83bb + docs/models/keysprovider.md: + last_write_checksum: sha1:0b079e46ae87791d9bdf2f2975e5022d0adeb0c4 + docs/models/keysregistry.md: + last_write_checksum: sha1:5222220eeb6a9abe87c5dec38a5dda3192f21da7 + docs/models/keysroot.md: + last_write_checksum: sha1:e7e3d4cf7fb1b4a69a95bcc89fc3fa90eba5e30a + docs/models/keysrootstate.md: + last_write_checksum: sha1:c392d3e0ba8e97dcd0acb94a4a91add7986f8f99 + docs/models/keysstate.md: + last_write_checksum: sha1:7a04ccf679ad48e95f1347958e04d252a164cc61 docs/models/kubernetesbaseplatform.md: id: 0cae66996e40 last_write_checksum: sha1:f7aba2909136fc795cb23f347c5d3a30021c858c @@ -7710,6 +8343,8 @@ trackedFiles: id: b5136a55304f last_write_checksum: sha1:68fd7183c7e27d55d8d019059c811b2313bb976d pristine_git_object: 4b3e1ee0deb0c46f602187c7414d709338d6072b + docs/models/listoperationspluginsresponse.md: + last_write_checksum: sha1:ba6d8f7b87e3102ca00708f734c35ab0490129f2 docs/models/logcollector.md: id: d56c6fdac082 last_write_checksum: sha1:c14aaecac4c6087d38ce89a08b3658038682dfa1 @@ -7842,8 +8477,10 @@ trackedFiles: pristine_git_object: b9a41730a57329e4c8d0e4d9fe4fa1706474e487 docs/models/managerretryresponse.md: id: 2ca53c0a95e2 - last_write_checksum: sha1:202cfac51abb3c0295e94e55e23d29755648a001 + last_write_checksum: sha1:92fed6cb8b99aa63dd8d7152a318a17aea8dd4d0 pristine_git_object: 49ba6256a45a015b219c00df252c5d714ebc0ce9 + docs/models/managerretryresponseallowedprovider.md: + last_write_checksum: sha1:e45459f717a51d3287c398adc35d90045bca51a7 docs/models/managerretryresponseaws1.md: id: 9bfa57761df5 last_write_checksum: sha1:3ad3397567211cdefa8528f1ab15fda604f0dea3 @@ -8036,6 +8673,8 @@ trackedFiles: id: 87f81cf5bda3 last_write_checksum: sha1:ec32634c88db765fb7c95fb02098ebdc6e1977e1 pristine_git_object: 3c071bfa39bf534d8494e3dd506d10c53238ef63 + docs/models/managerretryresponseclientapi.md: + last_write_checksum: sha1:59927f80f01d6ccacdda1a5d9f778ee04081bec6 docs/models/managerretryresponsecloud1.md: id: 0dd968fccac7 last_write_checksum: sha1:4c31c00d0dc37907cd1cdb83493080fe72cc3d15 @@ -8108,6 +8747,8 @@ trackedFiles: id: 623a52993ca7 last_write_checksum: sha1:96996f930f8ff71d44b388ff1ce4d3dac1a4ba64 pristine_git_object: 154b3ac93c835e55990f038d84193d48aac9f377 + docs/models/managerretryresponseconfiguration.md: + last_write_checksum: sha1:c595da448666db018f11692a09f082c6c1e17dd5 docs/models/managerretryresponsecustomdomains1.md: id: 1ee14f6303c5 last_write_checksum: sha1:7f4e0e0e53f8004341f9ea1c936ae17d22496156 @@ -8120,6 +8761,8 @@ trackedFiles: id: 2663faf89ffa last_write_checksum: sha1:28b80c1a08305bc63319167a64301441d1d2d9c7 pristine_git_object: 62812ba11c21844fd1ea548a51dbdece6dcf76c4 + docs/models/managerretryresponsedefinitionid.md: + last_write_checksum: sha1:fa7b82aab018a9f3d5396d4ef4e01352d949d67e docs/models/managerretryresponsedeploymentmodel1.md: id: bcc80825b564 last_write_checksum: sha1:89d613b5228503794fb8606404a61b2f1c57f407 @@ -8260,6 +8903,30 @@ trackedFiles: id: 95569ea21b12 last_write_checksum: sha1:5b6aa39fba060ec129db6536578a8420bc7c6702 pristine_git_object: 7c6226da1b7e3f7d1f9cb554b93dbd5e507cfa08 + docs/models/managerretryresponsefailuredomains1.md: + last_write_checksum: sha1:95cb8c1a7b82f46c7d5f6b62cf48ca29e49130ff + docs/models/managerretryresponsefailuredomains2.md: + last_write_checksum: sha1:7debdf86122eca782452cd3ffc8abd001cd46c9e + docs/models/managerretryresponsefailuredomains3.md: + last_write_checksum: sha1:2f653a887950e37cc3de7b3df6a14cbace963173 + docs/models/managerretryresponsefailuredomains4.md: + last_write_checksum: sha1:0280dc71ff9c4ee0254112e7a7c69d17ae524da0 + docs/models/managerretryresponsefailuredomains5.md: + last_write_checksum: sha1:fce08dc429d98326f886c72ea1ffc588f4fe5c4c + docs/models/managerretryresponsefailuredomains6.md: + last_write_checksum: sha1:7297839e1338402fde089774104c0b4b0b47764d + docs/models/managerretryresponsefailuredomainsunion1.md: + last_write_checksum: sha1:5da1e69bdaa9250d181a399a473fb897d6955933 + docs/models/managerretryresponsefailuredomainsunion2.md: + last_write_checksum: sha1:67daaa672a04de62620ccc86c132b551baa4a09c + docs/models/managerretryresponsefailuredomainsunion3.md: + last_write_checksum: sha1:dbeeece48c8e941ece05e19c2ab3aa9709838645 + docs/models/managerretryresponsefailuredomainsunion4.md: + last_write_checksum: sha1:9d29aabc6ae1498dfcd3425cf319ad780a80bc8b + docs/models/managerretryresponsefailuredomainsunion5.md: + last_write_checksum: sha1:662a9207341fa197a3f9b62271a2ab35dcd2fb73 + docs/models/managerretryresponsefailuredomainsunion6.md: + last_write_checksum: sha1:2a113c134a2b7c4cc47cda20235597c587a53d4f docs/models/managerretryresponsegcp1.md: id: 50aa70abd7f9 last_write_checksum: sha1:5750a06e445f81cd4f0fcdc756d1f83c61f99497 @@ -8296,6 +8963,10 @@ trackedFiles: id: 376bd214ddaa last_write_checksum: sha1:c7fffef034e6b232ae27d7ebbd45461bcf7cd40f pristine_git_object: 84f52934fdfc60814709b483b9381e851567ff25 + docs/models/managerretryresponseitem.md: + last_write_checksum: sha1:44320622429e911a6bfe75712a1512c6a0af83d0 + docs/models/managerretryresponseitemenum.md: + last_write_checksum: sha1:bfeddf2ebd4882a19de15c9361cea3c46c45cbd8 docs/models/managerretryresponsekubernetes1.md: id: 52d82db5b574 last_write_checksum: sha1:8a1ce4fdea3e8544112629004e2a665389bde8f5 @@ -8368,6 +9039,8 @@ trackedFiles: id: 576a71ae226e last_write_checksum: sha1:62df5bde76fc0268fe9b03c0f4cd3ab857d227f3 pristine_git_object: d95ac045045a7c0f9699bb085ce659e5eca64d82 + docs/models/managerretryresponsemodelrequirement.md: + last_write_checksum: sha1:24de43c2016d65369fafa5b0ff969085bcc39eee docs/models/managerretryresponsemodemachineaddresses1.md: id: 3bb141894e85 last_write_checksum: sha1:5347884545e1607c7cc89623f974629545ca875f @@ -8466,27 +9139,27 @@ trackedFiles: pristine_git_object: 7a509442fcc0c4ba828bfab3a69d03f6bef6cf66 docs/models/managerretryresponsepoolsautoscale1.md: id: 5188fad3b76f - last_write_checksum: sha1:d14c52fce90bbf25f54879693a1492d713b68524 + last_write_checksum: sha1:e8cc10417202887406e2bae9fe9be87ce99d2ca7 pristine_git_object: c432650a97b10a4156212b1c23deca3149bbb148 docs/models/managerretryresponsepoolsautoscale2.md: id: 8dec6888ed6a - last_write_checksum: sha1:50bb8ff3cbff479a88009c2ccb84726cbc2eff9d + last_write_checksum: sha1:4b7e0ed75196d80dc209abff91e98d429bee6ed4 pristine_git_object: bd9625b80bf37e8443c6ff61ef707f559fd2102d docs/models/managerretryresponsepoolsautoscale3.md: id: 1d4e3af52045 - last_write_checksum: sha1:ef742205d6ab7f1cd5bb0826b5d21bb68adc9542 + last_write_checksum: sha1:4b6ea3e7598645cb208e41940cf0643ff83ccaf5 pristine_git_object: 3d044fa2c0dc4ccdf813fe073f14f4686860b2d6 docs/models/managerretryresponsepoolsfixed1.md: id: fdd2e78517d5 - last_write_checksum: sha1:be241761dce4fdccff1eca2c44490a10f2ebd78f + last_write_checksum: sha1:ca4c0d797b0362f00db873aae2bbf9dc61e81bf2 pristine_git_object: c76493d07a01d206d589669d34770eae9b876235 docs/models/managerretryresponsepoolsfixed2.md: id: 44efff08ad92 - last_write_checksum: sha1:bfd47abaa476c0f9b12e6207f56146ae6063f9a9 + last_write_checksum: sha1:34d50e525345481b68568cc60953cfb62d7bb2d3 pristine_git_object: 747038f9011a76d46114f12c0cf15b9d29dfd72b docs/models/managerretryresponsepoolsfixed3.md: id: 46437af278ef - last_write_checksum: sha1:1de21eb6312756c5a1ee1cef2f7a46582723c2ee + last_write_checksum: sha1:4aac441957ed771812af65c3d0079ab45eee5253 pristine_git_object: b6f323ea63262a5d648507de6c11c8f87432f4cb docs/models/managerretryresponsepoolsunion1.md: id: 89128921fbbe @@ -8946,7 +9619,7 @@ trackedFiles: pristine_git_object: c68331bee603e86465fa9f8ded028174580abf6c docs/models/managerretryresponsesetup.md: id: 62030e7f1593 - last_write_checksum: sha1:a3bb7e6a15da61cd2d1a35ec6153a95585524080 + last_write_checksum: sha1:46c84732f889db9a060179060350a217e1017401 pristine_git_object: 3ce743642a23e810da056adeb8a1bc3e1f0b4747 docs/models/managerretryresponsesetupcloudformation.md: id: b0d16782154d @@ -8954,7 +9627,7 @@ trackedFiles: pristine_git_object: 0d0c47bead12553400c3574bcc3164d241e579a1 docs/models/managerretryresponsesetupconfig.md: id: d4566dbcec9a - last_write_checksum: sha1:cf6409ac16d8941a198d303361204832d6d6e017 + last_write_checksum: sha1:f692b8c937838511ad8f09c6137d8d81713b0a4d pristine_git_object: 839c2dcb9b2b91d4b231edf795d0f92ba6cf4583 docs/models/managerretryresponsesetupgoogleoauth.md: id: 7cbca3c893ab @@ -8968,6 +9641,12 @@ trackedFiles: id: 1cfcbb08d50e last_write_checksum: sha1:274b74871b9b469b88d2d24a7922db2567f8dd8e pristine_git_object: 94761168ed88ba275a49d933826c8a8cb60a8b82 + docs/models/managerretryresponsesourcebuiltin.md: + last_write_checksum: sha1:cccaae9655595098ea315ff5b3f778b2cdad3d69 + docs/models/managerretryresponsesourceprojectrelease.md: + last_write_checksum: sha1:cc949b8217da6de8b375849e1233fc4ca6cc05c8 + docs/models/managerretryresponsesourceunion.md: + last_write_checksum: sha1:0b04e351b890003c23f8c52e4add4ccdb789f6ac docs/models/managerretryresponsestacksettings1.md: id: 468818963de4 last_write_checksum: sha1:aa1e008d88dda50717e4fb7eb794c61bb3095f46 @@ -9316,6 +9995,38 @@ trackedFiles: id: 961bb591630c last_write_checksum: sha1:22b8a4b6ef4e1c9f6204c74f38a92d7d5db4794e pristine_git_object: 9bb07766abe4f5703ac5390897905df89cd37dc7 + docs/models/modelavailabilitysource.md: + last_write_checksum: sha1:198053f3ea8f1094a8a5e5cb07809835edf891bb + docs/models/modelavailabilitysourcestatus.md: + last_write_checksum: sha1:8996154035043955713d79ce54091e3aa4962b0f + docs/models/modelsaccesstest.md: + last_write_checksum: sha1:b1c7e8f49a776f59f29c43083ad5096f41de7322 + docs/models/modelsavailability.md: + last_write_checksum: sha1:a89b8da9735f4a87582dd73055e69cc8e3af0a02 + docs/models/modelscapability.md: + last_write_checksum: sha1:5a70d509622b57c1c4ea4cb38463e324a18eedf1 + docs/models/modelscredentialpolicy.md: + last_write_checksum: sha1:1fa2c60093481d55fcdc9801601080af1b071067 + docs/models/modelsdirectprovider.md: + last_write_checksum: sha1:02c09494870be5ec5fccaf2abd0ce6990017f62d + docs/models/modelshealth.md: + last_write_checksum: sha1:42392872714cc0a564c9441f8725c311a3f3b359 + docs/models/modelsmodelcoverage.md: + last_write_checksum: sha1:57ba4b4e127c5b4284abcb79f351d9596b6ca29d + docs/models/modelsobservation.md: + last_write_checksum: sha1:a2f56aeb9b856ca792ded9807c01926fa5391c40 + docs/models/modelsplatform.md: + last_write_checksum: sha1:e0d449191674e624071f90028c6458186c265f79 + docs/models/modelsprovider.md: + last_write_checksum: sha1:7af0900266a4bdf10e45f2ecc86432bf91498ea3 + docs/models/modelsregistry.md: + last_write_checksum: sha1:b593d900563a698b5c3e3f3d4f784b4bbc1cc289 + docs/models/modelsroot.md: + last_write_checksum: sha1:d3eac7c0f9892f6169897852fd0dde384c1b99d4 + docs/models/modelsrootstate.md: + last_write_checksum: sha1:1b71fc880327874acc16d2a89c4008a918d1130e + docs/models/modelsstate.md: + last_write_checksum: sha1:03570f187b938b1ecfcab4570217f7a9265b2634 docs/models/modepersist.md: id: 1fbaa5145a0f last_write_checksum: sha1:63936e2f5ab0b96727f9d6f09313c5b1801c7af0 @@ -9330,7 +10041,7 @@ trackedFiles: pristine_git_object: 3ea2bfcf835d798054b3198ba6b6802a55897ed5 docs/models/newdeploymentrequest.md: id: 7f6b60c2f43a - last_write_checksum: sha1:dcd229066fb4b33d92cb040737f1a81e6c743f26 + last_write_checksum: sha1:26fff9644a7dee435e4d66ac2be735b4535fbaef pristine_git_object: d71e782a5608cc4221ef40896c10bf1b56c26003 docs/models/newdeploymentrequestaws.md: id: f8a2c70fbad4 @@ -9492,6 +10203,14 @@ trackedFiles: id: c21d21a1003b last_write_checksum: sha1:d026f9bccf478a222ca3e3fed173e346f9e6b307 pristine_git_object: 5b42e18b3062c270ad5bf3a115a5eb7649825b77 + docs/models/newdeploymentrequestfailuredomains1.md: + last_write_checksum: sha1:97daa7006f519fe9116feb0833fde92d2dab5763 + docs/models/newdeploymentrequestfailuredomains2.md: + last_write_checksum: sha1:a27bbeb960507cecd69a0b61f86dd7346953008e + docs/models/newdeploymentrequestfailuredomainsunion1.md: + last_write_checksum: sha1:3bf9d2e49422815dc61f90a58aeed5d18e03bc31 + docs/models/newdeploymentrequestfailuredomainsunion2.md: + last_write_checksum: sha1:cb874232bdb9b7b1d4616a18e7dd461d1af86248 docs/models/newdeploymentrequestgcp.md: id: f4d74bf2e61c last_write_checksum: sha1:7221cb11d1b400a9bfd1588ee44950819a37af6d @@ -9586,11 +10305,11 @@ trackedFiles: pristine_git_object: 475db364a049954ab8b117c56e0ff1633f0d9d51 docs/models/newdeploymentrequestpoolsautoscale.md: id: 2532be14903f - last_write_checksum: sha1:1095a12cec9b39ab96223c61038790a326c83041 + last_write_checksum: sha1:24663e8690f3e0c8fffed3934a6895859a18152c pristine_git_object: 36ca20e5e7761cb8c7eeecaf03a840cf386a90c0 docs/models/newdeploymentrequestpoolsfixed.md: id: c83f39bdb9b8 - last_write_checksum: sha1:ba9b4776b749afe1946303009b102bb08de9a00d + last_write_checksum: sha1:81c7a944ef946a764afb4a2996236417e6552a3b pristine_git_object: a6bc6a7e460f58d6678123d76962beaa53b127b8 docs/models/newdeploymentrequestpoolsunion.md: id: 9615aca40124 @@ -9744,6 +10463,8 @@ trackedFiles: id: 69d9e939237b last_write_checksum: sha1:7cc122807c650b91209e2ad09673d77669b43de3 pristine_git_object: f8088f3d17dba97334acb241140c9b38c3b9d309 + docs/models/newdeploymentrequestsetupitem.md: + last_write_checksum: sha1:c5523abe10aab66f538a7cf1ed7bc99649c651e9 docs/models/newdeploymentrequeststacksettings.md: id: b59201d117b4 last_write_checksum: sha1:177f16d91e739a02c6704d492278a7e221e46dca @@ -9784,14 +10505,6 @@ trackedFiles: id: 9eb0ea873e80 last_write_checksum: sha1:1fe40a47dca32273d7c397841c3882459d1519ef pristine_git_object: 25bdd3f1e03164d4148df1298ea138b984427a1e - docs/models/nextstate.md: - id: d4a4b873c6aa - last_write_checksum: sha1:c73618e125b53dd07c7961b2db7f55976cbd9ab3 - pristine_git_object: be86d9277c4deb5e245bb247563b1b6a7f3d97ef - docs/models/nextstateerrorunion.md: - id: daf2007e4486 - last_write_checksum: sha1:eaca175581f3bdcfb3d5d7820ba67f34a21f53fb - pristine_git_object: 08a254372b574c68f6b4bd7ec6fdd46b569b1d51 docs/models/nodecounts.md: id: 74a189e7c9ff last_write_checksum: sha1:17c2a6067a9d114a323a3b55fb48fbb79b856a6a @@ -9840,6 +10553,16 @@ trackedFiles: id: b2753c1128e7 last_write_checksum: sha1:472f05c11b6355a027fea586e79069f31a2f23dc pristine_git_object: f66ab26107ac7d6c39014ffc96f61a90f0fa0732 + docs/models/operations/acceptworkspaceinvitationrequest.md: + last_write_checksum: sha1:7302986e31038a820778303bc119aea6f31d9bd1 + docs/models/operations/accesstest1.md: + last_write_checksum: sha1:89dd99ab430344015eb1d761d81504c53e11f6d3 + docs/models/operations/accesstest2.md: + last_write_checksum: sha1:32ae03ca27c6b481bd8d6ff557d5206855920add + docs/models/operations/accesstest3.md: + last_write_checksum: sha1:392632b8f2a6a4eb4cef1c935d1172677becdc80 + docs/models/operations/accesstest4.md: + last_write_checksum: sha1:4b47526c9f4f1b5a37927e4ce57f453f588c5e12 docs/models/operations/addworkspacememberrequest.md: id: a35dc9e3f811 last_write_checksum: sha1:09bbfce0416534af4325c2ef080464493aea3c5b @@ -9848,6 +10571,8 @@ trackedFiles: id: 35b3bd6d442d last_write_checksum: sha1:c90d2f8f9bdf0f21c231c06c8e8e0f22720976ba pristine_git_object: 369e68be82a3218bbc9c6f603b77b1a8762efac0 + docs/models/operations/allchannels.md: + last_write_checksum: sha1:bd8dd946284d289a7df8131008371f149ef6388d docs/models/operations/allocatable.md: id: 357e913c04e9 last_write_checksum: sha1:4e20cd18f10574c93d06b69920ad619de3a1f611 @@ -9860,26 +10585,48 @@ trackedFiles: id: 19ad9c7ecd8f last_write_checksum: sha1:c09bc5c2caaae0c85e9165883a9d292c830e45ba pristine_git_object: 66b5b9f2ec1235b91465da6da1f9ab99aff46bc1 + docs/models/operations/applycontainerregistrymanagersnapshotrepository.md: + last_write_checksum: sha1:36ac415c5cdfd9c7200f95388cfb238f4defca92 + docs/models/operations/applycontainerregistrymanagersnapshotrequest.md: + last_write_checksum: sha1:a9f38823721bb7062df8808f984237f09c7b093b + docs/models/operations/applycontainerregistrymanagersnapshotrequestbody.md: + last_write_checksum: sha1:e3ad11ff75c57fef7667e9271bb8459778215896 + docs/models/operations/applycontainerregistrymanagersnapshotstatus.md: + last_write_checksum: sha1:2ff8c2b7f85b2b39fe5be6eda8cb39f478e9b557 + docs/models/operations/approveagentsessionrequest.md: + last_write_checksum: sha1:5c90b5dea1a630e2045b2592c041c2c451236f0d + docs/models/operations/availability1.md: + last_write_checksum: sha1:b1e71f291ad1557ac83533e25605e9e9b6007e99 + docs/models/operations/availability2.md: + last_write_checksum: sha1:eb03296860bcef5768eab9a62b3e3d7512ebd476 + docs/models/operations/availability3.md: + last_write_checksum: sha1:ef36871cf91064cc7512af688d37f13a56a7dc27 + docs/models/operations/availability4.md: + last_write_checksum: sha1:79182fe153fbfd7e0183de7dd3cd4cbc6fcb19aa + docs/models/operations/availabilityenum1.md: + last_write_checksum: sha1:b1e27aa810620d5161bd972cdc3de86a0928b404 + docs/models/operations/availabilityenum2.md: + last_write_checksum: sha1:518626065b4f9831799db12fc61d8631cc686736 + docs/models/operations/availabilityenum3.md: + last_write_checksum: sha1:cbba511fa38adbeef4138696965332b47dea5a5e + docs/models/operations/availabilityenum4.md: + last_write_checksum: sha1:babc647ddc8d53b05b26b93862a0aec9847f14d4 + docs/models/operations/availabilityunion.md: + last_write_checksum: sha1:a57701a2eabc9d0c072784cc117296b5294c4956 + docs/models/operations/available.md: + last_write_checksum: sha1:e94517a8fbbd412ef09d91863a8b89ec5b712724 docs/models/operations/backendenum.md: id: 10b6d15a7784 last_write_checksum: sha1:db5d7a4ab59d5801d68f4cb54cce8bf175935ba9 pristine_git_object: 90709c9f7c2d7d81feb4cba244f1b9f85733721b - docs/models/operations/blocker1.md: - id: 6f611c9d5b53 - last_write_checksum: sha1:3f738712a0a0a99dd3390f331d44eb09441f4ac6 - pristine_git_object: df20e2c8c7e03853a847155c9e49df7898b810db - docs/models/operations/blocker2.md: - id: 526e305ab988 - last_write_checksum: sha1:65121f69c6018adcaf1036a358e9b5fbdc29ccb0 - pristine_git_object: 224a1528b5360569ced19c143ceb9c7c7aa10b2f - docs/models/operations/blocker3.md: - id: 368049a7cc02 - last_write_checksum: sha1:666334a9322c609939febece887592fe792aa94f - pristine_git_object: 1fd22687c9fc7dea35c544bd09ffd6862cc15a04 - docs/models/operations/blocker4.md: - id: 1de5fa5fdbe7 - last_write_checksum: sha1:40abf33e84ddca375341b28322bae66f307aa4d0 - pristine_git_object: 7cbc1209e6cc9f37eeef9d2859cea13219b10ab2 + docs/models/operations/blockerenum1.md: + last_write_checksum: sha1:fc45a83db12a3240fca57e4befc8701156068619 + docs/models/operations/blockerenum2.md: + last_write_checksum: sha1:af6cb1cb7c2b08b9e2006952e2eaee469f86be53 + docs/models/operations/blockerenum3.md: + last_write_checksum: sha1:ccef78d5e0e1a3e6672f44f1d51b757cf5c20445 + docs/models/operations/blockerenum4.md: + last_write_checksum: sha1:3cad596e74393b19b9a90c2d3a6fe0698e140cb0 docs/models/operations/cancelmachinesmachinedrainrequest.md: id: f3161c533632 last_write_checksum: sha1:209b17fbc97a549335c306672f474d9b3f18d201 @@ -9974,263 +10721,271 @@ trackedFiles: pristine_git_object: e155f047dfb6d7e840a087e5c60a2f8b2860bea1 docs/models/operations/collectionissue1.md: id: 76f31e972b98 - last_write_checksum: sha1:deefa8f8c404c6031e25d2b628ab78a43c5121a0 + last_write_checksum: sha1:d1baa6d52985d44962300657e7d285ac3fb9cb5d pristine_git_object: bca15d221765f2ff3f178117bd8dd122ce3580b7 docs/models/operations/collectionissue10.md: id: 681a072ad6f2 - last_write_checksum: sha1:20edd68ac256182d333308c25309e97705a79f05 + last_write_checksum: sha1:a405c9860deb3d8dc5da433cd5dcdb1b91b4c361 pristine_git_object: 3050bf242d85e5fcbaa095ec363a05acd4a02919 docs/models/operations/collectionissue11.md: id: 8b9e23269df6 - last_write_checksum: sha1:bbb009148f33eb95411c4f648815f9718e0a6db1 + last_write_checksum: sha1:429ef8629ea6bd21613e6b64ea55cf3ca3904843 pristine_git_object: b390854ddc973dc3cc40664fea04a4c01265250f docs/models/operations/collectionissue12.md: id: 04005abfb496 - last_write_checksum: sha1:e74ea73b4413ea1f20fb234a1f90e6cce5144191 + last_write_checksum: sha1:cc6fedc0efe8674da08f085137fa2104614171f2 pristine_git_object: fd5270a5d7962afde8e6c2d51d9615124a460bbc docs/models/operations/collectionissue13.md: id: 122daaba33a5 - last_write_checksum: sha1:859761eea5018e6ac9a7470b998c159ad1af8651 + last_write_checksum: sha1:8127c05dae1ed035678038e2347620d6015ea12f pristine_git_object: 2b6d6d108a425a4bdfcdfebbc754bbadd3bc7ce2 docs/models/operations/collectionissue14.md: id: fc22d492004c - last_write_checksum: sha1:50f75d66b6da8dddee930a0be4755128643f1c2f + last_write_checksum: sha1:ff3bef878c7a856503b8c863209d32cc0b18ea79 pristine_git_object: 27e0a3e21d77655448df6221e18af4e163decf46 docs/models/operations/collectionissue15.md: id: 1c8e7afd7682 - last_write_checksum: sha1:eb051957d1657997d1ce2d7b70f512fe51ab8163 + last_write_checksum: sha1:83d7b79cc4964d9d2942426eeb124fae4661ffd8 pristine_git_object: 116bcef66057f36caac257d26ffe18683a5d5842 docs/models/operations/collectionissue16.md: id: 21b18f5bcf4d - last_write_checksum: sha1:68387d4494c094d94d18617d8c8c863376852d09 + last_write_checksum: sha1:026b36e36f6d4eb24ea4f7ace265fe236557cef1 pristine_git_object: 24c27dd356d82c73f5ad268f28cb014bf42bdacd docs/models/operations/collectionissue17.md: id: 6f610a7e1527 - last_write_checksum: sha1:ebcb3c1f05f5353eefc787524eb3235d01236eb9 + last_write_checksum: sha1:1c9d621b5ffe25d5ff8a9b3f0e55a501fc3fd0ac pristine_git_object: 1e7f79db4b98499ed00020a9056eaaece146be95 docs/models/operations/collectionissue18.md: id: 990af97db304 - last_write_checksum: sha1:94a7bfffceff088c8f38cc1986df26101c62b189 + last_write_checksum: sha1:00e2dcf6680ab27cbf37db9df09df28fee86e2ad pristine_git_object: 10cfae5f70c41edec7404889b3d8b78381f33d05 docs/models/operations/collectionissue19.md: id: caaf6daea795 - last_write_checksum: sha1:a7723bdb27c3b86b5f3deab70e7b3625b7db1da1 + last_write_checksum: sha1:e18cb1159cbedc818e82fc1e0b1dbd68897f6dd8 pristine_git_object: 6ce76929431f91ec6668aea58a31674fd7802268 docs/models/operations/collectionissue2.md: id: 669fdbfe82e3 - last_write_checksum: sha1:a65f439a647fb277badb7f824ceb928a89eefa19 + last_write_checksum: sha1:1d0c1b66c32fc39b13ba39ce2a9a4399e217e6fa pristine_git_object: a85eebeca5b52ee734963fa9763b14ade838a494 docs/models/operations/collectionissue20.md: id: 172fcf168958 - last_write_checksum: sha1:7703f7b11a701b2585c0b1a2d3151cec389aa606 + last_write_checksum: sha1:9007bf50e330c0fec77772452d62e98982fe3ee7 pristine_git_object: ff48ab373757b9a135f1749d84c1da59975ef327 docs/models/operations/collectionissue21.md: id: 8e1f08b26269 - last_write_checksum: sha1:12fb804c1088914136fd37923d0a15804dc064b8 + last_write_checksum: sha1:df37c1a4c07ff5c704ceba5a6fc14ce564c96adc pristine_git_object: 1d1076a09d6c944826e7ed7ac82c6de424e20555 docs/models/operations/collectionissue22.md: id: b50726280437 - last_write_checksum: sha1:cc4e7588871e3377a622dc22a1037f1e273a78d0 + last_write_checksum: sha1:0cc611237561c8cf55ee28acd256c5e9944169db pristine_git_object: 37694bfaa13a239406b700f2314f475738e18891 docs/models/operations/collectionissue23.md: id: e7ef77938dc6 - last_write_checksum: sha1:ccbb8f74b40f91b8452902a6602d611685c9b2b0 + last_write_checksum: sha1:d518f241f7b3fb5307228336036d944f9a7b9862 pristine_git_object: 7a5a246fedc23c418c6b030bc0681c895c34973a docs/models/operations/collectionissue24.md: id: c00c17605e9c - last_write_checksum: sha1:92ab82c06815c7d00565038ddf4cb1542809cd29 + last_write_checksum: sha1:30f235bb709361910f70e8ab1815b4dd4709d91b pristine_git_object: ef6e233524b63d5dad724dcbeacd8313a23c7fc2 docs/models/operations/collectionissue25.md: id: 4b66f99920d2 - last_write_checksum: sha1:3ba85df9f7d8397ae5925616674f67154439ac12 + last_write_checksum: sha1:8a75a55895f191133640e4748ef3b92ed77242ba pristine_git_object: e295a6997a07d1fccf7d5b6fdf1e4cf9bd1a854c docs/models/operations/collectionissue26.md: id: 575e1e317cbe - last_write_checksum: sha1:c9215726299d135fd2ddc9c1b1b371e9f94dd13a + last_write_checksum: sha1:1e6c352b6492d44c39c9da96ee516e7eea4aee4a pristine_git_object: 84d58589af286904fba7a25bb9a0ab313a3706fb docs/models/operations/collectionissue27.md: id: e7e78c18888f - last_write_checksum: sha1:6c12bec42c064ee0a3bceac2b55725efce28d801 + last_write_checksum: sha1:ce617b471d92ba0087ca2349ff8811ceba6648d9 pristine_git_object: f662d6bb24562251b1cd187e196f2c8d80f5802b docs/models/operations/collectionissue28.md: id: d6a8d66492c1 - last_write_checksum: sha1:e38496995745d46143d74f1cdc09dfec0c6d2935 + last_write_checksum: sha1:f17ae53c79ebfe8e255323bbf9f625a3c777d80b pristine_git_object: 1f217ebacd4ee2d251302b5d3202616c86b855a6 docs/models/operations/collectionissue29.md: id: 7ec8a87e57b1 - last_write_checksum: sha1:9c76de902ab3fb985525a38c2705d4ed936ba4b8 + last_write_checksum: sha1:f2291b3273286541bec4714e7935f7133f85c5a7 pristine_git_object: 9f9f97d304db86c2e1b1bed0e2d71b48bea03b27 docs/models/operations/collectionissue3.md: id: 674bc58efe81 - last_write_checksum: sha1:7d8f37f539136d4b7cd24f29ab6f2759fe2f7bbb + last_write_checksum: sha1:b49cdb20b4c8992de1b8ac8f2114cb363189cfbf pristine_git_object: 29a996b00ab7ac80786f8a63e64ad2c3cb623725 docs/models/operations/collectionissue30.md: id: 6a49e2e2f34f - last_write_checksum: sha1:05ecb998ed056a44558bbcb2afa44374d650d512 + last_write_checksum: sha1:65cd00092875fa1c0d4fe6fd707af620d516aa60 pristine_git_object: c3c209a0943b7373e0f7a7c22e70e87c818b36c0 docs/models/operations/collectionissue31.md: id: ccfa3960c69f - last_write_checksum: sha1:9bedff85cc158c46e4a00337a85a9ce4f4ecbf87 + last_write_checksum: sha1:a544b4b3d447882ddd58e75178ab7f199a88bc2a pristine_git_object: f4ac17acb1fcafe3702dead3505376fc8b644a74 docs/models/operations/collectionissue32.md: id: 717952e3192e - last_write_checksum: sha1:d49988589ef257b3cc5e7fb94ce3b1658eea3315 + last_write_checksum: sha1:f4c06f4bd05689eea1a05722e807984555947080 pristine_git_object: 7350ef977e568f56853b89ae5f8aab79fe499f95 docs/models/operations/collectionissue33.md: id: b463e538b4a0 - last_write_checksum: sha1:97b6a76de4a85eff0274e8cd17ada0acaca7dc25 + last_write_checksum: sha1:7a1be69cdf2965750aa2de2033e73a64dd3bdccf pristine_git_object: 06059366d9632c9482f1ce8aa107660e1526d64c docs/models/operations/collectionissue34.md: id: d48ef9290cfb - last_write_checksum: sha1:bcff113ded0115414f5faa7ffabaab8bbd66309d + last_write_checksum: sha1:a7b73d62bf366e5fb66548cf0fc322712f7c7822 pristine_git_object: 5534e87c1dc0a30591e7dd57dd396fa444e1e1e2 docs/models/operations/collectionissue35.md: id: b7554a8e025d - last_write_checksum: sha1:ec418ad1b335c6d74378f3cfc9e8441817ca72b0 + last_write_checksum: sha1:912606158028c4c9446b95b7648dd6c0becd4987 pristine_git_object: bbbf4c86408a4912f604b5812406861e7ec53981 docs/models/operations/collectionissue36.md: id: 549afd4ae71d - last_write_checksum: sha1:3eff6286b5bf91f8cd8be12bfd342ae0d7821960 + last_write_checksum: sha1:5a905802e84f04d055bf380a7e2565779412a060 pristine_git_object: ea0385bbc2a44e4f36d14f59e8f6f461294aca9e docs/models/operations/collectionissue37.md: id: 7055f4a99569 - last_write_checksum: sha1:cef8d8670c6c5c21e5c46d9ac1f2d9cbedf488a1 + last_write_checksum: sha1:4ab42f22065eca119159da3cfd676ac57b43d0dc pristine_git_object: ffe3df872fb3d082da12cd688684449439d0fe0b docs/models/operations/collectionissue38.md: id: 712109c9d65c - last_write_checksum: sha1:306d68a1615c09abb38477b5ef13d1201a4480e8 + last_write_checksum: sha1:6c620c75a63d6a89d76cdaf3a924a6b6c5b68706 pristine_git_object: b51ea1e042ee5e8cee0aad30472f4647a0a48fb7 docs/models/operations/collectionissue39.md: id: 34c6eee54ae9 - last_write_checksum: sha1:4df935f5af54a3ac2ad29aab6ca74d2bdc526ac9 + last_write_checksum: sha1:6a2ceec01dbb5eb46cef9b1243258fa91ebcae77 pristine_git_object: ff9e2fb60d336df3a4285286bb974856ec8bcf0f docs/models/operations/collectionissue4.md: id: 9364f2d68d8e - last_write_checksum: sha1:1de6c78fcdd19750dc7850d775d8762dcf78a8fc + last_write_checksum: sha1:35de92d63c860d74bc79881a39be3fbc13f67c33 pristine_git_object: 6468daa3af2fe8b7cf1965d6b471c1f61629e748 docs/models/operations/collectionissue40.md: id: 70aa636a2ed2 - last_write_checksum: sha1:b545e80ee56e8cb0faa35e6036eb9e8ed353ed1f + last_write_checksum: sha1:75d5599719ca01b59dfb13399adc92b3ea1063fc pristine_git_object: 77b2483b7127b3eb690e77f7a562c094d23e44af docs/models/operations/collectionissue41.md: id: eeb44cb22a49 - last_write_checksum: sha1:7b8711106010562791ae2497a0e5e39356c984b4 + last_write_checksum: sha1:cf5cf0c7491c5f150afaa2dc27ea35dd4586c60a pristine_git_object: 89acc777913d52e2e8b0742667908e36f34c8e4d docs/models/operations/collectionissue42.md: id: 872f806c6428 - last_write_checksum: sha1:a052abd5c3ed7af3d2c7222af45c36c546ace4af + last_write_checksum: sha1:5bd9b3adf69a10f934237fb9a11137b635183f66 pristine_git_object: 0d3afcb96be7eaf377b439c0579b2a2e107a7364 docs/models/operations/collectionissue43.md: id: 70bfa1380d99 - last_write_checksum: sha1:3f1caabfb8a2b744441b7571776b5ce5f1b1d067 + last_write_checksum: sha1:72cd15a01a2ae32abcb9f9fe106330791b35f7d2 pristine_git_object: fe7de7cf0174423d155b8e15098e68ade83846bf docs/models/operations/collectionissue44.md: id: 611cf46459de - last_write_checksum: sha1:5e2d366cec403185136cfe61fc01abb79cfa1b14 + last_write_checksum: sha1:a83cb546e55a7cb1bf2c09e062a2ed1c55017ac6 pristine_git_object: ae191d59457ffc6799fae73190d5e58462d84141 docs/models/operations/collectionissue45.md: id: 3872fa3bdde3 - last_write_checksum: sha1:5047dd7462f659a0f17e46c05bfdf53dcb8f2c1b + last_write_checksum: sha1:9a08ca95cb21e97b5275067a5cb70d2f0703cbf2 pristine_git_object: fdfd387f8366e96b9d91f608d7147be1290b89cf docs/models/operations/collectionissue46.md: id: f3e5fce36b11 - last_write_checksum: sha1:82551ec8e124e8aebd3ccabef2154f86a25c52e2 + last_write_checksum: sha1:bb755b20089151928ef09b86dc2c44398793c999 pristine_git_object: b4d0624e553deefeb824168608e150bc29295534 docs/models/operations/collectionissue47.md: id: 44b3fd4ee31a - last_write_checksum: sha1:013741375dc4fc199bc3233977a832233d4f5525 + last_write_checksum: sha1:6ca8d7bb7a7a9e3ae5abd373129f7b562cc8ecc7 pristine_git_object: 3b852ebd3bfc9ce22c631892c0d68a4d33d7a848 docs/models/operations/collectionissue48.md: id: 5d85706a32d7 - last_write_checksum: sha1:060a0b0aee43101ca1112a4e190dbb837416b89d + last_write_checksum: sha1:0a3dd6c906d2e0109a367e8a0e23d15f4b3c08bc pristine_git_object: 01e4ae081ff56db74a1e405884b43f8b956adc54 docs/models/operations/collectionissue49.md: id: 73b70ccf3b58 - last_write_checksum: sha1:3504d8e467dc260b9b1671def14559bbaeb1dee2 + last_write_checksum: sha1:07824d347f5743c56ff54b81c47d8e27d8d42a58 pristine_git_object: 4014a52c7630d7673e6a9b9dbf6301b686bd5b8e docs/models/operations/collectionissue5.md: id: 92f3d3089996 - last_write_checksum: sha1:a495fffad00b1be0e88e57c2e9675dca70834ff5 + last_write_checksum: sha1:37388ac5cd3d4e816f7cf1347a7741c6f7a24c96 pristine_git_object: 53bd898f4b2d4c46c1770e767fa18e16e5174894 docs/models/operations/collectionissue50.md: id: c7b8b2e1e1f3 - last_write_checksum: sha1:0da7b00e882a3e5100a1b3da38428ab064441736 + last_write_checksum: sha1:ee4c59d14c936b57245babbd7ced71878da60f87 pristine_git_object: 50192160e344996c880302fd394ed737a4c3b652 docs/models/operations/collectionissue51.md: id: 936399eb0321 - last_write_checksum: sha1:2cc0ccfa88d1d5b8c4b1e9dbe9ee08b5affe3fd2 + last_write_checksum: sha1:cde369cb886c4fbdc6f1d717efcc4b6f55095d5a pristine_git_object: 65e7f1e4fab31c6623ec1011057f7838ec2770c5 docs/models/operations/collectionissue52.md: id: eea9b4cfe82e - last_write_checksum: sha1:c0a926b6b41e3377c8d60e7c1b61ccdd04100de1 + last_write_checksum: sha1:293a2300530a86e23fd61ec70af773701d030616 pristine_git_object: f3d9d4add7549c667d7817c9c028fdfea50dac4b docs/models/operations/collectionissue53.md: id: 812389d7e15f - last_write_checksum: sha1:163d243bae0994a19aabe4035dfaff5f249c56e1 + last_write_checksum: sha1:9cc9bcf0d120283fa1f2fbd5d5df0eea85c7477a pristine_git_object: 6b9b070b0ef54227ae3d088b255b37ef53fc4957 docs/models/operations/collectionissue54.md: id: 5f60ece36546 - last_write_checksum: sha1:67f5cbe22618115e87eeadfbf6e5791f396283fb + last_write_checksum: sha1:f333ad499fb356b4e424ce78d4a287b7de95f4e2 pristine_git_object: c9463f07b7e155682828500766a184b9df21fac3 docs/models/operations/collectionissue55.md: id: 96a30b421399 - last_write_checksum: sha1:c8c0cad08d8c35370e6689b512ca2b8d40c4eca5 + last_write_checksum: sha1:b8fc64da27e6e3c41af9846e74f8c0e58be0c483 pristine_git_object: cb70af31e4f69de4f521bf01ba3cabdcd5e1d64a docs/models/operations/collectionissue56.md: id: a27c77809962 - last_write_checksum: sha1:ecb0d9bde97cccbd54d53633c6a38984c55d77bc + last_write_checksum: sha1:a32f6cb7cb1afdfa39329b75dc070c0b2846ce94 pristine_git_object: e6392c422e580b52e7d693a5516b3f3a26285b8c docs/models/operations/collectionissue57.md: id: 2342202927af - last_write_checksum: sha1:7796242de2c181f57968f6abfa5b37356dc255be + last_write_checksum: sha1:60c2b842032ea43f9ca73e2e3a7c77990a3b378f pristine_git_object: 92ca9a7d49d7528db51b6be0f66b99d909a01e95 docs/models/operations/collectionissue58.md: id: 8169695dbc9b - last_write_checksum: sha1:0bd36ddd23b040ea4f6c762bb21d838453696c03 + last_write_checksum: sha1:5517098d91f95944d2721e174096146fb7434702 pristine_git_object: 0c35a3267fdc8a6707129b3f81b0aee094bc0e2d docs/models/operations/collectionissue59.md: id: db1ceebedbd3 - last_write_checksum: sha1:04a86e380431751ccdd97ce49e164e5a764a2165 + last_write_checksum: sha1:cc6966a959f5e3245abfcfb2df490cf7d3b47303 pristine_git_object: 4e2953c3110635a7314b33fd9155a13fd179ec96 docs/models/operations/collectionissue6.md: id: d447951aaf9b - last_write_checksum: sha1:decdd9163b11e3cc68b231472e0535df9fb6d4c1 + last_write_checksum: sha1:7b26df7d8b838d2ce995f622cb044da913bfa035 pristine_git_object: 4a82f203e2530a0d1b0cdf8ad6ea79d0bcdb6a0d docs/models/operations/collectionissue60.md: id: e479f0d5d52a - last_write_checksum: sha1:4e07de80702ad11d35505e8855279513829e5f48 + last_write_checksum: sha1:f5bfc29424faa7507dd9e14f15ce5805197841a1 pristine_git_object: 13d0898ee6383a8124bcdea57307d30786a3e501 docs/models/operations/collectionissue61.md: id: cf22154c5a39 - last_write_checksum: sha1:2f3bc55a0946f83d41fe2d91f9e7ffe68f092d47 + last_write_checksum: sha1:b37efe66b9384f8ab5ad8400a72863fac3421690 pristine_git_object: 4859b858d70cbe2672d74beec69013b599eee6b5 docs/models/operations/collectionissue62.md: id: 398d25f83e28 - last_write_checksum: sha1:f07caf41ac1da2e2ad41a31c4a61a31edf7d2b19 + last_write_checksum: sha1:42a4d4243d41ee5780fa10300a57422d2bc0d813 pristine_git_object: 07384b506b0063862033822d6a83e50cd12f9fc8 docs/models/operations/collectionissue63.md: id: 9531ca0376c9 - last_write_checksum: sha1:db82c103fa914c5e15d50ba0878c8dd3501cc1b0 + last_write_checksum: sha1:b71286ba6575360fbd87d7948f9ea92f4d702eca pristine_git_object: eec984583360a9c739fc492ae4c471fc3a4209ac docs/models/operations/collectionissue64.md: id: 3bd096ce1a6d - last_write_checksum: sha1:e0df29249e1117066c617a66e3a8e98a9dc3de7c + last_write_checksum: sha1:36cefdc0d6bdf3e4f5f93f1a4105b170a335857c pristine_git_object: 97f4cbc01d67c30c9b5c4a5dc25e96a34c2df0fe docs/models/operations/collectionissue65.md: id: 56fbdabcec05 - last_write_checksum: sha1:cde266d9d9e0e038b62754995dd9a0c27401f9b7 + last_write_checksum: sha1:6799639aa31efbe460b0dab9a8bde3c8bd75cd37 pristine_git_object: ddfcc4c1c58e2da332ad449f98933b9513451c8d + docs/models/operations/collectionissue66.md: + last_write_checksum: sha1:0f51c81c50bad45a8a6e00c69cc73567c72fbc3f + docs/models/operations/collectionissue67.md: + last_write_checksum: sha1:ef93d237a1116aaa1fb4011b71aed13a17bc396d + docs/models/operations/collectionissue68.md: + last_write_checksum: sha1:746a4fcf11db54f3f5f9368a783d4aac6c510953 + docs/models/operations/collectionissue69.md: + last_write_checksum: sha1:fc7461abadeb7956705edea6e541251e6ff21ac0 docs/models/operations/collectionissue7.md: id: 17ccca51e52d - last_write_checksum: sha1:e99e4f0fe395759209d90584ca160ce0265b67cf + last_write_checksum: sha1:83ce7c03dd884c7baca0786e1976a455fcd01194 pristine_git_object: c3e8338ddc27d6f71f369edf50637b37e8ad2f95 docs/models/operations/collectionissue8.md: id: fa1cc249d56c - last_write_checksum: sha1:0042abe8ea6bc88df59792550b587bd6c9cb4c6d + last_write_checksum: sha1:d352b75a3cf75fa35f50322d6fc2f91a599e1943 pristine_git_object: 51152803e08b37622bf42b7421be93c7e171d095 docs/models/operations/collectionissue9.md: id: 5193543dc5f7 - last_write_checksum: sha1:faab559d31d633e93504f79f83e8bb473b5edf99 + last_write_checksum: sha1:32bd50d36ea36e61fe9188ddd99dab531b094f8b pristine_git_object: a78318035b433199636b5158c8531925d24a6eb7 docs/models/operations/collectionissueseverity1.md: id: fa54fa84c26e @@ -10480,6 +11235,14 @@ trackedFiles: id: 549673d04c32 last_write_checksum: sha1:7d7bdc1dfea3e0af8db1ddb5e973db69129ef240 pristine_git_object: b4b48ec9cb580bc8a71452bcda363a38f6676d2c + docs/models/operations/collectionissueseverity66.md: + last_write_checksum: sha1:90edfff8ded7d129388e7fa44b7810107253342f + docs/models/operations/collectionissueseverity67.md: + last_write_checksum: sha1:2ff3091e8cfb2cde0b490a18cb9c51a00d5bfd76 + docs/models/operations/collectionissueseverity68.md: + last_write_checksum: sha1:d48cb31fc9ed2560fbf025214a134474c8c79e8c + docs/models/operations/collectionissueseverity69.md: + last_write_checksum: sha1:2fce69a2e5fb1f95f44acec53a4284776fe609f9 docs/models/operations/collectionissueseverity7.md: id: 21941808cc10 last_write_checksum: sha1:e3c276b4cdcd1d7c6b273a8abaad77142aae07f4 @@ -10492,10 +11255,102 @@ trackedFiles: id: f56a883da757 last_write_checksum: sha1:ee44e856db3975438f09f1279d6c2bc6a28b769f pristine_git_object: ebe92834044569049cda8e81b743b1dee2353e93 + docs/models/operations/commandrequest.md: + last_write_checksum: sha1:398066b571e69cdcf684a4e4ea63bcdc7b94de49 docs/models/operations/completecommandrequest.md: id: 5447bcfcfae2 last_write_checksum: sha1:44c2a37939440a1940fa05d04ebd4c44d5564e24 pristine_git_object: c4b48c453f3a9a17da7acdd5d9151e09fe05c8f0 + docs/models/operations/configureprojectbucketsaccess.md: + last_write_checksum: sha1:49695825ad4be2e62ba2a7b73792877c9332c85c + docs/models/operations/configureprojectbucketsrequest.md: + last_write_checksum: sha1:cf7728f78cdbf3137ca84bf63fd880f925c725fd + docs/models/operations/configureprojectbucketsrequestbody.md: + last_write_checksum: sha1:5f4db1bfe908c3c10aa8301af596d9d82cc590ea + docs/models/operations/configureprojectdeploymentsrequest.md: + last_write_checksum: sha1:7aba0e1061606f9994241276e9a161028423c90a + docs/models/operations/configureprojectdeploymentsrequestbody.md: + last_write_checksum: sha1:ba409ff472299017aa104791c28d66c426ac888c + docs/models/operations/configureprojectkeysrequest.md: + last_write_checksum: sha1:ae0be936a18d3cab014dbe472e857680e8688c59 + docs/models/operations/configureprojectkeysrequestbody.md: + last_write_checksum: sha1:6f55f2fc8369d336b4df4fd07af157917f801297 + docs/models/operations/configureprojectmodelsrequest.md: + last_write_checksum: sha1:001f2fba0e14401fb2801728c05e4ccb1a7b0c37 + docs/models/operations/configureprojectregistrycredentialpolicy.md: + last_write_checksum: sha1:3995d5104c80ac6c41f0a3aa7a580260050d122f + docs/models/operations/configureprojectregistryrequest.md: + last_write_checksum: sha1:28893be7eec89e81fcdc87ced00f367fcd3fc714 + docs/models/operations/configureprojectregistryrequestbody.md: + last_write_checksum: sha1:a282c6e6b8241e6b01be1a7af2041f17f59699e1 + docs/models/operations/configureprojectsourceaccess.md: + last_write_checksum: sha1:7e01683c098e9d8611c53b1576ba5dd944876a0d + docs/models/operations/configureprojectsourceallowedprovider.md: + last_write_checksum: sha1:8c9aa407e657fad05f523f0376a85fdd452e3941 + docs/models/operations/configureprojectsourcebinarytarget.md: + last_write_checksum: sha1:a74fa5d9ab60163d834c6aa49ff27aa4064a654e + docs/models/operations/configureprojectsourcebuckets.md: + last_write_checksum: sha1:007ade5ab68ee63b085a55c7609675fc91b342dd + docs/models/operations/configureprojectsourcecapabilities.md: + last_write_checksum: sha1:8d8ccd780f95a05f71d979a4701eeed9da7f1b82 + docs/models/operations/configureprojectsourcecli.md: + last_write_checksum: sha1:b9bbd9218cdf0a0b79e306b6a8efdacabae82dc1 + docs/models/operations/configureprojectsourceclientapi.md: + last_write_checksum: sha1:99a7dafa1a5b2153f0cf5ea2d79d290f10795a8f + docs/models/operations/configureprojectsourcecloudformation.md: + last_write_checksum: sha1:3e24fc439c96f890656ad6b30cdafd3a7b286d87 + docs/models/operations/configureprojectsourcecredentialpolicy.md: + last_write_checksum: sha1:443491367dd4841c931a6d8f2ab5ddbc6944d915 + docs/models/operations/configureprojectsourcedefaultmanagers.md: + last_write_checksum: sha1:7635a073b5a6dadbb5066c08d47b69ec6650f4d8 + docs/models/operations/configureprojectsourcedeploymentportalappearance.md: + last_write_checksum: sha1:55fe7d553d4b8059df8f734e44e28a7b36ba48ee + docs/models/operations/configureprojectsourcedeployments.md: + last_write_checksum: sha1:b74795299267a3f5b4e990ee7452c7180892fcac + docs/models/operations/configureprojectsourcegithubsetup.md: + last_write_checksum: sha1:b353f3c1a65a11dc81a7676e4ffd5c965d4adeaf + docs/models/operations/configureprojectsourcegitrepositoryrequest.md: + last_write_checksum: sha1:5aaf28c3d446e5b87149bdbe27ef7a1d7c2abeca + docs/models/operations/configureprojectsourcegitrepositoryresponse.md: + last_write_checksum: sha1:bc1ec33d39f9d48cd1f0c2dcf640c0665a8eabb8 + docs/models/operations/configureprojectsourcehelm.md: + last_write_checksum: sha1:6a5ee71bde44bfd0ed722ff016c05985db504ff2 + docs/models/operations/configureprojectsourcekeys.md: + last_write_checksum: sha1:d17587c25455392da95410fd083b8b8830aa1d3b + docs/models/operations/configureprojectsourcemodels.md: + last_write_checksum: sha1:3fe7c4d755706b5dc09a9efc0fd17b676d010f2b + docs/models/operations/configureprojectsourceoperatorimage.md: + last_write_checksum: sha1:33df946ed9a067051e2a0f006519fd6632e74303 + docs/models/operations/configureprojectsourcepackagesconfig.md: + last_write_checksum: sha1:12a7b8991ee3b9c75165b4c85361526e4b2b25c7 + docs/models/operations/configureprojectsourceprojectcapabilities.md: + last_write_checksum: sha1:9b8468b63cd7bde2efa3369cb9f16481134eebd5 + docs/models/operations/configureprojectsourceregistry.md: + last_write_checksum: sha1:1cc5933e2d3aaa428cd35f2ca73c27ba442ac95b + docs/models/operations/configureprojectsourcerepository.md: + last_write_checksum: sha1:2e3425dd033e02e71cefb2a5a2a982bd4efea65e + docs/models/operations/configureprojectsourcerequest.md: + last_write_checksum: sha1:f9998c9db78d0e116d52c00d072720396edeb99d + docs/models/operations/configureprojectsourcerequestbody.md: + last_write_checksum: sha1:56fc447fd137bc0efcdbdcfb67b0cf4e55d0883a + docs/models/operations/configureprojectsourcerequirement.md: + last_write_checksum: sha1:846cd5e41fb56c06cef6ea4492f9ae5496522303 + docs/models/operations/configureprojectsourceresponse.md: + last_write_checksum: sha1:817670616eb479310f54be2b0b756e409b5ae6d3 + docs/models/operations/configureprojectsourcesourcerepository.md: + last_write_checksum: sha1:8a8efb20c8e459282276806021785742f84c1ad9 + docs/models/operations/configureprojectsourcetemplatepathrequest.md: + last_write_checksum: sha1:3bc19d8327f7af7a1264be027cde5083ff217e51 + docs/models/operations/configureprojectsourcetemplatepathresponse.md: + last_write_checksum: sha1:83e9099b5e98a2866e958871d0dc11c2e190dfb2 + docs/models/operations/configureprojectsourcetemplateresponse.md: + last_write_checksum: sha1:bc62e295678675d2882ee1dbb62b505870e618b3 + docs/models/operations/configureprojectsourceterraform.md: + last_write_checksum: sha1:696f938886e33719201fc193fbf0e1fca7d62951 + docs/models/operations/configureprojectsourcetyperequest.md: + last_write_checksum: sha1:7f9f3c312a1dee9aee5b73b43d4fcebd75338f59 + docs/models/operations/configureprojectsourcetyperesponse.md: + last_write_checksum: sha1:b509d09fe36535e554023604c9735d58d9093fed docs/models/operations/containerunit.md: id: 00b97927d2ef last_write_checksum: sha1:77c8a4e214eb259d391ee6d6e271a3f5940cd506 @@ -10532,6 +11387,14 @@ trackedFiles: id: 0ceea322cfd1 last_write_checksum: sha1:6ffe5bf0795524fb9aeb6a3e568905d5d50691f1 pristine_git_object: ba7facb6b412e974e2ce937e654d32cf263bc550 + docs/models/operations/continueawsvirtualkeyrequest.md: + last_write_checksum: sha1:c7493e1b52337aa4948b431853270bd50624beea + docs/models/operations/continueawsvirtualkeyrequestbody.md: + last_write_checksum: sha1:c3f31f40fa86e49a46fbc3d4f3d13baa23c058ff + docs/models/operations/continueawsvirtualkeyresponse.md: + last_write_checksum: sha1:f6579c2876b4c80ac77e62e17c05835cbe1a61ee + docs/models/operations/continueawsvirtualkeystatus.md: + last_write_checksum: sha1:fd599b36b8d7bc37f31216c68f7c03658fca60a2 docs/models/operations/controllerplatform.md: id: dcf8d4a4b417 last_write_checksum: sha1:b9459f0288180ede85b9a4b65d5f71ae60ff3c7d @@ -10748,14 +11611,48 @@ trackedFiles: id: 382406c3c5c1 last_write_checksum: sha1:17e16819704149a6761d30022158f1f85880b957 pristine_git_object: 80487261099b7d5742cb3ea0b6f32bd61fd930ee + docs/models/operations/createaccessrequestcommandresponse.md: + last_write_checksum: sha1:57fd7301891ddcd7dce408583d45b4cba983de99 + docs/models/operations/createaccessrequestrequest.md: + last_write_checksum: sha1:3de70f2a71ba03d334cee0fd08a4cb99db35a7ad + docs/models/operations/createaccessrequestrequestbody.md: + last_write_checksum: sha1:946d3d7a3cdf87a6c01f5bfc72b10f85758fa93f + docs/models/operations/createaccessrequestresponse.md: + last_write_checksum: sha1:dd0edb2ae96b136f2223d2651e4b4cd9284406d0 + docs/models/operations/createaccessrequeststatus.md: + last_write_checksum: sha1:5e8c6176744687723385b74cc15009371fadf8a5 docs/models/operations/createapikeyrequest.md: id: ceeecfc4cc5f last_write_checksum: sha1:5857874b4514e003bf9b99eb3f57f691d965ca81 pristine_git_object: a278e1d3043e0270397991a3759ec93a86cf1fcc + docs/models/operations/createawsvirtualkeyrequest.md: + last_write_checksum: sha1:7c8d356e8c9654243a3fbdebbd9b9550afa8a593 + docs/models/operations/createawsvirtualkeyresponse.md: + last_write_checksum: sha1:17a9e6f6c1e402b4170d85489333c6193c6860fb + docs/models/operations/createawsvirtualkeysetup.md: + last_write_checksum: sha1:669673c034112cd7b4850e3e07afa28d2fffe2ca + docs/models/operations/createawsvirtualkeystatus.md: + last_write_checksum: sha1:7ec5e18108f6865a38ad0a1b725473bdbf2e7b43 + docs/models/operations/createawsvirtualkeyvirtualkey.md: + last_write_checksum: sha1:db457f7e05905bd513c1340e60721dd35f9a64d8 docs/models/operations/createcommandrequest.md: id: 31834dc9d505 last_write_checksum: sha1:91b4d2a934f245f5430723f2aab060c39dbc74ae pristine_git_object: ac603892717315984c241e1fd927d57f347b9043 + docs/models/operations/createcontainerregistrycredentialrequest.md: + last_write_checksum: sha1:5d617560db475af90b396d8b4e32ad1c4022a6a7 + docs/models/operations/createcontainerregistrycredentialrequestbody.md: + last_write_checksum: sha1:56076f46f11dafb5da63c0f7da86a4f83cf99470 + docs/models/operations/createcontainerregistryrepositorydesiredstate.md: + last_write_checksum: sha1:3ef77c171c656d1e204d7bc24307a24a5aa13b6e + docs/models/operations/createcontainerregistryrepositoryrequest.md: + last_write_checksum: sha1:0395b48c9a5096983ad9cdbea956bd06e460932b + docs/models/operations/createcontainerregistryrepositoryrequestbody.md: + last_write_checksum: sha1:913c2788a485d34fae025ec0272cf843875aa0f4 + docs/models/operations/createcontainerregistryrepositoryresponse.md: + last_write_checksum: sha1:7a82f7bf6ccf9ac10eca963e60958b4f4c371ac4 + docs/models/operations/createcontainerregistryrepositorystatus.md: + last_write_checksum: sha1:84e431b19427a2fd9b44e9df749e584cc2227312 docs/models/operations/createdebugsessionrequest.md: id: 7ff37c565f2b last_write_checksum: sha1:982571f98ade4642e9daa128e9d671a0982e71e0 @@ -10798,8 +11695,10 @@ trackedFiles: pristine_git_object: 2c9cfd8fdb3e55a93d3f87b04b91ac58393374c4 docs/models/operations/createdomainrequestbody.md: id: ffa9a43bdb49 - last_write_checksum: sha1:d3039374effa74626d9d7fffb4cc35fc65e4cce3 + last_write_checksum: sha1:1cd0fd0a6edaf0e23d2432410ce5c937b25e17ed pristine_git_object: db06a31dd41e571bc718885d2c9b2fb3ae7f8a9f + docs/models/operations/createdomainsetup.md: + last_write_checksum: sha1:48834b5d5f53b6d971aa6c492d2179bfcfb0b9d4 docs/models/operations/createfirstpartydeploymentsessionrequest.md: id: fa614a4db717 last_write_checksum: sha1:9521cf368544334cf070ea873ad7e3ff8dcdfd4b @@ -10812,10 +11711,22 @@ trackedFiles: id: 0d6ba95c7ef9 last_write_checksum: sha1:6351871e5ffaf492b8279ba025a641e546d83763 pristine_git_object: 722cc0efc98a7fd1dc334d522fdc351e9fcbc331 + docs/models/operations/createoperationsbundleuploadurlrequest.md: + last_write_checksum: sha1:8d47c7674fe497d996796da4c3f751eb60b5b5a5 + docs/models/operations/createprojectaccess.md: + last_write_checksum: sha1:c4a96587b27e9ca8f35d39e3c372fb3f341531b3 + docs/models/operations/createprojectallowedprovider.md: + last_write_checksum: sha1:d745c14d04e607c57369146c907badf69b9092d5 docs/models/operations/createprojectbinarytargetrequest.md: last_write_checksum: sha1:73554bbccdb59c734538182c464e864b8eab8cbc docs/models/operations/createprojectbinarytargetresponse.md: last_write_checksum: sha1:d0cabb3d908e9b769d57ed1e979a38c1aeb4eac6 + docs/models/operations/createprojectbuckets.md: + last_write_checksum: sha1:9be488f4d8beb6648380437b81cf0b5fc1db16fd + docs/models/operations/createprojectcapabilities.md: + last_write_checksum: sha1:ab7f3392fdcf67f569d8d99c9a900202d3b9d02f + docs/models/operations/createprojectclientapi.md: + last_write_checksum: sha1:272b555ad6986a5092d9b348db45c213a200c1bd docs/models/operations/createprojectclirequest.md: id: 1765dce7c10a last_write_checksum: sha1:88014d10a5d5f22c3fd4c31ec7726df34388e51d @@ -10832,6 +11743,8 @@ trackedFiles: id: 9cb1db6b624e last_write_checksum: sha1:ac4bd39367ab7dad0869148e65206445ea99b44e pristine_git_object: 66946c9724565e9c963365a3c2f9dcc1d7b7ff6c + docs/models/operations/createprojectcredentialpolicy.md: + last_write_checksum: sha1:b7e0acedddf50f745cbbf8f39bc1d605b275f86a docs/models/operations/createprojectdefaultmanagers.md: id: 2e4ce63b734f last_write_checksum: sha1:4184b9bd3244eac2ce9b74da49f419cb099dada9 @@ -10840,10 +11753,22 @@ trackedFiles: id: 2a386b30e234 last_write_checksum: sha1:323ae32164c4dc0f39431aa8c92aa1f4de03d1c9 pristine_git_object: 7fa670a8c65ab8cb45eafe4a557a8911c2c04040 + docs/models/operations/createprojectdeployments.md: + last_write_checksum: sha1:90ab4fad072730ad0fda0efe42c9ad79660b1efa + docs/models/operations/createprojectfromtemplateaccess.md: + last_write_checksum: sha1:f2f3ea5aea37410c56b410118b8d2fa916649a1a + docs/models/operations/createprojectfromtemplateallowedprovider.md: + last_write_checksum: sha1:8cad4b1eb1a6244d89541958428707af12b0ff5f docs/models/operations/createprojectfromtemplatebinarytargetrequest.md: last_write_checksum: sha1:bcc8fe1c1d0ec65160ee239c15fd6bfd6498e597 docs/models/operations/createprojectfromtemplatebinarytargetresponse.md: last_write_checksum: sha1:a9e9b508aee15ab7d82d46685819400508e6d544 + docs/models/operations/createprojectfromtemplatebuckets.md: + last_write_checksum: sha1:f44e4e2cdbca9328e8fdb9eb781359811363f09c + docs/models/operations/createprojectfromtemplatecapabilities.md: + last_write_checksum: sha1:d2d85014afb95e957d5170e5a6e341447b6bb911 + docs/models/operations/createprojectfromtemplateclientapi.md: + last_write_checksum: sha1:733f77e2ed0140ac1bfa46c93732f1fa489853dd docs/models/operations/createprojectfromtemplateclirequest.md: id: 9737f89b8aae last_write_checksum: sha1:f93af539787e7699d2445bb2ab68e5a595b63165 @@ -10860,6 +11785,8 @@ trackedFiles: id: 649385a0f2ce last_write_checksum: sha1:23bf32b186e717bae3e4ecf1a133a9d8eb350d40 pristine_git_object: abf66ce24517197fe0ed1141e0426e253a904b22 + docs/models/operations/createprojectfromtemplatecredentialpolicy.md: + last_write_checksum: sha1:bb1faeb04bb43001ffd0c937950e3d6fe853b29c docs/models/operations/createprojectfromtemplatedefaultmanagers.md: id: 7498bd252054 last_write_checksum: sha1:e1c4b7b3c47cfe8674c089323f5699a30b470a54 @@ -10868,6 +11795,8 @@ trackedFiles: id: 69aafa0d068e last_write_checksum: sha1:4ec60fd8135c4cf49ac2224e60b335d0acb1e54a pristine_git_object: b6c22a60dc6b697bdefb69ebf6b474043e4bc255 + docs/models/operations/createprojectfromtemplatedeployments.md: + last_write_checksum: sha1:3daa5daeafab7a401ca992daa2956c21ce214c4f docs/models/operations/createprojectfromtemplategithubsetup.md: id: 807c460fbe15 last_write_checksum: sha1:a59b016fdace88309975599d193adbdfd72b18a2 @@ -10884,6 +11813,10 @@ trackedFiles: id: f48144468f79 last_write_checksum: sha1:4afa8e9df3fa0317eaefd8e2e3f60a550d912744 pristine_git_object: b041c570bfa3989db97940dabb40da9a360f73b1 + docs/models/operations/createprojectfromtemplatekeys.md: + last_write_checksum: sha1:7f2e24a2fb1ac6a9afc44efa29e82aadde13d0a4 + docs/models/operations/createprojectfromtemplatemodels.md: + last_write_checksum: sha1:2f1f050ecbfc52c6f3b144747a36e36066699d86 docs/models/operations/createprojectfromtemplateoperatorimagerequest.md: id: 1de6aabef929 last_write_checksum: sha1:5235fa2cce05fdc59ad0d3fb5ffb628ba0512c8a @@ -10900,18 +11833,32 @@ trackedFiles: id: 53052973bf58 last_write_checksum: sha1:a6bc144ecee63f9ddb4deab5112cb38816e48401 pristine_git_object: 047a27eb128b0f26741c5093cc21f80b88f3a746 + docs/models/operations/createprojectfromtemplateprojectcapabilities.md: + last_write_checksum: sha1:f20d4e838a685bba81d7c9cf82fea2564bf374d9 + docs/models/operations/createprojectfromtemplateregistry.md: + last_write_checksum: sha1:61accd0503fc6ea439736f74eb03409374a2b9b5 docs/models/operations/createprojectfromtemplaterequest.md: id: 5bffdb040b0e last_write_checksum: sha1:cf697cf10f4dfbb1b0b5477759af14c82a027259 pristine_git_object: acd0ad647a39154a0bdcadf584c2b6dfccf7f0f5 docs/models/operations/createprojectfromtemplaterequestbody.md: id: 1d249bf862f8 - last_write_checksum: sha1:9dd07d94d9efa1745047292e0a9c1448179dabf9 + last_write_checksum: sha1:db275a4383f286b299cd3ed079ea9dbad4af6e7f pristine_git_object: f8afdcf1d9b6b904fa547446daf31b88c0a4287f + docs/models/operations/createprojectfromtemplaterequirement.md: + last_write_checksum: sha1:cfd0985865529275b5cb457aed2244029c3b9009 docs/models/operations/createprojectfromtemplateresponse.md: id: 9856e39456c0 - last_write_checksum: sha1:0f425f3052f9f442ef7232421d98309b3b8ea852 + last_write_checksum: sha1:bed524bef6c8c6ad55e9eec785ee981934756263 pristine_git_object: 548ca5adaf8561d3f833ed915212fdc9417a5687 + docs/models/operations/createprojectfromtemplatesourcerepository.md: + last_write_checksum: sha1:9b1284fe8e7702afe0e2286f6d97a49a62834657 + docs/models/operations/createprojectfromtemplatetemplate.md: + last_write_checksum: sha1:739b3a3c3d94ac25142a475d6fa188950dc37e7c + docs/models/operations/createprojectfromtemplatetemplatepathrequest.md: + last_write_checksum: sha1:e944802a9029f8113019ff2975a13c0cbc790747 + docs/models/operations/createprojectfromtemplatetemplatepathresponse.md: + last_write_checksum: sha1:8099f33dc7a456ea0a337d5f198c522f4f44a990 docs/models/operations/createprojectfromtemplateterraformrequest.md: id: baeaec2422fd last_write_checksum: sha1:1645eb48e0e1bc444655bcf6eea99b35641823f0 @@ -10928,6 +11875,8 @@ trackedFiles: id: 7c3b94832c04 last_write_checksum: sha1:87690bca0734866f032d7c04c5b49c0beaf9803f pristine_git_object: 1fe9966c8457f003af823c2eff402efbf1deda3f + docs/models/operations/createprojectgitrepositoryrequest.md: + last_write_checksum: sha1:ad7c84bfdd36667d2078adc4ff24edb6afc14bd6 docs/models/operations/createprojectgitrepositoryresponse.md: id: 9841e7c2c6cc last_write_checksum: sha1:6b227d968977214e703f0b8574dffd6154e60c2a @@ -10940,6 +11889,10 @@ trackedFiles: id: 6e078595efa9 last_write_checksum: sha1:07d49ba27652daa954d17968d535e1b3a0f3ba63 pristine_git_object: e13cb977303b28f5cee393e26ee085770ecb1004 + docs/models/operations/createprojectkeys.md: + last_write_checksum: sha1:bc23483acc8412a52d6081a2d09728b1d0466b78 + docs/models/operations/createprojectmodels.md: + last_write_checksum: sha1:80bcd2c4109217010a54e739a7ca2784145cf723 docs/models/operations/createprojectoperatorimagerequest.md: id: 56380125a43f last_write_checksum: sha1:585e8b2b580abf555e1596fb42b0f8c14fec44f3 @@ -10956,17 +11909,23 @@ trackedFiles: id: 64f87a362ad7 last_write_checksum: sha1:1158ca3585eff62c08b807a0b236b2a82b589555 pristine_git_object: b56b0cbfcb16d72f07d78308fd7c7d442072c3b2 + docs/models/operations/createprojectprojectcapabilities.md: + last_write_checksum: sha1:63d562675bb75740e4ebe1558796902478baa779 + docs/models/operations/createprojectregistry.md: + last_write_checksum: sha1:58f59941532503820a7e55331d906073792e09db docs/models/operations/createprojectrequest.md: id: c01f1cbd7861 last_write_checksum: sha1:df2e50f9f7bd2a9dfccadfee04f493971dcf4966 pristine_git_object: a0e13996965b83a56bce4b3ee4c29c2c8aac41f4 docs/models/operations/createprojectrequestbody.md: id: 1073f4c437b5 - last_write_checksum: sha1:288c4751e70fa61553ee58e5f21487be5603902c + last_write_checksum: sha1:8482c3d75d8ca880a6416da57b3503484b98eae3 pristine_git_object: 7ac0698eb7c12027930e4c9eac08cc301987e5a2 + docs/models/operations/createprojectrequirement.md: + last_write_checksum: sha1:742c7042a6aa007cf5b954c649d19be746b8477d docs/models/operations/createprojectresponse.md: id: 912d236ae97d - last_write_checksum: sha1:65bbf6d3c15ab4c9279ac2cb9a82db6137bebc03 + last_write_checksum: sha1:90de935bf79daa526005da83099e2a5058572b4a pristine_git_object: 3114761c46c48263e028d4f769b643b99528563f docs/models/operations/createprojectterraformrequest.md: id: fdf5932210ff @@ -10984,18 +11943,36 @@ trackedFiles: id: 7b75ae5be4ac last_write_checksum: sha1:cdc09ad05f5946a7c2abd33c8429bda3e119abdd pristine_git_object: 7084c026679b52f82353666ebe4a2315a4b544fa + docs/models/operations/createreleasechannelrequest.md: + last_write_checksum: sha1:4a1796e9735fb2d345836a84c83316afd1b016f8 + docs/models/operations/createreleasechannelrequestbody.md: + last_write_checksum: sha1:935ad62ae083315f98e9fb9f91e85ad4afc916c5 docs/models/operations/createreleaserequest.md: id: a2f28a830080 last_write_checksum: sha1:b04572aecac3730e61ec34e8437d73ab5e971d10 pristine_git_object: df37b113b183a8140c5c820a8695445c8b7592ec + docs/models/operations/createremotebindingsexternalaccessrequest.md: + last_write_checksum: sha1:76df07737761134faba10168e28921d6e6b921c6 + docs/models/operations/createsetuplinkrequest.md: + last_write_checksum: sha1:92ed2703806932cca4fd48c2a3d8adefbae72b20 docs/models/operations/createsetupregistrationoperationrequest.md: id: ed4344ab19bb last_write_checksum: sha1:57fe259f2a17a5b056434a25dd9791386a174343 pristine_git_object: 0870d489310d2c11a743f8ca161128c270b4476f + docs/models/operations/createworkspaceinvitationrequest.md: + last_write_checksum: sha1:c7c3c9cbf8f728302f2742bfa247e86eaabb53f5 + docs/models/operations/createworkspaceinvitationrequestbody.md: + last_write_checksum: sha1:b21f141be389f8f6f8c755871acec9bfade33568 + docs/models/operations/createworkspaceinvitelinkrequest.md: + last_write_checksum: sha1:099a54af859e41da8adf790eee888188d2281207 + docs/models/operations/createworkspaceinvitelinkrequestbody.md: + last_write_checksum: sha1:3cada0bb438aeffe247dc2c92d3e181e2c81a28d docs/models/operations/createworkspacerequest.md: id: 6ca823e26416 last_write_checksum: sha1:809488e20e7ed61dde31f043f747375161ffc4f4 pristine_git_object: 47663e51e13ee313e35256613f568bdffeac0f02 + docs/models/operations/customer.md: + last_write_checksum: sha1:bb92d606a967c40faa1af23e0ff2cc8d9c99dd00 docs/models/operations/daemoninstance1.md: id: 818ab24fa97d last_write_checksum: sha1:fa93489411cf3d4becefd73dc0d197883bc73461 @@ -11100,22 +12077,32 @@ trackedFiles: id: 390765a77aa9 last_write_checksum: sha1:6320a5526a3e7c05379593d9f3568a87be98d4f1 pristine_git_object: f0dd4752cba3e2b8563ecf8f3a09bd68002887f9 + docs/models/operations/data6.md: + last_write_checksum: sha1:e885ad916ae8b028eaa7323f2eb642f266ff64b2 + docs/models/operations/data7.md: + last_write_checksum: sha1:fbde7b5467c70a04c72f10e3a16970329594afb1 + docs/models/operations/data8.md: + last_write_checksum: sha1:c6addfb45ef293a0c4760f2135133a48fdf51e17 + docs/models/operations/dataai.md: + last_write_checksum: sha1:51d72ec09505753e2452adf865d6d5627bd581c3 docs/models/operations/dataartifactregistry.md: id: 1873000c7745 last_write_checksum: sha1:2d215357e1c326586ee22298bb966de50acd3441 pristine_git_object: 1a7e40f4c4d20d9ed9d0ea9bf904c2aa2ed66a02 docs/models/operations/dataaurora.md: id: 79c0ffb1ccbd - last_write_checksum: sha1:5a551846119ac73748bc9b04553db92d3f651f96 + last_write_checksum: sha1:2f40c6f06bc8b10df64fc0d6b77ac4422cefe96a pristine_git_object: 714a55fe0552012d5a03cdfbfc93c0f1ea4b8321 docs/models/operations/dataaws1.md: id: 665e28ed6bb4 - last_write_checksum: sha1:066d6466e933017856bab5ca25fa5f6587e28e0a + last_write_checksum: sha1:679157707fd48314d22376a3619e117b5b73b6e5 pristine_git_object: 79c1407f73ed7d080411d9862bc015fe0e7acb83 docs/models/operations/dataaws2.md: id: 36c55a31d434 last_write_checksum: sha1:8dc84e51c777d578b51c17641272a8e3cdd73954 pristine_git_object: 2220dcab554cfb2b92f19788571ad444ee9cb3f5 + docs/models/operations/dataawsbedrock.md: + last_write_checksum: sha1:857012841f5d9d17362b02d7660431f1fc0e980a docs/models/operations/dataawscodebuild.md: id: 4b9dbbd32780 last_write_checksum: sha1:154c3f6f739264d79c46c9b752cac11ede5109af @@ -11126,7 +12113,7 @@ trackedFiles: pristine_git_object: 8584d638496a4589c09dcff61f3be72868cef6e9 docs/models/operations/dataawsecr.md: id: 2fb99bbf866a - last_write_checksum: sha1:65397446c73dfe02e2732e3b8832e468554cf54c + last_write_checksum: sha1:8268c80d371e98d4f5d8f4b4a5d14cb96b74b99c pristine_git_object: 60079cfef3807486815e586897f1953ad0083845 docs/models/operations/dataawsiamrole1.md: id: cbe515600f52 @@ -11136,6 +12123,8 @@ trackedFiles: id: c887a2e11233 last_write_checksum: sha1:8c99edc5b4167b60c21eca17435976bf5a3711e9 pristine_git_object: 224f517925dc89ba33d51666d095f7270ef981a8 + docs/models/operations/dataawskms.md: + last_write_checksum: sha1:659748d0dcf099ae50b24613ddf69a6d39233677 docs/models/operations/dataawslambda.md: id: 25feda75539c last_write_checksum: sha1:68fa47732c75c838d1366ad644a5ced3bf7c46da @@ -11158,7 +12147,7 @@ trackedFiles: pristine_git_object: 03bb4a2fd277973f4ef91e3eb47bbc1876d77325 docs/models/operations/dataazure1.md: id: 4a945facdc1a - last_write_checksum: sha1:90939a167635d191c0779eff18c80c2ef8894b97 + last_write_checksum: sha1:dc89a702d241d5fc94a969995db8af6cceb46e30 pristine_git_object: 15708477e9aad7cb0db95df8a7431183e5c3fc98 docs/models/operations/dataazure2.md: id: b176f4c4164b @@ -11184,10 +12173,12 @@ trackedFiles: id: f3892e8bcfe4 last_write_checksum: sha1:a775382da8f4aa7bd75dde78e877523a7928ec3f pristine_git_object: 86743f3330415022e9d60abf029511ad35fe1bf6 - docs/models/operations/dataazurekeyvault.md: - id: 2df1f56c0a14 - last_write_checksum: sha1:1364295e9f387901a2314a28fb4fcfebd49a29b9 - pristine_git_object: 8fc82d9239346570620f14e6f4abf44b72a417bc + docs/models/operations/dataazurefoundry.md: + last_write_checksum: sha1:866333465aec5913ae51543643330791060d2778 + docs/models/operations/dataazurekeyvault1.md: + last_write_checksum: sha1:2cadbeb7ccb32e12c6a2f6e6cc2735d1c17492ed + docs/models/operations/dataazurekeyvault2.md: + last_write_checksum: sha1:8a8316da25651cf959497d8447f742b8889389b7 docs/models/operations/dataazuremanagedidentity1.md: id: 8ef200c80317 last_write_checksum: sha1:d718240cddaa7ba82fd6c04fa623a22b444fec97 @@ -11230,7 +12221,7 @@ trackedFiles: pristine_git_object: b8d58e5581069cfe534ede32c611fe59ff9c7e1b docs/models/operations/datacloudsql.md: id: 89952ee246f3 - last_write_checksum: sha1:f7b64a9d8b9014f5ec922504007d370ba483ae72 + last_write_checksum: sha1:94f851c0631818f7e4f240ffab42d08d2fc3278a pristine_git_object: 42d4980d9b9d442c2d43d9cd08be0d201a1e365e docs/models/operations/datacomputecluster.md: id: b6c43ee25a5c @@ -11244,13 +12235,15 @@ trackedFiles: id: 47054dcc258a last_write_checksum: sha1:ff508cae968fe70b4285d8182fa30235e600fbfa pristine_git_object: 9a7f00f57506c883e7bf730fa60e8028e5cfc2c2 + docs/models/operations/dataexternal.md: + last_write_checksum: sha1:980cf388ee383f3ff850f776f25a68a5d3bf1764 docs/models/operations/dataflexibleserver.md: id: 0edc93a187a1 - last_write_checksum: sha1:300accc8375d756907ee7839512b045070369685 + last_write_checksum: sha1:3cf6a855b557dbaefc079559e22ac9593920a6c5 pristine_git_object: c750a3ef93dc6b7f47b3ddc23dbeab6546cd6491 docs/models/operations/datagcp1.md: id: 28c75e77beb6 - last_write_checksum: sha1:52f1edf5b89eecf2cad4cf33e79ebc8846a98a91 + last_write_checksum: sha1:79e1d56d8560905a478c35ebfaa425a4f539162e pristine_git_object: 75ffc8836cccc29af60b85b158376de78d5ff931 docs/models/operations/datagcp2.md: id: ebb8d1e40d34 @@ -11264,6 +12257,8 @@ trackedFiles: id: 145e243827f9 last_write_checksum: sha1:d53b2b7df1b9d2e703c0b8ff993ea948011bac61 pristine_git_object: e4da3f9d57cfd944258a6d565a3428ab4c46ae2e + docs/models/operations/datagcpcloudkms.md: + last_write_checksum: sha1:61a6e2796e0679e54b4b0481a15775fb852aafe0 docs/models/operations/datagcpcloudrun.md: id: 39a655f27640 last_write_checksum: sha1:ba8c2152bdb53debb334845d258a64d09638d90f @@ -11296,14 +12291,18 @@ trackedFiles: id: ec41ece7cf78 last_write_checksum: sha1:34668e54f594081446eda07112cc13b337c9b223 pristine_git_object: 543cbb7d30e7e7c22987f733acb26ca9e8a0fabe + docs/models/operations/datagcpvertex.md: + last_write_checksum: sha1:3d2908a51de9f983b63dfca25b5e4deb12cd7def docs/models/operations/datagcpvpc.md: id: d1def63893a8 last_write_checksum: sha1:0c90bddb15f131b339f5b32fbd299fb47eccbe30 pristine_git_object: dd0590999cb48fcaf1e83260e7f9ed024231a850 docs/models/operations/datahorizonplatform.md: id: 73864a53e169 - last_write_checksum: sha1:63faf991b18a4e1b22ef5012a06c665c06a531ea + last_write_checksum: sha1:607c125ea164f9295c784255569fa9b357bcc529 pristine_git_object: 186b242f3fb2b7f2a2fff9630b15aa4850ea63e2 + docs/models/operations/datakey.md: + last_write_checksum: sha1:197196f9d0ab4b24e404170deaabac8fd3fc7ab1 docs/models/operations/datakubernetes1.md: id: 096f85d155a3 last_write_checksum: sha1:c75901e14dcc822e5b67866580ef22b044ad0300 @@ -11370,7 +12369,7 @@ trackedFiles: pristine_git_object: 43cdb79daaf96894420204a5aaae77c234606454 docs/models/operations/datalocal8.md: id: 5b05e138d53c - last_write_checksum: sha1:48b8a9df82646e767a61da6e47f1564821f86cc3 + last_write_checksum: sha1:b0b53ca9a5709f4169bf432bfca5677d975d23ef pristine_git_object: 17f7cd7590352fb4820d05f442215bb3cfe00258 docs/models/operations/datalocal9.md: id: 506e1a2a0ae6 @@ -11378,7 +12377,7 @@ trackedFiles: pristine_git_object: 7333c4bffc0f870ed82d0c86e67cfc3bacf69622 docs/models/operations/datamachines1.md: id: 2a8216e30ca0 - last_write_checksum: sha1:e41479fcf5391ca425501eda0f812ae884a90773 + last_write_checksum: sha1:18aae42d79822ef6bcccaa87e50382a4cfd969b1 pristine_git_object: 8763f73b01fe22290ad2af61bc0df5fd9752b2f1 docs/models/operations/datamachines2.md: id: 7db9cbfb7962 @@ -11656,10 +12655,24 @@ trackedFiles: id: 727599d2baa9 last_write_checksum: sha1:4726cf0ffd3a4a895993ee22e190613454c230b3 pristine_git_object: 7285c952992d7265a3e16d6cf1acd5d1424241d4 + docs/models/operations/datastatus66.md: + last_write_checksum: sha1:9bbfaea038ab6935f8cab7e2edb077496c8c96a6 + docs/models/operations/datastatus67.md: + last_write_checksum: sha1:481fee3a667026fd01dc6ca7e4acd5b380ad5635 + docs/models/operations/datastatus68.md: + last_write_checksum: sha1:be84ab409512e3fc73d360d40f1e43d58ba18993 + docs/models/operations/datastatus69.md: + last_write_checksum: sha1:bf5e15df7a9e8a167a5e615dd039c1e5740ea4be docs/models/operations/datastatus7.md: id: c4566f1e2031 last_write_checksum: sha1:4be91bb895c4efb838f446cd83a3191a0fb83c8f pristine_git_object: 3767e0939c6fe6ca01f996d6b17880f8d1139bdc + docs/models/operations/datastatus70.md: + last_write_checksum: sha1:b51944ca3ff7e6b83650b9dcf1ed64c0ec243f45 + docs/models/operations/datastatus71.md: + last_write_checksum: sha1:d0a0fc2faa0bddfedd78662d90d5b2de177b7a6f + docs/models/operations/datastatus72.md: + last_write_checksum: sha1:58b24931f4801dea41d9116ec5bde1ad12cc4693 docs/models/operations/datastatus8.md: id: ad9d6447b032 last_write_checksum: sha1:51d57421f6c6d1e0e5c4eb69793159a9dc8ab181 @@ -11702,8 +12715,12 @@ trackedFiles: pristine_git_object: 36b98dd06b528f3eb92f445231d11bb9ece8258a docs/models/operations/dataunion16.md: id: b11cc5375941 - last_write_checksum: sha1:87b80cdad4dc0aa2fe005f707daa5430056ed7b0 + last_write_checksum: sha1:8f11333e735d8dd0b9b6451cb3bf62a9f779916e pristine_git_object: 343e7b6a4ff3a1a5568b5fe74ab39c3abf8301bf + docs/models/operations/dataunion17.md: + last_write_checksum: sha1:b33fc7ddca2079c5e799fbb096fd96f6267cf978 + docs/models/operations/dataunion18.md: + last_write_checksum: sha1:5432260d52b3b47c123315d411a1cbdbc2cedc68 docs/models/operations/dataunion2.md: id: 9795ad6d437c last_write_checksum: sha1:aed2e36df978dd9fba82375eb1db3691d35e7df3 @@ -11734,7 +12751,7 @@ trackedFiles: pristine_git_object: 632d21e1ff9428a6a619e5f79883e9e72e69011c docs/models/operations/dataunion9.md: id: 0cd92d721653 - last_write_checksum: sha1:bc92fe34e013f2bc2a3210a83728b86059ed8d43 + last_write_checksum: sha1:713a4375f20a9517a03448de01b4872550b5463b pristine_git_object: caa675ae9d83abb33a0736489940cca044145a63 docs/models/operations/datavault.md: id: 54efedb5539b @@ -11744,6 +12761,14 @@ trackedFiles: id: 81de63816af2 last_write_checksum: sha1:3c595eb0b2560acff757d4efc6ecf90bf60f38d3 pristine_git_object: 75bcc5688122aef8dcf0c0999778e5c88d28cf6f + docs/models/operations/decommissionawsvirtualkeyrequest.md: + last_write_checksum: sha1:228769446fd28cecea0c30e90a1366e7c906fce7 + docs/models/operations/decommissionawsvirtualkeyrequestbody.md: + last_write_checksum: sha1:dcc073f8b4bfba54a04d186c1142144d9cddbca6 + docs/models/operations/decommissionawsvirtualkeyresponse.md: + last_write_checksum: sha1:17783b38ec665b6791ea3983a9ea4d0d3ba02030 + docs/models/operations/decommissionawsvirtualkeystatus.md: + last_write_checksum: sha1:5a81ed3bb38fdc222fa9df504bfdf53fe9e84ba0 docs/models/operations/deleteapikeysrequest.md: id: 8fdfd4aadbd3 last_write_checksum: sha1:2db19c2ab93c128670a150905fcbeed18598d7e0 @@ -11752,6 +12777,16 @@ trackedFiles: id: 16200fc0629a last_write_checksum: sha1:f9bfe472beae73ebd2291014d3bb77357bc9c208 pristine_git_object: 685df0bcc8c2d34c5277cb3129ae1b3cc0dfe83c + docs/models/operations/deletecontainerregistryrepositorydesiredstate.md: + last_write_checksum: sha1:b8e73876f6c6dd19691cf357226a7c4f9ea893d7 + docs/models/operations/deletecontainerregistryrepositoryrequest.md: + last_write_checksum: sha1:3c94eefb538e72cbeeae19187c24d60cc5e24852 + docs/models/operations/deletecontainerregistryrepositoryrequestbody.md: + last_write_checksum: sha1:247f4235af71d5c6029acc3a2bb0057597f28f82 + docs/models/operations/deletecontainerregistryrepositoryresponse.md: + last_write_checksum: sha1:1837a3a373114525c38a177a2a50e6a9fb61ef06 + docs/models/operations/deletecontainerregistryrepositorystatus.md: + last_write_checksum: sha1:69f4cecb6c04036b6509b664c2c992daa7f622bf docs/models/operations/deletedeploymentgrouprequest.md: id: 2b582c287c96 last_write_checksum: sha1:d6158a0e8bf92a5359a0b799a118af242a01e9ca @@ -11768,6 +12803,8 @@ trackedFiles: id: 1fde54bc7296 last_write_checksum: sha1:78c26dc568d68011417096ed92ab9216869f2caa pristine_git_object: 3fa35c38d1896e9dfce048b57ae719c39274e6a6 + docs/models/operations/deleteexternalaibindingrequest.md: + last_write_checksum: sha1:cb97775a1f2286768640db5288ac7d6abc4a3280 docs/models/operations/deletemanagerrequest.md: id: 3a43d4d901da last_write_checksum: sha1:d8787bdcecbb965702ac93f989ba875b92eb7bb9 @@ -11780,6 +12817,8 @@ trackedFiles: id: 48b7d1a72221 last_write_checksum: sha1:b9635053635eb82578a0d70bcc53f85a14c0d14c pristine_git_object: 03dcda06b20f95a6c694efe2dee62be41dd42a76 + docs/models/operations/deletereleasechannelrequest.md: + last_write_checksum: sha1:84c9cb18270885f9d0214eddadbcb4a4645524f4 docs/models/operations/deleteworkspacerequest.md: id: c3a6fd8ac219 last_write_checksum: sha1:52cf255a6ab8ccc998e1659748a726aefc951d25 @@ -11792,6 +12831,8 @@ trackedFiles: id: 95faf1d3b247 last_write_checksum: sha1:36f3171a24ec7fd55642f4b51eebc2af8452bcc4 pristine_git_object: f7a62a75d5f9623f23128dd84d1333c1b9fc2dd0 + docs/models/operations/disposition.md: + last_write_checksum: sha1:1f4f2506bef4b54a83d9bd8b35e4c1aff23a947d docs/models/operations/drainblocker.md: id: 25116f76ba2b last_write_checksum: sha1:21c5398417381fcfa12930c9a628130eaa74163a @@ -11802,20 +12843,28 @@ trackedFiles: pristine_git_object: 46c01fa78c8d76ff85d23134b4a7c5b03e531a60 docs/models/operations/drainprogress1.md: id: d880a86adc16 - last_write_checksum: sha1:7606b705de417dd5d7f72b6c4a32b94c980a2151 + last_write_checksum: sha1:e1c390877e92b958fca7c05b32b1d92edb60a1d8 pristine_git_object: 4bff4a3dd33067fbd756aa71ab945e4a37e91081 docs/models/operations/drainprogress2.md: id: 9b0cc06ad3c5 - last_write_checksum: sha1:6dd2925a75f92086f35750eea80dd186a8eed970 + last_write_checksum: sha1:6ac1a0833260143449dd4ea979217d7c713452be pristine_git_object: d60b7de0519a24450c84ffa27123e3a403081e0e docs/models/operations/drainprogress3.md: id: 6572e70c97ec - last_write_checksum: sha1:2652558be5974080d6f426fc71d7a814f9ab47cf + last_write_checksum: sha1:117fb960dd3576e01706c4d8d66f61a310794ffd pristine_git_object: 07c6890419401918175953a9923f144f78763cfb docs/models/operations/drainprogress4.md: id: aec05391dc0b - last_write_checksum: sha1:0975472da6992a20919d368397514ffbaefa9c16 + last_write_checksum: sha1:018a55e4db78ee0fea63a7f8b91439cede5100f7 pristine_git_object: fe93c5a953d11a1f00eea5d45c6b3dc7d80ade74 + docs/models/operations/drainprogressblocker1.md: + last_write_checksum: sha1:0a281295ccef1ae01743e658b6fa12745867e78b + docs/models/operations/drainprogressblocker2.md: + last_write_checksum: sha1:cbb6c0b4303e5a37bc2e1d8e3c8b74e9fa31a069 + docs/models/operations/drainprogressblocker3.md: + last_write_checksum: sha1:705a294ee402018d1d702efbe14d2ae8cb76e431 + docs/models/operations/drainprogressblocker4.md: + last_write_checksum: sha1:6aec0cc5ef86326cd8cf2946ce6a1b516fb089d8 docs/models/operations/drainprogressstatus1.md: id: 374de6fc4479 last_write_checksum: sha1:cac928635f452ea598be19b28096e0027bf0904d @@ -11848,6 +12897,10 @@ trackedFiles: id: 2fbbbf4fece7 last_write_checksum: sha1:bef81f55f07d0b016fd602994ce71edfb50849ed pristine_git_object: aef249a83c7cb7acff920dfd2840cb08d9644e00 + docs/models/operations/enabled.md: + last_write_checksum: sha1:75fcf983aa5bf29c68ecb08e9a47eee72f5694aa + docs/models/operations/ensuredeploymentgroupbyexternalidrequest.md: + last_write_checksum: sha1:272a243fb721038c4726460790de0f0a50805b60 docs/models/operations/ensuredeploymentgroupbynamerequest.md: id: 181966a71bdb last_write_checksum: sha1:9a1281e9c3735fd17aa1d5d80970a98e21d440a0 @@ -11916,18 +12969,42 @@ trackedFiles: id: cf504bf26fa5 last_write_checksum: sha1:b1c80048aba31904ffd3eef45af62a943349d237 pristine_git_object: 70a5101fa649125f632bb8697e0339749b89fb2b + docs/models/operations/finalizeawsvirtualkeydeletionrequest.md: + last_write_checksum: sha1:5e9d7bf8cab9e09d815e160e3ca9bc31ee4c8f89 + docs/models/operations/finalizeawsvirtualkeydeletionrequestbody.md: + last_write_checksum: sha1:b62a1681e7d236e22c2fedb09579463ff215bbd2 + docs/models/operations/finalizeawsvirtualkeydeletionresponse.md: + last_write_checksum: sha1:56898214c9864b5f68c903cf461ec4d7d168f09a + docs/models/operations/finalizeawsvirtualkeydeletionstatus.md: + last_write_checksum: sha1:f2b87c4a9770b4964d634f09880e366a94934db7 docs/models/operations/format.md: id: 4c6808d8bb23 last_write_checksum: sha1:4fe8bdfbec7f94270209a37d96214e4a4f640fbd pristine_git_object: b6c455f245ab6f9e89c2f2e196743eaf8824db80 + docs/models/operations/generatemanagerbindingtokenrequest.md: + last_write_checksum: sha1:ad9375fcfe688b7ea457cecf9145e786c2eec4c0 docs/models/operations/generatemanagertokenrequest.md: id: 27531272409f last_write_checksum: sha1:12980b45d4d2d1afe7146f3beb06d80dcb8f6a49 pristine_git_object: 9bed74c2196d6b03288a003f48bbe83788dd2758 + docs/models/operations/getaccessrequestcoordinatesrequest.md: + last_write_checksum: sha1:cd6dcd3c478b5161560da84a1dd0d6d3bf498e51 + docs/models/operations/getaccessrequestcoordinatesresponse.md: + last_write_checksum: sha1:2ba77558180d1a28ebab4985ca253fd1f1233076 + docs/models/operations/getaccessrequestcoordinatesstatus.md: + last_write_checksum: sha1:f352525e3628395b42f48e3aa80457a905c26ed6 + docs/models/operations/getagentsessionrequest.md: + last_write_checksum: sha1:d26fdaa306c6a5a562199d068bf30059e01ef019 docs/models/operations/getapikeyrequest.md: id: 2ee5609f22a3 last_write_checksum: sha1:20fc5c6da0dfa9260ee890c577d06266be55afab pristine_git_object: ea05dd049feb914b3624d0b519282de84f1eb82f + docs/models/operations/getawsvirtualkeyrequest.md: + last_write_checksum: sha1:92b7ab89846ad3e027a5bb051188adcb8eaf1bb2 + docs/models/operations/getawsvirtualkeyresponse.md: + last_write_checksum: sha1:0f693325e40fe40720002bb9e7d968159fa4d5de + docs/models/operations/getawsvirtualkeystatus.md: + last_write_checksum: sha1:250c8db836c807928876518879b2ab1e42008fa7 docs/models/operations/getcloudregionsrequest.md: id: a4f4f82dcca5 last_write_checksum: sha1:567f46bddd7843d45d2caef07a0f51f3f0360adc @@ -11936,6 +13013,10 @@ trackedFiles: id: 737d2716e0d9 last_write_checksum: sha1:3cc1a9199ec6de9effe1b2ed5b7e7b3b77306238 pristine_git_object: a147a39dcb80b7cd31a806e8e61f1a0030549e1a + docs/models/operations/getcontainerregistrymanagersnapshotrequest.md: + last_write_checksum: sha1:6df54f4efd5b246c36785037fe051b70204ebc57 + docs/models/operations/getcontainerregistryrequest.md: + last_write_checksum: sha1:c53cbc1978b637f8bdd8719d0a2e5a4002ba03a2 docs/models/operations/getdebugsessionrequest.md: id: 5ef39bcb4afd last_write_checksum: sha1:aa6328e6d29c52851f5ae87c4d4ce6eab889f09a @@ -11944,6 +13025,8 @@ trackedFiles: id: b8db6ccd0e25 last_write_checksum: sha1:68a3b11eb42c0424c5f833e308e6cd5f1d01af3f pristine_git_object: f5fd3bb44e5f6992314350937105c768a93b935c + docs/models/operations/getdeploymentgroupbyexternalidrequest.md: + last_write_checksum: sha1:66e27dd7f3f6f1c4982c82ff3c3801bf1f141566 docs/models/operations/getdeploymentgroupinclude.md: id: 302e63771663 last_write_checksum: sha1:2ce718df4aac4a850be34e5d83aa7592d588813a @@ -11958,7 +13041,7 @@ trackedFiles: pristine_git_object: 79f398a1f205b75b62ed618e85931c7242fbaaa8 docs/models/operations/getdeploymentgroupresponse.md: id: 2d3a07c12446 - last_write_checksum: sha1:275db784dd5ab5ce19c517ac140928a9dbc4e933 + last_write_checksum: sha1:75a7fbcbce05a68a47c4643eb42afc7a7aa29d4a pristine_git_object: 494cfc64a61038e92d7a65af91d4d235d523d237 docs/models/operations/getdeploymentinclude.md: id: 1fdbf9f4f816 @@ -11970,8 +13053,10 @@ trackedFiles: pristine_git_object: a0d33672352c253c255548b1a3f124a6a31cc417 docs/models/operations/getdeploymentinforequest.md: id: 9161aadf1308 - last_write_checksum: sha1:22fb9d1c9db5af4e134c85b9043973e860e6ea75 + last_write_checksum: sha1:9518b44f0cdfd390f7b600e1b80ade973a4f8f79 pristine_git_object: 72b9e0cdf444ab6fba696ddbeae9aaf3b0b55b0a + docs/models/operations/getdeploymentinfosetupitem.md: + last_write_checksum: sha1:68084d451c36b896bc2fe12999a93c067160d52d docs/models/operations/getdeploymentinputsrequest.md: id: 9fa0353b6c8f last_write_checksum: sha1:f1554d0e05be2061607de23acfebdf38cfb739ee @@ -11986,7 +13071,7 @@ trackedFiles: pristine_git_object: 85163b98e627004ddd4ee2fd61c8aa27f47c8ac6 docs/models/operations/getdeploymentstatsrequest.md: id: 034555bbd656 - last_write_checksum: sha1:4b3877275fc83038c918e5cc6f9c5c12f5c13e2c + last_write_checksum: sha1:62868953a445de4e3f98ce0eaaa3d36e4d901444 pristine_git_object: 05e11221ed4935e995b87c0f81ada8952ad6a851 docs/models/operations/getdeploymentstatsstatus.md: id: 1eaf0af49a7a @@ -12000,6 +13085,8 @@ trackedFiles: id: ed4423b8e9dd last_write_checksum: sha1:ed27ae92bf5ebe509ce39d1c7a3493acb12f5764 pristine_git_object: 44712237b32661df960f33d2198162929297adde + docs/models/operations/getexternalaibindingrequest.md: + last_write_checksum: sha1:f4c28de02bf029e1f9960976b860c6edff718cdd docs/models/operations/getmanagerdeploymentrequest.md: id: 732569043edc last_write_checksum: sha1:39e920b811cfb3f55456edeb8961bdb15ad84ea8 @@ -12040,6 +13127,8 @@ trackedFiles: id: 83ad73d1c2e5 last_write_checksum: sha1:902ae3ad3ca583d26654a7991409a3fcd0c61cb1 pristine_git_object: ffb30163732b2c20d91d1edfc03a3d9fd3c836d7 + docs/models/operations/getoperationspolicyrequest.md: + last_write_checksum: sha1:f384d63eaf78095db8105f1660842c9c9105c8b5 docs/models/operations/getpackagerequest.md: id: a7095b5936c2 last_write_checksum: sha1:e2341561793c5dbb6a23721e7deb85ab3776ab63 @@ -12048,6 +13137,16 @@ trackedFiles: id: 0a329eadfcdb last_write_checksum: sha1:cc97fa336ca8c7d4c5fcf0574e077ea105fbc26a pristine_git_object: 7394426b348f7cbc481d569af548a06a2bb17eb3 + docs/models/operations/getprojectaiusagemodel.md: + last_write_checksum: sha1:c8eb96d2d7816fcbcb0d153e59e292ca47b2cf7d + docs/models/operations/getprojectaiusagereason.md: + last_write_checksum: sha1:47fea105cfa5e6e436daba9dfc2a150276f68935 + docs/models/operations/getprojectaiusagerequest.md: + last_write_checksum: sha1:6c551e1cc51500aa34a19be4f80026a1972032f2 + docs/models/operations/getprojectaiusageresponse.md: + last_write_checksum: sha1:21a501cb2eb5dbbc1ba2ccf5fe0178b1f215b0e2 + docs/models/operations/getprojectcapabilityoverviewrequest.md: + last_write_checksum: sha1:6ac64fde9f1bb478c57690ceea275e95ea5343cb docs/models/operations/getprojectdeploymentlinksetuprequest.md: id: 1956481b3f80 last_write_checksum: sha1:517741b7d1bf0d01c645c09ce9d97b9482d13883 @@ -12078,68 +13177,184 @@ trackedFiles: pristine_git_object: 0bd3de9019d1257e4763f3b39207e23df1e3abfa docs/models/operations/getreleaseinclude.md: id: ee689a40e3b1 - last_write_checksum: sha1:eb87134702e620f511aa3366ea8ccd96171ee48f + last_write_checksum: sha1:fa11fb6da63e2cecea5072681d892f046b5fb4a7 pristine_git_object: e05e38f81d0720ab8d858dfe00e420bfd9d973b1 docs/models/operations/getreleaserequest.md: id: 4f0017cc5670 - last_write_checksum: sha1:3fe87f491706d9a1878ca7f3fa90309d92ffc531 + last_write_checksum: sha1:f596a96ebb6a743302d195c85acfed7d680b74ef pristine_git_object: c52e712492dc8df72376010422ab1206b94c5483 docs/models/operations/getresourcedeploymentdetailarea.md: id: d300ab6d6854 - last_write_checksum: sha1:8f25418f2535a2276013197abd0b58896a483807 + last_write_checksum: sha1:f804ae2ee87eebf3f6830b7c4ec3c8640f2150ff pristine_git_object: ecbd7db6766d5b1d4f299fad9b8a7838d0400e99 + docs/models/operations/getresourcedeploymentdetailclientapi1.md: + last_write_checksum: sha1:ed86f1c1377763bfb6ab0ab3d85a5c7c9e6ca62e + docs/models/operations/getresourcedeploymentdetailclientapi2.md: + last_write_checksum: sha1:6a99e76acfd81b40e54b0bcd5af145afdaf531be + docs/models/operations/getresourcedeploymentdetailclientapi3.md: + last_write_checksum: sha1:c599a28a7d490eb8021d777e3a6766865aa2cccf + docs/models/operations/getresourcedeploymentdetailclientapi4.md: + last_write_checksum: sha1:8b3e2ad952d4724a6e16ec213fc4d597dad7e28a docs/models/operations/getresourcedeploymentdetaildeployment.md: id: 7598d8a42676 last_write_checksum: sha1:c1e86334cc51ea5af44faa6cd66d10911cb3cbe5 pristine_git_object: 16efd5c03b836344bf57f5798d3f90597a993f2a + docs/models/operations/getresourcedeploymentdetailmodel1.md: + last_write_checksum: sha1:e7e42a8b6c958df5827f5f545dc27534f5ccab59 + docs/models/operations/getresourcedeploymentdetailmodel2.md: + last_write_checksum: sha1:4ac172ad9774ca0374ec41d5e61432830fc8574a + docs/models/operations/getresourcedeploymentdetailmodel3.md: + last_write_checksum: sha1:07b1d07eb481d175ff2a2421094312c7e36f5158 + docs/models/operations/getresourcedeploymentdetailmodel4.md: + last_write_checksum: sha1:c34ae6c004f5c20125aface05a5d11d59d2bb793 + docs/models/operations/getresourcedeploymentdetailreason1.md: + last_write_checksum: sha1:232a9758e7c314d7c42863e4c6c527238671dcc4 + docs/models/operations/getresourcedeploymentdetailreason10.md: + last_write_checksum: sha1:2cfeb98e7b52131b55560220594e74bd53d61934 + docs/models/operations/getresourcedeploymentdetailreason11.md: + last_write_checksum: sha1:e688a1708f984231241c44f54632d06334f0f017 + docs/models/operations/getresourcedeploymentdetailreason12.md: + last_write_checksum: sha1:9bc480a32f4bb60f20772350188803e41258bce0 + docs/models/operations/getresourcedeploymentdetailreason13.md: + last_write_checksum: sha1:f4658d9632328961d5e973dbcf13b918f0bb5df2 + docs/models/operations/getresourcedeploymentdetailreason14.md: + last_write_checksum: sha1:463495a0ff96b23ebe20482ebf41eb0cb6a7d031 + docs/models/operations/getresourcedeploymentdetailreason15.md: + last_write_checksum: sha1:138cd5d73dd374366d264fb367cab65885563638 + docs/models/operations/getresourcedeploymentdetailreason16.md: + last_write_checksum: sha1:94ff17919c2cc83678a8b8e3c0846ddce01c1b6c + docs/models/operations/getresourcedeploymentdetailreason17.md: + last_write_checksum: sha1:a5862f9fde831359e3187dc4d48e3a3802958728 + docs/models/operations/getresourcedeploymentdetailreason18.md: + last_write_checksum: sha1:1449a2e8158b1f9e01a9e4bff233b54bb2710dda + docs/models/operations/getresourcedeploymentdetailreason19.md: + last_write_checksum: sha1:d60507d269f3b8f47693d066719e098aab8310c2 + docs/models/operations/getresourcedeploymentdetailreason2.md: + last_write_checksum: sha1:ce11968acd2f86347ab7235bc4672c70a319111c + docs/models/operations/getresourcedeploymentdetailreason20.md: + last_write_checksum: sha1:65dc99794b087e63d4b9dd5820a7da7043133f0b + docs/models/operations/getresourcedeploymentdetailreason21.md: + last_write_checksum: sha1:36fc3b9a3060e2828bf7c38e7207aae16ef85ad6 + docs/models/operations/getresourcedeploymentdetailreason22.md: + last_write_checksum: sha1:a86d07cb0c4929e9bd61acf132d5528a8a685230 + docs/models/operations/getresourcedeploymentdetailreason23.md: + last_write_checksum: sha1:e9c748e886f1a6c13da3ee380e1a5d5dc47c1f88 + docs/models/operations/getresourcedeploymentdetailreason24.md: + last_write_checksum: sha1:b23883aa82b7ec63037c3518b8453853045fcf78 + docs/models/operations/getresourcedeploymentdetailreason25.md: + last_write_checksum: sha1:ea73bf40e9fafaf53c666f6e2b595b4eff7a6386 + docs/models/operations/getresourcedeploymentdetailreason26.md: + last_write_checksum: sha1:f57a40ce51d4c5360b67ccac72ae8f09a6a06292 + docs/models/operations/getresourcedeploymentdetailreason27.md: + last_write_checksum: sha1:5b580657f07ba242bb2972ce707475aa0c55f710 + docs/models/operations/getresourcedeploymentdetailreason28.md: + last_write_checksum: sha1:34953293cc8d56e8b327439f6ada82d2b44d66cd + docs/models/operations/getresourcedeploymentdetailreason29.md: + last_write_checksum: sha1:2bb7acd01d53f729b3e3b0d68f5f4c71170f7d60 + docs/models/operations/getresourcedeploymentdetailreason3.md: + last_write_checksum: sha1:e823d70ff820aa247d47e41854147d3aae6ac828 + docs/models/operations/getresourcedeploymentdetailreason30.md: + last_write_checksum: sha1:83c5b25a6eead35cda6453e82392c689f7c0e94f + docs/models/operations/getresourcedeploymentdetailreason31.md: + last_write_checksum: sha1:3faaafc4d4b904961197c2fb41952ad65866c3c3 + docs/models/operations/getresourcedeploymentdetailreason32.md: + last_write_checksum: sha1:8f77a35a68a015425933d5d6574a6bd63f4098b2 + docs/models/operations/getresourcedeploymentdetailreason33.md: + last_write_checksum: sha1:b0511cf14443019b3395b9923b60bb917161e78c + docs/models/operations/getresourcedeploymentdetailreason34.md: + last_write_checksum: sha1:7fcc1ee349ec13427b68b49335319e63341d20a8 + docs/models/operations/getresourcedeploymentdetailreason35.md: + last_write_checksum: sha1:103bfda733d6b2014aaf446f4eda8183e644aa50 + docs/models/operations/getresourcedeploymentdetailreason36.md: + last_write_checksum: sha1:d82b27d5b50509f603ae71b40b4b2b95c03021e8 + docs/models/operations/getresourcedeploymentdetailreason37.md: + last_write_checksum: sha1:b09a3937a62959e73a898441be546f8ae00421d9 + docs/models/operations/getresourcedeploymentdetailreason38.md: + last_write_checksum: sha1:275c37d381200698f74723e6f5a5a5462be9161b + docs/models/operations/getresourcedeploymentdetailreason39.md: + last_write_checksum: sha1:24f49340a54c51338c0db97598f0b02b8f48572e + docs/models/operations/getresourcedeploymentdetailreason4.md: + last_write_checksum: sha1:14db98fbe48bf84fa3fae189476dd55ffbef01ea + docs/models/operations/getresourcedeploymentdetailreason40.md: + last_write_checksum: sha1:58293612539e43ab7ba2bc24d7357189b34b0a5a + docs/models/operations/getresourcedeploymentdetailreason41.md: + last_write_checksum: sha1:5e9cdfbe7ae521992cde74904efce086528aefd5 + docs/models/operations/getresourcedeploymentdetailreason42.md: + last_write_checksum: sha1:b55cd3a8415627ac36064fb2864391a03019da4b + docs/models/operations/getresourcedeploymentdetailreason43.md: + last_write_checksum: sha1:741e2255927443f8dca11ffc0c68e342a4767c8b + docs/models/operations/getresourcedeploymentdetailreason44.md: + last_write_checksum: sha1:4a93d9f6aee08d257c2b89fe2129d26217ecfbe6 + docs/models/operations/getresourcedeploymentdetailreason45.md: + last_write_checksum: sha1:df762c6d016752b1c1671ec48e95e8ddae8cdad8 + docs/models/operations/getresourcedeploymentdetailreason46.md: + last_write_checksum: sha1:7b9a557f24c679739e97b609459e1206667ac6bc + docs/models/operations/getresourcedeploymentdetailreason47.md: + last_write_checksum: sha1:f878b94c65f7f002061eb86b75af09c8e44e44b2 + docs/models/operations/getresourcedeploymentdetailreason48.md: + last_write_checksum: sha1:3ff0bcf6a90e4bf20e520c4b1076eac6ae76e304 + docs/models/operations/getresourcedeploymentdetailreason49.md: + last_write_checksum: sha1:c75e38b98ba5956f612c1c9d892dce6dd5443369 + docs/models/operations/getresourcedeploymentdetailreason5.md: + last_write_checksum: sha1:d9f4eded3973aba42358a9bd96e981ace2ad2d17 + docs/models/operations/getresourcedeploymentdetailreason50.md: + last_write_checksum: sha1:cc03b373ba4943a08e5fcca7201b84de1a6bdc1e + docs/models/operations/getresourcedeploymentdetailreason51.md: + last_write_checksum: sha1:f61055d171fdf94efebac8469052a1780bf2f013 + docs/models/operations/getresourcedeploymentdetailreason52.md: + last_write_checksum: sha1:bdf49d95bd998dd7022bd32ccd96712cb54fd238 + docs/models/operations/getresourcedeploymentdetailreason53.md: + last_write_checksum: sha1:e3376ceb4569394efec7fc319727eab84e0d4032 + docs/models/operations/getresourcedeploymentdetailreason54.md: + last_write_checksum: sha1:44f3bd2c7e908247a7d45ba9b3efad312e22a0fd + docs/models/operations/getresourcedeploymentdetailreason55.md: + last_write_checksum: sha1:70536a9aa857c62515c9d9ad7571ecc887a0e80b + docs/models/operations/getresourcedeploymentdetailreason56.md: + last_write_checksum: sha1:fdc807e4a1557901e90551135d70f78c1aeaf5cd + docs/models/operations/getresourcedeploymentdetailreason57.md: + last_write_checksum: sha1:f8f5ce77ea0b5c69d5a536d0d2747865b5a928b3 + docs/models/operations/getresourcedeploymentdetailreason58.md: + last_write_checksum: sha1:bae328b41a66d78cac103efa86c3da1e079652e6 + docs/models/operations/getresourcedeploymentdetailreason59.md: + last_write_checksum: sha1:b904a40f4a01b8a3db4d2f810535779e335a1861 + docs/models/operations/getresourcedeploymentdetailreason6.md: + last_write_checksum: sha1:95200c781621baf52934dc72eb81a832aa560d90 + docs/models/operations/getresourcedeploymentdetailreason60.md: + last_write_checksum: sha1:d5069c7a491d8afd62ddff0290dfe2069398f38c + docs/models/operations/getresourcedeploymentdetailreason61.md: + last_write_checksum: sha1:60b673702df3aa59d51ec958f905859ead8ab38c + docs/models/operations/getresourcedeploymentdetailreason62.md: + last_write_checksum: sha1:a72fc8ce83aee8bbe223226f47456342a8791b93 + docs/models/operations/getresourcedeploymentdetailreason63.md: + last_write_checksum: sha1:a23f368bfd12ee844df1e34893e5a23f3129e5b2 + docs/models/operations/getresourcedeploymentdetailreason64.md: + last_write_checksum: sha1:482dc6ced40cb0baf55af3654447a9dfa32daa5b + docs/models/operations/getresourcedeploymentdetailreason65.md: + last_write_checksum: sha1:436aa9c6c98480a98bb056a586719f690ff6804a + docs/models/operations/getresourcedeploymentdetailreason66.md: + last_write_checksum: sha1:8a8e061c76cba34f426265c5e5852114eafeeef2 + docs/models/operations/getresourcedeploymentdetailreason67.md: + last_write_checksum: sha1:e0acdaa392cb515b6f0fbc8c1940b9169897dee6 + docs/models/operations/getresourcedeploymentdetailreason68.md: + last_write_checksum: sha1:43eb4b87ec85e0b6f442e320fdc506f043598fee + docs/models/operations/getresourcedeploymentdetailreason69.md: + last_write_checksum: sha1:f2c2d5e13e4b6c4be2837b82867c2367592829cb + docs/models/operations/getresourcedeploymentdetailreason7.md: + last_write_checksum: sha1:da462e3bd202d949c7775928c27b9308c49917e1 + docs/models/operations/getresourcedeploymentdetailreason8.md: + last_write_checksum: sha1:d907531a28cd9802d366290109d134d17318e668 + docs/models/operations/getresourcedeploymentdetailreason9.md: + last_write_checksum: sha1:1a4f11d7e69bebd6d70b69b8a9276e2d56561729 + docs/models/operations/getresourcedeploymentdetailrepository.md: + last_write_checksum: sha1:7f7e0a4a541ce95bac209ae40f70ad55ac94ca8a docs/models/operations/getresourcedeploymentdetailrequest.md: id: d2e5d03fbf7d last_write_checksum: sha1:0a1d7ae05d089005a4dacd3d8e4569b62551a8ca pristine_git_object: 71e01fff5e4dbdeedfa05d562f031a285e5e9a6f docs/models/operations/getresourcedeploymentdetailresponse.md: id: e5b08a917f2b - last_write_checksum: sha1:4f3ba727c6cf39e927989d81acc7d31188a4d1cd + last_write_checksum: sha1:437edf13ee8826aa77f0aac774ba4e71a5f91d77 pristine_git_object: b2e25d5385275f12923f3e26318ea7f52c535145 - docs/models/operations/getresourcedeploymentdetailsource1.md: - id: b08fdc05513b - last_write_checksum: sha1:bce2deb72b47b3ec654c0189902d64d2a139afab - pristine_git_object: 39259b11f58063bba6677a3593b95728b0fadcce - docs/models/operations/getresourcedeploymentdetailsource10.md: - id: b57bb4fa6864 - last_write_checksum: sha1:00bfece82623470f28e43cf98402bb0f43869c97 - pristine_git_object: ec36d5195c20ab22a6cee164e077ab49e8bcfa3a - docs/models/operations/getresourcedeploymentdetailsource2.md: - id: cbb74d5fc090 - last_write_checksum: sha1:fce96948b83859ff5eff8b5037334a96e0abc1c8 - pristine_git_object: 5f197981a769bf6155c358331fd8726b8a051530 - docs/models/operations/getresourcedeploymentdetailsource3.md: - id: 71fc6c9405d7 - last_write_checksum: sha1:444a42c2b0bb9ba1cd4428f0f03dbe449db24dc9 - pristine_git_object: 0aa92223fb3f70fda8afcd2cfd593921a40a6ba9 - docs/models/operations/getresourcedeploymentdetailsource4.md: - id: 2015ab39bc75 - last_write_checksum: sha1:d2b8cfeab234f322628c8c70c42676b4db1c4d17 - pristine_git_object: cdcd0a350a9fc3ac8213366fdb9176b323b187d4 - docs/models/operations/getresourcedeploymentdetailsource5.md: - id: f42b58637461 - last_write_checksum: sha1:0fb67c3d04bc12b8dd3fc97be8be7ac11ed02bc3 - pristine_git_object: 8f9667184b2cecc6cef358ed0ee5fd968ee30464 - docs/models/operations/getresourcedeploymentdetailsource6.md: - id: ad128abf31d1 - last_write_checksum: sha1:3e34cb6e3534dfddc8c4dabd9d527fabdbb6c9c5 - pristine_git_object: e2696dd02adbe3c16a4326ee1852f28ac26dafac - docs/models/operations/getresourcedeploymentdetailsource7.md: - id: 73173ac97c1b - last_write_checksum: sha1:496d0aff570535e02d95f14153d4cf8dfc05b6b7 - pristine_git_object: 1a587281421fdf4729b986e85d4f9acfcfd66277 - docs/models/operations/getresourcedeploymentdetailsource8.md: - id: 8db7816e7e12 - last_write_checksum: sha1:36e754e6363f4abf82d2e98db964038f3f1dd6eb - pristine_git_object: 7cc7c771f2d4311360ccfc7d1d93ec13eab599d5 - docs/models/operations/getresourcedeploymentdetailsource9.md: - id: 60c518ab0299 - last_write_checksum: sha1:7475999560c30bad5b9956daa2bb6634689515fc - pristine_git_object: 6f0dfba9421dd47c566c93f6248489ece17c6095 docs/models/operations/getsetupregistrationoperationrequest.md: id: 3a69e2c89caa last_write_checksum: sha1:aa1e25eb58248ea644317539f52cb74c7d284223 @@ -12148,14 +13363,16 @@ trackedFiles: id: 8672ae2824a5 last_write_checksum: sha1:50521ee526720bd9bf86c51b9ceaa2926098498e pristine_git_object: 788f7fe91a849b7e995956be783fdeaf6e73fd75 + docs/models/operations/getworkspaceinvitationpreviewrequest.md: + last_write_checksum: sha1:5e80028d1fd67c69a5babf7b5bc92d5c74da1371 + docs/models/operations/getworkspaceinvitelinkrequest.md: + last_write_checksum: sha1:ab2b54d1d462878a3d34ae8b1f5d14021f75c88d docs/models/operations/getworkspacerequest.md: id: 2d440111adab last_write_checksum: sha1:9bd48eee245a346140a13d18da26586f755da90d pristine_git_object: d28b181ae80b64e1bfc5cf0be088f2fbc4ec4177 - docs/models/operations/gitrepositoryrequest.md: - id: 8ae0958449e1 - last_write_checksum: sha1:f0b82ba5289ebdc6107d5e2f223b8cd7624e5370 - pristine_git_object: eb0026ee2ae53a6b3ff00c3f2eee8dc231726ac2 + docs/models/operations/getworkspacesettingsrequest.md: + last_write_checksum: sha1:f32c8adae9bd71364148e01014226e460714a75d docs/models/operations/health1.md: id: ad3f0694556c last_write_checksum: sha1:59fd7c85f6421cc977471630c90f4edba5b2bcd8 @@ -12404,10 +13621,24 @@ trackedFiles: id: b2ab08cef8b5 last_write_checksum: sha1:087691685827ed5355f4f14e9f1b7c7fbe5f4d45 pristine_git_object: 3520cb16dc1ec1b6399528c9816f5c2d073a3d0e + docs/models/operations/health66.md: + last_write_checksum: sha1:fae26d966c242e1cfbde45634aae5b0bd7fc8b0c + docs/models/operations/health67.md: + last_write_checksum: sha1:a14a09a9fec92e44fa20824754b17c6ad38b4b3c + docs/models/operations/health68.md: + last_write_checksum: sha1:78614f3bce62b33c55d1fce8d5f755b6388a22ce + docs/models/operations/health69.md: + last_write_checksum: sha1:27a1cf5169e9224651d3ab88122236b2f0847546 docs/models/operations/health7.md: id: ea61de6f5a6e last_write_checksum: sha1:f4c9134fbe83a17033c83704e92643e2067a835a pristine_git_object: f2b4c5baf495eb438a929d6504c2f9202f161817 + docs/models/operations/health70.md: + last_write_checksum: sha1:ee242447dd681d3dde66120ae4bf06f0581e487e + docs/models/operations/health71.md: + last_write_checksum: sha1:ac867adc82ca26ccf157732cda915813d71b21e7 + docs/models/operations/health72.md: + last_write_checksum: sha1:6650b21e9d1012f752396d8871d1b82bba3bdd95 docs/models/operations/health8.md: id: 49e3fe0fdce0 last_write_checksum: sha1:ff516451c79e9b61456a6805b4ec6036f653dd6d @@ -12418,11 +13649,11 @@ trackedFiles: pristine_git_object: 766e3881e786cac95e351a72b2938a41defb5848 docs/models/operations/heartbeat.md: id: dcf7dc007257 - last_write_checksum: sha1:0128853edbc441902c3595e8aa60a0e8e79d2c2f + last_write_checksum: sha1:ccf4dcc31e71bf13225fa029c3733e9b10786630 pristine_git_object: 270ae0bc90078c7d89f367daf5b204d5244105e7 docs/models/operations/heartbeatavailable.md: id: c8f1c9d95625 - last_write_checksum: sha1:3808b54ee1cc042820d70eb543a45d7cf4ed0e1e + last_write_checksum: sha1:25f5415b9c64a2bf56d17881d625d647f7685ad2 pristine_git_object: bf79ed35835ce8c380366cbe25105dbe04d920db docs/models/operations/heartbeatmissing.md: id: 12c17db62109 @@ -12430,7 +13661,7 @@ trackedFiles: pristine_git_object: 8ff6ab5028dd6e6a2f5fb3e1aeef2e510a9e2556 docs/models/operations/heartbeatunion.md: id: ebff43092c78 - last_write_checksum: sha1:62d3231fd51fc48dc657e9cfdba9f066e902e58c + last_write_checksum: sha1:8ee7f3dbe74ffedca087fdb7f5a1ed381c45c18c pristine_git_object: f0e151c01cbd2e89b00c274d885ce360c7efdea5 docs/models/operations/importdeploymentrequest.md: id: 4f0ad8d4b16f @@ -12440,6 +13671,8 @@ trackedFiles: id: dfa37e7d5350 last_write_checksum: sha1:91d8e3227b3916db51bf3b516e793d4168c81a09 pristine_git_object: 26cb4663ae5cbe5b8dee071c09c2817593922c01 + docs/models/operations/invokeoperationrequest.md: + last_write_checksum: sha1:20b0fe476f62e2687b4ba762dd170521903a6479 docs/models/operations/involvedobject1.md: id: b9583b5a9cb9 last_write_checksum: sha1:e8c914f26111c6c12b13d2bc85f99a0f3a9fb3a3 @@ -12524,6 +13757,10 @@ trackedFiles: id: dc344d5b87fe last_write_checksum: sha1:2bef189ed80e65ebec50e2c8b5847a99f126ec5d pristine_git_object: 8071c9470d37b11cb7db0212beb95832f3248ca2 + docs/models/operations/label.md: + last_write_checksum: sha1:0b8cb9a4f2f2d6e311298cbbc25d9821265ef192 + docs/models/operations/lease.md: + last_write_checksum: sha1:ae380f22f143464809dfd8607d756202c4203215 docs/models/operations/lifecycle1.md: id: 09170ab98c61 last_write_checksum: sha1:5c60d249952304d32fbd6cd21b2792e268696421 @@ -12772,10 +14009,24 @@ trackedFiles: id: 33ca654d5def last_write_checksum: sha1:60df6037003b83a6251f1324aa79af7ab88e2a43 pristine_git_object: e3168536608fd6125c07f24d65870173234e0729 + docs/models/operations/lifecycle66.md: + last_write_checksum: sha1:759efc31cdd788ed1f56da1171aed66a1cb08390 + docs/models/operations/lifecycle67.md: + last_write_checksum: sha1:5b4b735f17275f641c6b13b9b55bccb6b28e4b6a + docs/models/operations/lifecycle68.md: + last_write_checksum: sha1:03e0f408361a2bbd501875b0e51174a869815032 + docs/models/operations/lifecycle69.md: + last_write_checksum: sha1:432491ac7806f96ffe5a2156989b1c67a664d53a docs/models/operations/lifecycle7.md: id: be06552c5a95 last_write_checksum: sha1:203b62497b85499637aeafb7ff7333d2e401ea3a pristine_git_object: a4192d512af357bd6dcd36d644fcda53fa6f7649 + docs/models/operations/lifecycle70.md: + last_write_checksum: sha1:92e096b7594efbd7c045ab35700bfb5a7ea09548 + docs/models/operations/lifecycle71.md: + last_write_checksum: sha1:4e559341079fb700910883ab1a79f90f1003901c + docs/models/operations/lifecycle72.md: + last_write_checksum: sha1:f37fe114f2c8604081b37c2ecda7cd9fb043fde5 docs/models/operations/lifecycle8.md: id: 29d0d291b110 last_write_checksum: sha1:b4b159e18a7bbdfef6803798f96d083da503d542 @@ -12784,14 +14035,26 @@ trackedFiles: id: 1fe62361c2b2 last_write_checksum: sha1:3f19ec169301fed8ff1539cfea84dec952370d8a pristine_git_object: b9b0d6b23c2b2d173e89282c7915e249bf030e0f + docs/models/operations/listagentsessioneventsrequest.md: + last_write_checksum: sha1:4ad8d35d94aa1d0af30a18b8523e869c23a1d294 + docs/models/operations/listagentsessionsrequest.md: + last_write_checksum: sha1:cd1ae458491f3e22e1d8ed0d5482f6c34f272c7c docs/models/operations/listapikeysrequest.md: id: d184dc4cdcab last_write_checksum: sha1:a6be74f445f2498004114364628f31c9b5768480 pristine_git_object: 9cb5b7260776bdc0e09a42e8be6bb42e33b3e4a5 docs/models/operations/listapikeysresponse.md: id: feed1d8bc9c0 - last_write_checksum: sha1:c448c41b1d380583f8c6d9eea8dd2481969c0589 + last_write_checksum: sha1:bbfb6ee28a80fa4a0391e182a9230de9d5a17202 pristine_git_object: 7b707e1f2c4f66d98066c60c585a4c042e4fcd6a + docs/models/operations/listawsvirtualkeysrequest.md: + last_write_checksum: sha1:c450c931a6d37515f175d359954dfd08743594ff + docs/models/operations/listawsvirtualkeysresponse.md: + last_write_checksum: sha1:4d13a10c783e108671805ee10207c5d90671cf3a + docs/models/operations/listawsvirtualkeysstatus.md: + last_write_checksum: sha1:357fd9e22a567a07715bcbac429a147d3696f475 + docs/models/operations/listawsvirtualkeysvirtualkey.md: + last_write_checksum: sha1:c54a11cebfa3605d24e1428943194a8b1d1bc12f docs/models/operations/listbillingauditlogrequest.md: id: f07e072e247b last_write_checksum: sha1:8002d4f0186f4d2c6db450a4947f211a71efa288 @@ -12862,7 +14125,7 @@ trackedFiles: pristine_git_object: 6319ff953095be1694e9b824de9b1d562a5ad2b8 docs/models/operations/listdeploymentgroupsitem.md: id: 9a2261451678 - last_write_checksum: sha1:fe1e87339a3f68d4a78ddbe3119a4d6398742583 + last_write_checksum: sha1:97948b0d9ce907a4e7be4f92e6dfb8ecbed030d4 pristine_git_object: 5bf2ef90d681f7d76ab3f77cf5e26baa90c1a9a6 docs/models/operations/listdeploymentgroupsproject.md: id: fc39bb500163 @@ -12874,7 +14137,7 @@ trackedFiles: pristine_git_object: 905ecb6a2489345fa2800c3502085699cbb651dd docs/models/operations/listdeploymentgroupsresponse.md: id: 5e579afb744e - last_write_checksum: sha1:db9accccf1cee07e6b919ddade9dd9cb36a54a4a + last_write_checksum: sha1:c48510492586a77a6b2c3a8fc612dbe646c4f3dd pristine_git_object: e40dcec6f3607a96b16fb15d10de0be487c819ee docs/models/operations/listdeploymentsenvironment.md: id: 0a60c34934d3 @@ -12886,11 +14149,11 @@ trackedFiles: pristine_git_object: 1a399d3c0e68ac2ad6ad5528e136d4273994a89f docs/models/operations/listdeploymentsrequest.md: id: 854523666c28 - last_write_checksum: sha1:58c3f203994bbdd033f54b65834ecd8f925d3765 + last_write_checksum: sha1:4f2077160d522645c5efe252d2c7fa16378d0744 pristine_git_object: 44fe69b8a24ebeac6bc6c7e62ecfae357be40780 docs/models/operations/listdeploymentsresponse.md: id: b3b1e4f8a3b8 - last_write_checksum: sha1:7391b547d30c28179a52e820714f6cc130f3610f + last_write_checksum: sha1:22a7176e61dc178ee148defd1e438a69ec200077 pristine_git_object: f97f2cb4d91bf889f51e9889538e02317ece4722 docs/models/operations/listdeploymentsstatus.md: id: c99e64ef8b2f @@ -12904,13 +14167,15 @@ trackedFiles: id: c04f9fccf81e last_write_checksum: sha1:57d6b1c574992c157cab6717391909c37ac0aed9 pristine_git_object: 86d53e2967c889ab89b3722f63fc0bc1a906207c + docs/models/operations/listeventsinclude.md: + last_write_checksum: sha1:867c4163d882b5bdb47b342c16c14baf8004620b docs/models/operations/listeventsrequest.md: id: 4c63e4d672e2 - last_write_checksum: sha1:b22ccc8fe7beafa01c56c56b19975ba2ee384bb6 + last_write_checksum: sha1:940b898a2354eb1e1f20b695364b5852202014c5 pristine_git_object: 73dfec390e1140b6b3b5c5714bd98402fa2ce4ad docs/models/operations/listeventsresponse.md: id: 4ce22aaeca78 - last_write_checksum: sha1:6099b79c8d28f6a4aa0a4db3db921d8afedbd769 + last_write_checksum: sha1:255973c4cf04f61fe3660c265d2e558f2002d4de pristine_git_object: 5d6a640d1971fb079d0017e1e400fb00e7870dd1 docs/models/operations/listgitnamespacerepositoriesrequest.md: id: 4c50cbd5efd9 @@ -12964,6 +14229,8 @@ trackedFiles: id: 0320c994e442 last_write_checksum: sha1:a26fa9c9b79cdb3d477d2ca6a1dd8b631fcd45a2 pristine_git_object: 8eb625b21ce6e3f8514330d0bb750327a7c7b92e + docs/models/operations/listoperationspluginsrequest.md: + last_write_checksum: sha1:e27d0e4691dd635e7644e2b522b4e8635a3fca4c docs/models/operations/listpackagesrequest.md: id: 2a8e5e099f9a last_write_checksum: sha1:5c4291b9bf6ea75deec756367e4fd07549703256 @@ -13008,13 +14275,19 @@ trackedFiles: id: f2ac65d89a63 last_write_checksum: sha1:cefe9d0dd13ac0f2e75e7207a377fa44199fb1fa pristine_git_object: 1d4f0f171642367ca9c6f1a75112ee62b3deb954 + docs/models/operations/listreleasechannelsrequest.md: + last_write_checksum: sha1:8f627adb7fa90ad837ad22d9f487d1369c32652d + docs/models/operations/listreleasechannelsresponse.md: + last_write_checksum: sha1:d88190ea1089bb308b29b9cb6b82e68823ad2c57 + docs/models/operations/listreleasedeploymentsrequest.md: + last_write_checksum: sha1:5d46d92079e6a9a3cd1faa88401e45bfd20f6800 docs/models/operations/listreleasesinclude.md: id: 475e33ee8488 - last_write_checksum: sha1:9837861fbbae2140f52efa5a39a7aaf8b99ed6ca + last_write_checksum: sha1:d8aa725508e81dcd52ce1e72435bc59b085a40a7 pristine_git_object: 1f958a0e30d63f146477ccccf8ee73727706ae89 docs/models/operations/listreleasesrequest.md: id: 5055faa42f8c - last_write_checksum: sha1:b2c6d9bc1c03f1cdc1a75d046b0b83d0f3996845 + last_write_checksum: sha1:2d27b6a3cd25891418b526a7379f55a81ffafcb4 pristine_git_object: 6e361a453e2aceb49431157936d13fe88cd552db docs/models/operations/listreleasesresponse.md: id: fe20d3e71b3f @@ -13022,7 +14295,7 @@ trackedFiles: pristine_git_object: 853bd305576fcd628c74ff78a1a553a6c431bd89 docs/models/operations/listresourcedeploymentsarea.md: id: 3459f0fe44cc - last_write_checksum: sha1:f33016a3e8f8cb607c44288730240bc40beb79da + last_write_checksum: sha1:3277c96556172e1bcf1ae257420420ce9730b9da pristine_git_object: 267f18b6d05242f8d9533628e4b2d41ec9c56978 docs/models/operations/listresourcedeploymentsdeployment.md: id: e1d8030dea00 @@ -13030,7 +14303,7 @@ trackedFiles: pristine_git_object: e77f502e8a66d5bcddc7f4cdb313a0776db8eb9a docs/models/operations/listresourcedeploymentsrequest.md: id: b1f4b0e060d8 - last_write_checksum: sha1:6b6c13eb54938c2cce7a27c3e58741b181b8ef0c + last_write_checksum: sha1:1e416f71b047506fbf04247e23ac2ade60fcbbac pristine_git_object: 5ae1639f46ec4e92f0eeb1f684c7060369b33b40 docs/models/operations/listresourcedeploymentsresponse.md: id: 0c93efaed40a @@ -13038,7 +14311,7 @@ trackedFiles: pristine_git_object: ac6a7cd76673182df9a3f39341a638ea49ff6299 docs/models/operations/listresourceoverviewarea.md: id: 1b3bdea3a691 - last_write_checksum: sha1:b348a492f214fb90dcfe08af2bbf10868fd2c54d + last_write_checksum: sha1:52e8e297e8a622ec81dc49a518ef82345583af65 pristine_git_object: c51c26234d7e30cffb865529a77a45b060f5b07a docs/models/operations/listresourceoverviewrequest.md: id: 97eb9730d0ef @@ -13052,6 +14325,10 @@ trackedFiles: id: d18e327878ea last_write_checksum: sha1:70cb520a5f4fda88aed9d51591bc31aa08a32fcd pristine_git_object: b2aee4fd68a57f2019a31ed229845ace43a75551 + docs/models/operations/listworkspaceinvitationsrequest.md: + last_write_checksum: sha1:474ac28b6c8bd0a9b04f19f74441eef6051d9aba + docs/models/operations/listworkspaceinvitationsresponse.md: + last_write_checksum: sha1:4a0470371029ec8ec212d5667e7d431b8b9cca88 docs/models/operations/listworkspacemembersrequest.md: id: 33e06e7b1cea last_write_checksum: sha1:c980628a414de1cc0ae5ca7ee2053beee840b7db @@ -13686,7 +14963,7 @@ trackedFiles: pristine_git_object: 3c211f5295e236d5c7ecd9bc3ed2d7a508e447c4 docs/models/operations/plandeploymentcomputerequestbody.md: id: 79510dc4edb6 - last_write_checksum: sha1:d8df97b022b6fd7d9eeedd29409f221a7cafe1bb + last_write_checksum: sha1:d1d4ad36c2d0920f3a8a6cdce38385cc14c6c6ca pristine_git_object: 511dd263b17d5b469d834fb37c7fa8b221822c02 docs/models/operations/plandeploymentcomputeroutegateway1.md: id: ce508e98831b @@ -13712,6 +14989,8 @@ trackedFiles: id: 883faff8ecf9 last_write_checksum: sha1:9c117a58c2d97ee87e28b45997e0221ad1e75ea4 pristine_git_object: 774a7be9057490c3c8b12725168b11850b779c6a + docs/models/operations/plandeploymentcomputesetupitem.md: + last_write_checksum: sha1:c8b357623b0eadb9b72b8b8ee6da57e6004b6496 docs/models/operations/plandeploymentcomputestacksettings.md: id: bba93f950d63 last_write_checksum: sha1:84a3f4aef083886910d6c53a2c50879479f8dd05 @@ -14134,7 +15413,7 @@ trackedFiles: pristine_git_object: 31ac041efa89bac6db4efd5c949c890778cf9659 docs/models/operations/preparedeploymentstackrequestbody.md: id: 31a31125978b - last_write_checksum: sha1:30185f100dcab08d62cc05d2345c89206a51dcd1 + last_write_checksum: sha1:788f833ec24029d5215feccc49730c19ab7fbb43 pristine_git_object: 3a2b8c15be31a3ebefd1fbfa2743cd9dfe93d483 docs/models/operations/preparedeploymentstackroutegateway1.md: id: 984aa908e64d @@ -14160,6 +15439,8 @@ trackedFiles: id: f9ebc60c23d4 last_write_checksum: sha1:3677de6cf6bfb5b5174a221b13ece0414ff1c53d pristine_git_object: 9d369dbf591bfb533f221a60c03bf04f25e2688f + docs/models/operations/preparedeploymentstacksetupitem.md: + last_write_checksum: sha1:7d5d86419e594c7bdb3e1bfdd397987f90af0e7f docs/models/operations/preparedeploymentstackstacksettings.md: id: 79e7ba95e436 last_write_checksum: sha1:9c16f257f34bf4309dfe13b31d834db0e60af68d @@ -14200,6 +15481,8 @@ trackedFiles: id: 0cbaf3fee030 last_write_checksum: sha1:4ba3ec0ee2e593266e38585fbf025d47c2b826b1 pristine_git_object: ac3787723811f8bdd09bc03ae1abdec22efd03e8 + docs/models/operations/pricing.md: + last_write_checksum: sha1:fcc7c7ae0d9895923e3a8ac8ef6a8301a0df66de docs/models/operations/primaryendpoints.md: id: 698a2311fe09 last_write_checksum: sha1:d6e177b89cb32d90612443d66b5251d8a9b7a68e @@ -14240,6 +15523,10 @@ trackedFiles: id: a0b985b6836d last_write_checksum: sha1:9d8b70a5dc04a609a9a8cd79006cd39211a15579 pristine_git_object: 63db62876d03610c5f300745dd958cd2d10860ff + docs/models/operations/promotereleaserequest.md: + last_write_checksum: sha1:b3302d814f8a53ef825d032eb2878546ddae45d2 + docs/models/operations/promotereleaserequestbody.md: + last_write_checksum: sha1:5a7674d138532897241450af0f08f44863de6087 docs/models/operations/providerfleet1.md: id: 943c7de08320 last_write_checksum: sha1:d4ebd91c30ae2f0b7413dcd36d54d3bdbb9c48c1 @@ -14260,270 +15547,34 @@ trackedFiles: id: db8d4b19b9d7 last_write_checksum: sha1:a99266c562e5bf6f58165a37ccac799acce83ded pristine_git_object: 12045b185f34cd6805268d5b91f65c445c30e664 + docs/models/operations/publishoperationspluginrequest.md: + last_write_checksum: sha1:656d31c59b559939b90c9ae669ab61411e29403a + docs/models/operations/putcontainerregistryrequest.md: + last_write_checksum: sha1:d57f963420fc46b329ae01537351a24fe2653d41 + docs/models/operations/putcontainerregistryrequestbody.md: + last_write_checksum: sha1:6557771ffeed2522df7a8630f8ac009447852df1 + docs/models/operations/putcontainerregistryresponse.md: + last_write_checksum: sha1:8f2d997af8c084f638a8cccbaddd6c52678331f5 + docs/models/operations/putcontainerregistrystatus.md: + last_write_checksum: sha1:9f69cc404c743786814ebfca3078c6877cef7cc9 + docs/models/operations/putexternalaibindingrequest.md: + last_write_checksum: sha1:129394defcea6edd4ba0af54c85cbf5bfc1cfa34 + docs/models/operations/queryparamrange.md: + last_write_checksum: sha1:1673b47c4cd59567eabb5d9fa900686ab76fb19e + docs/models/operations/queueaccessrequestcommand.md: + last_write_checksum: sha1:20e5c91ef66585fde74ad69c11cb60098ddfa6c6 + docs/models/operations/queueaccessrequestrequest.md: + last_write_checksum: sha1:2edc60fea049849e8e27181a883992b218f50d12 + docs/models/operations/queueaccessrequestresponse.md: + last_write_checksum: sha1:974d0f2f2a9d4b7dd57968a85892b831a76e3f41 + docs/models/operations/queueaccessrequeststatus.md: + last_write_checksum: sha1:aa5834af82dd490314b8e117982ea5f0f25196e4 + docs/models/operations/rangeresponse.md: + last_write_checksum: sha1:e33c774b5536d8325d1310549ceae81a843ed56c docs/models/operations/raw.md: id: fb55e4903645 last_write_checksum: sha1:d357f127d5cf617d49c9b3e26bf72d46453f0967 pristine_git_object: ffcb4aa7a6d1ba8b9800c8ea4b1e8697b7f15697 - docs/models/operations/reason1.md: - id: d2a03b04f9b0 - last_write_checksum: sha1:cf75e060f77db02f8d09ce206e04ce4149c4e52d - pristine_git_object: e314e5fd97981798050a8eeaf299326764194ba2 - docs/models/operations/reason10.md: - id: 5a294ad36970 - last_write_checksum: sha1:d276942b52f2f8cf1ea85a0120515470d471b911 - pristine_git_object: 09e45f1eaaec6b7bac47b4dec5f7f35bdfc0f8d5 - docs/models/operations/reason11.md: - id: 9827dd2fa5c6 - last_write_checksum: sha1:0e8affb98cf945289bd6063c4781a45d85b29721 - pristine_git_object: 53a3e1f79f97759e7a0f3afdbcf289d2ece587f0 - docs/models/operations/reason12.md: - id: 087e91c689d5 - last_write_checksum: sha1:3e934bfae4e4d1c3f3cb39761cf2d63e9ad91ff0 - pristine_git_object: b52d87308589555dc9270d558fe5d2dc71c92124 - docs/models/operations/reason13.md: - id: efde7201fcc3 - last_write_checksum: sha1:0a04bd2868c1d76193a1389187b15a986f0c4cf1 - pristine_git_object: 12e442e8119751782071cf37f4f7199726c0771b - docs/models/operations/reason14.md: - id: e1b43a5773aa - last_write_checksum: sha1:8946b47f763bc7f3e0a30a4612106a10baab92af - pristine_git_object: 0a1469c64b05f759263fb8e9bd2e49f74e2f0aa5 - docs/models/operations/reason15.md: - id: f358c6934d67 - last_write_checksum: sha1:65c73a5398f27b0d753383306d464ef072d217c6 - pristine_git_object: 327227c9091668a3e5f27183c29c9fd5568882c1 - docs/models/operations/reason16.md: - id: 04fc108d42da - last_write_checksum: sha1:7dcf696eb3a9086689c19e7feb04b55f64982869 - pristine_git_object: 5daba018d2567f850ed3d0cce7ca74a4c285b487 - docs/models/operations/reason17.md: - id: b648bc9cbb0e - last_write_checksum: sha1:15d2c3c566ae29c2b2c82e2bf52177c8f66ea809 - pristine_git_object: f4376ad22908e23248b0469fdda52ff5991f290c - docs/models/operations/reason18.md: - id: ebdf859c2b00 - last_write_checksum: sha1:b2e2a54db17f7e6e81519f52bc3e7e1ed6fae609 - pristine_git_object: f44c88e0f18db0b189d3d3211f3ad039c4d1a236 - docs/models/operations/reason19.md: - id: c5f2c27ca045 - last_write_checksum: sha1:860bdd57a25d7f5f35401eded3321335a982197c - pristine_git_object: 210940b5ee6839ff39fc77cbe57807d849ff607b - docs/models/operations/reason2.md: - id: 1ce4ff5552ae - last_write_checksum: sha1:97187fa988665e4696ac185811ec290e4c4f9d62 - pristine_git_object: eceb713f877f583c4a358b7f3fb8eb40fe66b27a - docs/models/operations/reason20.md: - id: 9b578847346e - last_write_checksum: sha1:b8d6966ff4fc0fe3db80c801749a50ad11a7f509 - pristine_git_object: 2f7351d52c0ce7368fc8f63c7c80489f57ff7eb4 - docs/models/operations/reason21.md: - id: 9ce5a2916d97 - last_write_checksum: sha1:33fe2f69861dcce9ce03f1786f4f55d427dd26e1 - pristine_git_object: 436eda3da378eab5c2020fd4b9a2a5ef76c6c7c1 - docs/models/operations/reason22.md: - id: 93a5a45699f5 - last_write_checksum: sha1:b5206f4cb2ea27b6def490cd2b1c56c3c37b2544 - pristine_git_object: 98fa1639c78cad9b382669f06e5ff75ff3075631 - docs/models/operations/reason23.md: - id: 4b24436856fd - last_write_checksum: sha1:b3ab8f85708bb3db661a502f1dbd4a4bd8a4b767 - pristine_git_object: 22d232ed6a2e983b0b82378b822305c1c56989e7 - docs/models/operations/reason24.md: - id: 6c50b9d66c41 - last_write_checksum: sha1:a63c63a1aef0abbf28366e0254d001d54aaadf91 - pristine_git_object: 8d81988dc1ba3d0ebe2f46fafcc5c29d8f4b8e5e - docs/models/operations/reason25.md: - id: a7fb9be889d7 - last_write_checksum: sha1:ba9accd658cccf707276da1342e1165aefccabf1 - pristine_git_object: 2c4b1ff7207ee20a2881228152f56c7f0fe3232c - docs/models/operations/reason26.md: - id: a7e16e039e6d - last_write_checksum: sha1:5f1b7f59eb8f54aa15159036510b03f957fcd8e9 - pristine_git_object: 431f0a62d53665865c53d17e7bce663683cbb5a3 - docs/models/operations/reason27.md: - id: c1ba378012a7 - last_write_checksum: sha1:d0fbc62ef73ade00321df82e36f17b6cc4c17a70 - pristine_git_object: 749677b2e89a0893250f46b9da4ceed2c978cce5 - docs/models/operations/reason28.md: - id: 0bb7ec463ac5 - last_write_checksum: sha1:896bce93ffe6407aadc177a12d64f352bbbd45a9 - pristine_git_object: 3028697def8bcf109076ba6c57c64df9a16db697 - docs/models/operations/reason29.md: - id: fa3c1a4a8662 - last_write_checksum: sha1:a15b3684f12d87f1ed8d0b2e96d105f157f5c90a - pristine_git_object: 2e4ce6a4e2a35d58770d7baffe27202c0ff56061 - docs/models/operations/reason3.md: - id: d0dfca472d68 - last_write_checksum: sha1:d2ab5c315534af4533982a73fdec35f4488077f6 - pristine_git_object: 2213ed73ad5852424191a8846d2c4775d764476b - docs/models/operations/reason30.md: - id: 58acc9d1c5cf - last_write_checksum: sha1:f2ef35c55981cf9d0b95064d227102a09c32c12e - pristine_git_object: fa928e9d07af8371c3643b605ececb5054c85a79 - docs/models/operations/reason31.md: - id: f6afb48babaf - last_write_checksum: sha1:f36448fc73672a559ccac6acabf5656906d1f59c - pristine_git_object: 2d73454fb4784229383f7393c489572ca81f8274 - docs/models/operations/reason32.md: - id: 66a4d48fd35c - last_write_checksum: sha1:4dc0ced14e46e144e8fbd2cde9192cc94254424c - pristine_git_object: 65a04f9293a157e6267024264826a548bc32dcd4 - docs/models/operations/reason33.md: - id: 042e4cecd278 - last_write_checksum: sha1:6f45dd25822bf1432397a4210aa96122357ef02a - pristine_git_object: 14d4f772d7246d06b0aca8b08c229178baaaa3ae - docs/models/operations/reason34.md: - id: 17c4c7043a71 - last_write_checksum: sha1:6e9e91a4a9e22f47ea6cc18167ee2f16b86df2eb - pristine_git_object: ded2733776461f2e5fbd3e97956df658810283db - docs/models/operations/reason35.md: - id: 18e05d0423e0 - last_write_checksum: sha1:34e3d10f72a098d92939eae0232b66a7af1d789e - pristine_git_object: 1cef782ca29b033d41c7369f56337185343b5ef3 - docs/models/operations/reason36.md: - id: 593476348b73 - last_write_checksum: sha1:1478b76593e827a12e7e0e2f031adc98de7f1bce - pristine_git_object: 6bbbd97d565ef2f925e6427deeb7ed24dd176df1 - docs/models/operations/reason37.md: - id: aa01b7ac637a - last_write_checksum: sha1:b4828d130d1e27dd2b82b919c06d1c97dbded13c - pristine_git_object: b7ec9525904b500b8ed2c1952a9c84200c4de4be - docs/models/operations/reason38.md: - id: 43c1f220560a - last_write_checksum: sha1:f5558804f0b1419f488f0e1ac9127480387e4b40 - pristine_git_object: 6cf7601308650fedaaf29ff03b04db50e0e97b95 - docs/models/operations/reason39.md: - id: 65676c63491f - last_write_checksum: sha1:cbd0f43dc9857e1547a47ae0a8343c61cc69ec8a - pristine_git_object: 6379c882136937a5079da74009517b6a6ce99bc3 - docs/models/operations/reason4.md: - id: eb73ca239f15 - last_write_checksum: sha1:dff3d526c5358b7eb0eaed0aef6d77818765b256 - pristine_git_object: 262bfcc875ee63ccb235d0da25ac05d946d0ea9f - docs/models/operations/reason40.md: - id: 15d2a7bf0f08 - last_write_checksum: sha1:5b5f08f5502370472d9e4859902b209e290de2e0 - pristine_git_object: 408dc2223d70ecbd6fe932047456bce76de0fadf - docs/models/operations/reason41.md: - id: 7b2b164ddcea - last_write_checksum: sha1:b7229e4d1f72678026fad78ae0c491d490ed160b - pristine_git_object: 05556dcba694b8d72a35e06038fc3817dcdaf6c8 - docs/models/operations/reason42.md: - id: dbc193522166 - last_write_checksum: sha1:4a6e8c276d690ae8d4ad28706e263856da38cc1d - pristine_git_object: e411fb68d61aa2f17ebb4db4a2218c0a51800a96 - docs/models/operations/reason43.md: - id: 3d750f87a692 - last_write_checksum: sha1:b2bb227b3851487a57c056f4ce2610c3083cb4e9 - pristine_git_object: 593895ff33a576546349dd31c68304ec6d4f096f - docs/models/operations/reason44.md: - id: cb233da4d561 - last_write_checksum: sha1:b279f76a36792f1338ddcc4bb7c322bc39cc127f - pristine_git_object: 969c56cffe330f010e2ef1bb98a01ce20269b498 - docs/models/operations/reason45.md: - id: 51df295432ef - last_write_checksum: sha1:c389a4cb0d00e5e4cfce391db1a6630574c03b2f - pristine_git_object: d5e2bb8fcd9c7743074e73cd10e30e014c5e64fb - docs/models/operations/reason46.md: - id: dd115d6ebecc - last_write_checksum: sha1:2e78b6c80dbd1de241f24eb22a874e9710d490d4 - pristine_git_object: dc91319af65a66932a7c0ba065d373e49d65c7f1 - docs/models/operations/reason47.md: - id: 14bdf40155a0 - last_write_checksum: sha1:4bf6cf37a266bca1565b0cecd7b4ea267474f60e - pristine_git_object: f2437512931faf190c7945cca7fb4bb0a6e6ed08 - docs/models/operations/reason48.md: - id: 0c4a494d47d7 - last_write_checksum: sha1:db0d3e3174a9b539cec477fdab2add787898b8a1 - pristine_git_object: 8a6c16d30d5f0681b641a85bdafb5a9db0b06f17 - docs/models/operations/reason49.md: - id: a5cfdcd1bf6e - last_write_checksum: sha1:d3dd9cac304d4c658b47d9e419e2d96530b49ac8 - pristine_git_object: 1fdbe764a45c9b93516c2a430d420f74a3b98dfd - docs/models/operations/reason5.md: - id: db992ddd471d - last_write_checksum: sha1:85effac8830b96555255ec93484498286799a0f4 - pristine_git_object: 3410bda8ea1f6ba887b2f9c9838b0384d24a9a70 - docs/models/operations/reason50.md: - id: aa857cf7124b - last_write_checksum: sha1:6ff0d056fe5df691b18d86f6fc2c029b9f34488f - pristine_git_object: 6d4a984d8241c65fa1473cda7460ab380ad0d9b9 - docs/models/operations/reason51.md: - id: 9bc289d04b76 - last_write_checksum: sha1:cdefc2d499b408a03fa4c544a9167bdecba12112 - pristine_git_object: 526a2767277130518b3781d158962a3ff111ac23 - docs/models/operations/reason52.md: - id: a3f32afe4841 - last_write_checksum: sha1:f7e52e4bee75cf138fcfb36636fd05cc22a8076e - pristine_git_object: 5f1335c4de2c0393fc9654c122173a6bf0f0460d - docs/models/operations/reason53.md: - id: e4ce9198ef61 - last_write_checksum: sha1:0351563bd11836ef15016176c2c665c2f25516c5 - pristine_git_object: 0c063f0391b8e4d5966485a95ffbb6d124e3565c - docs/models/operations/reason54.md: - id: ab800e11b882 - last_write_checksum: sha1:5e543e6c4505894bc7f7bd338e37958381299bd2 - pristine_git_object: 6108a9979f1133adc617d7036ec790cb4f9dbf7f - docs/models/operations/reason55.md: - id: 0d418b97417f - last_write_checksum: sha1:af13d448bd57e06e8719e60c17c40a39113c9777 - pristine_git_object: 726b7e5fff678bf567bd8a44aa845fc1a75166da - docs/models/operations/reason56.md: - id: 6bf5168bed48 - last_write_checksum: sha1:baa83d9c179bf76e76ced187405d2bc1b8e7aa95 - pristine_git_object: 1fa8b37d8d7c40b662e3bfa0c72d2c6a0b3b7097 - docs/models/operations/reason57.md: - id: ed77e7519023 - last_write_checksum: sha1:1c35c6026c4fec4fbd2fd1e7e5131e9242adc4b4 - pristine_git_object: 9aa5e471881215c534543e615303573474c78307 - docs/models/operations/reason58.md: - id: 5dc147e8c64d - last_write_checksum: sha1:6fdef3db1636c7d35dbd5d4582bfd3f4c49ded81 - pristine_git_object: 4896129f6d6ab7d86e3bab2bb2adfe956e6ec423 - docs/models/operations/reason59.md: - id: 5da4e7ed868a - last_write_checksum: sha1:fd395ab9cf3963f12603001d3e73dddeb90e39d4 - pristine_git_object: 9585916afe688eb091d4fc85a12e73888a436159 - docs/models/operations/reason6.md: - id: 63fbeab61c80 - last_write_checksum: sha1:a60791a319ec81a4720956150cb097ac56dae8f3 - pristine_git_object: 63f9e4874e86c1b25102de6b580e82e5063c52f7 - docs/models/operations/reason60.md: - id: 8873c1a8e029 - last_write_checksum: sha1:d300c88b717a12731ae4b1ee841796afd150c748 - pristine_git_object: f5d9a71fcb387c93440ffb1f2d4a3c79ddbe8b0e - docs/models/operations/reason61.md: - id: 9573f00f11ac - last_write_checksum: sha1:10b94dfe2faab3b328200fe05328d24bd024e43f - pristine_git_object: 6b2ce39f1769e4c73ebd9437d00f8a7b0ec2edbb - docs/models/operations/reason62.md: - id: 195d589780bb - last_write_checksum: sha1:45e554df44e8cda076a04929ff11228f057c0d67 - pristine_git_object: 1c58e360d585d1ba991318caf201824252eb00b0 - docs/models/operations/reason63.md: - id: 38d7f6060f64 - last_write_checksum: sha1:75d6c017a2cec1f8031777645993f2e3e057c75e - pristine_git_object: 710bcc262ccba142a0cfd8641a9fbed79aebab3b - docs/models/operations/reason64.md: - id: 4832fb415ac9 - last_write_checksum: sha1:dce94c0a363b42d3f36a4b0297932c75b9a3a42a - pristine_git_object: 08f2c7e0764bad90f0c84a275978ce055fd8181d - docs/models/operations/reason65.md: - id: 4fbcca7c5b4d - last_write_checksum: sha1:5aaaf106c06c3d838de16d6ae9af8ef1e80661d8 - pristine_git_object: 5b19c62019b9dc24506b5887adda4029fcbb48cd - docs/models/operations/reason7.md: - id: 34465177cd83 - last_write_checksum: sha1:4cb68438c78e3bee2859ac0afcb530238e6f4923 - pristine_git_object: 7779eeac2f44cf4f1b6bd911560655f4652eb2a9 - docs/models/operations/reason8.md: - id: ad5c16ddef38 - last_write_checksum: sha1:52fa3bf0cdd953f665b5c261fec61b2af80052dd - pristine_git_object: 2d1241008b528acf6a2d3867891361488459d9b2 - docs/models/operations/reason9.md: - id: bfc280fa75bc - last_write_checksum: sha1:775981467f516869703bdfdb7a5a83335e8c6af3 - pristine_git_object: 0b931f0f65bd9622131bad8b9e90a10f1e2ee695 docs/models/operations/rebuildpackagesrequest.md: id: dff209a3e2d0 last_write_checksum: sha1:6517c6168894a65e4b7d7c1c93c53572eb443e9a @@ -14574,7 +15625,7 @@ trackedFiles: pristine_git_object: 2cf812716c9b73beb6153fc7344e57c6e83f4541 docs/models/operations/redeploydeploymentresponse.md: id: 1c77bf52073c - last_write_checksum: sha1:1e1725e55eb2df483c877779eb3fa47f6e4237ed + last_write_checksum: sha1:0ee112dd573e8b5ae5ceda68d4d8e3a67ab4040f pristine_git_object: 9d657bc43bb1c2e906e5e98565ed156530a2d940 docs/models/operations/refreshdomainrequest.md: id: 8cc3a38a9cff @@ -14624,10 +15675,8 @@ trackedFiles: id: b092f63a0326 last_write_checksum: sha1:d17a98b9e2f4b1f192862ae0c088bea7960b39c1 pristine_git_object: fd521a1965b98d27e82ae001b887eaecdc163be7 - docs/models/operations/repository.md: - id: c280336b6706 - last_write_checksum: sha1:abc2769164220bbe3232adaa68b0d8b1ba99be26 - pristine_git_object: cde06c8ba0b2f94da89be8bfde00a2693935f1d9 + docs/models/operations/resendworkspaceinvitationrequest.md: + last_write_checksum: sha1:6dbde74ba86fd80d83ed3147442799efcaa6501d docs/models/operations/resolvecommandtargetrequest.md: id: b14da21efb26 last_write_checksum: sha1:f268ca3c0db0b5857a2e57710dd70d1f13fc850f @@ -14656,6 +15705,14 @@ trackedFiles: id: 0cf6f1ec298c last_write_checksum: sha1:c04babb22bb5440a5f1cb8724ddb939060470aed pristine_git_object: daea45673d605ed242507b02cfae1073844d5484 + docs/models/operations/restoreawsvirtualkeyrequest.md: + last_write_checksum: sha1:dc892490ea037ae1139a4825b44a58bc711d4a76 + docs/models/operations/restoreawsvirtualkeyrequestbody.md: + last_write_checksum: sha1:e359a8854318854ec1b5a28189b075904333eece + docs/models/operations/restoreawsvirtualkeyresponse.md: + last_write_checksum: sha1:8407e9f05a78841aa57cb9f33345fef24d692702 + docs/models/operations/restoreawsvirtualkeystatus.md: + last_write_checksum: sha1:7b9401489abf89b328c97a68fa272a6b8003c77b docs/models/operations/retrydeploymentrequest.md: id: b19d6a8d602e last_write_checksum: sha1:6dd2924bd0fb07200a8c51d01e460a9d58769a5b @@ -14676,10 +15733,34 @@ trackedFiles: id: 9751a881d147 last_write_checksum: sha1:a099e3d615c2439280f8e3154fb5c91b9b872c8f pristine_git_object: 0345fd8b127457fa8b5702de93f80143fd6fabc7 + docs/models/operations/revokecontainerregistrycredentialrequest.md: + last_write_checksum: sha1:6c675c4e9cb808558b0f73a2b1f998f3b15b8a98 + docs/models/operations/revokecontainerregistryrequest.md: + last_write_checksum: sha1:c747c45706e9817c5a599e35370493f5f6a57859 + docs/models/operations/revokecontainerregistryresponse.md: + last_write_checksum: sha1:c99984af6495452644dc75a0e940393ad39a106c + docs/models/operations/revokecontainerregistrystatus.md: + last_write_checksum: sha1:47f3fceef3ca9a9c72c238aeb3b7ff317db96c7b docs/models/operations/revokemachinesjointokenrequest.md: id: 6481a25bd281 last_write_checksum: sha1:b1a370bd5100affd314ba83d02a919edead445d8 pristine_git_object: 577ef680977e6c0bdf1e25e0489135e4d437153e + docs/models/operations/revokeworkspaceinvitationrequest.md: + last_write_checksum: sha1:c0795c9c7ebe47a58a0bb886eb333aaa8afe389a + docs/models/operations/revokeworkspaceinvitelinkrequest.md: + last_write_checksum: sha1:7bfcb214f49b439ebbbb54bfc228458a72e7bea9 + docs/models/operations/rotateawsvirtualkeycredentialrequest.md: + last_write_checksum: sha1:3ea1edeced2b8ac5dc215a33d67c9202c3a48ea1 + docs/models/operations/rotateawsvirtualkeycredentialrequestbody.md: + last_write_checksum: sha1:7b7be7a9c619d7bd3ba290cd0593b7959863266b + docs/models/operations/rotateawsvirtualkeycredentialresponse.md: + last_write_checksum: sha1:8d19e1082f8e66f70c95794054b82e11b5a74d5c + docs/models/operations/rotateawsvirtualkeycredentialsetup.md: + last_write_checksum: sha1:2ef3b92b1a3e74c973cf681fd40133857fab2fb6 + docs/models/operations/rotateawsvirtualkeycredentialstatus.md: + last_write_checksum: sha1:9376dd82896aa57ba3dee2c245250fd32b4cc6d2 + docs/models/operations/rotateawsvirtualkeycredentialvirtualkey.md: + last_write_checksum: sha1:d04af14aeeb50040b1740d55401d729195d12fb0 docs/models/operations/rotatemachinesjointokenrequest.md: id: 495662a04757 last_write_checksum: sha1:c04e0434e9401ba26be9c0aa8ce7be735db7cfc7 @@ -14688,62 +15769,114 @@ trackedFiles: id: a4e641297307 last_write_checksum: sha1:d75b3c14134bfdb94a0abb54d80182cce7c76439 pristine_git_object: 1cbda8ecbe3d1542664cb192960563a52d88c539 + docs/models/operations/scope.md: + last_write_checksum: sha1:31c447aec1f02e3a93c9eb52d48e458b0b111ff2 docs/models/operations/secondaryendpoints.md: id: bcf983fbb314 last_write_checksum: sha1:a1b8e4ef93724071c1a4f8f85b743bc4fcf08a07 pristine_git_object: d82694736e314191315aa77f65dcbe5b42c954d7 - docs/models/operations/setup.md: - id: f1a9d176014b - last_write_checksum: sha1:7ad92e358e31ec51bbaa3c6cb757b915bd997e0a - pristine_git_object: dfe63c2ba7bcb02cf6e83d24dab612cbbf6b85ff - docs/models/operations/sourcerepository.md: - id: c73e63b96389 - last_write_checksum: sha1:ea35fd540877eed44bf5dccd6c7fe1878324c3b1 - pristine_git_object: 1133bbacb135ed5bb410a64e50f8270cd79c042f + docs/models/operations/selector1.md: + last_write_checksum: sha1:ac3167ae7ee0b06a35013925d5676bc9873cbd5f + docs/models/operations/selector2.md: + last_write_checksum: sha1:6111eea1d6be695620e2cc9c911dc19b1a55b2be + docs/models/operations/selectorunion.md: + last_write_checksum: sha1:075629a778053337798585237d1325a762f17e66 + docs/models/operations/setdeploymentgroupexternalidrequest.md: + last_write_checksum: sha1:840f104983e63a783d6ebd4ecfd2e64f974b157a + docs/models/operations/setdeploymentreleasechannelrequest.md: + last_write_checksum: sha1:5d2c9b4feb3b128c119786d78aad46371e88c965 + docs/models/operations/setdeploymentreleasechannelrequestbody.md: + last_write_checksum: sha1:ffa6424785bacd2ddeaf69a3bfa4b32cbbbefd4a + docs/models/operations/setoperationspluginenabledrequest.md: + last_write_checksum: sha1:c70a79f5cddfe5466f8a12028d3ec004dbb49384 + docs/models/operations/setprojectcapabilitiesrequest.md: + last_write_checksum: sha1:815aaeb9bc9736ff8dc28988a3f9735e82b3a8d4 + docs/models/operations/setprojectcapabilitiesrequestbody.md: + last_write_checksum: sha1:5ea58ee387fa0a9a5bfdf662ec6b1459deb687ca + docs/models/operations/slackintegrationchannelsrequest.md: + last_write_checksum: sha1:7d6bed7fd0424bd3d96cbc2ac4a58223200c888c + docs/models/operations/slackintegrationinstallurlrequest.md: + last_write_checksum: sha1:1fc24d5317fa54197b18781211f76bf1646fb5c9 + docs/models/operations/slackintegrationsetnotificationchannelrequest.md: + last_write_checksum: sha1:061c22b947cab472de415a8a4ee67adc546b2c68 + docs/models/operations/slackintegrationstatusrequest.md: + last_write_checksum: sha1:61ff6e556aaf8a704d4864f4dea880d68763c99e + docs/models/operations/slackintegrationuninstallrequest.md: + last_write_checksum: sha1:cd71e2f5ae50fc171b2b0b1e643c3e16d4380a7c + docs/models/operations/sourceenum1.md: + last_write_checksum: sha1:398e53004477041575627ccb6bee704d4eed882d + docs/models/operations/sourceenum2.md: + last_write_checksum: sha1:9d937e7683b7698bee1ba3ff168603d78cd9f564 + docs/models/operations/sourceenum3.md: + last_write_checksum: sha1:81d0e69932b8e472a85e896e5f9c25a49732b349 + docs/models/operations/sourceenum4.md: + last_write_checksum: sha1:f7a35d766a7082f79e826f549effa38a3b56ee3d + docs/models/operations/sourceevent1.md: + last_write_checksum: sha1:4e5f8b1c02165f940f2a5d53d980381c0cee11d8 + docs/models/operations/sourceevent10.md: + last_write_checksum: sha1:e06acf645a4cb79d5fa8277dbfd5b5e68f23ea73 + docs/models/operations/sourceevent2.md: + last_write_checksum: sha1:0f580f49e266683d675e12ab15f25735c15b2d03 + docs/models/operations/sourceevent3.md: + last_write_checksum: sha1:570a964e465b0039eeec0fe2c3414b2fabf168eb + docs/models/operations/sourceevent4.md: + last_write_checksum: sha1:fe3931737230b2910b4d756d51d0d4337cad478a + docs/models/operations/sourceevent5.md: + last_write_checksum: sha1:3fb15b6443e55b082bf207fe0fb43fb29de8d6e9 + docs/models/operations/sourceevent6.md: + last_write_checksum: sha1:76319b1163fdaf32e6d9294d2640767e05d610b9 + docs/models/operations/sourceevent7.md: + last_write_checksum: sha1:91ee5d961c3e5f846de37aa61ec7427f8b1f9d90 + docs/models/operations/sourceevent8.md: + last_write_checksum: sha1:85c7e34b3eb97597800b0fb521392c3f6a1f4c6e + docs/models/operations/sourceevent9.md: + last_write_checksum: sha1:65643aefa1a1a73c6cfa185b298be38cc447a810 docs/models/operations/sourceunion1.md: id: b994d2520770 - last_write_checksum: sha1:926dfb5bcb47faff37c3accc4e0cfca4e651918c + last_write_checksum: sha1:a681825412e72eade5f208d34bf263d83deab121 pristine_git_object: 3b4bb911c6ccaecf769e4261a973741d59fa1029 docs/models/operations/sourceunion10.md: id: b1661cb1470c - last_write_checksum: sha1:e04bb45f6ace9de1fd0913418b5591112f4a8b8a + last_write_checksum: sha1:7c09614604aae32f8d50e84df3052683998dba6f pristine_git_object: 0a0733f8c04693c43d4eda2dbfdfb2a9a6fada70 docs/models/operations/sourceunion2.md: id: e509437e6050 - last_write_checksum: sha1:e3a83ab83668cdd0fe1e6c8876ce2979945984af + last_write_checksum: sha1:135e9d9d7e3c4560f3eeefdfc27a940a469da581 pristine_git_object: 41a67d8b9de9cad6268f27c038a9cf6ffd9451ad docs/models/operations/sourceunion3.md: id: 09349067ba3b - last_write_checksum: sha1:4a694b8f9065bd11f46e8b600b5a042bf4f9475f + last_write_checksum: sha1:bff664b25902a5f233f65058ba1e59219409f606 pristine_git_object: af83bae0739005c8cddded72233d85deebcf29ca docs/models/operations/sourceunion4.md: id: a3c6d9590707 - last_write_checksum: sha1:d0da231b413f3f40905099f64c58e7a2d56260b2 + last_write_checksum: sha1:5ad1a8a8b8cbf29f1735aaa44d1c05fd3c24ad61 pristine_git_object: 9ab73c065813ebfc5b205705f4306844b5c15593 docs/models/operations/sourceunion5.md: id: 5aac063dde79 - last_write_checksum: sha1:c1af60066b9cef5a26a9d69787d4442d3ec32f8e + last_write_checksum: sha1:c0341e475caa7f7257b2b96661acf5fcd34b7536 pristine_git_object: c67edd106d64c7b49746b4ef66e055ecf3105a21 docs/models/operations/sourceunion6.md: id: 3b0baad8613e - last_write_checksum: sha1:80b076fe284a26338292362f43f51c9452837455 + last_write_checksum: sha1:5ce2b8fa80f89c6cea08d8774a12a70e7aeea39b pristine_git_object: a1a94ebcddb0aeeedc5f09de64c848c06e1f2575 docs/models/operations/sourceunion7.md: id: 8702c93ad1db - last_write_checksum: sha1:6e9273a86f51b4be621b6f550b792b62547c9a02 + last_write_checksum: sha1:d7403a9336caec792a108b4bbfe9d6a4c0ba4650 pristine_git_object: 055d78a5372560d644d4bec95b804d8b2bb20515 docs/models/operations/sourceunion8.md: id: 1ba9449f901b - last_write_checksum: sha1:f2765ef8ec7e67399d7ef2607031ce065ed0a805 + last_write_checksum: sha1:8b4b0fffa30512863f2d02499084f4eeb4fd2381 pristine_git_object: 4e35a57c369f5a2be6233b993ae8c984865cd663 docs/models/operations/sourceunion9.md: id: d6bdf1ed638a - last_write_checksum: sha1:fa51344d2f718e1c790a35a3314bec0d61d7ef63 + last_write_checksum: sha1:f1836edb8568179922761bd8b62b7bb4eddc1112 pristine_git_object: 40daacc40fe5a83bfe02c36718b0ac9819da7a7c docs/models/operations/state.md: id: c0cd319b1611 last_write_checksum: sha1:90b5f0bac37cd520c0b8a72471da2d0439f9477b pristine_git_object: 32f441444d78c38f3b6ba2cfcc189668e684ec2c + docs/models/operations/stopagentsessionrequest.md: + last_write_checksum: sha1:88861ee38504a4824ffaa0dec83de445d4aa52fa docs/models/operations/subject1.md: id: 89eba340e4c4 last_write_checksum: sha1:8f3113f79c632d00d904d92dac7ac3622f4e75fe @@ -14804,18 +15937,18 @@ trackedFiles: id: edadcc4050dc last_write_checksum: sha1:3f82af0c8f3ed101fa707ec4ab4c2a134a6e9386 pristine_git_object: 0b1006b84447c5dac09d351ceb076722c52ba643 - docs/models/operations/template.md: - id: acafda6dbc96 - last_write_checksum: sha1:81d3c0b68d4ad9af7a41a8e83c9dab91a0009021 - pristine_git_object: 5ca304d55bea635fa3ef7f14cf1a705ca9833556 - docs/models/operations/templatepathrequest.md: - id: 249273f5c087 - last_write_checksum: sha1:dedae180b452bfb8e537d84cf937368585cb2d8b - pristine_git_object: 29de8f4fb5215a9c9f56525bb357b2d4c18b04fe - docs/models/operations/templatepathresponse.md: - id: 6b768af78d11 - last_write_checksum: sha1:72f03b3e7426fc3e0cb41131ba8e7e3cb7aa91ed - pristine_git_object: 164d1752a381c607286a1ece3bf2bf8fc2ffed12 + docs/models/operations/syncrenewrequest.md: + last_write_checksum: sha1:bff8f09ce5b8597b6ed861037cd6b92912531369 + docs/models/operations/syncrenewresponse.md: + last_write_checksum: sha1:e43dd124364823e2f2f7cc3bd733574b622cbc01 + docs/models/operations/templaterequest.md: + last_write_checksum: sha1:8a97823d443ebde89356d805895fb1eecc6c958c + docs/models/operations/timesery.md: + last_write_checksum: sha1:4119f6ec1c9f98ea1c5506ab91da5119e59260ab + docs/models/operations/totals.md: + last_write_checksum: sha1:b6d2f91fe74fcaa0d59605639d2b8e1670250f96 + docs/models/operations/unavailable.md: + last_write_checksum: sha1:ee408fac02ae885d7687be07e600da33ab1bd67a docs/models/operations/updateapikeyrequest.md: id: 44a771f15585 last_write_checksum: sha1:881cc5efd734cecacce31076ab1bc577c5978ca2 @@ -14856,6 +15989,8 @@ trackedFiles: id: 32ff20caa0e1 last_write_checksum: sha1:b5c232a61217912ee868bb68775c444aa8b2077a pristine_git_object: 7406c1e2c3b90b8c3542a84515df99f5233d029d + docs/models/operations/updateoperationspolicyrequest.md: + last_write_checksum: sha1:b4687c692b057d0d62ba5cc790aed093dda9fa0e docs/models/operations/updateprojectgcpoauthproviderrequest.md: id: 1b4c3f5addcc last_write_checksum: sha1:bb79cae88ba48e631864d34b5fd71a201b017126 @@ -14884,6 +16019,8 @@ trackedFiles: id: 71110f76d84d last_write_checksum: sha1:dca3de5b9583e33468374c90bdd83f1c77d35b5c pristine_git_object: 1ee9a8397354f6a73a960e0ba2bb548e9ce40a58 + docs/models/operations/updateworkspacesettingsrequest.md: + last_write_checksum: sha1:4fa039dfe0f24fe1e29ec7768a5291bfbb4877ad docs/models/operations/usage.md: id: 735448cf5655 last_write_checksum: sha1:38c2282c3dcfd3e0e290400eec06cde9229c53ad @@ -14964,6 +16101,14 @@ trackedFiles: id: d956e9cb5ce5 last_write_checksum: sha1:6551ebaa6ec04c603f6f49c6cf35bbcf53e568b0 pristine_git_object: 262703e6ab308e079c912d8734ee88d0bb52a26f + docs/models/operations/verification.md: + last_write_checksum: sha1:92f1a4164e0ffe2a4257f6850ffbc2803c63ff1c + docs/models/operations/verifycontainerregistryrequest.md: + last_write_checksum: sha1:1a1a18de579fe5e8fc7066ef0b6a2d340be9a906 + docs/models/operations/verifycontainerregistryresponse.md: + last_write_checksum: sha1:1a6f50c7a597208cdc1cf3d35e3896c6080e7a4f + docs/models/operations/verifycontainerregistrystatus.md: + last_write_checksum: sha1:a28510fe76e49e88718a0a4574d476fec93f9fbd docs/models/operations/whoamirequest.md: id: fee75e8df97b last_write_checksum: sha1:32fb652bebe9f27b46dafdf2af3cf947adb1c289 @@ -15016,6 +16161,24 @@ trackedFiles: id: 1dca9927e3a6 last_write_checksum: sha1:8a16161b8390591970bd7b77b3b3b656dca41fe3 pristine_git_object: bcd382ebfabbfb955000a1eac00a5683f28c9c85 + docs/models/operationsbundleuploadurlrequest.md: + last_write_checksum: sha1:49bbaf3e58fc065711fdd970ab53884d6a27cc93 + docs/models/operationsbundleuploadurlresponse.md: + last_write_checksum: sha1:bdf4bdb72319f0b73aaf02b9d0ba1f2aceb4e80b + docs/models/operationsplugin.md: + last_write_checksum: sha1:6702920e3c88a933188e10f19cf3955ee0c664f2 + docs/models/operationspluginoperation.md: + last_write_checksum: sha1:2a25987ae0288972064b6d1e5f9c67cc05a7da25 + docs/models/operationspluginoperationtier.md: + last_write_checksum: sha1:70a409d1f895df27e72e12a9926bbc610248e33c + docs/models/operationsplugintier.md: + last_write_checksum: sha1:9fad601d601ffe3ee6a33538fa4925e260ef6a80 + docs/models/operationspolicyresponse.md: + last_write_checksum: sha1:313e85f5134773e203e26d89a41af62260b7b306 + docs/models/operationspolicyrule.md: + last_write_checksum: sha1:b4941a23e8d1113f9222769df15169fd25f203b0 + docs/models/operationspolicyruledecision.md: + last_write_checksum: sha1:a67d696da2c746945e9ba9d2dc772c3c94b3d228 docs/models/operatorcapabilityreport.md: id: 2f860fd51928 last_write_checksum: sha1:43b5774dbad5cbd0c6dd3f6cbf51556c2429dfd5 @@ -15222,13 +16385,61 @@ trackedFiles: id: 42a02954e632 last_write_checksum: sha1:51e4c7011b9aac5c9379b7c2db16ba7c8ed4c268 pristine_git_object: 7a364fa28b6981d928fd272e920caa53dfded6b2 + docs/models/pendingapproval.md: + last_write_checksum: sha1:7c325bea999c38c22a2d6eae41a265deb7ecc74c + docs/models/pendingpreparedstackextendconditionstateresource.md: + last_write_checksum: sha1:313ac3aecfa02d60230759a120f2b234cc0f7474 + docs/models/pendingpreparedstackextendconditionstatestack.md: + last_write_checksum: sha1:c615ae462eb3c7810a3c66a42090e19e1ff0cc31 + docs/models/pendingpreparedstackextendstateawresource.md: + last_write_checksum: sha1:8daaaae5ab8986e73a5d0db080f00fba205ca5c8 + docs/models/pendingpreparedstackextendstateazureresource.md: + last_write_checksum: sha1:001aa577bf051ba9db69f18239c070f237eb69eb + docs/models/pendingpreparedstackextendstategcpresource.md: + last_write_checksum: sha1:9d51d3414ebe28a32ab6f28b953ac91945998ab5 + docs/models/pendingpreparedstackextendstateresourceconditionunion.md: + last_write_checksum: sha1:734cab2fc3562262f2b0cb5b781519a37e7f421f + docs/models/pendingpreparedstackextendstatestackconditionunion.md: + last_write_checksum: sha1:3cbe65eb16710f50b4f71ea975912e12a0814b56 + docs/models/pendingpreparedstackoverrideconditionstateresource.md: + last_write_checksum: sha1:7be8fd02d63b4887d1a4590915317540a74ed8d7 + docs/models/pendingpreparedstackoverrideconditionstatestack.md: + last_write_checksum: sha1:dbf41214b1f345e3ea3c404675e488c60c5ed6ba + docs/models/pendingpreparedstackoverridestateawresource.md: + last_write_checksum: sha1:63577656d48d7a833cda1ac07adb4457b3222b8d + docs/models/pendingpreparedstackoverridestateazureresource.md: + last_write_checksum: sha1:9fd9c1b4f99114eff228cc614a3d798f8fe205f4 + docs/models/pendingpreparedstackoverridestategcpresource.md: + last_write_checksum: sha1:359686e9ecfa5b32c8b8e2571ab4469ff847bea6 + docs/models/pendingpreparedstackoverridestateresourceconditionunion.md: + last_write_checksum: sha1:ee7b65d3926f46aa8b17e724f43ac757026c5fc9 + docs/models/pendingpreparedstackoverridestatestackconditionunion.md: + last_write_checksum: sha1:0df42378de89cb155948ed15fdf21b69f9b4a349 + docs/models/pendingpreparedstackprofileconditionstateresource.md: + last_write_checksum: sha1:c391b75e6c41f4e62992041d985ba4dc69942ac6 + docs/models/pendingpreparedstackprofileconditionstatestack.md: + last_write_checksum: sha1:876cb2251315cc7d08941c37140e4c648168e27d + docs/models/pendingpreparedstackprofilestateawresource.md: + last_write_checksum: sha1:734acc53f7e88f87bd5077079f8f43863d51e640 + docs/models/pendingpreparedstackprofilestateazureresource.md: + last_write_checksum: sha1:fe99693dc802226d766846614683de8c34d32b76 + docs/models/pendingpreparedstackprofilestategcpresource.md: + last_write_checksum: sha1:6f9316fd9e918af3c002018472edefd43749f33d + docs/models/pendingpreparedstackprofilestateresourceconditionunion.md: + last_write_checksum: sha1:f009ea358fcce9092ca45af5cbae76753bd98fcd + docs/models/pendingpreparedstackprofilestatestackconditionunion.md: + last_write_checksum: sha1:5a5882290107fbab4057228deea302442b4f5bc2 + docs/models/pendingpreparedstackstatekind.md: + last_write_checksum: sha1:2347da52c6c1d9db424b28c9becff558801a8b26 + docs/models/pendingpreparedstackstatelifecycle.md: + last_write_checksum: sha1:67affcec1d01aaca91ffb063357812b4c9bc94a1 docs/models/permission.md: id: 2e72d664ef50 last_write_checksum: sha1:8d33edaed95aef37cea86679d61b9d1efd8e5d88 pristine_git_object: a546c21cd91233953ff37669d97f19c490961ee4 docs/models/persistimporteddeploymentrequest.md: id: 71d4e97f3983 - last_write_checksum: sha1:c7b52f363c965446456cbc68315df2e986bdcc05 + last_write_checksum: sha1:6b55e557035099eb5bd53ccfe9ddad9eeb0f8745 pristine_git_object: 44116d127132c235e810c2251614d9501ca4274d docs/models/persistimporteddeploymentrequestaws.md: id: 71c80e790189 @@ -15318,38 +16529,10 @@ trackedFiles: id: cd06cef0209b last_write_checksum: sha1:368b7638fb1643c013c947962ec8514b18a2f6c1 pristine_git_object: ce8e1970212bc3a71c329a2c0b56aaf79aa05376 - docs/models/persistimporteddeploymentrequestconfig.md: - id: 0520c72c9a8d - last_write_checksum: sha1:b76565dfc5125c4b9a23a4da4597eb2d011152c4 - pristine_git_object: ad6d68fbad0cdf1955272359fc7c4e0884f3a137 docs/models/persistimporteddeploymentrequestcustomdomains.md: id: 13d3fb599bee last_write_checksum: sha1:ed469b64206fe9913dc40ad7dd996124272022e5 pristine_git_object: 0b1950e841369e76d3ab6ab608ca9ec8cb575a46 - docs/models/persistimporteddeploymentrequestdefaultboolean.md: - id: d71cd49ccb59 - last_write_checksum: sha1:0ba6650e8d587290bc7a961796652278fb2ce2ae - pristine_git_object: a911a6b611ce8d903d9c8ddbda607eb40106bcaf - docs/models/persistimporteddeploymentrequestdefaultnumber.md: - id: 79afb67714e0 - last_write_checksum: sha1:12568014e02153c3522c21b684aa4591894d146b - pristine_git_object: e6282255759f89721f7c0e98387e98fa29e46743 - docs/models/persistimporteddeploymentrequestdefaultstring.md: - id: 3e96b6ffe3e0 - last_write_checksum: sha1:f5ff4eb20f7b6e3dd3711edcc94f78176afab85e - pristine_git_object: 767a64737f342e8c3b6053c0a6b31466b51f8ddb - docs/models/persistimporteddeploymentrequestdefaultstringlist.md: - id: 1732f8375318 - last_write_checksum: sha1:206b36e16d13e320a96884231acb5ef3861e1725 - pristine_git_object: 423e67a11d9f972883addd15225e79b32da40206 - docs/models/persistimporteddeploymentrequestdefaultunion.md: - id: 04a6f4e20a1f - last_write_checksum: sha1:4e6ed2e94430172e013a15490dbde6b604dffd46 - pristine_git_object: f5662ffa3d37a0ad99f0dc1a6daf588e36fdaa5a - docs/models/persistimporteddeploymentrequestdependency.md: - id: 84e00b45fea3 - last_write_checksum: sha1:843fac1c4555415858e6de01cb237c9c91d77524 - pristine_git_object: b644227c268a5307fb90134d38bb535888f99998 docs/models/persistimporteddeploymentrequestdeploymentmodel.md: id: "506639470138" last_write_checksum: sha1:3692109e4b52d40dedf308e80c1f5b8af9524886 @@ -15374,10 +16557,6 @@ trackedFiles: id: e0453842ec22 last_write_checksum: sha1:194717353f87e3d20afa542a5af3ad6589ffd3b4 pristine_git_object: f5c46ce17fbcd15d3d4947e0da28da3ed1e59965 - docs/models/persistimporteddeploymentrequestenv.md: - id: d2f835add57d - last_write_checksum: sha1:0faea75ea69e1ca659021a25962532623345d814 - pristine_git_object: ac5a49202ab2ad2f0dd06d08d20964a080655d18 docs/models/persistimporteddeploymentrequestenvironmentinfoaws.md: id: 89df8c93ad43 last_write_checksum: sha1:26d54fce34bdd4485d8feb1aad5da6e91811ea1d @@ -15430,102 +16609,18 @@ trackedFiles: id: 186860638b50 last_write_checksum: sha1:603d70dc2aaa51335bdb0ca6ddc5c7b125e8bae2 pristine_git_object: bbff9e288b06cb17224ccf1baab4e207b0dbc857 - docs/models/persistimporteddeploymentrequestextend.md: - id: 85b39ba06dd9 - last_write_checksum: sha1:1f3cce99401ce5ad63dc066f320027e8b256b898 - pristine_git_object: 870ab796df40bbb62a469f453d99b3784c73fcc1 - docs/models/persistimporteddeploymentrequestextendaw.md: - id: 271e55a5f045 - last_write_checksum: sha1:eb7d5b12a6b83f7d4f4ffe948f499a123eb28676 - pristine_git_object: 7179310b6f24934592ae39befd7834674490159a - docs/models/persistimporteddeploymentrequestextendawbinding.md: - id: a18f04948930 - last_write_checksum: sha1:3ba1b98d0deac149da06899ad484bb0c8b146f15 - pristine_git_object: b67a528297e2d187f5290c150d36073d1b89b6fb - docs/models/persistimporteddeploymentrequestextendawgrant.md: - id: 7fc51119feec - last_write_checksum: sha1:1f7d41285080cbcb6b131123070c080875cb173e - pristine_git_object: bdabd105d648a12c1b1fb35123e74b5e3b0f1d7e - docs/models/persistimporteddeploymentrequestextendawresource.md: - id: 73456214f8fe - last_write_checksum: sha1:a1130927fa29f39c79dcf7d8d6a2fc8f1ef22f0d - pristine_git_object: c40021c9e6d445f45653035af2922d37c892864f - docs/models/persistimporteddeploymentrequestextendawstack.md: - id: 0f309771957b - last_write_checksum: sha1:9842b302fd5a0dbe976aeba166304c95c3b26b7b - pristine_git_object: 785a29ec037072adc33c2a02a3768fe220f7a419 - docs/models/persistimporteddeploymentrequestextendazure.md: - id: d6963429361d - last_write_checksum: sha1:98155f8750fb6979af405abdb464fd2d498b1670 - pristine_git_object: b5242d32ae2d20d2652622561c409c1a48042d01 - docs/models/persistimporteddeploymentrequestextendazurebinding.md: - id: b8c321d67dde - last_write_checksum: sha1:42fcbac97269db25b0d7372414ed411807237f4d - pristine_git_object: 72a5c791547462596a3256f2b2cfb676f71cbcda - docs/models/persistimporteddeploymentrequestextendazuregrant.md: - id: ca979db0aadf - last_write_checksum: sha1:506c1803337bf436a587ed78205b5d0c5ca236c5 - pristine_git_object: a7168ff4b3391195c6fd58f0fafa5b5fbc24fe72 - docs/models/persistimporteddeploymentrequestextendazureresource.md: - id: 41b8969ee5d9 - last_write_checksum: sha1:a0493e83f2d9097a550282ebd8920b1ac9ff237c - pristine_git_object: f5e15a8bf143f905dfb3d260787776e4711d709a - docs/models/persistimporteddeploymentrequestextendazurestack.md: - id: 9ee48160d542 - last_write_checksum: sha1:3deef2dea5aa5a4da5e54dc6c2272c76a5b12b5f - pristine_git_object: 01f13db62961d36e795991c975d8f8d1a8ec04a2 - docs/models/persistimporteddeploymentrequestextendconditionresource.md: - id: f8e2812167d0 - last_write_checksum: sha1:a76d07c177e0e5eef591b6f388bf4b46a753adbf - pristine_git_object: e032fa38868884e2758abe2633cb67fbaac7db70 - docs/models/persistimporteddeploymentrequestextendconditionstack.md: - id: f29a35212807 - last_write_checksum: sha1:d0f4459ddd0db2ffe51f738df5ebfc8b7a2f4126 - pristine_git_object: 4b46d24b90d221afef3717860064b718223b7960 - docs/models/persistimporteddeploymentrequestextendeffect.md: - id: c156fa433cbd - last_write_checksum: sha1:9165d79f7f7c3f7c7d534e4203eb66eb8c167755 - pristine_git_object: acdf5248fd689b84e9da83b18df5c1c40b89ab4f - docs/models/persistimporteddeploymentrequestextendgcp.md: - id: 8113716e13fc - last_write_checksum: sha1:c9d50c1c0c10a9690c70561f8d81b8bf479ff94a - pristine_git_object: b82b3e8e3037eb2a999800b1c36bbe91d2c4020a - docs/models/persistimporteddeploymentrequestextendgcpbinding.md: - id: 2e7b1040c4e6 - last_write_checksum: sha1:b33ba23b8873a894a97666d93586e6a39e140f54 - pristine_git_object: dcc67721863548f74bc8f6267491298e1ee3cc88 - docs/models/persistimporteddeploymentrequestextendgcpgrant.md: - id: 49972082d0e8 - last_write_checksum: sha1:18a5da61755d48d3a55c361700da753c529c12ea - pristine_git_object: 867fa606125c7ec3bd5cb822944b2f14da8b4b6a - docs/models/persistimporteddeploymentrequestextendgcpresource.md: - id: dba500cdc83a - last_write_checksum: sha1:2d3e4ea956a0e138d784c55bf5795ccc45fddb7e - pristine_git_object: 641941fe3af33920227be423c5225822654140b4 - docs/models/persistimporteddeploymentrequestextendgcpstack.md: - id: f7624ebc5346 - last_write_checksum: sha1:4216dd8d973071db7adb736b38278f27f4d69c32 - pristine_git_object: 2ba40cf333407c4479bb90f70842df83ba3c94c9 - docs/models/persistimporteddeploymentrequestextendplatforms.md: - id: 9f887def2431 - last_write_checksum: sha1:82f456b1d3d1ed9a11a59f844ae5a8b52a441cea - pristine_git_object: 62ac2d6521b9133ba47f95ad42ab0e84c6a8b5cb - docs/models/persistimporteddeploymentrequestextendresourceconditionunion.md: - id: aa0745ec313c - last_write_checksum: sha1:a0920cfd32b36c9ea66cdd02a5b15ab7787046d3 - pristine_git_object: ca29722205abc8282eced9629251517ed476129e - docs/models/persistimporteddeploymentrequestextendstackconditionunion.md: - id: 0b2045123583 - last_write_checksum: sha1:ea317371568b3c4459276f3d6872a079ff170c4b - pristine_git_object: 6afac15ea3605dac60f4f87f67912098d0d0552a - docs/models/persistimporteddeploymentrequestextendunion.md: - id: 93226f0852c0 - last_write_checksum: sha1:577724dced49176970a52e0e15cedd1f2a03239b - pristine_git_object: e958dade5a9717cc94e2d6a40c719f75e6e5ac40 docs/models/persistimporteddeploymentrequestexternalbindings.md: id: 2b49e9ddfb71 last_write_checksum: sha1:dba457e382e9f5f9c78305556feb75944b6896b3 pristine_git_object: 0feba2548224165d15388ad0b2c5dcf2a9143400 + docs/models/persistimporteddeploymentrequestfailuredomains1.md: + last_write_checksum: sha1:b3a30a74ecac6c3e3323c8b3076a30d7afba795d + docs/models/persistimporteddeploymentrequestfailuredomains2.md: + last_write_checksum: sha1:c274f5283c99000ee507c6ae7086e720e6904893 + docs/models/persistimporteddeploymentrequestfailuredomainsunion1.md: + last_write_checksum: sha1:6f1e69235bf348450d5b82d2abac83d3f88c3fea + docs/models/persistimporteddeploymentrequestfailuredomainsunion2.md: + last_write_checksum: sha1:a83dd3bdeba22b523705b6908e916053a1809c72 docs/models/persistimporteddeploymentrequestgcpstacksettings.md: id: 34a186561707 last_write_checksum: sha1:21647325fed401d162086e681ff78ba99d6b274e @@ -15538,14 +16633,8 @@ trackedFiles: id: c2c0b32243ab last_write_checksum: sha1:d8da47a15f9fa9d1be6fb7a9920e94f8eb839db2 pristine_git_object: fd9de276977a10f05f5f675269b5ca5884ef196d - docs/models/persistimporteddeploymentrequestinput.md: - id: 7fcc326e5f23 - last_write_checksum: sha1:cb5545ea04386d5de33f43b8372327d5eb17a88a - pristine_git_object: 8c9d385289defe0aaccb71d333d20cb31fb5ec77 - docs/models/persistimporteddeploymentrequestkind.md: - id: 7282fe9e004f - last_write_checksum: sha1:933efc140e770af5352bd9fbe94a8982e9356355 - pristine_git_object: d4e8d9aef8d81d706fd99dbf748073bf594311c1 + docs/models/persistimporteddeploymentrequestinitialsetupauthority.md: + last_write_checksum: sha1:4e4e118afe443ae8f0ea353fcc6ea47f637ec5f6 docs/models/persistimporteddeploymentrequestkubernetes.md: id: 496fe1441170 last_write_checksum: sha1:2a3951c0b426af06e473266d38db28309edb2f71 @@ -15554,18 +16643,6 @@ trackedFiles: id: 92b2149f48f2 last_write_checksum: sha1:a00c510a2e1ca2a44d016d8de9326eac57d7471b pristine_git_object: 8cf9d02a82a5a06985288eb6212490505540b7c3 - docs/models/persistimporteddeploymentrequestlifecycle.md: - id: c181450e112c - last_write_checksum: sha1:007ea9aec23c0178820da6580a1954e1f5028001 - pristine_git_object: 69b05588132164af2936aefb41b214b5dbddb137 - docs/models/persistimporteddeploymentrequestmanagement1.md: - id: cd94c8469ca3 - last_write_checksum: sha1:697ea1501659c71bf845f785562080a056e1b712 - pristine_git_object: a2c2316734d08a5169a39de6a9981bef6c7be5eb - docs/models/persistimporteddeploymentrequestmanagement2.md: - id: 8815bfa283e9 - last_write_checksum: sha1:3124ec90273d8094bc38771adb93c51daf2d8cae - pristine_git_object: fe1ef2b9d580a928695f1e8d008c386c3d511fda docs/models/persistimporteddeploymentrequestmanagementconfigaws.md: id: 2f6af38b391b last_write_checksum: sha1:a0ea6f83e56467f87c3a5bc5d9e5046e2e4fd9c1 @@ -15586,14 +16663,6 @@ trackedFiles: id: f6bcbd686dec last_write_checksum: sha1:11e2d0bdf52553bcda7b05ca1a212b61aee16e33 pristine_git_object: f52ecc0cf72c10c97abba43965dbaf41aa493b41 - docs/models/persistimporteddeploymentrequestmanagementenum.md: - id: f4c6e32fc7b0 - last_write_checksum: sha1:c1129020fa75574ddf0a12820fd070e016ab84b1 - pristine_git_object: 790734b2a47338a92f1d882de094e4b8b83f9b66 - docs/models/persistimporteddeploymentrequestmanagementunion.md: - id: 3514fea233be - last_write_checksum: sha1:b2461de1a4af8d934693b7f3992f9ca867699cee - pristine_git_object: a3e942d6d5d7d4b17e84299ebca1e4c9c98d9be1 docs/models/persistimporteddeploymentrequestmodecustom.md: id: ceec0ac9602d last_write_checksum: sha1:d7e4931fbb73fb57a91ef160b63f78997bde4068 @@ -15638,106 +16707,208 @@ trackedFiles: id: bfb991d00fe8 last_write_checksum: sha1:059a464a62db796d951c30dce7f1d7be674f8fcd pristine_git_object: 95d10f66981fc7fc451a48f065e5e4d4352db919 - docs/models/persistimporteddeploymentrequestoverride.md: - id: 801619e9a993 - last_write_checksum: sha1:699338edba3a6ba474826e80f81b0f6d4913d163 - pristine_git_object: bd8c9ae0c755b5ff2a33409b67bb329e4833abd8 - docs/models/persistimporteddeploymentrequestoverrideaw.md: - id: 7bf302b56512 - last_write_checksum: sha1:2cfc344d009e84cbb8a67bcf9983f42a97cf9f80 - pristine_git_object: 8933a5830e1d8b177929459ecda12be0d93842a6 - docs/models/persistimporteddeploymentrequestoverrideawbinding.md: - id: 403153c57b75 - last_write_checksum: sha1:30eb0adfbfb8fef53f300f0054f44ef720bb406e - pristine_git_object: 6f784ad5cedd56bd0ce4f4b1bffc75759962bec2 - docs/models/persistimporteddeploymentrequestoverrideawgrant.md: - id: 390b2d1211f9 - last_write_checksum: sha1:2e349eb962adffd97b23e45dee2bd93f09c60205 - pristine_git_object: 190763a27f94aabb1500d91cb6210998cd3f993d - docs/models/persistimporteddeploymentrequestoverrideawresource.md: - id: f5fda334b25c - last_write_checksum: sha1:ce831215f4cd2bf3940da1799117fb39bacf742a - pristine_git_object: 7125413eb4da984eb851d26bdbcde292f11701f7 - docs/models/persistimporteddeploymentrequestoverrideawstack.md: - id: ac132112a127 - last_write_checksum: sha1:4aa656411f9ab99d1c2633c07076fbf0e3e79ad2 - pristine_git_object: 5be49766d695ae9ffb013a552216c6114b076749 - docs/models/persistimporteddeploymentrequestoverrideazure.md: - id: 609e299f7ec9 - last_write_checksum: sha1:8c45c814fac9788a370de9bcc369a95c2ab0c2eb - pristine_git_object: db0b731e405ca52d7efecc453560906792fa8456 - docs/models/persistimporteddeploymentrequestoverrideazurebinding.md: - id: 879a7a5a229f - last_write_checksum: sha1:ae7448b7b4c71cfba1734a295cc8d9f4193f3bdd - pristine_git_object: 6e4b52f753bf862ee3ca98de15563aec8a0bdf61 - docs/models/persistimporteddeploymentrequestoverrideazuregrant.md: - id: 80c55fdce0ac - last_write_checksum: sha1:6489311564a2ad2e8c925f473f400b6606cb8e3f - pristine_git_object: 0b99662dde9ea2edf4cd152c2b75bc8d9877f4fd - docs/models/persistimporteddeploymentrequestoverrideazureresource.md: - id: bea58a5b9997 - last_write_checksum: sha1:519bbc1d684b5bd5c1a9e4b53597b89daf553857 - pristine_git_object: 80d38612dad9f1bd1f26b15e038922e6d9f0a99d - docs/models/persistimporteddeploymentrequestoverrideazurestack.md: - id: 69f0e9e83ac9 - last_write_checksum: sha1:b884c988e8e2e27a3f84752fe7e75f110eb79252 - pristine_git_object: e09031a6016679528c18e91483ba8ad371b963af - docs/models/persistimporteddeploymentrequestoverrideconditionresource.md: - id: 689041e87a5e - last_write_checksum: sha1:962f2742586c341b7d6606deca6574c319ecfabb - pristine_git_object: 691df761619483d918c080b99a1bbea881a55f26 - docs/models/persistimporteddeploymentrequestoverrideconditionstack.md: - id: 9cdb998e6d4e - last_write_checksum: sha1:cd39d709412896d3e6f3b2839d64a8138aa087be - pristine_git_object: 5faf319e0474343ca110e47fc29e1745f17d4080 - docs/models/persistimporteddeploymentrequestoverrideeffect.md: - id: b62c595cf147 - last_write_checksum: sha1:47474d7f6a4b85468a2ae6b45e05800df008a667 - pristine_git_object: 529c586f0ff67d7614e7206afeb53df3a6e2b2b6 - docs/models/persistimporteddeploymentrequestoverridegcp.md: - id: 43c302b576c7 - last_write_checksum: sha1:f7b4c8975a0a4181ba18d8d395fbfe11a814586e - pristine_git_object: af12cc00c1bab960c2c686dd32a1b87b8e7f4a9f - docs/models/persistimporteddeploymentrequestoverridegcpbinding.md: - id: a6064a8de451 - last_write_checksum: sha1:88818544551d40334e13fc7ec9a05d2e5277f862 - pristine_git_object: a2522180095bf943eef733ee682158581813764a - docs/models/persistimporteddeploymentrequestoverridegcpgrant.md: - id: d6535cef5dfa - last_write_checksum: sha1:fcfd62eadab70148e5c8ea1a61e34ea7d0115750 - pristine_git_object: ab85d1295ed9ef53ab84e92a7cbc90533f586d68 - docs/models/persistimporteddeploymentrequestoverridegcpresource.md: - id: bdc0a88f7b38 - last_write_checksum: sha1:b3d74fc0a0f9d8cdcd99f952f310f3e75ab4cc82 - pristine_git_object: 4e7a03ae7737bb6c497e5b5c1049200da7e1ba29 - docs/models/persistimporteddeploymentrequestoverridegcpstack.md: - id: 2b0ba8d1e020 - last_write_checksum: sha1:1f45ec36e8fadbc0e801494a36fd3704ab0de5df - pristine_git_object: 36c31a9d38bd0ca8ea0026235dd6448ec788d60e - docs/models/persistimporteddeploymentrequestoverrideplatforms.md: - id: 2d4e11b2e54a - last_write_checksum: sha1:04671f3788a2d8e81e2143193742484c35de3c01 - pristine_git_object: ec39dabd21b55e7f8bc63679a8e774d32f54efae - docs/models/persistimporteddeploymentrequestoverrideresourceconditionunion.md: - id: 7ddec4dd2de1 - last_write_checksum: sha1:fe8c8818a39d850c55fe2b8e73aa15c7d746cb35 - pristine_git_object: d0d7be87ffb195074319442e28cdbc089d5b2a9d - docs/models/persistimporteddeploymentrequestoverridestackconditionunion.md: - id: 631602ee62b5 - last_write_checksum: sha1:15800f353f26f3a25e28c0b32819db3bf8884a6a - pristine_git_object: 79c50048dea69a5faae385be51e403b31ca60c12 - docs/models/persistimporteddeploymentrequestoverrideunion.md: - id: 32fcdb85e31d - last_write_checksum: sha1:f5b4a2b90307257a38045841f0a42abf9d313851 - pristine_git_object: 39140970f4f8410aac12dcac59a9b5fe5ccb6d1a docs/models/persistimporteddeploymentrequestownership.md: id: fb60a9d2a7b0 last_write_checksum: sha1:c41fdda61ec64b843ef93fada0db60a99c897f6f pristine_git_object: c7b6c6c4fbc054b5df4891bdb8c8a1bb1bd3a480 - docs/models/persistimporteddeploymentrequestpermissions.md: - id: c28928c25df3 - last_write_checksum: sha1:f69e40d623a22d4d46f492ccf237d801957a1c84 - pristine_git_object: 070756002cad6dcb2aab2fae992375a73eac81ec + docs/models/persistimporteddeploymentrequestpendingpreparedstack.md: + last_write_checksum: sha1:357e380fde81eb0a75c7a73a498a85b602f92440 + docs/models/persistimporteddeploymentrequestpendingpreparedstackconfig.md: + last_write_checksum: sha1:55d6f23268eff372f15da4997d6f0991a92201f0 + docs/models/persistimporteddeploymentrequestpendingpreparedstackdefaultboolean.md: + last_write_checksum: sha1:fdec68b0e26cb05636b3ff82a3dab0ae6400498e + docs/models/persistimporteddeploymentrequestpendingpreparedstackdefaultnumber.md: + last_write_checksum: sha1:6cc529ef181484d7afa95427ffca54474f8f25a5 + docs/models/persistimporteddeploymentrequestpendingpreparedstackdefaultstring.md: + last_write_checksum: sha1:b13f1de51453fda9c0f272b740c660de7e9dc59e + docs/models/persistimporteddeploymentrequestpendingpreparedstackdefaultstringlist.md: + last_write_checksum: sha1:c606bbca7f2d05c0926654713df21ddbaacd0792 + docs/models/persistimporteddeploymentrequestpendingpreparedstackdefaultunion.md: + last_write_checksum: sha1:62138838ce47e5e9b4a89257c87560c448608cbb + docs/models/persistimporteddeploymentrequestpendingpreparedstackdependency.md: + last_write_checksum: sha1:1fc70c6c6012361069b85f7ea2a197782744f5f3 + docs/models/persistimporteddeploymentrequestpendingpreparedstackenv.md: + last_write_checksum: sha1:cb06b8a9aa6d6bdeaee656ab9cd888f7ff2ff036 + docs/models/persistimporteddeploymentrequestpendingpreparedstackextend.md: + last_write_checksum: sha1:40b8a8f41558662d58e626f0c601cca44f2a16e8 + docs/models/persistimporteddeploymentrequestpendingpreparedstackextendaw.md: + last_write_checksum: sha1:7d727438ccc51470231b1fa85a936569a5ca82d0 + docs/models/persistimporteddeploymentrequestpendingpreparedstackextendawbinding.md: + last_write_checksum: sha1:b8349bd2bfd6d9fbb35b4529dc795fd11eab9ba9 + docs/models/persistimporteddeploymentrequestpendingpreparedstackextendawgrant.md: + last_write_checksum: sha1:9e93d565539384f823d4ea10bcbc6dcb32db4aeb + docs/models/persistimporteddeploymentrequestpendingpreparedstackextendawresource.md: + last_write_checksum: sha1:1e62caefcbd6cbb798bdf91f8d34f154af3e9d8b + docs/models/persistimporteddeploymentrequestpendingpreparedstackextendawstack.md: + last_write_checksum: sha1:0dc8ddd324aad8c261fc7a76080950dee10c73a2 + docs/models/persistimporteddeploymentrequestpendingpreparedstackextendazure.md: + last_write_checksum: sha1:8ce7e691eed14358bd8e4c70cbe41a2c2a95ac23 + docs/models/persistimporteddeploymentrequestpendingpreparedstackextendazurebinding.md: + last_write_checksum: sha1:0e106e4acf3b03f2a89409e25e30675306fc04b9 + docs/models/persistimporteddeploymentrequestpendingpreparedstackextendazuregrant.md: + last_write_checksum: sha1:9d30b24bb6fc4e189e5facd1f661f57e738394a3 + docs/models/persistimporteddeploymentrequestpendingpreparedstackextendazureresource.md: + last_write_checksum: sha1:3de9e8787b30396e91b340581f09a5ba0c6ef908 + docs/models/persistimporteddeploymentrequestpendingpreparedstackextendazurestack.md: + last_write_checksum: sha1:1dde28d9a0859905ceaeb43eed221e18d5e63862 + docs/models/persistimporteddeploymentrequestpendingpreparedstackextendconditionresource.md: + last_write_checksum: sha1:59f153b6f8fa527c78e6b0b84aa4247911179b5b + docs/models/persistimporteddeploymentrequestpendingpreparedstackextendconditionstack.md: + last_write_checksum: sha1:75f937f135d26ea31a3a87308cf815d38e133526 + docs/models/persistimporteddeploymentrequestpendingpreparedstackextendeffect.md: + last_write_checksum: sha1:046abed463c9f7995240fd12731b466ebdcfef2e + docs/models/persistimporteddeploymentrequestpendingpreparedstackextendgcp.md: + last_write_checksum: sha1:30874abfc49a8c3fbe8e57e5677254c3e6917917 + docs/models/persistimporteddeploymentrequestpendingpreparedstackextendgcpbinding.md: + last_write_checksum: sha1:e7d5c009a7d55db45222ccd3d0df47b11c0920ca + docs/models/persistimporteddeploymentrequestpendingpreparedstackextendgcpgrant.md: + last_write_checksum: sha1:3b27015e49052166f5edde5c6ab15f28badad1cd + docs/models/persistimporteddeploymentrequestpendingpreparedstackextendgcpresource.md: + last_write_checksum: sha1:d532ed7cbfd0a15325eecc6ea7ea26929d8cbd52 + docs/models/persistimporteddeploymentrequestpendingpreparedstackextendgcpstack.md: + last_write_checksum: sha1:88e1ad1df9450757ff1fd847be7748c1b68884fe + docs/models/persistimporteddeploymentrequestpendingpreparedstackextendplatforms.md: + last_write_checksum: sha1:a1796f2ea2895dbd9ce0850996303fe4ef9671a7 + docs/models/persistimporteddeploymentrequestpendingpreparedstackextendresourceconditionunion.md: + last_write_checksum: sha1:1464e65b84cd1d67ce0792ccb29e12fd80702fa3 + docs/models/persistimporteddeploymentrequestpendingpreparedstackextendstackconditionunion.md: + last_write_checksum: sha1:06a2f9570768410bea4c55880d316dc12177bcc1 + docs/models/persistimporteddeploymentrequestpendingpreparedstackextendunion.md: + last_write_checksum: sha1:bdf6efa5b8d721674a423bff2c4059357aaf2ef5 + docs/models/persistimporteddeploymentrequestpendingpreparedstackinput.md: + last_write_checksum: sha1:619aedc7caf9b48e4578222ef982bb02878cd003 + docs/models/persistimporteddeploymentrequestpendingpreparedstackkind.md: + last_write_checksum: sha1:0bed6f0ddb95f96340de28ab8fa2e11d635cff71 + docs/models/persistimporteddeploymentrequestpendingpreparedstacklifecycle.md: + last_write_checksum: sha1:a7dbef874824bb6df34e719be5c26c08555efaae + docs/models/persistimporteddeploymentrequestpendingpreparedstackmanagement1.md: + last_write_checksum: sha1:7a61cdfe432b5c35fb76ec7692b3d0454aadae99 + docs/models/persistimporteddeploymentrequestpendingpreparedstackmanagement2.md: + last_write_checksum: sha1:54046a40fa807af0ddbb0af44f12a1964885fd3c + docs/models/persistimporteddeploymentrequestpendingpreparedstackmanagementenum.md: + last_write_checksum: sha1:d4ba052ef7518137918c0b34a9e988e9f8f725c6 + docs/models/persistimporteddeploymentrequestpendingpreparedstackmanagementunion.md: + last_write_checksum: sha1:21ce0863fa3ee61a5c3f6ffcde69ecc76b5800a1 + docs/models/persistimporteddeploymentrequestpendingpreparedstackoverride.md: + last_write_checksum: sha1:35e1a38ef4d6f2f841c0a914204810e4cbeee372 + docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideaw.md: + last_write_checksum: sha1:70d42369908a0b2a43dc759e96cd52a02498f3b4 + docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideawbinding.md: + last_write_checksum: sha1:4218ee2fd511891cd7d57c45f7aa0346608eb99b + docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideawgrant.md: + last_write_checksum: sha1:71b2f1ec9654d914b6f198d2b48cdfd3430f9960 + docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideawresource.md: + last_write_checksum: sha1:0d57609a2a87e8632f03b27e7a368748b6100149 + docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideawstack.md: + last_write_checksum: sha1:8c24aaba7fa4bd8bc03539c22166b6ecc8994875 + docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideazure.md: + last_write_checksum: sha1:ea2154de1cf1706764918c9935b33acb9dfd6449 + docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideazurebinding.md: + last_write_checksum: sha1:244c6b84682da919f8a4524639b866a29f53e556 + docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideazuregrant.md: + last_write_checksum: sha1:14a6b0217ad0e8e2c3389ca66337018da6e06992 + docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideazureresource.md: + last_write_checksum: sha1:d51adff6b38079e69bbeac2820f9c4c70f05cb56 + docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideazurestack.md: + last_write_checksum: sha1:54ad9643d071649704a80f1d37ecd1b2bc2ee8bf + docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideconditionresource.md: + last_write_checksum: sha1:0c93688770b7665f7a302b4229de0a48d5c3b25f + docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideconditionstack.md: + last_write_checksum: sha1:0e3daedd6620672659a8de9478322f0676aee3fc + docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideeffect.md: + last_write_checksum: sha1:1cc510828917bf6fd810d779239528e9b39d5ec0 + docs/models/persistimporteddeploymentrequestpendingpreparedstackoverridegcp.md: + last_write_checksum: sha1:1d7a19793bd8e1db0e5919b930a9ed3b3ab2c361 + docs/models/persistimporteddeploymentrequestpendingpreparedstackoverridegcpbinding.md: + last_write_checksum: sha1:cdadf09dd2bef54d967ed258e534df461006fac5 + docs/models/persistimporteddeploymentrequestpendingpreparedstackoverridegcpgrant.md: + last_write_checksum: sha1:c1259ed32f7cacfee720980efe789083969103dd + docs/models/persistimporteddeploymentrequestpendingpreparedstackoverridegcpresource.md: + last_write_checksum: sha1:cae706592e29c61317345c18ad5598b4aa2d2209 + docs/models/persistimporteddeploymentrequestpendingpreparedstackoverridegcpstack.md: + last_write_checksum: sha1:5eb874c548a9e85018f5457a6384e0c38346faa2 + docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideplatforms.md: + last_write_checksum: sha1:1922a2d1b67ecfc09ece1a02b155bc0bd79f240a + docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideresourceconditionunion.md: + last_write_checksum: sha1:4d551e308979260e86fcf4bc41f466d3f0613e45 + docs/models/persistimporteddeploymentrequestpendingpreparedstackoverridestackconditionunion.md: + last_write_checksum: sha1:9c104a96fca7aee42aa32e29b37f8a1362b3adff + docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideunion.md: + last_write_checksum: sha1:8779fc7a080c2d200ae0c738b06734b2330d1cee + docs/models/persistimporteddeploymentrequestpendingpreparedstackpermissions.md: + last_write_checksum: sha1:8fa7330812a10a5dadfe89da797c8f5c60c65c23 + docs/models/persistimporteddeploymentrequestpendingpreparedstackplatform.md: + last_write_checksum: sha1:623df1463bcc332e75e23e28ab9c82c498ffe684 + docs/models/persistimporteddeploymentrequestpendingpreparedstackprofile.md: + last_write_checksum: sha1:d5a4419fcd992e101fc0f88a94612ba5966eb768 + docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileaw.md: + last_write_checksum: sha1:23155d937e4836529c0bb29172faf9ea0d56215a + docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileawbinding.md: + last_write_checksum: sha1:659a0282bb908ed0e1118fa5fccd8f4539c1d056 + docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileawgrant.md: + last_write_checksum: sha1:89eba79faeed7cbf5815f5822919658230f17ede + docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileawresource.md: + last_write_checksum: sha1:04283ac2c60243af632692cb0363cec49283a200 + docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileawstack.md: + last_write_checksum: sha1:efc32ad0bfa7471851d1c938b6603fd5ec0cd926 + docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileazure.md: + last_write_checksum: sha1:9eb10fd24ba0542d1e0c1c8176d5d382dfcb859e + docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileazurebinding.md: + last_write_checksum: sha1:d3fc2f0603fff86ad0caf887fe2c730393ce03ff + docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileazuregrant.md: + last_write_checksum: sha1:f2ed19806c8bd46973e2ad498febccfd6ed3db76 + docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileazureresource.md: + last_write_checksum: sha1:e7668fb70e6e626fc037d3ef93a636f140dd18cf + docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileazurestack.md: + last_write_checksum: sha1:18141663694eb829667dd3a7fed5eadc7b84321e + docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileconditionresource.md: + last_write_checksum: sha1:723227898cd8c27a1836ba0752b7471926a27fb0 + docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileconditionstack.md: + last_write_checksum: sha1:48e0ae0fc94094e19983c564c863d8e2898b9f2c + docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileeffect.md: + last_write_checksum: sha1:519c84911e0db8bd93b0c4295b2e98bdad04ffb3 + docs/models/persistimporteddeploymentrequestpendingpreparedstackprofilegcp.md: + last_write_checksum: sha1:1d143618e8ea6568e60c0b88c04e76df086a4cec + docs/models/persistimporteddeploymentrequestpendingpreparedstackprofilegcpbinding.md: + last_write_checksum: sha1:d78e542b03a9362451d0ecf332e88fd116df21f7 + docs/models/persistimporteddeploymentrequestpendingpreparedstackprofilegcpgrant.md: + last_write_checksum: sha1:42af8821a2ea7788b96c9fc4c808d2709b7f764c + docs/models/persistimporteddeploymentrequestpendingpreparedstackprofilegcpresource.md: + last_write_checksum: sha1:563e3bca91541dcbd4bbffbd3c6de93258cb6200 + docs/models/persistimporteddeploymentrequestpendingpreparedstackprofilegcpstack.md: + last_write_checksum: sha1:611349c801af9332895ae54b6c87dd95f1b8c297 + docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileplatforms.md: + last_write_checksum: sha1:5881078b45daaae1565df199847c0cf5de68cbf2 + docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileresourceconditionunion.md: + last_write_checksum: sha1:7a8c66aec76a76310a91e780a4c91d217cec3838 + docs/models/persistimporteddeploymentrequestpendingpreparedstackprofilestackconditionunion.md: + last_write_checksum: sha1:4777a06bbb751af5021ebbb381df10e15a53b2c6 + docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileunion.md: + last_write_checksum: sha1:6eab999a6f51fc64c5496027c3e1952f6e3c7bdb + docs/models/persistimporteddeploymentrequestpendingpreparedstackprovidedby.md: + last_write_checksum: sha1:73eecb810d3f2e4ba86dc5411d6b040607f9948f + docs/models/persistimporteddeploymentrequestpendingpreparedstackresources.md: + last_write_checksum: sha1:b2cf749736fe1017a18fe7ff8dd8a08ca33e8b7c + docs/models/persistimporteddeploymentrequestpendingpreparedstacksupportedplatform.md: + last_write_checksum: sha1:9ec83476683080124287c1fecb32286c3eb84b85 + docs/models/persistimporteddeploymentrequestpendingpreparedstacktypeboolean.md: + last_write_checksum: sha1:8192998b400882deafe9434c24dbbd031147f39c + docs/models/persistimporteddeploymentrequestpendingpreparedstacktypeenvenum.md: + last_write_checksum: sha1:a3e2127e72d70629808d5661a6d3c53b5b5b66ec + docs/models/persistimporteddeploymentrequestpendingpreparedstacktypenumber.md: + last_write_checksum: sha1:ea90ea256f327c78b54bb8c0ed94a4818add6951 + docs/models/persistimporteddeploymentrequestpendingpreparedstacktypestring.md: + last_write_checksum: sha1:b41ba21cb3acc4cd2ff4efab8f9e72380b0603f2 + docs/models/persistimporteddeploymentrequestpendingpreparedstacktypestringlist.md: + last_write_checksum: sha1:a2acffedf6edd79fd7856f1d99cf99b8e47bed81 + docs/models/persistimporteddeploymentrequestpendingpreparedstacktypeunion.md: + last_write_checksum: sha1:899b02efa75c505424471a46f676574234e9fde6 + docs/models/persistimporteddeploymentrequestpendingpreparedstackunion.md: + last_write_checksum: sha1:af74e6054ff366be676af844d3c14c3d05dff90d + docs/models/persistimporteddeploymentrequestpendingpreparedstackvalidation.md: + last_write_checksum: sha1:caf41bdedeb8047d8d40f893204891428976124f + docs/models/persistimporteddeploymentrequestpendingpreparedstackvalidationunion.md: + last_write_checksum: sha1:04f39bb14a9515a65498ce275872cdb8defaed89 docs/models/persistimporteddeploymentrequestplatformenum.md: id: a70f044e63dd last_write_checksum: sha1:41a9716a2c1cbbdb732072589eb8a3480ece86fa @@ -15752,11 +16923,11 @@ trackedFiles: pristine_git_object: 9542eae0c6948b19385eb04a3366e3084f741609 docs/models/persistimporteddeploymentrequestpoolsautoscale.md: id: 8e3b6da030d5 - last_write_checksum: sha1:67fec27414e5bdc720bd381bd401a25007b17da4 + last_write_checksum: sha1:5722fbb0c2b36103966fef2e98ced664ebdce32e pristine_git_object: 661e9e98d8c993ba27067f0c5e6f9556b7977ec0 docs/models/persistimporteddeploymentrequestpoolsfixed.md: id: e6ca97c1cad7 - last_write_checksum: sha1:9f3ec1c66d30a8833ae7dada4634f16d98cb38f0 + last_write_checksum: sha1:8588e1f65755af1c951b6817e6b73887b3072705 pristine_git_object: 689af226dcc3eda21543e6034eb5ed284bbb187b docs/models/persistimporteddeploymentrequestpoolsunion.md: id: 1ea42666a9f4 @@ -15764,112 +16935,208 @@ trackedFiles: pristine_git_object: 4f7817ca8d016231da67c8dc200d3907ce6f399c docs/models/persistimporteddeploymentrequestpreparedstack.md: id: 5683f131a072 - last_write_checksum: sha1:6db0465062b652f3da3bb65e90ca30fc4e477b0c + last_write_checksum: sha1:9640b8af28e1b6fbe0c65cf59ff872d77adea27d pristine_git_object: c6800e43d3831bfc90a5a92e42012c7b182dc457 + docs/models/persistimporteddeploymentrequestpreparedstackconfig.md: + last_write_checksum: sha1:2532bb484fdb4a1719906fccbc8767328d73c63a + docs/models/persistimporteddeploymentrequestpreparedstackdefaultboolean.md: + last_write_checksum: sha1:23e3fbd76555648f601ddcb99e91509a90581a72 + docs/models/persistimporteddeploymentrequestpreparedstackdefaultnumber.md: + last_write_checksum: sha1:4e91b52e2d9cd12639374d3a9d1fe96e432ff9b7 + docs/models/persistimporteddeploymentrequestpreparedstackdefaultstring.md: + last_write_checksum: sha1:2f13c2a349a285bc5cd4fc90918fe84fd3a3d61b + docs/models/persistimporteddeploymentrequestpreparedstackdefaultstringlist.md: + last_write_checksum: sha1:5c914b70ffadd250de02770e0f81a4cb034a7c56 + docs/models/persistimporteddeploymentrequestpreparedstackdefaultunion.md: + last_write_checksum: sha1:aae0b596c2b632fa667593168b7ca8a36f97ee6a + docs/models/persistimporteddeploymentrequestpreparedstackdependency.md: + last_write_checksum: sha1:84b97d7db5f4d80e69f3d063362964ea45deac7a + docs/models/persistimporteddeploymentrequestpreparedstackenv.md: + last_write_checksum: sha1:c69d9aa87852b39f8d930e157d2fff940de4cce3 + docs/models/persistimporteddeploymentrequestpreparedstackextend.md: + last_write_checksum: sha1:daf3b4b4364f5058ce6ab209a6bfb40937d6ee50 + docs/models/persistimporteddeploymentrequestpreparedstackextendaw.md: + last_write_checksum: sha1:dcc871c7b1075909552fd35cc67cb99afe44ae8e + docs/models/persistimporteddeploymentrequestpreparedstackextendawbinding.md: + last_write_checksum: sha1:beb6bfe06781a21d76db1b65dad1a93b7adaf614 + docs/models/persistimporteddeploymentrequestpreparedstackextendawgrant.md: + last_write_checksum: sha1:ae3208e37ca2e2344ca02ae3b73bffbcfb3d8c16 + docs/models/persistimporteddeploymentrequestpreparedstackextendawresource.md: + last_write_checksum: sha1:0a91200180c18ffc3eb4115abccbca8990455f71 + docs/models/persistimporteddeploymentrequestpreparedstackextendawstack.md: + last_write_checksum: sha1:7d31eb8c2c0860de91f8b7cc021a08d3e2c3ae71 + docs/models/persistimporteddeploymentrequestpreparedstackextendazure.md: + last_write_checksum: sha1:7b0210fcf6a7b52642ac361a802301ea715db40e + docs/models/persistimporteddeploymentrequestpreparedstackextendazurebinding.md: + last_write_checksum: sha1:e1444afc9a52f82aed9502598a7743eb962f1c58 + docs/models/persistimporteddeploymentrequestpreparedstackextendazuregrant.md: + last_write_checksum: sha1:ba79ece269c40922e2f5451fbc46f72b64b9e0d6 + docs/models/persistimporteddeploymentrequestpreparedstackextendazureresource.md: + last_write_checksum: sha1:4cda5f00be16362f7ef5168f5a884011cbb85c3f + docs/models/persistimporteddeploymentrequestpreparedstackextendazurestack.md: + last_write_checksum: sha1:1f6b1e1c4b40e79b97bf316f30fb145c7a2df680 + docs/models/persistimporteddeploymentrequestpreparedstackextendconditionresource.md: + last_write_checksum: sha1:3ac39a22678fb7c09b58f77e08dfd5950b7257fc + docs/models/persistimporteddeploymentrequestpreparedstackextendconditionstack.md: + last_write_checksum: sha1:18758791613f4e76e04b6e8c86fcbb44a89fe45f + docs/models/persistimporteddeploymentrequestpreparedstackextendeffect.md: + last_write_checksum: sha1:c2c7d6df8cc2ef479ee6ff1830c15932d8607d6c + docs/models/persistimporteddeploymentrequestpreparedstackextendgcp.md: + last_write_checksum: sha1:61af59949d3a5475b67c4669b0b81b184054cbe2 + docs/models/persistimporteddeploymentrequestpreparedstackextendgcpbinding.md: + last_write_checksum: sha1:e52bcced9534ea40e7b8def20f0b8ad53fd26156 + docs/models/persistimporteddeploymentrequestpreparedstackextendgcpgrant.md: + last_write_checksum: sha1:8f28d43fe0acd323b7468c75e6a4ac5a03b51cae + docs/models/persistimporteddeploymentrequestpreparedstackextendgcpresource.md: + last_write_checksum: sha1:90543fe5b7fd13d4cff00d34527dd9fd0f6b2f6a + docs/models/persistimporteddeploymentrequestpreparedstackextendgcpstack.md: + last_write_checksum: sha1:d7d5351b7468c036a0147ca6b4b6046a85c9ed18 + docs/models/persistimporteddeploymentrequestpreparedstackextendplatforms.md: + last_write_checksum: sha1:faa1330098d5dcd95c9389a08c8823539c203c90 + docs/models/persistimporteddeploymentrequestpreparedstackextendresourceconditionunion.md: + last_write_checksum: sha1:44acfa06e01cd61ddbc72e032fd604043c8c8125 + docs/models/persistimporteddeploymentrequestpreparedstackextendstackconditionunion.md: + last_write_checksum: sha1:53dd16fa28904699dcc3eea19819117dd5eb5814 + docs/models/persistimporteddeploymentrequestpreparedstackextendunion.md: + last_write_checksum: sha1:43fcd25bf9be6c51ccd0dc9148932b82816557bf + docs/models/persistimporteddeploymentrequestpreparedstackinput.md: + last_write_checksum: sha1:bef27882772b2ad0cf6ae26505af6e84d1d278ca + docs/models/persistimporteddeploymentrequestpreparedstackkind.md: + last_write_checksum: sha1:0738822620ca2dc979b0e1acd093cb02b600c1e3 + docs/models/persistimporteddeploymentrequestpreparedstacklifecycle.md: + last_write_checksum: sha1:94b7ea4f79e270247f629fcb148f031e4880d67a + docs/models/persistimporteddeploymentrequestpreparedstackmanagement1.md: + last_write_checksum: sha1:25078d174f6f1293784f76181e9d9abb08c5174f + docs/models/persistimporteddeploymentrequestpreparedstackmanagement2.md: + last_write_checksum: sha1:a1c9050c60d689af7c5102ca54018935f9d40494 + docs/models/persistimporteddeploymentrequestpreparedstackmanagementenum.md: + last_write_checksum: sha1:fbb38c497855d95508bd80e3dc98c44e4639f1e6 + docs/models/persistimporteddeploymentrequestpreparedstackmanagementunion.md: + last_write_checksum: sha1:ff7c03bc5f2e6ab368ccf54f4a94813e7ae52e48 + docs/models/persistimporteddeploymentrequestpreparedstackoverride.md: + last_write_checksum: sha1:b40a5c53e2c8c144626acba8f3f08ac6436693e8 + docs/models/persistimporteddeploymentrequestpreparedstackoverrideaw.md: + last_write_checksum: sha1:d6427b64386a5a7288b88330595f5fe7592b3666 + docs/models/persistimporteddeploymentrequestpreparedstackoverrideawbinding.md: + last_write_checksum: sha1:059cf49389e09781fed35c8cc4dfc94cd6cf71c3 + docs/models/persistimporteddeploymentrequestpreparedstackoverrideawgrant.md: + last_write_checksum: sha1:41f6ab8b1e368fd2ba3593e6d972f17e24ba11ac + docs/models/persistimporteddeploymentrequestpreparedstackoverrideawresource.md: + last_write_checksum: sha1:507beacdf808ff5bd57d7adf2cdaa199e234d09b + docs/models/persistimporteddeploymentrequestpreparedstackoverrideawstack.md: + last_write_checksum: sha1:93d5b5c1f6f741f9c4a04cf7091e192ded40b7f7 + docs/models/persistimporteddeploymentrequestpreparedstackoverrideazure.md: + last_write_checksum: sha1:5635368a0926afd1191ad7e95a83c720930cc7fe + docs/models/persistimporteddeploymentrequestpreparedstackoverrideazurebinding.md: + last_write_checksum: sha1:27921453ba33255079c7d8a53379a2f854b71bcb + docs/models/persistimporteddeploymentrequestpreparedstackoverrideazuregrant.md: + last_write_checksum: sha1:438b14b2e9a68740fccc5ae04359c900c124266a + docs/models/persistimporteddeploymentrequestpreparedstackoverrideazureresource.md: + last_write_checksum: sha1:844f8d8b854fa658a27d4769e309be890b5de2e8 + docs/models/persistimporteddeploymentrequestpreparedstackoverrideazurestack.md: + last_write_checksum: sha1:9029baf02fcfcc780b8ad36559685d7608daf080 + docs/models/persistimporteddeploymentrequestpreparedstackoverrideconditionresource.md: + last_write_checksum: sha1:71c0e90faa3c0dab187e11569f8d3635546464fd + docs/models/persistimporteddeploymentrequestpreparedstackoverrideconditionstack.md: + last_write_checksum: sha1:6d3d7ad1cf322844dd1912ba5f602b1b8de5a275 + docs/models/persistimporteddeploymentrequestpreparedstackoverrideeffect.md: + last_write_checksum: sha1:634b530d9a67966694b1a35c25f81e48c3bc82c5 + docs/models/persistimporteddeploymentrequestpreparedstackoverridegcp.md: + last_write_checksum: sha1:7f2318f8bfe07c16d80617088065afea5522a2cb + docs/models/persistimporteddeploymentrequestpreparedstackoverridegcpbinding.md: + last_write_checksum: sha1:471ba3c9fa9f4a3e6b87166557546df1c8f6a1ed + docs/models/persistimporteddeploymentrequestpreparedstackoverridegcpgrant.md: + last_write_checksum: sha1:05fcf3be3c3bbe4dc7035d8ef21d189e74423f2f + docs/models/persistimporteddeploymentrequestpreparedstackoverridegcpresource.md: + last_write_checksum: sha1:d0cee408373f158c8659954a3dc53b28557e96d6 + docs/models/persistimporteddeploymentrequestpreparedstackoverridegcpstack.md: + last_write_checksum: sha1:37fbeb256d320492493b27f154404d170da05924 + docs/models/persistimporteddeploymentrequestpreparedstackoverrideplatforms.md: + last_write_checksum: sha1:9d36d7c3a060df10b4f52c289ba46d24f1679914 + docs/models/persistimporteddeploymentrequestpreparedstackoverrideresourceconditionunion.md: + last_write_checksum: sha1:60c08f223a807dc1fa900cf3c1d65674127235b4 + docs/models/persistimporteddeploymentrequestpreparedstackoverridestackconditionunion.md: + last_write_checksum: sha1:2bf26448a259fafd8ff340422d20e6b4cee3a13b + docs/models/persistimporteddeploymentrequestpreparedstackoverrideunion.md: + last_write_checksum: sha1:17363aee4e2cf61539518219c0f0a8840353a25b + docs/models/persistimporteddeploymentrequestpreparedstackpermissions.md: + last_write_checksum: sha1:fe859af4d3ce4d361cc44721cee53075759f4254 docs/models/persistimporteddeploymentrequestpreparedstackplatform.md: id: 182f277d4d69 last_write_checksum: sha1:bed04810f78023134ccef567f83adc6c83eeb541 pristine_git_object: f888a96bee0d23eea2378e1ae4c0f38d316a4e35 + docs/models/persistimporteddeploymentrequestpreparedstackprofile.md: + last_write_checksum: sha1:1e4492ecb38f876cf44e221cedcd40c1e685f6bc + docs/models/persistimporteddeploymentrequestpreparedstackprofileaw.md: + last_write_checksum: sha1:10052b87c5f949ea53ba1eac610645373caca92e + docs/models/persistimporteddeploymentrequestpreparedstackprofileawbinding.md: + last_write_checksum: sha1:c2767ca1c7d062565da3f98a5915be3c419523ba + docs/models/persistimporteddeploymentrequestpreparedstackprofileawgrant.md: + last_write_checksum: sha1:5e63be25db93b20e26029001b0c4af5f331b20bd + docs/models/persistimporteddeploymentrequestpreparedstackprofileawresource.md: + last_write_checksum: sha1:0821f6f86a32ac9479bf4277c25be3ccaf6ee996 + docs/models/persistimporteddeploymentrequestpreparedstackprofileawstack.md: + last_write_checksum: sha1:9e706a61e92a40792b37841f5adf85efceff2100 + docs/models/persistimporteddeploymentrequestpreparedstackprofileazure.md: + last_write_checksum: sha1:5a4ea8facc97e0cdf5867575bf6ef325c86bb055 + docs/models/persistimporteddeploymentrequestpreparedstackprofileazurebinding.md: + last_write_checksum: sha1:38c8eabff9fc2677e03e9c0f9d9b588c83ac8726 + docs/models/persistimporteddeploymentrequestpreparedstackprofileazuregrant.md: + last_write_checksum: sha1:f5e4cce7374b4355563e2cd22c001db2917fa96c + docs/models/persistimporteddeploymentrequestpreparedstackprofileazureresource.md: + last_write_checksum: sha1:971bb451bbc4a6c416d73ae4c81051ceb254c934 + docs/models/persistimporteddeploymentrequestpreparedstackprofileazurestack.md: + last_write_checksum: sha1:26496236b4a8d03965ceb9e8e329318e5b6af97d + docs/models/persistimporteddeploymentrequestpreparedstackprofileconditionresource.md: + last_write_checksum: sha1:55536b19d2d627d6a34dc551cd2be6fe73939028 + docs/models/persistimporteddeploymentrequestpreparedstackprofileconditionstack.md: + last_write_checksum: sha1:c085aa6ab6e0bbff2a48ff4839c9e6cdb18f647f + docs/models/persistimporteddeploymentrequestpreparedstackprofileeffect.md: + last_write_checksum: sha1:731632216d14005f93baa3a1ea9e1026d388fb49 + docs/models/persistimporteddeploymentrequestpreparedstackprofilegcp.md: + last_write_checksum: sha1:a13602b60c323a76557d85b3b164e8a881bf790c + docs/models/persistimporteddeploymentrequestpreparedstackprofilegcpbinding.md: + last_write_checksum: sha1:84f1c92b477864d6b624c2b5b316de30784e9ffc + docs/models/persistimporteddeploymentrequestpreparedstackprofilegcpgrant.md: + last_write_checksum: sha1:6bc4e7775c80702254ab18c95ceaf08fa6bdc821 + docs/models/persistimporteddeploymentrequestpreparedstackprofilegcpresource.md: + last_write_checksum: sha1:c987769832640d64b675bf7cd9c771217b2093ac + docs/models/persistimporteddeploymentrequestpreparedstackprofilegcpstack.md: + last_write_checksum: sha1:f9d44c1acd0118c44eb597f86835daf7e976d6b5 + docs/models/persistimporteddeploymentrequestpreparedstackprofileplatforms.md: + last_write_checksum: sha1:e4d1cb65c086d23b88220c4936880da484367a82 + docs/models/persistimporteddeploymentrequestpreparedstackprofileresourceconditionunion.md: + last_write_checksum: sha1:4323f0383abfe83ad1b7edc4349a6ff286036db5 + docs/models/persistimporteddeploymentrequestpreparedstackprofilestackconditionunion.md: + last_write_checksum: sha1:df9f399ab074c6ca3cfee4ef6818f3802a8f53de + docs/models/persistimporteddeploymentrequestpreparedstackprofileunion.md: + last_write_checksum: sha1:b0c2a0d7607df96075b706ea86e58156336968ca + docs/models/persistimporteddeploymentrequestpreparedstackprovidedby.md: + last_write_checksum: sha1:8bbf48824c5616a05d82479c57bf8fcdb44f274f + docs/models/persistimporteddeploymentrequestpreparedstackresources.md: + last_write_checksum: sha1:332bcd9082f8e2e893cfb2be8b96c92fef42030c + docs/models/persistimporteddeploymentrequestpreparedstacksupportedplatform.md: + last_write_checksum: sha1:c5b0de3c0d5214e2e4f5028232c32d8f3e324179 + docs/models/persistimporteddeploymentrequestpreparedstacktypeboolean.md: + last_write_checksum: sha1:7fa884befcb80ab6a86d7b76c53c6bbdf6e726d3 + docs/models/persistimporteddeploymentrequestpreparedstacktypeenvenum.md: + last_write_checksum: sha1:2d519b79a1d22246e6f4aa689ad859cebe7ac5fd + docs/models/persistimporteddeploymentrequestpreparedstacktypenumber.md: + last_write_checksum: sha1:16edf75a7ce838699ea0bedebcd59d62fe8fd860 + docs/models/persistimporteddeploymentrequestpreparedstacktypestring.md: + last_write_checksum: sha1:e78a4b2d630f55670c0b0c4d765b8f2d4781335f + docs/models/persistimporteddeploymentrequestpreparedstacktypestringlist.md: + last_write_checksum: sha1:35947ad80ee4aa03ba2976be8a330abba60df9d6 + docs/models/persistimporteddeploymentrequestpreparedstacktypeunion.md: + last_write_checksum: sha1:fd1109f31390d19d193d167411c3fa13fad845f3 docs/models/persistimporteddeploymentrequestpreparedstackunion.md: id: 319acd3de763 last_write_checksum: sha1:8fa3d73337908e943376aa9a11f0f98c9075f8c5 pristine_git_object: 06ad04b880cd88fa4a308b853400177221623552 - docs/models/persistimporteddeploymentrequestprofile.md: - id: 6d7c858c6697 - last_write_checksum: sha1:b153aaa052e5f3eb46c17af3c37096a14db3c968 - pristine_git_object: d92201c67c36f52167241d8e33e38655d87d659d - docs/models/persistimporteddeploymentrequestprofileaw.md: - id: 580d92ae4b44 - last_write_checksum: sha1:a99c1a3ee55bd6dd2a8e74fe91c7caed03f8e0e2 - pristine_git_object: e4249add5d0f0131cd35f9690943a6544d676341 - docs/models/persistimporteddeploymentrequestprofileawbinding.md: - id: d3b002b07398 - last_write_checksum: sha1:4d69a783423978a0845d5476ad3963683285f9e2 - pristine_git_object: a9cd6412dd7c4b8faeb8d8b619d6a67c8fc1c15f - docs/models/persistimporteddeploymentrequestprofileawgrant.md: - id: 7f63e86083ba - last_write_checksum: sha1:4b809efd3f9e3bf8fbe370e9a646f22742c06267 - pristine_git_object: 642a146e5719e0e5cca4e796050b4260fd995c93 - docs/models/persistimporteddeploymentrequestprofileawresource.md: - id: 70821d2c46f8 - last_write_checksum: sha1:c227ba6ca055c410039ae205cde86e36d6546e9f - pristine_git_object: 2ee6bbf416e9099a72ea856786c0ad401c331b2d - docs/models/persistimporteddeploymentrequestprofileawstack.md: - id: e1ba011141f4 - last_write_checksum: sha1:5d032209afdaef2bbd4b8d166a2988150e70a446 - pristine_git_object: c73801e67cb032e9ab16019f7ebecf3f43f695c8 - docs/models/persistimporteddeploymentrequestprofileazure.md: - id: 040303b7a380 - last_write_checksum: sha1:8c7fc3a3e028b57fdaa93ec26b6477680798304c - pristine_git_object: 417ba3aa825ec48736d5b060ee431b1171cea7f0 - docs/models/persistimporteddeploymentrequestprofileazurebinding.md: - id: 39b5972b2ec6 - last_write_checksum: sha1:b7538879b7345b2ed9c0f217ce6c98a812acf450 - pristine_git_object: 8cd58321e67feb8797c64269101d69617aec7abd - docs/models/persistimporteddeploymentrequestprofileazuregrant.md: - id: b46b2b69ac2c - last_write_checksum: sha1:1eb3e5c448da959575528a156a5e4f1299ad7898 - pristine_git_object: ab25de34e5d121943bf494227da0887be014b1c5 - docs/models/persistimporteddeploymentrequestprofileazureresource.md: - id: 13e6309501e8 - last_write_checksum: sha1:3ca56279e03eaa5bb0cdd10633ad69cdff9903f5 - pristine_git_object: 914a35b94b8713bebf7cc5121dc02fcd73253066 - docs/models/persistimporteddeploymentrequestprofileazurestack.md: - id: 07e1ff833e99 - last_write_checksum: sha1:21c8272e9abbde3f057400474e78c0307e37b542 - pristine_git_object: a9529269db1539f289665f6f4da9a1735500e9af - docs/models/persistimporteddeploymentrequestprofileconditionresource.md: - id: f9fc90d90b26 - last_write_checksum: sha1:ec4095bc5924e464e7beb3ceef56d1b0da51c65e - pristine_git_object: 44b8d62c0646ac11c7f4597295be9ec81e6d2455 - docs/models/persistimporteddeploymentrequestprofileconditionstack.md: - id: 894157db641e - last_write_checksum: sha1:db2bccb115514155280b49df5a73b28984b3062a - pristine_git_object: fa3672366d8cd85ff15f8f3ad852ba8c69981dd3 - docs/models/persistimporteddeploymentrequestprofileeffect.md: - id: 8c3f202db0c3 - last_write_checksum: sha1:bc8b62f48763da565e4ea65913d7e3ffdac146be - pristine_git_object: 1605c1b908150b5e4c61efe24ede4644321b0155 - docs/models/persistimporteddeploymentrequestprofilegcp.md: - id: e817948d1773 - last_write_checksum: sha1:4b7cd5c66f1bf7d6598d8447c352300b2b9a5076 - pristine_git_object: 5b7ac714503ecec7dcd82a73d0446d46617d64b1 - docs/models/persistimporteddeploymentrequestprofilegcpbinding.md: - id: 739abfd21d18 - last_write_checksum: sha1:7fc9c4be13ca71fa128773cf1f072cec33cee7e7 - pristine_git_object: b1634d5eb01589cd1c4978414479ea6427bc17cb - docs/models/persistimporteddeploymentrequestprofilegcpgrant.md: - id: a5238b2e40fe - last_write_checksum: sha1:512ba77f9c4f9250f61e7494c2ebf0d0397f1ad0 - pristine_git_object: 1d04fed318bd3354d1baf589c828471e91d2b5e6 - docs/models/persistimporteddeploymentrequestprofilegcpresource.md: - id: 548856989c91 - last_write_checksum: sha1:8dad7682659ebee60efd683c511a56e780d44402 - pristine_git_object: 6b611daef5ab87f71a0ec020c5776120c5ab2280 - docs/models/persistimporteddeploymentrequestprofilegcpstack.md: - id: 0c5f1dd32d73 - last_write_checksum: sha1:754f54898a65c34bdec6ab1a397b10970c8201df - pristine_git_object: c415a4ab0956e77bdbace8d4e8d52e280b013812 - docs/models/persistimporteddeploymentrequestprofileplatforms.md: - id: 005729a7ec34 - last_write_checksum: sha1:c7865486546471ea5d073d49f75e966f28c9f224 - pristine_git_object: df4bf146c489974d92287a55ff16d99e25fb3568 - docs/models/persistimporteddeploymentrequestprofileresourceconditionunion.md: - id: b12cacb6d52f - last_write_checksum: sha1:8bcec062f84086862ac96c7fcb8fcf173e2b3a65 - pristine_git_object: 313dd4d812ff8c9737b62ed86de925b042edee67 - docs/models/persistimporteddeploymentrequestprofilestackconditionunion.md: - id: 96fb7368d54e - last_write_checksum: sha1:6f5903390411c201a8d27a12b1f43217212f5615 - pristine_git_object: b81e87545b32a3ae1cb0f53178c9ec24b3ae86e3 - docs/models/persistimporteddeploymentrequestprofileunion.md: - id: f38cbfebbb29 - last_write_checksum: sha1:3f5a036f81af79d0347371a1abea8506d6ea467a - pristine_git_object: 7a556fb6436afa23ddb691fb3d9bc5de267bf860 - docs/models/persistimporteddeploymentrequestprovidedby.md: - id: 4c0e5a8d56e5 - last_write_checksum: sha1:7bbbc2e0acc35a0c3655af7e57838b582db34c8c - pristine_git_object: 7c2ad6a3b05fe0b03a5b83df3fce4cfb22df2964 + docs/models/persistimporteddeploymentrequestpreparedstackvalidation.md: + last_write_checksum: sha1:f931d6f3cbfabc13a88b8dd2334a27ab69cececd + docs/models/persistimporteddeploymentrequestpreparedstackvalidationunion.md: + last_write_checksum: sha1:9d6b6a67524dcf4c55703492263475f5c96156cc docs/models/persistimporteddeploymentrequestproviderawsalb1.md: id: ac2a1abf8ef9 last_write_checksum: sha1:864d06d80edf70c95a72bf47b9c65874e2a5b0af @@ -15994,10 +17261,6 @@ trackedFiles: id: 8f6963f2ce7d last_write_checksum: sha1:3974c2fe57a0585ba54ef48ca3cfcfd0cb75c0e2 pristine_git_object: 7d1da653145c68c7f8276b4d6176791f994ef84a - docs/models/persistimporteddeploymentrequestresources.md: - id: 1f4298d037de - last_write_checksum: sha1:39a9ba93e1a3f5465194850cc1e6ecdbb066c7ab - pristine_git_object: fc307719c9610ec26fc7fdc2610eb8de0585b730 docs/models/persistimporteddeploymentrequestroutegateway1.md: id: fa7011cb1fc0 last_write_checksum: sha1:0e008a40bd3aeff1453afd0e5fe16d4bfea58547 @@ -16024,8 +17287,12 @@ trackedFiles: pristine_git_object: 9685a1d6c51f1cf7e5db1462c46432daa2bc6337 docs/models/persistimporteddeploymentrequestruntimemetadata.md: id: b2a76c122682 - last_write_checksum: sha1:78ba962f544eb243075c3d4b0913d714203a5d1f + last_write_checksum: sha1:9895ac9897ee678a3387f264fc426883adadfab8 pristine_git_object: 4c6bb6a03f1304594aa760fc1d760e63e4256625 + docs/models/persistimporteddeploymentrequestsetupupdateauthorization.md: + last_write_checksum: sha1:5cf781714ebb8a721df7719ab9265ea2e94de520 + docs/models/persistimporteddeploymentrequestsetupupdateauthorizationunion.md: + last_write_checksum: sha1:f05436b2c3dfea01a5c255bf132cbd496464295e docs/models/persistimporteddeploymentrequeststacksettings.md: id: 740658d835cf last_write_checksum: sha1:4f548fda60bd7578509a0c3c9bcf3a1f67e5d676 @@ -16034,10 +17301,6 @@ trackedFiles: id: 2f0c7dab95fb last_write_checksum: sha1:ff2d35aadcd98a3dbc49b3e79da70f42553dc2fe pristine_git_object: 12a8920ef1f674d6a4b8fe414a3bb9c35b0a27bf - docs/models/persistimporteddeploymentrequestsupportedplatform.md: - id: 8641611c89d3 - last_write_checksum: sha1:5a34a83a353001d212862fe7bd863de3d06194b2 - pristine_git_object: 6238b2055046f249447e886fa3dd98ca51cedff9 docs/models/persistimporteddeploymentrequesttelemetry.md: id: 8765b0bc1f92 last_write_checksum: sha1:1ceb8b4fb4160a11ea77dc91e25828cff50a5f2d @@ -16046,10 +17309,6 @@ trackedFiles: id: 94b042838293 last_write_checksum: sha1:696f4cd252973859e27b7e1f989949b04b1a02c6 pristine_git_object: 5321d3cb4d2e6e5cd56dcee6f6904ed559c2c874 - docs/models/persistimporteddeploymentrequesttypeboolean.md: - id: 2deafcf884d9 - last_write_checksum: sha1:991cbc8dc0e195f6e0f0b8849558eb6483334975 - pristine_git_object: ef3e931afbe77fa99b5b549559742bed130a4ccc docs/models/persistimporteddeploymentrequesttypebyovnetazure.md: id: 97078ce0e281 last_write_checksum: sha1:ab902c9560b0c6c86a907af6c5843fd8045e3292 @@ -16066,26 +17325,6 @@ trackedFiles: id: 32ea9b3d9f39 last_write_checksum: sha1:7fe81ec664cba237117206b8e45e2423fb43fb3e pristine_git_object: e9c0e421a605e8f77e48272fe6eace70666e8d16 - docs/models/persistimporteddeploymentrequesttypeenvenum.md: - id: 410b0c0bf0cf - last_write_checksum: sha1:9f01b189dc92785aa58a3137c268fa27c5dc3573 - pristine_git_object: 70d455d2bd14a0b1120617b98584c56929a2fb8a - docs/models/persistimporteddeploymentrequesttypenumber.md: - id: 74a0187af026 - last_write_checksum: sha1:48fba64722f95001383bcc7b091674e342a254de - pristine_git_object: fde8c46c3a3f3c3bb45c4c4c60dd55aec213cc9a - docs/models/persistimporteddeploymentrequesttypestring.md: - id: c5cabf69b26f - last_write_checksum: sha1:a66142ffee3184197c4869447aa4b822fe161005 - pristine_git_object: a606b8512a16fd39ee3c5ee7f3cdbf3fe6d049d4 - docs/models/persistimporteddeploymentrequesttypestringlist.md: - id: f04522279d68 - last_write_checksum: sha1:45b12cca050ec458b19a0bcb523362ac657e3cf9 - pristine_git_object: 762b46a2c89c5d74ee8605c647a3aa53fb5abe3a - docs/models/persistimporteddeploymentrequesttypeunion.md: - id: 44eefdd43edd - last_write_checksum: sha1:39263879e8180fd6e0a20606ad09746f4e09c84e - pristine_git_object: a616336e6ad2f76929f927d6193ddd84fe8dbf38 docs/models/persistimporteddeploymentrequesttypeusedefault.md: id: 7daeacc64f7e last_write_checksum: sha1:5fecf3f2ba13887f19dd0737b9b0e4e1ca8e7351 @@ -16094,21 +17333,9 @@ trackedFiles: id: dbf5c7f3215f last_write_checksum: sha1:1471a5ae62860ccb6e947dcb1a64893070c29cf8 pristine_git_object: 7afefe31cb1809f3cb82ac2f60811115d5369d21 - docs/models/persistimporteddeploymentrequestvalidation.md: - id: f32d25d287a7 - last_write_checksum: sha1:3ec97a615fec38774bb474f6d8c4b9a0cc4faf52 - pristine_git_object: c2b37f2b0e62cd0ef8dd1b70e9c8b738c3e6e3e2 - docs/models/persistimporteddeploymentrequestvalidationunion.md: - id: 4dea19cc996b - last_write_checksum: sha1:915e7a1f137eb3195c6c52357fe672fbb6776ca5 - pristine_git_object: cfb9c1e062969ca5c63fc31472765e86afd1bf9f - docs/models/phase.md: - id: a2d01dc13e35 - last_write_checksum: sha1:4ec2b9eca39f33ae037a33dbdd8d17df33df52d9 - pristine_git_object: 99ecbaa49a43274e706cfa8b33deeaa4976ab38e docs/models/pinreleaserequest.md: id: 84944e6117dd - last_write_checksum: sha1:3599a75c86258fcb178ae16be077c1374e4582cd + last_write_checksum: sha1:003a8d0cf013873974734e551d36ccc3a0792d1c pristine_git_object: 4199ebaa10072d4c7cac2617d82f8c1bdccbe42c docs/models/planid.md: id: ae2c385a3619 @@ -16520,7 +17747,7 @@ trackedFiles: pristine_git_object: 2b091ee01a69fff226c6f14f8990d2489a3f09d3 docs/models/prepareddeploymentstackresources.md: id: 423b75e9cd22 - last_write_checksum: sha1:37cf8914fdb762a27f84ed70b1167cf5c6f31db2 + last_write_checksum: sha1:85b5222c4f7400d346640a4d184b803139ed1241 pristine_git_object: 71ecffac96b95188b08e85cbcc8ad495830ee139 docs/models/prepareddeploymentstackstack.md: id: 21bf9a3768e6 @@ -16666,14 +17893,6 @@ trackedFiles: id: 59c211527900 last_write_checksum: sha1:e349f00c476c4f6c2e90e60e618458187cbae3ee pristine_git_object: 41bec7d514947736292b3abfb2f218fe2c0d1c45 - docs/models/previouserror.md: - id: 1d09c227d4b7 - last_write_checksum: sha1:d06633e2ead0e111e07be42d84a5cc670da8faea - pristine_git_object: b1c7ad2e3e52c62fdafdd7338452d82d39d4830c - docs/models/previouserrorunion.md: - id: 221153d44ade - last_write_checksum: sha1:e09013ab062923e403ecf0b35aa5284401ee1b62 - pristine_git_object: b911c916f7fe86c552d5caceec76e16c9b14c503 docs/models/primaryendpoints.md: id: 926317c5ebb3 last_write_checksum: sha1:79f758bea6580fc5534b78d6c08e5e2a8b22ef07 @@ -16818,28 +18037,58 @@ trackedFiles: id: b08c53bad0f3 last_write_checksum: sha1:f8fba3e6939f16b0ea0b26709ae751bd99b24a13 pristine_git_object: 633fa2a5ea0ca3fdc014845bf90f83af27ed0307 - docs/models/progress.md: - id: ee7665226310 - last_write_checksum: sha1:c517c9b92bd45e3fa22794c66a88816d2f183b50 - pristine_git_object: 9bb04cac649b16265eda5e554f45b39acb6af69b - docs/models/progressunion.md: - id: 64b68c77b264 - last_write_checksum: sha1:7d896143a832e93b48b8246e14dbdec5777ab3e7 - pristine_git_object: 37877eca58f93403cc5e5266bc3c02d511c3c0de docs/models/project.md: id: 90bdd121a0a9 - last_write_checksum: sha1:787151be1dca8cb6094b180c2c220d5352478bf4 + last_write_checksum: sha1:d4e634a764c42427623ec2533cd6aaaccbf17a5d pristine_git_object: 8d2be9fdcf24e018ee89ec179544f84cf03960d1 + docs/models/projectaccess.md: + last_write_checksum: sha1:227d372d67ccdc3d740d344ace9f19f7df2498a0 + docs/models/projectallowedprovider.md: + last_write_checksum: sha1:9d7b780f3f8bcf5f86f1f183341cc946b0a85ea8 docs/models/projectbinarytarget.md: last_write_checksum: sha1:a06ab3911701ff6e612ea69e05d61879e13f6ca1 + docs/models/projectbuckets.md: + last_write_checksum: sha1:49625a9988fd773faac03f6881d9427081451729 + docs/models/projectcapabilities.md: + last_write_checksum: sha1:00971e005e1ed84c8e36db07bddb4040256c1a88 + docs/models/projectcapabilitiesaccess.md: + last_write_checksum: sha1:dd46bb259098cb6fc184975dc9bf8818903e1aef + docs/models/projectcapabilitiesallowedprovider.md: + last_write_checksum: sha1:7da886b72fbe75a5dc1ef6e511e6661914d0f2c9 + docs/models/projectcapabilitiesbuckets.md: + last_write_checksum: sha1:ffea0deb64de63e975b076030de0b886c57fe3c5 + docs/models/projectcapabilitiescapabilities.md: + last_write_checksum: sha1:8787cc92db330fd7383c75976c4ee5a82316c239 + docs/models/projectcapabilitiesclientapi.md: + last_write_checksum: sha1:8d00523a9715460e14d7bb533118a749a4a2134a + docs/models/projectcapabilitiescredentialpolicy.md: + last_write_checksum: sha1:e07c2cdb0b898e0118160721d19ed5e0939d10f3 + docs/models/projectcapabilitiesdeployments.md: + last_write_checksum: sha1:4791870faf500a199779a18be5a6412e8a2b149f + docs/models/projectcapabilitieskeys.md: + last_write_checksum: sha1:ddc7f60341062499b9cd848e7221e841b38b3334 + docs/models/projectcapabilitiesmodels.md: + last_write_checksum: sha1:0df73dea4d9b43ed7fed72aede14ec164fec9a4a + docs/models/projectcapabilitiesregistry.md: + last_write_checksum: sha1:6ce40a4fcdc725cf50068eeeedf427f18c102a00 + docs/models/projectcapabilitiesrequirement.md: + last_write_checksum: sha1:f51c622ef9eeacf1292beff73208c8526a78a2e9 + docs/models/projectcapabilityoverview.md: + last_write_checksum: sha1:3ed1a634eab6d6f6a6a4555d9ff3acda8bcebeb7 + docs/models/projectcapabilityoverviewcredentialpolicy.md: + last_write_checksum: sha1:238c1e5ad3e86048bd2bc802bb2d7f1afe1fae27 docs/models/projectcli.md: id: d287fd97b3da last_write_checksum: sha1:b3276f1ae97367ae429d088ec0fc64329e7fe6db pristine_git_object: 9b74c0b197441cfb658b211883b9dfad50dc5cb0 + docs/models/projectclientapi.md: + last_write_checksum: sha1:5a628d446801bfdfdba9fec2662f445232837a13 docs/models/projectcloudformation.md: id: ceb28f9b7f14 last_write_checksum: sha1:fd32f4c69a11cd854ae2b234107d57aef02b0fd4 pristine_git_object: 2cd96276174494dec33b5c4c98c1794436fe27a6 + docs/models/projectcredentialpolicy.md: + last_write_checksum: sha1:bbaa6dc6015a43422235241ebefd293690286fbd docs/models/projectdefaultmanagers.md: id: 1c5d1764c241 last_write_checksum: sha1:840509159ca49713c7d3a0f3935c5f0e339b7b78 @@ -16848,6 +18097,8 @@ trackedFiles: id: 111de2c7bf82 last_write_checksum: sha1:6bdca24447ef542902d03dd147b35d4f798d37a3 pristine_git_object: e2afc7a3a49a874c049562212544ad6a0073926e + docs/models/projectdeployments.md: + last_write_checksum: sha1:fa81ca21776adcc406f3af3fc2111d6f11b52bc2 docs/models/projectgcpoauthprovider.md: id: d8273d39764a last_write_checksum: sha1:74ebb97277826581d5567e1e7ba5e84c740c6fbf @@ -16868,20 +18119,34 @@ trackedFiles: id: 7ac8dde4bdd7 last_write_checksum: sha1:072bb9fbcb8a3138dc40ecfa6f0a505e181ece17 pristine_git_object: 1f0a06272e34a6d139db80e808a929833a895a89 + docs/models/projectkeys.md: + last_write_checksum: sha1:dca9f6ab43294af81c604386c097744c9753a808 docs/models/projectlistitemresponse.md: id: cd5b6325772d - last_write_checksum: sha1:42f6338c43eb0c750b63a02578ff59c77d50737d + last_write_checksum: sha1:a0393ab60d4ecd771076b9fe59d0edb7c5eccc17 pristine_git_object: 7269adbd3afaee4490905d13fd13353f040ad708 + docs/models/projectlistitemresponseaccess.md: + last_write_checksum: sha1:8af6d2e118884fa51078a9cf18a7025ab7a4d39f + docs/models/projectlistitemresponseallowedprovider.md: + last_write_checksum: sha1:4df8b2ac155475dd0a2926c572f0314c543a32a7 docs/models/projectlistitemresponsebinarytarget.md: last_write_checksum: sha1:461c7e0db036e93c71c04f48058ab91989fe078b + docs/models/projectlistitemresponsebuckets.md: + last_write_checksum: sha1:69a411f0cff6aed9d3fd62a0e8ee473671dfb109 + docs/models/projectlistitemresponsecapabilities.md: + last_write_checksum: sha1:31de9adcd4f68c2ac9a04f26093376d5163e4cc3 docs/models/projectlistitemresponsecli.md: id: c55037e94e3e last_write_checksum: sha1:39c8c4bb1c951935d95917f4fac9dfcc170a6dac pristine_git_object: 53e0fe3577f4a76b85145d3d73251e2bf93ddc5e + docs/models/projectlistitemresponseclientapi.md: + last_write_checksum: sha1:482ea85cd94502bcecc5bad8dd5047748306ff06 docs/models/projectlistitemresponsecloudformation.md: id: 81926910a850 last_write_checksum: sha1:71993c582e0a66ff5004a76dc55ae3dbf9dfead1 pristine_git_object: fe99896e1f61cb4823d1492da430468204574317 + docs/models/projectlistitemresponsecredentialpolicy.md: + last_write_checksum: sha1:c3b3c43c72cd0d9b0e50bb2a662c9d32c1343964 docs/models/projectlistitemresponsedefaultmanagers.md: id: 685824e67f5b last_write_checksum: sha1:976e26355d03d3e8ff921aa0df7d7527c9c4d330 @@ -16890,6 +18155,8 @@ trackedFiles: id: 14b06bddf08b last_write_checksum: sha1:5a861eab73686254f3365c4da93207927c3b5a80 pristine_git_object: af4f4b7ddd26d5bd1ce0c4cc51acea7018c5b70a + docs/models/projectlistitemresponsedeployments.md: + last_write_checksum: sha1:caf1998e02141aaf48b03e6fb8725294a505bd24 docs/models/projectlistitemresponsegitrepository.md: id: 723529ff5b75 last_write_checksum: sha1:cc897ad6ed69e95c077bb54ee2b5b565852f85ba @@ -16898,6 +18165,10 @@ trackedFiles: id: ee1309c54c0b last_write_checksum: sha1:3d58d5f82d6f11ccaa4d485b0774d709120aa1c1 pristine_git_object: d3e355854c553686fded771a358d2eaa772a3311 + docs/models/projectlistitemresponsekeys.md: + last_write_checksum: sha1:1fee314543e18ae2cdfe09e784cde4108f8658a7 + docs/models/projectlistitemresponsemodels.md: + last_write_checksum: sha1:da3a6895100b47d5817bd417d1534cd12f932c37 docs/models/projectlistitemresponseoperatorimage.md: id: afa4c1b2f2a3 last_write_checksum: sha1:a52d0cc455d26083799b423acdde200fb567b69b @@ -16906,6 +18177,12 @@ trackedFiles: id: c82b163f0086 last_write_checksum: sha1:b54f7ec9bb4596af331e5fb5b571bc86d0fc2db2 pristine_git_object: 31807371754a36fc6ec530f2c290fb578cafb300 + docs/models/projectlistitemresponseprojectcapabilities.md: + last_write_checksum: sha1:5bd2739213702e15b859bdb0392b224904ce3162 + docs/models/projectlistitemresponseregistry.md: + last_write_checksum: sha1:d4810ee6ee410b293d940a3d257b4b649cd58827 + docs/models/projectlistitemresponserequirement.md: + last_write_checksum: sha1:481352f0e37faa0c0a1fd3bac2fe23615b00cd78 docs/models/projectlistitemresponseterraform.md: id: c76fd9661a84 last_write_checksum: sha1:0df72b84c7422a23fb259569b9e4c6fed29856a0 @@ -16914,6 +18191,8 @@ trackedFiles: id: c93b2466b73a last_write_checksum: sha1:4be6cfabee0a457eeddb61a6ea85ce4ea606700d pristine_git_object: 4aa024ef7bb1c864ae94f1991963e97549f6bbbc + docs/models/projectmodels.md: + last_write_checksum: sha1:52a8beeba1d4c86c03fb536f5fd6cd9d688c73ee docs/models/projectoperatorimage.md: id: 2791d98f12e3 last_write_checksum: sha1:75c709f0c6aee661231100831b0638c2b13190ed @@ -16922,13 +18201,21 @@ trackedFiles: id: 131bd885e547 last_write_checksum: sha1:47b8406564829460d4de29ba7f6c3ee965fadfdc pristine_git_object: 9ec5b937789172ada06fad31bd931d75b86801fd + docs/models/projectprojectcapabilities.md: + last_write_checksum: sha1:1700fcba49752204c172cf9fa08652f70b8526a1 + docs/models/projectprojectcapabilitiescapabilities.md: + last_write_checksum: sha1:8467e6ae36d6f444554b9ca981dc192d7e0b82b0 + docs/models/projectregistry.md: + last_write_checksum: sha1:c9fc8f132f344fa9135eb87b43d9b663b8687833 docs/models/projectreleaseinfo.md: id: aef7dfea68b2 last_write_checksum: sha1:040627225e214322e1f7fa7cdcac95e7dbc48e4e pristine_git_object: c9b7c83876f3fde4f374170a2bd63a28205f5fa8 + docs/models/projectrequirement.md: + last_write_checksum: sha1:fcc8f03feddffac2f2417f42b0cae8670f2816ca docs/models/projectrole.md: id: e7b537c5e59b - last_write_checksum: sha1:13a363ed224a672f59ee50773f8d2145f9c42a9a + last_write_checksum: sha1:b51d210749af155cab10022a4d6b7d905a31fa37 pristine_git_object: 6e63beeadb252478d821a187540f9cff139f4c7e docs/models/projectscope.md: id: b44d20cc2a33 @@ -16942,6 +18229,8 @@ trackedFiles: id: 35ac72587990 last_write_checksum: sha1:4ccea069dc0ca7314acc4ed0281af33505913628 pristine_git_object: efa13004e8cb471d054fdccb8d60146a8a1ff74e + docs/models/protocol.md: + last_write_checksum: sha1:b0eebd04140a599535d006d3fd80ae0336aca818 docs/models/providerfleet1.md: id: c908582edb12 last_write_checksum: sha1:bf7763b43cc794c7f84e2ef7ed82168bd3d1358a @@ -16960,8 +18249,24 @@ trackedFiles: pristine_git_object: 086659a382d234ab92a7666e0e37b7a24889edac docs/models/publicendpoints.md: id: 2c1bf38da05e - last_write_checksum: sha1:51d98a8ffa04dc330e1b5f3e1ae0c8ce6448863c + last_write_checksum: sha1:23b2ff9438188f73762c907713328d641d86f162 pristine_git_object: 083f54ec43b6704478a9a0c3086fdf7d61a340ea + docs/models/publishoperationspluginrequest.md: + last_write_checksum: sha1:9e2a044e860ad1201b97ea11c41af62602e48b23 + docs/models/publishoperationspluginrequesttier.md: + last_write_checksum: sha1:da0dcba3626efe5688657b6ee519a2bc1e220361 + docs/models/publishoperationspluginresponse.md: + last_write_checksum: sha1:e9bc546a284fa12699aed545c73bd120bf834aed + docs/models/publishoperationspluginresponsetier.md: + last_write_checksum: sha1:e8cb257fdfa2c7ac03a036bd59f70b79299f8165 + docs/models/putexternalaibindingrequest.md: + last_write_checksum: sha1:93d5f35f4f4644c55b5f2656a2b03e4b04d8c2de + docs/models/putexternalaibindingrequestdatabricks.md: + last_write_checksum: sha1:6b1dff165c685caf745e3ac805f0598cf0e3404e + docs/models/putexternalaibindingrequestproviderenum.md: + last_write_checksum: sha1:dec6110e2e847b025aa40ace2b551518ed4a6a0a + docs/models/putexternalaibindingrequestunion.md: + last_write_checksum: sha1:2ddf3193f3683ad8bd420fbd6c3cf296f178f606 docs/models/readiness.md: id: 02e426d5c584 last_write_checksum: sha1:f1ee51f7f369111916ea80d09cb0c84914473b06 @@ -17014,14 +18319,74 @@ trackedFiles: id: 0afc6ecffb9c last_write_checksum: sha1:1c5442656467bc4ef693a7936d42e5d8fc4ce288 pristine_git_object: f06bd084011b11425b7c87531152458d666eb657 + docs/models/registryaccesstest.md: + last_write_checksum: sha1:9560ed24c7bec7bb99b9379fb2478607c20bc9f5 + docs/models/registryavailability.md: + last_write_checksum: sha1:4785403e19bcd289c33c8896c8659cac437e45c4 + docs/models/registrycapability.md: + last_write_checksum: sha1:d342fcc8268a36838599a611ccd9bae31e9ed97c + docs/models/registrydirectprovider.md: + last_write_checksum: sha1:07f8bcf1d6c9608fc5012adff16d1105f5d67a32 + docs/models/registryhealth.md: + last_write_checksum: sha1:747ae9c297a3ce856d54d14ea6a91e78b0aad6a9 + docs/models/registrymodelcoverage.md: + last_write_checksum: sha1:8e2385312d84466b3d8faf5e3ab4a313118de06d + docs/models/registryobservation.md: + last_write_checksum: sha1:0253b27aa28be94fa3acb418e2d63d2de43ae482 + docs/models/registryplatform.md: + last_write_checksum: sha1:8e2cac179bb8b70a821533556b72cda20594471b + docs/models/registryprovider.md: + last_write_checksum: sha1:900a33724fea4948387e7a1cfad53ad09e5bf8bf + docs/models/registryroot.md: + last_write_checksum: sha1:1db635216a2b41b64cc6183b70c9d571652c8c96 + docs/models/registryrootstate.md: + last_write_checksum: sha1:2012beeaf6e8a49a11f9b6a915e10181abbf8794 + docs/models/registrystate.md: + last_write_checksum: sha1:89b42bb1999e08e1decb0089be1a93351b91122a docs/models/release.md: id: 704b04b89ff5 - last_write_checksum: sha1:aa547c58ede04c1603040cfd2eca779ed85e2aed + last_write_checksum: sha1:c96476647133d48c4afb04cfeb2eee1dc690bfa7 pristine_git_object: 25e44a67de240618f5112d30fc35c65432c7bd89 docs/models/releaseauthorfilteritem.md: id: dc3e1481b7c8 last_write_checksum: sha1:5f3dfd77544e2ac982fe4e7aefd7b1ec38da99bc pristine_git_object: ca95f4ee3d3ac80ad263ffac86762ec8e41ddc89 + docs/models/releasechannel.md: + last_write_checksum: sha1:5025805160d5c4e17dcab128abab97c68a3a215f + docs/models/releasedeploymentitem.md: + last_write_checksum: sha1:9b9abc774accdbcd12ec6505145625d0e18a140f + docs/models/releasedeploymentitemdeploymentgroup.md: + last_write_checksum: sha1:7867e383e7504cc0e51ad96f75ea5dd460876ec6 + docs/models/releasedeploymentitemenvironmentinfoaws.md: + last_write_checksum: sha1:6e9762b25502b367545833f5dd1bdc1e3ca28bd1 + docs/models/releasedeploymentitemenvironmentinfoazure.md: + last_write_checksum: sha1:9f36175cdfdd30f56f7d0776a22ff9a2011099fa + docs/models/releasedeploymentitemenvironmentinfogcp.md: + last_write_checksum: sha1:4bdcc4c3d47134c3847b75329874df2b4ec19763 + docs/models/releasedeploymentitemenvironmentinfolocal.md: + last_write_checksum: sha1:d3208508c1c166f7c3d72d754ae764f3c2214724 + docs/models/releasedeploymentitemenvironmentinfotest.md: + last_write_checksum: sha1:a253b125bc08c8c831e4bc53e36cfd2e3b66e8e7 + docs/models/releasedeploymentitemenvironmentinfounion.md: + last_write_checksum: sha1:e84ac73c5cd5d00540641d9556b6d6fd6c54e7a2 + docs/models/releasedeploymentitemerror.md: + last_write_checksum: sha1:2649bdfe82ca8d1d773e2035b71e1c370a3c6035 + docs/models/releasedeploymentitemplatform.md: + last_write_checksum: sha1:d195065a06bf0bcfc8567fc02028f6033c8b7bb6 + docs/models/releasedeploymentitemplatformaws.md: + last_write_checksum: sha1:b2a9031f795699f6efc88297047dc303951eae28 + docs/models/releasedeploymentitemplatformazure.md: + last_write_checksum: sha1:747a8de86fd774c5e64447b5f7de520ef31846ed + docs/models/releasedeploymentitemplatformgcp.md: + last_write_checksum: sha1:70fa7b1ab78cff62c935eee313d8c627b6cca13a + docs/models/releasedeploymentitemplatformlocal.md: + last_write_checksum: sha1:d6036d1fa20428a5a4fadbe8cd2a0da05514ad47 + docs/models/releasedeploymentitemplatformtest.md: + last_write_checksum: sha1:7795636d533971839a78231df10496da5dcb7f9c + docs/models/releasedeploymentitemstatus.md: + last_write_checksum: sha1:9904cd378f3550afda0aa9851a6033c0c57ebf2b + docs/models/releasedeploymentsresponse.md: + last_write_checksum: sha1:a9875315f62cececbdf4538a8b28c809a002fea7 docs/models/releaseinfo.md: id: 56ec346ea5c7 last_write_checksum: sha1:97d33c9668f4eed8c7e567b14c46a14da27f735b @@ -17084,7 +18449,7 @@ trackedFiles: pristine_git_object: 96fb02c2c12ee98a567bdd1bdfb1dc71d8da424f docs/models/releaseinforesources.md: id: 260bc06b35e5 - last_write_checksum: sha1:3b963350e84a9869a23f26145acc772ce2b46942 + last_write_checksum: sha1:4a62ba7fc8e6c908a0133e72fc910feca2b47a5d pristine_git_object: 1900a98eaeadbb4a5222e2d986b7e795d351386a docs/models/releaseinfostack.md: id: 10c40edb5f91 @@ -17120,24 +18485,42 @@ trackedFiles: pristine_git_object: 301b35550a2df1f54e7a53fc95bf37d7220c7f02 docs/models/releaselistitemresponse.md: id: 7f388514097d - last_write_checksum: sha1:38dfb68647526e40bc33f8529cd17f4ce7611a41 + last_write_checksum: sha1:a4002d4db795803c371875cc912f7edc2a170f54 pristine_git_object: 80358d755425f1132195d8978f5c9bce21858329 docs/models/releaselistitemresponseproject.md: id: 8dfa7e006fb6 last_write_checksum: sha1:598514d0fc0c16a26f3bd8d435edba0f3d0574f2 pristine_git_object: 4b8c16e6aa295babbd37bd93ce497e84d2906e8d + docs/models/releaselistitemresponsestack.md: + last_write_checksum: sha1:c5b0192de7159646681a61c6d303532d881b05df + docs/models/releaserolloutstate.md: + last_write_checksum: sha1:cece1fdecbcdb50635f568cb5b263780825fe1f8 + docs/models/releaserolloutstatecounts.md: + last_write_checksum: sha1:7e2eaeeb9276bd214c451db33956ff455b00a7a4 + docs/models/releasestack.md: + last_write_checksum: sha1:6a014792e7a13dd8003ba255af301afd9b3bcf61 + docs/models/remotebindingsexternalaccessrequest.md: + last_write_checksum: sha1:fe6beb6bc1b1ef8bf71f0f08a7d93b152d670a4d + docs/models/remotebindingsexternalaccessrequestcapability.md: + last_write_checksum: sha1:93d99acbed611bc16df2d79d147af84910ad7ff5 + docs/models/remotebindingsexternalaccessresponse.md: + last_write_checksum: sha1:0702dce8515feebb46c8f3554528e46ab17fc727 + docs/models/remotebindingsexternalaccessresponsetokentype.md: + last_write_checksum: sha1:2cd0d12b3132b1644ceeaecf69daadeb164bd9bb docs/models/removemachinesmachineresponse.md: id: 6c95a99f8a16 last_write_checksum: sha1:c82b4d01b109c6c54007ef09094b10c53059e452 pristine_git_object: 63d20e6502d5b79b6ce214a8fa46d39de6c32cf1 docs/models/renderoperatormanifestrequest.md: id: 4e0c2e089734 - last_write_checksum: sha1:a9965505d4ffd40b9f1b658823a8487ec05566b5 + last_write_checksum: sha1:25d33f65158a36c7a8b2eb209add9a6817e3602a pristine_git_object: 9ef744ee5c8459d598f8eaff0a44870ea11d35d8 docs/models/renderoperatormanifestrequestformat.md: id: c22db87cc442 last_write_checksum: sha1:aced69ad79aa7d638bb9f63b9f59ee227cd88e1b pristine_git_object: 7b6bd86f7dec67ff753071259ccf35ef23273f96 + docs/models/renderoperatormanifestrequestscope.md: + last_write_checksum: sha1:829e38ad82316487b3e29d50bd95013eadee2c07 docs/models/renderoperatormanifestresponse.md: id: 4b113ba9bf92 last_write_checksum: sha1:81fd32eef69b68b869cd6438bb5d3e4c734eecda @@ -17170,10 +18553,10 @@ trackedFiles: id: 748ecacf5b0c last_write_checksum: sha1:5704ddd56408ec2a47c14e3c77f2118d0a2dd8bf pristine_git_object: 2c5fa7dbe259c0ca1cf3a2fc234fa207b574acef - docs/models/repository.md: - id: 609d61c82f79 - last_write_checksum: sha1:33d3cd28eebe8fffd65594faf9ec477a1e26d81d - pristine_git_object: a291354759eaf49872fc74e7464cf42919343df8 + docs/models/repositorystatus.md: + last_write_checksum: sha1:9d67a11ec31c401f831c8d2516a20e0376c62ced + docs/models/requiredmodelcoverage.md: + last_write_checksum: sha1:db682cf42630653edc43a2135d33022b8994433d docs/models/requirements.md: id: 6af61151d0f9 last_write_checksum: sha1:2458a1705204144c83edf90eaceaef492a4b5c1f @@ -17264,7 +18647,7 @@ trackedFiles: pristine_git_object: af5bd5ca2499a56a2d89be6760cee1a18e8ac0d3 docs/models/resourcecounts.md: id: 8054530e25e6 - last_write_checksum: sha1:e2d2d529d325e6013d0eee35e3954752f21e7ab8 + last_write_checksum: sha1:7f56c78ef28bdffe0fdfd6aaaa25965a7d756be7 pristine_git_object: 5c9e08a2f2d23db71b47e1f8562a1fa4cbf912c4 docs/models/resourceformat.md: id: 1530f8971ddc @@ -17276,7 +18659,7 @@ trackedFiles: pristine_git_object: ca5cab1aa2ceb3a1013e2b5d3eb261d6729af184 docs/models/resourceheartbeat.md: id: a11ea71a67e4 - last_write_checksum: sha1:1a652cf20a09b72718ecd2f6ab1312cdec2b9f93 + last_write_checksum: sha1:16baad6761bab17b3dc8daacad1a26cfe6ad8b30 pristine_git_object: a5856bd43cb51114ebc22860260b820e04b019ba docs/models/resourceheartbeatbackendenum.md: id: 677bb0cd7965 @@ -17542,10 +18925,24 @@ trackedFiles: id: 4074a30b194e last_write_checksum: sha1:be894791be53d971a2a3191ee0d6f9cdf27fc3ad pristine_git_object: c933008444bbb596175710ae94ad31875f8b2ec4 + docs/models/resourceheartbeatstatus66.md: + last_write_checksum: sha1:227cca574c0bfd29e36edb7fae9fcdb9f646e507 + docs/models/resourceheartbeatstatus67.md: + last_write_checksum: sha1:97f62cdfa2eaff7a7c7b102b70d553bf6015d000 + docs/models/resourceheartbeatstatus68.md: + last_write_checksum: sha1:650fe2d6760a8c03e4fe3e41027a3b94cee5165d + docs/models/resourceheartbeatstatus69.md: + last_write_checksum: sha1:ec201da6c5de0a50032b812593e71498eba52523 docs/models/resourceheartbeatstatus7.md: id: 7d642b0e2196 last_write_checksum: sha1:4a819e6e7474ee6e6584b42c8adc4116053a74f7 pristine_git_object: 7ccf30c0879c0e6259a26b2b19f90da2a1610cc9 + docs/models/resourceheartbeatstatus70.md: + last_write_checksum: sha1:7daac9319789b0f6f41011b88cf80ab6bcc337e4 + docs/models/resourceheartbeatstatus71.md: + last_write_checksum: sha1:3a2cc06eaa40aca11b7d99e12bd9b701393ddf7c + docs/models/resourceheartbeatstatus72.md: + last_write_checksum: sha1:f5e689a625fa05af81f3a85ed53a0a46a59ff1b2 docs/models/resourceheartbeatstatus8.md: id: d43edbdfa578 last_write_checksum: sha1:30d7f354799fb746145d5d58ad632bc8f2b38a50 @@ -17582,6 +18979,8 @@ trackedFiles: id: b694540a5b1e last_write_checksum: sha1:4deeed125274abfa9367d7d61f57f29dfa74419b pristine_git_object: a76fd3bfe053e4ad29383da8c6c9367b7b4f39f4 + docs/models/rollout.md: + last_write_checksum: sha1:e2605a66cc3ec09a081016b0d0aa6bb3b0ac4f76 docs/models/rotatemachinesjointokenresponse.md: id: d800ce073c45 last_write_checksum: sha1:89dabb23ddc2b27af8f6ee2cd29cb6db5e389d7a @@ -17606,10 +19005,6 @@ trackedFiles: id: c7d8338540ba last_write_checksum: sha1:5c28471f5b0c4500d3fc10d607ac9c84f48a8047 pristine_git_object: 235e0c8ab041f1d669df7e2a5a4ac66dfd605b77 - docs/models/scopeenum.md: - id: 93ef23bc79c5 - last_write_checksum: sha1:485233dc5a82f26b1d83ffae0fc6839f336798e1 - pristine_git_object: 538463551cdfdc3599877a459523506d93dce369 docs/models/secondaryendpoints.md: id: 0ac00f80b203 last_write_checksum: sha1:eb8b43bf29aa8ae183dd4cc288ef6526ba648278 @@ -17634,6 +19029,8 @@ trackedFiles: id: 24d45508cc12 last_write_checksum: sha1:dbbf4105c4a120cc4c8c168216916acc897b4be7 pristine_git_object: 637435568b6d7f906e1866ef6c19dabaacd3b6da + docs/models/setdeploymentgroupexternalidrequest.md: + last_write_checksum: sha1:5214853d344e09e3c6ce7b055a4dac52c1cf513f docs/models/setfirstpartydeploymentinputsrequest.md: id: 07649e146cee last_write_checksum: sha1:5a435c0b25bcee94b5f080bd95567224e70942e6 @@ -17646,10 +19043,40 @@ trackedFiles: id: 54b48c71ea00 last_write_checksum: sha1:cd691ef0837bcba3534fc9a113c8f10f5debdbfc pristine_git_object: 69372428d4a8a7f6453acb6cdf55d419eb4fef5c + docs/models/setoperationspluginenabledrequest.md: + last_write_checksum: sha1:6181926ff3d09981832407a4a4587c46e2253745 + docs/models/setoperationspluginenabledresponse.md: + last_write_checksum: sha1:ddba258b7a7df0e92b830e93b3835c9f97f30095 docs/models/setupfingerprintinfo.md: id: 1ab1dee0cccd last_write_checksum: sha1:086207ac295127cd1f9e446193f5eb5ae824ce7c pristine_git_object: 07a9385867aa5578d1919759af9c2dbd19f5e27c + docs/models/setupitemstatus.md: + last_write_checksum: sha1:efcc1e051929927e4a842d9fc06a006582bc932f + docs/models/setupitemstatusallowedprovider.md: + last_write_checksum: sha1:085d70a506e2a6853eeafac87830d5d164779629 + docs/models/setupitemstatusblocker.md: + last_write_checksum: sha1:8ac1b0f426eb1883010083151c000a6457878fa7 + docs/models/setupitemstatusclientapi.md: + last_write_checksum: sha1:811129c829be45ce34631d99aa3d77646e3308d5 + docs/models/setupitemstatusconfiguration.md: + last_write_checksum: sha1:c1af58a30f2b773bbcb9df4986af5f194447658d + docs/models/setupitemstatusdefinitionid.md: + last_write_checksum: sha1:cc11790f32b3ab4354f06891dbec2691c2a1ef6d + docs/models/setupitemstatusitem.md: + last_write_checksum: sha1:85d6deffcdc06f18b8ec260eba3513c8e7f1ad31 + docs/models/setupitemstatusmodelrequirement.md: + last_write_checksum: sha1:2ab3f00e2c93156fbde12dd928108945b2e6083f + docs/models/setupitemstatussourcebuiltin.md: + last_write_checksum: sha1:6b1cd2de80caba0dde0f709dcffba3c8dbb557b8 + docs/models/setupitemstatussourceprojectrelease.md: + last_write_checksum: sha1:deb1d54d79756be98f4619ec37ec3fba266dd52f + docs/models/setupitemstatussourceunion.md: + last_write_checksum: sha1:10c4feaf827aa2653693d7431b0af0fc523e1223 + docs/models/setupitemstatusstatus.md: + last_write_checksum: sha1:970fdd52e6e51ae4cc50f5757244dbfccd49850f + docs/models/setuppackagesstatus.md: + last_write_checksum: sha1:9def56998045c4ee71ed7de88a3f7f8528e99659 docs/models/setupregistrationaction.md: id: be18f6eb1182 last_write_checksum: sha1:cde10764ad7fecc47747dc22236eb9683eeef6d5 @@ -17674,46 +19101,38 @@ trackedFiles: id: 23333520d3a5 last_write_checksum: sha1:3853181f20ffed79c829deab9533f070aed897a5 pristine_git_object: a00f4edb4f20cc01d88d67d3a8492bad924a4303 - docs/models/sourceunion1.md: - id: 5289348df52e - last_write_checksum: sha1:d88a109dd97148c0cea14f64c22a1ec57ce6517e - pristine_git_object: bfda2e9006d1d5ce534e83d3c23b44dc42f13e50 - docs/models/sourceunion10.md: - id: 85981772cccf - last_write_checksum: sha1:fa1e98996e13dcf1636a0463ee620093d75b277a - pristine_git_object: 85a37e17cb87428a14f0f38da978293a9454aa7b - docs/models/sourceunion2.md: - id: 1ae3653947ae - last_write_checksum: sha1:92f261e2f8c383959f9edbaeebfb398f4e1672e9 - pristine_git_object: 5c4dbad6f52af8747d15a6e16fba5c35137da437 - docs/models/sourceunion3.md: - id: 8fc62cf53bbd - last_write_checksum: sha1:87d1a3454456fbd12322bf02110cd9575e4ce925 - pristine_git_object: 09523abd6ef58f4f90108264b45766c4ae970c17 - docs/models/sourceunion4.md: - id: e7e1e457a147 - last_write_checksum: sha1:80738a40457aa33f6429bb2a301e7a44c1348560 - pristine_git_object: 9a6d974a1fa1ac8db1d1df0a755d0371dd705e70 - docs/models/sourceunion5.md: - id: d1e4cff18030 - last_write_checksum: sha1:0556c273e27d1b961464dd74d17e2b1786b7fa54 - pristine_git_object: a904bd34acba38bcebbc28176739d35d8130087e - docs/models/sourceunion6.md: - id: 6918b44fa5a7 - last_write_checksum: sha1:cfb3bdb4cd00095ae133396292b1bdff41cae18b - pristine_git_object: ac56106ac04292b64a1ccb91672133825216d635 - docs/models/sourceunion7.md: - id: facc9ee82ba6 - last_write_checksum: sha1:2c3e22e46b3320863e4b17dbd149b63d98127bc1 - pristine_git_object: b9acdce933939d02966c510e2f6fec6ab0ad52ee - docs/models/sourceunion8.md: - id: 964fc5be4c95 - last_write_checksum: sha1:1669d18459a73e6c7f5c2428eb3137baaf72fed0 - pristine_git_object: caca475363f8d8a19e7684a4027187f0473b8c05 - docs/models/sourceunion9.md: - id: 0947fb56f440 - last_write_checksum: sha1:c977c6d35e695ba76858c3504eacc7700d76f0cb - pristine_git_object: 54e3762c9013c28b4353dd6660b6668f67f32ffd + docs/models/slackchannel.md: + last_write_checksum: sha1:797e2b09fcf3c7ab977c3af065b43f25af40e26a + docs/models/slackchannelsresponse.md: + last_write_checksum: sha1:a389c04b0e797704bb9c8d3756cac158438de887 + docs/models/slackinstallurlresponse.md: + last_write_checksum: sha1:6963615df4d7485dfe6f6f219a88208d966f2a01 + docs/models/slackintegrationstatus.md: + last_write_checksum: sha1:3c257972430d847d56dd5574867ac16d1c25eb25 + docs/models/slacknotificationchannelrequest.md: + last_write_checksum: sha1:cd3bb3368c33246aa28768e241bcac7cf5056f38 + docs/models/slacknotificationchannelresponse.md: + last_write_checksum: sha1:86bfb21a7f473dc514dc990f68ff442c805306f9 + docs/models/sourceevent1.md: + last_write_checksum: sha1:3ea43901723b95bfd943fc6b2a0d3e4ac726021c + docs/models/sourceevent10.md: + last_write_checksum: sha1:c744374437e22d8ce233841eb699a013e4e15331 + docs/models/sourceevent2.md: + last_write_checksum: sha1:3bc6b5d39486dcfc2f7aea9d3a0f1d12d0f256a4 + docs/models/sourceevent3.md: + last_write_checksum: sha1:9349aa57c48f5bec4e80ca96dbc9d29890f8510d + docs/models/sourceevent4.md: + last_write_checksum: sha1:d11eaae673c45bbaf28e8a74b730f4a5b50ef3a7 + docs/models/sourceevent5.md: + last_write_checksum: sha1:4c870fbf64e0dbbafd9a74f0ce1991513531b0a2 + docs/models/sourceevent6.md: + last_write_checksum: sha1:ed81ea59cf57399087b582e045d51217706f074b + docs/models/sourceevent7.md: + last_write_checksum: sha1:42c59e89900186d6ae92eb7b41cbadb4fb66e67f + docs/models/sourceevent8.md: + last_write_checksum: sha1:de7e38c2444f5539c5411047528162d7f9239129 + docs/models/sourceevent9.md: + last_write_checksum: sha1:420b36e3722a5b816170b4d78c5d691ea426ffb7 docs/models/stackbyplatform.md: id: e3bde2f10235 last_write_checksum: sha1:9f310a1d4895d32c575e0e0725164f32633c3c62 @@ -17732,16 +19151,12 @@ trackedFiles: pristine_git_object: 8f96bf2cf9e4fb1b1e45152ade3c51731db18e6c docs/models/stacksummary.md: id: 356dfed90985 - last_write_checksum: sha1:91410f46f5469b3a8f654961dcf028978a883cbb + last_write_checksum: sha1:c481e47c99ba8d20f2329c70281a032b4c2df5ca pristine_git_object: 1ef641386bb9ad26b03689662c6507088ca253da docs/models/stacksummaryplatform.md: id: a799bafc606a last_write_checksum: sha1:28e787cc4b2a647dfbcb13c6df52cd2d6d3f3bcf pristine_git_object: 88302ffb365f34342ae471eda0e6d959f1a8c6ea - docs/models/state.md: - id: e560b4e72643 - last_write_checksum: sha1:5500e126bf19ac9cf3990bab0a10854f74b5f330 - pristine_git_object: fcc9aa55ce9a0f630229442fed7a587e693d7c75 docs/models/statecontrollerplatformunion.md: id: 3eea951f9f9b last_write_checksum: sha1:1964295cccdaeae4e9772541ebf54174e8199b2c @@ -17750,22 +19165,10 @@ trackedFiles: id: 8bc95bf5b520 last_write_checksum: sha1:4e81c95c16216fbb8a1e315047f5538b1fe3fe83 pristine_git_object: 31f42c790502373c7c8f0ea10eccf006df0fa88a - docs/models/statenone.md: - id: 05e45f13d6e1 - last_write_checksum: sha1:3c8ac3f936e66424e6a5ec66e5c59f3f31c5883a - pristine_git_object: e7e45caf93bd4dd9afc36dce00482d5493eea7e3 - docs/models/statestarted.md: - id: fec1a2278f50 - last_write_checksum: sha1:d1ade0741064c77eec180dc2b46ac18a3ab7bbc1 - pristine_git_object: a6710e86010e829f4efae0e46acea149d471b8b5 docs/models/statestatus.md: id: 372c2a63a34c last_write_checksum: sha1:6429ce0d511b481e310685f6885411f6ca29eab9 pristine_git_object: 7f87bb467983f46232076ac62137317dba8fe7a2 - docs/models/statesuccess.md: - id: a822d40f6fc8 - last_write_checksum: sha1:76322911b9e5b5a15aa0a2e91e6c4661238d45f9 - pristine_git_object: 3e7d24302f73e88061d9ea95123ed82e438b907e docs/models/statuslifecycle1.md: id: 728712de33e0 last_write_checksum: sha1:0cf5c3815519f3757a798ff0bf3c68467f20249b @@ -18014,10 +19417,24 @@ trackedFiles: id: 4fe24976eca6 last_write_checksum: sha1:9b8216445a18202777ea268a23cbec9bcb67f997 pristine_git_object: 90d7aedc31786c5c40a23c0c8edafa1e413f06d1 + docs/models/statuslifecycle66.md: + last_write_checksum: sha1:e53803018a71f79668115eebd498eccb46d31e16 + docs/models/statuslifecycle67.md: + last_write_checksum: sha1:9009852c13b44477f4fa7fcb4adf2f2a90ba0c0d + docs/models/statuslifecycle68.md: + last_write_checksum: sha1:92747525257d983b93174295fbf67f2b0c64525b + docs/models/statuslifecycle69.md: + last_write_checksum: sha1:5093d256e9b48e644240b5b34666848fb5f18767 docs/models/statuslifecycle7.md: id: 385bd757cd40 last_write_checksum: sha1:8a169c70a74b202c97dea76a02ce4cd318780dbf pristine_git_object: d54f4f2b354ebedbd882bddddee51d46a1d65b43 + docs/models/statuslifecycle70.md: + last_write_checksum: sha1:a0ff5e548495c11f73bf8357c76cc790c160298c + docs/models/statuslifecycle71.md: + last_write_checksum: sha1:629ccb4fa15a6b5d22a792a3887257afd2b99fe8 + docs/models/statuslifecycle72.md: + last_write_checksum: sha1:40255ed89307fe8af4504b9e9a755b5440010cda docs/models/statuslifecycle8.md: id: 6eb751b588e0 last_write_checksum: sha1:db65b390206d66e4caa218318055a3ad86d86f90 @@ -18274,6 +19691,14 @@ trackedFiles: id: dc0d2d2f4fbb last_write_checksum: sha1:5c5f4bb83856fc9ef6d9eab473c88735e02e5257 pristine_git_object: f8ca70f60928d3958f9a4bd3b79b5b3e019ec2f6 + docs/models/statusseverity66.md: + last_write_checksum: sha1:77f1c23693624d50990abd6bb47b0f29b50e278c + docs/models/statusseverity67.md: + last_write_checksum: sha1:39e3d3b1ac426f3833f969afb39c968c7fc26f48 + docs/models/statusseverity68.md: + last_write_checksum: sha1:fc8d292c8bf15ec1410945d18cee1a9b2e30e7f7 + docs/models/statusseverity69.md: + last_write_checksum: sha1:d4c977f7d6e93b9b182cb455047e455d24c8dda3 docs/models/statusseverity7.md: id: dac3357d5015 last_write_checksum: sha1:f1c8881f540455e9e8d41f0134b048a5920a89fd @@ -18318,13 +19743,25 @@ trackedFiles: id: 5f888891b0d2 last_write_checksum: sha1:a19872879a5beaa6b982df87a5b0b75ac88c1922 pristine_git_object: 0adcde8c5bea03056a46018747274ab90551d41f + docs/models/summary.md: + last_write_checksum: sha1:3b3f96d0f57ed876de0af322f68f8440f9d53499 + docs/models/summarybuckets.md: + last_write_checksum: sha1:11bc0b6b4892ed957ecbc76383071be6f06b32ce + docs/models/summarycapabilities.md: + last_write_checksum: sha1:e1b81ad2529dad6df25bbeb6c49efd28bbb4dffb + docs/models/summarykeys.md: + last_write_checksum: sha1:a550fc33ef8696316312085ef52aea2961a08892 + docs/models/summarymodels.md: + last_write_checksum: sha1:4b311b5671a9e0c551d1b9563f3a1f8a4139203f + docs/models/summaryregistry.md: + last_write_checksum: sha1:efe63e8950d6cba83d2bbb32d6980b3fa39ca075 docs/models/supportedcloudregions.md: id: 4f23b3a0a96b last_write_checksum: sha1:b7b011db777746da3ff996621c0222dd3a172df6 pristine_git_object: 7ac0453750ba476b7c2f4d55d1c5baa52f17f8be docs/models/syncacquirerequest.md: id: 690347406a0c - last_write_checksum: sha1:b76ccf1fdbfda8896b91c9e4e7d52864c5840626 + last_write_checksum: sha1:b0f07b39d2bb8d42c47cb20a197e775def8ccfce pristine_git_object: 5fb33b488b8aa5bb9671c50a81d65e3cc9adb1d8 docs/models/syncacquirerequestdeploymentmodel.md: id: 0f98ce200836 @@ -18340,7 +19777,7 @@ trackedFiles: pristine_git_object: e2c0d90cf5052b0b83af475088656c74a2f131a3 docs/models/syncacquireresponse.md: id: 33407194b9da - last_write_checksum: sha1:cf4ebeaa25e529d1c9102f2faaade46c93a9f642 + last_write_checksum: sha1:b2679f1e3b8dc286494d9afb5acfb3c91681b396 pristine_git_object: 08bb4853e67d5d366586a8e8d8a2bba961f4efc6 docs/models/syncacquireresponsedeployment.md: id: 1ac9e677bef8 @@ -18382,6 +19819,12 @@ trackedFiles: id: 2bcc70c0962c last_write_checksum: sha1:22d96339189bc15cfe825844fa697272557aa16d pristine_git_object: b67e6096079421b3d37ef763337224956864f6d1 + docs/models/syncacquireresponsedeploymentapikey.md: + last_write_checksum: sha1:f2151df2126535f27c27c3bd3cb242af0e046959 + docs/models/syncacquireresponsedeploymentapikeysecretref.md: + last_write_checksum: sha1:aa9807f232198efc77000b90c480e559a62b131e + docs/models/syncacquireresponsedeploymentapikeyunion.md: + last_write_checksum: sha1:14fa052a037c1ca8d7fa815a48e9b80328ead09c docs/models/syncacquireresponsedeploymentawsstacksettings.md: id: 7aa1e96e8328 last_write_checksum: sha1:713e987341c44acdc5bc289547510ad47796ee12 @@ -18548,7 +19991,7 @@ trackedFiles: pristine_git_object: fa6432708270918873f074b001fb1532d499e198 docs/models/syncacquireresponsedeploymentconfig.md: id: 5cbd7f841434 - last_write_checksum: sha1:626f9fd4f0f250053ff6ded8e2de51b1ce493734 + last_write_checksum: sha1:1090246c2bd69d33b08eb643ffeed410e353a427 pristine_git_object: d066f47b69d7c8fafc1a582c3aba483b591da20d docs/models/syncacquireresponsedeploymentconfigplatformaws.md: id: b2f3d73e22de @@ -18968,7 +20411,7 @@ trackedFiles: pristine_git_object: 23a18b5efdf933c48a4343cbcd82c92dbad6806d docs/models/syncacquireresponsedeploymentcurrentreleaseresources.md: id: 3124bfd3d9c7 - last_write_checksum: sha1:dd4962de51471f8005a03335a305993d3fb13a44 + last_write_checksum: sha1:fbda9240adfed4d8fcbcd27a0ff3a0ddc1be8000 pristine_git_object: c0617126bcf8f0a949b2f1a1db2b3d9c8c358f3d docs/models/syncacquireresponsedeploymentcurrentreleasestack.md: id: c4bf0e3c02b3 @@ -19274,6 +20717,8 @@ trackedFiles: id: 48e0fbe50436 last_write_checksum: sha1:afbd30776f58ffa7c22fdcdef8e7af8a9b6d948a pristine_git_object: d35607d7662a5a68c44a75567e8ad02757b64a4e + docs/models/syncacquireresponsedeploymentexternalbindingsai.md: + last_write_checksum: sha1:70e645552f3de4eeb3e2cd68397d72172c39891b docs/models/syncacquireresponsedeploymentexternalbindingsaurora.md: id: f244cc9b3db1 last_write_checksum: sha1:b685c60509a60e9296c9f66e884c0119c93598bd @@ -19284,7 +20729,7 @@ trackedFiles: pristine_git_object: 5fe91dd3d8f7dcccf3c38140601003ec956e532c docs/models/syncacquireresponsedeploymentexternalbindingscloudsql.md: id: 84b2171c22f5 - last_write_checksum: sha1:8c3e9fc98e7d7dfa19a39d47d9aae26d159680bb + last_write_checksum: sha1:1fd4064dcff35fcb4840ec15082ec5ea03e7349d pristine_git_object: 55eef0a202a687830169b5cecb8f75704ef8882b docs/models/syncacquireresponsedeploymentexternalbindingscontainerappsenvironment.md: id: 884f7bd5a82c @@ -19300,7 +20745,7 @@ trackedFiles: pristine_git_object: 5c0b0c83400b5b758840b1c66c5a6356d0fad8bd docs/models/syncacquireresponsedeploymentexternalbindingsexternal.md: id: 805661cf78fc - last_write_checksum: sha1:91be95a791e5ea3b884031bcbf43cb1aca0808e3 + last_write_checksum: sha1:c2eab7e40e0ba70eadb438417e5f69c6f0f91172 pristine_git_object: e8dc3bbeaf24b90e64a1676c4f563946d63ad647 docs/models/syncacquireresponsedeploymentexternalbindingsfirestore.md: id: 9f7adb7eeca8 @@ -19408,8 +20853,16 @@ trackedFiles: pristine_git_object: 8db5edbe2da89f9449fa3bfa76468d5e946550b9 docs/models/syncacquireresponsedeploymentexternalbindingsunion7.md: id: 96f11507979d - last_write_checksum: sha1:079907009dcb0dbb55e2d658483f323e3ce6c6bd + last_write_checksum: sha1:4749e6dafd7c5bbcb81ca5e5d63c2ccc2d11b5a9 pristine_git_object: 96cafb548b0f97c37cc09a343be6de0da7e1158a + docs/models/syncacquireresponsedeploymentfailuredomains1.md: + last_write_checksum: sha1:e7ef879cd0f0633a847ba09054807ba415bd9267 + docs/models/syncacquireresponsedeploymentfailuredomains2.md: + last_write_checksum: sha1:2ae86bff4c95024c372aa3799d51fcb71f5d66f5 + docs/models/syncacquireresponsedeploymentfailuredomainsunion1.md: + last_write_checksum: sha1:630b6702bdf25a03dc6568584a92c09fdfdade38 + docs/models/syncacquireresponsedeploymentfailuredomainsunion2.md: + last_write_checksum: sha1:ce686adcc77c5ba2655069e7e26e980f025c1767 docs/models/syncacquireresponsedeploymentgcpimages.md: id: 4fb941b8c65b last_write_checksum: sha1:95c6dda778fd9399fb4641de91181d3ff3030dc4 @@ -19506,6 +20959,8 @@ trackedFiles: id: b5fcc095baac last_write_checksum: sha1:f9fc2a772d8a7820895380f662e08ede04627f4a pristine_git_object: 154b2922ce3a58e88618ee6a9e85a8eb06af2430 + docs/models/syncacquireresponsedeploymentinitialsetupauthority.md: + last_write_checksum: sha1:d64ce1a86943a7f7b0c169d37bfda451c394204e docs/models/syncacquireresponsedeploymentkeyprefix1.md: id: 8e8deb1a7ad9 last_write_checksum: sha1:e5ca50d874ff03d3eaef4e3165fca523f492f607 @@ -19678,6 +21133,204 @@ trackedFiles: id: 03f44b43fa65 last_write_checksum: sha1:c7c7fce692db4672f21334e1c487f0e0aba931a0 pristine_git_object: 660b4be6886aef5ca04ef2cef64c3ef7989a99b7 + docs/models/syncacquireresponsedeploymentpendingpreparedstack.md: + last_write_checksum: sha1:62c4c4b896e7e06ae6f870e71a54194382082ef9 + docs/models/syncacquireresponsedeploymentpendingpreparedstackconfig.md: + last_write_checksum: sha1:7c13bf2e2faa3a2cb9ae0dcab9365e7ad1ba1065 + docs/models/syncacquireresponsedeploymentpendingpreparedstackdefaultboolean.md: + last_write_checksum: sha1:ab9e2ea2d2e16084de84609501fe99704dee3494 + docs/models/syncacquireresponsedeploymentpendingpreparedstackdefaultnumber.md: + last_write_checksum: sha1:5ab73dbcae86b29016a80ecdd8d23ef0b19472fd + docs/models/syncacquireresponsedeploymentpendingpreparedstackdefaultstring.md: + last_write_checksum: sha1:635d761b523faba0002eaeedd5c187254edeccf0 + docs/models/syncacquireresponsedeploymentpendingpreparedstackdefaultstringlist.md: + last_write_checksum: sha1:33d201bda4f18f6c93773b76e073249ac7e9fa2b + docs/models/syncacquireresponsedeploymentpendingpreparedstackdefaultunion.md: + last_write_checksum: sha1:1cfead6076c8674fcb2ac4b36338e3a4b4931619 + docs/models/syncacquireresponsedeploymentpendingpreparedstackdependency.md: + last_write_checksum: sha1:199589986e9d28e1a5c69d22742e90eb5850039c + docs/models/syncacquireresponsedeploymentpendingpreparedstackenv.md: + last_write_checksum: sha1:42f49c511295a76e3b1c1a1eb30b2c14299bc477 + docs/models/syncacquireresponsedeploymentpendingpreparedstackextend.md: + last_write_checksum: sha1:ea60ef3954f541a3b66cffbeb30645affde36780 + docs/models/syncacquireresponsedeploymentpendingpreparedstackextendaw.md: + last_write_checksum: sha1:0dc0b3a150eaa177c04db726ad40b64e8e27b9d3 + docs/models/syncacquireresponsedeploymentpendingpreparedstackextendawbinding.md: + last_write_checksum: sha1:ef0f209c7b3ad1a44caa2e00da044261d43b4b45 + docs/models/syncacquireresponsedeploymentpendingpreparedstackextendawgrant.md: + last_write_checksum: sha1:9113f91b3dcf93259ec1aad061a1d10a66b86d78 + docs/models/syncacquireresponsedeploymentpendingpreparedstackextendawresource.md: + last_write_checksum: sha1:103e696b4afcedd304ab1bd39a4f5d979d05d1b0 + docs/models/syncacquireresponsedeploymentpendingpreparedstackextendawstack.md: + last_write_checksum: sha1:6c5ec123cab163e28aca1c22dbeff050667bc780 + docs/models/syncacquireresponsedeploymentpendingpreparedstackextendazure.md: + last_write_checksum: sha1:0d762cca24fd458dad518f484cee9991525e3586 + docs/models/syncacquireresponsedeploymentpendingpreparedstackextendazurebinding.md: + last_write_checksum: sha1:54859304e40e987efc73a5785d5c8ea7feb98ad7 + docs/models/syncacquireresponsedeploymentpendingpreparedstackextendazuregrant.md: + last_write_checksum: sha1:334840ce5cbc5730ef1e881334ed03d2c9d0e016 + docs/models/syncacquireresponsedeploymentpendingpreparedstackextendazureresource.md: + last_write_checksum: sha1:00ca4d2139ceae90d10402e3bae9305f33946d73 + docs/models/syncacquireresponsedeploymentpendingpreparedstackextendazurestack.md: + last_write_checksum: sha1:c78ba9f9cdb1bca5c449a6dce9b94b07bf875397 + docs/models/syncacquireresponsedeploymentpendingpreparedstackextendconditionresource.md: + last_write_checksum: sha1:9b4977ac16fc5ad5d7d3ca485f47c53e5a430b95 + docs/models/syncacquireresponsedeploymentpendingpreparedstackextendconditionstack.md: + last_write_checksum: sha1:4f582c9395b7cb84fe2ab345c8b69cf7e303e0a1 + docs/models/syncacquireresponsedeploymentpendingpreparedstackextendeffect.md: + last_write_checksum: sha1:4dafbd6035c26285a7a4f11a4a8ede93424ebd70 + docs/models/syncacquireresponsedeploymentpendingpreparedstackextendgcp.md: + last_write_checksum: sha1:eccb9f2fbbdd8d57e867b1fc723ca4227863baa8 + docs/models/syncacquireresponsedeploymentpendingpreparedstackextendgcpbinding.md: + last_write_checksum: sha1:61612dc2b9798d91f0b748525e3d00ad819bf231 + docs/models/syncacquireresponsedeploymentpendingpreparedstackextendgcpgrant.md: + last_write_checksum: sha1:ef71af227217591459f9f85544d57d5d4d66ac72 + docs/models/syncacquireresponsedeploymentpendingpreparedstackextendgcpresource.md: + last_write_checksum: sha1:9166f97fd966a968389b17342687ef5644f10e6e + docs/models/syncacquireresponsedeploymentpendingpreparedstackextendgcpstack.md: + last_write_checksum: sha1:920d1eb91992cfb15fe720bf30c5a89b7e410753 + docs/models/syncacquireresponsedeploymentpendingpreparedstackextendplatforms.md: + last_write_checksum: sha1:c0f41e5dd650d6e08877b7f089344951bd4f1fca + docs/models/syncacquireresponsedeploymentpendingpreparedstackextendresourceconditionunion.md: + last_write_checksum: sha1:cdbc70b1eb55096cc075c4dbebd1b8b8f7ae7542 + docs/models/syncacquireresponsedeploymentpendingpreparedstackextendstackconditionunion.md: + last_write_checksum: sha1:febf0738a492267b5651f3798461b771118617a9 + docs/models/syncacquireresponsedeploymentpendingpreparedstackextendunion.md: + last_write_checksum: sha1:0e387c6967e7d506ce291bd7c4561c0f514c967d + docs/models/syncacquireresponsedeploymentpendingpreparedstackinput.md: + last_write_checksum: sha1:a53cb2a5c565c2852599b015c1c7dbb852417f62 + docs/models/syncacquireresponsedeploymentpendingpreparedstackkind.md: + last_write_checksum: sha1:b62b83916a884c7a2ad218d1be07168fb0dd2ec3 + docs/models/syncacquireresponsedeploymentpendingpreparedstacklifecycle.md: + last_write_checksum: sha1:4d38bd2c8d237e282cf498a29c2450e775525ba3 + docs/models/syncacquireresponsedeploymentpendingpreparedstackmanagement1.md: + last_write_checksum: sha1:cfd7d309f5e66c42114e06766abc80d709fb5e03 + docs/models/syncacquireresponsedeploymentpendingpreparedstackmanagement2.md: + last_write_checksum: sha1:fff2afc2d8bb2ff2d601cdb378a747ebd52ca6bc + docs/models/syncacquireresponsedeploymentpendingpreparedstackmanagementenum.md: + last_write_checksum: sha1:91bf255266d2672d127f6a0b5d4d69c24f200203 + docs/models/syncacquireresponsedeploymentpendingpreparedstackmanagementunion.md: + last_write_checksum: sha1:6b5221acd8c942649269692bd5ce11fa0297fdc6 + docs/models/syncacquireresponsedeploymentpendingpreparedstackoverride.md: + last_write_checksum: sha1:6b0c69dbd2ec182897a1820ae90d63eb9c18c928 + docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideaw.md: + last_write_checksum: sha1:286f1bba137b6e2500e12e8966968a29266acd25 + docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideawbinding.md: + last_write_checksum: sha1:9095e9bfe04a80f902bc4330c9ab976fc22c2177 + docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideawgrant.md: + last_write_checksum: sha1:51eac5b21db0d6eb4eb1a37fd646891b0781a697 + docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideawresource.md: + last_write_checksum: sha1:63115cf08fa2ea1e35466f2a8f0964ad617511df + docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideawstack.md: + last_write_checksum: sha1:554218c187392c1e8728cb12e058aea1c6016fd1 + docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideazure.md: + last_write_checksum: sha1:0f20d308a4e4a7f91612a71ea2599780109d2bef + docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideazurebinding.md: + last_write_checksum: sha1:770899c62adbc20b04f9c6421377ab969dc9a969 + docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideazuregrant.md: + last_write_checksum: sha1:73aafa8627cf2620f13060e1de3a655105d9fd6a + docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideazureresource.md: + last_write_checksum: sha1:c96485b874932cb618d9d3ac7e1351933110e385 + docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideazurestack.md: + last_write_checksum: sha1:6938f4e924727c0ae6a4b613d690735b1c2e7a22 + docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideconditionresource.md: + last_write_checksum: sha1:f0d4ba3a4f09a23396c7a215653b8509a8b43691 + docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideconditionstack.md: + last_write_checksum: sha1:02632c91220a94cc06bbea118257807880247503 + docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideeffect.md: + last_write_checksum: sha1:18221d46f06154a4e5aa2dac884087bd402c3b08 + docs/models/syncacquireresponsedeploymentpendingpreparedstackoverridegcp.md: + last_write_checksum: sha1:2ac992e17ed728146aba3f0736c72e54b547ae19 + docs/models/syncacquireresponsedeploymentpendingpreparedstackoverridegcpbinding.md: + last_write_checksum: sha1:a51802bcccba6d96fca742be576b9502989ea26f + docs/models/syncacquireresponsedeploymentpendingpreparedstackoverridegcpgrant.md: + last_write_checksum: sha1:4c9cff1ac6d47d62989f7699b3e63aebe50bf107 + docs/models/syncacquireresponsedeploymentpendingpreparedstackoverridegcpresource.md: + last_write_checksum: sha1:fe3561fc03b2736cc9e7e7192e571886deeb7e25 + docs/models/syncacquireresponsedeploymentpendingpreparedstackoverridegcpstack.md: + last_write_checksum: sha1:5dedbf65ed8e6361bdf39b0d17cf2ac09ab284c7 + docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideplatforms.md: + last_write_checksum: sha1:f03091a18e366d7a425b5a2fb7aa923d8430328c + docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideresourceconditionunion.md: + last_write_checksum: sha1:df29a490cdd3080067078e809ebb52ebf97f8065 + docs/models/syncacquireresponsedeploymentpendingpreparedstackoverridestackconditionunion.md: + last_write_checksum: sha1:042514bce24defe550374b961cf77bf3d46177c5 + docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideunion.md: + last_write_checksum: sha1:868a56c0fff52d4bb78dc36a86da4b3630369555 + docs/models/syncacquireresponsedeploymentpendingpreparedstackpermissions.md: + last_write_checksum: sha1:48fef78c3591a18dec7b70385176d332e5532bdf + docs/models/syncacquireresponsedeploymentpendingpreparedstackplatform.md: + last_write_checksum: sha1:206f3a73dc6c30e52e2be683f4b6bbe86ca5da79 + docs/models/syncacquireresponsedeploymentpendingpreparedstackprofile.md: + last_write_checksum: sha1:3a304d5fa0b5c76f2f35dad29beae106c189db39 + docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileaw.md: + last_write_checksum: sha1:de47b629c20a3294eb0b01f412e9ba834c498c9d + docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileawbinding.md: + last_write_checksum: sha1:88ba16da67bd462089f0ea5bdbea445e4d0cedcd + docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileawgrant.md: + last_write_checksum: sha1:66b5cc719d2c8ccd53bfc7851cc7ce9cffca7841 + docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileawresource.md: + last_write_checksum: sha1:d97711cf52d0b8884e148f2babfcd23c4ea3c471 + docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileawstack.md: + last_write_checksum: sha1:8f82efe38dfccc393b2a5086ae5d1e322d44682d + docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileazure.md: + last_write_checksum: sha1:cf863ac96cac55233386dcf51a6847b073ec7752 + docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileazurebinding.md: + last_write_checksum: sha1:32ff87cbf896a323b9bf9d6306a068e9051a5213 + docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileazuregrant.md: + last_write_checksum: sha1:842aa04bbf51adc026629a9dd04f0cbcbe2fbfe7 + docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileazureresource.md: + last_write_checksum: sha1:ee73be7bf817eb4c2cb3a197960e03f519e06be2 + docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileazurestack.md: + last_write_checksum: sha1:e1416f8c408a93126d382c8997afc61c2e1aa766 + docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileconditionresource.md: + last_write_checksum: sha1:4577c0f0ab65eb508641e0774771f37c9cf14e00 + docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileconditionstack.md: + last_write_checksum: sha1:b3e3938cb51a1c19629473a207ac63a992446458 + docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileeffect.md: + last_write_checksum: sha1:ba49a3ce6ccd45ab1e4079b5675f1ae73c705665 + docs/models/syncacquireresponsedeploymentpendingpreparedstackprofilegcp.md: + last_write_checksum: sha1:556131cdd24e78fe180a55252b0ee7493675133d + docs/models/syncacquireresponsedeploymentpendingpreparedstackprofilegcpbinding.md: + last_write_checksum: sha1:bb629ae92150556549ce28fb782e7a96ce3dc9b9 + docs/models/syncacquireresponsedeploymentpendingpreparedstackprofilegcpgrant.md: + last_write_checksum: sha1:07e51def84252f28267369fa3f947ef4fde1526d + docs/models/syncacquireresponsedeploymentpendingpreparedstackprofilegcpresource.md: + last_write_checksum: sha1:272a59d1dd84d951113df276439ce4221041a4ce + docs/models/syncacquireresponsedeploymentpendingpreparedstackprofilegcpstack.md: + last_write_checksum: sha1:647b5a5b282682756b2681f160ebbac0da0a812a + docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileplatforms.md: + last_write_checksum: sha1:e5195d5db2285dc81ad1349de96f38f493421b37 + docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileresourceconditionunion.md: + last_write_checksum: sha1:5ab17c767f8b3acab540afc0f4acaf0abfcd7787 + docs/models/syncacquireresponsedeploymentpendingpreparedstackprofilestackconditionunion.md: + last_write_checksum: sha1:4fb532e1da7f03d221de0cfd0f9afe24d400317e + docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileunion.md: + last_write_checksum: sha1:568ec8500ea00e4b2f20dbddbda467748807ff62 + docs/models/syncacquireresponsedeploymentpendingpreparedstackprovidedby.md: + last_write_checksum: sha1:88d6136cda292f4bd28834269f7f2956c35cfbb9 + docs/models/syncacquireresponsedeploymentpendingpreparedstackresources.md: + last_write_checksum: sha1:55a0b3ec38dca83a90548909e6e8b0a1dc511ca1 + docs/models/syncacquireresponsedeploymentpendingpreparedstacksupportedplatform.md: + last_write_checksum: sha1:f2abbcc83339a4f0c49c535acb0e4a7f313d5a28 + docs/models/syncacquireresponsedeploymentpendingpreparedstacktypeboolean.md: + last_write_checksum: sha1:04b89e45e02104b3ae9f94d7a68b196d51bfdb30 + docs/models/syncacquireresponsedeploymentpendingpreparedstacktypeenvenum.md: + last_write_checksum: sha1:edb90792fc3321388c85910ad95f97848af5451e + docs/models/syncacquireresponsedeploymentpendingpreparedstacktypenumber.md: + last_write_checksum: sha1:88ef3ad7e40aed77df7a9d848dbf16b89c244738 + docs/models/syncacquireresponsedeploymentpendingpreparedstacktypestring.md: + last_write_checksum: sha1:fa080013f6f689235d7d38f7dbe578dc159a0091 + docs/models/syncacquireresponsedeploymentpendingpreparedstacktypestringlist.md: + last_write_checksum: sha1:d689bb45ce2e06075f84f0359f12821bd2b1fc0e + docs/models/syncacquireresponsedeploymentpendingpreparedstacktypeunion.md: + last_write_checksum: sha1:b06bdbd93210c2c90b68ba1e46afe77c35e22917 + docs/models/syncacquireresponsedeploymentpendingpreparedstackunion.md: + last_write_checksum: sha1:3285fb29c444cf9467b3f02c66db3f59def291ee + docs/models/syncacquireresponsedeploymentpendingpreparedstackvalidation.md: + last_write_checksum: sha1:21639897aff95c513462d500112ecbbf3ce029ed + docs/models/syncacquireresponsedeploymentpendingpreparedstackvalidationunion.md: + last_write_checksum: sha1:357fad6c2d181515492800b4c6ad5c6b22fd97b7 docs/models/syncacquireresponsedeploymentplatformkubernetes.md: id: f0861dfe0f54 last_write_checksum: sha1:e26415c5007cbfeac61af9ed72aadd2ce3656faa @@ -19692,11 +21345,11 @@ trackedFiles: pristine_git_object: 22b64e6e41c6d3507cab6179ee6c7fd046bb920f docs/models/syncacquireresponsedeploymentpoolsautoscale.md: id: 98a651c04c5c - last_write_checksum: sha1:2fa00c99a5eb65c22396349f0e2bc0fe15a042cd + last_write_checksum: sha1:2e57b3b748531dbeb829dd28031c8ade9c80572e pristine_git_object: 7e2e5214d1c743be9cb549d7e9034be058bd72d6 docs/models/syncacquireresponsedeploymentpoolsfixed.md: id: b6d3e243ea78 - last_write_checksum: sha1:165c97a967d08d5bb53c6f09355fd33ac7afce00 + last_write_checksum: sha1:f19ddcf0b66b54db0093445e47214475b41de691 pristine_git_object: dcbf4ac1512493156f6bd56bbcbaa688876ea030 docs/models/syncacquireresponsedeploymentpoolsunion.md: id: a67ed1c4e997 @@ -20116,7 +21769,7 @@ trackedFiles: pristine_git_object: 2436d8c74b7c64aa297304ea1a67b4c6a5a1cc93 docs/models/syncacquireresponsedeploymentpreparedstackresources.md: id: d7c61cb46db5 - last_write_checksum: sha1:e01609219005d03977beadb5dfb76ecc3b4d4b77 + last_write_checksum: sha1:c1c5c684e7566d507dbce12bc743d002f2588cd6 pristine_git_object: 68a040394f248b2ca508b09eb9778c8c5ec0dc66 docs/models/syncacquireresponsedeploymentpreparedstacksupportedplatform.md: id: 1a6680852cb6 @@ -20512,12 +22165,24 @@ trackedFiles: pristine_git_object: 557d8d6e9d46e585a2a7d6d465b92e674f1dfa6a docs/models/syncacquireresponsedeploymentruntimemetadata.md: id: bc02f64dd801 - last_write_checksum: sha1:7dcf92b43a238894a6c35c686018b023c5a7d190 + last_write_checksum: sha1:5a6bcc5c1a34313810f37208f946347d530fe3c5 pristine_git_object: b010fd0d7111901a1d59741b54cf2fbfc7b46100 docs/models/syncacquireresponsedeploymentruntimemetadataunion.md: id: dc95f572d991 last_write_checksum: sha1:e79683ef7808ec0a76eca643681dfb3b8df21163 pristine_git_object: 72a5d1095ee8a126da0d67c82851cbb096d689ae + docs/models/syncacquireresponsedeploymentservercacertificates.md: + last_write_checksum: sha1:1ef4a3390c0d994b4781003ae88999c17dc401ce + docs/models/syncacquireresponsedeploymentservercacertificatessecretref.md: + last_write_checksum: sha1:2617432e0615e68da0a1402b2cf910ad08223ee9 + docs/models/syncacquireresponsedeploymentservercacertificatesunion.md: + last_write_checksum: sha1:632acaf1a6e3290f5dd99694031a3aa77363c494 + docs/models/syncacquireresponsedeploymentsetupupdateauthorization.md: + last_write_checksum: sha1:492ee4c2a78edc0d4e1f03c17dc3f1eafc315c72 + docs/models/syncacquireresponsedeploymentsetupupdateauthorizationunion.md: + last_write_checksum: sha1:fd059bd6d6633461ca1c53122b39cf33d7a0bc74 + docs/models/syncacquireresponsedeploymentsslmode.md: + last_write_checksum: sha1:c995b9dac23fbfea9d4f2f8a305f151d12112fda docs/models/syncacquireresponsedeploymentstacksettings.md: id: f9634456a469 last_write_checksum: sha1:3866fb12d5e5decaaf598478c15a7153c329c4f1 @@ -20992,7 +22657,7 @@ trackedFiles: pristine_git_object: 796cd544ac997f2356bd9823cb0a57afe2ca46dd docs/models/syncacquireresponsedeploymenttargetreleaseresources.md: id: a307c72910ed - last_write_checksum: sha1:51824ff80e66c60692b2d3507fb7a10b6af0496b + last_write_checksum: sha1:db2f1736f089d2dd210fe6b424a29437d41069f2 pristine_git_object: 81c49f55420685bfe31e85e1c8ecd8229387fc92 docs/models/syncacquireresponsedeploymenttargetreleasestack.md: id: f3451686d876 @@ -21058,6 +22723,8 @@ trackedFiles: id: c046e5f80504 last_write_checksum: sha1:a48dff0cb41e6388266764213cc9bd0f4f518c2e pristine_git_object: 2d1bbcb5f6d3afee82c73f571d1b168c6910296f + docs/models/syncacquireresponsedeploymenttypeai.md: + last_write_checksum: sha1:ef31691de70668d28077ef7011ea00e5781166dc docs/models/syncacquireresponsedeploymenttypeartifactregistry1.md: id: b6686ea92f05 last_write_checksum: sha1:868a722b4be45bfca762de2982dd4b369dd4e866 @@ -21324,7 +22991,7 @@ trackedFiles: pristine_git_object: e94dd51309bf6509fbe4d46b2eaabe7e27f096bd docs/models/synclistresponse.md: id: b32dae5c9df7 - last_write_checksum: sha1:57f1f843d14939cd40fdfc77b26ff6c3307a9558 + last_write_checksum: sha1:ef19493bbde9dbeabd4b4b38e20086a3d74bd9e7 pristine_git_object: 9796c5bdd38e92b33a6366756bc83f880971e5b0 docs/models/synclistresponseaws.md: id: 0c4db6c5cf1e @@ -21430,29 +23097,9 @@ trackedFiles: id: 0e0153f2e9c1 last_write_checksum: sha1:90aca003dc9a88163cec6a9a58ad2f75e33ef725 pristine_git_object: 6e0f32ddc269a2b4807324214e6e96ef6ad10e29 - docs/models/synclistresponsedefaultboolean.md: - id: 822059219c75 - last_write_checksum: sha1:b3bdc87f3b7c5b42008a16a3165fe522902c1eea - pristine_git_object: b2a0889bd31f756f6727ea35212068023c42b996 - docs/models/synclistresponsedefaultnumber.md: - id: 037f1adf12a1 - last_write_checksum: sha1:9ab2d85c6ad3d69d41971c42f40b162f128b1787 - pristine_git_object: d6dd25184524c79b9fe97548bd8f7e42bc65df52 - docs/models/synclistresponsedefaultstring.md: - id: eb70840becff - last_write_checksum: sha1:20e70b175a012040869e9605787de5b80dc0ed7a - pristine_git_object: 25b1dc755cacf11e12704819a0bf38104b4e4d73 - docs/models/synclistresponsedefaultstringlist.md: - id: 9e871381b316 - last_write_checksum: sha1:b17b007ff44c20da89b188a61cfad9e9277cbdd0 - pristine_git_object: 951d4a07aa781956da3a268e528748b00481ad26 - docs/models/synclistresponsedefaultunion.md: - id: d86eb365ddd1 - last_write_checksum: sha1:dea922dc50803c81426ecf6c0fa489391f5e2f32 - pristine_git_object: 0047656f46cc24ded8e80e851d5cad76892f7eec docs/models/synclistresponsedeployment.md: id: d74bef4848ee - last_write_checksum: sha1:28a664acae50420baa5da4431cdda9ee9aca5cdd + last_write_checksum: sha1:e87a6f46b9d6cdd0b743052e22016d933bc1e896 pristine_git_object: fff640a76779235249dac9a314d5d67a478ab2cc docs/models/synclistresponsedeploymentmodel.md: id: c3122380abb4 @@ -21478,10 +23125,6 @@ trackedFiles: id: 6ff9db0826e5 last_write_checksum: sha1:07331d25c8384c919e51326649b61628a895326d pristine_git_object: 2f2b79aa42a433fc031fe2b660d80b2992ebb7fa - docs/models/synclistresponseenv.md: - id: caf19ddd744a - last_write_checksum: sha1:9c8a4e180dbd4d484ff1b6e7330a0b2d9cd168b8 - pristine_git_object: f0e44e69e8f49742ee1071a081efd1704f7230fa docs/models/synclistresponseenvironmentinfoaws.md: id: 2499d212136d last_write_checksum: sha1:baac5b94b17fc77fbe1f7d7d76c11c2cc828dbde @@ -21546,102 +23189,18 @@ trackedFiles: id: 0e5d6992c8f5 last_write_checksum: sha1:26bfb4af1066c3d8798e38dd7d9ff13fddadc263 pristine_git_object: 1973534f30eac549c684531102cee2332210144a - docs/models/synclistresponseextend.md: - id: ec41d1721466 - last_write_checksum: sha1:04ccc58e3f516f0a1046850abf864c9a1f11d5b7 - pristine_git_object: 743a86a47b988d42d9b6c600272c19ba60905e72 - docs/models/synclistresponseextendaw.md: - id: 521b9831f963 - last_write_checksum: sha1:dcd5abc9aeee9c16e38e229b8b767a0b93faafde - pristine_git_object: 3f7936debb5adba2834409055dcff894e50e0cef - docs/models/synclistresponseextendawbinding.md: - id: ad99c8de1c12 - last_write_checksum: sha1:37d9a80a0ea6a8920ef4462aa88491e546b85ac0 - pristine_git_object: 51ea4792d7d02150fc6705ad5d092852b23ce5d9 - docs/models/synclistresponseextendawgrant.md: - id: 797c8aaefd73 - last_write_checksum: sha1:5782a220c63eec5a36d28c164a63eedd8c21ffe9 - pristine_git_object: 2bb849031c01f8775fa0ad59e5e336b73c98aeab - docs/models/synclistresponseextendawresource.md: - id: 467964c7e633 - last_write_checksum: sha1:274d4bf935f130b8c33757f5eeea8453a7554a1d - pristine_git_object: b2be0d1fbd22770578428981877546fc95abf331 - docs/models/synclistresponseextendawstack.md: - id: de34b0c7752a - last_write_checksum: sha1:c44f923829faa0767c9c53ee8ab70a916f58fabf - pristine_git_object: d3b13a9f287ca2d02115178f93027f225ce6cd38 - docs/models/synclistresponseextendazure.md: - id: 62c4511d269a - last_write_checksum: sha1:6a8d47f05cf955961d5ce14b147f774d5baff76f - pristine_git_object: af9ef502251948344f7febb58e84eaf29e26c13e - docs/models/synclistresponseextendazurebinding.md: - id: a981c5248a73 - last_write_checksum: sha1:c5aa851b058383779373740743c9035e1a6eb17e - pristine_git_object: d29956fb251181891470e43d5805fd090ab5ab37 - docs/models/synclistresponseextendazuregrant.md: - id: 672877fbb2d9 - last_write_checksum: sha1:4533786316d5a77fd6590bba16d5dd85611a76b0 - pristine_git_object: e1826ffb84284ab423ba662f3e279cc27bad46c0 - docs/models/synclistresponseextendazureresource.md: - id: 32788246d7e1 - last_write_checksum: sha1:b4ef4596d2356fbbb2d2b87d258615b9c8eae003 - pristine_git_object: 2a7d635e413a885950c21514be30279294f91331 - docs/models/synclistresponseextendazurestack.md: - id: c98ae1928b55 - last_write_checksum: sha1:d3a16c9996857b5a27a7d4c8a9e0d15b2ca02afa - pristine_git_object: 8e95ca2d215927369a983fd59a14154e3fa725a9 - docs/models/synclistresponseextendconditionresource.md: - id: 97fccb5c1473 - last_write_checksum: sha1:fedddeac8a4c5fcef64538bc8d7c91dde9237a9b - pristine_git_object: b2506c3f67e64a2d3e7f49abda6e093eb2f8666c - docs/models/synclistresponseextendconditionstack.md: - id: e17f26576ee5 - last_write_checksum: sha1:6b49017006eba873da3856744e9abe3c06aaf532 - pristine_git_object: bcec1de1714691af85ccf8bf1f60fa515ab09b99 - docs/models/synclistresponseextendeffect.md: - id: 07ce4262bed4 - last_write_checksum: sha1:d2d528ecfb860b427b18913e7f419ee66e4e683a - pristine_git_object: 8d02d1aaf0dcd70f922f61485612387119b62d41 - docs/models/synclistresponseextendgcp.md: - id: c8f2e8693b7c - last_write_checksum: sha1:b20cb492a1d9653ef6ee1885d18afd0d26b167a0 - pristine_git_object: 91b9a24edb5a265912fb09e879a982c1eefb9da5 - docs/models/synclistresponseextendgcpbinding.md: - id: b71658d749ef - last_write_checksum: sha1:81b70f96c3a2f28a40beee3f1000e303eefe72ff - pristine_git_object: 4cca2543014a8b3a823bfdfea09d67e8893fbf6f - docs/models/synclistresponseextendgcpgrant.md: - id: 5303e54aeb25 - last_write_checksum: sha1:0b6155a53398a6347be41a940a5aef067c5bc989 - pristine_git_object: 3cf7795c7cde1e5499972d561b789e6673ae46ab - docs/models/synclistresponseextendgcpresource.md: - id: 9e0a1826489a - last_write_checksum: sha1:ba967b3852c35e7e40fd863ed2927807f505af29 - pristine_git_object: 2145e1ee8db052aee0703de46c7499c774f9ffd5 - docs/models/synclistresponseextendgcpstack.md: - id: 3d9c6099b42f - last_write_checksum: sha1:ad924c29216870fa96ad0e00d9a37405cb7fbff1 - pristine_git_object: 30d72bc2bd82c4ba66b476194ad3fd58d6c5907f - docs/models/synclistresponseextendplatforms.md: - id: 4d9853ade46d - last_write_checksum: sha1:014eeebd0373fbd1e7e954da49892b2efffdad74 - pristine_git_object: 71b73ebe53b9c6efd4d35af85a71ab002768cc71 - docs/models/synclistresponseextendresourceconditionunion.md: - id: c56195160a53 - last_write_checksum: sha1:47a446706cddc4a79a7190d7b236206650286725 - pristine_git_object: 4ffbc3802a821841544b694845ff537375848294 - docs/models/synclistresponseextendstackconditionunion.md: - id: 9b0ff7221b0a - last_write_checksum: sha1:21950c676b91f5c554f2c041d0d52941ef747330 - pristine_git_object: ce110ef1b253b06f18070b2bfb3209a65de1c9ea - docs/models/synclistresponseextendunion.md: - id: d9eb15ff2550 - last_write_checksum: sha1:4f610cf860cb6d1fdde36c6f064ce5d402ad918d - pristine_git_object: 4cf0f217d6e7adee76bdc19bbceea75896c8fe33 docs/models/synclistresponseexternalbindings.md: id: a059a18e26ee last_write_checksum: sha1:2e0e8ab1a05c2f7e90f0e951aa168bc27d66165f pristine_git_object: 8884cd7b0b63c4b7fd537aee018202932ac1756a + docs/models/synclistresponsefailuredomains1.md: + last_write_checksum: sha1:ad74dbb82ec616e75994a18ae66cfd64cf84ce4d + docs/models/synclistresponsefailuredomains2.md: + last_write_checksum: sha1:78651d6bec111f9c6d4843283366e064f5765535 + docs/models/synclistresponsefailuredomainsunion1.md: + last_write_checksum: sha1:e1cdd1331bc2ab50ed5306d71b807df69dc073c7 + docs/models/synclistresponsefailuredomainsunion2.md: + last_write_checksum: sha1:d3203f908e4ae82fd2e4850615c10fdd1c918c08 docs/models/synclistresponsegcpstacksettings.md: id: 842fe13129b0 last_write_checksum: sha1:9785635122d85bc24368297f24fe8bc41b034072 @@ -21658,14 +23217,8 @@ trackedFiles: id: 7ee088b95bf2 last_write_checksum: sha1:a0feafa332b76bc4045ae607bf09f629939823c5 pristine_git_object: e2aec9a5a2e66731787ce10c8e385c357b8916aa - docs/models/synclistresponseinput.md: - id: 0a214055b56e - last_write_checksum: sha1:510317100844e1f91bcb368d3854a34a3bebbaa2 - pristine_git_object: 4eb827ea61377b87f65218e8afe5b06e2d54631b - docs/models/synclistresponsekind.md: - id: 657447ff68eb - last_write_checksum: sha1:e9760fcb1220f079d116feead798e9c96161624f - pristine_git_object: 69657de70a2dbf8d99aeac77007d5421d336f7b6 + docs/models/synclistresponseinitialsetupauthority.md: + last_write_checksum: sha1:7e11de3dd642de45024fc7d9e5d4ae6f6a03af0b docs/models/synclistresponsekubernetes.md: id: 4f8f2108f0d5 last_write_checksum: sha1:6e22784b63b587b70c516a45a60f300f3871c139 @@ -21682,14 +23235,6 @@ trackedFiles: id: d0048c09424e last_write_checksum: sha1:71efaed4c1a4c3bcc33f7618f07d5820d6f6f4e7 pristine_git_object: a5ecaf8307c91449cf32fded0a2f124ab4dd62ae - docs/models/synclistresponsemanagement1.md: - id: f7ee33449bcd - last_write_checksum: sha1:99124ec883350a38e9f996f772b7d304ca4638b5 - pristine_git_object: 0c9b0ed5f5a7d44b2e920ce44a51f854ed1f2cee - docs/models/synclistresponsemanagement2.md: - id: 7d06daee21be - last_write_checksum: sha1:734aa5d49751db3defc0e4ee6feff0de3c62dab8 - pristine_git_object: 4c1f3e19063d6b2860005411b129d255e140d861 docs/models/synclistresponsemanagementconfigaws.md: id: 448ce09dbbc5 last_write_checksum: sha1:009a044e9ec569f27f546695ab6cdef4752b7f68 @@ -21722,14 +23267,6 @@ trackedFiles: id: c4072bc5de70 last_write_checksum: sha1:98aac677805a5019a4a14bfc1052bcdc9f2e2471 pristine_git_object: 3bd8c52c8afde88c1f7ac64afaffd4979838769f - docs/models/synclistresponsemanagementenum.md: - id: 9d25c79bd2a5 - last_write_checksum: sha1:53970bf05297a69bfbc3ccaacaec02e9bb880d1c - pristine_git_object: 8f3de0fa0e38ff4875ebe5618e644d8500352222 - docs/models/synclistresponsemanagementunion.md: - id: 571fb54372e5 - last_write_checksum: sha1:c298871d2e689006c2934bfe6c4ff3f820c00c99 - pristine_git_object: 580b016ea76436d96a60e4c819c9c18a5dad195d docs/models/synclistresponsemodecustom.md: id: 9b66a267c7da last_write_checksum: sha1:b6caa21872b496d9f71d017afb43b4ac707c05b0 @@ -21782,106 +23319,208 @@ trackedFiles: id: f646aff7eb10 last_write_checksum: sha1:2bcced092c44e968901f12fad1abb6d0d313014e pristine_git_object: a2403ad0914d634b73f0e36e43520734f6ecfd7e - docs/models/synclistresponseoverride.md: - id: 3f0da1f08094 - last_write_checksum: sha1:98b26fe325f1f057d911a53efcbe027e5d818a08 - pristine_git_object: bdc4c6734af50e6d2ae3cf5d38f47b327a15b148 - docs/models/synclistresponseoverrideaw.md: - id: efb41d92a690 - last_write_checksum: sha1:aa682ad0dcba100cd0d5bf74352326b8a0e9fcc3 - pristine_git_object: 0f48bc470a618de66a4d500b980560f4728e64bb - docs/models/synclistresponseoverrideawbinding.md: - id: 49d5db55aacf - last_write_checksum: sha1:1b7cc70d6b7dcee86938b246caa4f9e7514b009b - pristine_git_object: 6211e89c59b6ab124029fa2dae86992a21cc1e86 - docs/models/synclistresponseoverrideawgrant.md: - id: c1b22bef4b45 - last_write_checksum: sha1:2c5f5d4360f34c27f9f1f4f16aaba80207d28d9a - pristine_git_object: ddffe3050a64a9bb82d8359fba16c9dacb7b13ae - docs/models/synclistresponseoverrideawresource.md: - id: d8cc7c3399ff - last_write_checksum: sha1:d34b0f19216f0e1e5c1c989254c06389f9ce5b2e - pristine_git_object: 006538549213820b939d630016faed334d0dee76 - docs/models/synclistresponseoverrideawstack.md: - id: ef97dd7c25a6 - last_write_checksum: sha1:3aca45ad3d94484d63d2c638e5cca73aec5e1f9b - pristine_git_object: 420e6009091252497022053639b2708efb969f6e - docs/models/synclistresponseoverrideazure.md: - id: ffc68c262483 - last_write_checksum: sha1:a7bae6fc30da70aa6f0f78f1112682e52b1abd1d - pristine_git_object: 2eff38ca8fa2adb40ff4151571393b21bfe626c9 - docs/models/synclistresponseoverrideazurebinding.md: - id: e0b764e982bf - last_write_checksum: sha1:68165667da9500a4f99b58bc24716e8844190282 - pristine_git_object: 3cb01c11bd25469375fac44c1524922a5f0c4411 - docs/models/synclistresponseoverrideazuregrant.md: - id: 0def5bb57ac9 - last_write_checksum: sha1:64e48e9974a0673896f7d4ba526873d7f671bb19 - pristine_git_object: c14ac3a8335cdc472985ca9e9cb3e04683ac2218 - docs/models/synclistresponseoverrideazureresource.md: - id: de744c5bf0fd - last_write_checksum: sha1:858e1fa590b18ce7cfdeafd82a6d0ecd85c4ed40 - pristine_git_object: 6d01fc344df7bc2f240c8c5eae73dd0de672dfe4 - docs/models/synclistresponseoverrideazurestack.md: - id: 1e56d4be85ed - last_write_checksum: sha1:3ca65891b617da5536a54820d9f84899c1c42e7e - pristine_git_object: 30fc35b6966cb93d02e02d41447c7fe09fcc9752 - docs/models/synclistresponseoverrideconditionresource.md: - id: 0fd50ad01822 - last_write_checksum: sha1:18d75000f784f91df96085d00e54020718b15269 - pristine_git_object: a511107caf3afa96d4708aa5b25215d9e85910f0 - docs/models/synclistresponseoverrideconditionstack.md: - id: 8c7c720d7e16 - last_write_checksum: sha1:6f61af5fddd5945dc6dbc74c63298f10ee1c59fd - pristine_git_object: aaa5905d1766882da26523f449aaab018ce83852 - docs/models/synclistresponseoverrideeffect.md: - id: 421ea92dac7c - last_write_checksum: sha1:dfb984887a567bea66949dd12ff858b763c2232b - pristine_git_object: 0dbcfb1e3097d1820d1d9331aec5b9d6ada13f5b - docs/models/synclistresponseoverridegcp.md: - id: 86acfc9b6447 - last_write_checksum: sha1:c07ba2af9e438a4e21d1a8ba618e7a104c6808eb - pristine_git_object: b7123593a8ed928108bb18f58998378107891e12 - docs/models/synclistresponseoverridegcpbinding.md: - id: b8a51c17b25e - last_write_checksum: sha1:0e336e6c77ede0f32d101555ccc136a18180a3d6 - pristine_git_object: 4da41718502202ece76c54251b3cd2a422b3ec86 - docs/models/synclistresponseoverridegcpgrant.md: - id: 93764d41dca0 - last_write_checksum: sha1:9dc155ee47b73580f980956eadb1efd6cde07081 - pristine_git_object: 35780b4979e5339c64eb9864d9a0f285a3cfa9e3 - docs/models/synclistresponseoverridegcpresource.md: - id: 0a40d6bf5bb8 - last_write_checksum: sha1:98b7b347eb93d4e2dbc2c1ca4e8f981e5e1b4ea2 - pristine_git_object: 41a7e7ab2cfa16acc6e1634c6c7ced073faf6175 - docs/models/synclistresponseoverridegcpstack.md: - id: fa2b988514ab - last_write_checksum: sha1:5f0a0346f1ff62d588eebfaae2aabec7a7358d03 - pristine_git_object: 2a4a5f5dbc1133dd2e83abe9fc984b343b42db3b - docs/models/synclistresponseoverrideplatforms.md: - id: 5dd711e2d6be - last_write_checksum: sha1:ee90a9f9b4a86df0fd26bf739e7b162b80440d99 - pristine_git_object: 4012fdb164358d13c9fd026d94b659382e2a03ff - docs/models/synclistresponseoverrideresourceconditionunion.md: - id: 1eec8b1e1023 - last_write_checksum: sha1:a0d4e22eab6431804460556edb69eec6e66615a5 - pristine_git_object: d639b1bd571004fa94512d472d5ead876004870d - docs/models/synclistresponseoverridestackconditionunion.md: - id: b19a44f11f60 - last_write_checksum: sha1:37e2ec45ea640f3094081154f422ff784ab0b1e1 - pristine_git_object: b79a2052bb3b0d31351f5f0b02764cc274090e69 - docs/models/synclistresponseoverrideunion.md: - id: 7ed6ddd0ea40 - last_write_checksum: sha1:672a1f44deb0d7f8000ccb163e5ce31adba6237d - pristine_git_object: 3073ddc9abebf6488296a130559d6f339f14620b docs/models/synclistresponseownership.md: id: f2dd135009b1 last_write_checksum: sha1:e0cfba2bf4606e201b758462e497483f1c024603 pristine_git_object: f6f8aa8ae4e648eab17facf3155b2872fba078c4 - docs/models/synclistresponsepermissions.md: - id: 03262a805298 - last_write_checksum: sha1:de201006f5f25e44161a889c7fc92657811f912c - pristine_git_object: bd5a950215a6f6392728ed5d296bbb7c591726da + docs/models/synclistresponsependingpreparedstack.md: + last_write_checksum: sha1:3d19fdac7430be19a5d9e3834dc9413b577b4753 + docs/models/synclistresponsependingpreparedstackconfig.md: + last_write_checksum: sha1:785996a262560c9f2d4fbdd43bc9c5564a7843e5 + docs/models/synclistresponsependingpreparedstackdefaultboolean.md: + last_write_checksum: sha1:43d2d27f050e18e5259ac54796c8db810b64e968 + docs/models/synclistresponsependingpreparedstackdefaultnumber.md: + last_write_checksum: sha1:b7c646e3953f52d731689695ba135fdbaff29b62 + docs/models/synclistresponsependingpreparedstackdefaultstring.md: + last_write_checksum: sha1:ef7c0f82b9911bbb40ef0d918ced5f7881e27801 + docs/models/synclistresponsependingpreparedstackdefaultstringlist.md: + last_write_checksum: sha1:563b96317ac17c265bdc2776f78680e054abf411 + docs/models/synclistresponsependingpreparedstackdefaultunion.md: + last_write_checksum: sha1:5a52d8a0268498534a8a2a77ab0effc07632e409 + docs/models/synclistresponsependingpreparedstackdependency.md: + last_write_checksum: sha1:3c372f783521f5b5c4774e1d69fbcd876bbb61d5 + docs/models/synclistresponsependingpreparedstackenv.md: + last_write_checksum: sha1:d9a54840c4d64eb0a2efb913f717484c83794282 + docs/models/synclistresponsependingpreparedstackextend.md: + last_write_checksum: sha1:3fc7591e3fcfe53f1358475e91420588d4f4d985 + docs/models/synclistresponsependingpreparedstackextendaw.md: + last_write_checksum: sha1:7fbc2675adc993d28a4002dee48c77b69815f843 + docs/models/synclistresponsependingpreparedstackextendawbinding.md: + last_write_checksum: sha1:ad7ca530cbebb2e3f93a4a268878589d1c0608e6 + docs/models/synclistresponsependingpreparedstackextendawgrant.md: + last_write_checksum: sha1:2c54d168e6fb3f52682846e41de9aacf3c7d1a45 + docs/models/synclistresponsependingpreparedstackextendawresource.md: + last_write_checksum: sha1:54a57a65b2761388fadba768c24ebd06f45afb1b + docs/models/synclistresponsependingpreparedstackextendawstack.md: + last_write_checksum: sha1:9e7f2be2321d4d2332f73cec4ce1edb5ebc5147e + docs/models/synclistresponsependingpreparedstackextendazure.md: + last_write_checksum: sha1:6020bb658aa79631f9583b39225eba6c48560f9d + docs/models/synclistresponsependingpreparedstackextendazurebinding.md: + last_write_checksum: sha1:6e6f5d971b0ed1d1c17095fca803380dd0272055 + docs/models/synclistresponsependingpreparedstackextendazuregrant.md: + last_write_checksum: sha1:f87ba1278b598002ee820bbd5291440be9671f9a + docs/models/synclistresponsependingpreparedstackextendazureresource.md: + last_write_checksum: sha1:bbdc53155dcd7545d73dc64277ab1adfbc866fa3 + docs/models/synclistresponsependingpreparedstackextendazurestack.md: + last_write_checksum: sha1:d884dbe1ed1a685e3d620b26124aa766cdc02bc9 + docs/models/synclistresponsependingpreparedstackextendconditionresource.md: + last_write_checksum: sha1:61e980799371959401f2e4862c8a6d5d6811f8c2 + docs/models/synclistresponsependingpreparedstackextendconditionstack.md: + last_write_checksum: sha1:ab2e75442835449551069dfe7707673c6b04bb6d + docs/models/synclistresponsependingpreparedstackextendeffect.md: + last_write_checksum: sha1:ccfaf2d2a489aaf31f58d2c01ea032935b758d82 + docs/models/synclistresponsependingpreparedstackextendgcp.md: + last_write_checksum: sha1:b2d21345dd3fbdb6ce02ecdcd529b9bfd101e0f7 + docs/models/synclistresponsependingpreparedstackextendgcpbinding.md: + last_write_checksum: sha1:75f192edbaace6ea263d9031cf0709472d602360 + docs/models/synclistresponsependingpreparedstackextendgcpgrant.md: + last_write_checksum: sha1:452a7fd5391c137b161ec63ab222aec309be34e7 + docs/models/synclistresponsependingpreparedstackextendgcpresource.md: + last_write_checksum: sha1:da5405bb0628e5de8c9ea6dfc5ddd826ddc92f4f + docs/models/synclistresponsependingpreparedstackextendgcpstack.md: + last_write_checksum: sha1:892369c0cbd8332b4b4c94a0857d3a44d5892edb + docs/models/synclistresponsependingpreparedstackextendplatforms.md: + last_write_checksum: sha1:88203e0aa5c2410238c6782f3d6dbcec9e7cc51a + docs/models/synclistresponsependingpreparedstackextendresourceconditionunion.md: + last_write_checksum: sha1:a1cc4c0ceb86c58ec19a682c633243e5fe42b968 + docs/models/synclistresponsependingpreparedstackextendstackconditionunion.md: + last_write_checksum: sha1:2e91349f2a19684a4e20dfe1515c9ef6b7b797ef + docs/models/synclistresponsependingpreparedstackextendunion.md: + last_write_checksum: sha1:d843e5397430d061d8080c79cb1418cd0738a353 + docs/models/synclistresponsependingpreparedstackinput.md: + last_write_checksum: sha1:e8a8ce50146a27ac0e152cf89ef241cb1e3cde75 + docs/models/synclistresponsependingpreparedstackkind.md: + last_write_checksum: sha1:87b3cf83a3785035c8b16f5f32457a02204c835d + docs/models/synclistresponsependingpreparedstacklifecycle.md: + last_write_checksum: sha1:167e90bd72c9c3840a8bb0abf0d306e89cf95db4 + docs/models/synclistresponsependingpreparedstackmanagement1.md: + last_write_checksum: sha1:9239d4de6d1b97d7896ec59c54362a701790db62 + docs/models/synclistresponsependingpreparedstackmanagement2.md: + last_write_checksum: sha1:0054a18c43e2ca123544afdbd1a23b2c4d315a91 + docs/models/synclistresponsependingpreparedstackmanagementenum.md: + last_write_checksum: sha1:959c3a85945f0bf228d7c207afcee977ea7b1a1d + docs/models/synclistresponsependingpreparedstackmanagementunion.md: + last_write_checksum: sha1:8cd2292345468708bdd4640cb89bc01148baca60 + docs/models/synclistresponsependingpreparedstackoverride.md: + last_write_checksum: sha1:1e2ce77c69cdeda44110c60d36c4bcc5277bf2fa + docs/models/synclistresponsependingpreparedstackoverrideaw.md: + last_write_checksum: sha1:c84e36cc2d6d27cde75a8d4ed0ec2cbcb0f133ef + docs/models/synclistresponsependingpreparedstackoverrideawbinding.md: + last_write_checksum: sha1:2f3aff98c914012c7f0a0d618e92b6ed7d13659f + docs/models/synclistresponsependingpreparedstackoverrideawgrant.md: + last_write_checksum: sha1:20c4a01ed42407d156a834e1022397b00363fc30 + docs/models/synclistresponsependingpreparedstackoverrideawresource.md: + last_write_checksum: sha1:c273a4877e3692d73fa589be6eb873df575ee008 + docs/models/synclistresponsependingpreparedstackoverrideawstack.md: + last_write_checksum: sha1:656fcdce5a85c36c77c3d0f45a2956c9f05cd52d + docs/models/synclistresponsependingpreparedstackoverrideazure.md: + last_write_checksum: sha1:121cc1a7aa0fed2b8f7762f6d6e6f52d9b670511 + docs/models/synclistresponsependingpreparedstackoverrideazurebinding.md: + last_write_checksum: sha1:d98113402b0d2c73b2709dc6b04a394572f39843 + docs/models/synclistresponsependingpreparedstackoverrideazuregrant.md: + last_write_checksum: sha1:cdde6c698989bf47d9424f556d89b590a80d80aa + docs/models/synclistresponsependingpreparedstackoverrideazureresource.md: + last_write_checksum: sha1:acb257594615ca0e6db5282330a0bd5002446906 + docs/models/synclistresponsependingpreparedstackoverrideazurestack.md: + last_write_checksum: sha1:b4e3ded8cf1ec0597a70b2b2b37b986410937c9b + docs/models/synclistresponsependingpreparedstackoverrideconditionresource.md: + last_write_checksum: sha1:453dbbbe992faa39edcc3c4c31d3d00cfee9804f + docs/models/synclistresponsependingpreparedstackoverrideconditionstack.md: + last_write_checksum: sha1:7349ea90b5f46b06c3cf6c5e7c36f0c8a7ddb3ae + docs/models/synclistresponsependingpreparedstackoverrideeffect.md: + last_write_checksum: sha1:47ea57057729bbd3d610ab2e69bc758bed616be1 + docs/models/synclistresponsependingpreparedstackoverridegcp.md: + last_write_checksum: sha1:d4b79251a7e8b87129052f6ee10813a68be53e99 + docs/models/synclistresponsependingpreparedstackoverridegcpbinding.md: + last_write_checksum: sha1:fc3c0e6997e36604b6081472a293009decd1adba + docs/models/synclistresponsependingpreparedstackoverridegcpgrant.md: + last_write_checksum: sha1:57855f6e60a17323445b2fe05323573644d54b2b + docs/models/synclistresponsependingpreparedstackoverridegcpresource.md: + last_write_checksum: sha1:d3281cf3dadb9dbed7895fe0aefae16594919c7a + docs/models/synclistresponsependingpreparedstackoverridegcpstack.md: + last_write_checksum: sha1:924b8767e81c008dcb1b81ff40314f7f45ba7d9a + docs/models/synclistresponsependingpreparedstackoverrideplatforms.md: + last_write_checksum: sha1:d963a9704c89f2b7c056c92cd92116a37517aa11 + docs/models/synclistresponsependingpreparedstackoverrideresourceconditionunion.md: + last_write_checksum: sha1:e8e109158a7640b164e03f68f132ebaad0305c55 + docs/models/synclistresponsependingpreparedstackoverridestackconditionunion.md: + last_write_checksum: sha1:1ff344abb67b2da1e95993d377f41f5e3967e57a + docs/models/synclistresponsependingpreparedstackoverrideunion.md: + last_write_checksum: sha1:d9d16d613da6cb9ac3043634f243e926054c8e19 + docs/models/synclistresponsependingpreparedstackpermissions.md: + last_write_checksum: sha1:e31bcd633584825eb0fe05f2c6b821beddadd8ce + docs/models/synclistresponsependingpreparedstackplatform.md: + last_write_checksum: sha1:c4a4a0bc1d112c7a6420bf811a486bd97a633711 + docs/models/synclistresponsependingpreparedstackprofile.md: + last_write_checksum: sha1:b7707bf0647549b3643cbf9be7405a5b62e6b62a + docs/models/synclistresponsependingpreparedstackprofileaw.md: + last_write_checksum: sha1:1a498bd4e06ade38c0419ed0b551d7f37fb6df6c + docs/models/synclistresponsependingpreparedstackprofileawbinding.md: + last_write_checksum: sha1:c454b131fdd9bb71493aa8e117a045b0a2ca2518 + docs/models/synclistresponsependingpreparedstackprofileawgrant.md: + last_write_checksum: sha1:ae0522fc521d46a36535af946d3f8cb5fcffaed2 + docs/models/synclistresponsependingpreparedstackprofileawresource.md: + last_write_checksum: sha1:64415a8709dc9f08ad0ee11dc8c807d9ec187d72 + docs/models/synclistresponsependingpreparedstackprofileawstack.md: + last_write_checksum: sha1:be4274fbf6b50257a3ced369418d2de75640e1bf + docs/models/synclistresponsependingpreparedstackprofileazure.md: + last_write_checksum: sha1:8b9a9de7918a29e3e557315b40e86b1a3f6bd5c9 + docs/models/synclistresponsependingpreparedstackprofileazurebinding.md: + last_write_checksum: sha1:d071e9829687d5be8d42183c76339681a768ae82 + docs/models/synclistresponsependingpreparedstackprofileazuregrant.md: + last_write_checksum: sha1:bafac7bf126f9015b25191a3fd67dc36e47633eb + docs/models/synclistresponsependingpreparedstackprofileazureresource.md: + last_write_checksum: sha1:f9a5648b6cf6a3ad67305d38e77e4c16545bad69 + docs/models/synclistresponsependingpreparedstackprofileazurestack.md: + last_write_checksum: sha1:4c7813c072d83a388e463352d86cf4f35d439d69 + docs/models/synclistresponsependingpreparedstackprofileconditionresource.md: + last_write_checksum: sha1:28ed9dafb042176c5ec26e325a99ea78d96d2640 + docs/models/synclistresponsependingpreparedstackprofileconditionstack.md: + last_write_checksum: sha1:cef54443da14705a226ae70e212964a9b018a444 + docs/models/synclistresponsependingpreparedstackprofileeffect.md: + last_write_checksum: sha1:8a961e1aa8cbef9731bcbc39be137daf17cd239d + docs/models/synclistresponsependingpreparedstackprofilegcp.md: + last_write_checksum: sha1:2f31d9061905f52dfaa8c9161b3ba18aef6d93c1 + docs/models/synclistresponsependingpreparedstackprofilegcpbinding.md: + last_write_checksum: sha1:c078a74a77a9993dd55478a331a4bfa1a6329ee5 + docs/models/synclistresponsependingpreparedstackprofilegcpgrant.md: + last_write_checksum: sha1:56b21410da7235d9f7e71ea0af98160ed22567fe + docs/models/synclistresponsependingpreparedstackprofilegcpresource.md: + last_write_checksum: sha1:6e40d3518f93167500cd20057109cdca6fecb9dd + docs/models/synclistresponsependingpreparedstackprofilegcpstack.md: + last_write_checksum: sha1:8246ba4972d1d8555c6e21c77de8fefebbb8cfcd + docs/models/synclistresponsependingpreparedstackprofileplatforms.md: + last_write_checksum: sha1:599c4159b6ccdade46ab7368627e98998d85b6eb + docs/models/synclistresponsependingpreparedstackprofileresourceconditionunion.md: + last_write_checksum: sha1:c3f439605a7990cdfdfa19876e12fa576bda39e6 + docs/models/synclistresponsependingpreparedstackprofilestackconditionunion.md: + last_write_checksum: sha1:dae0d0059bb757d884c8cc6b018bb3acbc41a19f + docs/models/synclistresponsependingpreparedstackprofileunion.md: + last_write_checksum: sha1:58c0fdd71ff6581df9a017d27c3e1f6891e539fb + docs/models/synclistresponsependingpreparedstackprovidedby.md: + last_write_checksum: sha1:d9b72ac2d4460e1211ccd219c9723f9bb9c9a248 + docs/models/synclistresponsependingpreparedstackresources.md: + last_write_checksum: sha1:bf437e7c46a1ec1df52803a3fa3972ac46c0ade9 + docs/models/synclistresponsependingpreparedstacksupportedplatform.md: + last_write_checksum: sha1:fff4d79f534a8ae306f9aa3922d6c519c41d237c + docs/models/synclistresponsependingpreparedstacktypeboolean.md: + last_write_checksum: sha1:3888bf4a361b491fd03b4c887611ba3c16520940 + docs/models/synclistresponsependingpreparedstacktypeenvenum.md: + last_write_checksum: sha1:df4c552504d2ee25d6328aad8d9ef22ac7c71863 + docs/models/synclistresponsependingpreparedstacktypenumber.md: + last_write_checksum: sha1:4dceaadc66c5a5cf98c16b09058485e456bfd1dc + docs/models/synclistresponsependingpreparedstacktypestring.md: + last_write_checksum: sha1:000eeb9f44c1f0dbb210ffeb98eb842535f231ae + docs/models/synclistresponsependingpreparedstacktypestringlist.md: + last_write_checksum: sha1:99d175e8c2be96e254a0ecb701c84a509a7fe7a3 + docs/models/synclistresponsependingpreparedstacktypeunion.md: + last_write_checksum: sha1:d9d4299ab3d5fb90b935f5334fe69a39ee13d744 + docs/models/synclistresponsependingpreparedstackunion.md: + last_write_checksum: sha1:baf3efda4e40bada644ab9a928a1e2be36f44c63 + docs/models/synclistresponsependingpreparedstackvalidation.md: + last_write_checksum: sha1:d1e983594865d6547a2407c2d17083d42fd2dc8c + docs/models/synclistresponsependingpreparedstackvalidationunion.md: + last_write_checksum: sha1:ed6b631999a7e0f83ddf416ff4137208250dc23d docs/models/synclistresponseplatform.md: id: 7e4093aecd0b last_write_checksum: sha1:c51090b6bd54f56568bd999bf3236317b1ba27d6 @@ -21900,11 +23539,11 @@ trackedFiles: pristine_git_object: 2920500559cab47f1a5f6f1fbd123693948ccf35 docs/models/synclistresponsepoolsautoscale.md: id: 43286c1fe84e - last_write_checksum: sha1:343f51d3cc40540017442d63a37fa1c37ac703ca + last_write_checksum: sha1:1a2c5a946b6f65bf25a7b59d7ea034d77e24c4e2 pristine_git_object: b4d2d4c0e2df98fd87015a7caef004f4ed6917e5 docs/models/synclistresponsepoolsfixed.md: id: 2d30cb397e60 - last_write_checksum: sha1:151db956effa6943e0f4c41c3e65afbec4d96617 + last_write_checksum: sha1:7f5bee92245f3895c2fb22590f040fb6ce430560 pristine_git_object: afeb652a3c16e8ddad5661ed334a032b6eface13 docs/models/synclistresponsepoolsunion.md: id: 37a5d91ccd03 @@ -21912,32 +23551,216 @@ trackedFiles: pristine_git_object: 33aa9ada0a38b88c0fa89fce3ea4cb8b4f79fb55 docs/models/synclistresponsepreparedstack.md: id: b538a8eee672 - last_write_checksum: sha1:04e76d79b2669e4bb3205a015b7547de051402f4 + last_write_checksum: sha1:e2730687a6b001adbb6c2f2b77e5c549a572aefd pristine_git_object: 4ac8d5cbe81b32503957fceb638c90b5d0f061a1 docs/models/synclistresponsepreparedstackconfig.md: id: 3c168a0115fd last_write_checksum: sha1:ba3b2fdd57e6bb8a52ca37642bb505d25d722a5a pristine_git_object: 259c58649a8da06ff186f64cc513d18f7a18d2d9 + docs/models/synclistresponsepreparedstackdefaultboolean.md: + last_write_checksum: sha1:425f15e65a5da2fa75cf0cda50537f6b1316b851 + docs/models/synclistresponsepreparedstackdefaultnumber.md: + last_write_checksum: sha1:bf7a95a388b433750b84d6cb0d6e179dcfb8782c + docs/models/synclistresponsepreparedstackdefaultstring.md: + last_write_checksum: sha1:1f43539250d9aeae1d204444333cec56a1d59fcf + docs/models/synclistresponsepreparedstackdefaultstringlist.md: + last_write_checksum: sha1:6f47e42969855f010f2c95bb4cba6ce34ec2b6f9 + docs/models/synclistresponsepreparedstackdefaultunion.md: + last_write_checksum: sha1:0847603cc4c70b7ba62ce1e6b458afb6b8c39655 docs/models/synclistresponsepreparedstackdependency.md: id: 29db22954306 last_write_checksum: sha1:7fc3f0a82607f884696d3b97824577b999fd1004 pristine_git_object: f41ce286a4e1341198ad8a43f1d3b19cb383ec22 + docs/models/synclistresponsepreparedstackenv.md: + last_write_checksum: sha1:64d6b910daf954f287ec8170cab34ba967c036a8 + docs/models/synclistresponsepreparedstackextend.md: + last_write_checksum: sha1:fba6c2a30b931aee89cd44049d7cb45227892de6 + docs/models/synclistresponsepreparedstackextendaw.md: + last_write_checksum: sha1:3b792e8f6a7af9d5c027da6f90e4e5d971b41266 + docs/models/synclistresponsepreparedstackextendawbinding.md: + last_write_checksum: sha1:856c58eab2ed85b427a96fae28e5d9bf7da31e5b + docs/models/synclistresponsepreparedstackextendawgrant.md: + last_write_checksum: sha1:ff035b4747bedd437d190df2adfc23b89451cd3a + docs/models/synclistresponsepreparedstackextendawresource.md: + last_write_checksum: sha1:fd1ea71352589b823cccdae3dc4a544a28ac8afb + docs/models/synclistresponsepreparedstackextendawstack.md: + last_write_checksum: sha1:7da584cdccdfc27e737fe062f11d6e39db9a9b89 + docs/models/synclistresponsepreparedstackextendazure.md: + last_write_checksum: sha1:0956954ffd49d71ad982b05ce7e12d98edf07a1a + docs/models/synclistresponsepreparedstackextendazurebinding.md: + last_write_checksum: sha1:963c06e2503ffb823545fc7572567edec0e66591 + docs/models/synclistresponsepreparedstackextendazuregrant.md: + last_write_checksum: sha1:54e3d2f8565f90ca61d09c9dda3d339c2f195de4 + docs/models/synclistresponsepreparedstackextendazureresource.md: + last_write_checksum: sha1:426be595a91e95c2d1f8f1c662b343bb6ff77d40 + docs/models/synclistresponsepreparedstackextendazurestack.md: + last_write_checksum: sha1:0a5616bf18fac155d031576d9efa230fe73bf108 + docs/models/synclistresponsepreparedstackextendconditionresource.md: + last_write_checksum: sha1:a47423dc29e13a470a2465db8403db4f22baf5a7 + docs/models/synclistresponsepreparedstackextendconditionstack.md: + last_write_checksum: sha1:5adb42127ec9585c1422f785e0830cdeead2b3b4 + docs/models/synclistresponsepreparedstackextendeffect.md: + last_write_checksum: sha1:0b4a9d0e126556805e115e068a41d02a9ab9bbb3 + docs/models/synclistresponsepreparedstackextendgcp.md: + last_write_checksum: sha1:ef39efcdef6ccd844eff21424d6b74398b715f5a + docs/models/synclistresponsepreparedstackextendgcpbinding.md: + last_write_checksum: sha1:8dad736bb709c68e5edfaae731fe273f86263b30 + docs/models/synclistresponsepreparedstackextendgcpgrant.md: + last_write_checksum: sha1:8330dae774dd77c3d40606fb2aeff271a03d5ae3 + docs/models/synclistresponsepreparedstackextendgcpresource.md: + last_write_checksum: sha1:4a70871dba5d215558a9d0a708570f9a86710232 + docs/models/synclistresponsepreparedstackextendgcpstack.md: + last_write_checksum: sha1:50a5b13bbc93834a59f3a0566a077284e9fcd017 + docs/models/synclistresponsepreparedstackextendplatforms.md: + last_write_checksum: sha1:bfbf9751d15061743d4c82c7fd690ac9b41a1967 + docs/models/synclistresponsepreparedstackextendresourceconditionunion.md: + last_write_checksum: sha1:a5b4b4315e1a77817dd4fa6a9dd14a380df10b6d + docs/models/synclistresponsepreparedstackextendstackconditionunion.md: + last_write_checksum: sha1:f2f71e27ef4ab9681e5fe348026cc59bff23a836 + docs/models/synclistresponsepreparedstackextendunion.md: + last_write_checksum: sha1:d9cffc9ab5a5fce99f68f182b64e04238ee81fee + docs/models/synclistresponsepreparedstackinput.md: + last_write_checksum: sha1:449cdbee760b6a6840ad8946b9ae9f7e2f4ddd5e + docs/models/synclistresponsepreparedstackkind.md: + last_write_checksum: sha1:9d8a6404e3ac204c71067bc9ab6e6e6a294bbe0a docs/models/synclistresponsepreparedstacklifecycle.md: id: 8c7aad51eb8e last_write_checksum: sha1:3883f4d255e2e057613c3bb2d6752a2cf2bf106e pristine_git_object: 896cd2c03b17489f71231f5d79923cab32234740 + docs/models/synclistresponsepreparedstackmanagement1.md: + last_write_checksum: sha1:4756a97bab6e1ff34de6eebd3106aad7e250c39f + docs/models/synclistresponsepreparedstackmanagement2.md: + last_write_checksum: sha1:56f9b7d50444a2b9ea9a5106fb63daab74bb2018 + docs/models/synclistresponsepreparedstackmanagementenum.md: + last_write_checksum: sha1:6f96d6dfc8e6abddae6b29a9732fe3c3b304b425 + docs/models/synclistresponsepreparedstackmanagementunion.md: + last_write_checksum: sha1:71402bcbd21ab76a75f178185813f58a43b15d4f + docs/models/synclistresponsepreparedstackoverride.md: + last_write_checksum: sha1:943fab03fd245e232680c458b354d5e4c1b5630a + docs/models/synclistresponsepreparedstackoverrideaw.md: + last_write_checksum: sha1:42ec50e8abc3e4478b56d8a95cb32571f5a06087 + docs/models/synclistresponsepreparedstackoverrideawbinding.md: + last_write_checksum: sha1:be6e9e088267ff2d4df5a8781037837d0353eeb4 + docs/models/synclistresponsepreparedstackoverrideawgrant.md: + last_write_checksum: sha1:47e0ca7d587c818bc582fad45bfd4a581853262b + docs/models/synclistresponsepreparedstackoverrideawresource.md: + last_write_checksum: sha1:0f46e8aeb829267d8ecec4fb3dca3b75308abe4a + docs/models/synclistresponsepreparedstackoverrideawstack.md: + last_write_checksum: sha1:33a4a1e388689d4d436f223374fb708941d26194 + docs/models/synclistresponsepreparedstackoverrideazure.md: + last_write_checksum: sha1:91edc8c765e18d59b32878abe08ad71cde390d14 + docs/models/synclistresponsepreparedstackoverrideazurebinding.md: + last_write_checksum: sha1:9253d20ea8bddb49e73395544f3a97d931ae4016 + docs/models/synclistresponsepreparedstackoverrideazuregrant.md: + last_write_checksum: sha1:12d74e02727d6702bb661a8fe1410564a4b14e90 + docs/models/synclistresponsepreparedstackoverrideazureresource.md: + last_write_checksum: sha1:4e34dab7dc22122c03df114195d5b0acbaba33d1 + docs/models/synclistresponsepreparedstackoverrideazurestack.md: + last_write_checksum: sha1:03c75775880b1f021f214d2845875ddbdd87ae28 + docs/models/synclistresponsepreparedstackoverrideconditionresource.md: + last_write_checksum: sha1:30a151b312ee867173d05458f825a62517233fd5 + docs/models/synclistresponsepreparedstackoverrideconditionstack.md: + last_write_checksum: sha1:4162a1ca41fc930ad121d88fc708a7293afc33eb + docs/models/synclistresponsepreparedstackoverrideeffect.md: + last_write_checksum: sha1:cf2ef26657d84f69e26182c7cca3743bfc8cbf92 + docs/models/synclistresponsepreparedstackoverridegcp.md: + last_write_checksum: sha1:1166c6e8b226460657f8dc6f7dfb2a7620ba919f + docs/models/synclistresponsepreparedstackoverridegcpbinding.md: + last_write_checksum: sha1:3dfe8202d5f4657e1bca3b9888987ccfc455f4ed + docs/models/synclistresponsepreparedstackoverridegcpgrant.md: + last_write_checksum: sha1:4addb8e4ddd3c6f8363237cede5e7bc8027c60a6 + docs/models/synclistresponsepreparedstackoverridegcpresource.md: + last_write_checksum: sha1:4464441643739458a5a45f444eaafdeb6b03765b + docs/models/synclistresponsepreparedstackoverridegcpstack.md: + last_write_checksum: sha1:20f7e945ead6535834e7977da4f127125b6dfd31 + docs/models/synclistresponsepreparedstackoverrideplatforms.md: + last_write_checksum: sha1:5affd375f6ad70206955c67813a08916cd430a18 + docs/models/synclistresponsepreparedstackoverrideresourceconditionunion.md: + last_write_checksum: sha1:a216c91675068de81c7937741ca8c51236ed3beb + docs/models/synclistresponsepreparedstackoverridestackconditionunion.md: + last_write_checksum: sha1:961ab95ed926ae6ab0fa8d83f6e5a026a7d130ae + docs/models/synclistresponsepreparedstackoverrideunion.md: + last_write_checksum: sha1:d1cd91251de85c143d7a9141c2b20093b25ad05e + docs/models/synclistresponsepreparedstackpermissions.md: + last_write_checksum: sha1:52127bc7e19b16d942ce4ca8f434264fb4ca7f12 docs/models/synclistresponsepreparedstackplatform.md: id: b882acd2e678 last_write_checksum: sha1:08ede8423e8eedc95b1c8c35aaafd5070e5f23ec pristine_git_object: 06e292ca235c6ba0efd5531150feb247836f71fa + docs/models/synclistresponsepreparedstackprofile.md: + last_write_checksum: sha1:dec2f026644e637ea73e07ef4613f74a47bba627 + docs/models/synclistresponsepreparedstackprofileaw.md: + last_write_checksum: sha1:94e3c517fbb421c8da7f71a0c961e29cb311f345 + docs/models/synclistresponsepreparedstackprofileawbinding.md: + last_write_checksum: sha1:7b63e6c0bbc51f8a896712e4fbb65b012fb4a7fc + docs/models/synclistresponsepreparedstackprofileawgrant.md: + last_write_checksum: sha1:d95367980a06ffc9823cf8769d98ff1b8cb6a78b + docs/models/synclistresponsepreparedstackprofileawresource.md: + last_write_checksum: sha1:ac7c1b1467b482e2c99ffa7456b8b63b09c9c824 + docs/models/synclistresponsepreparedstackprofileawstack.md: + last_write_checksum: sha1:7737aebe6af14fa6fea4a47c16ded4ffd4e8d322 + docs/models/synclistresponsepreparedstackprofileazure.md: + last_write_checksum: sha1:a0ffd793caad7e86a89f252925b8e09f22b546a3 + docs/models/synclistresponsepreparedstackprofileazurebinding.md: + last_write_checksum: sha1:40a00b86be17795b77b3f4d9b531c0ecac171211 + docs/models/synclistresponsepreparedstackprofileazuregrant.md: + last_write_checksum: sha1:7e5c6e48f62f47d51790bacc487002e872018084 + docs/models/synclistresponsepreparedstackprofileazureresource.md: + last_write_checksum: sha1:cce97ac70ab8521a0120f628f51923df3842488c + docs/models/synclistresponsepreparedstackprofileazurestack.md: + last_write_checksum: sha1:dee18e48af8159985d03644a85be20ac89572753 + docs/models/synclistresponsepreparedstackprofileconditionresource.md: + last_write_checksum: sha1:275681aab3b65b65a75302c111b0c6db44f134b2 + docs/models/synclistresponsepreparedstackprofileconditionstack.md: + last_write_checksum: sha1:7cbf19d164ce1c1eea88e03085e5981eedce2e68 + docs/models/synclistresponsepreparedstackprofileeffect.md: + last_write_checksum: sha1:93ac670f629ab70150abb95497d35b67a407c034 + docs/models/synclistresponsepreparedstackprofilegcp.md: + last_write_checksum: sha1:6a61ac3da5201223f22e2cc14f92f9ad17297a20 + docs/models/synclistresponsepreparedstackprofilegcpbinding.md: + last_write_checksum: sha1:2bb1d7d81689c394c97962254572fa33a4779c1c + docs/models/synclistresponsepreparedstackprofilegcpgrant.md: + last_write_checksum: sha1:6a2f5eb441000e78251e60e35d3f6c4f4ff41fb0 + docs/models/synclistresponsepreparedstackprofilegcpresource.md: + last_write_checksum: sha1:14a27e4eea23edbb3dbb8484954bf593c389873f + docs/models/synclistresponsepreparedstackprofilegcpstack.md: + last_write_checksum: sha1:6794b050b9a10289f96a51d81419d6781f9093b0 + docs/models/synclistresponsepreparedstackprofileplatforms.md: + last_write_checksum: sha1:dfe35c97dd25b5ed7859d94e3c55c0da555ca787 + docs/models/synclistresponsepreparedstackprofileresourceconditionunion.md: + last_write_checksum: sha1:a753c68702cbeb7bf955cdf6f78223b6cbfd7b71 + docs/models/synclistresponsepreparedstackprofilestackconditionunion.md: + last_write_checksum: sha1:2cd69f3e22b5d8998b99293af4802e79244eae92 + docs/models/synclistresponsepreparedstackprofileunion.md: + last_write_checksum: sha1:4cd86d590fac004713e8eed05f85dfc6c987bdc7 + docs/models/synclistresponsepreparedstackprovidedby.md: + last_write_checksum: sha1:3eb6a9c984227d241732a8cd6244d61fdd9b814f docs/models/synclistresponsepreparedstackresources.md: id: 7cf3b5cabc07 - last_write_checksum: sha1:f649c3f7ab21c0a763be392c6fed2f747bec6ca9 + last_write_checksum: sha1:eff5f730beb93296cdce0d1d0ee2c7ccc359eaf4 pristine_git_object: f041dd3ff5c4143e4fe41d33c02a05dca92325dd + docs/models/synclistresponsepreparedstacksupportedplatform.md: + last_write_checksum: sha1:d46d6a1328572668e7bcd1ca893147bc2bf7639e + docs/models/synclistresponsepreparedstacktypeboolean.md: + last_write_checksum: sha1:02a7a0775545b161da67d6e91ac55487d3962a55 + docs/models/synclistresponsepreparedstacktypeenvenum.md: + last_write_checksum: sha1:4b2ef7506b1bcb1718d18e2fbd11e0af4d22c4e9 + docs/models/synclistresponsepreparedstacktypenumber.md: + last_write_checksum: sha1:a81efe313ceb946d191369b02331457137a7fe72 + docs/models/synclistresponsepreparedstacktypestring.md: + last_write_checksum: sha1:e7b26eb8bdbc8b7dc5667da1ef5210a4c3791eeb + docs/models/synclistresponsepreparedstacktypestringlist.md: + last_write_checksum: sha1:555aafe3a3507aa656d0825c83e7b2909e07ca3d + docs/models/synclistresponsepreparedstacktypeunion.md: + last_write_checksum: sha1:827a07260d136b7731944f72adfa1ab954b930e4 docs/models/synclistresponsepreparedstackunion.md: id: 04756f08eb39 last_write_checksum: sha1:fdfbef5b6917f5ea9ba1a28597d6e4e07670f444 pristine_git_object: bb89df76c9f8b8b451206b787a1ddc7b0fe690da + docs/models/synclistresponsepreparedstackvalidation.md: + last_write_checksum: sha1:e9f24f87d85dc78a1ae60dada8363c1e820ca515 + docs/models/synclistresponsepreparedstackvalidationunion.md: + last_write_checksum: sha1:61eecd79f8e876ba3485a9bcf509f1edc720c9a1 docs/models/synclistresponsepreviousconfig.md: id: 71c139e8349e last_write_checksum: sha1:bf9a32538c636535592018af89d0fdcee79cefe4 @@ -21946,102 +23769,6 @@ trackedFiles: id: baa7a44f98d5 last_write_checksum: sha1:4c62b455ec3c72575c4b3410845b1d4a47e5e7a4 pristine_git_object: c30d0971e772b9ab25ea49229ce0d88ab7203d8e - docs/models/synclistresponseprofile.md: - id: 3df623648bb0 - last_write_checksum: sha1:9fcc4f50f21fa49b1115930ff48875490d14dbf9 - pristine_git_object: 238e1fe159d2fde27f220470cd3c8ecea357c589 - docs/models/synclistresponseprofileaw.md: - id: 7f6536b9336f - last_write_checksum: sha1:007c46e49d2c909b514f34197226a24e062565cb - pristine_git_object: 987c70614758e4219a39299759032eec62ad810b - docs/models/synclistresponseprofileawbinding.md: - id: 158ac5cbe366 - last_write_checksum: sha1:240d007f8245ae3b8700fbe229aefc10680c3824 - pristine_git_object: 2eb26a410dba93954c55aa6251e7a2c9d5c99c0b - docs/models/synclistresponseprofileawgrant.md: - id: 8e5196663f41 - last_write_checksum: sha1:676c0d7d24f5580d5e9f6e13341f3945697b3b8f - pristine_git_object: 1d170cb70cca3d2cf3b518cdf498cbdf4faddca1 - docs/models/synclistresponseprofileawresource.md: - id: eb4f19bd5158 - last_write_checksum: sha1:488cf3d40b1c55f7e1ff54ff8ba91843cec786e6 - pristine_git_object: 0dc0c16b204317a577a008cc0a23bf2621660597 - docs/models/synclistresponseprofileawstack.md: - id: 5e36e8177a12 - last_write_checksum: sha1:68c919d053b6e24bf99011f6f57d53d380c5cb69 - pristine_git_object: 676d6447cdc54e064bae4e9cf82306cc038c94a3 - docs/models/synclistresponseprofileazure.md: - id: d64c3b9bfa91 - last_write_checksum: sha1:b7c4a5ae2f35adde1ccea04b2df37a8bdaaf8341 - pristine_git_object: d1c45333a8b97ecadc8fe4f144ddbffd4ff493a8 - docs/models/synclistresponseprofileazurebinding.md: - id: 31505b80ec07 - last_write_checksum: sha1:c91c785281df2ca13b2bb4e630ebba10af4dca20 - pristine_git_object: a80f47c7831a01faadd1c0f55653bf5548ad485b - docs/models/synclistresponseprofileazuregrant.md: - id: 191f44812cae - last_write_checksum: sha1:da5408224e27e4f7165c00f1af1a52c032535567 - pristine_git_object: ad9e04d7cf5381f625af186801f8f4bc827ba035 - docs/models/synclistresponseprofileazureresource.md: - id: a0fa0f08f03d - last_write_checksum: sha1:95b4718ae5bd11ae6d246b3e2ab3a792986227be - pristine_git_object: de9da1fe8c397a069570e22afffdeea614e36604 - docs/models/synclistresponseprofileazurestack.md: - id: e55220153153 - last_write_checksum: sha1:48436c4b452e543480bee83b5f08a0bf255cebc7 - pristine_git_object: 2ef44dde5ea86b7cf62f57ee9f8f21a2268f2b14 - docs/models/synclistresponseprofileconditionresource.md: - id: b3b661a8a804 - last_write_checksum: sha1:897e70e90b4572a077bea2b45b0d7772d62e9049 - pristine_git_object: 520a6573d090a7c5f76d40564c510239e84d1bb7 - docs/models/synclistresponseprofileconditionstack.md: - id: 1634abee9f9b - last_write_checksum: sha1:c08e71cd96303fad5971213d0199f4f21325a7df - pristine_git_object: 2423373178f6758e921318c09290856f009bb724 - docs/models/synclistresponseprofileeffect.md: - id: 28c88ed84ba7 - last_write_checksum: sha1:1b2d64a96dd90e33ae5a2d909d2c2aa825b55aad - pristine_git_object: 210cdc774d49debc9ea587a92956a8dc0e3332e9 - docs/models/synclistresponseprofilegcp.md: - id: ac7f8c650820 - last_write_checksum: sha1:9c5e398f3c1b14ddabd67e6554078311ef5b5a54 - pristine_git_object: 8d5b756da58d49e25bdd3cf42d1217a5f6211848 - docs/models/synclistresponseprofilegcpbinding.md: - id: 561d36b1ebe7 - last_write_checksum: sha1:e8dccbf6eb7251ff08502b907b7cb3a22327b7a7 - pristine_git_object: 3480321503e1470f1e4ce826a7e9f6946ba3c239 - docs/models/synclistresponseprofilegcpgrant.md: - id: ba60e55ceaaa - last_write_checksum: sha1:e1b690d210e629d22dfdcd8c8f83e36cbb47bf6e - pristine_git_object: 87f225737f3830e5810f66869d38f46e00aa5e19 - docs/models/synclistresponseprofilegcpresource.md: - id: ae80486e1c41 - last_write_checksum: sha1:f7fd5bbad9fe9e4a5f8273ba73ff4cf307901ebb - pristine_git_object: 07a2ffd92903e74d8b0d0df251e3ae8aa335c932 - docs/models/synclistresponseprofilegcpstack.md: - id: 253020f95948 - last_write_checksum: sha1:f83a6b8f0c8f7f22b42971c69cdde7768ec6e336 - pristine_git_object: 8e87d36c3f9e08965d7ed7b0ca67769c8ff79e00 - docs/models/synclistresponseprofileplatforms.md: - id: 98683780ea61 - last_write_checksum: sha1:1c7dc484f7e022778d708aab77b7435eae7b6eb0 - pristine_git_object: faf193dcc29b611deddee69b03124f257f6082af - docs/models/synclistresponseprofileresourceconditionunion.md: - id: 60fd35d733da - last_write_checksum: sha1:45b4fc062ae932a51d78d2d8e4d8367df86c2d11 - pristine_git_object: 83c0c00362897fb9578145e650343868318894a7 - docs/models/synclistresponseprofilestackconditionunion.md: - id: 1ec70663e606 - last_write_checksum: sha1:c9ab6ea445ccf199b322842bce296a0038ca7fad - pristine_git_object: 84f803db0cdd44aaa995c89e9f9886679a715ac4 - docs/models/synclistresponseprofileunion.md: - id: 150abc9c79c7 - last_write_checksum: sha1:14accf9e7be1ed9b06ca0a90d7829894c1bd498b - pristine_git_object: 4a00f627699865c4153bf14bab5e09b45cc21e7c - docs/models/synclistresponseprovidedby.md: - id: 378b425f39a6 - last_write_checksum: sha1:8cf6e97edf5f3d30b31b54fb4dacd2b9212ff0e2 - pristine_git_object: f23e1fd4f1ec658126ed8760813120aa013fa8dd docs/models/synclistresponseproviderawsalb1.md: id: 8dbd6f64febe last_write_checksum: sha1:b305eabc8e60734f98198414fb35d5a16277da47 @@ -22192,12 +23919,16 @@ trackedFiles: pristine_git_object: 2e5df8411adfa05a2389c804bf312be11cf20d8a docs/models/synclistresponseruntimemetadata.md: id: ff44348f9c60 - last_write_checksum: sha1:f153736199eb3a8b65f634e2fdfe0b92f33f2c20 + last_write_checksum: sha1:c9a65bf3927ce25e8d5b6e8786ecd063e29a65a4 pristine_git_object: 53b393f71ef4fc1828cb211501f630196ee52942 docs/models/synclistresponsesetupmethod.md: id: 52ab65494278 last_write_checksum: sha1:68da17be92d29eb33f4fec4f47f8d3b5718d5a5f pristine_git_object: f13c4a8dc3ab9c29a7671e38e093d0da5b8bd5fa + docs/models/synclistresponsesetupupdateauthorization.md: + last_write_checksum: sha1:b116ce49bbbd0e53526f3645962b457bdc154935 + docs/models/synclistresponsesetupupdateauthorizationunion.md: + last_write_checksum: sha1:8434c37bb07e2823b1033092308c82599cc39643 docs/models/synclistresponsestacksettings.md: id: 357990a9b65a last_write_checksum: sha1:817d0a381b8cb6752043ebf31d774da2fcb8385a @@ -22230,10 +23961,6 @@ trackedFiles: id: f706866e8267 last_write_checksum: sha1:4fa2def6be3ef08068529ac918a01a563da606f9 pristine_git_object: be131cce306625e1a8a4b88d180424be08a18da5 - docs/models/synclistresponsesupportedplatform.md: - id: 8debdba4eb95 - last_write_checksum: sha1:db7512add0aee6ff99ac440739c2af83332bfa93 - pristine_git_object: 6681a2b5c6f8a54a54c4acd70b55a161eb017f25 docs/models/synclistresponsetelemetry.md: id: 0f8134dc77d0 last_write_checksum: sha1:82b71c97a3c85816def984b1ac17a1edd336be3e @@ -22242,10 +23969,6 @@ trackedFiles: id: 01b6967cdeb5 last_write_checksum: sha1:c595aa3c1f1c051274f48d359a68f617712993ed pristine_git_object: a314db55e738685e73df2ad4d12ca88cf924ca44 - docs/models/synclistresponsetypeboolean.md: - id: e1561e0566d9 - last_write_checksum: sha1:895d6b676079967841c00a548bdf5811a5594f74 - pristine_git_object: 8a87011cb3d20f89f867084d36714324ae217625 docs/models/synclistresponsetypebyovnetazure.md: id: bd55ee4f6e49 last_write_checksum: sha1:e47dcaf9b80e6f726823c0303fc71477a9cc01f0 @@ -22262,26 +23985,6 @@ trackedFiles: id: 4ac645dac94c last_write_checksum: sha1:fbe3bd4cb1cba8262540b07c6b84b7b8bc77704d pristine_git_object: 0aa7e71268db8e55b3f8af30386a41fb5e5397ec - docs/models/synclistresponsetypeenvenum.md: - id: 825cfc6ce2c1 - last_write_checksum: sha1:a144bd0b0da1f52ccf7af015e27782123f7ce36d - pristine_git_object: b6df8a0e1dd753df92eab05ac01f9054766727d3 - docs/models/synclistresponsetypenumber.md: - id: c58fbd3575f4 - last_write_checksum: sha1:bf208f03d199553f09858fea162d8779ee0dfdf2 - pristine_git_object: 2233d08007ad25348333697281f3538e0cb0bbe9 - docs/models/synclistresponsetypestring.md: - id: 3753a55e7775 - last_write_checksum: sha1:d8d7f3f2a0544ffb6c9158cf6cc1abf69dec0443 - pristine_git_object: 20e3c0e6ffc50164d2aed8fb3741b22cf05add5e - docs/models/synclistresponsetypestringlist.md: - id: 4d1826867f66 - last_write_checksum: sha1:b561d122844ebabd8cd9380390e344ed1a859815 - pristine_git_object: feae29106b6f9645be98edcd7c0778fb910a2537 - docs/models/synclistresponsetypeunion.md: - id: 8bfd36b31193 - last_write_checksum: sha1:bbf28ba25e7928c3726361bffcafb879957ddf0c - pristine_git_object: f94f2cf164efc92ae007ea3a6cf80cdcd4db8931 docs/models/synclistresponsetypeusedefault.md: id: 64912666a75f last_write_checksum: sha1:a3c09ba221981ac582f8510d7117619b6f3daecd @@ -22290,18 +23993,52 @@ trackedFiles: id: c2ef7061d2d6 last_write_checksum: sha1:542fe38038c3fd8347d45f7f9bc6580648139014 pristine_git_object: 64e4b2337f7328a51e8039c7af9e8e6cf49b54b1 - docs/models/synclistresponsevalidation.md: - id: 2bc064f1e5ed - last_write_checksum: sha1:95f4d7404ba16e25801492f7cf98df8f5f90c354 - pristine_git_object: 6acbb83f5d7802156bd2920dd3b1d945a472b711 - docs/models/synclistresponsevalidationunion.md: - id: 00bc2e66baae - last_write_checksum: sha1:ecc6a95f1d436aeca46bdc05f179532268823575 - pristine_git_object: a239f4dbfd683116e3f641dd8af9332f05732774 + docs/models/synclistresponseupdatestate.md: + last_write_checksum: sha1:adf5f58bffd7ac27ed8db6b8dddb2d0a4c2e2432 docs/models/syncreconcilerequest.md: id: 4855da36149e last_write_checksum: sha1:a75f1b50959b7d6b1fb9dbaa7fd8c5b06cf1de45 pristine_git_object: 27e069b8958481b599d884f31ea68e1732b25762 + docs/models/syncreconcilerequestaccesstest1.md: + last_write_checksum: sha1:106ff71ff8202f64480f6ad4f46017e92ad64d8a + docs/models/syncreconcilerequestaccesstest2.md: + last_write_checksum: sha1:5594bdc70576cf9dc61a04b20b60023c2430ccc5 + docs/models/syncreconcilerequestaccesstest3.md: + last_write_checksum: sha1:1de537a87e9f97a220847f12c27d77e28e3dd2d7 + docs/models/syncreconcilerequestaccesstest4.md: + last_write_checksum: sha1:f17dab931ce86af62fc195ba11519c52c84772a3 + docs/models/syncreconcilerequestavailability1.md: + last_write_checksum: sha1:54e1a2a123bcb95f8e2c94ec7259845359ff061d + docs/models/syncreconcilerequestavailability2.md: + last_write_checksum: sha1:6983509f3866f7d6cc7b679f87aa577147527129 + docs/models/syncreconcilerequestavailability3.md: + last_write_checksum: sha1:8c81e0300bad732729107f2381c3c7545af96381 + docs/models/syncreconcilerequestavailability4.md: + last_write_checksum: sha1:64888d45dc2b79ceb60f3a6867b5fa0f82bb4b6d + docs/models/syncreconcilerequestavailabilitysource1.md: + last_write_checksum: sha1:eb03a9c489cf71b08e13ed070fdb39c59d4f2b7f + docs/models/syncreconcilerequestavailabilitysource2.md: + last_write_checksum: sha1:0a98d739637028616956e62077b047a35059538b + docs/models/syncreconcilerequestavailabilitysource3.md: + last_write_checksum: sha1:3ef2886b9acbdddcc845dd051cb406dabfa9aeba + docs/models/syncreconcilerequestavailabilitysource4.md: + last_write_checksum: sha1:adca4a2f5ed62e3434c5fdb72c5f21372d817780 + docs/models/syncreconcilerequestblockerenum1.md: + last_write_checksum: sha1:4ffaf4082ff91093da998e4c641a9a3a0dc2bf1d + docs/models/syncreconcilerequestblockerenum2.md: + last_write_checksum: sha1:350c7a9642f6bf5d6a17408af229f3c43984bfce + docs/models/syncreconcilerequestblockerenum3.md: + last_write_checksum: sha1:bf1974283a68f3989c3a7624c65c15c9ee3bbf2d + docs/models/syncreconcilerequestblockerenum4.md: + last_write_checksum: sha1:8df29f132b58908a530546a2bfdf9504e2bdfd1c + docs/models/syncreconcilerequestclientapi1.md: + last_write_checksum: sha1:327a3ab2ab4711fcdbc4421cc3f4010d5a442936 + docs/models/syncreconcilerequestclientapi2.md: + last_write_checksum: sha1:474e35fbd91b56d197685190a1fe88a79f5dd19b + docs/models/syncreconcilerequestclientapi3.md: + last_write_checksum: sha1:4b6f6c4d289b6cc0e86289839d11ee1c1d164b31 + docs/models/syncreconcilerequestclientapi4.md: + last_write_checksum: sha1:58221baef34a04354801af0f438b805bc82aedbb docs/models/syncreconcilerequestcurrentrelease.md: id: d35f941a4a2e last_write_checksum: sha1:72e67873c317867df83e4599ec2fe52957eaf971 @@ -22564,7 +24301,7 @@ trackedFiles: pristine_git_object: c94b5b41d87b6122bd5700de00b57196b46e8c70 docs/models/syncreconcilerequestcurrentreleaseresources.md: id: d9383fa55ddd - last_write_checksum: sha1:2e00bc5ada87fed9d0fbc416661e7fd4bdc3b05b + last_write_checksum: sha1:5e7ef51960ab371d36342fb28ee2dde496ed531e pristine_git_object: 4f4b85dfaf865d25a5861671f378fbec742854d6 docs/models/syncreconcilerequestcurrentreleasestack.md: id: 16e3269cf061 @@ -22630,6 +24367,12 @@ trackedFiles: id: 9584f2594de2 last_write_checksum: sha1:1df692d11e5f3e59a511f98469d71ac679e54163 pristine_git_object: 7754b3f4447a0af473ce7feb473107b7df3e09b6 + docs/models/syncreconcilerequestdata6.md: + last_write_checksum: sha1:d6ef3599842f77c49134fddd503e31b299f872dc + docs/models/syncreconcilerequestdata7.md: + last_write_checksum: sha1:d9c5ed1ef50a54529164eaabe7e2b5c6ee646677 + docs/models/syncreconcilerequestdata8.md: + last_write_checksum: sha1:098e9ecfae9bd72f8927dc5daeeb6c926f7fef70 docs/models/syncreconcilerequestdataunion1.md: id: 87e469f2b107 last_write_checksum: sha1:4589873a0e83e766bd2f926743737dd302dfe22c @@ -22660,8 +24403,12 @@ trackedFiles: pristine_git_object: d216133e24204c84858e85aade0ac373746cd677 docs/models/syncreconcilerequestdataunion16.md: id: 4d761a464684 - last_write_checksum: sha1:d74d215853bc5d2a9ee2daede2a767109582f346 + last_write_checksum: sha1:dcc9c15811312da2abb4c37804091a511e47562c pristine_git_object: 81fc5e75275225e5e3d38bbbccc574c034d7eb9c + docs/models/syncreconcilerequestdataunion17.md: + last_write_checksum: sha1:a4bfc25ab97ffdbcb182d64ee16edacf5ced7145 + docs/models/syncreconcilerequestdataunion18.md: + last_write_checksum: sha1:8e8ad9705c84f38f35030da00b5c1774d4ee9213 docs/models/syncreconcilerequestdataunion2.md: id: ce58901d9ab9 last_write_checksum: sha1:b5ccd6a3812825fc4fb70256e7a73bc56ee57d13 @@ -22692,7 +24439,7 @@ trackedFiles: pristine_git_object: 33d237be19b0e5af8925ba3c45a0d2cd7becbc8b docs/models/syncreconcilerequestdataunion9.md: id: 8c3d26daba3d - last_write_checksum: sha1:f23f3e9a0170cc1cc1e3737d581da0ae35c628a6 + last_write_checksum: sha1:4fe195b8eb57c0772a5566d57f5684ec4d48d8c6 pristine_git_object: 3da519146425940794c9fa35a12f1cd5611eebaf docs/models/syncreconcilerequestenvironmentinfoaws.md: id: 95fbca76e7da @@ -22728,11 +24475,11 @@ trackedFiles: pristine_git_object: 4aec5b89a59422042b107e3caa2dd52a57e3c4dc docs/models/syncreconcilerequestevent1.md: id: aeabc4921e0b - last_write_checksum: sha1:c5c30e7a3a841da8ad7eda08cd8c8b29f0d8b4ff + last_write_checksum: sha1:60ae25239b866d2a0e7e7bbdba9ab36b78a38102 pristine_git_object: 700dd9abcf4b73138d49478e264d0ec209ccaab7 docs/models/syncreconcilerequestevent10.md: id: 036e1c4f481c - last_write_checksum: sha1:1dec47017d720657cfa822b7bf8b67de60af5edb + last_write_checksum: sha1:a92358ead67594020dadd26a32de81cfd1c30211 pristine_git_object: 5b90dbcf39a7cba89f6547e4ef700639e601771c docs/models/syncreconcilerequestevent11.md: id: 3df7dd72cb84 @@ -22740,11 +24487,11 @@ trackedFiles: pristine_git_object: 3bb58f94121292771decd72dbabe1b7af850e03e docs/models/syncreconcilerequestevent12.md: id: 5171fd675dd0 - last_write_checksum: sha1:4d3d8449ecf44749ea5370509feaff3a403abb84 + last_write_checksum: sha1:afd81ea96fa5cad9597728fb8894f7e734d1e0e7 pristine_git_object: 6a3d136334125c7cc63b911d90d179126eccf66f docs/models/syncreconcilerequestevent13.md: id: 4ae4492144a7 - last_write_checksum: sha1:9def7772858d4a8e765c2caf03158569c5a591cb + last_write_checksum: sha1:455a28058d118925fdeaeaa3bf5f06f20c399f29 pristine_git_object: 80300d093ab191a6b60ec5180327e05f636fafaa docs/models/syncreconcilerequestevent2.md: id: 205e01ee38a8 @@ -22752,11 +24499,11 @@ trackedFiles: pristine_git_object: 0d87c6cc3764254d3957ab2c7dcf1f86e992e576 docs/models/syncreconcilerequestevent3.md: id: 9882ca04aefa - last_write_checksum: sha1:0be959ca50fb080f1e7cd7251c37fd9a00186880 + last_write_checksum: sha1:91e5fa22168ce62831e86fd8a0f873365355f869 pristine_git_object: ab4c8f081cdf23a0f799bc16191796dd0cb0eff8 docs/models/syncreconcilerequestevent4.md: id: cff85cda0812 - last_write_checksum: sha1:e477622057c20925089427c8d7c15e43eb2922ed + last_write_checksum: sha1:cb4f4bbbd85f99681daaf9c3015abf9a0f1dbc07 pristine_git_object: 4e5d87c9021ce40cab8984438a1692ed25a5bb55 docs/models/syncreconcilerequestevent5.md: id: 0d3bc4ec3f4f @@ -22764,24 +24511,42 @@ trackedFiles: pristine_git_object: 373526f6c41154cdbb6299af71102a8400316260 docs/models/syncreconcilerequestevent6.md: id: d2ac0b2492bb - last_write_checksum: sha1:81a25a39f0649724a9b5ac6a0fea1a3b17f861a2 + last_write_checksum: sha1:bb308aec5609a6872e180ba13ef260bba1436489 pristine_git_object: 7c0d80365ae0fea9e1dbc38211ba57c2f7b33bf0 docs/models/syncreconcilerequestevent7.md: id: 1689ff2a1699 - last_write_checksum: sha1:93b801f8433be75890fe3b1852da8cb3664c4ed9 + last_write_checksum: sha1:40ab948f7c4b9c4e60299fafffbda316f22d906c pristine_git_object: 3bba62429976a8477ce9e9e1f338df207b9b991e docs/models/syncreconcilerequestevent8.md: id: 59a20c2502d7 - last_write_checksum: sha1:f06ec83eee4ccec64a6c21cd99b416b8e61489d8 + last_write_checksum: sha1:f59a7a3dc298d466f90fa5e3f555aaf5dc38ab3d pristine_git_object: 225afd67a9348784511bd488d10c01bcd755e9a5 docs/models/syncreconcilerequestevent9.md: id: 0e82e4a35b89 - last_write_checksum: sha1:d62ce2fbe846539a9cd4b95847042ea60438f13b + last_write_checksum: sha1:e9e1ef872fa4c5baae3468e82d31a2a5420f1854 pristine_git_object: c37b56ad692df4520bd7b512a9dbeb70de2d0788 + docs/models/syncreconcilerequestinitialsetupauthority.md: + last_write_checksum: sha1:c1440cdcb7b74c512f322674950d4b24e9c8cb51 docs/models/syncreconcilerequestmachine.md: id: e2c8ef0c6d2b last_write_checksum: sha1:6973be530c44831dcf65a476a1d0b4bfb1f864a8 pristine_git_object: 38aa35a20e945a8dbaef7b75099daaced85f65e2 + docs/models/syncreconcilerequestmodel1.md: + last_write_checksum: sha1:587c0d93b918d69310dd762ada4efeea43578e4e + docs/models/syncreconcilerequestmodel2.md: + last_write_checksum: sha1:12d7b6c74a4cd7aa719b6f14bb0a650dcf6203ae + docs/models/syncreconcilerequestmodel3.md: + last_write_checksum: sha1:9f5c7a4b3ffe98c6c14f491d8ea27463e531e609 + docs/models/syncreconcilerequestmodel4.md: + last_write_checksum: sha1:e6b8889308e7e44b01b060acc5a6dba014b955bd + docs/models/syncreconcilerequestmodelavailability1.md: + last_write_checksum: sha1:d67d9f186f7dae004897de735b8e8d2eba7f3408 + docs/models/syncreconcilerequestmodelavailability2.md: + last_write_checksum: sha1:539d1b4c82b2d03c47ed290e2c495633ccf8d234 + docs/models/syncreconcilerequestmodelavailability3.md: + last_write_checksum: sha1:89e65dcee049878b029feb38a58ca0c240d09771 + docs/models/syncreconcilerequestmodelavailability4.md: + last_write_checksum: sha1:5f94367749f9304e960a4c960f1f400684a42406 docs/models/syncreconcilerequestoutputs.md: id: a032b1424734 last_write_checksum: sha1:ce941e75f04f1a371cdec7a234ffed6da6d7b2c2 @@ -22790,6 +24555,158 @@ trackedFiles: id: 3ce376f93c07 last_write_checksum: sha1:179d9c8063c512f6ae5f21fe64375aa0272e7df2 pristine_git_object: 41bdb2c984a8bf09720b2c726a0dde10380d830c + docs/models/syncreconcilerequestpendingpreparedstack.md: + last_write_checksum: sha1:3b96b74d2ccf4c9b92394a6e958f84f0d2242d7b + docs/models/syncreconcilerequestpendingpreparedstackconfig.md: + last_write_checksum: sha1:8e9434d2766fdb757d4984ca6f2f154fb96f3070 + docs/models/syncreconcilerequestpendingpreparedstackdefaultboolean.md: + last_write_checksum: sha1:0ca7a1bf852dc6292513eebb0fc4f87224fddc88 + docs/models/syncreconcilerequestpendingpreparedstackdefaultnumber.md: + last_write_checksum: sha1:6ded949e8d4272c730aa7f4a7dac8f264a802f5c + docs/models/syncreconcilerequestpendingpreparedstackdefaultstring.md: + last_write_checksum: sha1:9ace7ed9996609d99d6a3aeeb94270f898e4c57f + docs/models/syncreconcilerequestpendingpreparedstackdefaultstringlist.md: + last_write_checksum: sha1:08f3962aafa7f9917957bf73accc9ae22c0daae4 + docs/models/syncreconcilerequestpendingpreparedstackdefaultunion.md: + last_write_checksum: sha1:eeb65017d53a85afee0d9c029dacdb4adef339e5 + docs/models/syncreconcilerequestpendingpreparedstackdependency.md: + last_write_checksum: sha1:e96737241e700dfc22c0dab3b054c0d28418d5a5 + docs/models/syncreconcilerequestpendingpreparedstackenv.md: + last_write_checksum: sha1:8c1787b30b6b45c4a7acc2062c312d4fd15cf3f2 + docs/models/syncreconcilerequestpendingpreparedstackextend.md: + last_write_checksum: sha1:e230a8fad418f876d857eae874bf9e14b438167c + docs/models/syncreconcilerequestpendingpreparedstackextendaw.md: + last_write_checksum: sha1:1fe6a5314aeded526191126e1cc77ec8b7fac6f0 + docs/models/syncreconcilerequestpendingpreparedstackextendawbinding.md: + last_write_checksum: sha1:af03fc52c3e46389ed3b4a660c4224cbb27f5fad + docs/models/syncreconcilerequestpendingpreparedstackextendawgrant.md: + last_write_checksum: sha1:22f634227005536f7ce1095997385d68e22b4bac + docs/models/syncreconcilerequestpendingpreparedstackextendawstack.md: + last_write_checksum: sha1:b43dfac6920d0445c0be88b8962fa9dc364f8e12 + docs/models/syncreconcilerequestpendingpreparedstackextendazure.md: + last_write_checksum: sha1:102524c2d8afa6e5b10a74a8cf6afdb4fcd1a898 + docs/models/syncreconcilerequestpendingpreparedstackextendazurebinding.md: + last_write_checksum: sha1:c047e03b45df6b6f9601e09998769570873c11a6 + docs/models/syncreconcilerequestpendingpreparedstackextendazuregrant.md: + last_write_checksum: sha1:2c30d68c8457c1561b2f225bec4ab3baff7ef0cf + docs/models/syncreconcilerequestpendingpreparedstackextendazurestack.md: + last_write_checksum: sha1:b8c5cd7b7c75019774a61e1ae63372a7b6add7aa + docs/models/syncreconcilerequestpendingpreparedstackextendeffect.md: + last_write_checksum: sha1:e6ba41adecd0914e6836d7709cba24a1f9e94eec + docs/models/syncreconcilerequestpendingpreparedstackextendgcp.md: + last_write_checksum: sha1:8f319738c95ad16730dda87c6c658b6b8e0555f6 + docs/models/syncreconcilerequestpendingpreparedstackextendgcpbinding.md: + last_write_checksum: sha1:0e8339981c8c14bcfc845a4e2b5ad2961aa4417b + docs/models/syncreconcilerequestpendingpreparedstackextendgcpgrant.md: + last_write_checksum: sha1:dc558cb1a5c60a83e08b780be700e8f1e35bb024 + docs/models/syncreconcilerequestpendingpreparedstackextendgcpstack.md: + last_write_checksum: sha1:5a08ae8bfe22e1498601249375f3540b4d3eae38 + docs/models/syncreconcilerequestpendingpreparedstackextendplatforms.md: + last_write_checksum: sha1:624e9552e42b2c9c8c866e2e5f0e87081149f02d + docs/models/syncreconcilerequestpendingpreparedstackextendunion.md: + last_write_checksum: sha1:1eedb4f2a5f7b9bbe17bdaf272e31ba96d488489 + docs/models/syncreconcilerequestpendingpreparedstackinput.md: + last_write_checksum: sha1:3c402ca06588f51530b6a3db065f770bdccbed14 + docs/models/syncreconcilerequestpendingpreparedstackmanagement1.md: + last_write_checksum: sha1:babb18e35057ac97a1c0e9002f460250e947b195 + docs/models/syncreconcilerequestpendingpreparedstackmanagement2.md: + last_write_checksum: sha1:ee7c9672ff487e06fefbd0d2cf5c4697eb818c11 + docs/models/syncreconcilerequestpendingpreparedstackmanagementenum.md: + last_write_checksum: sha1:62e88bb437d8f1a9a64d70013f15c7fb2fc5889d + docs/models/syncreconcilerequestpendingpreparedstackmanagementunion.md: + last_write_checksum: sha1:a48e139252ce1d866187dad820f5659ab4f82fee + docs/models/syncreconcilerequestpendingpreparedstackoverride.md: + last_write_checksum: sha1:f6cf5363694f71d5e234a4b5a18d61fa5abee103 + docs/models/syncreconcilerequestpendingpreparedstackoverrideaw.md: + last_write_checksum: sha1:72f966820c046a48cb42725da88c908e48c60add + docs/models/syncreconcilerequestpendingpreparedstackoverrideawbinding.md: + last_write_checksum: sha1:f8230c1d1dafdeafc1d5ef14c82fb89fc816c59f + docs/models/syncreconcilerequestpendingpreparedstackoverrideawgrant.md: + last_write_checksum: sha1:ec026d598900bdfe8cf7fb0a4b26272d010c57f5 + docs/models/syncreconcilerequestpendingpreparedstackoverrideawstack.md: + last_write_checksum: sha1:db950fb9a950a137345b2e2cfafcc5918a4ba596 + docs/models/syncreconcilerequestpendingpreparedstackoverrideazure.md: + last_write_checksum: sha1:0ea96cc8f91e86c0f24c23773db64f5482f0adef + docs/models/syncreconcilerequestpendingpreparedstackoverrideazurebinding.md: + last_write_checksum: sha1:745420a6d79719f7a92ed44953fa68285f9ec089 + docs/models/syncreconcilerequestpendingpreparedstackoverrideazuregrant.md: + last_write_checksum: sha1:122f79adf99530a05d4f94b8b8353b42c6430055 + docs/models/syncreconcilerequestpendingpreparedstackoverrideazurestack.md: + last_write_checksum: sha1:231e5970e9e9ed169aa5606b5cbfa6936dac2f90 + docs/models/syncreconcilerequestpendingpreparedstackoverrideeffect.md: + last_write_checksum: sha1:02be1d73b5e74977e881bd587bcddcf797059c0a + docs/models/syncreconcilerequestpendingpreparedstackoverridegcp.md: + last_write_checksum: sha1:d751aba920c2d9296cf19609a0277d5dced78df9 + docs/models/syncreconcilerequestpendingpreparedstackoverridegcpbinding.md: + last_write_checksum: sha1:a690ba734395bfbc568ff9b81ff5e2b48f124213 + docs/models/syncreconcilerequestpendingpreparedstackoverridegcpgrant.md: + last_write_checksum: sha1:72a6a335fa4184f53984ba759a11aa541a4e792b + docs/models/syncreconcilerequestpendingpreparedstackoverridegcpstack.md: + last_write_checksum: sha1:88382d0db16bdc539e987c1de75662c8526aa618 + docs/models/syncreconcilerequestpendingpreparedstackoverrideplatforms.md: + last_write_checksum: sha1:9c3abb1f34ea041e0ec14993768471758cfee9af + docs/models/syncreconcilerequestpendingpreparedstackoverrideunion.md: + last_write_checksum: sha1:4aae8ee411c3c06e2f891719610c1c77f7e155e0 + docs/models/syncreconcilerequestpendingpreparedstackpermissions.md: + last_write_checksum: sha1:a1fe95b7d2b03cc2b4a9aa14a073fee77ed2f24f + docs/models/syncreconcilerequestpendingpreparedstackplatform.md: + last_write_checksum: sha1:07686b1d679fd729a68ae91b55a243857a36f6c5 + docs/models/syncreconcilerequestpendingpreparedstackprofile.md: + last_write_checksum: sha1:50884047e66c2d92255aa3b85200956d93e40709 + docs/models/syncreconcilerequestpendingpreparedstackprofileaw.md: + last_write_checksum: sha1:46851a9d8968cf41aa417cc96234c276fd10b65a + docs/models/syncreconcilerequestpendingpreparedstackprofileawbinding.md: + last_write_checksum: sha1:511e31d2fca0dc014457f78577179cf9d82dafe9 + docs/models/syncreconcilerequestpendingpreparedstackprofileawgrant.md: + last_write_checksum: sha1:83e207da73eed54f76a0e849798906bfc57f4488 + docs/models/syncreconcilerequestpendingpreparedstackprofileawstack.md: + last_write_checksum: sha1:61cdba276681b930ed487dd67ea2b61af7f5c8bf + docs/models/syncreconcilerequestpendingpreparedstackprofileazure.md: + last_write_checksum: sha1:9d16d512490ca43e5cb010b3aad93419d0f43647 + docs/models/syncreconcilerequestpendingpreparedstackprofileazurebinding.md: + last_write_checksum: sha1:bec5724b3d120e30ded43036b2e345189f013ada + docs/models/syncreconcilerequestpendingpreparedstackprofileazuregrant.md: + last_write_checksum: sha1:a0add426f861098cbde9649070355b4ff1a8c971 + docs/models/syncreconcilerequestpendingpreparedstackprofileazurestack.md: + last_write_checksum: sha1:722c6f8b60edf08c227331650a3c7cdaabd81e82 + docs/models/syncreconcilerequestpendingpreparedstackprofileeffect.md: + last_write_checksum: sha1:2c35d0db8ab8bc3ac77c2a692e8313f0ae7ae091 + docs/models/syncreconcilerequestpendingpreparedstackprofilegcp.md: + last_write_checksum: sha1:1b3945987d418db77c8d3e2473d2d4492c48d1e9 + docs/models/syncreconcilerequestpendingpreparedstackprofilegcpbinding.md: + last_write_checksum: sha1:f52459865e3761670a26fd89f02111c452f3a2fe + docs/models/syncreconcilerequestpendingpreparedstackprofilegcpgrant.md: + last_write_checksum: sha1:9c6f6b62da503d22dea9acafb6a2c2f40d1898a4 + docs/models/syncreconcilerequestpendingpreparedstackprofilegcpstack.md: + last_write_checksum: sha1:9de500bea020e7c04352dbc87c85e32492bef489 + docs/models/syncreconcilerequestpendingpreparedstackprofileplatforms.md: + last_write_checksum: sha1:cb68b29199e4db730368aa0b3250e9263edfb8a8 + docs/models/syncreconcilerequestpendingpreparedstackprofileunion.md: + last_write_checksum: sha1:8e959215ec720c0688297b86b71848be33a4ed2a + docs/models/syncreconcilerequestpendingpreparedstackprovidedby.md: + last_write_checksum: sha1:59084968bddcf26b3a69a126d3c520e8c953378c + docs/models/syncreconcilerequestpendingpreparedstackresources.md: + last_write_checksum: sha1:22bffbd3de534283ea38246202b92928dbe62040 + docs/models/syncreconcilerequestpendingpreparedstacksupportedplatform.md: + last_write_checksum: sha1:61c27fb0b805fb47879161e33693d1f4f2465ccb + docs/models/syncreconcilerequestpendingpreparedstacktypeboolean.md: + last_write_checksum: sha1:0182409a93f33fa3c36021b3692abcd2f3169437 + docs/models/syncreconcilerequestpendingpreparedstacktypeenvenum.md: + last_write_checksum: sha1:6f5e906c5448413ee9a62fef46ba07e98a6bdacf + docs/models/syncreconcilerequestpendingpreparedstacktypenumber.md: + last_write_checksum: sha1:363c28a957d0e980a4b604db0c2f6b7d3554542d + docs/models/syncreconcilerequestpendingpreparedstacktypestring.md: + last_write_checksum: sha1:9d68bd0d1b0924f96a7179bf7d1bd78c9ee887f0 + docs/models/syncreconcilerequestpendingpreparedstacktypestringlist.md: + last_write_checksum: sha1:ba22af2cc4a24cca96b398f3f6e2bbdf1da103e0 + docs/models/syncreconcilerequestpendingpreparedstacktypeunion.md: + last_write_checksum: sha1:f7151aa11ca0ed9475dae334f4f2bb3fdc26979c + docs/models/syncreconcilerequestpendingpreparedstackunion.md: + last_write_checksum: sha1:4633b4ff08d5e813c564b835da07a369a959880d + docs/models/syncreconcilerequestpendingpreparedstackvalidation.md: + last_write_checksum: sha1:31104034d7f2029974edbab0319ab131ae380e68 + docs/models/syncreconcilerequestpendingpreparedstackvalidationunion.md: + last_write_checksum: sha1:cdb5f3d0895d331f421775ad5ffa14a37df4716c docs/models/syncreconcilerequestplatform.md: id: 9a3bc70a4dbd last_write_checksum: sha1:4cc3c5a6acf5ea7910493e240c71470203e3c754 @@ -23076,7 +24993,7 @@ trackedFiles: pristine_git_object: a64fc45963549993123c1e3edadae4dadf033f91 docs/models/syncreconcilerequestpreparedstackresources.md: id: 3fa8360af38c - last_write_checksum: sha1:c73785c83223cd83d57c46e49b8837d4cefee632 + last_write_checksum: sha1:7a4a00164ef51af8c7682e223cca1ff1914c9330 pristine_git_object: 47457bd69d68e6ca4d15b5b65e15b087336dfa1c docs/models/syncreconcilerequestpreparedstacksupportedplatform.md: id: be009511cf11 @@ -23126,54 +25043,20 @@ trackedFiles: id: ea7e769eb92d last_write_checksum: sha1:65f49c248f37e5438fa8103ac40dd781cdc89071 pristine_git_object: 8ccb2b167da8d10a429a46b8c5ca887bb05a5ae5 + docs/models/syncreconcilerequestrepository.md: + last_write_checksum: sha1:0430d7bc536559fe6fe2fb09f3e36f330fb3f234 docs/models/syncreconcilerequestruntimemetadata.md: id: cd7ac50f8ae2 - last_write_checksum: sha1:97deb06c1dd40a394af7ad156533077bdba7dfde + last_write_checksum: sha1:eacd4a88b4366352307ce4acd5e38f9fe7cb511a pristine_git_object: 4e4fa25e3e838a28c7bad5cd53e313748adfe73a docs/models/syncreconcilerequestruntimemetadataunion.md: id: 7d76aaa81d55 last_write_checksum: sha1:49468b56c678f9e3abb66a65fe62115e01c82b76 pristine_git_object: 48f649d6c9f778c910e2bebecd0d64583511fe0c - docs/models/syncreconcilerequestsource1.md: - id: 336271f179d6 - last_write_checksum: sha1:250babb11f397fb231a86994549990e148b512f5 - pristine_git_object: e088c765db394533f6dada1b1f02fae2f5f8a16d - docs/models/syncreconcilerequestsource10.md: - id: 85264d24e2ce - last_write_checksum: sha1:25aa2cc80d83c067a5addfe0400eb17969c37bd2 - pristine_git_object: 06894983dea8114d8a82ea91c0ee4b759c5f9fae - docs/models/syncreconcilerequestsource2.md: - id: 3794274b66a7 - last_write_checksum: sha1:3f0df8d7ce40412e41eae2d5a1d069ab42ed8aa2 - pristine_git_object: dbfed25d3badeab84ac272b787d5cc136736df14 - docs/models/syncreconcilerequestsource3.md: - id: cde5971e348c - last_write_checksum: sha1:888bd0d8235b5a9f57bbf4bff1fd174e49fb79ce - pristine_git_object: 307c9c33052d95aa217c3912d70cccc52a936278 - docs/models/syncreconcilerequestsource4.md: - id: d64609e76895 - last_write_checksum: sha1:a2820b6cb9e09bc00c1c46016112166411d01666 - pristine_git_object: a7166492d4c8baaab3d98f65c0ba88f674ad5ed2 - docs/models/syncreconcilerequestsource5.md: - id: 7b0e9c5fcc5a - last_write_checksum: sha1:207234f4adfd51834659ba6f3574b26e0d66a95e - pristine_git_object: fc48955874929d5e6f90e9d1d7029d103bf411f8 - docs/models/syncreconcilerequestsource6.md: - id: 71003717fac2 - last_write_checksum: sha1:200203ac681dbc3245ad7ddcdb201db8c94002c1 - pristine_git_object: 16ea50e2cb94997360a626f2a758b593a637b3ba - docs/models/syncreconcilerequestsource7.md: - id: 1a219238598d - last_write_checksum: sha1:b564e2c5378db4813064da92c8ea6dc0901ca151 - pristine_git_object: 9101f77b6252115f203b0c52ddb511263693e1ad - docs/models/syncreconcilerequestsource8.md: - id: 1ad0568ca365 - last_write_checksum: sha1:d51ad290749c7bf17f12c637e1fc3a9dc7461ce1 - pristine_git_object: 87c3e1b014628b7918c89164ea8810d8dbc4117e - docs/models/syncreconcilerequestsource9.md: - id: 3f3f19f103b3 - last_write_checksum: sha1:1342cdbbd1e14b1f079b54b1798ab28cc1ec1540 - pristine_git_object: f4ec35288d4c73ab01d9ab19c940c1c66f27bbce + docs/models/syncreconcilerequestsetupupdateauthorization.md: + last_write_checksum: sha1:68f6259d66a48cb163cb642294e39208867a3159 + docs/models/syncreconcilerequestsetupupdateauthorizationunion.md: + last_write_checksum: sha1:a76b8cc6e11f5edcae3f23db4c6d7a25b884aa09 docs/models/syncreconcilerequeststackstate.md: id: 675b11ef23bc last_write_checksum: sha1:02e7c283e3dadc014dc248bbea4915463d396c11 @@ -23496,7 +25379,7 @@ trackedFiles: pristine_git_object: 46b103daa1ac28da86c5168689e3288950111b7b docs/models/syncreconcilerequesttargetreleaseresources.md: id: 03a2ccb588d7 - last_write_checksum: sha1:d653292e15306bff736038c69915a5a420f947aa + last_write_checksum: sha1:00cdff3e3ad48733d738e9611c326eceeb81aef6 pristine_git_object: 1e93239fc7a607273d55ea4d2931c7be0c82352f docs/models/syncreconcilerequesttargetreleasestack.md: id: 66cdb36a7a2a @@ -23586,6 +25469,12 @@ trackedFiles: id: c627797032cc last_write_checksum: sha1:32cae4ba6da60922c3004f3d8e85330bc9d19989 pristine_git_object: f7078afbb45bb0db18750930892df6688ed9a971 + docs/models/syncreconcileresponseapikey.md: + last_write_checksum: sha1:f08516b740b88d32420a9df617f8d88aec8b9d9c + docs/models/syncreconcileresponseapikeysecretref.md: + last_write_checksum: sha1:d6d2b14f422c2f696b7a2a11b856828bc4a892d2 + docs/models/syncreconcileresponseapikeyunion.md: + last_write_checksum: sha1:3a1516c45d701e2dd4e2075ef876c0b4c6ea8bb7 docs/models/syncreconcileresponseawsstacksettings.md: id: 0d67519dc0fc last_write_checksum: sha1:1b964de7da5b9e3ec23947a4e36ec9e72f5ac64f @@ -24148,7 +26037,7 @@ trackedFiles: pristine_git_object: 318429b6e13e831abe575de8da496062f1099eb2 docs/models/syncreconcileresponsecurrentreleaseresources.md: id: 47de7ae0bff8 - last_write_checksum: sha1:30e881e23c4be6cb481330440b634e3560e7fdc3 + last_write_checksum: sha1:9beda8b9463cbed2d74907fae9a02546b7623c71 pristine_git_object: cf00a8abed349e1a1cebd114ed1a957a01608048 docs/models/syncreconcileresponsecurrentreleasestack.md: id: 5d168ce1cf5b @@ -24446,6 +26335,8 @@ trackedFiles: id: bf17e44a5928 last_write_checksum: sha1:472515f94a6fcb555f86c1211232777235fd4843 pristine_git_object: e0f7b0db10b8d4c453dbcf9124646c2410adbfe5 + docs/models/syncreconcileresponseexternalbindingsai.md: + last_write_checksum: sha1:600fccd68fc745a38b4d637a1ac77ad5940fbcba docs/models/syncreconcileresponseexternalbindingsaurora.md: id: e584c0ec157b last_write_checksum: sha1:a80a937fc71421a3a08d2660e664f56acd5eac32 @@ -24456,7 +26347,7 @@ trackedFiles: pristine_git_object: e2d080bfec89f61158213e7453cb5ecd64a3cd5f docs/models/syncreconcileresponseexternalbindingscloudsql.md: id: f6f35ba820f8 - last_write_checksum: sha1:5800f89b572d961cf8bee0f6c1ab11dc44e8345c + last_write_checksum: sha1:b4b70d7d6d10f45b76c33c5d99526c1ce7241eb1 pristine_git_object: 5af93c2ce98361fdfe4a778369dbb2a4bedfa2cc docs/models/syncreconcileresponseexternalbindingscontainerappsenvironment.md: id: 95910e9e4208 @@ -24472,7 +26363,7 @@ trackedFiles: pristine_git_object: 245e7d446cfec99ef0e0ab2e64ebdadc29bc565b docs/models/syncreconcileresponseexternalbindingsexternal.md: id: e945610c3310 - last_write_checksum: sha1:a479785a9ccd0171fa8d6511aa89f8b8bc7d8fc7 + last_write_checksum: sha1:97cfff29cb3e7799d8316519c7feb5f01e52b165 pristine_git_object: d536b460f2aea44df3b302dc0c17cca2f1f69af1 docs/models/syncreconcileresponseexternalbindingsfirestore.md: id: bc9d1a33ea3c @@ -24580,8 +26471,16 @@ trackedFiles: pristine_git_object: f31e9098998e55fe19babd1a52a0ad17b4f6ea9f docs/models/syncreconcileresponseexternalbindingsunion7.md: id: d8e15d17515d - last_write_checksum: sha1:dd0f838981bbc175ab1c95e21de8979b31475949 + last_write_checksum: sha1:f5b3304d9a048c53147eee963c895eab7776aa3a pristine_git_object: 36d0ee555e119289ce45b4365f47eee3ce5f38bf + docs/models/syncreconcileresponsefailuredomains1.md: + last_write_checksum: sha1:ec6b7eb67a2786fc3fe123a8d381ccca5714d383 + docs/models/syncreconcileresponsefailuredomains2.md: + last_write_checksum: sha1:918d1600df3c1d6e53529c7fe4c9d9daee6c9268 + docs/models/syncreconcileresponsefailuredomainsunion1.md: + last_write_checksum: sha1:45d228744c3fbae12c0717e036d443713af11678 + docs/models/syncreconcileresponsefailuredomainsunion2.md: + last_write_checksum: sha1:5f01fa8cb0e4f30417ea50de13e1b8ee3df1ff7a docs/models/syncreconcileresponsegcpimages.md: id: b6259d91a421 last_write_checksum: sha1:ac6dd96047acd3f85d9afba6c2a7aa1c126e2cb4 @@ -24658,6 +26557,8 @@ trackedFiles: id: 38884700479c last_write_checksum: sha1:9fb922b97e8fcdfc1ba6f1b2e4f4d88ed4680624 pristine_git_object: 8b1964ada47b729131c4c96bec7029276b4e1576 + docs/models/syncreconcileresponseinitialsetupauthority.md: + last_write_checksum: sha1:ff83218e5de7854c8ab9ed67ddc10370ef4aaaf7 docs/models/syncreconcileresponsekeyprefix1.md: id: 37eef7d37c1f last_write_checksum: sha1:6c3ed38cb22212989408d4c83386d9ff14e9fc4f @@ -24830,6 +26731,204 @@ trackedFiles: id: 69a69d3edb59 last_write_checksum: sha1:3e53e1bcc2802edc9b6095cf0a40742d67deb56d pristine_git_object: 6cdc4b4af526773a18e4e20b69339d7badf1cc88 + docs/models/syncreconcileresponsependingpreparedstack.md: + last_write_checksum: sha1:cb2ebf704be8ee66da21f7360e9975bf29221e62 + docs/models/syncreconcileresponsependingpreparedstackconfig.md: + last_write_checksum: sha1:211e413341a741fcd172ae509c1186c2d6a0b65b + docs/models/syncreconcileresponsependingpreparedstackdefaultboolean.md: + last_write_checksum: sha1:3a92d2c2a796f75f750575d9bf32de99007410a8 + docs/models/syncreconcileresponsependingpreparedstackdefaultnumber.md: + last_write_checksum: sha1:156a38b210fea1cc0a93d3f63d2a86fe85b7f5cc + docs/models/syncreconcileresponsependingpreparedstackdefaultstring.md: + last_write_checksum: sha1:991214ba89fe239cf993fe6f7720eb88637ce7cb + docs/models/syncreconcileresponsependingpreparedstackdefaultstringlist.md: + last_write_checksum: sha1:866bba7599e39a5023b95ce66c54f520bdea5700 + docs/models/syncreconcileresponsependingpreparedstackdefaultunion.md: + last_write_checksum: sha1:62d750f0de085a4d82b111d6c0669ab7c547a792 + docs/models/syncreconcileresponsependingpreparedstackdependency.md: + last_write_checksum: sha1:491b81bd712f9c07fae6ca2c9b1f5c2b4e4dc310 + docs/models/syncreconcileresponsependingpreparedstackenv.md: + last_write_checksum: sha1:c04aff9d9bddb486fcc85de3150992562b1ecb71 + docs/models/syncreconcileresponsependingpreparedstackextend.md: + last_write_checksum: sha1:5ffc0d60a82beb78d9ad1c8d3d6fb0b2e5b1dc24 + docs/models/syncreconcileresponsependingpreparedstackextendaw.md: + last_write_checksum: sha1:27f4ce31bed516e3cdfe632bf69dc09d8782d9a8 + docs/models/syncreconcileresponsependingpreparedstackextendawbinding.md: + last_write_checksum: sha1:288e4808831f683b348194ded6f78611fe3608a7 + docs/models/syncreconcileresponsependingpreparedstackextendawgrant.md: + last_write_checksum: sha1:62821e026eea84804fe108fbb7e6eb94c11ef829 + docs/models/syncreconcileresponsependingpreparedstackextendawresource.md: + last_write_checksum: sha1:aa487bd843d40f1b2b27ec5eab2e01490ee07e69 + docs/models/syncreconcileresponsependingpreparedstackextendawstack.md: + last_write_checksum: sha1:288bf1b04bc455f9c5fa8cb8ca5adfcb948446be + docs/models/syncreconcileresponsependingpreparedstackextendazure.md: + last_write_checksum: sha1:73cff17e21210ba0b95a83feda529170d303c62e + docs/models/syncreconcileresponsependingpreparedstackextendazurebinding.md: + last_write_checksum: sha1:5eb18fe9253a341cc8fab2294cd3ea8625585daa + docs/models/syncreconcileresponsependingpreparedstackextendazuregrant.md: + last_write_checksum: sha1:8b5ef7239b8eeebb9ec3de34ca5e00641f05deff + docs/models/syncreconcileresponsependingpreparedstackextendazureresource.md: + last_write_checksum: sha1:659b0114667ae601f88f756b1f503f219f0ba2aa + docs/models/syncreconcileresponsependingpreparedstackextendazurestack.md: + last_write_checksum: sha1:13b787900204cb6638ef834bec921da777251175 + docs/models/syncreconcileresponsependingpreparedstackextendconditionresource.md: + last_write_checksum: sha1:7d19739358912ca9dfe237432677aeab97070c8b + docs/models/syncreconcileresponsependingpreparedstackextendconditionstack.md: + last_write_checksum: sha1:5ec6e5436b664aa6e29f6fd17116464e47b856e2 + docs/models/syncreconcileresponsependingpreparedstackextendeffect.md: + last_write_checksum: sha1:14a2359ac2d29611cffa245c88b98002d5074680 + docs/models/syncreconcileresponsependingpreparedstackextendgcp.md: + last_write_checksum: sha1:5f12f363cf7845dfd1a9e343d401c983769351a7 + docs/models/syncreconcileresponsependingpreparedstackextendgcpbinding.md: + last_write_checksum: sha1:1a4dd438b09112c7dae907e8edb0110f1e31a5db + docs/models/syncreconcileresponsependingpreparedstackextendgcpgrant.md: + last_write_checksum: sha1:644bbb4d56692398fdd0a4b8b8a78aaea8cbaef7 + docs/models/syncreconcileresponsependingpreparedstackextendgcpresource.md: + last_write_checksum: sha1:8f3e9e045bc93fbec601a726c1df2ea407999b84 + docs/models/syncreconcileresponsependingpreparedstackextendgcpstack.md: + last_write_checksum: sha1:4d565547123182d2392eede1ce58c72245e244f9 + docs/models/syncreconcileresponsependingpreparedstackextendplatforms.md: + last_write_checksum: sha1:34a420ab87f8da715cc3c855ec291d0f086e4ba4 + docs/models/syncreconcileresponsependingpreparedstackextendresourceconditionunion.md: + last_write_checksum: sha1:49c724d616aa36255b9d5a9c2d7b5d5b4b4815ab + docs/models/syncreconcileresponsependingpreparedstackextendstackconditionunion.md: + last_write_checksum: sha1:8a4160bb62ecd01a44774d4797229bf3bdb2fa7d + docs/models/syncreconcileresponsependingpreparedstackextendunion.md: + last_write_checksum: sha1:4097d9bd4f10da56cb121e8a5b20225f413f9f79 + docs/models/syncreconcileresponsependingpreparedstackinput.md: + last_write_checksum: sha1:655d3ca365628e573b673bede58c198b0d20f4b0 + docs/models/syncreconcileresponsependingpreparedstackkind.md: + last_write_checksum: sha1:d43fed9475667a9fbb68dd5da7fbc82b55797b9a + docs/models/syncreconcileresponsependingpreparedstacklifecycle.md: + last_write_checksum: sha1:60822d0a43cf6fc4bc07fdc676919684657eda6b + docs/models/syncreconcileresponsependingpreparedstackmanagement1.md: + last_write_checksum: sha1:285b3e18d77c222bd7883bb4d11ff2849745bfd4 + docs/models/syncreconcileresponsependingpreparedstackmanagement2.md: + last_write_checksum: sha1:b861c14fefbbf6a72fd6a2c548743beb24629da0 + docs/models/syncreconcileresponsependingpreparedstackmanagementenum.md: + last_write_checksum: sha1:cb38cf14ff2487a999969de2c3730463cd8f3a06 + docs/models/syncreconcileresponsependingpreparedstackmanagementunion.md: + last_write_checksum: sha1:78c8a88491c16ecc7cfaa1142099ddf2701e0132 + docs/models/syncreconcileresponsependingpreparedstackoverride.md: + last_write_checksum: sha1:93bf445b26cef957df31344cae1f949a931361e1 + docs/models/syncreconcileresponsependingpreparedstackoverrideaw.md: + last_write_checksum: sha1:682e56c5916ac3fbec8b563a9b253a97b8aaf50a + docs/models/syncreconcileresponsependingpreparedstackoverrideawbinding.md: + last_write_checksum: sha1:dabc4b9ef4bbf5d238887a2aea27fe6adee83c07 + docs/models/syncreconcileresponsependingpreparedstackoverrideawgrant.md: + last_write_checksum: sha1:7958ded2a18df816d3a2d2953db3afe4e6af98af + docs/models/syncreconcileresponsependingpreparedstackoverrideawresource.md: + last_write_checksum: sha1:77d118935e49ddeb00bc3a3504f4916a5735d3b3 + docs/models/syncreconcileresponsependingpreparedstackoverrideawstack.md: + last_write_checksum: sha1:90759fc847b1a7b05107ff14725524f019eb6d01 + docs/models/syncreconcileresponsependingpreparedstackoverrideazure.md: + last_write_checksum: sha1:651bc2c266f095f8858d51b546b5ad5cc20a56b7 + docs/models/syncreconcileresponsependingpreparedstackoverrideazurebinding.md: + last_write_checksum: sha1:27a44a17efc22fa7e23d9732d3305370c155f4b4 + docs/models/syncreconcileresponsependingpreparedstackoverrideazuregrant.md: + last_write_checksum: sha1:59886073bf6ad5c004a36669a34b820310ec67f5 + docs/models/syncreconcileresponsependingpreparedstackoverrideazureresource.md: + last_write_checksum: sha1:09ac770f53efccdaf96c67017ddc5fd216bdf1fe + docs/models/syncreconcileresponsependingpreparedstackoverrideazurestack.md: + last_write_checksum: sha1:b935c7a2a3ccc71c73ecdbe3231c1e0aa1433f1f + docs/models/syncreconcileresponsependingpreparedstackoverrideconditionresource.md: + last_write_checksum: sha1:5126815593b5ec0a17647a5caa6c54a2505f0903 + docs/models/syncreconcileresponsependingpreparedstackoverrideconditionstack.md: + last_write_checksum: sha1:0a13e55755e8016f1efe54edecd769cb56fc743f + docs/models/syncreconcileresponsependingpreparedstackoverrideeffect.md: + last_write_checksum: sha1:15aa847b9d0169049b8584547eaad94f5119b693 + docs/models/syncreconcileresponsependingpreparedstackoverridegcp.md: + last_write_checksum: sha1:d52466db402620599242da0747c7a89e247ba958 + docs/models/syncreconcileresponsependingpreparedstackoverridegcpbinding.md: + last_write_checksum: sha1:71edfb2007be458fac82af7bce39d247a3be7125 + docs/models/syncreconcileresponsependingpreparedstackoverridegcpgrant.md: + last_write_checksum: sha1:08bd5ba685c783c6b5dcac24e2436194b310cf63 + docs/models/syncreconcileresponsependingpreparedstackoverridegcpresource.md: + last_write_checksum: sha1:f93b8b0c8f03b5231584336234aae26bc15923e2 + docs/models/syncreconcileresponsependingpreparedstackoverridegcpstack.md: + last_write_checksum: sha1:d2f6e298d30a667706707f7ab21c4fe06655b910 + docs/models/syncreconcileresponsependingpreparedstackoverrideplatforms.md: + last_write_checksum: sha1:51a35bd8b44428d2ace88ea6869d01d42c3a61d3 + docs/models/syncreconcileresponsependingpreparedstackoverrideresourceconditionunion.md: + last_write_checksum: sha1:1c75d0f61472c457cf04a8854a61b31947f0fe6e + docs/models/syncreconcileresponsependingpreparedstackoverridestackconditionunion.md: + last_write_checksum: sha1:758f0804c09104dc7dde72a787d764eec131caac + docs/models/syncreconcileresponsependingpreparedstackoverrideunion.md: + last_write_checksum: sha1:3ad7ea6c97ce8fe41223b86161b0f4e727d2f6df + docs/models/syncreconcileresponsependingpreparedstackpermissions.md: + last_write_checksum: sha1:cf47a4a34547091115b0d9da4a9ff91d8fc2d00f + docs/models/syncreconcileresponsependingpreparedstackplatform.md: + last_write_checksum: sha1:e6e3fec30c7fcdee56b5d5793cf0f3f500b804d6 + docs/models/syncreconcileresponsependingpreparedstackprofile.md: + last_write_checksum: sha1:f620576cf6f8c1335d35eff894178fb023fe64ba + docs/models/syncreconcileresponsependingpreparedstackprofileaw.md: + last_write_checksum: sha1:eb3d70d18b1247bdc4a00b8a5e73f919c3fb3cbf + docs/models/syncreconcileresponsependingpreparedstackprofileawbinding.md: + last_write_checksum: sha1:86f249b4ee55eaf6432ed2dc4a2c37fe3800ee74 + docs/models/syncreconcileresponsependingpreparedstackprofileawgrant.md: + last_write_checksum: sha1:fac61d271a57747773bbc225e1458236c345d9cd + docs/models/syncreconcileresponsependingpreparedstackprofileawresource.md: + last_write_checksum: sha1:fbb92c435811aa1501db94a23124d821805e20bb + docs/models/syncreconcileresponsependingpreparedstackprofileawstack.md: + last_write_checksum: sha1:f6d6a68b9602115df4ef9cc28ba337f4acbd2432 + docs/models/syncreconcileresponsependingpreparedstackprofileazure.md: + last_write_checksum: sha1:113f9248dc1e3f01fd4b7707d3cc10daa556cd6d + docs/models/syncreconcileresponsependingpreparedstackprofileazurebinding.md: + last_write_checksum: sha1:f7b48c8426d0f9d85c6d5581753ecad19a527b47 + docs/models/syncreconcileresponsependingpreparedstackprofileazuregrant.md: + last_write_checksum: sha1:9de4f7ac7aaf3f457485134a655e9a4cf4251686 + docs/models/syncreconcileresponsependingpreparedstackprofileazureresource.md: + last_write_checksum: sha1:7458035bbe810d0982a5834b1af5e9e15523d973 + docs/models/syncreconcileresponsependingpreparedstackprofileazurestack.md: + last_write_checksum: sha1:0dcd7c7f3443370cb488643cc52261f1c1b56fa3 + docs/models/syncreconcileresponsependingpreparedstackprofileconditionresource.md: + last_write_checksum: sha1:c701d5376a8e7140648bc89ba83fae1f794ea004 + docs/models/syncreconcileresponsependingpreparedstackprofileconditionstack.md: + last_write_checksum: sha1:694f9ea843d273515e48c26d0469af781720dc4a + docs/models/syncreconcileresponsependingpreparedstackprofileeffect.md: + last_write_checksum: sha1:6ffd39ecae456d4a8e1cb2ca396b1410dfdbdbb0 + docs/models/syncreconcileresponsependingpreparedstackprofilegcp.md: + last_write_checksum: sha1:d1aee71198b82ed49a0440bbd019f0585d4edb57 + docs/models/syncreconcileresponsependingpreparedstackprofilegcpbinding.md: + last_write_checksum: sha1:4971b8117a11d9282e1d24944f38b1c3c855b2f3 + docs/models/syncreconcileresponsependingpreparedstackprofilegcpgrant.md: + last_write_checksum: sha1:275a4d6538234586e21c72a582555297f2f8fe1d + docs/models/syncreconcileresponsependingpreparedstackprofilegcpresource.md: + last_write_checksum: sha1:d28df227e77aa181e2807efee4ef416632e45593 + docs/models/syncreconcileresponsependingpreparedstackprofilegcpstack.md: + last_write_checksum: sha1:af4e59e66e6a04660ce6389698709a30ee47de3e + docs/models/syncreconcileresponsependingpreparedstackprofileplatforms.md: + last_write_checksum: sha1:f6ef9c824d2b9ea646888f1afa171cd95064052e + docs/models/syncreconcileresponsependingpreparedstackprofileresourceconditionunion.md: + last_write_checksum: sha1:b8d26163a377ec56559d0f1d66e12889c5a2b48b + docs/models/syncreconcileresponsependingpreparedstackprofilestackconditionunion.md: + last_write_checksum: sha1:82b45decf4764883da2afea6b37cdad79fdd6de6 + docs/models/syncreconcileresponsependingpreparedstackprofileunion.md: + last_write_checksum: sha1:05abad9bd43eac0a8cd237032c2f5f8a653e1c3f + docs/models/syncreconcileresponsependingpreparedstackprovidedby.md: + last_write_checksum: sha1:d0763c7a008b66fd8611aa556b92901d7c97d00e + docs/models/syncreconcileresponsependingpreparedstackresources.md: + last_write_checksum: sha1:e86a0dc6f4aff7e9f5faf71e9f469edfdaf1022a + docs/models/syncreconcileresponsependingpreparedstacksupportedplatform.md: + last_write_checksum: sha1:e88945eea10d14d8836bef2ff5a29eff348aa542 + docs/models/syncreconcileresponsependingpreparedstacktypeboolean.md: + last_write_checksum: sha1:81a773ed6294a6aa1cd01f3f9fbf5c56f97045b1 + docs/models/syncreconcileresponsependingpreparedstacktypeenvenum.md: + last_write_checksum: sha1:f0ed968eaf29fc7041cbee6037917d66f7eac9b6 + docs/models/syncreconcileresponsependingpreparedstacktypenumber.md: + last_write_checksum: sha1:86d21b8beabd789bf0e97e09f06b9550c4798257 + docs/models/syncreconcileresponsependingpreparedstacktypestring.md: + last_write_checksum: sha1:5beaffac019b736bb0d7bb8766f626bda856de2b + docs/models/syncreconcileresponsependingpreparedstacktypestringlist.md: + last_write_checksum: sha1:e42ddb2144265dff6035e4e05dd573a50245a834 + docs/models/syncreconcileresponsependingpreparedstacktypeunion.md: + last_write_checksum: sha1:3d30bd83e8d9963511164a08713bdbe715b96521 + docs/models/syncreconcileresponsependingpreparedstackunion.md: + last_write_checksum: sha1:ed3e76c71c080a3150c6fbe0dd07fecdf075da97 + docs/models/syncreconcileresponsependingpreparedstackvalidation.md: + last_write_checksum: sha1:e701d6b17d171dc3a31ab918beedfdc13979a211 + docs/models/syncreconcileresponsependingpreparedstackvalidationunion.md: + last_write_checksum: sha1:bcb5f32e9fbd3cd6038c0c8e75204dc79c353f0a docs/models/syncreconcileresponseplatformlocal.md: id: 315da2271cd8 last_write_checksum: sha1:aae032248722bd29dbb5381fccd94797e8d0ec68 @@ -24840,11 +26939,11 @@ trackedFiles: pristine_git_object: 64c9a0d5ae4936176f32955a6e8c2ae1bad143e6 docs/models/syncreconcileresponsepoolsautoscale.md: id: 2093ba0fbfa8 - last_write_checksum: sha1:29bc1d2da83d0763cba17df1da14609df52983f8 + last_write_checksum: sha1:b9dc1f6f2b2aa27f807ca78b38ec24ca6e69fc45 pristine_git_object: 5c8dbdcfc0414114498a4f110ba97502093e85d7 docs/models/syncreconcileresponsepoolsfixed.md: id: 8207de7bec7e - last_write_checksum: sha1:d2700d78a766af498739964cae4463d1cc82728e + last_write_checksum: sha1:939b7c7c9200b44f9bfd53bf0affc11ee86ca574 pristine_git_object: c81e70fbfab13dfa25843b469fdc610cb6ce05e3 docs/models/syncreconcileresponsepoolsunion.md: id: 7edf40084c8f @@ -25264,7 +27363,7 @@ trackedFiles: pristine_git_object: b4a33e7fb6df8b679256fdd92e2781841364984b docs/models/syncreconcileresponsepreparedstackresources.md: id: 191daf8d65e0 - last_write_checksum: sha1:13e7e0c3c80682a8ca0f67244a3a1c0161fcae09 + last_write_checksum: sha1:889063b708dc3494e69075e34902894fbdb4317c pristine_git_object: 996b8ad225706d73396b38b3be54baabf5333df4 docs/models/syncreconcileresponsepreparedstacksupportedplatform.md: id: 20501447a9f9 @@ -25660,12 +27759,24 @@ trackedFiles: pristine_git_object: 29cad4d24be0adb69ba28117a43b13062e2ceda8 docs/models/syncreconcileresponseruntimemetadata.md: id: 373f475926b7 - last_write_checksum: sha1:621f46c3f8a37c799056278dbbdd7da81880332a + last_write_checksum: sha1:c1498e8d5cd536f69992225e8d9d2122620c5ccf pristine_git_object: 0ced73a05cee24e7e65dd63c5a41e23494fa321b docs/models/syncreconcileresponseruntimemetadataunion.md: id: 1c4a89a1cf4a last_write_checksum: sha1:c54310897f285b59d4b8b9b5f5f97298528815d3 pristine_git_object: 4028a6dd2a008d7387fc43333f93b7d7ace3506c + docs/models/syncreconcileresponseservercacertificates.md: + last_write_checksum: sha1:9d9eed3ec52c11ccfa29a4d2842a62bd8ab5900f + docs/models/syncreconcileresponseservercacertificatessecretref.md: + last_write_checksum: sha1:ff9c59756f52405cb947ba0b8e7312696d42985f + docs/models/syncreconcileresponseservercacertificatesunion.md: + last_write_checksum: sha1:42066cb9fe74c71d0b8bbe9ae53ddc5a234f0491 + docs/models/syncreconcileresponsesetupupdateauthorization.md: + last_write_checksum: sha1:d4572480d2b3f5c79bc329244b882c23d431e517 + docs/models/syncreconcileresponsesetupupdateauthorizationunion.md: + last_write_checksum: sha1:94a5b15ff70c61a2e32c4b85632905eed74d16da + docs/models/syncreconcileresponsesslmode.md: + last_write_checksum: sha1:20f1de6fe2d638322d0bd0c43c08158fdeef11df docs/models/syncreconcileresponsestacksettings.md: id: f4ef30daf645 last_write_checksum: sha1:4c24395a4a0d2413e1a34afc572530f6309b69f5 @@ -26136,7 +28247,7 @@ trackedFiles: pristine_git_object: fb65bb4a84fbf9d3b8380c92692b4989b7f8361a docs/models/syncreconcileresponsetargetreleaseresources.md: id: 375a2d058630 - last_write_checksum: sha1:95ad190c9559b1407b2b7a3989facd826ae12b7a + last_write_checksum: sha1:47ce5cd862c2c68c2190b60c950fed02e67219a8 pristine_git_object: 06c7b898ec31403c633209da6c49463f1fd1c9b8 docs/models/syncreconcileresponsetargetreleasestack.md: id: b0909844ceb6 @@ -26322,9 +28433,11 @@ trackedFiles: id: fc1e83661528 last_write_checksum: sha1:86cbd192dfbc6c51e9ee1dac90780e7e18fd4732 pristine_git_object: cfc5e5e426740f00eaf62a142182ab9ca4e99693 + docs/models/syncrenewrequest.md: + last_write_checksum: sha1:0d15a0f428c5ec5cd6ad603f8210c50c325745df docs/models/targetconfig.md: id: 3394f3ed91fe - last_write_checksum: sha1:d54d17a7db46d2103c45d8f1e6fab67de5b2b06e + last_write_checksum: sha1:30933208b4e3f121d96d3f13036878e4c38ca3ae pristine_git_object: f5d85637d0b6f3b681716d78765bb3d1592d849c docs/models/targetenum.md: id: b6f36bd46968 @@ -26470,6 +28583,8 @@ trackedFiles: id: bfc0afcccd16 last_write_checksum: sha1:09b4f6b41130c14f01f28e76a75f4ec3103127f5 pristine_git_object: cb9b64c1ac09e206a25c1bdc211ea59a40c6f6a5 + docs/models/targettypeai.md: + last_write_checksum: sha1:fd3389adc99b0b7368c37d35332fdc1a90bbfa22 docs/models/targettypeartifactregistry1.md: id: af21b83229c2 last_write_checksum: sha1:80777d765137f86805df46ebfcf151b3e08cda0b @@ -26652,7 +28767,7 @@ trackedFiles: pristine_git_object: 3aa27abe4503b0a5ba3cc83061730c857821cd21 docs/models/updatedeploymentinputsresponse.md: id: 3b210da25a37 - last_write_checksum: sha1:3060a5dbbf81fd160d08ade88e62003db1d32f25 + last_write_checksum: sha1:49dd1d6a6007702f30e707726bb1c25e60f86c68 pristine_git_object: 962485c2d1994a3d349e6dba861e1bd81feb7df8 docs/models/updatedeploymentinputsresponsedefaultboolean.md: id: 622977d62462 @@ -26686,6 +28801,8 @@ trackedFiles: id: dce915cb8141 last_write_checksum: sha1:1f3c52f45e2a587e91b9b9dbe596333adee5d3d1 pristine_git_object: 95dbe357f89b678c09732b35903e28c2f0c807f2 + docs/models/updatedeploymentinputsresponseoutcome.md: + last_write_checksum: sha1:32c4e05a6924c65dc889657c03021b92d32a66de docs/models/updatedeploymentinputsresponseplatform.md: id: 3075d792d530 last_write_checksum: sha1:d898fc3ee95d657b1321e4ac88c9daee0b4711d4 @@ -26728,7 +28845,7 @@ trackedFiles: pristine_git_object: 8994005f016603fa4936cad7528549aae854918f docs/models/updatedeploymentsetuppolicy.md: id: 548dfca7c0fe - last_write_checksum: sha1:01021bbf3c5a0d8e5eec27f06c5e5807935574af + last_write_checksum: sha1:156dfd7db32096c3bd123d829d0e4e83650176bb pristine_git_object: 3cbd81fea582bf19bbd879eb281571bd17aeb127 docs/models/updatemanagerdomainbinding.md: id: 8b1e48d60d8f @@ -26738,6 +28855,8 @@ trackedFiles: id: 2d7b18804c22 last_write_checksum: sha1:f4931609c126abed9d0340c7630454536d58f3f9 pristine_git_object: 2ba9a5dd2722d14c88448462be65c36bf10eb06b + docs/models/updateoperationspolicyrequest.md: + last_write_checksum: sha1:98360e88cbb5aca450c769b0ab549fb5afa4cdf3 docs/models/updateproject.md: id: a49881ef0934 last_write_checksum: sha1:2afac1e97455fd9da2ba77ad5e87c0362419bc18 @@ -26796,6 +28915,10 @@ trackedFiles: id: 1fa0bf2ef78e last_write_checksum: sha1:ee71eca6e79c993755e90a416472af6a8d953785 pristine_git_object: 7a10d04401a45bfa926775caef8c02e478efd653 + docs/models/updateworkspacesettingsrequest.md: + last_write_checksum: sha1:0d613da438ca04d53f760d8756afce66182dc169 + docs/models/updateworkspacesettingsrequestdebugpermissionmode.md: + last_write_checksum: sha1:04dcfc14a142f405df1138baf1aeadb97cb2c302 docs/models/usage.md: id: ba79ec873169 last_write_checksum: sha1:29b4a1c903869ec05e7a2875016df51d9c7ae6b3 @@ -26824,6 +28947,8 @@ trackedFiles: id: 3dcb557e1d3a last_write_checksum: sha1:2ee8ddfd3cab9823fead105d51291e892dba5506 pristine_git_object: 14a248ef11ac3177a532a118adb606528da07af3 + docs/models/usernameenum.md: + last_write_checksum: sha1:cf70339deef4b4e8ba8f6f3d153a06cab0e3f1f4 docs/models/userprofile.md: id: 2f5c15209036 last_write_checksum: sha1:9a761c93d49a9e0185a98b5eb60e589d2c1124bb @@ -26958,8 +29083,22 @@ trackedFiles: pristine_git_object: 8afde5ea1893e438604860ab9ddc1c5aa133df73 docs/models/workspacebillingentitlements.md: id: 1439296c684d - last_write_checksum: sha1:bdedb192edc080989d7f585037cd583de3901ee9 + last_write_checksum: sha1:45c20e81b4ec081b0fb655653a453e1ee1c76098 pristine_git_object: 7e417df9210e5de8587092d675e82dc30503bab8 + docs/models/workspaceinvitation.md: + last_write_checksum: sha1:270b808cd03c264ad96697db088e9d2819e6e486 + docs/models/workspaceinvitationpreview.md: + last_write_checksum: sha1:4b739b914377ba99a992e6918ccb4438ac56b64d + docs/models/workspaceinvitationpreviewkind.md: + last_write_checksum: sha1:5e5fef7315e34b470266fa90dc446c9ccec852f1 + docs/models/workspaceinvitationpreviewstate.md: + last_write_checksum: sha1:6d9202681ad838271386b892dacb99389f16224b + docs/models/workspaceinvitationpreviewworkspace.md: + last_write_checksum: sha1:1199a344a4cd686ddb38bbb10160f9f190d3a355 + docs/models/workspaceinvitationstatus.md: + last_write_checksum: sha1:7c59641a03ed904289a2a86a77efce153e1baf12 + docs/models/workspaceinvitelink.md: + last_write_checksum: sha1:049f39340099b29171fd9510a35a6d32a1b7cab9 docs/models/workspacemember.md: id: 74015b802170 last_write_checksum: sha1:01326c9a7e16fe074cac722815895e9e86b14db7 @@ -26972,6 +29111,10 @@ trackedFiles: id: 8f04510d8038 last_write_checksum: sha1:7876005e444c97cf3c212d0ff9b4a38e416a0dfe pristine_git_object: 22164c18980137da563d65b2be38af872ab9ba78 + docs/sdks/agentsessions/README.md: + last_write_checksum: sha1:8406f8c606717ef44e323f9f61808dfb88472063 + docs/sdks/alien/README.md: + last_write_checksum: sha1:1c40c7e0f780db1d457c815315405596efa3baf0 docs/sdks/apikeys/README.md: id: e2bd25998427 last_write_checksum: sha1:e9209e6b7dd3328c10dcc9b055ceeb1c65243115 @@ -26990,8 +29133,10 @@ trackedFiles: pristine_git_object: dae98b8c1aea029f9db42ff73ab2c996e8443b69 docs/sdks/commands/README.md: id: 8951f1925b1f - last_write_checksum: sha1:4a96a730b11ac4622262a9fe30af9ab0b7562e64 + last_write_checksum: sha1:f7d142e737eae417b1c50d4106f41642250c75a7 pristine_git_object: 1dcf7d6de2b07ecfb661652b78f4cf26adf2cfaf + docs/sdks/containerregistry/README.md: + last_write_checksum: sha1:f6bd98b0571e49fefd9f85162b1e6b3432110258 docs/sdks/debugsessions/README.md: id: a03f3215c473 last_write_checksum: sha1:a0cec008448ab1db45812e7efd6315b1d08cdf06 @@ -27002,11 +29147,11 @@ trackedFiles: pristine_git_object: 3e791cad7f6102a7a2aaffeddcb40990d20ff890 docs/sdks/deploymentgroups/README.md: id: 5df9f1e7770b - last_write_checksum: sha1:95f7089e21ae06d2c272fc22c663a59fa83ceff0 + last_write_checksum: sha1:2ac3273b8e80ea77395c0c216cad3b3dc8ab3f67 pristine_git_object: 3ab72dac669daa20a387032aeff49aecfdbf7c91 docs/sdks/deployments/README.md: id: e7c5559ab768 - last_write_checksum: sha1:04086e8826d7cc980e3cebebc6608fb3bdb29b43 + last_write_checksum: sha1:3686703dcae8f475fba68be4a82fe2fe52966912 pristine_git_object: 268c082c13e5df90c861fbc9a7ad8a12f4d4d23b docs/sdks/domains/README.md: id: 06e9beb4063b @@ -27022,8 +29167,10 @@ trackedFiles: pristine_git_object: 91ba63257de1e5cfe068cb6e5a71b87317301288 docs/sdks/managers/README.md: id: bd852d1f1428 - last_write_checksum: sha1:5223d48ed5b8720a8bb3a3eb2fd68e0552ae5809 + last_write_checksum: sha1:fe4b5c8c8a4a417cae14beb999163cbd1c6b1614 pristine_git_object: 8bfe2a424a7d98d235de9f1038cefa0a23b92c35 + docs/sdks/operations/README.md: + last_write_checksum: sha1:8446089e31338b71826e7138ab38125437d3b65e docs/sdks/operatormanifests/README.md: id: 5797b1d533e4 last_write_checksum: sha1:35b59f0d60e44da391bfe7175953cd7f44858455 @@ -27034,12 +29181,16 @@ trackedFiles: pristine_git_object: 8d4e7433cafb9ebc326a02a52886fc5049e664bf docs/sdks/projects/README.md: id: 1c5f71754e17 - last_write_checksum: sha1:7355f82338cbe25a4a02b6c9e89996f7d088306a + last_write_checksum: sha1:c4c0ac6d67a8c6b9c22ce309007ec2fc5c9ed861 pristine_git_object: 3d554d47e2892987cf35e9d387a75e9916e35f7a + docs/sdks/releasechannels/README.md: + last_write_checksum: sha1:6c59eadd7156666c086f84701afafbada1d1b69d docs/sdks/releases/README.md: id: 63d3c821dfd3 - last_write_checksum: sha1:02657bfed7392784381a79f99cbc4a86fc5f4822 + last_write_checksum: sha1:e344a63718e2a034d826a66b05dd8bdb2550abfc pristine_git_object: c9dde0507139b6e9dced7325c55964ae8cbca917 + docs/sdks/remotebindings/README.md: + last_write_checksum: sha1:960f35b03f80461a67dbb50b6a383368eb0f96bc docs/sdks/resolve/README.md: id: 2c39d5344e6f last_write_checksum: sha1:2b8dc621981ea17fb8df74025eb7580430cde05d @@ -27048,9 +29199,13 @@ trackedFiles: id: ddaa9ea920d9 last_write_checksum: sha1:1df2415358b523ce545ade7e278f5d2113e4293d pristine_git_object: 761dd8ccdba4d112b4c73858d8b82c0f3cab8675 + docs/sdks/setuplinks/README.md: + last_write_checksum: sha1:c8a84fe7e2c74d63fd6e56d2ee351de90cdf6530 + docs/sdks/slackintegration/README.md: + last_write_checksum: sha1:1cf5a5433a69614e524d33e11d30d11e8b3da93e docs/sdks/sync/README.md: id: a2e09f86bd16 - last_write_checksum: sha1:69eda3afad9b999c252aa7c58850fed88dada1e1 + last_write_checksum: sha1:a1cb8268566ac2600c14ca6576c9915b44efd077 pristine_git_object: c0377133c0e652c5c0a9c6093fd5f02339000292 docs/sdks/user/README.md: id: 437dd7dc6e30 @@ -27058,7 +29213,7 @@ trackedFiles: pristine_git_object: 8f39a20a53fa575fcde3b3ce407fa79609d58ad7 docs/sdks/workspaces/README.md: id: 1f5b051a6380 - last_write_checksum: sha1:ba59db40082648126bf7ca09dfef433afb087cd7 + last_write_checksum: sha1:408c9a2b59a13282e50dc185981139f1d48ed7c3 pristine_git_object: ea607887b5585d511b732faf8676225f51ec743b eslint.config.mjs: id: 461c8d07f6da @@ -27072,26 +29227,36 @@ trackedFiles: id: 9d0f69d6e677 last_write_checksum: sha1:06ead694257a1826a413c9267347ddf7ce6e7a5d pristine_git_object: 881bdabe3a2b7d1004f4d5e63addda8152e4a9a7 + examples/getWorkspaceInvitationPreview.example.ts: + last_write_checksum: sha1:7e9e2bb553501989995c2d593a9a56837827c5dd examples/package.json: id: c1d7b0ec8e7e last_write_checksum: sha1:79c2647b05a6b6d627c5ab80d9dd24c7fe63ab42 pristine_git_object: 91b9336926d9e04ff3216ceb7f6e1d29f96c3a19 - examples/userListMemberships.example.ts: - id: 79d007295618 - last_write_checksum: sha1:e256918ecc8c65a097ef9f3beca92f00b6657aea - pristine_git_object: dc513216f32a6341abe21c560c28d4d70a769203 jsr.json: id: 7f6ab7767282 - last_write_checksum: sha1:da5cf0e8db2758cc9f81638076a4ec2e5e709b04 + last_write_checksum: sha1:503916d4ed28162653832962b408ca71270ff19d pristine_git_object: b27d1739aa21f6dfb0a2772ceda2defdbe7bc6c9 package.json: id: 7030d0b2f71b - last_write_checksum: sha1:4b3e6d584e7ca1fd6e60d4a852f672478e0ed53b + last_write_checksum: sha1:9b2b8f6e13b479f513a6b1b1b4649ca16bf960a1 pristine_git_object: 65db061a4e545903e4d3aa5cb5630a83fd28ce36 src/core.ts: id: f431fdbcd144 last_write_checksum: sha1:c634ddf4882f77c6dba4422d8b4ba7cb5a3a23d4 pristine_git_object: e636ed43350b38029ea85faff425f7d4aca39fb1 + src/funcs/acceptWorkspaceInvitation.ts: + last_write_checksum: sha1:282017066545d7b3f852a8fde2982f8fdb58eca6 + src/funcs/agentSessionsApprove.ts: + last_write_checksum: sha1:33e7d107e04bdaf316e24765cfcb3b73f0ec599c + src/funcs/agentSessionsEvents.ts: + last_write_checksum: sha1:10af4c37c937e78ff20c32cea0e7e64ddef44155 + src/funcs/agentSessionsGet.ts: + last_write_checksum: sha1:206735df32904e95a5e3659596354cb45cabd3e4 + src/funcs/agentSessionsList.ts: + last_write_checksum: sha1:41652374cfc886e2cdab0db83e25e00dff69255e + src/funcs/agentSessionsStop.ts: + last_write_checksum: sha1:6e3472fe4b0bbc1b415edc43d5801fe3c610ae42 src/funcs/apiKeysCreate.ts: id: 133e2c5f487c last_write_checksum: sha1:be3255691199eb6a1d9b21ec93e871907b0d1345 @@ -27132,6 +29297,8 @@ trackedFiles: id: 317ae74c198a last_write_checksum: sha1:1fde0491e1de5317c505692591e10811014ba0b8 pristine_git_object: 74342031cbf02013ef4e03188204cfbd831e37c2 + src/funcs/commandsBootstrap.ts: + last_write_checksum: sha1:7fa91103be13021fcbb2cda8eaa0cc007d8704cc src/funcs/commandsComplete.ts: id: 440c6015ad75 last_write_checksum: sha1:d108548bcfee4b46ab27bc467ab8df431d86ed89 @@ -27172,6 +29339,34 @@ trackedFiles: id: 08c09d84d2c6 last_write_checksum: sha1:cc982bf548af5d9201881340d950baf03509ee0c pristine_git_object: 77b845097d249ff83c45ba4f87f7413741e3f42d + src/funcs/containerRegistryApplyContainerRegistryManagerSnapshot.ts: + last_write_checksum: sha1:cdbf189b644b3fa6881b7bc53089d9ef8e68baac + src/funcs/containerRegistryCreateContainerRegistryCredential.ts: + last_write_checksum: sha1:409816f740b6bc6308a621600634448fe1eac8bc + src/funcs/containerRegistryCreateContainerRegistryRepository.ts: + last_write_checksum: sha1:816c76469d1744133265d242efed5095f9533a2f + src/funcs/containerRegistryDeleteContainerRegistryRepository.ts: + last_write_checksum: sha1:cfb08ba86aa36f286f04de83b3fe7a44a3c45518 + src/funcs/containerRegistryGetContainerRegistry.ts: + last_write_checksum: sha1:05e7219b820cd8aa5076a9956480c92ff4ef5d17 + src/funcs/containerRegistryGetContainerRegistryManagerSnapshot.ts: + last_write_checksum: sha1:e9e6563267bcabea370d5055b8478a12ac54ddd7 + src/funcs/containerRegistryPutContainerRegistry.ts: + last_write_checksum: sha1:efb9a0035273e4ca5f15094ce22ead3ddcfa0207 + src/funcs/containerRegistryRevokeContainerRegistry.ts: + last_write_checksum: sha1:8a0b57e4758bc7d2f7edfa585cb4a5c21c5aacdc + src/funcs/containerRegistryRevokeContainerRegistryCredential.ts: + last_write_checksum: sha1:5caaf2c922a53b0b34fa7a89ddc68fc97bcef49f + src/funcs/containerRegistryVerifyContainerRegistry.ts: + last_write_checksum: sha1:10b2563b30124497787a462a04a868fd1e7e14ae + src/funcs/continueAwsVirtualKey.ts: + last_write_checksum: sha1:e9ea67e315716071edac586eebf33cb7ab6ff7c7 + src/funcs/createAwsVirtualKey.ts: + last_write_checksum: sha1:114e44adaf2fde0d84248b96fa9c8fec82fa7a00 + src/funcs/createWorkspaceInvitation.ts: + last_write_checksum: sha1:3fc3e5417b2099eae75acb16b544c644c00c4808 + src/funcs/createWorkspaceInviteLink.ts: + last_write_checksum: sha1:1ea3fb3171e13fbeed50df6508bacc66e4320b11 src/funcs/debugSessionsCreate.ts: id: 0ab661b4b653 last_write_checksum: sha1:b8057dfbd96ee390f53d88605e32be4dd39e277d @@ -27188,9 +29383,11 @@ trackedFiles: id: 36cc51df179b last_write_checksum: sha1:1e7d64df22c881aeaf15111cbf48f9ad7491e927 pristine_git_object: c5c0a800891e327b48f5c7ae3f8b42675442ca99 + src/funcs/decommissionAwsVirtualKey.ts: + last_write_checksum: sha1:ca007df52f5bd50a8a874f9960c5c7284de0ef6b src/funcs/deploymentGetInfo.ts: id: 5c45d30a687b - last_write_checksum: sha1:10a1808c5b143bc0599fee59b7d79d12c98c60a3 + last_write_checksum: sha1:f18bb1cd986baf4fdd85caa75f99cbb4a6df0e6b pristine_git_object: 058fe4d99a37e2dd841349d75ed34d4cc6b8f29d src/funcs/deploymentGroupsCreateDeploymentGroup.ts: id: ed689368c82d @@ -27198,7 +29395,7 @@ trackedFiles: pristine_git_object: 39850e87ab75f48324d59166d59a77f64d27131b src/funcs/deploymentGroupsCreateDeploymentGroupToken.ts: id: a343994dab62 - last_write_checksum: sha1:87fd10fba6a6c5d56db7299ca381a4d90b14902a + last_write_checksum: sha1:1b62a6cfd34743f4b433e619c21fddc9471a6945 pristine_git_object: c7967960a65d8fa28750e466b4efd2d1fa73e16b src/funcs/deploymentGroupsCreateFirstPartyDeploymentSession.ts: id: 2d05efac25c9 @@ -27208,6 +29405,10 @@ trackedFiles: id: 9009b9be171a last_write_checksum: sha1:928c67c2de496ef83b3f830d574f5e05d193fc1d pristine_git_object: 614c92f68b9cb2d2ffaa0bb9c097f9296d6cdc0d + src/funcs/deploymentGroupsDeleteExternalAIBinding.ts: + last_write_checksum: sha1:f8d40d270a9911ec6c58a76247b73107375e076d + src/funcs/deploymentGroupsEnsureDeploymentGroupByExternalId.ts: + last_write_checksum: sha1:1ee23448113a532a1789140df6f77b7dbdb0580c src/funcs/deploymentGroupsEnsureDeploymentGroupByName.ts: id: 775e2842ea72 last_write_checksum: sha1:a7df5067a679c7215de382439626a126803ab1f6 @@ -27216,10 +29417,18 @@ trackedFiles: id: 3b48dcfcac4f last_write_checksum: sha1:5e4f51491120eaaed8bb6b2fe12ebb792119903f pristine_git_object: 7e0b8d81645f8aee8c52d37d88298dc4c5838efb + src/funcs/deploymentGroupsGetDeploymentGroupByExternalId.ts: + last_write_checksum: sha1:719df8b9409c6be1842d5018ffd16be962dd7975 + src/funcs/deploymentGroupsGetExternalAIBinding.ts: + last_write_checksum: sha1:10928186f42fe922fd79624858d624abeecaee30 src/funcs/deploymentGroupsListDeploymentGroups.ts: id: 34292c2a1420 last_write_checksum: sha1:7bd00ee1deebd77cdfbc47dcb4d143c04554fbf5 pristine_git_object: 4b1e1514967cbdfc55b68380cdae431dbbb0e9c0 + src/funcs/deploymentGroupsPutExternalAIBinding.ts: + last_write_checksum: sha1:d41471cd7a0df483b3205e2a24f2cd6313dbf1ab + src/funcs/deploymentGroupsSetDeploymentGroupExternalId.ts: + last_write_checksum: sha1:bb18f3ecc4c88f5b48b267d1fd250ba2c0183909 src/funcs/deploymentGroupsUpdateDeploymentGroup.ts: id: aeb915f29e37 last_write_checksum: sha1:64b5067670abfb43a86f10748293f8153370e585 @@ -27266,7 +29475,7 @@ trackedFiles: pristine_git_object: 61823d3c4442cffa4d7a1c8fce17c51b279e635b src/funcs/deploymentsGetStats.ts: id: abb0edbab838 - last_write_checksum: sha1:b04b60b6f7726d5d81a381983cb6a757fef7720c + last_write_checksum: sha1:930122c576b50b200677ed87533f148e0182ed2d pristine_git_object: e1df927b2b28fe35cfece24b56ae8fa8b4d8f003 src/funcs/deploymentsImport.ts: id: 28fdbdd61a2b @@ -27274,7 +29483,7 @@ trackedFiles: pristine_git_object: 903c16882c7459bc8f42dadda6e43199596f686a src/funcs/deploymentsList.ts: id: 01f616973238 - last_write_checksum: sha1:0440005c6e38761cb32b84835b11125bfad8954f + last_write_checksum: sha1:66ee979751b875196072915b3fa5c55096540927 pristine_git_object: b43a1bfbbfab7d1927a26d16baedfdff6a3f25a7 src/funcs/deploymentsListFilterDeploymentGroups.ts: id: 236b2e9acb32 @@ -27300,6 +29509,8 @@ trackedFiles: id: 050fb72e75c7 last_write_checksum: sha1:df93346c471741da5f47ba033f2bbad0dd768114 pristine_git_object: c7973bdea3bd295bad725cd552df85d542ea6579 + src/funcs/deploymentsSetReleaseChannel.ts: + last_write_checksum: sha1:cdc6e22415b3c1446857834ea15173305b53c46b src/funcs/deploymentsUpdateEnvironmentVariables.ts: id: aa49c47ca700 last_write_checksum: sha1:1d9e54acbf429182be5e8571b7ac711fd00368a9 @@ -27338,8 +29549,20 @@ trackedFiles: pristine_git_object: 977fbe409cb702af90d4bf08039368caaa67a552 src/funcs/eventsList.ts: id: 4522a8542985 - last_write_checksum: sha1:de66a377d92d0d51827cf9d98f6e82492dcb9065 + last_write_checksum: sha1:ebd7e9ca483b9daf63d9e4d010d22682e46187a2 pristine_git_object: 9eb6232914eab09dc4edfff3ac5b1543d5b49a66 + src/funcs/finalizeAwsVirtualKeyDeletion.ts: + last_write_checksum: sha1:58671f1c195dfba903faf5cffd7790dfd17df454 + src/funcs/getAwsVirtualKey.ts: + last_write_checksum: sha1:6f760196e84992279f4463b656b0383516a67fa0 + src/funcs/getWorkspaceInvitationPreview.ts: + last_write_checksum: sha1:0332d9b584d0e47f3d7ba2e6b8bf8a67ebd3016c + src/funcs/getWorkspaceInviteLink.ts: + last_write_checksum: sha1:dc456ba4116206daf9fd320ecc3548e86bd591a3 + src/funcs/listAwsVirtualKeys.ts: + last_write_checksum: sha1:e281288eea4d129db16f1b96e4489268af0452d9 + src/funcs/listWorkspaceInvitations.ts: + last_write_checksum: sha1:e615f9dc8c09c18276fa470dd7eb0dd36f2093ce src/funcs/machinesCancelMachineDrain.ts: id: 43a26468d0ef last_write_checksum: sha1:16164472b36c0c3f323c2f1f4aaef62d38d54d1f @@ -27384,6 +29607,8 @@ trackedFiles: id: ce3e434b894f last_write_checksum: sha1:2c55972597b24fa4835c19e3f247e5d5648cb5f0 pristine_git_object: 7eb37a567a8ea9aedee0ba8b85498cd8b91dbbef + src/funcs/managersGenerateManagerBindingToken.ts: + last_write_checksum: sha1:160bb028f65d8649e558f83a722f135609e21e5a src/funcs/managersGenerateManagerToken.ts: id: e1ce023349b5 last_write_checksum: sha1:05ef2f7710dabd2a8f8f166cf241ac42743547b4 @@ -27440,6 +29665,26 @@ trackedFiles: id: b54a59b54ebd last_write_checksum: sha1:d92f4deb4cb365586d84f2d2f19e8d60cc53e173 pristine_git_object: 6a9f1b94bcdeaf56c901179d2ba4d0917232abc7 + src/funcs/operationsCreateAccessRequest.ts: + last_write_checksum: sha1:e661c93b8f877b5f37e8b73997f781d9d7f52dfa + src/funcs/operationsCreateBundleUploadUrl.ts: + last_write_checksum: sha1:f96d49cfd3a4c1905d4bdacf9c5eb69fb15d70c1 + src/funcs/operationsGetAccessRequestCoordinates.ts: + last_write_checksum: sha1:d9e265a8f4ee6d822cbde3d9bcb1354a8c5fe7cb + src/funcs/operationsGetPolicy.ts: + last_write_checksum: sha1:c02dae7912c6072082d17c6309aef7782e9c8424 + src/funcs/operationsInvoke.ts: + last_write_checksum: sha1:36a3780f4634f5d862e35a4c88075b4c4d8632ad + src/funcs/operationsListPlugins.ts: + last_write_checksum: sha1:6ca8590539186d644878492ff48adcb01d80632c + src/funcs/operationsPublishPlugin.ts: + last_write_checksum: sha1:1f120d70b303a3cc93b403a0ff2a8528114efbdc + src/funcs/operationsQueueAccessRequest.ts: + last_write_checksum: sha1:80a65f43d330405d2aa78b10528d8dccdddfc5ee + src/funcs/operationsSetPluginEnabled.ts: + last_write_checksum: sha1:b9cea2aa593db86bf87f946b3414707bf7c7aed9 + src/funcs/operationsUpdatePolicy.ts: + last_write_checksum: sha1:7915b3566231ebc0d20dd3b5d2a0a6a4a9e98a2e src/funcs/operatorManifestsPrepareOperatorManifestPackage.ts: id: 7c64d517ff24 last_write_checksum: sha1:09944f2e23629e248af84696c689283a2b5465bb @@ -27464,6 +29709,18 @@ trackedFiles: id: 5c39ca65adc9 last_write_checksum: sha1:cbf75ddc6395b1c1677605a477808a87fa5727c8 pristine_git_object: f8e261fb7b398c043b8988e9c1542d8dafe01953 + src/funcs/projectsConfigureBuckets.ts: + last_write_checksum: sha1:a1d66e6d28956ba1a654e2af200b1849f04f2264 + src/funcs/projectsConfigureDeployments.ts: + last_write_checksum: sha1:8024a13516c1c6e28d658149e1cb9f35a2e82e35 + src/funcs/projectsConfigureKeys.ts: + last_write_checksum: sha1:f6afba29728d3388d77d437bdb45aa794aa9301e + src/funcs/projectsConfigureModels.ts: + last_write_checksum: sha1:0a2b4b460e2ba808efc21c6e7afbe7447c77472b + src/funcs/projectsConfigureRegistry.ts: + last_write_checksum: sha1:7c455f1c38b6dd3df003fea70ede57c9099ec010 + src/funcs/projectsConfigureSource.ts: + last_write_checksum: sha1:f43f462aff35cdd735fdd1d65b5c0f6a62c4bf0d src/funcs/projectsCreate.ts: id: dd2581a3ecbe last_write_checksum: sha1:5035b9d42a8748bab0804cf542d57535fc69c446 @@ -27482,8 +29739,12 @@ trackedFiles: pristine_git_object: ce1689521cf79a953bc7ef106dc5483b8db055a8 src/funcs/projectsGetActiveRelease.ts: id: 082c0d7043d1 - last_write_checksum: sha1:6941fd9a99b90e45e12cd44972ee21e0634172d1 + last_write_checksum: sha1:ead598e42e2fc80a233321f785523fc499e67fd3 pristine_git_object: ead8e6b0146629d9cb759fcd626db96aff008333 + src/funcs/projectsGetAiUsage.ts: + last_write_checksum: sha1:5c1ec08354484f858c67c919c9c648754e26f0f0 + src/funcs/projectsGetCapabilityOverview.ts: + last_write_checksum: sha1:2bb75962b68a31eaef993454dd0438bfff74d6cd src/funcs/projectsGetDeploymentLinkSetup.ts: id: 63c6ec9dafd1 last_write_checksum: sha1:6ef8833054ffa5eb4d8c7b0d5f9ea128d1509c52 @@ -27504,6 +29765,8 @@ trackedFiles: id: 125a25405644 last_write_checksum: sha1:fc3fd401cac285344e7cbe4db679d66fa6cbf0de pristine_git_object: 9759c4fbe894166c93e43abcf04db8b569610b94 + src/funcs/projectsSetCapabilities.ts: + last_write_checksum: sha1:a6eafe6d79526873c2fdaa3c773ad9a6734c098e src/funcs/projectsUpdate.ts: id: aa9c21646b56 last_write_checksum: sha1:f81fa2886ebed71fe11033a439cfdf77cab5c737 @@ -27512,6 +29775,12 @@ trackedFiles: id: 0c5b6de9c70d last_write_checksum: sha1:652b825afcff5e9732ab7c3fc91509a74b3a85c1 pristine_git_object: fd46ae522f4a31cc04e2249e616889d65b57c2da + src/funcs/releaseChannelsCreate.ts: + last_write_checksum: sha1:24a3986092e8fa1aaf637b9d08bc2dbc5b1a5ce6 + src/funcs/releaseChannelsDelete.ts: + last_write_checksum: sha1:ebf8a773b10387aaf7860dc6451ccaba33b07977 + src/funcs/releaseChannelsList.ts: + last_write_checksum: sha1:8e5977263a9a866a29c2bb2ddc944023920768b2 src/funcs/releasesCreate.ts: id: fc712b319633 last_write_checksum: sha1:394b04980aab08bc78ff18b9e708c771cbb677fe @@ -27522,7 +29791,7 @@ trackedFiles: pristine_git_object: 93b01e23c50cc5704eb3e3ff67279ea62599c0ea src/funcs/releasesList.ts: id: 54dff85f9621 - last_write_checksum: sha1:8f0f103414af0e27cde339264afc73a04f06f10e + last_write_checksum: sha1:f6a8fb1b0cb6db241115736c05c235649b222667 pristine_git_object: 945fb175ca42a69465da1560b3f4807e09622e5f src/funcs/releasesListAuthors.ts: id: 15914882569b @@ -27532,6 +29801,14 @@ trackedFiles: id: ac44b53308d8 last_write_checksum: sha1:4b00e93db3afac0d2f76f2793a912615ad602aad pristine_git_object: 1b94e03cf4d96af30496f0c918c85f0cf95280fc + src/funcs/releasesListDeployments.ts: + last_write_checksum: sha1:7b7f6dfd0da9680ee650e02ed3c7c62267b33924 + src/funcs/releasesPromote.ts: + last_write_checksum: sha1:ae28c8042e3837647f33efd87a1494997dfcfb86 + src/funcs/remoteBindingsCreateExternalAccess.ts: + last_write_checksum: sha1:4b1dcc66987ca1f9a2c4adb851124000aa482763 + src/funcs/resendWorkspaceInvitation.ts: + last_write_checksum: sha1:f13b193f0e2829db1b5586e55beed6a0166b81b8 src/funcs/resolveResolve.ts: id: 7590d79420ee last_write_checksum: sha1:a122859e1eba97e0ef6a2bc16a7445df32367f06 @@ -27552,6 +29829,26 @@ trackedFiles: id: 0e88bb16488e last_write_checksum: sha1:001a7c182daa37aaa7754710f6d67612b0130521 pristine_git_object: bd0af0059383eedd1cb4101cc237a1aa0a975cbc + src/funcs/restoreAwsVirtualKey.ts: + last_write_checksum: sha1:9686b21fed2041c7693109d863acdd582d207dcb + src/funcs/revokeWorkspaceInvitation.ts: + last_write_checksum: sha1:c78022a0c191b4fb1ce3397ba70a25824fc37cdd + src/funcs/revokeWorkspaceInviteLink.ts: + last_write_checksum: sha1:02b35536a7a98a8a23b5d2e1d2e7bac707fb8ea5 + src/funcs/rotateAwsVirtualKeyCredential.ts: + last_write_checksum: sha1:e5df3beac7b7dae4ef9aa10f240ce2c5f6b7e3d8 + src/funcs/setupLinksCreate.ts: + last_write_checksum: sha1:16ec9a5fe9a8143d8e7389712d8a55da68ea7521 + src/funcs/slackIntegrationInstallUrl.ts: + last_write_checksum: sha1:45c9210e5f0eb7e3c843f99a8d61f2767cd83868 + src/funcs/slackIntegrationListChannels.ts: + last_write_checksum: sha1:9b1943053bdf10410ae529e135463722414febfe + src/funcs/slackIntegrationSetNotificationChannel.ts: + last_write_checksum: sha1:754e236af9e67f4942ca7fdc6b9d1db32e73b77d + src/funcs/slackIntegrationStatus.ts: + last_write_checksum: sha1:fa6fb07e77e92a74febba603db02de425653beb7 + src/funcs/slackIntegrationUninstall.ts: + last_write_checksum: sha1:db8bac5b9e33e350795cc66ead9eebb6a473a574 src/funcs/syncAcquire.ts: id: e30e2745d113 last_write_checksum: sha1:9084d31a8e315a29e784ca55e392b5ac05653839 @@ -27572,6 +29869,8 @@ trackedFiles: id: 85c91cd44f53 last_write_checksum: sha1:7320937ccf73ced8856a4cf768f729d89be6e025 pristine_git_object: c4c595b98539f7213b5ec45902ac98d669df0a6d + src/funcs/syncRenew.ts: + last_write_checksum: sha1:56c47e676393eed8e47c638d5b979d27635004a2 src/funcs/userCompleteProfileSetup.ts: id: d563ba12ae03 last_write_checksum: sha1:da78c09b267c75e36afe9e58c417227d63007194 @@ -27620,6 +29919,8 @@ trackedFiles: id: f361d34e5bff last_write_checksum: sha1:6a122f1e6762088452c408331f7d259bc2f1a48f pristine_git_object: a1dd5004d0447ceeb078029d690e649435576cbc + src/funcs/workspacesGetSettings.ts: + last_write_checksum: sha1:b96c9b75a831eab46f9566e6c42c97eefd593433 src/funcs/workspacesList.ts: id: 6ff9df556ff5 last_write_checksum: sha1:9035299e434cbd75433c3a37cd7d3e95abeb947e @@ -27640,6 +29941,8 @@ trackedFiles: id: 76f106c4bb9f last_write_checksum: sha1:2f070d8c85f02be9cacf363b6d770a3ba49f4765 pristine_git_object: 5e980b70744a757bbcdb8e6255970dbee74fef2e + src/funcs/workspacesUpdateSettings.ts: + last_write_checksum: sha1:94d02bcbcc5802305af59ef2538f5ddecbfb4bc5 src/hooks/hooks.ts: id: a2463fc6f69b last_write_checksum: sha1:3a90d88b4c6c07247db8e5f6441a79538232394e @@ -27662,7 +29965,7 @@ trackedFiles: pristine_git_object: 962ea486e17eabe13bcf068493a556110c944df8 src/lib/config.ts: id: 320761608fb3 - last_write_checksum: sha1:2406fab3092aaa1fdae6a1dd2aaa5e866da48011 + last_write_checksum: sha1:04cb52a238e8164d070101f183b110be647a9a73 pristine_git_object: ea094ae0489afa7a35285ade4b0a06cabb5ca361 src/lib/dlv.ts: id: b1988214835a @@ -27720,6 +30023,44 @@ trackedFiles: id: b0057e24ed76 last_write_checksum: sha1:d124050c7e755c0cce233b9e029afb584ff65201 pristine_git_object: f3a8de6c021de59c991707946cd294596cae954d + src/models/acceptworkspaceinvitationresponse.ts: + last_write_checksum: sha1:6e3e26966b53d8cdc85bde43d7d67aad92dd6357 + src/models/agentsessionapprovalgrantedevent.ts: + last_write_checksum: sha1:2ae40f1bfb704428338be1075758298e55e56fc7 + src/models/agentsessionapprovalrequestedevent.ts: + last_write_checksum: sha1:2d158c8040f3c5f2c524b12352a4872eeb7d6fb4 + src/models/agentsessionapproveresponse.ts: + last_write_checksum: sha1:bb12f8ce1a06384a2a12b164ff7fe72f0958e40d + src/models/agentsessiondetail.ts: + last_write_checksum: sha1:36f011da0a504a698e2274b4ebbfbfba91c52ede + src/models/agentsessionevent.ts: + last_write_checksum: sha1:a17494b629140114d57ec57a9231d276e839c664 + src/models/agentsessioneventsresponse.ts: + last_write_checksum: sha1:d5c9444f421b04e0d61a9a71f891b7bb687409fb + src/models/agentsessioneventstruncatedevent.ts: + last_write_checksum: sha1:8967387a589d559d804930b3705bfc537caa6e3e + src/models/agentsessionlistitem.ts: + last_write_checksum: sha1:9270e89b1be0a49bd066a2297b055b8e843ea2c3 + src/models/agentsessionlistresponse.ts: + last_write_checksum: sha1:1e883c87d769b511c601fcd221ed0772261d36f3 + src/models/agentsessionmarkdownevent.ts: + last_write_checksum: sha1:327cd30ab1c9b6ae7f44fe3d9aa5c6d66cc33090 + src/models/agentsessionrestartedevent.ts: + last_write_checksum: sha1:c8980f01e86caa9501aa95985a544120acf1da33 + src/models/agentsessionstatusevent.ts: + last_write_checksum: sha1:9d529cff59615f79383de3557a24ab0286dbee3d + src/models/agentsessionstepevent.ts: + last_write_checksum: sha1:343f820b161b608bfd93db270445665dd2fc1370 + src/models/agentsessionstopresponse.ts: + last_write_checksum: sha1:54fb5fc9145514fc1fe20de4eded4842ce967a78 + src/models/agentsessionsubject.ts: + last_write_checksum: sha1:0b2869aece9d3a8f225b7ca0359cbd59c9361348 + src/models/agentsessiontoolcallevent.ts: + last_write_checksum: sha1:afe21967f18ec4d4e6a6dc0fb0d0a538a5daa404 + src/models/agentsessiontoolresultevent.ts: + last_write_checksum: sha1:140f09c636fd6c880caf517c904b77e60eb25898 + src/models/agentsettings.ts: + last_write_checksum: sha1:cfae4d39eef20f9aed0572dbc3174a2a2883d35e src/models/apierror.ts: id: ba8cfc219d76 last_write_checksum: sha1:7ae65e50066e8a3f06ba7391c15aae98141e7d97 @@ -27730,19 +30071,21 @@ trackedFiles: pristine_git_object: 15456617e4844ae0708001aaac2e14afbaf6678b src/models/apikeydeploymentsetupconfig.ts: id: db9c2fd08b7d - last_write_checksum: sha1:e8f316a951f4ae519a6792e61ab64235c0521e62 + last_write_checksum: sha1:cabdf7cbf6834f6137e12eec04ac16e5a106f8ab pristine_git_object: 0379ef920ee5d15086ffe5bbc00ec448754e5c66 src/models/apikeydeploymentsetupenvironmentvariable.ts: id: dd97539c1dbc last_write_checksum: sha1:7bf89d7190d27228ae3ac4c52a8dec9d9e4213e4 pristine_git_object: bf0597be604b3b549f590ef23e86ceb8451692fd + src/models/applycontainerregistrysnapshotresponse.ts: + last_write_checksum: sha1:b0c6d98598b05c891412821278dd907bc5e47116 src/models/billingauditlogrow.ts: id: e4dec4e0807b last_write_checksum: sha1:3e39f4fe71e1bc911bb6b08e3972f0d78bdda08e pristine_git_object: cc6c8acccec509ed7ce6a3471981190f813885ab src/models/billingfeatureflags.ts: id: 7453ae587ace - last_write_checksum: sha1:4e8d279088550483dc6edce080d727c44046556c + last_write_checksum: sha1:fb86e186cc6d671ef3d0989002d64fed175180e2 pristine_git_object: 18062adce8f19e9d47eb3575bccaf01f4cd0ca64 src/models/billinglimits.ts: id: e6370d3898bd @@ -27756,6 +30099,8 @@ trackedFiles: id: 66807f33dae6 last_write_checksum: sha1:ac38022918c5a9437bfb8186f3daffe2aaf4afc4 pristine_git_object: 86509719a460bca0564640aea167e60714dce65d + src/models/capabilitymaterialization.ts: + last_write_checksum: sha1:8b8269a0bcfb854df3f807437f182cbc8a6552a0 src/models/cloudregionsresponse.ts: id: 437c34e1ea3d last_write_checksum: sha1:70f786ceedf40ba311d0bf4f232e09b5808a9f5b @@ -27764,6 +30109,10 @@ trackedFiles: id: 3e8c75f902bb last_write_checksum: sha1:0f0c6e3893462146e278f580a54157fa39fce02a pristine_git_object: 46669d47e691f33fae4073f5555c5f6cf322fd91 + src/models/commandbootstraprequest.ts: + last_write_checksum: sha1:d89294b437f10e7538decf5bb293a0d84a0df96d + src/models/commandbootstrapresponse.ts: + last_write_checksum: sha1:91a8766d5df6e72c07cc1ef097baab8741305db7 src/models/commanddeploymentgroupinfo.ts: id: c117c84b97cd last_write_checksum: sha1:e634e4566180c75922a20103eda6aa1f96e35d19 @@ -27780,6 +30129,8 @@ trackedFiles: id: 0eded5e63be4 last_write_checksum: sha1:d0ff8decfb2d7d5e3733346083f47d8acb1a1eca pristine_git_object: 5c8da6707fb767ddcd0c26579f0acfafd1b09216 + src/models/commandreceiverbootstraptarget.ts: + last_write_checksum: sha1:1a356b9d9939f91215e54336307a726a88884437 src/models/completecommandrequest.ts: id: 8904ea9c18aa last_write_checksum: sha1:ff4994ed4af0f5f8ae7c01a10086f6166efb847a @@ -27788,6 +30139,12 @@ trackedFiles: id: f75f4ce3704d last_write_checksum: sha1:36ddb33670c4bcf2cd7445e8a876b89fdb6f8028 pristine_git_object: 257c339f2d8cb91283c66e51e83898173ff7aec1 + src/models/configuremodelsrequest.ts: + last_write_checksum: sha1:c1bf88cb7b0f1473693b99850b1809996e171c6d + src/models/containerregistrymanagersnapshot.ts: + last_write_checksum: sha1:0974dd737fa2ef0c80d517d4807457060299176f + src/models/containerregistrystate.ts: + last_write_checksum: sha1:b5e8e1f8acb658271fa2863fa60a403336c5ea9f src/models/createapikeyrequest.ts: id: 57be11738f9c last_write_checksum: sha1:591e94f5e46fc633e36b92d5ff74505a83745a4e @@ -27804,17 +30161,19 @@ trackedFiles: id: 403a3b6639c1 last_write_checksum: sha1:16f6d58c2a46595e5912a11db08a9a1cd65900a0 pristine_git_object: a13491587f311ecd0b5420b53377c36ca9abdaf5 + src/models/createcontainerregistrycredentialresponse.ts: + last_write_checksum: sha1:0fce64596777a009e81bd4f3cee9c760e1c10834 src/models/createdebugsessionrequest.ts: id: e254181b16d3 last_write_checksum: sha1:2c1ecc930782a75821084eb01e5af7d3c46e8636 pristine_git_object: 0524e4d862970efce5f9980f020f1baaf379c7d4 src/models/createdeploymentgrouprequest.ts: id: 64ab1ce49c4b - last_write_checksum: sha1:e5af8ae7574dcebf49a1d58d230bd6e4022bf7f5 + last_write_checksum: sha1:e3db9897fa4198bcb036e321fbad10a6058f34a4 pristine_git_object: 7c6b893585ff2613dbddfe9d649b879ccd3ce347 src/models/createdeploymentgrouptokenrequest.ts: id: cbe25715af7f - last_write_checksum: sha1:101a6bf7abf4821c57eb260f60789ec4b9dab6ce + last_write_checksum: sha1:a514d013e744f5dbf9b987f1174e277b356b9978 pristine_git_object: 47fa8747b06255cc771578aebfe32e076daaa82a src/models/createdeploymentgrouptokenresponse.ts: id: 7442c4fa2700 @@ -27826,7 +30185,7 @@ trackedFiles: pristine_git_object: c873efed66e9420ebd220fa2baa8bbcb9da418bd src/models/createdeploymenttokenrequest.ts: id: d40914533760 - last_write_checksum: sha1:ea4dab63e812efb283e6830f730893d4c57ebec8 + last_write_checksum: sha1:9fd7faec7a96a2c187fb1af07a88f33aec1870bb pristine_git_object: a515f8369045b51c06090159aab68345d71b73fd src/models/createdeploymenttokenresponse.ts: id: 888de25aa4b8 @@ -27842,15 +30201,19 @@ trackedFiles: pristine_git_object: 8ed7efcb53c9b3ed52719b32a1ceba679a5d239f src/models/createmanagerresponse.ts: id: c51c5ebd08da - last_write_checksum: sha1:8f75ee22d212f74f3c4bc9be95725427f5578430 + last_write_checksum: sha1:f1a740a27d50f3d45900d20bef17e3e65b15630b pristine_git_object: 1dd947f6619387ca6ec382b5f3f920973863e645 src/models/createreleaserequest.ts: id: 4ad3666dac5c - last_write_checksum: sha1:d872edb9e3a0307126390ce363283a065da11a21 + last_write_checksum: sha1:af4b39f4cd550ca655f2c6bc98db54ddf7e18c60 pristine_git_object: 6ea40be7e62b0f8f9757e052e85ebd77c212b70b + src/models/createsetuplinkrequest.ts: + last_write_checksum: sha1:8f7f20c9e53b307c54b2b6a2ac54733157684d1d + src/models/createsetuplinkresponse.ts: + last_write_checksum: sha1:5ee8567bb7c1fe75f1f55e38347d825f2ed37f62 src/models/createsetupregistrationoperationrequest.ts: id: 72fc21b3c242 - last_write_checksum: sha1:283391dbcc447c38cca3cb8749e7203a9a9f73cc + last_write_checksum: sha1:2556b5ebfb3b4eb4e333af696c33b74186e48e65 pristine_git_object: 619dd87793caa87e6c8ca259530536e88850d932 src/models/debugpackagepresignedurls.ts: id: 58fc121473e2 @@ -27882,7 +30245,7 @@ trackedFiles: pristine_git_object: 9ebaaa9820ac80a522625b15c811dc7988f85952 src/models/deployment.ts: id: 26e71f87af0c - last_write_checksum: sha1:f1e0894bc4b8ef3576abfad0e160868357d0d887 + last_write_checksum: sha1:a2de2e02bc3a4359bcaba6169ea2554ca645251e pristine_git_object: 8710819fe0c4b8978abc34f6da7ad8732e893f8b src/models/deploymentcomputeplan.ts: id: 4f61336f1204 @@ -27890,19 +30253,19 @@ trackedFiles: pristine_git_object: a45ace8cdaff8f9ace51c20656f234ca3ba120ff src/models/deploymentconnectioninfo.ts: id: 507904850f15 - last_write_checksum: sha1:26642c097e3dd1d4ba46ba930c13f172d17ac277 + last_write_checksum: sha1:f6dcc9c93a88be3eedb57430aec306bf63d0e1b6 pristine_git_object: ac3c0dd3ee7a3ae8f66bf1839ef396ec87be4d51 src/models/deploymentdetailresponse.ts: id: f3d0b380668f - last_write_checksum: sha1:1db6e71990665a4b9fe7a7acad055b84e8ccce1a + last_write_checksum: sha1:b67576099ea057d81d5e1398e23d282e281338ef pristine_git_object: 3b6ae1e99a22b8d28f7a842e1dc7098933d813f6 src/models/deploymentgroup.ts: id: ddf1c24537b3 - last_write_checksum: sha1:b7cbce1d496465e2ebe5accc99d7f3fcd2e7c964 + last_write_checksum: sha1:a576f21703e12b29b1f27e0e8de9dc51fdc4b213 pristine_git_object: 5672bfbf9cf8ce2a1823bb20e5d0896ccac82010 src/models/deploymentgroupinfo.ts: id: 7ba06c2fb99b - last_write_checksum: sha1:2b9d9643df97c1405c073753c33c6432364ec75c + last_write_checksum: sha1:f40bca18f1fb06664ddefc3b32c0b18e986748df pristine_git_object: fa3c66b1301d007f6eca15e4574b353eaf1efe5c src/models/deploymentgrouprole.ts: id: daa2b3a6d02b @@ -27914,11 +30277,11 @@ trackedFiles: pristine_git_object: 5e3c3ff8c159d0bc3075e46e36f04642a78654f4 src/models/deploymentinfo.ts: id: ba81aa7a2c74 - last_write_checksum: sha1:cadf643ef5f04c8d752c74e78e0e924d052fcfc9 + last_write_checksum: sha1:42522587996feee70abede3ff4ea5f67bcfac8bd pristine_git_object: 62fc79b195429eea0c0e277f1a9cb2ca5f2a5426 src/models/deploymentinfosetupconfig.ts: id: b483a5294fd5 - last_write_checksum: sha1:5cf5613bf356f9dc23f32f19d201c5ee3f64f6cc + last_write_checksum: sha1:15379c070dc6a813587493a12542124298bec8cc pristine_git_object: 060dde4f249feeec7315ed98c9bf43a90b5829bc src/models/deploymentinputsresponse.ts: id: 4d2d4cc53ab4 @@ -27926,11 +30289,11 @@ trackedFiles: pristine_git_object: 04f6f250a3332509f5f612fa513f571648556991 src/models/deploymentlinksetupresponse.ts: id: 05372e9ec7ae - last_write_checksum: sha1:1cd065ea6c7168ae2a0f0614e4ec60ea7dd89949 + last_write_checksum: sha1:365a3aee489cb28666ee4035496eef9798337057 pristine_git_object: 9a9b1cf5d92ec68ca489f9508829dca7354f41c8 src/models/deploymentlistitemresponse.ts: id: 5ef7a740eac6 - last_write_checksum: sha1:354f674032efd8646e4d9b8c60f032fc219ed504 + last_write_checksum: sha1:3050c9243e44a4d32d33fbce159a93b9ffe6b5f2 pristine_git_object: a741f79838eb8fa7c7909528a317bde7984195f4 src/models/deploymentportalaccentcolor.ts: id: b9150a2ead17 @@ -27960,6 +30323,8 @@ trackedFiles: id: bf3012b63f2e last_write_checksum: sha1:41c6c9189117ea30df17e186e5f05b08be202d50 pristine_git_object: d10dd7f09fe63e275bd35238894c9ba6844ab302 + src/models/deploymentpurpose.ts: + last_write_checksum: sha1:fefb2cbdabcdaa9b2052648957f3b01a7d41ccb0 src/models/deploymentreleaseinfo.ts: id: dfa868a7ef6f last_write_checksum: sha1:fa28f174c2b3030367aba2f9718299914a42f309 @@ -27976,6 +30341,8 @@ trackedFiles: id: b45cf393d1ea last_write_checksum: sha1:edc6d9fe40b850d728ddbc6af0f39e7763845bce pristine_git_object: be3bc1c33082f4d7603cb9d9c7de6577d2502e91 + src/models/deploymentsetupitemselection.ts: + last_write_checksum: sha1:b1e64c9ef346a92a0f6e8a29ae78a2ca98f31f11 src/models/deploymentsetupmethod.ts: id: 61156e5bcd8c last_write_checksum: sha1:fe2818863c48005987a9da14443556e8c4d4e672 @@ -27986,12 +30353,18 @@ trackedFiles: pristine_git_object: 537f0fa458049d90eadb7a49c9e76f4b07e2fe82 src/models/deploymentsetupstacksettingspolicy.ts: id: e4196d4152d7 - last_write_checksum: sha1:30c2e7e401a0e384e67aa31c0402049e8f12fc4f + last_write_checksum: sha1:630b02d55cecd33e7670f52771cbc799cfc9b8ec pristine_git_object: 8eca47b0e65a6989f7162dc044ef1402a5913d07 src/models/deploymentstats.ts: id: c559f6224b42 - last_write_checksum: sha1:43869ff928489257b7069a5bf30a45689e87a1cf + last_write_checksum: sha1:8bc0826a18d1769789346068483134b4632ec9ab pristine_git_object: 3316c2cf14b6c7ee129befe49da1067fe6855b72 + src/models/deploymentupdateoperationstatus.ts: + last_write_checksum: sha1:531421a113c0775db762f92adc266241d1037f6f + src/models/deploymentupdateoperationsummary.ts: + last_write_checksum: sha1:ad535e5c43abf089804d264e79d4e0eb8657064c + src/models/deploymentupdatereason.ts: + last_write_checksum: sha1:ffda578f7b093cf2d2c8beba9dbac0b23ef7a14b src/models/dispatchcommandrequest.ts: id: b81e7f599fb7 last_write_checksum: sha1:afb1cb6ab420219ade3105df1d1e27e7bccd0820 @@ -28036,6 +30409,8 @@ trackedFiles: id: 044c75956be7 last_write_checksum: sha1:9c6ba2c1cde9d91a131fb1479d3a737d168af246 pristine_git_object: 5dce7ccca282d5515da62686caa383a827c9acb2 + src/models/ensuredeploymentgroupbyexternalidrequest.ts: + last_write_checksum: sha1:44a8269d0af0881bc8e45ba641ad782500cac746 src/models/ensuredeploymentgroupbynamerequest.ts: id: 5fef33cfc239 last_write_checksum: sha1:722c98cee7e4b8a78dbcc0e511e3393e8ad0b89f @@ -28078,15 +30453,25 @@ trackedFiles: pristine_git_object: db00022e05d55600252f401eb0e6ab46278e0b07 src/models/event.ts: id: 7d1800694a8b - last_write_checksum: sha1:85528e848f955f576d9432c5830330987d48c0db + last_write_checksum: sha1:6f89d1d83a71df33877bf37116270b10d2c21a88 pristine_git_object: 26560b4527531f8e0a873c0e043fcd91058b2ffc + src/models/eventlistitemresponse.ts: + last_write_checksum: sha1:96cdf9b98f00dcd0557851c0a70852fb2a182af3 + src/models/externalaibinding.ts: + last_write_checksum: sha1:022a1bf6093222be99f512cd445e35850385582b + src/models/externalaibindingstate.ts: + last_write_checksum: sha1:fdcd80f6cc2c22a5bc9b54b8acb3682e27ad3345 src/models/forwardimportrequest.ts: id: 2f3eeed18289 - last_write_checksum: sha1:da0a8dc4f9abbafa698bbe990d943f6c754b7321 + last_write_checksum: sha1:6f55d27e2208f976ef0f615103a81589a6cdfa3f pristine_git_object: 9782cf0f1a9ca6314dd657480ef4726612572e93 + src/models/generatemanagerbindingtokenrequest.ts: + last_write_checksum: sha1:e260ff53e437f8ef7889d9004e0bee8d74ac0f6f + src/models/generatemanagerbindingtokenresponse.ts: + last_write_checksum: sha1:bfa34b010fd2dfdcf2c0e8c3900b3dc69db07629 src/models/generatemanagertokenrequest.ts: id: 37d07c31900f - last_write_checksum: sha1:ba5f9e1c87cceae1f3b26e0cdff19f5c37c9f689 + last_write_checksum: sha1:12d3664ffefbf06e850eb21ee988a8369276f4d7 pristine_git_object: 3dd29fe08066fe2ffc4c6581cc002be3436e2cef src/models/generatemanagertokenresponse.ts: id: 2d5c48de9e4f @@ -28102,7 +30487,7 @@ trackedFiles: pristine_git_object: 61b1174f81f4ac47e6bb1bfa5eaf6af3c5d7ffe9 src/models/gitmetadata.ts: id: dda83ddd463f - last_write_checksum: sha1:4a5543a7f305a2848fb6029a94ff7c15c2f830c9 + last_write_checksum: sha1:a5a8bfa72462bdd6cc2467ad2a98e6648ebea053 pristine_git_object: 2f7e5b96f99b8b47ddd33b68900984dec85e8969 src/models/gitnamespace.ts: id: b60e9c3a65c9 @@ -28126,7 +30511,7 @@ trackedFiles: pristine_git_object: 88d66f229a3b0cbab8b71377b9d3a974d96cbad5 src/models/importsource.ts: id: 7a42610e98ec - last_write_checksum: sha1:0334032e1045ce96c9f4dbb874f6ad29eda94abc + last_write_checksum: sha1:0b32a0a02398be102fcf83e139d44586b8678985 pristine_git_object: 296afaf1c158672fb6c6d73936c8675d8eab9543 src/models/importsourcekind.ts: id: b2bf2bd7a310 @@ -28138,8 +30523,12 @@ trackedFiles: pristine_git_object: e3b1530ed0aec91afb64292a12d54ab58d11f60f src/models/index.ts: id: f93644b0f37e - last_write_checksum: sha1:9ebd22a2a5cb46510e6549aeefba6f0181515fb3 + last_write_checksum: sha1:7a65dacda7dab9f70c385fc509ec3fd37df94fda pristine_git_object: c42df46fbef3238e23ba569f708bf4a7ca27bbc2 + src/models/invokeoperationrequest.ts: + last_write_checksum: sha1:62077373392b9683fe60520bb4fcc7fbb0de14e8 + src/models/invokeoperationresponse.ts: + last_write_checksum: sha1:75244a44d1e2e84c79ffc1568595bc6630c61b5b src/models/kubernetesbaseplatform.ts: id: 772a228cf68d last_write_checksum: sha1:9c4ce4aa9f5eda395cc86daf24eda66661eaeaa0 @@ -28164,6 +30553,8 @@ trackedFiles: id: 73a2643ab21d last_write_checksum: sha1:23f13482d1d6ab575a50e8c6631df13d91e029f8 pristine_git_object: 78bd5f5c39f848ec7a2264b4aef30b3c89fe231f + src/models/listoperationspluginsresponse.ts: + last_write_checksum: sha1:43cee9c01a0f1ce8be0bfa49f966ef3d76a7bbd0 src/models/machinescapacitymetric.ts: id: 9422b1783535 last_write_checksum: sha1:12851277356dd02db365e9515e3f6776c6d6b191 @@ -28212,7 +30603,7 @@ trackedFiles: pristine_git_object: 31826f6990ff56898ba2c28f0cbba91f7fdff563 src/models/managerretryresponse.ts: id: c97f5890b391 - last_write_checksum: sha1:d394e95bd460b36464764dccc69f36c4934a0fd1 + last_write_checksum: sha1:9b9c812a91e96a30b37c53196df545a184f0c281 pristine_git_object: 843f325f690ecb3eecf0310c3e2739d86618b3f6 src/models/managerrole.ts: id: 3cb93e346cd6 @@ -28232,16 +30623,22 @@ trackedFiles: pristine_git_object: 36c61ac6fad40e1e2e90f7c1bfd834827725b6e6 src/models/newdeploymentrequest.ts: id: e89206c57a99 - last_write_checksum: sha1:509792e2c9dbe6cb5546a2bce72a7f75a1fc6755 + last_write_checksum: sha1:62e4018a39e7898a4bef3f0360a79aa15e066033 pristine_git_object: e3ac6e076143da69911d902dd6ff3d9627ef44ef src/models/newmanagerrequest.ts: id: 2e5a9b904ad3 last_write_checksum: sha1:fb408c72e5bb048b9aedba109ba2bf7204acf7a3 pristine_git_object: d417ac9eda4b6a70d091f794b63d8c160eaef3d3 + src/models/operations/acceptworkspaceinvitation.ts: + last_write_checksum: sha1:7340d5e9f38debe11fba54345bffb7556f738cef src/models/operations/addworkspacemember.ts: id: 73ea4e8eead0 last_write_checksum: sha1:ce1f540621054e103829b31c98d13a992c77e1c4 pristine_git_object: fd1c26e37f48aeb82914e5ea11b8e6eee6dcc73a + src/models/operations/applycontainerregistrymanagersnapshot.ts: + last_write_checksum: sha1:2f07284fba8464f9ab7f9c17f8599259b4e9e7f4 + src/models/operations/approveagentsession.ts: + last_write_checksum: sha1:7f5cba2d618649b37e0e5c90ec94b01def79dda2 src/models/operations/cancelmachinesmachinedrain.ts: id: ff1c2fb8abf9 last_write_checksum: sha1:e93ca56f01d505a3dd9f0b976ce9868b096fba0c @@ -28258,14 +30655,36 @@ trackedFiles: id: 32e145c6ddd6 last_write_checksum: sha1:9f566aa1f1bc92f61332c8bfa67b32858478aec3 pristine_git_object: 27ec30fb688c7b20c7aef8b7fd005f6ec0082e2d + src/models/operations/configureprojectbuckets.ts: + last_write_checksum: sha1:625669e8ac4662b1802c659051ec083ac7bcf200 + src/models/operations/configureprojectdeployments.ts: + last_write_checksum: sha1:a665be1100782ee8eea4a2fc033cfe26b50b7cfc + src/models/operations/configureprojectkeys.ts: + last_write_checksum: sha1:c4fb054b19f4fe3862c9bb9241c78c48c27b85e6 + src/models/operations/configureprojectmodels.ts: + last_write_checksum: sha1:b3bd18202e62cd5b532336c12db1293783ac99e4 + src/models/operations/configureprojectregistry.ts: + last_write_checksum: sha1:a47444dbbd14a918e7c716348d6929afb62ca760 + src/models/operations/configureprojectsource.ts: + last_write_checksum: sha1:4c6f3963e8a2bf8064aef42af35f3608f25ededc + src/models/operations/continueawsvirtualkey.ts: + last_write_checksum: sha1:d6e68be767f39ea1ac046a6d2b98d9ffd456db93 + src/models/operations/createaccessrequest.ts: + last_write_checksum: sha1:3c5132d3cb102a0aa0dbe2daecdbf2d90cb9988f src/models/operations/createapikey.ts: id: 083db57ce11b last_write_checksum: sha1:509a11c092af3e66e92b9159de1831ab40353bbb pristine_git_object: c7515f2cd04cc6b250ce0026bb6e130b2e48c3cf + src/models/operations/createawsvirtualkey.ts: + last_write_checksum: sha1:0c2b1369738b0e6bca7f5b13944617d951e1c7e0 src/models/operations/createcommand.ts: id: 076164167b99 last_write_checksum: sha1:7b6347b558eb77e4cce35b8abefcb3ad8c1b322a pristine_git_object: 87ae49b4718d054bb583bbd38311d0806d53dae3 + src/models/operations/createcontainerregistrycredential.ts: + last_write_checksum: sha1:38da027d4a87e9a009381c57e6a44b1feffaa580 + src/models/operations/createcontainerregistryrepository.ts: + last_write_checksum: sha1:ddf91ce9e38abf8a1f492383f72dee259c51431f src/models/operations/createdebugsession.ts: id: 58c112a8c396 last_write_checksum: sha1:d9f6220f0d3a800f0df84aec8cad64d0b56d5981 @@ -28288,7 +30707,7 @@ trackedFiles: pristine_git_object: 5379e31cb9ba1ddafcd6e0bf794a8d8d3e93ac60 src/models/operations/createdomain.ts: id: 1f71422ebc46 - last_write_checksum: sha1:c4972617ec582e80d8bffe2bce9e68f0e1ab2330 + last_write_checksum: sha1:ffbb9ece6d20002e8d0179491aaceab33b65983f pristine_git_object: c0490eaaf2b01abe4c3f5f7ade7047639c39eeea src/models/operations/createdomainendpoint.ts: id: 6908f03e0f19 @@ -28306,18 +30725,26 @@ trackedFiles: id: fbb187e1aa08 last_write_checksum: sha1:753d340eef0086a74f2948fe1448d815b3bafa2c pristine_git_object: ff83fc57ac611ac861042e818cf55413b1eaf292 + src/models/operations/createoperationsbundleuploadurl.ts: + last_write_checksum: sha1:f6fa0263d727643e1d68a6820719db2c1a955812 src/models/operations/createproject.ts: id: 906aef1b7711 - last_write_checksum: sha1:822139123a99a64b3b8fc91c96c3c0227c94cb32 + last_write_checksum: sha1:0428076ac8ba0e8e5bd6bddff218cad64d754944 pristine_git_object: 5058ea07610861714e95f60543c1bf1b3d6297bd src/models/operations/createprojectfromtemplate.ts: id: a86500746e28 - last_write_checksum: sha1:cd5d2e004b627b2af13099d11a2b3588363413b9 + last_write_checksum: sha1:d3737b21c1cf25792eac485352fd990270c73dc0 pristine_git_object: 9c45382c175c972bc8a215f6044afea720358797 src/models/operations/createrelease.ts: id: dd0994083c1b last_write_checksum: sha1:342510d04396a04b0efb11d680b251701f1ab9fe pristine_git_object: a2c44f59dc820556dcd21af7a63bbffe560d5861 + src/models/operations/createreleasechannel.ts: + last_write_checksum: sha1:8c37b8618451eba3aa5ad67e49e4841c193c2bc6 + src/models/operations/createremotebindingsexternalaccess.ts: + last_write_checksum: sha1:76732a811b6ce5d1d9f61b582464d5a1632e5a7f + src/models/operations/createsetuplink.ts: + last_write_checksum: sha1:e733594aa0232229c18d5be35471c97838b94904 src/models/operations/createsetupregistrationoperation.ts: id: cafb1f32d3ca last_write_checksum: sha1:1651089c2ad967f9f981be3d8a6717a1d3175d74 @@ -28326,10 +30753,18 @@ trackedFiles: id: 27fe97979faa last_write_checksum: sha1:27c41129bac7a19f66e89926a96e658ff6c73f95 pristine_git_object: 325334e31397022d5a3932d17483e893929ba4cf + src/models/operations/createworkspaceinvitation.ts: + last_write_checksum: sha1:59fc9b2992ac73352ad2673a2b75794ab4857952 + src/models/operations/createworkspaceinvitelink.ts: + last_write_checksum: sha1:d1318bc49e330d7d16f8fabd28dae9304f552c5e + src/models/operations/decommissionawsvirtualkey.ts: + last_write_checksum: sha1:3849f1beaeb5779055ecc3218a5e9860296baba1 src/models/operations/deleteapikeys.ts: id: b8c63a8e167c last_write_checksum: sha1:d8aec3d368e773693c3622198aa661a6c4aa2ca8 pristine_git_object: 294390e97216fae4bbed278c929c4e2591b5c5e8 + src/models/operations/deletecontainerregistryrepository.ts: + last_write_checksum: sha1:2104b51e26406e4a41ff9fc1fd2a4cda8337631c src/models/operations/deletedeployment.ts: id: 27f947bf9ca0 last_write_checksum: sha1:df0e12c6849ada0e11c3fa537a34d75138eb556e @@ -28342,6 +30777,8 @@ trackedFiles: id: c537d03b82f2 last_write_checksum: sha1:0a49fc306b921a6af35d47535d01e8f38bc742d0 pristine_git_object: 46fb6d94f37f175241d2d8160931839ecbb5ea1e + src/models/operations/deleteexternalaibinding.ts: + last_write_checksum: sha1:e47271688352a9968fc6a7ce5cd449b6cb25f83d src/models/operations/deletemanager.ts: id: e8dcb2ca32f8 last_write_checksum: sha1:c51d5efa400ca7eb53b41e832e6c57f6627c7e01 @@ -28350,6 +30787,8 @@ trackedFiles: id: 4bd997334fe0 last_write_checksum: sha1:8b5c834a429c63cf577b1ceb2ce1f6bf79a57744 pristine_git_object: 2c78c6a73968a209b6e6e9e367fe5a91bc5aeb7b + src/models/operations/deletereleasechannel.ts: + last_write_checksum: sha1:26d996ab6236b88935aff3b84394a12b0f3cb953 src/models/operations/deleteworkspace.ts: id: 38325c1278ba last_write_checksum: sha1:4d46ad510c2e0cff35df26c8f145edf529c1f5ae @@ -28366,18 +30805,30 @@ trackedFiles: id: da637206b84b last_write_checksum: sha1:6927ff76055e8e3c7ae2f53018ca965c60c09c03 pristine_git_object: 283cad955079d294ed62568f4951b608b1481dc5 + src/models/operations/ensuredeploymentgroupbyexternalid.ts: + last_write_checksum: sha1:71f6dbef4b79b84585a475f348b459f6f735ab2c src/models/operations/ensuredeploymentgroupbyname.ts: id: edf4d8455e14 last_write_checksum: sha1:b1eafbcfe36854a6f65e67d21f3509a557e1521e pristine_git_object: 3534ec931c855ad305e51267d26cdfa657f8f6be + src/models/operations/finalizeawsvirtualkeydeletion.ts: + last_write_checksum: sha1:f05d35c1125e75874406186c9d8a80e6677c4bdf + src/models/operations/generatemanagerbindingtoken.ts: + last_write_checksum: sha1:d4c188678bbc80d35724c227ffd77a5fc71dbec9 src/models/operations/generatemanagertoken.ts: id: bbd005d13fc9 last_write_checksum: sha1:b04d07e2ec21bb858294e4eeee9afebb05572a33 pristine_git_object: e2f3499734c501ff7e9d7406aed5b3e2c8e317dc + src/models/operations/getaccessrequestcoordinates.ts: + last_write_checksum: sha1:6c13e7b5d6cc56eba5151f0ff8a7b24ed34fcb17 + src/models/operations/getagentsession.ts: + last_write_checksum: sha1:91707066bab4fece07a0214a4796cf077cc5ea72 src/models/operations/getapikey.ts: id: d94f7ec275cc last_write_checksum: sha1:35a95306004affedb589602e3b5d6ada9ade4853 pristine_git_object: 3aeefc5e8078b39b1f418f32f2fc47c4b3d81598 + src/models/operations/getawsvirtualkey.ts: + last_write_checksum: sha1:5e295b486e1f9a841d866357d57d5fad705e5b3a src/models/operations/getcloudregions.ts: id: a936514db729 last_write_checksum: sha1:65e0d6d0be964e40788464352a1f3b0dec44331d @@ -28386,6 +30837,10 @@ trackedFiles: id: e121e7561830 last_write_checksum: sha1:cd41869a4692a16a62c0d8edf16a443133cb5450 pristine_git_object: c2c63c86b7e8f0af4160ac07832686c28ea168d5 + src/models/operations/getcontainerregistry.ts: + last_write_checksum: sha1:2830cda29525a753ba0fb711560304de2520b00e + src/models/operations/getcontainerregistrymanagersnapshot.ts: + last_write_checksum: sha1:9a3768d6c6a3b10d0718699bacba690f98c5050b src/models/operations/getdebugsession.ts: id: 81ab50ec8146 last_write_checksum: sha1:8acb41a8ec210739883a5b45f79e39de2ef54317 @@ -28400,11 +30855,13 @@ trackedFiles: pristine_git_object: bf8f34e3b6093b2e29d8a2dcb09b03943f40f50c src/models/operations/getdeploymentgroup.ts: id: 2171909a8f59 - last_write_checksum: sha1:ebb1f9b5ee8f0bb0ce231e17782ecfb99c376207 + last_write_checksum: sha1:5784a452cdb137d9589022eeed1ce5ffc782c2f3 pristine_git_object: 76d9620f52e5c066ba508d62c9b7471c51ec5c7e + src/models/operations/getdeploymentgroupbyexternalid.ts: + last_write_checksum: sha1:d59a0bf4560bdbc647e5daeeccf73fa0c0f827ed src/models/operations/getdeploymentinfo.ts: id: ed232fae49fe - last_write_checksum: sha1:6d0e61455db7a5d6653857b944be39fc275f1962 + last_write_checksum: sha1:df95cf9cbefad4590b670057620f7d8ab80eb2b5 pristine_git_object: 1a44106e129932d2f63690a208188ae707e2244d src/models/operations/getdeploymentinputs.ts: id: bf558f7dad2e @@ -28412,7 +30869,7 @@ trackedFiles: pristine_git_object: 57323c06dd0c853a57a498a926f9a27ac853ed69 src/models/operations/getdeploymentstats.ts: id: 0e722b151e12 - last_write_checksum: sha1:6c4166348a112881b737406295bc7c99da272c96 + last_write_checksum: sha1:9ea6b10b95409a2b19e198c3b8236b4951e8aae6 pristine_git_object: 37e9c55443b9a8a8a99ea91290a1b5a97fc1e472 src/models/operations/getdomain.ts: id: 8eb93ffedf48 @@ -28422,6 +30879,8 @@ trackedFiles: id: ff5a53e430c2 last_write_checksum: sha1:3c46cfeda6a101607a92686cd9299ea50e7681af pristine_git_object: f5ec48a28b760179eda414683549b46b64b3a4bc + src/models/operations/getexternalaibinding.ts: + last_write_checksum: sha1:3fed7efa5a619931ef7417f8eff92e0a0c29d8d5 src/models/operations/getmanager.ts: id: 5b35f7e1fec7 last_write_checksum: sha1:1fe8cbaa997ebcf6ae79be89ed40a33ee234d8ff @@ -28438,6 +30897,8 @@ trackedFiles: id: 413e6d26319c last_write_checksum: sha1:727e92c9407921c0398917609c5f8263f3c4a333 pristine_git_object: c5817926d2c05812046ac04c3f43aa551169abc3 + src/models/operations/getoperationspolicy.ts: + last_write_checksum: sha1:7a725167c24c005fa2808597dd1afe70855d2467 src/models/operations/getpackage.ts: id: 887e71aad60e last_write_checksum: sha1:fa8bec6714d21f26b147374b9932233d4abb5c99 @@ -28450,6 +30911,10 @@ trackedFiles: id: f3babe38a37a last_write_checksum: sha1:592ab0839fcdacdd027d77b24a5dbd550889f87d pristine_git_object: 07397b083808e1d0dd0840a409014c272550a6c6 + src/models/operations/getprojectaiusage.ts: + last_write_checksum: sha1:89b6663a13fefec6d4594d73cf7619a1c204ebb2 + src/models/operations/getprojectcapabilityoverview.ts: + last_write_checksum: sha1:759c0990333a664346b02e685b2558a52fa3dc71 src/models/operations/getprojectdeploymentlinksetup.ts: id: d4b3dda98390 last_write_checksum: sha1:9bdc07b262841a4d25af92b3825b3844e51fa00f @@ -28468,11 +30933,11 @@ trackedFiles: pristine_git_object: 2ffc7d70da305a39f13098eb15bdb350da4dc937 src/models/operations/getrelease.ts: id: 14cdd32ee38f - last_write_checksum: sha1:4cf3d8d3cca949285ceafa4187272c3c42cf9a9d + last_write_checksum: sha1:7932a8caa34ac4165dfa241f24d0ee3188ec71f5 pristine_git_object: 4f2edd99c25ed8cb5cfe69eaffe32727b18da120 src/models/operations/getresourcedeploymentdetail.ts: id: 61664b1aea1b - last_write_checksum: sha1:e11460c1755aa85d3f0d2d30e70fbb8960588974 + last_write_checksum: sha1:7b12f243777bb23c64e34d046339c4cc45675b00 pristine_git_object: 9ff4d9a3a4b7b1baccd21f110cb71e65bf8f136e src/models/operations/getsetupregistrationoperation.ts: id: c1cf70012dca @@ -28486,6 +30951,12 @@ trackedFiles: id: b5e687d1b4ad last_write_checksum: sha1:f4f4f5b711311165bfc0a33d1431b5da54a2fc38 pristine_git_object: df7207c640224f8a0dde3626e97350f9c69559b3 + src/models/operations/getworkspaceinvitationpreview.ts: + last_write_checksum: sha1:c50efef6c730b569f040d48a2b786480708e1625 + src/models/operations/getworkspaceinvitelink.ts: + last_write_checksum: sha1:933c9972655368bcd91d1859b9fa92d2237d4306 + src/models/operations/getworkspacesettings.ts: + last_write_checksum: sha1:a247255cde1d3eb3644dccb980121776325eaed1 src/models/operations/importdeployment.ts: id: fa8d08957b7b last_write_checksum: sha1:a363fba2541fa3c95200b05fabffc8f0f88e9b0f @@ -28496,12 +30967,20 @@ trackedFiles: pristine_git_object: 126e8c5c8e0b8d15c4daefcd3e2aab500207b77e src/models/operations/index.ts: id: 0d9ffaf774d2 - last_write_checksum: sha1:371eb238eea8cd289e54ee916b37be29c8a044b0 + last_write_checksum: sha1:c822d635abed64b198a9bc039b4d152122c8551c pristine_git_object: 4c642023437b4b27fc66f4e248cbf0fbde736860 + src/models/operations/invokeoperation.ts: + last_write_checksum: sha1:6c9896e730b669040447cf8a07201b33ce25467b + src/models/operations/listagentsessionevents.ts: + last_write_checksum: sha1:e58f325055d03a0d05275512bb5d4c6b63adb81f + src/models/operations/listagentsessions.ts: + last_write_checksum: sha1:40d21a6743206e1770b1c096c0081a085b982b49 src/models/operations/listapikeys.ts: id: f6a5b994cd87 last_write_checksum: sha1:c880049a7a615a11ac10318062e5758af2bee946 pristine_git_object: 8fe315fbaf3dec31eefa66483c16bc1ea1290658 + src/models/operations/listawsvirtualkeys.ts: + last_write_checksum: sha1:caaabb726586fdad7c125018cac2444a34b3404d src/models/operations/listbillingauditlog.ts: id: 813f537b0a28 last_write_checksum: sha1:5ebe6b60aeee03cf02f446424c2eb85a91d30a22 @@ -28532,11 +31011,11 @@ trackedFiles: pristine_git_object: d0b2f45d5cfb3122578af535d3d584f5bd93428e src/models/operations/listdeploymentgroups.ts: id: ed1760ee3398 - last_write_checksum: sha1:4162ddba2319592c30caa4e4fd20f5bbac1438cf + last_write_checksum: sha1:59d1df6b5f67c290b6c58c05f969041f509412ef pristine_git_object: b5c68052c8f006f5e72d8527a29d3e3f8849c24c src/models/operations/listdeployments.ts: id: 3c413d710db1 - last_write_checksum: sha1:ecab28ec6738663711bc54d800941672cdecbf05 + last_write_checksum: sha1:797043e6fcee31518d96707ac30b259ab3b7ee62 pristine_git_object: 1b4df749322def4871f05d835c35e84a31fb2dfd src/models/operations/listdomains.ts: id: d4f6041d8d95 @@ -28544,7 +31023,7 @@ trackedFiles: pristine_git_object: 95fa741f2acf94ea6bba79c2c5dce709c523d6af src/models/operations/listevents.ts: id: 4324ebbf246a - last_write_checksum: sha1:a3e6077003e06742af6361f924d85fd7bf2a5af8 + last_write_checksum: sha1:219762f74269fdff091840205ab3c3dc064375ce pristine_git_object: 7b5a0a39c2c1344742be94b7fd384f97fdbdc312 src/models/operations/listgitnamespacerepositories.ts: id: cd2187509893 @@ -28578,6 +31057,8 @@ trackedFiles: id: 982fa9b4e20f last_write_checksum: sha1:9bf1ca715b32a9071c52345b6ff865d03efacd42 pristine_git_object: 343fe81ba468929cafead821baa45007a9105f62 + src/models/operations/listoperationsplugins.ts: + last_write_checksum: sha1:89c2601cb468cd5f6df246fdd6cbbd6fe5068194 src/models/operations/listpackages.ts: id: 5fda120afaa5 last_write_checksum: sha1:71c6fba6ca8d1e19767a7a90b76ada09f3e81ced @@ -28594,18 +31075,24 @@ trackedFiles: id: 4ea991dadef0 last_write_checksum: sha1:e99768a7b0da75ec81514b2549033385c5c6308c pristine_git_object: 76bdcbe69dce65c890f0bbd747b688f72de6c530 + src/models/operations/listreleasechannels.ts: + last_write_checksum: sha1:689f5e5fb8cd53f9e1d04639d584e8b22fddc4fb + src/models/operations/listreleasedeployments.ts: + last_write_checksum: sha1:bdf3ec6b20471c924c7b923f1d8d268aa3581c78 src/models/operations/listreleases.ts: id: 4e7f3343a0fd - last_write_checksum: sha1:48e0b04cbbe915d1f26ef88c16216c8a1e8cc898 + last_write_checksum: sha1:6d106ed8f952c748447b041ff6c9b167e49b0407 pristine_git_object: e2040f83f25a1cc96a77ca509a590b16b59d18a4 src/models/operations/listresourcedeployments.ts: id: 3ec2db39e463 - last_write_checksum: sha1:93d86713eaa5729019f5f72ccc56be650aeed83d + last_write_checksum: sha1:2bcc4608907251f59974e205c51460d4d02c0cb1 pristine_git_object: 41d158b55e54cac2256a01394c0e7a734393d5e7 src/models/operations/listresourceoverview.ts: id: eedd30655fb2 - last_write_checksum: sha1:935f9bbf6c2eaff86d05177da5524ec144d7a9c7 + last_write_checksum: sha1:0068fcb12942d680fd95e87ba39f45af97668c4d pristine_git_object: 99fc4030a9c66aef83abe5f276577e0fcc90bf48 + src/models/operations/listworkspaceinvitations.ts: + last_write_checksum: sha1:d4de82c584132091db7e8833a90e5221d064f5ea src/models/operations/listworkspacemembers.ts: id: 009ed1f62eb4 last_write_checksum: sha1:bc71971c11cb6c4d4885c8594ff2c15070fde7c7 @@ -28620,27 +31107,37 @@ trackedFiles: pristine_git_object: 797451c3c9f7ac6c1593dc50b0125ca34dc2ab10 src/models/operations/plandeploymentcompute.ts: id: 68748c9b639c - last_write_checksum: sha1:3118ec5446c725d7ddee459da3cf71d0bbd8fdc1 + last_write_checksum: sha1:e5679c4db6955e471cebd73076a5028a9025a4b2 pristine_git_object: f7978157a77aa1eccbc5b6aa7038b70ca79df5d5 src/models/operations/preparedeploymentstack.ts: id: 511880a55dca - last_write_checksum: sha1:f49d5b663092415535a94726a46f150f48c0ad54 + last_write_checksum: sha1:1f2868187921350dcd6f179b9804fb9311934190 pristine_git_object: c60b36f80a7025564a1937d1b5eb5d9c03c62879 src/models/operations/prepareoperatormanifestpackage.ts: id: 502615f4c368 last_write_checksum: sha1:6df49c0822d189feff9475a5e27569204ee43123 pristine_git_object: 2108d433340b20c54c96667b1675bcbaf0b6e51f + src/models/operations/promoterelease.ts: + last_write_checksum: sha1:0a0d5297e2f38a0dc7eea82a2fb76f933eed2c21 src/models/operations/provisionmanager.ts: id: 53a9b50965bb last_write_checksum: sha1:e42ebb7cc81273ad4f7b26737c2ce26ee57e2089 pristine_git_object: 473af1d4da58f6c2ba559abfa0ceaecbe3b935aa + src/models/operations/publishoperationsplugin.ts: + last_write_checksum: sha1:24701a2900118ea08345bc7606e6c3b8f54fc420 + src/models/operations/putcontainerregistry.ts: + last_write_checksum: sha1:2dd72fca1edcbfe99dcaad6861c10ac4861e0c64 + src/models/operations/putexternalaibinding.ts: + last_write_checksum: sha1:6760763f6fb94f7aa908f4d856d68e3ff653a445 + src/models/operations/queueaccessrequest.ts: + last_write_checksum: sha1:5e956ed12004dcae30ef0eed89f408fe0e6625b1 src/models/operations/rebuildpackages.ts: id: a8c2e9df375e last_write_checksum: sha1:9894f1c063caf074bfb5995286bdbd5b767cd624 pristine_git_object: 97a9079ec0d281e3c6d6377e9d42f0ea530f443e src/models/operations/redeploydeployment.ts: id: bffaaae93bbf - last_write_checksum: sha1:cd7ab17bba7b44be32ec8d106839fe0f30015ab3 + last_write_checksum: sha1:d7cf67676cbb42913ebacdbdbdf7074346976c96 pristine_git_object: 2b48862392a402fcabb440d7e91cd5636343a51e src/models/operations/refreshdomain.ts: id: 3fc4f7b99926 @@ -28662,6 +31159,8 @@ trackedFiles: id: aac8d56123ee last_write_checksum: sha1:bbbe2ccd2a0a507ae6a647246125b0a4f8741e9b pristine_git_object: 317913f3e8af881c88923cca7d8d673a65429cfc + src/models/operations/resendworkspaceinvitation.ts: + last_write_checksum: sha1:2ddb06f3888c70efc00b70540374120a1269baf6 src/models/operations/resolve.ts: id: d1783b563449 last_write_checksum: sha1:bf013584eb387e914ed3429d099a48f14fe86c29 @@ -28674,6 +31173,8 @@ trackedFiles: id: 2f08f893067c last_write_checksum: sha1:b2aef601ebeaf356c8d57638818d70d1530afe5c pristine_git_object: f419a484f25f6f058246a6219148395a9b2263d9 + src/models/operations/restoreawsvirtualkey.ts: + last_write_checksum: sha1:dc93f92dbb1af09bb692a0c6179e80cade031009 src/models/operations/retrydeployment.ts: id: 4f8a70d577bb last_write_checksum: sha1:2af43d64b115146b5f47c9dd72f21e49aebfde16 @@ -28690,14 +31191,44 @@ trackedFiles: id: a50bffb0aa79 last_write_checksum: sha1:a664d74d49f30cb03c5b2b5ca4821e5f87f86e6c pristine_git_object: dbda4f2627e6b49ea9f93f20b5f4433e718dba08 + src/models/operations/revokecontainerregistry.ts: + last_write_checksum: sha1:7f94477c2f253d92510b5f8d876761cc5d5c41c0 + src/models/operations/revokecontainerregistrycredential.ts: + last_write_checksum: sha1:47c887ada7064392d59dee7c510578a43e0edf90 src/models/operations/revokemachinesjointoken.ts: id: 63f1cd657aa3 last_write_checksum: sha1:3663aa4d7b93da64430a9a1460910d097cd55d60 pristine_git_object: 04ff089ed88b798584e3d94f5d3e6be7101c0bf0 + src/models/operations/revokeworkspaceinvitation.ts: + last_write_checksum: sha1:ccd348302d5f64f2a786e89b1648ddf60efdab64 + src/models/operations/revokeworkspaceinvitelink.ts: + last_write_checksum: sha1:b49c8a7c997131493dd02f4f73bfd3b1efd6ad64 + src/models/operations/rotateawsvirtualkeycredential.ts: + last_write_checksum: sha1:78973b7fa4ec42b54ae3a362f6e1dee16f548fae src/models/operations/rotatemachinesjointoken.ts: id: 7f88d810e3c7 last_write_checksum: sha1:4df64776184c9bb569a0db60ef21d35ff0774010 pristine_git_object: 1cc98b339a41f1daf1a788d2875655b04436ac61 + src/models/operations/setdeploymentgroupexternalid.ts: + last_write_checksum: sha1:6ff13b0941c8a3908ee88f2035479a7cd0a86e06 + src/models/operations/setdeploymentreleasechannel.ts: + last_write_checksum: sha1:8e70ee625082b610793e071bb779d72c208406da + src/models/operations/setoperationspluginenabled.ts: + last_write_checksum: sha1:2143e3513d237e561138f91ec795480951be2360 + src/models/operations/setprojectcapabilities.ts: + last_write_checksum: sha1:6e63144cdbc4cd8ff391b7f7796cb461f9f294fd + src/models/operations/slackintegrationchannels.ts: + last_write_checksum: sha1:12d4d761831ac446847735de918959c941b07fe4 + src/models/operations/slackintegrationinstallurl.ts: + last_write_checksum: sha1:2700865b6a6f5ff8660e5b66b3ddbf3bdf8c821a + src/models/operations/slackintegrationsetnotificationchannel.ts: + last_write_checksum: sha1:50cabc071776c66ec592a41998575ce3f9447c11 + src/models/operations/slackintegrationstatus.ts: + last_write_checksum: sha1:fc48598a03936e8e4fa7049b20ca7f141176d7cc + src/models/operations/slackintegrationuninstall.ts: + last_write_checksum: sha1:ff769643987caf037b3b6940bd69e216d204827b + src/models/operations/stopagentsession.ts: + last_write_checksum: sha1:1ac6c9edff406b72221cf2fef7898abeea686c90 src/models/operations/syncacquire.ts: id: 4280d0a7aa28 last_write_checksum: sha1:adfe6afc59d43c1dfcee3aea4eb235e0a30d6fd5 @@ -28722,6 +31253,8 @@ trackedFiles: id: 6b8b523d1dc5 last_write_checksum: sha1:acf9a114bacde9d8bc60cad65be1089d9c69fefc pristine_git_object: e5e7a7166755e403245e028e4f92b0f8bb0547ca + src/models/operations/syncrenew.ts: + last_write_checksum: sha1:7d2a35f1156663f5b64d927e95d4c683f2be32b0 src/models/operations/updateapikey.ts: id: a4e3a053ca54 last_write_checksum: sha1:0f09ad61e2f283e91e7cf9dd78b58f9485958f56 @@ -28754,6 +31287,8 @@ trackedFiles: id: dfce75393051 last_write_checksum: sha1:7cd2980dd78a7a30cb969a20d6f013008c3ab601 pristine_git_object: f5804eb1ef151ec8dd4e65d41abc7fe0f2b00d23 + src/models/operations/updateoperationspolicy.ts: + last_write_checksum: sha1:43fc61a2b1778bd838068217444085e4be759575 src/models/operations/updateproject.ts: id: c08527cd8d69 last_write_checksum: sha1:122f1050ceaeb05dac5f1692f3c07d53e83ad4bf @@ -28774,10 +31309,26 @@ trackedFiles: id: 69faee810ed6 last_write_checksum: sha1:0fac2b9224b3ca0b7005e7c779786104187e0b96 pristine_git_object: 0901a7b6e356cf699f01a0d498657a7cc6fb1aa3 + src/models/operations/updateworkspacesettings.ts: + last_write_checksum: sha1:472daf0968e06dc4d8d3235d4c5d2b9b0ec6c818 + src/models/operations/verifycontainerregistry.ts: + last_write_checksum: sha1:7b6f6b13037d018c03508a96b7ac70a356088013 src/models/operations/whoami.ts: id: 28fd2925cc89 last_write_checksum: sha1:d4c56e2530843f3c6308ed4dc537e029b4735f5c pristine_git_object: b1e96daf2ce2fcadc448279d80e0138a7b90f9e8 + src/models/operationsbundleuploadurlrequest.ts: + last_write_checksum: sha1:a5a1ae47062cd1dee46de5030dded5508c97d569 + src/models/operationsbundleuploadurlresponse.ts: + last_write_checksum: sha1:90e38ea4c7d9913c06a120b5b5f632428c3695cf + src/models/operationsplugin.ts: + last_write_checksum: sha1:0911a1f5b66ca33be329d6d0efbffe4076da40c3 + src/models/operationspluginoperation.ts: + last_write_checksum: sha1:a27879362da7759256f71f26b83eca6f2efb66c5 + src/models/operationspolicyresponse.ts: + last_write_checksum: sha1:90edc1a13063eef6d6bf70ff60e237968bcca27f + src/models/operationspolicyrule.ts: + last_write_checksum: sha1:f5a72d37011225206e0a0e9d7ada18d7ba48c147 src/models/operatorcapabilityreport.ts: id: bcd07eed81eb last_write_checksum: sha1:b6fd021ca716d97364561243be12d9a148a4fbaa @@ -28792,11 +31343,11 @@ trackedFiles: pristine_git_object: e6346220d5224f79a89603c8176bf14f3c7f56e4 src/models/persistimporteddeploymentrequest.ts: id: c11c3fd39cc0 - last_write_checksum: sha1:9013b8179b1dd113e83166ea71763b21c9adca45 + last_write_checksum: sha1:06325df05b038922694fd39c96787078b167c67d pristine_git_object: 62bb91cac1e35fd1b7eebb9e8d8e38b0bd570ef7 src/models/pinreleaserequest.ts: id: 4a22091eb2be - last_write_checksum: sha1:f053be70eb0d7b043501590f6adc8fa700c4253c + last_write_checksum: sha1:07778109e89e82e7a579268cd573201c5b705ed5 pristine_git_object: c73d70e7e9fc3f90adea863fdf7e9c7c88e87138 src/models/planid.ts: id: d3467480d560 @@ -28804,7 +31355,7 @@ trackedFiles: pristine_git_object: 7659c51ec64005ee30fa3c3e312f3438c978b596 src/models/prepareddeploymentstack.ts: id: b17514615ef4 - last_write_checksum: sha1:33fceb79c02510246ad5989993d8f6ea74d5ed49 + last_write_checksum: sha1:e191a49a916412bd24cb09fec9fb3d0b54160622 pristine_git_object: 450415b4601a228aeec91bb347a62d4e0700c398 src/models/prepareoperatormanifestpackagerequest.ts: id: bef77d7a5cb6 @@ -28824,15 +31375,19 @@ trackedFiles: pristine_git_object: ff42baa7853e7e91af84d8a2123c5824a9d9045c src/models/project.ts: id: 6d341934d773 - last_write_checksum: sha1:d0ecedd00ba750e86dc273367bce1845290cb3f7 + last_write_checksum: sha1:bec47e520b19bce6c5d248028023bf40eae5c19f pristine_git_object: fac9d66695314a50578fe51a745ec08bfac2c28c + src/models/projectcapabilities.ts: + last_write_checksum: sha1:bc12b88b2d14ae113e0b7baf1da02bf53a751def + src/models/projectcapabilityoverview.ts: + last_write_checksum: sha1:6ce591cfb407f22ba387ea205125d7147521d354 src/models/projectgcpoauthprovider.ts: id: fab70ede1870 last_write_checksum: sha1:561908dd22cf0616db036b27f963595b7d339093 pristine_git_object: 7436ccb9b2ea7cbf64c203c17bc2a0a0d469db92 src/models/projectlistitemresponse.ts: id: b07ac2938422 - last_write_checksum: sha1:95621ab266bab7e571569b3eb97c401cdc6c0eb1 + last_write_checksum: sha1:37468881fe80a0f06788102b34fab6673ec519bb pristine_git_object: 823216b87426e561f5b3a86b203a019d096b33e0 src/models/projectreleaseinfo.ts: id: cab90b13eab7 @@ -28840,31 +31395,51 @@ trackedFiles: pristine_git_object: bba39a93d460600bb6cda70fabff380aad89ecec src/models/projectrole.ts: id: b93b1b667b4f - last_write_checksum: sha1:42929d2ce2c1c82df85ef65fabae5d8163e69731 + last_write_checksum: sha1:dee5952ef0c8beb98553ceb0fd30cfa879cdf5c7 pristine_git_object: 1f43dde16b3d7ad34e4f2ca4741e071552e60f55 src/models/projectscope.ts: id: 94b9ced20495 last_write_checksum: sha1:585bd5c77dc2a91da7d1f34239d89c4f52bd186f pristine_git_object: 577726343ff8d938ab4bee62d8670c2296e9c3a7 + src/models/publishoperationspluginrequest.ts: + last_write_checksum: sha1:b211290a9dd45be2bfc4ed1c8ceb37219f1ddbe7 + src/models/publishoperationspluginresponse.ts: + last_write_checksum: sha1:21ff29146a3006e3191d576800114a4268c713f7 + src/models/putexternalaibindingrequestunion.ts: + last_write_checksum: sha1:be03e91855da0a79733b348754ddbded6d7163f1 src/models/release.ts: id: 4cd61360fa2e - last_write_checksum: sha1:e3ba2c5d1beda8e6024ca0af9bc2c6d3e22b2020 + last_write_checksum: sha1:e842a1c5839791e75539657965a4a535d3ea9904 pristine_git_object: 77932caaf2dd922c5750c50842743800b2a51338 src/models/releaseauthorfilteritem.ts: id: cd9c303547e9 last_write_checksum: sha1:518c14b2bede8bb541204eea1eaf76b3456282f1 pristine_git_object: 403f3d9c56c6e40fc91b738f2306b11742897334 + src/models/releasechannel.ts: + last_write_checksum: sha1:fc2aa0e5c331aea08ff1d707caa6065459b6836f + src/models/releasedeploymentitem.ts: + last_write_checksum: sha1:36a07a463cafd907c6efef13154d7e759d14d7c5 + src/models/releasedeploymentsresponse.ts: + last_write_checksum: sha1:13cab00c6b84f915232a019a22bf40d297be8745 src/models/releaselistitemresponse.ts: id: f747ff5a66e6 - last_write_checksum: sha1:90695e315544f7cfae02e581b67ee6c6756a8b05 + last_write_checksum: sha1:62eb729e35285638941b7f111cbea0d6f0e12dff pristine_git_object: 5b66cd9c13132e2a26d4cefb288f9c3fd6211362 + src/models/releaserolloutstate.ts: + last_write_checksum: sha1:70bf6843dc356576004b5723aa2a5f762c7dd05b + src/models/releaserolloutstatecounts.ts: + last_write_checksum: sha1:88f88125c3aaeb6df368d9c9775d8c40bda89578 + src/models/remotebindingsexternalaccessrequest.ts: + last_write_checksum: sha1:7f3fb207135a6a35ff8eb7550cc80e3a785cd033 + src/models/remotebindingsexternalaccessresponse.ts: + last_write_checksum: sha1:458e22caa54d10807ae68c77a481afc5fe732fda src/models/removemachinesmachineresponse.ts: id: b6102d0f2baa last_write_checksum: sha1:dc3d22659a3c21e909687fe4d11638a83928a878 pristine_git_object: 411aa854ef31795e9b80427a49c5215f1062ffb6 src/models/renderoperatormanifestrequest.ts: id: a98af76a2e49 - last_write_checksum: sha1:ff985e1b676f4ae747e3bb7d39d21169e695beed + last_write_checksum: sha1:b80e3b802a7a48159230456bb2d41ce76f6cb56f pristine_git_object: c182d61dd47b6d4c61b8bf8b07da37bf51690406 src/models/renderoperatormanifestresponse.ts: id: da3dd6f50176 @@ -28914,6 +31489,8 @@ trackedFiles: id: 0c77cee2b1da last_write_checksum: sha1:27e6afdc835d18b9d67bfc75a39ada1886476e5b pristine_git_object: 0c765a72bef5b1ce1f8f450a23e554b8bfe655fb + src/models/setdeploymentgroupexternalidrequest.ts: + last_write_checksum: sha1:61681be0f7df3482f4dae14c8a7fc592cd04bc16 src/models/setfirstpartydeploymentinputsrequest.ts: id: 3aade69fc633 last_write_checksum: sha1:c040f97b8adc9b6222485a8f30a9f47e17fe2bb6 @@ -28922,10 +31499,16 @@ trackedFiles: id: 6a3b32c05838 last_write_checksum: sha1:1cc6262841b6662981775b4787073a8690fbb725 pristine_git_object: 69d9fa083a9586d7ae70f9fa70cca56402780aab + src/models/setoperationspluginenabledrequest.ts: + last_write_checksum: sha1:1d4c8b0d72edac819022b63d77a8f2f4221d4e4f + src/models/setoperationspluginenabledresponse.ts: + last_write_checksum: sha1:07e042a56bcefd2b04fb50a68ec3ce55ac7ced1a src/models/setupfingerprintinfo.ts: id: 7a4c468ef208 last_write_checksum: sha1:92dd363b982f072f03144102190be5c2b6e140af pristine_git_object: a8ab7d87fa0d9f506c58488153133af9d084b512 + src/models/setupitemstatus.ts: + last_write_checksum: sha1:6a823222617726095192aa82559d690d3ef97907 src/models/setupregistrationaction.ts: id: 43ea3768f2b3 last_write_checksum: sha1:3dda52f0c845609bee355e08b24f7d1e8cfac31b @@ -28946,9 +31529,21 @@ trackedFiles: id: 5bbe4a224dcb last_write_checksum: sha1:59ebd8732a4a67c45d25322bec9155d63879b3e0 pristine_git_object: ea4ed2bac38dc49318ee6be1a4a320f70cf2a7e6 + src/models/slackchannel.ts: + last_write_checksum: sha1:a8e3da3933112455d4d53e850f47206c1f7d6ee7 + src/models/slackchannelsresponse.ts: + last_write_checksum: sha1:1bcb73123d6768f43947aa9f169be9b1338fa7e0 + src/models/slackinstallurlresponse.ts: + last_write_checksum: sha1:468cf8f3e65b637aa5340ce1a6db756af1bf2723 + src/models/slackintegrationstatus.ts: + last_write_checksum: sha1:5eea1ca5607ab2bafd0a9daaea6479d4ecd45a07 + src/models/slacknotificationchannelrequest.ts: + last_write_checksum: sha1:39c9aaf587c9a0db62260e0a62e5e0978c8cbe7b + src/models/slacknotificationchannelresponse.ts: + last_write_checksum: sha1:2817923781fd01045882e4e9f9febd778e718edf src/models/stackbyplatform.ts: id: cbff1149ce79 - last_write_checksum: sha1:ad90b129e2f963df168a5c033c5f591523f955d1 + last_write_checksum: sha1:d835b85ff1f43f4664c46bd2acffc9d185af4b7a pristine_git_object: 23ade349b9c08aa0c8fbacf481405709affd5090 src/models/stackinputvaluerequest.ts: id: 6a7717d075b6 @@ -28968,15 +31563,15 @@ trackedFiles: pristine_git_object: 042e31f12a4c56be5ca62fa6d07d4e180ed7e183 src/models/syncacquirerequest.ts: id: c1fa970f065e - last_write_checksum: sha1:4eefb33d98ab3b7d4749de7173d8a4167f4d295d + last_write_checksum: sha1:e05516ff20a0506b06cf5e8d66f0eaaa62a245fc pristine_git_object: 708504653c2bff21d7cc4ab6ece2cb93598c6d92 src/models/syncacquireresponse.ts: id: ab1ff9f97674 - last_write_checksum: sha1:ebfbed4e8e089960286b6d0421d974707a7caf28 + last_write_checksum: sha1:70ec284a5db5b4c742292c5eed7575799efea904 pristine_git_object: 9bcb2ad3f7e293932cb429b8cf89ee269a569d8c src/models/syncacquireresponsedeployment.ts: id: 0d9578b62da2 - last_write_checksum: sha1:1b4d69d97ffa8663ce253591b2f90b5a02cb7ac0 + last_write_checksum: sha1:4e883ee6deedc488ec03abc23982eaeb713fc020 pristine_git_object: f7d4bd94d6281f51c9482366373d74569b697097 src/models/synccontextrequest.ts: id: 8ea5cbd6c390 @@ -28988,20 +31583,22 @@ trackedFiles: pristine_git_object: 6ddafba33ac1493e17f3877263a563faf0a072bf src/models/synclistresponse.ts: id: 9c42028a90f9 - last_write_checksum: sha1:5ae3199a8ee203763e4a8be5e3c4b720254fb440 + last_write_checksum: sha1:d832e9528c0a39d164cb99594a9c6ae1686fb4d9 pristine_git_object: 1a7dd3c151f12a849584fc2f280f43b994e70fc5 src/models/syncreconcilerequest.ts: id: 8881baf7e7c9 - last_write_checksum: sha1:af0511d450a62aa2b9c7bb196f48e014ceade70f + last_write_checksum: sha1:b6167d847bd0807ad1b1e13ecc2420916077261c pristine_git_object: 88ed4ce91361a3ed7ad04ae406090f5e29e70e6c src/models/syncreconcileresponse.ts: id: 8fc1acf0281a - last_write_checksum: sha1:413dace5512be354df81f81de8467fae7a16f19d + last_write_checksum: sha1:4633526a79c47f15327d596467952bd02939024d pristine_git_object: 695cca7cfd0b608cb8c10bf230e1b37da7db8ba9 src/models/syncreleaserequest.ts: id: 2543a00820b6 last_write_checksum: sha1:83dee1c83e3864e639578cf54c3818c2352fd277 pristine_git_object: 6d592ddb4d45ea7665884970743efd17f0d175d3 + src/models/syncrenewrequest.ts: + last_write_checksum: sha1:c16006e365fb9341baa1827f91fd42edd1918322 src/models/updateapikeyrequest.ts: id: b02c6096498a last_write_checksum: sha1:cb43c105ddea4f21588a3e9e463121ee37bf3c2b @@ -29028,7 +31625,7 @@ trackedFiles: pristine_git_object: f006e7020d4ee0defb95c18efb1602517dbcfdb3 src/models/updatedeploymentinputsresponse.ts: id: fcba06ae853f - last_write_checksum: sha1:5a83779753d2e8a906eb31fb1ca7a34ac4f5a345 + last_write_checksum: sha1:3c0635c47b5b4c92254847a0cb8e0cd9319ea226 pristine_git_object: 49093f2ef0339a58be054efe2cb4c2bf97bd1bae src/models/updatedeploymentsetuppolicy.ts: id: 10980c3319a6 @@ -29042,6 +31639,8 @@ trackedFiles: id: dba5607a0c5b last_write_checksum: sha1:65ee0f9648e34d1db85145639a94c6635b8958b4 pristine_git_object: 8c5fd9f7943c685c7ad0795dad7332953d0fcc41 + src/models/updateoperationspolicyrequest.ts: + last_write_checksum: sha1:0e44d7918a447d186f95749a48c355c23d0b24fd src/models/updateproject.ts: id: de1a5842b62d last_write_checksum: sha1:b4b2c39c36bef7fc6ea7e8a5289e7268bb59bd85 @@ -29050,6 +31649,8 @@ trackedFiles: id: dd2bff436723 last_write_checksum: sha1:d7073444334b7549e22ce864f21a1bcfd8c24afe pristine_git_object: aecda2833b0d1306d95ce0118ee14d5cb2c3a9c6 + src/models/updateworkspacesettingsrequest.ts: + last_write_checksum: sha1:679f617a355529a4431d0d21225934b218344a83 src/models/userprofile.ts: id: 0b404ce49479 last_write_checksum: sha1:d7f81a3ec67902b023b2181a1415febb32e47ea5 @@ -29074,6 +31675,12 @@ trackedFiles: id: 454f77e6e44c last_write_checksum: sha1:1ef221e5491e924fb9b1f4b8968b407ff77a0e92 pristine_git_object: 482a601c538ae69084744672ca5c291a09ad084c + src/models/workspaceinvitation.ts: + last_write_checksum: sha1:83e7baf7683c285550f7c55ad7939bc0a8797592 + src/models/workspaceinvitationpreview.ts: + last_write_checksum: sha1:447e2433fe9b7b2ce524498737fb183aaa6a49db + src/models/workspaceinvitelink.ts: + last_write_checksum: sha1:5dddb5c44cc7c96f356f55c8bde698edeab713bd src/models/workspacemember.ts: id: 42cb4568aa7e last_write_checksum: sha1:2c0617ff9755253904e6294bbb15d6bdbc3e7a7f @@ -29086,6 +31693,8 @@ trackedFiles: id: 8915ec67dab5 last_write_checksum: sha1:17cc88966da125b089bc461015c1549aad21cdb5 pristine_git_object: bd468f94c06ab4a932d6f76950605fe22a8d4eb6 + src/sdk/agentsessions.ts: + last_write_checksum: sha1:82095832872be40a4fc31395bdc9d6d83cc1dbe1 src/sdk/apikeys.ts: id: 5dda931501e1 last_write_checksum: sha1:cbcb15319256712fd1b49b8a27b84c17dae3851c @@ -29104,8 +31713,10 @@ trackedFiles: pristine_git_object: 463f753a9752a8b8728449ee8f8c55f4bb959721 src/sdk/commands.ts: id: 31ec805cf614 - last_write_checksum: sha1:def813232fd76910fd02ba919238df430aaabc74 + last_write_checksum: sha1:7c865c8f08894b3b76969a59c7b7de988555334e pristine_git_object: 900d5e87bb79dd9bfb22083ddc8892c5c62e09a6 + src/sdk/containerregistry.ts: + last_write_checksum: sha1:a839b76e82543dedf67d6ff93e3e0df19c8e562d src/sdk/debugsessions.ts: id: bd8512987e15 last_write_checksum: sha1:8b637966a9c257a40ed82a0e971dc52fee3b1f8f @@ -29116,11 +31727,11 @@ trackedFiles: pristine_git_object: 65c560e796087c8b49528a38a952aaab78f8de9d src/sdk/deploymentgroups.ts: id: fee2f374fda2 - last_write_checksum: sha1:0f6acfcffe4d6bee7a8b6b3547908058c3057651 + last_write_checksum: sha1:3eba0607d49b650e4003e5660a3cc244259a1ffa pristine_git_object: b2c398b7a128be6b3796824d57748fcdc8f28b17 src/sdk/deployments.ts: id: 80d6fb28a717 - last_write_checksum: sha1:97d4621742f2b79b33bf0b8c58a75658d19d0d8c + last_write_checksum: sha1:2a54a13b9d198269366f7e6883ac951081cf12d6 pristine_git_object: fcf205177be53bb58961e3cb36c0044faa90b087 src/sdk/domains.ts: id: 70955e5c763b @@ -29140,8 +31751,10 @@ trackedFiles: pristine_git_object: 2aede3b701b6ce0734f343a89f5b6ad791657d12 src/sdk/managers.ts: id: f8108bd423d0 - last_write_checksum: sha1:99141fbcc0df8507cf31d9523af17f670bdf537c + last_write_checksum: sha1:954cc67d81aec951906503a1462537b1b4bc4008 pristine_git_object: e590e4d280df175a26d76b9757972f9d2aef4534 + src/sdk/operations.ts: + last_write_checksum: sha1:a2e0b841b0ab2182734e742311620062ae35747d src/sdk/operatormanifests.ts: id: daefdc3025fd last_write_checksum: sha1:847867b93d5255399b016a3638b0945813ddebb4 @@ -29152,27 +31765,35 @@ trackedFiles: pristine_git_object: 29b4adde951522a39053a9afdf0a8d4d4834e814 src/sdk/projects.ts: id: 28088373a118 - last_write_checksum: sha1:55274ed815ead59bb89df269224f5d14e5f66725 + last_write_checksum: sha1:c24936e12fa1aaceef7143d35e2c2357294c4661 pristine_git_object: 83cbdca96c0c28e99fe168c029bb34191db6c1ff + src/sdk/releasechannels.ts: + last_write_checksum: sha1:aad78dc6028873b860598d129cea7556baf86da2 src/sdk/releases.ts: id: 1edfaa181e13 - last_write_checksum: sha1:aa51c9e683362bbaf2733c83eb7fa117cb0cb1d3 + last_write_checksum: sha1:f08698165f15a291d671fe95553fd6e8c8c558b3 pristine_git_object: bae3f773731882998adc7142a80e85ab3fc3eabc + src/sdk/remotebindings.ts: + last_write_checksum: sha1:51b47db14df09fc6ebd8ea8f40d082e22069bc64 src/sdk/resolve.ts: id: e303d9b94992 last_write_checksum: sha1:c5ba06c53b5f04b33de39b0d52857b4973f70b66 pristine_git_object: 3ab8669e76561c8d1d9879fb83f1e459a98fb979 src/sdk/resources.ts: id: 399cf49baf34 - last_write_checksum: sha1:04bcfe188707e5c16ebcbbb7703add94c9e6ea1a + last_write_checksum: sha1:8572d3689b4033de4c5743a9854fcb2ed0cedb4c pristine_git_object: 17427a982186e05d22ab583691eb937006f1b028 src/sdk/sdk.ts: id: 784571af2f69 - last_write_checksum: sha1:87e29c04ca8a57c9e5195104ebaae631910c81ab + last_write_checksum: sha1:591c951295834dba5f4c503e582d267ade8ccfd1 pristine_git_object: 248c65603a466f7a3c3d4441a3075f8287b5b1f5 + src/sdk/setuplinks.ts: + last_write_checksum: sha1:341e0aa77b6b56a5326939a26665d3e65021b321 + src/sdk/slackintegration.ts: + last_write_checksum: sha1:4010989820fbc93e866828dfdaa939cfbdfa47ac src/sdk/sync.ts: id: 2e323d0b48d5 - last_write_checksum: sha1:33e15e5c17daaa95c1dbcb25648287766d20d538 + last_write_checksum: sha1:6ea2e3c15e835ac8ca0bc69282cbc1365f7b02ca pristine_git_object: 8def35f66a7b4275b7a2e331a76a240601251717 src/sdk/user.ts: id: 363e2a871b31 @@ -29180,7 +31801,7 @@ trackedFiles: pristine_git_object: 23e0f1cd9c59146e7276fcfd864cd87f8c156108 src/sdk/workspaces.ts: id: 72b45379c8d9 - last_write_checksum: sha1:f0c6c849f15ad520b5181e7123ca442bc3651840 + last_write_checksum: sha1:cf998dd8c92b8d1857706cecc5829d542fb129e1 pristine_git_object: 70087d48457356adaa2a0e443f870eabc8ff8865 src/types/async.ts: id: fac8da972f86 @@ -29673,7 +32294,7 @@ examples: limit: 20 responses: "200": - application/json: {"items": [{"id": "dg_r27ict8c7vcgsumpj90ackf7b", "name": "prod-us-east-1", "projectId": "prj_mcytp6z3j91f7tn5ryqsfwtr", "workspaceId": "ws_It13CUaGEhLLAB87simX0", "maxDeployments": 100, "createdAt": "2026-01-21T08:26:22.710Z"}], "nextCursor": ""} + application/json: {"items": [{"id": "dg_r27ict8c7vcgsumpj90ackf7b", "name": "prod-us-east-1", "externalId": "ext_example_01", "projectId": "prj_mcytp6z3j91f7tn5ryqsfwtr", "workspaceId": "ws_It13CUaGEhLLAB87simX0", "maxDeployments": 100, "createdAt": "2026-01-21T08:26:22.710Z"}], "nextCursor": ""} "500": application/json: {"code": "", "message": "", "retryable": false, "internal": true} projectId: @@ -29684,7 +32305,7 @@ examples: limit: 20 responses: "200": - application/json: {"items": [{"id": "dg_r27ict8c7vcgsumpj90ackf7b", "name": "prod-us-east-1", "projectId": "prj_mcytp6z3j91f7tn5ryqsfwtr", "workspaceId": "ws_It13CUaGEhLLAB87simX0", "maxDeployments": 100, "createdAt": "2026-01-21T08:26:22.710Z"}], "nextCursor": ""} + application/json: {"items": [{"id": "dg_r27ict8c7vcgsumpj90ackf7b", "name": "prod-us-east-1", "externalId": "ext_example_01", "projectId": "prj_mcytp6z3j91f7tn5ryqsfwtr", "workspaceId": "ws_It13CUaGEhLLAB87simX0", "maxDeployments": 100, "createdAt": "2026-01-21T08:26:22.710Z"}], "nextCursor": ""} "500": application/json: {"code": "", "message": "", "retryable": false, "internal": true} createDeploymentGroup: @@ -29693,10 +32314,10 @@ examples: query: workspace: "my-workspace" requestBody: - application/json: {"name": "prod-us-east-1", "project": "", "maxDeployments": 100} + application/json: {"name": "prod-us-east-1", "externalId": "ext_example_01", "project": "", "maxDeployments": 100} responses: "200": - application/json: {"id": "dg_r27ict8c7vcgsumpj90ackf7b", "name": "prod-us-east-1", "projectId": "prj_mcytp6z3j91f7tn5ryqsfwtr", "workspaceId": "ws_It13CUaGEhLLAB87simX0", "maxDeployments": 100, "createdAt": "2024-10-18T18:26:50.956Z"} + application/json: {"id": "dg_r27ict8c7vcgsumpj90ackf7b", "name": "prod-us-east-1", "externalId": "ext_example_01", "projectId": "prj_mcytp6z3j91f7tn5ryqsfwtr", "workspaceId": "ws_It13CUaGEhLLAB87simX0", "maxDeployments": 100, "createdAt": "2024-10-18T18:26:50.956Z"} "404": application/json: {"code": "", "message": "", "retryable": false, "internal": false} "500": @@ -29710,7 +32331,7 @@ examples: workspace: "my-workspace" responses: "200": - application/json: {"id": "dg_r27ict8c7vcgsumpj90ackf7b", "name": "prod-us-east-1", "projectId": "prj_mcytp6z3j91f7tn5ryqsfwtr", "workspaceId": "ws_It13CUaGEhLLAB87simX0", "maxDeployments": 100, "createdAt": "2024-12-04T13:58:40.560Z", "deploymentCount": 620349} + application/json: {"id": "dg_r27ict8c7vcgsumpj90ackf7b", "name": "prod-us-east-1", "externalId": "ext_example_01", "projectId": "prj_mcytp6z3j91f7tn5ryqsfwtr", "workspaceId": "ws_It13CUaGEhLLAB87simX0", "maxDeployments": 100, "createdAt": "2024-12-04T13:58:40.560Z", "deploymentCount": 620349} "404": application/json: {"code": "", "message": "", "retryable": false, "internal": false} "500": @@ -29738,7 +32359,7 @@ examples: application/json: {"name": "prod-us-east-1"} responses: "200": - application/json: {"id": "dg_r27ict8c7vcgsumpj90ackf7b", "name": "prod-us-east-1", "projectId": "prj_mcytp6z3j91f7tn5ryqsfwtr", "workspaceId": "ws_It13CUaGEhLLAB87simX0", "maxDeployments": 100, "createdAt": "2024-02-02T16:43:07.976Z"} + application/json: {"id": "dg_r27ict8c7vcgsumpj90ackf7b", "name": "prod-us-east-1", "externalId": "ext_example_01", "projectId": "prj_mcytp6z3j91f7tn5ryqsfwtr", "workspaceId": "ws_It13CUaGEhLLAB87simX0", "maxDeployments": 100, "createdAt": "2024-02-02T16:43:07.976Z"} "404": application/json: {"code": "", "message": "", "retryable": false, "internal": true} "500": @@ -29759,6 +32380,8 @@ examples: application/json: {"code": "", "message": "", "retryable": false, "internal": false} "500": application/json: {"code": "", "message": "", "retryable": false, "internal": false} + "400": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} listPackages: speakeasy-default-list-packages: parameters: @@ -29857,6 +32480,7 @@ examples: project: "my-project" workspace: "my-workspace" limit: 20 + allChannels: "false" responses: "200": application/json: {"items": [], "nextCursor": ""} @@ -29868,6 +32492,7 @@ examples: project: "prj_mcytp6z3j91f7tn5ryqsfwtr" workspace: "my-workspace" limit: 20 + allChannels: "false" responses: "200": application/json: {"items": [], "nextCursor": ""} @@ -29964,7 +32589,7 @@ examples: workspace: "my-workspace" responses: "200": - application/json: {"id": "rel_WbhQgksrawSKIpEN0NAssHX9", "projectId": "", "version": "", "gitMetadata": {"commitSha": "dc36199b2234c6586ebe05ec94078a895c707e29", "commitMessage": "add method to measure Interaction to Next Paint (INP) (#36490)", "commitRef": "main", "commitDate": "2026-03-16T12:00:00Z", "dirty": true, "remoteUrl": "https://github.com/alienplatform/alien", "commitAuthorName": "John Doe", "commitAuthorEmail": "john@example.com", "commitAuthorLogin": "johndoe", "commitAuthorAvatarUrl": "https://github.com/johndoe.png"}, "createdAt": "2026-11-19T11:26:44.636Z", "setupFingerprints": {"key": {"target": "", "fingerprint": "", "version": 961202}}, "workspaceId": ""} + application/json: {"id": "rel_WbhQgksrawSKIpEN0NAssHX9", "projectId": "", "version": "", "gitMetadata": {"commitSha": "dc36199b2234c6586ebe05ec94078a895c707e29", "commitMessage": "add method to measure Interaction to Next Paint (INP) (#36490)", "commitRef": "main", "commitDate": "2026-03-16T12:00:00Z", "dirty": true, "remoteUrl": "https://github.com/alienplatform/alien", "commitAuthorName": "John Doe", "commitAuthorEmail": "john@example.com", "commitAuthorLogin": "johndoe", "commitAuthorAvatarUrl": "https://github.com/johndoe.png"}, "createdAt": "2026-11-19T11:26:44.636Z", "setupFingerprints": {"key": {"target": "", "fingerprint": "", "version": 961202}}, "workspaceId": "", "currentChannels": ["", "", ""], "commitUrl": "https://front-jet.org/"} "404": application/json: {"code": "", "message": "", "retryable": false, "internal": true} "500": @@ -29991,7 +32616,7 @@ examples: limit: 20 responses: "200": - application/json: {"items": [{"id": "dep_0c29fq4a2yjb7kx3smwdgxlc", "name": "", "status": "update-failed", "projectId": "prj_mcytp6z3j91f7tn5ryqsfwtr", "platform": "aws", "deploymentProtocolVersion": 539991, "deploymentGroupId": "dg_r27ict8c7vcgsumpj90ackf7b", "currentReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "desiredReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "pinnedReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "retryRequested": false, "createdAt": "2025-06-08T07:12:39.784Z", "updatedAt": "2026-09-03T12:53:35.429Z", "managerId": "mgr_enxscjrqiiu2lrc672hwwuc5", "workspaceId": "ws_It13CUaGEhLLAB87simX0", "release": {"id": "rel_WbhQgksrawSKIpEN0NAssHX9", "version": "", "gitMetadata": {"commitSha": "dc36199b2234c6586ebe05ec94078a895c707e29", "commitMessage": "add method to measure Interaction to Next Paint (INP) (#36490)", "commitRef": "main", "commitDate": "2026-03-16T12:00:00Z", "dirty": true, "remoteUrl": "https://github.com/alienplatform/alien", "commitAuthorName": "John Doe", "commitAuthorEmail": "john@example.com", "commitAuthorLogin": "johndoe", "commitAuthorAvatarUrl": "https://github.com/johndoe.png"}, "createdAt": "2025-09-26T19:28:26.059Z"}, "deploymentGroup": {"id": "dg_r27ict8c7vcgsumpj90ackf7b", "name": "prod-us-east-1"}, "project": {"id": "prj_mcytp6z3j91f7tn5ryqsfwtr", "name": "my-app"}}], "nextCursor": ""} + application/json: {"items": [{"id": "dep_0c29fq4a2yjb7kx3smwdgxlc", "name": "", "status": "update-failed", "projectId": "prj_mcytp6z3j91f7tn5ryqsfwtr", "platform": "aws", "deploymentProtocolVersion": 539991, "deploymentGroupId": "dg_r27ict8c7vcgsumpj90ackf7b", "purpose": "ai", "currentReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "desiredReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "pinnedReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "releaseChannel": "", "retryRequested": false, "createdAt": "2025-06-08T07:12:39.784Z", "updatedAt": "2026-09-03T12:53:35.429Z", "managerId": "mgr_enxscjrqiiu2lrc672hwwuc5", "workspaceId": "ws_It13CUaGEhLLAB87simX0", "release": {"id": "rel_WbhQgksrawSKIpEN0NAssHX9", "version": "", "gitMetadata": {"commitSha": "dc36199b2234c6586ebe05ec94078a895c707e29", "commitMessage": "add method to measure Interaction to Next Paint (INP) (#36490)", "commitRef": "main", "commitDate": "2026-03-16T12:00:00Z", "dirty": true, "remoteUrl": "https://github.com/alienplatform/alien", "commitAuthorName": "John Doe", "commitAuthorEmail": "john@example.com", "commitAuthorLogin": "johndoe", "commitAuthorAvatarUrl": "https://github.com/johndoe.png"}, "createdAt": "2025-09-26T19:28:26.059Z"}, "deploymentGroup": {"id": "dg_r27ict8c7vcgsumpj90ackf7b", "name": "prod-us-east-1", "externalId": "ext_example_01"}, "project": {"id": "prj_mcytp6z3j91f7tn5ryqsfwtr", "name": "my-app"}}], "nextCursor": ""} "400": application/json: {"code": "", "message": "", "retryable": false, "internal": false} "500": @@ -30004,7 +32629,7 @@ examples: limit: 20 responses: "200": - application/json: {"items": [{"id": "dep_0c29fq4a2yjb7kx3smwdgxlc", "name": "", "status": "update-failed", "projectId": "prj_mcytp6z3j91f7tn5ryqsfwtr", "platform": "aws", "deploymentProtocolVersion": 539991, "deploymentGroupId": "dg_r27ict8c7vcgsumpj90ackf7b", "currentReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "desiredReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "pinnedReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "retryRequested": false, "createdAt": "2025-06-08T07:12:39.784Z", "updatedAt": "2026-09-03T12:53:35.429Z", "managerId": "mgr_enxscjrqiiu2lrc672hwwuc5", "workspaceId": "ws_It13CUaGEhLLAB87simX0", "release": {"id": "rel_WbhQgksrawSKIpEN0NAssHX9", "version": "", "gitMetadata": {"commitSha": "dc36199b2234c6586ebe05ec94078a895c707e29", "commitMessage": "add method to measure Interaction to Next Paint (INP) (#36490)", "commitRef": "main", "commitDate": "2026-03-16T12:00:00Z", "dirty": true, "remoteUrl": "https://github.com/alienplatform/alien", "commitAuthorName": "John Doe", "commitAuthorEmail": "john@example.com", "commitAuthorLogin": "johndoe", "commitAuthorAvatarUrl": "https://github.com/johndoe.png"}, "createdAt": "2025-09-26T19:28:26.059Z"}, "deploymentGroup": {"id": "dg_r27ict8c7vcgsumpj90ackf7b", "name": "prod-us-east-1"}, "project": {"id": "prj_mcytp6z3j91f7tn5ryqsfwtr", "name": "my-app"}}], "nextCursor": ""} + application/json: {"items": [{"id": "dep_0c29fq4a2yjb7kx3smwdgxlc", "name": "", "status": "update-failed", "projectId": "prj_mcytp6z3j91f7tn5ryqsfwtr", "platform": "aws", "deploymentProtocolVersion": 539991, "deploymentGroupId": "dg_r27ict8c7vcgsumpj90ackf7b", "purpose": "ai", "currentReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "desiredReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "pinnedReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "releaseChannel": "", "retryRequested": false, "createdAt": "2025-06-08T07:12:39.784Z", "updatedAt": "2026-09-03T12:53:35.429Z", "managerId": "mgr_enxscjrqiiu2lrc672hwwuc5", "workspaceId": "ws_It13CUaGEhLLAB87simX0", "release": {"id": "rel_WbhQgksrawSKIpEN0NAssHX9", "version": "", "gitMetadata": {"commitSha": "dc36199b2234c6586ebe05ec94078a895c707e29", "commitMessage": "add method to measure Interaction to Next Paint (INP) (#36490)", "commitRef": "main", "commitDate": "2026-03-16T12:00:00Z", "dirty": true, "remoteUrl": "https://github.com/alienplatform/alien", "commitAuthorName": "John Doe", "commitAuthorEmail": "john@example.com", "commitAuthorLogin": "johndoe", "commitAuthorAvatarUrl": "https://github.com/johndoe.png"}, "createdAt": "2025-09-26T19:28:26.059Z"}, "deploymentGroup": {"id": "dg_r27ict8c7vcgsumpj90ackf7b", "name": "prod-us-east-1", "externalId": "ext_example_01"}, "project": {"id": "prj_mcytp6z3j91f7tn5ryqsfwtr", "name": "my-app"}}], "nextCursor": ""} "400": application/json: {"code": "", "message": "", "retryable": false, "internal": false} "500": @@ -30015,7 +32640,7 @@ examples: query: workspace: "my-workspace" requestBody: - application/json: {"name": "acme-prod", "platform": "aws", "managerId": "mgr_enxscjrqiiu2lrc672hwwuc5", "pinnedReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "project": "", "initialDesiredRelease": "active"} + application/json: {"name": "acme-prod", "platform": "aws", "managerId": "mgr_enxscjrqiiu2lrc672hwwuc5", "pinnedReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "project": "", "initialDesiredRelease": "active", "releaseChannel": "production"} responses: "201": application/json: {"deployment": {"id": "dep_0c29fq4a2yjb7kx3smwdgxlc", "name": "acme-prod", "status": "pending", "projectId": "prj_mcytp6z3j91f7tn5ryqsfwtr", "platform": "kubernetes", "deploymentProtocolVersion": 235261, "deploymentGroupId": "dg_r27ict8c7vcgsumpj90ackf7b", "stackSettings": {}, "currentReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "desiredReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "pinnedReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "retryRequested": false, "createdAt": "2024-08-10T01:57:59.011Z", "updatedAt": "2024-02-22T19:07:13.924Z", "managerId": "mgr_enxscjrqiiu2lrc672hwwuc5", "workspaceId": "ws_It13CUaGEhLLAB87simX0"}} @@ -30024,7 +32649,7 @@ examples: "500": application/json: {"code": "", "message": "", "retryable": false, "internal": false} "200": - application/json: {"deployment": {"id": "dep_0c29fq4a2yjb7kx3smwdgxlc", "name": "acme-prod", "status": "pending", "projectId": "prj_mcytp6z3j91f7tn5ryqsfwtr", "platform": "kubernetes", "deploymentProtocolVersion": 235261, "deploymentGroupId": "dg_r27ict8c7vcgsumpj90ackf7b", "stackSettings": {}, "currentReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "desiredReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "pinnedReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "retryRequested": false, "createdAt": "2024-08-10T01:57:59.011Z", "updatedAt": "2024-02-22T19:07:13.924Z", "managerId": "mgr_enxscjrqiiu2lrc672hwwuc5", "workspaceId": "ws_It13CUaGEhLLAB87simX0"}, "deploymentModel": "push"} + application/json: {"deployment": {"id": "dep_0c29fq4a2yjb7kx3smwdgxlc", "name": "acme-prod", "status": "pending", "projectId": "prj_mcytp6z3j91f7tn5ryqsfwtr", "platform": "kubernetes", "deploymentProtocolVersion": 235261, "deploymentGroupId": "dg_r27ict8c7vcgsumpj90ackf7b", "purpose": "application", "stackSettings": {}, "currentReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "desiredReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "pinnedReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "releaseChannel": "", "retryRequested": false, "updateState": {"active": {"id": "duop_0vtxpb1sw4sbcdwg2xo37q6", "status": "applying", "reasons": ["configuration"], "targetReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "changedKeys": [], "requestedAt": "2026-06-15T00:39:39.723Z"}, "next": {"id": "duop_0vtxpb1sw4sbcdwg2xo37q6", "status": "failed", "reasons": [], "targetReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "changedKeys": [], "requestedAt": "2025-10-16T02:43:18.812Z"}, "latest": {"id": "duop_0vtxpb1sw4sbcdwg2xo37q6", "status": "queued", "reasons": [], "targetReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "changedKeys": ["", "", ""], "requestedAt": "2025-06-03T07:18:08.118Z"}}, "createdAt": "2024-08-10T01:57:59.011Z", "updatedAt": "2024-02-22T19:07:13.924Z", "managerId": "mgr_enxscjrqiiu2lrc672hwwuc5", "workspaceId": "ws_It13CUaGEhLLAB87simX0"}, "deploymentModel": "push"} getDeploymentStats: speakeasy-default-get-deployment-stats: parameters: @@ -30043,7 +32668,7 @@ examples: project: "my-project" responses: "200": - application/json: {"total": 9426.09, "byStatus": {"key": 4600.18, "key1": 7873.34}, "byPlatform": {}, "byCurrentRelease": {}, "byPinnedRelease": {"key": 6084.2}} + application/json: {"total": 9426.09, "byStatus": {"key": 4600.18, "key1": 7873.34}, "byPlatform": {}, "byCurrentRelease": {}, "byPinnedRelease": {"key": 6084.2}, "byOrigin": {}} "500": application/json: {"code": "", "message": "", "retryable": false, "internal": true} projectId: @@ -30053,7 +32678,7 @@ examples: project: "prj_mcytp6z3j91f7tn5ryqsfwtr" responses: "200": - application/json: {"total": 9426.09, "byStatus": {"key": 4600.18, "key1": 7873.34}, "byPlatform": {}, "byCurrentRelease": {}, "byPinnedRelease": {"key": 6084.2}} + application/json: {"total": 9426.09, "byStatus": {"key": 4600.18, "key1": 7873.34}, "byPlatform": {}, "byCurrentRelease": {}, "byPinnedRelease": {"key": 6084.2}, "byOrigin": {}} "500": application/json: {"code": "", "message": "", "retryable": false, "internal": true} listDeploymentFilterPlatforms: @@ -30110,7 +32735,7 @@ examples: workspace: "my-workspace" responses: "200": - application/json: {"id": "dep_0c29fq4a2yjb7kx3smwdgxlc", "name": "acme-prod", "status": "delete-failed", "projectId": "prj_mcytp6z3j91f7tn5ryqsfwtr", "platform": "azure", "deploymentProtocolVersion": 891772, "deploymentGroupId": "dg_r27ict8c7vcgsumpj90ackf7b", "stackSettings": {}, "currentReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "desiredReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "pinnedReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "retryRequested": true, "createdAt": "2026-03-24T01:01:53.494Z", "updatedAt": "2025-12-03T19:50:18.984Z", "managerId": "mgr_enxscjrqiiu2lrc672hwwuc5", "workspaceId": "ws_It13CUaGEhLLAB87simX0", "release": {"id": "rel_WbhQgksrawSKIpEN0NAssHX9", "version": "", "gitMetadata": {"commitSha": "dc36199b2234c6586ebe05ec94078a895c707e29", "commitMessage": "add method to measure Interaction to Next Paint (INP) (#36490)", "commitRef": "main", "commitDate": "2026-03-16T12:00:00Z", "dirty": true, "remoteUrl": "https://github.com/alienplatform/alien", "commitAuthorName": "John Doe", "commitAuthorEmail": "john@example.com", "commitAuthorLogin": "johndoe", "commitAuthorAvatarUrl": "https://github.com/johndoe.png"}, "createdAt": "2024-03-01T02:31:17.524Z"}, "deploymentGroup": {"id": "dg_r27ict8c7vcgsumpj90ackf7b", "name": "prod-us-east-1"}, "project": {"id": "prj_mcytp6z3j91f7tn5ryqsfwtr", "name": "my-app"}} + application/json: {"id": "dep_0c29fq4a2yjb7kx3smwdgxlc", "name": "acme-prod", "status": "delete-failed", "projectId": "prj_mcytp6z3j91f7tn5ryqsfwtr", "platform": "azure", "deploymentProtocolVersion": 891772, "deploymentGroupId": "dg_r27ict8c7vcgsumpj90ackf7b", "purpose": "container-registry", "stackSettings": {}, "currentReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "desiredReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "pinnedReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "releaseChannel": "", "retryRequested": true, "updateState": {"active": {"id": "duop_0vtxpb1sw4sbcdwg2xo37q6", "status": "applying", "reasons": ["redeploy"], "targetReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "changedKeys": ["", "", ""], "requestedAt": "2024-12-30T22:02:42.588Z"}, "next": null, "latest": {"id": "duop_0vtxpb1sw4sbcdwg2xo37q6", "status": "succeeded", "reasons": ["redeploy"], "targetReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "changedKeys": [""], "requestedAt": "2025-11-29T14:27:45.602Z"}}, "createdAt": "2026-03-24T01:01:53.494Z", "updatedAt": "2025-12-03T19:50:18.984Z", "managerId": "mgr_enxscjrqiiu2lrc672hwwuc5", "workspaceId": "ws_It13CUaGEhLLAB87simX0", "release": {"id": "rel_WbhQgksrawSKIpEN0NAssHX9", "version": "", "gitMetadata": {"commitSha": "dc36199b2234c6586ebe05ec94078a895c707e29", "commitMessage": "add method to measure Interaction to Next Paint (INP) (#36490)", "commitRef": "main", "commitDate": "2026-03-16T12:00:00Z", "dirty": true, "remoteUrl": "https://github.com/alienplatform/alien", "commitAuthorName": "John Doe", "commitAuthorEmail": "john@example.com", "commitAuthorLogin": "johndoe", "commitAuthorAvatarUrl": "https://github.com/johndoe.png"}, "createdAt": "2024-03-01T02:31:17.524Z"}, "deploymentGroup": {"id": "dg_r27ict8c7vcgsumpj90ackf7b", "name": "prod-us-east-1", "externalId": "ext_example_01"}, "project": {"id": "prj_mcytp6z3j91f7tn5ryqsfwtr", "name": "my-app"}} "404": application/json: {"code": "", "message": "", "retryable": false, "internal": true} "500": @@ -30159,7 +32784,7 @@ examples: "500": application/json: {"code": "", "message": "", "retryable": false, "internal": false} "200": - application/json: {"id": "dep_0c29fq4a2yjb7kx3smwdgxlc", "name": "acme-prod", "status": "update-pending", "projectId": "prj_mcytp6z3j91f7tn5ryqsfwtr", "platform": "aws", "deploymentProtocolVersion": 176346, "deploymentGroupId": "dg_r27ict8c7vcgsumpj90ackf7b", "stackSettings": {}, "currentReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "desiredReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "pinnedReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "retryRequested": true, "createdAt": "2025-05-24T21:00:37.967Z", "updatedAt": "2024-05-07T04:51:05.203Z", "managerId": "mgr_enxscjrqiiu2lrc672hwwuc5", "workspaceId": "ws_It13CUaGEhLLAB87simX0"} + application/json: {"id": "dep_0c29fq4a2yjb7kx3smwdgxlc", "name": "acme-prod", "status": "update-pending", "projectId": "prj_mcytp6z3j91f7tn5ryqsfwtr", "platform": "aws", "deploymentProtocolVersion": 176346, "deploymentGroupId": "dg_r27ict8c7vcgsumpj90ackf7b", "purpose": "application", "stackSettings": {}, "currentReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "desiredReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "pinnedReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "releaseChannel": "", "retryRequested": true, "updateState": {"active": {"id": "duop_0vtxpb1sw4sbcdwg2xo37q6", "status": "applying", "reasons": ["redeploy"], "targetReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "changedKeys": ["", "", ""], "requestedAt": "2025-07-04T03:51:27.635Z"}, "next": {"id": "duop_0vtxpb1sw4sbcdwg2xo37q6", "status": "succeeded", "reasons": [], "targetReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "changedKeys": [], "requestedAt": "2025-05-31T20:20:00.087Z"}, "latest": null}, "createdAt": "2025-05-24T21:00:37.967Z", "updatedAt": "2024-05-07T04:51:05.203Z", "managerId": "mgr_enxscjrqiiu2lrc672hwwuc5", "workspaceId": "ws_It13CUaGEhLLAB87simX0"} redeployDeployment: speakeasy-default-redeploy-deployment: parameters: @@ -30169,7 +32794,7 @@ examples: workspace: "my-workspace" responses: "202": - application/json: {"message": ""} + application/json: {"message": "", "operation": {"id": "duop_0vtxpb1sw4sbcdwg2xo37q6", "status": "succeeded", "reasons": ["configuration"], "targetReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "changedKeys": ["", "", ""], "requestedAt": "2024-07-13T03:36:59.185Z"}} "400": application/json: {"code": "", "message": "", "retryable": false, "internal": true} "500": @@ -30251,7 +32876,7 @@ examples: workspace: "my-workspace" responses: "201": - application/json: {"managerId": "mgr_enxscjrqiiu2lrc672hwwuc5", "setupStatus": "pending", "setupToken": "", "setupTokenId": "", "deploymentLink": "", "setupConfig": {"metadata": {"key": "", "key1": "", "key2": ""}, "policy": {"allowedPlatforms": ["gcp"], "allowedSetupMethods": []}, "environmentVariables": []}, "setup": {"method": "cloudformation", "deploymentPortalUrl": "https://sardonic-subexpression.name", "launchUrl": "https://unrealistic-vibration.info/", "templateUrl": "https://vibrant-postbox.info/", "stackName": "", "region": "", "stackSettings": {}}} + application/json: {"managerId": "mgr_enxscjrqiiu2lrc672hwwuc5", "setupStatus": "pending", "setupToken": "", "setupTokenId": "", "deploymentLink": "", "setupConfig": {"metadata": {"key": "", "key1": "", "key2": ""}, "policy": {"allowedPlatforms": ["gcp"], "allowedSetupMethods": []}, "items": [{"item": "registry", "source": {"type": "built-in", "definitionId": "customer-key", "version": "", "sourceReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9"}, "required": true}], "environmentVariables": []}, "setup": {"method": "cloudformation", "deploymentPortalUrl": "https://sardonic-subexpression.name", "launchUrl": "https://unrealistic-vibration.info/", "templateUrl": "https://vibrant-postbox.info/", "stackName": "", "region": "", "stackSettings": {}}} "409": application/json: {"code": "", "message": "", "retryable": false, "internal": true} "500": @@ -30444,7 +33069,7 @@ examples: application/json: {"description": "pfft plus harangue request mooch starch lazily", "scope": {"type": "deployment-group", "deploymentGroupId": "", "projectId": "", "role": "deployment-group.deployer"}, "expiresAt": "2024-10-31T10:45:22.205Z"} responses: "201": - application/json: {"apiKey": "", "keyInfo": {"id": "apikey_ye96yxs1tjnrrwulp8frh", "description": "who sugary damp fooey painfully worriedly mentor", "keyPrefix": "", "type": "manager", "role": "", "workspaceId": "", "projectId": "", "deploymentId": "", "deploymentGroupId": "", "managerId": "", "enabled": true, "createdAt": "2024-03-07T13:39:38.531Z", "expiresAt": "2026-03-30T09:59:41.947Z", "lastUsedAt": "2025-06-28T08:58:18.927Z", "revokedAt": "2024-05-28T23:30:20.013Z", "deploymentSetupConfig": {"metadata": {"key": "", "key1": ""}, "policy": {"allowedPlatforms": [], "allowedSetupMethods": ["cloudformation"]}, "environmentVariables": [{"name": "", "type": "secret", "targetResources": [""]}]}}} + application/json: {"apiKey": "", "keyInfo": {"id": "apikey_ye96yxs1tjnrrwulp8frh", "description": "who sugary damp fooey painfully worriedly mentor", "keyPrefix": "", "type": "manager", "role": "", "workspaceId": "", "projectId": "", "deploymentId": "", "deploymentGroupId": "", "managerId": "", "enabled": true, "createdAt": "2024-03-07T13:39:38.531Z", "expiresAt": "2026-03-30T09:59:41.947Z", "lastUsedAt": "2025-06-28T08:58:18.927Z", "revokedAt": "2024-05-28T23:30:20.013Z", "deploymentSetupConfig": {"metadata": {"key": "", "key1": ""}, "policy": {"allowedPlatforms": [], "allowedSetupMethods": ["cloudformation"]}, "environmentVariables": [{"name": "", "type": "secret", "targetResources": [""]}], "items": [{"item": "models", "source": {"type": "built-in", "definitionId": "customer-key", "version": "", "sourceReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9"}, "required": false}]}}} "403": application/json: {"code": "", "message": "", "retryable": false, "internal": true} "500": @@ -30458,7 +33083,7 @@ examples: workspace: "my-workspace" responses: "200": - application/json: {"id": "apikey_ye96yxs1tjnrrwulp8frh", "description": "for whose after violin colligate round alongside conceptualize", "keyPrefix": "", "type": "workspace", "role": "", "workspaceId": "", "projectId": "", "deploymentId": "", "deploymentGroupId": "", "managerId": "", "enabled": true, "createdAt": "2025-12-08T14:28:05.770Z", "expiresAt": "2024-01-28T12:47:46.795Z", "lastUsedAt": null, "revokedAt": "2026-07-28T03:33:02.905Z", "deploymentSetupConfig": {"metadata": {"key": "", "key1": ""}, "policy": {"allowedPlatforms": [], "allowedSetupMethods": []}, "environmentVariables": []}, "createdByUser": {"id": "", "email": "Freeman30@gmail.com", "image": "https://loremflickr.com/3185/3828?lock=1395032500550379"}} + application/json: {"id": "apikey_ye96yxs1tjnrrwulp8frh", "description": "for whose after violin colligate round alongside conceptualize", "keyPrefix": "", "type": "workspace", "role": "", "workspaceId": "", "projectId": "", "deploymentId": "", "deploymentGroupId": "", "managerId": "", "enabled": true, "createdAt": "2025-12-08T14:28:05.770Z", "expiresAt": "2024-01-28T12:47:46.795Z", "lastUsedAt": null, "revokedAt": "2026-07-28T03:33:02.905Z", "deploymentSetupConfig": {"metadata": {"key": "", "key1": ""}, "policy": {"allowedPlatforms": [], "allowedSetupMethods": []}, "environmentVariables": [], "items": [{"item": "bucket", "source": {"type": "built-in", "definitionId": "customer-ai", "version": "", "sourceReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9"}, "required": true}]}, "createdByUser": {"id": "", "email": "Freeman30@gmail.com", "image": "https://loremflickr.com/3185/3828?lock=1395032500550379"}} "404": application/json: {"code": "", "message": "", "retryable": false, "internal": true} "500": @@ -30484,7 +33109,7 @@ examples: workspace: "my-workspace" responses: "200": - application/json: {"id": "apikey_ye96yxs1tjnrrwulp8frh", "description": "continually er insist aw essay after scary pigsty best excluding", "keyPrefix": "", "type": "deployment-group", "role": "", "workspaceId": "", "projectId": "", "deploymentId": "", "deploymentGroupId": "", "managerId": "", "enabled": false, "createdAt": "2024-02-16T16:09:46.066Z", "expiresAt": "2026-10-25T14:58:29.236Z", "lastUsedAt": null, "revokedAt": "2024-03-17T01:36:25.315Z", "deploymentSetupConfig": {"metadata": {"key": "", "key1": "", "key2": ""}, "policy": {"allowedPlatforms": ["kubernetes"], "allowedSetupMethods": []}, "environmentVariables": [{"name": "", "type": "plain", "targetResources": ["", "", ""]}]}, "createdByUser": {"id": "", "email": "Simone_Weber@yahoo.com", "image": "https://loremflickr.com/3444/3557?lock=8838975516827975"}} + application/json: {"id": "apikey_ye96yxs1tjnrrwulp8frh", "description": "continually er insist aw essay after scary pigsty best excluding", "keyPrefix": "", "type": "deployment-group", "role": "", "workspaceId": "", "projectId": "", "deploymentId": "", "deploymentGroupId": "", "managerId": "", "enabled": false, "createdAt": "2024-02-16T16:09:46.066Z", "expiresAt": "2026-10-25T14:58:29.236Z", "lastUsedAt": null, "revokedAt": "2024-03-17T01:36:25.315Z", "deploymentSetupConfig": {"metadata": {"key": "", "key1": "", "key2": ""}, "policy": {"allowedPlatforms": ["kubernetes"], "allowedSetupMethods": []}, "environmentVariables": [{"name": "", "type": "plain", "targetResources": ["", "", ""]}], "items": [{"item": "keys", "source": {"type": "built-in", "definitionId": "customer-registry", "version": "", "sourceReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9"}, "required": false}]}, "createdByUser": {"id": "", "email": "Simone_Weber@yahoo.com", "image": "https://loremflickr.com/3444/3557?lock=8838975516827975"}} "404": application/json: {"code": "", "message": "", "retryable": false, "internal": true} "500": @@ -30755,7 +33380,7 @@ examples: workspace: "my-workspace" responses: "200": - application/json: {"tokenType": "deployment", "deploymentGroup": {"id": "dg_r27ict8c7vcgsumpj90ackf7b", "name": "", "pinnedSubdomain": ""}, "workspace": {"id": "", "name": ""}, "project": {"name": "", "portal": {"appearance": {"preset": "clean", "accentColor": "blue", "density": "comfortable"}}}, "packages": {"ready": false}, "installContext": {"targets": {}}, "supportedRegions": {"aws": [""], "gcp": ["", ""], "azure": ["", "", ""]}} + application/json: {"tokenType": "deployment", "deploymentGroup": {"id": "dg_r27ict8c7vcgsumpj90ackf7b", "name": "", "pinnedSubdomain": ""}, "workspace": {"id": "", "name": ""}, "project": {"name": "", "portal": {"appearance": {"preset": "clean", "accentColor": "blue", "density": "comfortable"}}}, "packages": {"ready": false}, "installContext": {"targets": {}}, "supportedRegions": {"aws": [""], "gcp": ["", ""], "azure": ["", "", ""]}, "modelAvailabilitySources": [], "setupItems": [{"item": "bucket", "source": {"type": "built-in", "definitionId": "customer-registry", "version": "", "sourceReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9"}, "required": true, "status": "connected", "deploymentIds": ["", ""]}], "setupConfig": {"metadata": {"key": ""}, "policy": {"allowedPlatforms": ["local"], "allowedSetupMethods": ["manual"]}, "environmentVariables": [], "items": [{"item": "registry", "source": {"type": "built-in", "definitionId": "customer-ai", "version": "", "sourceReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9"}, "required": true}]}} "401": application/json: {"code": "", "message": "", "retryable": false, "internal": false} "500": @@ -30766,10 +33391,10 @@ examples: query: workspace: "my-workspace" requestBody: - application/json: {"managerId": "mgr_enxscjrqiiu2lrc672hwwuc5", "session": "", "deploymentIds": ["dep_0c29fq4a2yjb7kx3smwdgxlc"], "deploymentModel": "pull"} + application/json: {"managerId": "mgr_enxscjrqiiu2lrc672hwwuc5", "session": "", "requestId": "", "deploymentIds": ["dep_0c29fq4a2yjb7kx3smwdgxlc"], "deploymentModel": "pull"} responses: "200": - application/json: {"deployments": [{"deploymentId": "dep_0c29fq4a2yjb7kx3smwdgxlc", "projectId": "", "deploymentGroupId": "dg_r27ict8c7vcgsumpj90ackf7b", "current": {"platform": "kubernetes", "protocolVersion": 670986, "status": "provisioning-failed"}, "config": {"environmentVariables": {"createdAt": "1731491596603", "hash": "", "variables": [{"name": "", "type": "plain", "value": ""}]}}}], "failures": [{"deploymentId": "dep_0c29fq4a2yjb7kx3smwdgxlc", "projectId": "", "error": {"code": "", "message": "", "retryable": false, "internal": true}}]} + application/json: {"deployments": [{"deploymentId": "dep_0c29fq4a2yjb7kx3smwdgxlc", "projectId": "", "deploymentGroupId": "dg_r27ict8c7vcgsumpj90ackf7b", "current": {"platform": "kubernetes", "protocolVersion": 670986, "status": "provisioning-failed"}, "config": {"environmentVariables": {"createdAt": "1731491596603", "hash": "", "variables": [{"name": "", "type": "plain", "value": ""}]}}}], "failures": [{"deploymentId": "dep_0c29fq4a2yjb7kx3smwdgxlc", "projectId": "", "error": {"code": "", "message": "", "retryable": false, "internal": true}}], "leaseExpiresAt": "2025-11-08T22:16:49.142Z"} "400": application/json: {"code": "", "message": "", "retryable": false, "internal": true} "500": @@ -31302,7 +33927,7 @@ examples: workspace: "my-workspace" responses: "201": - application/json: {"managerId": "mgr_enxscjrqiiu2lrc672hwwuc5", "setupStatus": "pending", "setupToken": "", "setupTokenId": "", "deploymentLink": "", "setupConfig": {"metadata": {"key": ""}, "policy": {"allowedPlatforms": [], "allowedSetupMethods": []}, "environmentVariables": []}, "setup": {"method": "cloudformation", "deploymentPortalUrl": "https://enchanted-marksman.com/", "launchUrl": "https://imaginative-bandwidth.name/", "templateUrl": "https://untidy-transom.name", "stackName": "", "region": "", "stackSettings": {}}} + application/json: {"managerId": "mgr_enxscjrqiiu2lrc672hwwuc5", "setupStatus": "pending", "setupToken": "", "setupTokenId": "", "deploymentLink": "", "setupConfig": {"metadata": {"key": ""}, "policy": {"allowedPlatforms": [], "allowedSetupMethods": []}, "items": [{"item": "keys", "source": {"type": "project-release", "releaseChannel": "", "releaseId": "rel_WbhQgksrawSKIpEN0NAssHX9"}, "required": true}], "environmentVariables": []}, "setup": {"method": "cloudformation", "deploymentPortalUrl": "https://enchanted-marksman.com/", "launchUrl": "https://imaginative-bandwidth.name/", "templateUrl": "https://untidy-transom.name", "stackName": "", "region": "", "stackSettings": {}}} "400": application/json: {"code": "", "message": "", "retryable": false, "internal": true} "500": @@ -31531,7 +34156,7 @@ examples: workspace: "my-workspace" responses: "200": - application/json: {"planId": "pro", "planStatus": "active", "features": {"custom_domains": true, "private_managers": false, "sso_saml": false, "audit_logs": false, "airgapped": true}, "limits": {"maxDeployments": 9598.98, "maxProjects": 9848.33, "maxSeats": 4349.71, "maxCustomDomains": 3257.83, "creditUsd": null, "seatsIncluded": 3437.91}, "syncedAt": "2026-10-23T04:16:50.769Z", "stale": false} + application/json: {"planId": "pro", "planStatus": "active", "features": {"custom_domains": true, "private_managers": false, "operations_custom_plugins": true, "sso_saml": false, "audit_logs": false, "airgapped": true}, "limits": {"maxDeployments": 9598.98, "maxProjects": 9848.33, "maxSeats": 4349.71, "maxCustomDomains": 3257.83, "creditUsd": null, "seatsIncluded": 3437.91}, "syncedAt": "2026-10-23T04:16:50.769Z", "stale": false} "500": application/json: {"code": "", "message": "", "retryable": false, "internal": false} createSetupRegistrationOperation: @@ -31865,7 +34490,7 @@ examples: workspace: "my-workspace" responses: "200": - application/json: {"activeRelease": {"id": "rel_WbhQgksrawSKIpEN0NAssHX9", "version": "", "stack": {}}, "visiblePackageTypes": [], "visibleSetupMethods": []} + application/json: {"activeRelease": {"id": "rel_WbhQgksrawSKIpEN0NAssHX9", "version": "", "stack": {}}, "supportedPlatforms": [], "setupItems": [], "visiblePackageTypes": [], "visibleSetupMethods": [], "setupPackagesStatus": "preparing"} "404": application/json: {"code": "", "message": "", "retryable": false, "internal": true} "500": @@ -31878,7 +34503,7 @@ examples: workspace: "my-workspace" responses: "200": - application/json: {"activeRelease": {"id": "rel_WbhQgksrawSKIpEN0NAssHX9", "version": "", "stack": {}}, "visiblePackageTypes": [], "visibleSetupMethods": []} + application/json: {"activeRelease": {"id": "rel_WbhQgksrawSKIpEN0NAssHX9", "version": "", "stack": {}}, "supportedPlatforms": [], "setupItems": [], "visiblePackageTypes": [], "visibleSetupMethods": [], "setupPackagesStatus": "preparing"} "404": application/json: {"code": "", "message": "", "retryable": false, "internal": true} "500": @@ -31892,7 +34517,7 @@ examples: application/json: {"name": "prod-us-east-1", "project": "", "maxDeployments": 100} responses: "200": - application/json: {"id": "dg_r27ict8c7vcgsumpj90ackf7b", "name": "prod-us-east-1", "projectId": "prj_mcytp6z3j91f7tn5ryqsfwtr", "workspaceId": "ws_It13CUaGEhLLAB87simX0", "maxDeployments": 100, "createdAt": "2024-04-18T19:27:42.020Z"} + application/json: {"id": "dg_r27ict8c7vcgsumpj90ackf7b", "name": "prod-us-east-1", "externalId": "ext_example_01", "projectId": "prj_mcytp6z3j91f7tn5ryqsfwtr", "workspaceId": "ws_It13CUaGEhLLAB87simX0", "maxDeployments": 100, "createdAt": "2024-04-18T19:27:42.020Z"} "404": application/json: {"code": "", "message": "", "retryable": false, "internal": true} "500": @@ -31934,7 +34559,7 @@ examples: workspace: "my-workspace" responses: "200": - application/json: {"inputs": [{"description": "until but usually flash mysterious drain how yet meanwhile nervously", "id": "", "kind": "boolean", "label": "", "providedBy": ["deployer"], "required": true}], "values": {}, "providedInputIds": ["", "", ""], "runtimeUpdateRequested": false} + application/json: {"inputs": [{"description": "until but usually flash mysterious drain how yet meanwhile nervously", "id": "", "kind": "boolean", "label": "", "providedBy": ["deployer"], "required": true}], "values": {}, "providedInputIds": ["", "", ""], "runtimeUpdateRequested": false, "outcome": "unchanged", "operation": {"id": "duop_0vtxpb1sw4sbcdwg2xo37q6", "status": "queued", "reasons": ["release"], "targetReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "changedKeys": [], "requestedAt": "2024-08-10T18:23:09.780Z"}} "400": application/json: {"code": "", "message": "", "retryable": false, "internal": false} "500": @@ -32008,4 +34633,1239 @@ examples: application/json: {"code": "", "message": "", "retryable": false, "internal": true} "500": application/json: {"code": "", "message": "", "retryable": false, "internal": true} + getWorkspaceInvitationPreview: + speakeasy-default-get-workspace-invitation-preview: + parameters: + path: + token: "" + responses: + "200": + application/json: {"kind": "email", "workspace": {"id": "ws_It13CUaGEhLLAB87simX0", "name": "", "logoUrl": "https://noteworthy-mantua.biz"}, "inviter": {"name": "", "image": "https://pale-saloon.name/"}, "role": "workspace.member", "expiresAt": "2024-12-23T03:07:01.575Z", "state": "expired", "emailHint": null} + "404": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + acceptWorkspaceInvitation: + speakeasy-default-accept-workspace-invitation: + parameters: + path: + token: "" + responses: + "200": + application/json: {"outcome": "joined", "workspaceId": "ws_It13CUaGEhLLAB87simX0", "workspaceName": "", "role": "workspace.member"} + "404": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + listWorkspaceInvitations: + speakeasy-default-list-workspace-invitations: + parameters: + path: + id: "ws_It13CUaGEhLLAB87simX0" + query: + workspace: "my-workspace" + responses: + "200": + application/json: {"items": [{"id": "winv_DsgltMIFV0GmqtxV5NYTtrknrna", "email": "Emmie_Muller@gmail.com", "role": "workspace.member", "status": "pending", "deliveryStatus": "failed", "expiresAt": "2024-03-09T16:33:10.868Z", "lastSentAt": "2024-03-29T16:06:21.554Z", "createdAt": "2026-07-21T15:51:18.955Z", "inviteUrl": "https://helpless-anticodon.biz/"}]} + "404": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + createWorkspaceInvitation: + speakeasy-default-create-workspace-invitation: + parameters: + path: + id: "ws_It13CUaGEhLLAB87simX0" + query: + workspace: "my-workspace" + requestBody: + application/json: {"email": "Moriah.Rolfson@hotmail.com", "role": "workspace.member"} + responses: + "201": + application/json: {"id": "winv_DsgltMIFV0GmqtxV5NYTtrknrna", "email": "Abraham42@hotmail.com", "role": "workspace.member", "status": "accepted", "deliveryStatus": "pending", "expiresAt": "2026-05-21T08:40:21.188Z", "lastSentAt": "2025-07-08T02:20:00.972Z", "createdAt": "2024-05-15T04:20:10.174Z", "inviteUrl": "https://abandoned-eyebrow.biz/"} + "403": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + resendWorkspaceInvitation: + speakeasy-default-resend-workspace-invitation: + parameters: + path: + id: "ws_It13CUaGEhLLAB87simX0" + invitationId: "" + query: + workspace: "my-workspace" + responses: + "200": + application/json: {"id": "winv_DsgltMIFV0GmqtxV5NYTtrknrna", "email": "Heaven.Cole69@gmail.com", "role": "workspace.member", "status": "expired", "deliveryStatus": "failed", "expiresAt": "2024-06-06T23:10:53.839Z", "lastSentAt": "2026-10-26T00:10:20.068Z", "createdAt": "2025-05-20T00:44:42.174Z", "inviteUrl": "https://dreary-petticoat.com"} + "404": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + revokeWorkspaceInvitation: + speakeasy-default-revoke-workspace-invitation: + parameters: + path: + id: "ws_It13CUaGEhLLAB87simX0" + invitationId: "" + query: + workspace: "my-workspace" + responses: + "404": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + getWorkspaceInviteLink: + speakeasy-default-get-workspace-invite-link: + parameters: + path: + id: "ws_It13CUaGEhLLAB87simX0" + query: + workspace: "my-workspace" + responses: + "200": + application/json: {"id": "wil_RgcthDSZ37rmFLekuItpFS7btjXoYwou1gE4", "role": "workspace.member", "expiresAt": "2025-06-07T04:37:56.496Z", "createdAt": "2024-04-17T09:41:30.726Z", "useCount": 953936, "lastUsedAt": "2024-03-08T14:24:52.766Z", "inviteUrl": "https://ultimate-elver.biz"} + "404": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + createWorkspaceInviteLink: + speakeasy-default-create-workspace-invite-link: + parameters: + path: + id: "ws_It13CUaGEhLLAB87simX0" + query: + workspace: "my-workspace" + requestBody: + application/json: {"role": "workspace.member"} + responses: + "200": + application/json: {"id": "wil_RgcthDSZ37rmFLekuItpFS7btjXoYwou1gE4", "role": "workspace.member", "expiresAt": "2025-09-13T03:21:37.500Z", "createdAt": "2024-08-05T23:43:57.116Z", "useCount": 73602, "lastUsedAt": "2025-08-07T11:27:49.590Z", "inviteUrl": "https://dull-consistency.org/"} + "404": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + revokeWorkspaceInviteLink: + speakeasy-default-revoke-workspace-invite-link: + parameters: + path: + id: "ws_It13CUaGEhLLAB87simX0" + query: + workspace: "my-workspace" + responses: + "404": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + listAwsVirtualKeys: + projectName: + parameters: + query: + project: "my-project" + responses: + "200": + application/json: {"virtualKeys": []} + "401": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + projectId: + parameters: + query: + project: "prj_mcytp6z3j91f7tn5ryqsfwtr" + responses: + "200": + application/json: {"virtualKeys": []} + "401": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + createAwsVirtualKey: + speakeasy-default-create-aws-virtual-key: + requestBody: + application/json: {"selector": {"deploymentId": "dep_0c29fq4a2yjb7kx3smwdgxlc"}, "awsAccountId": "", "awsRegion": "", "idempotencyKey": "", "deletionWindowDays": 30} + responses: + "200": + application/json: {"virtualKey": {"id": "vkey_0p9nwqgtftugsoey99lqyqq", "projectId": "", "status": "deletion-pending", "externalKeyId": "", "awsAccountId": "", "awsRegion": "", "customKeyStoreId": "", "kmsKeyArn": "", "alias": "", "description": "hence what unlike different", "deletionWindowDays": 934814, "tags": {"key": ""}, "observedAt": "2026-08-10T07:38:23.276Z", "canaryPassedAt": "2026-07-15T18:09:24.788Z", "deletionScheduledAt": "2024-01-28T06:36:00.559Z", "finalDeletionObservedAt": "2024-05-03T14:41:21.287Z", "createdAt": "2025-07-08T21:44:31.323Z", "updatedAt": "2024-05-03T04:20:43.205Z"}, "setup": {"proxyUriEndpoint": "https://polished-smoke.biz", "proxyUriPath": "", "accessKeyId": "", "secretAccessKey": "", "externalKeyId": ""}} + "400": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + rotateAwsVirtualKeyCredential: + speakeasy-default-rotate-aws-virtual-key-credential: + parameters: + path: + id: "vkey_0p9nwqgtftugsoey99lqyqq" + responses: + "200": + application/json: {"virtualKey": {"id": "vkey_0p9nwqgtftugsoey99lqyqq", "projectId": "", "status": "ready", "externalKeyId": "", "awsAccountId": "", "awsRegion": "", "customKeyStoreId": "", "kmsKeyArn": "", "alias": "", "description": "costume upside-down provided although upon shell runway unless humiliating drowse", "deletionWindowDays": 351584, "tags": {}, "observedAt": "2025-04-29T12:24:25.817Z", "canaryPassedAt": "2025-07-26T04:39:27.503Z", "deletionScheduledAt": "2024-08-31T01:34:12.479Z", "finalDeletionObservedAt": "2026-10-07T01:57:16.939Z", "createdAt": "2024-04-09T12:29:37.596Z", "updatedAt": "2025-09-01T12:39:24.768Z"}, "setup": {"proxyUriEndpoint": "https://candid-nerve.org/", "proxyUriPath": "", "accessKeyId": "", "secretAccessKey": "", "externalKeyId": ""}} + "401": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + restoreAwsVirtualKey: + speakeasy-default-restore-aws-virtual-key: + parameters: + path: + id: "vkey_0p9nwqgtftugsoey99lqyqq" + responses: + "200": + application/json: {"id": "vkey_0p9nwqgtftugsoey99lqyqq", "projectId": "", "status": "provisioning", "externalKeyId": "", "awsAccountId": "", "awsRegion": "", "customKeyStoreId": "", "kmsKeyArn": null, "alias": "", "description": "mmm from cow hydrocarbon scaffold", "deletionWindowDays": 908267, "tags": {"key": ""}, "observedAt": "2024-09-27T16:39:56.961Z", "canaryPassedAt": "2024-05-13T01:24:21.588Z", "deletionScheduledAt": null, "finalDeletionObservedAt": "2026-11-02T12:49:36.109Z", "createdAt": "2026-01-20T23:22:37.996Z", "updatedAt": "2025-08-10T11:09:43.030Z"} + "401": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + finalizeAwsVirtualKeyDeletion: + speakeasy-default-finalize-aws-virtual-key-deletion: + parameters: + path: + id: "vkey_0p9nwqgtftugsoey99lqyqq" + responses: + "200": + application/json: {"id": "vkey_0p9nwqgtftugsoey99lqyqq", "projectId": "", "status": "decommissioning", "externalKeyId": "", "awsAccountId": "", "awsRegion": "", "customKeyStoreId": "", "kmsKeyArn": null, "alias": "", "description": "tomography accompanist like till", "deletionWindowDays": 480945, "tags": {}, "observedAt": "2025-02-14T06:49:29.501Z", "canaryPassedAt": "2024-04-11T03:50:24.239Z", "deletionScheduledAt": "2024-07-20T13:39:05.963Z", "finalDeletionObservedAt": "2025-06-06T06:49:54.915Z", "createdAt": "2024-05-03T22:43:37.364Z", "updatedAt": "2025-08-27T02:17:09.732Z"} + "401": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + decommissionAwsVirtualKey: + speakeasy-default-decommission-aws-virtual-key: + parameters: + path: + id: "vkey_0p9nwqgtftugsoey99lqyqq" + responses: + "200": + application/json: {"id": "vkey_0p9nwqgtftugsoey99lqyqq", "projectId": "", "status": "deletion-pending", "externalKeyId": "", "awsAccountId": "", "awsRegion": "", "customKeyStoreId": "", "kmsKeyArn": "", "alias": "", "description": "but about skeletal", "deletionWindowDays": 963652, "tags": {"key": ""}, "observedAt": "2026-11-22T23:50:20.352Z", "canaryPassedAt": null, "deletionScheduledAt": "2025-06-16T08:49:46.808Z", "finalDeletionObservedAt": "2026-03-23T12:41:33.102Z", "createdAt": "2025-05-02T02:50:12.663Z", "updatedAt": "2024-02-15T10:37:00.272Z"} + "400": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + getAwsVirtualKey: + speakeasy-default-get-aws-virtual-key: + parameters: + path: + id: "vkey_0p9nwqgtftugsoey99lqyqq" + responses: + "200": + application/json: {"id": "vkey_0p9nwqgtftugsoey99lqyqq", "projectId": "", "status": "provisioning", "externalKeyId": "", "awsAccountId": "", "awsRegion": "", "customKeyStoreId": "", "kmsKeyArn": "", "alias": "", "description": null, "deletionWindowDays": 787221, "tags": {"key": "", "key1": ""}, "observedAt": "2026-08-05T02:45:59.014Z", "canaryPassedAt": "2025-04-15T07:49:19.484Z", "deletionScheduledAt": "2025-08-03T16:34:10.532Z", "finalDeletionObservedAt": "2026-12-06T10:39:05.700Z", "createdAt": "2026-09-08T00:44:56.097Z", "updatedAt": "2026-07-05T10:07:55.575Z"} + "401": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + continueAwsVirtualKey: + speakeasy-default-continue-aws-virtual-key: + parameters: + path: + id: "vkey_0p9nwqgtftugsoey99lqyqq" + responses: + "200": + application/json: {"id": "vkey_0p9nwqgtftugsoey99lqyqq", "projectId": "", "status": "ready", "externalKeyId": "", "awsAccountId": "", "awsRegion": "", "customKeyStoreId": "", "kmsKeyArn": "", "alias": "", "description": "rekindle rebuff misguided cassava speedily to hotfoot shyly hm alienated", "deletionWindowDays": 842050, "tags": {}, "observedAt": "2024-03-18T15:51:37.839Z", "canaryPassedAt": "2025-11-28T08:24:57.072Z", "deletionScheduledAt": "2026-01-20T11:25:09.287Z", "finalDeletionObservedAt": "2025-11-13T22:04:11.700Z", "createdAt": "2024-10-01T07:39:17.984Z", "updatedAt": "2024-07-23T17:01:31.372Z"} + "400": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + getWorkspaceSettings: + speakeasy-default-get-workspace-settings: + parameters: + path: + id: "ws_It13CUaGEhLLAB87simX0" + query: + workspace: "my-workspace" + responses: + "200": + application/json: {"workspaceId": "ws_It13CUaGEhLLAB87simX0", "enabled": false, "debugPermissionMode": "ask", "createdAt": "2024-11-13T08:37:23.238Z", "updatedAt": "2024-08-03T09:23:28.780Z"} + "404": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + updateWorkspaceSettings: + speakeasy-default-update-workspace-settings: + parameters: + path: + id: "ws_It13CUaGEhLLAB87simX0" + query: + workspace: "my-workspace" + responses: + "200": + application/json: {"workspaceId": "ws_It13CUaGEhLLAB87simX0", "enabled": false, "debugPermissionMode": "ask", "createdAt": "2026-03-16T04:44:35.115Z", "updatedAt": "2026-12-06T08:55:25.293Z"} + "404": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + configureProjectSource: + projectName: + parameters: + path: + idOrName: "my-project" + query: + workspace: "my-workspace" + requestBody: + application/json: {"mode": "repository", "gitRepository": {"type": "github", "repo": "alien/my-agent"}} + responses: + "200": + application/json: {"id": "prj_mcytp6z3j91f7tn5ryqsfwtr", "name": "my-app", "gitRepository": {"type": "github", "repo": "alien/my-agent"}, "domainId": "dom_469m0agk8luj4s16sakmmpdd", "defaultManagers": {"aws": "mgr_enxscjrqiiu2lrc672hwwuc5", "gcp": "mgr_enxscjrqiiu2lrc672hwwuc5", "azure": "mgr_enxscjrqiiu2lrc672hwwuc5", "kubernetes": "mgr_enxscjrqiiu2lrc672hwwuc5", "machines": "mgr_enxscjrqiiu2lrc672hwwuc5", "local": "mgr_enxscjrqiiu2lrc672hwwuc5"}, "createdAt": "2026-03-09T10:29:05.988Z", "workspaceId": "ws_It13CUaGEhLLAB87simX0"} + "400": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + projectId: + parameters: + path: + idOrName: "prj_mcytp6z3j91f7tn5ryqsfwtr" + query: + workspace: "my-workspace" + requestBody: + application/json: {"mode": "template", "targetNamespace": "", "templatePath": "examples/github-agent/packages/remote-agent"} + responses: + "200": + application/json: {"id": "prj_mcytp6z3j91f7tn5ryqsfwtr", "name": "my-app", "gitRepository": {"type": "github", "repo": "alien/my-agent"}, "domainId": "dom_469m0agk8luj4s16sakmmpdd", "defaultManagers": {"aws": "mgr_enxscjrqiiu2lrc672hwwuc5", "gcp": "mgr_enxscjrqiiu2lrc672hwwuc5", "azure": "mgr_enxscjrqiiu2lrc672hwwuc5", "kubernetes": "mgr_enxscjrqiiu2lrc672hwwuc5", "machines": "mgr_enxscjrqiiu2lrc672hwwuc5", "local": "mgr_enxscjrqiiu2lrc672hwwuc5"}, "createdAt": "2026-03-09T10:29:05.988Z", "workspaceId": "ws_It13CUaGEhLLAB87simX0"} + "400": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + setProjectCapabilities: + projectName: + parameters: + path: + idOrName: "my-project" + query: + workspace: "my-workspace" + responses: + "200": + application/json: {"schemaVersion": 2130.37, "capabilities": {}} + "403": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + projectId: + parameters: + path: + idOrName: "prj_mcytp6z3j91f7tn5ryqsfwtr" + query: + workspace: "my-workspace" + responses: + "200": + application/json: {"schemaVersion": 2130.37, "capabilities": {}} + "403": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + configureProjectDeployments: + projectName: + parameters: + path: + idOrName: "my-project" + query: + workspace: "my-workspace" + responses: + "200": + application/json: {"schemaVersion": 9590.86, "capabilities": {}} + "403": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + projectId: + parameters: + path: + idOrName: "prj_mcytp6z3j91f7tn5ryqsfwtr" + query: + workspace: "my-workspace" + responses: + "200": + application/json: {"schemaVersion": 9590.86, "capabilities": {}} + "403": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + configureProjectModels: + projectName: + parameters: + path: + idOrName: "my-project" + query: + workspace: "my-workspace" + responses: + "200": + application/json: {"projectCapabilities": {"schemaVersion": 1197.99, "capabilities": {}}, "source": {"definitionId": "customer-registry", "definitionVersion": "", "releaseId": ""}, "packages": []} + "403": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + projectId: + parameters: + path: + idOrName: "prj_mcytp6z3j91f7tn5ryqsfwtr" + query: + workspace: "my-workspace" + responses: + "200": + application/json: {"projectCapabilities": {"schemaVersion": 1197.99, "capabilities": {}}, "source": {"definitionId": "customer-registry", "definitionVersion": "", "releaseId": ""}, "packages": []} + "403": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + configureProjectKeys: + projectName: + parameters: + path: + idOrName: "my-project" + query: + workspace: "my-workspace" + responses: + "200": + application/json: {"projectCapabilities": {"schemaVersion": 9897.84, "capabilities": {}}, "source": {"definitionId": "customer-storage", "definitionVersion": "", "releaseId": ""}, "packages": [{"type": "cloudformation", "status": "pending"}]} + "403": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + projectId: + parameters: + path: + idOrName: "prj_mcytp6z3j91f7tn5ryqsfwtr" + query: + workspace: "my-workspace" + responses: + "200": + application/json: {"projectCapabilities": {"schemaVersion": 9897.84, "capabilities": {}}, "source": {"definitionId": "customer-storage", "definitionVersion": "", "releaseId": ""}, "packages": [{"type": "cloudformation", "status": "pending"}]} + "403": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + configureProjectBuckets: + projectName: + parameters: + path: + idOrName: "my-project" + query: + workspace: "my-workspace" + responses: + "200": + application/json: {"projectCapabilities": {"schemaVersion": 4857.68, "capabilities": {}}, "source": {"definitionId": "customer-registry", "definitionVersion": "", "releaseId": ""}, "packages": [{"type": "cloudformation", "status": "ready"}]} + "403": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + projectId: + parameters: + path: + idOrName: "prj_mcytp6z3j91f7tn5ryqsfwtr" + query: + workspace: "my-workspace" + responses: + "200": + application/json: {"projectCapabilities": {"schemaVersion": 4857.68, "capabilities": {}}, "source": {"definitionId": "customer-registry", "definitionVersion": "", "releaseId": ""}, "packages": [{"type": "cloudformation", "status": "ready"}]} + "403": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + configureProjectRegistry: + projectName: + parameters: + path: + idOrName: "my-project" + query: + workspace: "my-workspace" + responses: + "200": + application/json: {"projectCapabilities": {"schemaVersion": 2884.41, "capabilities": {}}, "source": {"definitionId": "customer-ai", "definitionVersion": "", "releaseId": ""}, "packages": [{"type": "terraform", "status": "pending"}]} + "403": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + projectId: + parameters: + path: + idOrName: "prj_mcytp6z3j91f7tn5ryqsfwtr" + query: + workspace: "my-workspace" + responses: + "200": + application/json: {"projectCapabilities": {"schemaVersion": 2884.41, "capabilities": {}}, "source": {"definitionId": "customer-ai", "definitionVersion": "", "releaseId": ""}, "packages": [{"type": "terraform", "status": "pending"}]} + "403": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + getProjectCapabilityOverview: + projectName: + parameters: + path: + idOrName: "my-project" + query: + workspace: "my-workspace" + responses: + "200": + application/json: {"generatedAt": "2025-10-17T19:42:21.403Z", "configurationStatus": "invalid", "summary": {"groups": 364122, "capabilities": {"models": {"enabled": true, "connected": 437668, "settingUp": 390212, "needsAttention": 852815, "revoked": 890995, "notConnected": 478404}, "keys": {"enabled": true, "connected": 43789, "settingUp": 256721, "needsAttention": 357533, "revoked": 146607, "notConnected": 544687}, "buckets": {"enabled": false, "connected": 428370, "settingUp": 966561, "needsAttention": 235784, "revoked": 278009, "notConnected": 286044}, "registry": {"enabled": false, "connected": 347194, "settingUp": 151467, "needsAttention": 758211, "revoked": 839744, "notConnected": 571728}}}, "groups": []} + "403": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + projectId: + parameters: + path: + idOrName: "prj_mcytp6z3j91f7tn5ryqsfwtr" + query: + workspace: "my-workspace" + responses: + "200": + application/json: {"generatedAt": "2025-10-17T19:42:21.403Z", "configurationStatus": "invalid", "summary": {"groups": 364122, "capabilities": {"models": {"enabled": true, "connected": 437668, "settingUp": 390212, "needsAttention": 852815, "revoked": 890995, "notConnected": 478404}, "keys": {"enabled": true, "connected": 43789, "settingUp": 256721, "needsAttention": 357533, "revoked": 146607, "notConnected": 544687}, "buckets": {"enabled": false, "connected": 428370, "settingUp": 966561, "needsAttention": 235784, "revoked": 278009, "notConnected": 286044}, "registry": {"enabled": false, "connected": 347194, "settingUp": 151467, "needsAttention": 758211, "revoked": 839744, "notConnected": 571728}}}, "groups": []} + "403": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + getProjectAiUsage: + projectName: + parameters: + path: + idOrName: "my-project" + query: + workspace: "my-workspace" + range: "24h" + responses: + "200": + application/json: {"status": "unavailable", "reason": "temporarily-unavailable"} + "403": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + projectId: + parameters: + path: + idOrName: "prj_mcytp6z3j91f7tn5ryqsfwtr" + query: + workspace: "my-workspace" + range: "24h" + responses: + "200": + application/json: {"status": "unavailable", "reason": "temporarily-unavailable"} + "403": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + createRemoteBindingsExternalAccess: + projectName: + parameters: + path: + idOrName: "my-project" + query: + workspace: "my-workspace" + requestBody: + application/json: {"externalId": "ext_example_01", "capability": "storage"} + responses: + "200": + application/json: {"deploymentId": "dep_0c29fq4a2yjb7kx3smwdgxlc", "resourceId": "", "accessToken": "", "expiresIn": 6551.32, "tokenType": "Bearer", "managerUrl": "https://ruddy-mousse.com"} + "401": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + projectId: + parameters: + path: + idOrName: "prj_mcytp6z3j91f7tn5ryqsfwtr" + query: + workspace: "my-workspace" + requestBody: + application/json: {"externalId": "ext_example_01", "capability": "storage"} + responses: + "200": + application/json: {"deploymentId": "dep_0c29fq4a2yjb7kx3smwdgxlc", "resourceId": "", "accessToken": "", "expiresIn": 6551.32, "tokenType": "Bearer", "managerUrl": "https://ruddy-mousse.com"} + "401": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + ensureDeploymentGroupByExternalId: + speakeasy-default-ensure-deployment-group-by-external-id: + parameters: + query: + workspace: "my-workspace" + requestBody: + application/json: {"externalId": "ext_example_01", "name": "prod-us-east-1", "project": "", "maxDeployments": 100} + responses: + "200": + application/json: {"id": "dg_r27ict8c7vcgsumpj90ackf7b", "name": "prod-us-east-1", "externalId": "ext_example_01", "projectId": "prj_mcytp6z3j91f7tn5ryqsfwtr", "workspaceId": "ws_It13CUaGEhLLAB87simX0", "maxDeployments": 100, "createdAt": "2026-05-23T08:10:33.260Z"} + "404": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + getDeploymentGroupByExternalId: + speakeasy-default-get-deployment-group-by-external-id: + parameters: + query: + workspace: "my-workspace" + externalId: "ext_example_01" + responses: + "200": + application/json: {"id": "dg_r27ict8c7vcgsumpj90ackf7b", "name": "prod-us-east-1", "externalId": "ext_example_01", "projectId": "prj_mcytp6z3j91f7tn5ryqsfwtr", "workspaceId": "ws_It13CUaGEhLLAB87simX0", "maxDeployments": 100, "createdAt": "2026-08-15T05:24:07.077Z"} + "404": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + setDeploymentGroupExternalId: + speakeasy-default-set-deployment-group-external-id: + parameters: + path: + id: "dg_r27ict8c7vcgsumpj90ackf7b" + query: + workspace: "my-workspace" + requestBody: + application/json: {"externalId": "ext_example_01"} + responses: + "200": + application/json: {"id": "dg_r27ict8c7vcgsumpj90ackf7b", "name": "prod-us-east-1", "externalId": "ext_example_01", "projectId": "prj_mcytp6z3j91f7tn5ryqsfwtr", "workspaceId": "ws_It13CUaGEhLLAB87simX0", "maxDeployments": 100, "createdAt": "2026-04-28T03:25:20.546Z"} + "404": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + getExternalAIBinding: + speakeasy-default-get-external-AI-binding: + parameters: + path: + id: "dg_r27ict8c7vcgsumpj90ackf7b" + query: + workspace: "my-workspace" + responses: + "200": + application/json: {"binding": {"id": "", "provider": "openai", "providerEndpoint": "", "providerClientId": null, "keyFingerprint": "", "availableProviderModelIds": ["", "", ""], "requiredModelCoverage": [{"publicModelId": "", "available": false}], "verifiedAt": "2024-04-04T23:57:51.647Z", "updatedAt": "2025-09-15T04:05:51.328Z"}} + "403": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + putExternalAIBinding: + speakeasy-default-put-external-AI-binding: + parameters: + path: + id: "dg_r27ict8c7vcgsumpj90ackf7b" + query: + workspace: "my-workspace" + requestBody: + application/json: {"provider": "anthropic", "apiKey": "", "acknowledgeAlienCredentialAccess": true} + responses: + "200": + application/json: {"id": "", "provider": "anthropic", "providerEndpoint": "", "providerClientId": null, "keyFingerprint": "", "availableProviderModelIds": [], "requiredModelCoverage": [{"publicModelId": "", "available": true}], "verifiedAt": "2026-08-31T17:16:56.400Z", "updatedAt": "2024-10-14T13:27:37.811Z"} + "400": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + deleteExternalAIBinding: + speakeasy-default-delete-external-AI-binding: + parameters: + path: + id: "dg_r27ict8c7vcgsumpj90ackf7b" + query: + workspace: "my-workspace" + responses: + "403": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + createSetupLink: + speakeasy-default-create-setup-link: + parameters: + query: + workspace: "my-workspace" + requestBody: + application/json: {"externalId": "ext_example_01", "name": "prod-us-east-1", "project": "", "maxDeployments": 100, "deploymentSetupConfig": {"metadata": {"key": "", "key1": ""}, "policy": {"allowedPlatforms": ["aws"], "allowedSetupMethods": ["helm"]}, "environmentVariables": []}} + responses: + "200": + application/json: {"token": "", "deploymentLink": "", "deploymentGroup": {"id": "dg_r27ict8c7vcgsumpj90ackf7b", "name": "prod-us-east-1", "externalId": "ext_example_01", "projectId": "prj_mcytp6z3j91f7tn5ryqsfwtr", "workspaceId": "ws_It13CUaGEhLLAB87simX0", "maxDeployments": 100, "createdAt": "2026-03-07T01:46:27.627Z"}} + "400": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + getContainerRegistry: + speakeasy-default-get-container-registry: + parameters: + path: + id: "dg_r27ict8c7vcgsumpj90ackf7b" + query: + workspace: "my-workspace" + responses: + "200": + application/json: {"route": {"id": "crroute_c9t4xoy7fmiq7equtu20", "deploymentId": "dep_0c29fq4a2yjb7kx3smwdgxlc", "managerId": "", "resourceId": "", "resourceRevision": "", "desiredRevision": 15010, "appliedRevision": 76759, "status": "connected", "lastVerifiedAt": null, "lastError": ""}, "endpoint": null, "repositories": [{"id": "crrepo_625temdq3bnu25jw9rcux", "logicalName": "", "desiredState": "deleted", "status": "ready", "verifiedAt": "2025-12-01T02:32:16.637Z"}], "credentials": [{"id": "crcred_oz1xjr82f37j17g4gtmyu", "label": "", "scope": "pushPull", "repositorySubset": [""], "expiresAt": "2024-11-16T01:15:54.278Z", "lastUsedAt": "2024-12-11T19:45:29.331Z", "revokedAt": "2024-06-28T06:38:48.499Z", "createdAt": "2024-04-26T04:10:10.192Z"}]} + "404": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + putContainerRegistry: + speakeasy-default-put-container-registry: + parameters: + path: + id: "dg_r27ict8c7vcgsumpj90ackf7b" + query: + workspace: "my-workspace" + requestBody: + application/json: {"deploymentId": "dep_0c29fq4a2yjb7kx3smwdgxlc", "resourceId": ""} + responses: + "200": + application/json: {"id": "crroute_c9t4xoy7fmiq7equtu20", "deploymentId": "dep_0c29fq4a2yjb7kx3smwdgxlc", "managerId": "", "resourceId": "", "resourceRevision": "", "desiredRevision": 704765, "appliedRevision": 590699, "status": "connected", "lastVerifiedAt": "2024-01-06T08:49:29.428Z", "lastError": ""} + "404": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + createContainerRegistryRepository: + speakeasy-default-create-container-registry-repository: + parameters: + path: + id: "dg_r27ict8c7vcgsumpj90ackf7b" + query: + workspace: "my-workspace" + responses: + "201": + application/json: {"id": "crrepo_625temdq3bnu25jw9rcux", "logicalName": "", "desiredState": "present", "status": "creating", "verifiedAt": "2026-03-20T21:22:58.922Z"} + "404": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + createContainerRegistryCredential: + speakeasy-default-create-container-registry-credential: + parameters: + path: + id: "dg_r27ict8c7vcgsumpj90ackf7b" + query: + workspace: "my-workspace" + responses: + "201": + application/json: {"credential": {"id": "crcred_oz1xjr82f37j17g4gtmyu", "label": "", "scope": "pushPull", "repositorySubset": ["", "", ""], "expiresAt": "2025-06-09T03:44:33.822Z", "lastUsedAt": "2025-06-05T20:43:07.156Z", "revokedAt": "2024-04-02T05:21:53.897Z", "createdAt": "2024-11-16T04:47:18.346Z"}, "username": "alien", "password": "dGXozcW9RB1cNHN"} + "404": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + revokeContainerRegistryCredential: + speakeasy-default-revoke-container-registry-credential: + parameters: + path: + id: "dg_r27ict8c7vcgsumpj90ackf7b" + credentialId: "crcred_oz1xjr82f37j17g4gtmyu" + query: + workspace: "my-workspace" + responses: + "404": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + deleteContainerRegistryRepository: + speakeasy-default-delete-container-registry-repository: + parameters: + path: + id: "dg_r27ict8c7vcgsumpj90ackf7b" + repositoryId: "crrepo_625temdq3bnu25jw9rcux" + query: + workspace: "my-workspace" + responses: + "202": + application/json: {"id": "crrepo_625temdq3bnu25jw9rcux", "logicalName": "", "desiredState": "present", "status": "deleting", "verifiedAt": "2025-03-12T12:30:02.918Z"} + "404": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + verifyContainerRegistry: + speakeasy-default-verify-container-registry: + parameters: + path: + id: "dg_r27ict8c7vcgsumpj90ackf7b" + query: + workspace: "my-workspace" + responses: + "202": + application/json: {"id": "crroute_c9t4xoy7fmiq7equtu20", "deploymentId": "dep_0c29fq4a2yjb7kx3smwdgxlc", "managerId": "", "resourceId": "", "resourceRevision": "", "desiredRevision": 281597, "appliedRevision": 233777, "status": "connected", "lastVerifiedAt": null, "lastError": ""} + "404": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + revokeContainerRegistry: + speakeasy-default-revoke-container-registry: + parameters: + path: + id: "dg_r27ict8c7vcgsumpj90ackf7b" + query: + workspace: "my-workspace" + responses: + "202": + application/json: {"id": "crroute_c9t4xoy7fmiq7equtu20", "deploymentId": "dep_0c29fq4a2yjb7kx3smwdgxlc", "managerId": "", "resourceId": "", "resourceRevision": "", "desiredRevision": 621545, "appliedRevision": 434470, "status": "resolving", "lastVerifiedAt": "2026-12-03T06:54:55.535Z", "lastError": ""} + "404": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + getContainerRegistryManagerSnapshot: + speakeasy-default-get-container-registry-manager-snapshot: + parameters: + path: + id: "" + responses: + "200": + application/json: {"generatedAt": "2026-06-26T00:51:40.655Z", "routes": [{"id": "crroute_c9t4xoy7fmiq7equtu20", "deploymentId": "", "resourceId": "", "resourceRevision": "", "desiredRevision": 181036, "appliedRevision": 511032, "status": "degraded", "repositories": [{"id": "crrepo_625temdq3bnu25jw9rcux", "logicalName": "", "desiredState": "present", "routableUpstreamName": "", "remoteResourceRevision": ""}], "credentials": []}]} + "403": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + applyContainerRegistryManagerSnapshot: + speakeasy-default-apply-container-registry-manager-snapshot: + parameters: + path: + id: "" + requestBody: + application/json: {"routeId": "crroute_c9t4xoy7fmiq7equtu20", "desiredRevision": 186433, "repositories": [{"id": "crrepo_625temdq3bnu25jw9rcux", "status": "failed", "routableUpstreamName": "", "error": ""}], "verification": {"succeeded": false, "observedAt": "2026-11-26T10:14:03.486Z", "error": ""}} + responses: + "200": + application/json: {"appliedRevision": 471035, "status": "degraded"} + "403": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + listReleaseDeployments: + speakeasy-default-list-release-deployments: + parameters: + path: + id: "rel_WbhQgksrawSKIpEN0NAssHX9" + query: + workspace: "my-workspace" + limit: 20 + responses: + "200": + application/json: {"items": [{"id": "dep_0c29fq4a2yjb7kx3smwdgxlc", "name": "", "status": "running", "platform": "aws", "deploymentGroup": {"id": "dg_r27ict8c7vcgsumpj90ackf7b", "name": "prod-us-east-1", "externalId": "ext_example_01"}, "currentReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "desiredReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "pinnedReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "rolloutState": "pending", "releasedAt": "2024-09-20T04:52:47.699Z", "durationMs": null}], "nextCursor": "", "stateCounts": {"updated": 986319, "updating": 535681, "failed": 193833, "pending": 473305, "pinned-other": 382088, "superseded": 748796, "on-other": 952996}} + "404": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + promoteRelease: + projectName: + parameters: + path: + name: "" + query: + workspace: "my-workspace" + project: "my-project" + requestBody: + application/json: {"releaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "expectedReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9"} + responses: + "200": + application/json: {"workspaceId": "ws_It13CUaGEhLLAB87simX0", "projectId": "prj_mcytp6z3j91f7tn5ryqsfwtr", "name": "", "currentReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "createdAt": "2026-01-03T00:04:50.877Z", "updatedAt": "2025-05-25T16:55:40.026Z"} + "404": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + projectId: + parameters: + path: + name: "" + query: + workspace: "my-workspace" + project: "prj_mcytp6z3j91f7tn5ryqsfwtr" + requestBody: + application/json: {"releaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "expectedReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9"} + responses: + "200": + application/json: {"workspaceId": "ws_It13CUaGEhLLAB87simX0", "projectId": "prj_mcytp6z3j91f7tn5ryqsfwtr", "name": "", "currentReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "createdAt": "2026-01-03T00:04:50.877Z", "updatedAt": "2025-05-25T16:55:40.026Z"} + "404": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + listReleaseChannels: + projectName: + parameters: + query: + workspace: "my-workspace" + project: "my-project" + responses: + "200": + application/json: {"items": [{"workspaceId": "ws_It13CUaGEhLLAB87simX0", "projectId": "prj_mcytp6z3j91f7tn5ryqsfwtr", "name": "", "currentReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "createdAt": "2026-10-12T11:56:16.159Z", "updatedAt": "2025-01-17T06:51:43.117Z"}]} + "404": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + projectId: + parameters: + query: + workspace: "my-workspace" + project: "prj_mcytp6z3j91f7tn5ryqsfwtr" + responses: + "200": + application/json: {"items": [{"workspaceId": "ws_It13CUaGEhLLAB87simX0", "projectId": "prj_mcytp6z3j91f7tn5ryqsfwtr", "name": "", "currentReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "createdAt": "2026-10-12T11:56:16.159Z", "updatedAt": "2025-01-17T06:51:43.117Z"}]} + "404": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + createReleaseChannel: + projectName: + parameters: + query: + workspace: "my-workspace" + project: "my-project" + requestBody: + application/json: {"name": "", "releaseId": "rel_WbhQgksrawSKIpEN0NAssHX9"} + responses: + "201": + application/json: {"workspaceId": "ws_It13CUaGEhLLAB87simX0", "projectId": "prj_mcytp6z3j91f7tn5ryqsfwtr", "name": "", "currentReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "createdAt": "2024-05-16T20:19:29.970Z", "updatedAt": "2026-03-20T03:54:04.557Z"} + "400": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + projectId: + parameters: + query: + workspace: "my-workspace" + project: "prj_mcytp6z3j91f7tn5ryqsfwtr" + requestBody: + application/json: {"name": "", "releaseId": "rel_WbhQgksrawSKIpEN0NAssHX9"} + responses: + "201": + application/json: {"workspaceId": "ws_It13CUaGEhLLAB87simX0", "projectId": "prj_mcytp6z3j91f7tn5ryqsfwtr", "name": "", "currentReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "createdAt": "2024-05-16T20:19:29.970Z", "updatedAt": "2026-03-20T03:54:04.557Z"} + "400": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + deleteReleaseChannel: + projectName: + parameters: + path: + name: "" + query: + workspace: "my-workspace" + project: "my-project" + responses: + "400": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + projectId: + parameters: + path: + name: "" + query: + workspace: "my-workspace" + project: "prj_mcytp6z3j91f7tn5ryqsfwtr" + responses: + "400": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + setDeploymentReleaseChannel: + speakeasy-default-set-deployment-release-channel: + parameters: + path: + id: "dep_0c29fq4a2yjb7kx3smwdgxlc" + query: + workspace: "my-workspace" + responses: + "200": + application/json: {"id": "dep_0c29fq4a2yjb7kx3smwdgxlc", "name": "acme-prod", "status": "teardown-required", "projectId": "prj_mcytp6z3j91f7tn5ryqsfwtr", "platform": "local", "deploymentProtocolVersion": 207746, "deploymentGroupId": "dg_r27ict8c7vcgsumpj90ackf7b", "purpose": "application", "stackSettings": {}, "currentReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "desiredReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "pinnedReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "releaseChannel": "", "retryRequested": false, "updateState": {"active": {"id": "duop_0vtxpb1sw4sbcdwg2xo37q6", "status": "superseded", "reasons": [], "targetReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "changedKeys": [], "requestedAt": "2024-08-06T19:32:01.516Z"}, "next": {"id": "duop_0vtxpb1sw4sbcdwg2xo37q6", "status": "failed", "reasons": [], "targetReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "changedKeys": ["", ""], "requestedAt": "2024-10-31T00:27:46.371Z"}, "latest": {"id": "duop_0vtxpb1sw4sbcdwg2xo37q6", "status": "applying", "reasons": ["release"], "targetReleaseId": "rel_WbhQgksrawSKIpEN0NAssHX9", "changedKeys": [""], "requestedAt": "2026-09-14T12:54:37.821Z"}}, "createdAt": "2025-06-02T05:32:21.171Z", "updatedAt": "2026-10-15T11:40:55.550Z", "managerId": "mgr_enxscjrqiiu2lrc672hwwuc5", "workspaceId": "ws_It13CUaGEhLLAB87simX0"} + "400": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + generateManagerBindingToken: + speakeasy-default-generate-manager-binding-token: + parameters: + path: + id: "mgr_enxscjrqiiu2lrc672hwwuc5" + query: + workspace: "my-workspace" + requestBody: + application/json: {"deploymentId": "dep_0c29fq4a2yjb7kx3smwdgxlc"} + responses: + "200": + application/json: {"accessToken": "", "expiresIn": 5218.79, "tokenType": "Bearer", "managerUrl": "https://admired-maintainer.com"} + "403": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + "503": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + bootstrapCommands: + speakeasy-default-bootstrap-commands: + requestBody: + application/json: {"deploymentId": "dep_0c29fq4a2yjb7kx3smwdgxlc", "role": "receiver", "target": ""} + responses: + "200": + application/json: {"managerUrl": "https://lovely-trench.biz/", "token": "", "expiresAt": "2024-05-21T13:21:40.535Z"} + "400": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + slackIntegrationInstallUrl: + speakeasy-default-slack-integration-install-url: + parameters: + query: + workspace: "my-workspace" + responses: + "200": + application/json: {"url": "https://apt-flood.com"} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + slackIntegrationStatus: + speakeasy-default-slack-integration-status: + parameters: + query: + workspace: "my-workspace" + responses: + "200": + application/json: {"connected": true, "slackTeamId": "", "slackTeamName": "", "installedByUserId": null, "installedAt": "", "notificationChannelId": ""} + slackIntegrationChannels: + speakeasy-default-slack-integration-channels: + parameters: + query: + workspace: "my-workspace" + responses: + "200": + application/json: {"channels": [{"id": "", "name": "", "isMember": false}]} + "400": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + slackIntegrationSetNotificationChannel: + speakeasy-default-slack-integration-set-notification-channel: + parameters: + query: + workspace: "my-workspace" + responses: + "200": + application/json: {"notificationChannelId": "", "warning": ""} + "400": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + slackIntegrationUninstall: + speakeasy-default-slack-integration-uninstall: + parameters: + query: + workspace: "my-workspace" + listAgentSessions: + speakeasy-default-list-agent-sessions: + parameters: + query: + workspace: "my-workspace" + responses: + "200": + application/json: {"sessions": [{"id": "", "triggerType": "", "subjectId": "", "subject": {"deploymentName": "", "deploymentGroupId": "", "deploymentGroupName": "", "releaseId": "", "releaseCommitMessage": "", "releaseCommitRef": "", "projectId": "", "projectName": ""}, "status": "", "createdAt": "1722382100466", "updatedAt": "1735649629368"}]} + getAgentSession: + speakeasy-default-get-agent-session: + parameters: + path: + id: "" + query: + workspace: "my-workspace" + responses: + "200": + application/json: {"id": "", "triggerType": "", "subjectId": "", "subject": {"deploymentName": "", "deploymentGroupId": "", "deploymentGroupName": "", "releaseId": "", "releaseCommitMessage": "", "releaseCommitRef": "", "projectId": "", "projectName": ""}, "status": "", "createdAt": "1707662224078", "updatedAt": "1735653190474", "resultText": "", "toolNames": [""], "error": null, "pendingApproval": {"approvalId": "", "toolCallId": "", "toolName": ""}} + "404": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + listAgentSessionEvents: + speakeasy-default-list-agent-session-events: + parameters: + path: + id: "" + query: + workspace: "my-workspace" + after: 0 + limit: 200 + responses: + "200": + application/json: {"events": [{"seq": 5222.98, "createdAt": "1713435916334", "type": "markdown", "payload": {"text": ""}}], "latestSeq": 9204.96, "hasMore": false} + "404": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + approveAgentSession: + speakeasy-default-approve-agent-session: + parameters: + path: + id: "" + query: + workspace: "my-workspace" + responses: + "200": + application/json: {"jobId": "", "status": "", "resumed": false} + "404": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + "503": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + stopAgentSession: + speakeasy-default-stop-agent-session: + parameters: + path: + id: "" + query: + workspace: "my-workspace" + responses: + "200": + application/json: {"jobId": "", "status": "", "canceled": true} + "404": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + "503": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + listOperationsPlugins: + projectName: + parameters: + query: + workspace: "my-workspace" + project: "my-project" + responses: + "200": + application/json: {"plugins": [{"name": "", "version": "", "tier": "read-only", "builtin": true, "enabled": false, "operations": []}]} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + projectId: + parameters: + query: + workspace: "my-workspace" + project: "prj_mcytp6z3j91f7tn5ryqsfwtr" + responses: + "200": + application/json: {"plugins": [{"name": "", "version": "", "tier": "read-only", "builtin": true, "enabled": false, "operations": []}]} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + publishOperationsPlugin: + projectName: + parameters: + query: + workspace: "my-workspace" + project: "my-project" + responses: + "201": + application/json: {"name": "", "version": "", "tier": "mutating", "enabled": false} + "400": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + projectId: + parameters: + query: + workspace: "my-workspace" + project: "prj_mcytp6z3j91f7tn5ryqsfwtr" + responses: + "201": + application/json: {"name": "", "version": "", "tier": "mutating", "enabled": false} + "400": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + createOperationsBundleUploadUrl: + projectName: + parameters: + query: + workspace: "my-workspace" + project: "my-project" + responses: + "200": + application/json: {"uploadUrl": "https://rotten-dusk.com/", "contentType": ""} + "402": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + "503": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + projectId: + parameters: + query: + workspace: "my-workspace" + project: "prj_mcytp6z3j91f7tn5ryqsfwtr" + responses: + "200": + application/json: {"uploadUrl": "https://rotten-dusk.com/", "contentType": ""} + "402": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + "503": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + setOperationsPluginEnabled: + projectName: + parameters: + path: + name: "" + query: + workspace: "my-workspace" + project: "my-project" + responses: + "200": + application/json: {"name": "", "builtin": true, "enabled": false} + "404": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + projectId: + parameters: + path: + name: "" + query: + workspace: "my-workspace" + project: "prj_mcytp6z3j91f7tn5ryqsfwtr" + responses: + "200": + application/json: {"name": "", "builtin": true, "enabled": false} + "404": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + getOperationsPolicy: + projectName: + parameters: + query: + workspace: "my-workspace" + project: "my-project" + responses: + "200": + application/json: {"rules": [{"pattern": "", "decision": "auto"}], "default": "manual"} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + projectId: + parameters: + query: + workspace: "my-workspace" + project: "prj_mcytp6z3j91f7tn5ryqsfwtr" + responses: + "200": + application/json: {"rules": [{"pattern": "", "decision": "auto"}], "default": "manual"} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + updateOperationsPolicy: + projectName: + parameters: + query: + workspace: "my-workspace" + project: "my-project" + responses: + "200": + application/json: {"rules": [{"pattern": "", "decision": "manual"}], "default": "manual"} + "400": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + projectId: + parameters: + query: + workspace: "my-workspace" + project: "prj_mcytp6z3j91f7tn5ryqsfwtr" + responses: + "200": + application/json: {"rules": [{"pattern": "", "decision": "manual"}], "default": "manual"} + "400": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + invokeOperation: + projectName: + parameters: + query: + workspace: "my-workspace" + project: "my-project" + responses: + "200": + application/json: {"plugin": "", "operation": "", "tier": "destructive", "decision": "manual", "status": "dispatched"} + "402": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + projectId: + parameters: + query: + workspace: "my-workspace" + project: "prj_mcytp6z3j91f7tn5ryqsfwtr" + responses: + "200": + application/json: {"plugin": "", "operation": "", "tier": "destructive", "decision": "manual", "status": "dispatched"} + "402": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + createAccessRequest: + speakeasy-default-create-access-request: + parameters: + query: + workspace: "my-workspace" + requestBody: + application/json: {"deploymentId": "", "remediationPlanId": "", "title": "", "commands": []} + responses: + "201": + application/json: {"id": "", "deploymentId": "", "remediationPlanId": "", "title": "", "reason": "", "commands": [], "status": "pending-approval", "approvedUntil": ""} + "404": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + queueAccessRequest: + speakeasy-default-queue-access-request: + parameters: + path: + id: "" + query: + workspace: "my-workspace" + responses: + "200": + application/json: {"id": "", "deploymentId": "", "remediationPlanId": "", "title": "", "reason": "", "commands": [], "status": "rejected", "approvedUntil": "", "kubectlApprove": ""} + "404": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + getAccessRequestCoordinates: + speakeasy-default-get-access-request-coordinates: + parameters: + path: + id: "" + query: + workspace: "my-workspace" + responses: + "200": + application/json: {"status": "expired", "kubectlApprove": ""} + "404": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + syncRenew: + speakeasy-default-sync-renew: + parameters: + query: + workspace: "my-workspace" + requestBody: + application/json: {"deploymentId": "dep_0c29fq4a2yjb7kx3smwdgxlc", "deploymentIds": ["dep_0c29fq4a2yjb7kx3smwdgxlc"], "session": ""} + responses: + "200": + application/json: {"success": false, "leases": []} + "404": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} examplesVersion: 1.0.2 diff --git a/client-sdks/platform/typescript/FUNCTIONS.md b/client-sdks/platform/typescript/FUNCTIONS.md index 79de03ebf..2f99e3f74 100644 --- a/client-sdks/platform/typescript/FUNCTIONS.md +++ b/client-sdks/platform/typescript/FUNCTIONS.md @@ -20,7 +20,7 @@ specific category of applications. ```typescript import { AlienCore } from "@alienplatform/platform-api/core.js"; -import { userListMemberships } from "@alienplatform/platform-api/funcs/userListMemberships.js"; +import { getWorkspaceInvitationPreview } from "@alienplatform/platform-api/funcs/getWorkspaceInvitationPreview.js"; // Use `AlienCore` for best tree-shaking performance. // You can create one instance of it to use across an application. @@ -29,12 +29,14 @@ const alien = new AlienCore({ }); async function run() { - const res = await userListMemberships(alien); + const res = await getWorkspaceInvitationPreview(alien, { + token: "", + }); if (res.ok) { const { value: result } = res; console.log(result); } else { - console.log("userListMemberships failed:", res.error); + console.log("getWorkspaceInvitationPreview failed:", res.error); } } diff --git a/client-sdks/platform/typescript/README.md b/client-sdks/platform/typescript/README.md index d86bfb9c9..02650d70f 100644 --- a/client-sdks/platform/typescript/README.md +++ b/client-sdks/platform/typescript/README.md @@ -98,7 +98,9 @@ const alien = new Alien({ }); async function run() { - const result = await alien.user.listMemberships(); + const result = await alien.getWorkspaceInvitationPreview({ + token: "", + }); console.log(result); } @@ -128,7 +130,9 @@ const alien = new Alien({ }); async function run() { - const result = await alien.user.listMemberships(); + const result = await alien.getWorkspaceInvitationPreview({ + token: "", + }); console.log(result); } @@ -144,6 +148,34 @@ run();
Available methods +### [Alien SDK](docs/sdks/alien/README.md) + +* [getWorkspaceInvitationPreview](docs/sdks/alien/README.md#getworkspaceinvitationpreview) +* [acceptWorkspaceInvitation](docs/sdks/alien/README.md#acceptworkspaceinvitation) +* [listWorkspaceInvitations](docs/sdks/alien/README.md#listworkspaceinvitations) +* [createWorkspaceInvitation](docs/sdks/alien/README.md#createworkspaceinvitation) +* [resendWorkspaceInvitation](docs/sdks/alien/README.md#resendworkspaceinvitation) +* [revokeWorkspaceInvitation](docs/sdks/alien/README.md#revokeworkspaceinvitation) +* [getWorkspaceInviteLink](docs/sdks/alien/README.md#getworkspaceinvitelink) +* [createWorkspaceInviteLink](docs/sdks/alien/README.md#createworkspaceinvitelink) +* [revokeWorkspaceInviteLink](docs/sdks/alien/README.md#revokeworkspaceinvitelink) +* [listAwsVirtualKeys](docs/sdks/alien/README.md#listawsvirtualkeys) +* [createAwsVirtualKey](docs/sdks/alien/README.md#createawsvirtualkey) +* [rotateAwsVirtualKeyCredential](docs/sdks/alien/README.md#rotateawsvirtualkeycredential) +* [restoreAwsVirtualKey](docs/sdks/alien/README.md#restoreawsvirtualkey) +* [finalizeAwsVirtualKeyDeletion](docs/sdks/alien/README.md#finalizeawsvirtualkeydeletion) +* [decommissionAwsVirtualKey](docs/sdks/alien/README.md#decommissionawsvirtualkey) +* [getAwsVirtualKey](docs/sdks/alien/README.md#getawsvirtualkey) +* [continueAwsVirtualKey](docs/sdks/alien/README.md#continueawsvirtualkey) + +### [AgentSessions](docs/sdks/agentsessions/README.md) + +* [list](docs/sdks/agentsessions/README.md#list) - List ai-agent monitor sessions for this workspace. Newest first, capped at 50. +* [get](docs/sdks/agentsessions/README.md#get) - Retrieve one ai-agent monitor session by id. +* [events](docs/sdks/agentsessions/README.md#events) - 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. +* [approve](docs/sdks/agentsessions/README.md#approve) - 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. +* [stop](docs/sdks/agentsessions/README.md#stop) - 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. + ### [ApiKeys](docs/sdks/apikeys/README.md) * [list](docs/sdks/apikeys/README.md#list) - Retrieve all API keys for the current workspace. @@ -168,6 +200,7 @@ run(); ### [Commands](docs/sdks/commands/README.md) +* [bootstrap](docs/sdks/commands/README.md#bootstrap) - Resolve a deployment's current manager and mint a five-minute command capability. Sender tokens can dispatch and observe commands only for this deployment. Receiver tokens can lease and complete commands only for the resolved Container or Daemon target. * [list](docs/sdks/commands/README.md#list) - Retrieve commands. Use for dashboard analytics and command history. * [create](docs/sdks/commands/README.md#create) - Create command metadata. Called by manager when processing commands. Returns project info for routing decisions. * [listNames](docs/sdks/commands/README.md#listnames) - List distinct command names. Use for filter dropdowns in the dashboard. @@ -179,6 +212,19 @@ run(); * [complete](docs/sdks/commands/README.md#complete) - Atomically transition a command to a terminal state (SUCCEEDED, FAILED, or EXPIRED) unless it is already terminal. Returns whether the transition was applied. * [incrementAttempt](docs/sdks/commands/README.md#incrementattempt) - Atomically increment the command's attempt counter and return the new value. +### [ContainerRegistry](docs/sdks/containerregistry/README.md) + +* [getContainerRegistry](docs/sdks/containerregistry/README.md#getcontainerregistry) +* [putContainerRegistry](docs/sdks/containerregistry/README.md#putcontainerregistry) +* [createContainerRegistryRepository](docs/sdks/containerregistry/README.md#createcontainerregistryrepository) +* [createContainerRegistryCredential](docs/sdks/containerregistry/README.md#createcontainerregistrycredential) +* [revokeContainerRegistryCredential](docs/sdks/containerregistry/README.md#revokecontainerregistrycredential) +* [deleteContainerRegistryRepository](docs/sdks/containerregistry/README.md#deletecontainerregistryrepository) +* [verifyContainerRegistry](docs/sdks/containerregistry/README.md#verifycontainerregistry) +* [revokeContainerRegistry](docs/sdks/containerregistry/README.md#revokecontainerregistry) +* [getContainerRegistryManagerSnapshot](docs/sdks/containerregistry/README.md#getcontainerregistrymanagersnapshot) +* [applyContainerRegistryManagerSnapshot](docs/sdks/containerregistry/README.md#applycontainerregistrymanagersnapshot) + ### [DebugSessions](docs/sdks/debugsessions/README.md) * [list](docs/sdks/debugsessions/README.md#list) - Retrieve debug sessions for dashboard audit. Filters: project, deployment, state, mode. @@ -197,11 +243,17 @@ run(); * [createDeploymentGroup](docs/sdks/deploymentgroups/README.md#createdeploymentgroup) - Create a new deployment group * [listDeploymentGroups](docs/sdks/deploymentgroups/README.md#listdeploymentgroups) - List deployment groups * [ensureDeploymentGroupByName](docs/sdks/deploymentgroups/README.md#ensuredeploymentgroupbyname) - Get or create a deployment group by project and name +* [ensureDeploymentGroupByExternalId](docs/sdks/deploymentgroups/README.md#ensuredeploymentgroupbyexternalid) - Get or create a deployment group by project and external ID +* [getDeploymentGroupByExternalId](docs/sdks/deploymentgroups/README.md#getdeploymentgroupbyexternalid) - Get a deployment group by project and external ID * [getDeploymentGroup](docs/sdks/deploymentgroups/README.md#getdeploymentgroup) - Get deployment group details * [updateDeploymentGroup](docs/sdks/deploymentgroups/README.md#updatedeploymentgroup) - Update deployment group * [deleteDeploymentGroup](docs/sdks/deploymentgroups/README.md#deletedeploymentgroup) - Delete deployment group +* [setDeploymentGroupExternalId](docs/sdks/deploymentgroups/README.md#setdeploymentgroupexternalid) - Set or clear a deployment group's external ID * [createDeploymentGroupToken](docs/sdks/deploymentgroups/README.md#createdeploymentgrouptoken) - Create deployment group token * [createFirstPartyDeploymentSession](docs/sdks/deploymentgroups/README.md#createfirstpartydeploymentsession) - Create first-party deployment session +* [getExternalAIBinding](docs/sdks/deploymentgroups/README.md#getexternalaibinding) - Get external AI connection state +* [putExternalAIBinding](docs/sdks/deploymentgroups/README.md#putexternalaibinding) - Connect or rotate an external AI provider key +* [deleteExternalAIBinding](docs/sdks/deploymentgroups/README.md#deleteexternalaibinding) - Revoke the external AI connection ### [Deployments](docs/sdks/deployments/README.md) @@ -219,6 +271,7 @@ run(); * [delete](docs/sdks/deployments/README.md#delete) - Delete, detach, or forget a deployment by ID. * [redeploy](docs/sdks/deployments/README.md#redeploy) - Redeploy a running deployment with the same release and fresh environment variables. Sets status to update-pending. * [pinRelease](docs/sdks/deployments/README.md#pinrelease) - Pin or unpin a running or runtime-failed deployment. Running deployments start an update; failed deployments retry toward the selected release. +* [setReleaseChannel](docs/sdks/deployments/README.md#setreleasechannel) * [retry](docs/sdks/deployments/README.md#retry) - Retry a failed deployment operation. Uses alien-infra's retry mechanisms to resume from exact failure point. * [getInputs](docs/sdks/deployments/README.md#getinputs) - Get the active input definitions and current non-secret values for a deployment. * [updateInputs](docs/sdks/deployments/README.md#updateinputs) - Update runtime stack inputs, rebuild their environment-variable mappings, and request a deployment update when runtime configuration changes. @@ -266,10 +319,24 @@ run(); * [update](docs/sdks/managers/README.md#update) - Update a manager to a specific release ID or active release. * [listEvents](docs/sdks/managers/README.md#listevents) - Retrieve all events of a manager. * [generateManagerToken](docs/sdks/managers/README.md#generatemanagertoken) - 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. +* [generateManagerBindingToken](docs/sdks/managers/README.md#generatemanagerbindingtoken) - Generate a short-lived deployment-scoped token for resolving opted-in remote bindings through the currently assigned manager. * [resolveGcpOAuthProvider](docs/sdks/managers/README.md#resolvegcpoauthprovider) - Resolve decrypted project-level Google Cloud OAuth provider settings for a manager-side deployment bootstrap. * [reportHeartbeat](docs/sdks/managers/README.md#reportheartbeat) - Report Manager health status and metrics. * [getDeployment](docs/sdks/managers/README.md#getdeployment) - Get deployment details for a private manager (internal deployment platform, status, resources). +### [Operations](docs/sdks/operations/README.md) + +* [listPlugins](docs/sdks/operations/README.md#listplugins) - List available operations plugins (builtin + custom) for a project, with their operations and risk tiers. +* [publishPlugin](docs/sdks/operations/README.md#publishplugin) - Register a custom operations plugin whose bundle ZIP has already been uploaded to S3 (see POST /plugins/upload-url). Replaces any existing plugin of the same name in that project. New custom plugins are enabled by default. +* [createBundleUploadUrl](docs/sdks/operations/README.md#createbundleuploadurl) - Get a presigned S3 URL to upload a custom operations plugin bundle ZIP. Upload the ZIP with a PUT to the returned url (sending the given Content-Type), then call POST /plugins to register it. +* [setPluginEnabled](docs/sdks/operations/README.md#setpluginenabled) - Enable or disable an operations plugin (builtin or custom) for a project. Only enabled plugins are baked into the operator image and can be invoked. +* [getPolicy](docs/sdks/operations/README.md#getpolicy) - Get a project's per-command approval policy. Mirrors what the operator enforces: `plugin/operation` / `plugin/*` / `*` patterns → auto | manual. +* [updatePolicy](docs/sdks/operations/README.md#updatepolicy) - Replace a project's per-command approval policy (full rule set). Patterns are `plugin/operation`, `plugin/*`, or `*`; each maps to auto | manual. +* [invoke](docs/sdks/operations/README.md#invoke) - Invoke a plugin operation against a deployment. Honors the project's per-command approval policy. +* [createAccessRequest](docs/sdks/operations/README.md#createaccessrequest) - Create a pending access request covering a remediation plan's commands. Awaits the engineer gate before it is queued for the operator. +* [queueAccessRequest](docs/sdks/operations/README.md#queueaccessrequest) - Engineer gate — approve a pending access request, queuing it for the operator to materialize. Records who queued it. +* [getAccessRequestCoordinates](docs/sdks/operations/README.md#getaccessrequestcoordinates) - The customer's kubectl approve command for a queued access request, or null until the operator has materialized the grant CR and reported its coordinates. Polled by the Slack handler to update the access-plan card. + ### [OperatorManifests](docs/sdks/operatormanifests/README.md) * [prepareOperatorManifestPackage](docs/sdks/operatormanifests/README.md#prepareoperatormanifestpackage) - Prepare the white-labeled Operator image for an Operate install @@ -291,11 +358,26 @@ run(); * [delete](docs/sdks/projects/README.md#delete) - Delete a project. The project must have no deployments. * [getGcpOAuthProvider](docs/sdks/projects/README.md#getgcpoauthprovider) - Retrieve redacted project-level Google Cloud OAuth provider settings. * [updateGcpOAuthProvider](docs/sdks/projects/README.md#updategcpoauthprovider) - Update project-level Google Cloud OAuth provider settings. +* [configureSource](docs/sdks/projects/README.md#configuresource) - Connect a GitHub repository or Alien template to an existing project and configure its release workflow. * [getDeploymentPortalDomain](docs/sdks/projects/README.md#getdeploymentportaldomain) - Get the deployment portal domain binding for a project. * [createFromTemplate](docs/sdks/projects/README.md#createfromtemplate) - Create a project by forking alienplatform/alien into your namespace, then configuring GitHub Actions. * [getTemplateUrls](docs/sdks/projects/README.md#gettemplateurls) - Get template URLs for deploying setup stacks in this project. * [getDeploymentLinkSetup](docs/sdks/projects/README.md#getdeploymentlinksetup) - Get the active release stack and portal-visible setup availability for deployment-link configuration. -* [getActiveRelease](docs/sdks/projects/README.md#getactiverelease) - 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. +* [getActiveRelease](docs/sdks/projects/README.md#getactiverelease) - Get the production channel's current release. When deploymentId is provided, returns that deployment's effective release: its pin, or its followed channel's current release. +* [setCapabilities](docs/sdks/projects/README.md#setcapabilities) - Set the capabilities offered by a Project. Removing a capability prevents new setup without deleting existing customer resources. +* [configureDeployments](docs/sdks/projects/README.md#configuredeployments) - Enable deployments for a Project. +* [configureModels](docs/sdks/projects/README.md#configuremodels) - Configure customer-owned model providers without requiring an application Release. +* [configureKeys](docs/sdks/projects/README.md#configurekeys) - Enable customer-owned application encryption without requiring an application Release. +* [configureBuckets](docs/sdks/projects/README.md#configurebuckets) - Enable buckets without requiring a project Release. +* [configureRegistry](docs/sdks/projects/README.md#configureregistry) - Enable customer-owned container registries without requiring an application Release. +* [getCapabilityOverview](docs/sdks/projects/README.md#getcapabilityoverview) - Get safe, server-derived capability status for a Project. +* [getAiUsage](docs/sdks/projects/README.md#getaiusage) + +### [ReleaseChannels](docs/sdks/releasechannels/README.md) + +* [list](docs/sdks/releasechannels/README.md#list) - List release channels +* [create](docs/sdks/releasechannels/README.md#create) - Create a release channel +* [delete](docs/sdks/releasechannels/README.md#delete) - Delete a release channel ### [Releases](docs/sdks/releases/README.md) @@ -304,6 +386,12 @@ run(); * [listBranches](docs/sdks/releases/README.md#listbranches) - List distinct git branches across releases. Used for filter dropdowns. * [listAuthors](docs/sdks/releases/README.md#listauthors) - List distinct commit authors across releases. Used for filter dropdowns. * [get](docs/sdks/releases/README.md#get) - Retrieve a release by ID. +* [listDeployments](docs/sdks/releases/README.md#listdeployments) - List the project's deployments with their rollout state relative to this release. +* [promote](docs/sdks/releases/README.md#promote) + +### [RemoteBindings](docs/sdks/remotebindings/README.md) + +* [createExternalAccess](docs/sdks/remotebindings/README.md#createexternalaccess) - Create short-lived Remote Bindings access for a external resource ### [Resolve](docs/sdks/resolve/README.md) @@ -316,12 +404,25 @@ run(); * [listDeployments](docs/sdks/resources/README.md#listdeployments) * [getDeploymentDetail](docs/sdks/resources/README.md#getdeploymentdetail) +### [SetupLinks](docs/sdks/setuplinks/README.md) + +* [create](docs/sdks/setuplinks/README.md#create) - Create a customer setup link + +### [SlackIntegration](docs/sdks/slackintegration/README.md) + +* [installUrl](docs/sdks/slackintegration/README.md#installurl) - Generate the Slack OAuth consent URL for this workspace. +* [status](docs/sdks/slackintegration/README.md#status) - Return the Slack install for this workspace (if any). +* [listChannels](docs/sdks/slackintegration/README.md#listchannels) - List public Slack channels for this workspace's install. Used by the dashboard's notification-channel picker. +* [setNotificationChannel](docs/sdks/slackintegration/README.md#setnotificationchannel) - Configure which Slack channel receives ai-agent monitor reports. +* [uninstall](docs/sdks/slackintegration/README.md#uninstall) - Uninstall the Slack integration for this workspace. Revokes the bot token at Slack and deletes the row. + ### [Sync](docs/sdks/sync/README.md) * [list](docs/sdks/sync/README.md#list) - List full deployment records for manager operational loops. This endpoint is intentionally separate from the public deployments list, which returns lightweight UI rows. * [context](docs/sdks/sync/README.md#context) - Get computed deployment state and configuration for a manager-side operation without acquiring the deployment reconciliation lock. * [acquire](docs/sdks/sync/README.md#acquire) - 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. * [reconcile](docs/sdks/sync/README.md#reconcile) - 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. +* [renew](docs/sdks/sync/README.md#renew) * [release](docs/sdks/sync/README.md#release) - Release a deployment lock. Must be called after processing an acquired deployment, even if processing failed. This is critical to avoid deadlocks. ### [User](docs/sdks/user/README.md) @@ -346,6 +447,8 @@ run(); * [updateMember](docs/sdks/workspaces/README.md#updatemember) - Update a workspace member's role. * [removeMember](docs/sdks/workspaces/README.md#removemember) - Remove a member from a workspace. * [dismissOnboarding](docs/sdks/workspaces/README.md#dismissonboarding) - 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. +* [getSettings](docs/sdks/workspaces/README.md#getsettings) - Read the ai-agent settings for a workspace. Returns defaults (`enabled: true`, `debugPermissionMode: auto`) when the workspace has never customized them. +* [updateSettings](docs/sdks/workspaces/README.md#updatesettings) - 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).
@@ -365,6 +468,12 @@ To read more about standalone functions, check [FUNCTIONS.md](./FUNCTIONS.md). Available standalone functions +- [`acceptWorkspaceInvitation`](docs/sdks/alien/README.md#acceptworkspaceinvitation) +- [`agentSessionsApprove`](docs/sdks/agentsessions/README.md#approve) - 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. +- [`agentSessionsEvents`](docs/sdks/agentsessions/README.md#events) - 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. +- [`agentSessionsGet`](docs/sdks/agentsessions/README.md#get) - Retrieve one ai-agent monitor session by id. +- [`agentSessionsList`](docs/sdks/agentsessions/README.md#list) - List ai-agent monitor sessions for this workspace. Newest first, capped at 50. +- [`agentSessionsStop`](docs/sdks/agentsessions/README.md#stop) - 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. - [`apiKeysCreate`](docs/sdks/apikeys/README.md#create) - Create a new API key. - [`apiKeysDeleteMultiple`](docs/sdks/apikeys/README.md#deletemultiple) - Permanently delete multiple API keys. - [`apiKeysGet`](docs/sdks/apikeys/README.md#get) - Retrieve a specific API key. @@ -375,6 +484,7 @@ To read more about standalone functions, check [FUNCTIONS.md](./FUNCTIONS.md). - [`billingGetEntitlements`](docs/sdks/billing/README.md#getentitlements) - 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. - [`billingListAuditLog`](docs/sdks/billing/README.md#listauditlog) - List billing activity entries for the current workspace. - [`cloudRegionsGet`](docs/sdks/cloudregions/README.md#get) - Get cloud regions supported by this Alien environment. +- [`commandsBootstrap`](docs/sdks/commands/README.md#bootstrap) - Resolve a deployment's current manager and mint a five-minute command capability. Sender tokens can dispatch and observe commands only for this deployment. Receiver tokens can lease and complete commands only for the resolved Container or Daemon target. - [`commandsComplete`](docs/sdks/commands/README.md#complete) - Atomically transition a command to a terminal state (SUCCEEDED, FAILED, or EXPIRED) unless it is already terminal. Returns whether the transition was applied. - [`commandsCreate`](docs/sdks/commands/README.md#create) - Create command metadata. Called by manager when processing commands. Returns project info for routing decisions. - [`commandsDispatch`](docs/sdks/commands/README.md#dispatch) - Atomically mark a command DISPATCHED unless it is already terminal. Returns whether the transition was applied. @@ -385,18 +495,39 @@ To read more about standalone functions, check [FUNCTIONS.md](./FUNCTIONS.md). - [`commandsListNames`](docs/sdks/commands/README.md#listnames) - List distinct command names. Use for filter dropdowns in the dashboard. - [`commandsResolveTarget`](docs/sdks/commands/README.md#resolvetarget) - 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. - [`commandsUpdate`](docs/sdks/commands/README.md#update) - Update command state. Called by manager when command is dispatched or completes. +- [`containerRegistryApplyContainerRegistryManagerSnapshot`](docs/sdks/containerregistry/README.md#applycontainerregistrymanagersnapshot) +- [`containerRegistryCreateContainerRegistryCredential`](docs/sdks/containerregistry/README.md#createcontainerregistrycredential) +- [`containerRegistryCreateContainerRegistryRepository`](docs/sdks/containerregistry/README.md#createcontainerregistryrepository) +- [`containerRegistryDeleteContainerRegistryRepository`](docs/sdks/containerregistry/README.md#deletecontainerregistryrepository) +- [`containerRegistryGetContainerRegistry`](docs/sdks/containerregistry/README.md#getcontainerregistry) +- [`containerRegistryGetContainerRegistryManagerSnapshot`](docs/sdks/containerregistry/README.md#getcontainerregistrymanagersnapshot) +- [`containerRegistryPutContainerRegistry`](docs/sdks/containerregistry/README.md#putcontainerregistry) +- [`containerRegistryRevokeContainerRegistry`](docs/sdks/containerregistry/README.md#revokecontainerregistry) +- [`containerRegistryRevokeContainerRegistryCredential`](docs/sdks/containerregistry/README.md#revokecontainerregistrycredential) +- [`containerRegistryVerifyContainerRegistry`](docs/sdks/containerregistry/README.md#verifycontainerregistry) +- [`continueAwsVirtualKey`](docs/sdks/alien/README.md#continueawsvirtualkey) +- [`createAwsVirtualKey`](docs/sdks/alien/README.md#createawsvirtualkey) +- [`createWorkspaceInvitation`](docs/sdks/alien/README.md#createworkspaceinvitation) +- [`createWorkspaceInviteLink`](docs/sdks/alien/README.md#createworkspaceinvitelink) - [`debugSessionsCreate`](docs/sdks/debugsessions/README.md#create) - Create a debug-session audit row. Called by the manager when a pull or push debug tunnel is opened. Workspace + project derived from deployment. - [`debugSessionsGet`](docs/sdks/debugsessions/README.md#get) - Retrieve a debug session by ID. - [`debugSessionsList`](docs/sdks/debugsessions/README.md#list) - Retrieve debug sessions for dashboard audit. Filters: project, deployment, state, mode. - [`debugSessionsUpdate`](docs/sdks/debugsessions/README.md#update) - Update debug-session state. Called by manager on tunnel attach, close, or deadline expiry. +- [`decommissionAwsVirtualKey`](docs/sdks/alien/README.md#decommissionawsvirtualkey) - [`deploymentGetInfo`](docs/sdks/deployment/README.md#getinfo) - Get deployment information for the deployment portal. Accepts both deployment-scoped and deployment-group-scoped API keys. Returns project information, package status/outputs, and either deployment or deployment group details depending on the token type. Poll this endpoint to check if packages are ready. - [`deploymentGroupsCreateDeploymentGroup`](docs/sdks/deploymentgroups/README.md#createdeploymentgroup) - Create a new deployment group - [`deploymentGroupsCreateDeploymentGroupToken`](docs/sdks/deploymentgroups/README.md#createdeploymentgrouptoken) - Create deployment group token - [`deploymentGroupsCreateFirstPartyDeploymentSession`](docs/sdks/deploymentgroups/README.md#createfirstpartydeploymentsession) - Create first-party deployment session - [`deploymentGroupsDeleteDeploymentGroup`](docs/sdks/deploymentgroups/README.md#deletedeploymentgroup) - Delete deployment group +- [`deploymentGroupsDeleteExternalAIBinding`](docs/sdks/deploymentgroups/README.md#deleteexternalaibinding) - Revoke the external AI connection +- [`deploymentGroupsEnsureDeploymentGroupByExternalId`](docs/sdks/deploymentgroups/README.md#ensuredeploymentgroupbyexternalid) - Get or create a deployment group by project and external ID - [`deploymentGroupsEnsureDeploymentGroupByName`](docs/sdks/deploymentgroups/README.md#ensuredeploymentgroupbyname) - Get or create a deployment group by project and name - [`deploymentGroupsGetDeploymentGroup`](docs/sdks/deploymentgroups/README.md#getdeploymentgroup) - Get deployment group details +- [`deploymentGroupsGetDeploymentGroupByExternalId`](docs/sdks/deploymentgroups/README.md#getdeploymentgroupbyexternalid) - Get a deployment group by project and external ID +- [`deploymentGroupsGetExternalAIBinding`](docs/sdks/deploymentgroups/README.md#getexternalaibinding) - Get external AI connection state - [`deploymentGroupsListDeploymentGroups`](docs/sdks/deploymentgroups/README.md#listdeploymentgroups) - List deployment groups +- [`deploymentGroupsPutExternalAIBinding`](docs/sdks/deploymentgroups/README.md#putexternalaibinding) - Connect or rotate an external AI provider key +- [`deploymentGroupsSetDeploymentGroupExternalId`](docs/sdks/deploymentgroups/README.md#setdeploymentgroupexternalid) - Set or clear a deployment group's external ID - [`deploymentGroupsUpdateDeploymentGroup`](docs/sdks/deploymentgroups/README.md#updatedeploymentgroup) - Update deployment group - [`deploymentPlanCompute`](docs/sdks/deployment/README.md#plancompute) - Plan deployment compute for the active release before stack preparation. The response contains recommended machine and scale choices for cloud compute pools. - [`deploymentPrepareStack`](docs/sdks/deployment/README.md#preparestack) - Prepare the active release stack for a deployment portal setup session. The response contains the generated stack shape plus setup compatibility metadata. @@ -417,6 +548,7 @@ To read more about standalone functions, check [FUNCTIONS.md](./FUNCTIONS.md). - [`deploymentsRedeploy`](docs/sdks/deployments/README.md#redeploy) - Redeploy a running deployment with the same release and fresh environment variables. Sets status to update-pending. - [`deploymentsRetry`](docs/sdks/deployments/README.md#retry) - Retry a failed deployment operation. Uses alien-infra's retry mechanisms to resume from exact failure point. - [`deploymentsSetFirstPartyDeploymentInputs`](docs/sdks/deployments/README.md#setfirstpartydeploymentinputs) - Store operator-provided input values on a first-party deployment session token so CLI/local deploys apply them. +- [`deploymentsSetReleaseChannel`](docs/sdks/deployments/README.md#setreleasechannel) - [`deploymentsUpdateEnvironmentVariables`](docs/sdks/deployments/README.md#updateenvironmentvariables) - Update a deployment's environment variables. If the deployment is running and not locked, the status will be changed to update-pending to trigger a deployment. - [`deploymentsUpdateInputs`](docs/sdks/deployments/README.md#updateinputs) - Update runtime stack inputs, rebuild their environment-variable mappings, and request a deployment update when runtime configuration changes. - [`domainsCreate`](docs/sdks/domains/README.md#create) - Create a workspace domain and optional initial endpoints. @@ -427,6 +559,12 @@ To read more about standalone functions, check [FUNCTIONS.md](./FUNCTIONS.md). - [`domainsRefresh`](docs/sdks/domains/README.md#refresh) - Refresh workspace domain verification. - [`eventsGet`](docs/sdks/events/README.md#get) - Retrieve an event by ID. - [`eventsList`](docs/sdks/events/README.md#list) - Retrieve all events. +- [`finalizeAwsVirtualKeyDeletion`](docs/sdks/alien/README.md#finalizeawsvirtualkeydeletion) +- [`getAwsVirtualKey`](docs/sdks/alien/README.md#getawsvirtualkey) +- [`getWorkspaceInvitationPreview`](docs/sdks/alien/README.md#getworkspaceinvitationpreview) +- [`getWorkspaceInviteLink`](docs/sdks/alien/README.md#getworkspaceinvitelink) +- [`listAwsVirtualKeys`](docs/sdks/alien/README.md#listawsvirtualkeys) +- [`listWorkspaceInvitations`](docs/sdks/alien/README.md#listworkspaceinvitations) - [`machinesCancelMachineDrain`](docs/sdks/machines/README.md#cancelmachinedrain) - [`machinesCreateJoinToken`](docs/sdks/machines/README.md#createjointoken) - [`machinesDrainMachine`](docs/sdks/machines/README.md#drainmachine) @@ -438,6 +576,7 @@ To read more about standalone functions, check [FUNCTIONS.md](./FUNCTIONS.md). - [`managersCancelSetup`](docs/sdks/managers/README.md#cancelsetup) - Cancel pending private-manager setup, revoke setup/runtime tokens, and remove the undeployed manager record. - [`managersCreate`](docs/sdks/managers/README.md#create) - Create a new manager. - [`managersDelete`](docs/sdks/managers/README.md#delete) - Delete a manager by ID. +- [`managersGenerateManagerBindingToken`](docs/sdks/managers/README.md#generatemanagerbindingtoken) - Generate a short-lived deployment-scoped token for resolving opted-in remote bindings through the currently assigned manager. - [`managersGenerateManagerToken`](docs/sdks/managers/README.md#generatemanagertoken) - 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. - [`managersGet`](docs/sdks/managers/README.md#get) - Retrieve a manager by ID. - [`managersGetDeployment`](docs/sdks/managers/README.md#getdeployment) - Get deployment details for a private manager (internal deployment platform, status, resources). @@ -452,39 +591,76 @@ To read more about standalone functions, check [FUNCTIONS.md](./FUNCTIONS.md). - [`managersRetrySetup`](docs/sdks/managers/README.md#retrysetup) - Revoke previous private-manager setup tokens and issue a fresh setup token/config. - [`managersUpdate`](docs/sdks/managers/README.md#update) - Update a manager to a specific release ID or active release. - [`managersUpdateDomainBinding`](docs/sdks/managers/README.md#updatedomainbinding) - Create, update, or remove the custom domain binding for a private manager. +- [`operationsCreateAccessRequest`](docs/sdks/operations/README.md#createaccessrequest) - Create a pending access request covering a remediation plan's commands. Awaits the engineer gate before it is queued for the operator. +- [`operationsCreateBundleUploadUrl`](docs/sdks/operations/README.md#createbundleuploadurl) - Get a presigned S3 URL to upload a custom operations plugin bundle ZIP. Upload the ZIP with a PUT to the returned url (sending the given Content-Type), then call POST /plugins to register it. +- [`operationsGetAccessRequestCoordinates`](docs/sdks/operations/README.md#getaccessrequestcoordinates) - The customer's kubectl approve command for a queued access request, or null until the operator has materialized the grant CR and reported its coordinates. Polled by the Slack handler to update the access-plan card. +- [`operationsGetPolicy`](docs/sdks/operations/README.md#getpolicy) - Get a project's per-command approval policy. Mirrors what the operator enforces: `plugin/operation` / `plugin/*` / `*` patterns → auto | manual. +- [`operationsInvoke`](docs/sdks/operations/README.md#invoke) - Invoke a plugin operation against a deployment. Honors the project's per-command approval policy. +- [`operationsListPlugins`](docs/sdks/operations/README.md#listplugins) - List available operations plugins (builtin + custom) for a project, with their operations and risk tiers. +- [`operationsPublishPlugin`](docs/sdks/operations/README.md#publishplugin) - Register a custom operations plugin whose bundle ZIP has already been uploaded to S3 (see POST /plugins/upload-url). Replaces any existing plugin of the same name in that project. New custom plugins are enabled by default. +- [`operationsQueueAccessRequest`](docs/sdks/operations/README.md#queueaccessrequest) - Engineer gate — approve a pending access request, queuing it for the operator to materialize. Records who queued it. +- [`operationsSetPluginEnabled`](docs/sdks/operations/README.md#setpluginenabled) - Enable or disable an operations plugin (builtin or custom) for a project. Only enabled plugins are baked into the operator image and can be invoked. +- [`operationsUpdatePolicy`](docs/sdks/operations/README.md#updatepolicy) - Replace a project's per-command approval policy (full rule set). Patterns are `plugin/operation`, `plugin/*`, or `*`; each maps to auto | manual. - [`operatorManifestsPrepareOperatorManifestPackage`](docs/sdks/operatormanifests/README.md#prepareoperatormanifestpackage) - Prepare the white-labeled Operator image for an Operate install - [`operatorManifestsRenderOperatorManifest`](docs/sdks/operatormanifests/README.md#renderoperatormanifest) - Render a Kubernetes Operator manifest - [`packagesCancel`](docs/sdks/packages/README.md#cancel) - Cancel a pending or building package. - [`packagesGet`](docs/sdks/packages/README.md#get) - Get details of a specific package. - [`packagesList`](docs/sdks/packages/README.md#list) - List packages with optional filters. Returns packages ordered by creation date (newest first). - [`packagesRebuild`](docs/sdks/packages/README.md#rebuild) - Rebuild packages for a project. This will cancel any pending packages and create new ones with auto-incremented versions. +- [`projectsConfigureBuckets`](docs/sdks/projects/README.md#configurebuckets) - Enable buckets without requiring a project Release. +- [`projectsConfigureDeployments`](docs/sdks/projects/README.md#configuredeployments) - Enable deployments for a Project. +- [`projectsConfigureKeys`](docs/sdks/projects/README.md#configurekeys) - Enable customer-owned application encryption without requiring an application Release. +- [`projectsConfigureModels`](docs/sdks/projects/README.md#configuremodels) - Configure customer-owned model providers without requiring an application Release. +- [`projectsConfigureRegistry`](docs/sdks/projects/README.md#configureregistry) - Enable customer-owned container registries without requiring an application Release. +- [`projectsConfigureSource`](docs/sdks/projects/README.md#configuresource) - Connect a GitHub repository or Alien template to an existing project and configure its release workflow. - [`projectsCreate`](docs/sdks/projects/README.md#create) - Create a new project. - [`projectsCreateFromTemplate`](docs/sdks/projects/README.md#createfromtemplate) - Create a project by forking alienplatform/alien into your namespace, then configuring GitHub Actions. - [`projectsDelete`](docs/sdks/projects/README.md#delete) - Delete a project. The project must have no deployments. - [`projectsGet`](docs/sdks/projects/README.md#get) - Retrieve a project by ID or name. -- [`projectsGetActiveRelease`](docs/sdks/projects/README.md#getactiverelease) - 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. +- [`projectsGetActiveRelease`](docs/sdks/projects/README.md#getactiverelease) - Get the production channel's current release. When deploymentId is provided, returns that deployment's effective release: its pin, or its followed channel's current release. +- [`projectsGetAiUsage`](docs/sdks/projects/README.md#getaiusage) +- [`projectsGetCapabilityOverview`](docs/sdks/projects/README.md#getcapabilityoverview) - Get safe, server-derived capability status for a Project. - [`projectsGetDeploymentLinkSetup`](docs/sdks/projects/README.md#getdeploymentlinksetup) - Get the active release stack and portal-visible setup availability for deployment-link configuration. - [`projectsGetDeploymentPortalDomain`](docs/sdks/projects/README.md#getdeploymentportaldomain) - Get the deployment portal domain binding for a project. - [`projectsGetGcpOAuthProvider`](docs/sdks/projects/README.md#getgcpoauthprovider) - Retrieve redacted project-level Google Cloud OAuth provider settings. - [`projectsGetTemplateUrls`](docs/sdks/projects/README.md#gettemplateurls) - Get template URLs for deploying setup stacks in this project. - [`projectsList`](docs/sdks/projects/README.md#list) - Retrieve all projects. +- [`projectsSetCapabilities`](docs/sdks/projects/README.md#setcapabilities) - Set the capabilities offered by a Project. Removing a capability prevents new setup without deleting existing customer resources. - [`projectsUpdate`](docs/sdks/projects/README.md#update) - Update a project. - [`projectsUpdateGcpOAuthProvider`](docs/sdks/projects/README.md#updategcpoauthprovider) - Update project-level Google Cloud OAuth provider settings. +- [`releaseChannelsCreate`](docs/sdks/releasechannels/README.md#create) - Create a release channel +- [`releaseChannelsDelete`](docs/sdks/releasechannels/README.md#delete) - Delete a release channel +- [`releaseChannelsList`](docs/sdks/releasechannels/README.md#list) - List release channels - [`releasesCreate`](docs/sdks/releases/README.md#create) - Create a new release. - [`releasesGet`](docs/sdks/releases/README.md#get) - Retrieve a release by ID. - [`releasesList`](docs/sdks/releases/README.md#list) - Retrieve all releases. - [`releasesListAuthors`](docs/sdks/releases/README.md#listauthors) - List distinct commit authors across releases. Used for filter dropdowns. - [`releasesListBranches`](docs/sdks/releases/README.md#listbranches) - List distinct git branches across releases. Used for filter dropdowns. +- [`releasesListDeployments`](docs/sdks/releases/README.md#listdeployments) - List the project's deployments with their rollout state relative to this release. +- [`releasesPromote`](docs/sdks/releases/README.md#promote) +- [`remoteBindingsCreateExternalAccess`](docs/sdks/remotebindings/README.md#createexternalaccess) - Create short-lived Remote Bindings access for a external resource +- [`resendWorkspaceInvitation`](docs/sdks/alien/README.md#resendworkspaceinvitation) - [`resolveResolve`](docs/sdks/resolve/README.md#resolve) - Resolve manager for a project and platform - [`resourcesGetDeploymentDetail`](docs/sdks/resources/README.md#getdeploymentdetail) - [`resourcesListDeployments`](docs/sdks/resources/README.md#listdeployments) - [`resourcesListInventory`](docs/sdks/resources/README.md#listinventory) - [`resourcesListOverview`](docs/sdks/resources/README.md#listoverview) +- [`restoreAwsVirtualKey`](docs/sdks/alien/README.md#restoreawsvirtualkey) +- [`revokeWorkspaceInvitation`](docs/sdks/alien/README.md#revokeworkspaceinvitation) +- [`revokeWorkspaceInviteLink`](docs/sdks/alien/README.md#revokeworkspaceinvitelink) +- [`rotateAwsVirtualKeyCredential`](docs/sdks/alien/README.md#rotateawsvirtualkeycredential) +- [`setupLinksCreate`](docs/sdks/setuplinks/README.md#create) - Create a customer setup link +- [`slackIntegrationInstallUrl`](docs/sdks/slackintegration/README.md#installurl) - Generate the Slack OAuth consent URL for this workspace. +- [`slackIntegrationListChannels`](docs/sdks/slackintegration/README.md#listchannels) - List public Slack channels for this workspace's install. Used by the dashboard's notification-channel picker. +- [`slackIntegrationSetNotificationChannel`](docs/sdks/slackintegration/README.md#setnotificationchannel) - Configure which Slack channel receives ai-agent monitor reports. +- [`slackIntegrationStatus`](docs/sdks/slackintegration/README.md#status) - Return the Slack install for this workspace (if any). +- [`slackIntegrationUninstall`](docs/sdks/slackintegration/README.md#uninstall) - Uninstall the Slack integration for this workspace. Revokes the bot token at Slack and deletes the row. - [`syncAcquire`](docs/sdks/sync/README.md#acquire) - 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. - [`syncContext`](docs/sdks/sync/README.md#context) - Get computed deployment state and configuration for a manager-side operation without acquiring the deployment reconciliation lock. - [`syncList`](docs/sdks/sync/README.md#list) - List full deployment records for manager operational loops. This endpoint is intentionally separate from the public deployments list, which returns lightweight UI rows. - [`syncReconcile`](docs/sdks/sync/README.md#reconcile) - 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. - [`syncRelease`](docs/sdks/sync/README.md#release) - Release a deployment lock. Must be called after processing an acquired deployment, even if processing failed. This is critical to avoid deadlocks. +- [`syncRenew`](docs/sdks/sync/README.md#renew) - [`userCompleteProfileSetup`](docs/sdks/user/README.md#completeprofilesetup) - Complete the required beta intake and profile setup dialog. - [`userCreateWorkspace`](docs/sdks/user/README.md#createworkspace) - Create a new workspace. The current user will be automatically added as an admin. - [`userGetProfile`](docs/sdks/user/README.md#getprofile) - Get the current user's profile and user-scoped onboarding state. @@ -497,11 +673,13 @@ To read more about standalone functions, check [FUNCTIONS.md](./FUNCTIONS.md). - [`workspacesDelete`](docs/sdks/workspaces/README.md#delete) - Delete a workspace. The workspace must have no projects. - [`workspacesDismissOnboarding`](docs/sdks/workspaces/README.md#dismissonboarding) - 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. - [`workspacesGet`](docs/sdks/workspaces/README.md#get) - Retrieve a workspace by ID. +- [`workspacesGetSettings`](docs/sdks/workspaces/README.md#getsettings) - Read the ai-agent settings for a workspace. Returns defaults (`enabled: true`, `debugPermissionMode: auto`) when the workspace has never customized them. - [`workspacesList`](docs/sdks/workspaces/README.md#list) - Retrieve all workspaces. - [`workspacesListMembers`](docs/sdks/workspaces/README.md#listmembers) - List all members of a workspace. - [`workspacesRemoveMember`](docs/sdks/workspaces/README.md#removemember) - Remove a member from a workspace. - [`workspacesUpdate`](docs/sdks/workspaces/README.md#update) - Update a workspace. - [`workspacesUpdateMember`](docs/sdks/workspaces/README.md#updatemember) - Update a workspace member's role. +- [`workspacesUpdateSettings`](docs/sdks/workspaces/README.md#updatesettings) - 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). @@ -520,7 +698,9 @@ const alien = new Alien({ }); async function run() { - const result = await alien.user.listMemberships({ + const result = await alien.getWorkspaceInvitationPreview({ + token: "", + }, { retries: { strategy: "backoff", backoff: { @@ -559,7 +739,9 @@ const alien = new Alien({ }); async function run() { - const result = await alien.user.listMemberships(); + const result = await alien.getWorkspaceInvitationPreview({ + token: "", + }); console.log(result); } @@ -594,7 +776,9 @@ const alien = new Alien({ async function run() { try { - const result = await alien.user.listMemberships(); + const result = await alien.getWorkspaceInvitationPreview({ + token: "", + }); console.log(result); } catch (error) { @@ -661,7 +845,9 @@ const alien = new Alien({ }); async function run() { - const result = await alien.user.listMemberships(); + const result = await alien.getWorkspaceInvitationPreview({ + token: "", + }); console.log(result); } diff --git a/client-sdks/platform/typescript/USAGE.md b/client-sdks/platform/typescript/USAGE.md index 662dae6d1..1ca445383 100644 --- a/client-sdks/platform/typescript/USAGE.md +++ b/client-sdks/platform/typescript/USAGE.md @@ -7,7 +7,9 @@ const alien = new Alien({ }); async function run() { - const result = await alien.user.listMemberships(); + const result = await alien.getWorkspaceInvitationPreview({ + token: "", + }); console.log(result); } diff --git a/client-sdks/platform/typescript/docs/models/acceptworkspaceinvitationresponse.md b/client-sdks/platform/typescript/docs/models/acceptworkspaceinvitationresponse.md new file mode 100644 index 000000000..e90666fc1 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/acceptworkspaceinvitationresponse.md @@ -0,0 +1,23 @@ +# AcceptWorkspaceInvitationResponse + +## Example Usage + +```typescript +import { AcceptWorkspaceInvitationResponse } from "@alienplatform/platform-api/models"; + +let value: AcceptWorkspaceInvitationResponse = { + outcome: "joined", + workspaceId: "ws_It13CUaGEhLLAB87simX0", + workspaceName: "", + role: "workspace.member", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `outcome` | [models.AcceptWorkspaceInvitationResponseOutcome](../models/acceptworkspaceinvitationresponseoutcome.md) | :heavy_check_mark: | N/A | | +| `workspaceId` | *string* | :heavy_check_mark: | Unique identifier for the workspace. | ws_It13CUaGEhLLAB87simX0 | +| `workspaceName` | *string* | :heavy_check_mark: | N/A | | +| `role` | [models.WorkspaceRole](../models/workspacerole.md) | :heavy_check_mark: | Role for workspace-scoped service accounts | workspace.member | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/acceptworkspaceinvitationresponseoutcome.md b/client-sdks/platform/typescript/docs/models/acceptworkspaceinvitationresponseoutcome.md new file mode 100644 index 000000000..e75b4a8e6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/acceptworkspaceinvitationresponseoutcome.md @@ -0,0 +1,15 @@ +# AcceptWorkspaceInvitationResponseOutcome + +## Example Usage + +```typescript +import { AcceptWorkspaceInvitationResponseOutcome } from "@alienplatform/platform-api/models"; + +let value: AcceptWorkspaceInvitationResponseOutcome = "joined"; +``` + +## Values + +```typescript +"joined" | "already-member" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/activerelease.md b/client-sdks/platform/typescript/docs/models/activerelease.md index 0c79a99c4..4fb3c8170 100644 --- a/client-sdks/platform/typescript/docs/models/activerelease.md +++ b/client-sdks/platform/typescript/docs/models/activerelease.md @@ -14,8 +14,8 @@ let value: ActiveRelease = { ## Fields -| Field | Type | Required | Description | Example | -| ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | -| `id` | *string* | :heavy_check_mark: | Unique identifier for the release. | rel_WbhQgksrawSKIpEN0NAssHX9 | -| `version` | *string* | :heavy_check_mark: | N/A | | -| `stack` | [models.StackByPlatform](../models/stackbyplatform.md) | :heavy_check_mark: | N/A | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the release. | rel_WbhQgksrawSKIpEN0NAssHX9 | +| `version` | *string* | :heavy_check_mark: | N/A | | +| `stack` | [models.DeploymentLinkSetupResponseStack](../models/deploymentlinksetupresponsestack.md) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/actor1.md b/client-sdks/platform/typescript/docs/models/actor1.md deleted file mode 100644 index 0e9771380..000000000 --- a/client-sdks/platform/typescript/docs/models/actor1.md +++ /dev/null @@ -1,22 +0,0 @@ -# Actor1 - -Authenticated principal that requested a deployment intent event. - -## Example Usage - -```typescript -import { Actor1 } from "@alienplatform/platform-api/models"; - -let value: Actor1 = { - id: "", - kind: "user", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -| `email` | *string* | :heavy_minus_sign: | User email when the principal is a user. | -| `id` | *string* | :heavy_check_mark: | Stable user or service-account identifier. | -| `kind` | [models.EventKind1](../models/eventkind1.md) | :heavy_check_mark: | Type of authenticated principal that requested an event. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/actor2.md b/client-sdks/platform/typescript/docs/models/actor2.md deleted file mode 100644 index f91675ae8..000000000 --- a/client-sdks/platform/typescript/docs/models/actor2.md +++ /dev/null @@ -1,22 +0,0 @@ -# Actor2 - -Authenticated principal that requested a deployment intent event. - -## Example Usage - -```typescript -import { Actor2 } from "@alienplatform/platform-api/models"; - -let value: Actor2 = { - id: "", - kind: "serviceAccount", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -| `email` | *string* | :heavy_minus_sign: | User email when the principal is a user. | -| `id` | *string* | :heavy_check_mark: | Stable user or service-account identifier. | -| `kind` | [models.EventKind2](../models/eventkind2.md) | :heavy_check_mark: | Type of authenticated principal that requested an event. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/actorunion1.md b/client-sdks/platform/typescript/docs/models/actorunion1.md deleted file mode 100644 index 829f8a3b0..000000000 --- a/client-sdks/platform/typescript/docs/models/actorunion1.md +++ /dev/null @@ -1,19 +0,0 @@ -# ActorUnion1 - - -## Supported Types - -### `models.Actor1` - -```typescript -const value: models.Actor1 = { - id: "", - kind: "user", -}; -``` - -### `any` - -```typescript -const value: any = ""; -``` diff --git a/client-sdks/platform/typescript/docs/models/actorunion2.md b/client-sdks/platform/typescript/docs/models/actorunion2.md deleted file mode 100644 index 99f7f3e89..000000000 --- a/client-sdks/platform/typescript/docs/models/actorunion2.md +++ /dev/null @@ -1,19 +0,0 @@ -# ActorUnion2 - - -## Supported Types - -### `models.Actor2` - -```typescript -const value: models.Actor2 = { - id: "", - kind: "serviceAccount", -}; -``` - -### `any` - -```typescript -const value: any = ""; -``` diff --git a/client-sdks/platform/typescript/docs/models/agentsessionapprovalgrantedevent.md b/client-sdks/platform/typescript/docs/models/agentsessionapprovalgrantedevent.md new file mode 100644 index 000000000..6d70e005a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/agentsessionapprovalgrantedevent.md @@ -0,0 +1,28 @@ +# AgentSessionApprovalGrantedEvent + +## Example Usage + +```typescript +import { AgentSessionApprovalGrantedEvent } from "@alienplatform/platform-api/models"; + +let value: AgentSessionApprovalGrantedEvent = { + seq: 2155.04, + createdAt: "1722031798553", + type: "approval_granted", + payload: { + approvalId: "", + approvedByUserId: "", + approvedByName: "", + source: "dashboard", + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | +| `seq` | *number* | :heavy_check_mark: | N/A | +| `createdAt` | *string* | :heavy_check_mark: | N/A | +| `type` | *"approval_granted"* | :heavy_check_mark: | N/A | +| `payload` | [models.AgentSessionApprovalGrantedEventPayload](../models/agentsessionapprovalgrantedeventpayload.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/agentsessionapprovalgrantedeventpayload.md b/client-sdks/platform/typescript/docs/models/agentsessionapprovalgrantedeventpayload.md new file mode 100644 index 000000000..c41485f05 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/agentsessionapprovalgrantedeventpayload.md @@ -0,0 +1,23 @@ +# AgentSessionApprovalGrantedEventPayload + +## Example Usage + +```typescript +import { AgentSessionApprovalGrantedEventPayload } from "@alienplatform/platform-api/models"; + +let value: AgentSessionApprovalGrantedEventPayload = { + approvalId: "", + approvedByUserId: "", + approvedByName: "", + source: "dashboard", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `approvalId` | *string* | :heavy_check_mark: | N/A | +| `approvedByUserId` | *string* | :heavy_check_mark: | N/A | +| `approvedByName` | *string* | :heavy_check_mark: | N/A | +| `source` | [models.AgentSessionApprovalGrantedEventSource](../models/agentsessionapprovalgrantedeventsource.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/agentsessionapprovalgrantedeventsource.md b/client-sdks/platform/typescript/docs/models/agentsessionapprovalgrantedeventsource.md new file mode 100644 index 000000000..e0193e2ec --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/agentsessionapprovalgrantedeventsource.md @@ -0,0 +1,15 @@ +# AgentSessionApprovalGrantedEventSource + +## Example Usage + +```typescript +import { AgentSessionApprovalGrantedEventSource } from "@alienplatform/platform-api/models"; + +let value: AgentSessionApprovalGrantedEventSource = "slack"; +``` + +## Values + +```typescript +"dashboard" | "slack" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/agentsessionapprovalrequestedevent.md b/client-sdks/platform/typescript/docs/models/agentsessionapprovalrequestedevent.md new file mode 100644 index 000000000..dd49cd7c4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/agentsessionapprovalrequestedevent.md @@ -0,0 +1,27 @@ +# AgentSessionApprovalRequestedEvent + +## Example Usage + +```typescript +import { AgentSessionApprovalRequestedEvent } from "@alienplatform/platform-api/models"; + +let value: AgentSessionApprovalRequestedEvent = { + seq: 8489.57, + createdAt: "1727488365811", + type: "approval_requested", + payload: { + approvalId: "", + toolCallId: "", + toolName: "", + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | +| `seq` | *number* | :heavy_check_mark: | N/A | +| `createdAt` | *string* | :heavy_check_mark: | N/A | +| `type` | *"approval_requested"* | :heavy_check_mark: | N/A | +| `payload` | [models.AgentSessionApprovalRequestedEventPayload](../models/agentsessionapprovalrequestedeventpayload.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/agentsessionapprovalrequestedeventpayload.md b/client-sdks/platform/typescript/docs/models/agentsessionapprovalrequestedeventpayload.md new file mode 100644 index 000000000..aba8134df --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/agentsessionapprovalrequestedeventpayload.md @@ -0,0 +1,22 @@ +# AgentSessionApprovalRequestedEventPayload + +## Example Usage + +```typescript +import { AgentSessionApprovalRequestedEventPayload } from "@alienplatform/platform-api/models"; + +let value: AgentSessionApprovalRequestedEventPayload = { + approvalId: "", + toolCallId: "", + toolName: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `approvalId` | *string* | :heavy_check_mark: | N/A | +| `toolCallId` | *string* | :heavy_check_mark: | N/A | +| `toolName` | *string* | :heavy_check_mark: | N/A | +| `input` | *any* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/agentsessionapproveresponse.md b/client-sdks/platform/typescript/docs/models/agentsessionapproveresponse.md new file mode 100644 index 000000000..0ceb3fe6f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/agentsessionapproveresponse.md @@ -0,0 +1,21 @@ +# AgentSessionApproveResponse + +## Example Usage + +```typescript +import { AgentSessionApproveResponse } from "@alienplatform/platform-api/models"; + +let value: AgentSessionApproveResponse = { + jobId: "", + status: "", + resumed: true, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `jobId` | *string* | :heavy_check_mark: | N/A | +| `status` | *string* | :heavy_check_mark: | N/A | +| `resumed` | *boolean* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/agentsessiondetail.md b/client-sdks/platform/typescript/docs/models/agentsessiondetail.md new file mode 100644 index 000000000..1ab130c56 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/agentsessiondetail.md @@ -0,0 +1,54 @@ +# AgentSessionDetail + +## Example Usage + +```typescript +import { AgentSessionDetail } from "@alienplatform/platform-api/models"; + +let value: AgentSessionDetail = { + id: "", + triggerType: "", + subjectId: "", + subject: { + deploymentName: "", + deploymentGroupId: null, + deploymentGroupName: "", + releaseId: "", + releaseCommitMessage: "", + releaseCommitRef: "", + projectId: "", + projectName: "", + }, + status: "", + createdAt: "1708547203760", + updatedAt: "1735665644852", + resultText: "", + toolNames: [ + "", + "", + "", + ], + error: null, + pendingApproval: { + approvalId: "", + toolCallId: "", + toolName: "", + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | N/A | +| `triggerType` | *string* | :heavy_check_mark: | N/A | +| `subjectId` | *string* | :heavy_check_mark: | N/A | +| `subject` | [models.AgentSessionSubject](../models/agentsessionsubject.md) | :heavy_check_mark: | N/A | +| `status` | *string* | :heavy_check_mark: | N/A | +| `createdAt` | *string* | :heavy_check_mark: | N/A | +| `updatedAt` | *string* | :heavy_check_mark: | N/A | +| `resultText` | *string* | :heavy_check_mark: | N/A | +| `toolNames` | *string*[] | :heavy_check_mark: | N/A | +| `error` | *string* | :heavy_check_mark: | N/A | +| `pendingApproval` | [models.PendingApproval](../models/pendingapproval.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/agentsessionevent.md b/client-sdks/platform/typescript/docs/models/agentsessionevent.md new file mode 100644 index 000000000..bbc6f0eec --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/agentsessionevent.md @@ -0,0 +1,132 @@ +# AgentSessionEvent + + +## Supported Types + +### `models.AgentSessionStatusEvent` + +```typescript +const value: models.AgentSessionStatusEvent = { + seq: 4210.33, + createdAt: "1710340330705", + type: "status", + payload: { + status: "", + }, +}; +``` + +### `models.AgentSessionStepEvent` + +```typescript +const value: models.AgentSessionStepEvent = { + seq: 1186.78, + createdAt: "1731419010075", + type: "step", + payload: { + stepId: "", + title: "", + status: "in_progress", + }, +}; +``` + +### `models.AgentSessionToolCallEvent` + +```typescript +const value: models.AgentSessionToolCallEvent = { + seq: 400.77, + createdAt: "1718464824179", + type: "tool_call", + payload: { + toolCallId: "", + toolName: "", + }, +}; +``` + +### `models.AgentSessionToolResultEvent` + +```typescript +const value: models.AgentSessionToolResultEvent = { + seq: 4758.06, + createdAt: "1735429468512", + type: "tool_result", + payload: { + toolCallId: "", + toolName: "", + ok: true, + }, +}; +``` + +### `models.AgentSessionMarkdownEvent` + +```typescript +const value: models.AgentSessionMarkdownEvent = { + seq: 4742.82, + createdAt: "1714119157487", + type: "markdown", + payload: { + text: "", + }, +}; +``` + +### `models.AgentSessionApprovalRequestedEvent` + +```typescript +const value: models.AgentSessionApprovalRequestedEvent = { + seq: 8489.57, + createdAt: "1727488365811", + type: "approval_requested", + payload: { + approvalId: "", + toolCallId: "", + toolName: "", + }, +}; +``` + +### `models.AgentSessionApprovalGrantedEvent` + +```typescript +const value: models.AgentSessionApprovalGrantedEvent = { + seq: 2155.04, + createdAt: "1722031798553", + type: "approval_granted", + payload: { + approvalId: "", + approvedByUserId: "", + approvedByName: "", + source: "dashboard", + }, +}; +``` + +### `models.AgentSessionRestartedEvent` + +```typescript +const value: models.AgentSessionRestartedEvent = { + seq: 9503.12, + createdAt: "1734099609945", + type: "session_restarted", + payload: { + reason: "", + }, +}; +``` + +### `models.AgentSessionEventsTruncatedEvent` + +```typescript +const value: models.AgentSessionEventsTruncatedEvent = { + seq: 1033.37, + createdAt: "1730528196150", + type: "events_truncated", + payload: { + limit: 5615.57, + }, +}; +``` + diff --git a/client-sdks/platform/typescript/docs/models/agentsessioneventsresponse.md b/client-sdks/platform/typescript/docs/models/agentsessioneventsresponse.md new file mode 100644 index 000000000..8caafcfbc --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/agentsessioneventsresponse.md @@ -0,0 +1,21 @@ +# AgentSessionEventsResponse + +## Example Usage + +```typescript +import { AgentSessionEventsResponse } from "@alienplatform/platform-api/models"; + +let value: AgentSessionEventsResponse = { + events: [], + latestSeq: 8653.24, + hasMore: false, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------- | ---------------------------- | ---------------------------- | ---------------------------- | +| `events` | *models.AgentSessionEvent*[] | :heavy_check_mark: | N/A | +| `latestSeq` | *number* | :heavy_check_mark: | N/A | +| `hasMore` | *boolean* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/agentsessioneventstruncatedevent.md b/client-sdks/platform/typescript/docs/models/agentsessioneventstruncatedevent.md new file mode 100644 index 000000000..94ed9cb7f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/agentsessioneventstruncatedevent.md @@ -0,0 +1,25 @@ +# AgentSessionEventsTruncatedEvent + +## Example Usage + +```typescript +import { AgentSessionEventsTruncatedEvent } from "@alienplatform/platform-api/models"; + +let value: AgentSessionEventsTruncatedEvent = { + seq: 1033.37, + createdAt: "1730528196150", + type: "events_truncated", + payload: { + limit: 5615.57, + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | +| `seq` | *number* | :heavy_check_mark: | N/A | +| `createdAt` | *string* | :heavy_check_mark: | N/A | +| `type` | *"events_truncated"* | :heavy_check_mark: | N/A | +| `payload` | [models.AgentSessionEventsTruncatedEventPayload](../models/agentsessioneventstruncatedeventpayload.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/agentsessioneventstruncatedeventpayload.md b/client-sdks/platform/typescript/docs/models/agentsessioneventstruncatedeventpayload.md new file mode 100644 index 000000000..be3f07ef5 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/agentsessioneventstruncatedeventpayload.md @@ -0,0 +1,17 @@ +# AgentSessionEventsTruncatedEventPayload + +## Example Usage + +```typescript +import { AgentSessionEventsTruncatedEventPayload } from "@alienplatform/platform-api/models"; + +let value: AgentSessionEventsTruncatedEventPayload = { + limit: 4890.46, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `limit` | *number* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/agentsessionlistitem.md b/client-sdks/platform/typescript/docs/models/agentsessionlistitem.md new file mode 100644 index 000000000..ff3feee8e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/agentsessionlistitem.md @@ -0,0 +1,38 @@ +# AgentSessionListItem + +## Example Usage + +```typescript +import { AgentSessionListItem } from "@alienplatform/platform-api/models"; + +let value: AgentSessionListItem = { + id: "", + triggerType: "", + subjectId: "", + subject: { + deploymentName: "", + deploymentGroupId: null, + deploymentGroupName: "", + releaseId: "", + releaseCommitMessage: "", + releaseCommitRef: "", + projectId: "", + projectName: "", + }, + status: "", + createdAt: "1709761239116", + updatedAt: "1735623031963", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | N/A | +| `triggerType` | *string* | :heavy_check_mark: | N/A | +| `subjectId` | *string* | :heavy_check_mark: | N/A | +| `subject` | [models.AgentSessionSubject](../models/agentsessionsubject.md) | :heavy_check_mark: | N/A | +| `status` | *string* | :heavy_check_mark: | N/A | +| `createdAt` | *string* | :heavy_check_mark: | N/A | +| `updatedAt` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/agentsessionlistresponse.md b/client-sdks/platform/typescript/docs/models/agentsessionlistresponse.md new file mode 100644 index 000000000..ea98e76c3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/agentsessionlistresponse.md @@ -0,0 +1,36 @@ +# AgentSessionListResponse + +## Example Usage + +```typescript +import { AgentSessionListResponse } from "@alienplatform/platform-api/models"; + +let value: AgentSessionListResponse = { + sessions: [ + { + id: "", + triggerType: "", + subjectId: "", + subject: { + deploymentName: "", + deploymentGroupId: null, + deploymentGroupName: "", + releaseId: "", + releaseCommitMessage: "", + releaseCommitRef: "", + projectId: "", + projectName: "", + }, + status: "", + createdAt: "1711341083645", + updatedAt: "1735641395451", + }, + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `sessions` | [models.AgentSessionListItem](../models/agentsessionlistitem.md)[] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/agentsessionmarkdownevent.md b/client-sdks/platform/typescript/docs/models/agentsessionmarkdownevent.md new file mode 100644 index 000000000..2d7ce604c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/agentsessionmarkdownevent.md @@ -0,0 +1,25 @@ +# AgentSessionMarkdownEvent + +## Example Usage + +```typescript +import { AgentSessionMarkdownEvent } from "@alienplatform/platform-api/models"; + +let value: AgentSessionMarkdownEvent = { + seq: 4742.82, + createdAt: "1714119157487", + type: "markdown", + payload: { + text: "", + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `seq` | *number* | :heavy_check_mark: | N/A | +| `createdAt` | *string* | :heavy_check_mark: | N/A | +| `type` | *"markdown"* | :heavy_check_mark: | N/A | +| `payload` | [models.AgentSessionMarkdownEventPayload](../models/agentsessionmarkdowneventpayload.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/agentsessionmarkdowneventpayload.md b/client-sdks/platform/typescript/docs/models/agentsessionmarkdowneventpayload.md new file mode 100644 index 000000000..a4207a7f6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/agentsessionmarkdowneventpayload.md @@ -0,0 +1,17 @@ +# AgentSessionMarkdownEventPayload + +## Example Usage + +```typescript +import { AgentSessionMarkdownEventPayload } from "@alienplatform/platform-api/models"; + +let value: AgentSessionMarkdownEventPayload = { + text: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `text` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/agentsessionrestartedevent.md b/client-sdks/platform/typescript/docs/models/agentsessionrestartedevent.md new file mode 100644 index 000000000..387820f48 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/agentsessionrestartedevent.md @@ -0,0 +1,25 @@ +# AgentSessionRestartedEvent + +## Example Usage + +```typescript +import { AgentSessionRestartedEvent } from "@alienplatform/platform-api/models"; + +let value: AgentSessionRestartedEvent = { + seq: 9503.12, + createdAt: "1734099609945", + type: "session_restarted", + payload: { + reason: "", + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `seq` | *number* | :heavy_check_mark: | N/A | +| `createdAt` | *string* | :heavy_check_mark: | N/A | +| `type` | *"session_restarted"* | :heavy_check_mark: | N/A | +| `payload` | [models.AgentSessionRestartedEventPayload](../models/agentsessionrestartedeventpayload.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/agentsessionrestartedeventpayload.md b/client-sdks/platform/typescript/docs/models/agentsessionrestartedeventpayload.md new file mode 100644 index 000000000..f7a257a4d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/agentsessionrestartedeventpayload.md @@ -0,0 +1,17 @@ +# AgentSessionRestartedEventPayload + +## Example Usage + +```typescript +import { AgentSessionRestartedEventPayload } from "@alienplatform/platform-api/models"; + +let value: AgentSessionRestartedEventPayload = { + reason: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `reason` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/agentsessionstatusevent.md b/client-sdks/platform/typescript/docs/models/agentsessionstatusevent.md new file mode 100644 index 000000000..b05fe9454 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/agentsessionstatusevent.md @@ -0,0 +1,25 @@ +# AgentSessionStatusEvent + +## Example Usage + +```typescript +import { AgentSessionStatusEvent } from "@alienplatform/platform-api/models"; + +let value: AgentSessionStatusEvent = { + seq: 4210.33, + createdAt: "1710340330705", + type: "status", + payload: { + status: "", + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `seq` | *number* | :heavy_check_mark: | N/A | +| `createdAt` | *string* | :heavy_check_mark: | N/A | +| `type` | *"status"* | :heavy_check_mark: | N/A | +| `payload` | [models.AgentSessionStatusEventPayload](../models/agentsessionstatuseventpayload.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/agentsessionstatuseventpayload.md b/client-sdks/platform/typescript/docs/models/agentsessionstatuseventpayload.md new file mode 100644 index 000000000..70f8e5b7e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/agentsessionstatuseventpayload.md @@ -0,0 +1,18 @@ +# AgentSessionStatusEventPayload + +## Example Usage + +```typescript +import { AgentSessionStatusEventPayload } from "@alienplatform/platform-api/models"; + +let value: AgentSessionStatusEventPayload = { + status: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `status` | *string* | :heavy_check_mark: | N/A | +| `error` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/agentsessionstepevent.md b/client-sdks/platform/typescript/docs/models/agentsessionstepevent.md new file mode 100644 index 000000000..cae0becaa --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/agentsessionstepevent.md @@ -0,0 +1,27 @@ +# AgentSessionStepEvent + +## Example Usage + +```typescript +import { AgentSessionStepEvent } from "@alienplatform/platform-api/models"; + +let value: AgentSessionStepEvent = { + seq: 1186.78, + createdAt: "1731419010075", + type: "step", + payload: { + stepId: "", + title: "", + status: "in_progress", + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `seq` | *number* | :heavy_check_mark: | N/A | +| `createdAt` | *string* | :heavy_check_mark: | N/A | +| `type` | *"step"* | :heavy_check_mark: | N/A | +| `payload` | [models.AgentSessionStepEventPayload](../models/agentsessionstepeventpayload.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/agentsessionstepeventpayload.md b/client-sdks/platform/typescript/docs/models/agentsessionstepeventpayload.md new file mode 100644 index 000000000..f7896a579 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/agentsessionstepeventpayload.md @@ -0,0 +1,21 @@ +# AgentSessionStepEventPayload + +## Example Usage + +```typescript +import { AgentSessionStepEventPayload } from "@alienplatform/platform-api/models"; + +let value: AgentSessionStepEventPayload = { + stepId: "", + title: "", + status: "in_progress", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | +| `stepId` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | +| `status` | [models.AgentSessionStepEventStatus](../models/agentsessionstepeventstatus.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/agentsessionstepeventstatus.md b/client-sdks/platform/typescript/docs/models/agentsessionstepeventstatus.md new file mode 100644 index 000000000..c21dc6ae3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/agentsessionstepeventstatus.md @@ -0,0 +1,15 @@ +# AgentSessionStepEventStatus + +## Example Usage + +```typescript +import { AgentSessionStepEventStatus } from "@alienplatform/platform-api/models"; + +let value: AgentSessionStepEventStatus = "in_progress"; +``` + +## Values + +```typescript +"in_progress" | "complete" | "error" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/agentsessionstopresponse.md b/client-sdks/platform/typescript/docs/models/agentsessionstopresponse.md new file mode 100644 index 000000000..4608ea91a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/agentsessionstopresponse.md @@ -0,0 +1,21 @@ +# AgentSessionStopResponse + +## Example Usage + +```typescript +import { AgentSessionStopResponse } from "@alienplatform/platform-api/models"; + +let value: AgentSessionStopResponse = { + jobId: "", + status: "", + canceled: false, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `jobId` | *string* | :heavy_check_mark: | N/A | +| `status` | *string* | :heavy_check_mark: | N/A | +| `canceled` | *boolean* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/agentsessionsubject.md b/client-sdks/platform/typescript/docs/models/agentsessionsubject.md new file mode 100644 index 000000000..8f2b81dbc --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/agentsessionsubject.md @@ -0,0 +1,31 @@ +# AgentSessionSubject + +## Example Usage + +```typescript +import { AgentSessionSubject } from "@alienplatform/platform-api/models"; + +let value: AgentSessionSubject = { + deploymentName: "", + deploymentGroupId: "", + deploymentGroupName: "", + releaseId: "", + releaseCommitMessage: "", + releaseCommitRef: "", + projectId: "", + projectName: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------- | ---------------------- | ---------------------- | ---------------------- | +| `deploymentName` | *string* | :heavy_check_mark: | N/A | +| `deploymentGroupId` | *string* | :heavy_check_mark: | N/A | +| `deploymentGroupName` | *string* | :heavy_check_mark: | N/A | +| `releaseId` | *string* | :heavy_check_mark: | N/A | +| `releaseCommitMessage` | *string* | :heavy_check_mark: | N/A | +| `releaseCommitRef` | *string* | :heavy_check_mark: | N/A | +| `projectId` | *string* | :heavy_check_mark: | N/A | +| `projectName` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/agentsessiontoolcallevent.md b/client-sdks/platform/typescript/docs/models/agentsessiontoolcallevent.md new file mode 100644 index 000000000..a3a8e42dd --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/agentsessiontoolcallevent.md @@ -0,0 +1,26 @@ +# AgentSessionToolCallEvent + +## Example Usage + +```typescript +import { AgentSessionToolCallEvent } from "@alienplatform/platform-api/models"; + +let value: AgentSessionToolCallEvent = { + seq: 400.77, + createdAt: "1718464824179", + type: "tool_call", + payload: { + toolCallId: "", + toolName: "", + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `seq` | *number* | :heavy_check_mark: | N/A | +| `createdAt` | *string* | :heavy_check_mark: | N/A | +| `type` | *"tool_call"* | :heavy_check_mark: | N/A | +| `payload` | [models.AgentSessionToolCallEventPayload](../models/agentsessiontoolcalleventpayload.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/agentsessiontoolcalleventpayload.md b/client-sdks/platform/typescript/docs/models/agentsessiontoolcalleventpayload.md new file mode 100644 index 000000000..8b705a476 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/agentsessiontoolcalleventpayload.md @@ -0,0 +1,20 @@ +# AgentSessionToolCallEventPayload + +## Example Usage + +```typescript +import { AgentSessionToolCallEventPayload } from "@alienplatform/platform-api/models"; + +let value: AgentSessionToolCallEventPayload = { + toolCallId: "", + toolName: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `toolCallId` | *string* | :heavy_check_mark: | N/A | +| `toolName` | *string* | :heavy_check_mark: | N/A | +| `input` | *any* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/agentsessiontoolresultevent.md b/client-sdks/platform/typescript/docs/models/agentsessiontoolresultevent.md new file mode 100644 index 000000000..998b07933 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/agentsessiontoolresultevent.md @@ -0,0 +1,27 @@ +# AgentSessionToolResultEvent + +## Example Usage + +```typescript +import { AgentSessionToolResultEvent } from "@alienplatform/platform-api/models"; + +let value: AgentSessionToolResultEvent = { + seq: 4758.06, + createdAt: "1735429468512", + type: "tool_result", + payload: { + toolCallId: "", + toolName: "", + ok: true, + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `seq` | *number* | :heavy_check_mark: | N/A | +| `createdAt` | *string* | :heavy_check_mark: | N/A | +| `type` | *"tool_result"* | :heavy_check_mark: | N/A | +| `payload` | [models.AgentSessionToolResultEventPayload](../models/agentsessiontoolresulteventpayload.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/agentsessiontoolresulteventpayload.md b/client-sdks/platform/typescript/docs/models/agentsessiontoolresulteventpayload.md new file mode 100644 index 000000000..868b95737 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/agentsessiontoolresulteventpayload.md @@ -0,0 +1,22 @@ +# AgentSessionToolResultEventPayload + +## Example Usage + +```typescript +import { AgentSessionToolResultEventPayload } from "@alienplatform/platform-api/models"; + +let value: AgentSessionToolResultEventPayload = { + toolCallId: "", + toolName: "", + ok: true, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `toolCallId` | *string* | :heavy_check_mark: | N/A | +| `toolName` | *string* | :heavy_check_mark: | N/A | +| `ok` | *boolean* | :heavy_check_mark: | N/A | +| `output` | *any* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/agentsettings.md b/client-sdks/platform/typescript/docs/models/agentsettings.md new file mode 100644 index 000000000..2394f0bd1 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/agentsettings.md @@ -0,0 +1,25 @@ +# AgentSettings + +## Example Usage + +```typescript +import { AgentSettings } from "@alienplatform/platform-api/models"; + +let value: AgentSettings = { + workspaceId: "ws_It13CUaGEhLLAB87simX0", + enabled: true, + debugPermissionMode: "ask", + createdAt: new Date("2024-07-15T04:21:22.473Z"), + updatedAt: new Date("2026-10-03T19:00:11.287Z"), +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `workspaceId` | *string* | :heavy_check_mark: | Unique identifier for the workspace. | ws_It13CUaGEhLLAB87simX0 | +| `enabled` | *boolean* | :heavy_check_mark: | 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` | [models.AgentSettingsDebugPermissionMode](../models/agentsettingsdebugpermissionmode.md) | :heavy_check_mark: | 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` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `updatedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/agentsettingsdebugpermissionmode.md b/client-sdks/platform/typescript/docs/models/agentsettingsdebugpermissionmode.md new file mode 100644 index 000000000..8837d7766 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/agentsettingsdebugpermissionmode.md @@ -0,0 +1,17 @@ +# AgentSettingsDebugPermissionMode + +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. + +## Example Usage + +```typescript +import { AgentSettingsDebugPermissionMode } from "@alienplatform/platform-api/models"; + +let value: AgentSettingsDebugPermissionMode = "auto"; +``` + +## Values + +```typescript +"auto" | "ask" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/apikey.md b/client-sdks/platform/typescript/docs/models/apikey.md index e81bb271b..fd85eeac7 100644 --- a/client-sdks/platform/typescript/docs/models/apikey.md +++ b/client-sdks/platform/typescript/docs/models/apikey.md @@ -26,19 +26,31 @@ let value: APIKey = { deploymentSetupConfig: { metadata: { "key": "", - "key1": "", - "key2": "", }, policy: { allowedPlatforms: [], - allowedSetupMethods: [], + allowedSetupMethods: [ + "google-oauth", + ], }, environmentVariables: [], + items: [ + { + item: "keys", + source: { + type: "built-in", + definitionId: "customer-registry", + version: "", + sourceReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", + }, + required: false, + }, + ], }, createdByUser: { id: "", - email: "Rhett78@hotmail.com", - image: "https://picsum.photos/seed/PS5fO/2447/1335", + email: "Sydnee_Fahey-Satterfield@gmail.com", + image: "https://picsum.photos/seed/MtBCj/2624/1426", }, }; ``` diff --git a/client-sdks/platform/typescript/docs/models/apikeydeploymentsetupconfig.md b/client-sdks/platform/typescript/docs/models/apikeydeploymentsetupconfig.md index ba6cc380f..51b4ecece 100644 --- a/client-sdks/platform/typescript/docs/models/apikeydeploymentsetupconfig.md +++ b/client-sdks/platform/typescript/docs/models/apikeydeploymentsetupconfig.md @@ -11,7 +11,9 @@ let value: APIKeyDeploymentSetupConfig = { }, policy: { allowedPlatforms: [], - allowedSetupMethods: [], + allowedSetupMethods: [ + "google-oauth", + ], }, environmentVariables: [ { @@ -22,10 +24,10 @@ let value: APIKeyDeploymentSetupConfig = { ], items: [ { - item: "models", + item: "keys", source: { type: "built-in", - definitionId: "customer-key", + definitionId: "customer-registry", version: "", sourceReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", }, diff --git a/client-sdks/platform/typescript/docs/models/apikeydeploymentsetupconfigallowedprovider.md b/client-sdks/platform/typescript/docs/models/apikeydeploymentsetupconfigallowedprovider.md index aa1a6ab3c..4cb9dd5df 100644 --- a/client-sdks/platform/typescript/docs/models/apikeydeploymentsetupconfigallowedprovider.md +++ b/client-sdks/platform/typescript/docs/models/apikeydeploymentsetupconfigallowedprovider.md @@ -11,5 +11,5 @@ let value: APIKeyDeploymentSetupConfigAllowedProvider = "gcp-vertex"; ## Values ```typescript -"aws-bedrock" | "gcp-vertex" | "azure-foundry" | "anthropic" +"aws-bedrock" | "gcp-vertex" | "azure-foundry" | "anthropic" | "databricks" | "openai" ``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/apikeydeploymentsetupconfigdefinitionid.md b/client-sdks/platform/typescript/docs/models/apikeydeploymentsetupconfigdefinitionid.md index 1d44affbb..0e9e6ae2f 100644 --- a/client-sdks/platform/typescript/docs/models/apikeydeploymentsetupconfigdefinitionid.md +++ b/client-sdks/platform/typescript/docs/models/apikeydeploymentsetupconfigdefinitionid.md @@ -5,11 +5,11 @@ ```typescript import { APIKeyDeploymentSetupConfigDefinitionId } from "@alienplatform/platform-api/models"; -let value: APIKeyDeploymentSetupConfigDefinitionId = "customer-ai"; +let value: APIKeyDeploymentSetupConfigDefinitionId = "customer-key"; ``` ## Values ```typescript -"customer-ai" | "customer-key" +"customer-ai" | "customer-key" | "customer-storage" | "customer-registry" ``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/apikeydeploymentsetupconfigitem.md b/client-sdks/platform/typescript/docs/models/apikeydeploymentsetupconfigitem.md index b0c98022a..40a103f13 100644 --- a/client-sdks/platform/typescript/docs/models/apikeydeploymentsetupconfigitem.md +++ b/client-sdks/platform/typescript/docs/models/apikeydeploymentsetupconfigitem.md @@ -6,10 +6,10 @@ import { APIKeyDeploymentSetupConfigItem } from "@alienplatform/platform-api/models"; let value: APIKeyDeploymentSetupConfigItem = { - item: "alien-stack", + item: "deployment", source: { type: "built-in", - definitionId: "customer-ai", + definitionId: "customer-key", version: "", sourceReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", }, diff --git a/client-sdks/platform/typescript/docs/models/apikeydeploymentsetupconfigitemenum.md b/client-sdks/platform/typescript/docs/models/apikeydeploymentsetupconfigitemenum.md index 259c3e559..4fa730e8f 100644 --- a/client-sdks/platform/typescript/docs/models/apikeydeploymentsetupconfigitemenum.md +++ b/client-sdks/platform/typescript/docs/models/apikeydeploymentsetupconfigitemenum.md @@ -5,11 +5,11 @@ ```typescript import { APIKeyDeploymentSetupConfigItemEnum } from "@alienplatform/platform-api/models"; -let value: APIKeyDeploymentSetupConfigItemEnum = "keys"; +let value: APIKeyDeploymentSetupConfigItemEnum = "bucket"; ``` ## Values ```typescript -"alien-stack" | "models" | "keys" +"deployment" | "models" | "keys" | "bucket" | "registry" ``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/apikeydeploymentsetupconfigsourceapplicationrelease.md b/client-sdks/platform/typescript/docs/models/apikeydeploymentsetupconfigsourceapplicationrelease.md deleted file mode 100644 index ca0653e48..000000000 --- a/client-sdks/platform/typescript/docs/models/apikeydeploymentsetupconfigsourceapplicationrelease.md +++ /dev/null @@ -1,22 +0,0 @@ -# APIKeyDeploymentSetupConfigSourceApplicationRelease - -## Example Usage - -```typescript -import { APIKeyDeploymentSetupConfigSourceApplicationRelease } from "@alienplatform/platform-api/models"; - -let value: APIKeyDeploymentSetupConfigSourceApplicationRelease = { - type: "application-release", - releaseChannel: "", - releaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", -}; -``` - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | -| `type` | *"application-release"* | :heavy_check_mark: | N/A | | -| `releaseChannel` | *string* | :heavy_check_mark: | N/A | | -| `releaseId` | *string* | :heavy_check_mark: | Unique identifier for the release. | rel_WbhQgksrawSKIpEN0NAssHX9 | -| `resourceId` | *string* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/apikeydeploymentsetupconfigsourceprojectrelease.md b/client-sdks/platform/typescript/docs/models/apikeydeploymentsetupconfigsourceprojectrelease.md new file mode 100644 index 000000000..f5ebbdc85 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/apikeydeploymentsetupconfigsourceprojectrelease.md @@ -0,0 +1,22 @@ +# APIKeyDeploymentSetupConfigSourceProjectRelease + +## Example Usage + +```typescript +import { APIKeyDeploymentSetupConfigSourceProjectRelease } from "@alienplatform/platform-api/models"; + +let value: APIKeyDeploymentSetupConfigSourceProjectRelease = { + type: "project-release", + releaseChannel: "", + releaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | +| `type` | *"project-release"* | :heavy_check_mark: | N/A | | +| `releaseChannel` | *string* | :heavy_check_mark: | N/A | | +| `releaseId` | *string* | :heavy_check_mark: | Unique identifier for the release. | rel_WbhQgksrawSKIpEN0NAssHX9 | +| `resourceId` | *string* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/apikeydeploymentsetupconfigsourceunion.md b/client-sdks/platform/typescript/docs/models/apikeydeploymentsetupconfigsourceunion.md index 7e229c375..6efacd626 100644 --- a/client-sdks/platform/typescript/docs/models/apikeydeploymentsetupconfigsourceunion.md +++ b/client-sdks/platform/typescript/docs/models/apikeydeploymentsetupconfigsourceunion.md @@ -3,11 +3,11 @@ ## Supported Types -### `models.APIKeyDeploymentSetupConfigSourceApplicationRelease` +### `models.APIKeyDeploymentSetupConfigSourceProjectRelease` ```typescript -const value: models.APIKeyDeploymentSetupConfigSourceApplicationRelease = { - type: "application-release", +const value: models.APIKeyDeploymentSetupConfigSourceProjectRelease = { + type: "project-release", releaseChannel: "", releaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", }; diff --git a/client-sdks/platform/typescript/docs/models/applycontainerregistrysnapshotresponse.md b/client-sdks/platform/typescript/docs/models/applycontainerregistrysnapshotresponse.md new file mode 100644 index 000000000..4fe2c32f3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/applycontainerregistrysnapshotresponse.md @@ -0,0 +1,19 @@ +# ApplyContainerRegistrySnapshotResponse + +## Example Usage + +```typescript +import { ApplyContainerRegistrySnapshotResponse } from "@alienplatform/platform-api/models"; + +let value: ApplyContainerRegistrySnapshotResponse = { + appliedRevision: 415109, + status: "applying", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `appliedRevision` | *number* | :heavy_check_mark: | N/A | +| `status` | [models.ApplyContainerRegistrySnapshotResponseStatus](../models/applycontainerregistrysnapshotresponsestatus.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/applycontainerregistrysnapshotresponsestatus.md b/client-sdks/platform/typescript/docs/models/applycontainerregistrysnapshotresponsestatus.md new file mode 100644 index 000000000..2cff21609 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/applycontainerregistrysnapshotresponsestatus.md @@ -0,0 +1,15 @@ +# ApplyContainerRegistrySnapshotResponseStatus + +## Example Usage + +```typescript +import { ApplyContainerRegistrySnapshotResponseStatus } from "@alienplatform/platform-api/models"; + +let value: ApplyContainerRegistrySnapshotResponseStatus = "revoked"; +``` + +## Values + +```typescript +"applying" | "connected" | "degraded" | "revoked" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/availability.md b/client-sdks/platform/typescript/docs/models/availability.md new file mode 100644 index 000000000..458f3fc79 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/availability.md @@ -0,0 +1,21 @@ +# Availability + + +## Supported Types + +### `models.SyncReconcileRequestAvailability4` + +```typescript +const value: models.SyncReconcileRequestAvailability4 = { + catalogRevision: "", + models: [], + source: "aws-bedrock", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/billingfeatureflags.md b/client-sdks/platform/typescript/docs/models/billingfeatureflags.md index eb2df4c59..a80030b3c 100644 --- a/client-sdks/platform/typescript/docs/models/billingfeatureflags.md +++ b/client-sdks/platform/typescript/docs/models/billingfeatureflags.md @@ -8,18 +8,20 @@ import { BillingFeatureFlags } from "@alienplatform/platform-api/models"; let value: BillingFeatureFlags = { customDomains: true, privateManagers: true, + operationsCustomPlugins: false, ssoSaml: false, auditLogs: false, - airgapped: false, + airgapped: true, }; ``` ## Fields -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `customDomains` | *boolean* | :heavy_check_mark: | N/A | -| `privateManagers` | *boolean* | :heavy_check_mark: | N/A | -| `ssoSaml` | *boolean* | :heavy_check_mark: | N/A | -| `auditLogs` | *boolean* | :heavy_check_mark: | N/A | -| `airgapped` | *boolean* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------- | ------------------------- | ------------------------- | ------------------------- | +| `customDomains` | *boolean* | :heavy_check_mark: | N/A | +| `privateManagers` | *boolean* | :heavy_check_mark: | N/A | +| `operationsCustomPlugins` | *boolean* | :heavy_check_mark: | N/A | +| `ssoSaml` | *boolean* | :heavy_check_mark: | N/A | +| `auditLogs` | *boolean* | :heavy_check_mark: | N/A | +| `airgapped` | *boolean* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/blocker1.md b/client-sdks/platform/typescript/docs/models/blocker1.md deleted file mode 100644 index 2fe0fc84f..000000000 --- a/client-sdks/platform/typescript/docs/models/blocker1.md +++ /dev/null @@ -1,25 +0,0 @@ -# Blocker1 - -## Example Usage - -```typescript -import { Blocker1 } from "@alienplatform/platform-api/models"; - -let value: Blocker1 = { - reason: "", - replicaId: "", - schedulingMode: "", - state: "Washington", - workloadName: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `reason` | *string* | :heavy_check_mark: | N/A | -| `replicaId` | *string* | :heavy_check_mark: | N/A | -| `schedulingMode` | *string* | :heavy_check_mark: | N/A | -| `state` | *string* | :heavy_check_mark: | N/A | -| `workloadName` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/blocker2.md b/client-sdks/platform/typescript/docs/models/blocker2.md deleted file mode 100644 index ff965e3a1..000000000 --- a/client-sdks/platform/typescript/docs/models/blocker2.md +++ /dev/null @@ -1,25 +0,0 @@ -# Blocker2 - -## Example Usage - -```typescript -import { Blocker2 } from "@alienplatform/platform-api/models"; - -let value: Blocker2 = { - reason: "", - replicaId: "", - schedulingMode: "", - state: "Delaware", - workloadName: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `reason` | *string* | :heavy_check_mark: | N/A | -| `replicaId` | *string* | :heavy_check_mark: | N/A | -| `schedulingMode` | *string* | :heavy_check_mark: | N/A | -| `state` | *string* | :heavy_check_mark: | N/A | -| `workloadName` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/blocker3.md b/client-sdks/platform/typescript/docs/models/blocker3.md deleted file mode 100644 index 484343a2d..000000000 --- a/client-sdks/platform/typescript/docs/models/blocker3.md +++ /dev/null @@ -1,25 +0,0 @@ -# Blocker3 - -## Example Usage - -```typescript -import { Blocker3 } from "@alienplatform/platform-api/models"; - -let value: Blocker3 = { - reason: "", - replicaId: "", - schedulingMode: "", - state: "Wisconsin", - workloadName: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `reason` | *string* | :heavy_check_mark: | N/A | -| `replicaId` | *string* | :heavy_check_mark: | N/A | -| `schedulingMode` | *string* | :heavy_check_mark: | N/A | -| `state` | *string* | :heavy_check_mark: | N/A | -| `workloadName` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/blocker4.md b/client-sdks/platform/typescript/docs/models/blocker4.md deleted file mode 100644 index 63003c959..000000000 --- a/client-sdks/platform/typescript/docs/models/blocker4.md +++ /dev/null @@ -1,25 +0,0 @@ -# Blocker4 - -## Example Usage - -```typescript -import { Blocker4 } from "@alienplatform/platform-api/models"; - -let value: Blocker4 = { - reason: "", - replicaId: "", - schedulingMode: "", - state: "South Carolina", - workloadName: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `reason` | *string* | :heavy_check_mark: | N/A | -| `replicaId` | *string* | :heavy_check_mark: | N/A | -| `schedulingMode` | *string* | :heavy_check_mark: | N/A | -| `state` | *string* | :heavy_check_mark: | N/A | -| `workloadName` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/bucketsaccesstest.md b/client-sdks/platform/typescript/docs/models/bucketsaccesstest.md new file mode 100644 index 000000000..13cc18212 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/bucketsaccesstest.md @@ -0,0 +1,15 @@ +# BucketsAccessTest + +## Example Usage + +```typescript +import { BucketsAccessTest } from "@alienplatform/platform-api/models"; + +let value: BucketsAccessTest = "verified"; +``` + +## Values + +```typescript +"verified" | "failed" | "not-checked" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/bucketsavailability.md b/client-sdks/platform/typescript/docs/models/bucketsavailability.md new file mode 100644 index 000000000..72d972fd1 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/bucketsavailability.md @@ -0,0 +1,15 @@ +# BucketsAvailability + +## Example Usage + +```typescript +import { BucketsAvailability } from "@alienplatform/platform-api/models"; + +let value: BucketsAvailability = "blocked"; +``` + +## Values + +```typescript +"available" | "blocked" | "unknown" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/bucketscapability.md b/client-sdks/platform/typescript/docs/models/bucketscapability.md new file mode 100644 index 000000000..28016e84a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/bucketscapability.md @@ -0,0 +1,15 @@ +# BucketsCapability + +## Example Usage + +```typescript +import { BucketsCapability } from "@alienplatform/platform-api/models"; + +let value: BucketsCapability = "buckets"; +``` + +## Values + +```typescript +"models" | "keys" | "buckets" | "registry" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/bucketscredentialpolicy.md b/client-sdks/platform/typescript/docs/models/bucketscredentialpolicy.md new file mode 100644 index 000000000..a623bbb48 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/bucketscredentialpolicy.md @@ -0,0 +1,15 @@ +# BucketsCredentialPolicy + +## Example Usage + +```typescript +import { BucketsCredentialPolicy } from "@alienplatform/platform-api/models"; + +let value: BucketsCredentialPolicy = "mixed"; +``` + +## Values + +```typescript +"pull-only" | "push-and-pull" | "mixed" | "none" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/bucketsdirectprovider.md b/client-sdks/platform/typescript/docs/models/bucketsdirectprovider.md new file mode 100644 index 000000000..bef50d1a3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/bucketsdirectprovider.md @@ -0,0 +1,29 @@ +# BucketsDirectProvider + +## Example Usage + +```typescript +import { BucketsDirectProvider } from "@alienplatform/platform-api/models"; + +let value: BucketsDirectProvider = { + provider: "openai", + providerEndpoint: null, + keyFingerprint: "", + availableProviderModelIds: [ + "", + "", + "", + ], + verifiedAt: new Date("2024-03-23T02:09:43.731Z"), +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `provider` | [models.BucketsProvider](../models/bucketsprovider.md) | :heavy_check_mark: | N/A | +| `providerEndpoint` | *string* | :heavy_check_mark: | N/A | +| `keyFingerprint` | *string* | :heavy_check_mark: | N/A | +| `availableProviderModelIds` | *string*[] | :heavy_check_mark: | N/A | +| `verifiedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/bucketshealth.md b/client-sdks/platform/typescript/docs/models/bucketshealth.md new file mode 100644 index 000000000..4e03bfa18 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/bucketshealth.md @@ -0,0 +1,15 @@ +# BucketsHealth + +## Example Usage + +```typescript +import { BucketsHealth } from "@alienplatform/platform-api/models"; + +let value: BucketsHealth = "unknown"; +``` + +## Values + +```typescript +"unknown" | "healthy" | "degraded" | "unhealthy" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/bucketsmodelcoverage.md b/client-sdks/platform/typescript/docs/models/bucketsmodelcoverage.md new file mode 100644 index 000000000..f2a94176d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/bucketsmodelcoverage.md @@ -0,0 +1,29 @@ +# BucketsModelCoverage + +## Example Usage + +```typescript +import { BucketsModelCoverage } from "@alienplatform/platform-api/models"; + +let value: BucketsModelCoverage = { + publicModelId: "", + required: false, + availability: "unknown", + blockerCodes: [ + "", + ], + accessTest: "not-checked", + accessObservedAt: new Date("2026-09-11T20:48:47.165Z"), +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `publicModelId` | *string* | :heavy_check_mark: | N/A | +| `required` | *boolean* | :heavy_check_mark: | N/A | +| `availability` | [models.BucketsAvailability](../models/bucketsavailability.md) | :heavy_check_mark: | N/A | +| `blockerCodes` | *string*[] | :heavy_check_mark: | N/A | +| `accessTest` | [models.BucketsAccessTest](../models/bucketsaccesstest.md) | :heavy_check_mark: | N/A | +| `accessObservedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/bucketsobservation.md b/client-sdks/platform/typescript/docs/models/bucketsobservation.md new file mode 100644 index 000000000..9bf9142e5 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/bucketsobservation.md @@ -0,0 +1,37 @@ +# BucketsObservation + +## Example Usage + +```typescript +import { BucketsObservation } from "@alienplatform/platform-api/models"; + +let value: BucketsObservation = { + provider: "", + platform: "gcp", + resourceId: "", + location: "", + account: "31603276", + observedAt: new Date("2026-10-23T19:31:40.133Z"), + stale: false, + partial: false, + health: null, + lifecycle: "", + message: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `provider` | *string* | :heavy_check_mark: | N/A | +| `platform` | [models.BucketsPlatform](../models/bucketsplatform.md) | :heavy_check_mark: | N/A | +| `resourceId` | *string* | :heavy_check_mark: | N/A | +| `location` | *string* | :heavy_check_mark: | N/A | +| `account` | *string* | :heavy_check_mark: | N/A | +| `observedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | +| `stale` | *boolean* | :heavy_check_mark: | N/A | +| `partial` | *boolean* | :heavy_check_mark: | N/A | +| `health` | [models.BucketsHealth](../models/bucketshealth.md) | :heavy_check_mark: | N/A | +| `lifecycle` | *string* | :heavy_check_mark: | N/A | +| `message` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/bucketsplatform.md b/client-sdks/platform/typescript/docs/models/bucketsplatform.md new file mode 100644 index 000000000..97c412f90 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/bucketsplatform.md @@ -0,0 +1,15 @@ +# BucketsPlatform + +## Example Usage + +```typescript +import { BucketsPlatform } from "@alienplatform/platform-api/models"; + +let value: BucketsPlatform = "kubernetes"; +``` + +## Values + +```typescript +"aws" | "gcp" | "azure" | "local" | "kubernetes" | "machines" | "test" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/bucketsprovider.md b/client-sdks/platform/typescript/docs/models/bucketsprovider.md new file mode 100644 index 000000000..e9da5e436 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/bucketsprovider.md @@ -0,0 +1,15 @@ +# BucketsProvider + +## Example Usage + +```typescript +import { BucketsProvider } from "@alienplatform/platform-api/models"; + +let value: BucketsProvider = "databricks"; +``` + +## Values + +```typescript +"anthropic" | "databricks" | "openai" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/bucketsregistry.md b/client-sdks/platform/typescript/docs/models/bucketsregistry.md new file mode 100644 index 000000000..43957b638 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/bucketsregistry.md @@ -0,0 +1,23 @@ +# BucketsRegistry + +## Example Usage + +```typescript +import { BucketsRegistry } from "@alienplatform/platform-api/models"; + +let value: BucketsRegistry = { + repositories: 345081, + credentials: 161061, + credentialPolicy: "none", + lastVerifiedAt: new Date("2025-09-11T06:06:40.363Z"), +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `repositories` | *number* | :heavy_check_mark: | N/A | +| `credentials` | *number* | :heavy_check_mark: | N/A | +| `credentialPolicy` | [models.BucketsCredentialPolicy](../models/bucketscredentialpolicy.md) | :heavy_check_mark: | N/A | +| `lastVerifiedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/bucketsroot.md b/client-sdks/platform/typescript/docs/models/bucketsroot.md new file mode 100644 index 000000000..e4018f78e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/bucketsroot.md @@ -0,0 +1,19 @@ +# BucketsRoot + +## Example Usage + +```typescript +import { BucketsRoot } from "@alienplatform/platform-api/models"; + +let value: BucketsRoot = { + state: "revoked", + createdAt: new Date("2025-09-30T08:46:36.898Z"), +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `state` | [models.BucketsRootState](../models/bucketsrootstate.md) | :heavy_check_mark: | N/A | +| `createdAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/bucketsrootstate.md b/client-sdks/platform/typescript/docs/models/bucketsrootstate.md new file mode 100644 index 000000000..4710587b6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/bucketsrootstate.md @@ -0,0 +1,15 @@ +# BucketsRootState + +## Example Usage + +```typescript +import { BucketsRootState } from "@alienplatform/platform-api/models"; + +let value: BucketsRootState = "pending"; +``` + +## Values + +```typescript +"pending" | "ready" | "revoked" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/bucketsstate.md b/client-sdks/platform/typescript/docs/models/bucketsstate.md new file mode 100644 index 000000000..8bd13b377 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/bucketsstate.md @@ -0,0 +1,15 @@ +# BucketsState + +## Example Usage + +```typescript +import { BucketsState } from "@alienplatform/platform-api/models"; + +let value: BucketsState = "connected"; +``` + +## Values + +```typescript +"not-connected" | "setting-up" | "connected" | "needs-attention" | "revoked" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/byorigin.md b/client-sdks/platform/typescript/docs/models/byorigin.md new file mode 100644 index 000000000..bdff3c33b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/byorigin.md @@ -0,0 +1,18 @@ +# ByOrigin + +Count of deployments introduced through each deployment path. + +## Example Usage + +```typescript +import { ByOrigin } from "@alienplatform/platform-api/models"; + +let value: ByOrigin = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `framework` | *number* | :heavy_minus_sign: | N/A | +| `remoteOperator` | *number* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/capabilitymaterialization.md b/client-sdks/platform/typescript/docs/models/capabilitymaterialization.md new file mode 100644 index 000000000..90b937dac --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/capabilitymaterialization.md @@ -0,0 +1,33 @@ +# CapabilityMaterialization + +## Example Usage + +```typescript +import { CapabilityMaterialization } from "@alienplatform/platform-api/models"; + +let value: CapabilityMaterialization = { + projectCapabilities: { + schemaVersion: 9196.58, + capabilities: {}, + }, + source: { + definitionId: "customer-key", + definitionVersion: "", + releaseId: "", + }, + packages: [ + { + type: "cloudformation", + status: "failed", + }, + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `projectCapabilities` | [models.ProjectCapabilities](../models/projectcapabilities.md) | :heavy_check_mark: | N/A | +| `source` | [models.CapabilityMaterializationSource](../models/capabilitymaterializationsource.md) | :heavy_check_mark: | N/A | +| `packages` | [models.CapabilityMaterializationPackage](../models/capabilitymaterializationpackage.md)[] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/capabilitymaterializationdefinitionid.md b/client-sdks/platform/typescript/docs/models/capabilitymaterializationdefinitionid.md new file mode 100644 index 000000000..a2316845f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/capabilitymaterializationdefinitionid.md @@ -0,0 +1,15 @@ +# CapabilityMaterializationDefinitionId + +## Example Usage + +```typescript +import { CapabilityMaterializationDefinitionId } from "@alienplatform/platform-api/models"; + +let value: CapabilityMaterializationDefinitionId = "customer-storage"; +``` + +## Values + +```typescript +"customer-ai" | "customer-key" | "customer-storage" | "customer-registry" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/capabilitymaterializationpackage.md b/client-sdks/platform/typescript/docs/models/capabilitymaterializationpackage.md new file mode 100644 index 000000000..4955b18bd --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/capabilitymaterializationpackage.md @@ -0,0 +1,19 @@ +# CapabilityMaterializationPackage + +## Example Usage + +```typescript +import { CapabilityMaterializationPackage } from "@alienplatform/platform-api/models"; + +let value: CapabilityMaterializationPackage = { + type: "cloudformation", + status: "pending", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `type` | [models.CapabilityMaterializationType](../models/capabilitymaterializationtype.md) | :heavy_check_mark: | N/A | +| `status` | [models.CapabilityMaterializationStatus](../models/capabilitymaterializationstatus.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/capabilitymaterializationsource.md b/client-sdks/platform/typescript/docs/models/capabilitymaterializationsource.md new file mode 100644 index 000000000..fde889cd4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/capabilitymaterializationsource.md @@ -0,0 +1,21 @@ +# CapabilityMaterializationSource + +## Example Usage + +```typescript +import { CapabilityMaterializationSource } from "@alienplatform/platform-api/models"; + +let value: CapabilityMaterializationSource = { + definitionId: "customer-ai", + definitionVersion: "", + releaseId: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `definitionId` | [models.CapabilityMaterializationDefinitionId](../models/capabilitymaterializationdefinitionid.md) | :heavy_check_mark: | N/A | +| `definitionVersion` | *string* | :heavy_check_mark: | N/A | +| `releaseId` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/capabilitymaterializationstatus.md b/client-sdks/platform/typescript/docs/models/capabilitymaterializationstatus.md new file mode 100644 index 000000000..be2f21e2e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/capabilitymaterializationstatus.md @@ -0,0 +1,15 @@ +# CapabilityMaterializationStatus + +## Example Usage + +```typescript +import { CapabilityMaterializationStatus } from "@alienplatform/platform-api/models"; + +let value: CapabilityMaterializationStatus = "pending"; +``` + +## Values + +```typescript +"pending" | "building" | "ready" | "failed" | "canceled" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/capabilitymaterializationtype.md b/client-sdks/platform/typescript/docs/models/capabilitymaterializationtype.md new file mode 100644 index 000000000..a3a0fca40 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/capabilitymaterializationtype.md @@ -0,0 +1,15 @@ +# CapabilityMaterializationType + +## Example Usage + +```typescript +import { CapabilityMaterializationType } from "@alienplatform/platform-api/models"; + +let value: CapabilityMaterializationType = "cloudformation"; +``` + +## Values + +```typescript +"cloudformation" | "terraform" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/commandbootstraprequest.md b/client-sdks/platform/typescript/docs/models/commandbootstraprequest.md new file mode 100644 index 000000000..18276aaee --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/commandbootstraprequest.md @@ -0,0 +1,24 @@ +# CommandBootstrapRequest + + +## Supported Types + +### `models.CommandBootstrapRequestSender` + +```typescript +const value: models.CommandBootstrapRequestSender = { + deploymentId: "dep_0c29fq4a2yjb7kx3smwdgxlc", + role: "sender", +}; +``` + +### `models.CommandBootstrapRequestReceiver` + +```typescript +const value: models.CommandBootstrapRequestReceiver = { + deploymentId: "dep_0c29fq4a2yjb7kx3smwdgxlc", + role: "receiver", + target: "", +}; +``` + diff --git a/client-sdks/platform/typescript/docs/models/commandbootstraprequestreceiver.md b/client-sdks/platform/typescript/docs/models/commandbootstraprequestreceiver.md new file mode 100644 index 000000000..de49b9607 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/commandbootstraprequestreceiver.md @@ -0,0 +1,21 @@ +# CommandBootstrapRequestReceiver + +## Example Usage + +```typescript +import { CommandBootstrapRequestReceiver } from "@alienplatform/platform-api/models"; + +let value: CommandBootstrapRequestReceiver = { + deploymentId: "dep_0c29fq4a2yjb7kx3smwdgxlc", + role: "receiver", + target: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------- | ------------------------------------- | ------------------------------------- | ------------------------------------- | ------------------------------------- | +| `deploymentId` | *string* | :heavy_check_mark: | Unique identifier for the deployment. | dep_0c29fq4a2yjb7kx3smwdgxlc | +| `role` | *"receiver"* | :heavy_check_mark: | N/A | | +| `target` | *string* | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/commandbootstraprequestsender.md b/client-sdks/platform/typescript/docs/models/commandbootstraprequestsender.md new file mode 100644 index 000000000..66d784366 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/commandbootstraprequestsender.md @@ -0,0 +1,19 @@ +# CommandBootstrapRequestSender + +## Example Usage + +```typescript +import { CommandBootstrapRequestSender } from "@alienplatform/platform-api/models"; + +let value: CommandBootstrapRequestSender = { + deploymentId: "dep_0c29fq4a2yjb7kx3smwdgxlc", + role: "sender", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------- | ------------------------------------- | ------------------------------------- | ------------------------------------- | ------------------------------------- | +| `deploymentId` | *string* | :heavy_check_mark: | Unique identifier for the deployment. | dep_0c29fq4a2yjb7kx3smwdgxlc | +| `role` | *"sender"* | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/commandbootstrapresponse.md b/client-sdks/platform/typescript/docs/models/commandbootstrapresponse.md new file mode 100644 index 000000000..b994003e5 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/commandbootstrapresponse.md @@ -0,0 +1,22 @@ +# CommandBootstrapResponse + +## Example Usage + +```typescript +import { CommandBootstrapResponse } from "@alienplatform/platform-api/models"; + +let value: CommandBootstrapResponse = { + managerUrl: "https://harmful-kick.biz/", + token: "", + expiresAt: new Date("2025-03-18T21:23:24.172Z"), +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `managerUrl` | *string* | :heavy_check_mark: | Current customer-facing manager URL | +| `token` | *string* | :heavy_check_mark: | Short-lived command capability token | +| `expiresAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | Capability expiry in RFC 3339 format | +| `target` | [models.CommandReceiverBootstrapTarget](../models/commandreceiverbootstraptarget.md) | :heavy_minus_sign: | Resolved target identity; present only for receiver bootstrap | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/commandreceiverbootstraptarget.md b/client-sdks/platform/typescript/docs/models/commandreceiverbootstraptarget.md new file mode 100644 index 000000000..494a7f5ba --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/commandreceiverbootstraptarget.md @@ -0,0 +1,21 @@ +# CommandReceiverBootstrapTarget + +Resolved target identity; present only for receiver bootstrap + +## Example Usage + +```typescript +import { CommandReceiverBootstrapTarget } from "@alienplatform/platform-api/models"; + +let value: CommandReceiverBootstrapTarget = { + resourceId: "", + resourceType: "daemon", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | +| `resourceId` | *string* | :heavy_check_mark: | N/A | +| `resourceType` | [models.CommandReceiverBootstrapTargetResourceType](../models/commandreceiverbootstraptargetresourcetype.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/commandreceiverbootstraptargetresourcetype.md b/client-sdks/platform/typescript/docs/models/commandreceiverbootstraptargetresourcetype.md new file mode 100644 index 000000000..fbcc33e80 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/commandreceiverbootstraptargetresourcetype.md @@ -0,0 +1,15 @@ +# CommandReceiverBootstrapTargetResourceType + +## Example Usage + +```typescript +import { CommandReceiverBootstrapTargetResourceType } from "@alienplatform/platform-api/models"; + +let value: CommandReceiverBootstrapTargetResourceType = "container"; +``` + +## Values + +```typescript +"container" | "daemon" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/configurationstatus.md b/client-sdks/platform/typescript/docs/models/configurationstatus.md new file mode 100644 index 000000000..38eec9684 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/configurationstatus.md @@ -0,0 +1,15 @@ +# ConfigurationStatus + +## Example Usage + +```typescript +import { ConfigurationStatus } from "@alienplatform/platform-api/models"; + +let value: ConfigurationStatus = "valid"; +``` + +## Values + +```typescript +"valid" | "invalid" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/configurecustomermodelsrequest.md b/client-sdks/platform/typescript/docs/models/configurecustomermodelsrequest.md deleted file mode 100644 index bb56ea573..000000000 --- a/client-sdks/platform/typescript/docs/models/configurecustomermodelsrequest.md +++ /dev/null @@ -1,27 +0,0 @@ -# ConfigureCustomerModelsRequest - -## Example Usage - -```typescript -import { ConfigureCustomerModelsRequest } from "@alienplatform/platform-api/models"; - -let value: ConfigureCustomerModelsRequest = { - allowedProviders: [ - "azure-foundry", - ], - requirements: [ - { - publicModelId: "", - clientApis: [], - required: false, - }, - ], -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `allowedProviders` | [models.ConfigureCustomerModelsRequestAllowedProvider](../models/configurecustomermodelsrequestallowedprovider.md)[] | :heavy_check_mark: | N/A | -| `requirements` | [models.ConfigureCustomerModelsRequestRequirement](../models/configurecustomermodelsrequestrequirement.md)[] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/configurecustomermodelsrequestallowedprovider.md b/client-sdks/platform/typescript/docs/models/configurecustomermodelsrequestallowedprovider.md deleted file mode 100644 index 0fb018341..000000000 --- a/client-sdks/platform/typescript/docs/models/configurecustomermodelsrequestallowedprovider.md +++ /dev/null @@ -1,15 +0,0 @@ -# ConfigureCustomerModelsRequestAllowedProvider - -## Example Usage - -```typescript -import { ConfigureCustomerModelsRequestAllowedProvider } from "@alienplatform/platform-api/models"; - -let value: ConfigureCustomerModelsRequestAllowedProvider = "anthropic"; -``` - -## Values - -```typescript -"aws-bedrock" | "gcp-vertex" | "azure-foundry" | "anthropic" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/configurecustomermodelsrequestclientapi.md b/client-sdks/platform/typescript/docs/models/configurecustomermodelsrequestclientapi.md deleted file mode 100644 index 3967441c1..000000000 --- a/client-sdks/platform/typescript/docs/models/configurecustomermodelsrequestclientapi.md +++ /dev/null @@ -1,15 +0,0 @@ -# ConfigureCustomerModelsRequestClientApi - -## Example Usage - -```typescript -import { ConfigureCustomerModelsRequestClientApi } from "@alienplatform/platform-api/models"; - -let value: ConfigureCustomerModelsRequestClientApi = "openai-chat"; -``` - -## Values - -```typescript -"openai-chat" | "openai-responses" | "anthropic-messages" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/configurecustomermodelsrequestrequirement.md b/client-sdks/platform/typescript/docs/models/configurecustomermodelsrequestrequirement.md deleted file mode 100644 index af187d108..000000000 --- a/client-sdks/platform/typescript/docs/models/configurecustomermodelsrequestrequirement.md +++ /dev/null @@ -1,21 +0,0 @@ -# ConfigureCustomerModelsRequestRequirement - -## Example Usage - -```typescript -import { ConfigureCustomerModelsRequestRequirement } from "@alienplatform/platform-api/models"; - -let value: ConfigureCustomerModelsRequestRequirement = { - publicModelId: "", - clientApis: [], - required: false, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -| `publicModelId` | *string* | :heavy_check_mark: | N/A | -| `clientApis` | [models.ConfigureCustomerModelsRequestClientApi](../models/configurecustomermodelsrequestclientapi.md)[] | :heavy_check_mark: | N/A | -| `required` | *boolean* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/configuremodelsrequest.md b/client-sdks/platform/typescript/docs/models/configuremodelsrequest.md new file mode 100644 index 000000000..116e99f7e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/configuremodelsrequest.md @@ -0,0 +1,29 @@ +# ConfigureModelsRequest + +## Example Usage + +```typescript +import { ConfigureModelsRequest } from "@alienplatform/platform-api/models"; + +let value: ConfigureModelsRequest = { + allowedProviders: [ + "gcp-vertex", + ], + requirements: [ + { + publicModelId: "", + clientApis: [ + "openai-responses", + ], + required: false, + }, + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `allowedProviders` | [models.ConfigureModelsRequestAllowedProvider](../models/configuremodelsrequestallowedprovider.md)[] | :heavy_check_mark: | N/A | +| `requirements` | [models.ConfigureModelsRequestRequirement](../models/configuremodelsrequestrequirement.md)[] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/configuremodelsrequestallowedprovider.md b/client-sdks/platform/typescript/docs/models/configuremodelsrequestallowedprovider.md new file mode 100644 index 000000000..53a1ff1ff --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/configuremodelsrequestallowedprovider.md @@ -0,0 +1,15 @@ +# ConfigureModelsRequestAllowedProvider + +## Example Usage + +```typescript +import { ConfigureModelsRequestAllowedProvider } from "@alienplatform/platform-api/models"; + +let value: ConfigureModelsRequestAllowedProvider = "azure-foundry"; +``` + +## Values + +```typescript +"aws-bedrock" | "gcp-vertex" | "azure-foundry" | "anthropic" | "databricks" | "openai" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/configuremodelsrequestclientapi.md b/client-sdks/platform/typescript/docs/models/configuremodelsrequestclientapi.md new file mode 100644 index 000000000..6b10c9712 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/configuremodelsrequestclientapi.md @@ -0,0 +1,15 @@ +# ConfigureModelsRequestClientApi + +## Example Usage + +```typescript +import { ConfigureModelsRequestClientApi } from "@alienplatform/platform-api/models"; + +let value: ConfigureModelsRequestClientApi = "anthropic-messages"; +``` + +## Values + +```typescript +"openai-chat" | "openai-responses" | "anthropic-messages" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/configuremodelsrequestrequirement.md b/client-sdks/platform/typescript/docs/models/configuremodelsrequestrequirement.md new file mode 100644 index 000000000..012c296d1 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/configuremodelsrequestrequirement.md @@ -0,0 +1,23 @@ +# ConfigureModelsRequestRequirement + +## Example Usage + +```typescript +import { ConfigureModelsRequestRequirement } from "@alienplatform/platform-api/models"; + +let value: ConfigureModelsRequestRequirement = { + publicModelId: "", + clientApis: [ + "openai-chat", + ], + required: false, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `publicModelId` | *string* | :heavy_check_mark: | N/A | +| `clientApis` | [models.ConfigureModelsRequestClientApi](../models/configuremodelsrequestclientapi.md)[] | :heavy_check_mark: | N/A | +| `required` | *boolean* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/containerregistrymanagersnapshot.md b/client-sdks/platform/typescript/docs/models/containerregistrymanagersnapshot.md new file mode 100644 index 000000000..874a6c61c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/containerregistrymanagersnapshot.md @@ -0,0 +1,44 @@ +# ContainerRegistryManagerSnapshot + +## Example Usage + +```typescript +import { ContainerRegistryManagerSnapshot } from "@alienplatform/platform-api/models"; + +let value: ContainerRegistryManagerSnapshot = { + generatedAt: new Date("2024-05-29T08:29:14.011Z"), + routes: [ + { + id: "crroute_c9t4xoy7fmiq7equtu20", + deploymentId: "", + resourceId: "", + resourceRevision: "", + desiredRevision: 618205, + appliedRevision: 940160, + status: "connected", + repositories: [], + credentials: [ + { + id: "crcred_oz1xjr82f37j17g4gtmyu", + secretPrefix: "", + secretDigest: "", + scope: "pushPull", + repositorySubset: [ + "", + "", + ], + expiresAt: new Date("2026-06-28T15:05:52.870Z"), + revokedAt: new Date("2025-03-04T20:06:17.536Z"), + }, + ], + }, + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `generatedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | +| `routes` | [models.ContainerRegistryManagerSnapshotRoute](../models/containerregistrymanagersnapshotroute.md)[] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/containerregistrymanagersnapshotcredential.md b/client-sdks/platform/typescript/docs/models/containerregistrymanagersnapshotcredential.md new file mode 100644 index 000000000..56e3a851e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/containerregistrymanagersnapshotcredential.md @@ -0,0 +1,31 @@ +# ContainerRegistryManagerSnapshotCredential + +## Example Usage + +```typescript +import { ContainerRegistryManagerSnapshotCredential } from "@alienplatform/platform-api/models"; + +let value: ContainerRegistryManagerSnapshotCredential = { + id: "crcred_oz1xjr82f37j17g4gtmyu", + secretPrefix: "", + secretDigest: "", + scope: "pull", + repositorySubset: [ + "", + ], + expiresAt: new Date("2026-12-30T16:41:58.517Z"), + revokedAt: new Date("2026-08-15T16:24:47.001Z"), +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the container registry credential. | crcred_oz1xjr82f37j17g4gtmyu | +| `secretPrefix` | *string* | :heavy_check_mark: | N/A | | +| `secretDigest` | *string* | :heavy_check_mark: | N/A | | +| `scope` | [models.ContainerRegistryManagerSnapshotScope](../models/containerregistrymanagersnapshotscope.md) | :heavy_check_mark: | N/A | | +| `repositorySubset` | *string*[] | :heavy_check_mark: | N/A | | +| `expiresAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `revokedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/containerregistrymanagersnapshotdesiredstate.md b/client-sdks/platform/typescript/docs/models/containerregistrymanagersnapshotdesiredstate.md new file mode 100644 index 000000000..46914ff9d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/containerregistrymanagersnapshotdesiredstate.md @@ -0,0 +1,15 @@ +# ContainerRegistryManagerSnapshotDesiredState + +## Example Usage + +```typescript +import { ContainerRegistryManagerSnapshotDesiredState } from "@alienplatform/platform-api/models"; + +let value: ContainerRegistryManagerSnapshotDesiredState = "deleted"; +``` + +## Values + +```typescript +"present" | "deleteRequested" | "deleted" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/containerregistrymanagersnapshotrepository.md b/client-sdks/platform/typescript/docs/models/containerregistrymanagersnapshotrepository.md new file mode 100644 index 000000000..a3e287efe --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/containerregistrymanagersnapshotrepository.md @@ -0,0 +1,25 @@ +# ContainerRegistryManagerSnapshotRepository + +## Example Usage + +```typescript +import { ContainerRegistryManagerSnapshotRepository } from "@alienplatform/platform-api/models"; + +let value: ContainerRegistryManagerSnapshotRepository = { + id: "crrepo_625temdq3bnu25jw9rcux", + logicalName: "", + desiredState: "deleted", + routableUpstreamName: "", + remoteResourceRevision: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the container registry repository. | crrepo_625temdq3bnu25jw9rcux | +| `logicalName` | *string* | :heavy_check_mark: | N/A | | +| `desiredState` | [models.ContainerRegistryManagerSnapshotDesiredState](../models/containerregistrymanagersnapshotdesiredstate.md) | :heavy_check_mark: | N/A | | +| `routableUpstreamName` | *string* | :heavy_check_mark: | N/A | | +| `remoteResourceRevision` | *string* | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/containerregistrymanagersnapshotroute.md b/client-sdks/platform/typescript/docs/models/containerregistrymanagersnapshotroute.md new file mode 100644 index 000000000..43160ec3b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/containerregistrymanagersnapshotroute.md @@ -0,0 +1,41 @@ +# ContainerRegistryManagerSnapshotRoute + +## Example Usage + +```typescript +import { ContainerRegistryManagerSnapshotRoute } from "@alienplatform/platform-api/models"; + +let value: ContainerRegistryManagerSnapshotRoute = { + id: "crroute_c9t4xoy7fmiq7equtu20", + deploymentId: "", + resourceId: "", + resourceRevision: "", + desiredRevision: 197709, + appliedRevision: 106112, + status: "resolving", + repositories: [ + { + id: "crrepo_625temdq3bnu25jw9rcux", + logicalName: "", + desiredState: "deleteRequested", + routableUpstreamName: "", + remoteResourceRevision: "", + }, + ], + credentials: [], +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the container registry route. | crroute_c9t4xoy7fmiq7equtu20 | +| `deploymentId` | *string* | :heavy_check_mark: | N/A | | +| `resourceId` | *string* | :heavy_check_mark: | N/A | | +| `resourceRevision` | *string* | :heavy_check_mark: | N/A | | +| `desiredRevision` | *number* | :heavy_check_mark: | N/A | | +| `appliedRevision` | *number* | :heavy_check_mark: | N/A | | +| `status` | [models.ContainerRegistryManagerSnapshotStatus](../models/containerregistrymanagersnapshotstatus.md) | :heavy_check_mark: | N/A | | +| `repositories` | [models.ContainerRegistryManagerSnapshotRepository](../models/containerregistrymanagersnapshotrepository.md)[] | :heavy_check_mark: | N/A | | +| `credentials` | [models.ContainerRegistryManagerSnapshotCredential](../models/containerregistrymanagersnapshotcredential.md)[] | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/containerregistrymanagersnapshotscope.md b/client-sdks/platform/typescript/docs/models/containerregistrymanagersnapshotscope.md new file mode 100644 index 000000000..68874eda3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/containerregistrymanagersnapshotscope.md @@ -0,0 +1,15 @@ +# ContainerRegistryManagerSnapshotScope + +## Example Usage + +```typescript +import { ContainerRegistryManagerSnapshotScope } from "@alienplatform/platform-api/models"; + +let value: ContainerRegistryManagerSnapshotScope = "pushPull"; +``` + +## Values + +```typescript +"pull" | "pushPull" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/containerregistrymanagersnapshotstatus.md b/client-sdks/platform/typescript/docs/models/containerregistrymanagersnapshotstatus.md new file mode 100644 index 000000000..63700740f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/containerregistrymanagersnapshotstatus.md @@ -0,0 +1,15 @@ +# ContainerRegistryManagerSnapshotStatus + +## Example Usage + +```typescript +import { ContainerRegistryManagerSnapshotStatus } from "@alienplatform/platform-api/models"; + +let value: ContainerRegistryManagerSnapshotStatus = "applying"; +``` + +## Values + +```typescript +"resolving" | "applying" | "connected" | "degraded" | "revoking" | "revoked" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/containerregistrystate.md b/client-sdks/platform/typescript/docs/models/containerregistrystate.md new file mode 100644 index 000000000..461ccc294 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/containerregistrystate.md @@ -0,0 +1,36 @@ +# ContainerRegistryState + +## Example Usage + +```typescript +import { ContainerRegistryState } from "@alienplatform/platform-api/models"; + +let value: ContainerRegistryState = { + route: null, + endpoint: null, + repositories: [], + credentials: [ + { + id: "crcred_oz1xjr82f37j17g4gtmyu", + label: "", + scope: "pushPull", + repositorySubset: [ + "", + ], + expiresAt: new Date("2024-10-29T23:56:01.394Z"), + lastUsedAt: new Date("2026-09-08T03:35:29.050Z"), + revokedAt: new Date("2024-10-03T21:49:18.137Z"), + createdAt: new Date("2024-05-23T04:16:56.268Z"), + }, + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `route` | [models.ContainerRegistryStateRoute](../models/containerregistrystateroute.md) | :heavy_check_mark: | N/A | +| `endpoint` | [models.Endpoint](../models/endpoint.md) | :heavy_check_mark: | N/A | +| `repositories` | [models.ContainerRegistryStateRepository](../models/containerregistrystaterepository.md)[] | :heavy_check_mark: | N/A | +| `credentials` | [models.ContainerRegistryStateCredential](../models/containerregistrystatecredential.md)[] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/containerregistrystatecredential.md b/client-sdks/platform/typescript/docs/models/containerregistrystatecredential.md new file mode 100644 index 000000000..6368f872e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/containerregistrystatecredential.md @@ -0,0 +1,33 @@ +# ContainerRegistryStateCredential + +## Example Usage + +```typescript +import { ContainerRegistryStateCredential } from "@alienplatform/platform-api/models"; + +let value: ContainerRegistryStateCredential = { + id: "crcred_oz1xjr82f37j17g4gtmyu", + label: "", + scope: "pushPull", + repositorySubset: [ + "", + ], + expiresAt: new Date("2025-07-14T04:55:52.152Z"), + lastUsedAt: new Date("2024-07-31T14:40:33.562Z"), + revokedAt: new Date("2026-12-23T05:59:54.307Z"), + createdAt: new Date("2024-10-19T14:39:14.123Z"), +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the container registry credential. | crcred_oz1xjr82f37j17g4gtmyu | +| `label` | *string* | :heavy_check_mark: | N/A | | +| `scope` | [models.ContainerRegistryStateScope](../models/containerregistrystatescope.md) | :heavy_check_mark: | N/A | | +| `repositorySubset` | *string*[] | :heavy_check_mark: | N/A | | +| `expiresAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `lastUsedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `revokedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `createdAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/containerregistrystatedesiredstate.md b/client-sdks/platform/typescript/docs/models/containerregistrystatedesiredstate.md new file mode 100644 index 000000000..8cea9e367 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/containerregistrystatedesiredstate.md @@ -0,0 +1,15 @@ +# ContainerRegistryStateDesiredState + +## Example Usage + +```typescript +import { ContainerRegistryStateDesiredState } from "@alienplatform/platform-api/models"; + +let value: ContainerRegistryStateDesiredState = "deleted"; +``` + +## Values + +```typescript +"present" | "deleteRequested" | "deleted" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/containerregistrystaterepository.md b/client-sdks/platform/typescript/docs/models/containerregistrystaterepository.md new file mode 100644 index 000000000..2d6cd57d4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/containerregistrystaterepository.md @@ -0,0 +1,25 @@ +# ContainerRegistryStateRepository + +## Example Usage + +```typescript +import { ContainerRegistryStateRepository } from "@alienplatform/platform-api/models"; + +let value: ContainerRegistryStateRepository = { + id: "crrepo_625temdq3bnu25jw9rcux", + logicalName: "", + desiredState: "deleteRequested", + status: "creating", + verifiedAt: new Date("2026-06-17T16:21:20.305Z"), +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the container registry repository. | crrepo_625temdq3bnu25jw9rcux | +| `logicalName` | *string* | :heavy_check_mark: | N/A | | +| `desiredState` | [models.ContainerRegistryStateDesiredState](../models/containerregistrystatedesiredstate.md) | :heavy_check_mark: | N/A | | +| `status` | [models.RepositoryStatus](../models/repositorystatus.md) | :heavy_check_mark: | N/A | | +| `verifiedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/containerregistrystateroute.md b/client-sdks/platform/typescript/docs/models/containerregistrystateroute.md new file mode 100644 index 000000000..df31d978c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/containerregistrystateroute.md @@ -0,0 +1,35 @@ +# ContainerRegistryStateRoute + +## Example Usage + +```typescript +import { ContainerRegistryStateRoute } from "@alienplatform/platform-api/models"; + +let value: ContainerRegistryStateRoute = { + id: "crroute_c9t4xoy7fmiq7equtu20", + deploymentId: "dep_0c29fq4a2yjb7kx3smwdgxlc", + managerId: "", + resourceId: "", + resourceRevision: "", + desiredRevision: 667649, + appliedRevision: 376748, + status: "resolving", + lastVerifiedAt: new Date("2026-11-24T20:30:53.788Z"), + lastError: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the container registry route. | crroute_c9t4xoy7fmiq7equtu20 | +| `deploymentId` | *string* | :heavy_check_mark: | Unique identifier for the deployment. | dep_0c29fq4a2yjb7kx3smwdgxlc | +| `managerId` | *string* | :heavy_check_mark: | N/A | | +| `resourceId` | *string* | :heavy_check_mark: | N/A | | +| `resourceRevision` | *string* | :heavy_check_mark: | N/A | | +| `desiredRevision` | *number* | :heavy_check_mark: | N/A | | +| `appliedRevision` | *number* | :heavy_check_mark: | N/A | | +| `status` | [models.ContainerRegistryStateRouteStatus](../models/containerregistrystateroutestatus.md) | :heavy_check_mark: | N/A | | +| `lastVerifiedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `lastError` | *string* | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/containerregistrystateroutestatus.md b/client-sdks/platform/typescript/docs/models/containerregistrystateroutestatus.md new file mode 100644 index 000000000..2b03d68cc --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/containerregistrystateroutestatus.md @@ -0,0 +1,15 @@ +# ContainerRegistryStateRouteStatus + +## Example Usage + +```typescript +import { ContainerRegistryStateRouteStatus } from "@alienplatform/platform-api/models"; + +let value: ContainerRegistryStateRouteStatus = "connected"; +``` + +## Values + +```typescript +"resolving" | "applying" | "connected" | "degraded" | "revoking" | "revoked" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/containerregistrystatescope.md b/client-sdks/platform/typescript/docs/models/containerregistrystatescope.md new file mode 100644 index 000000000..86f55c7c0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/containerregistrystatescope.md @@ -0,0 +1,15 @@ +# ContainerRegistryStateScope + +## Example Usage + +```typescript +import { ContainerRegistryStateScope } from "@alienplatform/platform-api/models"; + +let value: ContainerRegistryStateScope = "pull"; +``` + +## Values + +```typescript +"pull" | "pushPull" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/containerregistrystatesource.md b/client-sdks/platform/typescript/docs/models/containerregistrystatesource.md new file mode 100644 index 000000000..46ef84935 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/containerregistrystatesource.md @@ -0,0 +1,15 @@ +# ContainerRegistryStateSource + +## Example Usage + +```typescript +import { ContainerRegistryStateSource } from "@alienplatform/platform-api/models"; + +let value: ContainerRegistryStateSource = "runtime"; +``` + +## Values + +```typescript +"runtime" | "custom-domain" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/createapikeyresponse.md b/client-sdks/platform/typescript/docs/models/createapikeyresponse.md index bb66fa5a8..de9c8cffd 100644 --- a/client-sdks/platform/typescript/docs/models/createapikeyresponse.md +++ b/client-sdks/platform/typescript/docs/models/createapikeyresponse.md @@ -28,20 +28,20 @@ let value: CreateAPIKeyResponse = { deploymentSetupConfig: { metadata: { "key": "", - "key1": "", - "key2": "", }, policy: { allowedPlatforms: [], - allowedSetupMethods: [], + allowedSetupMethods: [ + "google-oauth", + ], }, environmentVariables: [], items: [ { - item: "models", + item: "keys", source: { type: "built-in", - definitionId: "customer-key", + definitionId: "customer-registry", version: "", sourceReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", }, diff --git a/client-sdks/platform/typescript/docs/models/createcontainerregistrycredentialresponse.md b/client-sdks/platform/typescript/docs/models/createcontainerregistrycredentialresponse.md new file mode 100644 index 000000000..9a7054f2b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/createcontainerregistrycredentialresponse.md @@ -0,0 +1,30 @@ +# CreateContainerRegistryCredentialResponse + +## Example Usage + +```typescript +import { CreateContainerRegistryCredentialResponse } from "@alienplatform/platform-api/models"; + +let value: CreateContainerRegistryCredentialResponse = { + credential: { + id: "crcred_oz1xjr82f37j17g4gtmyu", + label: "", + scope: "pull", + repositorySubset: [], + expiresAt: new Date("2025-12-20T20:26:57.148Z"), + lastUsedAt: new Date("2026-02-06T06:37:07.935Z"), + revokedAt: new Date("2024-05-07T15:36:30.798Z"), + createdAt: new Date("2024-08-07T10:25:48.379Z"), + }, + username: "alien", + password: "m2ADUHYmHdcnzc5", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `credential` | [models.CreateContainerRegistryCredentialResponseCredential](../models/createcontainerregistrycredentialresponsecredential.md) | :heavy_check_mark: | N/A | +| `username` | [models.UsernameEnum](../models/usernameenum.md) | :heavy_check_mark: | N/A | +| `password` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/createcontainerregistrycredentialresponsecredential.md b/client-sdks/platform/typescript/docs/models/createcontainerregistrycredentialresponsecredential.md new file mode 100644 index 000000000..f4fb9106e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/createcontainerregistrycredentialresponsecredential.md @@ -0,0 +1,31 @@ +# CreateContainerRegistryCredentialResponseCredential + +## Example Usage + +```typescript +import { CreateContainerRegistryCredentialResponseCredential } from "@alienplatform/platform-api/models"; + +let value: CreateContainerRegistryCredentialResponseCredential = { + id: "crcred_oz1xjr82f37j17g4gtmyu", + label: "", + scope: "pull", + repositorySubset: [], + expiresAt: null, + lastUsedAt: new Date("2026-06-30T20:12:21.553Z"), + revokedAt: new Date("2026-10-21T10:09:36.767Z"), + createdAt: new Date("2024-07-14T08:43:32.299Z"), +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the container registry credential. | crcred_oz1xjr82f37j17g4gtmyu | +| `label` | *string* | :heavy_check_mark: | N/A | | +| `scope` | [models.CreateContainerRegistryCredentialResponseScope](../models/createcontainerregistrycredentialresponsescope.md) | :heavy_check_mark: | N/A | | +| `repositorySubset` | *string*[] | :heavy_check_mark: | N/A | | +| `expiresAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `lastUsedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `revokedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `createdAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/createcontainerregistrycredentialresponsescope.md b/client-sdks/platform/typescript/docs/models/createcontainerregistrycredentialresponsescope.md new file mode 100644 index 000000000..f2dc6c11c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/createcontainerregistrycredentialresponsescope.md @@ -0,0 +1,15 @@ +# CreateContainerRegistryCredentialResponseScope + +## Example Usage + +```typescript +import { CreateContainerRegistryCredentialResponseScope } from "@alienplatform/platform-api/models"; + +let value: CreateContainerRegistryCredentialResponseScope = "pushPull"; +``` + +## Values + +```typescript +"pull" | "pushPull" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/createdby.md b/client-sdks/platform/typescript/docs/models/createdby.md new file mode 100644 index 000000000..a83307bef --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/createdby.md @@ -0,0 +1,25 @@ +# CreatedBy + +Platform user who created the release, included when ?include=createdBy is used + +## Example Usage + +```typescript +import { CreatedBy } from "@alienplatform/platform-api/models"; + +let value: CreatedBy = { + id: "", + name: "", + email: "Jacky.Marvin@yahoo.com", + image: "https://loremflickr.com/3225/676?lock=2601971394296232", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------- | ----------------------- | ----------------------- | ----------------------- | +| `id` | *string* | :heavy_check_mark: | User ID | +| `name` | *string* | :heavy_check_mark: | User's display name | +| `email` | *string* | :heavy_check_mark: | User's email address | +| `image` | *string* | :heavy_check_mark: | User's avatar image URL | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/createdeploymentgrouptokenrequest.md b/client-sdks/platform/typescript/docs/models/createdeploymentgrouptokenrequest.md index fe2a2b703..8ebf7bac4 100644 --- a/client-sdks/platform/typescript/docs/models/createdeploymentgrouptokenrequest.md +++ b/client-sdks/platform/typescript/docs/models/createdeploymentgrouptokenrequest.md @@ -10,9 +10,21 @@ let value: CreateDeploymentGroupTokenRequest = { metadata: {}, policy: { allowedPlatforms: [], - allowedSetupMethods: [], + allowedSetupMethods: [ + "google-oauth", + ], }, - environmentVariables: [], + environmentVariables: [ + { + name: "", + value: "", + type: "plain", + targetResources: [ + "", + "", + ], + }, + ], }, }; ``` diff --git a/client-sdks/platform/typescript/docs/models/createdeploymentresponse.md b/client-sdks/platform/typescript/docs/models/createdeploymentresponse.md index f4a8e527b..8a0c3549c 100644 --- a/client-sdks/platform/typescript/docs/models/createdeploymentresponse.md +++ b/client-sdks/platform/typescript/docs/models/createdeploymentresponse.md @@ -14,13 +14,51 @@ let value: CreateDeploymentResponse = { platform: "kubernetes", deploymentProtocolVersion: 883690, deploymentGroupId: "dg_r27ict8c7vcgsumpj90ackf7b", + purpose: "encryption", stackSettings: {}, currentReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", desiredReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", pinnedReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", - retryRequested: true, - createdAt: new Date("2025-11-27T13:33:53.835Z"), - updatedAt: new Date("2024-08-29T09:22:49.431Z"), + releaseChannel: "", + retryRequested: false, + updateState: { + active: { + id: "duop_0vtxpb1sw4sbcdwg2xo37q6", + status: "applying", + reasons: [], + targetReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", + changedKeys: [], + requestedAt: new Date("2026-04-28T10:12:17.277Z"), + }, + next: { + id: "duop_0vtxpb1sw4sbcdwg2xo37q6", + status: "queued", + reasons: [], + targetReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", + changedKeys: [ + "", + "", + "", + ], + requestedAt: new Date("2025-05-23T02:17:08.731Z"), + }, + latest: { + id: "duop_0vtxpb1sw4sbcdwg2xo37q6", + status: "superseded", + reasons: [ + "redeploy", + ], + targetReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", + changedKeys: [ + "", + "", + "", + ], + requestedAt: new Date("2024-11-23T19:43:18.153Z"), + }, + }, + createdAt: new Date("2024-01-02T08:31:30.348Z"), + updatedAt: new Date("2025-07-14T02:26:55.487Z"), managerId: "mgr_enxscjrqiiu2lrc672hwwuc5", workspaceId: "ws_It13CUaGEhLLAB87simX0", }, diff --git a/client-sdks/platform/typescript/docs/models/createmanagerresponse.md b/client-sdks/platform/typescript/docs/models/createmanagerresponse.md index a6f78361e..17a304ebd 100644 --- a/client-sdks/platform/typescript/docs/models/createmanagerresponse.md +++ b/client-sdks/platform/typescript/docs/models/createmanagerresponse.md @@ -18,13 +18,15 @@ let value: CreateManagerResponse = { }, policy: { allowedPlatforms: [], - allowedSetupMethods: [], + allowedSetupMethods: [ + "google-oauth", + ], }, items: [ { - item: "alien-stack", + item: "deployment", source: { - type: "application-release", + type: "project-release", releaseChannel: "", releaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", }, diff --git a/client-sdks/platform/typescript/docs/models/createmanagerresponseallowedprovider.md b/client-sdks/platform/typescript/docs/models/createmanagerresponseallowedprovider.md index ad68c7b65..5b05b0322 100644 --- a/client-sdks/platform/typescript/docs/models/createmanagerresponseallowedprovider.md +++ b/client-sdks/platform/typescript/docs/models/createmanagerresponseallowedprovider.md @@ -11,5 +11,5 @@ let value: CreateManagerResponseAllowedProvider = "aws-bedrock"; ## Values ```typescript -"aws-bedrock" | "gcp-vertex" | "azure-foundry" | "anthropic" +"aws-bedrock" | "gcp-vertex" | "azure-foundry" | "anthropic" | "databricks" | "openai" ``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/createmanagerresponsedefinitionid.md b/client-sdks/platform/typescript/docs/models/createmanagerresponsedefinitionid.md index 7240e5ec9..8466ad80f 100644 --- a/client-sdks/platform/typescript/docs/models/createmanagerresponsedefinitionid.md +++ b/client-sdks/platform/typescript/docs/models/createmanagerresponsedefinitionid.md @@ -11,5 +11,5 @@ let value: CreateManagerResponseDefinitionId = "customer-ai"; ## Values ```typescript -"customer-ai" | "customer-key" +"customer-ai" | "customer-key" | "customer-storage" | "customer-registry" ``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/createmanagerresponsefailuredomains1.md b/client-sdks/platform/typescript/docs/models/createmanagerresponsefailuredomains1.md new file mode 100644 index 000000000..b1ff658d8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/createmanagerresponsefailuredomains1.md @@ -0,0 +1,20 @@ +# CreateManagerResponseFailureDomains1 + +Failure-domain policy selected for a compute pool. + +## Example Usage + +```typescript +import { CreateManagerResponseFailureDomains1 } from "@alienplatform/platform-api/models"; + +let value: CreateManagerResponseFailureDomains1 = { + spread: 897218, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `selectedFailureDomains` | *string*[] | :heavy_minus_sign: | Concrete provider domains selected during setup.
Empty delegates deterministic selection to the provider setup implementation. | +| `spread` | *number* | :heavy_check_mark: | Number of distinct failure domains across which new stateful replicas may be spread. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/createmanagerresponsefailuredomains2.md b/client-sdks/platform/typescript/docs/models/createmanagerresponsefailuredomains2.md new file mode 100644 index 000000000..4e8064e5c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/createmanagerresponsefailuredomains2.md @@ -0,0 +1,20 @@ +# CreateManagerResponseFailureDomains2 + +Failure-domain policy selected for a compute pool. + +## Example Usage + +```typescript +import { CreateManagerResponseFailureDomains2 } from "@alienplatform/platform-api/models"; + +let value: CreateManagerResponseFailureDomains2 = { + spread: 450195, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `selectedFailureDomains` | *string*[] | :heavy_minus_sign: | Concrete provider domains selected during setup.
Empty delegates deterministic selection to the provider setup implementation. | +| `spread` | *number* | :heavy_check_mark: | Number of distinct failure domains across which new stateful replicas may be spread. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/createmanagerresponsefailuredomains3.md b/client-sdks/platform/typescript/docs/models/createmanagerresponsefailuredomains3.md new file mode 100644 index 000000000..c0814d182 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/createmanagerresponsefailuredomains3.md @@ -0,0 +1,20 @@ +# CreateManagerResponseFailureDomains3 + +Failure-domain policy selected for a compute pool. + +## Example Usage + +```typescript +import { CreateManagerResponseFailureDomains3 } from "@alienplatform/platform-api/models"; + +let value: CreateManagerResponseFailureDomains3 = { + spread: 297029, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `selectedFailureDomains` | *string*[] | :heavy_minus_sign: | Concrete provider domains selected during setup.
Empty delegates deterministic selection to the provider setup implementation. | +| `spread` | *number* | :heavy_check_mark: | Number of distinct failure domains across which new stateful replicas may be spread. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/createmanagerresponsefailuredomains4.md b/client-sdks/platform/typescript/docs/models/createmanagerresponsefailuredomains4.md new file mode 100644 index 000000000..3e7210033 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/createmanagerresponsefailuredomains4.md @@ -0,0 +1,20 @@ +# CreateManagerResponseFailureDomains4 + +Failure-domain policy selected for a compute pool. + +## Example Usage + +```typescript +import { CreateManagerResponseFailureDomains4 } from "@alienplatform/platform-api/models"; + +let value: CreateManagerResponseFailureDomains4 = { + spread: 596209, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `selectedFailureDomains` | *string*[] | :heavy_minus_sign: | Concrete provider domains selected during setup.
Empty delegates deterministic selection to the provider setup implementation. | +| `spread` | *number* | :heavy_check_mark: | Number of distinct failure domains across which new stateful replicas may be spread. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/createmanagerresponsefailuredomains5.md b/client-sdks/platform/typescript/docs/models/createmanagerresponsefailuredomains5.md new file mode 100644 index 000000000..8d70aa541 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/createmanagerresponsefailuredomains5.md @@ -0,0 +1,20 @@ +# CreateManagerResponseFailureDomains5 + +Failure-domain policy selected for a compute pool. + +## Example Usage + +```typescript +import { CreateManagerResponseFailureDomains5 } from "@alienplatform/platform-api/models"; + +let value: CreateManagerResponseFailureDomains5 = { + spread: 178175, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `selectedFailureDomains` | *string*[] | :heavy_minus_sign: | Concrete provider domains selected during setup.
Empty delegates deterministic selection to the provider setup implementation. | +| `spread` | *number* | :heavy_check_mark: | Number of distinct failure domains across which new stateful replicas may be spread. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/createmanagerresponsefailuredomains6.md b/client-sdks/platform/typescript/docs/models/createmanagerresponsefailuredomains6.md new file mode 100644 index 000000000..8ac901493 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/createmanagerresponsefailuredomains6.md @@ -0,0 +1,20 @@ +# CreateManagerResponseFailureDomains6 + +Failure-domain policy selected for a compute pool. + +## Example Usage + +```typescript +import { CreateManagerResponseFailureDomains6 } from "@alienplatform/platform-api/models"; + +let value: CreateManagerResponseFailureDomains6 = { + spread: 219970, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `selectedFailureDomains` | *string*[] | :heavy_minus_sign: | Concrete provider domains selected during setup.
Empty delegates deterministic selection to the provider setup implementation. | +| `spread` | *number* | :heavy_check_mark: | Number of distinct failure domains across which new stateful replicas may be spread. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/createmanagerresponsefailuredomainsunion1.md b/client-sdks/platform/typescript/docs/models/createmanagerresponsefailuredomainsunion1.md new file mode 100644 index 000000000..7c2a18ba3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/createmanagerresponsefailuredomainsunion1.md @@ -0,0 +1,19 @@ +# CreateManagerResponseFailureDomainsUnion1 + + +## Supported Types + +### `models.CreateManagerResponseFailureDomains1` + +```typescript +const value: models.CreateManagerResponseFailureDomains1 = { + spread: 897218, +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/createmanagerresponsefailuredomainsunion2.md b/client-sdks/platform/typescript/docs/models/createmanagerresponsefailuredomainsunion2.md new file mode 100644 index 000000000..88bc9aed5 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/createmanagerresponsefailuredomainsunion2.md @@ -0,0 +1,19 @@ +# CreateManagerResponseFailureDomainsUnion2 + + +## Supported Types + +### `models.CreateManagerResponseFailureDomains2` + +```typescript +const value: models.CreateManagerResponseFailureDomains2 = { + spread: 450195, +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/createmanagerresponsefailuredomainsunion3.md b/client-sdks/platform/typescript/docs/models/createmanagerresponsefailuredomainsunion3.md new file mode 100644 index 000000000..32d31535b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/createmanagerresponsefailuredomainsunion3.md @@ -0,0 +1,19 @@ +# CreateManagerResponseFailureDomainsUnion3 + + +## Supported Types + +### `models.CreateManagerResponseFailureDomains3` + +```typescript +const value: models.CreateManagerResponseFailureDomains3 = { + spread: 297029, +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/createmanagerresponsefailuredomainsunion4.md b/client-sdks/platform/typescript/docs/models/createmanagerresponsefailuredomainsunion4.md new file mode 100644 index 000000000..af9a8a8af --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/createmanagerresponsefailuredomainsunion4.md @@ -0,0 +1,19 @@ +# CreateManagerResponseFailureDomainsUnion4 + + +## Supported Types + +### `models.CreateManagerResponseFailureDomains4` + +```typescript +const value: models.CreateManagerResponseFailureDomains4 = { + spread: 596209, +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/createmanagerresponsefailuredomainsunion5.md b/client-sdks/platform/typescript/docs/models/createmanagerresponsefailuredomainsunion5.md new file mode 100644 index 000000000..78efc0500 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/createmanagerresponsefailuredomainsunion5.md @@ -0,0 +1,19 @@ +# CreateManagerResponseFailureDomainsUnion5 + + +## Supported Types + +### `models.CreateManagerResponseFailureDomains5` + +```typescript +const value: models.CreateManagerResponseFailureDomains5 = { + spread: 178175, +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/createmanagerresponsefailuredomainsunion6.md b/client-sdks/platform/typescript/docs/models/createmanagerresponsefailuredomainsunion6.md new file mode 100644 index 000000000..cfc4261b6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/createmanagerresponsefailuredomainsunion6.md @@ -0,0 +1,19 @@ +# CreateManagerResponseFailureDomainsUnion6 + + +## Supported Types + +### `models.CreateManagerResponseFailureDomains6` + +```typescript +const value: models.CreateManagerResponseFailureDomains6 = { + spread: 219970, +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/createmanagerresponseitem.md b/client-sdks/platform/typescript/docs/models/createmanagerresponseitem.md index da003469f..fe2ca44a3 100644 --- a/client-sdks/platform/typescript/docs/models/createmanagerresponseitem.md +++ b/client-sdks/platform/typescript/docs/models/createmanagerresponseitem.md @@ -6,9 +6,9 @@ import { CreateManagerResponseItem } from "@alienplatform/platform-api/models"; let value: CreateManagerResponseItem = { - item: "alien-stack", + item: "deployment", source: { - type: "application-release", + type: "project-release", releaseChannel: "", releaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", }, diff --git a/client-sdks/platform/typescript/docs/models/createmanagerresponseitemenum.md b/client-sdks/platform/typescript/docs/models/createmanagerresponseitemenum.md index d20e23772..bc4982ce7 100644 --- a/client-sdks/platform/typescript/docs/models/createmanagerresponseitemenum.md +++ b/client-sdks/platform/typescript/docs/models/createmanagerresponseitemenum.md @@ -5,11 +5,11 @@ ```typescript import { CreateManagerResponseItemEnum } from "@alienplatform/platform-api/models"; -let value: CreateManagerResponseItemEnum = "keys"; +let value: CreateManagerResponseItemEnum = "registry"; ``` ## Values ```typescript -"alien-stack" | "models" | "keys" +"deployment" | "models" | "keys" | "bucket" | "registry" ``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/createmanagerresponsepoolsautoscale1.md b/client-sdks/platform/typescript/docs/models/createmanagerresponsepoolsautoscale1.md index cb1ecb7c3..6734d0708 100644 --- a/client-sdks/platform/typescript/docs/models/createmanagerresponsepoolsautoscale1.md +++ b/client-sdks/platform/typescript/docs/models/createmanagerresponsepoolsautoscale1.md @@ -16,6 +16,7 @@ let value: CreateManagerResponsePoolsAutoscale1 = { | Field | Type | Required | Description | | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | +| `failureDomains` | *models.CreateManagerResponseFailureDomainsUnion2* | :heavy_minus_sign: | N/A | | `machine` | *string* | :heavy_minus_sign: | Provider machine type selected for this deployment. | | `max` | *number* | :heavy_check_mark: | Maximum machine count. | | `min` | *number* | :heavy_check_mark: | Minimum machine count. | diff --git a/client-sdks/platform/typescript/docs/models/createmanagerresponsepoolsautoscale2.md b/client-sdks/platform/typescript/docs/models/createmanagerresponsepoolsautoscale2.md index f7f0d2031..747524924 100644 --- a/client-sdks/platform/typescript/docs/models/createmanagerresponsepoolsautoscale2.md +++ b/client-sdks/platform/typescript/docs/models/createmanagerresponsepoolsautoscale2.md @@ -16,6 +16,7 @@ let value: CreateManagerResponsePoolsAutoscale2 = { | Field | Type | Required | Description | | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | +| `failureDomains` | *models.CreateManagerResponseFailureDomainsUnion4* | :heavy_minus_sign: | N/A | | `machine` | *string* | :heavy_minus_sign: | Provider machine type selected for this deployment. | | `max` | *number* | :heavy_check_mark: | Maximum machine count. | | `min` | *number* | :heavy_check_mark: | Minimum machine count. | diff --git a/client-sdks/platform/typescript/docs/models/createmanagerresponsepoolsautoscale3.md b/client-sdks/platform/typescript/docs/models/createmanagerresponsepoolsautoscale3.md index 9d13dc814..dac6bfc8e 100644 --- a/client-sdks/platform/typescript/docs/models/createmanagerresponsepoolsautoscale3.md +++ b/client-sdks/platform/typescript/docs/models/createmanagerresponsepoolsautoscale3.md @@ -16,6 +16,7 @@ let value: CreateManagerResponsePoolsAutoscale3 = { | Field | Type | Required | Description | | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | +| `failureDomains` | *models.CreateManagerResponseFailureDomainsUnion6* | :heavy_minus_sign: | N/A | | `machine` | *string* | :heavy_minus_sign: | Provider machine type selected for this deployment. | | `max` | *number* | :heavy_check_mark: | Maximum machine count. | | `min` | *number* | :heavy_check_mark: | Minimum machine count. | diff --git a/client-sdks/platform/typescript/docs/models/createmanagerresponsepoolsfixed1.md b/client-sdks/platform/typescript/docs/models/createmanagerresponsepoolsfixed1.md index 7dee6b606..ca1c88a49 100644 --- a/client-sdks/platform/typescript/docs/models/createmanagerresponsepoolsfixed1.md +++ b/client-sdks/platform/typescript/docs/models/createmanagerresponsepoolsfixed1.md @@ -15,6 +15,7 @@ let value: CreateManagerResponsePoolsFixed1 = { | Field | Type | Required | Description | | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | +| `failureDomains` | *models.CreateManagerResponseFailureDomainsUnion1* | :heavy_minus_sign: | N/A | | `machine` | *string* | :heavy_minus_sign: | Provider machine type selected for this deployment. | | `machines` | *number* | :heavy_check_mark: | Number of machines to run. | | `mode` | *"fixed"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/createmanagerresponsepoolsfixed2.md b/client-sdks/platform/typescript/docs/models/createmanagerresponsepoolsfixed2.md index 1cc3557ea..bfd72a53b 100644 --- a/client-sdks/platform/typescript/docs/models/createmanagerresponsepoolsfixed2.md +++ b/client-sdks/platform/typescript/docs/models/createmanagerresponsepoolsfixed2.md @@ -15,6 +15,7 @@ let value: CreateManagerResponsePoolsFixed2 = { | Field | Type | Required | Description | | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | +| `failureDomains` | *models.CreateManagerResponseFailureDomainsUnion3* | :heavy_minus_sign: | N/A | | `machine` | *string* | :heavy_minus_sign: | Provider machine type selected for this deployment. | | `machines` | *number* | :heavy_check_mark: | Number of machines to run. | | `mode` | *"fixed"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/createmanagerresponsepoolsfixed3.md b/client-sdks/platform/typescript/docs/models/createmanagerresponsepoolsfixed3.md index 5bf975c7b..58df17d47 100644 --- a/client-sdks/platform/typescript/docs/models/createmanagerresponsepoolsfixed3.md +++ b/client-sdks/platform/typescript/docs/models/createmanagerresponsepoolsfixed3.md @@ -15,6 +15,7 @@ let value: CreateManagerResponsePoolsFixed3 = { | Field | Type | Required | Description | | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | +| `failureDomains` | *models.CreateManagerResponseFailureDomainsUnion5* | :heavy_minus_sign: | N/A | | `machine` | *string* | :heavy_minus_sign: | Provider machine type selected for this deployment. | | `machines` | *number* | :heavy_check_mark: | Number of machines to run. | | `mode` | *"fixed"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/createmanagerresponsesetupconfig.md b/client-sdks/platform/typescript/docs/models/createmanagerresponsesetupconfig.md index e53aacefe..357ec57cb 100644 --- a/client-sdks/platform/typescript/docs/models/createmanagerresponsesetupconfig.md +++ b/client-sdks/platform/typescript/docs/models/createmanagerresponsesetupconfig.md @@ -12,13 +12,15 @@ let value: CreateManagerResponseSetupConfig = { }, policy: { allowedPlatforms: [], - allowedSetupMethods: [], + allowedSetupMethods: [ + "google-oauth", + ], }, items: [ { - item: "alien-stack", + item: "deployment", source: { - type: "application-release", + type: "project-release", releaseChannel: "", releaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", }, diff --git a/client-sdks/platform/typescript/docs/models/createmanagerresponsesourceapplicationrelease.md b/client-sdks/platform/typescript/docs/models/createmanagerresponsesourceapplicationrelease.md deleted file mode 100644 index f23dc0b00..000000000 --- a/client-sdks/platform/typescript/docs/models/createmanagerresponsesourceapplicationrelease.md +++ /dev/null @@ -1,22 +0,0 @@ -# CreateManagerResponseSourceApplicationRelease - -## Example Usage - -```typescript -import { CreateManagerResponseSourceApplicationRelease } from "@alienplatform/platform-api/models"; - -let value: CreateManagerResponseSourceApplicationRelease = { - type: "application-release", - releaseChannel: "", - releaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", -}; -``` - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | -| `type` | *"application-release"* | :heavy_check_mark: | N/A | | -| `releaseChannel` | *string* | :heavy_check_mark: | N/A | | -| `releaseId` | *string* | :heavy_check_mark: | Unique identifier for the release. | rel_WbhQgksrawSKIpEN0NAssHX9 | -| `resourceId` | *string* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/createmanagerresponsesourcebuiltin.md b/client-sdks/platform/typescript/docs/models/createmanagerresponsesourcebuiltin.md index 988b3147b..1bb651cea 100644 --- a/client-sdks/platform/typescript/docs/models/createmanagerresponsesourcebuiltin.md +++ b/client-sdks/platform/typescript/docs/models/createmanagerresponsesourcebuiltin.md @@ -7,7 +7,7 @@ import { CreateManagerResponseSourceBuiltIn } from "@alienplatform/platform-api/ let value: CreateManagerResponseSourceBuiltIn = { type: "built-in", - definitionId: "customer-key", + definitionId: "customer-registry", version: "", sourceReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", }; diff --git a/client-sdks/platform/typescript/docs/models/createmanagerresponsesourceprojectrelease.md b/client-sdks/platform/typescript/docs/models/createmanagerresponsesourceprojectrelease.md new file mode 100644 index 000000000..a59a4a79d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/createmanagerresponsesourceprojectrelease.md @@ -0,0 +1,22 @@ +# CreateManagerResponseSourceProjectRelease + +## Example Usage + +```typescript +import { CreateManagerResponseSourceProjectRelease } from "@alienplatform/platform-api/models"; + +let value: CreateManagerResponseSourceProjectRelease = { + type: "project-release", + releaseChannel: "", + releaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | +| `type` | *"project-release"* | :heavy_check_mark: | N/A | | +| `releaseChannel` | *string* | :heavy_check_mark: | N/A | | +| `releaseId` | *string* | :heavy_check_mark: | Unique identifier for the release. | rel_WbhQgksrawSKIpEN0NAssHX9 | +| `resourceId` | *string* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/createmanagerresponsesourceunion.md b/client-sdks/platform/typescript/docs/models/createmanagerresponsesourceunion.md index 3ceffc06a..1cbb22f12 100644 --- a/client-sdks/platform/typescript/docs/models/createmanagerresponsesourceunion.md +++ b/client-sdks/platform/typescript/docs/models/createmanagerresponsesourceunion.md @@ -3,11 +3,11 @@ ## Supported Types -### `models.CreateManagerResponseSourceApplicationRelease` +### `models.CreateManagerResponseSourceProjectRelease` ```typescript -const value: models.CreateManagerResponseSourceApplicationRelease = { - type: "application-release", +const value: models.CreateManagerResponseSourceProjectRelease = { + type: "project-release", releaseChannel: "", releaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", }; @@ -18,7 +18,7 @@ const value: models.CreateManagerResponseSourceApplicationRelease = { ```typescript const value: models.CreateManagerResponseSourceBuiltIn = { type: "built-in", - definitionId: "customer-key", + definitionId: "customer-registry", version: "", sourceReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", }; diff --git a/client-sdks/platform/typescript/docs/models/createreleaserequest.md b/client-sdks/platform/typescript/docs/models/createreleaserequest.md index b26f05c75..cc6ee1509 100644 --- a/client-sdks/platform/typescript/docs/models/createreleaserequest.md +++ b/client-sdks/platform/typescript/docs/models/createreleaserequest.md @@ -31,4 +31,5 @@ let value: CreateReleaseRequest = { | `version` | *string* | :heavy_minus_sign: | N/A | | `gitMetadata` | [models.GitMetadata](../models/gitmetadata.md) | :heavy_minus_sign: | N/A | | `stack` | [models.StackByPlatform](../models/stackbyplatform.md) | :heavy_minus_sign: | N/A | -| `rootDirectory` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file +| `rootDirectory` | *string* | :heavy_minus_sign: | N/A | +| `channel` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/createsetupregistrationoperationrequest.md b/client-sdks/platform/typescript/docs/models/createsetupregistrationoperationrequest.md index 5ef370100..3a5028e70 100644 --- a/client-sdks/platform/typescript/docs/models/createsetupregistrationoperationrequest.md +++ b/client-sdks/platform/typescript/docs/models/createsetupregistrationoperationrequest.md @@ -23,7 +23,11 @@ let value: CreateSetupRegistrationOperationRequest = { { id: "", type: "", - importData: {}, + importData: { + "key": "", + "key1": "", + "key2": "", + }, }, ], }, diff --git a/client-sdks/platform/typescript/docs/models/createsetupregistrationoperationrequestfailuredomains1.md b/client-sdks/platform/typescript/docs/models/createsetupregistrationoperationrequestfailuredomains1.md new file mode 100644 index 000000000..0199ae1f3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/createsetupregistrationoperationrequestfailuredomains1.md @@ -0,0 +1,20 @@ +# CreateSetupRegistrationOperationRequestFailureDomains1 + +Failure-domain policy selected for a compute pool. + +## Example Usage + +```typescript +import { CreateSetupRegistrationOperationRequestFailureDomains1 } from "@alienplatform/platform-api/models"; + +let value: CreateSetupRegistrationOperationRequestFailureDomains1 = { + spread: 750494, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `selectedFailureDomains` | *string*[] | :heavy_minus_sign: | Concrete provider domains selected during setup.
Empty delegates deterministic selection to the provider setup implementation. | +| `spread` | *number* | :heavy_check_mark: | Number of distinct failure domains across which new stateful replicas may be spread. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/createsetupregistrationoperationrequestfailuredomains2.md b/client-sdks/platform/typescript/docs/models/createsetupregistrationoperationrequestfailuredomains2.md new file mode 100644 index 000000000..fdeaf7e85 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/createsetupregistrationoperationrequestfailuredomains2.md @@ -0,0 +1,20 @@ +# CreateSetupRegistrationOperationRequestFailureDomains2 + +Failure-domain policy selected for a compute pool. + +## Example Usage + +```typescript +import { CreateSetupRegistrationOperationRequestFailureDomains2 } from "@alienplatform/platform-api/models"; + +let value: CreateSetupRegistrationOperationRequestFailureDomains2 = { + spread: 990650, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `selectedFailureDomains` | *string*[] | :heavy_minus_sign: | Concrete provider domains selected during setup.
Empty delegates deterministic selection to the provider setup implementation. | +| `spread` | *number* | :heavy_check_mark: | Number of distinct failure domains across which new stateful replicas may be spread. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/createsetupregistrationoperationrequestfailuredomainsunion1.md b/client-sdks/platform/typescript/docs/models/createsetupregistrationoperationrequestfailuredomainsunion1.md new file mode 100644 index 000000000..18a02e257 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/createsetupregistrationoperationrequestfailuredomainsunion1.md @@ -0,0 +1,19 @@ +# CreateSetupRegistrationOperationRequestFailureDomainsUnion1 + + +## Supported Types + +### `models.CreateSetupRegistrationOperationRequestFailureDomains1` + +```typescript +const value: models.CreateSetupRegistrationOperationRequestFailureDomains1 = { + spread: 750494, +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/createsetupregistrationoperationrequestfailuredomainsunion2.md b/client-sdks/platform/typescript/docs/models/createsetupregistrationoperationrequestfailuredomainsunion2.md new file mode 100644 index 000000000..ced266c25 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/createsetupregistrationoperationrequestfailuredomainsunion2.md @@ -0,0 +1,19 @@ +# CreateSetupRegistrationOperationRequestFailureDomainsUnion2 + + +## Supported Types + +### `models.CreateSetupRegistrationOperationRequestFailureDomains2` + +```typescript +const value: models.CreateSetupRegistrationOperationRequestFailureDomains2 = { + spread: 990650, +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/createsetupregistrationoperationrequestpoolsautoscale.md b/client-sdks/platform/typescript/docs/models/createsetupregistrationoperationrequestpoolsautoscale.md index a3088980f..373309308 100644 --- a/client-sdks/platform/typescript/docs/models/createsetupregistrationoperationrequestpoolsautoscale.md +++ b/client-sdks/platform/typescript/docs/models/createsetupregistrationoperationrequestpoolsautoscale.md @@ -14,9 +14,10 @@ let value: CreateSetupRegistrationOperationRequestPoolsAutoscale = { ## Fields -| Field | Type | Required | Description | -| --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | -| `machine` | *string* | :heavy_minus_sign: | Provider machine type selected for this deployment. | -| `max` | *number* | :heavy_check_mark: | Maximum machine count. | -| `min` | *number* | :heavy_check_mark: | Minimum machine count. | -| `mode` | *"autoscale"* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `failureDomains` | *models.CreateSetupRegistrationOperationRequestFailureDomainsUnion2* | :heavy_minus_sign: | N/A | +| `machine` | *string* | :heavy_minus_sign: | Provider machine type selected for this deployment. | +| `max` | *number* | :heavy_check_mark: | Maximum machine count. | +| `min` | *number* | :heavy_check_mark: | Minimum machine count. | +| `mode` | *"autoscale"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/createsetupregistrationoperationrequestpoolsfixed.md b/client-sdks/platform/typescript/docs/models/createsetupregistrationoperationrequestpoolsfixed.md index e76d3e7c1..d496ad7ae 100644 --- a/client-sdks/platform/typescript/docs/models/createsetupregistrationoperationrequestpoolsfixed.md +++ b/client-sdks/platform/typescript/docs/models/createsetupregistrationoperationrequestpoolsfixed.md @@ -13,8 +13,9 @@ let value: CreateSetupRegistrationOperationRequestPoolsFixed = { ## Fields -| Field | Type | Required | Description | -| --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | -| `machine` | *string* | :heavy_minus_sign: | Provider machine type selected for this deployment. | -| `machines` | *number* | :heavy_check_mark: | Number of machines to run. | -| `mode` | *"fixed"* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `failureDomains` | *models.CreateSetupRegistrationOperationRequestFailureDomainsUnion1* | :heavy_minus_sign: | N/A | +| `machine` | *string* | :heavy_minus_sign: | Provider machine type selected for this deployment. | +| `machines` | *number* | :heavy_check_mark: | Number of machines to run. | +| `mode` | *"fixed"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/createsetupregistrationoperationrequestsource.md b/client-sdks/platform/typescript/docs/models/createsetupregistrationoperationrequestsource.md index 65b4a4a44..aaf3c5a0c 100644 --- a/client-sdks/platform/typescript/docs/models/createsetupregistrationoperationrequestsource.md +++ b/client-sdks/platform/typescript/docs/models/createsetupregistrationoperationrequestsource.md @@ -22,7 +22,11 @@ let value: CreateSetupRegistrationOperationRequestSource = { { id: "", type: "", - importData: {}, + importData: { + "key": "", + "key1": "", + "key2": "", + }, }, ], }; diff --git a/client-sdks/platform/typescript/docs/models/customerconnectionmaterialization.md b/client-sdks/platform/typescript/docs/models/customerconnectionmaterialization.md deleted file mode 100644 index 4eb49cc1c..000000000 --- a/client-sdks/platform/typescript/docs/models/customerconnectionmaterialization.md +++ /dev/null @@ -1,28 +0,0 @@ -# CustomerConnectionMaterialization - -## Example Usage - -```typescript -import { CustomerConnectionMaterialization } from "@alienplatform/platform-api/models"; - -let value: CustomerConnectionMaterialization = { - customerConnections: { - schemaVersion: 7597.03, - connections: {}, - }, - source: { - definitionId: "customer-ai", - definitionVersion: "", - releaseId: "", - }, - packages: [], -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `customerConnections` | [models.CustomerConnections](../models/customerconnections.md) | :heavy_check_mark: | N/A | -| `source` | [models.CustomerConnectionMaterializationSource](../models/customerconnectionmaterializationsource.md) | :heavy_check_mark: | N/A | -| `packages` | [models.CustomerConnectionMaterializationPackage](../models/customerconnectionmaterializationpackage.md)[] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/customerconnectionmaterializationdefinitionid.md b/client-sdks/platform/typescript/docs/models/customerconnectionmaterializationdefinitionid.md deleted file mode 100644 index e58cf0cb1..000000000 --- a/client-sdks/platform/typescript/docs/models/customerconnectionmaterializationdefinitionid.md +++ /dev/null @@ -1,15 +0,0 @@ -# CustomerConnectionMaterializationDefinitionId - -## Example Usage - -```typescript -import { CustomerConnectionMaterializationDefinitionId } from "@alienplatform/platform-api/models"; - -let value: CustomerConnectionMaterializationDefinitionId = "customer-ai"; -``` - -## Values - -```typescript -"customer-ai" | "customer-key" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/customerconnectionmaterializationpackage.md b/client-sdks/platform/typescript/docs/models/customerconnectionmaterializationpackage.md deleted file mode 100644 index 889f419dd..000000000 --- a/client-sdks/platform/typescript/docs/models/customerconnectionmaterializationpackage.md +++ /dev/null @@ -1,19 +0,0 @@ -# CustomerConnectionMaterializationPackage - -## Example Usage - -```typescript -import { CustomerConnectionMaterializationPackage } from "@alienplatform/platform-api/models"; - -let value: CustomerConnectionMaterializationPackage = { - type: "cloudformation", - status: "pending", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | -| `type` | [models.CustomerConnectionMaterializationType](../models/customerconnectionmaterializationtype.md) | :heavy_check_mark: | N/A | -| `status` | [models.CustomerConnectionMaterializationStatus](../models/customerconnectionmaterializationstatus.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/customerconnectionmaterializationsource.md b/client-sdks/platform/typescript/docs/models/customerconnectionmaterializationsource.md deleted file mode 100644 index a03df4d58..000000000 --- a/client-sdks/platform/typescript/docs/models/customerconnectionmaterializationsource.md +++ /dev/null @@ -1,21 +0,0 @@ -# CustomerConnectionMaterializationSource - -## Example Usage - -```typescript -import { CustomerConnectionMaterializationSource } from "@alienplatform/platform-api/models"; - -let value: CustomerConnectionMaterializationSource = { - definitionId: "customer-ai", - definitionVersion: "", - releaseId: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | -| `definitionId` | [models.CustomerConnectionMaterializationDefinitionId](../models/customerconnectionmaterializationdefinitionid.md) | :heavy_check_mark: | N/A | -| `definitionVersion` | *string* | :heavy_check_mark: | N/A | -| `releaseId` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/customerconnectionmaterializationstatus.md b/client-sdks/platform/typescript/docs/models/customerconnectionmaterializationstatus.md deleted file mode 100644 index b909e85ab..000000000 --- a/client-sdks/platform/typescript/docs/models/customerconnectionmaterializationstatus.md +++ /dev/null @@ -1,15 +0,0 @@ -# CustomerConnectionMaterializationStatus - -## Example Usage - -```typescript -import { CustomerConnectionMaterializationStatus } from "@alienplatform/platform-api/models"; - -let value: CustomerConnectionMaterializationStatus = "failed"; -``` - -## Values - -```typescript -"pending" | "building" | "ready" | "failed" | "canceled" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/customerconnectionmaterializationtype.md b/client-sdks/platform/typescript/docs/models/customerconnectionmaterializationtype.md deleted file mode 100644 index fcf468e42..000000000 --- a/client-sdks/platform/typescript/docs/models/customerconnectionmaterializationtype.md +++ /dev/null @@ -1,15 +0,0 @@ -# CustomerConnectionMaterializationType - -## Example Usage - -```typescript -import { CustomerConnectionMaterializationType } from "@alienplatform/platform-api/models"; - -let value: CustomerConnectionMaterializationType = "terraform"; -``` - -## Values - -```typescript -"cloudformation" | "terraform" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/customerconnections.md b/client-sdks/platform/typescript/docs/models/customerconnections.md deleted file mode 100644 index ea80499bd..000000000 --- a/client-sdks/platform/typescript/docs/models/customerconnections.md +++ /dev/null @@ -1,19 +0,0 @@ -# CustomerConnections - -## Example Usage - -```typescript -import { CustomerConnections } from "@alienplatform/platform-api/models"; - -let value: CustomerConnections = { - schemaVersion: 9269.47, - connections: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | -| `schemaVersion` | *number* | :heavy_check_mark: | N/A | -| `connections` | [models.CustomerConnectionsConnections](../models/customerconnectionsconnections.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/customerconnectionsallowedprovider.md b/client-sdks/platform/typescript/docs/models/customerconnectionsallowedprovider.md deleted file mode 100644 index 082d9a72f..000000000 --- a/client-sdks/platform/typescript/docs/models/customerconnectionsallowedprovider.md +++ /dev/null @@ -1,15 +0,0 @@ -# CustomerConnectionsAllowedProvider - -## Example Usage - -```typescript -import { CustomerConnectionsAllowedProvider } from "@alienplatform/platform-api/models"; - -let value: CustomerConnectionsAllowedProvider = "gcp-vertex"; -``` - -## Values - -```typescript -"aws-bedrock" | "gcp-vertex" | "azure-foundry" | "anthropic" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/customerconnectionsclientapi.md b/client-sdks/platform/typescript/docs/models/customerconnectionsclientapi.md deleted file mode 100644 index a62822c46..000000000 --- a/client-sdks/platform/typescript/docs/models/customerconnectionsclientapi.md +++ /dev/null @@ -1,15 +0,0 @@ -# CustomerConnectionsClientApi - -## Example Usage - -```typescript -import { CustomerConnectionsClientApi } from "@alienplatform/platform-api/models"; - -let value: CustomerConnectionsClientApi = "openai-chat"; -``` - -## Values - -```typescript -"openai-chat" | "openai-responses" | "anthropic-messages" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/customerconnectionsconnections.md b/client-sdks/platform/typescript/docs/models/customerconnectionsconnections.md deleted file mode 100644 index 8b8f04e3a..000000000 --- a/client-sdks/platform/typescript/docs/models/customerconnectionsconnections.md +++ /dev/null @@ -1,16 +0,0 @@ -# CustomerConnectionsConnections - -## Example Usage - -```typescript -import { CustomerConnectionsConnections } from "@alienplatform/platform-api/models"; - -let value: CustomerConnectionsConnections = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -| `keys` | [models.CustomerConnectionsKeys](../models/customerconnectionskeys.md) | :heavy_minus_sign: | N/A | -| `models` | [models.CustomerConnectionsModels](../models/customerconnectionsmodels.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/customerconnectionskeys.md b/client-sdks/platform/typescript/docs/models/customerconnectionskeys.md deleted file mode 100644 index 43e9e6f71..000000000 --- a/client-sdks/platform/typescript/docs/models/customerconnectionskeys.md +++ /dev/null @@ -1,19 +0,0 @@ -# CustomerConnectionsKeys - -## Example Usage - -```typescript -import { CustomerConnectionsKeys } from "@alienplatform/platform-api/models"; - -let value: CustomerConnectionsKeys = { - enabled: false, - applicationEncryption: false, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ----------------------- | ----------------------- | ----------------------- | ----------------------- | -| `enabled` | *boolean* | :heavy_check_mark: | N/A | -| `applicationEncryption` | *boolean* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/customerconnectionsmodels.md b/client-sdks/platform/typescript/docs/models/customerconnectionsmodels.md deleted file mode 100644 index 2baa9cd5d..000000000 --- a/client-sdks/platform/typescript/docs/models/customerconnectionsmodels.md +++ /dev/null @@ -1,23 +0,0 @@ -# CustomerConnectionsModels - -## Example Usage - -```typescript -import { CustomerConnectionsModels } from "@alienplatform/platform-api/models"; - -let value: CustomerConnectionsModels = { - enabled: false, - allowedProviders: [ - "anthropic", - ], - requirements: [], -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | -| `enabled` | *boolean* | :heavy_check_mark: | N/A | -| `allowedProviders` | [models.CustomerConnectionsAllowedProvider](../models/customerconnectionsallowedprovider.md)[] | :heavy_check_mark: | N/A | -| `requirements` | [models.CustomerConnectionsRequirement](../models/customerconnectionsrequirement.md)[] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/customerconnectionsrequirement.md b/client-sdks/platform/typescript/docs/models/customerconnectionsrequirement.md deleted file mode 100644 index 847436965..000000000 --- a/client-sdks/platform/typescript/docs/models/customerconnectionsrequirement.md +++ /dev/null @@ -1,23 +0,0 @@ -# CustomerConnectionsRequirement - -## Example Usage - -```typescript -import { CustomerConnectionsRequirement } from "@alienplatform/platform-api/models"; - -let value: CustomerConnectionsRequirement = { - publicModelId: "", - clientApis: [ - "anthropic-messages", - ], - required: true, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | -| `publicModelId` | *string* | :heavy_check_mark: | N/A | -| `clientApis` | [models.CustomerConnectionsClientApi](../models/customerconnectionsclientapi.md)[] | :heavy_check_mark: | N/A | -| `required` | *boolean* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/dataai.md b/client-sdks/platform/typescript/docs/models/dataai.md new file mode 100644 index 000000000..67137d69f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/dataai.md @@ -0,0 +1,45 @@ +# DataAi + +## Example Usage + +```typescript +import { DataAi } from "@alienplatform/platform-api/models"; + +let value: DataAi = { + data: { + availability: { + catalogRevision: "", + models: [ + { + accessTest: "failed", + availability: "blocked", + blockers: [], + clientApis: [ + "open-ai-chat-completions", + ], + publicModelId: "", + }, + ], + source: "anthropic", + }, + location: "", + project: "", + status: { + collectionIssues: [], + health: "degraded", + lifecycle: "unknown", + partial: false, + stale: false, + }, + backend: "gcpVertex", + }, + resourceType: "ai", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | +| `data` | *models.SyncReconcileRequestDataUnion16* | :heavy_check_mark: | N/A | +| `resourceType` | *"ai"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/dataassumingrole.md b/client-sdks/platform/typescript/docs/models/dataassumingrole.md deleted file mode 100644 index 3b44fd793..000000000 --- a/client-sdks/platform/typescript/docs/models/dataassumingrole.md +++ /dev/null @@ -1,19 +0,0 @@ -# DataAssumingRole - -## Example Usage - -```typescript -import { DataAssumingRole } from "@alienplatform/platform-api/models"; - -let value: DataAssumingRole = { - roleArn: "", - type: "AssumingRole", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------- | ------------------------- | ------------------------- | ------------------------- | -| `roleArn` | *string* | :heavy_check_mark: | ARN of the role to assume | -| `type` | *"AssumingRole"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/dataaurora.md b/client-sdks/platform/typescript/docs/models/dataaurora.md index 845576f5c..3dfe337cc 100644 --- a/client-sdks/platform/typescript/docs/models/dataaurora.md +++ b/client-sdks/platform/typescript/docs/models/dataaurora.md @@ -1,5 +1,7 @@ # DataAurora +AWS Aurora Serverless v2 backend. + ## Example Usage ```typescript diff --git a/client-sdks/platform/typescript/docs/models/dataaws1.md b/client-sdks/platform/typescript/docs/models/dataaws1.md index e5001eef3..5a5d60f34 100644 --- a/client-sdks/platform/typescript/docs/models/dataaws1.md +++ b/client-sdks/platform/typescript/docs/models/dataaws1.md @@ -63,6 +63,7 @@ let value: DataAws1 = { | `horizonStatusMessage` | *string* | :heavy_minus_sign: | N/A | | `horizonStatusReason` | *string* | :heavy_minus_sign: | N/A | | `latestUpdateTimestamp` | *string* | :heavy_check_mark: | N/A | +| `observedImage` | *string* | :heavy_minus_sign: | N/A | | `status` | [models.ResourceHeartbeatStatus13](../models/resourceheartbeatstatus13.md) | :heavy_check_mark: | N/A | | `unavailableInstances` | *number* | :heavy_check_mark: | N/A | | `backend` | *"aws"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/dataawsbedrock.md b/client-sdks/platform/typescript/docs/models/dataawsbedrock.md new file mode 100644 index 000000000..5a61dd3fa --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/dataawsbedrock.md @@ -0,0 +1,40 @@ +# DataAwsBedrock + +## Example Usage + +```typescript +import { DataAwsBedrock } from "@alienplatform/platform-api/models"; + +let value: DataAwsBedrock = { + availability: { + catalogRevision: "", + models: [], + source: "aws-bedrock", + }, + region: "", + status: { + collectionIssues: [ + { + message: "", + reason: "timed-out", + severity: "warning", + source: "", + }, + ], + health: "unhealthy", + lifecycle: "deleting", + partial: false, + stale: false, + }, + backend: "awsBedrock", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `availability` | [models.SyncReconcileRequestAvailability1](../models/syncreconcilerequestavailability1.md) | :heavy_check_mark: | N/A | +| `region` | *string* | :heavy_check_mark: | N/A | +| `status` | [models.ResourceHeartbeatStatus66](../models/resourceheartbeatstatus66.md) | :heavy_check_mark: | N/A | +| `backend` | *"awsBedrock"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/dataawsecr.md b/client-sdks/platform/typescript/docs/models/dataawsecr.md index e5e7226ba..93e877116 100644 --- a/client-sdks/platform/typescript/docs/models/dataawsecr.md +++ b/client-sdks/platform/typescript/docs/models/dataawsecr.md @@ -35,16 +35,16 @@ let value: DataAwsEcr = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -| `pullRoleArn` | *string* | :heavy_minus_sign: | N/A | -| `pushRoleArn` | *string* | :heavy_minus_sign: | N/A | -| `region` | *string* | :heavy_check_mark: | N/A | -| `registryId` | *string* | :heavy_check_mark: | N/A | -| `registryUri` | *string* | :heavy_check_mark: | N/A | -| `repositories` | [models.Repository](../models/repository.md)[] | :heavy_check_mark: | N/A | -| `repositoriesTruncated` | *boolean* | :heavy_check_mark: | N/A | -| `repositoryCount` | *number* | :heavy_check_mark: | N/A | -| `repositoryPrefix` | *string* | :heavy_check_mark: | N/A | -| `status` | [models.ResourceHeartbeatStatus52](../models/resourceheartbeatstatus52.md) | :heavy_check_mark: | N/A | -| `backend` | *"awsEcr"* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `pullRoleArn` | *string* | :heavy_minus_sign: | N/A | +| `pushRoleArn` | *string* | :heavy_minus_sign: | N/A | +| `region` | *string* | :heavy_check_mark: | N/A | +| `registryId` | *string* | :heavy_check_mark: | N/A | +| `registryUri` | *string* | :heavy_check_mark: | N/A | +| `repositories` | [models.SyncReconcileRequestRepository](../models/syncreconcilerequestrepository.md)[] | :heavy_check_mark: | N/A | +| `repositoriesTruncated` | *boolean* | :heavy_check_mark: | N/A | +| `repositoryCount` | *number* | :heavy_check_mark: | N/A | +| `repositoryPrefix` | *string* | :heavy_check_mark: | N/A | +| `status` | [models.ResourceHeartbeatStatus52](../models/resourceheartbeatstatus52.md) | :heavy_check_mark: | N/A | +| `backend` | *"awsEcr"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/dataawskms.md b/client-sdks/platform/typescript/docs/models/dataawskms.md new file mode 100644 index 000000000..2a67f90d1 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/dataawskms.md @@ -0,0 +1,29 @@ +# DataAwsKms + +## Example Usage + +```typescript +import { DataAwsKms } from "@alienplatform/platform-api/models"; + +let value: DataAwsKms = { + data: { + enabled: true, + keyArn: "", + keySpec: "", + keyState: "", + keyUsage: "", + status: { + health: "unhealthy", + lifecycle: "stopped", + }, + }, + provider: "aws-kms", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `data` | [models.SyncReconcileRequestData6](../models/syncreconcilerequestdata6.md) | :heavy_check_mark: | N/A | +| `provider` | *"aws-kms"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/dataazure1.md b/client-sdks/platform/typescript/docs/models/dataazure1.md index 379971c48..e33a746de 100644 --- a/client-sdks/platform/typescript/docs/models/dataazure1.md +++ b/client-sdks/platform/typescript/docs/models/dataazure1.md @@ -58,6 +58,7 @@ let value: DataAzure1 = { | `horizonStatusMessage` | *string* | :heavy_minus_sign: | N/A | | `horizonStatusReason` | *string* | :heavy_minus_sign: | N/A | | `latestUpdateTimestamp` | *string* | :heavy_check_mark: | N/A | +| `observedImage` | *string* | :heavy_minus_sign: | N/A | | `status` | [models.ResourceHeartbeatStatus15](../models/resourceheartbeatstatus15.md) | :heavy_check_mark: | N/A | | `unavailableInstances` | *number* | :heavy_check_mark: | N/A | | `backend` | *"azure"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/dataazurefoundry.md b/client-sdks/platform/typescript/docs/models/dataazurefoundry.md new file mode 100644 index 000000000..f117e9446 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/dataazurefoundry.md @@ -0,0 +1,48 @@ +# DataAzureFoundry + +## Example Usage + +```typescript +import { DataAzureFoundry } from "@alienplatform/platform-api/models"; + +let value: DataAzureFoundry = { + accountName: "", + availability: { + catalogRevision: "", + models: [ + { + accessTest: "verified", + availability: "available", + blockers: [ + "quota-configuration-required", + ], + clientApis: [ + "open-ai-responses", + ], + publicModelId: "", + }, + ], + source: "aws-bedrock", + }, + status: { + collectionIssues: [], + health: "unknown", + lifecycle: "stopped", + partial: false, + stale: false, + }, + backend: "azureFoundry", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `accountName` | *string* | :heavy_check_mark: | N/A | +| `availability` | [models.SyncReconcileRequestAvailability3](../models/syncreconcilerequestavailability3.md) | :heavy_check_mark: | N/A | +| `endpoint` | *string* | :heavy_minus_sign: | N/A | +| `location` | *string* | :heavy_minus_sign: | N/A | +| `resourceGroup` | *string* | :heavy_minus_sign: | N/A | +| `status` | [models.ResourceHeartbeatStatus68](../models/resourceheartbeatstatus68.md) | :heavy_check_mark: | N/A | +| `backend` | *"azureFoundry"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/dataazurekeyvault.md b/client-sdks/platform/typescript/docs/models/dataazurekeyvault.md deleted file mode 100644 index fa903de85..000000000 --- a/client-sdks/platform/typescript/docs/models/dataazurekeyvault.md +++ /dev/null @@ -1,49 +0,0 @@ -# DataAzureKeyVault - -## Example Usage - -```typescript -import { DataAzureKeyVault } from "@alienplatform/platform-api/models"; - -let value: DataAzureKeyVault = { - accessPolicyCount: 923246, - name: "", - privateEndpointConnectionCount: 319306, - publicNetworkAccess: "", - rbacAuthorizationEnabled: true, - secretMetadataListed: false, - softDeleteEnabled: false, - softDeleteRetentionDays: 497787, - status: { - collectionIssues: [], - health: "degraded", - lifecycle: "creating", - partial: true, - stale: false, - }, - backend: "azureKeyVault", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -| `accessPolicyCount` | *number* | :heavy_check_mark: | N/A | -| `location` | *string* | :heavy_minus_sign: | N/A | -| `name` | *string* | :heavy_check_mark: | N/A | -| `privateEndpointConnectionCount` | *number* | :heavy_check_mark: | N/A | -| `provisioningState` | *string* | :heavy_minus_sign: | N/A | -| `publicNetworkAccess` | *string* | :heavy_check_mark: | N/A | -| `purgeProtectionEnabled` | *boolean* | :heavy_minus_sign: | N/A | -| `rbacAuthorizationEnabled` | *boolean* | :heavy_check_mark: | N/A | -| `resourceGroup` | *string* | :heavy_minus_sign: | N/A | -| `resourceId` | *string* | :heavy_minus_sign: | N/A | -| `secretMetadataListed` | *boolean* | :heavy_check_mark: | N/A | -| `skuFamily` | *string* | :heavy_minus_sign: | N/A | -| `skuName` | *string* | :heavy_minus_sign: | N/A | -| `softDeleteEnabled` | *boolean* | :heavy_check_mark: | N/A | -| `softDeleteRetentionDays` | *number* | :heavy_check_mark: | N/A | -| `status` | [models.ResourceHeartbeatStatus39](../models/resourceheartbeatstatus39.md) | :heavy_check_mark: | N/A | -| `vaultUri` | *string* | :heavy_minus_sign: | N/A | -| `backend` | *"azureKeyVault"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/dataazurekeyvault1.md b/client-sdks/platform/typescript/docs/models/dataazurekeyvault1.md new file mode 100644 index 000000000..8f24d7562 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/dataazurekeyvault1.md @@ -0,0 +1,56 @@ +# DataAzureKeyVault1 + +## Example Usage + +```typescript +import { DataAzureKeyVault1 } from "@alienplatform/platform-api/models"; + +let value: DataAzureKeyVault1 = { + accessPolicyCount: 582917, + name: "", + privateEndpointConnectionCount: 112234, + publicNetworkAccess: "", + rbacAuthorizationEnabled: true, + secretMetadataListed: false, + softDeleteEnabled: true, + softDeleteRetentionDays: 457442, + status: { + collectionIssues: [ + { + message: "", + reason: "timed-out", + severity: "error", + source: "", + }, + ], + health: "unknown", + lifecycle: "updating", + partial: false, + stale: false, + }, + backend: "azureKeyVault", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `accessPolicyCount` | *number* | :heavy_check_mark: | N/A | +| `location` | *string* | :heavy_minus_sign: | N/A | +| `name` | *string* | :heavy_check_mark: | N/A | +| `privateEndpointConnectionCount` | *number* | :heavy_check_mark: | N/A | +| `provisioningState` | *string* | :heavy_minus_sign: | N/A | +| `publicNetworkAccess` | *string* | :heavy_check_mark: | N/A | +| `purgeProtectionEnabled` | *boolean* | :heavy_minus_sign: | N/A | +| `rbacAuthorizationEnabled` | *boolean* | :heavy_check_mark: | N/A | +| `resourceGroup` | *string* | :heavy_minus_sign: | N/A | +| `resourceId` | *string* | :heavy_minus_sign: | N/A | +| `secretMetadataListed` | *boolean* | :heavy_check_mark: | N/A | +| `skuFamily` | *string* | :heavy_minus_sign: | N/A | +| `skuName` | *string* | :heavy_minus_sign: | N/A | +| `softDeleteEnabled` | *boolean* | :heavy_check_mark: | N/A | +| `softDeleteRetentionDays` | *number* | :heavy_check_mark: | N/A | +| `status` | [models.ResourceHeartbeatStatus39](../models/resourceheartbeatstatus39.md) | :heavy_check_mark: | N/A | +| `vaultUri` | *string* | :heavy_minus_sign: | N/A | +| `backend` | *"azureKeyVault"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/dataazurekeyvault2.md b/client-sdks/platform/typescript/docs/models/dataazurekeyvault2.md new file mode 100644 index 000000000..1bfdac8c8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/dataazurekeyvault2.md @@ -0,0 +1,27 @@ +# DataAzureKeyVault2 + +## Example Usage + +```typescript +import { DataAzureKeyVault2 } from "@alienplatform/platform-api/models"; + +let value: DataAzureKeyVault2 = { + data: { + keyId: "", + keyOperations: [], + keyType: "", + status: { + health: "unknown", + lifecycle: "deleting", + }, + }, + provider: "azure-key-vault", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `data` | [models.SyncReconcileRequestData8](../models/syncreconcilerequestdata8.md) | :heavy_check_mark: | N/A | +| `provider` | *"azure-key-vault"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/databuildingimage.md b/client-sdks/platform/typescript/docs/models/databuildingimage.md deleted file mode 100644 index 8451bcb47..000000000 --- a/client-sdks/platform/typescript/docs/models/databuildingimage.md +++ /dev/null @@ -1,19 +0,0 @@ -# DataBuildingImage - -## Example Usage - -```typescript -import { DataBuildingImage } from "@alienplatform/platform-api/models"; - -let value: DataBuildingImage = { - image: "https://loremflickr.com/965/1538?lock=536245262441792", - type: "BuildingImage", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ----------------------------- | ----------------------------- | ----------------------------- | ----------------------------- | -| `image` | *string* | :heavy_check_mark: | Name of the image being built | -| `type` | *"BuildingImage"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/databuildingresource.md b/client-sdks/platform/typescript/docs/models/databuildingresource.md deleted file mode 100644 index 697efce49..000000000 --- a/client-sdks/platform/typescript/docs/models/databuildingresource.md +++ /dev/null @@ -1,22 +0,0 @@ -# DataBuildingResource - -## Example Usage - -```typescript -import { DataBuildingResource } from "@alienplatform/platform-api/models"; - -let value: DataBuildingResource = { - resourceName: "", - resourceType: "", - type: "BuildingResource", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -| `relatedResources` | *string*[] | :heavy_minus_sign: | All resource names sharing this build (for deduped container groups) | -| `resourceName` | *string* | :heavy_check_mark: | Name of the resource being built | -| `resourceType` | *string* | :heavy_check_mark: | Type of the resource: "worker", "container" | -| `type` | *"BuildingResource"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/databuildingstack.md b/client-sdks/platform/typescript/docs/models/databuildingstack.md deleted file mode 100644 index ebc60fb55..000000000 --- a/client-sdks/platform/typescript/docs/models/databuildingstack.md +++ /dev/null @@ -1,19 +0,0 @@ -# DataBuildingStack - -## Example Usage - -```typescript -import { DataBuildingStack } from "@alienplatform/platform-api/models"; - -let value: DataBuildingStack = { - stack: "", - type: "BuildingStack", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ----------------------------- | ----------------------------- | ----------------------------- | ----------------------------- | -| `stack` | *string* | :heavy_check_mark: | Name of the stack being built | -| `type` | *"BuildingStack"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datacleaningupenvironment.md b/client-sdks/platform/typescript/docs/models/datacleaningupenvironment.md deleted file mode 100644 index 5ee56c658..000000000 --- a/client-sdks/platform/typescript/docs/models/datacleaningupenvironment.md +++ /dev/null @@ -1,21 +0,0 @@ -# DataCleaningUpEnvironment - -## Example Usage - -```typescript -import { DataCleaningUpEnvironment } from "@alienplatform/platform-api/models"; - -let value: DataCleaningUpEnvironment = { - stackName: "", - strategyName: "", - type: "CleaningUpEnvironment", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | -| `stackName` | *string* | :heavy_check_mark: | Name of the stack being cleaned up | -| `strategyName` | *string* | :heavy_check_mark: | Name of the deployment strategy being used for cleanup | -| `type` | *"CleaningUpEnvironment"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datacleaningupstack.md b/client-sdks/platform/typescript/docs/models/datacleaningupstack.md deleted file mode 100644 index 8496daa1d..000000000 --- a/client-sdks/platform/typescript/docs/models/datacleaningupstack.md +++ /dev/null @@ -1,21 +0,0 @@ -# DataCleaningUpStack - -## Example Usage - -```typescript -import { DataCleaningUpStack } from "@alienplatform/platform-api/models"; - -let value: DataCleaningUpStack = { - stackName: "", - strategyName: "", - type: "CleaningUpStack", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | -| `stackName` | *string* | :heavy_check_mark: | Name of the stack being cleaned up | -| `strategyName` | *string* | :heavy_check_mark: | Name of the deployment strategy being used for cleanup | -| `type` | *"CleaningUpStack"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datacloudsql.md b/client-sdks/platform/typescript/docs/models/datacloudsql.md index 2ff9e53b9..c350375ae 100644 --- a/client-sdks/platform/typescript/docs/models/datacloudsql.md +++ b/client-sdks/platform/typescript/docs/models/datacloudsql.md @@ -1,5 +1,7 @@ # DataCloudSQL +GCP Cloud SQL backend. + ## Example Usage ```typescript diff --git a/client-sdks/platform/typescript/docs/models/datacollectionissue66.md b/client-sdks/platform/typescript/docs/models/datacollectionissue66.md new file mode 100644 index 000000000..0aa0ee0ba --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/datacollectionissue66.md @@ -0,0 +1,23 @@ +# DataCollectionIssue66 + +## Example Usage + +```typescript +import { DataCollectionIssue66 } from "@alienplatform/platform-api/models"; + +let value: DataCollectionIssue66 = { + message: "", + reason: "not-installed", + severity: "info", + source: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [models.DataReason66](../models/datareason66.md) | :heavy_check_mark: | N/A | +| `severity` | [models.StatusSeverity66](../models/statusseverity66.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datacollectionissue67.md b/client-sdks/platform/typescript/docs/models/datacollectionissue67.md new file mode 100644 index 000000000..2383f9165 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/datacollectionissue67.md @@ -0,0 +1,23 @@ +# DataCollectionIssue67 + +## Example Usage + +```typescript +import { DataCollectionIssue67 } from "@alienplatform/platform-api/models"; + +let value: DataCollectionIssue67 = { + message: "", + reason: "api-unavailable", + severity: "error", + source: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [models.DataReason67](../models/datareason67.md) | :heavy_check_mark: | N/A | +| `severity` | [models.StatusSeverity67](../models/statusseverity67.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datacollectionissue68.md b/client-sdks/platform/typescript/docs/models/datacollectionissue68.md new file mode 100644 index 000000000..58f6eb160 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/datacollectionissue68.md @@ -0,0 +1,23 @@ +# DataCollectionIssue68 + +## Example Usage + +```typescript +import { DataCollectionIssue68 } from "@alienplatform/platform-api/models"; + +let value: DataCollectionIssue68 = { + message: "", + reason: "collection-failed", + severity: "info", + source: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [models.DataReason68](../models/datareason68.md) | :heavy_check_mark: | N/A | +| `severity` | [models.StatusSeverity68](../models/statusseverity68.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datacollectionissue69.md b/client-sdks/platform/typescript/docs/models/datacollectionissue69.md new file mode 100644 index 000000000..8da985cab --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/datacollectionissue69.md @@ -0,0 +1,23 @@ +# DataCollectionIssue69 + +## Example Usage + +```typescript +import { DataCollectionIssue69 } from "@alienplatform/platform-api/models"; + +let value: DataCollectionIssue69 = { + message: "", + reason: "forbidden", + severity: "error", + source: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [models.DataReason69](../models/datareason69.md) | :heavy_check_mark: | N/A | +| `severity` | [models.StatusSeverity69](../models/statusseverity69.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datacompilingcode.md b/client-sdks/platform/typescript/docs/models/datacompilingcode.md deleted file mode 100644 index 1a14afdd2..000000000 --- a/client-sdks/platform/typescript/docs/models/datacompilingcode.md +++ /dev/null @@ -1,20 +0,0 @@ -# DataCompilingCode - -## Example Usage - -```typescript -import { DataCompilingCode } from "@alienplatform/platform-api/models"; - -let value: DataCompilingCode = { - language: "", - type: "CompilingCode", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `language` | *string* | :heavy_check_mark: | Language being compiled (rust, typescript, etc.) | -| `progress` | *string* | :heavy_minus_sign: | Current progress/status line from the build output | -| `type` | *"CompilingCode"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datacreatingrelease.md b/client-sdks/platform/typescript/docs/models/datacreatingrelease.md deleted file mode 100644 index af2526d5a..000000000 --- a/client-sdks/platform/typescript/docs/models/datacreatingrelease.md +++ /dev/null @@ -1,19 +0,0 @@ -# DataCreatingRelease - -## Example Usage - -```typescript -import { DataCreatingRelease } from "@alienplatform/platform-api/models"; - -let value: DataCreatingRelease = { - project: "", - type: "CreatingRelease", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------- | ------------------- | ------------------- | ------------------- | -| `project` | *string* | :heavy_check_mark: | Project name | -| `type` | *"CreatingRelease"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datadebuggingagent.md b/client-sdks/platform/typescript/docs/models/datadebuggingagent.md deleted file mode 100644 index 595ffc79c..000000000 --- a/client-sdks/platform/typescript/docs/models/datadebuggingagent.md +++ /dev/null @@ -1,21 +0,0 @@ -# DataDebuggingAgent - -## Example Usage - -```typescript -import { DataDebuggingAgent } from "@alienplatform/platform-api/models"; - -let value: DataDebuggingAgent = { - agentId: "", - debugSessionId: "", - type: "DebuggingAgent", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ | -| `agentId` | *string* | :heavy_check_mark: | ID of the agent being debugged | -| `debugSessionId` | *string* | :heavy_check_mark: | ID of the debug session | -| `type` | *"DebuggingAgent"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datadeletingagent.md b/client-sdks/platform/typescript/docs/models/datadeletingagent.md deleted file mode 100644 index ea7feeb31..000000000 --- a/client-sdks/platform/typescript/docs/models/datadeletingagent.md +++ /dev/null @@ -1,21 +0,0 @@ -# DataDeletingAgent - -## Example Usage - -```typescript -import { DataDeletingAgent } from "@alienplatform/platform-api/models"; - -let value: DataDeletingAgent = { - agentId: "", - releaseId: "", - type: "DeletingAgent", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ----------------------------------------------- | ----------------------------------------------- | ----------------------------------------------- | ----------------------------------------------- | -| `agentId` | *string* | :heavy_check_mark: | ID of the agent being deleted | -| `releaseId` | *string* | :heavy_check_mark: | ID of the release that was running on the agent | -| `type` | *"DeletingAgent"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datadeletingcloudformationstack.md b/client-sdks/platform/typescript/docs/models/datadeletingcloudformationstack.md deleted file mode 100644 index 93b4be6aa..000000000 --- a/client-sdks/platform/typescript/docs/models/datadeletingcloudformationstack.md +++ /dev/null @@ -1,21 +0,0 @@ -# DataDeletingCloudFormationStack - -## Example Usage - -```typescript -import { DataDeletingCloudFormationStack } from "@alienplatform/platform-api/models"; - -let value: DataDeletingCloudFormationStack = { - cfnStackName: "", - currentStatus: "", - type: "DeletingCloudFormationStack", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | -| `cfnStackName` | *string* | :heavy_check_mark: | Name of the CloudFormation stack | -| `currentStatus` | *string* | :heavy_check_mark: | Current stack status | -| `type` | *"DeletingCloudFormationStack"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datadeployingcloudformationstack.md b/client-sdks/platform/typescript/docs/models/datadeployingcloudformationstack.md deleted file mode 100644 index 1079d6332..000000000 --- a/client-sdks/platform/typescript/docs/models/datadeployingcloudformationstack.md +++ /dev/null @@ -1,21 +0,0 @@ -# DataDeployingCloudFormationStack - -## Example Usage - -```typescript -import { DataDeployingCloudFormationStack } from "@alienplatform/platform-api/models"; - -let value: DataDeployingCloudFormationStack = { - cfnStackName: "", - currentStatus: "", - type: "DeployingCloudFormationStack", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | -| `cfnStackName` | *string* | :heavy_check_mark: | Name of the CloudFormation stack | -| `currentStatus` | *string* | :heavy_check_mark: | Current stack status | -| `type` | *"DeployingCloudFormationStack"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datadeployingstack.md b/client-sdks/platform/typescript/docs/models/datadeployingstack.md deleted file mode 100644 index 49c811e65..000000000 --- a/client-sdks/platform/typescript/docs/models/datadeployingstack.md +++ /dev/null @@ -1,19 +0,0 @@ -# DataDeployingStack - -## Example Usage - -```typescript -import { DataDeployingStack } from "@alienplatform/platform-api/models"; - -let value: DataDeployingStack = { - stackName: "", - type: "DeployingStack", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | -| `stackName` | *string* | :heavy_check_mark: | Name of the stack being deployed | -| `type` | *"DeployingStack"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datadeploymentcreated.md b/client-sdks/platform/typescript/docs/models/datadeploymentcreated.md deleted file mode 100644 index c13c03230..000000000 --- a/client-sdks/platform/typescript/docs/models/datadeploymentcreated.md +++ /dev/null @@ -1,22 +0,0 @@ -# DataDeploymentCreated - -## Example Usage - -```typescript -import { DataDeploymentCreated } from "@alienplatform/platform-api/models"; - -let value: DataDeploymentCreated = { - deploymentGroupId: "", - deploymentId: "", - type: "DeploymentCreated", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | -| `deploymentGroupId` | *string* | :heavy_check_mark: | ID of the deployment group this slot belongs to | -| `deploymentId` | *string* | :heavy_check_mark: | ID of the deployment that was created | -| `releaseId` | *string* | :heavy_minus_sign: | Initial release the slot was created with, if any | -| `type` | *"DeploymentCreated"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datadeploymentdegraded.md b/client-sdks/platform/typescript/docs/models/datadeploymentdegraded.md deleted file mode 100644 index bc8004719..000000000 --- a/client-sdks/platform/typescript/docs/models/datadeploymentdegraded.md +++ /dev/null @@ -1,25 +0,0 @@ -# DataDeploymentDegraded - -## Example Usage - -```typescript -import { DataDeploymentDegraded } from "@alienplatform/platform-api/models"; - -let value: DataDeploymentDegraded = { - deploymentId: "", - error: { - code: "", - internal: false, - message: "", - }, - type: "DeploymentDegraded", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `deploymentId` | *string* | :heavy_check_mark: | ID of the deployment | -| `error` | [models.DataError2](../models/dataerror2.md) | :heavy_check_mark: | Canonical error container that provides a structured way to represent errors
with rich metadata including error codes, human-readable messages, context,
and chaining capabilities for error propagation.

This struct is designed to be both machine-readable and user-friendly,
supporting serialization for API responses and detailed error reporting
in distributed systems. | -| `type` | *"DeploymentDegraded"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datadeploymentdeleted.md b/client-sdks/platform/typescript/docs/models/datadeploymentdeleted.md deleted file mode 100644 index 572373e0f..000000000 --- a/client-sdks/platform/typescript/docs/models/datadeploymentdeleted.md +++ /dev/null @@ -1,19 +0,0 @@ -# DataDeploymentDeleted - -## Example Usage - -```typescript -import { DataDeploymentDeleted } from "@alienplatform/platform-api/models"; - -let value: DataDeploymentDeleted = { - deploymentId: "", - type: "DeploymentDeleted", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------- | ------------------------------------- | ------------------------------------- | ------------------------------------- | -| `deploymentId` | *string* | :heavy_check_mark: | ID of the deployment that was deleted | -| `type` | *"DeploymentDeleted"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datadeploymentdeletionrequested.md b/client-sdks/platform/typescript/docs/models/datadeploymentdeletionrequested.md deleted file mode 100644 index 138214404..000000000 --- a/client-sdks/platform/typescript/docs/models/datadeploymentdeletionrequested.md +++ /dev/null @@ -1,19 +0,0 @@ -# DataDeploymentDeletionRequested - -## Example Usage - -```typescript -import { DataDeploymentDeletionRequested } from "@alienplatform/platform-api/models"; - -let value: DataDeploymentDeletionRequested = { - deploymentId: "", - type: "DeploymentDeletionRequested", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `deploymentId` | *string* | :heavy_check_mark: | ID of the deployment | -| `type` | *"DeploymentDeletionRequested"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datadeploymentenvironmentupdated.md b/client-sdks/platform/typescript/docs/models/datadeploymentenvironmentupdated.md deleted file mode 100644 index 2bab8a9c8..000000000 --- a/client-sdks/platform/typescript/docs/models/datadeploymentenvironmentupdated.md +++ /dev/null @@ -1,22 +0,0 @@ -# DataDeploymentEnvironmentUpdated - -## Example Usage - -```typescript -import { DataDeploymentEnvironmentUpdated } from "@alienplatform/platform-api/models"; - -let value: DataDeploymentEnvironmentUpdated = { - changedKeys: [], - deploymentId: "", - type: "DeploymentEnvironmentUpdated", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | -| `actor` | *models.ActorUnion2* | :heavy_minus_sign: | N/A | -| `changedKeys` | *string*[] | :heavy_check_mark: | Names of the environment variables that changed (added, removed, or modified) | -| `deploymentId` | *string* | :heavy_check_mark: | ID of the deployment | -| `type` | *"DeploymentEnvironmentUpdated"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datadeploymentfailed.md b/client-sdks/platform/typescript/docs/models/datadeploymentfailed.md deleted file mode 100644 index c21788f88..000000000 --- a/client-sdks/platform/typescript/docs/models/datadeploymentfailed.md +++ /dev/null @@ -1,28 +0,0 @@ -# DataDeploymentFailed - -## Example Usage - -```typescript -import { DataDeploymentFailed } from "@alienplatform/platform-api/models"; - -let value: DataDeploymentFailed = { - deploymentId: "", - error: { - code: "", - internal: true, - message: "", - }, - phase: "preflights", - type: "DeploymentFailed", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `attemptedReleaseId` | *string* | :heavy_minus_sign: | ID of the release the platform was trying to deploy, if known | -| `deploymentId` | *string* | :heavy_check_mark: | ID of the deployment | -| `error` | [models.DataError1](../models/dataerror1.md) | :heavy_check_mark: | Canonical error container that provides a structured way to represent errors
with rich metadata including error codes, human-readable messages, context,
and chaining capabilities for error propagation.

This struct is designed to be both machine-readable and user-friendly,
supporting serialization for API responses and detailed error reporting
in distributed systems. | -| `phase` | [models.Phase](../models/phase.md) | :heavy_check_mark: | Phase of a deployment at which a failure occurred.

Derived from the source deployment status: `preflights-failed` →
`Preflights`, `provisioning-failed` → `Provisioning`, `update-failed` →
`Updating`, `delete-failed` → `Deleting`.
`refresh-failed` is modelled separately via `DeploymentDegraded`. | -| `type` | *"DeploymentFailed"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datadeploymentrecovered.md b/client-sdks/platform/typescript/docs/models/datadeploymentrecovered.md deleted file mode 100644 index 6833109bc..000000000 --- a/client-sdks/platform/typescript/docs/models/datadeploymentrecovered.md +++ /dev/null @@ -1,21 +0,0 @@ -# DataDeploymentRecovered - -## Example Usage - -```typescript -import { DataDeploymentRecovered } from "@alienplatform/platform-api/models"; - -let value: DataDeploymentRecovered = { - deploymentId: "", - releaseId: "", - type: "DeploymentRecovered", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | -| `deploymentId` | *string* | :heavy_check_mark: | ID of the deployment | -| `releaseId` | *string* | :heavy_check_mark: | ID of the release that is now live | -| `type` | *"DeploymentRecovered"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datadeploymentredeployrequested.md b/client-sdks/platform/typescript/docs/models/datadeploymentredeployrequested.md deleted file mode 100644 index d3b46276d..000000000 --- a/client-sdks/platform/typescript/docs/models/datadeploymentredeployrequested.md +++ /dev/null @@ -1,21 +0,0 @@ -# DataDeploymentRedeployRequested - -## Example Usage - -```typescript -import { DataDeploymentRedeployRequested } from "@alienplatform/platform-api/models"; - -let value: DataDeploymentRedeployRequested = { - deploymentId: "", - releaseId: "", - type: "DeploymentRedeployRequested", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | -| `deploymentId` | *string* | :heavy_check_mark: | ID of the deployment | -| `releaseId` | *string* | :heavy_check_mark: | ID of the release being redeployed | -| `type` | *"DeploymentRedeployRequested"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datadeploymentreleased.md b/client-sdks/platform/typescript/docs/models/datadeploymentreleased.md deleted file mode 100644 index cf9ffeb9f..000000000 --- a/client-sdks/platform/typescript/docs/models/datadeploymentreleased.md +++ /dev/null @@ -1,22 +0,0 @@ -# DataDeploymentReleased - -## Example Usage - -```typescript -import { DataDeploymentReleased } from "@alienplatform/platform-api/models"; - -let value: DataDeploymentReleased = { - deploymentId: "", - releaseId: "", - type: "DeploymentReleased", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `deploymentId` | *string* | :heavy_check_mark: | ID of the deployment | -| `previousReleaseId` | *string* | :heavy_minus_sign: | ID of the release that was previously live, if any | -| `releaseId` | *string* | :heavy_check_mark: | ID of the release that is now live | -| `type` | *"DeploymentReleased"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datadeploymentreleasepinned.md b/client-sdks/platform/typescript/docs/models/datadeploymentreleasepinned.md deleted file mode 100644 index 26abd58c4..000000000 --- a/client-sdks/platform/typescript/docs/models/datadeploymentreleasepinned.md +++ /dev/null @@ -1,22 +0,0 @@ -# DataDeploymentReleasePinned - -## Example Usage - -```typescript -import { DataDeploymentReleasePinned } from "@alienplatform/platform-api/models"; - -let value: DataDeploymentReleasePinned = { - deploymentId: "", - pinnedReleaseId: "", - type: "DeploymentReleasePinned", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | -| `deploymentId` | *string* | :heavy_check_mark: | ID of the deployment | -| `pinnedReleaseId` | *string* | :heavy_check_mark: | ID of the release that is now pinned | -| `previousPinnedReleaseId` | *string* | :heavy_minus_sign: | ID of the previously pinned release, if any | -| `type` | *"DeploymentReleasePinned"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datadeploymentreleaseunpinned.md b/client-sdks/platform/typescript/docs/models/datadeploymentreleaseunpinned.md deleted file mode 100644 index 5f9000bef..000000000 --- a/client-sdks/platform/typescript/docs/models/datadeploymentreleaseunpinned.md +++ /dev/null @@ -1,21 +0,0 @@ -# DataDeploymentReleaseUnpinned - -## Example Usage - -```typescript -import { DataDeploymentReleaseUnpinned } from "@alienplatform/platform-api/models"; - -let value: DataDeploymentReleaseUnpinned = { - deploymentId: "", - previousPinnedReleaseId: "", - type: "DeploymentReleaseUnpinned", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -| `deploymentId` | *string* | :heavy_check_mark: | ID of the deployment | -| `previousPinnedReleaseId` | *string* | :heavy_check_mark: | ID of the release that was previously pinned | -| `type` | *"DeploymentReleaseUnpinned"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datadeploymentretryrequested.md b/client-sdks/platform/typescript/docs/models/datadeploymentretryrequested.md deleted file mode 100644 index 35c49e3d2..000000000 --- a/client-sdks/platform/typescript/docs/models/datadeploymentretryrequested.md +++ /dev/null @@ -1,22 +0,0 @@ -# DataDeploymentRetryRequested - -## Example Usage - -```typescript -import { DataDeploymentRetryRequested } from "@alienplatform/platform-api/models"; - -let value: DataDeploymentRetryRequested = { - deploymentId: "", - type: "DeploymentRetryRequested", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | -| `actor` | *models.ActorUnion1* | :heavy_minus_sign: | N/A | -| `attemptedReleaseId` | *string* | :heavy_minus_sign: | ID of the release that the failed attempt was targeting, if known | -| `deploymentId` | *string* | :heavy_check_mark: | ID of the deployment | -| `previousError` | *models.PreviousErrorUnion* | :heavy_minus_sign: | N/A | -| `type` | *"DeploymentRetryRequested"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datadownloadingalienruntime.md b/client-sdks/platform/typescript/docs/models/datadownloadingalienruntime.md deleted file mode 100644 index 5bad9710f..000000000 --- a/client-sdks/platform/typescript/docs/models/datadownloadingalienruntime.md +++ /dev/null @@ -1,21 +0,0 @@ -# DataDownloadingAlienRuntime - -## Example Usage - -```typescript -import { DataDownloadingAlienRuntime } from "@alienplatform/platform-api/models"; - -let value: DataDownloadingAlienRuntime = { - targetTriple: "", - type: "DownloadingAlienRuntime", - url: "https://dim-jellyfish.com/", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ----------------------------- | ----------------------------- | ----------------------------- | ----------------------------- | -| `targetTriple` | *string* | :heavy_check_mark: | Target triple for the runtime | -| `type` | *"DownloadingAlienRuntime"* | :heavy_check_mark: | N/A | -| `url` | *string* | :heavy_check_mark: | URL being downloaded from | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/dataemptyingbuckets.md b/client-sdks/platform/typescript/docs/models/dataemptyingbuckets.md deleted file mode 100644 index 0c5dba194..000000000 --- a/client-sdks/platform/typescript/docs/models/dataemptyingbuckets.md +++ /dev/null @@ -1,21 +0,0 @@ -# DataEmptyingBuckets - -## Example Usage - -```typescript -import { DataEmptyingBuckets } from "@alienplatform/platform-api/models"; - -let value: DataEmptyingBuckets = { - bucketNames: [ - "", - ], - type: "EmptyingBuckets", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------- | ------------------------------------- | ------------------------------------- | ------------------------------------- | -| `bucketNames` | *string*[] | :heavy_check_mark: | Names of the S3 buckets being emptied | -| `type` | *"EmptyingBuckets"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/dataensuringdockerrepository.md b/client-sdks/platform/typescript/docs/models/dataensuringdockerrepository.md deleted file mode 100644 index d73067ba0..000000000 --- a/client-sdks/platform/typescript/docs/models/dataensuringdockerrepository.md +++ /dev/null @@ -1,19 +0,0 @@ -# DataEnsuringDockerRepository - -## Example Usage - -```typescript -import { DataEnsuringDockerRepository } from "@alienplatform/platform-api/models"; - -let value: DataEnsuringDockerRepository = { - repositoryName: "", - type: "EnsuringDockerRepository", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ----------------------------- | ----------------------------- | ----------------------------- | ----------------------------- | -| `repositoryName` | *string* | :heavy_check_mark: | Name of the docker repository | -| `type` | *"EnsuringDockerRepository"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/dataerror1.md b/client-sdks/platform/typescript/docs/models/dataerror1.md deleted file mode 100644 index 7a697b901..000000000 --- a/client-sdks/platform/typescript/docs/models/dataerror1.md +++ /dev/null @@ -1,34 +0,0 @@ -# DataError1 - -Canonical error container that provides a structured way to represent errors -with rich metadata including error codes, human-readable messages, context, -and chaining capabilities for error propagation. - -This struct is designed to be both machine-readable and user-friendly, -supporting serialization for API responses and detailed error reporting -in distributed systems. - -## Example Usage - -```typescript -import { DataError1 } from "@alienplatform/platform-api/models"; - -let value: DataError1 = { - code: "", - internal: false, - message: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `code` | *string* | :heavy_check_mark: | A unique identifier for the type of error.

This should be a short, machine-readable string that can be used
by clients to programmatically handle different error types.
Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" | -| `context` | *any* | :heavy_minus_sign: | Additional diagnostic information about the error context.

This optional field can contain structured data providing more details
about the error, such as validation errors, request parameters that
caused the issue, or other relevant context information. | -| `hint` | *string* | :heavy_minus_sign: | Optional human-facing remediation hint. | -| `httpStatusCode` | *number* | :heavy_minus_sign: | HTTP status code for this error.

Used when converting the error to an HTTP response. If None, falls back to
the error type's default status code or 500. | -| `internal` | *boolean* | :heavy_check_mark: | Indicates if this is an internal error that should not be exposed to users.

When `true`, this error contains sensitive information or implementation
details that should not be shown to end-users. Such errors should be
logged for debugging but replaced with generic error messages in responses. | -| `message` | *string* | :heavy_check_mark: | Human-readable error message.

This message should be clear and actionable for developers or end-users,
providing context about what went wrong and potentially how to fix it. | -| `retryable` | *boolean* | :heavy_minus_sign: | Indicates whether the operation that caused the error should be retried.

When `true`, the error is transient and the operation might succeed
if attempted again. When `false`, retrying the same operation is
unlikely to succeed without changes. | -| `source` | *any* | :heavy_minus_sign: | The underlying error that caused this error, creating an error chain.

This allows for proper error propagation and debugging by maintaining
the full context of how an error occurred through multiple layers
of an application. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/dataerror2.md b/client-sdks/platform/typescript/docs/models/dataerror2.md deleted file mode 100644 index cd2c5cb5a..000000000 --- a/client-sdks/platform/typescript/docs/models/dataerror2.md +++ /dev/null @@ -1,34 +0,0 @@ -# DataError2 - -Canonical error container that provides a structured way to represent errors -with rich metadata including error codes, human-readable messages, context, -and chaining capabilities for error propagation. - -This struct is designed to be both machine-readable and user-friendly, -supporting serialization for API responses and detailed error reporting -in distributed systems. - -## Example Usage - -```typescript -import { DataError2 } from "@alienplatform/platform-api/models"; - -let value: DataError2 = { - code: "", - internal: false, - message: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `code` | *string* | :heavy_check_mark: | A unique identifier for the type of error.

This should be a short, machine-readable string that can be used
by clients to programmatically handle different error types.
Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" | -| `context` | *any* | :heavy_minus_sign: | Additional diagnostic information about the error context.

This optional field can contain structured data providing more details
about the error, such as validation errors, request parameters that
caused the issue, or other relevant context information. | -| `hint` | *string* | :heavy_minus_sign: | Optional human-facing remediation hint. | -| `httpStatusCode` | *number* | :heavy_minus_sign: | HTTP status code for this error.

Used when converting the error to an HTTP response. If None, falls back to
the error type's default status code or 500. | -| `internal` | *boolean* | :heavy_check_mark: | Indicates if this is an internal error that should not be exposed to users.

When `true`, this error contains sensitive information or implementation
details that should not be shown to end-users. Such errors should be
logged for debugging but replaced with generic error messages in responses. | -| `message` | *string* | :heavy_check_mark: | Human-readable error message.

This message should be clear and actionable for developers or end-users,
providing context about what went wrong and potentially how to fix it. | -| `retryable` | *boolean* | :heavy_minus_sign: | Indicates whether the operation that caused the error should be retried.

When `true`, the error is transient and the operation might succeed
if attempted again. When `false`, retrying the same operation is
unlikely to succeed without changes. | -| `source` | *any* | :heavy_minus_sign: | The underlying error that caused this error, creating an error chain.

This allows for proper error propagation and debugging by maintaining
the full context of how an error occurred through multiple layers
of an application. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/dataexternal.md b/client-sdks/platform/typescript/docs/models/dataexternal.md new file mode 100644 index 000000000..9a42c0633 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/dataexternal.md @@ -0,0 +1,28 @@ +# DataExternal + +## Example Usage + +```typescript +import { DataExternal } from "@alienplatform/platform-api/models"; + +let value: DataExternal = { + provider: "", + status: { + collectionIssues: [], + health: "unknown", + lifecycle: "running", + partial: true, + stale: false, + }, + backend: "external", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `availability` | *models.Availability* | :heavy_minus_sign: | N/A | +| `provider` | *string* | :heavy_check_mark: | The BYO-key provider serving this binding (e.g. "openai"). Used on the Local
platform, where the app brings its own provider key instead of an ambient cloud. | +| `status` | [models.ResourceHeartbeatStatus69](../models/resourceheartbeatstatus69.md) | :heavy_check_mark: | N/A | +| `backend` | *"external"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datafinished.md b/client-sdks/platform/typescript/docs/models/datafinished.md deleted file mode 100644 index 0669e0ef8..000000000 --- a/client-sdks/platform/typescript/docs/models/datafinished.md +++ /dev/null @@ -1,17 +0,0 @@ -# DataFinished - -## Example Usage - -```typescript -import { DataFinished } from "@alienplatform/platform-api/models"; - -let value: DataFinished = { - type: "Finished", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `type` | *"Finished"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/dataflexibleserver.md b/client-sdks/platform/typescript/docs/models/dataflexibleserver.md index 8d4c58d98..6b1b3497c 100644 --- a/client-sdks/platform/typescript/docs/models/dataflexibleserver.md +++ b/client-sdks/platform/typescript/docs/models/dataflexibleserver.md @@ -1,5 +1,7 @@ # DataFlexibleServer +Azure Flexible Server backend. + ## Example Usage ```typescript diff --git a/client-sdks/platform/typescript/docs/models/datagcp1.md b/client-sdks/platform/typescript/docs/models/datagcp1.md index ba5d59e1c..1527ff9c7 100644 --- a/client-sdks/platform/typescript/docs/models/datagcp1.md +++ b/client-sdks/platform/typescript/docs/models/datagcp1.md @@ -57,6 +57,7 @@ let value: DataGcp1 = { | `horizonStatusMessage` | *string* | :heavy_minus_sign: | N/A | | `horizonStatusReason` | *string* | :heavy_minus_sign: | N/A | | `latestUpdateTimestamp` | *string* | :heavy_check_mark: | N/A | +| `observedImage` | *string* | :heavy_minus_sign: | N/A | | `status` | [models.ResourceHeartbeatStatus14](../models/resourceheartbeatstatus14.md) | :heavy_check_mark: | N/A | | `unavailableInstances` | *number* | :heavy_check_mark: | N/A | | `backend` | *"gcp"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datagcpcloudkms.md b/client-sdks/platform/typescript/docs/models/datagcpcloudkms.md new file mode 100644 index 000000000..f360b22ad --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/datagcpcloudkms.md @@ -0,0 +1,26 @@ +# DataGcpCloudKms + +## Example Usage + +```typescript +import { DataGcpCloudKms } from "@alienplatform/platform-api/models"; + +let value: DataGcpCloudKms = { + data: { + cryptoKeyName: "", + purpose: "", + status: { + health: "degraded", + lifecycle: "running", + }, + }, + provider: "gcp-cloud-kms", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `data` | [models.SyncReconcileRequestData7](../models/syncreconcilerequestdata7.md) | :heavy_check_mark: | N/A | +| `provider` | *"gcp-cloud-kms"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datagcpvertex.md b/client-sdks/platform/typescript/docs/models/datagcpvertex.md new file mode 100644 index 000000000..6b1dcd924 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/datagcpvertex.md @@ -0,0 +1,45 @@ +# DataGcpVertex + +## Example Usage + +```typescript +import { DataGcpVertex } from "@alienplatform/platform-api/models"; + +let value: DataGcpVertex = { + availability: { + catalogRevision: "", + models: [ + { + accessTest: "failed", + availability: "blocked", + blockers: [], + clientApis: [ + "open-ai-chat-completions", + ], + publicModelId: "", + }, + ], + source: "anthropic", + }, + location: "", + project: "", + status: { + collectionIssues: [], + health: "degraded", + lifecycle: "unknown", + partial: false, + stale: false, + }, + backend: "gcpVertex", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `availability` | [models.SyncReconcileRequestAvailability2](../models/syncreconcilerequestavailability2.md) | :heavy_check_mark: | N/A | +| `location` | *string* | :heavy_check_mark: | N/A | +| `project` | *string* | :heavy_check_mark: | N/A | +| `status` | [models.ResourceHeartbeatStatus67](../models/resourceheartbeatstatus67.md) | :heavy_check_mark: | N/A | +| `backend` | *"gcpVertex"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datageneratingcloudformationtemplate.md b/client-sdks/platform/typescript/docs/models/datageneratingcloudformationtemplate.md deleted file mode 100644 index 13e9bd0e6..000000000 --- a/client-sdks/platform/typescript/docs/models/datageneratingcloudformationtemplate.md +++ /dev/null @@ -1,17 +0,0 @@ -# DataGeneratingCloudFormationTemplate - -## Example Usage - -```typescript -import { DataGeneratingCloudFormationTemplate } from "@alienplatform/platform-api/models"; - -let value: DataGeneratingCloudFormationTemplate = { - type: "GeneratingCloudFormationTemplate", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | -| `type` | *"GeneratingCloudFormationTemplate"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datageneratingtemplate.md b/client-sdks/platform/typescript/docs/models/datageneratingtemplate.md deleted file mode 100644 index e83d11e19..000000000 --- a/client-sdks/platform/typescript/docs/models/datageneratingtemplate.md +++ /dev/null @@ -1,19 +0,0 @@ -# DataGeneratingTemplate - -## Example Usage - -```typescript -import { DataGeneratingTemplate } from "@alienplatform/platform-api/models"; - -let value: DataGeneratingTemplate = { - platform: "", - type: "GeneratingTemplate", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `platform` | *string* | :heavy_check_mark: | Platform for which the template is being generated | -| `type` | *"GeneratingTemplate"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datahealth66.md b/client-sdks/platform/typescript/docs/models/datahealth66.md new file mode 100644 index 000000000..388180dfa --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/datahealth66.md @@ -0,0 +1,15 @@ +# DataHealth66 + +## Example Usage + +```typescript +import { DataHealth66 } from "@alienplatform/platform-api/models"; + +let value: DataHealth66 = "degraded"; +``` + +## Values + +```typescript +"unknown" | "healthy" | "degraded" | "unhealthy" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datahealth67.md b/client-sdks/platform/typescript/docs/models/datahealth67.md new file mode 100644 index 000000000..2d2b3cab3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/datahealth67.md @@ -0,0 +1,15 @@ +# DataHealth67 + +## Example Usage + +```typescript +import { DataHealth67 } from "@alienplatform/platform-api/models"; + +let value: DataHealth67 = "degraded"; +``` + +## Values + +```typescript +"unknown" | "healthy" | "degraded" | "unhealthy" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datahealth68.md b/client-sdks/platform/typescript/docs/models/datahealth68.md new file mode 100644 index 000000000..e3bd71e6c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/datahealth68.md @@ -0,0 +1,15 @@ +# DataHealth68 + +## Example Usage + +```typescript +import { DataHealth68 } from "@alienplatform/platform-api/models"; + +let value: DataHealth68 = "degraded"; +``` + +## Values + +```typescript +"unknown" | "healthy" | "degraded" | "unhealthy" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datahealth69.md b/client-sdks/platform/typescript/docs/models/datahealth69.md new file mode 100644 index 000000000..25c2cb86c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/datahealth69.md @@ -0,0 +1,15 @@ +# DataHealth69 + +## Example Usage + +```typescript +import { DataHealth69 } from "@alienplatform/platform-api/models"; + +let value: DataHealth69 = "healthy"; +``` + +## Values + +```typescript +"unknown" | "healthy" | "degraded" | "unhealthy" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datahealth70.md b/client-sdks/platform/typescript/docs/models/datahealth70.md new file mode 100644 index 000000000..31082ba00 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/datahealth70.md @@ -0,0 +1,15 @@ +# DataHealth70 + +## Example Usage + +```typescript +import { DataHealth70 } from "@alienplatform/platform-api/models"; + +let value: DataHealth70 = "unknown"; +``` + +## Values + +```typescript +"unknown" | "healthy" | "degraded" | "unhealthy" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datahealth71.md b/client-sdks/platform/typescript/docs/models/datahealth71.md new file mode 100644 index 000000000..0a7b56e8b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/datahealth71.md @@ -0,0 +1,15 @@ +# DataHealth71 + +## Example Usage + +```typescript +import { DataHealth71 } from "@alienplatform/platform-api/models"; + +let value: DataHealth71 = "degraded"; +``` + +## Values + +```typescript +"unknown" | "healthy" | "degraded" | "unhealthy" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datahealth72.md b/client-sdks/platform/typescript/docs/models/datahealth72.md new file mode 100644 index 000000000..b7b755b92 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/datahealth72.md @@ -0,0 +1,15 @@ +# DataHealth72 + +## Example Usage + +```typescript +import { DataHealth72 } from "@alienplatform/platform-api/models"; + +let value: DataHealth72 = "unknown"; +``` + +## Values + +```typescript +"unknown" | "healthy" | "degraded" | "unhealthy" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datahorizonplatform.md b/client-sdks/platform/typescript/docs/models/datahorizonplatform.md index ea5b52c30..5bcb38d7e 100644 --- a/client-sdks/platform/typescript/docs/models/datahorizonplatform.md +++ b/client-sdks/platform/typescript/docs/models/datahorizonplatform.md @@ -39,7 +39,9 @@ let value: DataHorizonPlatform = { | `cpu` | *models.CpuUnion3* | :heavy_minus_sign: | N/A | | `events` | [models.SyncReconcileRequestEvent3](../models/syncreconcilerequestevent3.md)[] | :heavy_check_mark: | N/A | | `image` | *string* | :heavy_minus_sign: | N/A | +| `latestUpdateTimestamp` | *string* | :heavy_minus_sign: | N/A | | `memory` | *models.MemoryUnion3* | :heavy_minus_sign: | N/A | +| `observedImage` | *string* | :heavy_minus_sign: | N/A | | `replicaUnits` | [models.ReplicaUnit](../models/replicaunit.md)[] | :heavy_check_mark: | N/A | | `replicas` | [models.Replicas2](../models/replicas2.md) | :heavy_check_mark: | N/A | | `schedulingMode` | [models.SchedulingMode](../models/schedulingmode.md) | :heavy_check_mark: | N/A | diff --git a/client-sdks/platform/typescript/docs/models/dataimportingstackstatefromcloudformation.md b/client-sdks/platform/typescript/docs/models/dataimportingstackstatefromcloudformation.md deleted file mode 100644 index 8320b3128..000000000 --- a/client-sdks/platform/typescript/docs/models/dataimportingstackstatefromcloudformation.md +++ /dev/null @@ -1,19 +0,0 @@ -# DataImportingStackStateFromCloudFormation - -## Example Usage - -```typescript -import { DataImportingStackStateFromCloudFormation } from "@alienplatform/platform-api/models"; - -let value: DataImportingStackStateFromCloudFormation = { - cfnStackName: "", - type: "ImportingStackStateFromCloudFormation", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ----------------------------------------- | ----------------------------------------- | ----------------------------------------- | ----------------------------------------- | -| `cfnStackName` | *string* | :heavy_check_mark: | Name of the CloudFormation stack | -| `type` | *"ImportingStackStateFromCloudFormation"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datakey.md b/client-sdks/platform/typescript/docs/models/datakey.md new file mode 100644 index 000000000..67be9a00b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/datakey.md @@ -0,0 +1,30 @@ +# DataKey + +## Example Usage + +```typescript +import { DataKey } from "@alienplatform/platform-api/models"; + +let value: DataKey = { + data: { + data: { + keyId: "", + keyOperations: [], + keyType: "", + status: { + health: "unknown", + lifecycle: "deleting", + }, + }, + provider: "azure-key-vault", + }, + resourceType: "key", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | +| `data` | *models.SyncReconcileRequestDataUnion17* | :heavy_check_mark: | N/A | +| `resourceType` | *"key"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/dataloadingconfiguration.md b/client-sdks/platform/typescript/docs/models/dataloadingconfiguration.md deleted file mode 100644 index 5cb5148ee..000000000 --- a/client-sdks/platform/typescript/docs/models/dataloadingconfiguration.md +++ /dev/null @@ -1,17 +0,0 @@ -# DataLoadingConfiguration - -## Example Usage - -```typescript -import { DataLoadingConfiguration } from "@alienplatform/platform-api/models"; - -let value: DataLoadingConfiguration = { - type: "LoadingConfiguration", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------ | ------------------------ | ------------------------ | ------------------------ | -| `type` | *"LoadingConfiguration"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datalocal8.md b/client-sdks/platform/typescript/docs/models/datalocal8.md index 71c22b229..8323fd88f 100644 --- a/client-sdks/platform/typescript/docs/models/datalocal8.md +++ b/client-sdks/platform/typescript/docs/models/datalocal8.md @@ -1,5 +1,7 @@ # DataLocal8 +Local embedded Postgres backend. + ## Example Usage ```typescript diff --git a/client-sdks/platform/typescript/docs/models/datamachines1.md b/client-sdks/platform/typescript/docs/models/datamachines1.md index b049d4b97..b419f874a 100644 --- a/client-sdks/platform/typescript/docs/models/datamachines1.md +++ b/client-sdks/platform/typescript/docs/models/datamachines1.md @@ -56,6 +56,7 @@ let value: DataMachines1 = { | `horizonStatusMessage` | *string* | :heavy_minus_sign: | N/A | | `horizonStatusReason` | *string* | :heavy_minus_sign: | N/A | | `latestUpdateTimestamp` | *string* | :heavy_check_mark: | N/A | +| `observedImage` | *string* | :heavy_minus_sign: | N/A | | `status` | [models.ResourceHeartbeatStatus16](../models/resourceheartbeatstatus16.md) | :heavy_check_mark: | N/A | | `unavailableInstances` | *number* | :heavy_check_mark: | N/A | | `backend` | *"machines"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datapreparingenvironment.md b/client-sdks/platform/typescript/docs/models/datapreparingenvironment.md deleted file mode 100644 index 52f8c8f3f..000000000 --- a/client-sdks/platform/typescript/docs/models/datapreparingenvironment.md +++ /dev/null @@ -1,19 +0,0 @@ -# DataPreparingEnvironment - -## Example Usage - -```typescript -import { DataPreparingEnvironment } from "@alienplatform/platform-api/models"; - -let value: DataPreparingEnvironment = { - strategyName: "", - type: "PreparingEnvironment", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------ | ------------------------------------------ | ------------------------------------------ | ------------------------------------------ | -| `strategyName` | *string* | :heavy_check_mark: | Name of the deployment strategy being used | -| `type` | *"PreparingEnvironment"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/dataprovisioningagent.md b/client-sdks/platform/typescript/docs/models/dataprovisioningagent.md deleted file mode 100644 index bc8856ca5..000000000 --- a/client-sdks/platform/typescript/docs/models/dataprovisioningagent.md +++ /dev/null @@ -1,21 +0,0 @@ -# DataProvisioningAgent - -## Example Usage - -```typescript -import { DataProvisioningAgent } from "@alienplatform/platform-api/models"; - -let value: DataProvisioningAgent = { - agentId: "", - releaseId: "", - type: "ProvisioningAgent", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| --------------------------------------------- | --------------------------------------------- | --------------------------------------------- | --------------------------------------------- | -| `agentId` | *string* | :heavy_check_mark: | ID of the agent being provisioned | -| `releaseId` | *string* | :heavy_check_mark: | ID of the release being deployed to the agent | -| `type` | *"ProvisioningAgent"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datapushingimage.md b/client-sdks/platform/typescript/docs/models/datapushingimage.md deleted file mode 100644 index 4fc451a2f..000000000 --- a/client-sdks/platform/typescript/docs/models/datapushingimage.md +++ /dev/null @@ -1,20 +0,0 @@ -# DataPushingImage - -## Example Usage - -```typescript -import { DataPushingImage } from "@alienplatform/platform-api/models"; - -let value: DataPushingImage = { - image: "https://picsum.photos/seed/bgd6b4HoNE/948/3236", - type: "PushingImage", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ | -| `image` | *string* | :heavy_check_mark: | Name of the image being pushed | -| `progress` | *models.ProgressUnion* | :heavy_minus_sign: | N/A | -| `type` | *"PushingImage"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datapushingresource.md b/client-sdks/platform/typescript/docs/models/datapushingresource.md deleted file mode 100644 index 4e4a20783..000000000 --- a/client-sdks/platform/typescript/docs/models/datapushingresource.md +++ /dev/null @@ -1,21 +0,0 @@ -# DataPushingResource - -## Example Usage - -```typescript -import { DataPushingResource } from "@alienplatform/platform-api/models"; - -let value: DataPushingResource = { - resourceName: "", - resourceType: "", - type: "PushingResource", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | -| `resourceName` | *string* | :heavy_check_mark: | Name of the resource being pushed | -| `resourceType` | *string* | :heavy_check_mark: | Type of the resource: "worker", "container" | -| `type` | *"PushingResource"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datapushingstack.md b/client-sdks/platform/typescript/docs/models/datapushingstack.md deleted file mode 100644 index b5da8bdc4..000000000 --- a/client-sdks/platform/typescript/docs/models/datapushingstack.md +++ /dev/null @@ -1,22 +0,0 @@ -# DataPushingStack - -## Example Usage - -```typescript -import { DataPushingStack } from "@alienplatform/platform-api/models"; - -let value: DataPushingStack = { - platform: "", - stack: "", - type: "PushingStack", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -| `destination` | *string* | :heavy_minus_sign: | Human-readable destination for pushed images | -| `platform` | *string* | :heavy_check_mark: | Target platform | -| `stack` | *string* | :heavy_check_mark: | Name of the stack being pushed | -| `type` | *"PushingStack"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datareason66.md b/client-sdks/platform/typescript/docs/models/datareason66.md new file mode 100644 index 000000000..2ab42a85f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/datareason66.md @@ -0,0 +1,15 @@ +# DataReason66 + +## Example Usage + +```typescript +import { DataReason66 } from "@alienplatform/platform-api/models"; + +let value: DataReason66 = "timed-out"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datareason67.md b/client-sdks/platform/typescript/docs/models/datareason67.md new file mode 100644 index 000000000..ae95b4d27 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/datareason67.md @@ -0,0 +1,15 @@ +# DataReason67 + +## Example Usage + +```typescript +import { DataReason67 } from "@alienplatform/platform-api/models"; + +let value: DataReason67 = "forbidden"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datareason68.md b/client-sdks/platform/typescript/docs/models/datareason68.md new file mode 100644 index 000000000..44fe885c6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/datareason68.md @@ -0,0 +1,15 @@ +# DataReason68 + +## Example Usage + +```typescript +import { DataReason68 } from "@alienplatform/platform-api/models"; + +let value: DataReason68 = "api-unavailable"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datareason69.md b/client-sdks/platform/typescript/docs/models/datareason69.md new file mode 100644 index 000000000..eb721fdb5 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/datareason69.md @@ -0,0 +1,15 @@ +# DataReason69 + +## Example Usage + +```typescript +import { DataReason69 } from "@alienplatform/platform-api/models"; + +let value: DataReason69 = "forbidden"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datarunningpreflights.md b/client-sdks/platform/typescript/docs/models/datarunningpreflights.md deleted file mode 100644 index aa2c9ddb4..000000000 --- a/client-sdks/platform/typescript/docs/models/datarunningpreflights.md +++ /dev/null @@ -1,21 +0,0 @@ -# DataRunningPreflights - -## Example Usage - -```typescript -import { DataRunningPreflights } from "@alienplatform/platform-api/models"; - -let value: DataRunningPreflights = { - platform: "", - stack: "", - type: "RunningPreflights", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `platform` | *string* | :heavy_check_mark: | Platform being targeted | -| `stack` | *string* | :heavy_check_mark: | Name of the stack being checked | -| `type` | *"RunningPreflights"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datarunningtestworker.md b/client-sdks/platform/typescript/docs/models/datarunningtestworker.md deleted file mode 100644 index 475f34733..000000000 --- a/client-sdks/platform/typescript/docs/models/datarunningtestworker.md +++ /dev/null @@ -1,19 +0,0 @@ -# DataRunningTestWorker - -## Example Usage - -```typescript -import { DataRunningTestWorker } from "@alienplatform/platform-api/models"; - -let value: DataRunningTestWorker = { - stackName: "", - type: "RunningTestWorker", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ | -| `stackName` | *string* | :heavy_check_mark: | Name of the stack being tested | -| `type` | *"RunningTestWorker"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datasettingupplatformcontext.md b/client-sdks/platform/typescript/docs/models/datasettingupplatformcontext.md deleted file mode 100644 index 2caff3986..000000000 --- a/client-sdks/platform/typescript/docs/models/datasettingupplatformcontext.md +++ /dev/null @@ -1,19 +0,0 @@ -# DataSettingUpPlatformContext - -## Example Usage - -```typescript -import { DataSettingUpPlatformContext } from "@alienplatform/platform-api/models"; - -let value: DataSettingUpPlatformContext = { - platformName: "", - type: "SettingUpPlatformContext", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ----------------------------------------- | ----------------------------------------- | ----------------------------------------- | ----------------------------------------- | -| `platformName` | *string* | :heavy_check_mark: | Name of the platform (e.g., "AWS", "GCP") | -| `type` | *"SettingUpPlatformContext"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datastackstep.md b/client-sdks/platform/typescript/docs/models/datastackstep.md deleted file mode 100644 index 30d528696..000000000 --- a/client-sdks/platform/typescript/docs/models/datastackstep.md +++ /dev/null @@ -1,33 +0,0 @@ -# DataStackStep - -## Example Usage - -```typescript -import { DataStackStep } from "@alienplatform/platform-api/models"; - -let value: DataStackStep = { - nextState: { - platform: "test", - resourcePrefix: "", - resources: { - "key": { - config: { - id: "", - type: "", - }, - status: "running", - type: "", - }, - }, - }, - type: "StackStep", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | -| `nextState` | [models.NextState](../models/nextstate.md) | :heavy_check_mark: | Represents the collective state of all resources in a stack, including platform and pending actions. | -| `suggestedDelayMs` | *number* | :heavy_minus_sign: | An suggested duration to wait before executing the next step. | -| `type` | *"StackStep"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/dataupdatingagent.md b/client-sdks/platform/typescript/docs/models/dataupdatingagent.md deleted file mode 100644 index 79e63e3fb..000000000 --- a/client-sdks/platform/typescript/docs/models/dataupdatingagent.md +++ /dev/null @@ -1,21 +0,0 @@ -# DataUpdatingAgent - -## Example Usage - -```typescript -import { DataUpdatingAgent } from "@alienplatform/platform-api/models"; - -let value: DataUpdatingAgent = { - agentId: "", - releaseId: "", - type: "UpdatingAgent", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | -| `agentId` | *string* | :heavy_check_mark: | ID of the agent being updated | -| `releaseId` | *string* | :heavy_check_mark: | ID of the new release being deployed to the agent | -| `type` | *"UpdatingAgent"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/defaultenum.md b/client-sdks/platform/typescript/docs/models/defaultenum.md new file mode 100644 index 000000000..86786cae3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/defaultenum.md @@ -0,0 +1,17 @@ +# DefaultEnum + +Decision for commands no rule matches. + +## Example Usage + +```typescript +import { DefaultEnum } from "@alienplatform/platform-api/models"; + +let value: DefaultEnum = "auto"; +``` + +## Values + +```typescript +"auto" | "manual" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deliverystatus.md b/client-sdks/platform/typescript/docs/models/deliverystatus.md new file mode 100644 index 000000000..043e72d42 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deliverystatus.md @@ -0,0 +1,15 @@ +# DeliveryStatus + +## Example Usage + +```typescript +import { DeliveryStatus } from "@alienplatform/platform-api/models"; + +let value: DeliveryStatus = "pending"; +``` + +## Values + +```typescript +"pending" | "sent" | "failed" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deployment.md b/client-sdks/platform/typescript/docs/models/deployment.md index 28816fe99..72cd752df 100644 --- a/client-sdks/platform/typescript/docs/models/deployment.md +++ b/client-sdks/platform/typescript/docs/models/deployment.md @@ -18,7 +18,44 @@ let value: Deployment = { currentReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", desiredReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", pinnedReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", + releaseChannel: "", retryRequested: true, + updateState: { + active: { + id: "duop_0vtxpb1sw4sbcdwg2xo37q6", + status: "applying", + reasons: [], + targetReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", + changedKeys: [], + requestedAt: new Date("2026-04-28T10:12:17.277Z"), + }, + next: { + id: "duop_0vtxpb1sw4sbcdwg2xo37q6", + status: "queued", + reasons: [], + targetReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", + changedKeys: [ + "", + "", + "", + ], + requestedAt: new Date("2025-05-23T02:17:08.731Z"), + }, + latest: { + id: "duop_0vtxpb1sw4sbcdwg2xo37q6", + status: "superseded", + reasons: [ + "redeploy", + ], + targetReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", + changedKeys: [ + "", + "", + "", + ], + requestedAt: new Date("2024-11-23T19:43:18.153Z"), + }, + }, createdAt: new Date("2026-07-09T12:57:49.283Z"), updatedAt: new Date("2025-11-14T04:39:09.144Z"), managerId: "mgr_enxscjrqiiu2lrc672hwwuc5", @@ -48,6 +85,7 @@ let value: Deployment = { | `currentReleaseId` | *string* | :heavy_minus_sign: | ID of the currently deployed release (actual state) | rel_WbhQgksrawSKIpEN0NAssHX9 | | `desiredReleaseId` | *string* | :heavy_minus_sign: | ID of the desired release for deployment/update (desired state) | rel_WbhQgksrawSKIpEN0NAssHX9 | | `pinnedReleaseId` | *string* | :heavy_minus_sign: | ID of the pinned release | rel_WbhQgksrawSKIpEN0NAssHX9 | +| `releaseChannel` | *string* | :heavy_check_mark: | N/A | | | `importSource` | [models.DeploymentImportSource](../models/deploymentimportsource.md) | :heavy_minus_sign: | Setup source that imported this deployment | | | `setupMethod` | [models.DeploymentSetupMethod1](../models/deploymentsetupmethod1.md) | :heavy_minus_sign: | Setup method that created the deployment record and owns setup-time resources. | | | `setupMetadata` | Record | :heavy_minus_sign: | Setup method metadata needed to guide privileged teardown. | | @@ -64,6 +102,7 @@ let value: Deployment = { | `environmentVariables` | [models.EnvironmentVariableConfig](../models/environmentvariableconfig.md)[] | :heavy_minus_sign: | Configuration of environment variables for the deployment | | | `targetEnvironmentVariables` | [models.DeploymentTargetEnvironmentVariables](../models/deploymenttargetenvironmentvariables.md) | :heavy_minus_sign: | Snapshot of target environment variables for the deployment | | | `currentEnvironmentVariables` | [models.DeploymentCurrentEnvironmentVariables](../models/deploymentcurrentenvironmentvariables.md) | :heavy_minus_sign: | Snapshot of current environment variables for the deployment | | +| `updateState` | [models.DeploymentUpdateState](../models/deploymentupdatestate.md) | :heavy_minus_sign: | Durable progress for deployment updates | | | `createdAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | | `updatedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | | `managerId` | *string* | :heavy_check_mark: | N/A | mgr_enxscjrqiiu2lrc672hwwuc5 | diff --git a/client-sdks/platform/typescript/docs/models/deploymentdefaultboolean.md b/client-sdks/platform/typescript/docs/models/deploymentdefaultboolean.md deleted file mode 100644 index a3b912e0a..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdefaultboolean.md +++ /dev/null @@ -1,19 +0,0 @@ -# DeploymentDefaultBoolean - -## Example Usage - -```typescript -import { DeploymentDefaultBoolean } from "@alienplatform/platform-api/models"; - -let value: DeploymentDefaultBoolean = { - type: "boolean", - value: true, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | -| `type` | [models.DeploymentTypeBoolean](../models/deploymenttypeboolean.md) | :heavy_check_mark: | N/A | -| `value` | *boolean* | :heavy_check_mark: | Boolean default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdefaultnumber.md b/client-sdks/platform/typescript/docs/models/deploymentdefaultnumber.md deleted file mode 100644 index 558b97aa8..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdefaultnumber.md +++ /dev/null @@ -1,19 +0,0 @@ -# DeploymentDefaultNumber - -## Example Usage - -```typescript -import { DeploymentDefaultNumber } from "@alienplatform/platform-api/models"; - -let value: DeploymentDefaultNumber = { - type: "number", - value: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | -| `type` | [models.DeploymentTypeNumber](../models/deploymenttypenumber.md) | :heavy_check_mark: | N/A | -| `value` | *string* | :heavy_check_mark: | Number default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdefaultstring.md b/client-sdks/platform/typescript/docs/models/deploymentdefaultstring.md deleted file mode 100644 index 517a60fde..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdefaultstring.md +++ /dev/null @@ -1,19 +0,0 @@ -# DeploymentDefaultString - -## Example Usage - -```typescript -import { DeploymentDefaultString } from "@alienplatform/platform-api/models"; - -let value: DeploymentDefaultString = { - type: "string", - value: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | -| `type` | [models.DeploymentTypeString](../models/deploymenttypestring.md) | :heavy_check_mark: | N/A | -| `value` | *string* | :heavy_check_mark: | String default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdefaultstringlist.md b/client-sdks/platform/typescript/docs/models/deploymentdefaultstringlist.md deleted file mode 100644 index 54075985b..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdefaultstringlist.md +++ /dev/null @@ -1,19 +0,0 @@ -# DeploymentDefaultStringList - -## Example Usage - -```typescript -import { DeploymentDefaultStringList } from "@alienplatform/platform-api/models"; - -let value: DeploymentDefaultStringList = { - type: "stringList", - value: [], -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | -| `type` | [models.DeploymentTypeStringList](../models/deploymenttypestringlist.md) | :heavy_check_mark: | N/A | -| `value` | *string*[] | :heavy_check_mark: | String list default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdefaultunion.md b/client-sdks/platform/typescript/docs/models/deploymentdefaultunion.md deleted file mode 100644 index d98673fad..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdefaultunion.md +++ /dev/null @@ -1,47 +0,0 @@ -# DeploymentDefaultUnion - - -## Supported Types - -### `models.DeploymentDefaultString` - -```typescript -const value: models.DeploymentDefaultString = { - type: "string", - value: "", -}; -``` - -### `models.DeploymentDefaultNumber` - -```typescript -const value: models.DeploymentDefaultNumber = { - type: "number", - value: "", -}; -``` - -### `models.DeploymentDefaultBoolean` - -```typescript -const value: models.DeploymentDefaultBoolean = { - type: "boolean", - value: true, -}; -``` - -### `models.DeploymentDefaultStringList` - -```typescript -const value: models.DeploymentDefaultStringList = { - type: "stringList", - value: [], -}; -``` - -### `any` - -```typescript -const value: any = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponse.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponse.md index e2255764d..60310ad27 100644 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponse.md +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponse.md @@ -18,32 +18,53 @@ let value: DeploymentDetailResponse = { currentReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", desiredReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", pinnedReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", + releaseChannel: "", retryRequested: true, - createdAt: new Date("2025-07-19T07:45:42.706Z"), - updatedAt: new Date("2026-03-28T14:41:25.114Z"), - managerId: "mgr_enxscjrqiiu2lrc672hwwuc5", - workspaceId: "ws_It13CUaGEhLLAB87simX0", - release: { - id: "rel_WbhQgksrawSKIpEN0NAssHX9", - version: "", - gitMetadata: { - commitSha: "dc36199b2234c6586ebe05ec94078a895c707e29", - commitMessage: - "add method to measure Interaction to Next Paint (INP) (#36490)", - commitRef: "main", - commitDate: new Date("2026-03-16T12:00:00Z"), - dirty: true, - remoteUrl: "https://github.com/alienplatform/alien", - commitAuthorName: "John Doe", - commitAuthorEmail: "john@example.com", - commitAuthorLogin: "johndoe", - commitAuthorAvatarUrl: "https://github.com/johndoe.png", + updateState: { + active: { + id: "duop_0vtxpb1sw4sbcdwg2xo37q6", + status: "applying", + reasons: [], + targetReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", + changedKeys: [], + requestedAt: new Date("2026-04-28T10:12:17.277Z"), + }, + next: { + id: "duop_0vtxpb1sw4sbcdwg2xo37q6", + status: "queued", + reasons: [], + targetReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", + changedKeys: [ + "", + "", + "", + ], + requestedAt: new Date("2025-05-23T02:17:08.731Z"), + }, + latest: { + id: "duop_0vtxpb1sw4sbcdwg2xo37q6", + status: "superseded", + reasons: [ + "redeploy", + ], + targetReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", + changedKeys: [ + "", + "", + "", + ], + requestedAt: new Date("2024-11-23T19:43:18.153Z"), }, - createdAt: new Date("2024-06-27T06:57:01.451Z"), }, + createdAt: new Date("2025-05-12T19:36:51.813Z"), + updatedAt: new Date("2024-10-03T08:47:08.184Z"), + managerId: "mgr_enxscjrqiiu2lrc672hwwuc5", + workspaceId: "ws_It13CUaGEhLLAB87simX0", + release: null, deploymentGroup: { id: "dg_r27ict8c7vcgsumpj90ackf7b", name: "prod-us-east-1", + externalId: "ext_example_01", }, project: { id: "prj_mcytp6z3j91f7tn5ryqsfwtr", @@ -74,6 +95,7 @@ let value: DeploymentDetailResponse = { | `currentReleaseId` | *string* | :heavy_minus_sign: | ID of the currently deployed release (actual state) | rel_WbhQgksrawSKIpEN0NAssHX9 | | `desiredReleaseId` | *string* | :heavy_minus_sign: | ID of the desired release for deployment/update (desired state) | rel_WbhQgksrawSKIpEN0NAssHX9 | | `pinnedReleaseId` | *string* | :heavy_minus_sign: | ID of the pinned release | rel_WbhQgksrawSKIpEN0NAssHX9 | +| `releaseChannel` | *string* | :heavy_check_mark: | N/A | | | `importSource` | [models.DeploymentDetailResponseImportSource](../models/deploymentdetailresponseimportsource.md) | :heavy_minus_sign: | Setup source that imported this deployment | | | `setupMethod` | [models.DeploymentDetailResponseSetupMethod](../models/deploymentdetailresponsesetupmethod.md) | :heavy_minus_sign: | Setup method that created the deployment record and owns setup-time resources. | | | `setupMetadata` | Record | :heavy_minus_sign: | Setup method metadata needed to guide privileged teardown. | | @@ -90,6 +112,7 @@ let value: DeploymentDetailResponse = { | `environmentVariables` | [models.EnvironmentVariableConfig](../models/environmentvariableconfig.md)[] | :heavy_minus_sign: | Configuration of environment variables for the deployment | | | `targetEnvironmentVariables` | [models.DeploymentDetailResponseTargetEnvironmentVariables](../models/deploymentdetailresponsetargetenvironmentvariables.md) | :heavy_minus_sign: | Snapshot of target environment variables for the deployment | | | `currentEnvironmentVariables` | [models.DeploymentDetailResponseCurrentEnvironmentVariables](../models/deploymentdetailresponsecurrentenvironmentvariables.md) | :heavy_minus_sign: | Snapshot of current environment variables for the deployment | | +| `updateState` | [models.DeploymentDetailResponseUpdateState](../models/deploymentdetailresponseupdatestate.md) | :heavy_minus_sign: | Durable progress for deployment updates | | | `createdAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | | `updatedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | | `managerId` | *string* | :heavy_check_mark: | N/A | mgr_enxscjrqiiu2lrc672hwwuc5 | diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsedefaultboolean.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsedefaultboolean.md deleted file mode 100644 index a0c8820c9..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsedefaultboolean.md +++ /dev/null @@ -1,19 +0,0 @@ -# DeploymentDetailResponseDefaultBoolean - -## Example Usage - -```typescript -import { DeploymentDetailResponseDefaultBoolean } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseDefaultBoolean = { - type: "boolean", - value: false, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | -| `type` | [models.DeploymentDetailResponseTypeBoolean](../models/deploymentdetailresponsetypeboolean.md) | :heavy_check_mark: | N/A | -| `value` | *boolean* | :heavy_check_mark: | Boolean default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsedefaultnumber.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsedefaultnumber.md deleted file mode 100644 index 331a30ace..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsedefaultnumber.md +++ /dev/null @@ -1,19 +0,0 @@ -# DeploymentDetailResponseDefaultNumber - -## Example Usage - -```typescript -import { DeploymentDetailResponseDefaultNumber } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseDefaultNumber = { - type: "number", - value: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `type` | [models.DeploymentDetailResponseTypeNumber](../models/deploymentdetailresponsetypenumber.md) | :heavy_check_mark: | N/A | -| `value` | *string* | :heavy_check_mark: | Number default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsedefaultstring.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsedefaultstring.md deleted file mode 100644 index 8f4e09e3c..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsedefaultstring.md +++ /dev/null @@ -1,19 +0,0 @@ -# DeploymentDetailResponseDefaultString - -## Example Usage - -```typescript -import { DeploymentDetailResponseDefaultString } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseDefaultString = { - type: "string", - value: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `type` | [models.DeploymentDetailResponseTypeString](../models/deploymentdetailresponsetypestring.md) | :heavy_check_mark: | N/A | -| `value` | *string* | :heavy_check_mark: | String default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsedefaultstringlist.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsedefaultstringlist.md deleted file mode 100644 index d3192be77..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsedefaultstringlist.md +++ /dev/null @@ -1,22 +0,0 @@ -# DeploymentDetailResponseDefaultStringList - -## Example Usage - -```typescript -import { DeploymentDetailResponseDefaultStringList } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseDefaultStringList = { - type: "stringList", - value: [ - "", - "", - ], -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | -| `type` | [models.DeploymentDetailResponseTypeStringList](../models/deploymentdetailresponsetypestringlist.md) | :heavy_check_mark: | N/A | -| `value` | *string*[] | :heavy_check_mark: | String list default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsedefaultunion.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsedefaultunion.md deleted file mode 100644 index 0f8867ec8..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsedefaultunion.md +++ /dev/null @@ -1,50 +0,0 @@ -# DeploymentDetailResponseDefaultUnion - - -## Supported Types - -### `models.DeploymentDetailResponseDefaultString` - -```typescript -const value: models.DeploymentDetailResponseDefaultString = { - type: "string", - value: "", -}; -``` - -### `models.DeploymentDetailResponseDefaultNumber` - -```typescript -const value: models.DeploymentDetailResponseDefaultNumber = { - type: "number", - value: "", -}; -``` - -### `models.DeploymentDetailResponseDefaultBoolean` - -```typescript -const value: models.DeploymentDetailResponseDefaultBoolean = { - type: "boolean", - value: false, -}; -``` - -### `models.DeploymentDetailResponseDefaultStringList` - -```typescript -const value: models.DeploymentDetailResponseDefaultStringList = { - type: "stringList", - value: [ - "", - "", - ], -}; -``` - -### `any` - -```typescript -const value: any = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseenv.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseenv.md deleted file mode 100644 index a4630e177..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseenv.md +++ /dev/null @@ -1,21 +0,0 @@ -# DeploymentDetailResponseEnv - -How a resolved stack input is injected into runtime environment variables. - -## Example Usage - -```typescript -import { DeploymentDetailResponseEnv } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseEnv = { - name: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | -| `name` | *string* | :heavy_check_mark: | Environment variable name. | -| `targetResources` | *string*[] | :heavy_minus_sign: | Target resource IDs or patterns. None means every env-capable resource. | -| `type` | *models.DeploymentDetailResponseTypeUnion* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextend.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextend.md deleted file mode 100644 index c20cbbb03..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextend.md +++ /dev/null @@ -1,23 +0,0 @@ -# DeploymentDetailResponseExtend - -A permission set that can be applied across different cloud platforms - -## Example Usage - -```typescript -import { DeploymentDetailResponseExtend } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseExtend = { - description: "how meanwhile amid permafrost obnoxiously geez stake", - id: "", - platforms: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | -| `description` | *string* | :heavy_check_mark: | Human-readable description of what this permission set allows | -| `id` | *string* | :heavy_check_mark: | Unique identifier for the permission set (e.g., "storage/data-read") | -| `platforms` | [models.DeploymentDetailResponseExtendPlatforms](../models/deploymentdetailresponseextendplatforms.md) | :heavy_check_mark: | Platform-specific permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendaw.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendaw.md deleted file mode 100644 index 695f927a7..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendaw.md +++ /dev/null @@ -1,24 +0,0 @@ -# DeploymentDetailResponseExtendAw - -AWS-specific platform permission configuration - -## Example Usage - -```typescript -import { DeploymentDetailResponseExtendAw } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseExtendAw = { - binding: {}, - grant: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | -| `binding` | [models.DeploymentDetailResponseExtendAwBinding](../models/deploymentdetailresponseextendawbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | -| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | -| `effect` | [models.DeploymentDetailResponseExtendEffect](../models/deploymentdetailresponseextendeffect.md) | :heavy_minus_sign: | IAM effect. Defaults to Allow. | -| `grant` | [models.DeploymentDetailResponseExtendAwGrant](../models/deploymentdetailresponseextendawgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | -| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendawbinding.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendawbinding.md deleted file mode 100644 index fb65dafa1..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendawbinding.md +++ /dev/null @@ -1,18 +0,0 @@ -# DeploymentDetailResponseExtendAwBinding - -Generic binding configuration for permissions - -## Example Usage - -```typescript -import { DeploymentDetailResponseExtendAwBinding } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseExtendAwBinding = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -| `resource` | [models.DeploymentDetailResponseExtendAwResource](../models/deploymentdetailresponseextendawresource.md) | :heavy_minus_sign: | AWS-specific binding specification | -| `stack` | [models.DeploymentDetailResponseExtendAwStack](../models/deploymentdetailresponseextendawstack.md) | :heavy_minus_sign: | AWS-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendawgrant.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendawgrant.md deleted file mode 100644 index c321c4296..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendawgrant.md +++ /dev/null @@ -1,21 +0,0 @@ -# DeploymentDetailResponseExtendAwGrant - -Grant permissions for a specific cloud platform - -## Example Usage - -```typescript -import { DeploymentDetailResponseExtendAwGrant } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseExtendAwGrant = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | -| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | -| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | -| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | -| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendawresource.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendawresource.md deleted file mode 100644 index ac2278fe3..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendawresource.md +++ /dev/null @@ -1,22 +0,0 @@ -# DeploymentDetailResponseExtendAwResource - -AWS-specific binding specification - -## Example Usage - -```typescript -import { DeploymentDetailResponseExtendAwResource } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseExtendAwResource = { - resources: [ - "", - ], -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | -| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendawstack.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendawstack.md deleted file mode 100644 index d707ad918..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendawstack.md +++ /dev/null @@ -1,24 +0,0 @@ -# DeploymentDetailResponseExtendAwStack - -AWS-specific binding specification - -## Example Usage - -```typescript -import { DeploymentDetailResponseExtendAwStack } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseExtendAwStack = { - resources: [ - "", - "", - "", - ], -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | -| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendazure.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendazure.md deleted file mode 100644 index c9e06f22d..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendazure.md +++ /dev/null @@ -1,23 +0,0 @@ -# DeploymentDetailResponseExtendAzure - -Azure-specific platform permission configuration - -## Example Usage - -```typescript -import { DeploymentDetailResponseExtendAzure } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseExtendAzure = { - binding: {}, - grant: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | -| `binding` | [models.DeploymentDetailResponseExtendAzureBinding](../models/deploymentdetailresponseextendazurebinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | -| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | -| `grant` | [models.DeploymentDetailResponseExtendAzureGrant](../models/deploymentdetailresponseextendazuregrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | -| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendazurebinding.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendazurebinding.md deleted file mode 100644 index 9d78cc1ce..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendazurebinding.md +++ /dev/null @@ -1,18 +0,0 @@ -# DeploymentDetailResponseExtendAzureBinding - -Generic binding configuration for permissions - -## Example Usage - -```typescript -import { DeploymentDetailResponseExtendAzureBinding } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseExtendAzureBinding = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -| `resource` | [models.DeploymentDetailResponseExtendAzureResource](../models/deploymentdetailresponseextendazureresource.md) | :heavy_minus_sign: | Azure-specific binding specification | -| `stack` | [models.DeploymentDetailResponseExtendAzureStack](../models/deploymentdetailresponseextendazurestack.md) | :heavy_minus_sign: | Azure-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendazuregrant.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendazuregrant.md deleted file mode 100644 index 9c7b01cab..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendazuregrant.md +++ /dev/null @@ -1,21 +0,0 @@ -# DeploymentDetailResponseExtendAzureGrant - -Grant permissions for a specific cloud platform - -## Example Usage - -```typescript -import { DeploymentDetailResponseExtendAzureGrant } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseExtendAzureGrant = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | -| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | -| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | -| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | -| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendazureresource.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendazureresource.md deleted file mode 100644 index 8c7f98216..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendazureresource.md +++ /dev/null @@ -1,19 +0,0 @@ -# DeploymentDetailResponseExtendAzureResource - -Azure-specific binding specification - -## Example Usage - -```typescript -import { DeploymentDetailResponseExtendAzureResource } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseExtendAzureResource = { - scope: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendazurestack.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendazurestack.md deleted file mode 100644 index 99cb94a37..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendazurestack.md +++ /dev/null @@ -1,19 +0,0 @@ -# DeploymentDetailResponseExtendAzureStack - -Azure-specific binding specification - -## Example Usage - -```typescript -import { DeploymentDetailResponseExtendAzureStack } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseExtendAzureStack = { - scope: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendconditionresource.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendconditionresource.md deleted file mode 100644 index 97c875268..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendconditionresource.md +++ /dev/null @@ -1,21 +0,0 @@ -# DeploymentDetailResponseExtendConditionResource - -GCP IAM condition - -## Example Usage - -```typescript -import { DeploymentDetailResponseExtendConditionResource } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseExtendConditionResource = { - expression: "", - title: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `expression` | *string* | :heavy_check_mark: | N/A | -| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendconditionstack.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendconditionstack.md deleted file mode 100644 index 2a688ff7c..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendconditionstack.md +++ /dev/null @@ -1,21 +0,0 @@ -# DeploymentDetailResponseExtendConditionStack - -GCP IAM condition - -## Example Usage - -```typescript -import { DeploymentDetailResponseExtendConditionStack } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseExtendConditionStack = { - expression: "", - title: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `expression` | *string* | :heavy_check_mark: | N/A | -| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendeffect.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendeffect.md deleted file mode 100644 index e146007c3..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendeffect.md +++ /dev/null @@ -1,17 +0,0 @@ -# DeploymentDetailResponseExtendEffect - -IAM effect. Defaults to Allow. - -## Example Usage - -```typescript -import { DeploymentDetailResponseExtendEffect } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseExtendEffect = "Allow"; -``` - -## Values - -```typescript -"Allow" | "Deny" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendgcp.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendgcp.md deleted file mode 100644 index 50fd114d1..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendgcp.md +++ /dev/null @@ -1,23 +0,0 @@ -# DeploymentDetailResponseExtendGcp - -GCP-specific platform permission configuration - -## Example Usage - -```typescript -import { DeploymentDetailResponseExtendGcp } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseExtendGcp = { - binding: {}, - grant: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -| `binding` | [models.DeploymentDetailResponseExtendGcpBinding](../models/deploymentdetailresponseextendgcpbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | -| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | -| `grant` | [models.DeploymentDetailResponseExtendGcpGrant](../models/deploymentdetailresponseextendgcpgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | -| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendgcpbinding.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendgcpbinding.md deleted file mode 100644 index 565702231..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendgcpbinding.md +++ /dev/null @@ -1,18 +0,0 @@ -# DeploymentDetailResponseExtendGcpBinding - -Generic binding configuration for permissions - -## Example Usage - -```typescript -import { DeploymentDetailResponseExtendGcpBinding } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseExtendGcpBinding = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `resource` | [models.DeploymentDetailResponseExtendGcpResource](../models/deploymentdetailresponseextendgcpresource.md) | :heavy_minus_sign: | GCP-specific binding specification | -| `stack` | [models.DeploymentDetailResponseExtendGcpStack](../models/deploymentdetailresponseextendgcpstack.md) | :heavy_minus_sign: | GCP-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendgcpgrant.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendgcpgrant.md deleted file mode 100644 index 289010cbb..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendgcpgrant.md +++ /dev/null @@ -1,21 +0,0 @@ -# DeploymentDetailResponseExtendGcpGrant - -Grant permissions for a specific cloud platform - -## Example Usage - -```typescript -import { DeploymentDetailResponseExtendGcpGrant } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseExtendGcpGrant = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | -| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | -| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | -| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | -| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendgcpresource.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendgcpresource.md deleted file mode 100644 index 8cad3f412..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendgcpresource.md +++ /dev/null @@ -1,20 +0,0 @@ -# DeploymentDetailResponseExtendGcpResource - -GCP-specific binding specification - -## Example Usage - -```typescript -import { DeploymentDetailResponseExtendGcpResource } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseExtendGcpResource = { - scope: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | -| `condition` | *models.DeploymentDetailResponseExtendResourceConditionUnion* | :heavy_minus_sign: | N/A | -| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendgcpstack.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendgcpstack.md deleted file mode 100644 index 6c15305bf..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendgcpstack.md +++ /dev/null @@ -1,20 +0,0 @@ -# DeploymentDetailResponseExtendGcpStack - -GCP-specific binding specification - -## Example Usage - -```typescript -import { DeploymentDetailResponseExtendGcpStack } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseExtendGcpStack = { - scope: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | -| `condition` | *models.DeploymentDetailResponseExtendStackConditionUnion* | :heavy_minus_sign: | N/A | -| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendplatforms.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendplatforms.md deleted file mode 100644 index a0473f156..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendplatforms.md +++ /dev/null @@ -1,19 +0,0 @@ -# DeploymentDetailResponseExtendPlatforms - -Platform-specific permission configurations - -## Example Usage - -```typescript -import { DeploymentDetailResponseExtendPlatforms } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseExtendPlatforms = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | -| `aws` | [models.DeploymentDetailResponseExtendAw](../models/deploymentdetailresponseextendaw.md)[] | :heavy_minus_sign: | AWS permission configurations | -| `azure` | [models.DeploymentDetailResponseExtendAzure](../models/deploymentdetailresponseextendazure.md)[] | :heavy_minus_sign: | Azure permission configurations | -| `gcp` | [models.DeploymentDetailResponseExtendGcp](../models/deploymentdetailresponseextendgcp.md)[] | :heavy_minus_sign: | GCP permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendresourceconditionunion.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendresourceconditionunion.md deleted file mode 100644 index 0b5e52163..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendresourceconditionunion.md +++ /dev/null @@ -1,20 +0,0 @@ -# DeploymentDetailResponseExtendResourceConditionUnion - - -## Supported Types - -### `models.DeploymentDetailResponseExtendConditionResource` - -```typescript -const value: models.DeploymentDetailResponseExtendConditionResource = { - expression: "", - title: "", -}; -``` - -### `any` - -```typescript -const value: any = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendstackconditionunion.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendstackconditionunion.md deleted file mode 100644 index 58883f707..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendstackconditionunion.md +++ /dev/null @@ -1,20 +0,0 @@ -# DeploymentDetailResponseExtendStackConditionUnion - - -## Supported Types - -### `models.DeploymentDetailResponseExtendConditionStack` - -```typescript -const value: models.DeploymentDetailResponseExtendConditionStack = { - expression: "", - title: "", -}; -``` - -### `any` - -```typescript -const value: any = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendunion.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendunion.md deleted file mode 100644 index fff71bf17..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseextendunion.md +++ /dev/null @@ -1,23 +0,0 @@ -# DeploymentDetailResponseExtendUnion - -Reference to a permission set - either by name or inline definition - - -## Supported Types - -### `models.DeploymentDetailResponseExtend` - -```typescript -const value: models.DeploymentDetailResponseExtend = { - description: "how meanwhile amid permafrost obnoxiously geez stake", - id: "", - platforms: {}, -}; -``` - -### `string` - -```typescript -const value: string = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsefailuredomains1.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsefailuredomains1.md new file mode 100644 index 000000000..0238742e4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsefailuredomains1.md @@ -0,0 +1,20 @@ +# DeploymentDetailResponseFailureDomains1 + +Failure-domain policy selected for a compute pool. + +## Example Usage + +```typescript +import { DeploymentDetailResponseFailureDomains1 } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponseFailureDomains1 = { + spread: 545321, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `selectedFailureDomains` | *string*[] | :heavy_minus_sign: | Concrete provider domains selected during setup.
Empty delegates deterministic selection to the provider setup implementation. | +| `spread` | *number* | :heavy_check_mark: | Number of distinct failure domains across which new stateful replicas may be spread. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsefailuredomains2.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsefailuredomains2.md new file mode 100644 index 000000000..ae7931048 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsefailuredomains2.md @@ -0,0 +1,20 @@ +# DeploymentDetailResponseFailureDomains2 + +Failure-domain policy selected for a compute pool. + +## Example Usage + +```typescript +import { DeploymentDetailResponseFailureDomains2 } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponseFailureDomains2 = { + spread: 159411, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `selectedFailureDomains` | *string*[] | :heavy_minus_sign: | Concrete provider domains selected during setup.
Empty delegates deterministic selection to the provider setup implementation. | +| `spread` | *number* | :heavy_check_mark: | Number of distinct failure domains across which new stateful replicas may be spread. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsefailuredomainsunion1.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsefailuredomainsunion1.md new file mode 100644 index 000000000..45932b247 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsefailuredomainsunion1.md @@ -0,0 +1,19 @@ +# DeploymentDetailResponseFailureDomainsUnion1 + + +## Supported Types + +### `models.DeploymentDetailResponseFailureDomains1` + +```typescript +const value: models.DeploymentDetailResponseFailureDomains1 = { + spread: 545321, +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsefailuredomainsunion2.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsefailuredomainsunion2.md new file mode 100644 index 000000000..f31ba3b2a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsefailuredomainsunion2.md @@ -0,0 +1,19 @@ +# DeploymentDetailResponseFailureDomainsUnion2 + + +## Supported Types + +### `models.DeploymentDetailResponseFailureDomains2` + +```typescript +const value: models.DeploymentDetailResponseFailureDomains2 = { + spread: 159411, +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseinitialsetupauthority.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseinitialsetupauthority.md new file mode 100644 index 000000000..f35729b74 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseinitialsetupauthority.md @@ -0,0 +1,17 @@ +# DeploymentDetailResponseInitialSetupAuthority + +Actor that owns structural work during the initial setup phase. + +## Example Usage + +```typescript +import { DeploymentDetailResponseInitialSetupAuthority } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponseInitialSetupAuthority = "importedHandoff"; +``` + +## Values + +```typescript +"importedHandoff" | "directSetup" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseinput.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseinput.md deleted file mode 100644 index 014b0801e..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseinput.md +++ /dev/null @@ -1,34 +0,0 @@ -# DeploymentDetailResponseInput - -Stack input definition serialized into a release stack. - -## Example Usage - -```typescript -import { DeploymentDetailResponseInput } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseInput = { - description: "psst throughout remorseful hm like ah alongside", - id: "", - kind: "secret", - label: "", - providedBy: [], - required: true, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `default` | *models.DeploymentDetailResponseDefaultUnion* | :heavy_minus_sign: | N/A | -| `description` | *string* | :heavy_check_mark: | Human-facing helper text. | -| `env` | [models.DeploymentDetailResponseEnv](../models/deploymentdetailresponseenv.md)[] | :heavy_minus_sign: | Runtime env-var mappings for v1 input resolution. | -| `id` | *string* | :heavy_check_mark: | Stable input ID used by CLI/API calls. | -| `kind` | [models.DeploymentDetailResponseKind](../models/deploymentdetailresponsekind.md) | :heavy_check_mark: | Primitive stack input kind. | -| `label` | *string* | :heavy_check_mark: | Human-facing field label. | -| `placeholder` | *string* | :heavy_minus_sign: | Example placeholder shown in UI. | -| `platforms` | [models.DeploymentDetailResponsePreparedStackPlatform](../models/deploymentdetailresponsepreparedstackplatform.md)[] | :heavy_minus_sign: | Platforms where this input applies. | -| `providedBy` | [models.DeploymentDetailResponseProvidedBy](../models/deploymentdetailresponseprovidedby.md)[] | :heavy_check_mark: | Who can provide this value. | -| `required` | *boolean* | :heavy_check_mark: | Whether a resolved value is required before deployment can proceed. | -| `validation` | *models.DeploymentDetailResponseValidationUnion* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsekind.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsekind.md deleted file mode 100644 index e183d12aa..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsekind.md +++ /dev/null @@ -1,17 +0,0 @@ -# DeploymentDetailResponseKind - -Primitive stack input kind. - -## Example Usage - -```typescript -import { DeploymentDetailResponseKind } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseKind = "enum"; -``` - -## Values - -```typescript -"string" | "secret" | "number" | "integer" | "boolean" | "enum" | "stringList" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsemanagement1.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsemanagement1.md deleted file mode 100644 index 7c2345b1b..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsemanagement1.md +++ /dev/null @@ -1,17 +0,0 @@ -# DeploymentDetailResponseManagement1 - -## Example Usage - -```typescript -import { DeploymentDetailResponseManagement1 } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseManagement1 = { - extend: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | -| `extend` | Record | :heavy_check_mark: | Permission profile that maps resources to permission sets
Key can be "*" for all resources or resource name for specific resource | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsemanagement2.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsemanagement2.md deleted file mode 100644 index ea22791df..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsemanagement2.md +++ /dev/null @@ -1,32 +0,0 @@ -# DeploymentDetailResponseManagement2 - -## Example Usage - -```typescript -import { DeploymentDetailResponseManagement2 } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseManagement2 = { - override: { - "key": [ - { - description: "besides meaningfully genuine", - id: "", - platforms: {}, - }, - ], - "key1": [ - { - description: "besides meaningfully genuine", - id: "", - platforms: {}, - }, - ], - }, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | -| `override` | Record | :heavy_check_mark: | Permission profile that maps resources to permission sets
Key can be "*" for all resources or resource name for specific resource | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsemanagementenum.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsemanagementenum.md deleted file mode 100644 index a9c932982..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsemanagementenum.md +++ /dev/null @@ -1,15 +0,0 @@ -# DeploymentDetailResponseManagementEnum - -## Example Usage - -```typescript -import { DeploymentDetailResponseManagementEnum } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseManagementEnum = "auto"; -``` - -## Values - -```typescript -"auto" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsemanagementunion.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsemanagementunion.md deleted file mode 100644 index 0bcce7187..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsemanagementunion.md +++ /dev/null @@ -1,44 +0,0 @@ -# DeploymentDetailResponseManagementUnion - -Management permissions configuration for stack management access - - -## Supported Types - -### `models.DeploymentDetailResponseManagement1` - -```typescript -const value: models.DeploymentDetailResponseManagement1 = { - extend: {}, -}; -``` - -### `models.DeploymentDetailResponseManagement2` - -```typescript -const value: models.DeploymentDetailResponseManagement2 = { - override: { - "key": [ - { - description: "besides meaningfully genuine", - id: "", - platforms: {}, - }, - ], - "key1": [ - { - description: "besides meaningfully genuine", - id: "", - platforms: {}, - }, - ], - }, -}; -``` - -### `models.DeploymentDetailResponseManagementEnum` - -```typescript -const value: models.DeploymentDetailResponseManagementEnum = "auto"; -``` - diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverride.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverride.md deleted file mode 100644 index 071f7765e..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverride.md +++ /dev/null @@ -1,23 +0,0 @@ -# DeploymentDetailResponseOverride - -A permission set that can be applied across different cloud platforms - -## Example Usage - -```typescript -import { DeploymentDetailResponseOverride } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseOverride = { - description: "skeletal swear indelible than french boo tune-up yahoo yum", - id: "", - platforms: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `description` | *string* | :heavy_check_mark: | Human-readable description of what this permission set allows | -| `id` | *string* | :heavy_check_mark: | Unique identifier for the permission set (e.g., "storage/data-read") | -| `platforms` | [models.DeploymentDetailResponseOverridePlatforms](../models/deploymentdetailresponseoverrideplatforms.md) | :heavy_check_mark: | Platform-specific permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverrideaw.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverrideaw.md deleted file mode 100644 index 700073994..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverrideaw.md +++ /dev/null @@ -1,24 +0,0 @@ -# DeploymentDetailResponseOverrideAw - -AWS-specific platform permission configuration - -## Example Usage - -```typescript -import { DeploymentDetailResponseOverrideAw } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseOverrideAw = { - binding: {}, - grant: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `binding` | [models.DeploymentDetailResponseOverrideAwBinding](../models/deploymentdetailresponseoverrideawbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | -| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | -| `effect` | [models.DeploymentDetailResponseOverrideEffect](../models/deploymentdetailresponseoverrideeffect.md) | :heavy_minus_sign: | IAM effect. Defaults to Allow. | -| `grant` | [models.DeploymentDetailResponseOverrideAwGrant](../models/deploymentdetailresponseoverrideawgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | -| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverrideawbinding.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverrideawbinding.md deleted file mode 100644 index 04e0f75dc..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverrideawbinding.md +++ /dev/null @@ -1,18 +0,0 @@ -# DeploymentDetailResponseOverrideAwBinding - -Generic binding configuration for permissions - -## Example Usage - -```typescript -import { DeploymentDetailResponseOverrideAwBinding } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseOverrideAwBinding = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | -| `resource` | [models.DeploymentDetailResponseOverrideAwResource](../models/deploymentdetailresponseoverrideawresource.md) | :heavy_minus_sign: | AWS-specific binding specification | -| `stack` | [models.DeploymentDetailResponseOverrideAwStack](../models/deploymentdetailresponseoverrideawstack.md) | :heavy_minus_sign: | AWS-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverrideawgrant.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverrideawgrant.md deleted file mode 100644 index d6bfdf585..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverrideawgrant.md +++ /dev/null @@ -1,21 +0,0 @@ -# DeploymentDetailResponseOverrideAwGrant - -Grant permissions for a specific cloud platform - -## Example Usage - -```typescript -import { DeploymentDetailResponseOverrideAwGrant } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseOverrideAwGrant = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | -| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | -| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | -| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | -| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverrideawresource.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverrideawresource.md deleted file mode 100644 index 819c0afc7..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverrideawresource.md +++ /dev/null @@ -1,20 +0,0 @@ -# DeploymentDetailResponseOverrideAwResource - -AWS-specific binding specification - -## Example Usage - -```typescript -import { DeploymentDetailResponseOverrideAwResource } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseOverrideAwResource = { - resources: [], -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | -| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverrideawstack.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverrideawstack.md deleted file mode 100644 index 2afbef6a8..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverrideawstack.md +++ /dev/null @@ -1,20 +0,0 @@ -# DeploymentDetailResponseOverrideAwStack - -AWS-specific binding specification - -## Example Usage - -```typescript -import { DeploymentDetailResponseOverrideAwStack } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseOverrideAwStack = { - resources: [], -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | -| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverrideazure.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverrideazure.md deleted file mode 100644 index d754d5097..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverrideazure.md +++ /dev/null @@ -1,23 +0,0 @@ -# DeploymentDetailResponseOverrideAzure - -Azure-specific platform permission configuration - -## Example Usage - -```typescript -import { DeploymentDetailResponseOverrideAzure } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseOverrideAzure = { - binding: {}, - grant: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | -| `binding` | [models.DeploymentDetailResponseOverrideAzureBinding](../models/deploymentdetailresponseoverrideazurebinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | -| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | -| `grant` | [models.DeploymentDetailResponseOverrideAzureGrant](../models/deploymentdetailresponseoverrideazuregrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | -| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverrideazurebinding.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverrideazurebinding.md deleted file mode 100644 index 9563fad45..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverrideazurebinding.md +++ /dev/null @@ -1,18 +0,0 @@ -# DeploymentDetailResponseOverrideAzureBinding - -Generic binding configuration for permissions - -## Example Usage - -```typescript -import { DeploymentDetailResponseOverrideAzureBinding } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseOverrideAzureBinding = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | -| `resource` | [models.DeploymentDetailResponseOverrideAzureResource](../models/deploymentdetailresponseoverrideazureresource.md) | :heavy_minus_sign: | Azure-specific binding specification | -| `stack` | [models.DeploymentDetailResponseOverrideAzureStack](../models/deploymentdetailresponseoverrideazurestack.md) | :heavy_minus_sign: | Azure-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverrideazuregrant.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverrideazuregrant.md deleted file mode 100644 index 83846b0aa..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverrideazuregrant.md +++ /dev/null @@ -1,21 +0,0 @@ -# DeploymentDetailResponseOverrideAzureGrant - -Grant permissions for a specific cloud platform - -## Example Usage - -```typescript -import { DeploymentDetailResponseOverrideAzureGrant } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseOverrideAzureGrant = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | -| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | -| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | -| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | -| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverrideazureresource.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverrideazureresource.md deleted file mode 100644 index 0c30c43b0..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverrideazureresource.md +++ /dev/null @@ -1,19 +0,0 @@ -# DeploymentDetailResponseOverrideAzureResource - -Azure-specific binding specification - -## Example Usage - -```typescript -import { DeploymentDetailResponseOverrideAzureResource } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseOverrideAzureResource = { - scope: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverrideazurestack.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverrideazurestack.md deleted file mode 100644 index 7be375f03..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverrideazurestack.md +++ /dev/null @@ -1,19 +0,0 @@ -# DeploymentDetailResponseOverrideAzureStack - -Azure-specific binding specification - -## Example Usage - -```typescript -import { DeploymentDetailResponseOverrideAzureStack } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseOverrideAzureStack = { - scope: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverrideconditionresource.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverrideconditionresource.md deleted file mode 100644 index 7685ba33d..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverrideconditionresource.md +++ /dev/null @@ -1,21 +0,0 @@ -# DeploymentDetailResponseOverrideConditionResource - -GCP IAM condition - -## Example Usage - -```typescript -import { DeploymentDetailResponseOverrideConditionResource } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseOverrideConditionResource = { - expression: "", - title: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `expression` | *string* | :heavy_check_mark: | N/A | -| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverrideconditionstack.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverrideconditionstack.md deleted file mode 100644 index d44f96a54..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverrideconditionstack.md +++ /dev/null @@ -1,21 +0,0 @@ -# DeploymentDetailResponseOverrideConditionStack - -GCP IAM condition - -## Example Usage - -```typescript -import { DeploymentDetailResponseOverrideConditionStack } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseOverrideConditionStack = { - expression: "", - title: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `expression` | *string* | :heavy_check_mark: | N/A | -| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverrideeffect.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverrideeffect.md deleted file mode 100644 index bedb8d3a8..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverrideeffect.md +++ /dev/null @@ -1,17 +0,0 @@ -# DeploymentDetailResponseOverrideEffect - -IAM effect. Defaults to Allow. - -## Example Usage - -```typescript -import { DeploymentDetailResponseOverrideEffect } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseOverrideEffect = "Deny"; -``` - -## Values - -```typescript -"Allow" | "Deny" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverridegcp.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverridegcp.md deleted file mode 100644 index 7e7e20fc3..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverridegcp.md +++ /dev/null @@ -1,23 +0,0 @@ -# DeploymentDetailResponseOverrideGcp - -GCP-specific platform permission configuration - -## Example Usage - -```typescript -import { DeploymentDetailResponseOverrideGcp } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseOverrideGcp = { - binding: {}, - grant: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | -| `binding` | [models.DeploymentDetailResponseOverrideGcpBinding](../models/deploymentdetailresponseoverridegcpbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | -| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | -| `grant` | [models.DeploymentDetailResponseOverrideGcpGrant](../models/deploymentdetailresponseoverridegcpgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | -| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverridegcpbinding.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverridegcpbinding.md deleted file mode 100644 index f96ea2254..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverridegcpbinding.md +++ /dev/null @@ -1,18 +0,0 @@ -# DeploymentDetailResponseOverrideGcpBinding - -Generic binding configuration for permissions - -## Example Usage - -```typescript -import { DeploymentDetailResponseOverrideGcpBinding } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseOverrideGcpBinding = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -| `resource` | [models.DeploymentDetailResponseOverrideGcpResource](../models/deploymentdetailresponseoverridegcpresource.md) | :heavy_minus_sign: | GCP-specific binding specification | -| `stack` | [models.DeploymentDetailResponseOverrideGcpStack](../models/deploymentdetailresponseoverridegcpstack.md) | :heavy_minus_sign: | GCP-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverridegcpgrant.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverridegcpgrant.md deleted file mode 100644 index ef844b188..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverridegcpgrant.md +++ /dev/null @@ -1,21 +0,0 @@ -# DeploymentDetailResponseOverrideGcpGrant - -Grant permissions for a specific cloud platform - -## Example Usage - -```typescript -import { DeploymentDetailResponseOverrideGcpGrant } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseOverrideGcpGrant = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | -| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | -| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | -| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | -| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverridegcpresource.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverridegcpresource.md deleted file mode 100644 index 741e62b03..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverridegcpresource.md +++ /dev/null @@ -1,20 +0,0 @@ -# DeploymentDetailResponseOverrideGcpResource - -GCP-specific binding specification - -## Example Usage - -```typescript -import { DeploymentDetailResponseOverrideGcpResource } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseOverrideGcpResource = { - scope: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | -| `condition` | *models.DeploymentDetailResponseOverrideResourceConditionUnion* | :heavy_minus_sign: | N/A | -| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverridegcpstack.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverridegcpstack.md deleted file mode 100644 index fb8511e55..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverridegcpstack.md +++ /dev/null @@ -1,20 +0,0 @@ -# DeploymentDetailResponseOverrideGcpStack - -GCP-specific binding specification - -## Example Usage - -```typescript -import { DeploymentDetailResponseOverrideGcpStack } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseOverrideGcpStack = { - scope: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| `condition` | *models.DeploymentDetailResponseOverrideStackConditionUnion* | :heavy_minus_sign: | N/A | -| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverrideplatforms.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverrideplatforms.md deleted file mode 100644 index ccae40393..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverrideplatforms.md +++ /dev/null @@ -1,19 +0,0 @@ -# DeploymentDetailResponseOverridePlatforms - -Platform-specific permission configurations - -## Example Usage - -```typescript -import { DeploymentDetailResponseOverridePlatforms } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseOverridePlatforms = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | -| `aws` | [models.DeploymentDetailResponseOverrideAw](../models/deploymentdetailresponseoverrideaw.md)[] | :heavy_minus_sign: | AWS permission configurations | -| `azure` | [models.DeploymentDetailResponseOverrideAzure](../models/deploymentdetailresponseoverrideazure.md)[] | :heavy_minus_sign: | Azure permission configurations | -| `gcp` | [models.DeploymentDetailResponseOverrideGcp](../models/deploymentdetailresponseoverridegcp.md)[] | :heavy_minus_sign: | GCP permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverrideresourceconditionunion.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverrideresourceconditionunion.md deleted file mode 100644 index dc23b0b3f..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverrideresourceconditionunion.md +++ /dev/null @@ -1,20 +0,0 @@ -# DeploymentDetailResponseOverrideResourceConditionUnion - - -## Supported Types - -### `models.DeploymentDetailResponseOverrideConditionResource` - -```typescript -const value: models.DeploymentDetailResponseOverrideConditionResource = { - expression: "", - title: "", -}; -``` - -### `any` - -```typescript -const value: any = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverridestackconditionunion.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverridestackconditionunion.md deleted file mode 100644 index 0b39721ed..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverridestackconditionunion.md +++ /dev/null @@ -1,20 +0,0 @@ -# DeploymentDetailResponseOverrideStackConditionUnion - - -## Supported Types - -### `models.DeploymentDetailResponseOverrideConditionStack` - -```typescript -const value: models.DeploymentDetailResponseOverrideConditionStack = { - expression: "", - title: "", -}; -``` - -### `any` - -```typescript -const value: any = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverrideunion.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverrideunion.md deleted file mode 100644 index 9f2a38d0e..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseoverrideunion.md +++ /dev/null @@ -1,23 +0,0 @@ -# DeploymentDetailResponseOverrideUnion - -Reference to a permission set - either by name or inline definition - - -## Supported Types - -### `models.DeploymentDetailResponseOverride` - -```typescript -const value: models.DeploymentDetailResponseOverride = { - description: "skeletal swear indelible than french boo tune-up yahoo yum", - id: "", - platforms: {}, -}; -``` - -### `string` - -```typescript -const value: string = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstack.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstack.md new file mode 100644 index 000000000..80c8e4216 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstack.md @@ -0,0 +1,33 @@ +# DeploymentDetailResponsePendingPreparedStack + +A bag of resources, unaware of any cloud. + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStack = { + id: "", + resources: { + "key": { + config: { + id: "", + type: "", + }, + dependencies: [], + lifecycle: "live", + }, + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the stack | +| `inputs` | [models.DeploymentDetailResponsePendingPreparedStackInput](../models/deploymentdetailresponsependingpreparedstackinput.md)[] | :heavy_minus_sign: | Input definitions required before setup or deployment can proceed. | +| `permissions` | [models.DeploymentDetailResponsePendingPreparedStackPermissions](../models/deploymentdetailresponsependingpreparedstackpermissions.md) | :heavy_minus_sign: | Combined permissions configuration that contains both profiles and management | +| `resources` | Record | :heavy_check_mark: | Map of resource IDs to their configurations and lifecycle settings | +| `supportedPlatforms` | [models.DeploymentDetailResponsePendingPreparedStackSupportedPlatform](../models/deploymentdetailresponsependingpreparedstacksupportedplatform.md)[] | :heavy_minus_sign: | Which platforms this stack supports. When None, all platforms are supported. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackconfig.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackconfig.md new file mode 100644 index 000000000..03fbfefe4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackconfig.md @@ -0,0 +1,22 @@ +# DeploymentDetailResponsePendingPreparedStackConfig + +Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackConfig } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackConfig = { + id: "", + type: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. | +| `type` | *string* | :heavy_check_mark: | Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. | +| `additionalProperties` | Record | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackdefaultboolean.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackdefaultboolean.md new file mode 100644 index 000000000..990d94984 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackdefaultboolean.md @@ -0,0 +1,19 @@ +# DeploymentDetailResponsePendingPreparedStackDefaultBoolean + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackDefaultBoolean } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackDefaultBoolean = { + type: "boolean", + value: true, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | +| `type` | [models.DeploymentDetailResponsePendingPreparedStackTypeBoolean](../models/deploymentdetailresponsependingpreparedstacktypeboolean.md) | :heavy_check_mark: | N/A | +| `value` | *boolean* | :heavy_check_mark: | Boolean default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackdefaultnumber.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackdefaultnumber.md new file mode 100644 index 000000000..5b1f80a04 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackdefaultnumber.md @@ -0,0 +1,19 @@ +# DeploymentDetailResponsePendingPreparedStackDefaultNumber + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackDefaultNumber } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackDefaultNumber = { + type: "number", + value: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | +| `type` | [models.DeploymentDetailResponsePendingPreparedStackTypeNumber](../models/deploymentdetailresponsependingpreparedstacktypenumber.md) | :heavy_check_mark: | N/A | +| `value` | *string* | :heavy_check_mark: | Number default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackdefaultstring.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackdefaultstring.md new file mode 100644 index 000000000..f26ec2ce0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackdefaultstring.md @@ -0,0 +1,19 @@ +# DeploymentDetailResponsePendingPreparedStackDefaultString + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackDefaultString } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackDefaultString = { + type: "string", + value: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | +| `type` | [models.DeploymentDetailResponsePendingPreparedStackTypeString](../models/deploymentdetailresponsependingpreparedstacktypestring.md) | :heavy_check_mark: | N/A | +| `value` | *string* | :heavy_check_mark: | String default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackdefaultstringlist.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackdefaultstringlist.md new file mode 100644 index 000000000..4b9065406 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackdefaultstringlist.md @@ -0,0 +1,22 @@ +# DeploymentDetailResponsePendingPreparedStackDefaultStringList + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackDefaultStringList } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackDefaultStringList = { + type: "stringList", + value: [ + "", + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | +| `type` | [models.DeploymentDetailResponsePendingPreparedStackTypeStringList](../models/deploymentdetailresponsependingpreparedstacktypestringlist.md) | :heavy_check_mark: | N/A | +| `value` | *string*[] | :heavy_check_mark: | String list default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackdefaultunion.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackdefaultunion.md new file mode 100644 index 000000000..d0ffd66c3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackdefaultunion.md @@ -0,0 +1,54 @@ +# DeploymentDetailResponsePendingPreparedStackDefaultUnion + + +## Supported Types + +### `models.DeploymentDetailResponsePendingPreparedStackDefaultString` + +```typescript +const value: models.DeploymentDetailResponsePendingPreparedStackDefaultString = + { + type: "string", + value: "", + }; +``` + +### `models.DeploymentDetailResponsePendingPreparedStackDefaultNumber` + +```typescript +const value: models.DeploymentDetailResponsePendingPreparedStackDefaultNumber = + { + type: "number", + value: "", + }; +``` + +### `models.DeploymentDetailResponsePendingPreparedStackDefaultBoolean` + +```typescript +const value: models.DeploymentDetailResponsePendingPreparedStackDefaultBoolean = + { + type: "boolean", + value: true, + }; +``` + +### `models.DeploymentDetailResponsePendingPreparedStackDefaultStringList` + +```typescript +const value: + models.DeploymentDetailResponsePendingPreparedStackDefaultStringList = { + type: "stringList", + value: [ + "", + "", + ], + }; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackdependency.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackdependency.md new file mode 100644 index 000000000..894698c79 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackdependency.md @@ -0,0 +1,21 @@ +# DeploymentDetailResponsePendingPreparedStackDependency + +Reference to a resource by its stable id and resource type. + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackDependency } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackDependency = { + id: "", + type: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | N/A | +| `type` | *string* | :heavy_check_mark: | Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackenv.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackenv.md new file mode 100644 index 000000000..5f0c9847e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackenv.md @@ -0,0 +1,21 @@ +# DeploymentDetailResponsePendingPreparedStackEnv + +How a resolved stack input is injected into runtime environment variables. + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackEnv } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackEnv = { + name: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `name` | *string* | :heavy_check_mark: | Environment variable name. | +| `targetResources` | *string*[] | :heavy_minus_sign: | Target resource IDs or patterns. None means every env-capable resource. | +| `type` | *models.DeploymentDetailResponsePendingPreparedStackTypeUnion* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextend.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextend.md new file mode 100644 index 000000000..0ab2b0f55 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextend.md @@ -0,0 +1,23 @@ +# DeploymentDetailResponsePendingPreparedStackExtend + +A permission set that can be applied across different cloud platforms + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackExtend } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackExtend = { + description: "mortally because spectacles per a from of mothball", + id: "", + platforms: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | +| `description` | *string* | :heavy_check_mark: | Human-readable description of what this permission set allows | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the permission set (e.g., "storage/data-read") | +| `platforms` | [models.DeploymentDetailResponsePendingPreparedStackExtendPlatforms](../models/deploymentdetailresponsependingpreparedstackextendplatforms.md) | :heavy_check_mark: | Platform-specific permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendaw.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendaw.md new file mode 100644 index 000000000..e439a2dbe --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendaw.md @@ -0,0 +1,24 @@ +# DeploymentDetailResponsePendingPreparedStackExtendAw + +AWS-specific platform permission configuration + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackExtendAw } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackExtendAw = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.DeploymentDetailResponsePendingPreparedStackExtendAwBinding](../models/deploymentdetailresponsependingpreparedstackextendawbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `effect` | [models.DeploymentDetailResponsePendingPreparedStackExtendEffect](../models/deploymentdetailresponsependingpreparedstackextendeffect.md) | :heavy_minus_sign: | IAM effect. Defaults to Allow. | +| `grant` | [models.DeploymentDetailResponsePendingPreparedStackExtendAwGrant](../models/deploymentdetailresponsependingpreparedstackextendawgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendawbinding.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendawbinding.md new file mode 100644 index 000000000..6db00a020 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendawbinding.md @@ -0,0 +1,18 @@ +# DeploymentDetailResponsePendingPreparedStackExtendAwBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackExtendAwBinding } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackExtendAwBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | +| `resource` | [models.DeploymentDetailResponsePendingPreparedStackExtendAwResource](../models/deploymentdetailresponsependingpreparedstackextendawresource.md) | :heavy_minus_sign: | AWS-specific binding specification | +| `stack` | [models.DeploymentDetailResponsePendingPreparedStackExtendAwStack](../models/deploymentdetailresponsependingpreparedstackextendawstack.md) | :heavy_minus_sign: | AWS-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendawgrant.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendawgrant.md new file mode 100644 index 000000000..1917eb9c0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendawgrant.md @@ -0,0 +1,21 @@ +# DeploymentDetailResponsePendingPreparedStackExtendAwGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackExtendAwGrant } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackExtendAwGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendawresource.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendawresource.md new file mode 100644 index 000000000..e01d75207 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendawresource.md @@ -0,0 +1,23 @@ +# DeploymentDetailResponsePendingPreparedStackExtendAwResource + +AWS-specific binding specification + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackExtendAwResource } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackExtendAwResource = { + resources: [ + "", + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendawstack.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendawstack.md new file mode 100644 index 000000000..ad0e6dbf9 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendawstack.md @@ -0,0 +1,22 @@ +# DeploymentDetailResponsePendingPreparedStackExtendAwStack + +AWS-specific binding specification + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackExtendAwStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackExtendAwStack = { + resources: [ + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendazure.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendazure.md new file mode 100644 index 000000000..7565351b4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendazure.md @@ -0,0 +1,23 @@ +# DeploymentDetailResponsePendingPreparedStackExtendAzure + +Azure-specific platform permission configuration + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackExtendAzure } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackExtendAzure = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.DeploymentDetailResponsePendingPreparedStackExtendAzureBinding](../models/deploymentdetailresponsependingpreparedstackextendazurebinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.DeploymentDetailResponsePendingPreparedStackExtendAzureGrant](../models/deploymentdetailresponsependingpreparedstackextendazuregrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendazurebinding.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendazurebinding.md new file mode 100644 index 000000000..d3b04821c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendazurebinding.md @@ -0,0 +1,18 @@ +# DeploymentDetailResponsePendingPreparedStackExtendAzureBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackExtendAzureBinding } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackExtendAzureBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `resource` | [models.DeploymentDetailResponsePendingPreparedStackExtendAzureResource](../models/deploymentdetailresponsependingpreparedstackextendazureresource.md) | :heavy_minus_sign: | Azure-specific binding specification | +| `stack` | [models.DeploymentDetailResponsePendingPreparedStackExtendAzureStack](../models/deploymentdetailresponsependingpreparedstackextendazurestack.md) | :heavy_minus_sign: | Azure-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendazuregrant.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendazuregrant.md new file mode 100644 index 000000000..0dd79be07 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendazuregrant.md @@ -0,0 +1,21 @@ +# DeploymentDetailResponsePendingPreparedStackExtendAzureGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackExtendAzureGrant } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackExtendAzureGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendazureresource.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendazureresource.md new file mode 100644 index 000000000..69ec940d2 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendazureresource.md @@ -0,0 +1,19 @@ +# DeploymentDetailResponsePendingPreparedStackExtendAzureResource + +Azure-specific binding specification + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackExtendAzureResource } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackExtendAzureResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendazurestack.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendazurestack.md new file mode 100644 index 000000000..e3f74188f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendazurestack.md @@ -0,0 +1,19 @@ +# DeploymentDetailResponsePendingPreparedStackExtendAzureStack + +Azure-specific binding specification + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackExtendAzureStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackExtendAzureStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendconditionresource.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendconditionresource.md new file mode 100644 index 000000000..52584177d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendconditionresource.md @@ -0,0 +1,22 @@ +# DeploymentDetailResponsePendingPreparedStackExtendConditionResource + +GCP IAM condition + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackExtendConditionResource } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackExtendConditionResource = + { + expression: "", + title: "", + }; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendconditionstack.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendconditionstack.md new file mode 100644 index 000000000..52034d60c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendconditionstack.md @@ -0,0 +1,21 @@ +# DeploymentDetailResponsePendingPreparedStackExtendConditionStack + +GCP IAM condition + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackExtendConditionStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackExtendConditionStack = { + expression: "", + title: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendeffect.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendeffect.md new file mode 100644 index 000000000..1fe8e6f28 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendeffect.md @@ -0,0 +1,17 @@ +# DeploymentDetailResponsePendingPreparedStackExtendEffect + +IAM effect. Defaults to Allow. + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackExtendEffect } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackExtendEffect = "Allow"; +``` + +## Values + +```typescript +"Allow" | "Deny" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendgcp.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendgcp.md new file mode 100644 index 000000000..58267fb1a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendgcp.md @@ -0,0 +1,23 @@ +# DeploymentDetailResponsePendingPreparedStackExtendGcp + +GCP-specific platform permission configuration + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackExtendGcp } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackExtendGcp = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | +| `binding` | [models.DeploymentDetailResponsePendingPreparedStackExtendGcpBinding](../models/deploymentdetailresponsependingpreparedstackextendgcpbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.DeploymentDetailResponsePendingPreparedStackExtendGcpGrant](../models/deploymentdetailresponsependingpreparedstackextendgcpgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendgcpbinding.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendgcpbinding.md new file mode 100644 index 000000000..deddf95e4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendgcpbinding.md @@ -0,0 +1,18 @@ +# DeploymentDetailResponsePendingPreparedStackExtendGcpBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackExtendGcpBinding } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackExtendGcpBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.DeploymentDetailResponsePendingPreparedStackExtendGcpResource](../models/deploymentdetailresponsependingpreparedstackextendgcpresource.md) | :heavy_minus_sign: | GCP-specific binding specification | +| `stack` | [models.DeploymentDetailResponsePendingPreparedStackExtendGcpStack](../models/deploymentdetailresponsependingpreparedstackextendgcpstack.md) | :heavy_minus_sign: | GCP-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendgcpgrant.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendgcpgrant.md new file mode 100644 index 000000000..12e859713 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendgcpgrant.md @@ -0,0 +1,21 @@ +# DeploymentDetailResponsePendingPreparedStackExtendGcpGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackExtendGcpGrant } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackExtendGcpGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendgcpresource.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendgcpresource.md new file mode 100644 index 000000000..d15347582 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendgcpresource.md @@ -0,0 +1,20 @@ +# DeploymentDetailResponsePendingPreparedStackExtendGcpResource + +GCP-specific binding specification + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackExtendGcpResource } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackExtendGcpResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| `condition` | *models.DeploymentDetailResponsePendingPreparedStackExtendResourceConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendgcpstack.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendgcpstack.md new file mode 100644 index 000000000..b26a9d517 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendgcpstack.md @@ -0,0 +1,20 @@ +# DeploymentDetailResponsePendingPreparedStackExtendGcpStack + +GCP-specific binding specification + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackExtendGcpStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackExtendGcpStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | +| `condition` | *models.DeploymentDetailResponsePendingPreparedStackExtendStackConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendplatforms.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendplatforms.md new file mode 100644 index 000000000..739eaf444 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendplatforms.md @@ -0,0 +1,19 @@ +# DeploymentDetailResponsePendingPreparedStackExtendPlatforms + +Platform-specific permission configurations + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackExtendPlatforms } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackExtendPlatforms = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `aws` | [models.DeploymentDetailResponsePendingPreparedStackExtendAw](../models/deploymentdetailresponsependingpreparedstackextendaw.md)[] | :heavy_minus_sign: | AWS permission configurations | +| `azure` | [models.DeploymentDetailResponsePendingPreparedStackExtendAzure](../models/deploymentdetailresponsependingpreparedstackextendazure.md)[] | :heavy_minus_sign: | Azure permission configurations | +| `gcp` | [models.DeploymentDetailResponsePendingPreparedStackExtendGcp](../models/deploymentdetailresponsependingpreparedstackextendgcp.md)[] | :heavy_minus_sign: | GCP permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendresourceconditionunion.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendresourceconditionunion.md new file mode 100644 index 000000000..ec359941b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendresourceconditionunion.md @@ -0,0 +1,21 @@ +# DeploymentDetailResponsePendingPreparedStackExtendResourceConditionUnion + + +## Supported Types + +### `models.DeploymentDetailResponsePendingPreparedStackExtendConditionResource` + +```typescript +const value: + models.DeploymentDetailResponsePendingPreparedStackExtendConditionResource = { + expression: "", + title: "", + }; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendstackconditionunion.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendstackconditionunion.md new file mode 100644 index 000000000..cbcb78a96 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendstackconditionunion.md @@ -0,0 +1,21 @@ +# DeploymentDetailResponsePendingPreparedStackExtendStackConditionUnion + + +## Supported Types + +### `models.DeploymentDetailResponsePendingPreparedStackExtendConditionStack` + +```typescript +const value: + models.DeploymentDetailResponsePendingPreparedStackExtendConditionStack = { + expression: "", + title: "", + }; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendunion.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendunion.md new file mode 100644 index 000000000..9c75c80bc --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackextendunion.md @@ -0,0 +1,23 @@ +# DeploymentDetailResponsePendingPreparedStackExtendUnion + +Reference to a permission set - either by name or inline definition + + +## Supported Types + +### `models.DeploymentDetailResponsePendingPreparedStackExtend` + +```typescript +const value: models.DeploymentDetailResponsePendingPreparedStackExtend = { + description: "mortally because spectacles per a from of mothball", + id: "", + platforms: {}, +}; +``` + +### `string` + +```typescript +const value: string = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackinput.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackinput.md new file mode 100644 index 000000000..84294b8d3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackinput.md @@ -0,0 +1,34 @@ +# DeploymentDetailResponsePendingPreparedStackInput + +Stack input definition serialized into a release stack. + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackInput } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackInput = { + description: "behold when lest but compete long saturate subtract", + id: "", + kind: "enum", + label: "", + providedBy: [], + required: true, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | +| `default` | *models.DeploymentDetailResponsePendingPreparedStackDefaultUnion* | :heavy_minus_sign: | N/A | +| `description` | *string* | :heavy_check_mark: | Human-facing helper text. | +| `env` | [models.DeploymentDetailResponsePendingPreparedStackEnv](../models/deploymentdetailresponsependingpreparedstackenv.md)[] | :heavy_minus_sign: | Runtime env-var mappings for v1 input resolution. | +| `id` | *string* | :heavy_check_mark: | Stable input ID used by CLI/API calls. | +| `kind` | [models.DeploymentDetailResponsePendingPreparedStackKind](../models/deploymentdetailresponsependingpreparedstackkind.md) | :heavy_check_mark: | Primitive stack input kind. | +| `label` | *string* | :heavy_check_mark: | Human-facing field label. | +| `placeholder` | *string* | :heavy_minus_sign: | Example placeholder shown in UI. | +| `platforms` | [models.DeploymentDetailResponsePendingPreparedStackPlatform](../models/deploymentdetailresponsependingpreparedstackplatform.md)[] | :heavy_minus_sign: | Platforms where this input applies. | +| `providedBy` | [models.DeploymentDetailResponsePendingPreparedStackProvidedBy](../models/deploymentdetailresponsependingpreparedstackprovidedby.md)[] | :heavy_check_mark: | Who can provide this value. | +| `required` | *boolean* | :heavy_check_mark: | Whether a resolved value is required before deployment can proceed. | +| `validation` | *models.DeploymentDetailResponsePendingPreparedStackValidationUnion* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackkind.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackkind.md new file mode 100644 index 000000000..c3e519079 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackkind.md @@ -0,0 +1,17 @@ +# DeploymentDetailResponsePendingPreparedStackKind + +Primitive stack input kind. + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackKind } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackKind = "integer"; +``` + +## Values + +```typescript +"string" | "secret" | "number" | "integer" | "boolean" | "enum" | "stringList" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstacklifecycle.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstacklifecycle.md new file mode 100644 index 000000000..d1979ae56 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstacklifecycle.md @@ -0,0 +1,17 @@ +# DeploymentDetailResponsePendingPreparedStackLifecycle + +Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackLifecycle } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackLifecycle = "live"; +``` + +## Values + +```typescript +"frozen" | "live" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackmanagement1.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackmanagement1.md new file mode 100644 index 000000000..ef71fb064 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackmanagement1.md @@ -0,0 +1,17 @@ +# DeploymentDetailResponsePendingPreparedStackManagement1 + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackManagement1 } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackManagement1 = { + extend: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | +| `extend` | Record | :heavy_check_mark: | Permission profile that maps resources to permission sets
Key can be "*" for all resources or resource name for specific resource | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackmanagement2.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackmanagement2.md new file mode 100644 index 000000000..d92d2231e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackmanagement2.md @@ -0,0 +1,31 @@ +# DeploymentDetailResponsePendingPreparedStackManagement2 + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackManagement2 } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackManagement2 = { + override: { + "key": [ + { + description: "hippodrome around after pfft primary afore creamy", + id: "", + platforms: {}, + }, + ], + "key1": [ + "", + ], + "key2": [ + "", + ], + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | +| `override` | Record | :heavy_check_mark: | Permission profile that maps resources to permission sets
Key can be "*" for all resources or resource name for specific resource | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackmanagementenum.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackmanagementenum.md new file mode 100644 index 000000000..f123238cc --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackmanagementenum.md @@ -0,0 +1,15 @@ +# DeploymentDetailResponsePendingPreparedStackManagementEnum + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackManagementEnum } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackManagementEnum = "auto"; +``` + +## Values + +```typescript +"auto" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackmanagementunion.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackmanagementunion.md new file mode 100644 index 000000000..ad683568c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackmanagementunion.md @@ -0,0 +1,44 @@ +# DeploymentDetailResponsePendingPreparedStackManagementUnion + +Management permissions configuration for stack management access + + +## Supported Types + +### `models.DeploymentDetailResponsePendingPreparedStackManagement1` + +```typescript +const value: models.DeploymentDetailResponsePendingPreparedStackManagement1 = { + extend: {}, +}; +``` + +### `models.DeploymentDetailResponsePendingPreparedStackManagement2` + +```typescript +const value: models.DeploymentDetailResponsePendingPreparedStackManagement2 = { + override: { + "key": [ + { + description: "hippodrome around after pfft primary afore creamy", + id: "", + platforms: {}, + }, + ], + "key1": [ + "", + ], + "key2": [ + "", + ], + }, +}; +``` + +### `models.DeploymentDetailResponsePendingPreparedStackManagementEnum` + +```typescript +const value: models.DeploymentDetailResponsePendingPreparedStackManagementEnum = + "auto"; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverride.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverride.md new file mode 100644 index 000000000..e68296489 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverride.md @@ -0,0 +1,23 @@ +# DeploymentDetailResponsePendingPreparedStackOverride + +A permission set that can be applied across different cloud platforms + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackOverride } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackOverride = { + description: "under joyously unaccountably stunning", + id: "", + platforms: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | +| `description` | *string* | :heavy_check_mark: | Human-readable description of what this permission set allows | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the permission set (e.g., "storage/data-read") | +| `platforms` | [models.DeploymentDetailResponsePendingPreparedStackOverridePlatforms](../models/deploymentdetailresponsependingpreparedstackoverrideplatforms.md) | :heavy_check_mark: | Platform-specific permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverrideaw.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverrideaw.md new file mode 100644 index 000000000..28cf469b7 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverrideaw.md @@ -0,0 +1,24 @@ +# DeploymentDetailResponsePendingPreparedStackOverrideAw + +AWS-specific platform permission configuration + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackOverrideAw } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackOverrideAw = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.DeploymentDetailResponsePendingPreparedStackOverrideAwBinding](../models/deploymentdetailresponsependingpreparedstackoverrideawbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `effect` | [models.DeploymentDetailResponsePendingPreparedStackOverrideEffect](../models/deploymentdetailresponsependingpreparedstackoverrideeffect.md) | :heavy_minus_sign: | IAM effect. Defaults to Allow. | +| `grant` | [models.DeploymentDetailResponsePendingPreparedStackOverrideAwGrant](../models/deploymentdetailresponsependingpreparedstackoverrideawgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverrideawbinding.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverrideawbinding.md new file mode 100644 index 000000000..dd235271c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverrideawbinding.md @@ -0,0 +1,18 @@ +# DeploymentDetailResponsePendingPreparedStackOverrideAwBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackOverrideAwBinding } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackOverrideAwBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.DeploymentDetailResponsePendingPreparedStackOverrideAwResource](../models/deploymentdetailresponsependingpreparedstackoverrideawresource.md) | :heavy_minus_sign: | AWS-specific binding specification | +| `stack` | [models.DeploymentDetailResponsePendingPreparedStackOverrideAwStack](../models/deploymentdetailresponsependingpreparedstackoverrideawstack.md) | :heavy_minus_sign: | AWS-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverrideawgrant.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverrideawgrant.md new file mode 100644 index 000000000..b4ed3dfcb --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverrideawgrant.md @@ -0,0 +1,21 @@ +# DeploymentDetailResponsePendingPreparedStackOverrideAwGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackOverrideAwGrant } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackOverrideAwGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverrideawresource.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverrideawresource.md new file mode 100644 index 000000000..3fc01b86d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverrideawresource.md @@ -0,0 +1,24 @@ +# DeploymentDetailResponsePendingPreparedStackOverrideAwResource + +AWS-specific binding specification + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackOverrideAwResource } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackOverrideAwResource = { + resources: [ + "", + "", + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverrideawstack.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverrideawstack.md new file mode 100644 index 000000000..2e37b8c6e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverrideawstack.md @@ -0,0 +1,24 @@ +# DeploymentDetailResponsePendingPreparedStackOverrideAwStack + +AWS-specific binding specification + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackOverrideAwStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackOverrideAwStack = { + resources: [ + "", + "", + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverrideazure.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverrideazure.md new file mode 100644 index 000000000..130447ebe --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverrideazure.md @@ -0,0 +1,23 @@ +# DeploymentDetailResponsePendingPreparedStackOverrideAzure + +Azure-specific platform permission configuration + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackOverrideAzure } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackOverrideAzure = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.DeploymentDetailResponsePendingPreparedStackOverrideAzureBinding](../models/deploymentdetailresponsependingpreparedstackoverrideazurebinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.DeploymentDetailResponsePendingPreparedStackOverrideAzureGrant](../models/deploymentdetailresponsependingpreparedstackoverrideazuregrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverrideazurebinding.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverrideazurebinding.md new file mode 100644 index 000000000..ea9f62a04 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverrideazurebinding.md @@ -0,0 +1,19 @@ +# DeploymentDetailResponsePendingPreparedStackOverrideAzureBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackOverrideAzureBinding } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackOverrideAzureBinding = + {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.DeploymentDetailResponsePendingPreparedStackOverrideAzureResource](../models/deploymentdetailresponsependingpreparedstackoverrideazureresource.md) | :heavy_minus_sign: | Azure-specific binding specification | +| `stack` | [models.DeploymentDetailResponsePendingPreparedStackOverrideAzureStack](../models/deploymentdetailresponsependingpreparedstackoverrideazurestack.md) | :heavy_minus_sign: | Azure-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverrideazuregrant.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverrideazuregrant.md new file mode 100644 index 000000000..c7e8e7f21 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverrideazuregrant.md @@ -0,0 +1,21 @@ +# DeploymentDetailResponsePendingPreparedStackOverrideAzureGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackOverrideAzureGrant } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackOverrideAzureGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverrideazureresource.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverrideazureresource.md new file mode 100644 index 000000000..f1475b93b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverrideazureresource.md @@ -0,0 +1,19 @@ +# DeploymentDetailResponsePendingPreparedStackOverrideAzureResource + +Azure-specific binding specification + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackOverrideAzureResource } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackOverrideAzureResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverrideazurestack.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverrideazurestack.md new file mode 100644 index 000000000..df474623f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverrideazurestack.md @@ -0,0 +1,19 @@ +# DeploymentDetailResponsePendingPreparedStackOverrideAzureStack + +Azure-specific binding specification + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackOverrideAzureStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackOverrideAzureStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverrideconditionresource.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverrideconditionresource.md new file mode 100644 index 000000000..26b500207 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverrideconditionresource.md @@ -0,0 +1,22 @@ +# DeploymentDetailResponsePendingPreparedStackOverrideConditionResource + +GCP IAM condition + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackOverrideConditionResource } from "@alienplatform/platform-api/models"; + +let value: + DeploymentDetailResponsePendingPreparedStackOverrideConditionResource = { + expression: "", + title: "", + }; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverrideconditionstack.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverrideconditionstack.md new file mode 100644 index 000000000..53a6f4d9c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverrideconditionstack.md @@ -0,0 +1,22 @@ +# DeploymentDetailResponsePendingPreparedStackOverrideConditionStack + +GCP IAM condition + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackOverrideConditionStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackOverrideConditionStack = + { + expression: "", + title: "", + }; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverrideeffect.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverrideeffect.md new file mode 100644 index 000000000..fc009bcf0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverrideeffect.md @@ -0,0 +1,17 @@ +# DeploymentDetailResponsePendingPreparedStackOverrideEffect + +IAM effect. Defaults to Allow. + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackOverrideEffect } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackOverrideEffect = "Deny"; +``` + +## Values + +```typescript +"Allow" | "Deny" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverridegcp.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverridegcp.md new file mode 100644 index 000000000..78c17b9a0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverridegcp.md @@ -0,0 +1,23 @@ +# DeploymentDetailResponsePendingPreparedStackOverrideGcp + +GCP-specific platform permission configuration + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackOverrideGcp } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackOverrideGcp = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.DeploymentDetailResponsePendingPreparedStackOverrideGcpBinding](../models/deploymentdetailresponsependingpreparedstackoverridegcpbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.DeploymentDetailResponsePendingPreparedStackOverrideGcpGrant](../models/deploymentdetailresponsependingpreparedstackoverridegcpgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverridegcpbinding.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverridegcpbinding.md new file mode 100644 index 000000000..3cc70cd58 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverridegcpbinding.md @@ -0,0 +1,18 @@ +# DeploymentDetailResponsePendingPreparedStackOverrideGcpBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackOverrideGcpBinding } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackOverrideGcpBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `resource` | [models.DeploymentDetailResponsePendingPreparedStackOverrideGcpResource](../models/deploymentdetailresponsependingpreparedstackoverridegcpresource.md) | :heavy_minus_sign: | GCP-specific binding specification | +| `stack` | [models.DeploymentDetailResponsePendingPreparedStackOverrideGcpStack](../models/deploymentdetailresponsependingpreparedstackoverridegcpstack.md) | :heavy_minus_sign: | GCP-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverridegcpgrant.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverridegcpgrant.md new file mode 100644 index 000000000..7849d83b2 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverridegcpgrant.md @@ -0,0 +1,21 @@ +# DeploymentDetailResponsePendingPreparedStackOverrideGcpGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackOverrideGcpGrant } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackOverrideGcpGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverridegcpresource.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverridegcpresource.md new file mode 100644 index 000000000..e8c44c95f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverridegcpresource.md @@ -0,0 +1,20 @@ +# DeploymentDetailResponsePendingPreparedStackOverrideGcpResource + +GCP-specific binding specification + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackOverrideGcpResource } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackOverrideGcpResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `condition` | *models.DeploymentDetailResponsePendingPreparedStackOverrideResourceConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverridegcpstack.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverridegcpstack.md new file mode 100644 index 000000000..504c6dfcc --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverridegcpstack.md @@ -0,0 +1,20 @@ +# DeploymentDetailResponsePendingPreparedStackOverrideGcpStack + +GCP-specific binding specification + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackOverrideGcpStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackOverrideGcpStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `condition` | *models.DeploymentDetailResponsePendingPreparedStackOverrideStackConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverrideplatforms.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverrideplatforms.md new file mode 100644 index 000000000..4ed80a275 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverrideplatforms.md @@ -0,0 +1,19 @@ +# DeploymentDetailResponsePendingPreparedStackOverridePlatforms + +Platform-specific permission configurations + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackOverridePlatforms } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackOverridePlatforms = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | +| `aws` | [models.DeploymentDetailResponsePendingPreparedStackOverrideAw](../models/deploymentdetailresponsependingpreparedstackoverrideaw.md)[] | :heavy_minus_sign: | AWS permission configurations | +| `azure` | [models.DeploymentDetailResponsePendingPreparedStackOverrideAzure](../models/deploymentdetailresponsependingpreparedstackoverrideazure.md)[] | :heavy_minus_sign: | Azure permission configurations | +| `gcp` | [models.DeploymentDetailResponsePendingPreparedStackOverrideGcp](../models/deploymentdetailresponsependingpreparedstackoverridegcp.md)[] | :heavy_minus_sign: | GCP permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverrideresourceconditionunion.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverrideresourceconditionunion.md new file mode 100644 index 000000000..d826687cb --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverrideresourceconditionunion.md @@ -0,0 +1,22 @@ +# DeploymentDetailResponsePendingPreparedStackOverrideResourceConditionUnion + + +## Supported Types + +### `models.DeploymentDetailResponsePendingPreparedStackOverrideConditionResource` + +```typescript +const value: + models.DeploymentDetailResponsePendingPreparedStackOverrideConditionResource = + { + expression: "", + title: "", + }; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverridestackconditionunion.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverridestackconditionunion.md new file mode 100644 index 000000000..29bed7219 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverridestackconditionunion.md @@ -0,0 +1,21 @@ +# DeploymentDetailResponsePendingPreparedStackOverrideStackConditionUnion + + +## Supported Types + +### `models.DeploymentDetailResponsePendingPreparedStackOverrideConditionStack` + +```typescript +const value: + models.DeploymentDetailResponsePendingPreparedStackOverrideConditionStack = { + expression: "", + title: "", + }; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverrideunion.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverrideunion.md new file mode 100644 index 000000000..6439d00c0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackoverrideunion.md @@ -0,0 +1,23 @@ +# DeploymentDetailResponsePendingPreparedStackOverrideUnion + +Reference to a permission set - either by name or inline definition + + +## Supported Types + +### `models.DeploymentDetailResponsePendingPreparedStackOverride` + +```typescript +const value: models.DeploymentDetailResponsePendingPreparedStackOverride = { + description: "under joyously unaccountably stunning", + id: "", + platforms: {}, +}; +``` + +### `string` + +```typescript +const value: string = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackpermissions.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackpermissions.md new file mode 100644 index 000000000..f5099da51 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackpermissions.md @@ -0,0 +1,27 @@ +# DeploymentDetailResponsePendingPreparedStackPermissions + +Combined permissions configuration that contains both profiles and management + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackPermissions } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackPermissions = { + profiles: { + "key": {}, + "key1": { + "key": [ + "", + ], + }, + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| `management` | *models.DeploymentDetailResponsePendingPreparedStackManagementUnion* | :heavy_minus_sign: | Management permissions configuration for stack management access | +| `profiles` | Record> | :heavy_check_mark: | Permission profiles that define access control for compute services
Key is the profile name, value is the permission configuration | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackplatform.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackplatform.md new file mode 100644 index 000000000..1f688a961 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackplatform.md @@ -0,0 +1,17 @@ +# DeploymentDetailResponsePendingPreparedStackPlatform + +Represents the target cloud platform. + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackPlatform } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackPlatform = "local"; +``` + +## Values + +```typescript +"aws" | "gcp" | "azure" | "kubernetes" | "machines" | "local" | "test" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofile.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofile.md new file mode 100644 index 000000000..32fcf38c2 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofile.md @@ -0,0 +1,23 @@ +# DeploymentDetailResponsePendingPreparedStackProfile + +A permission set that can be applied across different cloud platforms + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackProfile } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackProfile = { + description: "suckle heartfelt barring stall partially brr", + id: "", + platforms: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | +| `description` | *string* | :heavy_check_mark: | Human-readable description of what this permission set allows | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the permission set (e.g., "storage/data-read") | +| `platforms` | [models.DeploymentDetailResponsePendingPreparedStackProfilePlatforms](../models/deploymentdetailresponsependingpreparedstackprofileplatforms.md) | :heavy_check_mark: | Platform-specific permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofileaw.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofileaw.md new file mode 100644 index 000000000..0f3bd2df4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofileaw.md @@ -0,0 +1,24 @@ +# DeploymentDetailResponsePendingPreparedStackProfileAw + +AWS-specific platform permission configuration + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackProfileAw } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackProfileAw = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | +| `binding` | [models.DeploymentDetailResponsePendingPreparedStackProfileAwBinding](../models/deploymentdetailresponsependingpreparedstackprofileawbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `effect` | [models.DeploymentDetailResponsePendingPreparedStackProfileEffect](../models/deploymentdetailresponsependingpreparedstackprofileeffect.md) | :heavy_minus_sign: | IAM effect. Defaults to Allow. | +| `grant` | [models.DeploymentDetailResponsePendingPreparedStackProfileAwGrant](../models/deploymentdetailresponsependingpreparedstackprofileawgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofileawbinding.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofileawbinding.md new file mode 100644 index 000000000..438e251b5 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofileawbinding.md @@ -0,0 +1,18 @@ +# DeploymentDetailResponsePendingPreparedStackProfileAwBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackProfileAwBinding } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackProfileAwBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.DeploymentDetailResponsePendingPreparedStackProfileAwResource](../models/deploymentdetailresponsependingpreparedstackprofileawresource.md) | :heavy_minus_sign: | AWS-specific binding specification | +| `stack` | [models.DeploymentDetailResponsePendingPreparedStackProfileAwStack](../models/deploymentdetailresponsependingpreparedstackprofileawstack.md) | :heavy_minus_sign: | AWS-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofileawgrant.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofileawgrant.md new file mode 100644 index 000000000..ef9acd5b6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofileawgrant.md @@ -0,0 +1,21 @@ +# DeploymentDetailResponsePendingPreparedStackProfileAwGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackProfileAwGrant } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackProfileAwGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofileawresource.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofileawresource.md new file mode 100644 index 000000000..1ce717364 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofileawresource.md @@ -0,0 +1,23 @@ +# DeploymentDetailResponsePendingPreparedStackProfileAwResource + +AWS-specific binding specification + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackProfileAwResource } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackProfileAwResource = { + resources: [ + "", + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofileawstack.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofileawstack.md new file mode 100644 index 000000000..4599753a0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofileawstack.md @@ -0,0 +1,22 @@ +# DeploymentDetailResponsePendingPreparedStackProfileAwStack + +AWS-specific binding specification + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackProfileAwStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackProfileAwStack = { + resources: [ + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofileazure.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofileazure.md new file mode 100644 index 000000000..506cc5890 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofileazure.md @@ -0,0 +1,23 @@ +# DeploymentDetailResponsePendingPreparedStackProfileAzure + +Azure-specific platform permission configuration + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackProfileAzure } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackProfileAzure = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `binding` | [models.DeploymentDetailResponsePendingPreparedStackProfileAzureBinding](../models/deploymentdetailresponsependingpreparedstackprofileazurebinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.DeploymentDetailResponsePendingPreparedStackProfileAzureGrant](../models/deploymentdetailresponsependingpreparedstackprofileazuregrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofileazurebinding.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofileazurebinding.md new file mode 100644 index 000000000..a12a0e0b2 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofileazurebinding.md @@ -0,0 +1,18 @@ +# DeploymentDetailResponsePendingPreparedStackProfileAzureBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackProfileAzureBinding } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackProfileAzureBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.DeploymentDetailResponsePendingPreparedStackProfileAzureResource](../models/deploymentdetailresponsependingpreparedstackprofileazureresource.md) | :heavy_minus_sign: | Azure-specific binding specification | +| `stack` | [models.DeploymentDetailResponsePendingPreparedStackProfileAzureStack](../models/deploymentdetailresponsependingpreparedstackprofileazurestack.md) | :heavy_minus_sign: | Azure-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofileazuregrant.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofileazuregrant.md new file mode 100644 index 000000000..87b4a051b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofileazuregrant.md @@ -0,0 +1,21 @@ +# DeploymentDetailResponsePendingPreparedStackProfileAzureGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackProfileAzureGrant } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackProfileAzureGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofileazureresource.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofileazureresource.md new file mode 100644 index 000000000..7aacb4dc1 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofileazureresource.md @@ -0,0 +1,19 @@ +# DeploymentDetailResponsePendingPreparedStackProfileAzureResource + +Azure-specific binding specification + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackProfileAzureResource } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackProfileAzureResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofileazurestack.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofileazurestack.md new file mode 100644 index 000000000..84b659809 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofileazurestack.md @@ -0,0 +1,19 @@ +# DeploymentDetailResponsePendingPreparedStackProfileAzureStack + +Azure-specific binding specification + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackProfileAzureStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackProfileAzureStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofileconditionresource.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofileconditionresource.md new file mode 100644 index 000000000..cc7292ef8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofileconditionresource.md @@ -0,0 +1,22 @@ +# DeploymentDetailResponsePendingPreparedStackProfileConditionResource + +GCP IAM condition + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackProfileConditionResource } from "@alienplatform/platform-api/models"; + +let value: + DeploymentDetailResponsePendingPreparedStackProfileConditionResource = { + expression: "", + title: "", + }; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofileconditionstack.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofileconditionstack.md new file mode 100644 index 000000000..5352c1999 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofileconditionstack.md @@ -0,0 +1,21 @@ +# DeploymentDetailResponsePendingPreparedStackProfileConditionStack + +GCP IAM condition + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackProfileConditionStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackProfileConditionStack = { + expression: "", + title: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofileeffect.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofileeffect.md new file mode 100644 index 000000000..0c2686111 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofileeffect.md @@ -0,0 +1,17 @@ +# DeploymentDetailResponsePendingPreparedStackProfileEffect + +IAM effect. Defaults to Allow. + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackProfileEffect } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackProfileEffect = "Deny"; +``` + +## Values + +```typescript +"Allow" | "Deny" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofilegcp.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofilegcp.md new file mode 100644 index 000000000..2c944cd90 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofilegcp.md @@ -0,0 +1,23 @@ +# DeploymentDetailResponsePendingPreparedStackProfileGcp + +GCP-specific platform permission configuration + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackProfileGcp } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackProfileGcp = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.DeploymentDetailResponsePendingPreparedStackProfileGcpBinding](../models/deploymentdetailresponsependingpreparedstackprofilegcpbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.DeploymentDetailResponsePendingPreparedStackProfileGcpGrant](../models/deploymentdetailresponsependingpreparedstackprofilegcpgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofilegcpbinding.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofilegcpbinding.md new file mode 100644 index 000000000..7cf76cdea --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofilegcpbinding.md @@ -0,0 +1,18 @@ +# DeploymentDetailResponsePendingPreparedStackProfileGcpBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackProfileGcpBinding } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackProfileGcpBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.DeploymentDetailResponsePendingPreparedStackProfileGcpResource](../models/deploymentdetailresponsependingpreparedstackprofilegcpresource.md) | :heavy_minus_sign: | GCP-specific binding specification | +| `stack` | [models.DeploymentDetailResponsePendingPreparedStackProfileGcpStack](../models/deploymentdetailresponsependingpreparedstackprofilegcpstack.md) | :heavy_minus_sign: | GCP-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofilegcpgrant.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofilegcpgrant.md new file mode 100644 index 000000000..924ded4c7 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofilegcpgrant.md @@ -0,0 +1,21 @@ +# DeploymentDetailResponsePendingPreparedStackProfileGcpGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackProfileGcpGrant } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackProfileGcpGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofilegcpresource.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofilegcpresource.md new file mode 100644 index 000000000..5d2e9123a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofilegcpresource.md @@ -0,0 +1,20 @@ +# DeploymentDetailResponsePendingPreparedStackProfileGcpResource + +GCP-specific binding specification + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackProfileGcpResource } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackProfileGcpResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `condition` | *models.DeploymentDetailResponsePendingPreparedStackProfileResourceConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofilegcpstack.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofilegcpstack.md new file mode 100644 index 000000000..56bb8e0b9 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofilegcpstack.md @@ -0,0 +1,20 @@ +# DeploymentDetailResponsePendingPreparedStackProfileGcpStack + +GCP-specific binding specification + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackProfileGcpStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackProfileGcpStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| `condition` | *models.DeploymentDetailResponsePendingPreparedStackProfileStackConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofileplatforms.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofileplatforms.md new file mode 100644 index 000000000..36d9984c2 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofileplatforms.md @@ -0,0 +1,19 @@ +# DeploymentDetailResponsePendingPreparedStackProfilePlatforms + +Platform-specific permission configurations + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackProfilePlatforms } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackProfilePlatforms = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | +| `aws` | [models.DeploymentDetailResponsePendingPreparedStackProfileAw](../models/deploymentdetailresponsependingpreparedstackprofileaw.md)[] | :heavy_minus_sign: | AWS permission configurations | +| `azure` | [models.DeploymentDetailResponsePendingPreparedStackProfileAzure](../models/deploymentdetailresponsependingpreparedstackprofileazure.md)[] | :heavy_minus_sign: | Azure permission configurations | +| `gcp` | [models.DeploymentDetailResponsePendingPreparedStackProfileGcp](../models/deploymentdetailresponsependingpreparedstackprofilegcp.md)[] | :heavy_minus_sign: | GCP permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofileresourceconditionunion.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofileresourceconditionunion.md new file mode 100644 index 000000000..11a13118b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofileresourceconditionunion.md @@ -0,0 +1,22 @@ +# DeploymentDetailResponsePendingPreparedStackProfileResourceConditionUnion + + +## Supported Types + +### `models.DeploymentDetailResponsePendingPreparedStackProfileConditionResource` + +```typescript +const value: + models.DeploymentDetailResponsePendingPreparedStackProfileConditionResource = + { + expression: "", + title: "", + }; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofilestackconditionunion.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofilestackconditionunion.md new file mode 100644 index 000000000..4936d6767 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofilestackconditionunion.md @@ -0,0 +1,21 @@ +# DeploymentDetailResponsePendingPreparedStackProfileStackConditionUnion + + +## Supported Types + +### `models.DeploymentDetailResponsePendingPreparedStackProfileConditionStack` + +```typescript +const value: + models.DeploymentDetailResponsePendingPreparedStackProfileConditionStack = { + expression: "", + title: "", + }; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofileunion.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofileunion.md new file mode 100644 index 000000000..c4180e448 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprofileunion.md @@ -0,0 +1,23 @@ +# DeploymentDetailResponsePendingPreparedStackProfileUnion + +Reference to a permission set - either by name or inline definition + + +## Supported Types + +### `models.DeploymentDetailResponsePendingPreparedStackProfile` + +```typescript +const value: models.DeploymentDetailResponsePendingPreparedStackProfile = { + description: "suckle heartfelt barring stall partially brr", + id: "", + platforms: {}, +}; +``` + +### `string` + +```typescript +const value: string = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprovidedby.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprovidedby.md new file mode 100644 index 000000000..c3f1a6b0e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackprovidedby.md @@ -0,0 +1,17 @@ +# DeploymentDetailResponsePendingPreparedStackProvidedBy + +Who can provide a stack input value. + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackProvidedBy } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackProvidedBy = "developer"; +``` + +## Values + +```typescript +"developer" | "deployer" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackresources.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackresources.md new file mode 100644 index 000000000..8c265c517 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackresources.md @@ -0,0 +1,26 @@ +# DeploymentDetailResponsePendingPreparedStackResources + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackResources } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackResources = { + config: { + id: "", + type: "", + }, + dependencies: [], + lifecycle: "live", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `config` | [models.DeploymentDetailResponsePendingPreparedStackConfig](../models/deploymentdetailresponsependingpreparedstackconfig.md) | :heavy_check_mark: | 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` | [models.DeploymentDetailResponsePendingPreparedStackDependency](../models/deploymentdetailresponsependingpreparedstackdependency.md)[] | :heavy_check_mark: | Additional dependencies for this resource beyond those defined in the resource itself.
The total dependencies are: resource.get_dependencies() + this list | +| `enabledWhen` | *string* | :heavy_minus_sign: | 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. | +| `lifecycle` | [models.DeploymentDetailResponsePendingPreparedStackLifecycle](../models/deploymentdetailresponsependingpreparedstacklifecycle.md) | :heavy_check_mark: | Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. | +| `remoteAccess` | *boolean* | :heavy_minus_sign: | Enable remote bindings for this resource (BYOB use case).
When true, binding params are synced to StackState's `remote_binding_params`.
Default: false (prevents sensitive data in synced state). | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstacksupportedplatform.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstacksupportedplatform.md new file mode 100644 index 000000000..afcb3ce76 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstacksupportedplatform.md @@ -0,0 +1,18 @@ +# DeploymentDetailResponsePendingPreparedStackSupportedPlatform + +Represents the target cloud platform. + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackSupportedPlatform } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackSupportedPlatform = + "kubernetes"; +``` + +## Values + +```typescript +"aws" | "gcp" | "azure" | "kubernetes" | "machines" | "local" | "test" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstacktypeboolean.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstacktypeboolean.md new file mode 100644 index 000000000..280a9152a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstacktypeboolean.md @@ -0,0 +1,15 @@ +# DeploymentDetailResponsePendingPreparedStackTypeBoolean + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackTypeBoolean } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackTypeBoolean = "boolean"; +``` + +## Values + +```typescript +"boolean" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstacktypeenvenum.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstacktypeenvenum.md new file mode 100644 index 000000000..3817fb2b7 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstacktypeenvenum.md @@ -0,0 +1,17 @@ +# DeploymentDetailResponsePendingPreparedStackTypeEnvEnum + +Environment variable handling for a stack input mapping. + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackTypeEnvEnum } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackTypeEnvEnum = "secret"; +``` + +## Values + +```typescript +"plain" | "secret" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstacktypenumber.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstacktypenumber.md new file mode 100644 index 000000000..8c1081a4a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstacktypenumber.md @@ -0,0 +1,15 @@ +# DeploymentDetailResponsePendingPreparedStackTypeNumber + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackTypeNumber } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackTypeNumber = "number"; +``` + +## Values + +```typescript +"number" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstacktypestring.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstacktypestring.md new file mode 100644 index 000000000..4a7d682ef --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstacktypestring.md @@ -0,0 +1,15 @@ +# DeploymentDetailResponsePendingPreparedStackTypeString + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackTypeString } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackTypeString = "string"; +``` + +## Values + +```typescript +"string" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstacktypestringlist.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstacktypestringlist.md new file mode 100644 index 000000000..b7ca831f5 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstacktypestringlist.md @@ -0,0 +1,16 @@ +# DeploymentDetailResponsePendingPreparedStackTypeStringList + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackTypeStringList } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackTypeStringList = + "stringList"; +``` + +## Values + +```typescript +"stringList" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstacktypeunion.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstacktypeunion.md new file mode 100644 index 000000000..58ca2a773 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstacktypeunion.md @@ -0,0 +1,18 @@ +# DeploymentDetailResponsePendingPreparedStackTypeUnion + + +## Supported Types + +### `models.DeploymentDetailResponsePendingPreparedStackTypeEnvEnum` + +```typescript +const value: models.DeploymentDetailResponsePendingPreparedStackTypeEnvEnum = + "plain"; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackunion.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackunion.md new file mode 100644 index 000000000..aee9f6ab4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackunion.md @@ -0,0 +1,29 @@ +# DeploymentDetailResponsePendingPreparedStackUnion + + +## Supported Types + +### `models.DeploymentDetailResponsePendingPreparedStack` + +```typescript +const value: models.DeploymentDetailResponsePendingPreparedStack = { + id: "", + resources: { + "key": { + config: { + id: "", + type: "", + }, + dependencies: [], + lifecycle: "live", + }, + }, +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackvalidation.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackvalidation.md new file mode 100644 index 000000000..c324fb315 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackvalidation.md @@ -0,0 +1,25 @@ +# DeploymentDetailResponsePendingPreparedStackValidation + +Portable stack input validation constraints. + +## Example Usage + +```typescript +import { DeploymentDetailResponsePendingPreparedStackValidation } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePendingPreparedStackValidation = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | +| `format` | *string* | :heavy_minus_sign: | Semantic format hint such as url. | +| `max` | *string* | :heavy_minus_sign: | Maximum number. | +| `maxItems` | *number* | :heavy_minus_sign: | Maximum string-list items. | +| `maxLength` | *number* | :heavy_minus_sign: | Maximum string length. | +| `min` | *string* | :heavy_minus_sign: | Minimum number. | +| `minItems` | *number* | :heavy_minus_sign: | Minimum string-list items. | +| `minLength` | *number* | :heavy_minus_sign: | Minimum string length. | +| `pattern` | *string* | :heavy_minus_sign: | Portable whole-value regex pattern. | +| `values` | *string*[] | :heavy_minus_sign: | Allowed string enum values. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackvalidationunion.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackvalidationunion.md new file mode 100644 index 000000000..57d4544c9 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsependingpreparedstackvalidationunion.md @@ -0,0 +1,17 @@ +# DeploymentDetailResponsePendingPreparedStackValidationUnion + + +## Supported Types + +### `models.DeploymentDetailResponsePendingPreparedStackValidation` + +```typescript +const value: models.DeploymentDetailResponsePendingPreparedStackValidation = {}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepermissions.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepermissions.md deleted file mode 100644 index 095bee0cf..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepermissions.md +++ /dev/null @@ -1,29 +0,0 @@ -# DeploymentDetailResponsePermissions - -Combined permissions configuration that contains both profiles and management - -## Example Usage - -```typescript -import { DeploymentDetailResponsePermissions } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponsePermissions = { - profiles: { - "key": { - "key": [ - "", - ], - "key1": [], - "key2": [], - }, - "key1": {}, - }, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | -| `management` | *models.DeploymentDetailResponseManagementUnion* | :heavy_minus_sign: | Management permissions configuration for stack management access | -| `profiles` | Record> | :heavy_check_mark: | Permission profiles that define access control for compute services
Key is the profile name, value is the permission configuration | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepoolsautoscale.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepoolsautoscale.md index c4488832f..510efd331 100644 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepoolsautoscale.md +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepoolsautoscale.md @@ -14,9 +14,10 @@ let value: DeploymentDetailResponsePoolsAutoscale = { ## Fields -| Field | Type | Required | Description | -| --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | -| `machine` | *string* | :heavy_minus_sign: | Provider machine type selected for this deployment. | -| `max` | *number* | :heavy_check_mark: | Maximum machine count. | -| `min` | *number* | :heavy_check_mark: | Minimum machine count. | -| `mode` | *"autoscale"* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | +| `failureDomains` | *models.DeploymentDetailResponseFailureDomainsUnion2* | :heavy_minus_sign: | N/A | +| `machine` | *string* | :heavy_minus_sign: | Provider machine type selected for this deployment. | +| `max` | *number* | :heavy_check_mark: | Maximum machine count. | +| `min` | *number* | :heavy_check_mark: | Minimum machine count. | +| `mode` | *"autoscale"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepoolsfixed.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepoolsfixed.md index f978ffc1a..bb98ee5e4 100644 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepoolsfixed.md +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepoolsfixed.md @@ -13,8 +13,9 @@ let value: DeploymentDetailResponsePoolsFixed = { ## Fields -| Field | Type | Required | Description | -| --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | -| `machine` | *string* | :heavy_minus_sign: | Provider machine type selected for this deployment. | -| `machines` | *number* | :heavy_check_mark: | Number of machines to run. | -| `mode` | *"fixed"* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | +| `failureDomains` | *models.DeploymentDetailResponseFailureDomainsUnion1* | :heavy_minus_sign: | N/A | +| `machine` | *string* | :heavy_minus_sign: | Provider machine type selected for this deployment. | +| `machines` | *number* | :heavy_check_mark: | Number of machines to run. | +| `mode` | *"fixed"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstack.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstack.md index 7dddc9ca8..33a196138 100644 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstack.md +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstack.md @@ -24,10 +24,10 @@ let value: DeploymentDetailResponsePreparedStack = { ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | -| `id` | *string* | :heavy_check_mark: | Unique identifier for the stack | -| `inputs` | [models.DeploymentDetailResponseInput](../models/deploymentdetailresponseinput.md)[] | :heavy_minus_sign: | Input definitions required before setup or deployment can proceed. | -| `permissions` | [models.DeploymentDetailResponsePermissions](../models/deploymentdetailresponsepermissions.md) | :heavy_minus_sign: | Combined permissions configuration that contains both profiles and management | -| `resources` | Record | :heavy_check_mark: | Map of resource IDs to their configurations and lifecycle settings | -| `supportedPlatforms` | [models.DeploymentDetailResponseSupportedPlatform](../models/deploymentdetailresponsesupportedplatform.md)[] | :heavy_minus_sign: | Which platforms this stack supports. When None, all platforms are supported. | \ No newline at end of file +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the stack | +| `inputs` | [models.DeploymentDetailResponsePreparedStackInput](../models/deploymentdetailresponsepreparedstackinput.md)[] | :heavy_minus_sign: | Input definitions required before setup or deployment can proceed. | +| `permissions` | [models.DeploymentDetailResponsePreparedStackPermissions](../models/deploymentdetailresponsepreparedstackpermissions.md) | :heavy_minus_sign: | Combined permissions configuration that contains both profiles and management | +| `resources` | Record | :heavy_check_mark: | Map of resource IDs to their configurations and lifecycle settings | +| `supportedPlatforms` | [models.DeploymentDetailResponsePreparedStackSupportedPlatform](../models/deploymentdetailresponsepreparedstacksupportedplatform.md)[] | :heavy_minus_sign: | Which platforms this stack supports. When None, all platforms are supported. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackdefaultboolean.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackdefaultboolean.md new file mode 100644 index 000000000..d90bffe0a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackdefaultboolean.md @@ -0,0 +1,19 @@ +# DeploymentDetailResponsePreparedStackDefaultBoolean + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackDefaultBoolean } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackDefaultBoolean = { + type: "boolean", + value: true, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | +| `type` | [models.DeploymentDetailResponsePreparedStackTypeBoolean](../models/deploymentdetailresponsepreparedstacktypeboolean.md) | :heavy_check_mark: | N/A | +| `value` | *boolean* | :heavy_check_mark: | Boolean default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackdefaultnumber.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackdefaultnumber.md new file mode 100644 index 000000000..9413fea49 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackdefaultnumber.md @@ -0,0 +1,19 @@ +# DeploymentDetailResponsePreparedStackDefaultNumber + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackDefaultNumber } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackDefaultNumber = { + type: "number", + value: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | +| `type` | [models.DeploymentDetailResponsePreparedStackTypeNumber](../models/deploymentdetailresponsepreparedstacktypenumber.md) | :heavy_check_mark: | N/A | +| `value` | *string* | :heavy_check_mark: | Number default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackdefaultstring.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackdefaultstring.md new file mode 100644 index 000000000..71be20bf0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackdefaultstring.md @@ -0,0 +1,19 @@ +# DeploymentDetailResponsePreparedStackDefaultString + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackDefaultString } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackDefaultString = { + type: "string", + value: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | +| `type` | [models.DeploymentDetailResponsePreparedStackTypeString](../models/deploymentdetailresponsepreparedstacktypestring.md) | :heavy_check_mark: | N/A | +| `value` | *string* | :heavy_check_mark: | String default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackdefaultstringlist.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackdefaultstringlist.md new file mode 100644 index 000000000..2b0f6ea19 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackdefaultstringlist.md @@ -0,0 +1,19 @@ +# DeploymentDetailResponsePreparedStackDefaultStringList + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackDefaultStringList } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackDefaultStringList = { + type: "stringList", + value: [], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `type` | [models.DeploymentDetailResponsePreparedStackTypeStringList](../models/deploymentdetailresponsepreparedstacktypestringlist.md) | :heavy_check_mark: | N/A | +| `value` | *string*[] | :heavy_check_mark: | String list default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackdefaultunion.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackdefaultunion.md new file mode 100644 index 000000000..b46ea7c09 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackdefaultunion.md @@ -0,0 +1,47 @@ +# DeploymentDetailResponsePreparedStackDefaultUnion + + +## Supported Types + +### `models.DeploymentDetailResponsePreparedStackDefaultString` + +```typescript +const value: models.DeploymentDetailResponsePreparedStackDefaultString = { + type: "string", + value: "", +}; +``` + +### `models.DeploymentDetailResponsePreparedStackDefaultNumber` + +```typescript +const value: models.DeploymentDetailResponsePreparedStackDefaultNumber = { + type: "number", + value: "", +}; +``` + +### `models.DeploymentDetailResponsePreparedStackDefaultBoolean` + +```typescript +const value: models.DeploymentDetailResponsePreparedStackDefaultBoolean = { + type: "boolean", + value: true, +}; +``` + +### `models.DeploymentDetailResponsePreparedStackDefaultStringList` + +```typescript +const value: models.DeploymentDetailResponsePreparedStackDefaultStringList = { + type: "stringList", + value: [], +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackenv.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackenv.md new file mode 100644 index 000000000..34ac4f500 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackenv.md @@ -0,0 +1,21 @@ +# DeploymentDetailResponsePreparedStackEnv + +How a resolved stack input is injected into runtime environment variables. + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackEnv } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackEnv = { + name: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `name` | *string* | :heavy_check_mark: | Environment variable name. | +| `targetResources` | *string*[] | :heavy_minus_sign: | Target resource IDs or patterns. None means every env-capable resource. | +| `type` | *models.DeploymentDetailResponsePreparedStackTypeUnion* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextend.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextend.md new file mode 100644 index 000000000..1dce427a0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextend.md @@ -0,0 +1,23 @@ +# DeploymentDetailResponsePreparedStackExtend + +A permission set that can be applied across different cloud platforms + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackExtend } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackExtend = { + description: "aside freight sideboard that gosh quizzically", + id: "", + platforms: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | +| `description` | *string* | :heavy_check_mark: | Human-readable description of what this permission set allows | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the permission set (e.g., "storage/data-read") | +| `platforms` | [models.DeploymentDetailResponsePreparedStackExtendPlatforms](../models/deploymentdetailresponsepreparedstackextendplatforms.md) | :heavy_check_mark: | Platform-specific permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendaw.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendaw.md new file mode 100644 index 000000000..3aec505f9 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendaw.md @@ -0,0 +1,24 @@ +# DeploymentDetailResponsePreparedStackExtendAw + +AWS-specific platform permission configuration + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackExtendAw } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackExtendAw = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.DeploymentDetailResponsePreparedStackExtendAwBinding](../models/deploymentdetailresponsepreparedstackextendawbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `effect` | [models.DeploymentDetailResponsePreparedStackExtendEffect](../models/deploymentdetailresponsepreparedstackextendeffect.md) | :heavy_minus_sign: | IAM effect. Defaults to Allow. | +| `grant` | [models.DeploymentDetailResponsePreparedStackExtendAwGrant](../models/deploymentdetailresponsepreparedstackextendawgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendawbinding.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendawbinding.md new file mode 100644 index 000000000..c2e46873b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendawbinding.md @@ -0,0 +1,18 @@ +# DeploymentDetailResponsePreparedStackExtendAwBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackExtendAwBinding } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackExtendAwBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.DeploymentDetailResponsePreparedStackExtendAwResource](../models/deploymentdetailresponsepreparedstackextendawresource.md) | :heavy_minus_sign: | AWS-specific binding specification | +| `stack` | [models.DeploymentDetailResponsePreparedStackExtendAwStack](../models/deploymentdetailresponsepreparedstackextendawstack.md) | :heavy_minus_sign: | AWS-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendawgrant.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendawgrant.md new file mode 100644 index 000000000..cdbe2ba85 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendawgrant.md @@ -0,0 +1,21 @@ +# DeploymentDetailResponsePreparedStackExtendAwGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackExtendAwGrant } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackExtendAwGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendawresource.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendawresource.md new file mode 100644 index 000000000..88b667660 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendawresource.md @@ -0,0 +1,22 @@ +# DeploymentDetailResponsePreparedStackExtendAwResource + +AWS-specific binding specification + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackExtendAwResource } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackExtendAwResource = { + resources: [ + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendawstack.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendawstack.md new file mode 100644 index 000000000..6ff2c04fa --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendawstack.md @@ -0,0 +1,20 @@ +# DeploymentDetailResponsePreparedStackExtendAwStack + +AWS-specific binding specification + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackExtendAwStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackExtendAwStack = { + resources: [], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendazure.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendazure.md new file mode 100644 index 000000000..89e4e8b76 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendazure.md @@ -0,0 +1,23 @@ +# DeploymentDetailResponsePreparedStackExtendAzure + +Azure-specific platform permission configuration + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackExtendAzure } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackExtendAzure = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.DeploymentDetailResponsePreparedStackExtendAzureBinding](../models/deploymentdetailresponsepreparedstackextendazurebinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.DeploymentDetailResponsePreparedStackExtendAzureGrant](../models/deploymentdetailresponsepreparedstackextendazuregrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendazurebinding.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendazurebinding.md new file mode 100644 index 000000000..46f5c46d6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendazurebinding.md @@ -0,0 +1,18 @@ +# DeploymentDetailResponsePreparedStackExtendAzureBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackExtendAzureBinding } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackExtendAzureBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.DeploymentDetailResponsePreparedStackExtendAzureResource](../models/deploymentdetailresponsepreparedstackextendazureresource.md) | :heavy_minus_sign: | Azure-specific binding specification | +| `stack` | [models.DeploymentDetailResponsePreparedStackExtendAzureStack](../models/deploymentdetailresponsepreparedstackextendazurestack.md) | :heavy_minus_sign: | Azure-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendazuregrant.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendazuregrant.md new file mode 100644 index 000000000..ed27f4640 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendazuregrant.md @@ -0,0 +1,21 @@ +# DeploymentDetailResponsePreparedStackExtendAzureGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackExtendAzureGrant } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackExtendAzureGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendazureresource.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendazureresource.md new file mode 100644 index 000000000..5949ed8c4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendazureresource.md @@ -0,0 +1,19 @@ +# DeploymentDetailResponsePreparedStackExtendAzureResource + +Azure-specific binding specification + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackExtendAzureResource } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackExtendAzureResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendazurestack.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendazurestack.md new file mode 100644 index 000000000..d0c18d2a7 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendazurestack.md @@ -0,0 +1,19 @@ +# DeploymentDetailResponsePreparedStackExtendAzureStack + +Azure-specific binding specification + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackExtendAzureStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackExtendAzureStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendconditionresource.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendconditionresource.md new file mode 100644 index 000000000..d852fd9fc --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendconditionresource.md @@ -0,0 +1,21 @@ +# DeploymentDetailResponsePreparedStackExtendConditionResource + +GCP IAM condition + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackExtendConditionResource } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackExtendConditionResource = { + expression: "", + title: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendconditionstack.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendconditionstack.md new file mode 100644 index 000000000..82d44907e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendconditionstack.md @@ -0,0 +1,21 @@ +# DeploymentDetailResponsePreparedStackExtendConditionStack + +GCP IAM condition + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackExtendConditionStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackExtendConditionStack = { + expression: "", + title: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendeffect.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendeffect.md new file mode 100644 index 000000000..aa205c2f2 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendeffect.md @@ -0,0 +1,17 @@ +# DeploymentDetailResponsePreparedStackExtendEffect + +IAM effect. Defaults to Allow. + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackExtendEffect } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackExtendEffect = "Deny"; +``` + +## Values + +```typescript +"Allow" | "Deny" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendgcp.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendgcp.md new file mode 100644 index 000000000..bb5ccd9ae --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendgcp.md @@ -0,0 +1,23 @@ +# DeploymentDetailResponsePreparedStackExtendGcp + +GCP-specific platform permission configuration + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackExtendGcp } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackExtendGcp = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.DeploymentDetailResponsePreparedStackExtendGcpBinding](../models/deploymentdetailresponsepreparedstackextendgcpbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.DeploymentDetailResponsePreparedStackExtendGcpGrant](../models/deploymentdetailresponsepreparedstackextendgcpgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendgcpbinding.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendgcpbinding.md new file mode 100644 index 000000000..ca2d7bd1e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendgcpbinding.md @@ -0,0 +1,18 @@ +# DeploymentDetailResponsePreparedStackExtendGcpBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackExtendGcpBinding } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackExtendGcpBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | +| `resource` | [models.DeploymentDetailResponsePreparedStackExtendGcpResource](../models/deploymentdetailresponsepreparedstackextendgcpresource.md) | :heavy_minus_sign: | GCP-specific binding specification | +| `stack` | [models.DeploymentDetailResponsePreparedStackExtendGcpStack](../models/deploymentdetailresponsepreparedstackextendgcpstack.md) | :heavy_minus_sign: | GCP-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendgcpgrant.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendgcpgrant.md new file mode 100644 index 000000000..68fa05bee --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendgcpgrant.md @@ -0,0 +1,21 @@ +# DeploymentDetailResponsePreparedStackExtendGcpGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackExtendGcpGrant } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackExtendGcpGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendgcpresource.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendgcpresource.md new file mode 100644 index 000000000..c82dfcf0f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendgcpresource.md @@ -0,0 +1,20 @@ +# DeploymentDetailResponsePreparedStackExtendGcpResource + +GCP-specific binding specification + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackExtendGcpResource } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackExtendGcpResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `condition` | *models.DeploymentDetailResponsePreparedStackExtendResourceConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendgcpstack.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendgcpstack.md new file mode 100644 index 000000000..b99edf0b0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendgcpstack.md @@ -0,0 +1,20 @@ +# DeploymentDetailResponsePreparedStackExtendGcpStack + +GCP-specific binding specification + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackExtendGcpStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackExtendGcpStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `condition` | *models.DeploymentDetailResponsePreparedStackExtendStackConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendplatforms.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendplatforms.md new file mode 100644 index 000000000..b96ee68f6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendplatforms.md @@ -0,0 +1,19 @@ +# DeploymentDetailResponsePreparedStackExtendPlatforms + +Platform-specific permission configurations + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackExtendPlatforms } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackExtendPlatforms = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | +| `aws` | [models.DeploymentDetailResponsePreparedStackExtendAw](../models/deploymentdetailresponsepreparedstackextendaw.md)[] | :heavy_minus_sign: | AWS permission configurations | +| `azure` | [models.DeploymentDetailResponsePreparedStackExtendAzure](../models/deploymentdetailresponsepreparedstackextendazure.md)[] | :heavy_minus_sign: | Azure permission configurations | +| `gcp` | [models.DeploymentDetailResponsePreparedStackExtendGcp](../models/deploymentdetailresponsepreparedstackextendgcp.md)[] | :heavy_minus_sign: | GCP permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendresourceconditionunion.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendresourceconditionunion.md new file mode 100644 index 000000000..bd14e9fb6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendresourceconditionunion.md @@ -0,0 +1,21 @@ +# DeploymentDetailResponsePreparedStackExtendResourceConditionUnion + + +## Supported Types + +### `models.DeploymentDetailResponsePreparedStackExtendConditionResource` + +```typescript +const value: + models.DeploymentDetailResponsePreparedStackExtendConditionResource = { + expression: "", + title: "", + }; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendstackconditionunion.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendstackconditionunion.md new file mode 100644 index 000000000..ca206a559 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendstackconditionunion.md @@ -0,0 +1,21 @@ +# DeploymentDetailResponsePreparedStackExtendStackConditionUnion + + +## Supported Types + +### `models.DeploymentDetailResponsePreparedStackExtendConditionStack` + +```typescript +const value: models.DeploymentDetailResponsePreparedStackExtendConditionStack = + { + expression: "", + title: "", + }; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendunion.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendunion.md new file mode 100644 index 000000000..086d78944 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackextendunion.md @@ -0,0 +1,23 @@ +# DeploymentDetailResponsePreparedStackExtendUnion + +Reference to a permission set - either by name or inline definition + + +## Supported Types + +### `models.DeploymentDetailResponsePreparedStackExtend` + +```typescript +const value: models.DeploymentDetailResponsePreparedStackExtend = { + description: "aside freight sideboard that gosh quizzically", + id: "", + platforms: {}, +}; +``` + +### `string` + +```typescript +const value: string = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackinput.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackinput.md new file mode 100644 index 000000000..27aaeac2e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackinput.md @@ -0,0 +1,37 @@ +# DeploymentDetailResponsePreparedStackInput + +Stack input definition serialized into a release stack. + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackInput } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackInput = { + description: + "excepting anti when except pfft um knowledgeably vice saloon times", + id: "", + kind: "string", + label: "", + providedBy: [ + "deployer", + ], + required: true, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | +| `default` | *models.DeploymentDetailResponsePreparedStackDefaultUnion* | :heavy_minus_sign: | N/A | +| `description` | *string* | :heavy_check_mark: | Human-facing helper text. | +| `env` | [models.DeploymentDetailResponsePreparedStackEnv](../models/deploymentdetailresponsepreparedstackenv.md)[] | :heavy_minus_sign: | Runtime env-var mappings for v1 input resolution. | +| `id` | *string* | :heavy_check_mark: | Stable input ID used by CLI/API calls. | +| `kind` | [models.DeploymentDetailResponsePreparedStackKind](../models/deploymentdetailresponsepreparedstackkind.md) | :heavy_check_mark: | Primitive stack input kind. | +| `label` | *string* | :heavy_check_mark: | Human-facing field label. | +| `placeholder` | *string* | :heavy_minus_sign: | Example placeholder shown in UI. | +| `platforms` | [models.DeploymentDetailResponsePreparedStackPlatform](../models/deploymentdetailresponsepreparedstackplatform.md)[] | :heavy_minus_sign: | Platforms where this input applies. | +| `providedBy` | [models.DeploymentDetailResponsePreparedStackProvidedBy](../models/deploymentdetailresponsepreparedstackprovidedby.md)[] | :heavy_check_mark: | Who can provide this value. | +| `required` | *boolean* | :heavy_check_mark: | Whether a resolved value is required before deployment can proceed. | +| `validation` | *models.DeploymentDetailResponsePreparedStackValidationUnion* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackkind.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackkind.md new file mode 100644 index 000000000..8b4741448 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackkind.md @@ -0,0 +1,17 @@ +# DeploymentDetailResponsePreparedStackKind + +Primitive stack input kind. + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackKind } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackKind = "string"; +``` + +## Values + +```typescript +"string" | "secret" | "number" | "integer" | "boolean" | "enum" | "stringList" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackmanagement1.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackmanagement1.md new file mode 100644 index 000000000..90fa6e480 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackmanagement1.md @@ -0,0 +1,19 @@ +# DeploymentDetailResponsePreparedStackManagement1 + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackManagement1 } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackManagement1 = { + extend: { + "key": [], + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | +| `extend` | Record | :heavy_check_mark: | Permission profile that maps resources to permission sets
Key can be "*" for all resources or resource name for specific resource | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackmanagement2.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackmanagement2.md new file mode 100644 index 000000000..0c44ed078 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackmanagement2.md @@ -0,0 +1,29 @@ +# DeploymentDetailResponsePreparedStackManagement2 + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackManagement2 } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackManagement2 = { + override: { + "key": [ + "", + ], + "key1": [], + "key2": [ + { + description: "beneath self-confidence abaft gah whether", + id: "", + platforms: {}, + }, + ], + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | +| `override` | Record | :heavy_check_mark: | Permission profile that maps resources to permission sets
Key can be "*" for all resources or resource name for specific resource | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackmanagementenum.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackmanagementenum.md new file mode 100644 index 000000000..045ff57a0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackmanagementenum.md @@ -0,0 +1,15 @@ +# DeploymentDetailResponsePreparedStackManagementEnum + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackManagementEnum } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackManagementEnum = "auto"; +``` + +## Values + +```typescript +"auto" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackmanagementunion.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackmanagementunion.md new file mode 100644 index 000000000..eaf1208a6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackmanagementunion.md @@ -0,0 +1,44 @@ +# DeploymentDetailResponsePreparedStackManagementUnion + +Management permissions configuration for stack management access + + +## Supported Types + +### `models.DeploymentDetailResponsePreparedStackManagement1` + +```typescript +const value: models.DeploymentDetailResponsePreparedStackManagement1 = { + extend: { + "key": [], + }, +}; +``` + +### `models.DeploymentDetailResponsePreparedStackManagement2` + +```typescript +const value: models.DeploymentDetailResponsePreparedStackManagement2 = { + override: { + "key": [ + "", + ], + "key1": [], + "key2": [ + { + description: "beneath self-confidence abaft gah whether", + id: "", + platforms: {}, + }, + ], + }, +}; +``` + +### `models.DeploymentDetailResponsePreparedStackManagementEnum` + +```typescript +const value: models.DeploymentDetailResponsePreparedStackManagementEnum = + "auto"; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverride.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverride.md new file mode 100644 index 000000000..5cb305a7b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverride.md @@ -0,0 +1,23 @@ +# DeploymentDetailResponsePreparedStackOverride + +A permission set that can be applied across different cloud platforms + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackOverride } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackOverride = { + description: "yearningly swanling that ghost but barring", + id: "", + platforms: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | +| `description` | *string* | :heavy_check_mark: | Human-readable description of what this permission set allows | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the permission set (e.g., "storage/data-read") | +| `platforms` | [models.DeploymentDetailResponsePreparedStackOverridePlatforms](../models/deploymentdetailresponsepreparedstackoverrideplatforms.md) | :heavy_check_mark: | Platform-specific permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverrideaw.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverrideaw.md new file mode 100644 index 000000000..f5455792a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverrideaw.md @@ -0,0 +1,24 @@ +# DeploymentDetailResponsePreparedStackOverrideAw + +AWS-specific platform permission configuration + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackOverrideAw } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackOverrideAw = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | +| `binding` | [models.DeploymentDetailResponsePreparedStackOverrideAwBinding](../models/deploymentdetailresponsepreparedstackoverrideawbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `effect` | [models.DeploymentDetailResponsePreparedStackOverrideEffect](../models/deploymentdetailresponsepreparedstackoverrideeffect.md) | :heavy_minus_sign: | IAM effect. Defaults to Allow. | +| `grant` | [models.DeploymentDetailResponsePreparedStackOverrideAwGrant](../models/deploymentdetailresponsepreparedstackoverrideawgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverrideawbinding.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverrideawbinding.md new file mode 100644 index 000000000..5731db8c2 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverrideawbinding.md @@ -0,0 +1,18 @@ +# DeploymentDetailResponsePreparedStackOverrideAwBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackOverrideAwBinding } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackOverrideAwBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.DeploymentDetailResponsePreparedStackOverrideAwResource](../models/deploymentdetailresponsepreparedstackoverrideawresource.md) | :heavy_minus_sign: | AWS-specific binding specification | +| `stack` | [models.DeploymentDetailResponsePreparedStackOverrideAwStack](../models/deploymentdetailresponsepreparedstackoverrideawstack.md) | :heavy_minus_sign: | AWS-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverrideawgrant.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverrideawgrant.md new file mode 100644 index 000000000..e3957414c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverrideawgrant.md @@ -0,0 +1,21 @@ +# DeploymentDetailResponsePreparedStackOverrideAwGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackOverrideAwGrant } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackOverrideAwGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverrideawresource.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverrideawresource.md new file mode 100644 index 000000000..7f024ef21 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverrideawresource.md @@ -0,0 +1,23 @@ +# DeploymentDetailResponsePreparedStackOverrideAwResource + +AWS-specific binding specification + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackOverrideAwResource } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackOverrideAwResource = { + resources: [ + "", + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverrideawstack.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverrideawstack.md new file mode 100644 index 000000000..0c377e4ac --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverrideawstack.md @@ -0,0 +1,20 @@ +# DeploymentDetailResponsePreparedStackOverrideAwStack + +AWS-specific binding specification + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackOverrideAwStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackOverrideAwStack = { + resources: [], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverrideazure.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverrideazure.md new file mode 100644 index 000000000..4b0009b60 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverrideazure.md @@ -0,0 +1,23 @@ +# DeploymentDetailResponsePreparedStackOverrideAzure + +Azure-specific platform permission configuration + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackOverrideAzure } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackOverrideAzure = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | +| `binding` | [models.DeploymentDetailResponsePreparedStackOverrideAzureBinding](../models/deploymentdetailresponsepreparedstackoverrideazurebinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.DeploymentDetailResponsePreparedStackOverrideAzureGrant](../models/deploymentdetailresponsepreparedstackoverrideazuregrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverrideazurebinding.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverrideazurebinding.md new file mode 100644 index 000000000..44b8a3edf --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverrideazurebinding.md @@ -0,0 +1,18 @@ +# DeploymentDetailResponsePreparedStackOverrideAzureBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackOverrideAzureBinding } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackOverrideAzureBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.DeploymentDetailResponsePreparedStackOverrideAzureResource](../models/deploymentdetailresponsepreparedstackoverrideazureresource.md) | :heavy_minus_sign: | Azure-specific binding specification | +| `stack` | [models.DeploymentDetailResponsePreparedStackOverrideAzureStack](../models/deploymentdetailresponsepreparedstackoverrideazurestack.md) | :heavy_minus_sign: | Azure-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverrideazuregrant.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverrideazuregrant.md new file mode 100644 index 000000000..b33d02a2f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverrideazuregrant.md @@ -0,0 +1,21 @@ +# DeploymentDetailResponsePreparedStackOverrideAzureGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackOverrideAzureGrant } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackOverrideAzureGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverrideazureresource.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverrideazureresource.md new file mode 100644 index 000000000..d14f60d00 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverrideazureresource.md @@ -0,0 +1,19 @@ +# DeploymentDetailResponsePreparedStackOverrideAzureResource + +Azure-specific binding specification + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackOverrideAzureResource } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackOverrideAzureResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverrideazurestack.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverrideazurestack.md new file mode 100644 index 000000000..67acb1d10 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverrideazurestack.md @@ -0,0 +1,19 @@ +# DeploymentDetailResponsePreparedStackOverrideAzureStack + +Azure-specific binding specification + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackOverrideAzureStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackOverrideAzureStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverrideconditionresource.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverrideconditionresource.md new file mode 100644 index 000000000..2b3bd41b6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverrideconditionresource.md @@ -0,0 +1,21 @@ +# DeploymentDetailResponsePreparedStackOverrideConditionResource + +GCP IAM condition + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackOverrideConditionResource } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackOverrideConditionResource = { + expression: "", + title: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverrideconditionstack.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverrideconditionstack.md new file mode 100644 index 000000000..115be1ff4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverrideconditionstack.md @@ -0,0 +1,21 @@ +# DeploymentDetailResponsePreparedStackOverrideConditionStack + +GCP IAM condition + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackOverrideConditionStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackOverrideConditionStack = { + expression: "", + title: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverrideeffect.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverrideeffect.md new file mode 100644 index 000000000..8ed1a3dce --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverrideeffect.md @@ -0,0 +1,17 @@ +# DeploymentDetailResponsePreparedStackOverrideEffect + +IAM effect. Defaults to Allow. + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackOverrideEffect } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackOverrideEffect = "Deny"; +``` + +## Values + +```typescript +"Allow" | "Deny" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverridegcp.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverridegcp.md new file mode 100644 index 000000000..68f573809 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverridegcp.md @@ -0,0 +1,23 @@ +# DeploymentDetailResponsePreparedStackOverrideGcp + +GCP-specific platform permission configuration + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackOverrideGcp } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackOverrideGcp = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.DeploymentDetailResponsePreparedStackOverrideGcpBinding](../models/deploymentdetailresponsepreparedstackoverridegcpbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.DeploymentDetailResponsePreparedStackOverrideGcpGrant](../models/deploymentdetailresponsepreparedstackoverridegcpgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverridegcpbinding.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverridegcpbinding.md new file mode 100644 index 000000000..31e35ad4b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverridegcpbinding.md @@ -0,0 +1,18 @@ +# DeploymentDetailResponsePreparedStackOverrideGcpBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackOverrideGcpBinding } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackOverrideGcpBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.DeploymentDetailResponsePreparedStackOverrideGcpResource](../models/deploymentdetailresponsepreparedstackoverridegcpresource.md) | :heavy_minus_sign: | GCP-specific binding specification | +| `stack` | [models.DeploymentDetailResponsePreparedStackOverrideGcpStack](../models/deploymentdetailresponsepreparedstackoverridegcpstack.md) | :heavy_minus_sign: | GCP-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverridegcpgrant.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverridegcpgrant.md new file mode 100644 index 000000000..bb78f5077 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverridegcpgrant.md @@ -0,0 +1,21 @@ +# DeploymentDetailResponsePreparedStackOverrideGcpGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackOverrideGcpGrant } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackOverrideGcpGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverridegcpresource.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverridegcpresource.md new file mode 100644 index 000000000..bfba90745 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverridegcpresource.md @@ -0,0 +1,20 @@ +# DeploymentDetailResponsePreparedStackOverrideGcpResource + +GCP-specific binding specification + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackOverrideGcpResource } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackOverrideGcpResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| `condition` | *models.DeploymentDetailResponsePreparedStackOverrideResourceConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverridegcpstack.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverridegcpstack.md new file mode 100644 index 000000000..82ef8182d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverridegcpstack.md @@ -0,0 +1,20 @@ +# DeploymentDetailResponsePreparedStackOverrideGcpStack + +GCP-specific binding specification + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackOverrideGcpStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackOverrideGcpStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| `condition` | *models.DeploymentDetailResponsePreparedStackOverrideStackConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverrideplatforms.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverrideplatforms.md new file mode 100644 index 000000000..07d701644 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverrideplatforms.md @@ -0,0 +1,19 @@ +# DeploymentDetailResponsePreparedStackOverridePlatforms + +Platform-specific permission configurations + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackOverridePlatforms } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackOverridePlatforms = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `aws` | [models.DeploymentDetailResponsePreparedStackOverrideAw](../models/deploymentdetailresponsepreparedstackoverrideaw.md)[] | :heavy_minus_sign: | AWS permission configurations | +| `azure` | [models.DeploymentDetailResponsePreparedStackOverrideAzure](../models/deploymentdetailresponsepreparedstackoverrideazure.md)[] | :heavy_minus_sign: | Azure permission configurations | +| `gcp` | [models.DeploymentDetailResponsePreparedStackOverrideGcp](../models/deploymentdetailresponsepreparedstackoverridegcp.md)[] | :heavy_minus_sign: | GCP permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverrideresourceconditionunion.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverrideresourceconditionunion.md new file mode 100644 index 000000000..b15975996 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverrideresourceconditionunion.md @@ -0,0 +1,21 @@ +# DeploymentDetailResponsePreparedStackOverrideResourceConditionUnion + + +## Supported Types + +### `models.DeploymentDetailResponsePreparedStackOverrideConditionResource` + +```typescript +const value: + models.DeploymentDetailResponsePreparedStackOverrideConditionResource = { + expression: "", + title: "", + }; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverridestackconditionunion.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverridestackconditionunion.md new file mode 100644 index 000000000..86edee39c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverridestackconditionunion.md @@ -0,0 +1,21 @@ +# DeploymentDetailResponsePreparedStackOverrideStackConditionUnion + + +## Supported Types + +### `models.DeploymentDetailResponsePreparedStackOverrideConditionStack` + +```typescript +const value: + models.DeploymentDetailResponsePreparedStackOverrideConditionStack = { + expression: "", + title: "", + }; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverrideunion.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverrideunion.md new file mode 100644 index 000000000..362aa8d99 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackoverrideunion.md @@ -0,0 +1,23 @@ +# DeploymentDetailResponsePreparedStackOverrideUnion + +Reference to a permission set - either by name or inline definition + + +## Supported Types + +### `models.DeploymentDetailResponsePreparedStackOverride` + +```typescript +const value: models.DeploymentDetailResponsePreparedStackOverride = { + description: "yearningly swanling that ghost but barring", + id: "", + platforms: {}, +}; +``` + +### `string` + +```typescript +const value: string = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackpermissions.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackpermissions.md new file mode 100644 index 000000000..09cf2461a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackpermissions.md @@ -0,0 +1,40 @@ +# DeploymentDetailResponsePreparedStackPermissions + +Combined permissions configuration that contains both profiles and management + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackPermissions } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackPermissions = { + profiles: { + "key": { + "key": [], + "key1": [ + "", + ], + "key2": [], + }, + "key1": { + "key": [ + { + description: "ignorant pecan indeed orderly", + id: "", + platforms: {}, + }, + ], + "key1": [ + "", + ], + }, + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| `management` | *models.DeploymentDetailResponsePreparedStackManagementUnion* | :heavy_minus_sign: | Management permissions configuration for stack management access | +| `profiles` | Record> | :heavy_check_mark: | Permission profiles that define access control for compute services
Key is the profile name, value is the permission configuration | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofile.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofile.md new file mode 100644 index 000000000..6eaff449c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofile.md @@ -0,0 +1,23 @@ +# DeploymentDetailResponsePreparedStackProfile + +A permission set that can be applied across different cloud platforms + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackProfile } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackProfile = { + description: "mmm carefully slump outlaw", + id: "", + platforms: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| `description` | *string* | :heavy_check_mark: | Human-readable description of what this permission set allows | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the permission set (e.g., "storage/data-read") | +| `platforms` | [models.DeploymentDetailResponsePreparedStackProfilePlatforms](../models/deploymentdetailresponsepreparedstackprofileplatforms.md) | :heavy_check_mark: | Platform-specific permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofileaw.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofileaw.md new file mode 100644 index 000000000..b57c493e7 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofileaw.md @@ -0,0 +1,24 @@ +# DeploymentDetailResponsePreparedStackProfileAw + +AWS-specific platform permission configuration + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackProfileAw } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackProfileAw = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.DeploymentDetailResponsePreparedStackProfileAwBinding](../models/deploymentdetailresponsepreparedstackprofileawbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `effect` | [models.DeploymentDetailResponsePreparedStackProfileEffect](../models/deploymentdetailresponsepreparedstackprofileeffect.md) | :heavy_minus_sign: | IAM effect. Defaults to Allow. | +| `grant` | [models.DeploymentDetailResponsePreparedStackProfileAwGrant](../models/deploymentdetailresponsepreparedstackprofileawgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofileawbinding.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofileawbinding.md new file mode 100644 index 000000000..7978c9e06 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofileawbinding.md @@ -0,0 +1,18 @@ +# DeploymentDetailResponsePreparedStackProfileAwBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackProfileAwBinding } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackProfileAwBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | +| `resource` | [models.DeploymentDetailResponsePreparedStackProfileAwResource](../models/deploymentdetailresponsepreparedstackprofileawresource.md) | :heavy_minus_sign: | AWS-specific binding specification | +| `stack` | [models.DeploymentDetailResponsePreparedStackProfileAwStack](../models/deploymentdetailresponsepreparedstackprofileawstack.md) | :heavy_minus_sign: | AWS-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofileawgrant.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofileawgrant.md new file mode 100644 index 000000000..883789c34 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofileawgrant.md @@ -0,0 +1,21 @@ +# DeploymentDetailResponsePreparedStackProfileAwGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackProfileAwGrant } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackProfileAwGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofileawresource.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofileawresource.md new file mode 100644 index 000000000..6f2bbdeb8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofileawresource.md @@ -0,0 +1,24 @@ +# DeploymentDetailResponsePreparedStackProfileAwResource + +AWS-specific binding specification + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackProfileAwResource } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackProfileAwResource = { + resources: [ + "", + "", + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofileawstack.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofileawstack.md new file mode 100644 index 000000000..1a230eefd --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofileawstack.md @@ -0,0 +1,22 @@ +# DeploymentDetailResponsePreparedStackProfileAwStack + +AWS-specific binding specification + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackProfileAwStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackProfileAwStack = { + resources: [ + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofileazure.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofileazure.md new file mode 100644 index 000000000..3b07cf874 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofileazure.md @@ -0,0 +1,23 @@ +# DeploymentDetailResponsePreparedStackProfileAzure + +Azure-specific platform permission configuration + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackProfileAzure } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackProfileAzure = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.DeploymentDetailResponsePreparedStackProfileAzureBinding](../models/deploymentdetailresponsepreparedstackprofileazurebinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.DeploymentDetailResponsePreparedStackProfileAzureGrant](../models/deploymentdetailresponsepreparedstackprofileazuregrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofileazurebinding.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofileazurebinding.md new file mode 100644 index 000000000..f023f98e2 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofileazurebinding.md @@ -0,0 +1,18 @@ +# DeploymentDetailResponsePreparedStackProfileAzureBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackProfileAzureBinding } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackProfileAzureBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | +| `resource` | [models.DeploymentDetailResponsePreparedStackProfileAzureResource](../models/deploymentdetailresponsepreparedstackprofileazureresource.md) | :heavy_minus_sign: | Azure-specific binding specification | +| `stack` | [models.DeploymentDetailResponsePreparedStackProfileAzureStack](../models/deploymentdetailresponsepreparedstackprofileazurestack.md) | :heavy_minus_sign: | Azure-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofileazuregrant.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofileazuregrant.md new file mode 100644 index 000000000..16774ed3a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofileazuregrant.md @@ -0,0 +1,21 @@ +# DeploymentDetailResponsePreparedStackProfileAzureGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackProfileAzureGrant } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackProfileAzureGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofileazureresource.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofileazureresource.md new file mode 100644 index 000000000..827775088 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofileazureresource.md @@ -0,0 +1,19 @@ +# DeploymentDetailResponsePreparedStackProfileAzureResource + +Azure-specific binding specification + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackProfileAzureResource } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackProfileAzureResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofileazurestack.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofileazurestack.md new file mode 100644 index 000000000..539a4e56f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofileazurestack.md @@ -0,0 +1,19 @@ +# DeploymentDetailResponsePreparedStackProfileAzureStack + +Azure-specific binding specification + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackProfileAzureStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackProfileAzureStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofileconditionresource.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofileconditionresource.md new file mode 100644 index 000000000..f3e27b3ec --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofileconditionresource.md @@ -0,0 +1,21 @@ +# DeploymentDetailResponsePreparedStackProfileConditionResource + +GCP IAM condition + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackProfileConditionResource } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackProfileConditionResource = { + expression: "", + title: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofileconditionstack.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofileconditionstack.md new file mode 100644 index 000000000..ac73de781 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofileconditionstack.md @@ -0,0 +1,21 @@ +# DeploymentDetailResponsePreparedStackProfileConditionStack + +GCP IAM condition + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackProfileConditionStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackProfileConditionStack = { + expression: "", + title: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofileeffect.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofileeffect.md new file mode 100644 index 000000000..2c534b175 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofileeffect.md @@ -0,0 +1,17 @@ +# DeploymentDetailResponsePreparedStackProfileEffect + +IAM effect. Defaults to Allow. + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackProfileEffect } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackProfileEffect = "Deny"; +``` + +## Values + +```typescript +"Allow" | "Deny" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofilegcp.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofilegcp.md new file mode 100644 index 000000000..148709068 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofilegcp.md @@ -0,0 +1,23 @@ +# DeploymentDetailResponsePreparedStackProfileGcp + +GCP-specific platform permission configuration + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackProfileGcp } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackProfileGcp = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | +| `binding` | [models.DeploymentDetailResponsePreparedStackProfileGcpBinding](../models/deploymentdetailresponsepreparedstackprofilegcpbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.DeploymentDetailResponsePreparedStackProfileGcpGrant](../models/deploymentdetailresponsepreparedstackprofilegcpgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofilegcpbinding.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofilegcpbinding.md new file mode 100644 index 000000000..0e29873a9 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofilegcpbinding.md @@ -0,0 +1,18 @@ +# DeploymentDetailResponsePreparedStackProfileGcpBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackProfileGcpBinding } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackProfileGcpBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.DeploymentDetailResponsePreparedStackProfileGcpResource](../models/deploymentdetailresponsepreparedstackprofilegcpresource.md) | :heavy_minus_sign: | GCP-specific binding specification | +| `stack` | [models.DeploymentDetailResponsePreparedStackProfileGcpStack](../models/deploymentdetailresponsepreparedstackprofilegcpstack.md) | :heavy_minus_sign: | GCP-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofilegcpgrant.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofilegcpgrant.md new file mode 100644 index 000000000..2109f9699 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofilegcpgrant.md @@ -0,0 +1,21 @@ +# DeploymentDetailResponsePreparedStackProfileGcpGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackProfileGcpGrant } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackProfileGcpGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofilegcpresource.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofilegcpresource.md new file mode 100644 index 000000000..b1864599d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofilegcpresource.md @@ -0,0 +1,20 @@ +# DeploymentDetailResponsePreparedStackProfileGcpResource + +GCP-specific binding specification + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackProfileGcpResource } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackProfileGcpResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| `condition` | *models.DeploymentDetailResponsePreparedStackProfileResourceConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofilegcpstack.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofilegcpstack.md new file mode 100644 index 000000000..b840f71f8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofilegcpstack.md @@ -0,0 +1,20 @@ +# DeploymentDetailResponsePreparedStackProfileGcpStack + +GCP-specific binding specification + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackProfileGcpStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackProfileGcpStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | +| `condition` | *models.DeploymentDetailResponsePreparedStackProfileStackConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofileplatforms.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofileplatforms.md new file mode 100644 index 000000000..30cab8f58 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofileplatforms.md @@ -0,0 +1,19 @@ +# DeploymentDetailResponsePreparedStackProfilePlatforms + +Platform-specific permission configurations + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackProfilePlatforms } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackProfilePlatforms = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | +| `aws` | [models.DeploymentDetailResponsePreparedStackProfileAw](../models/deploymentdetailresponsepreparedstackprofileaw.md)[] | :heavy_minus_sign: | AWS permission configurations | +| `azure` | [models.DeploymentDetailResponsePreparedStackProfileAzure](../models/deploymentdetailresponsepreparedstackprofileazure.md)[] | :heavy_minus_sign: | Azure permission configurations | +| `gcp` | [models.DeploymentDetailResponsePreparedStackProfileGcp](../models/deploymentdetailresponsepreparedstackprofilegcp.md)[] | :heavy_minus_sign: | GCP permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofileresourceconditionunion.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofileresourceconditionunion.md new file mode 100644 index 000000000..8234a6945 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofileresourceconditionunion.md @@ -0,0 +1,21 @@ +# DeploymentDetailResponsePreparedStackProfileResourceConditionUnion + + +## Supported Types + +### `models.DeploymentDetailResponsePreparedStackProfileConditionResource` + +```typescript +const value: + models.DeploymentDetailResponsePreparedStackProfileConditionResource = { + expression: "", + title: "", + }; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofilestackconditionunion.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofilestackconditionunion.md new file mode 100644 index 000000000..e609207c5 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofilestackconditionunion.md @@ -0,0 +1,21 @@ +# DeploymentDetailResponsePreparedStackProfileStackConditionUnion + + +## Supported Types + +### `models.DeploymentDetailResponsePreparedStackProfileConditionStack` + +```typescript +const value: models.DeploymentDetailResponsePreparedStackProfileConditionStack = + { + expression: "", + title: "", + }; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofileunion.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofileunion.md new file mode 100644 index 000000000..10902d177 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprofileunion.md @@ -0,0 +1,23 @@ +# DeploymentDetailResponsePreparedStackProfileUnion + +Reference to a permission set - either by name or inline definition + + +## Supported Types + +### `models.DeploymentDetailResponsePreparedStackProfile` + +```typescript +const value: models.DeploymentDetailResponsePreparedStackProfile = { + description: "mmm carefully slump outlaw", + id: "", + platforms: {}, +}; +``` + +### `string` + +```typescript +const value: string = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprovidedby.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprovidedby.md new file mode 100644 index 000000000..77f81d407 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackprovidedby.md @@ -0,0 +1,17 @@ +# DeploymentDetailResponsePreparedStackProvidedBy + +Who can provide a stack input value. + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackProvidedBy } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackProvidedBy = "deployer"; +``` + +## Values + +```typescript +"developer" | "deployer" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackresources.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackresources.md index d935c4eb3..6bf4ba75e 100644 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackresources.md +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackresources.md @@ -22,9 +22,10 @@ let value: DeploymentDetailResponsePreparedStackResources = { ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `config` | [models.DeploymentDetailResponsePreparedStackConfig](../models/deploymentdetailresponsepreparedstackconfig.md) | :heavy_check_mark: | 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` | [models.DeploymentDetailResponsePreparedStackDependency](../models/deploymentdetailresponsepreparedstackdependency.md)[] | :heavy_check_mark: | Additional dependencies for this resource beyond those defined in the resource itself.
The total dependencies are: resource.get_dependencies() + this list | -| `lifecycle` | [models.DeploymentDetailResponsePreparedStackLifecycle](../models/deploymentdetailresponsepreparedstacklifecycle.md) | :heavy_check_mark: | Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. | -| `remoteAccess` | *boolean* | :heavy_minus_sign: | Enable remote bindings for this resource (BYOB use case).
When true, binding params are synced to StackState's `remote_binding_params`.
Default: false (prevents sensitive data in synced state). | \ No newline at end of file +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `config` | [models.DeploymentDetailResponsePreparedStackConfig](../models/deploymentdetailresponsepreparedstackconfig.md) | :heavy_check_mark: | 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` | [models.DeploymentDetailResponsePreparedStackDependency](../models/deploymentdetailresponsepreparedstackdependency.md)[] | :heavy_check_mark: | Additional dependencies for this resource beyond those defined in the resource itself.
The total dependencies are: resource.get_dependencies() + this list | +| `enabledWhen` | *string* | :heavy_minus_sign: | 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. | +| `lifecycle` | [models.DeploymentDetailResponsePreparedStackLifecycle](../models/deploymentdetailresponsepreparedstacklifecycle.md) | :heavy_check_mark: | Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. | +| `remoteAccess` | *boolean* | :heavy_minus_sign: | Enable remote bindings for this resource (BYOB use case).
When true, binding params are synced to StackState's `remote_binding_params`.
Default: false (prevents sensitive data in synced state). | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstacksupportedplatform.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstacksupportedplatform.md new file mode 100644 index 000000000..059bc1fa4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstacksupportedplatform.md @@ -0,0 +1,17 @@ +# DeploymentDetailResponsePreparedStackSupportedPlatform + +Represents the target cloud platform. + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackSupportedPlatform } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackSupportedPlatform = "azure"; +``` + +## Values + +```typescript +"aws" | "gcp" | "azure" | "kubernetes" | "machines" | "local" | "test" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstacktypeboolean.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstacktypeboolean.md new file mode 100644 index 000000000..4c572f55d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstacktypeboolean.md @@ -0,0 +1,15 @@ +# DeploymentDetailResponsePreparedStackTypeBoolean + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackTypeBoolean } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackTypeBoolean = "boolean"; +``` + +## Values + +```typescript +"boolean" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstacktypeenvenum.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstacktypeenvenum.md new file mode 100644 index 000000000..325d9182c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstacktypeenvenum.md @@ -0,0 +1,17 @@ +# DeploymentDetailResponsePreparedStackTypeEnvEnum + +Environment variable handling for a stack input mapping. + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackTypeEnvEnum } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackTypeEnvEnum = "secret"; +``` + +## Values + +```typescript +"plain" | "secret" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstacktypenumber.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstacktypenumber.md new file mode 100644 index 000000000..3306e7f27 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstacktypenumber.md @@ -0,0 +1,15 @@ +# DeploymentDetailResponsePreparedStackTypeNumber + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackTypeNumber } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackTypeNumber = "number"; +``` + +## Values + +```typescript +"number" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstacktypestring.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstacktypestring.md new file mode 100644 index 000000000..bfe97bf0f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstacktypestring.md @@ -0,0 +1,15 @@ +# DeploymentDetailResponsePreparedStackTypeString + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackTypeString } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackTypeString = "string"; +``` + +## Values + +```typescript +"string" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstacktypestringlist.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstacktypestringlist.md new file mode 100644 index 000000000..932f5d3c4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstacktypestringlist.md @@ -0,0 +1,15 @@ +# DeploymentDetailResponsePreparedStackTypeStringList + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackTypeStringList } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackTypeStringList = "stringList"; +``` + +## Values + +```typescript +"stringList" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstacktypeunion.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstacktypeunion.md new file mode 100644 index 000000000..952fa573e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstacktypeunion.md @@ -0,0 +1,17 @@ +# DeploymentDetailResponsePreparedStackTypeUnion + + +## Supported Types + +### `models.DeploymentDetailResponsePreparedStackTypeEnvEnum` + +```typescript +const value: models.DeploymentDetailResponsePreparedStackTypeEnvEnum = "secret"; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackvalidation.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackvalidation.md new file mode 100644 index 000000000..6cf60af5c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackvalidation.md @@ -0,0 +1,25 @@ +# DeploymentDetailResponsePreparedStackValidation + +Portable stack input validation constraints. + +## Example Usage + +```typescript +import { DeploymentDetailResponsePreparedStackValidation } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponsePreparedStackValidation = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | +| `format` | *string* | :heavy_minus_sign: | Semantic format hint such as url. | +| `max` | *string* | :heavy_minus_sign: | Maximum number. | +| `maxItems` | *number* | :heavy_minus_sign: | Maximum string-list items. | +| `maxLength` | *number* | :heavy_minus_sign: | Maximum string length. | +| `min` | *string* | :heavy_minus_sign: | Minimum number. | +| `minItems` | *number* | :heavy_minus_sign: | Minimum string-list items. | +| `minLength` | *number* | :heavy_minus_sign: | Minimum string length. | +| `pattern` | *string* | :heavy_minus_sign: | Portable whole-value regex pattern. | +| `values` | *string*[] | :heavy_minus_sign: | Allowed string enum values. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackvalidationunion.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackvalidationunion.md new file mode 100644 index 000000000..7fda6eb05 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsepreparedstackvalidationunion.md @@ -0,0 +1,17 @@ +# DeploymentDetailResponsePreparedStackValidationUnion + + +## Supported Types + +### `models.DeploymentDetailResponsePreparedStackValidation` + +```typescript +const value: models.DeploymentDetailResponsePreparedStackValidation = {}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofile.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofile.md deleted file mode 100644 index 8c37cb01e..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofile.md +++ /dev/null @@ -1,23 +0,0 @@ -# DeploymentDetailResponseProfile - -A permission set that can be applied across different cloud platforms - -## Example Usage - -```typescript -import { DeploymentDetailResponseProfile } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseProfile = { - description: "extroverted awesome incidentally clueless alongside", - id: "", - platforms: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -| `description` | *string* | :heavy_check_mark: | Human-readable description of what this permission set allows | -| `id` | *string* | :heavy_check_mark: | Unique identifier for the permission set (e.g., "storage/data-read") | -| `platforms` | [models.DeploymentDetailResponseProfilePlatforms](../models/deploymentdetailresponseprofileplatforms.md) | :heavy_check_mark: | Platform-specific permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofileaw.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofileaw.md deleted file mode 100644 index 066acad94..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofileaw.md +++ /dev/null @@ -1,24 +0,0 @@ -# DeploymentDetailResponseProfileAw - -AWS-specific platform permission configuration - -## Example Usage - -```typescript -import { DeploymentDetailResponseProfileAw } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseProfileAw = { - binding: {}, - grant: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -| `binding` | [models.DeploymentDetailResponseProfileAwBinding](../models/deploymentdetailresponseprofileawbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | -| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | -| `effect` | [models.DeploymentDetailResponseProfileEffect](../models/deploymentdetailresponseprofileeffect.md) | :heavy_minus_sign: | IAM effect. Defaults to Allow. | -| `grant` | [models.DeploymentDetailResponseProfileAwGrant](../models/deploymentdetailresponseprofileawgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | -| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofileawbinding.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofileawbinding.md deleted file mode 100644 index c51fbe38e..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofileawbinding.md +++ /dev/null @@ -1,18 +0,0 @@ -# DeploymentDetailResponseProfileAwBinding - -Generic binding configuration for permissions - -## Example Usage - -```typescript -import { DeploymentDetailResponseProfileAwBinding } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseProfileAwBinding = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `resource` | [models.DeploymentDetailResponseProfileAwResource](../models/deploymentdetailresponseprofileawresource.md) | :heavy_minus_sign: | AWS-specific binding specification | -| `stack` | [models.DeploymentDetailResponseProfileAwStack](../models/deploymentdetailresponseprofileawstack.md) | :heavy_minus_sign: | AWS-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofileawgrant.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofileawgrant.md deleted file mode 100644 index 3e45a26dd..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofileawgrant.md +++ /dev/null @@ -1,21 +0,0 @@ -# DeploymentDetailResponseProfileAwGrant - -Grant permissions for a specific cloud platform - -## Example Usage - -```typescript -import { DeploymentDetailResponseProfileAwGrant } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseProfileAwGrant = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | -| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | -| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | -| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | -| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofileawresource.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofileawresource.md deleted file mode 100644 index cf04e1ff8..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofileawresource.md +++ /dev/null @@ -1,20 +0,0 @@ -# DeploymentDetailResponseProfileAwResource - -AWS-specific binding specification - -## Example Usage - -```typescript -import { DeploymentDetailResponseProfileAwResource } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseProfileAwResource = { - resources: [], -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | -| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofileawstack.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofileawstack.md deleted file mode 100644 index ccaaa7b84..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofileawstack.md +++ /dev/null @@ -1,24 +0,0 @@ -# DeploymentDetailResponseProfileAwStack - -AWS-specific binding specification - -## Example Usage - -```typescript -import { DeploymentDetailResponseProfileAwStack } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseProfileAwStack = { - resources: [ - "", - "", - "", - ], -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | -| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofileazure.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofileazure.md deleted file mode 100644 index 35c0493b6..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofileazure.md +++ /dev/null @@ -1,23 +0,0 @@ -# DeploymentDetailResponseProfileAzure - -Azure-specific platform permission configuration - -## Example Usage - -```typescript -import { DeploymentDetailResponseProfileAzure } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseProfileAzure = { - binding: {}, - grant: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -| `binding` | [models.DeploymentDetailResponseProfileAzureBinding](../models/deploymentdetailresponseprofileazurebinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | -| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | -| `grant` | [models.DeploymentDetailResponseProfileAzureGrant](../models/deploymentdetailresponseprofileazuregrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | -| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofileazurebinding.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofileazurebinding.md deleted file mode 100644 index 1b0b2d979..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofileazurebinding.md +++ /dev/null @@ -1,18 +0,0 @@ -# DeploymentDetailResponseProfileAzureBinding - -Generic binding configuration for permissions - -## Example Usage - -```typescript -import { DeploymentDetailResponseProfileAzureBinding } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseProfileAzureBinding = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | -| `resource` | [models.DeploymentDetailResponseProfileAzureResource](../models/deploymentdetailresponseprofileazureresource.md) | :heavy_minus_sign: | Azure-specific binding specification | -| `stack` | [models.DeploymentDetailResponseProfileAzureStack](../models/deploymentdetailresponseprofileazurestack.md) | :heavy_minus_sign: | Azure-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofileazuregrant.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofileazuregrant.md deleted file mode 100644 index 6352c4086..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofileazuregrant.md +++ /dev/null @@ -1,21 +0,0 @@ -# DeploymentDetailResponseProfileAzureGrant - -Grant permissions for a specific cloud platform - -## Example Usage - -```typescript -import { DeploymentDetailResponseProfileAzureGrant } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseProfileAzureGrant = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | -| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | -| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | -| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | -| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofileazureresource.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofileazureresource.md deleted file mode 100644 index b11e6f90a..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofileazureresource.md +++ /dev/null @@ -1,19 +0,0 @@ -# DeploymentDetailResponseProfileAzureResource - -Azure-specific binding specification - -## Example Usage - -```typescript -import { DeploymentDetailResponseProfileAzureResource } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseProfileAzureResource = { - scope: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofileazurestack.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofileazurestack.md deleted file mode 100644 index e472bfc12..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofileazurestack.md +++ /dev/null @@ -1,19 +0,0 @@ -# DeploymentDetailResponseProfileAzureStack - -Azure-specific binding specification - -## Example Usage - -```typescript -import { DeploymentDetailResponseProfileAzureStack } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseProfileAzureStack = { - scope: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofileconditionresource.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofileconditionresource.md deleted file mode 100644 index eb2c19d96..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofileconditionresource.md +++ /dev/null @@ -1,21 +0,0 @@ -# DeploymentDetailResponseProfileConditionResource - -GCP IAM condition - -## Example Usage - -```typescript -import { DeploymentDetailResponseProfileConditionResource } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseProfileConditionResource = { - expression: "", - title: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `expression` | *string* | :heavy_check_mark: | N/A | -| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofileconditionstack.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofileconditionstack.md deleted file mode 100644 index c73efb071..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofileconditionstack.md +++ /dev/null @@ -1,21 +0,0 @@ -# DeploymentDetailResponseProfileConditionStack - -GCP IAM condition - -## Example Usage - -```typescript -import { DeploymentDetailResponseProfileConditionStack } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseProfileConditionStack = { - expression: "", - title: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `expression` | *string* | :heavy_check_mark: | N/A | -| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofileeffect.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofileeffect.md deleted file mode 100644 index d62e20544..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofileeffect.md +++ /dev/null @@ -1,17 +0,0 @@ -# DeploymentDetailResponseProfileEffect - -IAM effect. Defaults to Allow. - -## Example Usage - -```typescript -import { DeploymentDetailResponseProfileEffect } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseProfileEffect = "Deny"; -``` - -## Values - -```typescript -"Allow" | "Deny" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofilegcp.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofilegcp.md deleted file mode 100644 index d3266af62..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofilegcp.md +++ /dev/null @@ -1,23 +0,0 @@ -# DeploymentDetailResponseProfileGcp - -GCP-specific platform permission configuration - -## Example Usage - -```typescript -import { DeploymentDetailResponseProfileGcp } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseProfileGcp = { - binding: {}, - grant: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `binding` | [models.DeploymentDetailResponseProfileGcpBinding](../models/deploymentdetailresponseprofilegcpbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | -| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | -| `grant` | [models.DeploymentDetailResponseProfileGcpGrant](../models/deploymentdetailresponseprofilegcpgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | -| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofilegcpbinding.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofilegcpbinding.md deleted file mode 100644 index 654cad612..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofilegcpbinding.md +++ /dev/null @@ -1,18 +0,0 @@ -# DeploymentDetailResponseProfileGcpBinding - -Generic binding configuration for permissions - -## Example Usage - -```typescript -import { DeploymentDetailResponseProfileGcpBinding } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseProfileGcpBinding = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | -| `resource` | [models.DeploymentDetailResponseProfileGcpResource](../models/deploymentdetailresponseprofilegcpresource.md) | :heavy_minus_sign: | GCP-specific binding specification | -| `stack` | [models.DeploymentDetailResponseProfileGcpStack](../models/deploymentdetailresponseprofilegcpstack.md) | :heavy_minus_sign: | GCP-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofilegcpgrant.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofilegcpgrant.md deleted file mode 100644 index 038fa473a..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofilegcpgrant.md +++ /dev/null @@ -1,21 +0,0 @@ -# DeploymentDetailResponseProfileGcpGrant - -Grant permissions for a specific cloud platform - -## Example Usage - -```typescript -import { DeploymentDetailResponseProfileGcpGrant } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseProfileGcpGrant = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | -| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | -| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | -| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | -| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofilegcpresource.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofilegcpresource.md deleted file mode 100644 index c2a1a9828..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofilegcpresource.md +++ /dev/null @@ -1,20 +0,0 @@ -# DeploymentDetailResponseProfileGcpResource - -GCP-specific binding specification - -## Example Usage - -```typescript -import { DeploymentDetailResponseProfileGcpResource } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseProfileGcpResource = { - scope: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `condition` | *models.DeploymentDetailResponseProfileResourceConditionUnion* | :heavy_minus_sign: | N/A | -| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofilegcpstack.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofilegcpstack.md deleted file mode 100644 index 94f57e2f9..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofilegcpstack.md +++ /dev/null @@ -1,20 +0,0 @@ -# DeploymentDetailResponseProfileGcpStack - -GCP-specific binding specification - -## Example Usage - -```typescript -import { DeploymentDetailResponseProfileGcpStack } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseProfileGcpStack = { - scope: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | -| `condition` | *models.DeploymentDetailResponseProfileStackConditionUnion* | :heavy_minus_sign: | N/A | -| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofileplatforms.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofileplatforms.md deleted file mode 100644 index 770e06314..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofileplatforms.md +++ /dev/null @@ -1,19 +0,0 @@ -# DeploymentDetailResponseProfilePlatforms - -Platform-specific permission configurations - -## Example Usage - -```typescript -import { DeploymentDetailResponseProfilePlatforms } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseProfilePlatforms = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -| `aws` | [models.DeploymentDetailResponseProfileAw](../models/deploymentdetailresponseprofileaw.md)[] | :heavy_minus_sign: | AWS permission configurations | -| `azure` | [models.DeploymentDetailResponseProfileAzure](../models/deploymentdetailresponseprofileazure.md)[] | :heavy_minus_sign: | Azure permission configurations | -| `gcp` | [models.DeploymentDetailResponseProfileGcp](../models/deploymentdetailresponseprofilegcp.md)[] | :heavy_minus_sign: | GCP permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofileresourceconditionunion.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofileresourceconditionunion.md deleted file mode 100644 index 1bf66e67c..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofileresourceconditionunion.md +++ /dev/null @@ -1,20 +0,0 @@ -# DeploymentDetailResponseProfileResourceConditionUnion - - -## Supported Types - -### `models.DeploymentDetailResponseProfileConditionResource` - -```typescript -const value: models.DeploymentDetailResponseProfileConditionResource = { - expression: "", - title: "", -}; -``` - -### `any` - -```typescript -const value: any = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofilestackconditionunion.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofilestackconditionunion.md deleted file mode 100644 index 2c37ebe62..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofilestackconditionunion.md +++ /dev/null @@ -1,20 +0,0 @@ -# DeploymentDetailResponseProfileStackConditionUnion - - -## Supported Types - -### `models.DeploymentDetailResponseProfileConditionStack` - -```typescript -const value: models.DeploymentDetailResponseProfileConditionStack = { - expression: "", - title: "", -}; -``` - -### `any` - -```typescript -const value: any = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofileunion.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofileunion.md deleted file mode 100644 index ca58c6f76..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprofileunion.md +++ /dev/null @@ -1,23 +0,0 @@ -# DeploymentDetailResponseProfileUnion - -Reference to a permission set - either by name or inline definition - - -## Supported Types - -### `models.DeploymentDetailResponseProfile` - -```typescript -const value: models.DeploymentDetailResponseProfile = { - description: "extroverted awesome incidentally clueless alongside", - id: "", - platforms: {}, -}; -``` - -### `string` - -```typescript -const value: string = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprovidedby.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprovidedby.md deleted file mode 100644 index 7c64aad2e..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseprovidedby.md +++ /dev/null @@ -1,17 +0,0 @@ -# DeploymentDetailResponseProvidedBy - -Who can provide a stack input value. - -## Example Usage - -```typescript -import { DeploymentDetailResponseProvidedBy } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseProvidedBy = "developer"; -``` - -## Values - -```typescript -"developer" | "deployer" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseruntimemetadata.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseruntimemetadata.md index 347272d4b..89008aa9a 100644 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseruntimemetadata.md +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseruntimemetadata.md @@ -12,9 +12,13 @@ let value: DeploymentDetailResponseRuntimeMetadata = {}; ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `lastSyncedEnvVarsHash` | *string* | :heavy_minus_sign: | Hash of the environment variables snapshot that was last synced to the vault
Used to avoid redundant sync operations during incremental deployment | -| `lastSyncedSecretNames` | *string*[] | :heavy_minus_sign: | Exact vault keys owned by the deployment secret synchronizer. This
inventory lets a later snapshot delete removed keys without listing or
touching unrelated values in the same vault. | -| `preparedStack` | *models.DeploymentDetailResponsePreparedStackUnion* | :heavy_minus_sign: | N/A | -| `registryAccessGranted` | *boolean* | :heavy_minus_sign: | Whether cross-account registry access has been successfully granted.
Set to true after the manager successfully sets the ECR/GAR repo policy
for this deployment's target account. Prevents redundant API calls on
every reconcile tick. | \ No newline at end of file +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `initialSetupAuthority` | [models.DeploymentDetailResponseInitialSetupAuthority](../models/deploymentdetailresponseinitialsetupauthority.md) | :heavy_minus_sign: | Actor that owns structural work during the initial setup phase. | +| `lastSyncedEnvVarsHash` | *string* | :heavy_minus_sign: | Hash of the environment variables snapshot that was last synced to the vault
Used to avoid redundant sync operations during incremental deployment | +| `lastSyncedSecretNames` | *string*[] | :heavy_minus_sign: | Exact vault keys owned by the deployment secret synchronizer. This
inventory lets a later snapshot delete removed keys without listing or
touching unrelated values in the same vault. | +| `pendingPreparedStack` | *models.DeploymentDetailResponsePendingPreparedStackUnion* | :heavy_minus_sign: | N/A | +| `persistedGateAnswers` | Record | :heavy_minus_sign: | Canonical resolved answers for inputs that gate Frozen resources,
keyed by input id, recorded when the deployment is created or its
setup import registers.

A frozen gate's answer is fixed for the deployment's lifetime: the
update path refuses input values that conflict with these, and a Live
resource sharing such an input resolves the persisted answer forever. | +| `preparedStack` | *models.DeploymentDetailResponsePreparedStackUnion* | :heavy_minus_sign: | N/A | +| `registryAccessGranted` | *boolean* | :heavy_minus_sign: | Whether cross-account registry access has been successfully granted.
Set to true after the manager successfully sets the ECR/GAR repo policy
for this deployment's target account. Prevents redundant API calls on
every reconcile tick. | +| `setupUpdateAuthorization` | *models.DeploymentDetailResponseSetupUpdateAuthorizationUnion* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsesetupupdateauthorization.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsesetupupdateauthorization.md new file mode 100644 index 000000000..7c177d255 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsesetupupdateauthorization.md @@ -0,0 +1,31 @@ +# DeploymentDetailResponseSetupUpdateAuthorization + +One-shot authority for a setup re-import to replace setup-owned resources. + +## Example Usage + +```typescript +import { DeploymentDetailResponseSetupUpdateAuthorization } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponseSetupUpdateAuthorization = { + baselineFrozenDigest: "", + nonce: "", + releaseId: "", + setupFingerprint: "", + setupFingerprintVersion: 846995, + setupTarget: "", + targetFrozenDigest: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | +| `baselineFrozenDigest` | *string* | :heavy_check_mark: | Frozen resource projection from the last successful deployment. | +| `nonce` | *string* | :heavy_check_mark: | Unique revision used by persistence layers for compare-and-swap updates. | +| `releaseId` | *string* | :heavy_check_mark: | Release whose stack was prepared by setup. | +| `setupFingerprint` | *string* | :heavy_check_mark: | Exact setup artifact revision that authored this authority. | +| `setupFingerprintVersion` | *number* | :heavy_check_mark: | Setup fingerprint contract version. | +| `setupTarget` | *string* | :heavy_check_mark: | Stable setup target recorded on the imported deployment. | +| `targetFrozenDigest` | *string* | :heavy_check_mark: | Frozen resource projection prepared by the setup re-import. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsesetupupdateauthorizationunion.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsesetupupdateauthorizationunion.md new file mode 100644 index 000000000..38d4ae8f5 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsesetupupdateauthorizationunion.md @@ -0,0 +1,25 @@ +# DeploymentDetailResponseSetupUpdateAuthorizationUnion + + +## Supported Types + +### `models.DeploymentDetailResponseSetupUpdateAuthorization` + +```typescript +const value: models.DeploymentDetailResponseSetupUpdateAuthorization = { + baselineFrozenDigest: "", + nonce: "", + releaseId: "", + setupFingerprint: "", + setupFingerprintVersion: 846995, + setupTarget: "", + targetFrozenDigest: "", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsesupportedplatform.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsesupportedplatform.md deleted file mode 100644 index 2fe773d2d..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsesupportedplatform.md +++ /dev/null @@ -1,17 +0,0 @@ -# DeploymentDetailResponseSupportedPlatform - -Represents the target cloud platform. - -## Example Usage - -```typescript -import { DeploymentDetailResponseSupportedPlatform } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseSupportedPlatform = "machines"; -``` - -## Values - -```typescript -"aws" | "gcp" | "azure" | "kubernetes" | "machines" | "local" | "test" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsetypeboolean.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsetypeboolean.md deleted file mode 100644 index 46ac28ffe..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsetypeboolean.md +++ /dev/null @@ -1,15 +0,0 @@ -# DeploymentDetailResponseTypeBoolean - -## Example Usage - -```typescript -import { DeploymentDetailResponseTypeBoolean } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseTypeBoolean = "boolean"; -``` - -## Values - -```typescript -"boolean" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsetypeenvenum.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsetypeenvenum.md deleted file mode 100644 index 53138fbd9..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsetypeenvenum.md +++ /dev/null @@ -1,17 +0,0 @@ -# DeploymentDetailResponseTypeEnvEnum - -Environment variable handling for a stack input mapping. - -## Example Usage - -```typescript -import { DeploymentDetailResponseTypeEnvEnum } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseTypeEnvEnum = "secret"; -``` - -## Values - -```typescript -"plain" | "secret" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsetypenumber.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsetypenumber.md deleted file mode 100644 index 0d5ae771f..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsetypenumber.md +++ /dev/null @@ -1,15 +0,0 @@ -# DeploymentDetailResponseTypeNumber - -## Example Usage - -```typescript -import { DeploymentDetailResponseTypeNumber } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseTypeNumber = "number"; -``` - -## Values - -```typescript -"number" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsetypestring.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsetypestring.md deleted file mode 100644 index 4524a579a..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsetypestring.md +++ /dev/null @@ -1,15 +0,0 @@ -# DeploymentDetailResponseTypeString - -## Example Usage - -```typescript -import { DeploymentDetailResponseTypeString } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseTypeString = "string"; -``` - -## Values - -```typescript -"string" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsetypestringlist.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsetypestringlist.md deleted file mode 100644 index 76ddbc00f..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsetypestringlist.md +++ /dev/null @@ -1,15 +0,0 @@ -# DeploymentDetailResponseTypeStringList - -## Example Usage - -```typescript -import { DeploymentDetailResponseTypeStringList } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseTypeStringList = "stringList"; -``` - -## Values - -```typescript -"stringList" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsetypeunion.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsetypeunion.md deleted file mode 100644 index c14562901..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsetypeunion.md +++ /dev/null @@ -1,17 +0,0 @@ -# DeploymentDetailResponseTypeUnion - - -## Supported Types - -### `models.DeploymentDetailResponseTypeEnvEnum` - -```typescript -const value: models.DeploymentDetailResponseTypeEnvEnum = "plain"; -``` - -### `any` - -```typescript -const value: any = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseupdatestate.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseupdatestate.md new file mode 100644 index 000000000..40b1ae393 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseupdatestate.md @@ -0,0 +1,54 @@ +# DeploymentDetailResponseUpdateState + +Durable progress for deployment updates + +## Example Usage + +```typescript +import { DeploymentDetailResponseUpdateState } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponseUpdateState = { + active: { + id: "duop_0vtxpb1sw4sbcdwg2xo37q6", + status: "applying", + reasons: [], + targetReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", + changedKeys: [], + requestedAt: new Date("2026-04-28T10:12:17.277Z"), + }, + next: { + id: "duop_0vtxpb1sw4sbcdwg2xo37q6", + status: "queued", + reasons: [], + targetReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", + changedKeys: [ + "", + "", + "", + ], + requestedAt: new Date("2025-05-23T02:17:08.731Z"), + }, + latest: { + id: "duop_0vtxpb1sw4sbcdwg2xo37q6", + status: "superseded", + reasons: [ + "redeploy", + ], + targetReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", + changedKeys: [ + "", + "", + "", + ], + requestedAt: new Date("2024-11-23T19:43:18.153Z"), + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `active` | [models.DeploymentUpdateOperationSummary](../models/deploymentupdateoperationsummary.md) | :heavy_check_mark: | N/A | +| `next` | [models.DeploymentUpdateOperationSummary](../models/deploymentupdateoperationsummary.md) | :heavy_check_mark: | N/A | +| `latest` | [models.DeploymentUpdateOperationSummary](../models/deploymentupdateoperationsummary.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsevalidation.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsevalidation.md deleted file mode 100644 index 8c8c0dbb1..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsevalidation.md +++ /dev/null @@ -1,25 +0,0 @@ -# DeploymentDetailResponseValidation - -Portable stack input validation constraints. - -## Example Usage - -```typescript -import { DeploymentDetailResponseValidation } from "@alienplatform/platform-api/models"; - -let value: DeploymentDetailResponseValidation = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `format` | *string* | :heavy_minus_sign: | Semantic format hint such as url. | -| `max` | *string* | :heavy_minus_sign: | Maximum number. | -| `maxItems` | *number* | :heavy_minus_sign: | Maximum string-list items. | -| `maxLength` | *number* | :heavy_minus_sign: | Maximum string length. | -| `min` | *string* | :heavy_minus_sign: | Minimum number. | -| `minItems` | *number* | :heavy_minus_sign: | Minimum string-list items. | -| `minLength` | *number* | :heavy_minus_sign: | Minimum string length. | -| `pattern` | *string* | :heavy_minus_sign: | Portable whole-value regex pattern. | -| `values` | *string*[] | :heavy_minus_sign: | Allowed string enum values. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsevalidationunion.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponsevalidationunion.md deleted file mode 100644 index 2c875f941..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponsevalidationunion.md +++ /dev/null @@ -1,17 +0,0 @@ -# DeploymentDetailResponseValidationUnion - - -## Supported Types - -### `models.DeploymentDetailResponseValidation` - -```typescript -const value: models.DeploymentDetailResponseValidation = {}; -``` - -### `any` - -```typescript -const value: any = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/deploymentenv.md b/client-sdks/platform/typescript/docs/models/deploymentenv.md deleted file mode 100644 index f1c85e427..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentenv.md +++ /dev/null @@ -1,21 +0,0 @@ -# DeploymentEnv - -How a resolved stack input is injected into runtime environment variables. - -## Example Usage - -```typescript -import { DeploymentEnv } from "@alienplatform/platform-api/models"; - -let value: DeploymentEnv = { - name: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | -| `name` | *string* | :heavy_check_mark: | Environment variable name. | -| `targetResources` | *string*[] | :heavy_minus_sign: | Target resource IDs or patterns. None means every env-capable resource. | -| `type` | *models.DeploymentTypeUnion* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentextend.md b/client-sdks/platform/typescript/docs/models/deploymentextend.md deleted file mode 100644 index f9014b6d2..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentextend.md +++ /dev/null @@ -1,23 +0,0 @@ -# DeploymentExtend - -A permission set that can be applied across different cloud platforms - -## Example Usage - -```typescript -import { DeploymentExtend } from "@alienplatform/platform-api/models"; - -let value: DeploymentExtend = { - description: "burdensome smog miserably lamp whitewash carouse irk", - id: "", - platforms: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -| `description` | *string* | :heavy_check_mark: | Human-readable description of what this permission set allows | -| `id` | *string* | :heavy_check_mark: | Unique identifier for the permission set (e.g., "storage/data-read") | -| `platforms` | [models.DeploymentExtendPlatforms](../models/deploymentextendplatforms.md) | :heavy_check_mark: | Platform-specific permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentextendaw.md b/client-sdks/platform/typescript/docs/models/deploymentextendaw.md deleted file mode 100644 index 7b9300f5e..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentextendaw.md +++ /dev/null @@ -1,24 +0,0 @@ -# DeploymentExtendAw - -AWS-specific platform permission configuration - -## Example Usage - -```typescript -import { DeploymentExtendAw } from "@alienplatform/platform-api/models"; - -let value: DeploymentExtendAw = { - binding: {}, - grant: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -| `binding` | [models.DeploymentExtendAwBinding](../models/deploymentextendawbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | -| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | -| `effect` | [models.DeploymentExtendEffect](../models/deploymentextendeffect.md) | :heavy_minus_sign: | IAM effect. Defaults to Allow. | -| `grant` | [models.DeploymentExtendAwGrant](../models/deploymentextendawgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | -| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentextendawbinding.md b/client-sdks/platform/typescript/docs/models/deploymentextendawbinding.md deleted file mode 100644 index 38b60b663..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentextendawbinding.md +++ /dev/null @@ -1,18 +0,0 @@ -# DeploymentExtendAwBinding - -Generic binding configuration for permissions - -## Example Usage - -```typescript -import { DeploymentExtendAwBinding } from "@alienplatform/platform-api/models"; - -let value: DeploymentExtendAwBinding = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | -| `resource` | [models.DeploymentExtendAwResource](../models/deploymentextendawresource.md) | :heavy_minus_sign: | AWS-specific binding specification | -| `stack` | [models.DeploymentExtendAwStack](../models/deploymentextendawstack.md) | :heavy_minus_sign: | AWS-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentextendawgrant.md b/client-sdks/platform/typescript/docs/models/deploymentextendawgrant.md deleted file mode 100644 index 25175ec5a..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentextendawgrant.md +++ /dev/null @@ -1,21 +0,0 @@ -# DeploymentExtendAwGrant - -Grant permissions for a specific cloud platform - -## Example Usage - -```typescript -import { DeploymentExtendAwGrant } from "@alienplatform/platform-api/models"; - -let value: DeploymentExtendAwGrant = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | -| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | -| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | -| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | -| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentextendawresource.md b/client-sdks/platform/typescript/docs/models/deploymentextendawresource.md deleted file mode 100644 index 5648a927f..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentextendawresource.md +++ /dev/null @@ -1,24 +0,0 @@ -# DeploymentExtendAwResource - -AWS-specific binding specification - -## Example Usage - -```typescript -import { DeploymentExtendAwResource } from "@alienplatform/platform-api/models"; - -let value: DeploymentExtendAwResource = { - resources: [ - "", - "", - "", - ], -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | -| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentextendawstack.md b/client-sdks/platform/typescript/docs/models/deploymentextendawstack.md deleted file mode 100644 index 7e368cbd7..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentextendawstack.md +++ /dev/null @@ -1,24 +0,0 @@ -# DeploymentExtendAwStack - -AWS-specific binding specification - -## Example Usage - -```typescript -import { DeploymentExtendAwStack } from "@alienplatform/platform-api/models"; - -let value: DeploymentExtendAwStack = { - resources: [ - "", - "", - "", - ], -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | -| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentextendazure.md b/client-sdks/platform/typescript/docs/models/deploymentextendazure.md deleted file mode 100644 index 876ffc557..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentextendazure.md +++ /dev/null @@ -1,23 +0,0 @@ -# DeploymentExtendAzure - -Azure-specific platform permission configuration - -## Example Usage - -```typescript -import { DeploymentExtendAzure } from "@alienplatform/platform-api/models"; - -let value: DeploymentExtendAzure = { - binding: {}, - grant: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -| `binding` | [models.DeploymentExtendAzureBinding](../models/deploymentextendazurebinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | -| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | -| `grant` | [models.DeploymentExtendAzureGrant](../models/deploymentextendazuregrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | -| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentextendazurebinding.md b/client-sdks/platform/typescript/docs/models/deploymentextendazurebinding.md deleted file mode 100644 index e28f5419c..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentextendazurebinding.md +++ /dev/null @@ -1,18 +0,0 @@ -# DeploymentExtendAzureBinding - -Generic binding configuration for permissions - -## Example Usage - -```typescript -import { DeploymentExtendAzureBinding } from "@alienplatform/platform-api/models"; - -let value: DeploymentExtendAzureBinding = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | -| `resource` | [models.DeploymentExtendAzureResource](../models/deploymentextendazureresource.md) | :heavy_minus_sign: | Azure-specific binding specification | -| `stack` | [models.DeploymentExtendAzureStack](../models/deploymentextendazurestack.md) | :heavy_minus_sign: | Azure-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentextendazuregrant.md b/client-sdks/platform/typescript/docs/models/deploymentextendazuregrant.md deleted file mode 100644 index db53152bc..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentextendazuregrant.md +++ /dev/null @@ -1,21 +0,0 @@ -# DeploymentExtendAzureGrant - -Grant permissions for a specific cloud platform - -## Example Usage - -```typescript -import { DeploymentExtendAzureGrant } from "@alienplatform/platform-api/models"; - -let value: DeploymentExtendAzureGrant = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | -| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | -| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | -| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | -| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentextendazureresource.md b/client-sdks/platform/typescript/docs/models/deploymentextendazureresource.md deleted file mode 100644 index 15ea38b68..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentextendazureresource.md +++ /dev/null @@ -1,19 +0,0 @@ -# DeploymentExtendAzureResource - -Azure-specific binding specification - -## Example Usage - -```typescript -import { DeploymentExtendAzureResource } from "@alienplatform/platform-api/models"; - -let value: DeploymentExtendAzureResource = { - scope: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentextendazurestack.md b/client-sdks/platform/typescript/docs/models/deploymentextendazurestack.md deleted file mode 100644 index 3e9f66f01..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentextendazurestack.md +++ /dev/null @@ -1,19 +0,0 @@ -# DeploymentExtendAzureStack - -Azure-specific binding specification - -## Example Usage - -```typescript -import { DeploymentExtendAzureStack } from "@alienplatform/platform-api/models"; - -let value: DeploymentExtendAzureStack = { - scope: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentextendconditionresource.md b/client-sdks/platform/typescript/docs/models/deploymentextendconditionresource.md deleted file mode 100644 index 9872c5706..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentextendconditionresource.md +++ /dev/null @@ -1,21 +0,0 @@ -# DeploymentExtendConditionResource - -GCP IAM condition - -## Example Usage - -```typescript -import { DeploymentExtendConditionResource } from "@alienplatform/platform-api/models"; - -let value: DeploymentExtendConditionResource = { - expression: "", - title: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `expression` | *string* | :heavy_check_mark: | N/A | -| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentextendconditionstack.md b/client-sdks/platform/typescript/docs/models/deploymentextendconditionstack.md deleted file mode 100644 index 1c796cef7..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentextendconditionstack.md +++ /dev/null @@ -1,21 +0,0 @@ -# DeploymentExtendConditionStack - -GCP IAM condition - -## Example Usage - -```typescript -import { DeploymentExtendConditionStack } from "@alienplatform/platform-api/models"; - -let value: DeploymentExtendConditionStack = { - expression: "", - title: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `expression` | *string* | :heavy_check_mark: | N/A | -| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentextendeffect.md b/client-sdks/platform/typescript/docs/models/deploymentextendeffect.md deleted file mode 100644 index 8e1264c9d..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentextendeffect.md +++ /dev/null @@ -1,17 +0,0 @@ -# DeploymentExtendEffect - -IAM effect. Defaults to Allow. - -## Example Usage - -```typescript -import { DeploymentExtendEffect } from "@alienplatform/platform-api/models"; - -let value: DeploymentExtendEffect = "Allow"; -``` - -## Values - -```typescript -"Allow" | "Deny" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentextendgcp.md b/client-sdks/platform/typescript/docs/models/deploymentextendgcp.md deleted file mode 100644 index d00b92983..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentextendgcp.md +++ /dev/null @@ -1,23 +0,0 @@ -# DeploymentExtendGcp - -GCP-specific platform permission configuration - -## Example Usage - -```typescript -import { DeploymentExtendGcp } from "@alienplatform/platform-api/models"; - -let value: DeploymentExtendGcp = { - binding: {}, - grant: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | -| `binding` | [models.DeploymentExtendGcpBinding](../models/deploymentextendgcpbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | -| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | -| `grant` | [models.DeploymentExtendGcpGrant](../models/deploymentextendgcpgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | -| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentextendgcpbinding.md b/client-sdks/platform/typescript/docs/models/deploymentextendgcpbinding.md deleted file mode 100644 index f4d4bdc92..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentextendgcpbinding.md +++ /dev/null @@ -1,18 +0,0 @@ -# DeploymentExtendGcpBinding - -Generic binding configuration for permissions - -## Example Usage - -```typescript -import { DeploymentExtendGcpBinding } from "@alienplatform/platform-api/models"; - -let value: DeploymentExtendGcpBinding = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | -| `resource` | [models.DeploymentExtendGcpResource](../models/deploymentextendgcpresource.md) | :heavy_minus_sign: | GCP-specific binding specification | -| `stack` | [models.DeploymentExtendGcpStack](../models/deploymentextendgcpstack.md) | :heavy_minus_sign: | GCP-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentextendgcpgrant.md b/client-sdks/platform/typescript/docs/models/deploymentextendgcpgrant.md deleted file mode 100644 index 4db5da902..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentextendgcpgrant.md +++ /dev/null @@ -1,21 +0,0 @@ -# DeploymentExtendGcpGrant - -Grant permissions for a specific cloud platform - -## Example Usage - -```typescript -import { DeploymentExtendGcpGrant } from "@alienplatform/platform-api/models"; - -let value: DeploymentExtendGcpGrant = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | -| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | -| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | -| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | -| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentextendgcpresource.md b/client-sdks/platform/typescript/docs/models/deploymentextendgcpresource.md deleted file mode 100644 index 0fd3a8bf8..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentextendgcpresource.md +++ /dev/null @@ -1,20 +0,0 @@ -# DeploymentExtendGcpResource - -GCP-specific binding specification - -## Example Usage - -```typescript -import { DeploymentExtendGcpResource } from "@alienplatform/platform-api/models"; - -let value: DeploymentExtendGcpResource = { - scope: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ----------------------------------------------- | ----------------------------------------------- | ----------------------------------------------- | ----------------------------------------------- | -| `condition` | *models.DeploymentExtendResourceConditionUnion* | :heavy_minus_sign: | N/A | -| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentextendgcpstack.md b/client-sdks/platform/typescript/docs/models/deploymentextendgcpstack.md deleted file mode 100644 index 00d11ec22..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentextendgcpstack.md +++ /dev/null @@ -1,20 +0,0 @@ -# DeploymentExtendGcpStack - -GCP-specific binding specification - -## Example Usage - -```typescript -import { DeploymentExtendGcpStack } from "@alienplatform/platform-api/models"; - -let value: DeploymentExtendGcpStack = { - scope: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -| `condition` | *models.DeploymentExtendStackConditionUnion* | :heavy_minus_sign: | N/A | -| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentextendplatforms.md b/client-sdks/platform/typescript/docs/models/deploymentextendplatforms.md deleted file mode 100644 index 8aac8606b..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentextendplatforms.md +++ /dev/null @@ -1,19 +0,0 @@ -# DeploymentExtendPlatforms - -Platform-specific permission configurations - -## Example Usage - -```typescript -import { DeploymentExtendPlatforms } from "@alienplatform/platform-api/models"; - -let value: DeploymentExtendPlatforms = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -| `aws` | [models.DeploymentExtendAw](../models/deploymentextendaw.md)[] | :heavy_minus_sign: | AWS permission configurations | -| `azure` | [models.DeploymentExtendAzure](../models/deploymentextendazure.md)[] | :heavy_minus_sign: | Azure permission configurations | -| `gcp` | [models.DeploymentExtendGcp](../models/deploymentextendgcp.md)[] | :heavy_minus_sign: | GCP permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentextendresourceconditionunion.md b/client-sdks/platform/typescript/docs/models/deploymentextendresourceconditionunion.md deleted file mode 100644 index 61e6d0a04..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentextendresourceconditionunion.md +++ /dev/null @@ -1,20 +0,0 @@ -# DeploymentExtendResourceConditionUnion - - -## Supported Types - -### `models.DeploymentExtendConditionResource` - -```typescript -const value: models.DeploymentExtendConditionResource = { - expression: "", - title: "", -}; -``` - -### `any` - -```typescript -const value: any = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/deploymentextendstackconditionunion.md b/client-sdks/platform/typescript/docs/models/deploymentextendstackconditionunion.md deleted file mode 100644 index 6d62bbceb..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentextendstackconditionunion.md +++ /dev/null @@ -1,20 +0,0 @@ -# DeploymentExtendStackConditionUnion - - -## Supported Types - -### `models.DeploymentExtendConditionStack` - -```typescript -const value: models.DeploymentExtendConditionStack = { - expression: "", - title: "", -}; -``` - -### `any` - -```typescript -const value: any = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/deploymentextendunion.md b/client-sdks/platform/typescript/docs/models/deploymentextendunion.md deleted file mode 100644 index 6cfe6e132..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentextendunion.md +++ /dev/null @@ -1,23 +0,0 @@ -# DeploymentExtendUnion - -Reference to a permission set - either by name or inline definition - - -## Supported Types - -### `models.DeploymentExtend` - -```typescript -const value: models.DeploymentExtend = { - description: "burdensome smog miserably lamp whitewash carouse irk", - id: "", - platforms: {}, -}; -``` - -### `string` - -```typescript -const value: string = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/deploymentfailuredomains1.md b/client-sdks/platform/typescript/docs/models/deploymentfailuredomains1.md new file mode 100644 index 000000000..3ce3b1bbb --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentfailuredomains1.md @@ -0,0 +1,20 @@ +# DeploymentFailureDomains1 + +Failure-domain policy selected for a compute pool. + +## Example Usage + +```typescript +import { DeploymentFailureDomains1 } from "@alienplatform/platform-api/models"; + +let value: DeploymentFailureDomains1 = { + spread: 551861, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `selectedFailureDomains` | *string*[] | :heavy_minus_sign: | Concrete provider domains selected during setup.
Empty delegates deterministic selection to the provider setup implementation. | +| `spread` | *number* | :heavy_check_mark: | Number of distinct failure domains across which new stateful replicas may be spread. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentfailuredomains2.md b/client-sdks/platform/typescript/docs/models/deploymentfailuredomains2.md new file mode 100644 index 000000000..694f8fb55 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentfailuredomains2.md @@ -0,0 +1,20 @@ +# DeploymentFailureDomains2 + +Failure-domain policy selected for a compute pool. + +## Example Usage + +```typescript +import { DeploymentFailureDomains2 } from "@alienplatform/platform-api/models"; + +let value: DeploymentFailureDomains2 = { + spread: 203107, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `selectedFailureDomains` | *string*[] | :heavy_minus_sign: | Concrete provider domains selected during setup.
Empty delegates deterministic selection to the provider setup implementation. | +| `spread` | *number* | :heavy_check_mark: | Number of distinct failure domains across which new stateful replicas may be spread. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentfailuredomainsunion1.md b/client-sdks/platform/typescript/docs/models/deploymentfailuredomainsunion1.md new file mode 100644 index 000000000..e5280586d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentfailuredomainsunion1.md @@ -0,0 +1,19 @@ +# DeploymentFailureDomainsUnion1 + + +## Supported Types + +### `models.DeploymentFailureDomains1` + +```typescript +const value: models.DeploymentFailureDomains1 = { + spread: 551861, +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentfailuredomainsunion2.md b/client-sdks/platform/typescript/docs/models/deploymentfailuredomainsunion2.md new file mode 100644 index 000000000..ef4e101b7 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentfailuredomainsunion2.md @@ -0,0 +1,19 @@ +# DeploymentFailureDomainsUnion2 + + +## Supported Types + +### `models.DeploymentFailureDomains2` + +```typescript +const value: models.DeploymentFailureDomains2 = { + spread: 203107, +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentgroupinfo.md b/client-sdks/platform/typescript/docs/models/deploymentgroupinfo.md index 31f5d00be..2255aaa2d 100644 --- a/client-sdks/platform/typescript/docs/models/deploymentgroupinfo.md +++ b/client-sdks/platform/typescript/docs/models/deploymentgroupinfo.md @@ -8,12 +8,14 @@ import { DeploymentGroupInfo } from "@alienplatform/platform-api/models"; let value: DeploymentGroupInfo = { id: "dg_r27ict8c7vcgsumpj90ackf7b", name: "prod-us-east-1", + externalId: "ext_example_01", }; ``` ## Fields -| Field | Type | Required | Description | Example | -| ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | -| `id` | *string* | :heavy_check_mark: | Unique identifier for the deployment group. | dg_r27ict8c7vcgsumpj90ackf7b | -| `name` | *string* | :heavy_check_mark: | Deployment group name. | prod-us-east-1 | \ No newline at end of file +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the deployment group. | dg_r27ict8c7vcgsumpj90ackf7b | +| `name` | *string* | :heavy_check_mark: | Deployment group name. | prod-us-east-1 | +| `externalId` | *string* | :heavy_check_mark: | Case-sensitive, URL- and header-safe identifier from the integrating application. | ext_example_01 | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentinfo.md b/client-sdks/platform/typescript/docs/models/deploymentinfo.md index 953441236..481945c23 100644 --- a/client-sdks/platform/typescript/docs/models/deploymentinfo.md +++ b/client-sdks/platform/typescript/docs/models/deploymentinfo.md @@ -38,6 +38,50 @@ let value: DeploymentInfo = { "", ], }, + modelAvailabilitySources: [], + setupItems: [ + { + item: "registry", + source: { + type: "built-in", + definitionId: "customer-registry", + version: "", + sourceReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", + }, + required: true, + status: "not-started", + deploymentIds: [ + "", + "", + "", + ], + }, + ], + setupConfig: { + metadata: { + "key": "", + "key1": "", + }, + policy: { + allowedPlatforms: [], + allowedSetupMethods: [ + "google-oauth", + ], + }, + environmentVariables: [], + items: [ + { + item: "deployment", + source: { + type: "built-in", + definitionId: "customer-ai", + version: "", + sourceReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", + }, + required: false, + }, + ], + }, }; ``` @@ -53,5 +97,7 @@ let value: DeploymentInfo = { | `packages` | [models.Packages](../models/packages.md) | :heavy_check_mark: | N/A | | `installContext` | [models.DeploymentInfoInstallContext](../models/deploymentinfoinstallcontext.md) | :heavy_check_mark: | N/A | | `supportedRegions` | [models.SupportedCloudRegions](../models/supportedcloudregions.md) | :heavy_check_mark: | N/A | +| `modelAvailabilitySources` | [models.ModelAvailabilitySource](../models/modelavailabilitysource.md)[] | :heavy_check_mark: | N/A | +| `setupItems` | [models.SetupItemStatus](../models/setupitemstatus.md)[] | :heavy_minus_sign: | N/A | | `setupConfig` | [models.DeploymentInfoSetupConfig](../models/deploymentinfosetupconfig.md) | :heavy_minus_sign: | N/A | | `readiness` | [models.Readiness](../models/readiness.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentinfoaccesstest.md b/client-sdks/platform/typescript/docs/models/deploymentinfoaccesstest.md new file mode 100644 index 000000000..cb30474ea --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentinfoaccesstest.md @@ -0,0 +1,15 @@ +# DeploymentInfoAccessTest + +## Example Usage + +```typescript +import { DeploymentInfoAccessTest } from "@alienplatform/platform-api/models"; + +let value: DeploymentInfoAccessTest = "verified"; +``` + +## Values + +```typescript +"verified" | "failed" | "not-checked" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentinfoavailability.md b/client-sdks/platform/typescript/docs/models/deploymentinfoavailability.md new file mode 100644 index 000000000..9c1088713 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentinfoavailability.md @@ -0,0 +1,22 @@ +# DeploymentInfoAvailability + +## Example Usage + +```typescript +import { DeploymentInfoAvailability } from "@alienplatform/platform-api/models"; + +let value: DeploymentInfoAvailability = { + catalogRevision: "", + models: [], + source: "gcp-vertex", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | +| `catalogRevision` | *string* | :heavy_check_mark: | N/A | +| `location` | *string* | :heavy_minus_sign: | N/A | +| `models` | [models.DeploymentInfoModel](../models/deploymentinfomodel.md)[] | :heavy_check_mark: | N/A | +| `source` | [models.DeploymentInfoSource](../models/deploymentinfosource.md) | :heavy_check_mark: | Provider control plane used to observe model availability without invoking
a model, spending customer quota, or accepting provider terms. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentinfoblocker.md b/client-sdks/platform/typescript/docs/models/deploymentinfoblocker.md new file mode 100644 index 000000000..f48dfb76d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentinfoblocker.md @@ -0,0 +1,15 @@ +# DeploymentInfoBlocker + +## Example Usage + +```typescript +import { DeploymentInfoBlocker } from "@alienplatform/platform-api/models"; + +let value: DeploymentInfoBlocker = "observation-failed"; +``` + +## Values + +```typescript +"agreement-required" | "entitlement-required" | "model-activation-required" | "deployment-required" | "quota-configuration-required" | "region-unavailable" | "access-denied" | "observation-failed" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentinfoclientapi.md b/client-sdks/platform/typescript/docs/models/deploymentinfoclientapi.md new file mode 100644 index 000000000..0fdff6e9a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentinfoclientapi.md @@ -0,0 +1,17 @@ +# DeploymentInfoClientApi + +A public API accepted from an application client. + +## Example Usage + +```typescript +import { DeploymentInfoClientApi } from "@alienplatform/platform-api/models"; + +let value: DeploymentInfoClientApi = "open-ai-responses"; +``` + +## Values + +```typescript +"open-ai-chat-completions" | "open-ai-responses" | "anthropic-messages" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentinfomodel.md b/client-sdks/platform/typescript/docs/models/deploymentinfomodel.md new file mode 100644 index 000000000..a5eb855c9 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentinfomodel.md @@ -0,0 +1,29 @@ +# DeploymentInfoModel + +## Example Usage + +```typescript +import { DeploymentInfoModel } from "@alienplatform/platform-api/models"; + +let value: DeploymentInfoModel = { + accessTest: "verified", + availability: "available", + blockers: [ + "model-activation-required", + ], + clientApis: [], + publicModelId: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `accessTest` | [models.DeploymentInfoAccessTest](../models/deploymentinfoaccesstest.md) | :heavy_check_mark: | N/A | +| `availability` | [models.DeploymentInfoModelAvailability](../models/deploymentinfomodelavailability.md) | :heavy_check_mark: | N/A | +| `blockers` | [models.DeploymentInfoBlocker](../models/deploymentinfoblocker.md)[] | :heavy_check_mark: | N/A | +| `clientApis` | [models.DeploymentInfoClientApi](../models/deploymentinfoclientapi.md)[] | :heavy_check_mark: | N/A | +| `errorCode` | *string* | :heavy_minus_sign: | N/A | +| `publicModelId` | *string* | :heavy_check_mark: | N/A | +| `testedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentinfomodelavailability.md b/client-sdks/platform/typescript/docs/models/deploymentinfomodelavailability.md new file mode 100644 index 000000000..5f8a9f1c4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentinfomodelavailability.md @@ -0,0 +1,15 @@ +# DeploymentInfoModelAvailability + +## Example Usage + +```typescript +import { DeploymentInfoModelAvailability } from "@alienplatform/platform-api/models"; + +let value: DeploymentInfoModelAvailability = "available"; +``` + +## Values + +```typescript +"available" | "blocked" | "unknown" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentinfosetupconfig.md b/client-sdks/platform/typescript/docs/models/deploymentinfosetupconfig.md index f99e61130..ffa8007d4 100644 --- a/client-sdks/platform/typescript/docs/models/deploymentinfosetupconfig.md +++ b/client-sdks/platform/typescript/docs/models/deploymentinfosetupconfig.md @@ -12,12 +12,14 @@ let value: DeploymentInfoSetupConfig = { }, policy: { allowedPlatforms: [], - allowedSetupMethods: [], + allowedSetupMethods: [ + "google-oauth", + ], }, environmentVariables: [], items: [ { - item: "alien-stack", + item: "deployment", source: { type: "built-in", definitionId: "customer-ai", diff --git a/client-sdks/platform/typescript/docs/models/deploymentinfosetupconfigallowedprovider.md b/client-sdks/platform/typescript/docs/models/deploymentinfosetupconfigallowedprovider.md index 4aa8fded1..098d979b3 100644 --- a/client-sdks/platform/typescript/docs/models/deploymentinfosetupconfigallowedprovider.md +++ b/client-sdks/platform/typescript/docs/models/deploymentinfosetupconfigallowedprovider.md @@ -5,11 +5,11 @@ ```typescript import { DeploymentInfoSetupConfigAllowedProvider } from "@alienplatform/platform-api/models"; -let value: DeploymentInfoSetupConfigAllowedProvider = "anthropic"; +let value: DeploymentInfoSetupConfigAllowedProvider = "openai"; ``` ## Values ```typescript -"aws-bedrock" | "gcp-vertex" | "azure-foundry" | "anthropic" +"aws-bedrock" | "gcp-vertex" | "azure-foundry" | "anthropic" | "databricks" | "openai" ``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentinfosetupconfigdefinitionid.md b/client-sdks/platform/typescript/docs/models/deploymentinfosetupconfigdefinitionid.md index b00a7b05a..6211dd40c 100644 --- a/client-sdks/platform/typescript/docs/models/deploymentinfosetupconfigdefinitionid.md +++ b/client-sdks/platform/typescript/docs/models/deploymentinfosetupconfigdefinitionid.md @@ -5,11 +5,11 @@ ```typescript import { DeploymentInfoSetupConfigDefinitionId } from "@alienplatform/platform-api/models"; -let value: DeploymentInfoSetupConfigDefinitionId = "customer-ai"; +let value: DeploymentInfoSetupConfigDefinitionId = "customer-key"; ``` ## Values ```typescript -"customer-ai" | "customer-key" +"customer-ai" | "customer-key" | "customer-storage" | "customer-registry" ``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentinfosetupconfigitem.md b/client-sdks/platform/typescript/docs/models/deploymentinfosetupconfigitem.md index 0bfe206e1..bdfe3c8cd 100644 --- a/client-sdks/platform/typescript/docs/models/deploymentinfosetupconfigitem.md +++ b/client-sdks/platform/typescript/docs/models/deploymentinfosetupconfigitem.md @@ -6,10 +6,10 @@ import { DeploymentInfoSetupConfigItem } from "@alienplatform/platform-api/models"; let value: DeploymentInfoSetupConfigItem = { - item: "models", + item: "keys", source: { type: "built-in", - definitionId: "customer-key", + definitionId: "customer-registry", version: "", sourceReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", }, diff --git a/client-sdks/platform/typescript/docs/models/deploymentinfosetupconfigitemenum.md b/client-sdks/platform/typescript/docs/models/deploymentinfosetupconfigitemenum.md index 88388a301..9000311b2 100644 --- a/client-sdks/platform/typescript/docs/models/deploymentinfosetupconfigitemenum.md +++ b/client-sdks/platform/typescript/docs/models/deploymentinfosetupconfigitemenum.md @@ -5,11 +5,11 @@ ```typescript import { DeploymentInfoSetupConfigItemEnum } from "@alienplatform/platform-api/models"; -let value: DeploymentInfoSetupConfigItemEnum = "alien-stack"; +let value: DeploymentInfoSetupConfigItemEnum = "deployment"; ``` ## Values ```typescript -"alien-stack" | "models" | "keys" +"deployment" | "models" | "keys" | "bucket" | "registry" ``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentinfosetupconfigsourceapplicationrelease.md b/client-sdks/platform/typescript/docs/models/deploymentinfosetupconfigsourceapplicationrelease.md deleted file mode 100644 index c1e070dfa..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentinfosetupconfigsourceapplicationrelease.md +++ /dev/null @@ -1,22 +0,0 @@ -# DeploymentInfoSetupConfigSourceApplicationRelease - -## Example Usage - -```typescript -import { DeploymentInfoSetupConfigSourceApplicationRelease } from "@alienplatform/platform-api/models"; - -let value: DeploymentInfoSetupConfigSourceApplicationRelease = { - type: "application-release", - releaseChannel: "", - releaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", -}; -``` - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | -| `type` | *"application-release"* | :heavy_check_mark: | N/A | | -| `releaseChannel` | *string* | :heavy_check_mark: | N/A | | -| `releaseId` | *string* | :heavy_check_mark: | Unique identifier for the release. | rel_WbhQgksrawSKIpEN0NAssHX9 | -| `resourceId` | *string* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentinfosetupconfigsourcebuiltin.md b/client-sdks/platform/typescript/docs/models/deploymentinfosetupconfigsourcebuiltin.md index 861a9c91a..c76f7a44b 100644 --- a/client-sdks/platform/typescript/docs/models/deploymentinfosetupconfigsourcebuiltin.md +++ b/client-sdks/platform/typescript/docs/models/deploymentinfosetupconfigsourcebuiltin.md @@ -7,7 +7,7 @@ import { DeploymentInfoSetupConfigSourceBuiltIn } from "@alienplatform/platform- let value: DeploymentInfoSetupConfigSourceBuiltIn = { type: "built-in", - definitionId: "customer-key", + definitionId: "customer-storage", version: "", sourceReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", }; diff --git a/client-sdks/platform/typescript/docs/models/deploymentinfosetupconfigsourceprojectrelease.md b/client-sdks/platform/typescript/docs/models/deploymentinfosetupconfigsourceprojectrelease.md new file mode 100644 index 000000000..89ea28741 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentinfosetupconfigsourceprojectrelease.md @@ -0,0 +1,22 @@ +# DeploymentInfoSetupConfigSourceProjectRelease + +## Example Usage + +```typescript +import { DeploymentInfoSetupConfigSourceProjectRelease } from "@alienplatform/platform-api/models"; + +let value: DeploymentInfoSetupConfigSourceProjectRelease = { + type: "project-release", + releaseChannel: "", + releaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | +| `type` | *"project-release"* | :heavy_check_mark: | N/A | | +| `releaseChannel` | *string* | :heavy_check_mark: | N/A | | +| `releaseId` | *string* | :heavy_check_mark: | Unique identifier for the release. | rel_WbhQgksrawSKIpEN0NAssHX9 | +| `resourceId` | *string* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentinfosetupconfigsourceunion.md b/client-sdks/platform/typescript/docs/models/deploymentinfosetupconfigsourceunion.md index cc2754452..6e33f42d0 100644 --- a/client-sdks/platform/typescript/docs/models/deploymentinfosetupconfigsourceunion.md +++ b/client-sdks/platform/typescript/docs/models/deploymentinfosetupconfigsourceunion.md @@ -3,11 +3,11 @@ ## Supported Types -### `models.DeploymentInfoSetupConfigSourceApplicationRelease` +### `models.DeploymentInfoSetupConfigSourceProjectRelease` ```typescript -const value: models.DeploymentInfoSetupConfigSourceApplicationRelease = { - type: "application-release", +const value: models.DeploymentInfoSetupConfigSourceProjectRelease = { + type: "project-release", releaseChannel: "", releaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", }; @@ -18,7 +18,7 @@ const value: models.DeploymentInfoSetupConfigSourceApplicationRelease = { ```typescript const value: models.DeploymentInfoSetupConfigSourceBuiltIn = { type: "built-in", - definitionId: "customer-key", + definitionId: "customer-storage", version: "", sourceReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", }; diff --git a/client-sdks/platform/typescript/docs/models/deploymentinfosource.md b/client-sdks/platform/typescript/docs/models/deploymentinfosource.md new file mode 100644 index 000000000..c8fd4e1b2 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentinfosource.md @@ -0,0 +1,18 @@ +# DeploymentInfoSource + +Provider control plane used to observe model availability without invoking +a model, spending customer quota, or accepting provider terms. + +## Example Usage + +```typescript +import { DeploymentInfoSource } from "@alienplatform/platform-api/models"; + +let value: DeploymentInfoSource = "aws-bedrock"; +``` + +## Values + +```typescript +"aws-bedrock" | "gcp-vertex" | "azure-foundry" | "anthropic" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentinitialsetupauthority.md b/client-sdks/platform/typescript/docs/models/deploymentinitialsetupauthority.md new file mode 100644 index 000000000..4c3b9137a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentinitialsetupauthority.md @@ -0,0 +1,17 @@ +# DeploymentInitialSetupAuthority + +Actor that owns structural work during the initial setup phase. + +## Example Usage + +```typescript +import { DeploymentInitialSetupAuthority } from "@alienplatform/platform-api/models"; + +let value: DeploymentInitialSetupAuthority = "directSetup"; +``` + +## Values + +```typescript +"importedHandoff" | "directSetup" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentinput.md b/client-sdks/platform/typescript/docs/models/deploymentinput.md deleted file mode 100644 index f7bb6e136..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentinput.md +++ /dev/null @@ -1,34 +0,0 @@ -# DeploymentInput - -Stack input definition serialized into a release stack. - -## Example Usage - -```typescript -import { DeploymentInput } from "@alienplatform/platform-api/models"; - -let value: DeploymentInput = { - description: "reasoning nice once left sit round aw", - id: "", - kind: "string", - label: "", - providedBy: [], - required: true, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | -| `default` | *models.DeploymentDefaultUnion* | :heavy_minus_sign: | N/A | -| `description` | *string* | :heavy_check_mark: | Human-facing helper text. | -| `env` | [models.DeploymentEnv](../models/deploymentenv.md)[] | :heavy_minus_sign: | Runtime env-var mappings for v1 input resolution. | -| `id` | *string* | :heavy_check_mark: | Stable input ID used by CLI/API calls. | -| `kind` | [models.DeploymentKind](../models/deploymentkind.md) | :heavy_check_mark: | Primitive stack input kind. | -| `label` | *string* | :heavy_check_mark: | Human-facing field label. | -| `placeholder` | *string* | :heavy_minus_sign: | Example placeholder shown in UI. | -| `platforms` | [models.DeploymentPreparedStackPlatform](../models/deploymentpreparedstackplatform.md)[] | :heavy_minus_sign: | Platforms where this input applies. | -| `providedBy` | [models.DeploymentProvidedBy](../models/deploymentprovidedby.md)[] | :heavy_check_mark: | Who can provide this value. | -| `required` | *boolean* | :heavy_check_mark: | Whether a resolved value is required before deployment can proceed. | -| `validation` | *models.DeploymentValidationUnion* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentkind.md b/client-sdks/platform/typescript/docs/models/deploymentkind.md deleted file mode 100644 index 8f015661a..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentkind.md +++ /dev/null @@ -1,17 +0,0 @@ -# DeploymentKind - -Primitive stack input kind. - -## Example Usage - -```typescript -import { DeploymentKind } from "@alienplatform/platform-api/models"; - -let value: DeploymentKind = "string"; -``` - -## Values - -```typescript -"string" | "secret" | "number" | "integer" | "boolean" | "enum" | "stringList" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentlinksetupresponse.md b/client-sdks/platform/typescript/docs/models/deploymentlinksetupresponse.md index b967a180e..5172eaf9e 100644 --- a/client-sdks/platform/typescript/docs/models/deploymentlinksetupresponse.md +++ b/client-sdks/platform/typescript/docs/models/deploymentlinksetupresponse.md @@ -13,10 +13,11 @@ let value: DeploymentLinkSetupResponse = { }, supportedPlatforms: [], setupItems: [ - "keys", + "registry", ], visiblePackageTypes: [], visibleSetupMethods: [], + setupPackagesStatus: "preparing", }; ``` @@ -28,4 +29,5 @@ let value: DeploymentLinkSetupResponse = { | `supportedPlatforms` | [models.DeploymentLinkSetupResponseSupportedPlatform](../models/deploymentlinksetupresponsesupportedplatform.md)[] | :heavy_check_mark: | N/A | | `setupItems` | [models.DeploymentLinkSetupResponseSetupItem](../models/deploymentlinksetupresponsesetupitem.md)[] | :heavy_check_mark: | N/A | | `visiblePackageTypes` | [models.VisiblePackageType](../models/visiblepackagetype.md)[] | :heavy_check_mark: | N/A | -| `visibleSetupMethods` | [models.DeploymentSetupMethod](../models/deploymentsetupmethod.md)[] | :heavy_check_mark: | N/A | \ No newline at end of file +| `visibleSetupMethods` | [models.DeploymentSetupMethod](../models/deploymentsetupmethod.md)[] | :heavy_check_mark: | N/A | +| `setupPackagesStatus` | [models.SetupPackagesStatus](../models/setuppackagesstatus.md) | :heavy_check_mark: | Whether at least one complete automated setup package is ready across all selected setup items. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentlinksetupresponsesetupitem.md b/client-sdks/platform/typescript/docs/models/deploymentlinksetupresponsesetupitem.md index 39bd8d381..e9d6f17bf 100644 --- a/client-sdks/platform/typescript/docs/models/deploymentlinksetupresponsesetupitem.md +++ b/client-sdks/platform/typescript/docs/models/deploymentlinksetupresponsesetupitem.md @@ -5,11 +5,11 @@ ```typescript import { DeploymentLinkSetupResponseSetupItem } from "@alienplatform/platform-api/models"; -let value: DeploymentLinkSetupResponseSetupItem = "alien-stack"; +let value: DeploymentLinkSetupResponseSetupItem = "deployment"; ``` ## Values ```typescript -"alien-stack" | "models" | "keys" +"deployment" | "models" | "keys" | "bucket" | "registry" ``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentlinksetupresponsestack.md b/client-sdks/platform/typescript/docs/models/deploymentlinksetupresponsestack.md new file mode 100644 index 000000000..b0395893a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentlinksetupresponsestack.md @@ -0,0 +1,21 @@ +# DeploymentLinkSetupResponseStack + +## Example Usage + +```typescript +import { DeploymentLinkSetupResponseStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentLinkSetupResponseStack = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `aws` | *any* | :heavy_minus_sign: | N/A | +| `gcp` | *any* | :heavy_minus_sign: | N/A | +| `azure` | *any* | :heavy_minus_sign: | N/A | +| `kubernetes` | *any* | :heavy_minus_sign: | N/A | +| `machines` | *any* | :heavy_minus_sign: | N/A | +| `local` | *any* | :heavy_minus_sign: | N/A | +| `test` | *any* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentlistitemresponse.md b/client-sdks/platform/typescript/docs/models/deploymentlistitemresponse.md index 27b34315d..2592c4bbc 100644 --- a/client-sdks/platform/typescript/docs/models/deploymentlistitemresponse.md +++ b/client-sdks/platform/typescript/docs/models/deploymentlistitemresponse.md @@ -13,35 +13,26 @@ let value: DeploymentListItemResponse = { platform: "test", deploymentProtocolVersion: 850514, deploymentGroupId: "dg_r27ict8c7vcgsumpj90ackf7b", + purpose: "encryption", currentReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", desiredReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", pinnedReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", - retryRequested: true, - createdAt: new Date("2026-01-02T04:46:33.633Z"), - updatedAt: new Date("2026-09-13T22:49:00.377Z"), + releaseChannel: "", + retryRequested: false, + createdAt: new Date("2026-09-13T22:49:00.377Z"), + updatedAt: new Date("2026-09-29T18:21:24.133Z"), managerId: "mgr_enxscjrqiiu2lrc672hwwuc5", workspaceId: "ws_It13CUaGEhLLAB87simX0", release: { id: "rel_WbhQgksrawSKIpEN0NAssHX9", version: "", - gitMetadata: { - commitSha: "dc36199b2234c6586ebe05ec94078a895c707e29", - commitMessage: - "add method to measure Interaction to Next Paint (INP) (#36490)", - commitRef: "main", - commitDate: new Date("2026-03-16T12:00:00Z"), - dirty: true, - remoteUrl: "https://github.com/alienplatform/alien", - commitAuthorName: "John Doe", - commitAuthorEmail: "john@example.com", - commitAuthorLogin: "johndoe", - commitAuthorAvatarUrl: "https://github.com/johndoe.png", - }, - createdAt: new Date("2024-06-27T06:57:01.451Z"), + gitMetadata: null, + createdAt: new Date("2024-11-28T10:04:33.372Z"), }, deploymentGroup: { id: "dg_r27ict8c7vcgsumpj90ackf7b", name: "prod-us-east-1", + externalId: "ext_example_01", }, project: { id: "prj_mcytp6z3j91f7tn5ryqsfwtr", @@ -61,10 +52,12 @@ let value: DeploymentListItemResponse = { | `platform` | [models.DeploymentListItemResponsePlatform](../models/deploymentlistitemresponseplatform.md) | :heavy_check_mark: | Target platform for the deployment | | | `deploymentProtocolVersion` | *number* | :heavy_check_mark: | DeploymentState protocol version owned by the runtime/manager | | | `deploymentGroupId` | *string* | :heavy_check_mark: | ID of deployment group this deployment belongs to | dg_r27ict8c7vcgsumpj90ackf7b | +| `purpose` | [models.DeploymentPurpose](../models/deploymentpurpose.md) | :heavy_check_mark: | Operational purpose of this deployment within its customer environment. | | | `environmentInfo` | *models.DeploymentListItemResponseEnvironmentInfoUnion* | :heavy_minus_sign: | Cloud environment information | | | `currentReleaseId` | *string* | :heavy_minus_sign: | ID of the currently deployed release | rel_WbhQgksrawSKIpEN0NAssHX9 | | `desiredReleaseId` | *string* | :heavy_minus_sign: | ID of the desired release | rel_WbhQgksrawSKIpEN0NAssHX9 | | `pinnedReleaseId` | *string* | :heavy_minus_sign: | ID of the pinned release | rel_WbhQgksrawSKIpEN0NAssHX9 | +| `releaseChannel` | *string* | :heavy_check_mark: | N/A | | | `importSource` | [models.DeploymentListItemResponseImportSource](../models/deploymentlistitemresponseimportsource.md) | :heavy_minus_sign: | Setup source that imported this deployment | | | `setupMethod` | [models.DeploymentListItemResponseSetupMethod](../models/deploymentlistitemresponsesetupmethod.md) | :heavy_minus_sign: | Setup method that created the deployment record. | | | `setupMetadata` | Record | :heavy_minus_sign: | Setup method metadata needed to guide privileged teardown. | | diff --git a/client-sdks/platform/typescript/docs/models/deploymentmanagement1.md b/client-sdks/platform/typescript/docs/models/deploymentmanagement1.md deleted file mode 100644 index 4982ac804..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentmanagement1.md +++ /dev/null @@ -1,19 +0,0 @@ -# DeploymentManagement1 - -## Example Usage - -```typescript -import { DeploymentManagement1 } from "@alienplatform/platform-api/models"; - -let value: DeploymentManagement1 = { - extend: { - "key": [], - }, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | -| `extend` | Record | :heavy_check_mark: | Permission profile that maps resources to permission sets
Key can be "*" for all resources or resource name for specific resource | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentmanagement2.md b/client-sdks/platform/typescript/docs/models/deploymentmanagement2.md deleted file mode 100644 index e576c40e5..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentmanagement2.md +++ /dev/null @@ -1,21 +0,0 @@ -# DeploymentManagement2 - -## Example Usage - -```typescript -import { DeploymentManagement2 } from "@alienplatform/platform-api/models"; - -let value: DeploymentManagement2 = { - override: { - "key": [ - "", - ], - }, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | -| `override` | Record | :heavy_check_mark: | Permission profile that maps resources to permission sets
Key can be "*" for all resources or resource name for specific resource | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentmanagementenum.md b/client-sdks/platform/typescript/docs/models/deploymentmanagementenum.md deleted file mode 100644 index 66d8610ae..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentmanagementenum.md +++ /dev/null @@ -1,15 +0,0 @@ -# DeploymentManagementEnum - -## Example Usage - -```typescript -import { DeploymentManagementEnum } from "@alienplatform/platform-api/models"; - -let value: DeploymentManagementEnum = "auto"; -``` - -## Values - -```typescript -"auto" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentmanagementunion.md b/client-sdks/platform/typescript/docs/models/deploymentmanagementunion.md deleted file mode 100644 index 5d208e6c2..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentmanagementunion.md +++ /dev/null @@ -1,35 +0,0 @@ -# DeploymentManagementUnion - -Management permissions configuration for stack management access - - -## Supported Types - -### `models.DeploymentManagement1` - -```typescript -const value: models.DeploymentManagement1 = { - extend: { - "key": [], - }, -}; -``` - -### `models.DeploymentManagement2` - -```typescript -const value: models.DeploymentManagement2 = { - override: { - "key": [ - "", - ], - }, -}; -``` - -### `models.DeploymentManagementEnum` - -```typescript -const value: models.DeploymentManagementEnum = "auto"; -``` - diff --git a/client-sdks/platform/typescript/docs/models/deploymentoverride.md b/client-sdks/platform/typescript/docs/models/deploymentoverride.md deleted file mode 100644 index e6b372d44..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentoverride.md +++ /dev/null @@ -1,23 +0,0 @@ -# DeploymentOverride - -A permission set that can be applied across different cloud platforms - -## Example Usage - -```typescript -import { DeploymentOverride } from "@alienplatform/platform-api/models"; - -let value: DeploymentOverride = { - description: "technician um however academics", - id: "", - platforms: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | -| `description` | *string* | :heavy_check_mark: | Human-readable description of what this permission set allows | -| `id` | *string* | :heavy_check_mark: | Unique identifier for the permission set (e.g., "storage/data-read") | -| `platforms` | [models.DeploymentOverridePlatforms](../models/deploymentoverrideplatforms.md) | :heavy_check_mark: | Platform-specific permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentoverrideaw.md b/client-sdks/platform/typescript/docs/models/deploymentoverrideaw.md deleted file mode 100644 index 4d2e2153a..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentoverrideaw.md +++ /dev/null @@ -1,24 +0,0 @@ -# DeploymentOverrideAw - -AWS-specific platform permission configuration - -## Example Usage - -```typescript -import { DeploymentOverrideAw } from "@alienplatform/platform-api/models"; - -let value: DeploymentOverrideAw = { - binding: {}, - grant: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | -| `binding` | [models.DeploymentOverrideAwBinding](../models/deploymentoverrideawbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | -| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | -| `effect` | [models.DeploymentOverrideEffect](../models/deploymentoverrideeffect.md) | :heavy_minus_sign: | IAM effect. Defaults to Allow. | -| `grant` | [models.DeploymentOverrideAwGrant](../models/deploymentoverrideawgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | -| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentoverrideawbinding.md b/client-sdks/platform/typescript/docs/models/deploymentoverrideawbinding.md deleted file mode 100644 index 0d3e9d406..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentoverrideawbinding.md +++ /dev/null @@ -1,18 +0,0 @@ -# DeploymentOverrideAwBinding - -Generic binding configuration for permissions - -## Example Usage - -```typescript -import { DeploymentOverrideAwBinding } from "@alienplatform/platform-api/models"; - -let value: DeploymentOverrideAwBinding = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -| `resource` | [models.DeploymentOverrideAwResource](../models/deploymentoverrideawresource.md) | :heavy_minus_sign: | AWS-specific binding specification | -| `stack` | [models.DeploymentOverrideAwStack](../models/deploymentoverrideawstack.md) | :heavy_minus_sign: | AWS-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentoverrideawgrant.md b/client-sdks/platform/typescript/docs/models/deploymentoverrideawgrant.md deleted file mode 100644 index 8246edd30..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentoverrideawgrant.md +++ /dev/null @@ -1,21 +0,0 @@ -# DeploymentOverrideAwGrant - -Grant permissions for a specific cloud platform - -## Example Usage - -```typescript -import { DeploymentOverrideAwGrant } from "@alienplatform/platform-api/models"; - -let value: DeploymentOverrideAwGrant = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | -| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | -| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | -| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | -| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentoverrideawresource.md b/client-sdks/platform/typescript/docs/models/deploymentoverrideawresource.md deleted file mode 100644 index d55b19ded..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentoverrideawresource.md +++ /dev/null @@ -1,23 +0,0 @@ -# DeploymentOverrideAwResource - -AWS-specific binding specification - -## Example Usage - -```typescript -import { DeploymentOverrideAwResource } from "@alienplatform/platform-api/models"; - -let value: DeploymentOverrideAwResource = { - resources: [ - "", - "", - ], -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | -| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentoverrideawstack.md b/client-sdks/platform/typescript/docs/models/deploymentoverrideawstack.md deleted file mode 100644 index 0ced95dcd..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentoverrideawstack.md +++ /dev/null @@ -1,20 +0,0 @@ -# DeploymentOverrideAwStack - -AWS-specific binding specification - -## Example Usage - -```typescript -import { DeploymentOverrideAwStack } from "@alienplatform/platform-api/models"; - -let value: DeploymentOverrideAwStack = { - resources: [], -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | -| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentoverrideazure.md b/client-sdks/platform/typescript/docs/models/deploymentoverrideazure.md deleted file mode 100644 index aa43ffedf..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentoverrideazure.md +++ /dev/null @@ -1,23 +0,0 @@ -# DeploymentOverrideAzure - -Azure-specific platform permission configuration - -## Example Usage - -```typescript -import { DeploymentOverrideAzure } from "@alienplatform/platform-api/models"; - -let value: DeploymentOverrideAzure = { - binding: {}, - grant: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | -| `binding` | [models.DeploymentOverrideAzureBinding](../models/deploymentoverrideazurebinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | -| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | -| `grant` | [models.DeploymentOverrideAzureGrant](../models/deploymentoverrideazuregrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | -| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentoverrideazurebinding.md b/client-sdks/platform/typescript/docs/models/deploymentoverrideazurebinding.md deleted file mode 100644 index 2be51019d..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentoverrideazurebinding.md +++ /dev/null @@ -1,18 +0,0 @@ -# DeploymentOverrideAzureBinding - -Generic binding configuration for permissions - -## Example Usage - -```typescript -import { DeploymentOverrideAzureBinding } from "@alienplatform/platform-api/models"; - -let value: DeploymentOverrideAzureBinding = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -| `resource` | [models.DeploymentOverrideAzureResource](../models/deploymentoverrideazureresource.md) | :heavy_minus_sign: | Azure-specific binding specification | -| `stack` | [models.DeploymentOverrideAzureStack](../models/deploymentoverrideazurestack.md) | :heavy_minus_sign: | Azure-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentoverrideazuregrant.md b/client-sdks/platform/typescript/docs/models/deploymentoverrideazuregrant.md deleted file mode 100644 index 993525682..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentoverrideazuregrant.md +++ /dev/null @@ -1,21 +0,0 @@ -# DeploymentOverrideAzureGrant - -Grant permissions for a specific cloud platform - -## Example Usage - -```typescript -import { DeploymentOverrideAzureGrant } from "@alienplatform/platform-api/models"; - -let value: DeploymentOverrideAzureGrant = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | -| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | -| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | -| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | -| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentoverrideazureresource.md b/client-sdks/platform/typescript/docs/models/deploymentoverrideazureresource.md deleted file mode 100644 index 13355c19c..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentoverrideazureresource.md +++ /dev/null @@ -1,19 +0,0 @@ -# DeploymentOverrideAzureResource - -Azure-specific binding specification - -## Example Usage - -```typescript -import { DeploymentOverrideAzureResource } from "@alienplatform/platform-api/models"; - -let value: DeploymentOverrideAzureResource = { - scope: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentoverrideazurestack.md b/client-sdks/platform/typescript/docs/models/deploymentoverrideazurestack.md deleted file mode 100644 index 229de554b..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentoverrideazurestack.md +++ /dev/null @@ -1,19 +0,0 @@ -# DeploymentOverrideAzureStack - -Azure-specific binding specification - -## Example Usage - -```typescript -import { DeploymentOverrideAzureStack } from "@alienplatform/platform-api/models"; - -let value: DeploymentOverrideAzureStack = { - scope: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentoverrideconditionresource.md b/client-sdks/platform/typescript/docs/models/deploymentoverrideconditionresource.md deleted file mode 100644 index cc755e338..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentoverrideconditionresource.md +++ /dev/null @@ -1,21 +0,0 @@ -# DeploymentOverrideConditionResource - -GCP IAM condition - -## Example Usage - -```typescript -import { DeploymentOverrideConditionResource } from "@alienplatform/platform-api/models"; - -let value: DeploymentOverrideConditionResource = { - expression: "", - title: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `expression` | *string* | :heavy_check_mark: | N/A | -| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentoverrideconditionstack.md b/client-sdks/platform/typescript/docs/models/deploymentoverrideconditionstack.md deleted file mode 100644 index 0c15c4ee7..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentoverrideconditionstack.md +++ /dev/null @@ -1,21 +0,0 @@ -# DeploymentOverrideConditionStack - -GCP IAM condition - -## Example Usage - -```typescript -import { DeploymentOverrideConditionStack } from "@alienplatform/platform-api/models"; - -let value: DeploymentOverrideConditionStack = { - expression: "", - title: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `expression` | *string* | :heavy_check_mark: | N/A | -| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentoverrideeffect.md b/client-sdks/platform/typescript/docs/models/deploymentoverrideeffect.md deleted file mode 100644 index a73e20edd..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentoverrideeffect.md +++ /dev/null @@ -1,17 +0,0 @@ -# DeploymentOverrideEffect - -IAM effect. Defaults to Allow. - -## Example Usage - -```typescript -import { DeploymentOverrideEffect } from "@alienplatform/platform-api/models"; - -let value: DeploymentOverrideEffect = "Allow"; -``` - -## Values - -```typescript -"Allow" | "Deny" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentoverridegcp.md b/client-sdks/platform/typescript/docs/models/deploymentoverridegcp.md deleted file mode 100644 index 29b3d3949..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentoverridegcp.md +++ /dev/null @@ -1,23 +0,0 @@ -# DeploymentOverrideGcp - -GCP-specific platform permission configuration - -## Example Usage - -```typescript -import { DeploymentOverrideGcp } from "@alienplatform/platform-api/models"; - -let value: DeploymentOverrideGcp = { - binding: {}, - grant: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -| `binding` | [models.DeploymentOverrideGcpBinding](../models/deploymentoverridegcpbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | -| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | -| `grant` | [models.DeploymentOverrideGcpGrant](../models/deploymentoverridegcpgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | -| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentoverridegcpbinding.md b/client-sdks/platform/typescript/docs/models/deploymentoverridegcpbinding.md deleted file mode 100644 index 1753dd590..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentoverridegcpbinding.md +++ /dev/null @@ -1,18 +0,0 @@ -# DeploymentOverrideGcpBinding - -Generic binding configuration for permissions - -## Example Usage - -```typescript -import { DeploymentOverrideGcpBinding } from "@alienplatform/platform-api/models"; - -let value: DeploymentOverrideGcpBinding = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | -| `resource` | [models.DeploymentOverrideGcpResource](../models/deploymentoverridegcpresource.md) | :heavy_minus_sign: | GCP-specific binding specification | -| `stack` | [models.DeploymentOverrideGcpStack](../models/deploymentoverridegcpstack.md) | :heavy_minus_sign: | GCP-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentoverridegcpgrant.md b/client-sdks/platform/typescript/docs/models/deploymentoverridegcpgrant.md deleted file mode 100644 index 24b440101..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentoverridegcpgrant.md +++ /dev/null @@ -1,21 +0,0 @@ -# DeploymentOverrideGcpGrant - -Grant permissions for a specific cloud platform - -## Example Usage - -```typescript -import { DeploymentOverrideGcpGrant } from "@alienplatform/platform-api/models"; - -let value: DeploymentOverrideGcpGrant = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | -| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | -| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | -| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | -| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentoverridegcpresource.md b/client-sdks/platform/typescript/docs/models/deploymentoverridegcpresource.md deleted file mode 100644 index 130490517..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentoverridegcpresource.md +++ /dev/null @@ -1,20 +0,0 @@ -# DeploymentOverrideGcpResource - -GCP-specific binding specification - -## Example Usage - -```typescript -import { DeploymentOverrideGcpResource } from "@alienplatform/platform-api/models"; - -let value: DeploymentOverrideGcpResource = { - scope: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | -| `condition` | *models.DeploymentOverrideResourceConditionUnion* | :heavy_minus_sign: | N/A | -| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentoverridegcpstack.md b/client-sdks/platform/typescript/docs/models/deploymentoverridegcpstack.md deleted file mode 100644 index 68e988182..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentoverridegcpstack.md +++ /dev/null @@ -1,20 +0,0 @@ -# DeploymentOverrideGcpStack - -GCP-specific binding specification - -## Example Usage - -```typescript -import { DeploymentOverrideGcpStack } from "@alienplatform/platform-api/models"; - -let value: DeploymentOverrideGcpStack = { - scope: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | -| `condition` | *models.DeploymentOverrideStackConditionUnion* | :heavy_minus_sign: | N/A | -| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentoverrideplatforms.md b/client-sdks/platform/typescript/docs/models/deploymentoverrideplatforms.md deleted file mode 100644 index 255b50186..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentoverrideplatforms.md +++ /dev/null @@ -1,19 +0,0 @@ -# DeploymentOverridePlatforms - -Platform-specific permission configurations - -## Example Usage - -```typescript -import { DeploymentOverridePlatforms } from "@alienplatform/platform-api/models"; - -let value: DeploymentOverridePlatforms = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | -| `aws` | [models.DeploymentOverrideAw](../models/deploymentoverrideaw.md)[] | :heavy_minus_sign: | AWS permission configurations | -| `azure` | [models.DeploymentOverrideAzure](../models/deploymentoverrideazure.md)[] | :heavy_minus_sign: | Azure permission configurations | -| `gcp` | [models.DeploymentOverrideGcp](../models/deploymentoverridegcp.md)[] | :heavy_minus_sign: | GCP permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentoverrideresourceconditionunion.md b/client-sdks/platform/typescript/docs/models/deploymentoverrideresourceconditionunion.md deleted file mode 100644 index 0b79f4d26..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentoverrideresourceconditionunion.md +++ /dev/null @@ -1,20 +0,0 @@ -# DeploymentOverrideResourceConditionUnion - - -## Supported Types - -### `models.DeploymentOverrideConditionResource` - -```typescript -const value: models.DeploymentOverrideConditionResource = { - expression: "", - title: "", -}; -``` - -### `any` - -```typescript -const value: any = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/deploymentoverridestackconditionunion.md b/client-sdks/platform/typescript/docs/models/deploymentoverridestackconditionunion.md deleted file mode 100644 index ece774ad7..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentoverridestackconditionunion.md +++ /dev/null @@ -1,20 +0,0 @@ -# DeploymentOverrideStackConditionUnion - - -## Supported Types - -### `models.DeploymentOverrideConditionStack` - -```typescript -const value: models.DeploymentOverrideConditionStack = { - expression: "", - title: "", -}; -``` - -### `any` - -```typescript -const value: any = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/deploymentoverrideunion.md b/client-sdks/platform/typescript/docs/models/deploymentoverrideunion.md deleted file mode 100644 index b640d8a0a..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentoverrideunion.md +++ /dev/null @@ -1,23 +0,0 @@ -# DeploymentOverrideUnion - -Reference to a permission set - either by name or inline definition - - -## Supported Types - -### `models.DeploymentOverride` - -```typescript -const value: models.DeploymentOverride = { - description: "technician um however academics", - id: "", - platforms: {}, -}; -``` - -### `string` - -```typescript -const value: string = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstack.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstack.md new file mode 100644 index 000000000..8dff1a719 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstack.md @@ -0,0 +1,24 @@ +# DeploymentPendingPreparedStack + +A bag of resources, unaware of any cloud. + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStack = { + id: "", + resources: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the stack | +| `inputs` | [models.DeploymentPendingPreparedStackInput](../models/deploymentpendingpreparedstackinput.md)[] | :heavy_minus_sign: | Input definitions required before setup or deployment can proceed. | +| `permissions` | [models.DeploymentPendingPreparedStackPermissions](../models/deploymentpendingpreparedstackpermissions.md) | :heavy_minus_sign: | Combined permissions configuration that contains both profiles and management | +| `resources` | Record | :heavy_check_mark: | Map of resource IDs to their configurations and lifecycle settings | +| `supportedPlatforms` | [models.DeploymentPendingPreparedStackSupportedPlatform](../models/deploymentpendingpreparedstacksupportedplatform.md)[] | :heavy_minus_sign: | Which platforms this stack supports. When None, all platforms are supported. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackconfig.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackconfig.md new file mode 100644 index 000000000..8b6773e1c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackconfig.md @@ -0,0 +1,22 @@ +# DeploymentPendingPreparedStackConfig + +Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackConfig } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackConfig = { + id: "", + type: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. | +| `type` | *string* | :heavy_check_mark: | Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. | +| `additionalProperties` | Record | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackdefaultboolean.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackdefaultboolean.md new file mode 100644 index 000000000..9c6756146 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackdefaultboolean.md @@ -0,0 +1,19 @@ +# DeploymentPendingPreparedStackDefaultBoolean + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackDefaultBoolean } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackDefaultBoolean = { + type: "boolean", + value: false, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | +| `type` | [models.DeploymentPendingPreparedStackTypeBoolean](../models/deploymentpendingpreparedstacktypeboolean.md) | :heavy_check_mark: | N/A | +| `value` | *boolean* | :heavy_check_mark: | Boolean default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackdefaultnumber.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackdefaultnumber.md new file mode 100644 index 000000000..1636c2926 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackdefaultnumber.md @@ -0,0 +1,19 @@ +# DeploymentPendingPreparedStackDefaultNumber + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackDefaultNumber } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackDefaultNumber = { + type: "number", + value: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `type` | [models.DeploymentPendingPreparedStackTypeNumber](../models/deploymentpendingpreparedstacktypenumber.md) | :heavy_check_mark: | N/A | +| `value` | *string* | :heavy_check_mark: | Number default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackdefaultstring.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackdefaultstring.md new file mode 100644 index 000000000..dd7ed8738 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackdefaultstring.md @@ -0,0 +1,19 @@ +# DeploymentPendingPreparedStackDefaultString + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackDefaultString } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackDefaultString = { + type: "string", + value: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `type` | [models.DeploymentPendingPreparedStackTypeString](../models/deploymentpendingpreparedstacktypestring.md) | :heavy_check_mark: | N/A | +| `value` | *string* | :heavy_check_mark: | String default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackdefaultstringlist.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackdefaultstringlist.md new file mode 100644 index 000000000..1e45a414a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackdefaultstringlist.md @@ -0,0 +1,22 @@ +# DeploymentPendingPreparedStackDefaultStringList + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackDefaultStringList } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackDefaultStringList = { + type: "stringList", + value: [ + "", + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `type` | [models.DeploymentPendingPreparedStackTypeStringList](../models/deploymentpendingpreparedstacktypestringlist.md) | :heavy_check_mark: | N/A | +| `value` | *string*[] | :heavy_check_mark: | String list default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackdefaultunion.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackdefaultunion.md new file mode 100644 index 000000000..aad8e89e4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackdefaultunion.md @@ -0,0 +1,50 @@ +# DeploymentPendingPreparedStackDefaultUnion + + +## Supported Types + +### `models.DeploymentPendingPreparedStackDefaultString` + +```typescript +const value: models.DeploymentPendingPreparedStackDefaultString = { + type: "string", + value: "", +}; +``` + +### `models.DeploymentPendingPreparedStackDefaultNumber` + +```typescript +const value: models.DeploymentPendingPreparedStackDefaultNumber = { + type: "number", + value: "", +}; +``` + +### `models.DeploymentPendingPreparedStackDefaultBoolean` + +```typescript +const value: models.DeploymentPendingPreparedStackDefaultBoolean = { + type: "boolean", + value: false, +}; +``` + +### `models.DeploymentPendingPreparedStackDefaultStringList` + +```typescript +const value: models.DeploymentPendingPreparedStackDefaultStringList = { + type: "stringList", + value: [ + "", + "", + ], +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackdependency.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackdependency.md new file mode 100644 index 000000000..ba4c23998 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackdependency.md @@ -0,0 +1,21 @@ +# DeploymentPendingPreparedStackDependency + +Reference to a resource by its stable id and resource type. + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackDependency } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackDependency = { + id: "", + type: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | N/A | +| `type` | *string* | :heavy_check_mark: | Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackenv.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackenv.md new file mode 100644 index 000000000..acc388fc3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackenv.md @@ -0,0 +1,21 @@ +# DeploymentPendingPreparedStackEnv + +How a resolved stack input is injected into runtime environment variables. + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackEnv } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackEnv = { + name: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `name` | *string* | :heavy_check_mark: | Environment variable name. | +| `targetResources` | *string*[] | :heavy_minus_sign: | Target resource IDs or patterns. None means every env-capable resource. | +| `type` | *models.DeploymentPendingPreparedStackTypeUnion* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextend.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextend.md new file mode 100644 index 000000000..d682faf69 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextend.md @@ -0,0 +1,23 @@ +# DeploymentPendingPreparedStackExtend + +A permission set that can be applied across different cloud platforms + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackExtend } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackExtend = { + description: "knowingly cleverly institute even lest", + id: "", + platforms: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | +| `description` | *string* | :heavy_check_mark: | Human-readable description of what this permission set allows | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the permission set (e.g., "storage/data-read") | +| `platforms` | [models.DeploymentPendingPreparedStackExtendPlatforms](../models/deploymentpendingpreparedstackextendplatforms.md) | :heavy_check_mark: | Platform-specific permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendaw.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendaw.md new file mode 100644 index 000000000..eff567df8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendaw.md @@ -0,0 +1,24 @@ +# DeploymentPendingPreparedStackExtendAw + +AWS-specific platform permission configuration + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackExtendAw } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackExtendAw = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | +| `binding` | [models.DeploymentPendingPreparedStackExtendAwBinding](../models/deploymentpendingpreparedstackextendawbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `effect` | [models.DeploymentPendingPreparedStackExtendEffect](../models/deploymentpendingpreparedstackextendeffect.md) | :heavy_minus_sign: | IAM effect. Defaults to Allow. | +| `grant` | [models.DeploymentPendingPreparedStackExtendAwGrant](../models/deploymentpendingpreparedstackextendawgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendawbinding.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendawbinding.md new file mode 100644 index 000000000..c942f466d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendawbinding.md @@ -0,0 +1,18 @@ +# DeploymentPendingPreparedStackExtendAwBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackExtendAwBinding } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackExtendAwBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.DeploymentPendingPreparedStackExtendAwResource](../models/deploymentpendingpreparedstackextendawresource.md) | :heavy_minus_sign: | AWS-specific binding specification | +| `stack` | [models.DeploymentPendingPreparedStackExtendAwStack](../models/deploymentpendingpreparedstackextendawstack.md) | :heavy_minus_sign: | AWS-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendawgrant.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendawgrant.md new file mode 100644 index 000000000..9d6e4fc8f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendawgrant.md @@ -0,0 +1,21 @@ +# DeploymentPendingPreparedStackExtendAwGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackExtendAwGrant } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackExtendAwGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendawresource.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendawresource.md new file mode 100644 index 000000000..f054cdd28 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendawresource.md @@ -0,0 +1,22 @@ +# DeploymentPendingPreparedStackExtendAwResource + +AWS-specific binding specification + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackExtendAwResource } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackExtendAwResource = { + resources: [ + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendawstack.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendawstack.md new file mode 100644 index 000000000..bf4236f56 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendawstack.md @@ -0,0 +1,23 @@ +# DeploymentPendingPreparedStackExtendAwStack + +AWS-specific binding specification + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackExtendAwStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackExtendAwStack = { + resources: [ + "", + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendazure.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendazure.md new file mode 100644 index 000000000..305419d66 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendazure.md @@ -0,0 +1,23 @@ +# DeploymentPendingPreparedStackExtendAzure + +Azure-specific platform permission configuration + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackExtendAzure } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackExtendAzure = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | +| `binding` | [models.DeploymentPendingPreparedStackExtendAzureBinding](../models/deploymentpendingpreparedstackextendazurebinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.DeploymentPendingPreparedStackExtendAzureGrant](../models/deploymentpendingpreparedstackextendazuregrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendazurebinding.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendazurebinding.md new file mode 100644 index 000000000..779ec9412 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendazurebinding.md @@ -0,0 +1,18 @@ +# DeploymentPendingPreparedStackExtendAzureBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackExtendAzureBinding } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackExtendAzureBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.DeploymentPendingPreparedStackExtendAzureResource](../models/deploymentpendingpreparedstackextendazureresource.md) | :heavy_minus_sign: | Azure-specific binding specification | +| `stack` | [models.DeploymentPendingPreparedStackExtendAzureStack](../models/deploymentpendingpreparedstackextendazurestack.md) | :heavy_minus_sign: | Azure-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendazuregrant.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendazuregrant.md new file mode 100644 index 000000000..3ae3a5b55 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendazuregrant.md @@ -0,0 +1,21 @@ +# DeploymentPendingPreparedStackExtendAzureGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackExtendAzureGrant } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackExtendAzureGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendazureresource.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendazureresource.md new file mode 100644 index 000000000..d012c4ae8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendazureresource.md @@ -0,0 +1,19 @@ +# DeploymentPendingPreparedStackExtendAzureResource + +Azure-specific binding specification + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackExtendAzureResource } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackExtendAzureResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendazurestack.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendazurestack.md new file mode 100644 index 000000000..851ea1027 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendazurestack.md @@ -0,0 +1,19 @@ +# DeploymentPendingPreparedStackExtendAzureStack + +Azure-specific binding specification + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackExtendAzureStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackExtendAzureStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendconditionresource.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendconditionresource.md new file mode 100644 index 000000000..b7a0ae69c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendconditionresource.md @@ -0,0 +1,21 @@ +# DeploymentPendingPreparedStackExtendConditionResource + +GCP IAM condition + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackExtendConditionResource } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackExtendConditionResource = { + expression: "", + title: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendconditionstack.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendconditionstack.md new file mode 100644 index 000000000..26609b8bf --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendconditionstack.md @@ -0,0 +1,21 @@ +# DeploymentPendingPreparedStackExtendConditionStack + +GCP IAM condition + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackExtendConditionStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackExtendConditionStack = { + expression: "", + title: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendeffect.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendeffect.md new file mode 100644 index 000000000..147cbc5fc --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendeffect.md @@ -0,0 +1,17 @@ +# DeploymentPendingPreparedStackExtendEffect + +IAM effect. Defaults to Allow. + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackExtendEffect } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackExtendEffect = "Allow"; +``` + +## Values + +```typescript +"Allow" | "Deny" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendgcp.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendgcp.md new file mode 100644 index 000000000..767c09680 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendgcp.md @@ -0,0 +1,23 @@ +# DeploymentPendingPreparedStackExtendGcp + +GCP-specific platform permission configuration + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackExtendGcp } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackExtendGcp = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.DeploymentPendingPreparedStackExtendGcpBinding](../models/deploymentpendingpreparedstackextendgcpbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.DeploymentPendingPreparedStackExtendGcpGrant](../models/deploymentpendingpreparedstackextendgcpgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendgcpbinding.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendgcpbinding.md new file mode 100644 index 000000000..4fb57d7d7 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendgcpbinding.md @@ -0,0 +1,18 @@ +# DeploymentPendingPreparedStackExtendGcpBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackExtendGcpBinding } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackExtendGcpBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.DeploymentPendingPreparedStackExtendGcpResource](../models/deploymentpendingpreparedstackextendgcpresource.md) | :heavy_minus_sign: | GCP-specific binding specification | +| `stack` | [models.DeploymentPendingPreparedStackExtendGcpStack](../models/deploymentpendingpreparedstackextendgcpstack.md) | :heavy_minus_sign: | GCP-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendgcpgrant.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendgcpgrant.md new file mode 100644 index 000000000..32dd9e6ab --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendgcpgrant.md @@ -0,0 +1,21 @@ +# DeploymentPendingPreparedStackExtendGcpGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackExtendGcpGrant } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackExtendGcpGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendgcpresource.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendgcpresource.md new file mode 100644 index 000000000..1094933f3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendgcpresource.md @@ -0,0 +1,20 @@ +# DeploymentPendingPreparedStackExtendGcpResource + +GCP-specific binding specification + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackExtendGcpResource } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackExtendGcpResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `condition` | *models.DeploymentPendingPreparedStackExtendResourceConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendgcpstack.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendgcpstack.md new file mode 100644 index 000000000..7a8ef00e3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendgcpstack.md @@ -0,0 +1,20 @@ +# DeploymentPendingPreparedStackExtendGcpStack + +GCP-specific binding specification + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackExtendGcpStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackExtendGcpStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | +| `condition` | *models.DeploymentPendingPreparedStackExtendStackConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendplatforms.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendplatforms.md new file mode 100644 index 000000000..f5959ad51 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendplatforms.md @@ -0,0 +1,19 @@ +# DeploymentPendingPreparedStackExtendPlatforms + +Platform-specific permission configurations + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackExtendPlatforms } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackExtendPlatforms = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | +| `aws` | [models.DeploymentPendingPreparedStackExtendAw](../models/deploymentpendingpreparedstackextendaw.md)[] | :heavy_minus_sign: | AWS permission configurations | +| `azure` | [models.DeploymentPendingPreparedStackExtendAzure](../models/deploymentpendingpreparedstackextendazure.md)[] | :heavy_minus_sign: | Azure permission configurations | +| `gcp` | [models.DeploymentPendingPreparedStackExtendGcp](../models/deploymentpendingpreparedstackextendgcp.md)[] | :heavy_minus_sign: | GCP permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendresourceconditionunion.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendresourceconditionunion.md new file mode 100644 index 000000000..861f21c99 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendresourceconditionunion.md @@ -0,0 +1,20 @@ +# DeploymentPendingPreparedStackExtendResourceConditionUnion + + +## Supported Types + +### `models.DeploymentPendingPreparedStackExtendConditionResource` + +```typescript +const value: models.DeploymentPendingPreparedStackExtendConditionResource = { + expression: "", + title: "", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendstackconditionunion.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendstackconditionunion.md new file mode 100644 index 000000000..2dcb0dca7 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendstackconditionunion.md @@ -0,0 +1,20 @@ +# DeploymentPendingPreparedStackExtendStackConditionUnion + + +## Supported Types + +### `models.DeploymentPendingPreparedStackExtendConditionStack` + +```typescript +const value: models.DeploymentPendingPreparedStackExtendConditionStack = { + expression: "", + title: "", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendunion.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendunion.md new file mode 100644 index 000000000..08e56ab88 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackextendunion.md @@ -0,0 +1,23 @@ +# DeploymentPendingPreparedStackExtendUnion + +Reference to a permission set - either by name or inline definition + + +## Supported Types + +### `models.DeploymentPendingPreparedStackExtend` + +```typescript +const value: models.DeploymentPendingPreparedStackExtend = { + description: "knowingly cleverly institute even lest", + id: "", + platforms: {}, +}; +``` + +### `string` + +```typescript +const value: string = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackinput.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackinput.md new file mode 100644 index 000000000..7e12265ed --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackinput.md @@ -0,0 +1,34 @@ +# DeploymentPendingPreparedStackInput + +Stack input definition serialized into a release stack. + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackInput } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackInput = { + description: "smog concerning quash qua phooey wherever", + id: "", + kind: "boolean", + label: "", + providedBy: [], + required: false, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | +| `default` | *models.DeploymentPendingPreparedStackDefaultUnion* | :heavy_minus_sign: | N/A | +| `description` | *string* | :heavy_check_mark: | Human-facing helper text. | +| `env` | [models.DeploymentPendingPreparedStackEnv](../models/deploymentpendingpreparedstackenv.md)[] | :heavy_minus_sign: | Runtime env-var mappings for v1 input resolution. | +| `id` | *string* | :heavy_check_mark: | Stable input ID used by CLI/API calls. | +| `kind` | [models.DeploymentPendingPreparedStackKind](../models/deploymentpendingpreparedstackkind.md) | :heavy_check_mark: | Primitive stack input kind. | +| `label` | *string* | :heavy_check_mark: | Human-facing field label. | +| `placeholder` | *string* | :heavy_minus_sign: | Example placeholder shown in UI. | +| `platforms` | [models.DeploymentPendingPreparedStackPlatform](../models/deploymentpendingpreparedstackplatform.md)[] | :heavy_minus_sign: | Platforms where this input applies. | +| `providedBy` | [models.DeploymentPendingPreparedStackProvidedBy](../models/deploymentpendingpreparedstackprovidedby.md)[] | :heavy_check_mark: | Who can provide this value. | +| `required` | *boolean* | :heavy_check_mark: | Whether a resolved value is required before deployment can proceed. | +| `validation` | *models.DeploymentPendingPreparedStackValidationUnion* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackkind.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackkind.md new file mode 100644 index 000000000..7e5879b6e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackkind.md @@ -0,0 +1,17 @@ +# DeploymentPendingPreparedStackKind + +Primitive stack input kind. + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackKind } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackKind = "number"; +``` + +## Values + +```typescript +"string" | "secret" | "number" | "integer" | "boolean" | "enum" | "stringList" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstacklifecycle.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstacklifecycle.md new file mode 100644 index 000000000..29692b430 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstacklifecycle.md @@ -0,0 +1,17 @@ +# DeploymentPendingPreparedStackLifecycle + +Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackLifecycle } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackLifecycle = "frozen"; +``` + +## Values + +```typescript +"frozen" | "live" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackmanagement1.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackmanagement1.md new file mode 100644 index 000000000..11b89856a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackmanagement1.md @@ -0,0 +1,23 @@ +# DeploymentPendingPreparedStackManagement1 + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackManagement1 } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackManagement1 = { + extend: { + "key": [], + "key1": [ + "", + ], + "key2": [], + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | +| `extend` | Record | :heavy_check_mark: | Permission profile that maps resources to permission sets
Key can be "*" for all resources or resource name for specific resource | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackmanagement2.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackmanagement2.md new file mode 100644 index 000000000..442d3e6fe --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackmanagement2.md @@ -0,0 +1,35 @@ +# DeploymentPendingPreparedStackManagement2 + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackManagement2 } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackManagement2 = { + override: { + "key": [ + { + description: + "midst clamor untrue request onset eek above gosh likewise milky", + id: "", + platforms: {}, + }, + ], + "key1": [], + "key2": [ + { + description: + "midst clamor untrue request onset eek above gosh likewise milky", + id: "", + platforms: {}, + }, + ], + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | +| `override` | Record | :heavy_check_mark: | Permission profile that maps resources to permission sets
Key can be "*" for all resources or resource name for specific resource | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackmanagementenum.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackmanagementenum.md new file mode 100644 index 000000000..63fedb2ed --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackmanagementenum.md @@ -0,0 +1,15 @@ +# DeploymentPendingPreparedStackManagementEnum + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackManagementEnum } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackManagementEnum = "auto"; +``` + +## Values + +```typescript +"auto" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackmanagementunion.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackmanagementunion.md new file mode 100644 index 000000000..06bd63d48 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackmanagementunion.md @@ -0,0 +1,53 @@ +# DeploymentPendingPreparedStackManagementUnion + +Management permissions configuration for stack management access + + +## Supported Types + +### `models.DeploymentPendingPreparedStackManagement1` + +```typescript +const value: models.DeploymentPendingPreparedStackManagement1 = { + extend: { + "key": [], + "key1": [ + "", + ], + "key2": [], + }, +}; +``` + +### `models.DeploymentPendingPreparedStackManagement2` + +```typescript +const value: models.DeploymentPendingPreparedStackManagement2 = { + override: { + "key": [ + { + description: + "midst clamor untrue request onset eek above gosh likewise milky", + id: "", + platforms: {}, + }, + ], + "key1": [], + "key2": [ + { + description: + "midst clamor untrue request onset eek above gosh likewise milky", + id: "", + platforms: {}, + }, + ], + }, +}; +``` + +### `models.DeploymentPendingPreparedStackManagementEnum` + +```typescript +const value: models.DeploymentPendingPreparedStackManagementEnum = "auto"; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverride.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverride.md new file mode 100644 index 000000000..74c8c40c1 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverride.md @@ -0,0 +1,24 @@ +# DeploymentPendingPreparedStackOverride + +A permission set that can be applied across different cloud platforms + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackOverride } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackOverride = { + description: + "almighty convection pip throughout hm consign impact alb blah slipper", + id: "", + platforms: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | +| `description` | *string* | :heavy_check_mark: | Human-readable description of what this permission set allows | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the permission set (e.g., "storage/data-read") | +| `platforms` | [models.DeploymentPendingPreparedStackOverridePlatforms](../models/deploymentpendingpreparedstackoverrideplatforms.md) | :heavy_check_mark: | Platform-specific permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverrideaw.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverrideaw.md new file mode 100644 index 000000000..f6b1f8d93 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverrideaw.md @@ -0,0 +1,24 @@ +# DeploymentPendingPreparedStackOverrideAw + +AWS-specific platform permission configuration + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackOverrideAw } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackOverrideAw = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.DeploymentPendingPreparedStackOverrideAwBinding](../models/deploymentpendingpreparedstackoverrideawbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `effect` | [models.DeploymentPendingPreparedStackOverrideEffect](../models/deploymentpendingpreparedstackoverrideeffect.md) | :heavy_minus_sign: | IAM effect. Defaults to Allow. | +| `grant` | [models.DeploymentPendingPreparedStackOverrideAwGrant](../models/deploymentpendingpreparedstackoverrideawgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverrideawbinding.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverrideawbinding.md new file mode 100644 index 000000000..1b3c442a4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverrideawbinding.md @@ -0,0 +1,18 @@ +# DeploymentPendingPreparedStackOverrideAwBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackOverrideAwBinding } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackOverrideAwBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | +| `resource` | [models.DeploymentPendingPreparedStackOverrideAwResource](../models/deploymentpendingpreparedstackoverrideawresource.md) | :heavy_minus_sign: | AWS-specific binding specification | +| `stack` | [models.DeploymentPendingPreparedStackOverrideAwStack](../models/deploymentpendingpreparedstackoverrideawstack.md) | :heavy_minus_sign: | AWS-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverrideawgrant.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverrideawgrant.md new file mode 100644 index 000000000..019b9665c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverrideawgrant.md @@ -0,0 +1,21 @@ +# DeploymentPendingPreparedStackOverrideAwGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackOverrideAwGrant } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackOverrideAwGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverrideawresource.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverrideawresource.md new file mode 100644 index 000000000..e7344aa07 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverrideawresource.md @@ -0,0 +1,20 @@ +# DeploymentPendingPreparedStackOverrideAwResource + +AWS-specific binding specification + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackOverrideAwResource } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackOverrideAwResource = { + resources: [], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverrideawstack.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverrideawstack.md new file mode 100644 index 000000000..1db2d362f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverrideawstack.md @@ -0,0 +1,20 @@ +# DeploymentPendingPreparedStackOverrideAwStack + +AWS-specific binding specification + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackOverrideAwStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackOverrideAwStack = { + resources: [], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverrideazure.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverrideazure.md new file mode 100644 index 000000000..dfd57c600 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverrideazure.md @@ -0,0 +1,23 @@ +# DeploymentPendingPreparedStackOverrideAzure + +Azure-specific platform permission configuration + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackOverrideAzure } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackOverrideAzure = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.DeploymentPendingPreparedStackOverrideAzureBinding](../models/deploymentpendingpreparedstackoverrideazurebinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.DeploymentPendingPreparedStackOverrideAzureGrant](../models/deploymentpendingpreparedstackoverrideazuregrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverrideazurebinding.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverrideazurebinding.md new file mode 100644 index 000000000..ccf686d01 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverrideazurebinding.md @@ -0,0 +1,18 @@ +# DeploymentPendingPreparedStackOverrideAzureBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackOverrideAzureBinding } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackOverrideAzureBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `resource` | [models.DeploymentPendingPreparedStackOverrideAzureResource](../models/deploymentpendingpreparedstackoverrideazureresource.md) | :heavy_minus_sign: | Azure-specific binding specification | +| `stack` | [models.DeploymentPendingPreparedStackOverrideAzureStack](../models/deploymentpendingpreparedstackoverrideazurestack.md) | :heavy_minus_sign: | Azure-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverrideazuregrant.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverrideazuregrant.md new file mode 100644 index 000000000..3860a1261 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverrideazuregrant.md @@ -0,0 +1,21 @@ +# DeploymentPendingPreparedStackOverrideAzureGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackOverrideAzureGrant } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackOverrideAzureGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverrideazureresource.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverrideazureresource.md new file mode 100644 index 000000000..258ea0e2e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverrideazureresource.md @@ -0,0 +1,19 @@ +# DeploymentPendingPreparedStackOverrideAzureResource + +Azure-specific binding specification + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackOverrideAzureResource } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackOverrideAzureResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverrideazurestack.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverrideazurestack.md new file mode 100644 index 000000000..0e6825a24 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverrideazurestack.md @@ -0,0 +1,19 @@ +# DeploymentPendingPreparedStackOverrideAzureStack + +Azure-specific binding specification + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackOverrideAzureStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackOverrideAzureStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverrideconditionresource.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverrideconditionresource.md new file mode 100644 index 000000000..0032fd993 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverrideconditionresource.md @@ -0,0 +1,21 @@ +# DeploymentPendingPreparedStackOverrideConditionResource + +GCP IAM condition + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackOverrideConditionResource } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackOverrideConditionResource = { + expression: "", + title: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverrideconditionstack.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverrideconditionstack.md new file mode 100644 index 000000000..0b2475ff4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverrideconditionstack.md @@ -0,0 +1,21 @@ +# DeploymentPendingPreparedStackOverrideConditionStack + +GCP IAM condition + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackOverrideConditionStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackOverrideConditionStack = { + expression: "", + title: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverrideeffect.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverrideeffect.md new file mode 100644 index 000000000..7cf4103d1 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverrideeffect.md @@ -0,0 +1,17 @@ +# DeploymentPendingPreparedStackOverrideEffect + +IAM effect. Defaults to Allow. + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackOverrideEffect } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackOverrideEffect = "Deny"; +``` + +## Values + +```typescript +"Allow" | "Deny" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverridegcp.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverridegcp.md new file mode 100644 index 000000000..bbac3d114 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverridegcp.md @@ -0,0 +1,23 @@ +# DeploymentPendingPreparedStackOverrideGcp + +GCP-specific platform permission configuration + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackOverrideGcp } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackOverrideGcp = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | +| `binding` | [models.DeploymentPendingPreparedStackOverrideGcpBinding](../models/deploymentpendingpreparedstackoverridegcpbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.DeploymentPendingPreparedStackOverrideGcpGrant](../models/deploymentpendingpreparedstackoverridegcpgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverridegcpbinding.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverridegcpbinding.md new file mode 100644 index 000000000..0a5425e1f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverridegcpbinding.md @@ -0,0 +1,18 @@ +# DeploymentPendingPreparedStackOverrideGcpBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackOverrideGcpBinding } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackOverrideGcpBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.DeploymentPendingPreparedStackOverrideGcpResource](../models/deploymentpendingpreparedstackoverridegcpresource.md) | :heavy_minus_sign: | GCP-specific binding specification | +| `stack` | [models.DeploymentPendingPreparedStackOverrideGcpStack](../models/deploymentpendingpreparedstackoverridegcpstack.md) | :heavy_minus_sign: | GCP-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverridegcpgrant.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverridegcpgrant.md new file mode 100644 index 000000000..e6a5ae762 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverridegcpgrant.md @@ -0,0 +1,21 @@ +# DeploymentPendingPreparedStackOverrideGcpGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackOverrideGcpGrant } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackOverrideGcpGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverridegcpresource.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverridegcpresource.md new file mode 100644 index 000000000..0e8312950 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverridegcpresource.md @@ -0,0 +1,20 @@ +# DeploymentPendingPreparedStackOverrideGcpResource + +GCP-specific binding specification + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackOverrideGcpResource } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackOverrideGcpResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | +| `condition` | *models.DeploymentPendingPreparedStackOverrideResourceConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverridegcpstack.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverridegcpstack.md new file mode 100644 index 000000000..38e4aaa0a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverridegcpstack.md @@ -0,0 +1,20 @@ +# DeploymentPendingPreparedStackOverrideGcpStack + +GCP-specific binding specification + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackOverrideGcpStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackOverrideGcpStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `condition` | *models.DeploymentPendingPreparedStackOverrideStackConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverrideplatforms.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverrideplatforms.md new file mode 100644 index 000000000..a5f36f343 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverrideplatforms.md @@ -0,0 +1,19 @@ +# DeploymentPendingPreparedStackOverridePlatforms + +Platform-specific permission configurations + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackOverridePlatforms } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackOverridePlatforms = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `aws` | [models.DeploymentPendingPreparedStackOverrideAw](../models/deploymentpendingpreparedstackoverrideaw.md)[] | :heavy_minus_sign: | AWS permission configurations | +| `azure` | [models.DeploymentPendingPreparedStackOverrideAzure](../models/deploymentpendingpreparedstackoverrideazure.md)[] | :heavy_minus_sign: | Azure permission configurations | +| `gcp` | [models.DeploymentPendingPreparedStackOverrideGcp](../models/deploymentpendingpreparedstackoverridegcp.md)[] | :heavy_minus_sign: | GCP permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverrideresourceconditionunion.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverrideresourceconditionunion.md new file mode 100644 index 000000000..f53000d48 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverrideresourceconditionunion.md @@ -0,0 +1,20 @@ +# DeploymentPendingPreparedStackOverrideResourceConditionUnion + + +## Supported Types + +### `models.DeploymentPendingPreparedStackOverrideConditionResource` + +```typescript +const value: models.DeploymentPendingPreparedStackOverrideConditionResource = { + expression: "", + title: "", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverridestackconditionunion.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverridestackconditionunion.md new file mode 100644 index 000000000..c3e4f4d2c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverridestackconditionunion.md @@ -0,0 +1,20 @@ +# DeploymentPendingPreparedStackOverrideStackConditionUnion + + +## Supported Types + +### `models.DeploymentPendingPreparedStackOverrideConditionStack` + +```typescript +const value: models.DeploymentPendingPreparedStackOverrideConditionStack = { + expression: "", + title: "", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverrideunion.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverrideunion.md new file mode 100644 index 000000000..3c017dbfb --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackoverrideunion.md @@ -0,0 +1,24 @@ +# DeploymentPendingPreparedStackOverrideUnion + +Reference to a permission set - either by name or inline definition + + +## Supported Types + +### `models.DeploymentPendingPreparedStackOverride` + +```typescript +const value: models.DeploymentPendingPreparedStackOverride = { + description: + "almighty convection pip throughout hm consign impact alb blah slipper", + id: "", + platforms: {}, +}; +``` + +### `string` + +```typescript +const value: string = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackpermissions.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackpermissions.md new file mode 100644 index 000000000..3bcc790b6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackpermissions.md @@ -0,0 +1,38 @@ +# DeploymentPendingPreparedStackPermissions + +Combined permissions configuration that contains both profiles and management + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackPermissions } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackPermissions = { + profiles: { + "key": { + "key": [], + "key1": [ + "", + ], + }, + "key1": { + "key": [ + "", + ], + "key1": [], + }, + "key2": { + "key": [], + "key1": [], + "key2": [], + }, + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| `management` | *models.DeploymentPendingPreparedStackManagementUnion* | :heavy_minus_sign: | Management permissions configuration for stack management access | +| `profiles` | Record> | :heavy_check_mark: | Permission profiles that define access control for compute services
Key is the profile name, value is the permission configuration | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackplatform.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackplatform.md new file mode 100644 index 000000000..dceff1fc2 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackplatform.md @@ -0,0 +1,17 @@ +# DeploymentPendingPreparedStackPlatform + +Represents the target cloud platform. + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackPlatform } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackPlatform = "kubernetes"; +``` + +## Values + +```typescript +"aws" | "gcp" | "azure" | "kubernetes" | "machines" | "local" | "test" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofile.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofile.md new file mode 100644 index 000000000..7a34245e9 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofile.md @@ -0,0 +1,23 @@ +# DeploymentPendingPreparedStackProfile + +A permission set that can be applied across different cloud platforms + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackProfile } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackProfile = { + description: "what why clearly blah that filthy meanwhile for", + id: "", + platforms: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `description` | *string* | :heavy_check_mark: | Human-readable description of what this permission set allows | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the permission set (e.g., "storage/data-read") | +| `platforms` | [models.DeploymentPendingPreparedStackProfilePlatforms](../models/deploymentpendingpreparedstackprofileplatforms.md) | :heavy_check_mark: | Platform-specific permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofileaw.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofileaw.md new file mode 100644 index 000000000..94e6695d5 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofileaw.md @@ -0,0 +1,24 @@ +# DeploymentPendingPreparedStackProfileAw + +AWS-specific platform permission configuration + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackProfileAw } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackProfileAw = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.DeploymentPendingPreparedStackProfileAwBinding](../models/deploymentpendingpreparedstackprofileawbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `effect` | [models.DeploymentPendingPreparedStackProfileEffect](../models/deploymentpendingpreparedstackprofileeffect.md) | :heavy_minus_sign: | IAM effect. Defaults to Allow. | +| `grant` | [models.DeploymentPendingPreparedStackProfileAwGrant](../models/deploymentpendingpreparedstackprofileawgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofileawbinding.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofileawbinding.md new file mode 100644 index 000000000..ff0663c63 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofileawbinding.md @@ -0,0 +1,18 @@ +# DeploymentPendingPreparedStackProfileAwBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackProfileAwBinding } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackProfileAwBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.DeploymentPendingPreparedStackProfileAwResource](../models/deploymentpendingpreparedstackprofileawresource.md) | :heavy_minus_sign: | AWS-specific binding specification | +| `stack` | [models.DeploymentPendingPreparedStackProfileAwStack](../models/deploymentpendingpreparedstackprofileawstack.md) | :heavy_minus_sign: | AWS-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofileawgrant.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofileawgrant.md new file mode 100644 index 000000000..51d10adba --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofileawgrant.md @@ -0,0 +1,21 @@ +# DeploymentPendingPreparedStackProfileAwGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackProfileAwGrant } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackProfileAwGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofileawresource.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofileawresource.md new file mode 100644 index 000000000..62fb866d6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofileawresource.md @@ -0,0 +1,22 @@ +# DeploymentPendingPreparedStackProfileAwResource + +AWS-specific binding specification + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackProfileAwResource } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackProfileAwResource = { + resources: [ + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofileawstack.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofileawstack.md new file mode 100644 index 000000000..888d1c4d0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofileawstack.md @@ -0,0 +1,22 @@ +# DeploymentPendingPreparedStackProfileAwStack + +AWS-specific binding specification + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackProfileAwStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackProfileAwStack = { + resources: [ + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofileazure.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofileazure.md new file mode 100644 index 000000000..f1d36fc1c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofileazure.md @@ -0,0 +1,23 @@ +# DeploymentPendingPreparedStackProfileAzure + +Azure-specific platform permission configuration + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackProfileAzure } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackProfileAzure = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.DeploymentPendingPreparedStackProfileAzureBinding](../models/deploymentpendingpreparedstackprofileazurebinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.DeploymentPendingPreparedStackProfileAzureGrant](../models/deploymentpendingpreparedstackprofileazuregrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofileazurebinding.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofileazurebinding.md new file mode 100644 index 000000000..944eacf0e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofileazurebinding.md @@ -0,0 +1,18 @@ +# DeploymentPendingPreparedStackProfileAzureBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackProfileAzureBinding } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackProfileAzureBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.DeploymentPendingPreparedStackProfileAzureResource](../models/deploymentpendingpreparedstackprofileazureresource.md) | :heavy_minus_sign: | Azure-specific binding specification | +| `stack` | [models.DeploymentPendingPreparedStackProfileAzureStack](../models/deploymentpendingpreparedstackprofileazurestack.md) | :heavy_minus_sign: | Azure-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofileazuregrant.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofileazuregrant.md new file mode 100644 index 000000000..85c3bc1dd --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofileazuregrant.md @@ -0,0 +1,21 @@ +# DeploymentPendingPreparedStackProfileAzureGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackProfileAzureGrant } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackProfileAzureGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofileazureresource.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofileazureresource.md new file mode 100644 index 000000000..025f5781b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofileazureresource.md @@ -0,0 +1,19 @@ +# DeploymentPendingPreparedStackProfileAzureResource + +Azure-specific binding specification + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackProfileAzureResource } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackProfileAzureResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofileazurestack.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofileazurestack.md new file mode 100644 index 000000000..231b63a9a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofileazurestack.md @@ -0,0 +1,19 @@ +# DeploymentPendingPreparedStackProfileAzureStack + +Azure-specific binding specification + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackProfileAzureStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackProfileAzureStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofileconditionresource.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofileconditionresource.md new file mode 100644 index 000000000..fb5ce52f0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofileconditionresource.md @@ -0,0 +1,21 @@ +# DeploymentPendingPreparedStackProfileConditionResource + +GCP IAM condition + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackProfileConditionResource } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackProfileConditionResource = { + expression: "", + title: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofileconditionstack.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofileconditionstack.md new file mode 100644 index 000000000..38f7ad928 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofileconditionstack.md @@ -0,0 +1,21 @@ +# DeploymentPendingPreparedStackProfileConditionStack + +GCP IAM condition + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackProfileConditionStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackProfileConditionStack = { + expression: "", + title: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofileeffect.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofileeffect.md new file mode 100644 index 000000000..76b878016 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofileeffect.md @@ -0,0 +1,17 @@ +# DeploymentPendingPreparedStackProfileEffect + +IAM effect. Defaults to Allow. + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackProfileEffect } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackProfileEffect = "Deny"; +``` + +## Values + +```typescript +"Allow" | "Deny" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofilegcp.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofilegcp.md new file mode 100644 index 000000000..3ddbf97c7 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofilegcp.md @@ -0,0 +1,23 @@ +# DeploymentPendingPreparedStackProfileGcp + +GCP-specific platform permission configuration + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackProfileGcp } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackProfileGcp = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.DeploymentPendingPreparedStackProfileGcpBinding](../models/deploymentpendingpreparedstackprofilegcpbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.DeploymentPendingPreparedStackProfileGcpGrant](../models/deploymentpendingpreparedstackprofilegcpgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofilegcpbinding.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofilegcpbinding.md new file mode 100644 index 000000000..6b7354d2f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofilegcpbinding.md @@ -0,0 +1,18 @@ +# DeploymentPendingPreparedStackProfileGcpBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackProfileGcpBinding } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackProfileGcpBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | +| `resource` | [models.DeploymentPendingPreparedStackProfileGcpResource](../models/deploymentpendingpreparedstackprofilegcpresource.md) | :heavy_minus_sign: | GCP-specific binding specification | +| `stack` | [models.DeploymentPendingPreparedStackProfileGcpStack](../models/deploymentpendingpreparedstackprofilegcpstack.md) | :heavy_minus_sign: | GCP-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofilegcpgrant.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofilegcpgrant.md new file mode 100644 index 000000000..65b3a3d74 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofilegcpgrant.md @@ -0,0 +1,21 @@ +# DeploymentPendingPreparedStackProfileGcpGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackProfileGcpGrant } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackProfileGcpGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofilegcpresource.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofilegcpresource.md new file mode 100644 index 000000000..76854bdb3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofilegcpresource.md @@ -0,0 +1,20 @@ +# DeploymentPendingPreparedStackProfileGcpResource + +GCP-specific binding specification + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackProfileGcpResource } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackProfileGcpResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `condition` | *models.DeploymentPendingPreparedStackProfileResourceConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofilegcpstack.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofilegcpstack.md new file mode 100644 index 000000000..f57adc334 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofilegcpstack.md @@ -0,0 +1,20 @@ +# DeploymentPendingPreparedStackProfileGcpStack + +GCP-specific binding specification + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackProfileGcpStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackProfileGcpStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | +| `condition` | *models.DeploymentPendingPreparedStackProfileStackConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofileplatforms.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofileplatforms.md new file mode 100644 index 000000000..2fbb8828d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofileplatforms.md @@ -0,0 +1,19 @@ +# DeploymentPendingPreparedStackProfilePlatforms + +Platform-specific permission configurations + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackProfilePlatforms } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackProfilePlatforms = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | +| `aws` | [models.DeploymentPendingPreparedStackProfileAw](../models/deploymentpendingpreparedstackprofileaw.md)[] | :heavy_minus_sign: | AWS permission configurations | +| `azure` | [models.DeploymentPendingPreparedStackProfileAzure](../models/deploymentpendingpreparedstackprofileazure.md)[] | :heavy_minus_sign: | Azure permission configurations | +| `gcp` | [models.DeploymentPendingPreparedStackProfileGcp](../models/deploymentpendingpreparedstackprofilegcp.md)[] | :heavy_minus_sign: | GCP permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofileresourceconditionunion.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofileresourceconditionunion.md new file mode 100644 index 000000000..b6bb44d8c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofileresourceconditionunion.md @@ -0,0 +1,20 @@ +# DeploymentPendingPreparedStackProfileResourceConditionUnion + + +## Supported Types + +### `models.DeploymentPendingPreparedStackProfileConditionResource` + +```typescript +const value: models.DeploymentPendingPreparedStackProfileConditionResource = { + expression: "", + title: "", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofilestackconditionunion.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofilestackconditionunion.md new file mode 100644 index 000000000..fa1d2d5d2 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofilestackconditionunion.md @@ -0,0 +1,20 @@ +# DeploymentPendingPreparedStackProfileStackConditionUnion + + +## Supported Types + +### `models.DeploymentPendingPreparedStackProfileConditionStack` + +```typescript +const value: models.DeploymentPendingPreparedStackProfileConditionStack = { + expression: "", + title: "", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofileunion.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofileunion.md new file mode 100644 index 000000000..469fdcf44 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprofileunion.md @@ -0,0 +1,23 @@ +# DeploymentPendingPreparedStackProfileUnion + +Reference to a permission set - either by name or inline definition + + +## Supported Types + +### `models.DeploymentPendingPreparedStackProfile` + +```typescript +const value: models.DeploymentPendingPreparedStackProfile = { + description: "what why clearly blah that filthy meanwhile for", + id: "", + platforms: {}, +}; +``` + +### `string` + +```typescript +const value: string = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprovidedby.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprovidedby.md new file mode 100644 index 000000000..c5c6a05e4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackprovidedby.md @@ -0,0 +1,17 @@ +# DeploymentPendingPreparedStackProvidedBy + +Who can provide a stack input value. + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackProvidedBy } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackProvidedBy = "developer"; +``` + +## Values + +```typescript +"developer" | "deployer" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackresources.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackresources.md new file mode 100644 index 000000000..4328fc13d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackresources.md @@ -0,0 +1,31 @@ +# DeploymentPendingPreparedStackResources + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackResources } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackResources = { + config: { + id: "", + type: "", + }, + dependencies: [ + { + id: "", + type: "", + }, + ], + lifecycle: "live", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `config` | [models.DeploymentPendingPreparedStackConfig](../models/deploymentpendingpreparedstackconfig.md) | :heavy_check_mark: | 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` | [models.DeploymentPendingPreparedStackDependency](../models/deploymentpendingpreparedstackdependency.md)[] | :heavy_check_mark: | Additional dependencies for this resource beyond those defined in the resource itself.
The total dependencies are: resource.get_dependencies() + this list | +| `enabledWhen` | *string* | :heavy_minus_sign: | 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. | +| `lifecycle` | [models.DeploymentPendingPreparedStackLifecycle](../models/deploymentpendingpreparedstacklifecycle.md) | :heavy_check_mark: | Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. | +| `remoteAccess` | *boolean* | :heavy_minus_sign: | Enable remote bindings for this resource (BYOB use case).
When true, binding params are synced to StackState's `remote_binding_params`.
Default: false (prevents sensitive data in synced state). | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstacksupportedplatform.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstacksupportedplatform.md new file mode 100644 index 000000000..04e8ed422 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstacksupportedplatform.md @@ -0,0 +1,17 @@ +# DeploymentPendingPreparedStackSupportedPlatform + +Represents the target cloud platform. + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackSupportedPlatform } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackSupportedPlatform = "aws"; +``` + +## Values + +```typescript +"aws" | "gcp" | "azure" | "kubernetes" | "machines" | "local" | "test" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstacktypeboolean.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstacktypeboolean.md new file mode 100644 index 000000000..3c673c933 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstacktypeboolean.md @@ -0,0 +1,15 @@ +# DeploymentPendingPreparedStackTypeBoolean + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackTypeBoolean } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackTypeBoolean = "boolean"; +``` + +## Values + +```typescript +"boolean" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstacktypeenvenum.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstacktypeenvenum.md new file mode 100644 index 000000000..6ea939e46 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstacktypeenvenum.md @@ -0,0 +1,17 @@ +# DeploymentPendingPreparedStackTypeEnvEnum + +Environment variable handling for a stack input mapping. + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackTypeEnvEnum } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackTypeEnvEnum = "plain"; +``` + +## Values + +```typescript +"plain" | "secret" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstacktypenumber.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstacktypenumber.md new file mode 100644 index 000000000..5292c9e98 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstacktypenumber.md @@ -0,0 +1,15 @@ +# DeploymentPendingPreparedStackTypeNumber + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackTypeNumber } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackTypeNumber = "number"; +``` + +## Values + +```typescript +"number" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstacktypestring.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstacktypestring.md new file mode 100644 index 000000000..0dd1618e4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstacktypestring.md @@ -0,0 +1,15 @@ +# DeploymentPendingPreparedStackTypeString + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackTypeString } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackTypeString = "string"; +``` + +## Values + +```typescript +"string" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstacktypestringlist.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstacktypestringlist.md new file mode 100644 index 000000000..12b25763b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstacktypestringlist.md @@ -0,0 +1,15 @@ +# DeploymentPendingPreparedStackTypeStringList + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackTypeStringList } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackTypeStringList = "stringList"; +``` + +## Values + +```typescript +"stringList" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstacktypeunion.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstacktypeunion.md new file mode 100644 index 000000000..ccd9605b3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstacktypeunion.md @@ -0,0 +1,17 @@ +# DeploymentPendingPreparedStackTypeUnion + + +## Supported Types + +### `models.DeploymentPendingPreparedStackTypeEnvEnum` + +```typescript +const value: models.DeploymentPendingPreparedStackTypeEnvEnum = "plain"; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackunion.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackunion.md new file mode 100644 index 000000000..2b3f1c431 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackunion.md @@ -0,0 +1,20 @@ +# DeploymentPendingPreparedStackUnion + + +## Supported Types + +### `models.DeploymentPendingPreparedStack` + +```typescript +const value: models.DeploymentPendingPreparedStack = { + id: "", + resources: {}, +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackvalidation.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackvalidation.md new file mode 100644 index 000000000..cd220e7ea --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackvalidation.md @@ -0,0 +1,25 @@ +# DeploymentPendingPreparedStackValidation + +Portable stack input validation constraints. + +## Example Usage + +```typescript +import { DeploymentPendingPreparedStackValidation } from "@alienplatform/platform-api/models"; + +let value: DeploymentPendingPreparedStackValidation = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | +| `format` | *string* | :heavy_minus_sign: | Semantic format hint such as url. | +| `max` | *string* | :heavy_minus_sign: | Maximum number. | +| `maxItems` | *number* | :heavy_minus_sign: | Maximum string-list items. | +| `maxLength` | *number* | :heavy_minus_sign: | Maximum string length. | +| `min` | *string* | :heavy_minus_sign: | Minimum number. | +| `minItems` | *number* | :heavy_minus_sign: | Minimum string-list items. | +| `minLength` | *number* | :heavy_minus_sign: | Minimum string length. | +| `pattern` | *string* | :heavy_minus_sign: | Portable whole-value regex pattern. | +| `values` | *string*[] | :heavy_minus_sign: | Allowed string enum values. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackvalidationunion.md b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackvalidationunion.md new file mode 100644 index 000000000..6f2d49e60 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpendingpreparedstackvalidationunion.md @@ -0,0 +1,17 @@ +# DeploymentPendingPreparedStackValidationUnion + + +## Supported Types + +### `models.DeploymentPendingPreparedStackValidation` + +```typescript +const value: models.DeploymentPendingPreparedStackValidation = {}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentpermissions.md b/client-sdks/platform/typescript/docs/models/deploymentpermissions.md deleted file mode 100644 index 1ac3bfd88..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentpermissions.md +++ /dev/null @@ -1,42 +0,0 @@ -# DeploymentPermissions - -Combined permissions configuration that contains both profiles and management - -## Example Usage - -```typescript -import { DeploymentPermissions } from "@alienplatform/platform-api/models"; - -let value: DeploymentPermissions = { - profiles: { - "key": { - "key": [], - }, - "key1": {}, - "key2": { - "key": [], - "key1": [ - { - description: "aw strong everlasting", - id: "", - platforms: {}, - }, - ], - "key2": [ - { - description: "aw strong everlasting", - id: "", - platforms: {}, - }, - ], - }, - }, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | -| `management` | *models.DeploymentManagementUnion* | :heavy_minus_sign: | Management permissions configuration for stack management access | -| `profiles` | Record> | :heavy_check_mark: | Permission profiles that define access control for compute services
Key is the profile name, value is the permission configuration | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpoolsautoscale.md b/client-sdks/platform/typescript/docs/models/deploymentpoolsautoscale.md index 409f808bf..5f318bd4f 100644 --- a/client-sdks/platform/typescript/docs/models/deploymentpoolsautoscale.md +++ b/client-sdks/platform/typescript/docs/models/deploymentpoolsautoscale.md @@ -16,6 +16,7 @@ let value: DeploymentPoolsAutoscale = { | Field | Type | Required | Description | | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | +| `failureDomains` | *models.DeploymentFailureDomainsUnion2* | :heavy_minus_sign: | N/A | | `machine` | *string* | :heavy_minus_sign: | Provider machine type selected for this deployment. | | `max` | *number* | :heavy_check_mark: | Maximum machine count. | | `min` | *number* | :heavy_check_mark: | Minimum machine count. | diff --git a/client-sdks/platform/typescript/docs/models/deploymentpoolsfixed.md b/client-sdks/platform/typescript/docs/models/deploymentpoolsfixed.md index fea8c3d58..943e677cf 100644 --- a/client-sdks/platform/typescript/docs/models/deploymentpoolsfixed.md +++ b/client-sdks/platform/typescript/docs/models/deploymentpoolsfixed.md @@ -15,6 +15,7 @@ let value: DeploymentPoolsFixed = { | Field | Type | Required | Description | | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | +| `failureDomains` | *models.DeploymentFailureDomainsUnion1* | :heavy_minus_sign: | N/A | | `machine` | *string* | :heavy_minus_sign: | Provider machine type selected for this deployment. | | `machines` | *number* | :heavy_check_mark: | Number of machines to run. | | `mode` | *"fixed"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstack.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstack.md index a9c286790..0bead43bf 100644 --- a/client-sdks/platform/typescript/docs/models/deploymentpreparedstack.md +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstack.md @@ -29,10 +29,10 @@ let value: DeploymentPreparedStack = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -| `id` | *string* | :heavy_check_mark: | Unique identifier for the stack | -| `inputs` | [models.DeploymentInput](../models/deploymentinput.md)[] | :heavy_minus_sign: | Input definitions required before setup or deployment can proceed. | -| `permissions` | [models.DeploymentPermissions](../models/deploymentpermissions.md) | :heavy_minus_sign: | Combined permissions configuration that contains both profiles and management | -| `resources` | Record | :heavy_check_mark: | Map of resource IDs to their configurations and lifecycle settings | -| `supportedPlatforms` | [models.DeploymentSupportedPlatform](../models/deploymentsupportedplatform.md)[] | :heavy_minus_sign: | Which platforms this stack supports. When None, all platforms are supported. | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the stack | +| `inputs` | [models.DeploymentPreparedStackInput](../models/deploymentpreparedstackinput.md)[] | :heavy_minus_sign: | Input definitions required before setup or deployment can proceed. | +| `permissions` | [models.DeploymentPreparedStackPermissions](../models/deploymentpreparedstackpermissions.md) | :heavy_minus_sign: | Combined permissions configuration that contains both profiles and management | +| `resources` | Record | :heavy_check_mark: | Map of resource IDs to their configurations and lifecycle settings | +| `supportedPlatforms` | [models.DeploymentPreparedStackSupportedPlatform](../models/deploymentpreparedstacksupportedplatform.md)[] | :heavy_minus_sign: | Which platforms this stack supports. When None, all platforms are supported. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackdefaultboolean.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackdefaultboolean.md new file mode 100644 index 000000000..58c03e58a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackdefaultboolean.md @@ -0,0 +1,19 @@ +# DeploymentPreparedStackDefaultBoolean + +## Example Usage + +```typescript +import { DeploymentPreparedStackDefaultBoolean } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackDefaultBoolean = { + type: "boolean", + value: true, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `type` | [models.DeploymentPreparedStackTypeBoolean](../models/deploymentpreparedstacktypeboolean.md) | :heavy_check_mark: | N/A | +| `value` | *boolean* | :heavy_check_mark: | Boolean default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackdefaultnumber.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackdefaultnumber.md new file mode 100644 index 000000000..33fa89600 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackdefaultnumber.md @@ -0,0 +1,19 @@ +# DeploymentPreparedStackDefaultNumber + +## Example Usage + +```typescript +import { DeploymentPreparedStackDefaultNumber } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackDefaultNumber = { + type: "number", + value: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `type` | [models.DeploymentPreparedStackTypeNumber](../models/deploymentpreparedstacktypenumber.md) | :heavy_check_mark: | N/A | +| `value` | *string* | :heavy_check_mark: | Number default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackdefaultstring.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackdefaultstring.md new file mode 100644 index 000000000..f89d7416f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackdefaultstring.md @@ -0,0 +1,19 @@ +# DeploymentPreparedStackDefaultString + +## Example Usage + +```typescript +import { DeploymentPreparedStackDefaultString } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackDefaultString = { + type: "string", + value: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `type` | [models.DeploymentPreparedStackTypeString](../models/deploymentpreparedstacktypestring.md) | :heavy_check_mark: | N/A | +| `value` | *string* | :heavy_check_mark: | String default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackdefaultstringlist.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackdefaultstringlist.md new file mode 100644 index 000000000..5f047e180 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackdefaultstringlist.md @@ -0,0 +1,22 @@ +# DeploymentPreparedStackDefaultStringList + +## Example Usage + +```typescript +import { DeploymentPreparedStackDefaultStringList } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackDefaultStringList = { + type: "stringList", + value: [ + "", + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `type` | [models.DeploymentPreparedStackTypeStringList](../models/deploymentpreparedstacktypestringlist.md) | :heavy_check_mark: | N/A | +| `value` | *string*[] | :heavy_check_mark: | String list default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackdefaultunion.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackdefaultunion.md new file mode 100644 index 000000000..cdc08360e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackdefaultunion.md @@ -0,0 +1,50 @@ +# DeploymentPreparedStackDefaultUnion + + +## Supported Types + +### `models.DeploymentPreparedStackDefaultString` + +```typescript +const value: models.DeploymentPreparedStackDefaultString = { + type: "string", + value: "", +}; +``` + +### `models.DeploymentPreparedStackDefaultNumber` + +```typescript +const value: models.DeploymentPreparedStackDefaultNumber = { + type: "number", + value: "", +}; +``` + +### `models.DeploymentPreparedStackDefaultBoolean` + +```typescript +const value: models.DeploymentPreparedStackDefaultBoolean = { + type: "boolean", + value: true, +}; +``` + +### `models.DeploymentPreparedStackDefaultStringList` + +```typescript +const value: models.DeploymentPreparedStackDefaultStringList = { + type: "stringList", + value: [ + "", + "", + ], +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackenv.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackenv.md new file mode 100644 index 000000000..19adc9b89 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackenv.md @@ -0,0 +1,21 @@ +# DeploymentPreparedStackEnv + +How a resolved stack input is injected into runtime environment variables. + +## Example Usage + +```typescript +import { DeploymentPreparedStackEnv } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackEnv = { + name: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `name` | *string* | :heavy_check_mark: | Environment variable name. | +| `targetResources` | *string*[] | :heavy_minus_sign: | Target resource IDs or patterns. None means every env-capable resource. | +| `type` | *models.DeploymentPreparedStackTypeUnion* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextend.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextend.md new file mode 100644 index 000000000..24d8f6bf1 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextend.md @@ -0,0 +1,23 @@ +# DeploymentPreparedStackExtend + +A permission set that can be applied across different cloud platforms + +## Example Usage + +```typescript +import { DeploymentPreparedStackExtend } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackExtend = { + description: "forswear behind ew reiterate rubric putrefy", + id: "", + platforms: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `description` | *string* | :heavy_check_mark: | Human-readable description of what this permission set allows | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the permission set (e.g., "storage/data-read") | +| `platforms` | [models.DeploymentPreparedStackExtendPlatforms](../models/deploymentpreparedstackextendplatforms.md) | :heavy_check_mark: | Platform-specific permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendaw.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendaw.md new file mode 100644 index 000000000..5c2059989 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendaw.md @@ -0,0 +1,24 @@ +# DeploymentPreparedStackExtendAw + +AWS-specific platform permission configuration + +## Example Usage + +```typescript +import { DeploymentPreparedStackExtendAw } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackExtendAw = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `binding` | [models.DeploymentPreparedStackExtendAwBinding](../models/deploymentpreparedstackextendawbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `effect` | [models.DeploymentPreparedStackExtendEffect](../models/deploymentpreparedstackextendeffect.md) | :heavy_minus_sign: | IAM effect. Defaults to Allow. | +| `grant` | [models.DeploymentPreparedStackExtendAwGrant](../models/deploymentpreparedstackextendawgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendawbinding.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendawbinding.md new file mode 100644 index 000000000..8507c4d96 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendawbinding.md @@ -0,0 +1,18 @@ +# DeploymentPreparedStackExtendAwBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { DeploymentPreparedStackExtendAwBinding } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackExtendAwBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | +| `resource` | [models.DeploymentPreparedStackExtendAwResource](../models/deploymentpreparedstackextendawresource.md) | :heavy_minus_sign: | AWS-specific binding specification | +| `stack` | [models.DeploymentPreparedStackExtendAwStack](../models/deploymentpreparedstackextendawstack.md) | :heavy_minus_sign: | AWS-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendawgrant.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendawgrant.md new file mode 100644 index 000000000..f3aa6d7e8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendawgrant.md @@ -0,0 +1,21 @@ +# DeploymentPreparedStackExtendAwGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { DeploymentPreparedStackExtendAwGrant } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackExtendAwGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendawresource.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendawresource.md new file mode 100644 index 000000000..c5935437f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendawresource.md @@ -0,0 +1,23 @@ +# DeploymentPreparedStackExtendAwResource + +AWS-specific binding specification + +## Example Usage + +```typescript +import { DeploymentPreparedStackExtendAwResource } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackExtendAwResource = { + resources: [ + "", + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendawstack.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendawstack.md new file mode 100644 index 000000000..bef6875dc --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendawstack.md @@ -0,0 +1,23 @@ +# DeploymentPreparedStackExtendAwStack + +AWS-specific binding specification + +## Example Usage + +```typescript +import { DeploymentPreparedStackExtendAwStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackExtendAwStack = { + resources: [ + "", + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendazure.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendazure.md new file mode 100644 index 000000000..dde155071 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendazure.md @@ -0,0 +1,23 @@ +# DeploymentPreparedStackExtendAzure + +Azure-specific platform permission configuration + +## Example Usage + +```typescript +import { DeploymentPreparedStackExtendAzure } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackExtendAzure = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | +| `binding` | [models.DeploymentPreparedStackExtendAzureBinding](../models/deploymentpreparedstackextendazurebinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.DeploymentPreparedStackExtendAzureGrant](../models/deploymentpreparedstackextendazuregrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendazurebinding.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendazurebinding.md new file mode 100644 index 000000000..2ef4cefe6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendazurebinding.md @@ -0,0 +1,18 @@ +# DeploymentPreparedStackExtendAzureBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { DeploymentPreparedStackExtendAzureBinding } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackExtendAzureBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | +| `resource` | [models.DeploymentPreparedStackExtendAzureResource](../models/deploymentpreparedstackextendazureresource.md) | :heavy_minus_sign: | Azure-specific binding specification | +| `stack` | [models.DeploymentPreparedStackExtendAzureStack](../models/deploymentpreparedstackextendazurestack.md) | :heavy_minus_sign: | Azure-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendazuregrant.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendazuregrant.md new file mode 100644 index 000000000..8d2503955 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendazuregrant.md @@ -0,0 +1,21 @@ +# DeploymentPreparedStackExtendAzureGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { DeploymentPreparedStackExtendAzureGrant } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackExtendAzureGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendazureresource.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendazureresource.md new file mode 100644 index 000000000..17834cabf --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendazureresource.md @@ -0,0 +1,19 @@ +# DeploymentPreparedStackExtendAzureResource + +Azure-specific binding specification + +## Example Usage + +```typescript +import { DeploymentPreparedStackExtendAzureResource } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackExtendAzureResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendazurestack.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendazurestack.md new file mode 100644 index 000000000..f9fe64024 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendazurestack.md @@ -0,0 +1,19 @@ +# DeploymentPreparedStackExtendAzureStack + +Azure-specific binding specification + +## Example Usage + +```typescript +import { DeploymentPreparedStackExtendAzureStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackExtendAzureStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendconditionresource.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendconditionresource.md new file mode 100644 index 000000000..ca4fb97cd --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendconditionresource.md @@ -0,0 +1,21 @@ +# DeploymentPreparedStackExtendConditionResource + +GCP IAM condition + +## Example Usage + +```typescript +import { DeploymentPreparedStackExtendConditionResource } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackExtendConditionResource = { + expression: "", + title: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendconditionstack.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendconditionstack.md new file mode 100644 index 000000000..e6e9a685f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendconditionstack.md @@ -0,0 +1,21 @@ +# DeploymentPreparedStackExtendConditionStack + +GCP IAM condition + +## Example Usage + +```typescript +import { DeploymentPreparedStackExtendConditionStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackExtendConditionStack = { + expression: "", + title: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendeffect.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendeffect.md new file mode 100644 index 000000000..bda4e8319 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendeffect.md @@ -0,0 +1,17 @@ +# DeploymentPreparedStackExtendEffect + +IAM effect. Defaults to Allow. + +## Example Usage + +```typescript +import { DeploymentPreparedStackExtendEffect } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackExtendEffect = "Deny"; +``` + +## Values + +```typescript +"Allow" | "Deny" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendgcp.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendgcp.md new file mode 100644 index 000000000..938828db3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendgcp.md @@ -0,0 +1,23 @@ +# DeploymentPreparedStackExtendGcp + +GCP-specific platform permission configuration + +## Example Usage + +```typescript +import { DeploymentPreparedStackExtendGcp } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackExtendGcp = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | +| `binding` | [models.DeploymentPreparedStackExtendGcpBinding](../models/deploymentpreparedstackextendgcpbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.DeploymentPreparedStackExtendGcpGrant](../models/deploymentpreparedstackextendgcpgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendgcpbinding.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendgcpbinding.md new file mode 100644 index 000000000..f403896b7 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendgcpbinding.md @@ -0,0 +1,18 @@ +# DeploymentPreparedStackExtendGcpBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { DeploymentPreparedStackExtendGcpBinding } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackExtendGcpBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `resource` | [models.DeploymentPreparedStackExtendGcpResource](../models/deploymentpreparedstackextendgcpresource.md) | :heavy_minus_sign: | GCP-specific binding specification | +| `stack` | [models.DeploymentPreparedStackExtendGcpStack](../models/deploymentpreparedstackextendgcpstack.md) | :heavy_minus_sign: | GCP-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendgcpgrant.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendgcpgrant.md new file mode 100644 index 000000000..0e0545a4c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendgcpgrant.md @@ -0,0 +1,21 @@ +# DeploymentPreparedStackExtendGcpGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { DeploymentPreparedStackExtendGcpGrant } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackExtendGcpGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendgcpresource.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendgcpresource.md new file mode 100644 index 000000000..cee74aa6c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendgcpresource.md @@ -0,0 +1,20 @@ +# DeploymentPreparedStackExtendGcpResource + +GCP-specific binding specification + +## Example Usage + +```typescript +import { DeploymentPreparedStackExtendGcpResource } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackExtendGcpResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `condition` | *models.DeploymentPreparedStackExtendResourceConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendgcpstack.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendgcpstack.md new file mode 100644 index 000000000..b59c07eb2 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendgcpstack.md @@ -0,0 +1,20 @@ +# DeploymentPreparedStackExtendGcpStack + +GCP-specific binding specification + +## Example Usage + +```typescript +import { DeploymentPreparedStackExtendGcpStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackExtendGcpStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------- | --------------------------------------------------------- | --------------------------------------------------------- | --------------------------------------------------------- | +| `condition` | *models.DeploymentPreparedStackExtendStackConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendplatforms.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendplatforms.md new file mode 100644 index 000000000..21dc25c05 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendplatforms.md @@ -0,0 +1,19 @@ +# DeploymentPreparedStackExtendPlatforms + +Platform-specific permission configurations + +## Example Usage + +```typescript +import { DeploymentPreparedStackExtendPlatforms } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackExtendPlatforms = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| `aws` | [models.DeploymentPreparedStackExtendAw](../models/deploymentpreparedstackextendaw.md)[] | :heavy_minus_sign: | AWS permission configurations | +| `azure` | [models.DeploymentPreparedStackExtendAzure](../models/deploymentpreparedstackextendazure.md)[] | :heavy_minus_sign: | Azure permission configurations | +| `gcp` | [models.DeploymentPreparedStackExtendGcp](../models/deploymentpreparedstackextendgcp.md)[] | :heavy_minus_sign: | GCP permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendresourceconditionunion.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendresourceconditionunion.md new file mode 100644 index 000000000..ff6909e98 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendresourceconditionunion.md @@ -0,0 +1,20 @@ +# DeploymentPreparedStackExtendResourceConditionUnion + + +## Supported Types + +### `models.DeploymentPreparedStackExtendConditionResource` + +```typescript +const value: models.DeploymentPreparedStackExtendConditionResource = { + expression: "", + title: "", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendstackconditionunion.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendstackconditionunion.md new file mode 100644 index 000000000..da60c1a50 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendstackconditionunion.md @@ -0,0 +1,20 @@ +# DeploymentPreparedStackExtendStackConditionUnion + + +## Supported Types + +### `models.DeploymentPreparedStackExtendConditionStack` + +```typescript +const value: models.DeploymentPreparedStackExtendConditionStack = { + expression: "", + title: "", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendunion.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendunion.md new file mode 100644 index 000000000..9037be26c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackextendunion.md @@ -0,0 +1,23 @@ +# DeploymentPreparedStackExtendUnion + +Reference to a permission set - either by name or inline definition + + +## Supported Types + +### `models.DeploymentPreparedStackExtend` + +```typescript +const value: models.DeploymentPreparedStackExtend = { + description: "forswear behind ew reiterate rubric putrefy", + id: "", + platforms: {}, +}; +``` + +### `string` + +```typescript +const value: string = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackinput.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackinput.md new file mode 100644 index 000000000..b7f4ccd1f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackinput.md @@ -0,0 +1,34 @@ +# DeploymentPreparedStackInput + +Stack input definition serialized into a release stack. + +## Example Usage + +```typescript +import { DeploymentPreparedStackInput } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackInput = { + description: "formation um oh", + id: "", + kind: "number", + label: "", + providedBy: [], + required: true, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `default` | *models.DeploymentPreparedStackDefaultUnion* | :heavy_minus_sign: | N/A | +| `description` | *string* | :heavy_check_mark: | Human-facing helper text. | +| `env` | [models.DeploymentPreparedStackEnv](../models/deploymentpreparedstackenv.md)[] | :heavy_minus_sign: | Runtime env-var mappings for v1 input resolution. | +| `id` | *string* | :heavy_check_mark: | Stable input ID used by CLI/API calls. | +| `kind` | [models.DeploymentPreparedStackKind](../models/deploymentpreparedstackkind.md) | :heavy_check_mark: | Primitive stack input kind. | +| `label` | *string* | :heavy_check_mark: | Human-facing field label. | +| `placeholder` | *string* | :heavy_minus_sign: | Example placeholder shown in UI. | +| `platforms` | [models.DeploymentPreparedStackPlatform](../models/deploymentpreparedstackplatform.md)[] | :heavy_minus_sign: | Platforms where this input applies. | +| `providedBy` | [models.DeploymentPreparedStackProvidedBy](../models/deploymentpreparedstackprovidedby.md)[] | :heavy_check_mark: | Who can provide this value. | +| `required` | *boolean* | :heavy_check_mark: | Whether a resolved value is required before deployment can proceed. | +| `validation` | *models.DeploymentPreparedStackValidationUnion* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackkind.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackkind.md new file mode 100644 index 000000000..9fcd2454b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackkind.md @@ -0,0 +1,17 @@ +# DeploymentPreparedStackKind + +Primitive stack input kind. + +## Example Usage + +```typescript +import { DeploymentPreparedStackKind } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackKind = "number"; +``` + +## Values + +```typescript +"string" | "secret" | "number" | "integer" | "boolean" | "enum" | "stringList" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackmanagement1.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackmanagement1.md new file mode 100644 index 000000000..2c857a278 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackmanagement1.md @@ -0,0 +1,31 @@ +# DeploymentPreparedStackManagement1 + +## Example Usage + +```typescript +import { DeploymentPreparedStackManagement1 } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackManagement1 = { + extend: { + "key": [ + "", + ], + "key1": [ + { + description: "netsuke delectable recklessly dramatic brr for", + id: "", + platforms: {}, + }, + ], + "key2": [ + "", + ], + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | +| `extend` | Record | :heavy_check_mark: | Permission profile that maps resources to permission sets
Key can be "*" for all resources or resource name for specific resource | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackmanagement2.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackmanagement2.md new file mode 100644 index 000000000..a14e6ffce --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackmanagement2.md @@ -0,0 +1,17 @@ +# DeploymentPreparedStackManagement2 + +## Example Usage + +```typescript +import { DeploymentPreparedStackManagement2 } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackManagement2 = { + override: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | +| `override` | Record | :heavy_check_mark: | Permission profile that maps resources to permission sets
Key can be "*" for all resources or resource name for specific resource | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackmanagementenum.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackmanagementenum.md new file mode 100644 index 000000000..cf690861f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackmanagementenum.md @@ -0,0 +1,15 @@ +# DeploymentPreparedStackManagementEnum + +## Example Usage + +```typescript +import { DeploymentPreparedStackManagementEnum } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackManagementEnum = "auto"; +``` + +## Values + +```typescript +"auto" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackmanagementunion.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackmanagementunion.md new file mode 100644 index 000000000..a2a73dd95 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackmanagementunion.md @@ -0,0 +1,43 @@ +# DeploymentPreparedStackManagementUnion + +Management permissions configuration for stack management access + + +## Supported Types + +### `models.DeploymentPreparedStackManagement1` + +```typescript +const value: models.DeploymentPreparedStackManagement1 = { + extend: { + "key": [ + "", + ], + "key1": [ + { + description: "netsuke delectable recklessly dramatic brr for", + id: "", + platforms: {}, + }, + ], + "key2": [ + "", + ], + }, +}; +``` + +### `models.DeploymentPreparedStackManagement2` + +```typescript +const value: models.DeploymentPreparedStackManagement2 = { + override: {}, +}; +``` + +### `models.DeploymentPreparedStackManagementEnum` + +```typescript +const value: models.DeploymentPreparedStackManagementEnum = "auto"; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverride.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverride.md new file mode 100644 index 000000000..e00570869 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverride.md @@ -0,0 +1,23 @@ +# DeploymentPreparedStackOverride + +A permission set that can be applied across different cloud platforms + +## Example Usage + +```typescript +import { DeploymentPreparedStackOverride } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackOverride = { + description: "white redraw rectangular warm", + id: "", + platforms: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `description` | *string* | :heavy_check_mark: | Human-readable description of what this permission set allows | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the permission set (e.g., "storage/data-read") | +| `platforms` | [models.DeploymentPreparedStackOverridePlatforms](../models/deploymentpreparedstackoverrideplatforms.md) | :heavy_check_mark: | Platform-specific permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverrideaw.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverrideaw.md new file mode 100644 index 000000000..041f4958c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverrideaw.md @@ -0,0 +1,24 @@ +# DeploymentPreparedStackOverrideAw + +AWS-specific platform permission configuration + +## Example Usage + +```typescript +import { DeploymentPreparedStackOverrideAw } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackOverrideAw = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `binding` | [models.DeploymentPreparedStackOverrideAwBinding](../models/deploymentpreparedstackoverrideawbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `effect` | [models.DeploymentPreparedStackOverrideEffect](../models/deploymentpreparedstackoverrideeffect.md) | :heavy_minus_sign: | IAM effect. Defaults to Allow. | +| `grant` | [models.DeploymentPreparedStackOverrideAwGrant](../models/deploymentpreparedstackoverrideawgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverrideawbinding.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverrideawbinding.md new file mode 100644 index 000000000..6d80bc381 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverrideawbinding.md @@ -0,0 +1,18 @@ +# DeploymentPreparedStackOverrideAwBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { DeploymentPreparedStackOverrideAwBinding } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackOverrideAwBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | +| `resource` | [models.DeploymentPreparedStackOverrideAwResource](../models/deploymentpreparedstackoverrideawresource.md) | :heavy_minus_sign: | AWS-specific binding specification | +| `stack` | [models.DeploymentPreparedStackOverrideAwStack](../models/deploymentpreparedstackoverrideawstack.md) | :heavy_minus_sign: | AWS-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverrideawgrant.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverrideawgrant.md new file mode 100644 index 000000000..3654279ac --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverrideawgrant.md @@ -0,0 +1,21 @@ +# DeploymentPreparedStackOverrideAwGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { DeploymentPreparedStackOverrideAwGrant } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackOverrideAwGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverrideawresource.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverrideawresource.md new file mode 100644 index 000000000..ac3159750 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverrideawresource.md @@ -0,0 +1,24 @@ +# DeploymentPreparedStackOverrideAwResource + +AWS-specific binding specification + +## Example Usage + +```typescript +import { DeploymentPreparedStackOverrideAwResource } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackOverrideAwResource = { + resources: [ + "", + "", + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverrideawstack.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverrideawstack.md new file mode 100644 index 000000000..fda89b605 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverrideawstack.md @@ -0,0 +1,20 @@ +# DeploymentPreparedStackOverrideAwStack + +AWS-specific binding specification + +## Example Usage + +```typescript +import { DeploymentPreparedStackOverrideAwStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackOverrideAwStack = { + resources: [], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverrideazure.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverrideazure.md new file mode 100644 index 000000000..fcff87173 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverrideazure.md @@ -0,0 +1,23 @@ +# DeploymentPreparedStackOverrideAzure + +Azure-specific platform permission configuration + +## Example Usage + +```typescript +import { DeploymentPreparedStackOverrideAzure } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackOverrideAzure = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.DeploymentPreparedStackOverrideAzureBinding](../models/deploymentpreparedstackoverrideazurebinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.DeploymentPreparedStackOverrideAzureGrant](../models/deploymentpreparedstackoverrideazuregrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverrideazurebinding.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverrideazurebinding.md new file mode 100644 index 000000000..388a05914 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverrideazurebinding.md @@ -0,0 +1,18 @@ +# DeploymentPreparedStackOverrideAzureBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { DeploymentPreparedStackOverrideAzureBinding } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackOverrideAzureBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.DeploymentPreparedStackOverrideAzureResource](../models/deploymentpreparedstackoverrideazureresource.md) | :heavy_minus_sign: | Azure-specific binding specification | +| `stack` | [models.DeploymentPreparedStackOverrideAzureStack](../models/deploymentpreparedstackoverrideazurestack.md) | :heavy_minus_sign: | Azure-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverrideazuregrant.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverrideazuregrant.md new file mode 100644 index 000000000..870503e41 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverrideazuregrant.md @@ -0,0 +1,21 @@ +# DeploymentPreparedStackOverrideAzureGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { DeploymentPreparedStackOverrideAzureGrant } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackOverrideAzureGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverrideazureresource.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverrideazureresource.md new file mode 100644 index 000000000..59701380b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverrideazureresource.md @@ -0,0 +1,19 @@ +# DeploymentPreparedStackOverrideAzureResource + +Azure-specific binding specification + +## Example Usage + +```typescript +import { DeploymentPreparedStackOverrideAzureResource } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackOverrideAzureResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverrideazurestack.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverrideazurestack.md new file mode 100644 index 000000000..7d0c7a44f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverrideazurestack.md @@ -0,0 +1,19 @@ +# DeploymentPreparedStackOverrideAzureStack + +Azure-specific binding specification + +## Example Usage + +```typescript +import { DeploymentPreparedStackOverrideAzureStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackOverrideAzureStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverrideconditionresource.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverrideconditionresource.md new file mode 100644 index 000000000..1623a0101 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverrideconditionresource.md @@ -0,0 +1,21 @@ +# DeploymentPreparedStackOverrideConditionResource + +GCP IAM condition + +## Example Usage + +```typescript +import { DeploymentPreparedStackOverrideConditionResource } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackOverrideConditionResource = { + expression: "", + title: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverrideconditionstack.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverrideconditionstack.md new file mode 100644 index 000000000..1c27c7987 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverrideconditionstack.md @@ -0,0 +1,21 @@ +# DeploymentPreparedStackOverrideConditionStack + +GCP IAM condition + +## Example Usage + +```typescript +import { DeploymentPreparedStackOverrideConditionStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackOverrideConditionStack = { + expression: "", + title: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverrideeffect.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverrideeffect.md new file mode 100644 index 000000000..b1b078d25 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverrideeffect.md @@ -0,0 +1,17 @@ +# DeploymentPreparedStackOverrideEffect + +IAM effect. Defaults to Allow. + +## Example Usage + +```typescript +import { DeploymentPreparedStackOverrideEffect } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackOverrideEffect = "Deny"; +``` + +## Values + +```typescript +"Allow" | "Deny" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverridegcp.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverridegcp.md new file mode 100644 index 000000000..743704c24 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverridegcp.md @@ -0,0 +1,23 @@ +# DeploymentPreparedStackOverrideGcp + +GCP-specific platform permission configuration + +## Example Usage + +```typescript +import { DeploymentPreparedStackOverrideGcp } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackOverrideGcp = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | +| `binding` | [models.DeploymentPreparedStackOverrideGcpBinding](../models/deploymentpreparedstackoverridegcpbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.DeploymentPreparedStackOverrideGcpGrant](../models/deploymentpreparedstackoverridegcpgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverridegcpbinding.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverridegcpbinding.md new file mode 100644 index 000000000..e0ca9b2cd --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverridegcpbinding.md @@ -0,0 +1,18 @@ +# DeploymentPreparedStackOverrideGcpBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { DeploymentPreparedStackOverrideGcpBinding } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackOverrideGcpBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | +| `resource` | [models.DeploymentPreparedStackOverrideGcpResource](../models/deploymentpreparedstackoverridegcpresource.md) | :heavy_minus_sign: | GCP-specific binding specification | +| `stack` | [models.DeploymentPreparedStackOverrideGcpStack](../models/deploymentpreparedstackoverridegcpstack.md) | :heavy_minus_sign: | GCP-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverridegcpgrant.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverridegcpgrant.md new file mode 100644 index 000000000..92a6051c8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverridegcpgrant.md @@ -0,0 +1,21 @@ +# DeploymentPreparedStackOverrideGcpGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { DeploymentPreparedStackOverrideGcpGrant } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackOverrideGcpGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverridegcpresource.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverridegcpresource.md new file mode 100644 index 000000000..2964ee8f3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverridegcpresource.md @@ -0,0 +1,20 @@ +# DeploymentPreparedStackOverrideGcpResource + +GCP-specific binding specification + +## Example Usage + +```typescript +import { DeploymentPreparedStackOverrideGcpResource } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackOverrideGcpResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `condition` | *models.DeploymentPreparedStackOverrideResourceConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverridegcpstack.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverridegcpstack.md new file mode 100644 index 000000000..5cf8c9a85 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverridegcpstack.md @@ -0,0 +1,20 @@ +# DeploymentPreparedStackOverrideGcpStack + +GCP-specific binding specification + +## Example Usage + +```typescript +import { DeploymentPreparedStackOverrideGcpStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackOverrideGcpStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | +| `condition` | *models.DeploymentPreparedStackOverrideStackConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverrideplatforms.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverrideplatforms.md new file mode 100644 index 000000000..bea70484d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverrideplatforms.md @@ -0,0 +1,19 @@ +# DeploymentPreparedStackOverridePlatforms + +Platform-specific permission configurations + +## Example Usage + +```typescript +import { DeploymentPreparedStackOverridePlatforms } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackOverridePlatforms = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `aws` | [models.DeploymentPreparedStackOverrideAw](../models/deploymentpreparedstackoverrideaw.md)[] | :heavy_minus_sign: | AWS permission configurations | +| `azure` | [models.DeploymentPreparedStackOverrideAzure](../models/deploymentpreparedstackoverrideazure.md)[] | :heavy_minus_sign: | Azure permission configurations | +| `gcp` | [models.DeploymentPreparedStackOverrideGcp](../models/deploymentpreparedstackoverridegcp.md)[] | :heavy_minus_sign: | GCP permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverrideresourceconditionunion.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverrideresourceconditionunion.md new file mode 100644 index 000000000..707b1f625 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverrideresourceconditionunion.md @@ -0,0 +1,20 @@ +# DeploymentPreparedStackOverrideResourceConditionUnion + + +## Supported Types + +### `models.DeploymentPreparedStackOverrideConditionResource` + +```typescript +const value: models.DeploymentPreparedStackOverrideConditionResource = { + expression: "", + title: "", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverridestackconditionunion.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverridestackconditionunion.md new file mode 100644 index 000000000..704c1014a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverridestackconditionunion.md @@ -0,0 +1,20 @@ +# DeploymentPreparedStackOverrideStackConditionUnion + + +## Supported Types + +### `models.DeploymentPreparedStackOverrideConditionStack` + +```typescript +const value: models.DeploymentPreparedStackOverrideConditionStack = { + expression: "", + title: "", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverrideunion.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverrideunion.md new file mode 100644 index 000000000..7f2699113 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackoverrideunion.md @@ -0,0 +1,23 @@ +# DeploymentPreparedStackOverrideUnion + +Reference to a permission set - either by name or inline definition + + +## Supported Types + +### `models.DeploymentPreparedStackOverride` + +```typescript +const value: models.DeploymentPreparedStackOverride = { + description: "white redraw rectangular warm", + id: "", + platforms: {}, +}; +``` + +### `string` + +```typescript +const value: string = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackpermissions.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackpermissions.md new file mode 100644 index 000000000..e99b08086 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackpermissions.md @@ -0,0 +1,41 @@ +# DeploymentPreparedStackPermissions + +Combined permissions configuration that contains both profiles and management + +## Example Usage + +```typescript +import { DeploymentPreparedStackPermissions } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackPermissions = { + profiles: { + "key": { + "key": [ + "", + ], + "key1": [ + "", + ], + "key2": [], + }, + "key1": { + "key": [ + { + description: + "impartial pigpen whenever whose arid sailor bleak spirited elastic though", + id: "", + platforms: {}, + }, + ], + "key1": [], + }, + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| `management` | *models.DeploymentPreparedStackManagementUnion* | :heavy_minus_sign: | Management permissions configuration for stack management access | +| `profiles` | Record> | :heavy_check_mark: | Permission profiles that define access control for compute services
Key is the profile name, value is the permission configuration | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofile.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofile.md new file mode 100644 index 000000000..0d4f6af26 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofile.md @@ -0,0 +1,23 @@ +# DeploymentPreparedStackProfile + +A permission set that can be applied across different cloud platforms + +## Example Usage + +```typescript +import { DeploymentPreparedStackProfile } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackProfile = { + description: "below but coop square too", + id: "", + platforms: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | +| `description` | *string* | :heavy_check_mark: | Human-readable description of what this permission set allows | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the permission set (e.g., "storage/data-read") | +| `platforms` | [models.DeploymentPreparedStackProfilePlatforms](../models/deploymentpreparedstackprofileplatforms.md) | :heavy_check_mark: | Platform-specific permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofileaw.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofileaw.md new file mode 100644 index 000000000..3acf63df8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofileaw.md @@ -0,0 +1,24 @@ +# DeploymentPreparedStackProfileAw + +AWS-specific platform permission configuration + +## Example Usage + +```typescript +import { DeploymentPreparedStackProfileAw } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackProfileAw = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | +| `binding` | [models.DeploymentPreparedStackProfileAwBinding](../models/deploymentpreparedstackprofileawbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `effect` | [models.DeploymentPreparedStackProfileEffect](../models/deploymentpreparedstackprofileeffect.md) | :heavy_minus_sign: | IAM effect. Defaults to Allow. | +| `grant` | [models.DeploymentPreparedStackProfileAwGrant](../models/deploymentpreparedstackprofileawgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofileawbinding.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofileawbinding.md new file mode 100644 index 000000000..7e2d2694c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofileawbinding.md @@ -0,0 +1,18 @@ +# DeploymentPreparedStackProfileAwBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { DeploymentPreparedStackProfileAwBinding } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackProfileAwBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `resource` | [models.DeploymentPreparedStackProfileAwResource](../models/deploymentpreparedstackprofileawresource.md) | :heavy_minus_sign: | AWS-specific binding specification | +| `stack` | [models.DeploymentPreparedStackProfileAwStack](../models/deploymentpreparedstackprofileawstack.md) | :heavy_minus_sign: | AWS-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofileawgrant.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofileawgrant.md new file mode 100644 index 000000000..28a115144 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofileawgrant.md @@ -0,0 +1,21 @@ +# DeploymentPreparedStackProfileAwGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { DeploymentPreparedStackProfileAwGrant } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackProfileAwGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofileawresource.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofileawresource.md new file mode 100644 index 000000000..463bfa6e4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofileawresource.md @@ -0,0 +1,22 @@ +# DeploymentPreparedStackProfileAwResource + +AWS-specific binding specification + +## Example Usage + +```typescript +import { DeploymentPreparedStackProfileAwResource } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackProfileAwResource = { + resources: [ + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofileawstack.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofileawstack.md new file mode 100644 index 000000000..be3e8a9e8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofileawstack.md @@ -0,0 +1,23 @@ +# DeploymentPreparedStackProfileAwStack + +AWS-specific binding specification + +## Example Usage + +```typescript +import { DeploymentPreparedStackProfileAwStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackProfileAwStack = { + resources: [ + "", + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofileazure.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofileazure.md new file mode 100644 index 000000000..4df7f8abc --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofileazure.md @@ -0,0 +1,23 @@ +# DeploymentPreparedStackProfileAzure + +Azure-specific platform permission configuration + +## Example Usage + +```typescript +import { DeploymentPreparedStackProfileAzure } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackProfileAzure = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | +| `binding` | [models.DeploymentPreparedStackProfileAzureBinding](../models/deploymentpreparedstackprofileazurebinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.DeploymentPreparedStackProfileAzureGrant](../models/deploymentpreparedstackprofileazuregrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofileazurebinding.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofileazurebinding.md new file mode 100644 index 000000000..b42e7f914 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofileazurebinding.md @@ -0,0 +1,18 @@ +# DeploymentPreparedStackProfileAzureBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { DeploymentPreparedStackProfileAzureBinding } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackProfileAzureBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.DeploymentPreparedStackProfileAzureResource](../models/deploymentpreparedstackprofileazureresource.md) | :heavy_minus_sign: | Azure-specific binding specification | +| `stack` | [models.DeploymentPreparedStackProfileAzureStack](../models/deploymentpreparedstackprofileazurestack.md) | :heavy_minus_sign: | Azure-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofileazuregrant.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofileazuregrant.md new file mode 100644 index 000000000..ed38aa97d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofileazuregrant.md @@ -0,0 +1,21 @@ +# DeploymentPreparedStackProfileAzureGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { DeploymentPreparedStackProfileAzureGrant } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackProfileAzureGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofileazureresource.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofileazureresource.md new file mode 100644 index 000000000..5d9d7ca16 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofileazureresource.md @@ -0,0 +1,19 @@ +# DeploymentPreparedStackProfileAzureResource + +Azure-specific binding specification + +## Example Usage + +```typescript +import { DeploymentPreparedStackProfileAzureResource } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackProfileAzureResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofileazurestack.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofileazurestack.md new file mode 100644 index 000000000..6a47e683b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofileazurestack.md @@ -0,0 +1,19 @@ +# DeploymentPreparedStackProfileAzureStack + +Azure-specific binding specification + +## Example Usage + +```typescript +import { DeploymentPreparedStackProfileAzureStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackProfileAzureStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofileconditionresource.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofileconditionresource.md new file mode 100644 index 000000000..23dec5a1a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofileconditionresource.md @@ -0,0 +1,21 @@ +# DeploymentPreparedStackProfileConditionResource + +GCP IAM condition + +## Example Usage + +```typescript +import { DeploymentPreparedStackProfileConditionResource } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackProfileConditionResource = { + expression: "", + title: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofileconditionstack.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofileconditionstack.md new file mode 100644 index 000000000..1d1821b4d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofileconditionstack.md @@ -0,0 +1,21 @@ +# DeploymentPreparedStackProfileConditionStack + +GCP IAM condition + +## Example Usage + +```typescript +import { DeploymentPreparedStackProfileConditionStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackProfileConditionStack = { + expression: "", + title: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofileeffect.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofileeffect.md new file mode 100644 index 000000000..ab1e42c0e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofileeffect.md @@ -0,0 +1,17 @@ +# DeploymentPreparedStackProfileEffect + +IAM effect. Defaults to Allow. + +## Example Usage + +```typescript +import { DeploymentPreparedStackProfileEffect } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackProfileEffect = "Allow"; +``` + +## Values + +```typescript +"Allow" | "Deny" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofilegcp.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofilegcp.md new file mode 100644 index 000000000..b23ec4028 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofilegcp.md @@ -0,0 +1,23 @@ +# DeploymentPreparedStackProfileGcp + +GCP-specific platform permission configuration + +## Example Usage + +```typescript +import { DeploymentPreparedStackProfileGcp } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackProfileGcp = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `binding` | [models.DeploymentPreparedStackProfileGcpBinding](../models/deploymentpreparedstackprofilegcpbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.DeploymentPreparedStackProfileGcpGrant](../models/deploymentpreparedstackprofilegcpgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofilegcpbinding.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofilegcpbinding.md new file mode 100644 index 000000000..dcc7c6e24 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofilegcpbinding.md @@ -0,0 +1,18 @@ +# DeploymentPreparedStackProfileGcpBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { DeploymentPreparedStackProfileGcpBinding } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackProfileGcpBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | +| `resource` | [models.DeploymentPreparedStackProfileGcpResource](../models/deploymentpreparedstackprofilegcpresource.md) | :heavy_minus_sign: | GCP-specific binding specification | +| `stack` | [models.DeploymentPreparedStackProfileGcpStack](../models/deploymentpreparedstackprofilegcpstack.md) | :heavy_minus_sign: | GCP-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofilegcpgrant.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofilegcpgrant.md new file mode 100644 index 000000000..3a92f77f2 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofilegcpgrant.md @@ -0,0 +1,21 @@ +# DeploymentPreparedStackProfileGcpGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { DeploymentPreparedStackProfileGcpGrant } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackProfileGcpGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofilegcpresource.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofilegcpresource.md new file mode 100644 index 000000000..eba519313 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofilegcpresource.md @@ -0,0 +1,20 @@ +# DeploymentPreparedStackProfileGcpResource + +GCP-specific binding specification + +## Example Usage + +```typescript +import { DeploymentPreparedStackProfileGcpResource } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackProfileGcpResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | +| `condition` | *models.DeploymentPreparedStackProfileResourceConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofilegcpstack.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofilegcpstack.md new file mode 100644 index 000000000..f69439415 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofilegcpstack.md @@ -0,0 +1,20 @@ +# DeploymentPreparedStackProfileGcpStack + +GCP-specific binding specification + +## Example Usage + +```typescript +import { DeploymentPreparedStackProfileGcpStack } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackProfileGcpStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | +| `condition` | *models.DeploymentPreparedStackProfileStackConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofileplatforms.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofileplatforms.md new file mode 100644 index 000000000..00992d1f6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofileplatforms.md @@ -0,0 +1,19 @@ +# DeploymentPreparedStackProfilePlatforms + +Platform-specific permission configurations + +## Example Usage + +```typescript +import { DeploymentPreparedStackProfilePlatforms } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackProfilePlatforms = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `aws` | [models.DeploymentPreparedStackProfileAw](../models/deploymentpreparedstackprofileaw.md)[] | :heavy_minus_sign: | AWS permission configurations | +| `azure` | [models.DeploymentPreparedStackProfileAzure](../models/deploymentpreparedstackprofileazure.md)[] | :heavy_minus_sign: | Azure permission configurations | +| `gcp` | [models.DeploymentPreparedStackProfileGcp](../models/deploymentpreparedstackprofilegcp.md)[] | :heavy_minus_sign: | GCP permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofileresourceconditionunion.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofileresourceconditionunion.md new file mode 100644 index 000000000..f5e2bdf69 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofileresourceconditionunion.md @@ -0,0 +1,20 @@ +# DeploymentPreparedStackProfileResourceConditionUnion + + +## Supported Types + +### `models.DeploymentPreparedStackProfileConditionResource` + +```typescript +const value: models.DeploymentPreparedStackProfileConditionResource = { + expression: "", + title: "", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofilestackconditionunion.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofilestackconditionunion.md new file mode 100644 index 000000000..a301e7d1f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofilestackconditionunion.md @@ -0,0 +1,20 @@ +# DeploymentPreparedStackProfileStackConditionUnion + + +## Supported Types + +### `models.DeploymentPreparedStackProfileConditionStack` + +```typescript +const value: models.DeploymentPreparedStackProfileConditionStack = { + expression: "", + title: "", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofileunion.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofileunion.md new file mode 100644 index 000000000..4cdb53b0a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprofileunion.md @@ -0,0 +1,23 @@ +# DeploymentPreparedStackProfileUnion + +Reference to a permission set - either by name or inline definition + + +## Supported Types + +### `models.DeploymentPreparedStackProfile` + +```typescript +const value: models.DeploymentPreparedStackProfile = { + description: "below but coop square too", + id: "", + platforms: {}, +}; +``` + +### `string` + +```typescript +const value: string = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprovidedby.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprovidedby.md new file mode 100644 index 000000000..1fba716a2 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackprovidedby.md @@ -0,0 +1,17 @@ +# DeploymentPreparedStackProvidedBy + +Who can provide a stack input value. + +## Example Usage + +```typescript +import { DeploymentPreparedStackProvidedBy } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackProvidedBy = "developer"; +``` + +## Values + +```typescript +"developer" | "deployer" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackresources.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackresources.md index 51c0abc72..38a42b82c 100644 --- a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackresources.md +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackresources.md @@ -17,9 +17,10 @@ let value: DeploymentPreparedStackResources = { ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `config` | [models.DeploymentPreparedStackConfig](../models/deploymentpreparedstackconfig.md) | :heavy_check_mark: | 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` | [models.DeploymentPreparedStackDependency](../models/deploymentpreparedstackdependency.md)[] | :heavy_check_mark: | Additional dependencies for this resource beyond those defined in the resource itself.
The total dependencies are: resource.get_dependencies() + this list | -| `lifecycle` | [models.DeploymentPreparedStackLifecycle](../models/deploymentpreparedstacklifecycle.md) | :heavy_check_mark: | Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. | -| `remoteAccess` | *boolean* | :heavy_minus_sign: | Enable remote bindings for this resource (BYOB use case).
When true, binding params are synced to StackState's `remote_binding_params`.
Default: false (prevents sensitive data in synced state). | \ No newline at end of file +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `config` | [models.DeploymentPreparedStackConfig](../models/deploymentpreparedstackconfig.md) | :heavy_check_mark: | 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` | [models.DeploymentPreparedStackDependency](../models/deploymentpreparedstackdependency.md)[] | :heavy_check_mark: | Additional dependencies for this resource beyond those defined in the resource itself.
The total dependencies are: resource.get_dependencies() + this list | +| `enabledWhen` | *string* | :heavy_minus_sign: | 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. | +| `lifecycle` | [models.DeploymentPreparedStackLifecycle](../models/deploymentpreparedstacklifecycle.md) | :heavy_check_mark: | Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. | +| `remoteAccess` | *boolean* | :heavy_minus_sign: | Enable remote bindings for this resource (BYOB use case).
When true, binding params are synced to StackState's `remote_binding_params`.
Default: false (prevents sensitive data in synced state). | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstacksupportedplatform.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstacksupportedplatform.md new file mode 100644 index 000000000..5f1b54743 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstacksupportedplatform.md @@ -0,0 +1,17 @@ +# DeploymentPreparedStackSupportedPlatform + +Represents the target cloud platform. + +## Example Usage + +```typescript +import { DeploymentPreparedStackSupportedPlatform } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackSupportedPlatform = "kubernetes"; +``` + +## Values + +```typescript +"aws" | "gcp" | "azure" | "kubernetes" | "machines" | "local" | "test" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstacktypeboolean.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstacktypeboolean.md new file mode 100644 index 000000000..69fa7cff0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstacktypeboolean.md @@ -0,0 +1,15 @@ +# DeploymentPreparedStackTypeBoolean + +## Example Usage + +```typescript +import { DeploymentPreparedStackTypeBoolean } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackTypeBoolean = "boolean"; +``` + +## Values + +```typescript +"boolean" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstacktypeenvenum.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstacktypeenvenum.md new file mode 100644 index 000000000..639ac47d3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstacktypeenvenum.md @@ -0,0 +1,17 @@ +# DeploymentPreparedStackTypeEnvEnum + +Environment variable handling for a stack input mapping. + +## Example Usage + +```typescript +import { DeploymentPreparedStackTypeEnvEnum } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackTypeEnvEnum = "secret"; +``` + +## Values + +```typescript +"plain" | "secret" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstacktypenumber.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstacktypenumber.md new file mode 100644 index 000000000..1b7af4b80 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstacktypenumber.md @@ -0,0 +1,15 @@ +# DeploymentPreparedStackTypeNumber + +## Example Usage + +```typescript +import { DeploymentPreparedStackTypeNumber } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackTypeNumber = "number"; +``` + +## Values + +```typescript +"number" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstacktypestring.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstacktypestring.md new file mode 100644 index 000000000..7d328260a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstacktypestring.md @@ -0,0 +1,15 @@ +# DeploymentPreparedStackTypeString + +## Example Usage + +```typescript +import { DeploymentPreparedStackTypeString } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackTypeString = "string"; +``` + +## Values + +```typescript +"string" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstacktypestringlist.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstacktypestringlist.md new file mode 100644 index 000000000..d84c02123 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstacktypestringlist.md @@ -0,0 +1,15 @@ +# DeploymentPreparedStackTypeStringList + +## Example Usage + +```typescript +import { DeploymentPreparedStackTypeStringList } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackTypeStringList = "stringList"; +``` + +## Values + +```typescript +"stringList" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstacktypeunion.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstacktypeunion.md new file mode 100644 index 000000000..958a123f7 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstacktypeunion.md @@ -0,0 +1,17 @@ +# DeploymentPreparedStackTypeUnion + + +## Supported Types + +### `models.DeploymentPreparedStackTypeEnvEnum` + +```typescript +const value: models.DeploymentPreparedStackTypeEnvEnum = "plain"; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackvalidation.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackvalidation.md new file mode 100644 index 000000000..20e4aa908 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackvalidation.md @@ -0,0 +1,25 @@ +# DeploymentPreparedStackValidation + +Portable stack input validation constraints. + +## Example Usage + +```typescript +import { DeploymentPreparedStackValidation } from "@alienplatform/platform-api/models"; + +let value: DeploymentPreparedStackValidation = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | +| `format` | *string* | :heavy_minus_sign: | Semantic format hint such as url. | +| `max` | *string* | :heavy_minus_sign: | Maximum number. | +| `maxItems` | *number* | :heavy_minus_sign: | Maximum string-list items. | +| `maxLength` | *number* | :heavy_minus_sign: | Maximum string length. | +| `min` | *string* | :heavy_minus_sign: | Minimum number. | +| `minItems` | *number* | :heavy_minus_sign: | Minimum string-list items. | +| `minLength` | *number* | :heavy_minus_sign: | Minimum string length. | +| `pattern` | *string* | :heavy_minus_sign: | Portable whole-value regex pattern. | +| `values` | *string*[] | :heavy_minus_sign: | Allowed string enum values. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpreparedstackvalidationunion.md b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackvalidationunion.md new file mode 100644 index 000000000..bd5c40fe7 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentpreparedstackvalidationunion.md @@ -0,0 +1,17 @@ +# DeploymentPreparedStackValidationUnion + + +## Supported Types + +### `models.DeploymentPreparedStackValidation` + +```typescript +const value: models.DeploymentPreparedStackValidation = {}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentprofile.md b/client-sdks/platform/typescript/docs/models/deploymentprofile.md deleted file mode 100644 index c5e7249db..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentprofile.md +++ /dev/null @@ -1,24 +0,0 @@ -# DeploymentProfile - -A permission set that can be applied across different cloud platforms - -## Example Usage - -```typescript -import { DeploymentProfile } from "@alienplatform/platform-api/models"; - -let value: DeploymentProfile = { - description: - "across unto comfortable meh kookily paltry hover while intensely", - id: "", - platforms: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | -| `description` | *string* | :heavy_check_mark: | Human-readable description of what this permission set allows | -| `id` | *string* | :heavy_check_mark: | Unique identifier for the permission set (e.g., "storage/data-read") | -| `platforms` | [models.DeploymentProfilePlatforms](../models/deploymentprofileplatforms.md) | :heavy_check_mark: | Platform-specific permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentprofileaw.md b/client-sdks/platform/typescript/docs/models/deploymentprofileaw.md deleted file mode 100644 index 297636daa..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentprofileaw.md +++ /dev/null @@ -1,24 +0,0 @@ -# DeploymentProfileAw - -AWS-specific platform permission configuration - -## Example Usage - -```typescript -import { DeploymentProfileAw } from "@alienplatform/platform-api/models"; - -let value: DeploymentProfileAw = { - binding: {}, - grant: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | -| `binding` | [models.DeploymentProfileAwBinding](../models/deploymentprofileawbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | -| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | -| `effect` | [models.DeploymentProfileEffect](../models/deploymentprofileeffect.md) | :heavy_minus_sign: | IAM effect. Defaults to Allow. | -| `grant` | [models.DeploymentProfileAwGrant](../models/deploymentprofileawgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | -| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentprofileawbinding.md b/client-sdks/platform/typescript/docs/models/deploymentprofileawbinding.md deleted file mode 100644 index d1d6c7e72..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentprofileawbinding.md +++ /dev/null @@ -1,18 +0,0 @@ -# DeploymentProfileAwBinding - -Generic binding configuration for permissions - -## Example Usage - -```typescript -import { DeploymentProfileAwBinding } from "@alienplatform/platform-api/models"; - -let value: DeploymentProfileAwBinding = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | -| `resource` | [models.DeploymentProfileAwResource](../models/deploymentprofileawresource.md) | :heavy_minus_sign: | AWS-specific binding specification | -| `stack` | [models.DeploymentProfileAwStack](../models/deploymentprofileawstack.md) | :heavy_minus_sign: | AWS-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentprofileawgrant.md b/client-sdks/platform/typescript/docs/models/deploymentprofileawgrant.md deleted file mode 100644 index 817d6abba..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentprofileawgrant.md +++ /dev/null @@ -1,21 +0,0 @@ -# DeploymentProfileAwGrant - -Grant permissions for a specific cloud platform - -## Example Usage - -```typescript -import { DeploymentProfileAwGrant } from "@alienplatform/platform-api/models"; - -let value: DeploymentProfileAwGrant = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | -| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | -| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | -| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | -| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentprofileawresource.md b/client-sdks/platform/typescript/docs/models/deploymentprofileawresource.md deleted file mode 100644 index 3cb8ca1b4..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentprofileawresource.md +++ /dev/null @@ -1,20 +0,0 @@ -# DeploymentProfileAwResource - -AWS-specific binding specification - -## Example Usage - -```typescript -import { DeploymentProfileAwResource } from "@alienplatform/platform-api/models"; - -let value: DeploymentProfileAwResource = { - resources: [], -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | -| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentprofileawstack.md b/client-sdks/platform/typescript/docs/models/deploymentprofileawstack.md deleted file mode 100644 index 20186ebad..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentprofileawstack.md +++ /dev/null @@ -1,23 +0,0 @@ -# DeploymentProfileAwStack - -AWS-specific binding specification - -## Example Usage - -```typescript -import { DeploymentProfileAwStack } from "@alienplatform/platform-api/models"; - -let value: DeploymentProfileAwStack = { - resources: [ - "", - "", - ], -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | -| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentprofileazure.md b/client-sdks/platform/typescript/docs/models/deploymentprofileazure.md deleted file mode 100644 index f3b706a2e..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentprofileazure.md +++ /dev/null @@ -1,23 +0,0 @@ -# DeploymentProfileAzure - -Azure-specific platform permission configuration - -## Example Usage - -```typescript -import { DeploymentProfileAzure } from "@alienplatform/platform-api/models"; - -let value: DeploymentProfileAzure = { - binding: {}, - grant: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | -| `binding` | [models.DeploymentProfileAzureBinding](../models/deploymentprofileazurebinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | -| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | -| `grant` | [models.DeploymentProfileAzureGrant](../models/deploymentprofileazuregrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | -| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentprofileazurebinding.md b/client-sdks/platform/typescript/docs/models/deploymentprofileazurebinding.md deleted file mode 100644 index 2cf6bb8ac..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentprofileazurebinding.md +++ /dev/null @@ -1,18 +0,0 @@ -# DeploymentProfileAzureBinding - -Generic binding configuration for permissions - -## Example Usage - -```typescript -import { DeploymentProfileAzureBinding } from "@alienplatform/platform-api/models"; - -let value: DeploymentProfileAzureBinding = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | -| `resource` | [models.DeploymentProfileAzureResource](../models/deploymentprofileazureresource.md) | :heavy_minus_sign: | Azure-specific binding specification | -| `stack` | [models.DeploymentProfileAzureStack](../models/deploymentprofileazurestack.md) | :heavy_minus_sign: | Azure-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentprofileazuregrant.md b/client-sdks/platform/typescript/docs/models/deploymentprofileazuregrant.md deleted file mode 100644 index cdab8b12a..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentprofileazuregrant.md +++ /dev/null @@ -1,21 +0,0 @@ -# DeploymentProfileAzureGrant - -Grant permissions for a specific cloud platform - -## Example Usage - -```typescript -import { DeploymentProfileAzureGrant } from "@alienplatform/platform-api/models"; - -let value: DeploymentProfileAzureGrant = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | -| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | -| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | -| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | -| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentprofileazureresource.md b/client-sdks/platform/typescript/docs/models/deploymentprofileazureresource.md deleted file mode 100644 index 9bbea435e..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentprofileazureresource.md +++ /dev/null @@ -1,19 +0,0 @@ -# DeploymentProfileAzureResource - -Azure-specific binding specification - -## Example Usage - -```typescript -import { DeploymentProfileAzureResource } from "@alienplatform/platform-api/models"; - -let value: DeploymentProfileAzureResource = { - scope: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentprofileazurestack.md b/client-sdks/platform/typescript/docs/models/deploymentprofileazurestack.md deleted file mode 100644 index 764297ef2..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentprofileazurestack.md +++ /dev/null @@ -1,19 +0,0 @@ -# DeploymentProfileAzureStack - -Azure-specific binding specification - -## Example Usage - -```typescript -import { DeploymentProfileAzureStack } from "@alienplatform/platform-api/models"; - -let value: DeploymentProfileAzureStack = { - scope: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentprofileconditionresource.md b/client-sdks/platform/typescript/docs/models/deploymentprofileconditionresource.md deleted file mode 100644 index d3c6cec62..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentprofileconditionresource.md +++ /dev/null @@ -1,21 +0,0 @@ -# DeploymentProfileConditionResource - -GCP IAM condition - -## Example Usage - -```typescript -import { DeploymentProfileConditionResource } from "@alienplatform/platform-api/models"; - -let value: DeploymentProfileConditionResource = { - expression: "", - title: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `expression` | *string* | :heavy_check_mark: | N/A | -| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentprofileconditionstack.md b/client-sdks/platform/typescript/docs/models/deploymentprofileconditionstack.md deleted file mode 100644 index 3a682d747..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentprofileconditionstack.md +++ /dev/null @@ -1,21 +0,0 @@ -# DeploymentProfileConditionStack - -GCP IAM condition - -## Example Usage - -```typescript -import { DeploymentProfileConditionStack } from "@alienplatform/platform-api/models"; - -let value: DeploymentProfileConditionStack = { - expression: "", - title: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `expression` | *string* | :heavy_check_mark: | N/A | -| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentprofileeffect.md b/client-sdks/platform/typescript/docs/models/deploymentprofileeffect.md deleted file mode 100644 index a5d8f9645..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentprofileeffect.md +++ /dev/null @@ -1,17 +0,0 @@ -# DeploymentProfileEffect - -IAM effect. Defaults to Allow. - -## Example Usage - -```typescript -import { DeploymentProfileEffect } from "@alienplatform/platform-api/models"; - -let value: DeploymentProfileEffect = "Deny"; -``` - -## Values - -```typescript -"Allow" | "Deny" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentprofilegcp.md b/client-sdks/platform/typescript/docs/models/deploymentprofilegcp.md deleted file mode 100644 index 080c0b7a5..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentprofilegcp.md +++ /dev/null @@ -1,23 +0,0 @@ -# DeploymentProfileGcp - -GCP-specific platform permission configuration - -## Example Usage - -```typescript -import { DeploymentProfileGcp } from "@alienplatform/platform-api/models"; - -let value: DeploymentProfileGcp = { - binding: {}, - grant: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | -| `binding` | [models.DeploymentProfileGcpBinding](../models/deploymentprofilegcpbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | -| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | -| `grant` | [models.DeploymentProfileGcpGrant](../models/deploymentprofilegcpgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | -| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentprofilegcpbinding.md b/client-sdks/platform/typescript/docs/models/deploymentprofilegcpbinding.md deleted file mode 100644 index a33c8944e..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentprofilegcpbinding.md +++ /dev/null @@ -1,18 +0,0 @@ -# DeploymentProfileGcpBinding - -Generic binding configuration for permissions - -## Example Usage - -```typescript -import { DeploymentProfileGcpBinding } from "@alienplatform/platform-api/models"; - -let value: DeploymentProfileGcpBinding = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -| `resource` | [models.DeploymentProfileGcpResource](../models/deploymentprofilegcpresource.md) | :heavy_minus_sign: | GCP-specific binding specification | -| `stack` | [models.DeploymentProfileGcpStack](../models/deploymentprofilegcpstack.md) | :heavy_minus_sign: | GCP-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentprofilegcpgrant.md b/client-sdks/platform/typescript/docs/models/deploymentprofilegcpgrant.md deleted file mode 100644 index b7e351845..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentprofilegcpgrant.md +++ /dev/null @@ -1,21 +0,0 @@ -# DeploymentProfileGcpGrant - -Grant permissions for a specific cloud platform - -## Example Usage - -```typescript -import { DeploymentProfileGcpGrant } from "@alienplatform/platform-api/models"; - -let value: DeploymentProfileGcpGrant = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | -| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | -| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | -| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | -| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentprofilegcpresource.md b/client-sdks/platform/typescript/docs/models/deploymentprofilegcpresource.md deleted file mode 100644 index ac93f41fa..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentprofilegcpresource.md +++ /dev/null @@ -1,20 +0,0 @@ -# DeploymentProfileGcpResource - -GCP-specific binding specification - -## Example Usage - -```typescript -import { DeploymentProfileGcpResource } from "@alienplatform/platform-api/models"; - -let value: DeploymentProfileGcpResource = { - scope: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | -| `condition` | *models.DeploymentProfileResourceConditionUnion* | :heavy_minus_sign: | N/A | -| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentprofilegcpstack.md b/client-sdks/platform/typescript/docs/models/deploymentprofilegcpstack.md deleted file mode 100644 index b161e0f69..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentprofilegcpstack.md +++ /dev/null @@ -1,20 +0,0 @@ -# DeploymentProfileGcpStack - -GCP-specific binding specification - -## Example Usage - -```typescript -import { DeploymentProfileGcpStack } from "@alienplatform/platform-api/models"; - -let value: DeploymentProfileGcpStack = { - scope: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| --------------------------------------------- | --------------------------------------------- | --------------------------------------------- | --------------------------------------------- | -| `condition` | *models.DeploymentProfileStackConditionUnion* | :heavy_minus_sign: | N/A | -| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentprofileplatforms.md b/client-sdks/platform/typescript/docs/models/deploymentprofileplatforms.md deleted file mode 100644 index 30082868f..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentprofileplatforms.md +++ /dev/null @@ -1,19 +0,0 @@ -# DeploymentProfilePlatforms - -Platform-specific permission configurations - -## Example Usage - -```typescript -import { DeploymentProfilePlatforms } from "@alienplatform/platform-api/models"; - -let value: DeploymentProfilePlatforms = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | -| `aws` | [models.DeploymentProfileAw](../models/deploymentprofileaw.md)[] | :heavy_minus_sign: | AWS permission configurations | -| `azure` | [models.DeploymentProfileAzure](../models/deploymentprofileazure.md)[] | :heavy_minus_sign: | Azure permission configurations | -| `gcp` | [models.DeploymentProfileGcp](../models/deploymentprofilegcp.md)[] | :heavy_minus_sign: | GCP permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentprofileresourceconditionunion.md b/client-sdks/platform/typescript/docs/models/deploymentprofileresourceconditionunion.md deleted file mode 100644 index 4cc57c5b4..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentprofileresourceconditionunion.md +++ /dev/null @@ -1,20 +0,0 @@ -# DeploymentProfileResourceConditionUnion - - -## Supported Types - -### `models.DeploymentProfileConditionResource` - -```typescript -const value: models.DeploymentProfileConditionResource = { - expression: "", - title: "", -}; -``` - -### `any` - -```typescript -const value: any = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/deploymentprofilestackconditionunion.md b/client-sdks/platform/typescript/docs/models/deploymentprofilestackconditionunion.md deleted file mode 100644 index a972b2b84..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentprofilestackconditionunion.md +++ /dev/null @@ -1,20 +0,0 @@ -# DeploymentProfileStackConditionUnion - - -## Supported Types - -### `models.DeploymentProfileConditionStack` - -```typescript -const value: models.DeploymentProfileConditionStack = { - expression: "", - title: "", -}; -``` - -### `any` - -```typescript -const value: any = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/deploymentprofileunion.md b/client-sdks/platform/typescript/docs/models/deploymentprofileunion.md deleted file mode 100644 index 3145219a2..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentprofileunion.md +++ /dev/null @@ -1,24 +0,0 @@ -# DeploymentProfileUnion - -Reference to a permission set - either by name or inline definition - - -## Supported Types - -### `models.DeploymentProfile` - -```typescript -const value: models.DeploymentProfile = { - description: - "across unto comfortable meh kookily paltry hover while intensely", - id: "", - platforms: {}, -}; -``` - -### `string` - -```typescript -const value: string = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/deploymentprovidedby.md b/client-sdks/platform/typescript/docs/models/deploymentprovidedby.md deleted file mode 100644 index 1daba96f3..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentprovidedby.md +++ /dev/null @@ -1,17 +0,0 @@ -# DeploymentProvidedBy - -Who can provide a stack input value. - -## Example Usage - -```typescript -import { DeploymentProvidedBy } from "@alienplatform/platform-api/models"; - -let value: DeploymentProvidedBy = "developer"; -``` - -## Values - -```typescript -"developer" | "deployer" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentpurpose.md b/client-sdks/platform/typescript/docs/models/deploymentpurpose.md index 2f66a1a75..9ddf4ef84 100644 --- a/client-sdks/platform/typescript/docs/models/deploymentpurpose.md +++ b/client-sdks/platform/typescript/docs/models/deploymentpurpose.md @@ -1,6 +1,6 @@ # DeploymentPurpose -Operational purpose of this deployment within its customer environment. +Filter by deployment purpose ## Example Usage diff --git a/client-sdks/platform/typescript/docs/models/deploymentruntimemetadata.md b/client-sdks/platform/typescript/docs/models/deploymentruntimemetadata.md index 8313fe7e6..2d62ba3af 100644 --- a/client-sdks/platform/typescript/docs/models/deploymentruntimemetadata.md +++ b/client-sdks/platform/typescript/docs/models/deploymentruntimemetadata.md @@ -12,9 +12,13 @@ let value: DeploymentRuntimeMetadata = {}; ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `lastSyncedEnvVarsHash` | *string* | :heavy_minus_sign: | Hash of the environment variables snapshot that was last synced to the vault
Used to avoid redundant sync operations during incremental deployment | -| `lastSyncedSecretNames` | *string*[] | :heavy_minus_sign: | Exact vault keys owned by the deployment secret synchronizer. This
inventory lets a later snapshot delete removed keys without listing or
touching unrelated values in the same vault. | -| `preparedStack` | *models.DeploymentPreparedStackUnion* | :heavy_minus_sign: | N/A | -| `registryAccessGranted` | *boolean* | :heavy_minus_sign: | Whether cross-account registry access has been successfully granted.
Set to true after the manager successfully sets the ECR/GAR repo policy
for this deployment's target account. Prevents redundant API calls on
every reconcile tick. | \ No newline at end of file +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `initialSetupAuthority` | [models.DeploymentInitialSetupAuthority](../models/deploymentinitialsetupauthority.md) | :heavy_minus_sign: | Actor that owns structural work during the initial setup phase. | +| `lastSyncedEnvVarsHash` | *string* | :heavy_minus_sign: | Hash of the environment variables snapshot that was last synced to the vault
Used to avoid redundant sync operations during incremental deployment | +| `lastSyncedSecretNames` | *string*[] | :heavy_minus_sign: | Exact vault keys owned by the deployment secret synchronizer. This
inventory lets a later snapshot delete removed keys without listing or
touching unrelated values in the same vault. | +| `pendingPreparedStack` | *models.DeploymentPendingPreparedStackUnion* | :heavy_minus_sign: | N/A | +| `persistedGateAnswers` | Record | :heavy_minus_sign: | Canonical resolved answers for inputs that gate Frozen resources,
keyed by input id, recorded when the deployment is created or its
setup import registers.

A frozen gate's answer is fixed for the deployment's lifetime: the
update path refuses input values that conflict with these, and a Live
resource sharing such an input resolves the persisted answer forever. | +| `preparedStack` | *models.DeploymentPreparedStackUnion* | :heavy_minus_sign: | N/A | +| `registryAccessGranted` | *boolean* | :heavy_minus_sign: | Whether cross-account registry access has been successfully granted.
Set to true after the manager successfully sets the ECR/GAR repo policy
for this deployment's target account. Prevents redundant API calls on
every reconcile tick. | +| `setupUpdateAuthorization` | *models.DeploymentSetupUpdateAuthorizationUnion* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentsetupconfig.md b/client-sdks/platform/typescript/docs/models/deploymentsetupconfig.md index 660afbdc9..54246750b 100644 --- a/client-sdks/platform/typescript/docs/models/deploymentsetupconfig.md +++ b/client-sdks/platform/typescript/docs/models/deploymentsetupconfig.md @@ -13,7 +13,9 @@ let value: DeploymentSetupConfig = { }, policy: { allowedPlatforms: [], - allowedSetupMethods: [], + allowedSetupMethods: [ + "google-oauth", + ], }, environmentVariables: [], }; diff --git a/client-sdks/platform/typescript/docs/models/deploymentsetupitemselection.md b/client-sdks/platform/typescript/docs/models/deploymentsetupitemselection.md index 1ec245e7e..0d80bfd47 100644 --- a/client-sdks/platform/typescript/docs/models/deploymentsetupitemselection.md +++ b/client-sdks/platform/typescript/docs/models/deploymentsetupitemselection.md @@ -6,7 +6,7 @@ import { DeploymentSetupItemSelection } from "@alienplatform/platform-api/models"; let value: DeploymentSetupItemSelection = { - item: "alien-stack", + item: "deployment", required: true, }; ``` diff --git a/client-sdks/platform/typescript/docs/models/deploymentsetupitemselectionitem.md b/client-sdks/platform/typescript/docs/models/deploymentsetupitemselectionitem.md index be17ea3dd..86b5d242e 100644 --- a/client-sdks/platform/typescript/docs/models/deploymentsetupitemselectionitem.md +++ b/client-sdks/platform/typescript/docs/models/deploymentsetupitemselectionitem.md @@ -5,11 +5,11 @@ ```typescript import { DeploymentSetupItemSelectionItem } from "@alienplatform/platform-api/models"; -let value: DeploymentSetupItemSelectionItem = "keys"; +let value: DeploymentSetupItemSelectionItem = "registry"; ``` ## Values ```typescript -"alien-stack" | "models" | "keys" +"deployment" | "models" | "keys" | "bucket" | "registry" ``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentsetupstacksettingspolicyfailuredomains1.md b/client-sdks/platform/typescript/docs/models/deploymentsetupstacksettingspolicyfailuredomains1.md new file mode 100644 index 000000000..0e830678e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentsetupstacksettingspolicyfailuredomains1.md @@ -0,0 +1,20 @@ +# DeploymentSetupStackSettingsPolicyFailureDomains1 + +Failure-domain policy selected for a compute pool. + +## Example Usage + +```typescript +import { DeploymentSetupStackSettingsPolicyFailureDomains1 } from "@alienplatform/platform-api/models"; + +let value: DeploymentSetupStackSettingsPolicyFailureDomains1 = { + spread: 834872, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `selectedFailureDomains` | *string*[] | :heavy_minus_sign: | Concrete provider domains selected during setup.
Empty delegates deterministic selection to the provider setup implementation. | +| `spread` | *number* | :heavy_check_mark: | Number of distinct failure domains across which new stateful replicas may be spread. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentsetupstacksettingspolicyfailuredomains2.md b/client-sdks/platform/typescript/docs/models/deploymentsetupstacksettingspolicyfailuredomains2.md new file mode 100644 index 000000000..bc9e6a1ce --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentsetupstacksettingspolicyfailuredomains2.md @@ -0,0 +1,20 @@ +# DeploymentSetupStackSettingsPolicyFailureDomains2 + +Failure-domain policy selected for a compute pool. + +## Example Usage + +```typescript +import { DeploymentSetupStackSettingsPolicyFailureDomains2 } from "@alienplatform/platform-api/models"; + +let value: DeploymentSetupStackSettingsPolicyFailureDomains2 = { + spread: 479279, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `selectedFailureDomains` | *string*[] | :heavy_minus_sign: | Concrete provider domains selected during setup.
Empty delegates deterministic selection to the provider setup implementation. | +| `spread` | *number* | :heavy_check_mark: | Number of distinct failure domains across which new stateful replicas may be spread. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentsetupstacksettingspolicyfailuredomainsunion1.md b/client-sdks/platform/typescript/docs/models/deploymentsetupstacksettingspolicyfailuredomainsunion1.md new file mode 100644 index 000000000..01030413f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentsetupstacksettingspolicyfailuredomainsunion1.md @@ -0,0 +1,19 @@ +# DeploymentSetupStackSettingsPolicyFailureDomainsUnion1 + + +## Supported Types + +### `models.DeploymentSetupStackSettingsPolicyFailureDomains1` + +```typescript +const value: models.DeploymentSetupStackSettingsPolicyFailureDomains1 = { + spread: 834872, +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentsetupstacksettingspolicyfailuredomainsunion2.md b/client-sdks/platform/typescript/docs/models/deploymentsetupstacksettingspolicyfailuredomainsunion2.md new file mode 100644 index 000000000..34e077b20 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentsetupstacksettingspolicyfailuredomainsunion2.md @@ -0,0 +1,19 @@ +# DeploymentSetupStackSettingsPolicyFailureDomainsUnion2 + + +## Supported Types + +### `models.DeploymentSetupStackSettingsPolicyFailureDomains2` + +```typescript +const value: models.DeploymentSetupStackSettingsPolicyFailureDomains2 = { + spread: 479279, +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentsetupstacksettingspolicypoolsautoscale.md b/client-sdks/platform/typescript/docs/models/deploymentsetupstacksettingspolicypoolsautoscale.md index 92a0235a6..4757e01e4 100644 --- a/client-sdks/platform/typescript/docs/models/deploymentsetupstacksettingspolicypoolsautoscale.md +++ b/client-sdks/platform/typescript/docs/models/deploymentsetupstacksettingspolicypoolsautoscale.md @@ -14,9 +14,10 @@ let value: DeploymentSetupStackSettingsPolicyPoolsAutoscale = { ## Fields -| Field | Type | Required | Description | -| --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | -| `machine` | *string* | :heavy_minus_sign: | Provider machine type selected for this deployment. | -| `max` | *number* | :heavy_check_mark: | Maximum machine count. | -| `min` | *number* | :heavy_check_mark: | Minimum machine count. | -| `mode` | *"autoscale"* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | +| `failureDomains` | *models.DeploymentSetupStackSettingsPolicyFailureDomainsUnion2* | :heavy_minus_sign: | N/A | +| `machine` | *string* | :heavy_minus_sign: | Provider machine type selected for this deployment. | +| `max` | *number* | :heavy_check_mark: | Maximum machine count. | +| `min` | *number* | :heavy_check_mark: | Minimum machine count. | +| `mode` | *"autoscale"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentsetupstacksettingspolicypoolsfixed.md b/client-sdks/platform/typescript/docs/models/deploymentsetupstacksettingspolicypoolsfixed.md index b259684b4..503782d92 100644 --- a/client-sdks/platform/typescript/docs/models/deploymentsetupstacksettingspolicypoolsfixed.md +++ b/client-sdks/platform/typescript/docs/models/deploymentsetupstacksettingspolicypoolsfixed.md @@ -13,8 +13,9 @@ let value: DeploymentSetupStackSettingsPolicyPoolsFixed = { ## Fields -| Field | Type | Required | Description | -| --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | -| `machine` | *string* | :heavy_minus_sign: | Provider machine type selected for this deployment. | -| `machines` | *number* | :heavy_check_mark: | Number of machines to run. | -| `mode` | *"fixed"* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | +| `failureDomains` | *models.DeploymentSetupStackSettingsPolicyFailureDomainsUnion1* | :heavy_minus_sign: | N/A | +| `machine` | *string* | :heavy_minus_sign: | Provider machine type selected for this deployment. | +| `machines` | *number* | :heavy_check_mark: | Number of machines to run. | +| `mode` | *"fixed"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentsetupupdateauthorization.md b/client-sdks/platform/typescript/docs/models/deploymentsetupupdateauthorization.md new file mode 100644 index 000000000..0dcd578a0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentsetupupdateauthorization.md @@ -0,0 +1,31 @@ +# DeploymentSetupUpdateAuthorization + +One-shot authority for a setup re-import to replace setup-owned resources. + +## Example Usage + +```typescript +import { DeploymentSetupUpdateAuthorization } from "@alienplatform/platform-api/models"; + +let value: DeploymentSetupUpdateAuthorization = { + baselineFrozenDigest: "", + nonce: "", + releaseId: "", + setupFingerprint: "", + setupFingerprintVersion: 933795, + setupTarget: "", + targetFrozenDigest: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | +| `baselineFrozenDigest` | *string* | :heavy_check_mark: | Frozen resource projection from the last successful deployment. | +| `nonce` | *string* | :heavy_check_mark: | Unique revision used by persistence layers for compare-and-swap updates. | +| `releaseId` | *string* | :heavy_check_mark: | Release whose stack was prepared by setup. | +| `setupFingerprint` | *string* | :heavy_check_mark: | Exact setup artifact revision that authored this authority. | +| `setupFingerprintVersion` | *number* | :heavy_check_mark: | Setup fingerprint contract version. | +| `setupTarget` | *string* | :heavy_check_mark: | Stable setup target recorded on the imported deployment. | +| `targetFrozenDigest` | *string* | :heavy_check_mark: | Frozen resource projection prepared by the setup re-import. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentsetupupdateauthorizationunion.md b/client-sdks/platform/typescript/docs/models/deploymentsetupupdateauthorizationunion.md new file mode 100644 index 000000000..364858d99 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentsetupupdateauthorizationunion.md @@ -0,0 +1,25 @@ +# DeploymentSetupUpdateAuthorizationUnion + + +## Supported Types + +### `models.DeploymentSetupUpdateAuthorization` + +```typescript +const value: models.DeploymentSetupUpdateAuthorization = { + baselineFrozenDigest: "", + nonce: "", + releaseId: "", + setupFingerprint: "", + setupFingerprintVersion: 933795, + setupTarget: "", + targetFrozenDigest: "", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/deploymentstats.md b/client-sdks/platform/typescript/docs/models/deploymentstats.md index cbea7034d..f63c0b648 100644 --- a/client-sdks/platform/typescript/docs/models/deploymentstats.md +++ b/client-sdks/platform/typescript/docs/models/deploymentstats.md @@ -25,6 +25,7 @@ let value: DeploymentStats = { "key": 2517.74, "key1": 3235.28, }, + byOrigin: {}, }; ``` @@ -36,4 +37,5 @@ let value: DeploymentStats = { | `byStatus` | Record | :heavy_check_mark: | Count of deployments by status (only includes statuses with non-zero counts) | | `byPlatform` | Record | :heavy_check_mark: | Count of deployments by platform (only includes platforms with non-zero counts) | | `byCurrentRelease` | Record | :heavy_check_mark: | Count of deployments by currentReleaseId. The empty string key represents deployments with no current release (initial provisioning). | -| `byPinnedRelease` | Record | :heavy_check_mark: | Count of deployments by pinnedReleaseId among deployments that are pinned. Excludes unpinned deployments. | \ No newline at end of file +| `byPinnedRelease` | Record | :heavy_check_mark: | Count of deployments by pinnedReleaseId among deployments that are pinned. Excludes unpinned deployments. | +| `byOrigin` | [models.ByOrigin](../models/byorigin.md) | :heavy_check_mark: | Count of deployments introduced through each deployment path. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentsupportedplatform.md b/client-sdks/platform/typescript/docs/models/deploymentsupportedplatform.md deleted file mode 100644 index 543070b1e..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentsupportedplatform.md +++ /dev/null @@ -1,17 +0,0 @@ -# DeploymentSupportedPlatform - -Represents the target cloud platform. - -## Example Usage - -```typescript -import { DeploymentSupportedPlatform } from "@alienplatform/platform-api/models"; - -let value: DeploymentSupportedPlatform = "test"; -``` - -## Values - -```typescript -"aws" | "gcp" | "azure" | "kubernetes" | "machines" | "local" | "test" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymenttypeboolean.md b/client-sdks/platform/typescript/docs/models/deploymenttypeboolean.md deleted file mode 100644 index 6e6f5f621..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymenttypeboolean.md +++ /dev/null @@ -1,15 +0,0 @@ -# DeploymentTypeBoolean - -## Example Usage - -```typescript -import { DeploymentTypeBoolean } from "@alienplatform/platform-api/models"; - -let value: DeploymentTypeBoolean = "boolean"; -``` - -## Values - -```typescript -"boolean" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymenttypeenvenum.md b/client-sdks/platform/typescript/docs/models/deploymenttypeenvenum.md deleted file mode 100644 index 869a7e559..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymenttypeenvenum.md +++ /dev/null @@ -1,17 +0,0 @@ -# DeploymentTypeEnvEnum - -Environment variable handling for a stack input mapping. - -## Example Usage - -```typescript -import { DeploymentTypeEnvEnum } from "@alienplatform/platform-api/models"; - -let value: DeploymentTypeEnvEnum = "plain"; -``` - -## Values - -```typescript -"plain" | "secret" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymenttypenumber.md b/client-sdks/platform/typescript/docs/models/deploymenttypenumber.md deleted file mode 100644 index a8d7c7a21..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymenttypenumber.md +++ /dev/null @@ -1,15 +0,0 @@ -# DeploymentTypeNumber - -## Example Usage - -```typescript -import { DeploymentTypeNumber } from "@alienplatform/platform-api/models"; - -let value: DeploymentTypeNumber = "number"; -``` - -## Values - -```typescript -"number" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymenttypestring.md b/client-sdks/platform/typescript/docs/models/deploymenttypestring.md deleted file mode 100644 index e6b2e4361..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymenttypestring.md +++ /dev/null @@ -1,15 +0,0 @@ -# DeploymentTypeString - -## Example Usage - -```typescript -import { DeploymentTypeString } from "@alienplatform/platform-api/models"; - -let value: DeploymentTypeString = "string"; -``` - -## Values - -```typescript -"string" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymenttypestringlist.md b/client-sdks/platform/typescript/docs/models/deploymenttypestringlist.md deleted file mode 100644 index e72dc9078..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymenttypestringlist.md +++ /dev/null @@ -1,15 +0,0 @@ -# DeploymentTypeStringList - -## Example Usage - -```typescript -import { DeploymentTypeStringList } from "@alienplatform/platform-api/models"; - -let value: DeploymentTypeStringList = "stringList"; -``` - -## Values - -```typescript -"stringList" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymenttypeunion.md b/client-sdks/platform/typescript/docs/models/deploymenttypeunion.md deleted file mode 100644 index 0a42e1a12..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymenttypeunion.md +++ /dev/null @@ -1,17 +0,0 @@ -# DeploymentTypeUnion - - -## Supported Types - -### `models.DeploymentTypeEnvEnum` - -```typescript -const value: models.DeploymentTypeEnvEnum = "secret"; -``` - -### `any` - -```typescript -const value: any = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/deploymentupdateoperationstatus.md b/client-sdks/platform/typescript/docs/models/deploymentupdateoperationstatus.md new file mode 100644 index 000000000..812c5c44d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentupdateoperationstatus.md @@ -0,0 +1,15 @@ +# DeploymentUpdateOperationStatus + +## Example Usage + +```typescript +import { DeploymentUpdateOperationStatus } from "@alienplatform/platform-api/models"; + +let value: DeploymentUpdateOperationStatus = "superseded"; +``` + +## Values + +```typescript +"queued" | "applying" | "succeeded" | "failed" | "superseded" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentupdateoperationsummary.md b/client-sdks/platform/typescript/docs/models/deploymentupdateoperationsummary.md new file mode 100644 index 000000000..9830acae6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentupdateoperationsummary.md @@ -0,0 +1,29 @@ +# DeploymentUpdateOperationSummary + +## Example Usage + +```typescript +import { DeploymentUpdateOperationSummary } from "@alienplatform/platform-api/models"; + +let value: DeploymentUpdateOperationSummary = { + id: "duop_0vtxpb1sw4sbcdwg2xo37q6", + status: "applying", + reasons: [], + targetReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", + changedKeys: [], + requestedAt: new Date("2024-03-09T19:13:29.092Z"), +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the deployment update operation. | duop_0vtxpb1sw4sbcdwg2xo37q6 | +| `status` | [models.DeploymentUpdateOperationStatus](../models/deploymentupdateoperationstatus.md) | :heavy_check_mark: | N/A | | +| `reasons` | [models.DeploymentUpdateReason](../models/deploymentupdatereason.md)[] | :heavy_check_mark: | N/A | | +| `targetReleaseId` | *string* | :heavy_check_mark: | Unique identifier for the release. | rel_WbhQgksrawSKIpEN0NAssHX9 | +| `changedKeys` | *string*[] | :heavy_check_mark: | N/A | | +| `requestedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `startedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_minus_sign: | N/A | | +| `completedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentupdatereason.md b/client-sdks/platform/typescript/docs/models/deploymentupdatereason.md new file mode 100644 index 000000000..5bb02f6ba --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentupdatereason.md @@ -0,0 +1,15 @@ +# DeploymentUpdateReason + +## Example Usage + +```typescript +import { DeploymentUpdateReason } from "@alienplatform/platform-api/models"; + +let value: DeploymentUpdateReason = "redeploy"; +``` + +## Values + +```typescript +"configuration" | "redeploy" | "release" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentupdatestate.md b/client-sdks/platform/typescript/docs/models/deploymentupdatestate.md new file mode 100644 index 000000000..08eacfca7 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentupdatestate.md @@ -0,0 +1,34 @@ +# DeploymentUpdateState + +Durable progress for deployment updates + +## Example Usage + +```typescript +import { DeploymentUpdateState } from "@alienplatform/platform-api/models"; + +let value: DeploymentUpdateState = { + active: null, + next: { + id: "duop_0vtxpb1sw4sbcdwg2xo37q6", + status: "queued", + reasons: [], + targetReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", + changedKeys: [ + "", + "", + "", + ], + requestedAt: new Date("2025-05-23T02:17:08.731Z"), + }, + latest: null, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `active` | [models.DeploymentUpdateOperationSummary](../models/deploymentupdateoperationsummary.md) | :heavy_check_mark: | N/A | +| `next` | [models.DeploymentUpdateOperationSummary](../models/deploymentupdateoperationsummary.md) | :heavy_check_mark: | N/A | +| `latest` | [models.DeploymentUpdateOperationSummary](../models/deploymentupdateoperationsummary.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentvalidation.md b/client-sdks/platform/typescript/docs/models/deploymentvalidation.md deleted file mode 100644 index 00e595113..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentvalidation.md +++ /dev/null @@ -1,25 +0,0 @@ -# DeploymentValidation - -Portable stack input validation constraints. - -## Example Usage - -```typescript -import { DeploymentValidation } from "@alienplatform/platform-api/models"; - -let value: DeploymentValidation = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `format` | *string* | :heavy_minus_sign: | Semantic format hint such as url. | -| `max` | *string* | :heavy_minus_sign: | Maximum number. | -| `maxItems` | *number* | :heavy_minus_sign: | Maximum string-list items. | -| `maxLength` | *number* | :heavy_minus_sign: | Maximum string length. | -| `min` | *string* | :heavy_minus_sign: | Minimum number. | -| `minItems` | *number* | :heavy_minus_sign: | Minimum string-list items. | -| `minLength` | *number* | :heavy_minus_sign: | Minimum string length. | -| `pattern` | *string* | :heavy_minus_sign: | Portable whole-value regex pattern. | -| `values` | *string*[] | :heavy_minus_sign: | Allowed string enum values. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentvalidationunion.md b/client-sdks/platform/typescript/docs/models/deploymentvalidationunion.md deleted file mode 100644 index 583bedc8f..000000000 --- a/client-sdks/platform/typescript/docs/models/deploymentvalidationunion.md +++ /dev/null @@ -1,17 +0,0 @@ -# DeploymentValidationUnion - - -## Supported Types - -### `models.DeploymentValidation` - -```typescript -const value: models.DeploymentValidation = {}; -``` - -### `any` - -```typescript -const value: any = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/directanthropicbinding.md b/client-sdks/platform/typescript/docs/models/directanthropicbinding.md deleted file mode 100644 index 458631db0..000000000 --- a/client-sdks/platform/typescript/docs/models/directanthropicbinding.md +++ /dev/null @@ -1,30 +0,0 @@ -# DirectAnthropicBinding - -## Example Usage - -```typescript -import { DirectAnthropicBinding } from "@alienplatform/platform-api/models"; - -let value: DirectAnthropicBinding = { - id: "", - provider: "anthropic", - keyFingerprint: "", - availableProviderModelIds: [ - "", - "", - ], - verifiedAt: new Date("2025-11-29T03:04:43.967Z"), - updatedAt: new Date("2026-01-22T18:40:32.068Z"), -}; -``` - -## Fields - -| Field | Type | Required | Description | -| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | -| `id` | *string* | :heavy_check_mark: | N/A | -| `provider` | [models.DirectAnthropicBindingProvider](../models/directanthropicbindingprovider.md) | :heavy_check_mark: | N/A | -| `keyFingerprint` | *string* | :heavy_check_mark: | N/A | -| `availableProviderModelIds` | *string*[] | :heavy_check_mark: | N/A | -| `verifiedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | -| `updatedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/directanthropicbindingprovider.md b/client-sdks/platform/typescript/docs/models/directanthropicbindingprovider.md deleted file mode 100644 index 15e9f0429..000000000 --- a/client-sdks/platform/typescript/docs/models/directanthropicbindingprovider.md +++ /dev/null @@ -1,15 +0,0 @@ -# DirectAnthropicBindingProvider - -## Example Usage - -```typescript -import { DirectAnthropicBindingProvider } from "@alienplatform/platform-api/models"; - -let value: DirectAnthropicBindingProvider = "anthropic"; -``` - -## Values - -```typescript -"anthropic" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/directanthropicbindingstate.md b/client-sdks/platform/typescript/docs/models/directanthropicbindingstate.md deleted file mode 100644 index 88d86b2e8..000000000 --- a/client-sdks/platform/typescript/docs/models/directanthropicbindingstate.md +++ /dev/null @@ -1,28 +0,0 @@ -# DirectAnthropicBindingState - -## Example Usage - -```typescript -import { DirectAnthropicBindingState } from "@alienplatform/platform-api/models"; - -let value: DirectAnthropicBindingState = { - binding: { - id: "", - provider: "anthropic", - keyFingerprint: "", - availableProviderModelIds: [ - "", - "", - "", - ], - verifiedAt: new Date("2025-11-28T13:09:12.725Z"), - updatedAt: new Date("2025-04-24T16:17:24.576Z"), - }, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -| `binding` | [models.DirectAnthropicBinding](../models/directanthropicbinding.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/drainprogress1.md b/client-sdks/platform/typescript/docs/models/drainprogress1.md index 79309d501..6b7bbe144 100644 --- a/client-sdks/platform/typescript/docs/models/drainprogress1.md +++ b/client-sdks/platform/typescript/docs/models/drainprogress1.md @@ -16,14 +16,14 @@ let value: DrainProgress1 = { ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | -| `blockers` | [models.Blocker1](../models/blocker1.md)[] | :heavy_minus_sign: | N/A | -| `drainDeadlineAt` | *string* | :heavy_minus_sign: | N/A | -| `drainRequestedAt` | *string* | :heavy_minus_sign: | N/A | -| `drainedAt` | *string* | :heavy_minus_sign: | N/A | -| `force` | *boolean* | :heavy_check_mark: | N/A | -| `machineId` | *string* | :heavy_check_mark: | N/A | -| `replicaCount` | *number* | :heavy_check_mark: | N/A | -| `stalled` | *boolean* | :heavy_check_mark: | N/A | -| `status` | [models.DrainProgressStatus1](../models/drainprogressstatus1.md) | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `blockers` | [models.DrainProgressBlocker1](../models/drainprogressblocker1.md)[] | :heavy_minus_sign: | N/A | +| `drainDeadlineAt` | *string* | :heavy_minus_sign: | N/A | +| `drainRequestedAt` | *string* | :heavy_minus_sign: | N/A | +| `drainedAt` | *string* | :heavy_minus_sign: | N/A | +| `force` | *boolean* | :heavy_check_mark: | N/A | +| `machineId` | *string* | :heavy_check_mark: | N/A | +| `replicaCount` | *number* | :heavy_check_mark: | N/A | +| `stalled` | *boolean* | :heavy_check_mark: | N/A | +| `status` | [models.DrainProgressStatus1](../models/drainprogressstatus1.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/drainprogress2.md b/client-sdks/platform/typescript/docs/models/drainprogress2.md index a2c4c17f2..7a1c5e881 100644 --- a/client-sdks/platform/typescript/docs/models/drainprogress2.md +++ b/client-sdks/platform/typescript/docs/models/drainprogress2.md @@ -16,14 +16,14 @@ let value: DrainProgress2 = { ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | -| `blockers` | [models.Blocker2](../models/blocker2.md)[] | :heavy_minus_sign: | N/A | -| `drainDeadlineAt` | *string* | :heavy_minus_sign: | N/A | -| `drainRequestedAt` | *string* | :heavy_minus_sign: | N/A | -| `drainedAt` | *string* | :heavy_minus_sign: | N/A | -| `force` | *boolean* | :heavy_check_mark: | N/A | -| `machineId` | *string* | :heavy_check_mark: | N/A | -| `replicaCount` | *number* | :heavy_check_mark: | N/A | -| `stalled` | *boolean* | :heavy_check_mark: | N/A | -| `status` | [models.DrainProgressStatus2](../models/drainprogressstatus2.md) | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `blockers` | [models.DrainProgressBlocker2](../models/drainprogressblocker2.md)[] | :heavy_minus_sign: | N/A | +| `drainDeadlineAt` | *string* | :heavy_minus_sign: | N/A | +| `drainRequestedAt` | *string* | :heavy_minus_sign: | N/A | +| `drainedAt` | *string* | :heavy_minus_sign: | N/A | +| `force` | *boolean* | :heavy_check_mark: | N/A | +| `machineId` | *string* | :heavy_check_mark: | N/A | +| `replicaCount` | *number* | :heavy_check_mark: | N/A | +| `stalled` | *boolean* | :heavy_check_mark: | N/A | +| `status` | [models.DrainProgressStatus2](../models/drainprogressstatus2.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/drainprogress3.md b/client-sdks/platform/typescript/docs/models/drainprogress3.md index 6576ec8af..296f69cc2 100644 --- a/client-sdks/platform/typescript/docs/models/drainprogress3.md +++ b/client-sdks/platform/typescript/docs/models/drainprogress3.md @@ -16,14 +16,14 @@ let value: DrainProgress3 = { ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | -| `blockers` | [models.Blocker3](../models/blocker3.md)[] | :heavy_minus_sign: | N/A | -| `drainDeadlineAt` | *string* | :heavy_minus_sign: | N/A | -| `drainRequestedAt` | *string* | :heavy_minus_sign: | N/A | -| `drainedAt` | *string* | :heavy_minus_sign: | N/A | -| `force` | *boolean* | :heavy_check_mark: | N/A | -| `machineId` | *string* | :heavy_check_mark: | N/A | -| `replicaCount` | *number* | :heavy_check_mark: | N/A | -| `stalled` | *boolean* | :heavy_check_mark: | N/A | -| `status` | [models.DrainProgressStatus3](../models/drainprogressstatus3.md) | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `blockers` | [models.DrainProgressBlocker3](../models/drainprogressblocker3.md)[] | :heavy_minus_sign: | N/A | +| `drainDeadlineAt` | *string* | :heavy_minus_sign: | N/A | +| `drainRequestedAt` | *string* | :heavy_minus_sign: | N/A | +| `drainedAt` | *string* | :heavy_minus_sign: | N/A | +| `force` | *boolean* | :heavy_check_mark: | N/A | +| `machineId` | *string* | :heavy_check_mark: | N/A | +| `replicaCount` | *number* | :heavy_check_mark: | N/A | +| `stalled` | *boolean* | :heavy_check_mark: | N/A | +| `status` | [models.DrainProgressStatus3](../models/drainprogressstatus3.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/drainprogress4.md b/client-sdks/platform/typescript/docs/models/drainprogress4.md index d74a7914b..373847a4f 100644 --- a/client-sdks/platform/typescript/docs/models/drainprogress4.md +++ b/client-sdks/platform/typescript/docs/models/drainprogress4.md @@ -16,14 +16,14 @@ let value: DrainProgress4 = { ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | -| `blockers` | [models.Blocker4](../models/blocker4.md)[] | :heavy_minus_sign: | N/A | -| `drainDeadlineAt` | *string* | :heavy_minus_sign: | N/A | -| `drainRequestedAt` | *string* | :heavy_minus_sign: | N/A | -| `drainedAt` | *string* | :heavy_minus_sign: | N/A | -| `force` | *boolean* | :heavy_check_mark: | N/A | -| `machineId` | *string* | :heavy_check_mark: | N/A | -| `replicaCount` | *number* | :heavy_check_mark: | N/A | -| `stalled` | *boolean* | :heavy_check_mark: | N/A | -| `status` | [models.DrainProgressStatus4](../models/drainprogressstatus4.md) | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `blockers` | [models.DrainProgressBlocker4](../models/drainprogressblocker4.md)[] | :heavy_minus_sign: | N/A | +| `drainDeadlineAt` | *string* | :heavy_minus_sign: | N/A | +| `drainRequestedAt` | *string* | :heavy_minus_sign: | N/A | +| `drainedAt` | *string* | :heavy_minus_sign: | N/A | +| `force` | *boolean* | :heavy_check_mark: | N/A | +| `machineId` | *string* | :heavy_check_mark: | N/A | +| `replicaCount` | *number* | :heavy_check_mark: | N/A | +| `stalled` | *boolean* | :heavy_check_mark: | N/A | +| `status` | [models.DrainProgressStatus4](../models/drainprogressstatus4.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/drainprogressblocker1.md b/client-sdks/platform/typescript/docs/models/drainprogressblocker1.md new file mode 100644 index 000000000..7da4f394b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/drainprogressblocker1.md @@ -0,0 +1,25 @@ +# DrainProgressBlocker1 + +## Example Usage + +```typescript +import { DrainProgressBlocker1 } from "@alienplatform/platform-api/models"; + +let value: DrainProgressBlocker1 = { + reason: "", + replicaId: "", + schedulingMode: "", + state: "Ohio", + workloadName: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `reason` | *string* | :heavy_check_mark: | N/A | +| `replicaId` | *string* | :heavy_check_mark: | N/A | +| `schedulingMode` | *string* | :heavy_check_mark: | N/A | +| `state` | *string* | :heavy_check_mark: | N/A | +| `workloadName` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/drainprogressblocker2.md b/client-sdks/platform/typescript/docs/models/drainprogressblocker2.md new file mode 100644 index 000000000..6845f37c9 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/drainprogressblocker2.md @@ -0,0 +1,25 @@ +# DrainProgressBlocker2 + +## Example Usage + +```typescript +import { DrainProgressBlocker2 } from "@alienplatform/platform-api/models"; + +let value: DrainProgressBlocker2 = { + reason: "", + replicaId: "", + schedulingMode: "", + state: "Tennessee", + workloadName: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `reason` | *string* | :heavy_check_mark: | N/A | +| `replicaId` | *string* | :heavy_check_mark: | N/A | +| `schedulingMode` | *string* | :heavy_check_mark: | N/A | +| `state` | *string* | :heavy_check_mark: | N/A | +| `workloadName` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/drainprogressblocker3.md b/client-sdks/platform/typescript/docs/models/drainprogressblocker3.md new file mode 100644 index 000000000..7d5223192 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/drainprogressblocker3.md @@ -0,0 +1,25 @@ +# DrainProgressBlocker3 + +## Example Usage + +```typescript +import { DrainProgressBlocker3 } from "@alienplatform/platform-api/models"; + +let value: DrainProgressBlocker3 = { + reason: "", + replicaId: "", + schedulingMode: "", + state: "South Carolina", + workloadName: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `reason` | *string* | :heavy_check_mark: | N/A | +| `replicaId` | *string* | :heavy_check_mark: | N/A | +| `schedulingMode` | *string* | :heavy_check_mark: | N/A | +| `state` | *string* | :heavy_check_mark: | N/A | +| `workloadName` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/drainprogressblocker4.md b/client-sdks/platform/typescript/docs/models/drainprogressblocker4.md new file mode 100644 index 000000000..4e6ffe796 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/drainprogressblocker4.md @@ -0,0 +1,25 @@ +# DrainProgressBlocker4 + +## Example Usage + +```typescript +import { DrainProgressBlocker4 } from "@alienplatform/platform-api/models"; + +let value: DrainProgressBlocker4 = { + reason: "", + replicaId: "", + schedulingMode: "", + state: "Virginia", + workloadName: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `reason` | *string* | :heavy_check_mark: | N/A | +| `replicaId` | *string* | :heavy_check_mark: | N/A | +| `schedulingMode` | *string* | :heavy_check_mark: | N/A | +| `state` | *string* | :heavy_check_mark: | N/A | +| `workloadName` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/endpoint.md b/client-sdks/platform/typescript/docs/models/endpoint.md new file mode 100644 index 000000000..00cd8478a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/endpoint.md @@ -0,0 +1,19 @@ +# Endpoint + +## Example Usage + +```typescript +import { Endpoint } from "@alienplatform/platform-api/models"; + +let value: Endpoint = { + url: "https://worse-fold.org", + source: "runtime", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `url` | *string* | :heavy_check_mark: | N/A | +| `source` | [models.ContainerRegistryStateSource](../models/containerregistrystatesource.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/errorfailed.md b/client-sdks/platform/typescript/docs/models/errorfailed.md deleted file mode 100644 index 3975b4dcc..000000000 --- a/client-sdks/platform/typescript/docs/models/errorfailed.md +++ /dev/null @@ -1,34 +0,0 @@ -# ErrorFailed - -Canonical error container that provides a structured way to represent errors -with rich metadata including error codes, human-readable messages, context, -and chaining capabilities for error propagation. - -This struct is designed to be both machine-readable and user-friendly, -supporting serialization for API responses and detailed error reporting -in distributed systems. - -## Example Usage - -```typescript -import { ErrorFailed } from "@alienplatform/platform-api/models"; - -let value: ErrorFailed = { - code: "", - internal: true, - message: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `code` | *string* | :heavy_check_mark: | A unique identifier for the type of error.

This should be a short, machine-readable string that can be used
by clients to programmatically handle different error types.
Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" | -| `context` | *any* | :heavy_minus_sign: | Additional diagnostic information about the error context.

This optional field can contain structured data providing more details
about the error, such as validation errors, request parameters that
caused the issue, or other relevant context information. | -| `hint` | *string* | :heavy_minus_sign: | Optional human-facing remediation hint. | -| `httpStatusCode` | *number* | :heavy_minus_sign: | HTTP status code for this error.

Used when converting the error to an HTTP response. If None, falls back to
the error type's default status code or 500. | -| `internal` | *boolean* | :heavy_check_mark: | Indicates if this is an internal error that should not be exposed to users.

When `true`, this error contains sensitive information or implementation
details that should not be shown to end-users. Such errors should be
logged for debugging but replaced with generic error messages in responses. | -| `message` | *string* | :heavy_check_mark: | Human-readable error message.

This message should be clear and actionable for developers or end-users,
providing context about what went wrong and potentially how to fix it. | -| `retryable` | *boolean* | :heavy_minus_sign: | Indicates whether the operation that caused the error should be retried.

When `true`, the error is transient and the operation might succeed
if attempted again. When `false`, retrying the same operation is
unlikely to succeed without changes. | -| `source` | *any* | :heavy_minus_sign: | The underlying error that caused this error, creating an error chain.

This allows for proper error propagation and debugging by maintaining
the full context of how an error occurred through multiple layers
of an application. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/errornextstate.md b/client-sdks/platform/typescript/docs/models/errornextstate.md deleted file mode 100644 index 27b4d6de1..000000000 --- a/client-sdks/platform/typescript/docs/models/errornextstate.md +++ /dev/null @@ -1,34 +0,0 @@ -# ErrorNextState - -Canonical error container that provides a structured way to represent errors -with rich metadata including error codes, human-readable messages, context, -and chaining capabilities for error propagation. - -This struct is designed to be both machine-readable and user-friendly, -supporting serialization for API responses and detailed error reporting -in distributed systems. - -## Example Usage - -```typescript -import { ErrorNextState } from "@alienplatform/platform-api/models"; - -let value: ErrorNextState = { - code: "", - internal: false, - message: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `code` | *string* | :heavy_check_mark: | A unique identifier for the type of error.

This should be a short, machine-readable string that can be used
by clients to programmatically handle different error types.
Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" | -| `context` | *any* | :heavy_minus_sign: | Additional diagnostic information about the error context.

This optional field can contain structured data providing more details
about the error, such as validation errors, request parameters that
caused the issue, or other relevant context information. | -| `hint` | *string* | :heavy_minus_sign: | Optional human-facing remediation hint. | -| `httpStatusCode` | *number* | :heavy_minus_sign: | HTTP status code for this error.

Used when converting the error to an HTTP response. If None, falls back to
the error type's default status code or 500. | -| `internal` | *boolean* | :heavy_check_mark: | Indicates if this is an internal error that should not be exposed to users.

When `true`, this error contains sensitive information or implementation
details that should not be shown to end-users. Such errors should be
logged for debugging but replaced with generic error messages in responses. | -| `message` | *string* | :heavy_check_mark: | Human-readable error message.

This message should be clear and actionable for developers or end-users,
providing context about what went wrong and potentially how to fix it. | -| `retryable` | *boolean* | :heavy_minus_sign: | Indicates whether the operation that caused the error should be retried.

When `true`, the error is transient and the operation might succeed
if attempted again. When `false`, retrying the same operation is
unlikely to succeed without changes. | -| `source` | *any* | :heavy_minus_sign: | The underlying error that caused this error, creating an error chain.

This allows for proper error propagation and debugging by maintaining
the full context of how an error occurred through multiple layers
of an application. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/event.md b/client-sdks/platform/typescript/docs/models/event.md index 4088af26d..89ae37c6c 100644 --- a/client-sdks/platform/typescript/docs/models/event.md +++ b/client-sdks/platform/typescript/docs/models/event.md @@ -31,7 +31,7 @@ let value: Event = { | `releaseId` | *string* | :heavy_minus_sign: | Unique identifier for the release. | rel_WbhQgksrawSKIpEN0NAssHX9 | | `debugSessionId` | *string* | :heavy_minus_sign: | Unique identifier for the debug session. | dbg_HOXmkmT9UPYlsnxqSNlEGoXL | | `data` | *models.EventDataUnion* | :heavy_check_mark: | N/A | | -| `state` | *models.State* | :heavy_check_mark: | Represents the state of an event | | +| `state` | *models.EventStateUnion* | :heavy_check_mark: | Represents the state of an event | | | `projectId` | *string* | :heavy_check_mark: | Unique identifier for the project. | prj_mcytp6z3j91f7tn5ryqsfwtr | | `createdAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | | `workspaceId` | *string* | :heavy_check_mark: | Unique identifier for the workspace. | ws_It13CUaGEhLLAB87simX0 | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventactor1.md b/client-sdks/platform/typescript/docs/models/eventactor1.md new file mode 100644 index 000000000..4d21e224a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventactor1.md @@ -0,0 +1,22 @@ +# EventActor1 + +Authenticated principal that requested a deployment intent event. + +## Example Usage + +```typescript +import { EventActor1 } from "@alienplatform/platform-api/models"; + +let value: EventActor1 = { + id: "", + kind: "serviceAccount", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | +| `email` | *string* | :heavy_minus_sign: | User email when the principal is a user. | +| `id` | *string* | :heavy_check_mark: | Stable user or service-account identifier. | +| `kind` | [models.EventKind1](../models/eventkind1.md) | :heavy_check_mark: | Type of authenticated principal that requested an event. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventactor2.md b/client-sdks/platform/typescript/docs/models/eventactor2.md new file mode 100644 index 000000000..356fb43e3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventactor2.md @@ -0,0 +1,22 @@ +# EventActor2 + +Authenticated principal that requested a deployment intent event. + +## Example Usage + +```typescript +import { EventActor2 } from "@alienplatform/platform-api/models"; + +let value: EventActor2 = { + id: "", + kind: "user", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | +| `email` | *string* | :heavy_minus_sign: | User email when the principal is a user. | +| `id` | *string* | :heavy_check_mark: | Stable user or service-account identifier. | +| `kind` | [models.EventKind2](../models/eventkind2.md) | :heavy_check_mark: | Type of authenticated principal that requested an event. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventactor3.md b/client-sdks/platform/typescript/docs/models/eventactor3.md new file mode 100644 index 000000000..21b4b181c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventactor3.md @@ -0,0 +1,22 @@ +# EventActor3 + +Authenticated principal that requested a deployment intent event. + +## Example Usage + +```typescript +import { EventActor3 } from "@alienplatform/platform-api/models"; + +let value: EventActor3 = { + id: "", + kind: "serviceAccount", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | +| `email` | *string* | :heavy_minus_sign: | User email when the principal is a user. | +| `id` | *string* | :heavy_check_mark: | Stable user or service-account identifier. | +| `kind` | [models.EventKind3](../models/eventkind3.md) | :heavy_check_mark: | Type of authenticated principal that requested an event. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventactor4.md b/client-sdks/platform/typescript/docs/models/eventactor4.md new file mode 100644 index 000000000..850322f4f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventactor4.md @@ -0,0 +1,22 @@ +# EventActor4 + +Authenticated principal that requested a deployment intent event. + +## Example Usage + +```typescript +import { EventActor4 } from "@alienplatform/platform-api/models"; + +let value: EventActor4 = { + id: "", + kind: "serviceAccount", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | +| `email` | *string* | :heavy_minus_sign: | User email when the principal is a user. | +| `id` | *string* | :heavy_check_mark: | Stable user or service-account identifier. | +| `kind` | [models.EventKind4](../models/eventkind4.md) | :heavy_check_mark: | Type of authenticated principal that requested an event. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventactorunion1.md b/client-sdks/platform/typescript/docs/models/eventactorunion1.md new file mode 100644 index 000000000..b87ed6f7e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventactorunion1.md @@ -0,0 +1,20 @@ +# EventActorUnion1 + + +## Supported Types + +### `models.EventActor1` + +```typescript +const value: models.EventActor1 = { + id: "", + kind: "serviceAccount", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/eventactorunion2.md b/client-sdks/platform/typescript/docs/models/eventactorunion2.md new file mode 100644 index 000000000..d1658651c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventactorunion2.md @@ -0,0 +1,20 @@ +# EventActorUnion2 + + +## Supported Types + +### `models.EventActor2` + +```typescript +const value: models.EventActor2 = { + id: "", + kind: "user", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/eventactorunion3.md b/client-sdks/platform/typescript/docs/models/eventactorunion3.md new file mode 100644 index 000000000..dfe5658c4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventactorunion3.md @@ -0,0 +1,20 @@ +# EventActorUnion3 + + +## Supported Types + +### `models.EventActor3` + +```typescript +const value: models.EventActor3 = { + id: "", + kind: "serviceAccount", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/eventactorunion4.md b/client-sdks/platform/typescript/docs/models/eventactorunion4.md new file mode 100644 index 000000000..93657f753 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventactorunion4.md @@ -0,0 +1,20 @@ +# EventActorUnion4 + + +## Supported Types + +### `models.EventActor4` + +```typescript +const value: models.EventActor4 = { + id: "", + kind: "serviceAccount", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/eventdataassumingrole.md b/client-sdks/platform/typescript/docs/models/eventdataassumingrole.md new file mode 100644 index 000000000..16a7aa1f4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventdataassumingrole.md @@ -0,0 +1,19 @@ +# EventDataAssumingRole + +## Example Usage + +```typescript +import { EventDataAssumingRole } from "@alienplatform/platform-api/models"; + +let value: EventDataAssumingRole = { + roleArn: "", + type: "AssumingRole", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------- | ------------------------- | ------------------------- | ------------------------- | +| `roleArn` | *string* | :heavy_check_mark: | ARN of the role to assume | +| `type` | *"AssumingRole"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventdatabuildingimage.md b/client-sdks/platform/typescript/docs/models/eventdatabuildingimage.md new file mode 100644 index 000000000..03a4f104d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventdatabuildingimage.md @@ -0,0 +1,19 @@ +# EventDataBuildingImage + +## Example Usage + +```typescript +import { EventDataBuildingImage } from "@alienplatform/platform-api/models"; + +let value: EventDataBuildingImage = { + image: "https://loremflickr.com/1460/1419?lock=7755903317896576", + type: "BuildingImage", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------- | ----------------------------- | ----------------------------- | ----------------------------- | +| `image` | *string* | :heavy_check_mark: | Name of the image being built | +| `type` | *"BuildingImage"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventdatabuildingresource.md b/client-sdks/platform/typescript/docs/models/eventdatabuildingresource.md new file mode 100644 index 000000000..b0ee2c9b1 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventdatabuildingresource.md @@ -0,0 +1,22 @@ +# EventDataBuildingResource + +## Example Usage + +```typescript +import { EventDataBuildingResource } from "@alienplatform/platform-api/models"; + +let value: EventDataBuildingResource = { + resourceName: "", + resourceType: "", + type: "BuildingResource", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `relatedResources` | *string*[] | :heavy_minus_sign: | All resource names sharing this build (for deduped container groups) | +| `resourceName` | *string* | :heavy_check_mark: | Name of the resource being built | +| `resourceType` | *string* | :heavy_check_mark: | Type of the resource: "worker", "container" | +| `type` | *"BuildingResource"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventdatabuildingstack.md b/client-sdks/platform/typescript/docs/models/eventdatabuildingstack.md new file mode 100644 index 000000000..8074deb65 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventdatabuildingstack.md @@ -0,0 +1,19 @@ +# EventDataBuildingStack + +## Example Usage + +```typescript +import { EventDataBuildingStack } from "@alienplatform/platform-api/models"; + +let value: EventDataBuildingStack = { + stack: "", + type: "BuildingStack", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------- | ----------------------------- | ----------------------------- | ----------------------------- | +| `stack` | *string* | :heavy_check_mark: | Name of the stack being built | +| `type` | *"BuildingStack"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventdatacleaningupenvironment.md b/client-sdks/platform/typescript/docs/models/eventdatacleaningupenvironment.md new file mode 100644 index 000000000..96b404774 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventdatacleaningupenvironment.md @@ -0,0 +1,21 @@ +# EventDataCleaningUpEnvironment + +## Example Usage + +```typescript +import { EventDataCleaningUpEnvironment } from "@alienplatform/platform-api/models"; + +let value: EventDataCleaningUpEnvironment = { + stackName: "", + strategyName: "", + type: "CleaningUpEnvironment", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | +| `stackName` | *string* | :heavy_check_mark: | Name of the stack being cleaned up | +| `strategyName` | *string* | :heavy_check_mark: | Name of the deployment strategy being used for cleanup | +| `type` | *"CleaningUpEnvironment"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventdatacleaningupstack.md b/client-sdks/platform/typescript/docs/models/eventdatacleaningupstack.md new file mode 100644 index 000000000..c4d8ed587 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventdatacleaningupstack.md @@ -0,0 +1,21 @@ +# EventDataCleaningUpStack + +## Example Usage + +```typescript +import { EventDataCleaningUpStack } from "@alienplatform/platform-api/models"; + +let value: EventDataCleaningUpStack = { + stackName: "", + strategyName: "", + type: "CleaningUpStack", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | +| `stackName` | *string* | :heavy_check_mark: | Name of the stack being cleaned up | +| `strategyName` | *string* | :heavy_check_mark: | Name of the deployment strategy being used for cleanup | +| `type` | *"CleaningUpStack"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventdatacompilingcode.md b/client-sdks/platform/typescript/docs/models/eventdatacompilingcode.md new file mode 100644 index 000000000..425357d66 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventdatacompilingcode.md @@ -0,0 +1,20 @@ +# EventDataCompilingCode + +## Example Usage + +```typescript +import { EventDataCompilingCode } from "@alienplatform/platform-api/models"; + +let value: EventDataCompilingCode = { + language: "", + type: "CompilingCode", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `language` | *string* | :heavy_check_mark: | Language being compiled (rust, typescript, etc.) | +| `progress` | *string* | :heavy_minus_sign: | Current progress/status line from the build output | +| `type` | *"CompilingCode"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventdatacreatingrelease.md b/client-sdks/platform/typescript/docs/models/eventdatacreatingrelease.md new file mode 100644 index 000000000..40e18444d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventdatacreatingrelease.md @@ -0,0 +1,19 @@ +# EventDataCreatingRelease + +## Example Usage + +```typescript +import { EventDataCreatingRelease } from "@alienplatform/platform-api/models"; + +let value: EventDataCreatingRelease = { + project: "", + type: "CreatingRelease", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------- | ------------------- | ------------------- | ------------------- | +| `project` | *string* | :heavy_check_mark: | Project name | +| `type` | *"CreatingRelease"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventdatadebuggingagent.md b/client-sdks/platform/typescript/docs/models/eventdatadebuggingagent.md new file mode 100644 index 000000000..78f5a64de --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventdatadebuggingagent.md @@ -0,0 +1,21 @@ +# EventDataDebuggingAgent + +## Example Usage + +```typescript +import { EventDataDebuggingAgent } from "@alienplatform/platform-api/models"; + +let value: EventDataDebuggingAgent = { + agentId: "", + debugSessionId: "", + type: "DebuggingAgent", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ | +| `agentId` | *string* | :heavy_check_mark: | ID of the agent being debugged | +| `debugSessionId` | *string* | :heavy_check_mark: | ID of the debug session | +| `type` | *"DebuggingAgent"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventdatadeletingagent.md b/client-sdks/platform/typescript/docs/models/eventdatadeletingagent.md new file mode 100644 index 000000000..d569607ee --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventdatadeletingagent.md @@ -0,0 +1,21 @@ +# EventDataDeletingAgent + +## Example Usage + +```typescript +import { EventDataDeletingAgent } from "@alienplatform/platform-api/models"; + +let value: EventDataDeletingAgent = { + agentId: "", + releaseId: "", + type: "DeletingAgent", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------- | ----------------------------------------------- | ----------------------------------------------- | ----------------------------------------------- | +| `agentId` | *string* | :heavy_check_mark: | ID of the agent being deleted | +| `releaseId` | *string* | :heavy_check_mark: | ID of the release that was running on the agent | +| `type` | *"DeletingAgent"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventdatadeletingcloudformationstack.md b/client-sdks/platform/typescript/docs/models/eventdatadeletingcloudformationstack.md new file mode 100644 index 000000000..084a1c660 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventdatadeletingcloudformationstack.md @@ -0,0 +1,21 @@ +# EventDataDeletingCloudFormationStack + +## Example Usage + +```typescript +import { EventDataDeletingCloudFormationStack } from "@alienplatform/platform-api/models"; + +let value: EventDataDeletingCloudFormationStack = { + cfnStackName: "", + currentStatus: "", + type: "DeletingCloudFormationStack", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | +| `cfnStackName` | *string* | :heavy_check_mark: | Name of the CloudFormation stack | +| `currentStatus` | *string* | :heavy_check_mark: | Current stack status | +| `type` | *"DeletingCloudFormationStack"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventdatadeployingcloudformationstack.md b/client-sdks/platform/typescript/docs/models/eventdatadeployingcloudformationstack.md new file mode 100644 index 000000000..79300896e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventdatadeployingcloudformationstack.md @@ -0,0 +1,21 @@ +# EventDataDeployingCloudFormationStack + +## Example Usage + +```typescript +import { EventDataDeployingCloudFormationStack } from "@alienplatform/platform-api/models"; + +let value: EventDataDeployingCloudFormationStack = { + cfnStackName: "", + currentStatus: "", + type: "DeployingCloudFormationStack", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | +| `cfnStackName` | *string* | :heavy_check_mark: | Name of the CloudFormation stack | +| `currentStatus` | *string* | :heavy_check_mark: | Current stack status | +| `type` | *"DeployingCloudFormationStack"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventdatadeployingstack.md b/client-sdks/platform/typescript/docs/models/eventdatadeployingstack.md new file mode 100644 index 000000000..d099adce1 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventdatadeployingstack.md @@ -0,0 +1,19 @@ +# EventDataDeployingStack + +## Example Usage + +```typescript +import { EventDataDeployingStack } from "@alienplatform/platform-api/models"; + +let value: EventDataDeployingStack = { + stackName: "", + type: "DeployingStack", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | +| `stackName` | *string* | :heavy_check_mark: | Name of the stack being deployed | +| `type` | *"DeployingStack"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventdatadeploymentcreated.md b/client-sdks/platform/typescript/docs/models/eventdatadeploymentcreated.md new file mode 100644 index 000000000..9ee8f080c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventdatadeploymentcreated.md @@ -0,0 +1,22 @@ +# EventDataDeploymentCreated + +## Example Usage + +```typescript +import { EventDataDeploymentCreated } from "@alienplatform/platform-api/models"; + +let value: EventDataDeploymentCreated = { + deploymentGroupId: "", + deploymentId: "", + type: "DeploymentCreated", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | +| `deploymentGroupId` | *string* | :heavy_check_mark: | ID of the deployment group this slot belongs to | +| `deploymentId` | *string* | :heavy_check_mark: | ID of the deployment that was created | +| `releaseId` | *string* | :heavy_minus_sign: | Initial release the slot was created with, if any | +| `type` | *"DeploymentCreated"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventdatadeploymentdegraded.md b/client-sdks/platform/typescript/docs/models/eventdatadeploymentdegraded.md new file mode 100644 index 000000000..c38b5efe4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventdatadeploymentdegraded.md @@ -0,0 +1,25 @@ +# EventDataDeploymentDegraded + +## Example Usage + +```typescript +import { EventDataDeploymentDegraded } from "@alienplatform/platform-api/models"; + +let value: EventDataDeploymentDegraded = { + deploymentId: "", + error: { + code: "", + internal: true, + message: "", + }, + type: "DeploymentDegraded", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `deploymentId` | *string* | :heavy_check_mark: | ID of the deployment | +| `error` | [models.EventDataError2](../models/eventdataerror2.md) | :heavy_check_mark: | Canonical error container that provides a structured way to represent errors
with rich metadata including error codes, human-readable messages, context,
and chaining capabilities for error propagation.

This struct is designed to be both machine-readable and user-friendly,
supporting serialization for API responses and detailed error reporting
in distributed systems. | +| `type` | *"DeploymentDegraded"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventdatadeploymentdeleted.md b/client-sdks/platform/typescript/docs/models/eventdatadeploymentdeleted.md new file mode 100644 index 000000000..7951b513c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventdatadeploymentdeleted.md @@ -0,0 +1,19 @@ +# EventDataDeploymentDeleted + +## Example Usage + +```typescript +import { EventDataDeploymentDeleted } from "@alienplatform/platform-api/models"; + +let value: EventDataDeploymentDeleted = { + deploymentId: "", + type: "DeploymentDeleted", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------- | ------------------------------------- | ------------------------------------- | ------------------------------------- | +| `deploymentId` | *string* | :heavy_check_mark: | ID of the deployment that was deleted | +| `type` | *"DeploymentDeleted"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventdatadeploymentdeletionrequested.md b/client-sdks/platform/typescript/docs/models/eventdatadeploymentdeletionrequested.md new file mode 100644 index 000000000..6011b67f8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventdatadeploymentdeletionrequested.md @@ -0,0 +1,19 @@ +# EventDataDeploymentDeletionRequested + +## Example Usage + +```typescript +import { EventDataDeploymentDeletionRequested } from "@alienplatform/platform-api/models"; + +let value: EventDataDeploymentDeletionRequested = { + deploymentId: "", + type: "DeploymentDeletionRequested", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `deploymentId` | *string* | :heavy_check_mark: | ID of the deployment | +| `type` | *"DeploymentDeletionRequested"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventdatadeploymentenvironmentupdated.md b/client-sdks/platform/typescript/docs/models/eventdatadeploymentenvironmentupdated.md new file mode 100644 index 000000000..31ea9b027 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventdatadeploymentenvironmentupdated.md @@ -0,0 +1,26 @@ +# EventDataDeploymentEnvironmentUpdated + +## Example Usage + +```typescript +import { EventDataDeploymentEnvironmentUpdated } from "@alienplatform/platform-api/models"; + +let value: EventDataDeploymentEnvironmentUpdated = { + changedKeys: [ + "", + "", + "", + ], + deploymentId: "", + type: "DeploymentEnvironmentUpdated", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | +| `actor` | *models.EventActorUnion4* | :heavy_minus_sign: | N/A | +| `changedKeys` | *string*[] | :heavy_check_mark: | Names of the environment variables that changed (added, removed, or modified) | +| `deploymentId` | *string* | :heavy_check_mark: | ID of the deployment | +| `type` | *"DeploymentEnvironmentUpdated"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventdatadeploymentfailed.md b/client-sdks/platform/typescript/docs/models/eventdatadeploymentfailed.md new file mode 100644 index 000000000..223c0a33f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventdatadeploymentfailed.md @@ -0,0 +1,28 @@ +# EventDataDeploymentFailed + +## Example Usage + +```typescript +import { EventDataDeploymentFailed } from "@alienplatform/platform-api/models"; + +let value: EventDataDeploymentFailed = { + deploymentId: "", + error: { + code: "", + internal: true, + message: "", + }, + phase: "deleting", + type: "DeploymentFailed", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `attemptedReleaseId` | *string* | :heavy_minus_sign: | ID of the release the platform was trying to deploy, if known | +| `deploymentId` | *string* | :heavy_check_mark: | ID of the deployment | +| `error` | [models.EventDataError1](../models/eventdataerror1.md) | :heavy_check_mark: | Canonical error container that provides a structured way to represent errors
with rich metadata including error codes, human-readable messages, context,
and chaining capabilities for error propagation.

This struct is designed to be both machine-readable and user-friendly,
supporting serialization for API responses and detailed error reporting
in distributed systems. | +| `phase` | [models.EventPhase](../models/eventphase.md) | :heavy_check_mark: | Phase of a deployment at which a failure occurred.

Derived from the source deployment status: `preflights-failed` →
`Preflights`, `provisioning-failed` → `Provisioning`, `update-failed` →
`Updating`, `delete-failed` → `Deleting`.
`refresh-failed` is modelled separately via `DeploymentDegraded`. | +| `type` | *"DeploymentFailed"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventdatadeploymentrecovered.md b/client-sdks/platform/typescript/docs/models/eventdatadeploymentrecovered.md new file mode 100644 index 000000000..8c201ca96 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventdatadeploymentrecovered.md @@ -0,0 +1,21 @@ +# EventDataDeploymentRecovered + +## Example Usage + +```typescript +import { EventDataDeploymentRecovered } from "@alienplatform/platform-api/models"; + +let value: EventDataDeploymentRecovered = { + deploymentId: "", + releaseId: "", + type: "DeploymentRecovered", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | +| `deploymentId` | *string* | :heavy_check_mark: | ID of the deployment | +| `releaseId` | *string* | :heavy_check_mark: | ID of the release that is now live | +| `type` | *"DeploymentRecovered"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventdatadeploymentredeployrequested.md b/client-sdks/platform/typescript/docs/models/eventdatadeploymentredeployrequested.md new file mode 100644 index 000000000..a1dcb6c71 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventdatadeploymentredeployrequested.md @@ -0,0 +1,21 @@ +# EventDataDeploymentRedeployRequested + +## Example Usage + +```typescript +import { EventDataDeploymentRedeployRequested } from "@alienplatform/platform-api/models"; + +let value: EventDataDeploymentRedeployRequested = { + deploymentId: "", + releaseId: "", + type: "DeploymentRedeployRequested", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | +| `deploymentId` | *string* | :heavy_check_mark: | ID of the deployment | +| `releaseId` | *string* | :heavy_check_mark: | ID of the release being redeployed | +| `type` | *"DeploymentRedeployRequested"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventdatadeploymentreleasechannelchanged.md b/client-sdks/platform/typescript/docs/models/eventdatadeploymentreleasechannelchanged.md new file mode 100644 index 000000000..9074b115b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventdatadeploymentreleasechannelchanged.md @@ -0,0 +1,24 @@ +# EventDataDeploymentReleaseChannelChanged + +## Example Usage + +```typescript +import { EventDataDeploymentReleaseChannelChanged } from "@alienplatform/platform-api/models"; + +let value: EventDataDeploymentReleaseChannelChanged = { + channel: "", + deploymentId: "", + previousChannel: "", + type: "DeploymentReleaseChannelChanged", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | +| `actor` | *models.EventActorUnion2* | :heavy_minus_sign: | N/A | +| `channel` | *string* | :heavy_check_mark: | Newly followed channel | +| `deploymentId` | *string* | :heavy_check_mark: | ID of the deployment | +| `previousChannel` | *string* | :heavy_check_mark: | Previously followed channel | +| `type` | *"DeploymentReleaseChannelChanged"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventdatadeploymentreleased.md b/client-sdks/platform/typescript/docs/models/eventdatadeploymentreleased.md new file mode 100644 index 000000000..20ad19364 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventdatadeploymentreleased.md @@ -0,0 +1,22 @@ +# EventDataDeploymentReleased + +## Example Usage + +```typescript +import { EventDataDeploymentReleased } from "@alienplatform/platform-api/models"; + +let value: EventDataDeploymentReleased = { + deploymentId: "", + releaseId: "", + type: "DeploymentReleased", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `deploymentId` | *string* | :heavy_check_mark: | ID of the deployment | +| `previousReleaseId` | *string* | :heavy_minus_sign: | ID of the release that was previously live, if any | +| `releaseId` | *string* | :heavy_check_mark: | ID of the release that is now live | +| `type` | *"DeploymentReleased"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventdatadeploymentreleasepinned.md b/client-sdks/platform/typescript/docs/models/eventdatadeploymentreleasepinned.md new file mode 100644 index 000000000..c0c2a8344 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventdatadeploymentreleasepinned.md @@ -0,0 +1,22 @@ +# EventDataDeploymentReleasePinned + +## Example Usage + +```typescript +import { EventDataDeploymentReleasePinned } from "@alienplatform/platform-api/models"; + +let value: EventDataDeploymentReleasePinned = { + deploymentId: "", + pinnedReleaseId: "", + type: "DeploymentReleasePinned", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | +| `deploymentId` | *string* | :heavy_check_mark: | ID of the deployment | +| `pinnedReleaseId` | *string* | :heavy_check_mark: | ID of the release that is now pinned | +| `previousPinnedReleaseId` | *string* | :heavy_minus_sign: | ID of the previously pinned release, if any | +| `type` | *"DeploymentReleasePinned"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventdatadeploymentreleaseunpinned.md b/client-sdks/platform/typescript/docs/models/eventdatadeploymentreleaseunpinned.md new file mode 100644 index 000000000..25e6eaaad --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventdatadeploymentreleaseunpinned.md @@ -0,0 +1,21 @@ +# EventDataDeploymentReleaseUnpinned + +## Example Usage + +```typescript +import { EventDataDeploymentReleaseUnpinned } from "@alienplatform/platform-api/models"; + +let value: EventDataDeploymentReleaseUnpinned = { + deploymentId: "", + previousPinnedReleaseId: "", + type: "DeploymentReleaseUnpinned", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | +| `deploymentId` | *string* | :heavy_check_mark: | ID of the deployment | +| `previousPinnedReleaseId` | *string* | :heavy_check_mark: | ID of the release that was previously pinned | +| `type` | *"DeploymentReleaseUnpinned"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventdatadeploymentretryrequested.md b/client-sdks/platform/typescript/docs/models/eventdatadeploymentretryrequested.md new file mode 100644 index 000000000..0eec2d158 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventdatadeploymentretryrequested.md @@ -0,0 +1,22 @@ +# EventDataDeploymentRetryRequested + +## Example Usage + +```typescript +import { EventDataDeploymentRetryRequested } from "@alienplatform/platform-api/models"; + +let value: EventDataDeploymentRetryRequested = { + deploymentId: "", + type: "DeploymentRetryRequested", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | +| `actor` | *models.EventActorUnion3* | :heavy_minus_sign: | N/A | +| `attemptedReleaseId` | *string* | :heavy_minus_sign: | ID of the release that the failed attempt was targeting, if known | +| `deploymentId` | *string* | :heavy_check_mark: | ID of the deployment | +| `previousError` | *models.EventPreviousErrorUnion* | :heavy_minus_sign: | N/A | +| `type` | *"DeploymentRetryRequested"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventdatadownloadingalienruntime.md b/client-sdks/platform/typescript/docs/models/eventdatadownloadingalienruntime.md new file mode 100644 index 000000000..46987095c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventdatadownloadingalienruntime.md @@ -0,0 +1,21 @@ +# EventDataDownloadingAlienRuntime + +## Example Usage + +```typescript +import { EventDataDownloadingAlienRuntime } from "@alienplatform/platform-api/models"; + +let value: EventDataDownloadingAlienRuntime = { + targetTriple: "", + type: "DownloadingAlienRuntime", + url: "https://unlawful-skyline.com", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------- | ----------------------------- | ----------------------------- | ----------------------------- | +| `targetTriple` | *string* | :heavy_check_mark: | Target triple for the runtime | +| `type` | *"DownloadingAlienRuntime"* | :heavy_check_mark: | N/A | +| `url` | *string* | :heavy_check_mark: | URL being downloaded from | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventdataemptyingbuckets.md b/client-sdks/platform/typescript/docs/models/eventdataemptyingbuckets.md new file mode 100644 index 000000000..962bdfebc --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventdataemptyingbuckets.md @@ -0,0 +1,19 @@ +# EventDataEmptyingBuckets + +## Example Usage + +```typescript +import { EventDataEmptyingBuckets } from "@alienplatform/platform-api/models"; + +let value: EventDataEmptyingBuckets = { + bucketNames: [], + type: "EmptyingBuckets", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------- | ------------------------------------- | ------------------------------------- | ------------------------------------- | +| `bucketNames` | *string*[] | :heavy_check_mark: | Names of the S3 buckets being emptied | +| `type` | *"EmptyingBuckets"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventdataensuringdockerrepository.md b/client-sdks/platform/typescript/docs/models/eventdataensuringdockerrepository.md new file mode 100644 index 000000000..275727f8c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventdataensuringdockerrepository.md @@ -0,0 +1,19 @@ +# EventDataEnsuringDockerRepository + +## Example Usage + +```typescript +import { EventDataEnsuringDockerRepository } from "@alienplatform/platform-api/models"; + +let value: EventDataEnsuringDockerRepository = { + repositoryName: "", + type: "EnsuringDockerRepository", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------- | ----------------------------- | ----------------------------- | ----------------------------- | +| `repositoryName` | *string* | :heavy_check_mark: | Name of the docker repository | +| `type` | *"EnsuringDockerRepository"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventdataerror1.md b/client-sdks/platform/typescript/docs/models/eventdataerror1.md new file mode 100644 index 000000000..6bd953eb3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventdataerror1.md @@ -0,0 +1,34 @@ +# EventDataError1 + +Canonical error container that provides a structured way to represent errors +with rich metadata including error codes, human-readable messages, context, +and chaining capabilities for error propagation. + +This struct is designed to be both machine-readable and user-friendly, +supporting serialization for API responses and detailed error reporting +in distributed systems. + +## Example Usage + +```typescript +import { EventDataError1 } from "@alienplatform/platform-api/models"; + +let value: EventDataError1 = { + code: "", + internal: true, + message: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `code` | *string* | :heavy_check_mark: | A unique identifier for the type of error.

This should be a short, machine-readable string that can be used
by clients to programmatically handle different error types.
Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" | +| `context` | *any* | :heavy_minus_sign: | Additional diagnostic information about the error context.

This optional field can contain structured data providing more details
about the error, such as validation errors, request parameters that
caused the issue, or other relevant context information. | +| `hint` | *string* | :heavy_minus_sign: | Optional human-facing remediation hint. | +| `httpStatusCode` | *number* | :heavy_minus_sign: | HTTP status code for this error.

Used when converting the error to an HTTP response. If None, falls back to
the error type's default status code or 500. | +| `internal` | *boolean* | :heavy_check_mark: | Indicates if this is an internal error that should not be exposed to users.

When `true`, this error contains sensitive information or implementation
details that should not be shown to end-users. Such errors should be
logged for debugging but replaced with generic error messages in responses. | +| `message` | *string* | :heavy_check_mark: | Human-readable error message.

This message should be clear and actionable for developers or end-users,
providing context about what went wrong and potentially how to fix it. | +| `retryable` | *boolean* | :heavy_minus_sign: | Indicates whether the operation that caused the error should be retried.

When `true`, the error is transient and the operation might succeed
if attempted again. When `false`, retrying the same operation is
unlikely to succeed without changes. | +| `source` | *any* | :heavy_minus_sign: | The underlying error that caused this error, creating an error chain.

This allows for proper error propagation and debugging by maintaining
the full context of how an error occurred through multiple layers
of an application. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventdataerror2.md b/client-sdks/platform/typescript/docs/models/eventdataerror2.md new file mode 100644 index 000000000..f4a9b28f3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventdataerror2.md @@ -0,0 +1,34 @@ +# EventDataError2 + +Canonical error container that provides a structured way to represent errors +with rich metadata including error codes, human-readable messages, context, +and chaining capabilities for error propagation. + +This struct is designed to be both machine-readable and user-friendly, +supporting serialization for API responses and detailed error reporting +in distributed systems. + +## Example Usage + +```typescript +import { EventDataError2 } from "@alienplatform/platform-api/models"; + +let value: EventDataError2 = { + code: "", + internal: false, + message: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `code` | *string* | :heavy_check_mark: | A unique identifier for the type of error.

This should be a short, machine-readable string that can be used
by clients to programmatically handle different error types.
Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" | +| `context` | *any* | :heavy_minus_sign: | Additional diagnostic information about the error context.

This optional field can contain structured data providing more details
about the error, such as validation errors, request parameters that
caused the issue, or other relevant context information. | +| `hint` | *string* | :heavy_minus_sign: | Optional human-facing remediation hint. | +| `httpStatusCode` | *number* | :heavy_minus_sign: | HTTP status code for this error.

Used when converting the error to an HTTP response. If None, falls back to
the error type's default status code or 500. | +| `internal` | *boolean* | :heavy_check_mark: | Indicates if this is an internal error that should not be exposed to users.

When `true`, this error contains sensitive information or implementation
details that should not be shown to end-users. Such errors should be
logged for debugging but replaced with generic error messages in responses. | +| `message` | *string* | :heavy_check_mark: | Human-readable error message.

This message should be clear and actionable for developers or end-users,
providing context about what went wrong and potentially how to fix it. | +| `retryable` | *boolean* | :heavy_minus_sign: | Indicates whether the operation that caused the error should be retried.

When `true`, the error is transient and the operation might succeed
if attempted again. When `false`, retrying the same operation is
unlikely to succeed without changes. | +| `source` | *any* | :heavy_minus_sign: | The underlying error that caused this error, creating an error chain.

This allows for proper error propagation and debugging by maintaining
the full context of how an error occurred through multiple layers
of an application. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventdatafinished.md b/client-sdks/platform/typescript/docs/models/eventdatafinished.md new file mode 100644 index 000000000..d174c5257 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventdatafinished.md @@ -0,0 +1,17 @@ +# EventDataFinished + +## Example Usage + +```typescript +import { EventDataFinished } from "@alienplatform/platform-api/models"; + +let value: EventDataFinished = { + type: "Finished", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `type` | *"Finished"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventdatageneratingcloudformationtemplate.md b/client-sdks/platform/typescript/docs/models/eventdatageneratingcloudformationtemplate.md new file mode 100644 index 000000000..cd6fd644d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventdatageneratingcloudformationtemplate.md @@ -0,0 +1,17 @@ +# EventDataGeneratingCloudFormationTemplate + +## Example Usage + +```typescript +import { EventDataGeneratingCloudFormationTemplate } from "@alienplatform/platform-api/models"; + +let value: EventDataGeneratingCloudFormationTemplate = { + type: "GeneratingCloudFormationTemplate", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | +| `type` | *"GeneratingCloudFormationTemplate"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventdatageneratingtemplate.md b/client-sdks/platform/typescript/docs/models/eventdatageneratingtemplate.md new file mode 100644 index 000000000..e194242c1 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventdatageneratingtemplate.md @@ -0,0 +1,19 @@ +# EventDataGeneratingTemplate + +## Example Usage + +```typescript +import { EventDataGeneratingTemplate } from "@alienplatform/platform-api/models"; + +let value: EventDataGeneratingTemplate = { + platform: "", + type: "GeneratingTemplate", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `platform` | *string* | :heavy_check_mark: | Platform for which the template is being generated | +| `type` | *"GeneratingTemplate"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventdataimportingstackstatefromcloudformation.md b/client-sdks/platform/typescript/docs/models/eventdataimportingstackstatefromcloudformation.md new file mode 100644 index 000000000..2b1e3b4c5 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventdataimportingstackstatefromcloudformation.md @@ -0,0 +1,19 @@ +# EventDataImportingStackStateFromCloudFormation + +## Example Usage + +```typescript +import { EventDataImportingStackStateFromCloudFormation } from "@alienplatform/platform-api/models"; + +let value: EventDataImportingStackStateFromCloudFormation = { + cfnStackName: "", + type: "ImportingStackStateFromCloudFormation", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------- | ----------------------------------------- | ----------------------------------------- | ----------------------------------------- | +| `cfnStackName` | *string* | :heavy_check_mark: | Name of the CloudFormation stack | +| `type` | *"ImportingStackStateFromCloudFormation"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventdataloadingconfiguration.md b/client-sdks/platform/typescript/docs/models/eventdataloadingconfiguration.md new file mode 100644 index 000000000..289d88c65 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventdataloadingconfiguration.md @@ -0,0 +1,17 @@ +# EventDataLoadingConfiguration + +## Example Usage + +```typescript +import { EventDataLoadingConfiguration } from "@alienplatform/platform-api/models"; + +let value: EventDataLoadingConfiguration = { + type: "LoadingConfiguration", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------ | ------------------------ | ------------------------ | ------------------------ | +| `type` | *"LoadingConfiguration"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventdatapreparingenvironment.md b/client-sdks/platform/typescript/docs/models/eventdatapreparingenvironment.md new file mode 100644 index 000000000..b7b521c61 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventdatapreparingenvironment.md @@ -0,0 +1,19 @@ +# EventDataPreparingEnvironment + +## Example Usage + +```typescript +import { EventDataPreparingEnvironment } from "@alienplatform/platform-api/models"; + +let value: EventDataPreparingEnvironment = { + strategyName: "", + type: "PreparingEnvironment", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------ | ------------------------------------------ | ------------------------------------------ | ------------------------------------------ | +| `strategyName` | *string* | :heavy_check_mark: | Name of the deployment strategy being used | +| `type` | *"PreparingEnvironment"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventdataprovisioningagent.md b/client-sdks/platform/typescript/docs/models/eventdataprovisioningagent.md new file mode 100644 index 000000000..6cd71da18 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventdataprovisioningagent.md @@ -0,0 +1,21 @@ +# EventDataProvisioningAgent + +## Example Usage + +```typescript +import { EventDataProvisioningAgent } from "@alienplatform/platform-api/models"; + +let value: EventDataProvisioningAgent = { + agentId: "", + releaseId: "", + type: "ProvisioningAgent", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------- | --------------------------------------------- | --------------------------------------------- | --------------------------------------------- | +| `agentId` | *string* | :heavy_check_mark: | ID of the agent being provisioned | +| `releaseId` | *string* | :heavy_check_mark: | ID of the release being deployed to the agent | +| `type` | *"ProvisioningAgent"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventdatapushingimage.md b/client-sdks/platform/typescript/docs/models/eventdatapushingimage.md new file mode 100644 index 000000000..2e99f97d3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventdatapushingimage.md @@ -0,0 +1,20 @@ +# EventDataPushingImage + +## Example Usage + +```typescript +import { EventDataPushingImage } from "@alienplatform/platform-api/models"; + +let value: EventDataPushingImage = { + image: "https://picsum.photos/seed/3ETRvL33XQ/3838/1575", + type: "PushingImage", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ | +| `image` | *string* | :heavy_check_mark: | Name of the image being pushed | +| `progress` | *models.EventProgressUnion* | :heavy_minus_sign: | N/A | +| `type` | *"PushingImage"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventdatapushingresource.md b/client-sdks/platform/typescript/docs/models/eventdatapushingresource.md new file mode 100644 index 000000000..f35abfaa1 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventdatapushingresource.md @@ -0,0 +1,21 @@ +# EventDataPushingResource + +## Example Usage + +```typescript +import { EventDataPushingResource } from "@alienplatform/platform-api/models"; + +let value: EventDataPushingResource = { + resourceName: "", + resourceType: "", + type: "PushingResource", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | +| `resourceName` | *string* | :heavy_check_mark: | Name of the resource being pushed | +| `resourceType` | *string* | :heavy_check_mark: | Type of the resource: "worker", "container" | +| `type` | *"PushingResource"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventdatapushingstack.md b/client-sdks/platform/typescript/docs/models/eventdatapushingstack.md new file mode 100644 index 000000000..fbdb1e124 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventdatapushingstack.md @@ -0,0 +1,22 @@ +# EventDataPushingStack + +## Example Usage + +```typescript +import { EventDataPushingStack } from "@alienplatform/platform-api/models"; + +let value: EventDataPushingStack = { + platform: "", + stack: "", + type: "PushingStack", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | +| `destination` | *string* | :heavy_minus_sign: | Human-readable destination for pushed images | +| `platform` | *string* | :heavy_check_mark: | Target platform | +| `stack` | *string* | :heavy_check_mark: | Name of the stack being pushed | +| `type` | *"PushingStack"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventdatareleasechannelupdated.md b/client-sdks/platform/typescript/docs/models/eventdatareleasechannelupdated.md new file mode 100644 index 000000000..c2e42cb29 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventdatareleasechannelupdated.md @@ -0,0 +1,23 @@ +# EventDataReleaseChannelUpdated + +## Example Usage + +```typescript +import { EventDataReleaseChannelUpdated } from "@alienplatform/platform-api/models"; + +let value: EventDataReleaseChannelUpdated = { + channel: "", + releaseId: "", + type: "ReleaseChannelUpdated", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | +| `actor` | *models.EventActorUnion1* | :heavy_minus_sign: | N/A | +| `channel` | *string* | :heavy_check_mark: | Name of the channel that moved | +| `previousReleaseId` | *string* | :heavy_minus_sign: | ID of the release that was previously current, if any | +| `releaseId` | *string* | :heavy_check_mark: | ID of the release that is now current | +| `type` | *"ReleaseChannelUpdated"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventdatarunningpreflights.md b/client-sdks/platform/typescript/docs/models/eventdatarunningpreflights.md new file mode 100644 index 000000000..db703239c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventdatarunningpreflights.md @@ -0,0 +1,21 @@ +# EventDataRunningPreflights + +## Example Usage + +```typescript +import { EventDataRunningPreflights } from "@alienplatform/platform-api/models"; + +let value: EventDataRunningPreflights = { + platform: "", + stack: "", + type: "RunningPreflights", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `platform` | *string* | :heavy_check_mark: | Platform being targeted | +| `stack` | *string* | :heavy_check_mark: | Name of the stack being checked | +| `type` | *"RunningPreflights"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventdatarunningtestworker.md b/client-sdks/platform/typescript/docs/models/eventdatarunningtestworker.md new file mode 100644 index 000000000..61524d430 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventdatarunningtestworker.md @@ -0,0 +1,19 @@ +# EventDataRunningTestWorker + +## Example Usage + +```typescript +import { EventDataRunningTestWorker } from "@alienplatform/platform-api/models"; + +let value: EventDataRunningTestWorker = { + stackName: "", + type: "RunningTestWorker", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ | +| `stackName` | *string* | :heavy_check_mark: | Name of the stack being tested | +| `type` | *"RunningTestWorker"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventdatasettingupplatformcontext.md b/client-sdks/platform/typescript/docs/models/eventdatasettingupplatformcontext.md new file mode 100644 index 000000000..0ddfb3275 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventdatasettingupplatformcontext.md @@ -0,0 +1,19 @@ +# EventDataSettingUpPlatformContext + +## Example Usage + +```typescript +import { EventDataSettingUpPlatformContext } from "@alienplatform/platform-api/models"; + +let value: EventDataSettingUpPlatformContext = { + platformName: "", + type: "SettingUpPlatformContext", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------- | ----------------------------------------- | ----------------------------------------- | ----------------------------------------- | +| `platformName` | *string* | :heavy_check_mark: | Name of the platform (e.g., "AWS", "GCP") | +| `type` | *"SettingUpPlatformContext"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventdatastackstep.md b/client-sdks/platform/typescript/docs/models/eventdatastackstep.md new file mode 100644 index 000000000..079d643a1 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventdatastackstep.md @@ -0,0 +1,33 @@ +# EventDataStackStep + +## Example Usage + +```typescript +import { EventDataStackStep } from "@alienplatform/platform-api/models"; + +let value: EventDataStackStep = { + nextState: { + platform: "kubernetes", + resourcePrefix: "", + resources: { + "key": { + config: { + id: "", + type: "", + }, + status: "pending", + type: "", + }, + }, + }, + type: "StackStep", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `nextState` | [models.EventNextState](../models/eventnextstate.md) | :heavy_check_mark: | Represents the collective state of all resources in a stack, including platform and pending actions. | +| `suggestedDelayMs` | *number* | :heavy_minus_sign: | An suggested duration to wait before executing the next step. | +| `type` | *"StackStep"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventdataunion.md b/client-sdks/platform/typescript/docs/models/eventdataunion.md index 8b1db163f..0f33f7096 100644 --- a/client-sdks/platform/typescript/docs/models/eventdataunion.md +++ b/client-sdks/platform/typescript/docs/models/eventdataunion.md @@ -3,123 +3,123 @@ ## Supported Types -### `models.DataLoadingConfiguration` +### `models.EventDataLoadingConfiguration` ```typescript -const value: models.DataLoadingConfiguration = { +const value: models.EventDataLoadingConfiguration = { type: "LoadingConfiguration", }; ``` -### `models.DataFinished` +### `models.EventDataFinished` ```typescript -const value: models.DataFinished = { +const value: models.EventDataFinished = { type: "Finished", }; ``` -### `models.DataBuildingStack` +### `models.EventDataBuildingStack` ```typescript -const value: models.DataBuildingStack = { +const value: models.EventDataBuildingStack = { stack: "", type: "BuildingStack", }; ``` -### `models.DataRunningPreflights` +### `models.EventDataRunningPreflights` ```typescript -const value: models.DataRunningPreflights = { +const value: models.EventDataRunningPreflights = { platform: "", stack: "", type: "RunningPreflights", }; ``` -### `models.DataDownloadingAlienRuntime` +### `models.EventDataDownloadingAlienRuntime` ```typescript -const value: models.DataDownloadingAlienRuntime = { +const value: models.EventDataDownloadingAlienRuntime = { targetTriple: "", type: "DownloadingAlienRuntime", - url: "https://dim-jellyfish.com/", + url: "https://unlawful-skyline.com", }; ``` -### `models.DataBuildingResource` +### `models.EventDataBuildingResource` ```typescript -const value: models.DataBuildingResource = { +const value: models.EventDataBuildingResource = { resourceName: "", resourceType: "", type: "BuildingResource", }; ``` -### `models.DataBuildingImage` +### `models.EventDataBuildingImage` ```typescript -const value: models.DataBuildingImage = { - image: "https://loremflickr.com/965/1538?lock=536245262441792", +const value: models.EventDataBuildingImage = { + image: "https://loremflickr.com/1460/1419?lock=7755903317896576", type: "BuildingImage", }; ``` -### `models.DataPushingImage` +### `models.EventDataPushingImage` ```typescript -const value: models.DataPushingImage = { - image: "https://picsum.photos/seed/bgd6b4HoNE/948/3236", +const value: models.EventDataPushingImage = { + image: "https://picsum.photos/seed/3ETRvL33XQ/3838/1575", type: "PushingImage", }; ``` -### `models.DataPushingStack` +### `models.EventDataPushingStack` ```typescript -const value: models.DataPushingStack = { +const value: models.EventDataPushingStack = { platform: "", stack: "", type: "PushingStack", }; ``` -### `models.DataPushingResource` +### `models.EventDataPushingResource` ```typescript -const value: models.DataPushingResource = { +const value: models.EventDataPushingResource = { resourceName: "", resourceType: "", type: "PushingResource", }; ``` -### `models.DataCreatingRelease` +### `models.EventDataCreatingRelease` ```typescript -const value: models.DataCreatingRelease = { +const value: models.EventDataCreatingRelease = { project: "", type: "CreatingRelease", }; ``` -### `models.DataCompilingCode` +### `models.EventDataCompilingCode` ```typescript -const value: models.DataCompilingCode = { +const value: models.EventDataCompilingCode = { language: "", type: "CompilingCode", }; ``` -### `models.DataStackStep` +### `models.EventDataStackStep` ```typescript -const value: models.DataStackStep = { +const value: models.EventDataStackStep = { nextState: { - platform: "test", + platform: "kubernetes", resourcePrefix: "", resources: { "key": { @@ -127,7 +127,7 @@ const value: models.DataStackStep = { id: "", type: "", }, - status: "running", + status: "pending", type: "", }, }, @@ -136,298 +136,321 @@ const value: models.DataStackStep = { }; ``` -### `models.DataGeneratingCloudFormationTemplate` +### `models.EventDataGeneratingCloudFormationTemplate` ```typescript -const value: models.DataGeneratingCloudFormationTemplate = { +const value: models.EventDataGeneratingCloudFormationTemplate = { type: "GeneratingCloudFormationTemplate", }; ``` -### `models.DataGeneratingTemplate` +### `models.EventDataGeneratingTemplate` ```typescript -const value: models.DataGeneratingTemplate = { +const value: models.EventDataGeneratingTemplate = { platform: "", type: "GeneratingTemplate", }; ``` -### `models.DataProvisioningAgent` +### `models.EventDataProvisioningAgent` ```typescript -const value: models.DataProvisioningAgent = { +const value: models.EventDataProvisioningAgent = { agentId: "", releaseId: "", type: "ProvisioningAgent", }; ``` -### `models.DataUpdatingAgent` +### `models.EventDataUpdatingAgent` ```typescript -const value: models.DataUpdatingAgent = { +const value: models.EventDataUpdatingAgent = { agentId: "", releaseId: "", type: "UpdatingAgent", }; ``` -### `models.DataDeletingAgent` +### `models.EventDataDeletingAgent` ```typescript -const value: models.DataDeletingAgent = { +const value: models.EventDataDeletingAgent = { agentId: "", releaseId: "", type: "DeletingAgent", }; ``` -### `models.DataDebuggingAgent` +### `models.EventDataDebuggingAgent` ```typescript -const value: models.DataDebuggingAgent = { +const value: models.EventDataDebuggingAgent = { agentId: "", debugSessionId: "", type: "DebuggingAgent", }; ``` -### `models.DataPreparingEnvironment` +### `models.EventDataPreparingEnvironment` ```typescript -const value: models.DataPreparingEnvironment = { +const value: models.EventDataPreparingEnvironment = { strategyName: "", type: "PreparingEnvironment", }; ``` -### `models.DataDeployingStack` +### `models.EventDataDeployingStack` ```typescript -const value: models.DataDeployingStack = { +const value: models.EventDataDeployingStack = { stackName: "", type: "DeployingStack", }; ``` -### `models.DataRunningTestWorker` +### `models.EventDataRunningTestWorker` ```typescript -const value: models.DataRunningTestWorker = { +const value: models.EventDataRunningTestWorker = { stackName: "", type: "RunningTestWorker", }; ``` -### `models.DataCleaningUpStack` +### `models.EventDataCleaningUpStack` ```typescript -const value: models.DataCleaningUpStack = { +const value: models.EventDataCleaningUpStack = { stackName: "", strategyName: "", type: "CleaningUpStack", }; ``` -### `models.DataCleaningUpEnvironment` +### `models.EventDataCleaningUpEnvironment` ```typescript -const value: models.DataCleaningUpEnvironment = { +const value: models.EventDataCleaningUpEnvironment = { stackName: "", strategyName: "", type: "CleaningUpEnvironment", }; ``` -### `models.DataSettingUpPlatformContext` +### `models.EventDataSettingUpPlatformContext` ```typescript -const value: models.DataSettingUpPlatformContext = { +const value: models.EventDataSettingUpPlatformContext = { platformName: "", type: "SettingUpPlatformContext", }; ``` -### `models.DataEnsuringDockerRepository` +### `models.EventDataEnsuringDockerRepository` ```typescript -const value: models.DataEnsuringDockerRepository = { +const value: models.EventDataEnsuringDockerRepository = { repositoryName: "", type: "EnsuringDockerRepository", }; ``` -### `models.DataDeployingCloudFormationStack` +### `models.EventDataDeployingCloudFormationStack` ```typescript -const value: models.DataDeployingCloudFormationStack = { +const value: models.EventDataDeployingCloudFormationStack = { cfnStackName: "", currentStatus: "", type: "DeployingCloudFormationStack", }; ``` -### `models.DataAssumingRole` +### `models.EventDataAssumingRole` ```typescript -const value: models.DataAssumingRole = { +const value: models.EventDataAssumingRole = { roleArn: "", type: "AssumingRole", }; ``` -### `models.DataImportingStackStateFromCloudFormation` +### `models.EventDataImportingStackStateFromCloudFormation` ```typescript -const value: models.DataImportingStackStateFromCloudFormation = { +const value: models.EventDataImportingStackStateFromCloudFormation = { cfnStackName: "", type: "ImportingStackStateFromCloudFormation", }; ``` -### `models.DataDeletingCloudFormationStack` +### `models.EventDataDeletingCloudFormationStack` ```typescript -const value: models.DataDeletingCloudFormationStack = { +const value: models.EventDataDeletingCloudFormationStack = { cfnStackName: "", currentStatus: "", type: "DeletingCloudFormationStack", }; ``` -### `models.DataEmptyingBuckets` +### `models.EventDataEmptyingBuckets` ```typescript -const value: models.DataEmptyingBuckets = { - bucketNames: [ - "", - ], +const value: models.EventDataEmptyingBuckets = { + bucketNames: [], type: "EmptyingBuckets", }; ``` -### `models.DataDeploymentCreated` +### `models.EventDataDeploymentCreated` ```typescript -const value: models.DataDeploymentCreated = { +const value: models.EventDataDeploymentCreated = { deploymentGroupId: "", deploymentId: "", type: "DeploymentCreated", }; ``` -### `models.DataDeploymentReleased` +### `models.EventDataDeploymentReleased` ```typescript -const value: models.DataDeploymentReleased = { +const value: models.EventDataDeploymentReleased = { deploymentId: "", releaseId: "", type: "DeploymentReleased", }; ``` -### `models.DataDeploymentFailed` +### `models.EventDataDeploymentFailed` ```typescript -const value: models.DataDeploymentFailed = { +const value: models.EventDataDeploymentFailed = { deploymentId: "", error: { code: "", internal: true, message: "", }, - phase: "preflights", + phase: "deleting", type: "DeploymentFailed", }; ``` -### `models.DataDeploymentDegraded` +### `models.EventDataDeploymentDegraded` ```typescript -const value: models.DataDeploymentDegraded = { +const value: models.EventDataDeploymentDegraded = { deploymentId: "", error: { code: "", - internal: false, + internal: true, message: "", }, type: "DeploymentDegraded", }; ``` -### `models.DataDeploymentRecovered` +### `models.EventDataDeploymentRecovered` ```typescript -const value: models.DataDeploymentRecovered = { +const value: models.EventDataDeploymentRecovered = { deploymentId: "", releaseId: "", type: "DeploymentRecovered", }; ``` -### `models.DataDeploymentDeleted` +### `models.EventDataDeploymentDeleted` ```typescript -const value: models.DataDeploymentDeleted = { +const value: models.EventDataDeploymentDeleted = { deploymentId: "", type: "DeploymentDeleted", }; ``` -### `models.DataDeploymentRetryRequested` +### `models.EventDataReleaseChannelUpdated` + +```typescript +const value: models.EventDataReleaseChannelUpdated = { + channel: "", + releaseId: "", + type: "ReleaseChannelUpdated", +}; +``` + +### `models.EventDataDeploymentReleaseChannelChanged` ```typescript -const value: models.DataDeploymentRetryRequested = { +const value: models.EventDataDeploymentReleaseChannelChanged = { + channel: "", + deploymentId: "", + previousChannel: "", + type: "DeploymentReleaseChannelChanged", +}; +``` + +### `models.EventDataDeploymentRetryRequested` + +```typescript +const value: models.EventDataDeploymentRetryRequested = { deploymentId: "", type: "DeploymentRetryRequested", }; ``` -### `models.DataDeploymentRedeployRequested` +### `models.EventDataDeploymentRedeployRequested` ```typescript -const value: models.DataDeploymentRedeployRequested = { +const value: models.EventDataDeploymentRedeployRequested = { deploymentId: "", releaseId: "", type: "DeploymentRedeployRequested", }; ``` -### `models.DataDeploymentReleasePinned` +### `models.EventDataDeploymentReleasePinned` ```typescript -const value: models.DataDeploymentReleasePinned = { +const value: models.EventDataDeploymentReleasePinned = { deploymentId: "", pinnedReleaseId: "", type: "DeploymentReleasePinned", }; ``` -### `models.DataDeploymentReleaseUnpinned` +### `models.EventDataDeploymentReleaseUnpinned` ```typescript -const value: models.DataDeploymentReleaseUnpinned = { +const value: models.EventDataDeploymentReleaseUnpinned = { deploymentId: "", previousPinnedReleaseId: "", type: "DeploymentReleaseUnpinned", }; ``` -### `models.DataDeploymentEnvironmentUpdated` +### `models.EventDataDeploymentEnvironmentUpdated` ```typescript -const value: models.DataDeploymentEnvironmentUpdated = { - changedKeys: [], +const value: models.EventDataDeploymentEnvironmentUpdated = { + changedKeys: [ + "", + "", + "", + ], deploymentId: "", type: "DeploymentEnvironmentUpdated", }; ``` -### `models.DataDeploymentDeletionRequested` +### `models.EventDataDeploymentDeletionRequested` ```typescript -const value: models.DataDeploymentDeletionRequested = { +const value: models.EventDataDeploymentDeletionRequested = { deploymentId: "", type: "DeploymentDeletionRequested", }; diff --git a/client-sdks/platform/typescript/docs/models/eventdataupdatingagent.md b/client-sdks/platform/typescript/docs/models/eventdataupdatingagent.md new file mode 100644 index 000000000..bf216a78a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventdataupdatingagent.md @@ -0,0 +1,21 @@ +# EventDataUpdatingAgent + +## Example Usage + +```typescript +import { EventDataUpdatingAgent } from "@alienplatform/platform-api/models"; + +let value: EventDataUpdatingAgent = { + agentId: "", + releaseId: "", + type: "UpdatingAgent", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | +| `agentId` | *string* | :heavy_check_mark: | ID of the agent being updated | +| `releaseId` | *string* | :heavy_check_mark: | ID of the new release being deployed to the agent | +| `type` | *"UpdatingAgent"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventerrorfailed.md b/client-sdks/platform/typescript/docs/models/eventerrorfailed.md new file mode 100644 index 000000000..f76ad1c2e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventerrorfailed.md @@ -0,0 +1,34 @@ +# EventErrorFailed + +Canonical error container that provides a structured way to represent errors +with rich metadata including error codes, human-readable messages, context, +and chaining capabilities for error propagation. + +This struct is designed to be both machine-readable and user-friendly, +supporting serialization for API responses and detailed error reporting +in distributed systems. + +## Example Usage + +```typescript +import { EventErrorFailed } from "@alienplatform/platform-api/models"; + +let value: EventErrorFailed = { + code: "", + internal: false, + message: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `code` | *string* | :heavy_check_mark: | A unique identifier for the type of error.

This should be a short, machine-readable string that can be used
by clients to programmatically handle different error types.
Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" | +| `context` | *any* | :heavy_minus_sign: | Additional diagnostic information about the error context.

This optional field can contain structured data providing more details
about the error, such as validation errors, request parameters that
caused the issue, or other relevant context information. | +| `hint` | *string* | :heavy_minus_sign: | Optional human-facing remediation hint. | +| `httpStatusCode` | *number* | :heavy_minus_sign: | HTTP status code for this error.

Used when converting the error to an HTTP response. If None, falls back to
the error type's default status code or 500. | +| `internal` | *boolean* | :heavy_check_mark: | Indicates if this is an internal error that should not be exposed to users.

When `true`, this error contains sensitive information or implementation
details that should not be shown to end-users. Such errors should be
logged for debugging but replaced with generic error messages in responses. | +| `message` | *string* | :heavy_check_mark: | Human-readable error message.

This message should be clear and actionable for developers or end-users,
providing context about what went wrong and potentially how to fix it. | +| `retryable` | *boolean* | :heavy_minus_sign: | Indicates whether the operation that caused the error should be retried.

When `true`, the error is transient and the operation might succeed
if attempted again. When `false`, retrying the same operation is
unlikely to succeed without changes. | +| `source` | *any* | :heavy_minus_sign: | The underlying error that caused this error, creating an error chain.

This allows for proper error propagation and debugging by maintaining
the full context of how an error occurred through multiple layers
of an application. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventerrornextstate.md b/client-sdks/platform/typescript/docs/models/eventerrornextstate.md new file mode 100644 index 000000000..97c6adc09 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventerrornextstate.md @@ -0,0 +1,34 @@ +# EventErrorNextState + +Canonical error container that provides a structured way to represent errors +with rich metadata including error codes, human-readable messages, context, +and chaining capabilities for error propagation. + +This struct is designed to be both machine-readable and user-friendly, +supporting serialization for API responses and detailed error reporting +in distributed systems. + +## Example Usage + +```typescript +import { EventErrorNextState } from "@alienplatform/platform-api/models"; + +let value: EventErrorNextState = { + code: "", + internal: true, + message: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `code` | *string* | :heavy_check_mark: | A unique identifier for the type of error.

This should be a short, machine-readable string that can be used
by clients to programmatically handle different error types.
Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" | +| `context` | *any* | :heavy_minus_sign: | Additional diagnostic information about the error context.

This optional field can contain structured data providing more details
about the error, such as validation errors, request parameters that
caused the issue, or other relevant context information. | +| `hint` | *string* | :heavy_minus_sign: | Optional human-facing remediation hint. | +| `httpStatusCode` | *number* | :heavy_minus_sign: | HTTP status code for this error.

Used when converting the error to an HTTP response. If None, falls back to
the error type's default status code or 500. | +| `internal` | *boolean* | :heavy_check_mark: | Indicates if this is an internal error that should not be exposed to users.

When `true`, this error contains sensitive information or implementation
details that should not be shown to end-users. Such errors should be
logged for debugging but replaced with generic error messages in responses. | +| `message` | *string* | :heavy_check_mark: | Human-readable error message.

This message should be clear and actionable for developers or end-users,
providing context about what went wrong and potentially how to fix it. | +| `retryable` | *boolean* | :heavy_minus_sign: | Indicates whether the operation that caused the error should be retried.

When `true`, the error is transient and the operation might succeed
if attempted again. When `false`, retrying the same operation is
unlikely to succeed without changes. | +| `source` | *any* | :heavy_minus_sign: | The underlying error that caused this error, creating an error chain.

This allows for proper error propagation and debugging by maintaining
the full context of how an error occurred through multiple layers
of an application. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventfailed.md b/client-sdks/platform/typescript/docs/models/eventfailed.md new file mode 100644 index 000000000..12c70fa04 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventfailed.md @@ -0,0 +1,17 @@ +# EventFailed + +Event failed with an error + +## Example Usage + +```typescript +import { EventFailed } from "@alienplatform/platform-api/models"; + +let value: EventFailed = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ | +| `error` | *models.EventFailedErrorUnion* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventfailederrorunion.md b/client-sdks/platform/typescript/docs/models/eventfailederrorunion.md new file mode 100644 index 000000000..11fadf5ab --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventfailederrorunion.md @@ -0,0 +1,21 @@ +# EventFailedErrorUnion + + +## Supported Types + +### `models.EventErrorFailed` + +```typescript +const value: models.EventErrorFailed = { + code: "", + internal: false, + message: "", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/eventkind3.md b/client-sdks/platform/typescript/docs/models/eventkind3.md new file mode 100644 index 000000000..a065ad8b4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventkind3.md @@ -0,0 +1,17 @@ +# EventKind3 + +Type of authenticated principal that requested an event. + +## Example Usage + +```typescript +import { EventKind3 } from "@alienplatform/platform-api/models"; + +let value: EventKind3 = "user"; +``` + +## Values + +```typescript +"user" | "serviceAccount" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventkind4.md b/client-sdks/platform/typescript/docs/models/eventkind4.md new file mode 100644 index 000000000..5144a1d46 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventkind4.md @@ -0,0 +1,17 @@ +# EventKind4 + +Type of authenticated principal that requested an event. + +## Example Usage + +```typescript +import { EventKind4 } from "@alienplatform/platform-api/models"; + +let value: EventKind4 = "serviceAccount"; +``` + +## Values + +```typescript +"user" | "serviceAccount" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponse.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponse.md new file mode 100644 index 000000000..214244845 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponse.md @@ -0,0 +1,36 @@ +# EventListItemResponse + +## Example Usage + +```typescript +import { EventListItemResponse } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponse = { + id: "event_MtSA24M3pWuAkQYxgZxuRI", + deploymentId: "dep_0c29fq4a2yjb7kx3smwdgxlc", + releaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", + debugSessionId: "dbg_HOXmkmT9UPYlsnxqSNlEGoXL", + data: { + type: "GeneratingCloudFormationTemplate", + }, + state: "success", + projectId: "prj_mcytp6z3j91f7tn5ryqsfwtr", + createdAt: new Date("2024-08-03T01:48:11.595Z"), + workspaceId: "ws_It13CUaGEhLLAB87simX0", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the event. | event_MtSA24M3pWuAkQYxgZxuRI | +| `deploymentId` | *string* | :heavy_minus_sign: | Unique identifier for the deployment. | dep_0c29fq4a2yjb7kx3smwdgxlc | +| `releaseId` | *string* | :heavy_minus_sign: | Unique identifier for the release. | rel_WbhQgksrawSKIpEN0NAssHX9 | +| `debugSessionId` | *string* | :heavy_minus_sign: | Unique identifier for the debug session. | dbg_HOXmkmT9UPYlsnxqSNlEGoXL | +| `data` | *models.EventListItemResponseDataUnion* | :heavy_check_mark: | N/A | | +| `state` | *models.EventListItemResponseStateUnion* | :heavy_check_mark: | Represents the state of an event | | +| `projectId` | *string* | :heavy_check_mark: | Unique identifier for the project. | prj_mcytp6z3j91f7tn5ryqsfwtr | +| `createdAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `workspaceId` | *string* | :heavy_check_mark: | Unique identifier for the workspace. | ws_It13CUaGEhLLAB87simX0 | +| `releaseCreatedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_minus_sign: | createdAt of the event's referenced release, included when ?include=releaseCreatedAt is used | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponseactor1.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponseactor1.md new file mode 100644 index 000000000..a7cc50c8f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponseactor1.md @@ -0,0 +1,22 @@ +# EventListItemResponseActor1 + +Authenticated principal that requested a deployment intent event. + +## Example Usage + +```typescript +import { EventListItemResponseActor1 } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseActor1 = { + id: "", + kind: "serviceAccount", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| `email` | *string* | :heavy_minus_sign: | User email when the principal is a user. | +| `id` | *string* | :heavy_check_mark: | Stable user or service-account identifier. | +| `kind` | [models.EventListItemResponseKind1](../models/eventlistitemresponsekind1.md) | :heavy_check_mark: | Type of authenticated principal that requested an event. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponseactor2.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponseactor2.md new file mode 100644 index 000000000..463a82867 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponseactor2.md @@ -0,0 +1,22 @@ +# EventListItemResponseActor2 + +Authenticated principal that requested a deployment intent event. + +## Example Usage + +```typescript +import { EventListItemResponseActor2 } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseActor2 = { + id: "", + kind: "user", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| `email` | *string* | :heavy_minus_sign: | User email when the principal is a user. | +| `id` | *string* | :heavy_check_mark: | Stable user or service-account identifier. | +| `kind` | [models.EventListItemResponseKind2](../models/eventlistitemresponsekind2.md) | :heavy_check_mark: | Type of authenticated principal that requested an event. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponseactor3.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponseactor3.md new file mode 100644 index 000000000..a40247bf5 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponseactor3.md @@ -0,0 +1,22 @@ +# EventListItemResponseActor3 + +Authenticated principal that requested a deployment intent event. + +## Example Usage + +```typescript +import { EventListItemResponseActor3 } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseActor3 = { + id: "", + kind: "serviceAccount", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| `email` | *string* | :heavy_minus_sign: | User email when the principal is a user. | +| `id` | *string* | :heavy_check_mark: | Stable user or service-account identifier. | +| `kind` | [models.EventListItemResponseKind3](../models/eventlistitemresponsekind3.md) | :heavy_check_mark: | Type of authenticated principal that requested an event. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponseactor4.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponseactor4.md new file mode 100644 index 000000000..361b5d5b9 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponseactor4.md @@ -0,0 +1,22 @@ +# EventListItemResponseActor4 + +Authenticated principal that requested a deployment intent event. + +## Example Usage + +```typescript +import { EventListItemResponseActor4 } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseActor4 = { + id: "", + kind: "user", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| `email` | *string* | :heavy_minus_sign: | User email when the principal is a user. | +| `id` | *string* | :heavy_check_mark: | Stable user or service-account identifier. | +| `kind` | [models.EventListItemResponseKind4](../models/eventlistitemresponsekind4.md) | :heavy_check_mark: | Type of authenticated principal that requested an event. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponseactorunion1.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponseactorunion1.md new file mode 100644 index 000000000..987f866dd --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponseactorunion1.md @@ -0,0 +1,20 @@ +# EventListItemResponseActorUnion1 + + +## Supported Types + +### `models.EventListItemResponseActor1` + +```typescript +const value: models.EventListItemResponseActor1 = { + id: "", + kind: "serviceAccount", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponseactorunion2.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponseactorunion2.md new file mode 100644 index 000000000..bed748551 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponseactorunion2.md @@ -0,0 +1,20 @@ +# EventListItemResponseActorUnion2 + + +## Supported Types + +### `models.EventListItemResponseActor2` + +```typescript +const value: models.EventListItemResponseActor2 = { + id: "", + kind: "user", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponseactorunion3.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponseactorunion3.md new file mode 100644 index 000000000..4d33d8e59 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponseactorunion3.md @@ -0,0 +1,20 @@ +# EventListItemResponseActorUnion3 + + +## Supported Types + +### `models.EventListItemResponseActor3` + +```typescript +const value: models.EventListItemResponseActor3 = { + id: "", + kind: "serviceAccount", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponseactorunion4.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponseactorunion4.md new file mode 100644 index 000000000..6c39b3fcf --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponseactorunion4.md @@ -0,0 +1,20 @@ +# EventListItemResponseActorUnion4 + + +## Supported Types + +### `models.EventListItemResponseActor4` + +```typescript +const value: models.EventListItemResponseActor4 = { + id: "", + kind: "user", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponseconfig.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponseconfig.md new file mode 100644 index 000000000..9aa450b5e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponseconfig.md @@ -0,0 +1,22 @@ +# EventListItemResponseConfig + +Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + +## Example Usage + +```typescript +import { EventListItemResponseConfig } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseConfig = { + id: "", + type: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. | +| `type` | *string* | :heavy_check_mark: | Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. | +| `additionalProperties` | Record | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsecontrollerplatformenum.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsecontrollerplatformenum.md new file mode 100644 index 000000000..ce99cfac0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsecontrollerplatformenum.md @@ -0,0 +1,17 @@ +# EventListItemResponseControllerPlatformEnum + +Represents the target cloud platform. + +## Example Usage + +```typescript +import { EventListItemResponseControllerPlatformEnum } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseControllerPlatformEnum = "machines"; +``` + +## Values + +```typescript +"aws" | "gcp" | "azure" | "kubernetes" | "machines" | "local" | "test" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsecontrollerplatformunion.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsecontrollerplatformunion.md new file mode 100644 index 000000000..b6bc629f1 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsecontrollerplatformunion.md @@ -0,0 +1,17 @@ +# EventListItemResponseControllerPlatformUnion + + +## Supported Types + +### `models.EventListItemResponseControllerPlatformEnum` + +```typescript +const value: models.EventListItemResponseControllerPlatformEnum = "aws"; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsedataassumingrole.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedataassumingrole.md new file mode 100644 index 000000000..40affb572 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedataassumingrole.md @@ -0,0 +1,19 @@ +# EventListItemResponseDataAssumingRole + +## Example Usage + +```typescript +import { EventListItemResponseDataAssumingRole } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseDataAssumingRole = { + roleArn: "", + type: "AssumingRole", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------- | ------------------------- | ------------------------- | ------------------------- | +| `roleArn` | *string* | :heavy_check_mark: | ARN of the role to assume | +| `type` | *"AssumingRole"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatabuildingimage.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatabuildingimage.md new file mode 100644 index 000000000..c8c750894 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatabuildingimage.md @@ -0,0 +1,19 @@ +# EventListItemResponseDataBuildingImage + +## Example Usage + +```typescript +import { EventListItemResponseDataBuildingImage } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseDataBuildingImage = { + image: "https://loremflickr.com/3474/373?lock=4089420585640817", + type: "BuildingImage", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------- | ----------------------------- | ----------------------------- | ----------------------------- | +| `image` | *string* | :heavy_check_mark: | Name of the image being built | +| `type` | *"BuildingImage"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatabuildingresource.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatabuildingresource.md new file mode 100644 index 000000000..30d81f6b0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatabuildingresource.md @@ -0,0 +1,22 @@ +# EventListItemResponseDataBuildingResource + +## Example Usage + +```typescript +import { EventListItemResponseDataBuildingResource } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseDataBuildingResource = { + resourceName: "", + resourceType: "", + type: "BuildingResource", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `relatedResources` | *string*[] | :heavy_minus_sign: | All resource names sharing this build (for deduped container groups) | +| `resourceName` | *string* | :heavy_check_mark: | Name of the resource being built | +| `resourceType` | *string* | :heavy_check_mark: | Type of the resource: "worker", "container" | +| `type` | *"BuildingResource"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatabuildingstack.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatabuildingstack.md new file mode 100644 index 000000000..804429e3a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatabuildingstack.md @@ -0,0 +1,19 @@ +# EventListItemResponseDataBuildingStack + +## Example Usage + +```typescript +import { EventListItemResponseDataBuildingStack } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseDataBuildingStack = { + stack: "", + type: "BuildingStack", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------- | ----------------------------- | ----------------------------- | ----------------------------- | +| `stack` | *string* | :heavy_check_mark: | Name of the stack being built | +| `type` | *"BuildingStack"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatacleaningupenvironment.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatacleaningupenvironment.md new file mode 100644 index 000000000..ab6d16b2b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatacleaningupenvironment.md @@ -0,0 +1,21 @@ +# EventListItemResponseDataCleaningUpEnvironment + +## Example Usage + +```typescript +import { EventListItemResponseDataCleaningUpEnvironment } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseDataCleaningUpEnvironment = { + stackName: "", + strategyName: "", + type: "CleaningUpEnvironment", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | +| `stackName` | *string* | :heavy_check_mark: | Name of the stack being cleaned up | +| `strategyName` | *string* | :heavy_check_mark: | Name of the deployment strategy being used for cleanup | +| `type` | *"CleaningUpEnvironment"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatacleaningupstack.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatacleaningupstack.md new file mode 100644 index 000000000..1ed8457ab --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatacleaningupstack.md @@ -0,0 +1,21 @@ +# EventListItemResponseDataCleaningUpStack + +## Example Usage + +```typescript +import { EventListItemResponseDataCleaningUpStack } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseDataCleaningUpStack = { + stackName: "", + strategyName: "", + type: "CleaningUpStack", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | +| `stackName` | *string* | :heavy_check_mark: | Name of the stack being cleaned up | +| `strategyName` | *string* | :heavy_check_mark: | Name of the deployment strategy being used for cleanup | +| `type` | *"CleaningUpStack"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatacompilingcode.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatacompilingcode.md new file mode 100644 index 000000000..c859b5d3b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatacompilingcode.md @@ -0,0 +1,20 @@ +# EventListItemResponseDataCompilingCode + +## Example Usage + +```typescript +import { EventListItemResponseDataCompilingCode } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseDataCompilingCode = { + language: "", + type: "CompilingCode", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `language` | *string* | :heavy_check_mark: | Language being compiled (rust, typescript, etc.) | +| `progress` | *string* | :heavy_minus_sign: | Current progress/status line from the build output | +| `type` | *"CompilingCode"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatacreatingrelease.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatacreatingrelease.md new file mode 100644 index 000000000..94c55327b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatacreatingrelease.md @@ -0,0 +1,19 @@ +# EventListItemResponseDataCreatingRelease + +## Example Usage + +```typescript +import { EventListItemResponseDataCreatingRelease } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseDataCreatingRelease = { + project: "", + type: "CreatingRelease", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------- | ------------------- | ------------------- | ------------------- | +| `project` | *string* | :heavy_check_mark: | Project name | +| `type` | *"CreatingRelease"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadebuggingagent.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadebuggingagent.md new file mode 100644 index 000000000..c6979eb72 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadebuggingagent.md @@ -0,0 +1,21 @@ +# EventListItemResponseDataDebuggingAgent + +## Example Usage + +```typescript +import { EventListItemResponseDataDebuggingAgent } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseDataDebuggingAgent = { + agentId: "", + debugSessionId: "", + type: "DebuggingAgent", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ | +| `agentId` | *string* | :heavy_check_mark: | ID of the agent being debugged | +| `debugSessionId` | *string* | :heavy_check_mark: | ID of the debug session | +| `type` | *"DebuggingAgent"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeletingagent.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeletingagent.md new file mode 100644 index 000000000..80a0cd099 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeletingagent.md @@ -0,0 +1,21 @@ +# EventListItemResponseDataDeletingAgent + +## Example Usage + +```typescript +import { EventListItemResponseDataDeletingAgent } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseDataDeletingAgent = { + agentId: "", + releaseId: "", + type: "DeletingAgent", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------- | ----------------------------------------------- | ----------------------------------------------- | ----------------------------------------------- | +| `agentId` | *string* | :heavy_check_mark: | ID of the agent being deleted | +| `releaseId` | *string* | :heavy_check_mark: | ID of the release that was running on the agent | +| `type` | *"DeletingAgent"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeletingcloudformationstack.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeletingcloudformationstack.md new file mode 100644 index 000000000..8c567e4cf --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeletingcloudformationstack.md @@ -0,0 +1,21 @@ +# EventListItemResponseDataDeletingCloudFormationStack + +## Example Usage + +```typescript +import { EventListItemResponseDataDeletingCloudFormationStack } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseDataDeletingCloudFormationStack = { + cfnStackName: "", + currentStatus: "", + type: "DeletingCloudFormationStack", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | +| `cfnStackName` | *string* | :heavy_check_mark: | Name of the CloudFormation stack | +| `currentStatus` | *string* | :heavy_check_mark: | Current stack status | +| `type` | *"DeletingCloudFormationStack"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeployingcloudformationstack.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeployingcloudformationstack.md new file mode 100644 index 000000000..7f08c8f66 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeployingcloudformationstack.md @@ -0,0 +1,21 @@ +# EventListItemResponseDataDeployingCloudFormationStack + +## Example Usage + +```typescript +import { EventListItemResponseDataDeployingCloudFormationStack } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseDataDeployingCloudFormationStack = { + cfnStackName: "", + currentStatus: "", + type: "DeployingCloudFormationStack", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | +| `cfnStackName` | *string* | :heavy_check_mark: | Name of the CloudFormation stack | +| `currentStatus` | *string* | :heavy_check_mark: | Current stack status | +| `type` | *"DeployingCloudFormationStack"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeployingstack.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeployingstack.md new file mode 100644 index 000000000..a2f5efa34 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeployingstack.md @@ -0,0 +1,19 @@ +# EventListItemResponseDataDeployingStack + +## Example Usage + +```typescript +import { EventListItemResponseDataDeployingStack } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseDataDeployingStack = { + stackName: "", + type: "DeployingStack", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | +| `stackName` | *string* | :heavy_check_mark: | Name of the stack being deployed | +| `type` | *"DeployingStack"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeploymentcreated.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeploymentcreated.md new file mode 100644 index 000000000..f09a60e6e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeploymentcreated.md @@ -0,0 +1,22 @@ +# EventListItemResponseDataDeploymentCreated + +## Example Usage + +```typescript +import { EventListItemResponseDataDeploymentCreated } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseDataDeploymentCreated = { + deploymentGroupId: "", + deploymentId: "", + type: "DeploymentCreated", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | +| `deploymentGroupId` | *string* | :heavy_check_mark: | ID of the deployment group this slot belongs to | +| `deploymentId` | *string* | :heavy_check_mark: | ID of the deployment that was created | +| `releaseId` | *string* | :heavy_minus_sign: | Initial release the slot was created with, if any | +| `type` | *"DeploymentCreated"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeploymentdegraded.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeploymentdegraded.md new file mode 100644 index 000000000..0246308ea --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeploymentdegraded.md @@ -0,0 +1,25 @@ +# EventListItemResponseDataDeploymentDegraded + +## Example Usage + +```typescript +import { EventListItemResponseDataDeploymentDegraded } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseDataDeploymentDegraded = { + deploymentId: "", + error: { + code: "", + internal: false, + message: "", + }, + type: "DeploymentDegraded", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `deploymentId` | *string* | :heavy_check_mark: | ID of the deployment | +| `error` | [models.EventListItemResponseDataError2](../models/eventlistitemresponsedataerror2.md) | :heavy_check_mark: | Canonical error container that provides a structured way to represent errors
with rich metadata including error codes, human-readable messages, context,
and chaining capabilities for error propagation.

This struct is designed to be both machine-readable and user-friendly,
supporting serialization for API responses and detailed error reporting
in distributed systems. | +| `type` | *"DeploymentDegraded"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeploymentdeleted.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeploymentdeleted.md new file mode 100644 index 000000000..1b7c74a69 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeploymentdeleted.md @@ -0,0 +1,19 @@ +# EventListItemResponseDataDeploymentDeleted + +## Example Usage + +```typescript +import { EventListItemResponseDataDeploymentDeleted } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseDataDeploymentDeleted = { + deploymentId: "", + type: "DeploymentDeleted", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------- | ------------------------------------- | ------------------------------------- | ------------------------------------- | +| `deploymentId` | *string* | :heavy_check_mark: | ID of the deployment that was deleted | +| `type` | *"DeploymentDeleted"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeploymentdeletionrequested.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeploymentdeletionrequested.md new file mode 100644 index 000000000..a2ff0a5ca --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeploymentdeletionrequested.md @@ -0,0 +1,19 @@ +# EventListItemResponseDataDeploymentDeletionRequested + +## Example Usage + +```typescript +import { EventListItemResponseDataDeploymentDeletionRequested } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseDataDeploymentDeletionRequested = { + deploymentId: "", + type: "DeploymentDeletionRequested", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `deploymentId` | *string* | :heavy_check_mark: | ID of the deployment | +| `type` | *"DeploymentDeletionRequested"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeploymentenvironmentupdated.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeploymentenvironmentupdated.md new file mode 100644 index 000000000..0a251c848 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeploymentenvironmentupdated.md @@ -0,0 +1,24 @@ +# EventListItemResponseDataDeploymentEnvironmentUpdated + +## Example Usage + +```typescript +import { EventListItemResponseDataDeploymentEnvironmentUpdated } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseDataDeploymentEnvironmentUpdated = { + changedKeys: [ + "", + ], + deploymentId: "", + type: "DeploymentEnvironmentUpdated", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | +| `actor` | *models.EventListItemResponseActorUnion4* | :heavy_minus_sign: | N/A | +| `changedKeys` | *string*[] | :heavy_check_mark: | Names of the environment variables that changed (added, removed, or modified) | +| `deploymentId` | *string* | :heavy_check_mark: | ID of the deployment | +| `type` | *"DeploymentEnvironmentUpdated"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeploymentfailed.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeploymentfailed.md new file mode 100644 index 000000000..5b6b1ce88 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeploymentfailed.md @@ -0,0 +1,28 @@ +# EventListItemResponseDataDeploymentFailed + +## Example Usage + +```typescript +import { EventListItemResponseDataDeploymentFailed } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseDataDeploymentFailed = { + deploymentId: "", + error: { + code: "", + internal: false, + message: "", + }, + phase: "provisioning", + type: "DeploymentFailed", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `attemptedReleaseId` | *string* | :heavy_minus_sign: | ID of the release the platform was trying to deploy, if known | +| `deploymentId` | *string* | :heavy_check_mark: | ID of the deployment | +| `error` | [models.EventListItemResponseDataError1](../models/eventlistitemresponsedataerror1.md) | :heavy_check_mark: | Canonical error container that provides a structured way to represent errors
with rich metadata including error codes, human-readable messages, context,
and chaining capabilities for error propagation.

This struct is designed to be both machine-readable and user-friendly,
supporting serialization for API responses and detailed error reporting
in distributed systems. | +| `phase` | [models.EventListItemResponsePhase](../models/eventlistitemresponsephase.md) | :heavy_check_mark: | Phase of a deployment at which a failure occurred.

Derived from the source deployment status: `preflights-failed` →
`Preflights`, `provisioning-failed` → `Provisioning`, `update-failed` →
`Updating`, `delete-failed` → `Deleting`.
`refresh-failed` is modelled separately via `DeploymentDegraded`. | +| `type` | *"DeploymentFailed"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeploymentrecovered.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeploymentrecovered.md new file mode 100644 index 000000000..c3e2a3788 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeploymentrecovered.md @@ -0,0 +1,21 @@ +# EventListItemResponseDataDeploymentRecovered + +## Example Usage + +```typescript +import { EventListItemResponseDataDeploymentRecovered } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseDataDeploymentRecovered = { + deploymentId: "", + releaseId: "", + type: "DeploymentRecovered", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | +| `deploymentId` | *string* | :heavy_check_mark: | ID of the deployment | +| `releaseId` | *string* | :heavy_check_mark: | ID of the release that is now live | +| `type` | *"DeploymentRecovered"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeploymentredeployrequested.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeploymentredeployrequested.md new file mode 100644 index 000000000..b8dc0062f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeploymentredeployrequested.md @@ -0,0 +1,21 @@ +# EventListItemResponseDataDeploymentRedeployRequested + +## Example Usage + +```typescript +import { EventListItemResponseDataDeploymentRedeployRequested } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseDataDeploymentRedeployRequested = { + deploymentId: "", + releaseId: "", + type: "DeploymentRedeployRequested", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | +| `deploymentId` | *string* | :heavy_check_mark: | ID of the deployment | +| `releaseId` | *string* | :heavy_check_mark: | ID of the release being redeployed | +| `type` | *"DeploymentRedeployRequested"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeploymentreleasechannelchanged.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeploymentreleasechannelchanged.md new file mode 100644 index 000000000..94e5bcb44 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeploymentreleasechannelchanged.md @@ -0,0 +1,24 @@ +# EventListItemResponseDataDeploymentReleaseChannelChanged + +## Example Usage + +```typescript +import { EventListItemResponseDataDeploymentReleaseChannelChanged } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseDataDeploymentReleaseChannelChanged = { + channel: "", + deploymentId: "", + previousChannel: "", + type: "DeploymentReleaseChannelChanged", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------- | ----------------------------------------- | ----------------------------------------- | ----------------------------------------- | +| `actor` | *models.EventListItemResponseActorUnion2* | :heavy_minus_sign: | N/A | +| `channel` | *string* | :heavy_check_mark: | Newly followed channel | +| `deploymentId` | *string* | :heavy_check_mark: | ID of the deployment | +| `previousChannel` | *string* | :heavy_check_mark: | Previously followed channel | +| `type` | *"DeploymentReleaseChannelChanged"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeploymentreleased.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeploymentreleased.md new file mode 100644 index 000000000..8901ab392 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeploymentreleased.md @@ -0,0 +1,22 @@ +# EventListItemResponseDataDeploymentReleased + +## Example Usage + +```typescript +import { EventListItemResponseDataDeploymentReleased } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseDataDeploymentReleased = { + deploymentId: "", + releaseId: "", + type: "DeploymentReleased", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `deploymentId` | *string* | :heavy_check_mark: | ID of the deployment | +| `previousReleaseId` | *string* | :heavy_minus_sign: | ID of the release that was previously live, if any | +| `releaseId` | *string* | :heavy_check_mark: | ID of the release that is now live | +| `type` | *"DeploymentReleased"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeploymentreleasepinned.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeploymentreleasepinned.md new file mode 100644 index 000000000..5e3b839eb --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeploymentreleasepinned.md @@ -0,0 +1,22 @@ +# EventListItemResponseDataDeploymentReleasePinned + +## Example Usage + +```typescript +import { EventListItemResponseDataDeploymentReleasePinned } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseDataDeploymentReleasePinned = { + deploymentId: "", + pinnedReleaseId: "", + type: "DeploymentReleasePinned", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | +| `deploymentId` | *string* | :heavy_check_mark: | ID of the deployment | +| `pinnedReleaseId` | *string* | :heavy_check_mark: | ID of the release that is now pinned | +| `previousPinnedReleaseId` | *string* | :heavy_minus_sign: | ID of the previously pinned release, if any | +| `type` | *"DeploymentReleasePinned"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeploymentreleaseunpinned.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeploymentreleaseunpinned.md new file mode 100644 index 000000000..a0733c6f2 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeploymentreleaseunpinned.md @@ -0,0 +1,21 @@ +# EventListItemResponseDataDeploymentReleaseUnpinned + +## Example Usage + +```typescript +import { EventListItemResponseDataDeploymentReleaseUnpinned } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseDataDeploymentReleaseUnpinned = { + deploymentId: "", + previousPinnedReleaseId: "", + type: "DeploymentReleaseUnpinned", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | +| `deploymentId` | *string* | :heavy_check_mark: | ID of the deployment | +| `previousPinnedReleaseId` | *string* | :heavy_check_mark: | ID of the release that was previously pinned | +| `type` | *"DeploymentReleaseUnpinned"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeploymentretryrequested.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeploymentretryrequested.md new file mode 100644 index 000000000..ae0850e2f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadeploymentretryrequested.md @@ -0,0 +1,22 @@ +# EventListItemResponseDataDeploymentRetryRequested + +## Example Usage + +```typescript +import { EventListItemResponseDataDeploymentRetryRequested } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseDataDeploymentRetryRequested = { + deploymentId: "", + type: "DeploymentRetryRequested", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | +| `actor` | *models.EventListItemResponseActorUnion3* | :heavy_minus_sign: | N/A | +| `attemptedReleaseId` | *string* | :heavy_minus_sign: | ID of the release that the failed attempt was targeting, if known | +| `deploymentId` | *string* | :heavy_check_mark: | ID of the deployment | +| `previousError` | *models.EventListItemResponsePreviousErrorUnion* | :heavy_minus_sign: | N/A | +| `type` | *"DeploymentRetryRequested"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadownloadingalienruntime.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadownloadingalienruntime.md new file mode 100644 index 000000000..eeefaf395 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatadownloadingalienruntime.md @@ -0,0 +1,21 @@ +# EventListItemResponseDataDownloadingAlienRuntime + +## Example Usage + +```typescript +import { EventListItemResponseDataDownloadingAlienRuntime } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseDataDownloadingAlienRuntime = { + targetTriple: "", + type: "DownloadingAlienRuntime", + url: "https://hefty-eggplant.net", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------- | ----------------------------- | ----------------------------- | ----------------------------- | +| `targetTriple` | *string* | :heavy_check_mark: | Target triple for the runtime | +| `type` | *"DownloadingAlienRuntime"* | :heavy_check_mark: | N/A | +| `url` | *string* | :heavy_check_mark: | URL being downloaded from | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsedataemptyingbuckets.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedataemptyingbuckets.md new file mode 100644 index 000000000..2b2abc855 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedataemptyingbuckets.md @@ -0,0 +1,19 @@ +# EventListItemResponseDataEmptyingBuckets + +## Example Usage + +```typescript +import { EventListItemResponseDataEmptyingBuckets } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseDataEmptyingBuckets = { + bucketNames: [], + type: "EmptyingBuckets", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------- | ------------------------------------- | ------------------------------------- | ------------------------------------- | +| `bucketNames` | *string*[] | :heavy_check_mark: | Names of the S3 buckets being emptied | +| `type` | *"EmptyingBuckets"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsedataensuringdockerrepository.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedataensuringdockerrepository.md new file mode 100644 index 000000000..18793368c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedataensuringdockerrepository.md @@ -0,0 +1,19 @@ +# EventListItemResponseDataEnsuringDockerRepository + +## Example Usage + +```typescript +import { EventListItemResponseDataEnsuringDockerRepository } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseDataEnsuringDockerRepository = { + repositoryName: "", + type: "EnsuringDockerRepository", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------- | ----------------------------- | ----------------------------- | ----------------------------- | +| `repositoryName` | *string* | :heavy_check_mark: | Name of the docker repository | +| `type` | *"EnsuringDockerRepository"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsedataerror1.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedataerror1.md new file mode 100644 index 000000000..44efefcb8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedataerror1.md @@ -0,0 +1,34 @@ +# EventListItemResponseDataError1 + +Canonical error container that provides a structured way to represent errors +with rich metadata including error codes, human-readable messages, context, +and chaining capabilities for error propagation. + +This struct is designed to be both machine-readable and user-friendly, +supporting serialization for API responses and detailed error reporting +in distributed systems. + +## Example Usage + +```typescript +import { EventListItemResponseDataError1 } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseDataError1 = { + code: "", + internal: false, + message: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `code` | *string* | :heavy_check_mark: | A unique identifier for the type of error.

This should be a short, machine-readable string that can be used
by clients to programmatically handle different error types.
Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" | +| `context` | *any* | :heavy_minus_sign: | Additional diagnostic information about the error context.

This optional field can contain structured data providing more details
about the error, such as validation errors, request parameters that
caused the issue, or other relevant context information. | +| `hint` | *string* | :heavy_minus_sign: | Optional human-facing remediation hint. | +| `httpStatusCode` | *number* | :heavy_minus_sign: | HTTP status code for this error.

Used when converting the error to an HTTP response. If None, falls back to
the error type's default status code or 500. | +| `internal` | *boolean* | :heavy_check_mark: | Indicates if this is an internal error that should not be exposed to users.

When `true`, this error contains sensitive information or implementation
details that should not be shown to end-users. Such errors should be
logged for debugging but replaced with generic error messages in responses. | +| `message` | *string* | :heavy_check_mark: | Human-readable error message.

This message should be clear and actionable for developers or end-users,
providing context about what went wrong and potentially how to fix it. | +| `retryable` | *boolean* | :heavy_minus_sign: | Indicates whether the operation that caused the error should be retried.

When `true`, the error is transient and the operation might succeed
if attempted again. When `false`, retrying the same operation is
unlikely to succeed without changes. | +| `source` | *any* | :heavy_minus_sign: | The underlying error that caused this error, creating an error chain.

This allows for proper error propagation and debugging by maintaining
the full context of how an error occurred through multiple layers
of an application. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsedataerror2.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedataerror2.md new file mode 100644 index 000000000..7596b6afc --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedataerror2.md @@ -0,0 +1,34 @@ +# EventListItemResponseDataError2 + +Canonical error container that provides a structured way to represent errors +with rich metadata including error codes, human-readable messages, context, +and chaining capabilities for error propagation. + +This struct is designed to be both machine-readable and user-friendly, +supporting serialization for API responses and detailed error reporting +in distributed systems. + +## Example Usage + +```typescript +import { EventListItemResponseDataError2 } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseDataError2 = { + code: "", + internal: true, + message: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `code` | *string* | :heavy_check_mark: | A unique identifier for the type of error.

This should be a short, machine-readable string that can be used
by clients to programmatically handle different error types.
Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" | +| `context` | *any* | :heavy_minus_sign: | Additional diagnostic information about the error context.

This optional field can contain structured data providing more details
about the error, such as validation errors, request parameters that
caused the issue, or other relevant context information. | +| `hint` | *string* | :heavy_minus_sign: | Optional human-facing remediation hint. | +| `httpStatusCode` | *number* | :heavy_minus_sign: | HTTP status code for this error.

Used when converting the error to an HTTP response. If None, falls back to
the error type's default status code or 500. | +| `internal` | *boolean* | :heavy_check_mark: | Indicates if this is an internal error that should not be exposed to users.

When `true`, this error contains sensitive information or implementation
details that should not be shown to end-users. Such errors should be
logged for debugging but replaced with generic error messages in responses. | +| `message` | *string* | :heavy_check_mark: | Human-readable error message.

This message should be clear and actionable for developers or end-users,
providing context about what went wrong and potentially how to fix it. | +| `retryable` | *boolean* | :heavy_minus_sign: | Indicates whether the operation that caused the error should be retried.

When `true`, the error is transient and the operation might succeed
if attempted again. When `false`, retrying the same operation is
unlikely to succeed without changes. | +| `source` | *any* | :heavy_minus_sign: | The underlying error that caused this error, creating an error chain.

This allows for proper error propagation and debugging by maintaining
the full context of how an error occurred through multiple layers
of an application. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatafinished.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatafinished.md new file mode 100644 index 000000000..7d4b191e4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatafinished.md @@ -0,0 +1,17 @@ +# EventListItemResponseDataFinished + +## Example Usage + +```typescript +import { EventListItemResponseDataFinished } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseDataFinished = { + type: "Finished", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `type` | *"Finished"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatageneratingcloudformationtemplate.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatageneratingcloudformationtemplate.md new file mode 100644 index 000000000..93ebce993 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatageneratingcloudformationtemplate.md @@ -0,0 +1,17 @@ +# EventListItemResponseDataGeneratingCloudFormationTemplate + +## Example Usage + +```typescript +import { EventListItemResponseDataGeneratingCloudFormationTemplate } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseDataGeneratingCloudFormationTemplate = { + type: "GeneratingCloudFormationTemplate", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | +| `type` | *"GeneratingCloudFormationTemplate"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatageneratingtemplate.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatageneratingtemplate.md new file mode 100644 index 000000000..055cd3586 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatageneratingtemplate.md @@ -0,0 +1,19 @@ +# EventListItemResponseDataGeneratingTemplate + +## Example Usage + +```typescript +import { EventListItemResponseDataGeneratingTemplate } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseDataGeneratingTemplate = { + platform: "", + type: "GeneratingTemplate", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `platform` | *string* | :heavy_check_mark: | Platform for which the template is being generated | +| `type` | *"GeneratingTemplate"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsedataimportingstackstatefromcloudformation.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedataimportingstackstatefromcloudformation.md new file mode 100644 index 000000000..7c3b9d494 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedataimportingstackstatefromcloudformation.md @@ -0,0 +1,19 @@ +# EventListItemResponseDataImportingStackStateFromCloudFormation + +## Example Usage + +```typescript +import { EventListItemResponseDataImportingStackStateFromCloudFormation } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseDataImportingStackStateFromCloudFormation = { + cfnStackName: "", + type: "ImportingStackStateFromCloudFormation", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------- | ----------------------------------------- | ----------------------------------------- | ----------------------------------------- | +| `cfnStackName` | *string* | :heavy_check_mark: | Name of the CloudFormation stack | +| `type` | *"ImportingStackStateFromCloudFormation"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsedataloadingconfiguration.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedataloadingconfiguration.md new file mode 100644 index 000000000..d5954dce6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedataloadingconfiguration.md @@ -0,0 +1,17 @@ +# EventListItemResponseDataLoadingConfiguration + +## Example Usage + +```typescript +import { EventListItemResponseDataLoadingConfiguration } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseDataLoadingConfiguration = { + type: "LoadingConfiguration", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------ | ------------------------ | ------------------------ | ------------------------ | +| `type` | *"LoadingConfiguration"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatapreparingenvironment.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatapreparingenvironment.md new file mode 100644 index 000000000..43a1ae617 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatapreparingenvironment.md @@ -0,0 +1,19 @@ +# EventListItemResponseDataPreparingEnvironment + +## Example Usage + +```typescript +import { EventListItemResponseDataPreparingEnvironment } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseDataPreparingEnvironment = { + strategyName: "", + type: "PreparingEnvironment", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------ | ------------------------------------------ | ------------------------------------------ | ------------------------------------------ | +| `strategyName` | *string* | :heavy_check_mark: | Name of the deployment strategy being used | +| `type` | *"PreparingEnvironment"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsedataprovisioningagent.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedataprovisioningagent.md new file mode 100644 index 000000000..7af45e414 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedataprovisioningagent.md @@ -0,0 +1,21 @@ +# EventListItemResponseDataProvisioningAgent + +## Example Usage + +```typescript +import { EventListItemResponseDataProvisioningAgent } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseDataProvisioningAgent = { + agentId: "", + releaseId: "", + type: "ProvisioningAgent", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------- | --------------------------------------------- | --------------------------------------------- | --------------------------------------------- | +| `agentId` | *string* | :heavy_check_mark: | ID of the agent being provisioned | +| `releaseId` | *string* | :heavy_check_mark: | ID of the release being deployed to the agent | +| `type` | *"ProvisioningAgent"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatapushingimage.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatapushingimage.md new file mode 100644 index 000000000..e9512e609 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatapushingimage.md @@ -0,0 +1,20 @@ +# EventListItemResponseDataPushingImage + +## Example Usage + +```typescript +import { EventListItemResponseDataPushingImage } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseDataPushingImage = { + image: "https://picsum.photos/seed/3kNN0/505/3308", + type: "PushingImage", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | +| `image` | *string* | :heavy_check_mark: | Name of the image being pushed | +| `progress` | *models.EventListItemResponseProgressUnion* | :heavy_minus_sign: | N/A | +| `type` | *"PushingImage"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatapushingresource.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatapushingresource.md new file mode 100644 index 000000000..6104d924e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatapushingresource.md @@ -0,0 +1,21 @@ +# EventListItemResponseDataPushingResource + +## Example Usage + +```typescript +import { EventListItemResponseDataPushingResource } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseDataPushingResource = { + resourceName: "", + resourceType: "", + type: "PushingResource", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | +| `resourceName` | *string* | :heavy_check_mark: | Name of the resource being pushed | +| `resourceType` | *string* | :heavy_check_mark: | Type of the resource: "worker", "container" | +| `type` | *"PushingResource"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatapushingstack.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatapushingstack.md new file mode 100644 index 000000000..c09faa21f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatapushingstack.md @@ -0,0 +1,22 @@ +# EventListItemResponseDataPushingStack + +## Example Usage + +```typescript +import { EventListItemResponseDataPushingStack } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseDataPushingStack = { + platform: "", + stack: "", + type: "PushingStack", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | +| `destination` | *string* | :heavy_minus_sign: | Human-readable destination for pushed images | +| `platform` | *string* | :heavy_check_mark: | Target platform | +| `stack` | *string* | :heavy_check_mark: | Name of the stack being pushed | +| `type` | *"PushingStack"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatareleasechannelupdated.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatareleasechannelupdated.md new file mode 100644 index 000000000..c06833686 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatareleasechannelupdated.md @@ -0,0 +1,23 @@ +# EventListItemResponseDataReleaseChannelUpdated + +## Example Usage + +```typescript +import { EventListItemResponseDataReleaseChannelUpdated } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseDataReleaseChannelUpdated = { + channel: "", + releaseId: "", + type: "ReleaseChannelUpdated", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | +| `actor` | *models.EventListItemResponseActorUnion1* | :heavy_minus_sign: | N/A | +| `channel` | *string* | :heavy_check_mark: | Name of the channel that moved | +| `previousReleaseId` | *string* | :heavy_minus_sign: | ID of the release that was previously current, if any | +| `releaseId` | *string* | :heavy_check_mark: | ID of the release that is now current | +| `type` | *"ReleaseChannelUpdated"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatarunningpreflights.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatarunningpreflights.md new file mode 100644 index 000000000..3d7679461 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatarunningpreflights.md @@ -0,0 +1,21 @@ +# EventListItemResponseDataRunningPreflights + +## Example Usage + +```typescript +import { EventListItemResponseDataRunningPreflights } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseDataRunningPreflights = { + platform: "", + stack: "", + type: "RunningPreflights", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `platform` | *string* | :heavy_check_mark: | Platform being targeted | +| `stack` | *string* | :heavy_check_mark: | Name of the stack being checked | +| `type` | *"RunningPreflights"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatarunningtestworker.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatarunningtestworker.md new file mode 100644 index 000000000..a0f839b76 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatarunningtestworker.md @@ -0,0 +1,19 @@ +# EventListItemResponseDataRunningTestWorker + +## Example Usage + +```typescript +import { EventListItemResponseDataRunningTestWorker } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseDataRunningTestWorker = { + stackName: "", + type: "RunningTestWorker", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ | +| `stackName` | *string* | :heavy_check_mark: | Name of the stack being tested | +| `type` | *"RunningTestWorker"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatasettingupplatformcontext.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatasettingupplatformcontext.md new file mode 100644 index 000000000..4836daec1 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatasettingupplatformcontext.md @@ -0,0 +1,19 @@ +# EventListItemResponseDataSettingUpPlatformContext + +## Example Usage + +```typescript +import { EventListItemResponseDataSettingUpPlatformContext } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseDataSettingUpPlatformContext = { + platformName: "", + type: "SettingUpPlatformContext", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------- | ----------------------------------------- | ----------------------------------------- | ----------------------------------------- | +| `platformName` | *string* | :heavy_check_mark: | Name of the platform (e.g., "AWS", "GCP") | +| `type` | *"SettingUpPlatformContext"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatastackstep.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatastackstep.md new file mode 100644 index 000000000..9691979c3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedatastackstep.md @@ -0,0 +1,33 @@ +# EventListItemResponseDataStackStep + +## Example Usage + +```typescript +import { EventListItemResponseDataStackStep } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseDataStackStep = { + nextState: { + platform: "test", + resourcePrefix: "", + resources: { + "key": { + config: { + id: "", + type: "", + }, + status: "delete-failed", + type: "", + }, + }, + }, + type: "StackStep", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `nextState` | [models.EventListItemResponseNextState](../models/eventlistitemresponsenextstate.md) | :heavy_check_mark: | Represents the collective state of all resources in a stack, including platform and pending actions. | +| `suggestedDelayMs` | *number* | :heavy_minus_sign: | An suggested duration to wait before executing the next step. | +| `type` | *"StackStep"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsedataunion.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedataunion.md new file mode 100644 index 000000000..fd64dc7c3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedataunion.md @@ -0,0 +1,458 @@ +# EventListItemResponseDataUnion + + +## Supported Types + +### `models.EventListItemResponseDataLoadingConfiguration` + +```typescript +const value: models.EventListItemResponseDataLoadingConfiguration = { + type: "LoadingConfiguration", +}; +``` + +### `models.EventListItemResponseDataFinished` + +```typescript +const value: models.EventListItemResponseDataFinished = { + type: "Finished", +}; +``` + +### `models.EventListItemResponseDataBuildingStack` + +```typescript +const value: models.EventListItemResponseDataBuildingStack = { + stack: "", + type: "BuildingStack", +}; +``` + +### `models.EventListItemResponseDataRunningPreflights` + +```typescript +const value: models.EventListItemResponseDataRunningPreflights = { + platform: "", + stack: "", + type: "RunningPreflights", +}; +``` + +### `models.EventListItemResponseDataDownloadingAlienRuntime` + +```typescript +const value: models.EventListItemResponseDataDownloadingAlienRuntime = { + targetTriple: "", + type: "DownloadingAlienRuntime", + url: "https://hefty-eggplant.net", +}; +``` + +### `models.EventListItemResponseDataBuildingResource` + +```typescript +const value: models.EventListItemResponseDataBuildingResource = { + resourceName: "", + resourceType: "", + type: "BuildingResource", +}; +``` + +### `models.EventListItemResponseDataBuildingImage` + +```typescript +const value: models.EventListItemResponseDataBuildingImage = { + image: "https://loremflickr.com/3474/373?lock=4089420585640817", + type: "BuildingImage", +}; +``` + +### `models.EventListItemResponseDataPushingImage` + +```typescript +const value: models.EventListItemResponseDataPushingImage = { + image: "https://picsum.photos/seed/3kNN0/505/3308", + type: "PushingImage", +}; +``` + +### `models.EventListItemResponseDataPushingStack` + +```typescript +const value: models.EventListItemResponseDataPushingStack = { + platform: "", + stack: "", + type: "PushingStack", +}; +``` + +### `models.EventListItemResponseDataPushingResource` + +```typescript +const value: models.EventListItemResponseDataPushingResource = { + resourceName: "", + resourceType: "", + type: "PushingResource", +}; +``` + +### `models.EventListItemResponseDataCreatingRelease` + +```typescript +const value: models.EventListItemResponseDataCreatingRelease = { + project: "", + type: "CreatingRelease", +}; +``` + +### `models.EventListItemResponseDataCompilingCode` + +```typescript +const value: models.EventListItemResponseDataCompilingCode = { + language: "", + type: "CompilingCode", +}; +``` + +### `models.EventListItemResponseDataStackStep` + +```typescript +const value: models.EventListItemResponseDataStackStep = { + nextState: { + platform: "test", + resourcePrefix: "", + resources: { + "key": { + config: { + id: "", + type: "", + }, + status: "delete-failed", + type: "", + }, + }, + }, + type: "StackStep", +}; +``` + +### `models.EventListItemResponseDataGeneratingCloudFormationTemplate` + +```typescript +const value: models.EventListItemResponseDataGeneratingCloudFormationTemplate = + { + type: "GeneratingCloudFormationTemplate", + }; +``` + +### `models.EventListItemResponseDataGeneratingTemplate` + +```typescript +const value: models.EventListItemResponseDataGeneratingTemplate = { + platform: "", + type: "GeneratingTemplate", +}; +``` + +### `models.EventListItemResponseDataProvisioningAgent` + +```typescript +const value: models.EventListItemResponseDataProvisioningAgent = { + agentId: "", + releaseId: "", + type: "ProvisioningAgent", +}; +``` + +### `models.EventListItemResponseDataUpdatingAgent` + +```typescript +const value: models.EventListItemResponseDataUpdatingAgent = { + agentId: "", + releaseId: "", + type: "UpdatingAgent", +}; +``` + +### `models.EventListItemResponseDataDeletingAgent` + +```typescript +const value: models.EventListItemResponseDataDeletingAgent = { + agentId: "", + releaseId: "", + type: "DeletingAgent", +}; +``` + +### `models.EventListItemResponseDataDebuggingAgent` + +```typescript +const value: models.EventListItemResponseDataDebuggingAgent = { + agentId: "", + debugSessionId: "", + type: "DebuggingAgent", +}; +``` + +### `models.EventListItemResponseDataPreparingEnvironment` + +```typescript +const value: models.EventListItemResponseDataPreparingEnvironment = { + strategyName: "", + type: "PreparingEnvironment", +}; +``` + +### `models.EventListItemResponseDataDeployingStack` + +```typescript +const value: models.EventListItemResponseDataDeployingStack = { + stackName: "", + type: "DeployingStack", +}; +``` + +### `models.EventListItemResponseDataRunningTestWorker` + +```typescript +const value: models.EventListItemResponseDataRunningTestWorker = { + stackName: "", + type: "RunningTestWorker", +}; +``` + +### `models.EventListItemResponseDataCleaningUpStack` + +```typescript +const value: models.EventListItemResponseDataCleaningUpStack = { + stackName: "", + strategyName: "", + type: "CleaningUpStack", +}; +``` + +### `models.EventListItemResponseDataCleaningUpEnvironment` + +```typescript +const value: models.EventListItemResponseDataCleaningUpEnvironment = { + stackName: "", + strategyName: "", + type: "CleaningUpEnvironment", +}; +``` + +### `models.EventListItemResponseDataSettingUpPlatformContext` + +```typescript +const value: models.EventListItemResponseDataSettingUpPlatformContext = { + platformName: "", + type: "SettingUpPlatformContext", +}; +``` + +### `models.EventListItemResponseDataEnsuringDockerRepository` + +```typescript +const value: models.EventListItemResponseDataEnsuringDockerRepository = { + repositoryName: "", + type: "EnsuringDockerRepository", +}; +``` + +### `models.EventListItemResponseDataDeployingCloudFormationStack` + +```typescript +const value: models.EventListItemResponseDataDeployingCloudFormationStack = { + cfnStackName: "", + currentStatus: "", + type: "DeployingCloudFormationStack", +}; +``` + +### `models.EventListItemResponseDataAssumingRole` + +```typescript +const value: models.EventListItemResponseDataAssumingRole = { + roleArn: "", + type: "AssumingRole", +}; +``` + +### `models.EventListItemResponseDataImportingStackStateFromCloudFormation` + +```typescript +const value: + models.EventListItemResponseDataImportingStackStateFromCloudFormation = { + cfnStackName: "", + type: "ImportingStackStateFromCloudFormation", + }; +``` + +### `models.EventListItemResponseDataDeletingCloudFormationStack` + +```typescript +const value: models.EventListItemResponseDataDeletingCloudFormationStack = { + cfnStackName: "", + currentStatus: "", + type: "DeletingCloudFormationStack", +}; +``` + +### `models.EventListItemResponseDataEmptyingBuckets` + +```typescript +const value: models.EventListItemResponseDataEmptyingBuckets = { + bucketNames: [], + type: "EmptyingBuckets", +}; +``` + +### `models.EventListItemResponseDataDeploymentCreated` + +```typescript +const value: models.EventListItemResponseDataDeploymentCreated = { + deploymentGroupId: "", + deploymentId: "", + type: "DeploymentCreated", +}; +``` + +### `models.EventListItemResponseDataDeploymentReleased` + +```typescript +const value: models.EventListItemResponseDataDeploymentReleased = { + deploymentId: "", + releaseId: "", + type: "DeploymentReleased", +}; +``` + +### `models.EventListItemResponseDataDeploymentFailed` + +```typescript +const value: models.EventListItemResponseDataDeploymentFailed = { + deploymentId: "", + error: { + code: "", + internal: false, + message: "", + }, + phase: "provisioning", + type: "DeploymentFailed", +}; +``` + +### `models.EventListItemResponseDataDeploymentDegraded` + +```typescript +const value: models.EventListItemResponseDataDeploymentDegraded = { + deploymentId: "", + error: { + code: "", + internal: false, + message: "", + }, + type: "DeploymentDegraded", +}; +``` + +### `models.EventListItemResponseDataDeploymentRecovered` + +```typescript +const value: models.EventListItemResponseDataDeploymentRecovered = { + deploymentId: "", + releaseId: "", + type: "DeploymentRecovered", +}; +``` + +### `models.EventListItemResponseDataDeploymentDeleted` + +```typescript +const value: models.EventListItemResponseDataDeploymentDeleted = { + deploymentId: "", + type: "DeploymentDeleted", +}; +``` + +### `models.EventListItemResponseDataReleaseChannelUpdated` + +```typescript +const value: models.EventListItemResponseDataReleaseChannelUpdated = { + channel: "", + releaseId: "", + type: "ReleaseChannelUpdated", +}; +``` + +### `models.EventListItemResponseDataDeploymentReleaseChannelChanged` + +```typescript +const value: models.EventListItemResponseDataDeploymentReleaseChannelChanged = { + channel: "", + deploymentId: "", + previousChannel: "", + type: "DeploymentReleaseChannelChanged", +}; +``` + +### `models.EventListItemResponseDataDeploymentRetryRequested` + +```typescript +const value: models.EventListItemResponseDataDeploymentRetryRequested = { + deploymentId: "", + type: "DeploymentRetryRequested", +}; +``` + +### `models.EventListItemResponseDataDeploymentRedeployRequested` + +```typescript +const value: models.EventListItemResponseDataDeploymentRedeployRequested = { + deploymentId: "", + releaseId: "", + type: "DeploymentRedeployRequested", +}; +``` + +### `models.EventListItemResponseDataDeploymentReleasePinned` + +```typescript +const value: models.EventListItemResponseDataDeploymentReleasePinned = { + deploymentId: "", + pinnedReleaseId: "", + type: "DeploymentReleasePinned", +}; +``` + +### `models.EventListItemResponseDataDeploymentReleaseUnpinned` + +```typescript +const value: models.EventListItemResponseDataDeploymentReleaseUnpinned = { + deploymentId: "", + previousPinnedReleaseId: "", + type: "DeploymentReleaseUnpinned", +}; +``` + +### `models.EventListItemResponseDataDeploymentEnvironmentUpdated` + +```typescript +const value: models.EventListItemResponseDataDeploymentEnvironmentUpdated = { + changedKeys: [ + "", + ], + deploymentId: "", + type: "DeploymentEnvironmentUpdated", +}; +``` + +### `models.EventListItemResponseDataDeploymentDeletionRequested` + +```typescript +const value: models.EventListItemResponseDataDeploymentDeletionRequested = { + deploymentId: "", + type: "DeploymentDeletionRequested", +}; +``` + diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsedataupdatingagent.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedataupdatingagent.md new file mode 100644 index 000000000..a5dc75ab6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedataupdatingagent.md @@ -0,0 +1,21 @@ +# EventListItemResponseDataUpdatingAgent + +## Example Usage + +```typescript +import { EventListItemResponseDataUpdatingAgent } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseDataUpdatingAgent = { + agentId: "", + releaseId: "", + type: "UpdatingAgent", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | +| `agentId` | *string* | :heavy_check_mark: | ID of the agent being updated | +| `releaseId` | *string* | :heavy_check_mark: | ID of the new release being deployed to the agent | +| `type` | *"UpdatingAgent"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsedependency.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedependency.md new file mode 100644 index 000000000..bdd814943 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsedependency.md @@ -0,0 +1,21 @@ +# EventListItemResponseDependency + +Reference to a resource by its stable id and resource type. + +## Example Usage + +```typescript +import { EventListItemResponseDependency } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseDependency = { + id: "", + type: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | N/A | +| `type` | *string* | :heavy_check_mark: | Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponseerrorfailed.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponseerrorfailed.md new file mode 100644 index 000000000..dc415d817 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponseerrorfailed.md @@ -0,0 +1,34 @@ +# EventListItemResponseErrorFailed + +Canonical error container that provides a structured way to represent errors +with rich metadata including error codes, human-readable messages, context, +and chaining capabilities for error propagation. + +This struct is designed to be both machine-readable and user-friendly, +supporting serialization for API responses and detailed error reporting +in distributed systems. + +## Example Usage + +```typescript +import { EventListItemResponseErrorFailed } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseErrorFailed = { + code: "", + internal: false, + message: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `code` | *string* | :heavy_check_mark: | A unique identifier for the type of error.

This should be a short, machine-readable string that can be used
by clients to programmatically handle different error types.
Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" | +| `context` | *any* | :heavy_minus_sign: | Additional diagnostic information about the error context.

This optional field can contain structured data providing more details
about the error, such as validation errors, request parameters that
caused the issue, or other relevant context information. | +| `hint` | *string* | :heavy_minus_sign: | Optional human-facing remediation hint. | +| `httpStatusCode` | *number* | :heavy_minus_sign: | HTTP status code for this error.

Used when converting the error to an HTTP response. If None, falls back to
the error type's default status code or 500. | +| `internal` | *boolean* | :heavy_check_mark: | Indicates if this is an internal error that should not be exposed to users.

When `true`, this error contains sensitive information or implementation
details that should not be shown to end-users. Such errors should be
logged for debugging but replaced with generic error messages in responses. | +| `message` | *string* | :heavy_check_mark: | Human-readable error message.

This message should be clear and actionable for developers or end-users,
providing context about what went wrong and potentially how to fix it. | +| `retryable` | *boolean* | :heavy_minus_sign: | Indicates whether the operation that caused the error should be retried.

When `true`, the error is transient and the operation might succeed
if attempted again. When `false`, retrying the same operation is
unlikely to succeed without changes. | +| `source` | *any* | :heavy_minus_sign: | The underlying error that caused this error, creating an error chain.

This allows for proper error propagation and debugging by maintaining
the full context of how an error occurred through multiple layers
of an application. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponseerrornextstate.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponseerrornextstate.md new file mode 100644 index 000000000..7c4011533 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponseerrornextstate.md @@ -0,0 +1,34 @@ +# EventListItemResponseErrorNextState + +Canonical error container that provides a structured way to represent errors +with rich metadata including error codes, human-readable messages, context, +and chaining capabilities for error propagation. + +This struct is designed to be both machine-readable and user-friendly, +supporting serialization for API responses and detailed error reporting +in distributed systems. + +## Example Usage + +```typescript +import { EventListItemResponseErrorNextState } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseErrorNextState = { + code: "", + internal: true, + message: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `code` | *string* | :heavy_check_mark: | A unique identifier for the type of error.

This should be a short, machine-readable string that can be used
by clients to programmatically handle different error types.
Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" | +| `context` | *any* | :heavy_minus_sign: | Additional diagnostic information about the error context.

This optional field can contain structured data providing more details
about the error, such as validation errors, request parameters that
caused the issue, or other relevant context information. | +| `hint` | *string* | :heavy_minus_sign: | Optional human-facing remediation hint. | +| `httpStatusCode` | *number* | :heavy_minus_sign: | HTTP status code for this error.

Used when converting the error to an HTTP response. If None, falls back to
the error type's default status code or 500. | +| `internal` | *boolean* | :heavy_check_mark: | Indicates if this is an internal error that should not be exposed to users.

When `true`, this error contains sensitive information or implementation
details that should not be shown to end-users. Such errors should be
logged for debugging but replaced with generic error messages in responses. | +| `message` | *string* | :heavy_check_mark: | Human-readable error message.

This message should be clear and actionable for developers or end-users,
providing context about what went wrong and potentially how to fix it. | +| `retryable` | *boolean* | :heavy_minus_sign: | Indicates whether the operation that caused the error should be retried.

When `true`, the error is transient and the operation might succeed
if attempted again. When `false`, retrying the same operation is
unlikely to succeed without changes. | +| `source` | *any* | :heavy_minus_sign: | The underlying error that caused this error, creating an error chain.

This allows for proper error propagation and debugging by maintaining
the full context of how an error occurred through multiple layers
of an application. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsefailed.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsefailed.md new file mode 100644 index 000000000..17e2c4839 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsefailed.md @@ -0,0 +1,17 @@ +# EventListItemResponseFailed + +Event failed with an error + +## Example Usage + +```typescript +import { EventListItemResponseFailed } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseFailed = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | +| `error` | *models.EventListItemResponseFailedErrorUnion* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsefailederrorunion.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsefailederrorunion.md new file mode 100644 index 000000000..99a296ce1 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsefailederrorunion.md @@ -0,0 +1,21 @@ +# EventListItemResponseFailedErrorUnion + + +## Supported Types + +### `models.EventListItemResponseErrorFailed` + +```typescript +const value: models.EventListItemResponseErrorFailed = { + code: "", + internal: false, + message: "", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsekind1.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsekind1.md new file mode 100644 index 000000000..3803468d8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsekind1.md @@ -0,0 +1,17 @@ +# EventListItemResponseKind1 + +Type of authenticated principal that requested an event. + +## Example Usage + +```typescript +import { EventListItemResponseKind1 } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseKind1 = "serviceAccount"; +``` + +## Values + +```typescript +"user" | "serviceAccount" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsekind2.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsekind2.md new file mode 100644 index 000000000..baf3a55b3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsekind2.md @@ -0,0 +1,17 @@ +# EventListItemResponseKind2 + +Type of authenticated principal that requested an event. + +## Example Usage + +```typescript +import { EventListItemResponseKind2 } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseKind2 = "user"; +``` + +## Values + +```typescript +"user" | "serviceAccount" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsekind3.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsekind3.md new file mode 100644 index 000000000..c3ab9b59e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsekind3.md @@ -0,0 +1,17 @@ +# EventListItemResponseKind3 + +Type of authenticated principal that requested an event. + +## Example Usage + +```typescript +import { EventListItemResponseKind3 } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseKind3 = "serviceAccount"; +``` + +## Values + +```typescript +"user" | "serviceAccount" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsekind4.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsekind4.md new file mode 100644 index 000000000..25cc9b1e7 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsekind4.md @@ -0,0 +1,17 @@ +# EventListItemResponseKind4 + +Type of authenticated principal that requested an event. + +## Example Usage + +```typescript +import { EventListItemResponseKind4 } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseKind4 = "user"; +``` + +## Values + +```typescript +"user" | "serviceAccount" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponselifecycleenum.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponselifecycleenum.md new file mode 100644 index 000000000..b3d19969d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponselifecycleenum.md @@ -0,0 +1,17 @@ +# EventListItemResponseLifecycleEnum + +Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + +## Example Usage + +```typescript +import { EventListItemResponseLifecycleEnum } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseLifecycleEnum = "live"; +``` + +## Values + +```typescript +"frozen" | "live" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponselifecycleunion.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponselifecycleunion.md new file mode 100644 index 000000000..51ac6a20d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponselifecycleunion.md @@ -0,0 +1,17 @@ +# EventListItemResponseLifecycleUnion + + +## Supported Types + +### `models.EventListItemResponseLifecycleEnum` + +```typescript +const value: models.EventListItemResponseLifecycleEnum = "live"; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsenextstate.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsenextstate.md new file mode 100644 index 000000000..f75b08b88 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsenextstate.md @@ -0,0 +1,32 @@ +# EventListItemResponseNextState + +Represents the collective state of all resources in a stack, including platform and pending actions. + +## Example Usage + +```typescript +import { EventListItemResponseNextState } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseNextState = { + platform: "local", + resourcePrefix: "", + resources: { + "key": { + config: { + id: "", + type: "", + }, + status: "delete-failed", + type: "", + }, + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `platform` | [models.EventListItemResponsePlatform](../models/eventlistitemresponseplatform.md) | :heavy_check_mark: | Represents the target cloud platform. | +| `resourcePrefix` | *string* | :heavy_check_mark: | A prefix used for resource naming to ensure uniqueness across deployments. | +| `resources` | Record | :heavy_check_mark: | The state of individual resources, keyed by resource ID. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsenextstateerrorunion.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsenextstateerrorunion.md new file mode 100644 index 000000000..3ffbad53b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsenextstateerrorunion.md @@ -0,0 +1,21 @@ +# EventListItemResponseNextStateErrorUnion + + +## Supported Types + +### `models.EventListItemResponseErrorNextState` + +```typescript +const value: models.EventListItemResponseErrorNextState = { + code: "", + internal: true, + message: "", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponseoutputs.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponseoutputs.md new file mode 100644 index 000000000..103a36ad9 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponseoutputs.md @@ -0,0 +1,20 @@ +# EventListItemResponseOutputs + +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. + +## Example Usage + +```typescript +import { EventListItemResponseOutputs } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseOutputs = { + type: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `type` | *string* | :heavy_check_mark: | Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. | +| `additionalProperties` | Record | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponseoutputsunion.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponseoutputsunion.md new file mode 100644 index 000000000..03b507ef4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponseoutputsunion.md @@ -0,0 +1,19 @@ +# EventListItemResponseOutputsUnion + + +## Supported Types + +### `models.EventListItemResponseOutputs` + +```typescript +const value: models.EventListItemResponseOutputs = { + type: "", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsephase.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsephase.md new file mode 100644 index 000000000..36f415dea --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsephase.md @@ -0,0 +1,22 @@ +# EventListItemResponsePhase + +Phase of a deployment at which a failure occurred. + +Derived from the source deployment status: `preflights-failed` → +`Preflights`, `provisioning-failed` → `Provisioning`, `update-failed` → +`Updating`, `delete-failed` → `Deleting`. +`refresh-failed` is modelled separately via `DeploymentDegraded`. + +## Example Usage + +```typescript +import { EventListItemResponsePhase } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponsePhase = "deleting"; +``` + +## Values + +```typescript +"preflights" | "provisioning" | "updating" | "deleting" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponseplatform.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponseplatform.md new file mode 100644 index 000000000..854e000fe --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponseplatform.md @@ -0,0 +1,17 @@ +# EventListItemResponsePlatform + +Represents the target cloud platform. + +## Example Usage + +```typescript +import { EventListItemResponsePlatform } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponsePlatform = "gcp"; +``` + +## Values + +```typescript +"aws" | "gcp" | "azure" | "kubernetes" | "machines" | "local" | "test" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsepreviousconfig.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsepreviousconfig.md new file mode 100644 index 000000000..14ca5d421 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsepreviousconfig.md @@ -0,0 +1,22 @@ +# EventListItemResponsePreviousConfig + +Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + +## Example Usage + +```typescript +import { EventListItemResponsePreviousConfig } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponsePreviousConfig = { + id: "", + type: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. | +| `type` | *string* | :heavy_check_mark: | Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. | +| `additionalProperties` | Record | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsepreviousconfigunion.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsepreviousconfigunion.md new file mode 100644 index 000000000..e35d43cc2 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsepreviousconfigunion.md @@ -0,0 +1,20 @@ +# EventListItemResponsePreviousConfigUnion + + +## Supported Types + +### `models.EventListItemResponsePreviousConfig` + +```typescript +const value: models.EventListItemResponsePreviousConfig = { + id: "", + type: "", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsepreviouserror.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsepreviouserror.md new file mode 100644 index 000000000..138d9a1bf --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsepreviouserror.md @@ -0,0 +1,34 @@ +# EventListItemResponsePreviousError + +Canonical error container that provides a structured way to represent errors +with rich metadata including error codes, human-readable messages, context, +and chaining capabilities for error propagation. + +This struct is designed to be both machine-readable and user-friendly, +supporting serialization for API responses and detailed error reporting +in distributed systems. + +## Example Usage + +```typescript +import { EventListItemResponsePreviousError } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponsePreviousError = { + code: "", + internal: false, + message: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `code` | *string* | :heavy_check_mark: | A unique identifier for the type of error.

This should be a short, machine-readable string that can be used
by clients to programmatically handle different error types.
Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" | +| `context` | *any* | :heavy_minus_sign: | Additional diagnostic information about the error context.

This optional field can contain structured data providing more details
about the error, such as validation errors, request parameters that
caused the issue, or other relevant context information. | +| `hint` | *string* | :heavy_minus_sign: | Optional human-facing remediation hint. | +| `httpStatusCode` | *number* | :heavy_minus_sign: | HTTP status code for this error.

Used when converting the error to an HTTP response. If None, falls back to
the error type's default status code or 500. | +| `internal` | *boolean* | :heavy_check_mark: | Indicates if this is an internal error that should not be exposed to users.

When `true`, this error contains sensitive information or implementation
details that should not be shown to end-users. Such errors should be
logged for debugging but replaced with generic error messages in responses. | +| `message` | *string* | :heavy_check_mark: | Human-readable error message.

This message should be clear and actionable for developers or end-users,
providing context about what went wrong and potentially how to fix it. | +| `retryable` | *boolean* | :heavy_minus_sign: | Indicates whether the operation that caused the error should be retried.

When `true`, the error is transient and the operation might succeed
if attempted again. When `false`, retrying the same operation is
unlikely to succeed without changes. | +| `source` | *any* | :heavy_minus_sign: | The underlying error that caused this error, creating an error chain.

This allows for proper error propagation and debugging by maintaining
the full context of how an error occurred through multiple layers
of an application. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsepreviouserrorunion.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsepreviouserrorunion.md new file mode 100644 index 000000000..45cd9e3e6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsepreviouserrorunion.md @@ -0,0 +1,21 @@ +# EventListItemResponsePreviousErrorUnion + + +## Supported Types + +### `models.EventListItemResponsePreviousError` + +```typescript +const value: models.EventListItemResponsePreviousError = { + code: "", + internal: false, + message: "", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponseprogress.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponseprogress.md new file mode 100644 index 000000000..c9fa81e92 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponseprogress.md @@ -0,0 +1,27 @@ +# EventListItemResponseProgress + +Progress information for image push operations + +## Example Usage + +```typescript +import { EventListItemResponseProgress } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseProgress = { + bytesUploaded: 810913, + layersUploaded: 441338, + operation: "", + totalBytes: 43935, + totalLayers: 949681, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------- | --------------------------------- | --------------------------------- | --------------------------------- | +| `bytesUploaded` | *number* | :heavy_check_mark: | Bytes uploaded so far | +| `layersUploaded` | *number* | :heavy_check_mark: | Number of layers uploaded so far | +| `operation` | *string* | :heavy_check_mark: | Current operation being performed | +| `totalBytes` | *number* | :heavy_check_mark: | Total bytes to upload | +| `totalLayers` | *number* | :heavy_check_mark: | Total number of layers to upload | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponseprogressunion.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponseprogressunion.md new file mode 100644 index 000000000..aa2f3e8c5 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponseprogressunion.md @@ -0,0 +1,23 @@ +# EventListItemResponseProgressUnion + + +## Supported Types + +### `models.EventListItemResponseProgress` + +```typescript +const value: models.EventListItemResponseProgress = { + bytesUploaded: 810913, + layersUploaded: 441338, + operation: "", + totalBytes: 43935, + totalLayers: 949681, +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponseresources.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponseresources.md new file mode 100644 index 000000000..197207d32 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponseresources.md @@ -0,0 +1,36 @@ +# EventListItemResponseResources + +Represents the state of a single resource within the stack for a specific platform. + +## Example Usage + +```typescript +import { EventListItemResponseResources } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseResources = { + config: { + id: "", + type: "", + }, + status: "pending", + type: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `internal` | *any* | :heavy_minus_sign: | The platform-specific resource controller that manages this resource's lifecycle.
This is None when the resource status is Pending.
Stored as JSON to make the struct serializable and movable to alien-core. | +| `config` | [models.EventListItemResponseConfig](../models/eventlistitemresponseconfig.md) | :heavy_check_mark: | 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` | *models.EventListItemResponseControllerPlatformUnion* | :heavy_minus_sign: | N/A | +| `dependencies` | [models.EventListItemResponseDependency](../models/eventlistitemresponsedependency.md)[] | :heavy_minus_sign: | Complete list of dependencies for this resource, including infrastructure dependencies.
This preserves the full dependency information from the stack definition. | +| `error` | *models.EventListItemResponseNextStateErrorUnion* | :heavy_minus_sign: | N/A | +| `lastFailedState` | *any* | :heavy_minus_sign: | Stores the controller state that failed, used for manual retry operations.
This allows resuming from the exact point where the failure occurred.
Stored as JSON to make the struct serializable and movable to alien-core. | +| `lifecycle` | *models.EventListItemResponseLifecycleUnion* | :heavy_minus_sign: | N/A | +| `outputs` | *models.EventListItemResponseOutputsUnion* | :heavy_minus_sign: | N/A | +| `previousConfig` | *models.EventListItemResponsePreviousConfigUnion* | :heavy_minus_sign: | N/A | +| `remoteBindingParams` | *any* | :heavy_minus_sign: | Binding parameters for remote access.
Only populated when the resource has `remote_access: true` in its ResourceEntry.
This is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding).
Populated by controllers during provisioning using get_binding_params(). | +| `retryAttempt` | *number* | :heavy_minus_sign: | Tracks consecutive retry attempts for the current state transition. | +| `status` | [models.EventListItemResponseStatus](../models/eventlistitemresponsestatus.md) | :heavy_check_mark: | Represents the high-level status of a resource during its lifecycle. | +| `type` | *string* | :heavy_check_mark: | The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE). | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsestate.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsestate.md new file mode 100644 index 000000000..8516abc05 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsestate.md @@ -0,0 +1,17 @@ +# EventListItemResponseState + +## Example Usage + +```typescript +import { EventListItemResponseState } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseState = { + failed: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | +| `failed` | [models.EventListItemResponseFailed](../models/eventlistitemresponsefailed.md) | :heavy_check_mark: | Event failed with an error | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsestatenone.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsestatenone.md new file mode 100644 index 000000000..6a3dd455e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsestatenone.md @@ -0,0 +1,15 @@ +# EventListItemResponseStateNone + +## Example Usage + +```typescript +import { EventListItemResponseStateNone } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseStateNone = "none"; +``` + +## Values + +```typescript +"none" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsestatestarted.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsestatestarted.md new file mode 100644 index 000000000..8bdb77b11 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsestatestarted.md @@ -0,0 +1,15 @@ +# EventListItemResponseStateStarted + +## Example Usage + +```typescript +import { EventListItemResponseStateStarted } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseStateStarted = "started"; +``` + +## Values + +```typescript +"started" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsestatesuccess.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsestatesuccess.md new file mode 100644 index 000000000..4080d2048 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsestatesuccess.md @@ -0,0 +1,15 @@ +# EventListItemResponseStateSuccess + +## Example Usage + +```typescript +import { EventListItemResponseStateSuccess } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseStateSuccess = "success"; +``` + +## Values + +```typescript +"success" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsestateunion.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsestateunion.md new file mode 100644 index 000000000..02cf50afa --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsestateunion.md @@ -0,0 +1,33 @@ +# EventListItemResponseStateUnion + +Represents the state of an event + + +## Supported Types + +### `models.EventListItemResponseState` + +```typescript +const value: models.EventListItemResponseState = { + failed: {}, +}; +``` + +### `models.EventListItemResponseStateNone` + +```typescript +const value: models.EventListItemResponseStateNone = "none"; +``` + +### `models.EventListItemResponseStateStarted` + +```typescript +const value: models.EventListItemResponseStateStarted = "started"; +``` + +### `models.EventListItemResponseStateSuccess` + +```typescript +const value: models.EventListItemResponseStateSuccess = "success"; +``` + diff --git a/client-sdks/platform/typescript/docs/models/eventlistitemresponsestatus.md b/client-sdks/platform/typescript/docs/models/eventlistitemresponsestatus.md new file mode 100644 index 000000000..94c4a605a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventlistitemresponsestatus.md @@ -0,0 +1,17 @@ +# EventListItemResponseStatus + +Represents the high-level status of a resource during its lifecycle. + +## Example Usage + +```typescript +import { EventListItemResponseStatus } from "@alienplatform/platform-api/models"; + +let value: EventListItemResponseStatus = "delete-failed"; +``` + +## Values + +```typescript +"pending" | "provisioning" | "provision-failed" | "running" | "updating" | "update-failed" | "deleting" | "delete-failed" | "teardown-required" | "deleted" | "refresh-failed" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventnextstate.md b/client-sdks/platform/typescript/docs/models/eventnextstate.md new file mode 100644 index 000000000..0f2d6d045 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventnextstate.md @@ -0,0 +1,23 @@ +# EventNextState + +Represents the collective state of all resources in a stack, including platform and pending actions. + +## Example Usage + +```typescript +import { EventNextState } from "@alienplatform/platform-api/models"; + +let value: EventNextState = { + platform: "machines", + resourcePrefix: "", + resources: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `platform` | [models.EventPlatform](../models/eventplatform.md) | :heavy_check_mark: | Represents the target cloud platform. | +| `resourcePrefix` | *string* | :heavy_check_mark: | A prefix used for resource naming to ensure uniqueness across deployments. | +| `resources` | Record | :heavy_check_mark: | The state of individual resources, keyed by resource ID. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventnextstateerrorunion.md b/client-sdks/platform/typescript/docs/models/eventnextstateerrorunion.md new file mode 100644 index 000000000..bdf972bfe --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventnextstateerrorunion.md @@ -0,0 +1,21 @@ +# EventNextStateErrorUnion + + +## Supported Types + +### `models.EventErrorNextState` + +```typescript +const value: models.EventErrorNextState = { + code: "", + internal: true, + message: "", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/eventphase.md b/client-sdks/platform/typescript/docs/models/eventphase.md new file mode 100644 index 000000000..6f3ad6b22 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventphase.md @@ -0,0 +1,22 @@ +# EventPhase + +Phase of a deployment at which a failure occurred. + +Derived from the source deployment status: `preflights-failed` → +`Preflights`, `provisioning-failed` → `Provisioning`, `update-failed` → +`Updating`, `delete-failed` → `Deleting`. +`refresh-failed` is modelled separately via `DeploymentDegraded`. + +## Example Usage + +```typescript +import { EventPhase } from "@alienplatform/platform-api/models"; + +let value: EventPhase = "deleting"; +``` + +## Values + +```typescript +"preflights" | "provisioning" | "updating" | "deleting" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventpreviouserror.md b/client-sdks/platform/typescript/docs/models/eventpreviouserror.md new file mode 100644 index 000000000..1876179e6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventpreviouserror.md @@ -0,0 +1,34 @@ +# EventPreviousError + +Canonical error container that provides a structured way to represent errors +with rich metadata including error codes, human-readable messages, context, +and chaining capabilities for error propagation. + +This struct is designed to be both machine-readable and user-friendly, +supporting serialization for API responses and detailed error reporting +in distributed systems. + +## Example Usage + +```typescript +import { EventPreviousError } from "@alienplatform/platform-api/models"; + +let value: EventPreviousError = { + code: "", + internal: true, + message: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `code` | *string* | :heavy_check_mark: | A unique identifier for the type of error.

This should be a short, machine-readable string that can be used
by clients to programmatically handle different error types.
Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" | +| `context` | *any* | :heavy_minus_sign: | Additional diagnostic information about the error context.

This optional field can contain structured data providing more details
about the error, such as validation errors, request parameters that
caused the issue, or other relevant context information. | +| `hint` | *string* | :heavy_minus_sign: | Optional human-facing remediation hint. | +| `httpStatusCode` | *number* | :heavy_minus_sign: | HTTP status code for this error.

Used when converting the error to an HTTP response. If None, falls back to
the error type's default status code or 500. | +| `internal` | *boolean* | :heavy_check_mark: | Indicates if this is an internal error that should not be exposed to users.

When `true`, this error contains sensitive information or implementation
details that should not be shown to end-users. Such errors should be
logged for debugging but replaced with generic error messages in responses. | +| `message` | *string* | :heavy_check_mark: | Human-readable error message.

This message should be clear and actionable for developers or end-users,
providing context about what went wrong and potentially how to fix it. | +| `retryable` | *boolean* | :heavy_minus_sign: | Indicates whether the operation that caused the error should be retried.

When `true`, the error is transient and the operation might succeed
if attempted again. When `false`, retrying the same operation is
unlikely to succeed without changes. | +| `source` | *any* | :heavy_minus_sign: | The underlying error that caused this error, creating an error chain.

This allows for proper error propagation and debugging by maintaining
the full context of how an error occurred through multiple layers
of an application. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventpreviouserrorunion.md b/client-sdks/platform/typescript/docs/models/eventpreviouserrorunion.md new file mode 100644 index 000000000..8234959f0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventpreviouserrorunion.md @@ -0,0 +1,21 @@ +# EventPreviousErrorUnion + + +## Supported Types + +### `models.EventPreviousError` + +```typescript +const value: models.EventPreviousError = { + code: "", + internal: true, + message: "", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/eventprogress.md b/client-sdks/platform/typescript/docs/models/eventprogress.md new file mode 100644 index 000000000..c0ac3064a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventprogress.md @@ -0,0 +1,27 @@ +# EventProgress + +Progress information for image push operations + +## Example Usage + +```typescript +import { EventProgress } from "@alienplatform/platform-api/models"; + +let value: EventProgress = { + bytesUploaded: 376832, + layersUploaded: 873781, + operation: "", + totalBytes: 861993, + totalLayers: 202100, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------- | --------------------------------- | --------------------------------- | --------------------------------- | +| `bytesUploaded` | *number* | :heavy_check_mark: | Bytes uploaded so far | +| `layersUploaded` | *number* | :heavy_check_mark: | Number of layers uploaded so far | +| `operation` | *string* | :heavy_check_mark: | Current operation being performed | +| `totalBytes` | *number* | :heavy_check_mark: | Total bytes to upload | +| `totalLayers` | *number* | :heavy_check_mark: | Total number of layers to upload | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventprogressunion.md b/client-sdks/platform/typescript/docs/models/eventprogressunion.md new file mode 100644 index 000000000..6bbaf2d02 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventprogressunion.md @@ -0,0 +1,23 @@ +# EventProgressUnion + + +## Supported Types + +### `models.EventProgress` + +```typescript +const value: models.EventProgress = { + bytesUploaded: 376832, + layersUploaded: 873781, + operation: "", + totalBytes: 861993, + totalLayers: 202100, +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/eventresources.md b/client-sdks/platform/typescript/docs/models/eventresources.md index 3abda9401..5c604f1a0 100644 --- a/client-sdks/platform/typescript/docs/models/eventresources.md +++ b/client-sdks/platform/typescript/docs/models/eventresources.md @@ -25,7 +25,7 @@ let value: EventResources = { | `config` | [models.EventConfig](../models/eventconfig.md) | :heavy_check_mark: | 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` | *models.EventControllerPlatformUnion* | :heavy_minus_sign: | N/A | | `dependencies` | [models.EventDependency](../models/eventdependency.md)[] | :heavy_minus_sign: | Complete list of dependencies for this resource, including infrastructure dependencies.
This preserves the full dependency information from the stack definition. | -| `error` | *models.NextStateErrorUnion* | :heavy_minus_sign: | N/A | +| `error` | *models.EventNextStateErrorUnion* | :heavy_minus_sign: | N/A | | `lastFailedState` | *any* | :heavy_minus_sign: | Stores the controller state that failed, used for manual retry operations.
This allows resuming from the exact point where the failure occurred.
Stored as JSON to make the struct serializable and movable to alien-core. | | `lifecycle` | *models.EventLifecycleUnion* | :heavy_minus_sign: | N/A | | `outputs` | *models.EventOutputsUnion* | :heavy_minus_sign: | N/A | diff --git a/client-sdks/platform/typescript/docs/models/eventsourceunion1.md b/client-sdks/platform/typescript/docs/models/eventsourceunion1.md index e525663c1..170fe472a 100644 --- a/client-sdks/platform/typescript/docs/models/eventsourceunion1.md +++ b/client-sdks/platform/typescript/docs/models/eventsourceunion1.md @@ -3,10 +3,10 @@ ## Supported Types -### `models.SyncReconcileRequestSource1` +### `models.SourceEvent1` ```typescript -const value: models.SyncReconcileRequestSource1 = {}; +const value: models.SourceEvent1 = {}; ``` ### `any` diff --git a/client-sdks/platform/typescript/docs/models/eventsourceunion10.md b/client-sdks/platform/typescript/docs/models/eventsourceunion10.md index a27ed757c..a54d32547 100644 --- a/client-sdks/platform/typescript/docs/models/eventsourceunion10.md +++ b/client-sdks/platform/typescript/docs/models/eventsourceunion10.md @@ -3,10 +3,10 @@ ## Supported Types -### `models.SyncReconcileRequestSource10` +### `models.SourceEvent10` ```typescript -const value: models.SyncReconcileRequestSource10 = {}; +const value: models.SourceEvent10 = {}; ``` ### `any` diff --git a/client-sdks/platform/typescript/docs/models/eventsourceunion2.md b/client-sdks/platform/typescript/docs/models/eventsourceunion2.md index c59a19180..20aa242d4 100644 --- a/client-sdks/platform/typescript/docs/models/eventsourceunion2.md +++ b/client-sdks/platform/typescript/docs/models/eventsourceunion2.md @@ -3,10 +3,10 @@ ## Supported Types -### `models.SyncReconcileRequestSource2` +### `models.SourceEvent2` ```typescript -const value: models.SyncReconcileRequestSource2 = {}; +const value: models.SourceEvent2 = {}; ``` ### `any` diff --git a/client-sdks/platform/typescript/docs/models/eventsourceunion3.md b/client-sdks/platform/typescript/docs/models/eventsourceunion3.md index 4483a9259..cf9cde19f 100644 --- a/client-sdks/platform/typescript/docs/models/eventsourceunion3.md +++ b/client-sdks/platform/typescript/docs/models/eventsourceunion3.md @@ -3,10 +3,10 @@ ## Supported Types -### `models.SyncReconcileRequestSource3` +### `models.SourceEvent3` ```typescript -const value: models.SyncReconcileRequestSource3 = {}; +const value: models.SourceEvent3 = {}; ``` ### `any` diff --git a/client-sdks/platform/typescript/docs/models/eventsourceunion4.md b/client-sdks/platform/typescript/docs/models/eventsourceunion4.md index 3d17c46e3..745c0e248 100644 --- a/client-sdks/platform/typescript/docs/models/eventsourceunion4.md +++ b/client-sdks/platform/typescript/docs/models/eventsourceunion4.md @@ -3,10 +3,10 @@ ## Supported Types -### `models.SyncReconcileRequestSource4` +### `models.SourceEvent4` ```typescript -const value: models.SyncReconcileRequestSource4 = {}; +const value: models.SourceEvent4 = {}; ``` ### `any` diff --git a/client-sdks/platform/typescript/docs/models/eventsourceunion5.md b/client-sdks/platform/typescript/docs/models/eventsourceunion5.md index 2e5ed6009..86b688be3 100644 --- a/client-sdks/platform/typescript/docs/models/eventsourceunion5.md +++ b/client-sdks/platform/typescript/docs/models/eventsourceunion5.md @@ -3,10 +3,10 @@ ## Supported Types -### `models.SyncReconcileRequestSource5` +### `models.SourceEvent5` ```typescript -const value: models.SyncReconcileRequestSource5 = {}; +const value: models.SourceEvent5 = {}; ``` ### `any` diff --git a/client-sdks/platform/typescript/docs/models/eventsourceunion6.md b/client-sdks/platform/typescript/docs/models/eventsourceunion6.md index 8f2ce68dd..b266ac086 100644 --- a/client-sdks/platform/typescript/docs/models/eventsourceunion6.md +++ b/client-sdks/platform/typescript/docs/models/eventsourceunion6.md @@ -3,10 +3,10 @@ ## Supported Types -### `models.SyncReconcileRequestSource6` +### `models.SourceEvent6` ```typescript -const value: models.SyncReconcileRequestSource6 = {}; +const value: models.SourceEvent6 = {}; ``` ### `any` diff --git a/client-sdks/platform/typescript/docs/models/eventsourceunion7.md b/client-sdks/platform/typescript/docs/models/eventsourceunion7.md index bf6077650..a7287221d 100644 --- a/client-sdks/platform/typescript/docs/models/eventsourceunion7.md +++ b/client-sdks/platform/typescript/docs/models/eventsourceunion7.md @@ -3,10 +3,10 @@ ## Supported Types -### `models.SyncReconcileRequestSource7` +### `models.SourceEvent7` ```typescript -const value: models.SyncReconcileRequestSource7 = {}; +const value: models.SourceEvent7 = {}; ``` ### `any` diff --git a/client-sdks/platform/typescript/docs/models/eventsourceunion8.md b/client-sdks/platform/typescript/docs/models/eventsourceunion8.md index 0f4a3ce3c..8bea37b19 100644 --- a/client-sdks/platform/typescript/docs/models/eventsourceunion8.md +++ b/client-sdks/platform/typescript/docs/models/eventsourceunion8.md @@ -3,10 +3,10 @@ ## Supported Types -### `models.SyncReconcileRequestSource8` +### `models.SourceEvent8` ```typescript -const value: models.SyncReconcileRequestSource8 = {}; +const value: models.SourceEvent8 = {}; ``` ### `any` diff --git a/client-sdks/platform/typescript/docs/models/eventsourceunion9.md b/client-sdks/platform/typescript/docs/models/eventsourceunion9.md index 4025f578a..574f08936 100644 --- a/client-sdks/platform/typescript/docs/models/eventsourceunion9.md +++ b/client-sdks/platform/typescript/docs/models/eventsourceunion9.md @@ -3,10 +3,10 @@ ## Supported Types -### `models.SyncReconcileRequestSource9` +### `models.SourceEvent9` ```typescript -const value: models.SyncReconcileRequestSource9 = {}; +const value: models.SourceEvent9 = {}; ``` ### `any` diff --git a/client-sdks/platform/typescript/docs/models/eventstate.md b/client-sdks/platform/typescript/docs/models/eventstate.md index 9bd2f980f..2cb58aa37 100644 --- a/client-sdks/platform/typescript/docs/models/eventstate.md +++ b/client-sdks/platform/typescript/docs/models/eventstate.md @@ -12,6 +12,6 @@ let value: EventState = { ## Fields -| Field | Type | Required | Description | -| ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | -| `failed` | [models.Failed](../models/failed.md) | :heavy_check_mark: | Event failed with an error | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | +| `failed` | [models.EventFailed](../models/eventfailed.md) | :heavy_check_mark: | Event failed with an error | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventstatenone.md b/client-sdks/platform/typescript/docs/models/eventstatenone.md new file mode 100644 index 000000000..07983eefc --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventstatenone.md @@ -0,0 +1,15 @@ +# EventStateNone + +## Example Usage + +```typescript +import { EventStateNone } from "@alienplatform/platform-api/models"; + +let value: EventStateNone = "none"; +``` + +## Values + +```typescript +"none" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventstatestarted.md b/client-sdks/platform/typescript/docs/models/eventstatestarted.md new file mode 100644 index 000000000..42994ff52 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventstatestarted.md @@ -0,0 +1,15 @@ +# EventStateStarted + +## Example Usage + +```typescript +import { EventStateStarted } from "@alienplatform/platform-api/models"; + +let value: EventStateStarted = "started"; +``` + +## Values + +```typescript +"started" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventstatesuccess.md b/client-sdks/platform/typescript/docs/models/eventstatesuccess.md new file mode 100644 index 000000000..0b297296a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventstatesuccess.md @@ -0,0 +1,15 @@ +# EventStateSuccess + +## Example Usage + +```typescript +import { EventStateSuccess } from "@alienplatform/platform-api/models"; + +let value: EventStateSuccess = "success"; +``` + +## Values + +```typescript +"success" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventstateunion.md b/client-sdks/platform/typescript/docs/models/eventstateunion.md new file mode 100644 index 000000000..53b270679 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/eventstateunion.md @@ -0,0 +1,33 @@ +# EventStateUnion + +Represents the state of an event + + +## Supported Types + +### `models.EventState` + +```typescript +const value: models.EventState = { + failed: {}, +}; +``` + +### `models.EventStateNone` + +```typescript +const value: models.EventStateNone = "none"; +``` + +### `models.EventStateStarted` + +```typescript +const value: models.EventStateStarted = "started"; +``` + +### `models.EventStateSuccess` + +```typescript +const value: models.EventStateSuccess = "success"; +``` + diff --git a/client-sdks/platform/typescript/docs/models/externalaibinding.md b/client-sdks/platform/typescript/docs/models/externalaibinding.md new file mode 100644 index 000000000..8bb1047ce --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/externalaibinding.md @@ -0,0 +1,36 @@ +# ExternalAIBinding + +## Example Usage + +```typescript +import { ExternalAIBinding } from "@alienplatform/platform-api/models"; + +let value: ExternalAIBinding = { + id: "", + provider: "databricks", + providerEndpoint: "", + providerClientId: null, + keyFingerprint: "", + availableProviderModelIds: [ + "", + "", + ], + requiredModelCoverage: [], + verifiedAt: new Date("2025-12-12T16:37:42.381Z"), + updatedAt: new Date("2024-10-12T00:27:34.829Z"), +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | N/A | +| `provider` | [models.ExternalAIBindingProvider](../models/externalaibindingprovider.md) | :heavy_check_mark: | N/A | +| `providerEndpoint` | *string* | :heavy_check_mark: | N/A | +| `providerClientId` | *string* | :heavy_check_mark: | N/A | +| `keyFingerprint` | *string* | :heavy_check_mark: | N/A | +| `availableProviderModelIds` | *string*[] | :heavy_check_mark: | N/A | +| `requiredModelCoverage` | [models.RequiredModelCoverage](../models/requiredmodelcoverage.md)[] | :heavy_check_mark: | N/A | +| `verifiedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | +| `updatedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/externalaibindingprovider.md b/client-sdks/platform/typescript/docs/models/externalaibindingprovider.md new file mode 100644 index 000000000..0679661cd --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/externalaibindingprovider.md @@ -0,0 +1,15 @@ +# ExternalAIBindingProvider + +## Example Usage + +```typescript +import { ExternalAIBindingProvider } from "@alienplatform/platform-api/models"; + +let value: ExternalAIBindingProvider = "anthropic"; +``` + +## Values + +```typescript +"anthropic" | "databricks" | "openai" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/externalaibindingstate.md b/client-sdks/platform/typescript/docs/models/externalaibindingstate.md new file mode 100644 index 000000000..83595be11 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/externalaibindingstate.md @@ -0,0 +1,31 @@ +# ExternalAIBindingState + +## Example Usage + +```typescript +import { ExternalAIBindingState } from "@alienplatform/platform-api/models"; + +let value: ExternalAIBindingState = { + binding: { + id: "", + provider: "openai", + providerEndpoint: "", + providerClientId: "", + keyFingerprint: "", + availableProviderModelIds: [ + "", + "", + "", + ], + requiredModelCoverage: [], + verifiedAt: new Date("2026-10-17T13:05:17.905Z"), + updatedAt: new Date("2025-09-22T19:00:03.377Z"), + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | +| `binding` | [models.ExternalAIBinding](../models/externalaibinding.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/failed.md b/client-sdks/platform/typescript/docs/models/failed.md deleted file mode 100644 index 44e948358..000000000 --- a/client-sdks/platform/typescript/docs/models/failed.md +++ /dev/null @@ -1,17 +0,0 @@ -# Failed - -Event failed with an error - -## Example Usage - -```typescript -import { Failed } from "@alienplatform/platform-api/models"; - -let value: Failed = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------- | ------------------------- | ------------------------- | ------------------------- | -| `error` | *models.FailedErrorUnion* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/failederrorunion.md b/client-sdks/platform/typescript/docs/models/failederrorunion.md deleted file mode 100644 index 92d60bd09..000000000 --- a/client-sdks/platform/typescript/docs/models/failederrorunion.md +++ /dev/null @@ -1,21 +0,0 @@ -# FailedErrorUnion - - -## Supported Types - -### `models.ErrorFailed` - -```typescript -const value: models.ErrorFailed = { - code: "", - internal: true, - message: "", -}; -``` - -### `any` - -```typescript -const value: any = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/forwardimportrequest.md b/client-sdks/platform/typescript/docs/models/forwardimportrequest.md index 768c6c2e3..ff7c14e7e 100644 --- a/client-sdks/platform/typescript/docs/models/forwardimportrequest.md +++ b/client-sdks/platform/typescript/docs/models/forwardimportrequest.md @@ -23,7 +23,11 @@ let value: ForwardImportRequest = { { id: "", type: "", - importData: {}, + importData: { + "key": "", + "key1": "", + "key2": "", + }, }, ], }, diff --git a/client-sdks/platform/typescript/docs/models/forwardimportrequestsetupitem.md b/client-sdks/platform/typescript/docs/models/forwardimportrequestsetupitem.md index 724829327..aaf176161 100644 --- a/client-sdks/platform/typescript/docs/models/forwardimportrequestsetupitem.md +++ b/client-sdks/platform/typescript/docs/models/forwardimportrequestsetupitem.md @@ -7,11 +7,11 @@ Exact item selected from a tailored customer setup link. ```typescript import { ForwardImportRequestSetupItem } from "@alienplatform/platform-api/models"; -let value: ForwardImportRequestSetupItem = "alien-stack"; +let value: ForwardImportRequestSetupItem = "deployment"; ``` ## Values ```typescript -"alien-stack" | "models" | "keys" +"deployment" | "models" | "keys" | "bucket" | "registry" ``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/generatemanagerbindingtokenrequest.md b/client-sdks/platform/typescript/docs/models/generatemanagerbindingtokenrequest.md new file mode 100644 index 000000000..7955ef1f8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/generatemanagerbindingtokenrequest.md @@ -0,0 +1,17 @@ +# GenerateManagerBindingTokenRequest + +## Example Usage + +```typescript +import { GenerateManagerBindingTokenRequest } from "@alienplatform/platform-api/models"; + +let value: GenerateManagerBindingTokenRequest = { + deploymentId: "dep_0c29fq4a2yjb7kx3smwdgxlc", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------- | ------------------------------------- | ------------------------------------- | ------------------------------------- | ------------------------------------- | +| `deploymentId` | *string* | :heavy_check_mark: | Unique identifier for the deployment. | dep_0c29fq4a2yjb7kx3smwdgxlc | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/generatemanagerbindingtokenresponse.md b/client-sdks/platform/typescript/docs/models/generatemanagerbindingtokenresponse.md new file mode 100644 index 000000000..c40ac8d17 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/generatemanagerbindingtokenresponse.md @@ -0,0 +1,23 @@ +# GenerateManagerBindingTokenResponse + +## Example Usage + +```typescript +import { GenerateManagerBindingTokenResponse } from "@alienplatform/platform-api/models"; + +let value: GenerateManagerBindingTokenResponse = { + accessToken: "", + expiresIn: null, + tokenType: "Bearer", + managerUrl: "https://spiteful-pearl.org", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `accessToken` | *string* | :heavy_check_mark: | N/A | +| `expiresIn` | *number* | :heavy_check_mark: | N/A | +| `tokenType` | [models.GenerateManagerBindingTokenResponseTokenType](../models/generatemanagerbindingtokenresponsetokentype.md) | :heavy_check_mark: | N/A | +| `managerUrl` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/generatemanagerbindingtokenresponsetokentype.md b/client-sdks/platform/typescript/docs/models/generatemanagerbindingtokenresponsetokentype.md new file mode 100644 index 000000000..ed60f3bc6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/generatemanagerbindingtokenresponsetokentype.md @@ -0,0 +1,15 @@ +# GenerateManagerBindingTokenResponseTokenType + +## Example Usage + +```typescript +import { GenerateManagerBindingTokenResponseTokenType } from "@alienplatform/platform-api/models"; + +let value: GenerateManagerBindingTokenResponseTokenType = "Bearer"; +``` + +## Values + +```typescript +"Bearer" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/gitmetadata.md b/client-sdks/platform/typescript/docs/models/gitmetadata.md index 49247cc5a..027872a7d 100644 --- a/client-sdks/platform/typescript/docs/models/gitmetadata.md +++ b/client-sdks/platform/typescript/docs/models/gitmetadata.md @@ -31,7 +31,7 @@ let value: GitMetadata = { | `dirty` | *boolean* | :heavy_minus_sign: | Whether or not there have been modifications to the working tree since the latest commit | true | | `remoteUrl` | *string* | :heavy_minus_sign: | The git repository's remote origin url | https://github.com/alienplatform/alien | | `commitAuthorName` | *string* | :heavy_minus_sign: | The name of the author of the commit (from git config) | John Doe | -| `commitAuthorEmail` | *string* | :heavy_minus_sign: | The email of the author of the commit (from git config) | john@example.com | +| `commitAuthorEmail` | *string* | :heavy_minus_sign: | The author identity recorded by Git. This is not guaranteed to be an RFC-valid email address. | john@example.com | | `commitAuthorLogin` | *string* | :heavy_minus_sign: | The provider username of the commit author (e.g., GitHub login), resolved server-side from the commit email | johndoe | | `commitAuthorAvatarUrl` | *string* | :heavy_minus_sign: | The avatar URL of the commit author, resolved server-side from the provider login | https://github.com/johndoe.png | | `provider` | *models.GitProvider* | :heavy_minus_sign: | Provider-specific repository information, resolved server-side from remoteUrl | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/group.md b/client-sdks/platform/typescript/docs/models/group.md new file mode 100644 index 000000000..ab59e1b69 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/group.md @@ -0,0 +1,102 @@ +# Group + +## Example Usage + +```typescript +import { Group } from "@alienplatform/platform-api/models"; + +let value: Group = { + deploymentGroupId: "dg_r27ict8c7vcgsumpj90ackf7b", + name: "", + externalId: "", + createdAt: new Date("2024-04-05T05:54:15.339Z"), + capabilities: { + models: { + capability: "registry", + enabled: true, + state: "not-connected", + deploymentId: "dep_0c29fq4a2yjb7kx3smwdgxlc", + observation: { + provider: "", + platform: "local", + resourceId: "", + location: "", + account: "22393779", + observedAt: new Date("2025-02-05T09:16:14.437Z"), + stale: false, + partial: true, + health: null, + lifecycle: "", + message: "", + }, + }, + keys: { + capability: "registry", + enabled: true, + state: "connected", + deploymentId: "dep_0c29fq4a2yjb7kx3smwdgxlc", + observation: { + provider: "", + platform: "gcp", + resourceId: "", + location: "", + account: "19573632", + observedAt: new Date("2024-06-20T03:52:32.683Z"), + stale: true, + partial: true, + health: "degraded", + lifecycle: "", + message: "", + }, + }, + buckets: { + capability: "models", + enabled: true, + state: "needs-attention", + deploymentId: "dep_0c29fq4a2yjb7kx3smwdgxlc", + observation: { + provider: "", + platform: "test", + resourceId: "", + location: "", + account: "58292455", + observedAt: new Date("2024-09-29T01:47:42.152Z"), + stale: false, + partial: false, + health: "unknown", + lifecycle: "", + message: "", + }, + }, + registry: { + capability: "buckets", + enabled: false, + state: "needs-attention", + deploymentId: "dep_0c29fq4a2yjb7kx3smwdgxlc", + observation: { + provider: "", + platform: "gcp", + resourceId: "", + location: "", + account: "07843950", + observedAt: new Date("2026-07-02T12:17:56.583Z"), + stale: true, + partial: true, + health: "unknown", + lifecycle: null, + message: "", + }, + }, + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `deploymentGroupId` | *string* | :heavy_check_mark: | Unique identifier for the deployment group. | dg_r27ict8c7vcgsumpj90ackf7b | +| `name` | *string* | :heavy_check_mark: | N/A | | +| `externalId` | *string* | :heavy_check_mark: | N/A | | +| `createdAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `capabilities` | [models.GroupCapabilities](../models/groupcapabilities.md) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/groupbuckets.md b/client-sdks/platform/typescript/docs/models/groupbuckets.md new file mode 100644 index 000000000..e39a2f0d0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/groupbuckets.md @@ -0,0 +1,41 @@ +# GroupBuckets + +## Example Usage + +```typescript +import { GroupBuckets } from "@alienplatform/platform-api/models"; + +let value: GroupBuckets = { + capability: "registry", + enabled: false, + state: "not-connected", + deploymentId: "dep_0c29fq4a2yjb7kx3smwdgxlc", + observation: { + provider: "", + platform: "test", + resourceId: "", + location: "", + account: "58292455", + observedAt: new Date("2024-09-29T01:47:42.152Z"), + stale: false, + partial: false, + health: "unknown", + lifecycle: "", + message: "", + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `capability` | [models.BucketsCapability](../models/bucketscapability.md) | :heavy_check_mark: | N/A | | +| `enabled` | *boolean* | :heavy_check_mark: | N/A | | +| `state` | [models.BucketsState](../models/bucketsstate.md) | :heavy_check_mark: | N/A | | +| `deploymentId` | *string* | :heavy_check_mark: | Unique identifier for the deployment. | dep_0c29fq4a2yjb7kx3smwdgxlc | +| `observation` | [models.BucketsObservation](../models/bucketsobservation.md) | :heavy_check_mark: | N/A | | +| `modelCoverage` | [models.BucketsModelCoverage](../models/bucketsmodelcoverage.md)[] | :heavy_minus_sign: | N/A | | +| `directProvider` | [models.BucketsDirectProvider](../models/bucketsdirectprovider.md) | :heavy_minus_sign: | N/A | | +| `root` | [models.BucketsRoot](../models/bucketsroot.md) | :heavy_minus_sign: | N/A | | +| `registry` | [models.BucketsRegistry](../models/bucketsregistry.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/groupcapabilities.md b/client-sdks/platform/typescript/docs/models/groupcapabilities.md new file mode 100644 index 000000000..5d5b348f6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/groupcapabilities.md @@ -0,0 +1,95 @@ +# GroupCapabilities + +## Example Usage + +```typescript +import { GroupCapabilities } from "@alienplatform/platform-api/models"; + +let value: GroupCapabilities = { + models: { + capability: "registry", + enabled: true, + state: "not-connected", + deploymentId: "dep_0c29fq4a2yjb7kx3smwdgxlc", + observation: { + provider: "", + platform: "local", + resourceId: "", + location: "", + account: "22393779", + observedAt: new Date("2025-02-05T09:16:14.437Z"), + stale: false, + partial: true, + health: null, + lifecycle: "", + message: "", + }, + }, + keys: { + capability: "registry", + enabled: true, + state: "connected", + deploymentId: "dep_0c29fq4a2yjb7kx3smwdgxlc", + observation: { + provider: "", + platform: "gcp", + resourceId: "", + location: "", + account: "19573632", + observedAt: new Date("2024-06-20T03:52:32.683Z"), + stale: true, + partial: true, + health: "degraded", + lifecycle: "", + message: "", + }, + }, + buckets: { + capability: "models", + enabled: true, + state: "needs-attention", + deploymentId: "dep_0c29fq4a2yjb7kx3smwdgxlc", + observation: { + provider: "", + platform: "test", + resourceId: "", + location: "", + account: "58292455", + observedAt: new Date("2024-09-29T01:47:42.152Z"), + stale: false, + partial: false, + health: "unknown", + lifecycle: "", + message: "", + }, + }, + registry: { + capability: "buckets", + enabled: false, + state: "needs-attention", + deploymentId: "dep_0c29fq4a2yjb7kx3smwdgxlc", + observation: { + provider: "", + platform: "gcp", + resourceId: "", + location: "", + account: "07843950", + observedAt: new Date("2026-07-02T12:17:56.583Z"), + stale: true, + partial: true, + health: "unknown", + lifecycle: null, + message: "", + }, + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `models` | [models.GroupModels](../models/groupmodels.md) | :heavy_check_mark: | N/A | +| `keys` | [models.GroupKeys](../models/groupkeys.md) | :heavy_check_mark: | N/A | +| `buckets` | [models.GroupBuckets](../models/groupbuckets.md) | :heavy_check_mark: | N/A | +| `registry` | [models.GroupRegistry](../models/groupregistry.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/groupkeys.md b/client-sdks/platform/typescript/docs/models/groupkeys.md new file mode 100644 index 000000000..73eddefc8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/groupkeys.md @@ -0,0 +1,41 @@ +# GroupKeys + +## Example Usage + +```typescript +import { GroupKeys } from "@alienplatform/platform-api/models"; + +let value: GroupKeys = { + capability: "models", + enabled: true, + state: "revoked", + deploymentId: "dep_0c29fq4a2yjb7kx3smwdgxlc", + observation: { + provider: "", + platform: "gcp", + resourceId: "", + location: "", + account: "19573632", + observedAt: new Date("2024-06-20T03:52:32.683Z"), + stale: true, + partial: true, + health: "degraded", + lifecycle: "", + message: "", + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `capability` | [models.KeysCapability](../models/keyscapability.md) | :heavy_check_mark: | N/A | | +| `enabled` | *boolean* | :heavy_check_mark: | N/A | | +| `state` | [models.KeysState](../models/keysstate.md) | :heavy_check_mark: | N/A | | +| `deploymentId` | *string* | :heavy_check_mark: | Unique identifier for the deployment. | dep_0c29fq4a2yjb7kx3smwdgxlc | +| `observation` | [models.KeysObservation](../models/keysobservation.md) | :heavy_check_mark: | N/A | | +| `modelCoverage` | [models.KeysModelCoverage](../models/keysmodelcoverage.md)[] | :heavy_minus_sign: | N/A | | +| `directProvider` | [models.KeysDirectProvider](../models/keysdirectprovider.md) | :heavy_minus_sign: | N/A | | +| `root` | [models.KeysRoot](../models/keysroot.md) | :heavy_minus_sign: | N/A | | +| `registry` | [models.KeysRegistry](../models/keysregistry.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/groupmodels.md b/client-sdks/platform/typescript/docs/models/groupmodels.md new file mode 100644 index 000000000..97b5133ab --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/groupmodels.md @@ -0,0 +1,41 @@ +# GroupModels + +## Example Usage + +```typescript +import { GroupModels } from "@alienplatform/platform-api/models"; + +let value: GroupModels = { + capability: "keys", + enabled: true, + state: "revoked", + deploymentId: "dep_0c29fq4a2yjb7kx3smwdgxlc", + observation: { + provider: "", + platform: "local", + resourceId: "", + location: "", + account: "22393779", + observedAt: new Date("2025-02-05T09:16:14.437Z"), + stale: false, + partial: true, + health: null, + lifecycle: "", + message: "", + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | +| `capability` | [models.ModelsCapability](../models/modelscapability.md) | :heavy_check_mark: | N/A | | +| `enabled` | *boolean* | :heavy_check_mark: | N/A | | +| `state` | [models.ModelsState](../models/modelsstate.md) | :heavy_check_mark: | N/A | | +| `deploymentId` | *string* | :heavy_check_mark: | Unique identifier for the deployment. | dep_0c29fq4a2yjb7kx3smwdgxlc | +| `observation` | [models.ModelsObservation](../models/modelsobservation.md) | :heavy_check_mark: | N/A | | +| `modelCoverage` | [models.ModelsModelCoverage](../models/modelsmodelcoverage.md)[] | :heavy_minus_sign: | N/A | | +| `directProvider` | [models.ModelsDirectProvider](../models/modelsdirectprovider.md) | :heavy_minus_sign: | N/A | | +| `root` | [models.ModelsRoot](../models/modelsroot.md) | :heavy_minus_sign: | N/A | | +| `registry` | [models.ModelsRegistry](../models/modelsregistry.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/groupregistry.md b/client-sdks/platform/typescript/docs/models/groupregistry.md new file mode 100644 index 000000000..f5bfb1d57 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/groupregistry.md @@ -0,0 +1,41 @@ +# GroupRegistry + +## Example Usage + +```typescript +import { GroupRegistry } from "@alienplatform/platform-api/models"; + +let value: GroupRegistry = { + capability: "models", + enabled: true, + state: "revoked", + deploymentId: "dep_0c29fq4a2yjb7kx3smwdgxlc", + observation: { + provider: "", + platform: "gcp", + resourceId: "", + location: "", + account: "07843950", + observedAt: new Date("2026-07-02T12:17:56.583Z"), + stale: true, + partial: true, + health: "unknown", + lifecycle: null, + message: "", + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `capability` | [models.RegistryCapability](../models/registrycapability.md) | :heavy_check_mark: | N/A | | +| `enabled` | *boolean* | :heavy_check_mark: | N/A | | +| `state` | [models.RegistryState](../models/registrystate.md) | :heavy_check_mark: | N/A | | +| `deploymentId` | *string* | :heavy_check_mark: | Unique identifier for the deployment. | dep_0c29fq4a2yjb7kx3smwdgxlc | +| `observation` | [models.RegistryObservation](../models/registryobservation.md) | :heavy_check_mark: | N/A | | +| `modelCoverage` | [models.RegistryModelCoverage](../models/registrymodelcoverage.md)[] | :heavy_minus_sign: | N/A | | +| `directProvider` | [models.RegistryDirectProvider](../models/registrydirectprovider.md) | :heavy_minus_sign: | N/A | | +| `root` | [models.RegistryRoot](../models/registryroot.md) | :heavy_minus_sign: | N/A | | +| `registry` | [models.GroupRegistryRegistry](../models/groupregistryregistry.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/groupregistryregistry.md b/client-sdks/platform/typescript/docs/models/groupregistryregistry.md new file mode 100644 index 000000000..1050ba11f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/groupregistryregistry.md @@ -0,0 +1,23 @@ +# GroupRegistryRegistry + +## Example Usage + +```typescript +import { GroupRegistryRegistry } from "@alienplatform/platform-api/models"; + +let value: GroupRegistryRegistry = { + repositories: 810010, + credentials: 442281, + credentialPolicy: "mixed", + lastVerifiedAt: new Date("2025-02-24T18:46:47.162Z"), +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | +| `repositories` | *number* | :heavy_check_mark: | N/A | +| `credentials` | *number* | :heavy_check_mark: | N/A | +| `credentialPolicy` | [models.ProjectCapabilityOverviewCredentialPolicy](../models/projectcapabilityoverviewcredentialpolicy.md) | :heavy_check_mark: | N/A | +| `lastVerifiedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/importdeploymentrequest.md b/client-sdks/platform/typescript/docs/models/importdeploymentrequest.md index a15c43511..e506826b2 100644 --- a/client-sdks/platform/typescript/docs/models/importdeploymentrequest.md +++ b/client-sdks/platform/typescript/docs/models/importdeploymentrequest.md @@ -26,7 +26,11 @@ const value: models.ForwardImportRequest = { { id: "", type: "", - importData: {}, + importData: { + "key": "", + "key1": "", + "key2": "", + }, }, ], }, diff --git a/client-sdks/platform/typescript/docs/models/importsource.md b/client-sdks/platform/typescript/docs/models/importsource.md index 83fddd6ad..392277c86 100644 --- a/client-sdks/platform/typescript/docs/models/importsource.md +++ b/client-sdks/platform/typescript/docs/models/importsource.md @@ -22,7 +22,11 @@ let value: ImportSource = { { id: "", type: "", - importData: {}, + importData: { + "key": "", + "key1": "", + "key2": "", + }, }, ], }; diff --git a/client-sdks/platform/typescript/docs/models/importsourcefailuredomains1.md b/client-sdks/platform/typescript/docs/models/importsourcefailuredomains1.md new file mode 100644 index 000000000..b41f76498 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/importsourcefailuredomains1.md @@ -0,0 +1,20 @@ +# ImportSourceFailureDomains1 + +Failure-domain policy selected for a compute pool. + +## Example Usage + +```typescript +import { ImportSourceFailureDomains1 } from "@alienplatform/platform-api/models"; + +let value: ImportSourceFailureDomains1 = { + spread: 679399, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `selectedFailureDomains` | *string*[] | :heavy_minus_sign: | Concrete provider domains selected during setup.
Empty delegates deterministic selection to the provider setup implementation. | +| `spread` | *number* | :heavy_check_mark: | Number of distinct failure domains across which new stateful replicas may be spread. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/importsourcefailuredomains2.md b/client-sdks/platform/typescript/docs/models/importsourcefailuredomains2.md new file mode 100644 index 000000000..069518bdf --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/importsourcefailuredomains2.md @@ -0,0 +1,20 @@ +# ImportSourceFailureDomains2 + +Failure-domain policy selected for a compute pool. + +## Example Usage + +```typescript +import { ImportSourceFailureDomains2 } from "@alienplatform/platform-api/models"; + +let value: ImportSourceFailureDomains2 = { + spread: 888200, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `selectedFailureDomains` | *string*[] | :heavy_minus_sign: | Concrete provider domains selected during setup.
Empty delegates deterministic selection to the provider setup implementation. | +| `spread` | *number* | :heavy_check_mark: | Number of distinct failure domains across which new stateful replicas may be spread. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/importsourcefailuredomainsunion1.md b/client-sdks/platform/typescript/docs/models/importsourcefailuredomainsunion1.md new file mode 100644 index 000000000..5f0347fcb --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/importsourcefailuredomainsunion1.md @@ -0,0 +1,19 @@ +# ImportSourceFailureDomainsUnion1 + + +## Supported Types + +### `models.ImportSourceFailureDomains1` + +```typescript +const value: models.ImportSourceFailureDomains1 = { + spread: 679399, +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/importsourcefailuredomainsunion2.md b/client-sdks/platform/typescript/docs/models/importsourcefailuredomainsunion2.md new file mode 100644 index 000000000..52960a6c6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/importsourcefailuredomainsunion2.md @@ -0,0 +1,19 @@ +# ImportSourceFailureDomainsUnion2 + + +## Supported Types + +### `models.ImportSourceFailureDomains2` + +```typescript +const value: models.ImportSourceFailureDomains2 = { + spread: 888200, +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/importsourcepoolsautoscale.md b/client-sdks/platform/typescript/docs/models/importsourcepoolsautoscale.md index ee2cca309..8d6d8ce57 100644 --- a/client-sdks/platform/typescript/docs/models/importsourcepoolsautoscale.md +++ b/client-sdks/platform/typescript/docs/models/importsourcepoolsautoscale.md @@ -16,6 +16,7 @@ let value: ImportSourcePoolsAutoscale = { | Field | Type | Required | Description | | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | +| `failureDomains` | *models.ImportSourceFailureDomainsUnion2* | :heavy_minus_sign: | N/A | | `machine` | *string* | :heavy_minus_sign: | Provider machine type selected for this deployment. | | `max` | *number* | :heavy_check_mark: | Maximum machine count. | | `min` | *number* | :heavy_check_mark: | Minimum machine count. | diff --git a/client-sdks/platform/typescript/docs/models/importsourcepoolsfixed.md b/client-sdks/platform/typescript/docs/models/importsourcepoolsfixed.md index add5ba478..e2764f745 100644 --- a/client-sdks/platform/typescript/docs/models/importsourcepoolsfixed.md +++ b/client-sdks/platform/typescript/docs/models/importsourcepoolsfixed.md @@ -15,6 +15,7 @@ let value: ImportSourcePoolsFixed = { | Field | Type | Required | Description | | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | +| `failureDomains` | *models.ImportSourceFailureDomainsUnion1* | :heavy_minus_sign: | N/A | | `machine` | *string* | :heavy_minus_sign: | Provider machine type selected for this deployment. | | `machines` | *number* | :heavy_check_mark: | Number of machines to run. | | `mode` | *"fixed"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/inviter.md b/client-sdks/platform/typescript/docs/models/inviter.md new file mode 100644 index 000000000..30ca4fb4f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/inviter.md @@ -0,0 +1,19 @@ +# Inviter + +## Example Usage + +```typescript +import { Inviter } from "@alienplatform/platform-api/models"; + +let value: Inviter = { + name: "", + image: "https://prime-reorganisation.info/", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `name` | *string* | :heavy_check_mark: | N/A | +| `image` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/invokeoperationrequest.md b/client-sdks/platform/typescript/docs/models/invokeoperationrequest.md new file mode 100644 index 000000000..3c445fa25 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/invokeoperationrequest.md @@ -0,0 +1,22 @@ +# InvokeOperationRequest + +## Example Usage + +```typescript +import { InvokeOperationRequest } from "@alienplatform/platform-api/models"; + +let value: InvokeOperationRequest = { + deploymentId: "", + plugin: "", + operation: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | +| `deploymentId` | *string* | :heavy_check_mark: | Deployment to run the operation against. | +| `plugin` | *string* | :heavy_check_mark: | Plugin name. | +| `operation` | *string* | :heavy_check_mark: | Operation name exposed by the plugin. | +| `params` | *any* | :heavy_minus_sign: | JSON params passed to the operation. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/invokeoperationresponse.md b/client-sdks/platform/typescript/docs/models/invokeoperationresponse.md new file mode 100644 index 000000000..a3dfe8101 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/invokeoperationresponse.md @@ -0,0 +1,26 @@ +# InvokeOperationResponse + +## Example Usage + +```typescript +import { InvokeOperationResponse } from "@alienplatform/platform-api/models"; + +let value: InvokeOperationResponse = { + plugin: "", + operation: "", + tier: "read-only", + decision: "manual", + status: "pending-approval", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `plugin` | *string* | :heavy_check_mark: | N/A | +| `operation` | *string* | :heavy_check_mark: | N/A | +| `tier` | [models.InvokeOperationResponseTier](../models/invokeoperationresponsetier.md) | :heavy_check_mark: | The operation's declared risk tier (informational). | +| `decision` | [models.InvokeOperationResponseDecision](../models/invokeoperationresponsedecision.md) | :heavy_check_mark: | The approval decision the policy resolved to. | +| `status` | [models.InvokeOperationResponseStatus](../models/invokeoperationresponsestatus.md) | :heavy_check_mark: | dispatched: auto-approved and running. pending-approval: needs customer sign-off. | +| `commandId` | *string* | :heavy_minus_sign: | The created operation-command id when dispatched (absent when pending). | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/invokeoperationresponsedecision.md b/client-sdks/platform/typescript/docs/models/invokeoperationresponsedecision.md new file mode 100644 index 000000000..6e8138ef4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/invokeoperationresponsedecision.md @@ -0,0 +1,17 @@ +# InvokeOperationResponseDecision + +The approval decision the policy resolved to. + +## Example Usage + +```typescript +import { InvokeOperationResponseDecision } from "@alienplatform/platform-api/models"; + +let value: InvokeOperationResponseDecision = "manual"; +``` + +## Values + +```typescript +"auto" | "manual" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/invokeoperationresponsestatus.md b/client-sdks/platform/typescript/docs/models/invokeoperationresponsestatus.md new file mode 100644 index 000000000..a9e56627e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/invokeoperationresponsestatus.md @@ -0,0 +1,17 @@ +# InvokeOperationResponseStatus + +dispatched: auto-approved and running. pending-approval: needs customer sign-off. + +## Example Usage + +```typescript +import { InvokeOperationResponseStatus } from "@alienplatform/platform-api/models"; + +let value: InvokeOperationResponseStatus = "pending-approval"; +``` + +## Values + +```typescript +"dispatched" | "pending-approval" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/invokeoperationresponsetier.md b/client-sdks/platform/typescript/docs/models/invokeoperationresponsetier.md new file mode 100644 index 000000000..2ae99de5a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/invokeoperationresponsetier.md @@ -0,0 +1,17 @@ +# InvokeOperationResponseTier + +The operation's declared risk tier (informational). + +## Example Usage + +```typescript +import { InvokeOperationResponseTier } from "@alienplatform/platform-api/models"; + +let value: InvokeOperationResponseTier = "mutating"; +``` + +## Values + +```typescript +"read-only" | "mutating" | "destructive" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/keyinfo.md b/client-sdks/platform/typescript/docs/models/keyinfo.md index 9783a0d58..27c779ea9 100644 --- a/client-sdks/platform/typescript/docs/models/keyinfo.md +++ b/client-sdks/platform/typescript/docs/models/keyinfo.md @@ -24,20 +24,20 @@ let value: KeyInfo = { deploymentSetupConfig: { metadata: { "key": "", - "key1": "", - "key2": "", }, policy: { allowedPlatforms: [], - allowedSetupMethods: [], + allowedSetupMethods: [ + "google-oauth", + ], }, environmentVariables: [], items: [ { - item: "models", + item: "keys", source: { type: "built-in", - definitionId: "customer-key", + definitionId: "customer-registry", version: "", sourceReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", }, diff --git a/client-sdks/platform/typescript/docs/models/keysaccesstest.md b/client-sdks/platform/typescript/docs/models/keysaccesstest.md new file mode 100644 index 000000000..91bf3aa2c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/keysaccesstest.md @@ -0,0 +1,15 @@ +# KeysAccessTest + +## Example Usage + +```typescript +import { KeysAccessTest } from "@alienplatform/platform-api/models"; + +let value: KeysAccessTest = "failed"; +``` + +## Values + +```typescript +"verified" | "failed" | "not-checked" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/keysavailability.md b/client-sdks/platform/typescript/docs/models/keysavailability.md new file mode 100644 index 000000000..6f81104bd --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/keysavailability.md @@ -0,0 +1,15 @@ +# KeysAvailability + +## Example Usage + +```typescript +import { KeysAvailability } from "@alienplatform/platform-api/models"; + +let value: KeysAvailability = "available"; +``` + +## Values + +```typescript +"available" | "blocked" | "unknown" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/keyscapability.md b/client-sdks/platform/typescript/docs/models/keyscapability.md new file mode 100644 index 000000000..9a50a88b0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/keyscapability.md @@ -0,0 +1,15 @@ +# KeysCapability + +## Example Usage + +```typescript +import { KeysCapability } from "@alienplatform/platform-api/models"; + +let value: KeysCapability = "keys"; +``` + +## Values + +```typescript +"models" | "keys" | "buckets" | "registry" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/keyscredentialpolicy.md b/client-sdks/platform/typescript/docs/models/keyscredentialpolicy.md new file mode 100644 index 000000000..510a5a7d4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/keyscredentialpolicy.md @@ -0,0 +1,15 @@ +# KeysCredentialPolicy + +## Example Usage + +```typescript +import { KeysCredentialPolicy } from "@alienplatform/platform-api/models"; + +let value: KeysCredentialPolicy = "none"; +``` + +## Values + +```typescript +"pull-only" | "push-and-pull" | "mixed" | "none" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/keysdirectprovider.md b/client-sdks/platform/typescript/docs/models/keysdirectprovider.md new file mode 100644 index 000000000..43b83a5fe --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/keysdirectprovider.md @@ -0,0 +1,25 @@ +# KeysDirectProvider + +## Example Usage + +```typescript +import { KeysDirectProvider } from "@alienplatform/platform-api/models"; + +let value: KeysDirectProvider = { + provider: "databricks", + providerEndpoint: "", + keyFingerprint: "", + availableProviderModelIds: [], + verifiedAt: new Date("2026-05-28T23:54:17.474Z"), +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `provider` | [models.KeysProvider](../models/keysprovider.md) | :heavy_check_mark: | N/A | +| `providerEndpoint` | *string* | :heavy_check_mark: | N/A | +| `keyFingerprint` | *string* | :heavy_check_mark: | N/A | +| `availableProviderModelIds` | *string*[] | :heavy_check_mark: | N/A | +| `verifiedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/keyshealth.md b/client-sdks/platform/typescript/docs/models/keyshealth.md new file mode 100644 index 000000000..8059247e9 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/keyshealth.md @@ -0,0 +1,15 @@ +# KeysHealth + +## Example Usage + +```typescript +import { KeysHealth } from "@alienplatform/platform-api/models"; + +let value: KeysHealth = "unknown"; +``` + +## Values + +```typescript +"unknown" | "healthy" | "degraded" | "unhealthy" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/keysmodelcoverage.md b/client-sdks/platform/typescript/docs/models/keysmodelcoverage.md new file mode 100644 index 000000000..f3f36431b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/keysmodelcoverage.md @@ -0,0 +1,29 @@ +# KeysModelCoverage + +## Example Usage + +```typescript +import { KeysModelCoverage } from "@alienplatform/platform-api/models"; + +let value: KeysModelCoverage = { + publicModelId: "", + required: false, + availability: "available", + blockerCodes: [ + "", + ], + accessTest: "not-checked", + accessObservedAt: new Date("2025-04-20T21:49:17.979Z"), +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `publicModelId` | *string* | :heavy_check_mark: | N/A | +| `required` | *boolean* | :heavy_check_mark: | N/A | +| `availability` | [models.KeysAvailability](../models/keysavailability.md) | :heavy_check_mark: | N/A | +| `blockerCodes` | *string*[] | :heavy_check_mark: | N/A | +| `accessTest` | [models.KeysAccessTest](../models/keysaccesstest.md) | :heavy_check_mark: | N/A | +| `accessObservedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/keysobservation.md b/client-sdks/platform/typescript/docs/models/keysobservation.md new file mode 100644 index 000000000..9f70fb235 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/keysobservation.md @@ -0,0 +1,37 @@ +# KeysObservation + +## Example Usage + +```typescript +import { KeysObservation } from "@alienplatform/platform-api/models"; + +let value: KeysObservation = { + provider: "", + platform: "local", + resourceId: null, + location: "", + account: "57762991", + observedAt: new Date("2026-01-27T12:25:21.826Z"), + stale: true, + partial: true, + health: "degraded", + lifecycle: "", + message: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `provider` | *string* | :heavy_check_mark: | N/A | +| `platform` | [models.KeysPlatform](../models/keysplatform.md) | :heavy_check_mark: | N/A | +| `resourceId` | *string* | :heavy_check_mark: | N/A | +| `location` | *string* | :heavy_check_mark: | N/A | +| `account` | *string* | :heavy_check_mark: | N/A | +| `observedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | +| `stale` | *boolean* | :heavy_check_mark: | N/A | +| `partial` | *boolean* | :heavy_check_mark: | N/A | +| `health` | [models.KeysHealth](../models/keyshealth.md) | :heavy_check_mark: | N/A | +| `lifecycle` | *string* | :heavy_check_mark: | N/A | +| `message` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/keysplatform.md b/client-sdks/platform/typescript/docs/models/keysplatform.md new file mode 100644 index 000000000..78f3224a0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/keysplatform.md @@ -0,0 +1,15 @@ +# KeysPlatform + +## Example Usage + +```typescript +import { KeysPlatform } from "@alienplatform/platform-api/models"; + +let value: KeysPlatform = "gcp"; +``` + +## Values + +```typescript +"aws" | "gcp" | "azure" | "local" | "kubernetes" | "machines" | "test" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/keysprovider.md b/client-sdks/platform/typescript/docs/models/keysprovider.md new file mode 100644 index 000000000..c25368632 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/keysprovider.md @@ -0,0 +1,15 @@ +# KeysProvider + +## Example Usage + +```typescript +import { KeysProvider } from "@alienplatform/platform-api/models"; + +let value: KeysProvider = "openai"; +``` + +## Values + +```typescript +"anthropic" | "databricks" | "openai" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/keysregistry.md b/client-sdks/platform/typescript/docs/models/keysregistry.md new file mode 100644 index 000000000..980f608b2 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/keysregistry.md @@ -0,0 +1,23 @@ +# KeysRegistry + +## Example Usage + +```typescript +import { KeysRegistry } from "@alienplatform/platform-api/models"; + +let value: KeysRegistry = { + repositories: 228767, + credentials: 91556, + credentialPolicy: "mixed", + lastVerifiedAt: new Date("2024-06-04T15:08:03.591Z"), +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `repositories` | *number* | :heavy_check_mark: | N/A | +| `credentials` | *number* | :heavy_check_mark: | N/A | +| `credentialPolicy` | [models.KeysCredentialPolicy](../models/keyscredentialpolicy.md) | :heavy_check_mark: | N/A | +| `lastVerifiedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/keysroot.md b/client-sdks/platform/typescript/docs/models/keysroot.md new file mode 100644 index 000000000..d4667d550 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/keysroot.md @@ -0,0 +1,19 @@ +# KeysRoot + +## Example Usage + +```typescript +import { KeysRoot } from "@alienplatform/platform-api/models"; + +let value: KeysRoot = { + state: "pending", + createdAt: new Date("2026-10-19T21:17:24.238Z"), +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `state` | [models.KeysRootState](../models/keysrootstate.md) | :heavy_check_mark: | N/A | +| `createdAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/keysrootstate.md b/client-sdks/platform/typescript/docs/models/keysrootstate.md new file mode 100644 index 000000000..288ce94f7 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/keysrootstate.md @@ -0,0 +1,15 @@ +# KeysRootState + +## Example Usage + +```typescript +import { KeysRootState } from "@alienplatform/platform-api/models"; + +let value: KeysRootState = "pending"; +``` + +## Values + +```typescript +"pending" | "ready" | "revoked" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/keysstate.md b/client-sdks/platform/typescript/docs/models/keysstate.md new file mode 100644 index 000000000..c42ce0fc4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/keysstate.md @@ -0,0 +1,15 @@ +# KeysState + +## Example Usage + +```typescript +import { KeysState } from "@alienplatform/platform-api/models"; + +let value: KeysState = "not-connected"; +``` + +## Values + +```typescript +"not-connected" | "setting-up" | "connected" | "needs-attention" | "revoked" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/listoperationspluginsresponse.md b/client-sdks/platform/typescript/docs/models/listoperationspluginsresponse.md new file mode 100644 index 000000000..052381453 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/listoperationspluginsresponse.md @@ -0,0 +1,17 @@ +# ListOperationsPluginsResponse + +## Example Usage + +```typescript +import { ListOperationsPluginsResponse } from "@alienplatform/platform-api/models"; + +let value: ListOperationsPluginsResponse = { + plugins: [], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | +| `plugins` | [models.OperationsPlugin](../models/operationsplugin.md)[] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/managerretryresponse.md b/client-sdks/platform/typescript/docs/models/managerretryresponse.md index 385fbec33..12a55e644 100644 --- a/client-sdks/platform/typescript/docs/models/managerretryresponse.md +++ b/client-sdks/platform/typescript/docs/models/managerretryresponse.md @@ -20,13 +20,15 @@ const value: models.ManagerRetryResponseSetup = { }, policy: { allowedPlatforms: [], - allowedSetupMethods: [], + allowedSetupMethods: [ + "google-oauth", + ], }, items: [ { - item: "alien-stack", + item: "deployment", source: { - type: "application-release", + type: "project-release", releaseChannel: "", releaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", }, diff --git a/client-sdks/platform/typescript/docs/models/managerretryresponseallowedprovider.md b/client-sdks/platform/typescript/docs/models/managerretryresponseallowedprovider.md index c4513969f..ea065bf6a 100644 --- a/client-sdks/platform/typescript/docs/models/managerretryresponseallowedprovider.md +++ b/client-sdks/platform/typescript/docs/models/managerretryresponseallowedprovider.md @@ -11,5 +11,5 @@ let value: ManagerRetryResponseAllowedProvider = "gcp-vertex"; ## Values ```typescript -"aws-bedrock" | "gcp-vertex" | "azure-foundry" | "anthropic" +"aws-bedrock" | "gcp-vertex" | "azure-foundry" | "anthropic" | "databricks" | "openai" ``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/managerretryresponsedefinitionid.md b/client-sdks/platform/typescript/docs/models/managerretryresponsedefinitionid.md index 3ba6e04cd..04f51f2cc 100644 --- a/client-sdks/platform/typescript/docs/models/managerretryresponsedefinitionid.md +++ b/client-sdks/platform/typescript/docs/models/managerretryresponsedefinitionid.md @@ -5,11 +5,11 @@ ```typescript import { ManagerRetryResponseDefinitionId } from "@alienplatform/platform-api/models"; -let value: ManagerRetryResponseDefinitionId = "customer-key"; +let value: ManagerRetryResponseDefinitionId = "customer-storage"; ``` ## Values ```typescript -"customer-ai" | "customer-key" +"customer-ai" | "customer-key" | "customer-storage" | "customer-registry" ``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/managerretryresponsefailuredomains1.md b/client-sdks/platform/typescript/docs/models/managerretryresponsefailuredomains1.md new file mode 100644 index 000000000..d4fa8204a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/managerretryresponsefailuredomains1.md @@ -0,0 +1,20 @@ +# ManagerRetryResponseFailureDomains1 + +Failure-domain policy selected for a compute pool. + +## Example Usage + +```typescript +import { ManagerRetryResponseFailureDomains1 } from "@alienplatform/platform-api/models"; + +let value: ManagerRetryResponseFailureDomains1 = { + spread: 95775, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `selectedFailureDomains` | *string*[] | :heavy_minus_sign: | Concrete provider domains selected during setup.
Empty delegates deterministic selection to the provider setup implementation. | +| `spread` | *number* | :heavy_check_mark: | Number of distinct failure domains across which new stateful replicas may be spread. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/managerretryresponsefailuredomains2.md b/client-sdks/platform/typescript/docs/models/managerretryresponsefailuredomains2.md new file mode 100644 index 000000000..779ff4d67 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/managerretryresponsefailuredomains2.md @@ -0,0 +1,20 @@ +# ManagerRetryResponseFailureDomains2 + +Failure-domain policy selected for a compute pool. + +## Example Usage + +```typescript +import { ManagerRetryResponseFailureDomains2 } from "@alienplatform/platform-api/models"; + +let value: ManagerRetryResponseFailureDomains2 = { + spread: 982587, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `selectedFailureDomains` | *string*[] | :heavy_minus_sign: | Concrete provider domains selected during setup.
Empty delegates deterministic selection to the provider setup implementation. | +| `spread` | *number* | :heavy_check_mark: | Number of distinct failure domains across which new stateful replicas may be spread. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/managerretryresponsefailuredomains3.md b/client-sdks/platform/typescript/docs/models/managerretryresponsefailuredomains3.md new file mode 100644 index 000000000..beb5e9262 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/managerretryresponsefailuredomains3.md @@ -0,0 +1,20 @@ +# ManagerRetryResponseFailureDomains3 + +Failure-domain policy selected for a compute pool. + +## Example Usage + +```typescript +import { ManagerRetryResponseFailureDomains3 } from "@alienplatform/platform-api/models"; + +let value: ManagerRetryResponseFailureDomains3 = { + spread: 62272, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `selectedFailureDomains` | *string*[] | :heavy_minus_sign: | Concrete provider domains selected during setup.
Empty delegates deterministic selection to the provider setup implementation. | +| `spread` | *number* | :heavy_check_mark: | Number of distinct failure domains across which new stateful replicas may be spread. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/managerretryresponsefailuredomains4.md b/client-sdks/platform/typescript/docs/models/managerretryresponsefailuredomains4.md new file mode 100644 index 000000000..ba10d5799 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/managerretryresponsefailuredomains4.md @@ -0,0 +1,20 @@ +# ManagerRetryResponseFailureDomains4 + +Failure-domain policy selected for a compute pool. + +## Example Usage + +```typescript +import { ManagerRetryResponseFailureDomains4 } from "@alienplatform/platform-api/models"; + +let value: ManagerRetryResponseFailureDomains4 = { + spread: 794975, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `selectedFailureDomains` | *string*[] | :heavy_minus_sign: | Concrete provider domains selected during setup.
Empty delegates deterministic selection to the provider setup implementation. | +| `spread` | *number* | :heavy_check_mark: | Number of distinct failure domains across which new stateful replicas may be spread. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/managerretryresponsefailuredomains5.md b/client-sdks/platform/typescript/docs/models/managerretryresponsefailuredomains5.md new file mode 100644 index 000000000..13f1e2784 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/managerretryresponsefailuredomains5.md @@ -0,0 +1,20 @@ +# ManagerRetryResponseFailureDomains5 + +Failure-domain policy selected for a compute pool. + +## Example Usage + +```typescript +import { ManagerRetryResponseFailureDomains5 } from "@alienplatform/platform-api/models"; + +let value: ManagerRetryResponseFailureDomains5 = { + spread: 179689, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `selectedFailureDomains` | *string*[] | :heavy_minus_sign: | Concrete provider domains selected during setup.
Empty delegates deterministic selection to the provider setup implementation. | +| `spread` | *number* | :heavy_check_mark: | Number of distinct failure domains across which new stateful replicas may be spread. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/managerretryresponsefailuredomains6.md b/client-sdks/platform/typescript/docs/models/managerretryresponsefailuredomains6.md new file mode 100644 index 000000000..f69ea324b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/managerretryresponsefailuredomains6.md @@ -0,0 +1,20 @@ +# ManagerRetryResponseFailureDomains6 + +Failure-domain policy selected for a compute pool. + +## Example Usage + +```typescript +import { ManagerRetryResponseFailureDomains6 } from "@alienplatform/platform-api/models"; + +let value: ManagerRetryResponseFailureDomains6 = { + spread: 821053, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `selectedFailureDomains` | *string*[] | :heavy_minus_sign: | Concrete provider domains selected during setup.
Empty delegates deterministic selection to the provider setup implementation. | +| `spread` | *number* | :heavy_check_mark: | Number of distinct failure domains across which new stateful replicas may be spread. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/managerretryresponsefailuredomainsunion1.md b/client-sdks/platform/typescript/docs/models/managerretryresponsefailuredomainsunion1.md new file mode 100644 index 000000000..c419eda35 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/managerretryresponsefailuredomainsunion1.md @@ -0,0 +1,19 @@ +# ManagerRetryResponseFailureDomainsUnion1 + + +## Supported Types + +### `models.ManagerRetryResponseFailureDomains1` + +```typescript +const value: models.ManagerRetryResponseFailureDomains1 = { + spread: 95775, +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/managerretryresponsefailuredomainsunion2.md b/client-sdks/platform/typescript/docs/models/managerretryresponsefailuredomainsunion2.md new file mode 100644 index 000000000..4b580ed91 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/managerretryresponsefailuredomainsunion2.md @@ -0,0 +1,19 @@ +# ManagerRetryResponseFailureDomainsUnion2 + + +## Supported Types + +### `models.ManagerRetryResponseFailureDomains2` + +```typescript +const value: models.ManagerRetryResponseFailureDomains2 = { + spread: 982587, +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/managerretryresponsefailuredomainsunion3.md b/client-sdks/platform/typescript/docs/models/managerretryresponsefailuredomainsunion3.md new file mode 100644 index 000000000..d96d1e22e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/managerretryresponsefailuredomainsunion3.md @@ -0,0 +1,19 @@ +# ManagerRetryResponseFailureDomainsUnion3 + + +## Supported Types + +### `models.ManagerRetryResponseFailureDomains3` + +```typescript +const value: models.ManagerRetryResponseFailureDomains3 = { + spread: 62272, +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/managerretryresponsefailuredomainsunion4.md b/client-sdks/platform/typescript/docs/models/managerretryresponsefailuredomainsunion4.md new file mode 100644 index 000000000..136d024a9 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/managerretryresponsefailuredomainsunion4.md @@ -0,0 +1,19 @@ +# ManagerRetryResponseFailureDomainsUnion4 + + +## Supported Types + +### `models.ManagerRetryResponseFailureDomains4` + +```typescript +const value: models.ManagerRetryResponseFailureDomains4 = { + spread: 794975, +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/managerretryresponsefailuredomainsunion5.md b/client-sdks/platform/typescript/docs/models/managerretryresponsefailuredomainsunion5.md new file mode 100644 index 000000000..82fdd418d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/managerretryresponsefailuredomainsunion5.md @@ -0,0 +1,19 @@ +# ManagerRetryResponseFailureDomainsUnion5 + + +## Supported Types + +### `models.ManagerRetryResponseFailureDomains5` + +```typescript +const value: models.ManagerRetryResponseFailureDomains5 = { + spread: 179689, +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/managerretryresponsefailuredomainsunion6.md b/client-sdks/platform/typescript/docs/models/managerretryresponsefailuredomainsunion6.md new file mode 100644 index 000000000..129de7c36 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/managerretryresponsefailuredomainsunion6.md @@ -0,0 +1,19 @@ +# ManagerRetryResponseFailureDomainsUnion6 + + +## Supported Types + +### `models.ManagerRetryResponseFailureDomains6` + +```typescript +const value: models.ManagerRetryResponseFailureDomains6 = { + spread: 821053, +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/managerretryresponseitem.md b/client-sdks/platform/typescript/docs/models/managerretryresponseitem.md index 37ea7ce8f..59d9fa1fd 100644 --- a/client-sdks/platform/typescript/docs/models/managerretryresponseitem.md +++ b/client-sdks/platform/typescript/docs/models/managerretryresponseitem.md @@ -6,9 +6,9 @@ import { ManagerRetryResponseItem } from "@alienplatform/platform-api/models"; let value: ManagerRetryResponseItem = { - item: "alien-stack", + item: "models", source: { - type: "application-release", + type: "project-release", releaseChannel: "", releaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", }, diff --git a/client-sdks/platform/typescript/docs/models/managerretryresponseitemenum.md b/client-sdks/platform/typescript/docs/models/managerretryresponseitemenum.md index 311fbf518..3c458def4 100644 --- a/client-sdks/platform/typescript/docs/models/managerretryresponseitemenum.md +++ b/client-sdks/platform/typescript/docs/models/managerretryresponseitemenum.md @@ -5,11 +5,11 @@ ```typescript import { ManagerRetryResponseItemEnum } from "@alienplatform/platform-api/models"; -let value: ManagerRetryResponseItemEnum = "alien-stack"; +let value: ManagerRetryResponseItemEnum = "deployment"; ``` ## Values ```typescript -"alien-stack" | "models" | "keys" +"deployment" | "models" | "keys" | "bucket" | "registry" ``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/managerretryresponsepoolsautoscale1.md b/client-sdks/platform/typescript/docs/models/managerretryresponsepoolsautoscale1.md index c432650a9..07c80b4e6 100644 --- a/client-sdks/platform/typescript/docs/models/managerretryresponsepoolsautoscale1.md +++ b/client-sdks/platform/typescript/docs/models/managerretryresponsepoolsautoscale1.md @@ -16,6 +16,7 @@ let value: ManagerRetryResponsePoolsAutoscale1 = { | Field | Type | Required | Description | | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | +| `failureDomains` | *models.ManagerRetryResponseFailureDomainsUnion2* | :heavy_minus_sign: | N/A | | `machine` | *string* | :heavy_minus_sign: | Provider machine type selected for this deployment. | | `max` | *number* | :heavy_check_mark: | Maximum machine count. | | `min` | *number* | :heavy_check_mark: | Minimum machine count. | diff --git a/client-sdks/platform/typescript/docs/models/managerretryresponsepoolsautoscale2.md b/client-sdks/platform/typescript/docs/models/managerretryresponsepoolsautoscale2.md index bd9625b80..ff57d5c4b 100644 --- a/client-sdks/platform/typescript/docs/models/managerretryresponsepoolsautoscale2.md +++ b/client-sdks/platform/typescript/docs/models/managerretryresponsepoolsautoscale2.md @@ -16,6 +16,7 @@ let value: ManagerRetryResponsePoolsAutoscale2 = { | Field | Type | Required | Description | | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | +| `failureDomains` | *models.ManagerRetryResponseFailureDomainsUnion4* | :heavy_minus_sign: | N/A | | `machine` | *string* | :heavy_minus_sign: | Provider machine type selected for this deployment. | | `max` | *number* | :heavy_check_mark: | Maximum machine count. | | `min` | *number* | :heavy_check_mark: | Minimum machine count. | diff --git a/client-sdks/platform/typescript/docs/models/managerretryresponsepoolsautoscale3.md b/client-sdks/platform/typescript/docs/models/managerretryresponsepoolsautoscale3.md index 3d044fa2c..7744c72ca 100644 --- a/client-sdks/platform/typescript/docs/models/managerretryresponsepoolsautoscale3.md +++ b/client-sdks/platform/typescript/docs/models/managerretryresponsepoolsautoscale3.md @@ -16,6 +16,7 @@ let value: ManagerRetryResponsePoolsAutoscale3 = { | Field | Type | Required | Description | | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | +| `failureDomains` | *models.ManagerRetryResponseFailureDomainsUnion6* | :heavy_minus_sign: | N/A | | `machine` | *string* | :heavy_minus_sign: | Provider machine type selected for this deployment. | | `max` | *number* | :heavy_check_mark: | Maximum machine count. | | `min` | *number* | :heavy_check_mark: | Minimum machine count. | diff --git a/client-sdks/platform/typescript/docs/models/managerretryresponsepoolsfixed1.md b/client-sdks/platform/typescript/docs/models/managerretryresponsepoolsfixed1.md index c76493d07..757191d58 100644 --- a/client-sdks/platform/typescript/docs/models/managerretryresponsepoolsfixed1.md +++ b/client-sdks/platform/typescript/docs/models/managerretryresponsepoolsfixed1.md @@ -15,6 +15,7 @@ let value: ManagerRetryResponsePoolsFixed1 = { | Field | Type | Required | Description | | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | +| `failureDomains` | *models.ManagerRetryResponseFailureDomainsUnion1* | :heavy_minus_sign: | N/A | | `machine` | *string* | :heavy_minus_sign: | Provider machine type selected for this deployment. | | `machines` | *number* | :heavy_check_mark: | Number of machines to run. | | `mode` | *"fixed"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/managerretryresponsepoolsfixed2.md b/client-sdks/platform/typescript/docs/models/managerretryresponsepoolsfixed2.md index 747038f90..ba265fcad 100644 --- a/client-sdks/platform/typescript/docs/models/managerretryresponsepoolsfixed2.md +++ b/client-sdks/platform/typescript/docs/models/managerretryresponsepoolsfixed2.md @@ -15,6 +15,7 @@ let value: ManagerRetryResponsePoolsFixed2 = { | Field | Type | Required | Description | | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | +| `failureDomains` | *models.ManagerRetryResponseFailureDomainsUnion3* | :heavy_minus_sign: | N/A | | `machine` | *string* | :heavy_minus_sign: | Provider machine type selected for this deployment. | | `machines` | *number* | :heavy_check_mark: | Number of machines to run. | | `mode` | *"fixed"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/managerretryresponsepoolsfixed3.md b/client-sdks/platform/typescript/docs/models/managerretryresponsepoolsfixed3.md index b6f323ea6..80dd41683 100644 --- a/client-sdks/platform/typescript/docs/models/managerretryresponsepoolsfixed3.md +++ b/client-sdks/platform/typescript/docs/models/managerretryresponsepoolsfixed3.md @@ -15,6 +15,7 @@ let value: ManagerRetryResponsePoolsFixed3 = { | Field | Type | Required | Description | | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | +| `failureDomains` | *models.ManagerRetryResponseFailureDomainsUnion5* | :heavy_minus_sign: | N/A | | `machine` | *string* | :heavy_minus_sign: | Provider machine type selected for this deployment. | | `machines` | *number* | :heavy_check_mark: | Number of machines to run. | | `mode` | *"fixed"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/managerretryresponsesetup.md b/client-sdks/platform/typescript/docs/models/managerretryresponsesetup.md index f4454c760..9d64409bc 100644 --- a/client-sdks/platform/typescript/docs/models/managerretryresponsesetup.md +++ b/client-sdks/platform/typescript/docs/models/managerretryresponsesetup.md @@ -19,13 +19,15 @@ let value: ManagerRetryResponseSetup = { }, policy: { allowedPlatforms: [], - allowedSetupMethods: [], + allowedSetupMethods: [ + "google-oauth", + ], }, items: [ { - item: "alien-stack", + item: "deployment", source: { - type: "application-release", + type: "project-release", releaseChannel: "", releaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", }, diff --git a/client-sdks/platform/typescript/docs/models/managerretryresponsesetupconfig.md b/client-sdks/platform/typescript/docs/models/managerretryresponsesetupconfig.md index 9a0bba798..2b4cdb606 100644 --- a/client-sdks/platform/typescript/docs/models/managerretryresponsesetupconfig.md +++ b/client-sdks/platform/typescript/docs/models/managerretryresponsesetupconfig.md @@ -12,13 +12,15 @@ let value: ManagerRetryResponseSetupConfig = { }, policy: { allowedPlatforms: [], - allowedSetupMethods: [], + allowedSetupMethods: [ + "google-oauth", + ], }, items: [ { - item: "alien-stack", + item: "deployment", source: { - type: "application-release", + type: "project-release", releaseChannel: "", releaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", }, diff --git a/client-sdks/platform/typescript/docs/models/managerretryresponsesourceapplicationrelease.md b/client-sdks/platform/typescript/docs/models/managerretryresponsesourceapplicationrelease.md deleted file mode 100644 index c9cb009ec..000000000 --- a/client-sdks/platform/typescript/docs/models/managerretryresponsesourceapplicationrelease.md +++ /dev/null @@ -1,22 +0,0 @@ -# ManagerRetryResponseSourceApplicationRelease - -## Example Usage - -```typescript -import { ManagerRetryResponseSourceApplicationRelease } from "@alienplatform/platform-api/models"; - -let value: ManagerRetryResponseSourceApplicationRelease = { - type: "application-release", - releaseChannel: "", - releaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", -}; -``` - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | -| `type` | *"application-release"* | :heavy_check_mark: | N/A | | -| `releaseChannel` | *string* | :heavy_check_mark: | N/A | | -| `releaseId` | *string* | :heavy_check_mark: | Unique identifier for the release. | rel_WbhQgksrawSKIpEN0NAssHX9 | -| `resourceId` | *string* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/managerretryresponsesourcebuiltin.md b/client-sdks/platform/typescript/docs/models/managerretryresponsesourcebuiltin.md index dd8aa2815..2e4c66304 100644 --- a/client-sdks/platform/typescript/docs/models/managerretryresponsesourcebuiltin.md +++ b/client-sdks/platform/typescript/docs/models/managerretryresponsesourcebuiltin.md @@ -7,7 +7,7 @@ import { ManagerRetryResponseSourceBuiltIn } from "@alienplatform/platform-api/m let value: ManagerRetryResponseSourceBuiltIn = { type: "built-in", - definitionId: "customer-key", + definitionId: "customer-storage", version: "", sourceReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", }; diff --git a/client-sdks/platform/typescript/docs/models/managerretryresponsesourceprojectrelease.md b/client-sdks/platform/typescript/docs/models/managerretryresponsesourceprojectrelease.md new file mode 100644 index 000000000..157741ce4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/managerretryresponsesourceprojectrelease.md @@ -0,0 +1,22 @@ +# ManagerRetryResponseSourceProjectRelease + +## Example Usage + +```typescript +import { ManagerRetryResponseSourceProjectRelease } from "@alienplatform/platform-api/models"; + +let value: ManagerRetryResponseSourceProjectRelease = { + type: "project-release", + releaseChannel: "", + releaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | +| `type` | *"project-release"* | :heavy_check_mark: | N/A | | +| `releaseChannel` | *string* | :heavy_check_mark: | N/A | | +| `releaseId` | *string* | :heavy_check_mark: | Unique identifier for the release. | rel_WbhQgksrawSKIpEN0NAssHX9 | +| `resourceId` | *string* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/managerretryresponsesourceunion.md b/client-sdks/platform/typescript/docs/models/managerretryresponsesourceunion.md index 2c00e20cc..ecf51d7eb 100644 --- a/client-sdks/platform/typescript/docs/models/managerretryresponsesourceunion.md +++ b/client-sdks/platform/typescript/docs/models/managerretryresponsesourceunion.md @@ -3,11 +3,11 @@ ## Supported Types -### `models.ManagerRetryResponseSourceApplicationRelease` +### `models.ManagerRetryResponseSourceProjectRelease` ```typescript -const value: models.ManagerRetryResponseSourceApplicationRelease = { - type: "application-release", +const value: models.ManagerRetryResponseSourceProjectRelease = { + type: "project-release", releaseChannel: "", releaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", }; @@ -18,7 +18,7 @@ const value: models.ManagerRetryResponseSourceApplicationRelease = { ```typescript const value: models.ManagerRetryResponseSourceBuiltIn = { type: "built-in", - definitionId: "customer-key", + definitionId: "customer-storage", version: "", sourceReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", }; diff --git a/client-sdks/platform/typescript/docs/models/modelavailabilitysource.md b/client-sdks/platform/typescript/docs/models/modelavailabilitysource.md new file mode 100644 index 000000000..2663725bb --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/modelavailabilitysource.md @@ -0,0 +1,24 @@ +# ModelAvailabilitySource + +## Example Usage + +```typescript +import { ModelAvailabilitySource } from "@alienplatform/platform-api/models"; + +let value: ModelAvailabilitySource = { + deploymentId: "", + resourceId: "", + observedAt: new Date("2026-12-30T11:30:38.604Z"), + status: "current", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `deploymentId` | *string* | :heavy_check_mark: | N/A | +| `resourceId` | *string* | :heavy_check_mark: | N/A | +| `observedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | +| `status` | [models.ModelAvailabilitySourceStatus](../models/modelavailabilitysourcestatus.md) | :heavy_check_mark: | N/A | +| `availability` | [models.DeploymentInfoAvailability](../models/deploymentinfoavailability.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/modelavailabilitysourcestatus.md b/client-sdks/platform/typescript/docs/models/modelavailabilitysourcestatus.md new file mode 100644 index 000000000..8b96035ef --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/modelavailabilitysourcestatus.md @@ -0,0 +1,15 @@ +# ModelAvailabilitySourceStatus + +## Example Usage + +```typescript +import { ModelAvailabilitySourceStatus } from "@alienplatform/platform-api/models"; + +let value: ModelAvailabilitySourceStatus = "current"; +``` + +## Values + +```typescript +"current" | "stale" | "invalid" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/modelsaccesstest.md b/client-sdks/platform/typescript/docs/models/modelsaccesstest.md new file mode 100644 index 000000000..9b2c268ba --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/modelsaccesstest.md @@ -0,0 +1,15 @@ +# ModelsAccessTest + +## Example Usage + +```typescript +import { ModelsAccessTest } from "@alienplatform/platform-api/models"; + +let value: ModelsAccessTest = "verified"; +``` + +## Values + +```typescript +"verified" | "failed" | "not-checked" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/modelsavailability.md b/client-sdks/platform/typescript/docs/models/modelsavailability.md new file mode 100644 index 000000000..9e3ff3e38 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/modelsavailability.md @@ -0,0 +1,15 @@ +# ModelsAvailability + +## Example Usage + +```typescript +import { ModelsAvailability } from "@alienplatform/platform-api/models"; + +let value: ModelsAvailability = "unknown"; +``` + +## Values + +```typescript +"available" | "blocked" | "unknown" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/modelscapability.md b/client-sdks/platform/typescript/docs/models/modelscapability.md new file mode 100644 index 000000000..e583f979b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/modelscapability.md @@ -0,0 +1,15 @@ +# ModelsCapability + +## Example Usage + +```typescript +import { ModelsCapability } from "@alienplatform/platform-api/models"; + +let value: ModelsCapability = "keys"; +``` + +## Values + +```typescript +"models" | "keys" | "buckets" | "registry" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/modelscredentialpolicy.md b/client-sdks/platform/typescript/docs/models/modelscredentialpolicy.md new file mode 100644 index 000000000..08ffb3a2c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/modelscredentialpolicy.md @@ -0,0 +1,15 @@ +# ModelsCredentialPolicy + +## Example Usage + +```typescript +import { ModelsCredentialPolicy } from "@alienplatform/platform-api/models"; + +let value: ModelsCredentialPolicy = "pull-only"; +``` + +## Values + +```typescript +"pull-only" | "push-and-pull" | "mixed" | "none" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/modelsdirectprovider.md b/client-sdks/platform/typescript/docs/models/modelsdirectprovider.md new file mode 100644 index 000000000..e46dad7c2 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/modelsdirectprovider.md @@ -0,0 +1,27 @@ +# ModelsDirectProvider + +## Example Usage + +```typescript +import { ModelsDirectProvider } from "@alienplatform/platform-api/models"; + +let value: ModelsDirectProvider = { + provider: "databricks", + providerEndpoint: "", + keyFingerprint: "", + availableProviderModelIds: [ + "", + ], + verifiedAt: new Date("2026-05-21T19:55:41.464Z"), +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `provider` | [models.ModelsProvider](../models/modelsprovider.md) | :heavy_check_mark: | N/A | +| `providerEndpoint` | *string* | :heavy_check_mark: | N/A | +| `keyFingerprint` | *string* | :heavy_check_mark: | N/A | +| `availableProviderModelIds` | *string*[] | :heavy_check_mark: | N/A | +| `verifiedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/modelshealth.md b/client-sdks/platform/typescript/docs/models/modelshealth.md new file mode 100644 index 000000000..f2037d8cf --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/modelshealth.md @@ -0,0 +1,15 @@ +# ModelsHealth + +## Example Usage + +```typescript +import { ModelsHealth } from "@alienplatform/platform-api/models"; + +let value: ModelsHealth = "degraded"; +``` + +## Values + +```typescript +"unknown" | "healthy" | "degraded" | "unhealthy" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/modelsmodelcoverage.md b/client-sdks/platform/typescript/docs/models/modelsmodelcoverage.md new file mode 100644 index 000000000..a0f9b3462 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/modelsmodelcoverage.md @@ -0,0 +1,30 @@ +# ModelsModelCoverage + +## Example Usage + +```typescript +import { ModelsModelCoverage } from "@alienplatform/platform-api/models"; + +let value: ModelsModelCoverage = { + publicModelId: "", + required: false, + availability: "available", + blockerCodes: [ + "", + "", + ], + accessTest: "verified", + accessObservedAt: null, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `publicModelId` | *string* | :heavy_check_mark: | N/A | +| `required` | *boolean* | :heavy_check_mark: | N/A | +| `availability` | [models.ModelsAvailability](../models/modelsavailability.md) | :heavy_check_mark: | N/A | +| `blockerCodes` | *string*[] | :heavy_check_mark: | N/A | +| `accessTest` | [models.ModelsAccessTest](../models/modelsaccesstest.md) | :heavy_check_mark: | N/A | +| `accessObservedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/modelsobservation.md b/client-sdks/platform/typescript/docs/models/modelsobservation.md new file mode 100644 index 000000000..5857087d7 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/modelsobservation.md @@ -0,0 +1,37 @@ +# ModelsObservation + +## Example Usage + +```typescript +import { ModelsObservation } from "@alienplatform/platform-api/models"; + +let value: ModelsObservation = { + provider: "", + platform: "local", + resourceId: "", + location: "", + account: "68402707", + observedAt: new Date("2024-06-18T15:02:40.918Z"), + stale: true, + partial: false, + health: null, + lifecycle: "", + message: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `provider` | *string* | :heavy_check_mark: | N/A | +| `platform` | [models.ModelsPlatform](../models/modelsplatform.md) | :heavy_check_mark: | N/A | +| `resourceId` | *string* | :heavy_check_mark: | N/A | +| `location` | *string* | :heavy_check_mark: | N/A | +| `account` | *string* | :heavy_check_mark: | N/A | +| `observedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | +| `stale` | *boolean* | :heavy_check_mark: | N/A | +| `partial` | *boolean* | :heavy_check_mark: | N/A | +| `health` | [models.ModelsHealth](../models/modelshealth.md) | :heavy_check_mark: | N/A | +| `lifecycle` | *string* | :heavy_check_mark: | N/A | +| `message` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/modelsplatform.md b/client-sdks/platform/typescript/docs/models/modelsplatform.md new file mode 100644 index 000000000..dad59b4c4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/modelsplatform.md @@ -0,0 +1,15 @@ +# ModelsPlatform + +## Example Usage + +```typescript +import { ModelsPlatform } from "@alienplatform/platform-api/models"; + +let value: ModelsPlatform = "azure"; +``` + +## Values + +```typescript +"aws" | "gcp" | "azure" | "local" | "kubernetes" | "machines" | "test" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/modelsprovider.md b/client-sdks/platform/typescript/docs/models/modelsprovider.md new file mode 100644 index 000000000..eb5c488cb --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/modelsprovider.md @@ -0,0 +1,15 @@ +# ModelsProvider + +## Example Usage + +```typescript +import { ModelsProvider } from "@alienplatform/platform-api/models"; + +let value: ModelsProvider = "openai"; +``` + +## Values + +```typescript +"anthropic" | "databricks" | "openai" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/modelsregistry.md b/client-sdks/platform/typescript/docs/models/modelsregistry.md new file mode 100644 index 000000000..43d8ee59b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/modelsregistry.md @@ -0,0 +1,23 @@ +# ModelsRegistry + +## Example Usage + +```typescript +import { ModelsRegistry } from "@alienplatform/platform-api/models"; + +let value: ModelsRegistry = { + repositories: 921431, + credentials: 717893, + credentialPolicy: "pull-only", + lastVerifiedAt: new Date("2026-09-11T20:57:03.415Z"), +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `repositories` | *number* | :heavy_check_mark: | N/A | +| `credentials` | *number* | :heavy_check_mark: | N/A | +| `credentialPolicy` | [models.ModelsCredentialPolicy](../models/modelscredentialpolicy.md) | :heavy_check_mark: | N/A | +| `lastVerifiedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/modelsroot.md b/client-sdks/platform/typescript/docs/models/modelsroot.md new file mode 100644 index 000000000..5c12c7d5d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/modelsroot.md @@ -0,0 +1,19 @@ +# ModelsRoot + +## Example Usage + +```typescript +import { ModelsRoot } from "@alienplatform/platform-api/models"; + +let value: ModelsRoot = { + state: "revoked", + createdAt: null, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `state` | [models.ModelsRootState](../models/modelsrootstate.md) | :heavy_check_mark: | N/A | +| `createdAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/modelsrootstate.md b/client-sdks/platform/typescript/docs/models/modelsrootstate.md new file mode 100644 index 000000000..363be547e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/modelsrootstate.md @@ -0,0 +1,15 @@ +# ModelsRootState + +## Example Usage + +```typescript +import { ModelsRootState } from "@alienplatform/platform-api/models"; + +let value: ModelsRootState = "revoked"; +``` + +## Values + +```typescript +"pending" | "ready" | "revoked" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/modelsstate.md b/client-sdks/platform/typescript/docs/models/modelsstate.md new file mode 100644 index 000000000..2104d26ce --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/modelsstate.md @@ -0,0 +1,15 @@ +# ModelsState + +## Example Usage + +```typescript +import { ModelsState } from "@alienplatform/platform-api/models"; + +let value: ModelsState = "not-connected"; +``` + +## Values + +```typescript +"not-connected" | "setting-up" | "connected" | "needs-attention" | "revoked" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/newdeploymentrequest.md b/client-sdks/platform/typescript/docs/models/newdeploymentrequest.md index d71e782a5..edaf202fa 100644 --- a/client-sdks/platform/typescript/docs/models/newdeploymentrequest.md +++ b/client-sdks/platform/typescript/docs/models/newdeploymentrequest.md @@ -36,4 +36,6 @@ let value: NewDeploymentRequest = { | `inputValues` | Record | :heavy_minus_sign: | Stack input values provided by the deployment creator. | | | `operatorScope` | *string* | :heavy_minus_sign: | Display-only scope reported by the Operator manifest. | | | `operatorPermission` | *string* | :heavy_minus_sign: | Display-only permission tier reported by the Operator manifest. | | -| `initialDesiredRelease` | [models.InitialDesiredRelease](../models/initialdesiredrelease.md) | :heavy_minus_sign: | Desired-release selection for a new deployment. Use none to register an environment without initially requesting a release; later updates can assign one. | | \ No newline at end of file +| `initialDesiredRelease` | [models.InitialDesiredRelease](../models/initialdesiredrelease.md) | :heavy_minus_sign: | Desired-release selection for a new deployment. Use none to register an environment without initially requesting a release; later updates can assign one. | | +| `releaseChannel` | *string* | :heavy_minus_sign: | Release channel followed while this deployment is not pinned. | | +| `setupItem` | [models.NewDeploymentRequestSetupItem](../models/newdeploymentrequestsetupitem.md) | :heavy_minus_sign: | Customer setup item selected from this deployment-group token. | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/newdeploymentrequestfailuredomains1.md b/client-sdks/platform/typescript/docs/models/newdeploymentrequestfailuredomains1.md new file mode 100644 index 000000000..943e4d5a9 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/newdeploymentrequestfailuredomains1.md @@ -0,0 +1,20 @@ +# NewDeploymentRequestFailureDomains1 + +Failure-domain policy selected for a compute pool. + +## Example Usage + +```typescript +import { NewDeploymentRequestFailureDomains1 } from "@alienplatform/platform-api/models"; + +let value: NewDeploymentRequestFailureDomains1 = { + spread: 596174, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `selectedFailureDomains` | *string*[] | :heavy_minus_sign: | Concrete provider domains selected during setup.
Empty delegates deterministic selection to the provider setup implementation. | +| `spread` | *number* | :heavy_check_mark: | Number of distinct failure domains across which new stateful replicas may be spread. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/newdeploymentrequestfailuredomains2.md b/client-sdks/platform/typescript/docs/models/newdeploymentrequestfailuredomains2.md new file mode 100644 index 000000000..83cac103d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/newdeploymentrequestfailuredomains2.md @@ -0,0 +1,20 @@ +# NewDeploymentRequestFailureDomains2 + +Failure-domain policy selected for a compute pool. + +## Example Usage + +```typescript +import { NewDeploymentRequestFailureDomains2 } from "@alienplatform/platform-api/models"; + +let value: NewDeploymentRequestFailureDomains2 = { + spread: 665508, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `selectedFailureDomains` | *string*[] | :heavy_minus_sign: | Concrete provider domains selected during setup.
Empty delegates deterministic selection to the provider setup implementation. | +| `spread` | *number* | :heavy_check_mark: | Number of distinct failure domains across which new stateful replicas may be spread. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/newdeploymentrequestfailuredomainsunion1.md b/client-sdks/platform/typescript/docs/models/newdeploymentrequestfailuredomainsunion1.md new file mode 100644 index 000000000..300827cb1 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/newdeploymentrequestfailuredomainsunion1.md @@ -0,0 +1,19 @@ +# NewDeploymentRequestFailureDomainsUnion1 + + +## Supported Types + +### `models.NewDeploymentRequestFailureDomains1` + +```typescript +const value: models.NewDeploymentRequestFailureDomains1 = { + spread: 596174, +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/newdeploymentrequestfailuredomainsunion2.md b/client-sdks/platform/typescript/docs/models/newdeploymentrequestfailuredomainsunion2.md new file mode 100644 index 000000000..51e6bc74e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/newdeploymentrequestfailuredomainsunion2.md @@ -0,0 +1,19 @@ +# NewDeploymentRequestFailureDomainsUnion2 + + +## Supported Types + +### `models.NewDeploymentRequestFailureDomains2` + +```typescript +const value: models.NewDeploymentRequestFailureDomains2 = { + spread: 665508, +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/newdeploymentrequestpoolsautoscale.md b/client-sdks/platform/typescript/docs/models/newdeploymentrequestpoolsautoscale.md index 36ca20e5e..be9824d53 100644 --- a/client-sdks/platform/typescript/docs/models/newdeploymentrequestpoolsautoscale.md +++ b/client-sdks/platform/typescript/docs/models/newdeploymentrequestpoolsautoscale.md @@ -16,6 +16,7 @@ let value: NewDeploymentRequestPoolsAutoscale = { | Field | Type | Required | Description | | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | +| `failureDomains` | *models.NewDeploymentRequestFailureDomainsUnion2* | :heavy_minus_sign: | N/A | | `machine` | *string* | :heavy_minus_sign: | Provider machine type selected for this deployment. | | `max` | *number* | :heavy_check_mark: | Maximum machine count. | | `min` | *number* | :heavy_check_mark: | Minimum machine count. | diff --git a/client-sdks/platform/typescript/docs/models/newdeploymentrequestpoolsfixed.md b/client-sdks/platform/typescript/docs/models/newdeploymentrequestpoolsfixed.md index a6bc6a7e4..4e58fa11a 100644 --- a/client-sdks/platform/typescript/docs/models/newdeploymentrequestpoolsfixed.md +++ b/client-sdks/platform/typescript/docs/models/newdeploymentrequestpoolsfixed.md @@ -15,6 +15,7 @@ let value: NewDeploymentRequestPoolsFixed = { | Field | Type | Required | Description | | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | +| `failureDomains` | *models.NewDeploymentRequestFailureDomainsUnion1* | :heavy_minus_sign: | N/A | | `machine` | *string* | :heavy_minus_sign: | Provider machine type selected for this deployment. | | `machines` | *number* | :heavy_check_mark: | Number of machines to run. | | `mode` | *"fixed"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/newdeploymentrequestsetupitem.md b/client-sdks/platform/typescript/docs/models/newdeploymentrequestsetupitem.md index a77f921c0..bc73e3ca0 100644 --- a/client-sdks/platform/typescript/docs/models/newdeploymentrequestsetupitem.md +++ b/client-sdks/platform/typescript/docs/models/newdeploymentrequestsetupitem.md @@ -7,11 +7,11 @@ Customer setup item selected from this deployment-group token. ```typescript import { NewDeploymentRequestSetupItem } from "@alienplatform/platform-api/models"; -let value: NewDeploymentRequestSetupItem = "keys"; +let value: NewDeploymentRequestSetupItem = "registry"; ``` ## Values ```typescript -"alien-stack" | "models" | "keys" +"deployment" | "models" | "keys" | "bucket" | "registry" ``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/nextstate.md b/client-sdks/platform/typescript/docs/models/nextstate.md deleted file mode 100644 index be86d9277..000000000 --- a/client-sdks/platform/typescript/docs/models/nextstate.md +++ /dev/null @@ -1,23 +0,0 @@ -# NextState - -Represents the collective state of all resources in a stack, including platform and pending actions. - -## Example Usage - -```typescript -import { NextState } from "@alienplatform/platform-api/models"; - -let value: NextState = { - platform: "kubernetes", - resourcePrefix: "", - resources: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -| `platform` | [models.EventPlatform](../models/eventplatform.md) | :heavy_check_mark: | Represents the target cloud platform. | -| `resourcePrefix` | *string* | :heavy_check_mark: | A prefix used for resource naming to ensure uniqueness across deployments. | -| `resources` | Record | :heavy_check_mark: | The state of individual resources, keyed by resource ID. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/nextstateerrorunion.md b/client-sdks/platform/typescript/docs/models/nextstateerrorunion.md deleted file mode 100644 index 08a254372..000000000 --- a/client-sdks/platform/typescript/docs/models/nextstateerrorunion.md +++ /dev/null @@ -1,21 +0,0 @@ -# NextStateErrorUnion - - -## Supported Types - -### `models.ErrorNextState` - -```typescript -const value: models.ErrorNextState = { - code: "", - internal: false, - message: "", -}; -``` - -### `any` - -```typescript -const value: any = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/operations/acceptworkspaceinvitationrequest.md b/client-sdks/platform/typescript/docs/models/operations/acceptworkspaceinvitationrequest.md new file mode 100644 index 000000000..10c4e00b0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/acceptworkspaceinvitationrequest.md @@ -0,0 +1,17 @@ +# AcceptWorkspaceInvitationRequest + +## Example Usage + +```typescript +import { AcceptWorkspaceInvitationRequest } from "@alienplatform/platform-api/models/operations"; + +let value: AcceptWorkspaceInvitationRequest = { + token: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `token` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/accesstest1.md b/client-sdks/platform/typescript/docs/models/operations/accesstest1.md new file mode 100644 index 000000000..27d1e5619 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/accesstest1.md @@ -0,0 +1,15 @@ +# AccessTest1 + +## Example Usage + +```typescript +import { AccessTest1 } from "@alienplatform/platform-api/models/operations"; + +let value: AccessTest1 = "failed"; +``` + +## Values + +```typescript +"verified" | "failed" | "not-checked" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/accesstest2.md b/client-sdks/platform/typescript/docs/models/operations/accesstest2.md new file mode 100644 index 000000000..860c45327 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/accesstest2.md @@ -0,0 +1,15 @@ +# AccessTest2 + +## Example Usage + +```typescript +import { AccessTest2 } from "@alienplatform/platform-api/models/operations"; + +let value: AccessTest2 = "not-checked"; +``` + +## Values + +```typescript +"verified" | "failed" | "not-checked" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/accesstest3.md b/client-sdks/platform/typescript/docs/models/operations/accesstest3.md new file mode 100644 index 000000000..f7c677020 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/accesstest3.md @@ -0,0 +1,15 @@ +# AccessTest3 + +## Example Usage + +```typescript +import { AccessTest3 } from "@alienplatform/platform-api/models/operations"; + +let value: AccessTest3 = "verified"; +``` + +## Values + +```typescript +"verified" | "failed" | "not-checked" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/accesstest4.md b/client-sdks/platform/typescript/docs/models/operations/accesstest4.md new file mode 100644 index 000000000..7f7a4c6a4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/accesstest4.md @@ -0,0 +1,15 @@ +# AccessTest4 + +## Example Usage + +```typescript +import { AccessTest4 } from "@alienplatform/platform-api/models/operations"; + +let value: AccessTest4 = "failed"; +``` + +## Values + +```typescript +"verified" | "failed" | "not-checked" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/allchannels.md b/client-sdks/platform/typescript/docs/models/operations/allchannels.md new file mode 100644 index 000000000..2e73f33a2 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/allchannels.md @@ -0,0 +1,15 @@ +# AllChannels + +## Example Usage + +```typescript +import { AllChannels } from "@alienplatform/platform-api/models/operations"; + +let value: AllChannels = "true"; +``` + +## Values + +```typescript +"true" | "false" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/applycontainerregistrymanagersnapshotrepository.md b/client-sdks/platform/typescript/docs/models/operations/applycontainerregistrymanagersnapshotrepository.md new file mode 100644 index 000000000..373bbc3d2 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/applycontainerregistrymanagersnapshotrepository.md @@ -0,0 +1,23 @@ +# ApplyContainerRegistryManagerSnapshotRepository + +## Example Usage + +```typescript +import { ApplyContainerRegistryManagerSnapshotRepository } from "@alienplatform/platform-api/models/operations"; + +let value: ApplyContainerRegistryManagerSnapshotRepository = { + id: "crrepo_625temdq3bnu25jw9rcux", + status: "ready", + routableUpstreamName: "", + error: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the container registry repository. | crrepo_625temdq3bnu25jw9rcux | +| `status` | [operations.ApplyContainerRegistryManagerSnapshotStatus](../../models/operations/applycontainerregistrymanagersnapshotstatus.md) | :heavy_check_mark: | N/A | | +| `routableUpstreamName` | *string* | :heavy_check_mark: | N/A | | +| `error` | *string* | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/applycontainerregistrymanagersnapshotrequest.md b/client-sdks/platform/typescript/docs/models/operations/applycontainerregistrymanagersnapshotrequest.md new file mode 100644 index 000000000..d404ea6c5 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/applycontainerregistrymanagersnapshotrequest.md @@ -0,0 +1,18 @@ +# ApplyContainerRegistryManagerSnapshotRequest + +## Example Usage + +```typescript +import { ApplyContainerRegistryManagerSnapshotRequest } from "@alienplatform/platform-api/models/operations"; + +let value: ApplyContainerRegistryManagerSnapshotRequest = { + id: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | +| `id` | *string* | :heavy_check_mark: | N/A | +| `requestBody` | [operations.ApplyContainerRegistryManagerSnapshotRequestBody](../../models/operations/applycontainerregistrymanagersnapshotrequestbody.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/applycontainerregistrymanagersnapshotrequestbody.md b/client-sdks/platform/typescript/docs/models/operations/applycontainerregistrymanagersnapshotrequestbody.md new file mode 100644 index 000000000..9cc6a9509 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/applycontainerregistrymanagersnapshotrequestbody.md @@ -0,0 +1,27 @@ +# ApplyContainerRegistryManagerSnapshotRequestBody + +## Example Usage + +```typescript +import { ApplyContainerRegistryManagerSnapshotRequestBody } from "@alienplatform/platform-api/models/operations"; + +let value: ApplyContainerRegistryManagerSnapshotRequestBody = { + routeId: "crroute_c9t4xoy7fmiq7equtu20", + desiredRevision: 103893, + repositories: [], + verification: { + succeeded: true, + observedAt: new Date("2024-01-04T07:56:27.719Z"), + error: "", + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | +| `routeId` | *string* | :heavy_check_mark: | Unique identifier for the container registry route. | crroute_c9t4xoy7fmiq7equtu20 | +| `desiredRevision` | *number* | :heavy_check_mark: | N/A | | +| `repositories` | [operations.ApplyContainerRegistryManagerSnapshotRepository](../../models/operations/applycontainerregistrymanagersnapshotrepository.md)[] | :heavy_check_mark: | N/A | | +| `verification` | [operations.Verification](../../models/operations/verification.md) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/applycontainerregistrymanagersnapshotstatus.md b/client-sdks/platform/typescript/docs/models/operations/applycontainerregistrymanagersnapshotstatus.md new file mode 100644 index 000000000..7a61d77b2 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/applycontainerregistrymanagersnapshotstatus.md @@ -0,0 +1,15 @@ +# ApplyContainerRegistryManagerSnapshotStatus + +## Example Usage + +```typescript +import { ApplyContainerRegistryManagerSnapshotStatus } from "@alienplatform/platform-api/models/operations"; + +let value: ApplyContainerRegistryManagerSnapshotStatus = "failed"; +``` + +## Values + +```typescript +"ready" | "deleted" | "failed" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/approveagentsessionrequest.md b/client-sdks/platform/typescript/docs/models/operations/approveagentsessionrequest.md new file mode 100644 index 000000000..a6626c680 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/approveagentsessionrequest.md @@ -0,0 +1,19 @@ +# ApproveAgentSessionRequest + +## Example Usage + +```typescript +import { ApproveAgentSessionRequest } from "@alienplatform/platform-api/models/operations"; + +let value: ApproveAgentSessionRequest = { + id: "", + workspace: "my-workspace", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | N/A | | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/availability1.md b/client-sdks/platform/typescript/docs/models/operations/availability1.md new file mode 100644 index 000000000..f3a0afa9a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/availability1.md @@ -0,0 +1,22 @@ +# Availability1 + +## Example Usage + +```typescript +import { Availability1 } from "@alienplatform/platform-api/models/operations"; + +let value: Availability1 = { + catalogRevision: "", + models: [], + source: "azure-foundry", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | +| `catalogRevision` | *string* | :heavy_check_mark: | N/A | +| `location` | *string* | :heavy_minus_sign: | N/A | +| `models` | [operations.GetResourceDeploymentDetailModel1](../../models/operations/getresourcedeploymentdetailmodel1.md)[] | :heavy_check_mark: | N/A | +| `source` | [operations.SourceEnum1](../../models/operations/sourceenum1.md) | :heavy_check_mark: | Provider control plane used to observe model availability without invoking
a model, spending customer quota, or accepting provider terms. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/availability2.md b/client-sdks/platform/typescript/docs/models/operations/availability2.md new file mode 100644 index 000000000..668c153b0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/availability2.md @@ -0,0 +1,30 @@ +# Availability2 + +## Example Usage + +```typescript +import { Availability2 } from "@alienplatform/platform-api/models/operations"; + +let value: Availability2 = { + catalogRevision: "", + models: [ + { + accessTest: "not-checked", + availability: "unknown", + blockers: [], + clientApis: [], + publicModelId: "", + }, + ], + source: "gcp-vertex", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | +| `catalogRevision` | *string* | :heavy_check_mark: | N/A | +| `location` | *string* | :heavy_minus_sign: | N/A | +| `models` | [operations.GetResourceDeploymentDetailModel2](../../models/operations/getresourcedeploymentdetailmodel2.md)[] | :heavy_check_mark: | N/A | +| `source` | [operations.SourceEnum2](../../models/operations/sourceenum2.md) | :heavy_check_mark: | Provider control plane used to observe model availability without invoking
a model, spending customer quota, or accepting provider terms. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/availability3.md b/client-sdks/platform/typescript/docs/models/operations/availability3.md new file mode 100644 index 000000000..f4e29d221 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/availability3.md @@ -0,0 +1,22 @@ +# Availability3 + +## Example Usage + +```typescript +import { Availability3 } from "@alienplatform/platform-api/models/operations"; + +let value: Availability3 = { + catalogRevision: "", + models: [], + source: "azure-foundry", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | +| `catalogRevision` | *string* | :heavy_check_mark: | N/A | +| `location` | *string* | :heavy_minus_sign: | N/A | +| `models` | [operations.GetResourceDeploymentDetailModel3](../../models/operations/getresourcedeploymentdetailmodel3.md)[] | :heavy_check_mark: | N/A | +| `source` | [operations.SourceEnum3](../../models/operations/sourceenum3.md) | :heavy_check_mark: | Provider control plane used to observe model availability without invoking
a model, spending customer quota, or accepting provider terms. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/availability4.md b/client-sdks/platform/typescript/docs/models/operations/availability4.md new file mode 100644 index 000000000..796494da0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/availability4.md @@ -0,0 +1,30 @@ +# Availability4 + +## Example Usage + +```typescript +import { Availability4 } from "@alienplatform/platform-api/models/operations"; + +let value: Availability4 = { + catalogRevision: "", + models: [ + { + accessTest: "verified", + availability: "unknown", + blockers: [], + clientApis: [], + publicModelId: "", + }, + ], + source: "azure-foundry", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | +| `catalogRevision` | *string* | :heavy_check_mark: | N/A | +| `location` | *string* | :heavy_minus_sign: | N/A | +| `models` | [operations.GetResourceDeploymentDetailModel4](../../models/operations/getresourcedeploymentdetailmodel4.md)[] | :heavy_check_mark: | N/A | +| `source` | [operations.SourceEnum4](../../models/operations/sourceenum4.md) | :heavy_check_mark: | Provider control plane used to observe model availability without invoking
a model, spending customer quota, or accepting provider terms. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/availabilityenum1.md b/client-sdks/platform/typescript/docs/models/operations/availabilityenum1.md new file mode 100644 index 000000000..28f8317c0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/availabilityenum1.md @@ -0,0 +1,15 @@ +# AvailabilityEnum1 + +## Example Usage + +```typescript +import { AvailabilityEnum1 } from "@alienplatform/platform-api/models/operations"; + +let value: AvailabilityEnum1 = "blocked"; +``` + +## Values + +```typescript +"available" | "blocked" | "unknown" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/availabilityenum2.md b/client-sdks/platform/typescript/docs/models/operations/availabilityenum2.md new file mode 100644 index 000000000..1c2e33431 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/availabilityenum2.md @@ -0,0 +1,15 @@ +# AvailabilityEnum2 + +## Example Usage + +```typescript +import { AvailabilityEnum2 } from "@alienplatform/platform-api/models/operations"; + +let value: AvailabilityEnum2 = "available"; +``` + +## Values + +```typescript +"available" | "blocked" | "unknown" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/availabilityenum3.md b/client-sdks/platform/typescript/docs/models/operations/availabilityenum3.md new file mode 100644 index 000000000..b5f70666f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/availabilityenum3.md @@ -0,0 +1,15 @@ +# AvailabilityEnum3 + +## Example Usage + +```typescript +import { AvailabilityEnum3 } from "@alienplatform/platform-api/models/operations"; + +let value: AvailabilityEnum3 = "blocked"; +``` + +## Values + +```typescript +"available" | "blocked" | "unknown" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/availabilityenum4.md b/client-sdks/platform/typescript/docs/models/operations/availabilityenum4.md new file mode 100644 index 000000000..b7599d00e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/availabilityenum4.md @@ -0,0 +1,15 @@ +# AvailabilityEnum4 + +## Example Usage + +```typescript +import { AvailabilityEnum4 } from "@alienplatform/platform-api/models/operations"; + +let value: AvailabilityEnum4 = "blocked"; +``` + +## Values + +```typescript +"available" | "blocked" | "unknown" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/availabilityunion.md b/client-sdks/platform/typescript/docs/models/operations/availabilityunion.md new file mode 100644 index 000000000..238cc51be --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/availabilityunion.md @@ -0,0 +1,29 @@ +# AvailabilityUnion + + +## Supported Types + +### `operations.Availability4` + +```typescript +const value: operations.Availability4 = { + catalogRevision: "", + models: [ + { + accessTest: "verified", + availability: "unknown", + blockers: [], + clientApis: [], + publicModelId: "", + }, + ], + source: "azure-foundry", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/operations/available.md b/client-sdks/platform/typescript/docs/models/operations/available.md new file mode 100644 index 000000000..762ba8069 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/available.md @@ -0,0 +1,71 @@ +# Available + +## Example Usage + +```typescript +import { Available } from "@alienplatform/platform-api/models/operations"; + +let value: Available = { + status: "available", + range: "7d", + pricing: { + label: "Estimated provider cost", + coverage: 4485.61, + revision: "", + }, + totals: { + requests: 693783, + successfulRequests: 310561, + errorRequests: 203130, + averageLatencyMs: 4118.4, + p95LatencyMs: null, + inputTokens: 639818, + outputTokens: 264082, + estimatedCostMicrousd: 970447, + pricedRequests: 94285, + }, + timeSeries: [ + { + requests: 925877, + successfulRequests: 276847, + errorRequests: 426254, + averageLatencyMs: null, + p95LatencyMs: 5677.9, + inputTokens: null, + outputTokens: 937346, + estimatedCostMicrousd: 165362, + pricedRequests: 39907, + bucket: new Date("2026-10-28T10:39:01.844Z"), + }, + ], + customers: [ + { + requests: 283671, + successfulRequests: 61648, + errorRequests: 770565, + averageLatencyMs: 8903.54, + p95LatencyMs: 4971.72, + inputTokens: 18051, + outputTokens: 983025, + estimatedCostMicrousd: 489322, + pricedRequests: 284032, + deploymentGroupId: "", + name: "", + externalId: "", + }, + ], + models: [], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `status` | *"available"* | :heavy_check_mark: | N/A | +| `range` | [operations.RangeResponse](../../models/operations/rangeresponse.md) | :heavy_check_mark: | N/A | +| `pricing` | [operations.Pricing](../../models/operations/pricing.md) | :heavy_check_mark: | N/A | +| `totals` | [operations.Totals](../../models/operations/totals.md) | :heavy_check_mark: | N/A | +| `timeSeries` | [operations.TimeSery](../../models/operations/timesery.md)[] | :heavy_check_mark: | N/A | +| `customers` | [operations.Customer](../../models/operations/customer.md)[] | :heavy_check_mark: | N/A | +| `models` | [operations.GetProjectAiUsageModel](../../models/operations/getprojectaiusagemodel.md)[] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/blocker1.md b/client-sdks/platform/typescript/docs/models/operations/blocker1.md deleted file mode 100644 index df20e2c8c..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/blocker1.md +++ /dev/null @@ -1,25 +0,0 @@ -# Blocker1 - -## Example Usage - -```typescript -import { Blocker1 } from "@alienplatform/platform-api/models/operations"; - -let value: Blocker1 = { - reason: "", - replicaId: "", - schedulingMode: "", - state: "Washington", - workloadName: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `reason` | *string* | :heavy_check_mark: | N/A | -| `replicaId` | *string* | :heavy_check_mark: | N/A | -| `schedulingMode` | *string* | :heavy_check_mark: | N/A | -| `state` | *string* | :heavy_check_mark: | N/A | -| `workloadName` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/blocker2.md b/client-sdks/platform/typescript/docs/models/operations/blocker2.md deleted file mode 100644 index 224a1528b..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/blocker2.md +++ /dev/null @@ -1,25 +0,0 @@ -# Blocker2 - -## Example Usage - -```typescript -import { Blocker2 } from "@alienplatform/platform-api/models/operations"; - -let value: Blocker2 = { - reason: "", - replicaId: "", - schedulingMode: "", - state: "Delaware", - workloadName: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `reason` | *string* | :heavy_check_mark: | N/A | -| `replicaId` | *string* | :heavy_check_mark: | N/A | -| `schedulingMode` | *string* | :heavy_check_mark: | N/A | -| `state` | *string* | :heavy_check_mark: | N/A | -| `workloadName` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/blocker3.md b/client-sdks/platform/typescript/docs/models/operations/blocker3.md deleted file mode 100644 index 1fd22687c..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/blocker3.md +++ /dev/null @@ -1,25 +0,0 @@ -# Blocker3 - -## Example Usage - -```typescript -import { Blocker3 } from "@alienplatform/platform-api/models/operations"; - -let value: Blocker3 = { - reason: "", - replicaId: "", - schedulingMode: "", - state: "Wisconsin", - workloadName: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `reason` | *string* | :heavy_check_mark: | N/A | -| `replicaId` | *string* | :heavy_check_mark: | N/A | -| `schedulingMode` | *string* | :heavy_check_mark: | N/A | -| `state` | *string* | :heavy_check_mark: | N/A | -| `workloadName` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/blocker4.md b/client-sdks/platform/typescript/docs/models/operations/blocker4.md deleted file mode 100644 index 7cbc1209e..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/blocker4.md +++ /dev/null @@ -1,25 +0,0 @@ -# Blocker4 - -## Example Usage - -```typescript -import { Blocker4 } from "@alienplatform/platform-api/models/operations"; - -let value: Blocker4 = { - reason: "", - replicaId: "", - schedulingMode: "", - state: "South Carolina", - workloadName: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `reason` | *string* | :heavy_check_mark: | N/A | -| `replicaId` | *string* | :heavy_check_mark: | N/A | -| `schedulingMode` | *string* | :heavy_check_mark: | N/A | -| `state` | *string* | :heavy_check_mark: | N/A | -| `workloadName` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/blockerenum1.md b/client-sdks/platform/typescript/docs/models/operations/blockerenum1.md new file mode 100644 index 000000000..5a3ca00b7 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/blockerenum1.md @@ -0,0 +1,15 @@ +# BlockerEnum1 + +## Example Usage + +```typescript +import { BlockerEnum1 } from "@alienplatform/platform-api/models/operations"; + +let value: BlockerEnum1 = "region-unavailable"; +``` + +## Values + +```typescript +"agreement-required" | "entitlement-required" | "model-activation-required" | "deployment-required" | "quota-configuration-required" | "region-unavailable" | "access-denied" | "observation-failed" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/blockerenum2.md b/client-sdks/platform/typescript/docs/models/operations/blockerenum2.md new file mode 100644 index 000000000..5670c9413 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/blockerenum2.md @@ -0,0 +1,15 @@ +# BlockerEnum2 + +## Example Usage + +```typescript +import { BlockerEnum2 } from "@alienplatform/platform-api/models/operations"; + +let value: BlockerEnum2 = "access-denied"; +``` + +## Values + +```typescript +"agreement-required" | "entitlement-required" | "model-activation-required" | "deployment-required" | "quota-configuration-required" | "region-unavailable" | "access-denied" | "observation-failed" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/blockerenum3.md b/client-sdks/platform/typescript/docs/models/operations/blockerenum3.md new file mode 100644 index 000000000..e11ee2e68 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/blockerenum3.md @@ -0,0 +1,15 @@ +# BlockerEnum3 + +## Example Usage + +```typescript +import { BlockerEnum3 } from "@alienplatform/platform-api/models/operations"; + +let value: BlockerEnum3 = "quota-configuration-required"; +``` + +## Values + +```typescript +"agreement-required" | "entitlement-required" | "model-activation-required" | "deployment-required" | "quota-configuration-required" | "region-unavailable" | "access-denied" | "observation-failed" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/blockerenum4.md b/client-sdks/platform/typescript/docs/models/operations/blockerenum4.md new file mode 100644 index 000000000..f99b0e536 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/blockerenum4.md @@ -0,0 +1,15 @@ +# BlockerEnum4 + +## Example Usage + +```typescript +import { BlockerEnum4 } from "@alienplatform/platform-api/models/operations"; + +let value: BlockerEnum4 = "deployment-required"; +``` + +## Values + +```typescript +"agreement-required" | "entitlement-required" | "model-activation-required" | "deployment-required" | "quota-configuration-required" | "region-unavailable" | "access-denied" | "observation-failed" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue1.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue1.md index bca15d221..fa940bfba 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue1.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue1.md @@ -15,9 +15,9 @@ let value: CollectionIssue1 = { ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason1](../../models/operations/reason1.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity1](../../models/operations/collectionissueseverity1.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason1](../../models/operations/getresourcedeploymentdetailreason1.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity1](../../models/operations/collectionissueseverity1.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue10.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue10.md index 3050bf242..f0e385f6f 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue10.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue10.md @@ -15,9 +15,9 @@ let value: CollectionIssue10 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason10](../../models/operations/reason10.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity10](../../models/operations/collectionissueseverity10.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason10](../../models/operations/getresourcedeploymentdetailreason10.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity10](../../models/operations/collectionissueseverity10.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue11.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue11.md index b390854dd..935d0441f 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue11.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue11.md @@ -15,9 +15,9 @@ let value: CollectionIssue11 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason11](../../models/operations/reason11.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity11](../../models/operations/collectionissueseverity11.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason11](../../models/operations/getresourcedeploymentdetailreason11.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity11](../../models/operations/collectionissueseverity11.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue12.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue12.md index fd5270a5d..607238081 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue12.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue12.md @@ -15,9 +15,9 @@ let value: CollectionIssue12 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason12](../../models/operations/reason12.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity12](../../models/operations/collectionissueseverity12.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason12](../../models/operations/getresourcedeploymentdetailreason12.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity12](../../models/operations/collectionissueseverity12.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue13.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue13.md index 2b6d6d108..6ba185292 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue13.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue13.md @@ -15,9 +15,9 @@ let value: CollectionIssue13 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason13](../../models/operations/reason13.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity13](../../models/operations/collectionissueseverity13.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason13](../../models/operations/getresourcedeploymentdetailreason13.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity13](../../models/operations/collectionissueseverity13.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue14.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue14.md index 27e0a3e21..00cd089ae 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue14.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue14.md @@ -15,9 +15,9 @@ let value: CollectionIssue14 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason14](../../models/operations/reason14.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity14](../../models/operations/collectionissueseverity14.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason14](../../models/operations/getresourcedeploymentdetailreason14.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity14](../../models/operations/collectionissueseverity14.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue15.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue15.md index 116bcef66..27154afa4 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue15.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue15.md @@ -15,9 +15,9 @@ let value: CollectionIssue15 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason15](../../models/operations/reason15.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity15](../../models/operations/collectionissueseverity15.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason15](../../models/operations/getresourcedeploymentdetailreason15.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity15](../../models/operations/collectionissueseverity15.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue16.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue16.md index 24c27dd35..a708afd20 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue16.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue16.md @@ -15,9 +15,9 @@ let value: CollectionIssue16 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason16](../../models/operations/reason16.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity16](../../models/operations/collectionissueseverity16.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason16](../../models/operations/getresourcedeploymentdetailreason16.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity16](../../models/operations/collectionissueseverity16.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue17.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue17.md index 1e7f79db4..1fbe3b0e1 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue17.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue17.md @@ -15,9 +15,9 @@ let value: CollectionIssue17 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason17](../../models/operations/reason17.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity17](../../models/operations/collectionissueseverity17.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason17](../../models/operations/getresourcedeploymentdetailreason17.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity17](../../models/operations/collectionissueseverity17.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue18.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue18.md index 10cfae5f7..e6c60b7ee 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue18.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue18.md @@ -15,9 +15,9 @@ let value: CollectionIssue18 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason18](../../models/operations/reason18.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity18](../../models/operations/collectionissueseverity18.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason18](../../models/operations/getresourcedeploymentdetailreason18.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity18](../../models/operations/collectionissueseverity18.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue19.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue19.md index 6ce769294..9460912cc 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue19.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue19.md @@ -15,9 +15,9 @@ let value: CollectionIssue19 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason19](../../models/operations/reason19.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity19](../../models/operations/collectionissueseverity19.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason19](../../models/operations/getresourcedeploymentdetailreason19.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity19](../../models/operations/collectionissueseverity19.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue2.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue2.md index a85eebeca..b910b32fe 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue2.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue2.md @@ -15,9 +15,9 @@ let value: CollectionIssue2 = { ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason2](../../models/operations/reason2.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity2](../../models/operations/collectionissueseverity2.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason2](../../models/operations/getresourcedeploymentdetailreason2.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity2](../../models/operations/collectionissueseverity2.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue20.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue20.md index ff48ab373..ead625d83 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue20.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue20.md @@ -15,9 +15,9 @@ let value: CollectionIssue20 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason20](../../models/operations/reason20.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity20](../../models/operations/collectionissueseverity20.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason20](../../models/operations/getresourcedeploymentdetailreason20.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity20](../../models/operations/collectionissueseverity20.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue21.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue21.md index 1d1076a09..0e59a8b1b 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue21.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue21.md @@ -15,9 +15,9 @@ let value: CollectionIssue21 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason21](../../models/operations/reason21.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity21](../../models/operations/collectionissueseverity21.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason21](../../models/operations/getresourcedeploymentdetailreason21.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity21](../../models/operations/collectionissueseverity21.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue22.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue22.md index 37694bfaa..b0eaae539 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue22.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue22.md @@ -15,9 +15,9 @@ let value: CollectionIssue22 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason22](../../models/operations/reason22.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity22](../../models/operations/collectionissueseverity22.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason22](../../models/operations/getresourcedeploymentdetailreason22.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity22](../../models/operations/collectionissueseverity22.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue23.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue23.md index 7a5a246fe..438690bbd 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue23.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue23.md @@ -15,9 +15,9 @@ let value: CollectionIssue23 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason23](../../models/operations/reason23.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity23](../../models/operations/collectionissueseverity23.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason23](../../models/operations/getresourcedeploymentdetailreason23.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity23](../../models/operations/collectionissueseverity23.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue24.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue24.md index ef6e23352..da74e9701 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue24.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue24.md @@ -15,9 +15,9 @@ let value: CollectionIssue24 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason24](../../models/operations/reason24.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity24](../../models/operations/collectionissueseverity24.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason24](../../models/operations/getresourcedeploymentdetailreason24.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity24](../../models/operations/collectionissueseverity24.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue25.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue25.md index e295a6997..3a1446ae2 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue25.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue25.md @@ -15,9 +15,9 @@ let value: CollectionIssue25 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason25](../../models/operations/reason25.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity25](../../models/operations/collectionissueseverity25.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason25](../../models/operations/getresourcedeploymentdetailreason25.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity25](../../models/operations/collectionissueseverity25.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue26.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue26.md index 84d58589a..70597dec2 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue26.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue26.md @@ -15,9 +15,9 @@ let value: CollectionIssue26 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason26](../../models/operations/reason26.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity26](../../models/operations/collectionissueseverity26.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason26](../../models/operations/getresourcedeploymentdetailreason26.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity26](../../models/operations/collectionissueseverity26.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue27.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue27.md index f662d6bb2..4146f7882 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue27.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue27.md @@ -15,9 +15,9 @@ let value: CollectionIssue27 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason27](../../models/operations/reason27.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity27](../../models/operations/collectionissueseverity27.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason27](../../models/operations/getresourcedeploymentdetailreason27.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity27](../../models/operations/collectionissueseverity27.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue28.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue28.md index 1f217ebac..858a039cc 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue28.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue28.md @@ -15,9 +15,9 @@ let value: CollectionIssue28 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason28](../../models/operations/reason28.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity28](../../models/operations/collectionissueseverity28.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason28](../../models/operations/getresourcedeploymentdetailreason28.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity28](../../models/operations/collectionissueseverity28.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue29.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue29.md index 9f9f97d30..9c910060c 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue29.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue29.md @@ -15,9 +15,9 @@ let value: CollectionIssue29 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason29](../../models/operations/reason29.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity29](../../models/operations/collectionissueseverity29.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason29](../../models/operations/getresourcedeploymentdetailreason29.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity29](../../models/operations/collectionissueseverity29.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue3.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue3.md index 29a996b00..9f740226e 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue3.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue3.md @@ -15,9 +15,9 @@ let value: CollectionIssue3 = { ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason3](../../models/operations/reason3.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity3](../../models/operations/collectionissueseverity3.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason3](../../models/operations/getresourcedeploymentdetailreason3.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity3](../../models/operations/collectionissueseverity3.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue30.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue30.md index c3c209a09..94c66a997 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue30.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue30.md @@ -15,9 +15,9 @@ let value: CollectionIssue30 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason30](../../models/operations/reason30.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity30](../../models/operations/collectionissueseverity30.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason30](../../models/operations/getresourcedeploymentdetailreason30.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity30](../../models/operations/collectionissueseverity30.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue31.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue31.md index f4ac17acb..eae511728 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue31.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue31.md @@ -15,9 +15,9 @@ let value: CollectionIssue31 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason31](../../models/operations/reason31.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity31](../../models/operations/collectionissueseverity31.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason31](../../models/operations/getresourcedeploymentdetailreason31.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity31](../../models/operations/collectionissueseverity31.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue32.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue32.md index 7350ef977..1b5b1c5db 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue32.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue32.md @@ -15,9 +15,9 @@ let value: CollectionIssue32 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason32](../../models/operations/reason32.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity32](../../models/operations/collectionissueseverity32.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason32](../../models/operations/getresourcedeploymentdetailreason32.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity32](../../models/operations/collectionissueseverity32.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue33.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue33.md index 06059366d..6594806e4 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue33.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue33.md @@ -15,9 +15,9 @@ let value: CollectionIssue33 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason33](../../models/operations/reason33.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity33](../../models/operations/collectionissueseverity33.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason33](../../models/operations/getresourcedeploymentdetailreason33.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity33](../../models/operations/collectionissueseverity33.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue34.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue34.md index 5534e87c1..076331d9d 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue34.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue34.md @@ -15,9 +15,9 @@ let value: CollectionIssue34 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason34](../../models/operations/reason34.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity34](../../models/operations/collectionissueseverity34.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason34](../../models/operations/getresourcedeploymentdetailreason34.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity34](../../models/operations/collectionissueseverity34.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue35.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue35.md index bbbf4c864..5e702c7cc 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue35.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue35.md @@ -15,9 +15,9 @@ let value: CollectionIssue35 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason35](../../models/operations/reason35.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity35](../../models/operations/collectionissueseverity35.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason35](../../models/operations/getresourcedeploymentdetailreason35.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity35](../../models/operations/collectionissueseverity35.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue36.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue36.md index ea0385bbc..83fc95174 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue36.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue36.md @@ -15,9 +15,9 @@ let value: CollectionIssue36 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason36](../../models/operations/reason36.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity36](../../models/operations/collectionissueseverity36.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason36](../../models/operations/getresourcedeploymentdetailreason36.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity36](../../models/operations/collectionissueseverity36.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue37.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue37.md index ffe3df872..629cdca89 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue37.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue37.md @@ -15,9 +15,9 @@ let value: CollectionIssue37 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason37](../../models/operations/reason37.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity37](../../models/operations/collectionissueseverity37.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason37](../../models/operations/getresourcedeploymentdetailreason37.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity37](../../models/operations/collectionissueseverity37.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue38.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue38.md index b51ea1e04..f7555e45e 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue38.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue38.md @@ -15,9 +15,9 @@ let value: CollectionIssue38 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason38](../../models/operations/reason38.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity38](../../models/operations/collectionissueseverity38.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason38](../../models/operations/getresourcedeploymentdetailreason38.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity38](../../models/operations/collectionissueseverity38.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue39.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue39.md index ff9e2fb60..1ad0cea79 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue39.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue39.md @@ -15,9 +15,9 @@ let value: CollectionIssue39 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason39](../../models/operations/reason39.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity39](../../models/operations/collectionissueseverity39.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason39](../../models/operations/getresourcedeploymentdetailreason39.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity39](../../models/operations/collectionissueseverity39.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue4.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue4.md index 6468daa3a..142f8b0c5 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue4.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue4.md @@ -15,9 +15,9 @@ let value: CollectionIssue4 = { ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason4](../../models/operations/reason4.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity4](../../models/operations/collectionissueseverity4.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason4](../../models/operations/getresourcedeploymentdetailreason4.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity4](../../models/operations/collectionissueseverity4.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue40.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue40.md index 77b2483b7..973b16eca 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue40.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue40.md @@ -15,9 +15,9 @@ let value: CollectionIssue40 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason40](../../models/operations/reason40.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity40](../../models/operations/collectionissueseverity40.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason40](../../models/operations/getresourcedeploymentdetailreason40.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity40](../../models/operations/collectionissueseverity40.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue41.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue41.md index 89acc7779..c7a1b9351 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue41.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue41.md @@ -15,9 +15,9 @@ let value: CollectionIssue41 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason41](../../models/operations/reason41.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity41](../../models/operations/collectionissueseverity41.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason41](../../models/operations/getresourcedeploymentdetailreason41.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity41](../../models/operations/collectionissueseverity41.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue42.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue42.md index 0d3afcb96..9029b3f5e 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue42.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue42.md @@ -15,9 +15,9 @@ let value: CollectionIssue42 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason42](../../models/operations/reason42.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity42](../../models/operations/collectionissueseverity42.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason42](../../models/operations/getresourcedeploymentdetailreason42.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity42](../../models/operations/collectionissueseverity42.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue43.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue43.md index fe7de7cf0..59673a140 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue43.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue43.md @@ -15,9 +15,9 @@ let value: CollectionIssue43 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason43](../../models/operations/reason43.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity43](../../models/operations/collectionissueseverity43.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason43](../../models/operations/getresourcedeploymentdetailreason43.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity43](../../models/operations/collectionissueseverity43.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue44.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue44.md index ae191d594..9092d833e 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue44.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue44.md @@ -15,9 +15,9 @@ let value: CollectionIssue44 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason44](../../models/operations/reason44.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity44](../../models/operations/collectionissueseverity44.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason44](../../models/operations/getresourcedeploymentdetailreason44.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity44](../../models/operations/collectionissueseverity44.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue45.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue45.md index fdfd387f8..9ec9a0249 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue45.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue45.md @@ -15,9 +15,9 @@ let value: CollectionIssue45 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason45](../../models/operations/reason45.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity45](../../models/operations/collectionissueseverity45.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason45](../../models/operations/getresourcedeploymentdetailreason45.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity45](../../models/operations/collectionissueseverity45.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue46.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue46.md index b4d0624e5..c6736e3dc 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue46.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue46.md @@ -15,9 +15,9 @@ let value: CollectionIssue46 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason46](../../models/operations/reason46.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity46](../../models/operations/collectionissueseverity46.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason46](../../models/operations/getresourcedeploymentdetailreason46.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity46](../../models/operations/collectionissueseverity46.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue47.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue47.md index 3b852ebd3..e8d65a14a 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue47.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue47.md @@ -15,9 +15,9 @@ let value: CollectionIssue47 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason47](../../models/operations/reason47.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity47](../../models/operations/collectionissueseverity47.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason47](../../models/operations/getresourcedeploymentdetailreason47.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity47](../../models/operations/collectionissueseverity47.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue48.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue48.md index 01e4ae081..6a5fbcefd 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue48.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue48.md @@ -15,9 +15,9 @@ let value: CollectionIssue48 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason48](../../models/operations/reason48.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity48](../../models/operations/collectionissueseverity48.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason48](../../models/operations/getresourcedeploymentdetailreason48.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity48](../../models/operations/collectionissueseverity48.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue49.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue49.md index 4014a52c7..afe8e3918 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue49.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue49.md @@ -15,9 +15,9 @@ let value: CollectionIssue49 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason49](../../models/operations/reason49.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity49](../../models/operations/collectionissueseverity49.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason49](../../models/operations/getresourcedeploymentdetailreason49.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity49](../../models/operations/collectionissueseverity49.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue5.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue5.md index 53bd898f4..41809b4d1 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue5.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue5.md @@ -15,9 +15,9 @@ let value: CollectionIssue5 = { ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason5](../../models/operations/reason5.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity5](../../models/operations/collectionissueseverity5.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason5](../../models/operations/getresourcedeploymentdetailreason5.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity5](../../models/operations/collectionissueseverity5.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue50.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue50.md index 50192160e..f42b1d17c 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue50.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue50.md @@ -15,9 +15,9 @@ let value: CollectionIssue50 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason50](../../models/operations/reason50.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity50](../../models/operations/collectionissueseverity50.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason50](../../models/operations/getresourcedeploymentdetailreason50.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity50](../../models/operations/collectionissueseverity50.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue51.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue51.md index 65e7f1e4f..0fc3e1acf 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue51.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue51.md @@ -15,9 +15,9 @@ let value: CollectionIssue51 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason51](../../models/operations/reason51.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity51](../../models/operations/collectionissueseverity51.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason51](../../models/operations/getresourcedeploymentdetailreason51.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity51](../../models/operations/collectionissueseverity51.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue52.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue52.md index f3d9d4add..623500dd2 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue52.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue52.md @@ -15,9 +15,9 @@ let value: CollectionIssue52 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason52](../../models/operations/reason52.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity52](../../models/operations/collectionissueseverity52.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason52](../../models/operations/getresourcedeploymentdetailreason52.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity52](../../models/operations/collectionissueseverity52.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue53.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue53.md index 6b9b070b0..33257a90a 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue53.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue53.md @@ -15,9 +15,9 @@ let value: CollectionIssue53 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason53](../../models/operations/reason53.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity53](../../models/operations/collectionissueseverity53.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason53](../../models/operations/getresourcedeploymentdetailreason53.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity53](../../models/operations/collectionissueseverity53.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue54.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue54.md index c9463f07b..227d4162a 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue54.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue54.md @@ -15,9 +15,9 @@ let value: CollectionIssue54 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason54](../../models/operations/reason54.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity54](../../models/operations/collectionissueseverity54.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason54](../../models/operations/getresourcedeploymentdetailreason54.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity54](../../models/operations/collectionissueseverity54.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue55.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue55.md index cb70af31e..343b4e2ea 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue55.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue55.md @@ -15,9 +15,9 @@ let value: CollectionIssue55 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason55](../../models/operations/reason55.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity55](../../models/operations/collectionissueseverity55.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason55](../../models/operations/getresourcedeploymentdetailreason55.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity55](../../models/operations/collectionissueseverity55.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue56.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue56.md index e6392c422..70776ecc2 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue56.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue56.md @@ -15,9 +15,9 @@ let value: CollectionIssue56 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason56](../../models/operations/reason56.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity56](../../models/operations/collectionissueseverity56.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason56](../../models/operations/getresourcedeploymentdetailreason56.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity56](../../models/operations/collectionissueseverity56.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue57.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue57.md index 92ca9a7d4..5d3e42eb0 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue57.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue57.md @@ -15,9 +15,9 @@ let value: CollectionIssue57 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason57](../../models/operations/reason57.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity57](../../models/operations/collectionissueseverity57.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason57](../../models/operations/getresourcedeploymentdetailreason57.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity57](../../models/operations/collectionissueseverity57.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue58.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue58.md index 0c35a3267..9040292ed 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue58.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue58.md @@ -15,9 +15,9 @@ let value: CollectionIssue58 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason58](../../models/operations/reason58.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity58](../../models/operations/collectionissueseverity58.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason58](../../models/operations/getresourcedeploymentdetailreason58.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity58](../../models/operations/collectionissueseverity58.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue59.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue59.md index 4e2953c31..6a6c131b8 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue59.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue59.md @@ -15,9 +15,9 @@ let value: CollectionIssue59 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason59](../../models/operations/reason59.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity59](../../models/operations/collectionissueseverity59.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason59](../../models/operations/getresourcedeploymentdetailreason59.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity59](../../models/operations/collectionissueseverity59.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue6.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue6.md index 4a82f203e..96a082d90 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue6.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue6.md @@ -15,9 +15,9 @@ let value: CollectionIssue6 = { ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason6](../../models/operations/reason6.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity6](../../models/operations/collectionissueseverity6.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason6](../../models/operations/getresourcedeploymentdetailreason6.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity6](../../models/operations/collectionissueseverity6.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue60.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue60.md index 13d0898ee..c3e1f129e 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue60.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue60.md @@ -15,9 +15,9 @@ let value: CollectionIssue60 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason60](../../models/operations/reason60.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity60](../../models/operations/collectionissueseverity60.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason60](../../models/operations/getresourcedeploymentdetailreason60.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity60](../../models/operations/collectionissueseverity60.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue61.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue61.md index 4859b858d..5386790d6 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue61.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue61.md @@ -15,9 +15,9 @@ let value: CollectionIssue61 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason61](../../models/operations/reason61.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity61](../../models/operations/collectionissueseverity61.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason61](../../models/operations/getresourcedeploymentdetailreason61.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity61](../../models/operations/collectionissueseverity61.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue62.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue62.md index 07384b506..700afe182 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue62.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue62.md @@ -15,9 +15,9 @@ let value: CollectionIssue62 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason62](../../models/operations/reason62.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity62](../../models/operations/collectionissueseverity62.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason62](../../models/operations/getresourcedeploymentdetailreason62.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity62](../../models/operations/collectionissueseverity62.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue63.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue63.md index eec984583..245378ffc 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue63.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue63.md @@ -15,9 +15,9 @@ let value: CollectionIssue63 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason63](../../models/operations/reason63.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity63](../../models/operations/collectionissueseverity63.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason63](../../models/operations/getresourcedeploymentdetailreason63.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity63](../../models/operations/collectionissueseverity63.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue64.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue64.md index 97f4cbc01..edeae32d0 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue64.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue64.md @@ -15,9 +15,9 @@ let value: CollectionIssue64 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason64](../../models/operations/reason64.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity64](../../models/operations/collectionissueseverity64.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason64](../../models/operations/getresourcedeploymentdetailreason64.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity64](../../models/operations/collectionissueseverity64.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue65.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue65.md index ddfcc4c1c..198924797 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue65.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue65.md @@ -15,9 +15,9 @@ let value: CollectionIssue65 = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason65](../../models/operations/reason65.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity65](../../models/operations/collectionissueseverity65.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason65](../../models/operations/getresourcedeploymentdetailreason65.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity65](../../models/operations/collectionissueseverity65.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue66.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue66.md new file mode 100644 index 000000000..6f1a7aa23 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue66.md @@ -0,0 +1,23 @@ +# CollectionIssue66 + +## Example Usage + +```typescript +import { CollectionIssue66 } from "@alienplatform/platform-api/models/operations"; + +let value: CollectionIssue66 = { + message: "", + reason: "api-unavailable", + severity: "warning", + source: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason66](../../models/operations/getresourcedeploymentdetailreason66.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity66](../../models/operations/collectionissueseverity66.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue67.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue67.md new file mode 100644 index 000000000..18f196a65 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue67.md @@ -0,0 +1,23 @@ +# CollectionIssue67 + +## Example Usage + +```typescript +import { CollectionIssue67 } from "@alienplatform/platform-api/models/operations"; + +let value: CollectionIssue67 = { + message: "", + reason: "forbidden", + severity: "warning", + source: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason67](../../models/operations/getresourcedeploymentdetailreason67.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity67](../../models/operations/collectionissueseverity67.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue68.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue68.md new file mode 100644 index 000000000..948cb0bf1 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue68.md @@ -0,0 +1,23 @@ +# CollectionIssue68 + +## Example Usage + +```typescript +import { CollectionIssue68 } from "@alienplatform/platform-api/models/operations"; + +let value: CollectionIssue68 = { + message: "", + reason: "collection-failed", + severity: "info", + source: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason68](../../models/operations/getresourcedeploymentdetailreason68.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity68](../../models/operations/collectionissueseverity68.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue69.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue69.md new file mode 100644 index 000000000..f65dba875 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue69.md @@ -0,0 +1,23 @@ +# CollectionIssue69 + +## Example Usage + +```typescript +import { CollectionIssue69 } from "@alienplatform/platform-api/models/operations"; + +let value: CollectionIssue69 = { + message: "", + reason: "timed-out", + severity: "info", + source: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason69](../../models/operations/getresourcedeploymentdetailreason69.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity69](../../models/operations/collectionissueseverity69.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue7.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue7.md index c3e8338dd..97addf286 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue7.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue7.md @@ -15,9 +15,9 @@ let value: CollectionIssue7 = { ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason7](../../models/operations/reason7.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity7](../../models/operations/collectionissueseverity7.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason7](../../models/operations/getresourcedeploymentdetailreason7.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity7](../../models/operations/collectionissueseverity7.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue8.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue8.md index 51152803e..85b2cc8bd 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue8.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue8.md @@ -15,9 +15,9 @@ let value: CollectionIssue8 = { ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason8](../../models/operations/reason8.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity8](../../models/operations/collectionissueseverity8.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason8](../../models/operations/getresourcedeploymentdetailreason8.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity8](../../models/operations/collectionissueseverity8.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissue9.md b/client-sdks/platform/typescript/docs/models/operations/collectionissue9.md index a78318035..b3246526d 100644 --- a/client-sdks/platform/typescript/docs/models/operations/collectionissue9.md +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissue9.md @@ -15,9 +15,9 @@ let value: CollectionIssue9 = { ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | -| `message` | *string* | :heavy_check_mark: | N/A | -| `reason` | [operations.Reason9](../../models/operations/reason9.md) | :heavy_check_mark: | N/A | -| `severity` | [operations.CollectionIssueSeverity9](../../models/operations/collectionissueseverity9.md) | :heavy_check_mark: | N/A | -| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetResourceDeploymentDetailReason9](../../models/operations/getresourcedeploymentdetailreason9.md) | :heavy_check_mark: | N/A | +| `severity` | [operations.CollectionIssueSeverity9](../../models/operations/collectionissueseverity9.md) | :heavy_check_mark: | N/A | +| `source` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissueseverity66.md b/client-sdks/platform/typescript/docs/models/operations/collectionissueseverity66.md new file mode 100644 index 000000000..f29e8c2b4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissueseverity66.md @@ -0,0 +1,15 @@ +# CollectionIssueSeverity66 + +## Example Usage + +```typescript +import { CollectionIssueSeverity66 } from "@alienplatform/platform-api/models/operations"; + +let value: CollectionIssueSeverity66 = "error"; +``` + +## Values + +```typescript +"info" | "warning" | "error" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissueseverity67.md b/client-sdks/platform/typescript/docs/models/operations/collectionissueseverity67.md new file mode 100644 index 000000000..e1d2ceb0e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissueseverity67.md @@ -0,0 +1,15 @@ +# CollectionIssueSeverity67 + +## Example Usage + +```typescript +import { CollectionIssueSeverity67 } from "@alienplatform/platform-api/models/operations"; + +let value: CollectionIssueSeverity67 = "warning"; +``` + +## Values + +```typescript +"info" | "warning" | "error" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissueseverity68.md b/client-sdks/platform/typescript/docs/models/operations/collectionissueseverity68.md new file mode 100644 index 000000000..e02b7b3c0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissueseverity68.md @@ -0,0 +1,15 @@ +# CollectionIssueSeverity68 + +## Example Usage + +```typescript +import { CollectionIssueSeverity68 } from "@alienplatform/platform-api/models/operations"; + +let value: CollectionIssueSeverity68 = "error"; +``` + +## Values + +```typescript +"info" | "warning" | "error" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/collectionissueseverity69.md b/client-sdks/platform/typescript/docs/models/operations/collectionissueseverity69.md new file mode 100644 index 000000000..7e4501587 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/collectionissueseverity69.md @@ -0,0 +1,15 @@ +# CollectionIssueSeverity69 + +## Example Usage + +```typescript +import { CollectionIssueSeverity69 } from "@alienplatform/platform-api/models/operations"; + +let value: CollectionIssueSeverity69 = "error"; +``` + +## Values + +```typescript +"info" | "warning" | "error" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/commandrequest.md b/client-sdks/platform/typescript/docs/models/operations/commandrequest.md new file mode 100644 index 000000000..a00f69c11 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/commandrequest.md @@ -0,0 +1,19 @@ +# CommandRequest + +## Example Usage + +```typescript +import { CommandRequest } from "@alienplatform/platform-api/models/operations"; + +let value: CommandRequest = { + command: "kubernetes/get-pods", + summary: "List pods in the ingestion namespace", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | +| `command` | *string* | :heavy_check_mark: | N/A | kubernetes/get-pods | +| `summary` | *string* | :heavy_check_mark: | N/A | List pods in the ingestion namespace | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/configureprojectbucketsaccess.md b/client-sdks/platform/typescript/docs/models/operations/configureprojectbucketsaccess.md new file mode 100644 index 000000000..6615d8c53 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/configureprojectbucketsaccess.md @@ -0,0 +1,15 @@ +# ConfigureProjectBucketsAccess + +## Example Usage + +```typescript +import { ConfigureProjectBucketsAccess } from "@alienplatform/platform-api/models/operations"; + +let value: ConfigureProjectBucketsAccess = "read-write"; +``` + +## Values + +```typescript +"read-write" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/configureprojectbucketsrequest.md b/client-sdks/platform/typescript/docs/models/operations/configureprojectbucketsrequest.md new file mode 100644 index 000000000..6bf22c0ec --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/configureprojectbucketsrequest.md @@ -0,0 +1,20 @@ +# ConfigureProjectBucketsRequest + +## Example Usage + +```typescript +import { ConfigureProjectBucketsRequest } from "@alienplatform/platform-api/models/operations"; + +let value: ConfigureProjectBucketsRequest = { + idOrName: "", + workspace: "my-workspace", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `idOrName` | *string* | :heavy_check_mark: | Project ID or name. | | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | +| `requestBody` | [operations.ConfigureProjectBucketsRequestBody](../../models/operations/configureprojectbucketsrequestbody.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/configureprojectbucketsrequestbody.md b/client-sdks/platform/typescript/docs/models/operations/configureprojectbucketsrequestbody.md new file mode 100644 index 000000000..780528c4e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/configureprojectbucketsrequestbody.md @@ -0,0 +1,17 @@ +# ConfigureProjectBucketsRequestBody + +## Example Usage + +```typescript +import { ConfigureProjectBucketsRequestBody } from "@alienplatform/platform-api/models/operations"; + +let value: ConfigureProjectBucketsRequestBody = { + access: "read-write", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `access` | [operations.ConfigureProjectBucketsAccess](../../models/operations/configureprojectbucketsaccess.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/configureprojectcustomerkeyrequest.md b/client-sdks/platform/typescript/docs/models/operations/configureprojectcustomerkeyrequest.md deleted file mode 100644 index 73d407dd8..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/configureprojectcustomerkeyrequest.md +++ /dev/null @@ -1,20 +0,0 @@ -# ConfigureProjectCustomerKeyRequest - -## Example Usage - -```typescript -import { ConfigureProjectCustomerKeyRequest } from "@alienplatform/platform-api/models/operations"; - -let value: ConfigureProjectCustomerKeyRequest = { - idOrName: "", - workspace: "my-workspace", -}; -``` - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `idOrName` | *string* | :heavy_check_mark: | Project ID or name. | | -| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | -| `requestBody` | [operations.ConfigureProjectCustomerKeyRequestBody](../../models/operations/configureprojectcustomerkeyrequestbody.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/configureprojectcustomerkeyrequestbody.md b/client-sdks/platform/typescript/docs/models/operations/configureprojectcustomerkeyrequestbody.md deleted file mode 100644 index 97b07d58a..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/configureprojectcustomerkeyrequestbody.md +++ /dev/null @@ -1,17 +0,0 @@ -# ConfigureProjectCustomerKeyRequestBody - -## Example Usage - -```typescript -import { ConfigureProjectCustomerKeyRequestBody } from "@alienplatform/platform-api/models/operations"; - -let value: ConfigureProjectCustomerKeyRequestBody = { - applicationEncryption: true, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ----------------------- | ----------------------- | ----------------------- | ----------------------- | -| `applicationEncryption` | *boolean* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/configureprojectcustomermodelsrequest.md b/client-sdks/platform/typescript/docs/models/operations/configureprojectcustomermodelsrequest.md deleted file mode 100644 index e9a7ba379..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/configureprojectcustomermodelsrequest.md +++ /dev/null @@ -1,20 +0,0 @@ -# ConfigureProjectCustomerModelsRequest - -## Example Usage - -```typescript -import { ConfigureProjectCustomerModelsRequest } from "@alienplatform/platform-api/models/operations"; - -let value: ConfigureProjectCustomerModelsRequest = { - idOrName: "", - workspace: "my-workspace", -}; -``` - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `idOrName` | *string* | :heavy_check_mark: | Project ID or name. | | -| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | -| `configureCustomerModelsRequest` | [models.ConfigureCustomerModelsRequest](../../models/configurecustomermodelsrequest.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/configureprojectdeploymentsrequest.md b/client-sdks/platform/typescript/docs/models/operations/configureprojectdeploymentsrequest.md new file mode 100644 index 000000000..0bfb3b1fa --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/configureprojectdeploymentsrequest.md @@ -0,0 +1,20 @@ +# ConfigureProjectDeploymentsRequest + +## Example Usage + +```typescript +import { ConfigureProjectDeploymentsRequest } from "@alienplatform/platform-api/models/operations"; + +let value: ConfigureProjectDeploymentsRequest = { + idOrName: "", + workspace: "my-workspace", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `idOrName` | *string* | :heavy_check_mark: | Project ID or name. | | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | +| `requestBody` | [operations.ConfigureProjectDeploymentsRequestBody](../../models/operations/configureprojectdeploymentsrequestbody.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/configureprojectdeploymentsrequestbody.md b/client-sdks/platform/typescript/docs/models/operations/configureprojectdeploymentsrequestbody.md new file mode 100644 index 000000000..1780efa4e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/configureprojectdeploymentsrequestbody.md @@ -0,0 +1,17 @@ +# ConfigureProjectDeploymentsRequestBody + +## Example Usage + +```typescript +import { ConfigureProjectDeploymentsRequestBody } from "@alienplatform/platform-api/models/operations"; + +let value: ConfigureProjectDeploymentsRequestBody = { + enabled: true, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `enabled` | *boolean* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/configureprojectkeysrequest.md b/client-sdks/platform/typescript/docs/models/operations/configureprojectkeysrequest.md new file mode 100644 index 000000000..2d796b54b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/configureprojectkeysrequest.md @@ -0,0 +1,20 @@ +# ConfigureProjectKeysRequest + +## Example Usage + +```typescript +import { ConfigureProjectKeysRequest } from "@alienplatform/platform-api/models/operations"; + +let value: ConfigureProjectKeysRequest = { + idOrName: "", + workspace: "my-workspace", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `idOrName` | *string* | :heavy_check_mark: | Project ID or name. | | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | +| `requestBody` | [operations.ConfigureProjectKeysRequestBody](../../models/operations/configureprojectkeysrequestbody.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/configureprojectkeysrequestbody.md b/client-sdks/platform/typescript/docs/models/operations/configureprojectkeysrequestbody.md new file mode 100644 index 000000000..c3763e9cf --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/configureprojectkeysrequestbody.md @@ -0,0 +1,17 @@ +# ConfigureProjectKeysRequestBody + +## Example Usage + +```typescript +import { ConfigureProjectKeysRequestBody } from "@alienplatform/platform-api/models/operations"; + +let value: ConfigureProjectKeysRequestBody = { + applicationEncryption: false, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------- | ----------------------- | ----------------------- | ----------------------- | +| `applicationEncryption` | *boolean* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/configureprojectmodelsrequest.md b/client-sdks/platform/typescript/docs/models/operations/configureprojectmodelsrequest.md new file mode 100644 index 000000000..e712fad88 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/configureprojectmodelsrequest.md @@ -0,0 +1,20 @@ +# ConfigureProjectModelsRequest + +## Example Usage + +```typescript +import { ConfigureProjectModelsRequest } from "@alienplatform/platform-api/models/operations"; + +let value: ConfigureProjectModelsRequest = { + idOrName: "", + workspace: "my-workspace", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `idOrName` | *string* | :heavy_check_mark: | Project ID or name. | | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | +| `configureModelsRequest` | [models.ConfigureModelsRequest](../../models/configuremodelsrequest.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/configureprojectregistrycredentialpolicy.md b/client-sdks/platform/typescript/docs/models/operations/configureprojectregistrycredentialpolicy.md new file mode 100644 index 000000000..301ad12d4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/configureprojectregistrycredentialpolicy.md @@ -0,0 +1,15 @@ +# ConfigureProjectRegistryCredentialPolicy + +## Example Usage + +```typescript +import { ConfigureProjectRegistryCredentialPolicy } from "@alienplatform/platform-api/models/operations"; + +let value: ConfigureProjectRegistryCredentialPolicy = "pull-only"; +``` + +## Values + +```typescript +"pull-only" | "push-and-pull" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/configureprojectregistryrequest.md b/client-sdks/platform/typescript/docs/models/operations/configureprojectregistryrequest.md new file mode 100644 index 000000000..36e4a1a66 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/configureprojectregistryrequest.md @@ -0,0 +1,20 @@ +# ConfigureProjectRegistryRequest + +## Example Usage + +```typescript +import { ConfigureProjectRegistryRequest } from "@alienplatform/platform-api/models/operations"; + +let value: ConfigureProjectRegistryRequest = { + idOrName: "", + workspace: "my-workspace", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `idOrName` | *string* | :heavy_check_mark: | Project ID or name. | | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | +| `requestBody` | [operations.ConfigureProjectRegistryRequestBody](../../models/operations/configureprojectregistryrequestbody.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/configureprojectregistryrequestbody.md b/client-sdks/platform/typescript/docs/models/operations/configureprojectregistryrequestbody.md new file mode 100644 index 000000000..0d346e862 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/configureprojectregistryrequestbody.md @@ -0,0 +1,22 @@ +# ConfigureProjectRegistryRequestBody + +## Example Usage + +```typescript +import { ConfigureProjectRegistryRequestBody } from "@alienplatform/platform-api/models/operations"; + +let value: ConfigureProjectRegistryRequestBody = { + repositories: [ + "", + "", + ], + credentialPolicy: "push-and-pull", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | +| `repositories` | *string*[] | :heavy_check_mark: | N/A | +| `credentialPolicy` | [operations.ConfigureProjectRegistryCredentialPolicy](../../models/operations/configureprojectregistrycredentialpolicy.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/configureprojectsourceaccess.md b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourceaccess.md new file mode 100644 index 000000000..28da06298 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourceaccess.md @@ -0,0 +1,15 @@ +# ConfigureProjectSourceAccess + +## Example Usage + +```typescript +import { ConfigureProjectSourceAccess } from "@alienplatform/platform-api/models/operations"; + +let value: ConfigureProjectSourceAccess = "read-write"; +``` + +## Values + +```typescript +"read-write" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/configureprojectsourceallowedprovider.md b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourceallowedprovider.md new file mode 100644 index 000000000..fbf0077dd --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourceallowedprovider.md @@ -0,0 +1,15 @@ +# ConfigureProjectSourceAllowedProvider + +## Example Usage + +```typescript +import { ConfigureProjectSourceAllowedProvider } from "@alienplatform/platform-api/models/operations"; + +let value: ConfigureProjectSourceAllowedProvider = "aws-bedrock"; +``` + +## Values + +```typescript +"aws-bedrock" | "gcp-vertex" | "azure-foundry" | "anthropic" | "databricks" | "openai" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcebinarytarget.md b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcebinarytarget.md new file mode 100644 index 000000000..62817ab01 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcebinarytarget.md @@ -0,0 +1,20 @@ +# ConfigureProjectSourceBinaryTarget + +Target OS and architecture for compiled binaries. + +Used as keys in package output maps (CLI binaries, Terraform providers, etc.) +and for cross-compilation target selection during builds. + +## Example Usage + +```typescript +import { ConfigureProjectSourceBinaryTarget } from "@alienplatform/platform-api/models/operations"; + +let value: ConfigureProjectSourceBinaryTarget = "linux-x64"; +``` + +## Values + +```typescript +"windows-x64" | "linux-x64" | "linux-arm64" | "darwin-arm64" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcebuckets.md b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcebuckets.md new file mode 100644 index 000000000..8462e9825 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcebuckets.md @@ -0,0 +1,19 @@ +# ConfigureProjectSourceBuckets + +## Example Usage + +```typescript +import { ConfigureProjectSourceBuckets } from "@alienplatform/platform-api/models/operations"; + +let value: ConfigureProjectSourceBuckets = { + enabled: true, + access: "read-write", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `enabled` | *boolean* | :heavy_check_mark: | N/A | +| `access` | [operations.ConfigureProjectSourceAccess](../../models/operations/configureprojectsourceaccess.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcecapabilities.md b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcecapabilities.md new file mode 100644 index 000000000..5c8348f12 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcecapabilities.md @@ -0,0 +1,19 @@ +# ConfigureProjectSourceCapabilities + +## Example Usage + +```typescript +import { ConfigureProjectSourceCapabilities } from "@alienplatform/platform-api/models/operations"; + +let value: ConfigureProjectSourceCapabilities = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | +| `deployments` | [operations.ConfigureProjectSourceDeployments](../../models/operations/configureprojectsourcedeployments.md) | :heavy_minus_sign: | N/A | +| `keys` | [operations.ConfigureProjectSourceKeys](../../models/operations/configureprojectsourcekeys.md) | :heavy_minus_sign: | N/A | +| `models` | [operations.ConfigureProjectSourceModels](../../models/operations/configureprojectsourcemodels.md) | :heavy_minus_sign: | N/A | +| `buckets` | [operations.ConfigureProjectSourceBuckets](../../models/operations/configureprojectsourcebuckets.md) | :heavy_minus_sign: | N/A | +| `registry` | [operations.ConfigureProjectSourceRegistry](../../models/operations/configureprojectsourceregistry.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcecli.md b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcecli.md new file mode 100644 index 000000000..82206f8cf --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcecli.md @@ -0,0 +1,24 @@ +# ConfigureProjectSourceCli + +CLI package configuration. If null, CLI packages will not be generated. + +## Example Usage + +```typescript +import { ConfigureProjectSourceCli } from "@alienplatform/platform-api/models/operations"; + +let value: ConfigureProjectSourceCli = { + displayName: "Mariana_Daniel41", + name: "", + enabled: true, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `binaryTargets` | [operations.ConfigureProjectSourceBinaryTarget](../../models/operations/configureprojectsourcebinarytarget.md)[] | :heavy_minus_sign: | Binary targets required by this package's setup consumer.

Older package rows omit this field and retain the historical all-target
behavior. Callers creating new packages should state their target set. | +| `displayName` | *string* | :heavy_check_mark: | Human-friendly display name for help banners and about text | +| `name` | *string* | :heavy_check_mark: | Binary name displayed in help and usage (e.g., "acmectl") | +| `enabled` | *boolean* | :heavy_check_mark: | Whether CLI package generation is enabled | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/configureprojectsourceclientapi.md b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourceclientapi.md new file mode 100644 index 000000000..247e1b75e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourceclientapi.md @@ -0,0 +1,15 @@ +# ConfigureProjectSourceClientApi + +## Example Usage + +```typescript +import { ConfigureProjectSourceClientApi } from "@alienplatform/platform-api/models/operations"; + +let value: ConfigureProjectSourceClientApi = "openai-responses"; +``` + +## Values + +```typescript +"openai-chat" | "openai-responses" | "anthropic-messages" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcecloudformation.md b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcecloudformation.md new file mode 100644 index 000000000..c7e97e649 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcecloudformation.md @@ -0,0 +1,20 @@ +# ConfigureProjectSourceCloudformation + +CloudFormation package configuration. If null, CloudFormation packages will not be generated. + +## Example Usage + +```typescript +import { ConfigureProjectSourceCloudformation } from "@alienplatform/platform-api/models/operations"; + +let value: ConfigureProjectSourceCloudformation = { + enabled: false, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `enabled` | *boolean* | :heavy_check_mark: | Whether CloudFormation package generation is enabled | +| `displayName` | *string* | :heavy_minus_sign: | Human-friendly application name shown in generated install artifacts | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcecredentialpolicy.md b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcecredentialpolicy.md new file mode 100644 index 000000000..d043ad70f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcecredentialpolicy.md @@ -0,0 +1,15 @@ +# ConfigureProjectSourceCredentialPolicy + +## Example Usage + +```typescript +import { ConfigureProjectSourceCredentialPolicy } from "@alienplatform/platform-api/models/operations"; + +let value: ConfigureProjectSourceCredentialPolicy = "push-and-pull"; +``` + +## Values + +```typescript +"pull-only" | "push-and-pull" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcedefaultmanagers.md b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcedefaultmanagers.md new file mode 100644 index 000000000..9e1afd180 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcedefaultmanagers.md @@ -0,0 +1,29 @@ +# ConfigureProjectSourceDefaultManagers + +Project default private managers for new push deployments. + +## Example Usage + +```typescript +import { ConfigureProjectSourceDefaultManagers } from "@alienplatform/platform-api/models/operations"; + +let value: ConfigureProjectSourceDefaultManagers = { + aws: "mgr_enxscjrqiiu2lrc672hwwuc5", + gcp: "mgr_enxscjrqiiu2lrc672hwwuc5", + azure: "mgr_enxscjrqiiu2lrc672hwwuc5", + kubernetes: "mgr_enxscjrqiiu2lrc672hwwuc5", + machines: "mgr_enxscjrqiiu2lrc672hwwuc5", + local: "mgr_enxscjrqiiu2lrc672hwwuc5", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| `aws` | *string* | :heavy_minus_sign: | Unique identifier for a default private manager. | mgr_enxscjrqiiu2lrc672hwwuc5 | +| `gcp` | *string* | :heavy_minus_sign: | Unique identifier for a default private manager. | mgr_enxscjrqiiu2lrc672hwwuc5 | +| `azure` | *string* | :heavy_minus_sign: | Unique identifier for a default private manager. | mgr_enxscjrqiiu2lrc672hwwuc5 | +| `kubernetes` | *string* | :heavy_minus_sign: | Unique identifier for a default private manager. | mgr_enxscjrqiiu2lrc672hwwuc5 | +| `machines` | *string* | :heavy_minus_sign: | Unique identifier for a default private manager. | mgr_enxscjrqiiu2lrc672hwwuc5 | +| `local` | *string* | :heavy_minus_sign: | Unique identifier for a default private manager. | mgr_enxscjrqiiu2lrc672hwwuc5 | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcedeploymentportalappearance.md b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcedeploymentportalappearance.md new file mode 100644 index 000000000..867f0e2f7 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcedeploymentportalappearance.md @@ -0,0 +1,24 @@ +# ConfigureProjectSourceDeploymentPortalAppearance + +Customer-facing deployment portal appearance settings. + +## Example Usage + +```typescript +import { ConfigureProjectSourceDeploymentPortalAppearance } from "@alienplatform/platform-api/models/operations"; + +let value: ConfigureProjectSourceDeploymentPortalAppearance = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | +| `avatarUrl` | *string* | :heavy_minus_sign: | Optional project-specific avatar override for the deployment portal. | +| `preset` | [models.DeploymentPortalAppearancePreset](../../models/deploymentportalappearancepreset.md) | :heavy_minus_sign: | Curated visual style for the deployment portal. | +| `accentColor` | [models.DeploymentPortalAccentColor](../../models/deploymentportalaccentcolor.md) | :heavy_minus_sign: | Accent color used for highlights and primary actions. | +| `title` | *string* | :heavy_minus_sign: | Optional portal title. Defaults to the project name. | +| `subtitle` | *string* | :heavy_minus_sign: | Optional customer-facing subtitle. | +| `supportUrl` | *string* | :heavy_minus_sign: | Optional support or contact URL. | +| `docsUrl` | *string* | :heavy_minus_sign: | Optional documentation URL. | +| `density` | [models.DeploymentPortalDensity](../../models/deploymentportaldensity.md) | :heavy_minus_sign: | Layout density for portal content. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcedeployments.md b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcedeployments.md new file mode 100644 index 000000000..aaf993ee7 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcedeployments.md @@ -0,0 +1,17 @@ +# ConfigureProjectSourceDeployments + +## Example Usage + +```typescript +import { ConfigureProjectSourceDeployments } from "@alienplatform/platform-api/models/operations"; + +let value: ConfigureProjectSourceDeployments = { + enabled: false, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `enabled` | *boolean* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcegithubsetup.md b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcegithubsetup.md new file mode 100644 index 000000000..575e5cc69 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcegithubsetup.md @@ -0,0 +1,19 @@ +# ConfigureProjectSourceGithubSetup + +## Example Usage + +```typescript +import { ConfigureProjectSourceGithubSetup } from "@alienplatform/platform-api/models/operations"; + +let value: ConfigureProjectSourceGithubSetup = { + pullRequestUrl: "https://evil-tackle.com", + workflowUrl: "https://total-swath.biz", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | +| `pullRequestUrl` | *string* | :heavy_check_mark: | URL to the pull request with the Alien build workflow | +| `workflowUrl` | *string* | :heavy_check_mark: | URL to the GitHub Actions workflow | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcegitrepositoryrequest.md b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcegitrepositoryrequest.md new file mode 100644 index 000000000..87ee6ded2 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcegitrepositoryrequest.md @@ -0,0 +1,19 @@ +# ConfigureProjectSourceGitRepositoryRequest + +## Example Usage + +```typescript +import { ConfigureProjectSourceGitRepositoryRequest } from "@alienplatform/platform-api/models/operations"; + +let value: ConfigureProjectSourceGitRepositoryRequest = { + type: "github", + repo: "alien/my-agent", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | +| `type` | [operations.ConfigureProjectSourceTypeRequest](../../models/operations/configureprojectsourcetyperequest.md) | :heavy_check_mark: | The Git Provider of the repository | github | +| `repo` | *string* | :heavy_check_mark: | The name of the git repository | alien/my-agent | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcegitrepositoryresponse.md b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcegitrepositoryresponse.md new file mode 100644 index 000000000..f4afe6371 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcegitrepositoryresponse.md @@ -0,0 +1,21 @@ +# ConfigureProjectSourceGitRepositoryResponse + +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`. + +## Example Usage + +```typescript +import { ConfigureProjectSourceGitRepositoryResponse } from "@alienplatform/platform-api/models/operations"; + +let value: ConfigureProjectSourceGitRepositoryResponse = { + type: "github", + repo: "alien/my-agent", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | +| `type` | [operations.ConfigureProjectSourceTypeResponse](../../models/operations/configureprojectsourcetyperesponse.md) | :heavy_check_mark: | The Git Provider of the repository | github | +| `repo` | *string* | :heavy_check_mark: | The name of the git repository | alien/my-agent | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcehelm.md b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcehelm.md new file mode 100644 index 000000000..14faaffed --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcehelm.md @@ -0,0 +1,23 @@ +# ConfigureProjectSourceHelm + +Helm chart package configuration. If null, Helm packages will not be generated. + +## Example Usage + +```typescript +import { ConfigureProjectSourceHelm } from "@alienplatform/platform-api/models/operations"; + +let value: ConfigureProjectSourceHelm = { + chartName: "", + description: "zowie furthermore vastly wherever sedately unused pip vice", + enabled: true, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| `chartName` | *string* | :heavy_check_mark: | Chart name (e.g., "acme-operator") | +| `description` | *string* | :heavy_check_mark: | Human-friendly description of the chart | +| `enabled` | *boolean* | :heavy_check_mark: | Whether Helm chart package generation is enabled | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcekeys.md b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcekeys.md new file mode 100644 index 000000000..27fd230a7 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcekeys.md @@ -0,0 +1,19 @@ +# ConfigureProjectSourceKeys + +## Example Usage + +```typescript +import { ConfigureProjectSourceKeys } from "@alienplatform/platform-api/models/operations"; + +let value: ConfigureProjectSourceKeys = { + enabled: false, + applicationEncryption: true, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------- | ----------------------- | ----------------------- | ----------------------- | +| `enabled` | *boolean* | :heavy_check_mark: | N/A | +| `applicationEncryption` | *boolean* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcemodels.md b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcemodels.md new file mode 100644 index 000000000..deab6681e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcemodels.md @@ -0,0 +1,21 @@ +# ConfigureProjectSourceModels + +## Example Usage + +```typescript +import { ConfigureProjectSourceModels } from "@alienplatform/platform-api/models/operations"; + +let value: ConfigureProjectSourceModels = { + enabled: true, + allowedProviders: [], + requirements: [], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | +| `enabled` | *boolean* | :heavy_check_mark: | N/A | +| `allowedProviders` | [operations.ConfigureProjectSourceAllowedProvider](../../models/operations/configureprojectsourceallowedprovider.md)[] | :heavy_check_mark: | N/A | +| `requirements` | [operations.ConfigureProjectSourceRequirement](../../models/operations/configureprojectsourcerequirement.md)[] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/configureprojectsourceoperatorimage.md b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourceoperatorimage.md new file mode 100644 index 000000000..c4770a564 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourceoperatorimage.md @@ -0,0 +1,26 @@ +# ConfigureProjectSourceOperatorImage + +Operator image package configuration. Required when Helm is enabled. If null, Operator image packages will not be generated. + +## Example Usage + +```typescript +import { ConfigureProjectSourceOperatorImage } from "@alienplatform/platform-api/models/operations"; + +let value: ConfigureProjectSourceOperatorImage = { + displayName: "Vinnie_Ernser0", + name: "", + enabled: false, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------- | --------------------------------------------------------- | --------------------------------------------------------- | --------------------------------------------------------- | +| `brand` | *string* | :heavy_minus_sign: | Short brand slug used for generated resource names. | +| `displayName` | *string* | :heavy_check_mark: | Human-friendly display name for logs and startup messages | +| `envPrefix` | *string* | :heavy_minus_sign: | Branded environment variable prefix (e.g., "ACME"). | +| `labelDomain` | *string* | :heavy_minus_sign: | Branded Kubernetes/cloud label domain (e.g., "acme.dev"). | +| `name` | *string* | :heavy_check_mark: | Image name (e.g., "acme-operator") | +| `enabled` | *boolean* | :heavy_check_mark: | Whether Operator image package generation is enabled | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcepackagesconfig.md b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcepackagesconfig.md new file mode 100644 index 000000000..2158c1850 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcepackagesconfig.md @@ -0,0 +1,21 @@ +# ConfigureProjectSourcePackagesConfig + +Configuration for embedded packages (CLI, CloudFormation, Helm, Terraform) + +## Example Usage + +```typescript +import { ConfigureProjectSourcePackagesConfig } from "@alienplatform/platform-api/models/operations"; + +let value: ConfigureProjectSourcePackagesConfig = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | +| `cli` | [operations.ConfigureProjectSourceCli](../../models/operations/configureprojectsourcecli.md) | :heavy_minus_sign: | CLI package configuration. If null, CLI packages will not be generated. | +| `cloudformation` | [operations.ConfigureProjectSourceCloudformation](../../models/operations/configureprojectsourcecloudformation.md) | :heavy_minus_sign: | CloudFormation package configuration. If null, CloudFormation packages will not be generated. | +| `operatorImage` | [operations.ConfigureProjectSourceOperatorImage](../../models/operations/configureprojectsourceoperatorimage.md) | :heavy_minus_sign: | Operator image package configuration. Required when Helm is enabled. If null, Operator image packages will not be generated. | +| `helm` | [operations.ConfigureProjectSourceHelm](../../models/operations/configureprojectsourcehelm.md) | :heavy_minus_sign: | Helm chart package configuration. If null, Helm packages will not be generated. | +| `terraform` | [operations.ConfigureProjectSourceTerraform](../../models/operations/configureprojectsourceterraform.md) | :heavy_minus_sign: | Terraform package configuration. If null, Terraform packages will not be generated. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/configureprojectsourceprojectcapabilities.md b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourceprojectcapabilities.md new file mode 100644 index 000000000..563031666 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourceprojectcapabilities.md @@ -0,0 +1,21 @@ +# ConfigureProjectSourceProjectCapabilities + +Capabilities this Project may offer through setup links. + +## Example Usage + +```typescript +import { ConfigureProjectSourceProjectCapabilities } from "@alienplatform/platform-api/models/operations"; + +let value: ConfigureProjectSourceProjectCapabilities = { + schemaVersion: 2614.33, + capabilities: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | +| `schemaVersion` | *number* | :heavy_check_mark: | N/A | +| `capabilities` | [operations.ConfigureProjectSourceCapabilities](../../models/operations/configureprojectsourcecapabilities.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/configureprojectsourceregistry.md b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourceregistry.md new file mode 100644 index 000000000..677d76e54 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourceregistry.md @@ -0,0 +1,24 @@ +# ConfigureProjectSourceRegistry + +## Example Usage + +```typescript +import { ConfigureProjectSourceRegistry } from "@alienplatform/platform-api/models/operations"; + +let value: ConfigureProjectSourceRegistry = { + enabled: false, + repositories: [ + "", + "", + ], + credentialPolicy: "pull-only", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | +| `enabled` | *boolean* | :heavy_check_mark: | N/A | +| `repositories` | *string*[] | :heavy_check_mark: | N/A | +| `credentialPolicy` | [operations.ConfigureProjectSourceCredentialPolicy](../../models/operations/configureprojectsourcecredentialpolicy.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcerepository.md b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcerepository.md new file mode 100644 index 000000000..1c7523c40 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcerepository.md @@ -0,0 +1,23 @@ +# ConfigureProjectSourceRepository + +## Example Usage + +```typescript +import { ConfigureProjectSourceRepository } from "@alienplatform/platform-api/models/operations"; + +let value: ConfigureProjectSourceRepository = { + mode: "repository", + gitRepository: { + type: "github", + repo: "alien/my-agent", + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| `mode` | *"repository"* | :heavy_check_mark: | N/A | +| `gitRepository` | [operations.ConfigureProjectSourceGitRepositoryRequest](../../models/operations/configureprojectsourcegitrepositoryrequest.md) | :heavy_check_mark: | N/A | +| `rootDirectory` | *string* | :heavy_minus_sign: | 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 | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcerequest.md b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcerequest.md new file mode 100644 index 000000000..b43169a52 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcerequest.md @@ -0,0 +1,20 @@ +# ConfigureProjectSourceRequest + +## Example Usage + +```typescript +import { ConfigureProjectSourceRequest } from "@alienplatform/platform-api/models/operations"; + +let value: ConfigureProjectSourceRequest = { + idOrName: "", + workspace: "my-workspace", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `idOrName` | *string* | :heavy_check_mark: | Project ID or name. | | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | +| `requestBody` | *operations.ConfigureProjectSourceRequestBody* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcerequestbody.md b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcerequestbody.md new file mode 100644 index 000000000..34d93682a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcerequestbody.md @@ -0,0 +1,27 @@ +# ConfigureProjectSourceRequestBody + + +## Supported Types + +### `operations.ConfigureProjectSourceRepository` + +```typescript +const value: operations.ConfigureProjectSourceRepository = { + mode: "repository", + gitRepository: { + type: "github", + repo: "alien/my-agent", + }, +}; +``` + +### `operations.TemplateRequest` + +```typescript +const value: operations.TemplateRequest = { + mode: "template", + targetNamespace: "", + templatePath: "examples/customer-models-ts", +}; +``` + diff --git a/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcerequirement.md b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcerequirement.md new file mode 100644 index 000000000..38ff91f50 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcerequirement.md @@ -0,0 +1,21 @@ +# ConfigureProjectSourceRequirement + +## Example Usage + +```typescript +import { ConfigureProjectSourceRequirement } from "@alienplatform/platform-api/models/operations"; + +let value: ConfigureProjectSourceRequirement = { + publicModelId: "", + clientApis: [], + required: false, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | +| `publicModelId` | *string* | :heavy_check_mark: | N/A | +| `clientApis` | [operations.ConfigureProjectSourceClientApi](../../models/operations/configureprojectsourceclientapi.md)[] | :heavy_check_mark: | N/A | +| `required` | *boolean* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/configureprojectsourceresponse.md b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourceresponse.md new file mode 100644 index 000000000..b40fa10d1 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourceresponse.md @@ -0,0 +1,48 @@ +# ConfigureProjectSourceResponse + +Project source connected and GitHub Actions configured. + +## Example Usage + +```typescript +import { ConfigureProjectSourceResponse } from "@alienplatform/platform-api/models/operations"; + +let value: ConfigureProjectSourceResponse = { + id: "prj_mcytp6z3j91f7tn5ryqsfwtr", + name: "my-app", + gitRepository: { + type: "github", + repo: "alien/my-agent", + }, + domainId: "dom_469m0agk8luj4s16sakmmpdd", + defaultManagers: { + aws: "mgr_enxscjrqiiu2lrc672hwwuc5", + gcp: "mgr_enxscjrqiiu2lrc672hwwuc5", + azure: "mgr_enxscjrqiiu2lrc672hwwuc5", + kubernetes: "mgr_enxscjrqiiu2lrc672hwwuc5", + machines: "mgr_enxscjrqiiu2lrc672hwwuc5", + local: "mgr_enxscjrqiiu2lrc672hwwuc5", + }, + createdAt: new Date("2024-09-07T16:13:47.309Z"), + workspaceId: "ws_It13CUaGEhLLAB87simX0", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the project. | prj_mcytp6z3j91f7tn5ryqsfwtr | +| `name` | *string* | :heavy_check_mark: | Project name. | my-app | +| `gitRepository` | [operations.ConfigureProjectSourceGitRepositoryResponse](../../models/operations/configureprojectsourcegitrepositoryresponse.md) | :heavy_minus_sign: | 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` | *string* | :heavy_minus_sign: | 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` | [operations.ConfigureProjectSourceDeploymentPortalAppearance](../../models/operations/configureprojectsourcedeploymentportalappearance.md) | :heavy_minus_sign: | Customer-facing deployment portal appearance settings. | | +| `packagesConfig` | [operations.ConfigureProjectSourcePackagesConfig](../../models/operations/configureprojectsourcepackagesconfig.md) | :heavy_minus_sign: | Configuration for embedded packages (CLI, CloudFormation, Helm, Terraform) | | +| `domainId` | *string* | :heavy_minus_sign: | Selected domain for this project (null = default system domain) | dom_469m0agk8luj4s16sakmmpdd | +| `defaultManagers` | [operations.ConfigureProjectSourceDefaultManagers](../../models/operations/configureprojectsourcedefaultmanagers.md) | :heavy_minus_sign: | Project default private managers for new push deployments. | | +| `projectCapabilities` | [operations.ConfigureProjectSourceProjectCapabilities](../../models/operations/configureprojectsourceprojectcapabilities.md) | :heavy_minus_sign: | Capabilities this Project may offer through setup links. | | +| `createdAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `workspaceId` | *string* | :heavy_check_mark: | Unique identifier for the workspace. | ws_It13CUaGEhLLAB87simX0 | +| `githubSetup` | [operations.ConfigureProjectSourceGithubSetup](../../models/operations/configureprojectsourcegithubsetup.md) | :heavy_minus_sign: | N/A | | +| `gitRepositoryWarning` | [models.APIError](../../models/apierror.md) | :heavy_minus_sign: | N/A | | +| `template` | [operations.ConfigureProjectSourceTemplateResponse](../../models/operations/configureprojectsourcetemplateresponse.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcesourcerepository.md b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcesourcerepository.md new file mode 100644 index 000000000..4990e0551 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcesourcerepository.md @@ -0,0 +1,15 @@ +# ConfigureProjectSourceSourceRepository + +## Example Usage + +```typescript +import { ConfigureProjectSourceSourceRepository } from "@alienplatform/platform-api/models/operations"; + +let value: ConfigureProjectSourceSourceRepository = "alienplatform/alien"; +``` + +## Values + +```typescript +"alienplatform/alien" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcetemplatepathrequest.md b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcetemplatepathrequest.md new file mode 100644 index 000000000..112bbabb8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcetemplatepathrequest.md @@ -0,0 +1,17 @@ +# ConfigureProjectSourceTemplatePathRequest + +Template root directory inside alienplatform/alien + +## Example Usage + +```typescript +import { ConfigureProjectSourceTemplatePathRequest } from "@alienplatform/platform-api/models/operations"; + +let value: ConfigureProjectSourceTemplatePathRequest = "examples/byoc-database"; +``` + +## Values + +```typescript +"examples/customer-models-ts" | "examples/remote-worker-ts" | "examples/github-agent/packages/remote-agent" | "examples/endpoint-agent" | "examples/byoc-database" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcetemplatepathresponse.md b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcetemplatepathresponse.md new file mode 100644 index 000000000..31d891a18 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcetemplatepathresponse.md @@ -0,0 +1,18 @@ +# ConfigureProjectSourceTemplatePathResponse + +Template root directory inside alienplatform/alien + +## Example Usage + +```typescript +import { ConfigureProjectSourceTemplatePathResponse } from "@alienplatform/platform-api/models/operations"; + +let value: ConfigureProjectSourceTemplatePathResponse = + "examples/remote-worker-ts"; +``` + +## Values + +```typescript +"examples/customer-models-ts" | "examples/remote-worker-ts" | "examples/github-agent/packages/remote-agent" | "examples/endpoint-agent" | "examples/byoc-database" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcetemplateresponse.md b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcetemplateresponse.md new file mode 100644 index 000000000..a48f2aaea --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcetemplateresponse.md @@ -0,0 +1,23 @@ +# ConfigureProjectSourceTemplateResponse + +## Example Usage + +```typescript +import { ConfigureProjectSourceTemplateResponse } from "@alienplatform/platform-api/models/operations"; + +let value: ConfigureProjectSourceTemplateResponse = { + sourceRepository: "alienplatform/alien", + forkRepository: "", + templatePath: "examples/customer-models-ts", + resolvedRootDirectory: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `sourceRepository` | [operations.ConfigureProjectSourceSourceRepository](../../models/operations/configureprojectsourcesourcerepository.md) | :heavy_check_mark: | N/A | +| `forkRepository` | *string* | :heavy_check_mark: | Fork repository in / format | +| `templatePath` | [operations.ConfigureProjectSourceTemplatePathResponse](../../models/operations/configureprojectsourcetemplatepathresponse.md) | :heavy_check_mark: | Template root directory inside alienplatform/alien | +| `resolvedRootDirectory` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/configureprojectsourceterraform.md b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourceterraform.md new file mode 100644 index 000000000..8bab7ba50 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourceterraform.md @@ -0,0 +1,20 @@ +# ConfigureProjectSourceTerraform + +Terraform package configuration. If null, Terraform packages will not be generated. + +## Example Usage + +```typescript +import { ConfigureProjectSourceTerraform } from "@alienplatform/platform-api/models/operations"; + +let value: ConfigureProjectSourceTerraform = { + enabled: true, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `enabled` | *boolean* | :heavy_check_mark: | Whether Terraform package generation is enabled | +| `displayName` | *string* | :heavy_minus_sign: | Human-friendly application name shown in generated install artifacts | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcetyperequest.md b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcetyperequest.md new file mode 100644 index 000000000..fbb1bfffb --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcetyperequest.md @@ -0,0 +1,17 @@ +# ConfigureProjectSourceTypeRequest + +The Git Provider of the repository + +## Example Usage + +```typescript +import { ConfigureProjectSourceTypeRequest } from "@alienplatform/platform-api/models/operations"; + +let value: ConfigureProjectSourceTypeRequest = "github"; +``` + +## Values + +```typescript +"github" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcetyperesponse.md b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcetyperesponse.md new file mode 100644 index 000000000..a26015ce8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/configureprojectsourcetyperesponse.md @@ -0,0 +1,17 @@ +# ConfigureProjectSourceTypeResponse + +The Git Provider of the repository + +## Example Usage + +```typescript +import { ConfigureProjectSourceTypeResponse } from "@alienplatform/platform-api/models/operations"; + +let value: ConfigureProjectSourceTypeResponse = "github"; +``` + +## Values + +```typescript +"github" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/continueawsvirtualkeyrequest.md b/client-sdks/platform/typescript/docs/models/operations/continueawsvirtualkeyrequest.md new file mode 100644 index 000000000..939b12293 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/continueawsvirtualkeyrequest.md @@ -0,0 +1,18 @@ +# ContinueAwsVirtualKeyRequest + +## Example Usage + +```typescript +import { ContinueAwsVirtualKeyRequest } from "@alienplatform/platform-api/models/operations"; + +let value: ContinueAwsVirtualKeyRequest = { + id: "vkey_0p9nwqgtftugsoey99lqyqq", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the aws virtual key. | vkey_0p9nwqgtftugsoey99lqyqq | +| `requestBody` | [operations.ContinueAwsVirtualKeyRequestBody](../../models/operations/continueawsvirtualkeyrequestbody.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/continueawsvirtualkeyrequestbody.md b/client-sdks/platform/typescript/docs/models/operations/continueawsvirtualkeyrequestbody.md new file mode 100644 index 000000000..5a41b1e05 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/continueawsvirtualkeyrequestbody.md @@ -0,0 +1,19 @@ +# ContinueAwsVirtualKeyRequestBody + +## Example Usage + +```typescript +import { ContinueAwsVirtualKeyRequestBody } from "@alienplatform/platform-api/models/operations"; + +let value: ContinueAwsVirtualKeyRequestBody = { + customKeyStoreId: "", + kmsKeyArn: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `customKeyStoreId` | *string* | :heavy_check_mark: | N/A | +| `kmsKeyArn` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/continueawsvirtualkeyresponse.md b/client-sdks/platform/typescript/docs/models/operations/continueawsvirtualkeyresponse.md new file mode 100644 index 000000000..ae2d6e520 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/continueawsvirtualkeyresponse.md @@ -0,0 +1,57 @@ +# ContinueAwsVirtualKeyResponse + +Updated AWS setup facts + +## Example Usage + +```typescript +import { ContinueAwsVirtualKeyResponse } from "@alienplatform/platform-api/models/operations"; + +let value: ContinueAwsVirtualKeyResponse = { + id: "vkey_0p9nwqgtftugsoey99lqyqq", + projectId: "", + status: "failed", + externalKeyId: "", + awsAccountId: "", + awsRegion: "", + customKeyStoreId: "", + kmsKeyArn: "", + alias: "", + description: "amount option provided last veto", + deletionWindowDays: 357589, + tags: { + "key": "", + "key1": "", + "key2": "", + }, + observedAt: new Date("2025-11-07T06:41:17.981Z"), + canaryPassedAt: new Date("2026-04-18T17:37:48.210Z"), + deletionScheduledAt: new Date("2025-12-03T03:03:06.265Z"), + finalDeletionObservedAt: new Date("2024-06-25T00:28:36.672Z"), + createdAt: new Date("2026-02-07T14:29:31.605Z"), + updatedAt: new Date("2026-12-25T13:39:40.933Z"), +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the aws virtual key. | vkey_0p9nwqgtftugsoey99lqyqq | +| `projectId` | *string* | :heavy_check_mark: | N/A | | +| `status` | [operations.ContinueAwsVirtualKeyStatus](../../models/operations/continueawsvirtualkeystatus.md) | :heavy_check_mark: | N/A | | +| `externalKeyId` | *string* | :heavy_check_mark: | N/A | | +| `awsAccountId` | *string* | :heavy_check_mark: | N/A | | +| `awsRegion` | *string* | :heavy_check_mark: | N/A | | +| `customKeyStoreId` | *string* | :heavy_check_mark: | N/A | | +| `kmsKeyArn` | *string* | :heavy_check_mark: | N/A | | +| `alias` | *string* | :heavy_check_mark: | N/A | | +| `description` | *string* | :heavy_check_mark: | N/A | | +| `deletionWindowDays` | *number* | :heavy_check_mark: | N/A | | +| `tags` | Record | :heavy_check_mark: | N/A | | +| `observedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `canaryPassedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `deletionScheduledAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `finalDeletionObservedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `createdAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `updatedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/continueawsvirtualkeystatus.md b/client-sdks/platform/typescript/docs/models/operations/continueawsvirtualkeystatus.md new file mode 100644 index 000000000..27b62e61d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/continueawsvirtualkeystatus.md @@ -0,0 +1,15 @@ +# ContinueAwsVirtualKeyStatus + +## Example Usage + +```typescript +import { ContinueAwsVirtualKeyStatus } from "@alienplatform/platform-api/models/operations"; + +let value: ContinueAwsVirtualKeyStatus = "deletion-pending"; +``` + +## Values + +```typescript +"provisioning" | "ready" | "action-required" | "decommissioning" | "deletion-pending" | "deleted" | "failed" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createaccessrequestcommandresponse.md b/client-sdks/platform/typescript/docs/models/operations/createaccessrequestcommandresponse.md new file mode 100644 index 000000000..7723789d7 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/createaccessrequestcommandresponse.md @@ -0,0 +1,19 @@ +# CreateAccessRequestCommandResponse + +## Example Usage + +```typescript +import { CreateAccessRequestCommandResponse } from "@alienplatform/platform-api/models/operations"; + +let value: CreateAccessRequestCommandResponse = { + command: "kubernetes/get-pods", + summary: "List pods in the ingestion namespace", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | +| `command` | *string* | :heavy_check_mark: | N/A | kubernetes/get-pods | +| `summary` | *string* | :heavy_check_mark: | N/A | List pods in the ingestion namespace | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createaccessrequestrequest.md b/client-sdks/platform/typescript/docs/models/operations/createaccessrequestrequest.md new file mode 100644 index 000000000..b10db88fe --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/createaccessrequestrequest.md @@ -0,0 +1,18 @@ +# CreateAccessRequestRequest + +## Example Usage + +```typescript +import { CreateAccessRequestRequest } from "@alienplatform/platform-api/models/operations"; + +let value: CreateAccessRequestRequest = { + workspace: "my-workspace", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | +| `requestBody` | [operations.CreateAccessRequestRequestBody](../../models/operations/createaccessrequestrequestbody.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createaccessrequestrequestbody.md b/client-sdks/platform/typescript/docs/models/operations/createaccessrequestrequestbody.md new file mode 100644 index 000000000..941a8ff5f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/createaccessrequestrequestbody.md @@ -0,0 +1,24 @@ +# CreateAccessRequestRequestBody + +## Example Usage + +```typescript +import { CreateAccessRequestRequestBody } from "@alienplatform/platform-api/models/operations"; + +let value: CreateAccessRequestRequestBody = { + deploymentId: "", + remediationPlanId: "", + title: "", + commands: [], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | +| `deploymentId` | *string* | :heavy_check_mark: | N/A | +| `remediationPlanId` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | +| `reason` | *string* | :heavy_minus_sign: | N/A | +| `commands` | [operations.CommandRequest](../../models/operations/commandrequest.md)[] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createaccessrequestresponse.md b/client-sdks/platform/typescript/docs/models/operations/createaccessrequestresponse.md new file mode 100644 index 000000000..c8ca4bafd --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/createaccessrequestresponse.md @@ -0,0 +1,38 @@ +# CreateAccessRequestResponse + +The created access request. + +## Example Usage + +```typescript +import { CreateAccessRequestResponse } from "@alienplatform/platform-api/models/operations"; + +let value: CreateAccessRequestResponse = { + id: "", + deploymentId: "", + remediationPlanId: "", + title: "", + reason: "", + commands: [ + { + command: "kubernetes/get-pods", + summary: "List pods in the ingestion namespace", + }, + ], + status: "rejected", + approvedUntil: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | N/A | +| `deploymentId` | *string* | :heavy_check_mark: | N/A | +| `remediationPlanId` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | +| `reason` | *string* | :heavy_check_mark: | N/A | +| `commands` | [operations.CreateAccessRequestCommandResponse](../../models/operations/createaccessrequestcommandresponse.md)[] | :heavy_check_mark: | N/A | +| `status` | [operations.CreateAccessRequestStatus](../../models/operations/createaccessrequeststatus.md) | :heavy_check_mark: | N/A | +| `approvedUntil` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createaccessrequeststatus.md b/client-sdks/platform/typescript/docs/models/operations/createaccessrequeststatus.md new file mode 100644 index 000000000..a3b4d08b2 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/createaccessrequeststatus.md @@ -0,0 +1,15 @@ +# CreateAccessRequestStatus + +## Example Usage + +```typescript +import { CreateAccessRequestStatus } from "@alienplatform/platform-api/models/operations"; + +let value: CreateAccessRequestStatus = "rejected"; +``` + +## Values + +```typescript +"pending-approval" | "queued" | "customer-approved" | "expired" | "rejected" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createawsvirtualkeyrequest.md b/client-sdks/platform/typescript/docs/models/operations/createawsvirtualkeyrequest.md new file mode 100644 index 000000000..096834b25 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/createawsvirtualkeyrequest.md @@ -0,0 +1,30 @@ +# CreateAwsVirtualKeyRequest + +## Example Usage + +```typescript +import { CreateAwsVirtualKeyRequest } from "@alienplatform/platform-api/models/operations"; + +let value: CreateAwsVirtualKeyRequest = { + selector: { + externalId: "ext_example_01", + }, + awsAccountId: "", + awsRegion: "", + idempotencyKey: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------- | ----------------------------- | ----------------------------- | ----------------------------- | +| `project` | *string* | :heavy_minus_sign: | Filter by project ID or name. | +| `selector` | *operations.SelectorUnion* | :heavy_check_mark: | N/A | +| `awsAccountId` | *string* | :heavy_check_mark: | N/A | +| `awsRegion` | *string* | :heavy_check_mark: | N/A | +| `idempotencyKey` | *string* | :heavy_check_mark: | N/A | +| `alias` | *string* | :heavy_minus_sign: | N/A | +| `description` | *string* | :heavy_minus_sign: | N/A | +| `deletionWindowDays` | *number* | :heavy_minus_sign: | N/A | +| `tags` | Record | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createawsvirtualkeyresponse.md b/client-sdks/platform/typescript/docs/models/operations/createawsvirtualkeyresponse.md new file mode 100644 index 000000000..ea6110c1c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/createawsvirtualkeyresponse.md @@ -0,0 +1,48 @@ +# CreateAwsVirtualKeyResponse + +Created or resumed Virtual Key + +## Example Usage + +```typescript +import { CreateAwsVirtualKeyResponse } from "@alienplatform/platform-api/models/operations"; + +let value: CreateAwsVirtualKeyResponse = { + virtualKey: { + id: "vkey_0p9nwqgtftugsoey99lqyqq", + projectId: "", + status: "ready", + externalKeyId: "", + awsAccountId: "", + awsRegion: "", + customKeyStoreId: "", + kmsKeyArn: "", + alias: "", + description: "drat confirm aboard after thigh", + deletionWindowDays: 158206, + tags: { + "key": "", + }, + observedAt: new Date("2024-04-21T01:17:14.876Z"), + canaryPassedAt: new Date("2026-03-05T20:02:13.242Z"), + deletionScheduledAt: new Date("2024-12-03T10:50:36.022Z"), + finalDeletionObservedAt: new Date("2024-11-02T19:54:50.258Z"), + createdAt: new Date("2026-07-13T11:47:49.577Z"), + updatedAt: new Date("2025-03-28T18:57:53.378Z"), + }, + setup: { + proxyUriEndpoint: "https://enchanting-bidet.com/", + proxyUriPath: "", + accessKeyId: "", + secretAccessKey: "", + externalKeyId: "", + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `virtualKey` | [operations.CreateAwsVirtualKeyVirtualKey](../../models/operations/createawsvirtualkeyvirtualkey.md) | :heavy_check_mark: | N/A | +| `setup` | [operations.CreateAwsVirtualKeySetup](../../models/operations/createawsvirtualkeysetup.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createawsvirtualkeysetup.md b/client-sdks/platform/typescript/docs/models/operations/createawsvirtualkeysetup.md new file mode 100644 index 000000000..df93d57f2 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/createawsvirtualkeysetup.md @@ -0,0 +1,25 @@ +# CreateAwsVirtualKeySetup + +## Example Usage + +```typescript +import { CreateAwsVirtualKeySetup } from "@alienplatform/platform-api/models/operations"; + +let value: CreateAwsVirtualKeySetup = { + proxyUriEndpoint: "https://stained-developmental.com/", + proxyUriPath: "", + accessKeyId: "", + secretAccessKey: "", + externalKeyId: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `proxyUriEndpoint` | *string* | :heavy_check_mark: | N/A | +| `proxyUriPath` | *string* | :heavy_check_mark: | N/A | +| `accessKeyId` | *string* | :heavy_check_mark: | N/A | +| `secretAccessKey` | *string* | :heavy_check_mark: | N/A | +| `externalKeyId` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createawsvirtualkeystatus.md b/client-sdks/platform/typescript/docs/models/operations/createawsvirtualkeystatus.md new file mode 100644 index 000000000..ee05da093 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/createawsvirtualkeystatus.md @@ -0,0 +1,15 @@ +# CreateAwsVirtualKeyStatus + +## Example Usage + +```typescript +import { CreateAwsVirtualKeyStatus } from "@alienplatform/platform-api/models/operations"; + +let value: CreateAwsVirtualKeyStatus = "action-required"; +``` + +## Values + +```typescript +"provisioning" | "ready" | "action-required" | "decommissioning" | "deletion-pending" | "deleted" | "failed" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createawsvirtualkeyvirtualkey.md b/client-sdks/platform/typescript/docs/models/operations/createawsvirtualkeyvirtualkey.md new file mode 100644 index 000000000..fd61b96a3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/createawsvirtualkeyvirtualkey.md @@ -0,0 +1,54 @@ +# CreateAwsVirtualKeyVirtualKey + +## Example Usage + +```typescript +import { CreateAwsVirtualKeyVirtualKey } from "@alienplatform/platform-api/models/operations"; + +let value: CreateAwsVirtualKeyVirtualKey = { + id: "vkey_0p9nwqgtftugsoey99lqyqq", + projectId: "", + status: "provisioning", + externalKeyId: "", + awsAccountId: "", + awsRegion: "", + customKeyStoreId: "", + kmsKeyArn: "", + alias: "", + description: "instead er deceivingly", + deletionWindowDays: 668701, + tags: { + "key": "", + "key1": "", + }, + observedAt: null, + canaryPassedAt: new Date("2026-08-02T14:12:57.393Z"), + deletionScheduledAt: new Date("2026-10-08T05:12:41.922Z"), + finalDeletionObservedAt: null, + createdAt: new Date("2026-05-15T21:44:06.660Z"), + updatedAt: new Date("2026-04-07T19:01:17.142Z"), +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the aws virtual key. | vkey_0p9nwqgtftugsoey99lqyqq | +| `projectId` | *string* | :heavy_check_mark: | N/A | | +| `status` | [operations.CreateAwsVirtualKeyStatus](../../models/operations/createawsvirtualkeystatus.md) | :heavy_check_mark: | N/A | | +| `externalKeyId` | *string* | :heavy_check_mark: | N/A | | +| `awsAccountId` | *string* | :heavy_check_mark: | N/A | | +| `awsRegion` | *string* | :heavy_check_mark: | N/A | | +| `customKeyStoreId` | *string* | :heavy_check_mark: | N/A | | +| `kmsKeyArn` | *string* | :heavy_check_mark: | N/A | | +| `alias` | *string* | :heavy_check_mark: | N/A | | +| `description` | *string* | :heavy_check_mark: | N/A | | +| `deletionWindowDays` | *number* | :heavy_check_mark: | N/A | | +| `tags` | Record | :heavy_check_mark: | N/A | | +| `observedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `canaryPassedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `deletionScheduledAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `finalDeletionObservedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `createdAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `updatedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createcontainerregistrycredentialrequest.md b/client-sdks/platform/typescript/docs/models/operations/createcontainerregistrycredentialrequest.md new file mode 100644 index 000000000..c9ea31d85 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/createcontainerregistrycredentialrequest.md @@ -0,0 +1,20 @@ +# CreateContainerRegistryCredentialRequest + +## Example Usage + +```typescript +import { CreateContainerRegistryCredentialRequest } from "@alienplatform/platform-api/models/operations"; + +let value: CreateContainerRegistryCredentialRequest = { + id: "dg_r27ict8c7vcgsumpj90ackf7b", + workspace: "my-workspace", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the deployment group. | dg_r27ict8c7vcgsumpj90ackf7b | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | +| `requestBody` | [operations.CreateContainerRegistryCredentialRequestBody](../../models/operations/createcontainerregistrycredentialrequestbody.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createcontainerregistrycredentialrequestbody.md b/client-sdks/platform/typescript/docs/models/operations/createcontainerregistrycredentialrequestbody.md new file mode 100644 index 000000000..1c7074f39 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/createcontainerregistrycredentialrequestbody.md @@ -0,0 +1,21 @@ +# CreateContainerRegistryCredentialRequestBody + +## Example Usage + +```typescript +import { CreateContainerRegistryCredentialRequestBody } from "@alienplatform/platform-api/models/operations"; + +let value: CreateContainerRegistryCredentialRequestBody = { + label: "", + scope: "pushPull", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `label` | *string* | :heavy_check_mark: | N/A | +| `scope` | [operations.Scope](../../models/operations/scope.md) | :heavy_check_mark: | N/A | +| `repositorySubset` | *string*[] | :heavy_minus_sign: | N/A | +| `expiresAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createcontainerregistryrepositorydesiredstate.md b/client-sdks/platform/typescript/docs/models/operations/createcontainerregistryrepositorydesiredstate.md new file mode 100644 index 000000000..8ed1e73c9 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/createcontainerregistryrepositorydesiredstate.md @@ -0,0 +1,15 @@ +# CreateContainerRegistryRepositoryDesiredState + +## Example Usage + +```typescript +import { CreateContainerRegistryRepositoryDesiredState } from "@alienplatform/platform-api/models/operations"; + +let value: CreateContainerRegistryRepositoryDesiredState = "deleted"; +``` + +## Values + +```typescript +"present" | "deleteRequested" | "deleted" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createcontainerregistryrepositoryrequest.md b/client-sdks/platform/typescript/docs/models/operations/createcontainerregistryrepositoryrequest.md new file mode 100644 index 000000000..cf588b6bd --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/createcontainerregistryrepositoryrequest.md @@ -0,0 +1,20 @@ +# CreateContainerRegistryRepositoryRequest + +## Example Usage + +```typescript +import { CreateContainerRegistryRepositoryRequest } from "@alienplatform/platform-api/models/operations"; + +let value: CreateContainerRegistryRepositoryRequest = { + id: "dg_r27ict8c7vcgsumpj90ackf7b", + workspace: "my-workspace", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the deployment group. | dg_r27ict8c7vcgsumpj90ackf7b | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | +| `requestBody` | [operations.CreateContainerRegistryRepositoryRequestBody](../../models/operations/createcontainerregistryrepositoryrequestbody.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createcontainerregistryrepositoryrequestbody.md b/client-sdks/platform/typescript/docs/models/operations/createcontainerregistryrepositoryrequestbody.md new file mode 100644 index 000000000..b48f7fafe --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/createcontainerregistryrepositoryrequestbody.md @@ -0,0 +1,17 @@ +# CreateContainerRegistryRepositoryRequestBody + +## Example Usage + +```typescript +import { CreateContainerRegistryRepositoryRequestBody } from "@alienplatform/platform-api/models/operations"; + +let value: CreateContainerRegistryRepositoryRequestBody = { + name: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `name` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createcontainerregistryrepositoryresponse.md b/client-sdks/platform/typescript/docs/models/operations/createcontainerregistryrepositoryresponse.md new file mode 100644 index 000000000..b1e331e36 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/createcontainerregistryrepositoryresponse.md @@ -0,0 +1,27 @@ +# CreateContainerRegistryRepositoryResponse + +Repository requested + +## Example Usage + +```typescript +import { CreateContainerRegistryRepositoryResponse } from "@alienplatform/platform-api/models/operations"; + +let value: CreateContainerRegistryRepositoryResponse = { + id: "crrepo_625temdq3bnu25jw9rcux", + logicalName: "", + desiredState: "present", + status: "pending", + verifiedAt: null, +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the container registry repository. | crrepo_625temdq3bnu25jw9rcux | +| `logicalName` | *string* | :heavy_check_mark: | N/A | | +| `desiredState` | [operations.CreateContainerRegistryRepositoryDesiredState](../../models/operations/createcontainerregistryrepositorydesiredstate.md) | :heavy_check_mark: | N/A | | +| `status` | [operations.CreateContainerRegistryRepositoryStatus](../../models/operations/createcontainerregistryrepositorystatus.md) | :heavy_check_mark: | N/A | | +| `verifiedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createcontainerregistryrepositorystatus.md b/client-sdks/platform/typescript/docs/models/operations/createcontainerregistryrepositorystatus.md new file mode 100644 index 000000000..c7325423e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/createcontainerregistryrepositorystatus.md @@ -0,0 +1,15 @@ +# CreateContainerRegistryRepositoryStatus + +## Example Usage + +```typescript +import { CreateContainerRegistryRepositoryStatus } from "@alienplatform/platform-api/models/operations"; + +let value: CreateContainerRegistryRepositoryStatus = "deleting"; +``` + +## Values + +```typescript +"pending" | "creating" | "ready" | "deleting" | "deleted" | "failed" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createdomainrequestbody.md b/client-sdks/platform/typescript/docs/models/operations/createdomainrequestbody.md index db06a31dd..d14f1b767 100644 --- a/client-sdks/platform/typescript/docs/models/operations/createdomainrequestbody.md +++ b/client-sdks/platform/typescript/docs/models/operations/createdomainrequestbody.md @@ -15,7 +15,7 @@ let value: CreateDomainRequestBody = { ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | -| `domain` | *string* | :heavy_check_mark: | N/A | -| `setup` | [operations.Setup](../../models/operations/setup.md) | :heavy_minus_sign: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| `domain` | *string* | :heavy_check_mark: | N/A | +| `setup` | [operations.CreateDomainSetup](../../models/operations/createdomainsetup.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createdomainsetup.md b/client-sdks/platform/typescript/docs/models/operations/createdomainsetup.md new file mode 100644 index 000000000..ea3ced9a0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/createdomainsetup.md @@ -0,0 +1,20 @@ +# CreateDomainSetup + +## Example Usage + +```typescript +import { CreateDomainSetup } from "@alienplatform/platform-api/models/operations"; + +let value: CreateDomainSetup = { + deploymentUrlProjectId: "prj_mcytp6z3j91f7tn5ryqsfwtr", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | +| `deploymentPortal` | *boolean* | :heavy_minus_sign: | N/A | | +| `packages` | *boolean* | :heavy_minus_sign: | N/A | | +| `deploymentUrlProjectId` | *string* | :heavy_minus_sign: | Unique identifier for the project. | prj_mcytp6z3j91f7tn5ryqsfwtr | +| `managerIds` | *string*[] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createoperationsbundleuploadurlrequest.md b/client-sdks/platform/typescript/docs/models/operations/createoperationsbundleuploadurlrequest.md new file mode 100644 index 000000000..3ed65056b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/createoperationsbundleuploadurlrequest.md @@ -0,0 +1,20 @@ +# CreateOperationsBundleUploadUrlRequest + +## Example Usage + +```typescript +import { CreateOperationsBundleUploadUrlRequest } from "@alienplatform/platform-api/models/operations"; + +let value: CreateOperationsBundleUploadUrlRequest = { + workspace: "my-workspace", + project: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | +| `project` | *string* | :heavy_check_mark: | Filter by project ID or name. | | +| `operationsBundleUploadUrlRequest` | [models.OperationsBundleUploadUrlRequest](../../models/operationsbundleuploadurlrequest.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createprojectaccess.md b/client-sdks/platform/typescript/docs/models/operations/createprojectaccess.md new file mode 100644 index 000000000..46cf36c3e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/createprojectaccess.md @@ -0,0 +1,15 @@ +# CreateProjectAccess + +## Example Usage + +```typescript +import { CreateProjectAccess } from "@alienplatform/platform-api/models/operations"; + +let value: CreateProjectAccess = "read-write"; +``` + +## Values + +```typescript +"read-write" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createprojectallowedprovider.md b/client-sdks/platform/typescript/docs/models/operations/createprojectallowedprovider.md index 00a64d097..c5b33eef0 100644 --- a/client-sdks/platform/typescript/docs/models/operations/createprojectallowedprovider.md +++ b/client-sdks/platform/typescript/docs/models/operations/createprojectallowedprovider.md @@ -5,11 +5,11 @@ ```typescript import { CreateProjectAllowedProvider } from "@alienplatform/platform-api/models/operations"; -let value: CreateProjectAllowedProvider = "gcp-vertex"; +let value: CreateProjectAllowedProvider = "azure-foundry"; ``` ## Values ```typescript -"aws-bedrock" | "gcp-vertex" | "azure-foundry" | "anthropic" +"aws-bedrock" | "gcp-vertex" | "azure-foundry" | "anthropic" | "databricks" | "openai" ``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createprojectbuckets.md b/client-sdks/platform/typescript/docs/models/operations/createprojectbuckets.md new file mode 100644 index 000000000..082c56b23 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/createprojectbuckets.md @@ -0,0 +1,19 @@ +# CreateProjectBuckets + +## Example Usage + +```typescript +import { CreateProjectBuckets } from "@alienplatform/platform-api/models/operations"; + +let value: CreateProjectBuckets = { + enabled: false, + access: "read-write", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `enabled` | *boolean* | :heavy_check_mark: | N/A | +| `access` | [operations.CreateProjectAccess](../../models/operations/createprojectaccess.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createprojectcapabilities.md b/client-sdks/platform/typescript/docs/models/operations/createprojectcapabilities.md new file mode 100644 index 000000000..d20427f28 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/createprojectcapabilities.md @@ -0,0 +1,19 @@ +# CreateProjectCapabilities + +## Example Usage + +```typescript +import { CreateProjectCapabilities } from "@alienplatform/platform-api/models/operations"; + +let value: CreateProjectCapabilities = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `deployments` | [operations.CreateProjectDeployments](../../models/operations/createprojectdeployments.md) | :heavy_minus_sign: | N/A | +| `keys` | [operations.CreateProjectKeys](../../models/operations/createprojectkeys.md) | :heavy_minus_sign: | N/A | +| `models` | [operations.CreateProjectModels](../../models/operations/createprojectmodels.md) | :heavy_minus_sign: | N/A | +| `buckets` | [operations.CreateProjectBuckets](../../models/operations/createprojectbuckets.md) | :heavy_minus_sign: | N/A | +| `registry` | [operations.CreateProjectRegistry](../../models/operations/createprojectregistry.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createprojectconnections.md b/client-sdks/platform/typescript/docs/models/operations/createprojectconnections.md deleted file mode 100644 index 3fd947c8b..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/createprojectconnections.md +++ /dev/null @@ -1,16 +0,0 @@ -# CreateProjectConnections - -## Example Usage - -```typescript -import { CreateProjectConnections } from "@alienplatform/platform-api/models/operations"; - -let value: CreateProjectConnections = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -| `keys` | [operations.CreateProjectKeys](../../models/operations/createprojectkeys.md) | :heavy_minus_sign: | N/A | -| `models` | [operations.CreateProjectModels](../../models/operations/createprojectmodels.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createprojectcredentialpolicy.md b/client-sdks/platform/typescript/docs/models/operations/createprojectcredentialpolicy.md new file mode 100644 index 000000000..f2f7658c9 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/createprojectcredentialpolicy.md @@ -0,0 +1,15 @@ +# CreateProjectCredentialPolicy + +## Example Usage + +```typescript +import { CreateProjectCredentialPolicy } from "@alienplatform/platform-api/models/operations"; + +let value: CreateProjectCredentialPolicy = "push-and-pull"; +``` + +## Values + +```typescript +"pull-only" | "push-and-pull" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createprojectcustomerconnections.md b/client-sdks/platform/typescript/docs/models/operations/createprojectcustomerconnections.md deleted file mode 100644 index 213a84ce0..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/createprojectcustomerconnections.md +++ /dev/null @@ -1,21 +0,0 @@ -# CreateProjectCustomerConnections - -Customer infrastructure offered by this Project through exact built-in or application-authored sources. - -## Example Usage - -```typescript -import { CreateProjectCustomerConnections } from "@alienplatform/platform-api/models/operations"; - -let value: CreateProjectCustomerConnections = { - schemaVersion: 1656.01, - connections: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | -| `schemaVersion` | *number* | :heavy_check_mark: | N/A | -| `connections` | [operations.CreateProjectConnections](../../models/operations/createprojectconnections.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createprojectdeployments.md b/client-sdks/platform/typescript/docs/models/operations/createprojectdeployments.md new file mode 100644 index 000000000..8d13b44dd --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/createprojectdeployments.md @@ -0,0 +1,17 @@ +# CreateProjectDeployments + +## Example Usage + +```typescript +import { CreateProjectDeployments } from "@alienplatform/platform-api/models/operations"; + +let value: CreateProjectDeployments = { + enabled: false, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `enabled` | *boolean* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplateaccess.md b/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplateaccess.md new file mode 100644 index 000000000..22f31521d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplateaccess.md @@ -0,0 +1,15 @@ +# CreateProjectFromTemplateAccess + +## Example Usage + +```typescript +import { CreateProjectFromTemplateAccess } from "@alienplatform/platform-api/models/operations"; + +let value: CreateProjectFromTemplateAccess = "read-write"; +``` + +## Values + +```typescript +"read-write" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplateallowedprovider.md b/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplateallowedprovider.md index 78bcbe56e..0f8303f15 100644 --- a/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplateallowedprovider.md +++ b/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplateallowedprovider.md @@ -5,11 +5,11 @@ ```typescript import { CreateProjectFromTemplateAllowedProvider } from "@alienplatform/platform-api/models/operations"; -let value: CreateProjectFromTemplateAllowedProvider = "anthropic"; +let value: CreateProjectFromTemplateAllowedProvider = "openai"; ``` ## Values ```typescript -"aws-bedrock" | "gcp-vertex" | "azure-foundry" | "anthropic" +"aws-bedrock" | "gcp-vertex" | "azure-foundry" | "anthropic" | "databricks" | "openai" ``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplatebuckets.md b/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplatebuckets.md new file mode 100644 index 000000000..dfcfd28c0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplatebuckets.md @@ -0,0 +1,19 @@ +# CreateProjectFromTemplateBuckets + +## Example Usage + +```typescript +import { CreateProjectFromTemplateBuckets } from "@alienplatform/platform-api/models/operations"; + +let value: CreateProjectFromTemplateBuckets = { + enabled: false, + access: "read-write", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `enabled` | *boolean* | :heavy_check_mark: | N/A | +| `access` | [operations.CreateProjectFromTemplateAccess](../../models/operations/createprojectfromtemplateaccess.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplatecapabilities.md b/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplatecapabilities.md new file mode 100644 index 000000000..f3f74acfc --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplatecapabilities.md @@ -0,0 +1,19 @@ +# CreateProjectFromTemplateCapabilities + +## Example Usage + +```typescript +import { CreateProjectFromTemplateCapabilities } from "@alienplatform/platform-api/models/operations"; + +let value: CreateProjectFromTemplateCapabilities = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | +| `deployments` | [operations.CreateProjectFromTemplateDeployments](../../models/operations/createprojectfromtemplatedeployments.md) | :heavy_minus_sign: | N/A | +| `keys` | [operations.CreateProjectFromTemplateKeys](../../models/operations/createprojectfromtemplatekeys.md) | :heavy_minus_sign: | N/A | +| `models` | [operations.CreateProjectFromTemplateModels](../../models/operations/createprojectfromtemplatemodels.md) | :heavy_minus_sign: | N/A | +| `buckets` | [operations.CreateProjectFromTemplateBuckets](../../models/operations/createprojectfromtemplatebuckets.md) | :heavy_minus_sign: | N/A | +| `registry` | [operations.CreateProjectFromTemplateRegistry](../../models/operations/createprojectfromtemplateregistry.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplateconnections.md b/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplateconnections.md deleted file mode 100644 index 2f133bbb0..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplateconnections.md +++ /dev/null @@ -1,16 +0,0 @@ -# CreateProjectFromTemplateConnections - -## Example Usage - -```typescript -import { CreateProjectFromTemplateConnections } from "@alienplatform/platform-api/models/operations"; - -let value: CreateProjectFromTemplateConnections = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -| `keys` | [operations.CreateProjectFromTemplateKeys](../../models/operations/createprojectfromtemplatekeys.md) | :heavy_minus_sign: | N/A | -| `models` | [operations.CreateProjectFromTemplateModels](../../models/operations/createprojectfromtemplatemodels.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplatecredentialpolicy.md b/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplatecredentialpolicy.md new file mode 100644 index 000000000..141aa7ec5 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplatecredentialpolicy.md @@ -0,0 +1,15 @@ +# CreateProjectFromTemplateCredentialPolicy + +## Example Usage + +```typescript +import { CreateProjectFromTemplateCredentialPolicy } from "@alienplatform/platform-api/models/operations"; + +let value: CreateProjectFromTemplateCredentialPolicy = "push-and-pull"; +``` + +## Values + +```typescript +"pull-only" | "push-and-pull" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplatecustomerconnections.md b/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplatecustomerconnections.md deleted file mode 100644 index 97dc4871c..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplatecustomerconnections.md +++ /dev/null @@ -1,21 +0,0 @@ -# CreateProjectFromTemplateCustomerConnections - -Customer infrastructure offered by this Project through exact built-in or application-authored sources. - -## Example Usage - -```typescript -import { CreateProjectFromTemplateCustomerConnections } from "@alienplatform/platform-api/models/operations"; - -let value: CreateProjectFromTemplateCustomerConnections = { - schemaVersion: 9784.67, - connections: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | -| `schemaVersion` | *number* | :heavy_check_mark: | N/A | -| `connections` | [operations.CreateProjectFromTemplateConnections](../../models/operations/createprojectfromtemplateconnections.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplatedeployments.md b/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplatedeployments.md new file mode 100644 index 000000000..d2a3d536c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplatedeployments.md @@ -0,0 +1,17 @@ +# CreateProjectFromTemplateDeployments + +## Example Usage + +```typescript +import { CreateProjectFromTemplateDeployments } from "@alienplatform/platform-api/models/operations"; + +let value: CreateProjectFromTemplateDeployments = { + enabled: true, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `enabled` | *boolean* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplateprojectcapabilities.md b/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplateprojectcapabilities.md new file mode 100644 index 000000000..9a38684a6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplateprojectcapabilities.md @@ -0,0 +1,21 @@ +# CreateProjectFromTemplateProjectCapabilities + +Capabilities this Project may offer through setup links. + +## Example Usage + +```typescript +import { CreateProjectFromTemplateProjectCapabilities } from "@alienplatform/platform-api/models/operations"; + +let value: CreateProjectFromTemplateProjectCapabilities = { + schemaVersion: 1134.34, + capabilities: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `schemaVersion` | *number* | :heavy_check_mark: | N/A | +| `capabilities` | [operations.CreateProjectFromTemplateCapabilities](../../models/operations/createprojectfromtemplatecapabilities.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplateregistry.md b/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplateregistry.md new file mode 100644 index 000000000..168512dd2 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplateregistry.md @@ -0,0 +1,23 @@ +# CreateProjectFromTemplateRegistry + +## Example Usage + +```typescript +import { CreateProjectFromTemplateRegistry } from "@alienplatform/platform-api/models/operations"; + +let value: CreateProjectFromTemplateRegistry = { + enabled: true, + repositories: [ + "", + ], + credentialPolicy: "pull-only", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | +| `enabled` | *boolean* | :heavy_check_mark: | N/A | +| `repositories` | *string*[] | :heavy_check_mark: | N/A | +| `credentialPolicy` | [operations.CreateProjectFromTemplateCredentialPolicy](../../models/operations/createprojectfromtemplatecredentialpolicy.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplaterequestbody.md b/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplaterequestbody.md index 1b9d1d639..9d556d391 100644 --- a/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplaterequestbody.md +++ b/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplaterequestbody.md @@ -18,6 +18,6 @@ let value: CreateProjectFromTemplateRequestBody = { | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | | `name` | *string* | :heavy_check_mark: | Project name. | my-app | | `targetNamespace` | *string* | :heavy_check_mark: | GitHub owner namespace (user or organization) that will receive the fork | | -| `templatePath` | [operations.TemplatePathRequest](../../models/operations/templatepathrequest.md) | :heavy_check_mark: | Template root directory inside alienplatform/alien | | +| `templatePath` | [operations.CreateProjectFromTemplateTemplatePathRequest](../../models/operations/createprojectfromtemplatetemplatepathrequest.md) | :heavy_check_mark: | Template root directory inside alienplatform/alien | | | `rootDirectory` | *string* | :heavy_minus_sign: | 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` | [operations.CreateProjectFromTemplatePackagesConfigRequest](../../models/operations/createprojectfromtemplatepackagesconfigrequest.md) | :heavy_minus_sign: | Configuration for embedded packages (CLI, CloudFormation, Helm, Terraform) | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplateresponse.md b/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplateresponse.md index 26577dcdb..1039b1422 100644 --- a/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplateresponse.md +++ b/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplateresponse.md @@ -46,9 +46,9 @@ let value: CreateProjectFromTemplateResponse = { | `packagesConfig` | [operations.CreateProjectFromTemplatePackagesConfigResponse](../../models/operations/createprojectfromtemplatepackagesconfigresponse.md) | :heavy_minus_sign: | Configuration for embedded packages (CLI, CloudFormation, Helm, Terraform) | | | `domainId` | *string* | :heavy_minus_sign: | Selected domain for this project (null = default system domain) | dom_469m0agk8luj4s16sakmmpdd | | `defaultManagers` | [operations.CreateProjectFromTemplateDefaultManagers](../../models/operations/createprojectfromtemplatedefaultmanagers.md) | :heavy_minus_sign: | Project default private managers for new push deployments. | | -| `customerConnections` | [operations.CreateProjectFromTemplateCustomerConnections](../../models/operations/createprojectfromtemplatecustomerconnections.md) | :heavy_minus_sign: | Customer infrastructure offered by this Project through exact built-in or application-authored sources. | | +| `projectCapabilities` | [operations.CreateProjectFromTemplateProjectCapabilities](../../models/operations/createprojectfromtemplateprojectcapabilities.md) | :heavy_minus_sign: | Capabilities this Project may offer through setup links. | | | `createdAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | | `workspaceId` | *string* | :heavy_check_mark: | Unique identifier for the workspace. | ws_It13CUaGEhLLAB87simX0 | | `githubSetup` | [operations.CreateProjectFromTemplateGithubSetup](../../models/operations/createprojectfromtemplategithubsetup.md) | :heavy_minus_sign: | N/A | | | `gitRepositoryWarning` | [models.APIError](../../models/apierror.md) | :heavy_minus_sign: | N/A | | -| `template` | [operations.Template](../../models/operations/template.md) | :heavy_check_mark: | N/A | | \ No newline at end of file +| `template` | [operations.CreateProjectFromTemplateTemplate](../../models/operations/createprojectfromtemplatetemplate.md) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplatesourcerepository.md b/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplatesourcerepository.md new file mode 100644 index 000000000..47f3a1715 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplatesourcerepository.md @@ -0,0 +1,15 @@ +# CreateProjectFromTemplateSourceRepository + +## Example Usage + +```typescript +import { CreateProjectFromTemplateSourceRepository } from "@alienplatform/platform-api/models/operations"; + +let value: CreateProjectFromTemplateSourceRepository = "alienplatform/alien"; +``` + +## Values + +```typescript +"alienplatform/alien" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplatetemplate.md b/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplatetemplate.md new file mode 100644 index 000000000..07c223ae4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplatetemplate.md @@ -0,0 +1,23 @@ +# CreateProjectFromTemplateTemplate + +## Example Usage + +```typescript +import { CreateProjectFromTemplateTemplate } from "@alienplatform/platform-api/models/operations"; + +let value: CreateProjectFromTemplateTemplate = { + sourceRepository: "alienplatform/alien", + forkRepository: "", + templatePath: "examples/remote-worker-ts", + resolvedRootDirectory: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | +| `sourceRepository` | [operations.CreateProjectFromTemplateSourceRepository](../../models/operations/createprojectfromtemplatesourcerepository.md) | :heavy_check_mark: | N/A | +| `forkRepository` | *string* | :heavy_check_mark: | Fork repository in / format | +| `templatePath` | [operations.CreateProjectFromTemplateTemplatePathResponse](../../models/operations/createprojectfromtemplatetemplatepathresponse.md) | :heavy_check_mark: | Template root directory inside alienplatform/alien | +| `resolvedRootDirectory` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplatetemplatepathrequest.md b/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplatetemplatepathrequest.md new file mode 100644 index 000000000..c07a70782 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplatetemplatepathrequest.md @@ -0,0 +1,18 @@ +# CreateProjectFromTemplateTemplatePathRequest + +Template root directory inside alienplatform/alien + +## Example Usage + +```typescript +import { CreateProjectFromTemplateTemplatePathRequest } from "@alienplatform/platform-api/models/operations"; + +let value: CreateProjectFromTemplateTemplatePathRequest = + "examples/github-agent/packages/remote-agent"; +``` + +## Values + +```typescript +"examples/customer-models-ts" | "examples/remote-worker-ts" | "examples/github-agent/packages/remote-agent" | "examples/endpoint-agent" | "examples/byoc-database" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplatetemplatepathresponse.md b/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplatetemplatepathresponse.md new file mode 100644 index 000000000..a1b37a85b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/createprojectfromtemplatetemplatepathresponse.md @@ -0,0 +1,18 @@ +# CreateProjectFromTemplateTemplatePathResponse + +Template root directory inside alienplatform/alien + +## Example Usage + +```typescript +import { CreateProjectFromTemplateTemplatePathResponse } from "@alienplatform/platform-api/models/operations"; + +let value: CreateProjectFromTemplateTemplatePathResponse = + "examples/byoc-database"; +``` + +## Values + +```typescript +"examples/customer-models-ts" | "examples/remote-worker-ts" | "examples/github-agent/packages/remote-agent" | "examples/endpoint-agent" | "examples/byoc-database" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createprojectgitrepositoryrequest.md b/client-sdks/platform/typescript/docs/models/operations/createprojectgitrepositoryrequest.md new file mode 100644 index 000000000..5882887dd --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/createprojectgitrepositoryrequest.md @@ -0,0 +1,21 @@ +# CreateProjectGitRepositoryRequest + +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`. + +## Example Usage + +```typescript +import { CreateProjectGitRepositoryRequest } from "@alienplatform/platform-api/models/operations"; + +let value: CreateProjectGitRepositoryRequest = { + type: "github", + repo: "alien/my-agent", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `type` | [operations.CreateProjectTypeRequest](../../models/operations/createprojecttyperequest.md) | :heavy_check_mark: | The Git Provider of the repository | github | +| `repo` | *string* | :heavy_check_mark: | The name of the git repository | alien/my-agent | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createprojectmodels.md b/client-sdks/platform/typescript/docs/models/operations/createprojectmodels.md index f327b0084..1a0079ffc 100644 --- a/client-sdks/platform/typescript/docs/models/operations/createprojectmodels.md +++ b/client-sdks/platform/typescript/docs/models/operations/createprojectmodels.md @@ -8,7 +8,7 @@ import { CreateProjectModels } from "@alienplatform/platform-api/models/operatio let value: CreateProjectModels = { enabled: true, allowedProviders: [ - "aws-bedrock", + "gcp-vertex", ], requirements: [], }; diff --git a/client-sdks/platform/typescript/docs/models/operations/createprojectprojectcapabilities.md b/client-sdks/platform/typescript/docs/models/operations/createprojectprojectcapabilities.md new file mode 100644 index 000000000..a28d94d16 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/createprojectprojectcapabilities.md @@ -0,0 +1,21 @@ +# CreateProjectProjectCapabilities + +Capabilities this Project may offer through setup links. + +## Example Usage + +```typescript +import { CreateProjectProjectCapabilities } from "@alienplatform/platform-api/models/operations"; + +let value: CreateProjectProjectCapabilities = { + schemaVersion: 3573.45, + capabilities: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `schemaVersion` | *number* | :heavy_check_mark: | N/A | +| `capabilities` | [operations.CreateProjectCapabilities](../../models/operations/createprojectcapabilities.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createprojectregistry.md b/client-sdks/platform/typescript/docs/models/operations/createprojectregistry.md new file mode 100644 index 000000000..f6b83c6db --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/createprojectregistry.md @@ -0,0 +1,25 @@ +# CreateProjectRegistry + +## Example Usage + +```typescript +import { CreateProjectRegistry } from "@alienplatform/platform-api/models/operations"; + +let value: CreateProjectRegistry = { + enabled: true, + repositories: [ + "", + "", + "", + ], + credentialPolicy: "pull-only", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `enabled` | *boolean* | :heavy_check_mark: | N/A | +| `repositories` | *string*[] | :heavy_check_mark: | N/A | +| `credentialPolicy` | [operations.CreateProjectCredentialPolicy](../../models/operations/createprojectcredentialpolicy.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createprojectrequestbody.md b/client-sdks/platform/typescript/docs/models/operations/createprojectrequestbody.md index 7ac0698eb..4ad37826a 100644 --- a/client-sdks/platform/typescript/docs/models/operations/createprojectrequestbody.md +++ b/client-sdks/platform/typescript/docs/models/operations/createprojectrequestbody.md @@ -19,6 +19,6 @@ let value: CreateProjectRequestBody = { | Field | Type | Required | Description | Example | | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `name` | *string* | :heavy_check_mark: | Project name. | my-app | -| `gitRepository` | [operations.GitRepositoryRequest](../../models/operations/gitrepositoryrequest.md) | :heavy_minus_sign: | 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`. | | +| `gitRepository` | [operations.CreateProjectGitRepositoryRequest](../../models/operations/createprojectgitrepositoryrequest.md) | :heavy_minus_sign: | 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` | *string* | :heavy_minus_sign: | 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` | [operations.CreateProjectPackagesConfigRequest](../../models/operations/createprojectpackagesconfigrequest.md) | :heavy_minus_sign: | Configuration for embedded packages (CLI, CloudFormation, Helm, Terraform) | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createprojectresponse.md b/client-sdks/platform/typescript/docs/models/operations/createprojectresponse.md index 9d43ba524..ef7f265ed 100644 --- a/client-sdks/platform/typescript/docs/models/operations/createprojectresponse.md +++ b/client-sdks/platform/typescript/docs/models/operations/createprojectresponse.md @@ -40,7 +40,7 @@ let value: CreateProjectResponse = { | `packagesConfig` | [operations.CreateProjectPackagesConfigResponse](../../models/operations/createprojectpackagesconfigresponse.md) | :heavy_minus_sign: | Configuration for embedded packages (CLI, CloudFormation, Helm, Terraform) | | | `domainId` | *string* | :heavy_minus_sign: | Selected domain for this project (null = default system domain) | dom_469m0agk8luj4s16sakmmpdd | | `defaultManagers` | [operations.CreateProjectDefaultManagers](../../models/operations/createprojectdefaultmanagers.md) | :heavy_minus_sign: | Project default private managers for new push deployments. | | -| `customerConnections` | [operations.CreateProjectCustomerConnections](../../models/operations/createprojectcustomerconnections.md) | :heavy_minus_sign: | Customer infrastructure offered by this Project through exact built-in or application-authored sources. | | +| `projectCapabilities` | [operations.CreateProjectProjectCapabilities](../../models/operations/createprojectprojectcapabilities.md) | :heavy_minus_sign: | Capabilities this Project may offer through setup links. | | | `createdAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | | `workspaceId` | *string* | :heavy_check_mark: | Unique identifier for the workspace. | ws_It13CUaGEhLLAB87simX0 | | `githubSetup` | [operations.CreateProjectGithubSetup](../../models/operations/createprojectgithubsetup.md) | :heavy_minus_sign: | N/A | | diff --git a/client-sdks/platform/typescript/docs/models/operations/createreleasechannelrequest.md b/client-sdks/platform/typescript/docs/models/operations/createreleasechannelrequest.md new file mode 100644 index 000000000..a89462657 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/createreleasechannelrequest.md @@ -0,0 +1,20 @@ +# CreateReleaseChannelRequest + +## Example Usage + +```typescript +import { CreateReleaseChannelRequest } from "@alienplatform/platform-api/models/operations"; + +let value: CreateReleaseChannelRequest = { + workspace: "my-workspace", + project: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | +| `project` | *string* | :heavy_check_mark: | Filter by project ID or name. | | +| `requestBody` | [operations.CreateReleaseChannelRequestBody](../../models/operations/createreleasechannelrequestbody.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createreleasechannelrequestbody.md b/client-sdks/platform/typescript/docs/models/operations/createreleasechannelrequestbody.md new file mode 100644 index 000000000..42891cc04 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/createreleasechannelrequestbody.md @@ -0,0 +1,19 @@ +# CreateReleaseChannelRequestBody + +## Example Usage + +```typescript +import { CreateReleaseChannelRequestBody } from "@alienplatform/platform-api/models/operations"; + +let value: CreateReleaseChannelRequestBody = { + name: "", + releaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | +| `name` | *string* | :heavy_check_mark: | N/A | | +| `releaseId` | *string* | :heavy_minus_sign: | Unique identifier for the release. | rel_WbhQgksrawSKIpEN0NAssHX9 | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createremotebindingsexternalaccessrequest.md b/client-sdks/platform/typescript/docs/models/operations/createremotebindingsexternalaccessrequest.md new file mode 100644 index 000000000..a5b33270a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/createremotebindingsexternalaccessrequest.md @@ -0,0 +1,24 @@ +# CreateRemoteBindingsExternalAccessRequest + +## Example Usage + +```typescript +import { CreateRemoteBindingsExternalAccessRequest } from "@alienplatform/platform-api/models/operations"; + +let value: CreateRemoteBindingsExternalAccessRequest = { + idOrName: "", + workspace: "my-workspace", + remoteBindingsExternalAccessRequest: { + externalId: "ext_example_01", + capability: "storage", + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `idOrName` | *string* | :heavy_check_mark: | Project ID or name. | | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | +| `remoteBindingsExternalAccessRequest` | [models.RemoteBindingsExternalAccessRequest](../../models/remotebindingsexternalaccessrequest.md) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createworkspaceinvitationrequest.md b/client-sdks/platform/typescript/docs/models/operations/createworkspaceinvitationrequest.md new file mode 100644 index 000000000..ebe50a0a3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/createworkspaceinvitationrequest.md @@ -0,0 +1,20 @@ +# CreateWorkspaceInvitationRequest + +## Example Usage + +```typescript +import { CreateWorkspaceInvitationRequest } from "@alienplatform/platform-api/models/operations"; + +let value: CreateWorkspaceInvitationRequest = { + id: "ws_It13CUaGEhLLAB87simX0", + workspace: "my-workspace", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the workspace. | ws_It13CUaGEhLLAB87simX0 | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | +| `requestBody` | [operations.CreateWorkspaceInvitationRequestBody](../../models/operations/createworkspaceinvitationrequestbody.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createworkspaceinvitationrequestbody.md b/client-sdks/platform/typescript/docs/models/operations/createworkspaceinvitationrequestbody.md new file mode 100644 index 000000000..f72dc59f5 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/createworkspaceinvitationrequestbody.md @@ -0,0 +1,19 @@ +# CreateWorkspaceInvitationRequestBody + +## Example Usage + +```typescript +import { CreateWorkspaceInvitationRequestBody } from "@alienplatform/platform-api/models/operations"; + +let value: CreateWorkspaceInvitationRequestBody = { + email: "Tyrell_Kris74@hotmail.com", + role: "workspace.member", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | +| `email` | *string* | :heavy_check_mark: | N/A | | +| `role` | [models.WorkspaceRole](../../models/workspacerole.md) | :heavy_check_mark: | Role for workspace-scoped service accounts | workspace.member | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createworkspaceinvitelinkrequest.md b/client-sdks/platform/typescript/docs/models/operations/createworkspaceinvitelinkrequest.md new file mode 100644 index 000000000..9a9449626 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/createworkspaceinvitelinkrequest.md @@ -0,0 +1,20 @@ +# CreateWorkspaceInviteLinkRequest + +## Example Usage + +```typescript +import { CreateWorkspaceInviteLinkRequest } from "@alienplatform/platform-api/models/operations"; + +let value: CreateWorkspaceInviteLinkRequest = { + id: "ws_It13CUaGEhLLAB87simX0", + workspace: "my-workspace", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the workspace. | ws_It13CUaGEhLLAB87simX0 | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | +| `requestBody` | [operations.CreateWorkspaceInviteLinkRequestBody](../../models/operations/createworkspaceinvitelinkrequestbody.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/createworkspaceinvitelinkrequestbody.md b/client-sdks/platform/typescript/docs/models/operations/createworkspaceinvitelinkrequestbody.md new file mode 100644 index 000000000..6bccdb3d8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/createworkspaceinvitelinkrequestbody.md @@ -0,0 +1,17 @@ +# CreateWorkspaceInviteLinkRequestBody + +## Example Usage + +```typescript +import { CreateWorkspaceInviteLinkRequestBody } from "@alienplatform/platform-api/models/operations"; + +let value: CreateWorkspaceInviteLinkRequestBody = { + role: "workspace.member", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | +| `role` | [models.WorkspaceRole](../../models/workspacerole.md) | :heavy_check_mark: | Role for workspace-scoped service accounts | workspace.member | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/customer.md b/client-sdks/platform/typescript/docs/models/operations/customer.md new file mode 100644 index 000000000..8a4a571ea --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/customer.md @@ -0,0 +1,39 @@ +# Customer + +## Example Usage + +```typescript +import { Customer } from "@alienplatform/platform-api/models/operations"; + +let value: Customer = { + requests: 838630, + successfulRequests: 5761, + errorRequests: 743034, + averageLatencyMs: 5696.82, + p95LatencyMs: 7665.66, + inputTokens: 736621, + outputTokens: 995634, + estimatedCostMicrousd: 492495, + pricedRequests: 836432, + deploymentGroupId: "", + name: "", + externalId: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------- | ----------------------- | ----------------------- | ----------------------- | +| `requests` | *number* | :heavy_check_mark: | N/A | +| `successfulRequests` | *number* | :heavy_check_mark: | N/A | +| `errorRequests` | *number* | :heavy_check_mark: | N/A | +| `averageLatencyMs` | *number* | :heavy_check_mark: | N/A | +| `p95LatencyMs` | *number* | :heavy_check_mark: | N/A | +| `inputTokens` | *number* | :heavy_check_mark: | N/A | +| `outputTokens` | *number* | :heavy_check_mark: | N/A | +| `estimatedCostMicrousd` | *number* | :heavy_check_mark: | N/A | +| `pricedRequests` | *number* | :heavy_check_mark: | N/A | +| `deploymentGroupId` | *string* | :heavy_check_mark: | N/A | +| `name` | *string* | :heavy_check_mark: | N/A | +| `externalId` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/data6.md b/client-sdks/platform/typescript/docs/models/operations/data6.md new file mode 100644 index 000000000..8af6885ea --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/data6.md @@ -0,0 +1,30 @@ +# Data6 + +## Example Usage + +```typescript +import { Data6 } from "@alienplatform/platform-api/models/operations"; + +let value: Data6 = { + enabled: false, + keyArn: "", + keySpec: "", + keyState: "", + keyUsage: "", + status: { + health: "healthy", + lifecycle: "failed", + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `enabled` | *boolean* | :heavy_check_mark: | N/A | +| `keyArn` | *string* | :heavy_check_mark: | N/A | +| `keySpec` | *string* | :heavy_check_mark: | N/A | +| `keyState` | *string* | :heavy_check_mark: | N/A | +| `keyUsage` | *string* | :heavy_check_mark: | N/A | +| `status` | [operations.DataStatus70](../../models/operations/datastatus70.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/data7.md b/client-sdks/platform/typescript/docs/models/operations/data7.md new file mode 100644 index 000000000..b00810ef1 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/data7.md @@ -0,0 +1,27 @@ +# Data7 + +## Example Usage + +```typescript +import { Data7 } from "@alienplatform/platform-api/models/operations"; + +let value: Data7 = { + cryptoKeyName: "", + purpose: "", + status: { + health: "healthy", + lifecycle: "deleted", + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `algorithm` | *string* | :heavy_minus_sign: | N/A | +| `cryptoKeyName` | *string* | :heavy_check_mark: | N/A | +| `primaryState` | *string* | :heavy_minus_sign: | N/A | +| `primaryVersion` | *string* | :heavy_minus_sign: | N/A | +| `purpose` | *string* | :heavy_check_mark: | N/A | +| `status` | [operations.DataStatus71](../../models/operations/datastatus71.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/data8.md b/client-sdks/platform/typescript/docs/models/operations/data8.md new file mode 100644 index 000000000..a05227ac8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/data8.md @@ -0,0 +1,31 @@ +# Data8 + +## Example Usage + +```typescript +import { Data8 } from "@alienplatform/platform-api/models/operations"; + +let value: Data8 = { + keyId: "", + keyOperations: [ + "", + "", + ], + keyType: "", + status: { + health: "unhealthy", + lifecycle: "deleting", + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `enabled` | *boolean* | :heavy_minus_sign: | N/A | +| `keyId` | *string* | :heavy_check_mark: | N/A | +| `keyOperations` | *string*[] | :heavy_check_mark: | N/A | +| `keyType` | *string* | :heavy_check_mark: | N/A | +| `recoveryLevel` | *string* | :heavy_minus_sign: | N/A | +| `status` | [operations.DataStatus72](../../models/operations/datastatus72.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/dataai.md b/client-sdks/platform/typescript/docs/models/operations/dataai.md new file mode 100644 index 000000000..02df1a076 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/dataai.md @@ -0,0 +1,43 @@ +# DataAi + +## Example Usage + +```typescript +import { DataAi } from "@alienplatform/platform-api/models/operations"; + +let value: DataAi = { + data: { + availability: { + catalogRevision: "", + models: [ + { + accessTest: "not-checked", + availability: "unknown", + blockers: [], + clientApis: [], + publicModelId: "", + }, + ], + source: "anthropic", + }, + location: "", + project: "", + status: { + collectionIssues: [], + health: "degraded", + lifecycle: "unknown", + partial: false, + stale: false, + }, + backend: "gcpVertex", + }, + resourceType: "ai", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------ | ------------------------ | ------------------------ | ------------------------ | +| `data` | *operations.DataUnion16* | :heavy_check_mark: | N/A | +| `resourceType` | *"ai"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/dataaurora.md b/client-sdks/platform/typescript/docs/models/operations/dataaurora.md index 714a55fe0..db72894ed 100644 --- a/client-sdks/platform/typescript/docs/models/operations/dataaurora.md +++ b/client-sdks/platform/typescript/docs/models/operations/dataaurora.md @@ -1,5 +1,7 @@ # DataAurora +AWS Aurora Serverless v2 backend. + ## Example Usage ```typescript diff --git a/client-sdks/platform/typescript/docs/models/operations/dataaws1.md b/client-sdks/platform/typescript/docs/models/operations/dataaws1.md index 79c1407f7..26ac3ca36 100644 --- a/client-sdks/platform/typescript/docs/models/operations/dataaws1.md +++ b/client-sdks/platform/typescript/docs/models/operations/dataaws1.md @@ -63,6 +63,7 @@ let value: DataAws1 = { | `horizonStatusMessage` | *string* | :heavy_minus_sign: | N/A | | `horizonStatusReason` | *string* | :heavy_minus_sign: | N/A | | `latestUpdateTimestamp` | *string* | :heavy_check_mark: | N/A | +| `observedImage` | *string* | :heavy_minus_sign: | N/A | | `status` | [operations.DataStatus13](../../models/operations/datastatus13.md) | :heavy_check_mark: | N/A | | `unavailableInstances` | *number* | :heavy_check_mark: | N/A | | `backend` | *"aws"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/dataawsbedrock.md b/client-sdks/platform/typescript/docs/models/operations/dataawsbedrock.md new file mode 100644 index 000000000..557528bae --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/dataawsbedrock.md @@ -0,0 +1,40 @@ +# DataAwsBedrock + +## Example Usage + +```typescript +import { DataAwsBedrock } from "@alienplatform/platform-api/models/operations"; + +let value: DataAwsBedrock = { + availability: { + catalogRevision: "", + models: [], + source: "aws-bedrock", + }, + region: "", + status: { + collectionIssues: [ + { + message: "", + reason: "timed-out", + severity: "warning", + source: "", + }, + ], + health: "unhealthy", + lifecycle: "deleting", + partial: false, + stale: false, + }, + backend: "awsBedrock", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `availability` | [operations.Availability1](../../models/operations/availability1.md) | :heavy_check_mark: | N/A | +| `region` | *string* | :heavy_check_mark: | N/A | +| `status` | [operations.DataStatus66](../../models/operations/datastatus66.md) | :heavy_check_mark: | N/A | +| `backend` | *"awsBedrock"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/dataawsecr.md b/client-sdks/platform/typescript/docs/models/operations/dataawsecr.md index 60079cfef..09beee81b 100644 --- a/client-sdks/platform/typescript/docs/models/operations/dataawsecr.md +++ b/client-sdks/platform/typescript/docs/models/operations/dataawsecr.md @@ -35,16 +35,16 @@ let value: DataAwsEcr = { ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | -| `pullRoleArn` | *string* | :heavy_minus_sign: | N/A | -| `pushRoleArn` | *string* | :heavy_minus_sign: | N/A | -| `region` | *string* | :heavy_check_mark: | N/A | -| `registryId` | *string* | :heavy_check_mark: | N/A | -| `registryUri` | *string* | :heavy_check_mark: | N/A | -| `repositories` | [operations.Repository](../../models/operations/repository.md)[] | :heavy_check_mark: | N/A | -| `repositoriesTruncated` | *boolean* | :heavy_check_mark: | N/A | -| `repositoryCount` | *number* | :heavy_check_mark: | N/A | -| `repositoryPrefix` | *string* | :heavy_check_mark: | N/A | -| `status` | [operations.DataStatus52](../../models/operations/datastatus52.md) | :heavy_check_mark: | N/A | -| `backend` | *"awsEcr"* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | +| `pullRoleArn` | *string* | :heavy_minus_sign: | N/A | +| `pushRoleArn` | *string* | :heavy_minus_sign: | N/A | +| `region` | *string* | :heavy_check_mark: | N/A | +| `registryId` | *string* | :heavy_check_mark: | N/A | +| `registryUri` | *string* | :heavy_check_mark: | N/A | +| `repositories` | [operations.GetResourceDeploymentDetailRepository](../../models/operations/getresourcedeploymentdetailrepository.md)[] | :heavy_check_mark: | N/A | +| `repositoriesTruncated` | *boolean* | :heavy_check_mark: | N/A | +| `repositoryCount` | *number* | :heavy_check_mark: | N/A | +| `repositoryPrefix` | *string* | :heavy_check_mark: | N/A | +| `status` | [operations.DataStatus52](../../models/operations/datastatus52.md) | :heavy_check_mark: | N/A | +| `backend` | *"awsEcr"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/dataawskms.md b/client-sdks/platform/typescript/docs/models/operations/dataawskms.md new file mode 100644 index 000000000..f82a8251f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/dataawskms.md @@ -0,0 +1,29 @@ +# DataAwsKms + +## Example Usage + +```typescript +import { DataAwsKms } from "@alienplatform/platform-api/models/operations"; + +let value: DataAwsKms = { + data: { + enabled: true, + keyArn: "", + keySpec: "", + keyState: "", + keyUsage: "", + status: { + health: "healthy", + lifecycle: "failed", + }, + }, + provider: "aws-kms", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | +| `data` | [operations.Data6](../../models/operations/data6.md) | :heavy_check_mark: | N/A | +| `provider` | *"aws-kms"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/dataazure1.md b/client-sdks/platform/typescript/docs/models/operations/dataazure1.md index 15708477e..73f949fef 100644 --- a/client-sdks/platform/typescript/docs/models/operations/dataazure1.md +++ b/client-sdks/platform/typescript/docs/models/operations/dataazure1.md @@ -58,6 +58,7 @@ let value: DataAzure1 = { | `horizonStatusMessage` | *string* | :heavy_minus_sign: | N/A | | `horizonStatusReason` | *string* | :heavy_minus_sign: | N/A | | `latestUpdateTimestamp` | *string* | :heavy_check_mark: | N/A | +| `observedImage` | *string* | :heavy_minus_sign: | N/A | | `status` | [operations.DataStatus15](../../models/operations/datastatus15.md) | :heavy_check_mark: | N/A | | `unavailableInstances` | *number* | :heavy_check_mark: | N/A | | `backend` | *"azure"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/dataazurefoundry.md b/client-sdks/platform/typescript/docs/models/operations/dataazurefoundry.md new file mode 100644 index 000000000..62506ebce --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/dataazurefoundry.md @@ -0,0 +1,53 @@ +# DataAzureFoundry + +## Example Usage + +```typescript +import { DataAzureFoundry } from "@alienplatform/platform-api/models/operations"; + +let value: DataAzureFoundry = { + accountName: "", + availability: { + catalogRevision: "", + models: [ + { + accessTest: "verified", + availability: "available", + blockers: [], + clientApis: [ + "anthropic-messages", + ], + publicModelId: "", + }, + ], + source: "azure-foundry", + }, + status: { + collectionIssues: [ + { + message: "", + reason: "collection-failed", + severity: "warning", + source: "", + }, + ], + health: "unknown", + lifecycle: "stopping", + partial: false, + stale: false, + }, + backend: "azureFoundry", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `accountName` | *string* | :heavy_check_mark: | N/A | +| `availability` | [operations.Availability3](../../models/operations/availability3.md) | :heavy_check_mark: | N/A | +| `endpoint` | *string* | :heavy_minus_sign: | N/A | +| `location` | *string* | :heavy_minus_sign: | N/A | +| `resourceGroup` | *string* | :heavy_minus_sign: | N/A | +| `status` | [operations.DataStatus68](../../models/operations/datastatus68.md) | :heavy_check_mark: | N/A | +| `backend` | *"azureFoundry"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/dataazurekeyvault.md b/client-sdks/platform/typescript/docs/models/operations/dataazurekeyvault.md deleted file mode 100644 index 8fc82d923..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/dataazurekeyvault.md +++ /dev/null @@ -1,49 +0,0 @@ -# DataAzureKeyVault - -## Example Usage - -```typescript -import { DataAzureKeyVault } from "@alienplatform/platform-api/models/operations"; - -let value: DataAzureKeyVault = { - accessPolicyCount: 923246, - name: "", - privateEndpointConnectionCount: 319306, - publicNetworkAccess: "", - rbacAuthorizationEnabled: true, - secretMetadataListed: false, - softDeleteEnabled: false, - softDeleteRetentionDays: 497787, - status: { - collectionIssues: [], - health: "degraded", - lifecycle: "creating", - partial: true, - stale: false, - }, - backend: "azureKeyVault", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | -| `accessPolicyCount` | *number* | :heavy_check_mark: | N/A | -| `location` | *string* | :heavy_minus_sign: | N/A | -| `name` | *string* | :heavy_check_mark: | N/A | -| `privateEndpointConnectionCount` | *number* | :heavy_check_mark: | N/A | -| `provisioningState` | *string* | :heavy_minus_sign: | N/A | -| `publicNetworkAccess` | *string* | :heavy_check_mark: | N/A | -| `purgeProtectionEnabled` | *boolean* | :heavy_minus_sign: | N/A | -| `rbacAuthorizationEnabled` | *boolean* | :heavy_check_mark: | N/A | -| `resourceGroup` | *string* | :heavy_minus_sign: | N/A | -| `resourceId` | *string* | :heavy_minus_sign: | N/A | -| `secretMetadataListed` | *boolean* | :heavy_check_mark: | N/A | -| `skuFamily` | *string* | :heavy_minus_sign: | N/A | -| `skuName` | *string* | :heavy_minus_sign: | N/A | -| `softDeleteEnabled` | *boolean* | :heavy_check_mark: | N/A | -| `softDeleteRetentionDays` | *number* | :heavy_check_mark: | N/A | -| `status` | [operations.DataStatus39](../../models/operations/datastatus39.md) | :heavy_check_mark: | N/A | -| `vaultUri` | *string* | :heavy_minus_sign: | N/A | -| `backend` | *"azureKeyVault"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/dataazurekeyvault1.md b/client-sdks/platform/typescript/docs/models/operations/dataazurekeyvault1.md new file mode 100644 index 000000000..c8e09fbf3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/dataazurekeyvault1.md @@ -0,0 +1,56 @@ +# DataAzureKeyVault1 + +## Example Usage + +```typescript +import { DataAzureKeyVault1 } from "@alienplatform/platform-api/models/operations"; + +let value: DataAzureKeyVault1 = { + accessPolicyCount: 582917, + name: "", + privateEndpointConnectionCount: 112234, + publicNetworkAccess: "", + rbacAuthorizationEnabled: true, + secretMetadataListed: false, + softDeleteEnabled: true, + softDeleteRetentionDays: 457442, + status: { + collectionIssues: [ + { + message: "", + reason: "timed-out", + severity: "error", + source: "", + }, + ], + health: "unknown", + lifecycle: "updating", + partial: false, + stale: false, + }, + backend: "azureKeyVault", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accessPolicyCount` | *number* | :heavy_check_mark: | N/A | +| `location` | *string* | :heavy_minus_sign: | N/A | +| `name` | *string* | :heavy_check_mark: | N/A | +| `privateEndpointConnectionCount` | *number* | :heavy_check_mark: | N/A | +| `provisioningState` | *string* | :heavy_minus_sign: | N/A | +| `publicNetworkAccess` | *string* | :heavy_check_mark: | N/A | +| `purgeProtectionEnabled` | *boolean* | :heavy_minus_sign: | N/A | +| `rbacAuthorizationEnabled` | *boolean* | :heavy_check_mark: | N/A | +| `resourceGroup` | *string* | :heavy_minus_sign: | N/A | +| `resourceId` | *string* | :heavy_minus_sign: | N/A | +| `secretMetadataListed` | *boolean* | :heavy_check_mark: | N/A | +| `skuFamily` | *string* | :heavy_minus_sign: | N/A | +| `skuName` | *string* | :heavy_minus_sign: | N/A | +| `softDeleteEnabled` | *boolean* | :heavy_check_mark: | N/A | +| `softDeleteRetentionDays` | *number* | :heavy_check_mark: | N/A | +| `status` | [operations.DataStatus39](../../models/operations/datastatus39.md) | :heavy_check_mark: | N/A | +| `vaultUri` | *string* | :heavy_minus_sign: | N/A | +| `backend` | *"azureKeyVault"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/dataazurekeyvault2.md b/client-sdks/platform/typescript/docs/models/operations/dataazurekeyvault2.md new file mode 100644 index 000000000..94bccf465 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/dataazurekeyvault2.md @@ -0,0 +1,27 @@ +# DataAzureKeyVault2 + +## Example Usage + +```typescript +import { DataAzureKeyVault2 } from "@alienplatform/platform-api/models/operations"; + +let value: DataAzureKeyVault2 = { + data: { + keyId: "", + keyOperations: [], + keyType: "", + status: { + health: "unhealthy", + lifecycle: "deleting", + }, + }, + provider: "azure-key-vault", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | +| `data` | [operations.Data8](../../models/operations/data8.md) | :heavy_check_mark: | N/A | +| `provider` | *"azure-key-vault"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/datacloudsql.md b/client-sdks/platform/typescript/docs/models/operations/datacloudsql.md index 42d4980d9..14b02aff5 100644 --- a/client-sdks/platform/typescript/docs/models/operations/datacloudsql.md +++ b/client-sdks/platform/typescript/docs/models/operations/datacloudsql.md @@ -1,5 +1,7 @@ # DataCloudSQL +GCP Cloud SQL backend. + ## Example Usage ```typescript diff --git a/client-sdks/platform/typescript/docs/models/operations/dataexternal.md b/client-sdks/platform/typescript/docs/models/operations/dataexternal.md new file mode 100644 index 000000000..043faeb06 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/dataexternal.md @@ -0,0 +1,28 @@ +# DataExternal + +## Example Usage + +```typescript +import { DataExternal } from "@alienplatform/platform-api/models/operations"; + +let value: DataExternal = { + provider: "", + status: { + collectionIssues: [], + health: "unknown", + lifecycle: "running", + partial: true, + stale: false, + }, + backend: "external", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `availability` | *operations.AvailabilityUnion* | :heavy_minus_sign: | N/A | +| `provider` | *string* | :heavy_check_mark: | The BYO-key provider serving this binding (e.g. "openai"). Used on the Local
platform, where the app brings its own provider key instead of an ambient cloud. | +| `status` | [operations.DataStatus69](../../models/operations/datastatus69.md) | :heavy_check_mark: | N/A | +| `backend` | *"external"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/dataflexibleserver.md b/client-sdks/platform/typescript/docs/models/operations/dataflexibleserver.md index c750a3ef9..96b5983de 100644 --- a/client-sdks/platform/typescript/docs/models/operations/dataflexibleserver.md +++ b/client-sdks/platform/typescript/docs/models/operations/dataflexibleserver.md @@ -1,5 +1,7 @@ # DataFlexibleServer +Azure Flexible Server backend. + ## Example Usage ```typescript diff --git a/client-sdks/platform/typescript/docs/models/operations/datagcp1.md b/client-sdks/platform/typescript/docs/models/operations/datagcp1.md index 75ffc8836..79c694ac8 100644 --- a/client-sdks/platform/typescript/docs/models/operations/datagcp1.md +++ b/client-sdks/platform/typescript/docs/models/operations/datagcp1.md @@ -57,6 +57,7 @@ let value: DataGcp1 = { | `horizonStatusMessage` | *string* | :heavy_minus_sign: | N/A | | `horizonStatusReason` | *string* | :heavy_minus_sign: | N/A | | `latestUpdateTimestamp` | *string* | :heavy_check_mark: | N/A | +| `observedImage` | *string* | :heavy_minus_sign: | N/A | | `status` | [operations.DataStatus14](../../models/operations/datastatus14.md) | :heavy_check_mark: | N/A | | `unavailableInstances` | *number* | :heavy_check_mark: | N/A | | `backend` | *"gcp"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/datagcpcloudkms.md b/client-sdks/platform/typescript/docs/models/operations/datagcpcloudkms.md new file mode 100644 index 000000000..fa57d7018 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/datagcpcloudkms.md @@ -0,0 +1,26 @@ +# DataGcpCloudKms + +## Example Usage + +```typescript +import { DataGcpCloudKms } from "@alienplatform/platform-api/models/operations"; + +let value: DataGcpCloudKms = { + data: { + cryptoKeyName: "", + purpose: "", + status: { + health: "healthy", + lifecycle: "deleted", + }, + }, + provider: "gcp-cloud-kms", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | +| `data` | [operations.Data7](../../models/operations/data7.md) | :heavy_check_mark: | N/A | +| `provider` | *"gcp-cloud-kms"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/datagcpvertex.md b/client-sdks/platform/typescript/docs/models/operations/datagcpvertex.md new file mode 100644 index 000000000..f30c67a26 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/datagcpvertex.md @@ -0,0 +1,43 @@ +# DataGcpVertex + +## Example Usage + +```typescript +import { DataGcpVertex } from "@alienplatform/platform-api/models/operations"; + +let value: DataGcpVertex = { + availability: { + catalogRevision: "", + models: [ + { + accessTest: "not-checked", + availability: "unknown", + blockers: [], + clientApis: [], + publicModelId: "", + }, + ], + source: "anthropic", + }, + location: "", + project: "", + status: { + collectionIssues: [], + health: "degraded", + lifecycle: "unknown", + partial: false, + stale: false, + }, + backend: "gcpVertex", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `availability` | [operations.Availability2](../../models/operations/availability2.md) | :heavy_check_mark: | N/A | +| `location` | *string* | :heavy_check_mark: | N/A | +| `project` | *string* | :heavy_check_mark: | N/A | +| `status` | [operations.DataStatus67](../../models/operations/datastatus67.md) | :heavy_check_mark: | N/A | +| `backend` | *"gcpVertex"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/datahorizonplatform.md b/client-sdks/platform/typescript/docs/models/operations/datahorizonplatform.md index 186b242f3..2bfd82206 100644 --- a/client-sdks/platform/typescript/docs/models/operations/datahorizonplatform.md +++ b/client-sdks/platform/typescript/docs/models/operations/datahorizonplatform.md @@ -39,7 +39,9 @@ let value: DataHorizonPlatform = { | `cpu` | *operations.CpuUnion3* | :heavy_minus_sign: | N/A | | `events` | [operations.Event3](../../models/operations/event3.md)[] | :heavy_check_mark: | N/A | | `image` | *string* | :heavy_minus_sign: | N/A | +| `latestUpdateTimestamp` | *string* | :heavy_minus_sign: | N/A | | `memory` | *operations.MemoryUnion3* | :heavy_minus_sign: | N/A | +| `observedImage` | *string* | :heavy_minus_sign: | N/A | | `replicaUnits` | [operations.ReplicaUnit](../../models/operations/replicaunit.md)[] | :heavy_check_mark: | N/A | | `replicas` | [operations.Replicas2](../../models/operations/replicas2.md) | :heavy_check_mark: | N/A | | `schedulingMode` | [operations.SchedulingMode](../../models/operations/schedulingmode.md) | :heavy_check_mark: | N/A | diff --git a/client-sdks/platform/typescript/docs/models/operations/datakey.md b/client-sdks/platform/typescript/docs/models/operations/datakey.md new file mode 100644 index 000000000..78e232ed9 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/datakey.md @@ -0,0 +1,30 @@ +# DataKey + +## Example Usage + +```typescript +import { DataKey } from "@alienplatform/platform-api/models/operations"; + +let value: DataKey = { + data: { + data: { + keyId: "", + keyOperations: [], + keyType: "", + status: { + health: "unhealthy", + lifecycle: "deleting", + }, + }, + provider: "azure-key-vault", + }, + resourceType: "key", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------ | ------------------------ | ------------------------ | ------------------------ | +| `data` | *operations.DataUnion17* | :heavy_check_mark: | N/A | +| `resourceType` | *"key"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/datalocal8.md b/client-sdks/platform/typescript/docs/models/operations/datalocal8.md index 17f7cd759..b9d770977 100644 --- a/client-sdks/platform/typescript/docs/models/operations/datalocal8.md +++ b/client-sdks/platform/typescript/docs/models/operations/datalocal8.md @@ -1,5 +1,7 @@ # DataLocal8 +Local embedded Postgres backend. + ## Example Usage ```typescript diff --git a/client-sdks/platform/typescript/docs/models/operations/datamachines1.md b/client-sdks/platform/typescript/docs/models/operations/datamachines1.md index 8763f73b0..ab57952bd 100644 --- a/client-sdks/platform/typescript/docs/models/operations/datamachines1.md +++ b/client-sdks/platform/typescript/docs/models/operations/datamachines1.md @@ -56,6 +56,7 @@ let value: DataMachines1 = { | `horizonStatusMessage` | *string* | :heavy_minus_sign: | N/A | | `horizonStatusReason` | *string* | :heavy_minus_sign: | N/A | | `latestUpdateTimestamp` | *string* | :heavy_check_mark: | N/A | +| `observedImage` | *string* | :heavy_minus_sign: | N/A | | `status` | [operations.DataStatus16](../../models/operations/datastatus16.md) | :heavy_check_mark: | N/A | | `unavailableInstances` | *number* | :heavy_check_mark: | N/A | | `backend` | *"machines"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/datastatus66.md b/client-sdks/platform/typescript/docs/models/operations/datastatus66.md new file mode 100644 index 000000000..8f66b7125 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/datastatus66.md @@ -0,0 +1,26 @@ +# DataStatus66 + +## Example Usage + +```typescript +import { DataStatus66 } from "@alienplatform/platform-api/models/operations"; + +let value: DataStatus66 = { + collectionIssues: [], + health: "unknown", + lifecycle: "stopping", + partial: true, + stale: true, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | +| `collectionIssues` | [operations.CollectionIssue66](../../models/operations/collectionissue66.md)[] | :heavy_check_mark: | N/A | +| `health` | [operations.Health66](../../models/operations/health66.md) | :heavy_check_mark: | N/A | +| `lifecycle` | [operations.Lifecycle66](../../models/operations/lifecycle66.md) | :heavy_check_mark: | N/A | +| `message` | *string* | :heavy_minus_sign: | N/A | +| `partial` | *boolean* | :heavy_check_mark: | N/A | +| `stale` | *boolean* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/datastatus67.md b/client-sdks/platform/typescript/docs/models/operations/datastatus67.md new file mode 100644 index 000000000..ac1e2062b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/datastatus67.md @@ -0,0 +1,33 @@ +# DataStatus67 + +## Example Usage + +```typescript +import { DataStatus67 } from "@alienplatform/platform-api/models/operations"; + +let value: DataStatus67 = { + collectionIssues: [ + { + message: "", + reason: "forbidden", + severity: "info", + source: "", + }, + ], + health: "degraded", + lifecycle: "failed", + partial: false, + stale: false, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | +| `collectionIssues` | [operations.CollectionIssue67](../../models/operations/collectionissue67.md)[] | :heavy_check_mark: | N/A | +| `health` | [operations.Health67](../../models/operations/health67.md) | :heavy_check_mark: | N/A | +| `lifecycle` | [operations.Lifecycle67](../../models/operations/lifecycle67.md) | :heavy_check_mark: | N/A | +| `message` | *string* | :heavy_minus_sign: | N/A | +| `partial` | *boolean* | :heavy_check_mark: | N/A | +| `stale` | *boolean* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/datastatus68.md b/client-sdks/platform/typescript/docs/models/operations/datastatus68.md new file mode 100644 index 000000000..26e1143f4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/datastatus68.md @@ -0,0 +1,26 @@ +# DataStatus68 + +## Example Usage + +```typescript +import { DataStatus68 } from "@alienplatform/platform-api/models/operations"; + +let value: DataStatus68 = { + collectionIssues: [], + health: "healthy", + lifecycle: "unknown", + partial: true, + stale: true, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | +| `collectionIssues` | [operations.CollectionIssue68](../../models/operations/collectionissue68.md)[] | :heavy_check_mark: | N/A | +| `health` | [operations.Health68](../../models/operations/health68.md) | :heavy_check_mark: | N/A | +| `lifecycle` | [operations.Lifecycle68](../../models/operations/lifecycle68.md) | :heavy_check_mark: | N/A | +| `message` | *string* | :heavy_minus_sign: | N/A | +| `partial` | *boolean* | :heavy_check_mark: | N/A | +| `stale` | *boolean* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/datastatus69.md b/client-sdks/platform/typescript/docs/models/operations/datastatus69.md new file mode 100644 index 000000000..0dc92c299 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/datastatus69.md @@ -0,0 +1,33 @@ +# DataStatus69 + +## Example Usage + +```typescript +import { DataStatus69 } from "@alienplatform/platform-api/models/operations"; + +let value: DataStatus69 = { + collectionIssues: [ + { + message: "", + reason: "forbidden", + severity: "info", + source: "", + }, + ], + health: "degraded", + lifecycle: "stopped", + partial: true, + stale: true, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | +| `collectionIssues` | [operations.CollectionIssue69](../../models/operations/collectionissue69.md)[] | :heavy_check_mark: | N/A | +| `health` | [operations.Health69](../../models/operations/health69.md) | :heavy_check_mark: | N/A | +| `lifecycle` | [operations.Lifecycle69](../../models/operations/lifecycle69.md) | :heavy_check_mark: | N/A | +| `message` | *string* | :heavy_minus_sign: | N/A | +| `partial` | *boolean* | :heavy_check_mark: | N/A | +| `stale` | *boolean* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/datastatus70.md b/client-sdks/platform/typescript/docs/models/operations/datastatus70.md new file mode 100644 index 000000000..3e3fa8472 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/datastatus70.md @@ -0,0 +1,20 @@ +# DataStatus70 + +## Example Usage + +```typescript +import { DataStatus70 } from "@alienplatform/platform-api/models/operations"; + +let value: DataStatus70 = { + health: "healthy", + lifecycle: "unknown", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | +| `health` | [operations.Health70](../../models/operations/health70.md) | :heavy_check_mark: | N/A | +| `lifecycle` | [operations.Lifecycle70](../../models/operations/lifecycle70.md) | :heavy_check_mark: | N/A | +| `message` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/datastatus71.md b/client-sdks/platform/typescript/docs/models/operations/datastatus71.md new file mode 100644 index 000000000..d8c33e95c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/datastatus71.md @@ -0,0 +1,20 @@ +# DataStatus71 + +## Example Usage + +```typescript +import { DataStatus71 } from "@alienplatform/platform-api/models/operations"; + +let value: DataStatus71 = { + health: "unknown", + lifecycle: "scaling", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | +| `health` | [operations.Health71](../../models/operations/health71.md) | :heavy_check_mark: | N/A | +| `lifecycle` | [operations.Lifecycle71](../../models/operations/lifecycle71.md) | :heavy_check_mark: | N/A | +| `message` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/datastatus72.md b/client-sdks/platform/typescript/docs/models/operations/datastatus72.md new file mode 100644 index 000000000..980cff9bc --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/datastatus72.md @@ -0,0 +1,20 @@ +# DataStatus72 + +## Example Usage + +```typescript +import { DataStatus72 } from "@alienplatform/platform-api/models/operations"; + +let value: DataStatus72 = { + health: "unknown", + lifecycle: "scaling", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | +| `health` | [operations.Health72](../../models/operations/health72.md) | :heavy_check_mark: | N/A | +| `lifecycle` | [operations.Lifecycle72](../../models/operations/lifecycle72.md) | :heavy_check_mark: | N/A | +| `message` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/dataunion16.md b/client-sdks/platform/typescript/docs/models/operations/dataunion16.md index 343e7b6a4..0b7bfbd40 100644 --- a/client-sdks/platform/typescript/docs/models/operations/dataunion16.md +++ b/client-sdks/platform/typescript/docs/models/operations/dataunion16.md @@ -3,549 +3,115 @@ ## Supported Types -### `operations.DataStorage` +### `operations.DataAwsBedrock` ```typescript -const value: operations.DataStorage = { - data: { - path: "/home", - pathExists: false, - status: { - collectionIssues: [ - { - message: "", - reason: "timed-out", - severity: "warning", - source: "", - }, - ], - health: "unhealthy", - lifecycle: "scaling", - partial: false, - stale: false, - }, - backend: "local", +const value: operations.DataAwsBedrock = { + availability: { + catalogRevision: "", + models: [], + source: "aws-bedrock", }, - resourceType: "storage", -}; -``` - -### `operations.DataWorker` - -```typescript -const value: operations.DataWorker = { - data: { - commandSupported: false, - events: [ + region: "", + status: { + collectionIssues: [ { - kind: "", message: "", - severity: "info", - timestamp: new Date("2024-07-21T11:12:11.792Z"), + reason: "timed-out", + severity: "warning", + source: "", }, ], - imagePathPresent: true, - status: { - collectionIssues: [ - { - message: "", - reason: "forbidden", - severity: "warning", - source: "", - }, - ], - health: "degraded", - lifecycle: "updating", - partial: true, - stale: false, - }, - triggerCount: 71218, - backend: "local", + health: "unhealthy", + lifecycle: "deleting", + partial: false, + stale: false, }, - resourceType: "worker", + backend: "awsBedrock", }; ``` -### `operations.DataContainer` +### `operations.DataGcpVertex` ```typescript -const value: operations.DataContainer = { - data: { - attentionCount: 486054, - containerId: "", - events: [], - replicaUnits: [], - replicas: {}, - schedulingMode: "stateful", - status: { - collectionIssues: [ - { - message: "", - reason: "forbidden", - severity: "warning", - source: "", - }, - ], - health: "healthy", - lifecycle: "creating", - partial: false, - stale: false, - }, - backend: "horizonPlatform", - }, - resourceType: "container", -}; -``` - -### `operations.DataDaemon` - -```typescript -const value: operations.DataDaemon = { - data: { - assignedMachines: 489905, - capacityGroup: "", - commandSupported: true, - daemonInstances: [], - desiredMachines: 665477, - events: [ +const value: operations.DataGcpVertex = { + availability: { + catalogRevision: "", + models: [ { - message: "", - reason: "", + accessTest: "not-checked", + availability: "unknown", + blockers: [], + clientApis: [], + publicModelId: "", }, ], - healthyInstances: 921353, - horizonClusterId: "", - horizonStatus: "", - latestUpdateTimestamp: "", - status: { - collectionIssues: [ - { - message: "", - reason: "not-installed", - severity: "warning", - source: "", - }, - ], - health: "unknown", - lifecycle: "running", - partial: false, - stale: false, - }, - unavailableInstances: 431179, - backend: "azure", + source: "anthropic", }, - resourceType: "daemon", -}; -``` - -### `operations.DataComputeCluster` - -```typescript -const value: operations.DataComputeCluster = { - data: { - dockerAvailable: true, - name: "", - networkAvailable: true, - nodes: {}, - status: { - collectionIssues: [ - { - message: "", - reason: "forbidden", - severity: "error", - source: "", - }, - ], - health: "unknown", - lifecycle: "running", - partial: false, - stale: true, - }, - backend: "local", + location: "", + project: "", + status: { + collectionIssues: [], + health: "degraded", + lifecycle: "unknown", + partial: false, + stale: false, }, - resourceType: "compute-cluster", + backend: "gcpVertex", }; ``` -### `operations.DataKubernetesCluster` +### `operations.DataAzureFoundry` ```typescript -const value: operations.DataKubernetesCluster = { - data: { - events: [ +const value: operations.DataAzureFoundry = { + accountName: "", + availability: { + catalogRevision: "", + models: [ { - message: "", - reason: "", + accessTest: "verified", + availability: "available", + blockers: [], + clientApis: [ + "anthropic-messages", + ], + publicModelId: "", }, ], - name: "", - nodeCounts: {}, - podCounts: {}, - status: { - collectionIssues: [], - health: "unhealthy", - lifecycle: "failed", - partial: false, - stale: false, - }, - }, - resourceType: "kubernetes-cluster", -}; -``` - -### `operations.DataQueue` - -```typescript -const value: operations.DataQueue = { - data: { - messageStorageAllowedPersistenceRegions: [ - "", - "", - ], - status: { - collectionIssues: [], - health: "healthy", - lifecycle: "failed", - partial: true, - stale: true, - }, - subscriptionLabels: { - "key": "", - }, - subscriptionPushAttributes: { - "key": "", - "key1": "", - "key2": "", - }, - topicLabels: {}, - topicName: "", - backend: "gcpPubSub", + source: "azure-foundry", }, - resourceType: "queue", -}; -``` - -### `operations.DataKv` - -```typescript -const value: operations.DataKv = { - data: { - status: { - collectionIssues: [ - { - message: "", - reason: "forbidden", - severity: "info", - source: "", - }, - ], - health: "healthy", - lifecycle: "scaling", - partial: false, - stale: true, - }, - storageAccountName: "", - tableExists: false, - tableName: "", - backend: "azureTable", - }, - resourceType: "kv", -}; -``` - -### `operations.DataPostgres` - -```typescript -const value: operations.DataPostgres = { - data: { - serverName: "", - status: { - collectionIssues: [], - health: "unknown", - lifecycle: "stopped", - partial: true, - stale: false, - }, - backend: "flexibleServer", - }, - resourceType: "postgres", -}; -``` - -### `operations.DataVault` - -```typescript -const value: operations.DataVault = { - data: { - accountId: "", - parameterMetadataSampled: true, - prefix: "", - region: "", - status: { - collectionIssues: [], - health: "unknown", - lifecycle: "unknown", - partial: true, - stale: false, - }, - backend: "awsParameterStore", - }, - resourceType: "vault", -}; -``` - -### `operations.DataServiceAccount` - -```typescript -const value: operations.DataServiceAccount = { - data: { - customRoleDefinitionCount: 991371, - customRoleDefinitionIds: [ - "", - "", - "", - ], - location: "", - managedTagCount: 438151, - name: "", - resourceGroup: "", - resourceId: "", - roleAssignmentCount: 703891, - roleAssignmentIds: [ - "", + status: { + collectionIssues: [ + { + message: "", + reason: "collection-failed", + severity: "warning", + source: "", + }, ], - stackPermissionsApplied: true, - status: { - collectionIssues: [ - { - message: "", - reason: "not-installed", - severity: "error", - source: "", - }, - ], - health: "unknown", - lifecycle: "deleting", - partial: true, - stale: false, - }, - backend: "azureManagedIdentity", - }, - resourceType: "service-account", -}; -``` - -### `operations.DataNetwork` - -```typescript -const value: operations.DataNetwork = { - data: { - isByoVnet: true, - status: { - collectionIssues: [], - health: "unhealthy", - lifecycle: "unknown", - partial: true, - stale: true, - }, - backend: "azureVnet", - }, - resourceType: "network", -}; -``` - -### `operations.DataRemoteStackManagement` - -```typescript -const value: operations.DataRemoteStackManagement = { - data: { - managementPermissionsApplied: true, - status: { - collectionIssues: [ - { - message: "", - reason: "api-unavailable", - severity: "warning", - source: "", - }, - ], - health: "degraded", - lifecycle: "stopping", - partial: true, - stale: false, - }, - backend: "awsIamRole", - }, - resourceType: "remote-stack-management", -}; -``` - -### `operations.DataArtifactRegistry` - -```typescript -const value: operations.DataArtifactRegistry = { - data: { - reachable: false, - registryUrl: "https://tedious-reach.com", - status: { - collectionIssues: [], - health: "unknown", - lifecycle: "creating", - partial: true, - stale: false, - }, - backend: "local", - }, - resourceType: "artifact-registry", -}; -``` - -### `operations.DataBuild` - -```typescript -const value: operations.DataBuild = { - data: { - encryptionKeyPresent: false, - environmentVariableCount: 19119, - projectName: "", - serviceRolePresent: true, - status: { - collectionIssues: [ - { - message: "", - reason: "not-installed", - severity: "info", - source: "", - }, - ], - health: "healthy", - lifecycle: "failed", - partial: false, - stale: true, - }, - backend: "awsCodeBuild", - }, - resourceType: "build", -}; -``` - -### `operations.DataServiceActivation` - -```typescript -const value: operations.DataServiceActivation = { - data: { - enabled: true, - projectId: "", - serviceName: "", - status: { - collectionIssues: [ - { - message: "", - reason: "api-unavailable", - severity: "error", - source: "", - }, - ], - health: "unhealthy", - lifecycle: "stopped", - partial: true, - stale: true, - }, - backend: "gcpServiceUsage", - }, - resourceType: "service_activation", -}; -``` - -### `operations.DataAzureResourceGroup` - -```typescript -const value: operations.DataAzureResourceGroup = { - data: { - managedTags: {}, - name: "", - status: { - collectionIssues: [ - { - message: "", - reason: "api-unavailable", - severity: "error", - source: "", - }, - ], - health: "unknown", - lifecycle: "running", - partial: true, - stale: false, - }, - }, - resourceType: "azure_resource_group", -}; -``` - -### `operations.DataAzureStorageAccount` - -```typescript -const value: operations.DataAzureStorageAccount = { - data: { - name: "", - primaryEndpoints: {}, - secondaryEndpoints: {}, - status: { - collectionIssues: [], - health: "unhealthy", - lifecycle: "stopped", - partial: false, - stale: false, - }, - }, - resourceType: "azure_storage_account", -}; -``` - -### `operations.DataAzureContainerAppsEnvironment` - -```typescript -const value: operations.DataAzureContainerAppsEnvironment = { - data: { - name: "", - status: { - collectionIssues: [], - health: "unknown", - lifecycle: "stopped", - partial: true, - stale: true, - }, - workloadProfileCount: 415280, - workloadProfiles: [], + health: "unknown", + lifecycle: "stopping", + partial: false, + stale: false, }, - resourceType: "azure_container_apps_environment", + backend: "azureFoundry", }; ``` -### `operations.DataAzureServiceBusNamespace` +### `operations.DataExternal` ```typescript -const value: operations.DataAzureServiceBusNamespace = { - data: { - name: "", - privateEndpointConnectionCount: 152029, - status: { - collectionIssues: [ - { - message: "", - reason: "not-installed", - severity: "info", - source: "", - }, - ], - health: "unknown", - lifecycle: "running", - partial: false, - stale: true, - }, +const value: operations.DataExternal = { + provider: "", + status: { + collectionIssues: [], + health: "unknown", + lifecycle: "running", + partial: true, + stale: false, }, - resourceType: "azure_service_bus_namespace", + backend: "external", }; ``` diff --git a/client-sdks/platform/typescript/docs/models/operations/dataunion17.md b/client-sdks/platform/typescript/docs/models/operations/dataunion17.md new file mode 100644 index 000000000..363d7079e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/dataunion17.md @@ -0,0 +1,57 @@ +# DataUnion17 + + +## Supported Types + +### `operations.DataAwsKms` + +```typescript +const value: operations.DataAwsKms = { + data: { + enabled: true, + keyArn: "", + keySpec: "", + keyState: "", + keyUsage: "", + status: { + health: "healthy", + lifecycle: "failed", + }, + }, + provider: "aws-kms", +}; +``` + +### `operations.DataGcpCloudKms` + +```typescript +const value: operations.DataGcpCloudKms = { + data: { + cryptoKeyName: "", + purpose: "", + status: { + health: "healthy", + lifecycle: "deleted", + }, + }, + provider: "gcp-cloud-kms", +}; +``` + +### `operations.DataAzureKeyVault2` + +```typescript +const value: operations.DataAzureKeyVault2 = { + data: { + keyId: "", + keyOperations: [], + keyType: "", + status: { + health: "unhealthy", + lifecycle: "deleting", + }, + }, + provider: "azure-key-vault", +}; +``` + diff --git a/client-sdks/platform/typescript/docs/models/operations/dataunion18.md b/client-sdks/platform/typescript/docs/models/operations/dataunion18.md new file mode 100644 index 000000000..d409d7d9c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/dataunion18.md @@ -0,0 +1,604 @@ +# DataUnion18 + + +## Supported Types + +### `operations.DataStorage` + +```typescript +const value: operations.DataStorage = { + data: { + path: "/home", + pathExists: false, + status: { + collectionIssues: [ + { + message: "", + reason: "timed-out", + severity: "warning", + source: "", + }, + ], + health: "unhealthy", + lifecycle: "scaling", + partial: false, + stale: false, + }, + backend: "local", + }, + resourceType: "storage", +}; +``` + +### `operations.DataWorker` + +```typescript +const value: operations.DataWorker = { + data: { + commandSupported: false, + events: [ + { + kind: "", + message: "", + severity: "info", + timestamp: new Date("2024-07-21T11:12:11.792Z"), + }, + ], + imagePathPresent: true, + status: { + collectionIssues: [ + { + message: "", + reason: "forbidden", + severity: "warning", + source: "", + }, + ], + health: "degraded", + lifecycle: "updating", + partial: true, + stale: false, + }, + triggerCount: 71218, + backend: "local", + }, + resourceType: "worker", +}; +``` + +### `operations.DataContainer` + +```typescript +const value: operations.DataContainer = { + data: { + attentionCount: 486054, + containerId: "", + events: [], + replicaUnits: [], + replicas: {}, + schedulingMode: "stateful", + status: { + collectionIssues: [ + { + message: "", + reason: "forbidden", + severity: "warning", + source: "", + }, + ], + health: "healthy", + lifecycle: "creating", + partial: false, + stale: false, + }, + backend: "horizonPlatform", + }, + resourceType: "container", +}; +``` + +### `operations.DataDaemon` + +```typescript +const value: operations.DataDaemon = { + data: { + assignedMachines: 489905, + capacityGroup: "", + commandSupported: true, + daemonInstances: [], + desiredMachines: 665477, + events: [ + { + message: "", + reason: "", + }, + ], + healthyInstances: 921353, + horizonClusterId: "", + horizonStatus: "", + latestUpdateTimestamp: "", + status: { + collectionIssues: [ + { + message: "", + reason: "not-installed", + severity: "warning", + source: "", + }, + ], + health: "unknown", + lifecycle: "running", + partial: false, + stale: false, + }, + unavailableInstances: 431179, + backend: "azure", + }, + resourceType: "daemon", +}; +``` + +### `operations.DataComputeCluster` + +```typescript +const value: operations.DataComputeCluster = { + data: { + dockerAvailable: true, + name: "", + networkAvailable: true, + nodes: {}, + status: { + collectionIssues: [ + { + message: "", + reason: "forbidden", + severity: "error", + source: "", + }, + ], + health: "unknown", + lifecycle: "running", + partial: false, + stale: true, + }, + backend: "local", + }, + resourceType: "compute-cluster", +}; +``` + +### `operations.DataKubernetesCluster` + +```typescript +const value: operations.DataKubernetesCluster = { + data: { + events: [ + { + message: "", + reason: "", + }, + ], + name: "", + nodeCounts: {}, + podCounts: {}, + status: { + collectionIssues: [], + health: "unhealthy", + lifecycle: "failed", + partial: false, + stale: false, + }, + }, + resourceType: "kubernetes-cluster", +}; +``` + +### `operations.DataQueue` + +```typescript +const value: operations.DataQueue = { + data: { + messageStorageAllowedPersistenceRegions: [ + "", + "", + ], + status: { + collectionIssues: [], + health: "healthy", + lifecycle: "failed", + partial: true, + stale: true, + }, + subscriptionLabels: { + "key": "", + }, + subscriptionPushAttributes: { + "key": "", + "key1": "", + "key2": "", + }, + topicLabels: {}, + topicName: "", + backend: "gcpPubSub", + }, + resourceType: "queue", +}; +``` + +### `operations.DataKv` + +```typescript +const value: operations.DataKv = { + data: { + status: { + collectionIssues: [ + { + message: "", + reason: "forbidden", + severity: "info", + source: "", + }, + ], + health: "healthy", + lifecycle: "scaling", + partial: false, + stale: true, + }, + storageAccountName: "", + tableExists: false, + tableName: "", + backend: "azureTable", + }, + resourceType: "kv", +}; +``` + +### `operations.DataPostgres` + +```typescript +const value: operations.DataPostgres = { + data: { + serverName: "", + status: { + collectionIssues: [], + health: "unknown", + lifecycle: "stopped", + partial: true, + stale: false, + }, + backend: "flexibleServer", + }, + resourceType: "postgres", +}; +``` + +### `operations.DataVault` + +```typescript +const value: operations.DataVault = { + data: { + accountId: "", + parameterMetadataSampled: true, + prefix: "", + region: "", + status: { + collectionIssues: [], + health: "unknown", + lifecycle: "unknown", + partial: true, + stale: false, + }, + backend: "awsParameterStore", + }, + resourceType: "vault", +}; +``` + +### `operations.DataServiceAccount` + +```typescript +const value: operations.DataServiceAccount = { + data: { + customRoleDefinitionCount: 991371, + customRoleDefinitionIds: [ + "", + "", + "", + ], + location: "", + managedTagCount: 438151, + name: "", + resourceGroup: "", + resourceId: "", + roleAssignmentCount: 703891, + roleAssignmentIds: [ + "", + ], + stackPermissionsApplied: true, + status: { + collectionIssues: [ + { + message: "", + reason: "not-installed", + severity: "error", + source: "", + }, + ], + health: "unknown", + lifecycle: "deleting", + partial: true, + stale: false, + }, + backend: "azureManagedIdentity", + }, + resourceType: "service-account", +}; +``` + +### `operations.DataNetwork` + +```typescript +const value: operations.DataNetwork = { + data: { + isByoVnet: true, + status: { + collectionIssues: [], + health: "unhealthy", + lifecycle: "unknown", + partial: true, + stale: true, + }, + backend: "azureVnet", + }, + resourceType: "network", +}; +``` + +### `operations.DataRemoteStackManagement` + +```typescript +const value: operations.DataRemoteStackManagement = { + data: { + managementPermissionsApplied: true, + status: { + collectionIssues: [ + { + message: "", + reason: "api-unavailable", + severity: "warning", + source: "", + }, + ], + health: "degraded", + lifecycle: "stopping", + partial: true, + stale: false, + }, + backend: "awsIamRole", + }, + resourceType: "remote-stack-management", +}; +``` + +### `operations.DataArtifactRegistry` + +```typescript +const value: operations.DataArtifactRegistry = { + data: { + reachable: false, + registryUrl: "https://tedious-reach.com", + status: { + collectionIssues: [], + health: "unknown", + lifecycle: "creating", + partial: true, + stale: false, + }, + backend: "local", + }, + resourceType: "artifact-registry", +}; +``` + +### `operations.DataBuild` + +```typescript +const value: operations.DataBuild = { + data: { + encryptionKeyPresent: false, + environmentVariableCount: 19119, + projectName: "", + serviceRolePresent: true, + status: { + collectionIssues: [ + { + message: "", + reason: "not-installed", + severity: "info", + source: "", + }, + ], + health: "healthy", + lifecycle: "failed", + partial: false, + stale: true, + }, + backend: "awsCodeBuild", + }, + resourceType: "build", +}; +``` + +### `operations.DataServiceActivation` + +```typescript +const value: operations.DataServiceActivation = { + data: { + enabled: true, + projectId: "", + serviceName: "", + status: { + collectionIssues: [ + { + message: "", + reason: "api-unavailable", + severity: "error", + source: "", + }, + ], + health: "unhealthy", + lifecycle: "stopped", + partial: true, + stale: true, + }, + backend: "gcpServiceUsage", + }, + resourceType: "service_activation", +}; +``` + +### `operations.DataAzureResourceGroup` + +```typescript +const value: operations.DataAzureResourceGroup = { + data: { + managedTags: {}, + name: "", + status: { + collectionIssues: [ + { + message: "", + reason: "api-unavailable", + severity: "error", + source: "", + }, + ], + health: "unknown", + lifecycle: "running", + partial: true, + stale: false, + }, + }, + resourceType: "azure_resource_group", +}; +``` + +### `operations.DataAzureStorageAccount` + +```typescript +const value: operations.DataAzureStorageAccount = { + data: { + name: "", + primaryEndpoints: {}, + secondaryEndpoints: {}, + status: { + collectionIssues: [], + health: "unhealthy", + lifecycle: "stopped", + partial: false, + stale: false, + }, + }, + resourceType: "azure_storage_account", +}; +``` + +### `operations.DataAzureContainerAppsEnvironment` + +```typescript +const value: operations.DataAzureContainerAppsEnvironment = { + data: { + name: "", + status: { + collectionIssues: [], + health: "unknown", + lifecycle: "stopped", + partial: true, + stale: true, + }, + workloadProfileCount: 415280, + workloadProfiles: [], + }, + resourceType: "azure_container_apps_environment", +}; +``` + +### `operations.DataAzureServiceBusNamespace` + +```typescript +const value: operations.DataAzureServiceBusNamespace = { + data: { + name: "", + privateEndpointConnectionCount: 152029, + status: { + collectionIssues: [ + { + message: "", + reason: "not-installed", + severity: "info", + source: "", + }, + ], + health: "unknown", + lifecycle: "running", + partial: false, + stale: true, + }, + }, + resourceType: "azure_service_bus_namespace", +}; +``` + +### `operations.DataAi` + +```typescript +const value: operations.DataAi = { + data: { + availability: { + catalogRevision: "", + models: [ + { + accessTest: "not-checked", + availability: "unknown", + blockers: [], + clientApis: [], + publicModelId: "", + }, + ], + source: "anthropic", + }, + location: "", + project: "", + status: { + collectionIssues: [], + health: "degraded", + lifecycle: "unknown", + partial: false, + stale: false, + }, + backend: "gcpVertex", + }, + resourceType: "ai", +}; +``` + +### `operations.DataKey` + +```typescript +const value: operations.DataKey = { + data: { + data: { + keyId: "", + keyOperations: [], + keyType: "", + status: { + health: "unhealthy", + lifecycle: "deleting", + }, + }, + provider: "azure-key-vault", + }, + resourceType: "key", +}; +``` + diff --git a/client-sdks/platform/typescript/docs/models/operations/dataunion9.md b/client-sdks/platform/typescript/docs/models/operations/dataunion9.md index caa675ae9..7dc9350d9 100644 --- a/client-sdks/platform/typescript/docs/models/operations/dataunion9.md +++ b/client-sdks/platform/typescript/docs/models/operations/dataunion9.md @@ -41,23 +41,30 @@ const value: operations.DataGcpSecretManager = { }; ``` -### `operations.DataAzureKeyVault` +### `operations.DataAzureKeyVault1` ```typescript -const value: operations.DataAzureKeyVault = { - accessPolicyCount: 923246, +const value: operations.DataAzureKeyVault1 = { + accessPolicyCount: 582917, name: "", - privateEndpointConnectionCount: 319306, + privateEndpointConnectionCount: 112234, publicNetworkAccess: "", rbacAuthorizationEnabled: true, secretMetadataListed: false, - softDeleteEnabled: false, - softDeleteRetentionDays: 497787, + softDeleteEnabled: true, + softDeleteRetentionDays: 457442, status: { - collectionIssues: [], - health: "degraded", - lifecycle: "creating", - partial: true, + collectionIssues: [ + { + message: "", + reason: "timed-out", + severity: "error", + source: "", + }, + ], + health: "unknown", + lifecycle: "updating", + partial: false, stale: false, }, backend: "azureKeyVault", diff --git a/client-sdks/platform/typescript/docs/models/operations/decommissionawsvirtualkeyrequest.md b/client-sdks/platform/typescript/docs/models/operations/decommissionawsvirtualkeyrequest.md new file mode 100644 index 000000000..e1ea04579 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/decommissionawsvirtualkeyrequest.md @@ -0,0 +1,18 @@ +# DecommissionAwsVirtualKeyRequest + +## Example Usage + +```typescript +import { DecommissionAwsVirtualKeyRequest } from "@alienplatform/platform-api/models/operations"; + +let value: DecommissionAwsVirtualKeyRequest = { + id: "vkey_0p9nwqgtftugsoey99lqyqq", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the aws virtual key. | vkey_0p9nwqgtftugsoey99lqyqq | +| `requestBody` | [operations.DecommissionAwsVirtualKeyRequestBody](../../models/operations/decommissionawsvirtualkeyrequestbody.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/decommissionawsvirtualkeyrequestbody.md b/client-sdks/platform/typescript/docs/models/operations/decommissionawsvirtualkeyrequestbody.md new file mode 100644 index 000000000..1db751439 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/decommissionawsvirtualkeyrequestbody.md @@ -0,0 +1,19 @@ +# DecommissionAwsVirtualKeyRequestBody + +## Example Usage + +```typescript +import { DecommissionAwsVirtualKeyRequestBody } from "@alienplatform/platform-api/models/operations"; + +let value: DecommissionAwsVirtualKeyRequestBody = { + kmsKeyArn: "", + deletionScheduledAt: new Date("2024-10-15T05:14:20.852Z"), +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `kmsKeyArn` | *string* | :heavy_check_mark: | N/A | +| `deletionScheduledAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/decommissionawsvirtualkeyresponse.md b/client-sdks/platform/typescript/docs/models/operations/decommissionawsvirtualkeyresponse.md new file mode 100644 index 000000000..cce4ee7eb --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/decommissionawsvirtualkeyresponse.md @@ -0,0 +1,57 @@ +# DecommissionAwsVirtualKeyResponse + +Virtual Key with AWS deletion scheduled + +## Example Usage + +```typescript +import { DecommissionAwsVirtualKeyResponse } from "@alienplatform/platform-api/models/operations"; + +let value: DecommissionAwsVirtualKeyResponse = { + id: "vkey_0p9nwqgtftugsoey99lqyqq", + projectId: "", + status: "provisioning", + externalKeyId: "", + awsAccountId: "", + awsRegion: "", + customKeyStoreId: "", + kmsKeyArn: "", + alias: "", + description: "once how deed appertain duh", + deletionWindowDays: 375137, + tags: { + "key": "", + "key1": "", + "key2": "", + }, + observedAt: null, + canaryPassedAt: new Date("2025-05-19T12:29:55.416Z"), + deletionScheduledAt: new Date("2024-12-25T01:44:35.472Z"), + finalDeletionObservedAt: new Date("2025-10-23T09:14:23.004Z"), + createdAt: new Date("2026-07-23T05:34:25.322Z"), + updatedAt: new Date("2024-05-05T21:53:07.600Z"), +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the aws virtual key. | vkey_0p9nwqgtftugsoey99lqyqq | +| `projectId` | *string* | :heavy_check_mark: | N/A | | +| `status` | [operations.DecommissionAwsVirtualKeyStatus](../../models/operations/decommissionawsvirtualkeystatus.md) | :heavy_check_mark: | N/A | | +| `externalKeyId` | *string* | :heavy_check_mark: | N/A | | +| `awsAccountId` | *string* | :heavy_check_mark: | N/A | | +| `awsRegion` | *string* | :heavy_check_mark: | N/A | | +| `customKeyStoreId` | *string* | :heavy_check_mark: | N/A | | +| `kmsKeyArn` | *string* | :heavy_check_mark: | N/A | | +| `alias` | *string* | :heavy_check_mark: | N/A | | +| `description` | *string* | :heavy_check_mark: | N/A | | +| `deletionWindowDays` | *number* | :heavy_check_mark: | N/A | | +| `tags` | Record | :heavy_check_mark: | N/A | | +| `observedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `canaryPassedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `deletionScheduledAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `finalDeletionObservedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `createdAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `updatedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/decommissionawsvirtualkeystatus.md b/client-sdks/platform/typescript/docs/models/operations/decommissionawsvirtualkeystatus.md new file mode 100644 index 000000000..81095b13a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/decommissionawsvirtualkeystatus.md @@ -0,0 +1,15 @@ +# DecommissionAwsVirtualKeyStatus + +## Example Usage + +```typescript +import { DecommissionAwsVirtualKeyStatus } from "@alienplatform/platform-api/models/operations"; + +let value: DecommissionAwsVirtualKeyStatus = "ready"; +``` + +## Values + +```typescript +"provisioning" | "ready" | "action-required" | "decommissioning" | "deletion-pending" | "deleted" | "failed" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/deletecontainerregistryrepositorydesiredstate.md b/client-sdks/platform/typescript/docs/models/operations/deletecontainerregistryrepositorydesiredstate.md new file mode 100644 index 000000000..47915aced --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/deletecontainerregistryrepositorydesiredstate.md @@ -0,0 +1,15 @@ +# DeleteContainerRegistryRepositoryDesiredState + +## Example Usage + +```typescript +import { DeleteContainerRegistryRepositoryDesiredState } from "@alienplatform/platform-api/models/operations"; + +let value: DeleteContainerRegistryRepositoryDesiredState = "present"; +``` + +## Values + +```typescript +"present" | "deleteRequested" | "deleted" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/deletecontainerregistryrepositoryrequest.md b/client-sdks/platform/typescript/docs/models/operations/deletecontainerregistryrepositoryrequest.md new file mode 100644 index 000000000..95dc6af5d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/deletecontainerregistryrepositoryrequest.md @@ -0,0 +1,22 @@ +# DeleteContainerRegistryRepositoryRequest + +## Example Usage + +```typescript +import { DeleteContainerRegistryRepositoryRequest } from "@alienplatform/platform-api/models/operations"; + +let value: DeleteContainerRegistryRepositoryRequest = { + id: "dg_r27ict8c7vcgsumpj90ackf7b", + repositoryId: "crrepo_625temdq3bnu25jw9rcux", + workspace: "my-workspace", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the deployment group. | dg_r27ict8c7vcgsumpj90ackf7b | +| `repositoryId` | *string* | :heavy_check_mark: | Unique identifier for the container registry repository. | crrepo_625temdq3bnu25jw9rcux | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | +| `requestBody` | [operations.DeleteContainerRegistryRepositoryRequestBody](../../models/operations/deletecontainerregistryrepositoryrequestbody.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/deletecontainerregistryrepositoryrequestbody.md b/client-sdks/platform/typescript/docs/models/operations/deletecontainerregistryrepositoryrequestbody.md new file mode 100644 index 000000000..7ec668bfe --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/deletecontainerregistryrepositoryrequestbody.md @@ -0,0 +1,19 @@ +# DeleteContainerRegistryRepositoryRequestBody + +## Example Usage + +```typescript +import { DeleteContainerRegistryRepositoryRequestBody } from "@alienplatform/platform-api/models/operations"; + +let value: DeleteContainerRegistryRepositoryRequestBody = { + confirmName: "", + disposition: "deleteContents", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | +| `confirmName` | *string* | :heavy_check_mark: | N/A | +| `disposition` | [operations.Disposition](../../models/operations/disposition.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/deletecontainerregistryrepositoryresponse.md b/client-sdks/platform/typescript/docs/models/operations/deletecontainerregistryrepositoryresponse.md new file mode 100644 index 000000000..4b9648c40 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/deletecontainerregistryrepositoryresponse.md @@ -0,0 +1,27 @@ +# DeleteContainerRegistryRepositoryResponse + +Repository deletion requested + +## Example Usage + +```typescript +import { DeleteContainerRegistryRepositoryResponse } from "@alienplatform/platform-api/models/operations"; + +let value: DeleteContainerRegistryRepositoryResponse = { + id: "crrepo_625temdq3bnu25jw9rcux", + logicalName: "", + desiredState: "deleteRequested", + status: "deleting", + verifiedAt: new Date("2025-07-20T12:44:02.603Z"), +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the container registry repository. | crrepo_625temdq3bnu25jw9rcux | +| `logicalName` | *string* | :heavy_check_mark: | N/A | | +| `desiredState` | [operations.DeleteContainerRegistryRepositoryDesiredState](../../models/operations/deletecontainerregistryrepositorydesiredstate.md) | :heavy_check_mark: | N/A | | +| `status` | [operations.DeleteContainerRegistryRepositoryStatus](../../models/operations/deletecontainerregistryrepositorystatus.md) | :heavy_check_mark: | N/A | | +| `verifiedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/deletecontainerregistryrepositorystatus.md b/client-sdks/platform/typescript/docs/models/operations/deletecontainerregistryrepositorystatus.md new file mode 100644 index 000000000..14464d9ba --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/deletecontainerregistryrepositorystatus.md @@ -0,0 +1,15 @@ +# DeleteContainerRegistryRepositoryStatus + +## Example Usage + +```typescript +import { DeleteContainerRegistryRepositoryStatus } from "@alienplatform/platform-api/models/operations"; + +let value: DeleteContainerRegistryRepositoryStatus = "ready"; +``` + +## Values + +```typescript +"pending" | "creating" | "ready" | "deleting" | "deleted" | "failed" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/deletedirectanthropicbindingrequest.md b/client-sdks/platform/typescript/docs/models/operations/deletedirectanthropicbindingrequest.md deleted file mode 100644 index e055d6c31..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/deletedirectanthropicbindingrequest.md +++ /dev/null @@ -1,19 +0,0 @@ -# DeleteDirectAnthropicBindingRequest - -## Example Usage - -```typescript -import { DeleteDirectAnthropicBindingRequest } from "@alienplatform/platform-api/models/operations"; - -let value: DeleteDirectAnthropicBindingRequest = { - id: "dg_r27ict8c7vcgsumpj90ackf7b", - workspace: "my-workspace", -}; -``` - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `id` | *string* | :heavy_check_mark: | Unique identifier for the deployment group. | dg_r27ict8c7vcgsumpj90ackf7b | -| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/deleteexternalaibindingrequest.md b/client-sdks/platform/typescript/docs/models/operations/deleteexternalaibindingrequest.md new file mode 100644 index 000000000..138b34b11 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/deleteexternalaibindingrequest.md @@ -0,0 +1,19 @@ +# DeleteExternalAIBindingRequest + +## Example Usage + +```typescript +import { DeleteExternalAIBindingRequest } from "@alienplatform/platform-api/models/operations"; + +let value: DeleteExternalAIBindingRequest = { + id: "dg_r27ict8c7vcgsumpj90ackf7b", + workspace: "my-workspace", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the deployment group. | dg_r27ict8c7vcgsumpj90ackf7b | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/deletereleasechannelrequest.md b/client-sdks/platform/typescript/docs/models/operations/deletereleasechannelrequest.md new file mode 100644 index 000000000..0281be0e9 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/deletereleasechannelrequest.md @@ -0,0 +1,21 @@ +# DeleteReleaseChannelRequest + +## Example Usage + +```typescript +import { DeleteReleaseChannelRequest } from "@alienplatform/platform-api/models/operations"; + +let value: DeleteReleaseChannelRequest = { + name: "", + workspace: "my-workspace", + project: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `name` | *string* | :heavy_check_mark: | N/A | | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | +| `project` | *string* | :heavy_check_mark: | Filter by project ID or name. | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/disposition.md b/client-sdks/platform/typescript/docs/models/operations/disposition.md new file mode 100644 index 000000000..d9eb7f750 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/disposition.md @@ -0,0 +1,15 @@ +# Disposition + +## Example Usage + +```typescript +import { Disposition } from "@alienplatform/platform-api/models/operations"; + +let value: Disposition = "preserve"; +``` + +## Values + +```typescript +"preserve" | "deleteContents" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/drainprogress1.md b/client-sdks/platform/typescript/docs/models/operations/drainprogress1.md index 4bff4a3dd..a72b5c893 100644 --- a/client-sdks/platform/typescript/docs/models/operations/drainprogress1.md +++ b/client-sdks/platform/typescript/docs/models/operations/drainprogress1.md @@ -16,14 +16,14 @@ let value: DrainProgress1 = { ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | -| `blockers` | [operations.Blocker1](../../models/operations/blocker1.md)[] | :heavy_minus_sign: | N/A | -| `drainDeadlineAt` | *string* | :heavy_minus_sign: | N/A | -| `drainRequestedAt` | *string* | :heavy_minus_sign: | N/A | -| `drainedAt` | *string* | :heavy_minus_sign: | N/A | -| `force` | *boolean* | :heavy_check_mark: | N/A | -| `machineId` | *string* | :heavy_check_mark: | N/A | -| `replicaCount` | *number* | :heavy_check_mark: | N/A | -| `stalled` | *boolean* | :heavy_check_mark: | N/A | -| `status` | [operations.DrainProgressStatus1](../../models/operations/drainprogressstatus1.md) | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `blockers` | [operations.DrainProgressBlocker1](../../models/operations/drainprogressblocker1.md)[] | :heavy_minus_sign: | N/A | +| `drainDeadlineAt` | *string* | :heavy_minus_sign: | N/A | +| `drainRequestedAt` | *string* | :heavy_minus_sign: | N/A | +| `drainedAt` | *string* | :heavy_minus_sign: | N/A | +| `force` | *boolean* | :heavy_check_mark: | N/A | +| `machineId` | *string* | :heavy_check_mark: | N/A | +| `replicaCount` | *number* | :heavy_check_mark: | N/A | +| `stalled` | *boolean* | :heavy_check_mark: | N/A | +| `status` | [operations.DrainProgressStatus1](../../models/operations/drainprogressstatus1.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/drainprogress2.md b/client-sdks/platform/typescript/docs/models/operations/drainprogress2.md index d60b7de05..5c5afb15b 100644 --- a/client-sdks/platform/typescript/docs/models/operations/drainprogress2.md +++ b/client-sdks/platform/typescript/docs/models/operations/drainprogress2.md @@ -16,14 +16,14 @@ let value: DrainProgress2 = { ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | -| `blockers` | [operations.Blocker2](../../models/operations/blocker2.md)[] | :heavy_minus_sign: | N/A | -| `drainDeadlineAt` | *string* | :heavy_minus_sign: | N/A | -| `drainRequestedAt` | *string* | :heavy_minus_sign: | N/A | -| `drainedAt` | *string* | :heavy_minus_sign: | N/A | -| `force` | *boolean* | :heavy_check_mark: | N/A | -| `machineId` | *string* | :heavy_check_mark: | N/A | -| `replicaCount` | *number* | :heavy_check_mark: | N/A | -| `stalled` | *boolean* | :heavy_check_mark: | N/A | -| `status` | [operations.DrainProgressStatus2](../../models/operations/drainprogressstatus2.md) | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `blockers` | [operations.DrainProgressBlocker2](../../models/operations/drainprogressblocker2.md)[] | :heavy_minus_sign: | N/A | +| `drainDeadlineAt` | *string* | :heavy_minus_sign: | N/A | +| `drainRequestedAt` | *string* | :heavy_minus_sign: | N/A | +| `drainedAt` | *string* | :heavy_minus_sign: | N/A | +| `force` | *boolean* | :heavy_check_mark: | N/A | +| `machineId` | *string* | :heavy_check_mark: | N/A | +| `replicaCount` | *number* | :heavy_check_mark: | N/A | +| `stalled` | *boolean* | :heavy_check_mark: | N/A | +| `status` | [operations.DrainProgressStatus2](../../models/operations/drainprogressstatus2.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/drainprogress3.md b/client-sdks/platform/typescript/docs/models/operations/drainprogress3.md index 07c689041..1fb618911 100644 --- a/client-sdks/platform/typescript/docs/models/operations/drainprogress3.md +++ b/client-sdks/platform/typescript/docs/models/operations/drainprogress3.md @@ -16,14 +16,14 @@ let value: DrainProgress3 = { ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | -| `blockers` | [operations.Blocker3](../../models/operations/blocker3.md)[] | :heavy_minus_sign: | N/A | -| `drainDeadlineAt` | *string* | :heavy_minus_sign: | N/A | -| `drainRequestedAt` | *string* | :heavy_minus_sign: | N/A | -| `drainedAt` | *string* | :heavy_minus_sign: | N/A | -| `force` | *boolean* | :heavy_check_mark: | N/A | -| `machineId` | *string* | :heavy_check_mark: | N/A | -| `replicaCount` | *number* | :heavy_check_mark: | N/A | -| `stalled` | *boolean* | :heavy_check_mark: | N/A | -| `status` | [operations.DrainProgressStatus3](../../models/operations/drainprogressstatus3.md) | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `blockers` | [operations.DrainProgressBlocker3](../../models/operations/drainprogressblocker3.md)[] | :heavy_minus_sign: | N/A | +| `drainDeadlineAt` | *string* | :heavy_minus_sign: | N/A | +| `drainRequestedAt` | *string* | :heavy_minus_sign: | N/A | +| `drainedAt` | *string* | :heavy_minus_sign: | N/A | +| `force` | *boolean* | :heavy_check_mark: | N/A | +| `machineId` | *string* | :heavy_check_mark: | N/A | +| `replicaCount` | *number* | :heavy_check_mark: | N/A | +| `stalled` | *boolean* | :heavy_check_mark: | N/A | +| `status` | [operations.DrainProgressStatus3](../../models/operations/drainprogressstatus3.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/drainprogress4.md b/client-sdks/platform/typescript/docs/models/operations/drainprogress4.md index fe93c5a95..b1cde9b35 100644 --- a/client-sdks/platform/typescript/docs/models/operations/drainprogress4.md +++ b/client-sdks/platform/typescript/docs/models/operations/drainprogress4.md @@ -16,14 +16,14 @@ let value: DrainProgress4 = { ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | -| `blockers` | [operations.Blocker4](../../models/operations/blocker4.md)[] | :heavy_minus_sign: | N/A | -| `drainDeadlineAt` | *string* | :heavy_minus_sign: | N/A | -| `drainRequestedAt` | *string* | :heavy_minus_sign: | N/A | -| `drainedAt` | *string* | :heavy_minus_sign: | N/A | -| `force` | *boolean* | :heavy_check_mark: | N/A | -| `machineId` | *string* | :heavy_check_mark: | N/A | -| `replicaCount` | *number* | :heavy_check_mark: | N/A | -| `stalled` | *boolean* | :heavy_check_mark: | N/A | -| `status` | [operations.DrainProgressStatus4](../../models/operations/drainprogressstatus4.md) | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `blockers` | [operations.DrainProgressBlocker4](../../models/operations/drainprogressblocker4.md)[] | :heavy_minus_sign: | N/A | +| `drainDeadlineAt` | *string* | :heavy_minus_sign: | N/A | +| `drainRequestedAt` | *string* | :heavy_minus_sign: | N/A | +| `drainedAt` | *string* | :heavy_minus_sign: | N/A | +| `force` | *boolean* | :heavy_check_mark: | N/A | +| `machineId` | *string* | :heavy_check_mark: | N/A | +| `replicaCount` | *number* | :heavy_check_mark: | N/A | +| `stalled` | *boolean* | :heavy_check_mark: | N/A | +| `status` | [operations.DrainProgressStatus4](../../models/operations/drainprogressstatus4.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/drainprogressblocker1.md b/client-sdks/platform/typescript/docs/models/operations/drainprogressblocker1.md new file mode 100644 index 000000000..7d4540e67 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/drainprogressblocker1.md @@ -0,0 +1,25 @@ +# DrainProgressBlocker1 + +## Example Usage + +```typescript +import { DrainProgressBlocker1 } from "@alienplatform/platform-api/models/operations"; + +let value: DrainProgressBlocker1 = { + reason: "", + replicaId: "", + schedulingMode: "", + state: "Ohio", + workloadName: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `reason` | *string* | :heavy_check_mark: | N/A | +| `replicaId` | *string* | :heavy_check_mark: | N/A | +| `schedulingMode` | *string* | :heavy_check_mark: | N/A | +| `state` | *string* | :heavy_check_mark: | N/A | +| `workloadName` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/drainprogressblocker2.md b/client-sdks/platform/typescript/docs/models/operations/drainprogressblocker2.md new file mode 100644 index 000000000..c7be091c7 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/drainprogressblocker2.md @@ -0,0 +1,25 @@ +# DrainProgressBlocker2 + +## Example Usage + +```typescript +import { DrainProgressBlocker2 } from "@alienplatform/platform-api/models/operations"; + +let value: DrainProgressBlocker2 = { + reason: "", + replicaId: "", + schedulingMode: "", + state: "Tennessee", + workloadName: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `reason` | *string* | :heavy_check_mark: | N/A | +| `replicaId` | *string* | :heavy_check_mark: | N/A | +| `schedulingMode` | *string* | :heavy_check_mark: | N/A | +| `state` | *string* | :heavy_check_mark: | N/A | +| `workloadName` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/drainprogressblocker3.md b/client-sdks/platform/typescript/docs/models/operations/drainprogressblocker3.md new file mode 100644 index 000000000..a14d3bdbc --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/drainprogressblocker3.md @@ -0,0 +1,25 @@ +# DrainProgressBlocker3 + +## Example Usage + +```typescript +import { DrainProgressBlocker3 } from "@alienplatform/platform-api/models/operations"; + +let value: DrainProgressBlocker3 = { + reason: "", + replicaId: "", + schedulingMode: "", + state: "South Carolina", + workloadName: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `reason` | *string* | :heavy_check_mark: | N/A | +| `replicaId` | *string* | :heavy_check_mark: | N/A | +| `schedulingMode` | *string* | :heavy_check_mark: | N/A | +| `state` | *string* | :heavy_check_mark: | N/A | +| `workloadName` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/drainprogressblocker4.md b/client-sdks/platform/typescript/docs/models/operations/drainprogressblocker4.md new file mode 100644 index 000000000..dd01a4eb5 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/drainprogressblocker4.md @@ -0,0 +1,25 @@ +# DrainProgressBlocker4 + +## Example Usage + +```typescript +import { DrainProgressBlocker4 } from "@alienplatform/platform-api/models/operations"; + +let value: DrainProgressBlocker4 = { + reason: "", + replicaId: "", + schedulingMode: "", + state: "Virginia", + workloadName: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `reason` | *string* | :heavy_check_mark: | N/A | +| `replicaId` | *string* | :heavy_check_mark: | N/A | +| `schedulingMode` | *string* | :heavy_check_mark: | N/A | +| `state` | *string* | :heavy_check_mark: | N/A | +| `workloadName` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/enabled.md b/client-sdks/platform/typescript/docs/models/operations/enabled.md new file mode 100644 index 000000000..86418ff6f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/enabled.md @@ -0,0 +1,15 @@ +# Enabled + +## Example Usage + +```typescript +import { Enabled } from "@alienplatform/platform-api/models/operations"; + +let value: Enabled = "models"; +``` + +## Values + +```typescript +"deployments" | "models" | "keys" | "buckets" | "registry" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/finalizeawsvirtualkeydeletionrequest.md b/client-sdks/platform/typescript/docs/models/operations/finalizeawsvirtualkeydeletionrequest.md new file mode 100644 index 000000000..46411be90 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/finalizeawsvirtualkeydeletionrequest.md @@ -0,0 +1,18 @@ +# FinalizeAwsVirtualKeyDeletionRequest + +## Example Usage + +```typescript +import { FinalizeAwsVirtualKeyDeletionRequest } from "@alienplatform/platform-api/models/operations"; + +let value: FinalizeAwsVirtualKeyDeletionRequest = { + id: "vkey_0p9nwqgtftugsoey99lqyqq", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the aws virtual key. | vkey_0p9nwqgtftugsoey99lqyqq | +| `requestBody` | [operations.FinalizeAwsVirtualKeyDeletionRequestBody](../../models/operations/finalizeawsvirtualkeydeletionrequestbody.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/finalizeawsvirtualkeydeletionrequestbody.md b/client-sdks/platform/typescript/docs/models/operations/finalizeawsvirtualkeydeletionrequestbody.md new file mode 100644 index 000000000..c8c96737d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/finalizeawsvirtualkeydeletionrequestbody.md @@ -0,0 +1,17 @@ +# FinalizeAwsVirtualKeyDeletionRequestBody + +## Example Usage + +```typescript +import { FinalizeAwsVirtualKeyDeletionRequestBody } from "@alienplatform/platform-api/models/operations"; + +let value: FinalizeAwsVirtualKeyDeletionRequestBody = { + kmsKeyArn: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `kmsKeyArn` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/finalizeawsvirtualkeydeletionresponse.md b/client-sdks/platform/typescript/docs/models/operations/finalizeawsvirtualkeydeletionresponse.md new file mode 100644 index 000000000..9ef11c40d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/finalizeawsvirtualkeydeletionresponse.md @@ -0,0 +1,56 @@ +# FinalizeAwsVirtualKeyDeletionResponse + +Virtual Key whose final AWS KMS deletion was observed + +## Example Usage + +```typescript +import { FinalizeAwsVirtualKeyDeletionResponse } from "@alienplatform/platform-api/models/operations"; + +let value: FinalizeAwsVirtualKeyDeletionResponse = { + id: "vkey_0p9nwqgtftugsoey99lqyqq", + projectId: "", + status: "decommissioning", + externalKeyId: "", + awsAccountId: "", + awsRegion: "", + customKeyStoreId: "", + kmsKeyArn: null, + alias: null, + description: "pushy given geez since insistent unique", + deletionWindowDays: 210456, + tags: { + "key": "", + "key1": "", + }, + observedAt: new Date("2025-09-03T18:02:21.765Z"), + canaryPassedAt: new Date("2026-03-17T17:22:18.363Z"), + deletionScheduledAt: new Date("2026-07-21T11:43:54.747Z"), + finalDeletionObservedAt: new Date("2024-02-16T19:57:45.276Z"), + createdAt: new Date("2026-09-26T04:21:22.427Z"), + updatedAt: new Date("2025-06-12T11:22:12.826Z"), +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the aws virtual key. | vkey_0p9nwqgtftugsoey99lqyqq | +| `projectId` | *string* | :heavy_check_mark: | N/A | | +| `status` | [operations.FinalizeAwsVirtualKeyDeletionStatus](../../models/operations/finalizeawsvirtualkeydeletionstatus.md) | :heavy_check_mark: | N/A | | +| `externalKeyId` | *string* | :heavy_check_mark: | N/A | | +| `awsAccountId` | *string* | :heavy_check_mark: | N/A | | +| `awsRegion` | *string* | :heavy_check_mark: | N/A | | +| `customKeyStoreId` | *string* | :heavy_check_mark: | N/A | | +| `kmsKeyArn` | *string* | :heavy_check_mark: | N/A | | +| `alias` | *string* | :heavy_check_mark: | N/A | | +| `description` | *string* | :heavy_check_mark: | N/A | | +| `deletionWindowDays` | *number* | :heavy_check_mark: | N/A | | +| `tags` | Record | :heavy_check_mark: | N/A | | +| `observedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `canaryPassedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `deletionScheduledAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `finalDeletionObservedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `createdAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `updatedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/finalizeawsvirtualkeydeletionstatus.md b/client-sdks/platform/typescript/docs/models/operations/finalizeawsvirtualkeydeletionstatus.md new file mode 100644 index 000000000..4655a7fa1 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/finalizeawsvirtualkeydeletionstatus.md @@ -0,0 +1,15 @@ +# FinalizeAwsVirtualKeyDeletionStatus + +## Example Usage + +```typescript +import { FinalizeAwsVirtualKeyDeletionStatus } from "@alienplatform/platform-api/models/operations"; + +let value: FinalizeAwsVirtualKeyDeletionStatus = "provisioning"; +``` + +## Values + +```typescript +"provisioning" | "ready" | "action-required" | "decommissioning" | "deletion-pending" | "deleted" | "failed" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/generatemanagerbindingtokenrequest.md b/client-sdks/platform/typescript/docs/models/operations/generatemanagerbindingtokenrequest.md new file mode 100644 index 000000000..ca07e2876 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/generatemanagerbindingtokenrequest.md @@ -0,0 +1,23 @@ +# GenerateManagerBindingTokenRequest + +## Example Usage + +```typescript +import { GenerateManagerBindingTokenRequest } from "@alienplatform/platform-api/models/operations"; + +let value: GenerateManagerBindingTokenRequest = { + id: "mgr_enxscjrqiiu2lrc672hwwuc5", + workspace: "my-workspace", + generateManagerBindingTokenRequest: { + deploymentId: "dep_0c29fq4a2yjb7kx3smwdgxlc", + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for a manager. | mgr_enxscjrqiiu2lrc672hwwuc5 | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | +| `generateManagerBindingTokenRequest` | [models.GenerateManagerBindingTokenRequest](../../models/generatemanagerbindingtokenrequest.md) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getaccessrequestcoordinatesrequest.md b/client-sdks/platform/typescript/docs/models/operations/getaccessrequestcoordinatesrequest.md new file mode 100644 index 000000000..046b69465 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getaccessrequestcoordinatesrequest.md @@ -0,0 +1,19 @@ +# GetAccessRequestCoordinatesRequest + +## Example Usage + +```typescript +import { GetAccessRequestCoordinatesRequest } from "@alienplatform/platform-api/models/operations"; + +let value: GetAccessRequestCoordinatesRequest = { + id: "", + workspace: "my-workspace", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | N/A | | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getaccessrequestcoordinatesresponse.md b/client-sdks/platform/typescript/docs/models/operations/getaccessrequestcoordinatesresponse.md new file mode 100644 index 000000000..7efacf552 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getaccessrequestcoordinatesresponse.md @@ -0,0 +1,21 @@ +# GetAccessRequestCoordinatesResponse + +The approve command (or null) and current status. + +## Example Usage + +```typescript +import { GetAccessRequestCoordinatesResponse } from "@alienplatform/platform-api/models/operations"; + +let value: GetAccessRequestCoordinatesResponse = { + status: "rejected", + kubectlApprove: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | +| `status` | [operations.GetAccessRequestCoordinatesStatus](../../models/operations/getaccessrequestcoordinatesstatus.md) | :heavy_check_mark: | N/A | +| `kubectlApprove` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getaccessrequestcoordinatesstatus.md b/client-sdks/platform/typescript/docs/models/operations/getaccessrequestcoordinatesstatus.md new file mode 100644 index 000000000..6afe42ff1 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getaccessrequestcoordinatesstatus.md @@ -0,0 +1,15 @@ +# GetAccessRequestCoordinatesStatus + +## Example Usage + +```typescript +import { GetAccessRequestCoordinatesStatus } from "@alienplatform/platform-api/models/operations"; + +let value: GetAccessRequestCoordinatesStatus = "expired"; +``` + +## Values + +```typescript +"pending-approval" | "queued" | "customer-approved" | "expired" | "rejected" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getagentsessionrequest.md b/client-sdks/platform/typescript/docs/models/operations/getagentsessionrequest.md new file mode 100644 index 000000000..b36bab2b8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getagentsessionrequest.md @@ -0,0 +1,19 @@ +# GetAgentSessionRequest + +## Example Usage + +```typescript +import { GetAgentSessionRequest } from "@alienplatform/platform-api/models/operations"; + +let value: GetAgentSessionRequest = { + id: "", + workspace: "my-workspace", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | N/A | | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getawsvirtualkeyrequest.md b/client-sdks/platform/typescript/docs/models/operations/getawsvirtualkeyrequest.md new file mode 100644 index 000000000..79dc2b736 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getawsvirtualkeyrequest.md @@ -0,0 +1,17 @@ +# GetAwsVirtualKeyRequest + +## Example Usage + +```typescript +import { GetAwsVirtualKeyRequest } from "@alienplatform/platform-api/models/operations"; + +let value: GetAwsVirtualKeyRequest = { + id: "vkey_0p9nwqgtftugsoey99lqyqq", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------ | ------------------------------------------ | ------------------------------------------ | ------------------------------------------ | ------------------------------------------ | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the aws virtual key. | vkey_0p9nwqgtftugsoey99lqyqq | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getawsvirtualkeyresponse.md b/client-sdks/platform/typescript/docs/models/operations/getawsvirtualkeyresponse.md new file mode 100644 index 000000000..2b2cc416b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getawsvirtualkeyresponse.md @@ -0,0 +1,53 @@ +# GetAwsVirtualKeyResponse + +AWS Virtual Key + +## Example Usage + +```typescript +import { GetAwsVirtualKeyResponse } from "@alienplatform/platform-api/models/operations"; + +let value: GetAwsVirtualKeyResponse = { + id: "vkey_0p9nwqgtftugsoey99lqyqq", + projectId: "", + status: "deleted", + externalKeyId: "", + awsAccountId: "", + awsRegion: "", + customKeyStoreId: "", + kmsKeyArn: "", + alias: "", + description: "clear rigid as cleverly ugh rebuild scoff", + deletionWindowDays: 960477, + tags: {}, + observedAt: new Date("2026-09-11T15:13:42.020Z"), + canaryPassedAt: new Date("2026-06-10T18:36:35.435Z"), + deletionScheduledAt: new Date("2026-11-05T23:14:28.617Z"), + finalDeletionObservedAt: new Date("2024-10-20T09:43:23.045Z"), + createdAt: new Date("2026-02-01T04:27:26.899Z"), + updatedAt: new Date("2025-09-28T19:19:48.966Z"), +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the aws virtual key. | vkey_0p9nwqgtftugsoey99lqyqq | +| `projectId` | *string* | :heavy_check_mark: | N/A | | +| `status` | [operations.GetAwsVirtualKeyStatus](../../models/operations/getawsvirtualkeystatus.md) | :heavy_check_mark: | N/A | | +| `externalKeyId` | *string* | :heavy_check_mark: | N/A | | +| `awsAccountId` | *string* | :heavy_check_mark: | N/A | | +| `awsRegion` | *string* | :heavy_check_mark: | N/A | | +| `customKeyStoreId` | *string* | :heavy_check_mark: | N/A | | +| `kmsKeyArn` | *string* | :heavy_check_mark: | N/A | | +| `alias` | *string* | :heavy_check_mark: | N/A | | +| `description` | *string* | :heavy_check_mark: | N/A | | +| `deletionWindowDays` | *number* | :heavy_check_mark: | N/A | | +| `tags` | Record | :heavy_check_mark: | N/A | | +| `observedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `canaryPassedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `deletionScheduledAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `finalDeletionObservedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `createdAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `updatedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getawsvirtualkeystatus.md b/client-sdks/platform/typescript/docs/models/operations/getawsvirtualkeystatus.md new file mode 100644 index 000000000..efa8b308c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getawsvirtualkeystatus.md @@ -0,0 +1,15 @@ +# GetAwsVirtualKeyStatus + +## Example Usage + +```typescript +import { GetAwsVirtualKeyStatus } from "@alienplatform/platform-api/models/operations"; + +let value: GetAwsVirtualKeyStatus = "decommissioning"; +``` + +## Values + +```typescript +"provisioning" | "ready" | "action-required" | "decommissioning" | "deletion-pending" | "deleted" | "failed" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getcontainerregistrymanagersnapshotrequest.md b/client-sdks/platform/typescript/docs/models/operations/getcontainerregistrymanagersnapshotrequest.md new file mode 100644 index 000000000..d03ca02c7 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getcontainerregistrymanagersnapshotrequest.md @@ -0,0 +1,17 @@ +# GetContainerRegistryManagerSnapshotRequest + +## Example Usage + +```typescript +import { GetContainerRegistryManagerSnapshotRequest } from "@alienplatform/platform-api/models/operations"; + +let value: GetContainerRegistryManagerSnapshotRequest = { + id: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `id` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getcontainerregistryrequest.md b/client-sdks/platform/typescript/docs/models/operations/getcontainerregistryrequest.md new file mode 100644 index 000000000..59469b44a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getcontainerregistryrequest.md @@ -0,0 +1,19 @@ +# GetContainerRegistryRequest + +## Example Usage + +```typescript +import { GetContainerRegistryRequest } from "@alienplatform/platform-api/models/operations"; + +let value: GetContainerRegistryRequest = { + id: "dg_r27ict8c7vcgsumpj90ackf7b", + workspace: "my-workspace", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the deployment group. | dg_r27ict8c7vcgsumpj90ackf7b | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getdeploymentinfosetupitem.md b/client-sdks/platform/typescript/docs/models/operations/getdeploymentinfosetupitem.md index a4fc112a7..756cb16e1 100644 --- a/client-sdks/platform/typescript/docs/models/operations/getdeploymentinfosetupitem.md +++ b/client-sdks/platform/typescript/docs/models/operations/getdeploymentinfosetupitem.md @@ -5,11 +5,11 @@ ```typescript import { GetDeploymentInfoSetupItem } from "@alienplatform/platform-api/models/operations"; -let value: GetDeploymentInfoSetupItem = "models"; +let value: GetDeploymentInfoSetupItem = "keys"; ``` ## Values ```typescript -"alien-stack" | "models" | "keys" +"deployment" | "models" | "keys" | "bucket" | "registry" ``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getdeploymentstatsrequest.md b/client-sdks/platform/typescript/docs/models/operations/getdeploymentstatsrequest.md index 459f63669..8ae22f553 100644 --- a/client-sdks/platform/typescript/docs/models/operations/getdeploymentstatsrequest.md +++ b/client-sdks/platform/typescript/docs/models/operations/getdeploymentstatsrequest.md @@ -18,6 +18,7 @@ let value: GetDeploymentStatsRequest = { | `project` | *string* | :heavy_minus_sign: | Filter by project ID or name. | | | `deploymentGroup` | *string* | :heavy_minus_sign: | Filter by deployment group ID or name | | | `managerId` | *string* | :heavy_minus_sign: | Filter by manager ID | | +| `purpose` | [models.DeploymentPurpose](../../models/deploymentpurpose.md) | :heavy_minus_sign: | Filter by deployment purpose | | | `environment` | [operations.GetDeploymentStatsEnvironment](../../models/operations/getdeploymentstatsenvironment.md)[] | :heavy_minus_sign: | Filter deployments by effective environment | | | `status` | [operations.GetDeploymentStatsStatus](../../models/operations/getdeploymentstatsstatus.md)[] | :heavy_minus_sign: | Filter deployments by status | | | `search` | *string* | :heavy_minus_sign: | Search deployments by name or deployment group name | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getdirectanthropicbindingrequest.md b/client-sdks/platform/typescript/docs/models/operations/getdirectanthropicbindingrequest.md deleted file mode 100644 index 32c3de4af..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/getdirectanthropicbindingrequest.md +++ /dev/null @@ -1,19 +0,0 @@ -# GetDirectAnthropicBindingRequest - -## Example Usage - -```typescript -import { GetDirectAnthropicBindingRequest } from "@alienplatform/platform-api/models/operations"; - -let value: GetDirectAnthropicBindingRequest = { - id: "dg_r27ict8c7vcgsumpj90ackf7b", - workspace: "my-workspace", -}; -``` - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `id` | *string* | :heavy_check_mark: | Unique identifier for the deployment group. | dg_r27ict8c7vcgsumpj90ackf7b | -| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getexternalaibindingrequest.md b/client-sdks/platform/typescript/docs/models/operations/getexternalaibindingrequest.md new file mode 100644 index 000000000..4f7bf196d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getexternalaibindingrequest.md @@ -0,0 +1,19 @@ +# GetExternalAIBindingRequest + +## Example Usage + +```typescript +import { GetExternalAIBindingRequest } from "@alienplatform/platform-api/models/operations"; + +let value: GetExternalAIBindingRequest = { + id: "dg_r27ict8c7vcgsumpj90ackf7b", + workspace: "my-workspace", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the deployment group. | dg_r27ict8c7vcgsumpj90ackf7b | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getoperationspolicyrequest.md b/client-sdks/platform/typescript/docs/models/operations/getoperationspolicyrequest.md new file mode 100644 index 000000000..011aebecb --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getoperationspolicyrequest.md @@ -0,0 +1,19 @@ +# GetOperationsPolicyRequest + +## Example Usage + +```typescript +import { GetOperationsPolicyRequest } from "@alienplatform/platform-api/models/operations"; + +let value: GetOperationsPolicyRequest = { + workspace: "my-workspace", + project: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | +| `project` | *string* | :heavy_check_mark: | Filter by project ID or name. | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getprojectaiusagemodel.md b/client-sdks/platform/typescript/docs/models/operations/getprojectaiusagemodel.md new file mode 100644 index 000000000..06a4d4b9f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getprojectaiusagemodel.md @@ -0,0 +1,37 @@ +# GetProjectAiUsageModel + +## Example Usage + +```typescript +import { GetProjectAiUsageModel } from "@alienplatform/platform-api/models/operations"; + +let value: GetProjectAiUsageModel = { + requests: 524841, + successfulRequests: 429001, + errorRequests: 284409, + averageLatencyMs: 5776.86, + p95LatencyMs: 7236.06, + inputTokens: null, + outputTokens: 480329, + estimatedCostMicrousd: 309767, + pricedRequests: 188816, + publicModel: "", + provider: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------- | ----------------------- | ----------------------- | ----------------------- | +| `requests` | *number* | :heavy_check_mark: | N/A | +| `successfulRequests` | *number* | :heavy_check_mark: | N/A | +| `errorRequests` | *number* | :heavy_check_mark: | N/A | +| `averageLatencyMs` | *number* | :heavy_check_mark: | N/A | +| `p95LatencyMs` | *number* | :heavy_check_mark: | N/A | +| `inputTokens` | *number* | :heavy_check_mark: | N/A | +| `outputTokens` | *number* | :heavy_check_mark: | N/A | +| `estimatedCostMicrousd` | *number* | :heavy_check_mark: | N/A | +| `pricedRequests` | *number* | :heavy_check_mark: | N/A | +| `publicModel` | *string* | :heavy_check_mark: | N/A | +| `provider` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getprojectaiusagereason.md b/client-sdks/platform/typescript/docs/models/operations/getprojectaiusagereason.md new file mode 100644 index 000000000..63080e32f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getprojectaiusagereason.md @@ -0,0 +1,15 @@ +# GetProjectAiUsageReason + +## Example Usage + +```typescript +import { GetProjectAiUsageReason } from "@alienplatform/platform-api/models/operations"; + +let value: GetProjectAiUsageReason = "temporarily-unavailable"; +``` + +## Values + +```typescript +"not-configured" | "temporarily-unavailable" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getprojectaiusagerequest.md b/client-sdks/platform/typescript/docs/models/operations/getprojectaiusagerequest.md new file mode 100644 index 000000000..8542cf29a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getprojectaiusagerequest.md @@ -0,0 +1,20 @@ +# GetProjectAiUsageRequest + +## Example Usage + +```typescript +import { GetProjectAiUsageRequest } from "@alienplatform/platform-api/models/operations"; + +let value: GetProjectAiUsageRequest = { + idOrName: "", + workspace: "my-workspace", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `idOrName` | *string* | :heavy_check_mark: | Project ID or name. | | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | +| `range` | [operations.QueryParamRange](../../models/operations/queryparamrange.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getprojectaiusageresponse.md b/client-sdks/platform/typescript/docs/models/operations/getprojectaiusageresponse.md new file mode 100644 index 000000000..572f5ebc3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getprojectaiusageresponse.md @@ -0,0 +1,72 @@ +# GetProjectAiUsageResponse + +Privacy-safe AI Gateway usage aggregates. + + +## Supported Types + +### `operations.Unavailable` + +```typescript +const value: operations.Unavailable = { + status: "unavailable", + reason: "not-configured", +}; +``` + +### `operations.Available` + +```typescript +const value: operations.Available = { + status: "available", + range: "7d", + pricing: { + label: "Estimated provider cost", + coverage: 4485.61, + revision: "", + }, + totals: { + requests: 693783, + successfulRequests: 310561, + errorRequests: 203130, + averageLatencyMs: 4118.4, + p95LatencyMs: null, + inputTokens: 639818, + outputTokens: 264082, + estimatedCostMicrousd: 970447, + pricedRequests: 94285, + }, + timeSeries: [ + { + requests: 925877, + successfulRequests: 276847, + errorRequests: 426254, + averageLatencyMs: null, + p95LatencyMs: 5677.9, + inputTokens: null, + outputTokens: 937346, + estimatedCostMicrousd: 165362, + pricedRequests: 39907, + bucket: new Date("2026-10-28T10:39:01.844Z"), + }, + ], + customers: [ + { + requests: 283671, + successfulRequests: 61648, + errorRequests: 770565, + averageLatencyMs: 8903.54, + p95LatencyMs: 4971.72, + inputTokens: 18051, + outputTokens: 983025, + estimatedCostMicrousd: 489322, + pricedRequests: 284032, + deploymentGroupId: "", + name: "", + externalId: "", + }, + ], + models: [], +}; +``` + diff --git a/client-sdks/platform/typescript/docs/models/operations/getprojectcapabilityoverviewrequest.md b/client-sdks/platform/typescript/docs/models/operations/getprojectcapabilityoverviewrequest.md new file mode 100644 index 000000000..fe35c6811 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getprojectcapabilityoverviewrequest.md @@ -0,0 +1,19 @@ +# GetProjectCapabilityOverviewRequest + +## Example Usage + +```typescript +import { GetProjectCapabilityOverviewRequest } from "@alienplatform/platform-api/models/operations"; + +let value: GetProjectCapabilityOverviewRequest = { + idOrName: "", + workspace: "my-workspace", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `idOrName` | *string* | :heavy_check_mark: | Project ID or name. | | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getreleaseinclude.md b/client-sdks/platform/typescript/docs/models/operations/getreleaseinclude.md index e05e38f81..a7688730f 100644 --- a/client-sdks/platform/typescript/docs/models/operations/getreleaseinclude.md +++ b/client-sdks/platform/typescript/docs/models/operations/getreleaseinclude.md @@ -5,11 +5,11 @@ ```typescript import { GetReleaseInclude } from "@alienplatform/platform-api/models/operations"; -let value: GetReleaseInclude = "project"; +let value: GetReleaseInclude = "createdBy"; ``` ## Values ```typescript -"project" +"project" | "rollout" | "createdBy" ``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getreleaserequest.md b/client-sdks/platform/typescript/docs/models/operations/getreleaserequest.md index c52e71249..826f3b6b8 100644 --- a/client-sdks/platform/typescript/docs/models/operations/getreleaserequest.md +++ b/client-sdks/platform/typescript/docs/models/operations/getreleaserequest.md @@ -17,4 +17,4 @@ let value: GetReleaseRequest = { | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `id` | *string* | :heavy_check_mark: | Unique identifier for the release. | rel_WbhQgksrawSKIpEN0NAssHX9 | | `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | -| `include` | [operations.GetReleaseInclude](../../models/operations/getreleaseinclude.md)[] | :heavy_minus_sign: | Optional fields to include: project | | \ No newline at end of file +| `include` | [operations.GetReleaseInclude](../../models/operations/getreleaseinclude.md)[] | :heavy_minus_sign: | Optional fields to include: project, rollout | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailarea.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailarea.md index ecbd7db67..89a7a48ae 100644 --- a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailarea.md +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailarea.md @@ -5,11 +5,11 @@ ```typescript import { GetResourceDeploymentDetailArea } from "@alienplatform/platform-api/models/operations"; -let value: GetResourceDeploymentDetailArea = "container"; +let value: GetResourceDeploymentDetailArea = "worker"; ``` ## Values ```typescript -"container" | "worker" | "daemon" +"container" | "worker" | "daemon" | "ai" ``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailmodel1.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailmodel1.md new file mode 100644 index 000000000..49193b33f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailmodel1.md @@ -0,0 +1,31 @@ +# GetResourceDeploymentDetailModel1 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailModel1 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailModel1 = { + accessTest: "not-checked", + availability: "available", + blockers: [ + "agreement-required", + ], + clientApis: [ + "open-ai-chat-completions", + ], + publicModelId: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | +| `accessTest` | [operations.AccessTest1](../../models/operations/accesstest1.md) | :heavy_check_mark: | N/A | +| `availability` | [operations.AvailabilityEnum1](../../models/operations/availabilityenum1.md) | :heavy_check_mark: | N/A | +| `blockers` | [operations.BlockerEnum1](../../models/operations/blockerenum1.md)[] | :heavy_check_mark: | N/A | +| `clientApis` | [operations.GetResourceDeploymentDetailClientApi1](../../models/operations/getresourcedeploymentdetailclientapi1.md)[] | :heavy_check_mark: | N/A | +| `errorCode` | *string* | :heavy_minus_sign: | N/A | +| `publicModelId` | *string* | :heavy_check_mark: | N/A | +| `testedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailmodel2.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailmodel2.md new file mode 100644 index 000000000..ac2727f2e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailmodel2.md @@ -0,0 +1,29 @@ +# GetResourceDeploymentDetailModel2 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailModel2 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailModel2 = { + accessTest: "verified", + availability: "blocked", + blockers: [ + "quota-configuration-required", + ], + clientApis: [], + publicModelId: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | +| `accessTest` | [operations.AccessTest2](../../models/operations/accesstest2.md) | :heavy_check_mark: | N/A | +| `availability` | [operations.AvailabilityEnum2](../../models/operations/availabilityenum2.md) | :heavy_check_mark: | N/A | +| `blockers` | [operations.BlockerEnum2](../../models/operations/blockerenum2.md)[] | :heavy_check_mark: | N/A | +| `clientApis` | [operations.GetResourceDeploymentDetailClientApi2](../../models/operations/getresourcedeploymentdetailclientapi2.md)[] | :heavy_check_mark: | N/A | +| `errorCode` | *string* | :heavy_minus_sign: | N/A | +| `publicModelId` | *string* | :heavy_check_mark: | N/A | +| `testedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailmodel3.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailmodel3.md new file mode 100644 index 000000000..7b431af20 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailmodel3.md @@ -0,0 +1,29 @@ +# GetResourceDeploymentDetailModel3 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailModel3 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailModel3 = { + accessTest: "not-checked", + availability: "unknown", + blockers: [ + "deployment-required", + ], + clientApis: [], + publicModelId: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | +| `accessTest` | [operations.AccessTest3](../../models/operations/accesstest3.md) | :heavy_check_mark: | N/A | +| `availability` | [operations.AvailabilityEnum3](../../models/operations/availabilityenum3.md) | :heavy_check_mark: | N/A | +| `blockers` | [operations.BlockerEnum3](../../models/operations/blockerenum3.md)[] | :heavy_check_mark: | N/A | +| `clientApis` | [operations.GetResourceDeploymentDetailClientApi3](../../models/operations/getresourcedeploymentdetailclientapi3.md)[] | :heavy_check_mark: | N/A | +| `errorCode` | *string* | :heavy_minus_sign: | N/A | +| `publicModelId` | *string* | :heavy_check_mark: | N/A | +| `testedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailmodel4.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailmodel4.md new file mode 100644 index 000000000..6d506e133 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailmodel4.md @@ -0,0 +1,31 @@ +# GetResourceDeploymentDetailModel4 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailModel4 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailModel4 = { + accessTest: "verified", + availability: "available", + blockers: [ + "quota-configuration-required", + ], + clientApis: [ + "anthropic-messages", + ], + publicModelId: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | +| `accessTest` | [operations.AccessTest4](../../models/operations/accesstest4.md) | :heavy_check_mark: | N/A | +| `availability` | [operations.AvailabilityEnum4](../../models/operations/availabilityenum4.md) | :heavy_check_mark: | N/A | +| `blockers` | [operations.BlockerEnum4](../../models/operations/blockerenum4.md)[] | :heavy_check_mark: | N/A | +| `clientApis` | [operations.GetResourceDeploymentDetailClientApi4](../../models/operations/getresourcedeploymentdetailclientapi4.md)[] | :heavy_check_mark: | N/A | +| `errorCode` | *string* | :heavy_minus_sign: | N/A | +| `publicModelId` | *string* | :heavy_check_mark: | N/A | +| `testedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason1.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason1.md new file mode 100644 index 000000000..276351a6c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason1.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason1 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason1 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason1 = "collection-failed"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason10.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason10.md new file mode 100644 index 000000000..846498eb8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason10.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason10 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason10 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason10 = "collection-failed"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason11.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason11.md new file mode 100644 index 000000000..71a1a6a54 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason11.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason11 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason11 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason11 = "api-unavailable"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason12.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason12.md new file mode 100644 index 000000000..5d908f45b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason12.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason12 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason12 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason12 = "forbidden"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason13.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason13.md new file mode 100644 index 000000000..fef3903ee --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason13.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason13 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason13 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason13 = "collection-failed"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason14.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason14.md new file mode 100644 index 000000000..6399977e1 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason14.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason14 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason14 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason14 = "timed-out"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason15.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason15.md new file mode 100644 index 000000000..b64977553 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason15.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason15 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason15 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason15 = "timed-out"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason16.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason16.md new file mode 100644 index 000000000..34b3f0fe4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason16.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason16 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason16 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason16 = "api-unavailable"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason17.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason17.md new file mode 100644 index 000000000..1d9eaa551 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason17.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason17 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason17 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason17 = "not-installed"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason18.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason18.md new file mode 100644 index 000000000..07bab3ee1 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason18.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason18 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason18 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason18 = "not-installed"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason19.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason19.md new file mode 100644 index 000000000..584a8042a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason19.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason19 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason19 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason19 = "not-installed"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason2.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason2.md new file mode 100644 index 000000000..aa5a31f69 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason2.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason2 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason2 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason2 = "api-unavailable"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason20.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason20.md new file mode 100644 index 000000000..015c3122e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason20.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason20 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason20 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason20 = "collection-failed"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason21.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason21.md new file mode 100644 index 000000000..e07dd9c81 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason21.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason21 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason21 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason21 = "forbidden"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason22.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason22.md new file mode 100644 index 000000000..27846e813 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason22.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason22 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason22 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason22 = "not-installed"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason23.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason23.md new file mode 100644 index 000000000..a20f5c446 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason23.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason23 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason23 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason23 = "collection-failed"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason24.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason24.md new file mode 100644 index 000000000..56c57dafd --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason24.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason24 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason24 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason24 = "not-installed"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason25.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason25.md new file mode 100644 index 000000000..bf07e3871 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason25.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason25 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason25 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason25 = "collection-failed"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason26.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason26.md new file mode 100644 index 000000000..225f72b10 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason26.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason26 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason26 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason26 = "forbidden"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason27.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason27.md new file mode 100644 index 000000000..9f020af97 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason27.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason27 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason27 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason27 = "timed-out"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason28.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason28.md new file mode 100644 index 000000000..ba9199bf8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason28.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason28 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason28 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason28 = "not-installed"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason29.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason29.md new file mode 100644 index 000000000..7ffcc5e73 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason29.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason29 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason29 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason29 = "not-installed"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason3.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason3.md new file mode 100644 index 000000000..aacc88f8b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason3.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason3 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason3 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason3 = "timed-out"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason30.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason30.md new file mode 100644 index 000000000..05c06bf8b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason30.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason30 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason30 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason30 = "timed-out"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason31.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason31.md new file mode 100644 index 000000000..4ec80bfab --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason31.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason31 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason31 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason31 = "api-unavailable"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason32.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason32.md new file mode 100644 index 000000000..a43f5291f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason32.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason32 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason32 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason32 = "timed-out"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason33.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason33.md new file mode 100644 index 000000000..14ae1a079 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason33.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason33 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason33 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason33 = "not-installed"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason34.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason34.md new file mode 100644 index 000000000..fc1d6eeb1 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason34.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason34 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason34 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason34 = "collection-failed"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason35.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason35.md new file mode 100644 index 000000000..1842e3374 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason35.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason35 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason35 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason35 = "forbidden"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason36.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason36.md new file mode 100644 index 000000000..cfe399a3f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason36.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason36 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason36 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason36 = "collection-failed"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason37.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason37.md new file mode 100644 index 000000000..cbbfc2a09 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason37.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason37 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason37 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason37 = "api-unavailable"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason38.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason38.md new file mode 100644 index 000000000..2397afd04 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason38.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason38 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason38 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason38 = "api-unavailable"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason39.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason39.md new file mode 100644 index 000000000..73653c6b2 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason39.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason39 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason39 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason39 = "not-installed"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason4.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason4.md new file mode 100644 index 000000000..1746bfc62 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason4.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason4 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason4 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason4 = "not-installed"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason40.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason40.md new file mode 100644 index 000000000..efae429b6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason40.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason40 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason40 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason40 = "forbidden"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason41.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason41.md new file mode 100644 index 000000000..f74bb465c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason41.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason41 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason41 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason41 = "forbidden"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason42.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason42.md new file mode 100644 index 000000000..d9f07d5e9 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason42.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason42 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason42 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason42 = "api-unavailable"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason43.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason43.md new file mode 100644 index 000000000..e64aabca8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason43.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason43 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason43 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason43 = "not-installed"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason44.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason44.md new file mode 100644 index 000000000..a22693f19 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason44.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason44 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason44 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason44 = "timed-out"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason45.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason45.md new file mode 100644 index 000000000..075f2a107 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason45.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason45 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason45 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason45 = "forbidden"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason46.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason46.md new file mode 100644 index 000000000..9b2a8a0de --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason46.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason46 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason46 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason46 = "forbidden"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason47.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason47.md new file mode 100644 index 000000000..88be50de2 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason47.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason47 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason47 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason47 = "forbidden"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason48.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason48.md new file mode 100644 index 000000000..dd88c6d98 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason48.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason48 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason48 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason48 = "not-installed"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason49.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason49.md new file mode 100644 index 000000000..d0882a52d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason49.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason49 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason49 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason49 = "collection-failed"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason5.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason5.md new file mode 100644 index 000000000..7c8727117 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason5.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason5 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason5 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason5 = "timed-out"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason50.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason50.md new file mode 100644 index 000000000..553715f2b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason50.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason50 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason50 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason50 = "api-unavailable"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason51.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason51.md new file mode 100644 index 000000000..491659f9c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason51.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason51 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason51 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason51 = "collection-failed"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason52.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason52.md new file mode 100644 index 000000000..c3f460010 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason52.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason52 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason52 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason52 = "collection-failed"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason53.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason53.md new file mode 100644 index 000000000..d3e3b60af --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason53.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason53 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason53 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason53 = "forbidden"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason54.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason54.md new file mode 100644 index 000000000..4ce1f6d04 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason54.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason54 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason54 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason54 = "collection-failed"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason55.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason55.md new file mode 100644 index 000000000..42bb3c7c9 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason55.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason55 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason55 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason55 = "api-unavailable"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason56.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason56.md new file mode 100644 index 000000000..800d6c4b4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason56.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason56 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason56 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason56 = "api-unavailable"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason57.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason57.md new file mode 100644 index 000000000..0ceb118aa --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason57.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason57 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason57 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason57 = "forbidden"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason58.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason58.md new file mode 100644 index 000000000..3a3b2bc50 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason58.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason58 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason58 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason58 = "forbidden"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason59.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason59.md new file mode 100644 index 000000000..371ceaaef --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason59.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason59 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason59 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason59 = "timed-out"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason6.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason6.md new file mode 100644 index 000000000..74e55e27d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason6.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason6 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason6 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason6 = "forbidden"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason60.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason60.md new file mode 100644 index 000000000..a7d1935e7 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason60.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason60 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason60 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason60 = "api-unavailable"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason61.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason61.md new file mode 100644 index 000000000..76299edde --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason61.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason61 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason61 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason61 = "timed-out"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason62.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason62.md new file mode 100644 index 000000000..e733e9721 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason62.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason62 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason62 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason62 = "forbidden"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason63.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason63.md new file mode 100644 index 000000000..122566248 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason63.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason63 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason63 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason63 = "collection-failed"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason64.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason64.md new file mode 100644 index 000000000..874e8e4a4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason64.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason64 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason64 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason64 = "api-unavailable"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason65.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason65.md new file mode 100644 index 000000000..1a9e17c19 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason65.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason65 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason65 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason65 = "collection-failed"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason66.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason66.md new file mode 100644 index 000000000..49336765d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason66.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason66 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason66 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason66 = "not-installed"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason67.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason67.md new file mode 100644 index 000000000..3cf26d0de --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason67.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason67 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason67 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason67 = "timed-out"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason68.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason68.md new file mode 100644 index 000000000..4bb91de31 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason68.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason68 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason68 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason68 = "forbidden"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason69.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason69.md new file mode 100644 index 000000000..9d8ad37d9 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason69.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason69 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason69 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason69 = "timed-out"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason7.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason7.md new file mode 100644 index 000000000..eed221e35 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason7.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason7 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason7 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason7 = "timed-out"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason8.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason8.md new file mode 100644 index 000000000..29296e342 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason8.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason8 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason8 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason8 = "forbidden"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason9.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason9.md new file mode 100644 index 000000000..ce9366543 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailreason9.md @@ -0,0 +1,15 @@ +# GetResourceDeploymentDetailReason9 + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailReason9 } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailReason9 = "api-unavailable"; +``` + +## Values + +```typescript +"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailrepository.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailrepository.md new file mode 100644 index 000000000..2bb7d2264 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailrepository.md @@ -0,0 +1,30 @@ +# GetResourceDeploymentDetailRepository + +## Example Usage + +```typescript +import { GetResourceDeploymentDetailRepository } from "@alienplatform/platform-api/models/operations"; + +let value: GetResourceDeploymentDetailRepository = { + createdAt: 3830.97, + kmsKeyPresent: true, + registryId: "", + repositoryArn: "", + repositoryName: "", + repositoryUri: "https://cool-ceramic.biz/", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------- | -------------------- | -------------------- | -------------------- | +| `createdAt` | *number* | :heavy_check_mark: | N/A | +| `encryptionType` | *string* | :heavy_minus_sign: | N/A | +| `imageTagMutability` | *string* | :heavy_minus_sign: | N/A | +| `kmsKeyPresent` | *boolean* | :heavy_check_mark: | N/A | +| `registryId` | *string* | :heavy_check_mark: | N/A | +| `repositoryArn` | *string* | :heavy_check_mark: | N/A | +| `repositoryName` | *string* | :heavy_check_mark: | N/A | +| `repositoryUri` | *string* | :heavy_check_mark: | N/A | +| `scanOnPush` | *boolean* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailresponse.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailresponse.md index 887ccf3f7..b506ef680 100644 --- a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailresponse.md +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailresponse.md @@ -1,6 +1,6 @@ # GetResourceDeploymentDetailResponse -Latest heartbeat detail for one compute resource deployment. +Latest heartbeat detail for one resource deployment. ## Example Usage diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailsource1.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailsource1.md deleted file mode 100644 index 39259b11f..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailsource1.md +++ /dev/null @@ -1,16 +0,0 @@ -# GetResourceDeploymentDetailSource1 - -## Example Usage - -```typescript -import { GetResourceDeploymentDetailSource1 } from "@alienplatform/platform-api/models/operations"; - -let value: GetResourceDeploymentDetailSource1 = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `component` | *string* | :heavy_minus_sign: | N/A | -| `host` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailsource10.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailsource10.md deleted file mode 100644 index ec36d5195..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailsource10.md +++ /dev/null @@ -1,16 +0,0 @@ -# GetResourceDeploymentDetailSource10 - -## Example Usage - -```typescript -import { GetResourceDeploymentDetailSource10 } from "@alienplatform/platform-api/models/operations"; - -let value: GetResourceDeploymentDetailSource10 = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `component` | *string* | :heavy_minus_sign: | N/A | -| `host` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailsource2.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailsource2.md deleted file mode 100644 index 5f197981a..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailsource2.md +++ /dev/null @@ -1,16 +0,0 @@ -# GetResourceDeploymentDetailSource2 - -## Example Usage - -```typescript -import { GetResourceDeploymentDetailSource2 } from "@alienplatform/platform-api/models/operations"; - -let value: GetResourceDeploymentDetailSource2 = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `component` | *string* | :heavy_minus_sign: | N/A | -| `host` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailsource3.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailsource3.md deleted file mode 100644 index 0aa92223f..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailsource3.md +++ /dev/null @@ -1,16 +0,0 @@ -# GetResourceDeploymentDetailSource3 - -## Example Usage - -```typescript -import { GetResourceDeploymentDetailSource3 } from "@alienplatform/platform-api/models/operations"; - -let value: GetResourceDeploymentDetailSource3 = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `component` | *string* | :heavy_minus_sign: | N/A | -| `host` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailsource4.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailsource4.md deleted file mode 100644 index cdcd0a350..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailsource4.md +++ /dev/null @@ -1,16 +0,0 @@ -# GetResourceDeploymentDetailSource4 - -## Example Usage - -```typescript -import { GetResourceDeploymentDetailSource4 } from "@alienplatform/platform-api/models/operations"; - -let value: GetResourceDeploymentDetailSource4 = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `component` | *string* | :heavy_minus_sign: | N/A | -| `host` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailsource5.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailsource5.md deleted file mode 100644 index 8f9667184..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailsource5.md +++ /dev/null @@ -1,16 +0,0 @@ -# GetResourceDeploymentDetailSource5 - -## Example Usage - -```typescript -import { GetResourceDeploymentDetailSource5 } from "@alienplatform/platform-api/models/operations"; - -let value: GetResourceDeploymentDetailSource5 = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `component` | *string* | :heavy_minus_sign: | N/A | -| `host` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailsource6.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailsource6.md deleted file mode 100644 index e2696dd02..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailsource6.md +++ /dev/null @@ -1,16 +0,0 @@ -# GetResourceDeploymentDetailSource6 - -## Example Usage - -```typescript -import { GetResourceDeploymentDetailSource6 } from "@alienplatform/platform-api/models/operations"; - -let value: GetResourceDeploymentDetailSource6 = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `component` | *string* | :heavy_minus_sign: | N/A | -| `host` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailsource7.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailsource7.md deleted file mode 100644 index 1a5872814..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailsource7.md +++ /dev/null @@ -1,16 +0,0 @@ -# GetResourceDeploymentDetailSource7 - -## Example Usage - -```typescript -import { GetResourceDeploymentDetailSource7 } from "@alienplatform/platform-api/models/operations"; - -let value: GetResourceDeploymentDetailSource7 = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `component` | *string* | :heavy_minus_sign: | N/A | -| `host` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailsource8.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailsource8.md deleted file mode 100644 index 7cc7c771f..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailsource8.md +++ /dev/null @@ -1,16 +0,0 @@ -# GetResourceDeploymentDetailSource8 - -## Example Usage - -```typescript -import { GetResourceDeploymentDetailSource8 } from "@alienplatform/platform-api/models/operations"; - -let value: GetResourceDeploymentDetailSource8 = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `component` | *string* | :heavy_minus_sign: | N/A | -| `host` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailsource9.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailsource9.md deleted file mode 100644 index 6f0dfba94..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailsource9.md +++ /dev/null @@ -1,16 +0,0 @@ -# GetResourceDeploymentDetailSource9 - -## Example Usage - -```typescript -import { GetResourceDeploymentDetailSource9 } from "@alienplatform/platform-api/models/operations"; - -let value: GetResourceDeploymentDetailSource9 = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `component` | *string* | :heavy_minus_sign: | N/A | -| `host` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getworkspaceinvitationpreviewrequest.md b/client-sdks/platform/typescript/docs/models/operations/getworkspaceinvitationpreviewrequest.md new file mode 100644 index 000000000..d12cac9b1 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getworkspaceinvitationpreviewrequest.md @@ -0,0 +1,17 @@ +# GetWorkspaceInvitationPreviewRequest + +## Example Usage + +```typescript +import { GetWorkspaceInvitationPreviewRequest } from "@alienplatform/platform-api/models/operations"; + +let value: GetWorkspaceInvitationPreviewRequest = { + token: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `token` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getworkspaceinvitelinkrequest.md b/client-sdks/platform/typescript/docs/models/operations/getworkspaceinvitelinkrequest.md new file mode 100644 index 000000000..542af6410 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getworkspaceinvitelinkrequest.md @@ -0,0 +1,19 @@ +# GetWorkspaceInviteLinkRequest + +## Example Usage + +```typescript +import { GetWorkspaceInviteLinkRequest } from "@alienplatform/platform-api/models/operations"; + +let value: GetWorkspaceInviteLinkRequest = { + id: "ws_It13CUaGEhLLAB87simX0", + workspace: "my-workspace", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the workspace. | ws_It13CUaGEhLLAB87simX0 | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getworkspacesettingsrequest.md b/client-sdks/platform/typescript/docs/models/operations/getworkspacesettingsrequest.md new file mode 100644 index 000000000..b9c19ac64 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/getworkspacesettingsrequest.md @@ -0,0 +1,19 @@ +# GetWorkspaceSettingsRequest + +## Example Usage + +```typescript +import { GetWorkspaceSettingsRequest } from "@alienplatform/platform-api/models/operations"; + +let value: GetWorkspaceSettingsRequest = { + id: "ws_It13CUaGEhLLAB87simX0", + workspace: "my-workspace", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the workspace. | ws_It13CUaGEhLLAB87simX0 | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/gitrepositoryrequest.md b/client-sdks/platform/typescript/docs/models/operations/gitrepositoryrequest.md deleted file mode 100644 index eb0026ee2..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/gitrepositoryrequest.md +++ /dev/null @@ -1,21 +0,0 @@ -# GitRepositoryRequest - -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`. - -## Example Usage - -```typescript -import { GitRepositoryRequest } from "@alienplatform/platform-api/models/operations"; - -let value: GitRepositoryRequest = { - type: "github", - repo: "alien/my-agent", -}; -``` - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | -| `type` | [operations.CreateProjectTypeRequest](../../models/operations/createprojecttyperequest.md) | :heavy_check_mark: | The Git Provider of the repository | github | -| `repo` | *string* | :heavy_check_mark: | The name of the git repository | alien/my-agent | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/health66.md b/client-sdks/platform/typescript/docs/models/operations/health66.md new file mode 100644 index 000000000..cbc410218 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/health66.md @@ -0,0 +1,15 @@ +# Health66 + +## Example Usage + +```typescript +import { Health66 } from "@alienplatform/platform-api/models/operations"; + +let value: Health66 = "degraded"; +``` + +## Values + +```typescript +"unknown" | "healthy" | "degraded" | "unhealthy" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/health67.md b/client-sdks/platform/typescript/docs/models/operations/health67.md new file mode 100644 index 000000000..ed8e8ef78 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/health67.md @@ -0,0 +1,15 @@ +# Health67 + +## Example Usage + +```typescript +import { Health67 } from "@alienplatform/platform-api/models/operations"; + +let value: Health67 = "unhealthy"; +``` + +## Values + +```typescript +"unknown" | "healthy" | "degraded" | "unhealthy" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/health68.md b/client-sdks/platform/typescript/docs/models/operations/health68.md new file mode 100644 index 000000000..d949b47f8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/health68.md @@ -0,0 +1,15 @@ +# Health68 + +## Example Usage + +```typescript +import { Health68 } from "@alienplatform/platform-api/models/operations"; + +let value: Health68 = "unhealthy"; +``` + +## Values + +```typescript +"unknown" | "healthy" | "degraded" | "unhealthy" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/health69.md b/client-sdks/platform/typescript/docs/models/operations/health69.md new file mode 100644 index 000000000..6c0f87b76 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/health69.md @@ -0,0 +1,15 @@ +# Health69 + +## Example Usage + +```typescript +import { Health69 } from "@alienplatform/platform-api/models/operations"; + +let value: Health69 = "healthy"; +``` + +## Values + +```typescript +"unknown" | "healthy" | "degraded" | "unhealthy" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/health70.md b/client-sdks/platform/typescript/docs/models/operations/health70.md new file mode 100644 index 000000000..3c9218114 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/health70.md @@ -0,0 +1,15 @@ +# Health70 + +## Example Usage + +```typescript +import { Health70 } from "@alienplatform/platform-api/models/operations"; + +let value: Health70 = "degraded"; +``` + +## Values + +```typescript +"unknown" | "healthy" | "degraded" | "unhealthy" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/health71.md b/client-sdks/platform/typescript/docs/models/operations/health71.md new file mode 100644 index 000000000..8d3ff75d1 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/health71.md @@ -0,0 +1,15 @@ +# Health71 + +## Example Usage + +```typescript +import { Health71 } from "@alienplatform/platform-api/models/operations"; + +let value: Health71 = "unknown"; +``` + +## Values + +```typescript +"unknown" | "healthy" | "degraded" | "unhealthy" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/health72.md b/client-sdks/platform/typescript/docs/models/operations/health72.md new file mode 100644 index 000000000..5e26c21e7 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/health72.md @@ -0,0 +1,15 @@ +# Health72 + +## Example Usage + +```typescript +import { Health72 } from "@alienplatform/platform-api/models/operations"; + +let value: Health72 = "degraded"; +``` + +## Values + +```typescript +"unknown" | "healthy" | "degraded" | "unhealthy" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/heartbeat.md b/client-sdks/platform/typescript/docs/models/operations/heartbeat.md index 270ae0bc9..4e49915e9 100644 --- a/client-sdks/platform/typescript/docs/models/operations/heartbeat.md +++ b/client-sdks/platform/typescript/docs/models/operations/heartbeat.md @@ -59,7 +59,7 @@ let value: Heartbeat = { | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | | `backend` | [operations.BackendEnum](../../models/operations/backendenum.md) | :heavy_check_mark: | N/A | | `controllerPlatform` | [operations.ControllerPlatform](../../models/operations/controllerplatform.md) | :heavy_check_mark: | Represents the target cloud platform. | -| `data` | *operations.DataUnion16* | :heavy_check_mark: | N/A | +| `data` | *operations.DataUnion18* | :heavy_check_mark: | N/A | | `deploymentId` | *string* | :heavy_minus_sign: | N/A | | `observedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | `raw` | [operations.Raw](../../models/operations/raw.md)[] | :heavy_check_mark: | N/A | diff --git a/client-sdks/platform/typescript/docs/models/operations/heartbeatavailable.md b/client-sdks/platform/typescript/docs/models/operations/heartbeatavailable.md index bf79ed358..b077b8728 100644 --- a/client-sdks/platform/typescript/docs/models/operations/heartbeatavailable.md +++ b/client-sdks/platform/typescript/docs/models/operations/heartbeatavailable.md @@ -20,27 +20,31 @@ let value: HeartbeatAvailable = { controllerPlatform: "gcp", data: { data: { - name: "", - privateEndpointConnectionCount: 152029, - status: { - collectionIssues: [ - { - message: "", - reason: "not-installed", - severity: "info", - source: "", - }, - ], - health: "unknown", - lifecycle: "running", - partial: false, - stale: true, + data: { + enabled: true, + keyArn: "", + keySpec: "", + keyState: "", + keyUsage: "", + status: { + health: "healthy", + lifecycle: "failed", + }, }, + provider: "aws-kms", }, - resourceType: "azure_service_bus_namespace", + resourceType: "key", }, - observedAt: new Date("2024-03-08T08:46:36.237Z"), - raw: [], + observedAt: new Date("2024-04-26T23:19:48.455Z"), + raw: [ + { + body: "", + collectedAt: new Date("2025-01-29T23:35:36.058Z"), + format: "json", + source: "", + truncated: true, + }, + ], resourceId: "", resourceType: "", }, diff --git a/client-sdks/platform/typescript/docs/models/operations/heartbeatunion.md b/client-sdks/platform/typescript/docs/models/operations/heartbeatunion.md index f0e151c01..8d9dda8b5 100644 --- a/client-sdks/platform/typescript/docs/models/operations/heartbeatunion.md +++ b/client-sdks/platform/typescript/docs/models/operations/heartbeatunion.md @@ -21,27 +21,31 @@ const value: operations.HeartbeatAvailable = { controllerPlatform: "gcp", data: { data: { - name: "", - privateEndpointConnectionCount: 152029, - status: { - collectionIssues: [ - { - message: "", - reason: "not-installed", - severity: "info", - source: "", - }, - ], - health: "unknown", - lifecycle: "running", - partial: false, - stale: true, + data: { + enabled: true, + keyArn: "", + keySpec: "", + keyState: "", + keyUsage: "", + status: { + health: "healthy", + lifecycle: "failed", + }, }, + provider: "aws-kms", }, - resourceType: "azure_service_bus_namespace", + resourceType: "key", }, - observedAt: new Date("2024-03-08T08:46:36.237Z"), - raw: [], + observedAt: new Date("2024-04-26T23:19:48.455Z"), + raw: [ + { + body: "", + collectedAt: new Date("2025-01-29T23:35:36.058Z"), + format: "json", + source: "", + truncated: true, + }, + ], resourceId: "", resourceType: "", }, diff --git a/client-sdks/platform/typescript/docs/models/operations/invokeoperationrequest.md b/client-sdks/platform/typescript/docs/models/operations/invokeoperationrequest.md new file mode 100644 index 000000000..88c6221a2 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/invokeoperationrequest.md @@ -0,0 +1,20 @@ +# InvokeOperationRequest + +## Example Usage + +```typescript +import { InvokeOperationRequest } from "@alienplatform/platform-api/models/operations"; + +let value: InvokeOperationRequest = { + workspace: "my-workspace", + project: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | +| `project` | *string* | :heavy_check_mark: | Filter by project ID or name. | | +| `invokeOperationRequest` | [models.InvokeOperationRequest](../../models/invokeoperationrequest.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/label.md b/client-sdks/platform/typescript/docs/models/operations/label.md new file mode 100644 index 000000000..2917024f0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/label.md @@ -0,0 +1,15 @@ +# Label + +## Example Usage + +```typescript +import { Label } from "@alienplatform/platform-api/models/operations"; + +let value: Label = "Estimated provider cost"; +``` + +## Values + +```typescript +"Estimated provider cost" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/lease.md b/client-sdks/platform/typescript/docs/models/operations/lease.md new file mode 100644 index 000000000..b96878ed5 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/lease.md @@ -0,0 +1,21 @@ +# Lease + +## Example Usage + +```typescript +import { Lease } from "@alienplatform/platform-api/models/operations"; + +let value: Lease = { + deploymentId: "dep_0c29fq4a2yjb7kx3smwdgxlc", + renewed: false, + leaseExpiresAt: new Date("2025-02-04T06:29:01.550Z"), +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `deploymentId` | *string* | :heavy_check_mark: | Unique identifier for the deployment. | dep_0c29fq4a2yjb7kx3smwdgxlc | +| `renewed` | *boolean* | :heavy_check_mark: | False when this session no longer holds a live lease. | | +| `leaseExpiresAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/lifecycle66.md b/client-sdks/platform/typescript/docs/models/operations/lifecycle66.md new file mode 100644 index 000000000..2e2e8d0e0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/lifecycle66.md @@ -0,0 +1,15 @@ +# Lifecycle66 + +## Example Usage + +```typescript +import { Lifecycle66 } from "@alienplatform/platform-api/models/operations"; + +let value: Lifecycle66 = "scaling"; +``` + +## Values + +```typescript +"unknown" | "creating" | "updating" | "running" | "scaling" | "stopping" | "stopped" | "deleting" | "deleted" | "failed" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/lifecycle67.md b/client-sdks/platform/typescript/docs/models/operations/lifecycle67.md new file mode 100644 index 000000000..182a26d1c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/lifecycle67.md @@ -0,0 +1,15 @@ +# Lifecycle67 + +## Example Usage + +```typescript +import { Lifecycle67 } from "@alienplatform/platform-api/models/operations"; + +let value: Lifecycle67 = "unknown"; +``` + +## Values + +```typescript +"unknown" | "creating" | "updating" | "running" | "scaling" | "stopping" | "stopped" | "deleting" | "deleted" | "failed" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/lifecycle68.md b/client-sdks/platform/typescript/docs/models/operations/lifecycle68.md new file mode 100644 index 000000000..f7dccf230 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/lifecycle68.md @@ -0,0 +1,15 @@ +# Lifecycle68 + +## Example Usage + +```typescript +import { Lifecycle68 } from "@alienplatform/platform-api/models/operations"; + +let value: Lifecycle68 = "creating"; +``` + +## Values + +```typescript +"unknown" | "creating" | "updating" | "running" | "scaling" | "stopping" | "stopped" | "deleting" | "deleted" | "failed" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/lifecycle69.md b/client-sdks/platform/typescript/docs/models/operations/lifecycle69.md new file mode 100644 index 000000000..e31b9fb45 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/lifecycle69.md @@ -0,0 +1,15 @@ +# Lifecycle69 + +## Example Usage + +```typescript +import { Lifecycle69 } from "@alienplatform/platform-api/models/operations"; + +let value: Lifecycle69 = "updating"; +``` + +## Values + +```typescript +"unknown" | "creating" | "updating" | "running" | "scaling" | "stopping" | "stopped" | "deleting" | "deleted" | "failed" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/lifecycle70.md b/client-sdks/platform/typescript/docs/models/operations/lifecycle70.md new file mode 100644 index 000000000..be6d84cc5 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/lifecycle70.md @@ -0,0 +1,15 @@ +# Lifecycle70 + +## Example Usage + +```typescript +import { Lifecycle70 } from "@alienplatform/platform-api/models/operations"; + +let value: Lifecycle70 = "deleting"; +``` + +## Values + +```typescript +"unknown" | "creating" | "updating" | "running" | "scaling" | "stopping" | "stopped" | "deleting" | "deleted" | "failed" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/lifecycle71.md b/client-sdks/platform/typescript/docs/models/operations/lifecycle71.md new file mode 100644 index 000000000..cb356d91a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/lifecycle71.md @@ -0,0 +1,15 @@ +# Lifecycle71 + +## Example Usage + +```typescript +import { Lifecycle71 } from "@alienplatform/platform-api/models/operations"; + +let value: Lifecycle71 = "unknown"; +``` + +## Values + +```typescript +"unknown" | "creating" | "updating" | "running" | "scaling" | "stopping" | "stopped" | "deleting" | "deleted" | "failed" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/lifecycle72.md b/client-sdks/platform/typescript/docs/models/operations/lifecycle72.md new file mode 100644 index 000000000..dc8734219 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/lifecycle72.md @@ -0,0 +1,15 @@ +# Lifecycle72 + +## Example Usage + +```typescript +import { Lifecycle72 } from "@alienplatform/platform-api/models/operations"; + +let value: Lifecycle72 = "running"; +``` + +## Values + +```typescript +"unknown" | "creating" | "updating" | "running" | "scaling" | "stopping" | "stopped" | "deleting" | "deleted" | "failed" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/listagentsessioneventsrequest.md b/client-sdks/platform/typescript/docs/models/operations/listagentsessioneventsrequest.md new file mode 100644 index 000000000..59f028d45 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/listagentsessioneventsrequest.md @@ -0,0 +1,21 @@ +# ListAgentSessionEventsRequest + +## Example Usage + +```typescript +import { ListAgentSessionEventsRequest } from "@alienplatform/platform-api/models/operations"; + +let value: ListAgentSessionEventsRequest = { + id: "", + workspace: "my-workspace", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | N/A | | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | +| `after` | *number* | :heavy_minus_sign: | N/A | | +| `limit` | *number* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/listagentsessionsrequest.md b/client-sdks/platform/typescript/docs/models/operations/listagentsessionsrequest.md new file mode 100644 index 000000000..817bdf79d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/listagentsessionsrequest.md @@ -0,0 +1,17 @@ +# ListAgentSessionsRequest + +## Example Usage + +```typescript +import { ListAgentSessionsRequest } from "@alienplatform/platform-api/models/operations"; + +let value: ListAgentSessionsRequest = { + workspace: "my-workspace", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/listapikeysresponse.md b/client-sdks/platform/typescript/docs/models/operations/listapikeysresponse.md index 7b707e1f2..cafa38d8a 100644 --- a/client-sdks/platform/typescript/docs/models/operations/listapikeysresponse.md +++ b/client-sdks/platform/typescript/docs/models/operations/listapikeysresponse.md @@ -28,19 +28,31 @@ let value: ListAPIKeysResponse = { deploymentSetupConfig: { metadata: { "key": "", - "key1": "", - "key2": "", }, policy: { allowedPlatforms: [], - allowedSetupMethods: [], + allowedSetupMethods: [ + "google-oauth", + ], }, environmentVariables: [], + items: [ + { + item: "keys", + source: { + type: "built-in", + definitionId: "customer-registry", + version: "", + sourceReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", + }, + required: false, + }, + ], }, createdByUser: { id: "", - email: "Rhett78@hotmail.com", - image: "https://picsum.photos/seed/PS5fO/2447/1335", + email: "Sydnee_Fahey-Satterfield@gmail.com", + image: "https://picsum.photos/seed/MtBCj/2624/1426", }, }, ], diff --git a/client-sdks/platform/typescript/docs/models/operations/listawsvirtualkeysrequest.md b/client-sdks/platform/typescript/docs/models/operations/listawsvirtualkeysrequest.md new file mode 100644 index 000000000..36232428b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/listawsvirtualkeysrequest.md @@ -0,0 +1,17 @@ +# ListAwsVirtualKeysRequest + +## Example Usage + +```typescript +import { ListAwsVirtualKeysRequest } from "@alienplatform/platform-api/models/operations"; + +let value: ListAwsVirtualKeysRequest = { + project: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------- | ----------------------------- | ----------------------------- | ----------------------------- | +| `project` | *string* | :heavy_check_mark: | Filter by project ID or name. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/listawsvirtualkeysresponse.md b/client-sdks/platform/typescript/docs/models/operations/listawsvirtualkeysresponse.md new file mode 100644 index 000000000..82bec45e5 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/listawsvirtualkeysresponse.md @@ -0,0 +1,42 @@ +# ListAwsVirtualKeysResponse + +AWS Virtual Keys in a project + +## Example Usage + +```typescript +import { ListAwsVirtualKeysResponse } from "@alienplatform/platform-api/models/operations"; + +let value: ListAwsVirtualKeysResponse = { + virtualKeys: [ + { + id: "vkey_0p9nwqgtftugsoey99lqyqq", + projectId: "", + status: "action-required", + externalKeyId: "", + awsAccountId: "", + awsRegion: "", + customKeyStoreId: "", + kmsKeyArn: "", + alias: "", + description: "behind shameful equatorial sarong unnecessarily since why", + deletionWindowDays: 740873, + tags: { + "key": "", + }, + observedAt: new Date("2026-10-05T15:24:43.591Z"), + canaryPassedAt: new Date("2024-03-07T15:19:39.583Z"), + deletionScheduledAt: new Date("2024-04-17T14:47:31.545Z"), + finalDeletionObservedAt: new Date("2025-12-28T17:26:04.668Z"), + createdAt: new Date("2025-08-18T03:41:24.316Z"), + updatedAt: new Date("2025-03-04T07:51:50.330Z"), + }, + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `virtualKeys` | [operations.ListAwsVirtualKeysVirtualKey](../../models/operations/listawsvirtualkeysvirtualkey.md)[] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/listawsvirtualkeysstatus.md b/client-sdks/platform/typescript/docs/models/operations/listawsvirtualkeysstatus.md new file mode 100644 index 000000000..7dc91f351 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/listawsvirtualkeysstatus.md @@ -0,0 +1,15 @@ +# ListAwsVirtualKeysStatus + +## Example Usage + +```typescript +import { ListAwsVirtualKeysStatus } from "@alienplatform/platform-api/models/operations"; + +let value: ListAwsVirtualKeysStatus = "decommissioning"; +``` + +## Values + +```typescript +"provisioning" | "ready" | "action-required" | "decommissioning" | "deletion-pending" | "deleted" | "failed" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/listawsvirtualkeysvirtualkey.md b/client-sdks/platform/typescript/docs/models/operations/listawsvirtualkeysvirtualkey.md new file mode 100644 index 000000000..fb0739f9a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/listawsvirtualkeysvirtualkey.md @@ -0,0 +1,55 @@ +# ListAwsVirtualKeysVirtualKey + +## Example Usage + +```typescript +import { ListAwsVirtualKeysVirtualKey } from "@alienplatform/platform-api/models/operations"; + +let value: ListAwsVirtualKeysVirtualKey = { + id: "vkey_0p9nwqgtftugsoey99lqyqq", + projectId: "", + status: "deleted", + externalKeyId: "", + awsAccountId: "", + awsRegion: "", + customKeyStoreId: "", + kmsKeyArn: "", + alias: "", + description: "on overfeed pave edge mmm", + deletionWindowDays: 625743, + tags: { + "key": "", + "key1": "", + "key2": "", + }, + observedAt: new Date("2026-12-27T22:05:00.783Z"), + canaryPassedAt: new Date("2024-01-21T00:34:36.340Z"), + deletionScheduledAt: new Date("2026-11-17T20:19:04.315Z"), + finalDeletionObservedAt: new Date("2024-06-18T03:12:01.740Z"), + createdAt: new Date("2026-03-17T01:34:42.173Z"), + updatedAt: new Date("2024-07-18T17:10:40.514Z"), +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the aws virtual key. | vkey_0p9nwqgtftugsoey99lqyqq | +| `projectId` | *string* | :heavy_check_mark: | N/A | | +| `status` | [operations.ListAwsVirtualKeysStatus](../../models/operations/listawsvirtualkeysstatus.md) | :heavy_check_mark: | N/A | | +| `externalKeyId` | *string* | :heavy_check_mark: | N/A | | +| `awsAccountId` | *string* | :heavy_check_mark: | N/A | | +| `awsRegion` | *string* | :heavy_check_mark: | N/A | | +| `customKeyStoreId` | *string* | :heavy_check_mark: | N/A | | +| `kmsKeyArn` | *string* | :heavy_check_mark: | N/A | | +| `alias` | *string* | :heavy_check_mark: | N/A | | +| `description` | *string* | :heavy_check_mark: | N/A | | +| `deletionWindowDays` | *number* | :heavy_check_mark: | N/A | | +| `tags` | Record | :heavy_check_mark: | N/A | | +| `observedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `canaryPassedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `deletionScheduledAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `finalDeletionObservedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `createdAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `updatedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/listdeploymentsrequest.md b/client-sdks/platform/typescript/docs/models/operations/listdeploymentsrequest.md index 7cce78744..6d53bd18a 100644 --- a/client-sdks/platform/typescript/docs/models/operations/listdeploymentsrequest.md +++ b/client-sdks/platform/typescript/docs/models/operations/listdeploymentsrequest.md @@ -18,6 +18,7 @@ let value: ListDeploymentsRequest = { | `deploymentGroup` | *string* | :heavy_minus_sign: | Filter by deployment group ID or name | | | `name` | *string* | :heavy_minus_sign: | Filter by exact deployment name. Must be used with deploymentGroup. | | | `managerId` | *string* | :heavy_minus_sign: | Filter by manager ID | | +| `purpose` | [models.DeploymentPurpose](../../models/deploymentpurpose.md) | :heavy_minus_sign: | Filter by deployment purpose | | | `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | | `search` | *string* | :heavy_minus_sign: | Search deployments by name, public subdomain, or deployment group name | | | `status` | [operations.ListDeploymentsStatus](../../models/operations/listdeploymentsstatus.md)[] | :heavy_minus_sign: | Filter deployments by status | | diff --git a/client-sdks/platform/typescript/docs/models/operations/listdeploymentsresponse.md b/client-sdks/platform/typescript/docs/models/operations/listdeploymentsresponse.md index f97f2cb4d..271606e23 100644 --- a/client-sdks/platform/typescript/docs/models/operations/listdeploymentsresponse.md +++ b/client-sdks/platform/typescript/docs/models/operations/listdeploymentsresponse.md @@ -17,35 +17,26 @@ let value: ListDeploymentsResponse = { platform: "test", deploymentProtocolVersion: 120212, deploymentGroupId: "dg_r27ict8c7vcgsumpj90ackf7b", + purpose: "ai", currentReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", desiredReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", pinnedReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", + releaseChannel: "", retryRequested: false, - createdAt: new Date("2026-06-07T15:57:36.372Z"), - updatedAt: new Date("2026-07-20T07:45:05.184Z"), + createdAt: new Date("2026-07-20T07:45:05.184Z"), + updatedAt: new Date("2026-05-14T06:52:18.790Z"), managerId: "mgr_enxscjrqiiu2lrc672hwwuc5", workspaceId: "ws_It13CUaGEhLLAB87simX0", release: { id: "rel_WbhQgksrawSKIpEN0NAssHX9", version: "", - gitMetadata: { - commitSha: "dc36199b2234c6586ebe05ec94078a895c707e29", - commitMessage: - "add method to measure Interaction to Next Paint (INP) (#36490)", - commitRef: "main", - commitDate: new Date("2026-03-16T12:00:00Z"), - dirty: true, - remoteUrl: "https://github.com/alienplatform/alien", - commitAuthorName: "John Doe", - commitAuthorEmail: "john@example.com", - commitAuthorLogin: "johndoe", - commitAuthorAvatarUrl: "https://github.com/johndoe.png", - }, - createdAt: new Date("2024-06-27T06:57:01.451Z"), + gitMetadata: null, + createdAt: new Date("2024-11-28T10:04:33.372Z"), }, deploymentGroup: { id: "dg_r27ict8c7vcgsumpj90ackf7b", name: "prod-us-east-1", + externalId: "ext_example_01", }, project: { id: "prj_mcytp6z3j91f7tn5ryqsfwtr", diff --git a/client-sdks/platform/typescript/docs/models/operations/listeventsinclude.md b/client-sdks/platform/typescript/docs/models/operations/listeventsinclude.md new file mode 100644 index 000000000..e11f6c41f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/listeventsinclude.md @@ -0,0 +1,15 @@ +# ListEventsInclude + +## Example Usage + +```typescript +import { ListEventsInclude } from "@alienplatform/platform-api/models/operations"; + +let value: ListEventsInclude = "releaseCreatedAt"; +``` + +## Values + +```typescript +"releaseCreatedAt" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/listeventsrequest.md b/client-sdks/platform/typescript/docs/models/operations/listeventsrequest.md index 7086469a1..87fd02118 100644 --- a/client-sdks/platform/typescript/docs/models/operations/listeventsrequest.md +++ b/client-sdks/platform/typescript/docs/models/operations/listeventsrequest.md @@ -17,5 +17,7 @@ let value: ListEventsRequest = { | `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | | `project` | *string* | :heavy_minus_sign: | Filter by project ID or name. | | | `deploymentId` | *string* | :heavy_minus_sign: | Filter events to a single deployment. | | +| `releaseId` | *string* | :heavy_minus_sign: | Filter events to a single release. | | +| `include` | [operations.ListEventsInclude](../../models/operations/listeventsinclude.md)[] | :heavy_minus_sign: | Optional fields to include: releaseCreatedAt | | | `limit` | *number* | :heavy_minus_sign: | Maximum number of items to return per page | | | `cursor` | *string* | :heavy_minus_sign: | Cursor for pagination - omit for first page | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/listeventsresponse.md b/client-sdks/platform/typescript/docs/models/operations/listeventsresponse.md index 5d6a640d1..d88cc0ff7 100644 --- a/client-sdks/platform/typescript/docs/models/operations/listeventsresponse.md +++ b/client-sdks/platform/typescript/docs/models/operations/listeventsresponse.md @@ -15,13 +15,13 @@ let value: ListEventsResponse = { releaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", debugSessionId: "dbg_HOXmkmT9UPYlsnxqSNlEGoXL", data: { - platform: "", - stack: "", - type: "RunningPreflights", + agentId: "", + debugSessionId: "", + type: "DebuggingAgent", }, - state: "started", + state: "none", projectId: "prj_mcytp6z3j91f7tn5ryqsfwtr", - createdAt: new Date("2026-01-05T03:00:56.315Z"), + createdAt: new Date("2026-05-23T10:59:53.935Z"), workspaceId: "ws_It13CUaGEhLLAB87simX0", }, ], @@ -31,7 +31,7 @@ let value: ListEventsResponse = { ## Fields -| Field | Type | Required | Description | -| ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | -| `items` | [models.Event](../../models/event.md)[] | :heavy_check_mark: | Items in this page | -| `nextCursor` | *string* | :heavy_check_mark: | Cursor for the next page, null if last page | \ No newline at end of file +| Field | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `items` | [models.EventListItemResponse](../../models/eventlistitemresponse.md)[] | :heavy_check_mark: | Items in this page | +| `nextCursor` | *string* | :heavy_check_mark: | Cursor for the next page, null if last page | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/listoperationspluginsrequest.md b/client-sdks/platform/typescript/docs/models/operations/listoperationspluginsrequest.md new file mode 100644 index 000000000..712b2248d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/listoperationspluginsrequest.md @@ -0,0 +1,19 @@ +# ListOperationsPluginsRequest + +## Example Usage + +```typescript +import { ListOperationsPluginsRequest } from "@alienplatform/platform-api/models/operations"; + +let value: ListOperationsPluginsRequest = { + workspace: "my-workspace", + project: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | +| `project` | *string* | :heavy_check_mark: | Filter by project ID or name. | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/listreleasechannelsrequest.md b/client-sdks/platform/typescript/docs/models/operations/listreleasechannelsrequest.md new file mode 100644 index 000000000..4587b9b6d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/listreleasechannelsrequest.md @@ -0,0 +1,19 @@ +# ListReleaseChannelsRequest + +## Example Usage + +```typescript +import { ListReleaseChannelsRequest } from "@alienplatform/platform-api/models/operations"; + +let value: ListReleaseChannelsRequest = { + workspace: "my-workspace", + project: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | +| `project` | *string* | :heavy_check_mark: | Filter by project ID or name. | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/listreleasechannelsresponse.md b/client-sdks/platform/typescript/docs/models/operations/listreleasechannelsresponse.md new file mode 100644 index 000000000..047babb6e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/listreleasechannelsresponse.md @@ -0,0 +1,19 @@ +# ListReleaseChannelsResponse + +Project release channels. + +## Example Usage + +```typescript +import { ListReleaseChannelsResponse } from "@alienplatform/platform-api/models/operations"; + +let value: ListReleaseChannelsResponse = { + items: [], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------- | --------------------------------------------------------- | --------------------------------------------------------- | --------------------------------------------------------- | +| `items` | [models.ReleaseChannel](../../models/releasechannel.md)[] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/listreleasedeploymentsrequest.md b/client-sdks/platform/typescript/docs/models/operations/listreleasedeploymentsrequest.md new file mode 100644 index 000000000..bcf6a547b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/listreleasedeploymentsrequest.md @@ -0,0 +1,23 @@ +# ListReleaseDeploymentsRequest + +## Example Usage + +```typescript +import { ListReleaseDeploymentsRequest } from "@alienplatform/platform-api/models/operations"; + +let value: ListReleaseDeploymentsRequest = { + id: "rel_WbhQgksrawSKIpEN0NAssHX9", + workspace: "my-workspace", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the release. | rel_WbhQgksrawSKIpEN0NAssHX9 | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | +| `state` | [models.ReleaseRolloutState](../../models/releaserolloutstate.md)[] | :heavy_minus_sign: | Filter deployments by rollout state | | +| `deploymentGroup` | *string* | :heavy_minus_sign: | Filter by deployment group ID or name | | +| `limit` | *number* | :heavy_minus_sign: | Maximum number of items to return per page | | +| `cursor` | *string* | :heavy_minus_sign: | Cursor for pagination - omit for first page | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/listreleasesinclude.md b/client-sdks/platform/typescript/docs/models/operations/listreleasesinclude.md index 1f958a0e3..45849d68b 100644 --- a/client-sdks/platform/typescript/docs/models/operations/listreleasesinclude.md +++ b/client-sdks/platform/typescript/docs/models/operations/listreleasesinclude.md @@ -11,5 +11,5 @@ let value: ListReleasesInclude = "project"; ## Values ```typescript -"project" +"project" | "rollout" | "createdBy" ``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/listreleasesrequest.md b/client-sdks/platform/typescript/docs/models/operations/listreleasesrequest.md index e5efe14e0..8e0a9d902 100644 --- a/client-sdks/platform/typescript/docs/models/operations/listreleasesrequest.md +++ b/client-sdks/platform/typescript/docs/models/operations/listreleasesrequest.md @@ -15,8 +15,10 @@ let value: ListReleasesRequest = { | Field | Type | Required | Description | Example | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `project` | *string* | :heavy_minus_sign: | Filter by project ID or name. | | +| `channel` | *string* | :heavy_minus_sign: | Filter to releases promoted to this channel. Defaults to production. | | +| `allChannels` | [operations.AllChannels](../../models/operations/allchannels.md) | :heavy_minus_sign: | N/A | | | `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | -| `include` | [operations.ListReleasesInclude](../../models/operations/listreleasesinclude.md)[] | :heavy_minus_sign: | Optional fields to include: project | | +| `include` | [operations.ListReleasesInclude](../../models/operations/listreleasesinclude.md)[] | :heavy_minus_sign: | Optional fields to include: project, rollout | | | `search` | *string* | :heavy_minus_sign: | Search releases by commit message, branch, SHA, or release ID | | | `branch` | *string* | :heavy_minus_sign: | Filter by git branch (commitRef) | | | `author` | *string* | :heavy_minus_sign: | Filter by commit author login or name | | diff --git a/client-sdks/platform/typescript/docs/models/operations/listresourcedeploymentsarea.md b/client-sdks/platform/typescript/docs/models/operations/listresourcedeploymentsarea.md index 267f18b6d..1a93e216d 100644 --- a/client-sdks/platform/typescript/docs/models/operations/listresourcedeploymentsarea.md +++ b/client-sdks/platform/typescript/docs/models/operations/listresourcedeploymentsarea.md @@ -11,5 +11,5 @@ let value: ListResourceDeploymentsArea = "container"; ## Values ```typescript -"container" | "worker" | "daemon" +"container" | "worker" | "daemon" | "ai" ``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/listresourcedeploymentsrequest.md b/client-sdks/platform/typescript/docs/models/operations/listresourcedeploymentsrequest.md index 79f3a0064..ce5396c44 100644 --- a/client-sdks/platform/typescript/docs/models/operations/listresourcedeploymentsrequest.md +++ b/client-sdks/platform/typescript/docs/models/operations/listresourcedeploymentsrequest.md @@ -6,7 +6,7 @@ import { ListResourceDeploymentsRequest } from "@alienplatform/platform-api/models/operations"; let value: ListResourceDeploymentsRequest = { - area: "worker", + area: "daemon", resourceId: "", workspace: "my-workspace", project: "", diff --git a/client-sdks/platform/typescript/docs/models/operations/listresourceoverviewarea.md b/client-sdks/platform/typescript/docs/models/operations/listresourceoverviewarea.md index c51c26234..67c9437e5 100644 --- a/client-sdks/platform/typescript/docs/models/operations/listresourceoverviewarea.md +++ b/client-sdks/platform/typescript/docs/models/operations/listresourceoverviewarea.md @@ -5,11 +5,11 @@ ```typescript import { ListResourceOverviewArea } from "@alienplatform/platform-api/models/operations"; -let value: ListResourceOverviewArea = "daemon"; +let value: ListResourceOverviewArea = "ai"; ``` ## Values ```typescript -"container" | "worker" | "daemon" +"container" | "worker" | "daemon" | "ai" ``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/listworkspaceinvitationsrequest.md b/client-sdks/platform/typescript/docs/models/operations/listworkspaceinvitationsrequest.md new file mode 100644 index 000000000..bd9e452c6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/listworkspaceinvitationsrequest.md @@ -0,0 +1,19 @@ +# ListWorkspaceInvitationsRequest + +## Example Usage + +```typescript +import { ListWorkspaceInvitationsRequest } from "@alienplatform/platform-api/models/operations"; + +let value: ListWorkspaceInvitationsRequest = { + id: "ws_It13CUaGEhLLAB87simX0", + workspace: "my-workspace", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the workspace. | ws_It13CUaGEhLLAB87simX0 | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/listworkspaceinvitationsresponse.md b/client-sdks/platform/typescript/docs/models/operations/listworkspaceinvitationsresponse.md new file mode 100644 index 000000000..dbe65a46a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/listworkspaceinvitationsresponse.md @@ -0,0 +1,19 @@ +# ListWorkspaceInvitationsResponse + +Pending invitations. + +## Example Usage + +```typescript +import { ListWorkspaceInvitationsResponse } from "@alienplatform/platform-api/models/operations"; + +let value: ListWorkspaceInvitationsResponse = { + items: [], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `items` | [models.WorkspaceInvitation](../../models/workspaceinvitation.md)[] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/plandeploymentcomputesetupitem.md b/client-sdks/platform/typescript/docs/models/operations/plandeploymentcomputesetupitem.md index 4a269e4ed..0486f4bad 100644 --- a/client-sdks/platform/typescript/docs/models/operations/plandeploymentcomputesetupitem.md +++ b/client-sdks/platform/typescript/docs/models/operations/plandeploymentcomputesetupitem.md @@ -5,11 +5,11 @@ ```typescript import { PlanDeploymentComputeSetupItem } from "@alienplatform/platform-api/models/operations"; -let value: PlanDeploymentComputeSetupItem = "alien-stack"; +let value: PlanDeploymentComputeSetupItem = "deployment"; ``` ## Values ```typescript -"alien-stack" | "models" | "keys" +"deployment" | "models" | "keys" | "bucket" | "registry" ``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/preparedeploymentstacksetupitem.md b/client-sdks/platform/typescript/docs/models/operations/preparedeploymentstacksetupitem.md index 1e9a50870..2fc6e24ac 100644 --- a/client-sdks/platform/typescript/docs/models/operations/preparedeploymentstacksetupitem.md +++ b/client-sdks/platform/typescript/docs/models/operations/preparedeploymentstacksetupitem.md @@ -5,11 +5,11 @@ ```typescript import { PrepareDeploymentStackSetupItem } from "@alienplatform/platform-api/models/operations"; -let value: PrepareDeploymentStackSetupItem = "models"; +let value: PrepareDeploymentStackSetupItem = "keys"; ``` ## Values ```typescript -"alien-stack" | "models" | "keys" +"deployment" | "models" | "keys" | "bucket" | "registry" ``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/pricing.md b/client-sdks/platform/typescript/docs/models/operations/pricing.md new file mode 100644 index 000000000..1b895cf7c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/pricing.md @@ -0,0 +1,21 @@ +# Pricing + +## Example Usage + +```typescript +import { Pricing } from "@alienplatform/platform-api/models/operations"; + +let value: Pricing = { + label: "Estimated provider cost", + coverage: 8922.19, + revision: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | +| `label` | [operations.Label](../../models/operations/label.md) | :heavy_check_mark: | N/A | +| `coverage` | *number* | :heavy_check_mark: | N/A | +| `revision` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/promotereleaserequest.md b/client-sdks/platform/typescript/docs/models/operations/promotereleaserequest.md new file mode 100644 index 000000000..04459f366 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/promotereleaserequest.md @@ -0,0 +1,22 @@ +# PromoteReleaseRequest + +## Example Usage + +```typescript +import { PromoteReleaseRequest } from "@alienplatform/platform-api/models/operations"; + +let value: PromoteReleaseRequest = { + name: "", + workspace: "my-workspace", + project: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `name` | *string* | :heavy_check_mark: | N/A | | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | +| `project` | *string* | :heavy_check_mark: | Filter by project ID or name. | | +| `requestBody` | [operations.PromoteReleaseRequestBody](../../models/operations/promotereleaserequestbody.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/promotereleaserequestbody.md b/client-sdks/platform/typescript/docs/models/operations/promotereleaserequestbody.md new file mode 100644 index 000000000..dbbcfd988 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/promotereleaserequestbody.md @@ -0,0 +1,19 @@ +# PromoteReleaseRequestBody + +## Example Usage + +```typescript +import { PromoteReleaseRequestBody } from "@alienplatform/platform-api/models/operations"; + +let value: PromoteReleaseRequestBody = { + releaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", + expectedReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | +| `releaseId` | *string* | :heavy_check_mark: | Unique identifier for the release. | rel_WbhQgksrawSKIpEN0NAssHX9 | +| `expectedReleaseId` | *string* | :heavy_minus_sign: | Unique identifier for the release. | rel_WbhQgksrawSKIpEN0NAssHX9 | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/publishoperationspluginrequest.md b/client-sdks/platform/typescript/docs/models/operations/publishoperationspluginrequest.md new file mode 100644 index 000000000..31a36deff --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/publishoperationspluginrequest.md @@ -0,0 +1,20 @@ +# PublishOperationsPluginRequest + +## Example Usage + +```typescript +import { PublishOperationsPluginRequest } from "@alienplatform/platform-api/models/operations"; + +let value: PublishOperationsPluginRequest = { + workspace: "my-workspace", + project: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | +| `project` | *string* | :heavy_check_mark: | Filter by project ID or name. | | +| `publishOperationsPluginRequest` | [models.PublishOperationsPluginRequest](../../models/publishoperationspluginrequest.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/putcontainerregistryrequest.md b/client-sdks/platform/typescript/docs/models/operations/putcontainerregistryrequest.md new file mode 100644 index 000000000..2d244c2d7 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/putcontainerregistryrequest.md @@ -0,0 +1,20 @@ +# PutContainerRegistryRequest + +## Example Usage + +```typescript +import { PutContainerRegistryRequest } from "@alienplatform/platform-api/models/operations"; + +let value: PutContainerRegistryRequest = { + id: "dg_r27ict8c7vcgsumpj90ackf7b", + workspace: "my-workspace", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the deployment group. | dg_r27ict8c7vcgsumpj90ackf7b | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | +| `requestBody` | [operations.PutContainerRegistryRequestBody](../../models/operations/putcontainerregistryrequestbody.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/putcontainerregistryrequestbody.md b/client-sdks/platform/typescript/docs/models/operations/putcontainerregistryrequestbody.md new file mode 100644 index 000000000..ed799ea61 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/putcontainerregistryrequestbody.md @@ -0,0 +1,19 @@ +# PutContainerRegistryRequestBody + +## Example Usage + +```typescript +import { PutContainerRegistryRequestBody } from "@alienplatform/platform-api/models/operations"; + +let value: PutContainerRegistryRequestBody = { + deploymentId: "dep_0c29fq4a2yjb7kx3smwdgxlc", + resourceId: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------- | ------------------------------------- | ------------------------------------- | ------------------------------------- | ------------------------------------- | +| `deploymentId` | *string* | :heavy_check_mark: | Unique identifier for the deployment. | dep_0c29fq4a2yjb7kx3smwdgxlc | +| `resourceId` | *string* | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/putcontainerregistryresponse.md b/client-sdks/platform/typescript/docs/models/operations/putcontainerregistryresponse.md new file mode 100644 index 000000000..6e0f1d7f6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/putcontainerregistryresponse.md @@ -0,0 +1,37 @@ +# PutContainerRegistryResponse + +Registry route + +## Example Usage + +```typescript +import { PutContainerRegistryResponse } from "@alienplatform/platform-api/models/operations"; + +let value: PutContainerRegistryResponse = { + id: "crroute_c9t4xoy7fmiq7equtu20", + deploymentId: "dep_0c29fq4a2yjb7kx3smwdgxlc", + managerId: "", + resourceId: "", + resourceRevision: "", + desiredRevision: 462817, + appliedRevision: 373439, + status: "degraded", + lastVerifiedAt: new Date("2024-07-24T04:10:20.609Z"), + lastError: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the container registry route. | crroute_c9t4xoy7fmiq7equtu20 | +| `deploymentId` | *string* | :heavy_check_mark: | Unique identifier for the deployment. | dep_0c29fq4a2yjb7kx3smwdgxlc | +| `managerId` | *string* | :heavy_check_mark: | N/A | | +| `resourceId` | *string* | :heavy_check_mark: | N/A | | +| `resourceRevision` | *string* | :heavy_check_mark: | N/A | | +| `desiredRevision` | *number* | :heavy_check_mark: | N/A | | +| `appliedRevision` | *number* | :heavy_check_mark: | N/A | | +| `status` | [operations.PutContainerRegistryStatus](../../models/operations/putcontainerregistrystatus.md) | :heavy_check_mark: | N/A | | +| `lastVerifiedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `lastError` | *string* | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/putcontainerregistrystatus.md b/client-sdks/platform/typescript/docs/models/operations/putcontainerregistrystatus.md new file mode 100644 index 000000000..750f5e13a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/putcontainerregistrystatus.md @@ -0,0 +1,15 @@ +# PutContainerRegistryStatus + +## Example Usage + +```typescript +import { PutContainerRegistryStatus } from "@alienplatform/platform-api/models/operations"; + +let value: PutContainerRegistryStatus = "connected"; +``` + +## Values + +```typescript +"resolving" | "applying" | "connected" | "degraded" | "revoking" | "revoked" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/putdirectanthropicbindingrequest.md b/client-sdks/platform/typescript/docs/models/operations/putdirectanthropicbindingrequest.md deleted file mode 100644 index 0c658a34e..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/putdirectanthropicbindingrequest.md +++ /dev/null @@ -1,24 +0,0 @@ -# PutDirectAnthropicBindingRequest - -## Example Usage - -```typescript -import { PutDirectAnthropicBindingRequest } from "@alienplatform/platform-api/models/operations"; - -let value: PutDirectAnthropicBindingRequest = { - id: "dg_r27ict8c7vcgsumpj90ackf7b", - workspace: "my-workspace", - putDirectAnthropicBindingRequest: { - apiKey: "", - acknowledgeAlienCredentialAccess: true, - }, -}; -``` - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `id` | *string* | :heavy_check_mark: | Unique identifier for the deployment group. | dg_r27ict8c7vcgsumpj90ackf7b | -| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | -| `putDirectAnthropicBindingRequest` | [models.PutDirectAnthropicBindingRequest](../../models/putdirectanthropicbindingrequest.md) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/putexternalaibindingrequest.md b/client-sdks/platform/typescript/docs/models/operations/putexternalaibindingrequest.md new file mode 100644 index 000000000..f5dfb3b5b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/putexternalaibindingrequest.md @@ -0,0 +1,27 @@ +# PutExternalAIBindingRequest + +## Example Usage + +```typescript +import { PutExternalAIBindingRequest } from "@alienplatform/platform-api/models/operations"; + +let value: PutExternalAIBindingRequest = { + id: "dg_r27ict8c7vcgsumpj90ackf7b", + workspace: "my-workspace", + putExternalAIBindingRequest: { + provider: "databricks", + workspaceUrl: "https://dead-morning.biz/", + clientId: "", + clientSecret: "", + acknowledgeAlienCredentialAccess: true, + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the deployment group. | dg_r27ict8c7vcgsumpj90ackf7b | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | +| `putExternalAIBindingRequest` | *models.PutExternalAIBindingRequestUnion* | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/queryparamrange.md b/client-sdks/platform/typescript/docs/models/operations/queryparamrange.md new file mode 100644 index 000000000..523b6121e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/queryparamrange.md @@ -0,0 +1,15 @@ +# QueryParamRange + +## Example Usage + +```typescript +import { QueryParamRange } from "@alienplatform/platform-api/models/operations"; + +let value: QueryParamRange = "30d"; +``` + +## Values + +```typescript +"24h" | "7d" | "30d" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/queueaccessrequestcommand.md b/client-sdks/platform/typescript/docs/models/operations/queueaccessrequestcommand.md new file mode 100644 index 000000000..2615b8ab2 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/queueaccessrequestcommand.md @@ -0,0 +1,19 @@ +# QueueAccessRequestCommand + +## Example Usage + +```typescript +import { QueueAccessRequestCommand } from "@alienplatform/platform-api/models/operations"; + +let value: QueueAccessRequestCommand = { + command: "kubernetes/get-pods", + summary: "List pods in the ingestion namespace", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | +| `command` | *string* | :heavy_check_mark: | N/A | kubernetes/get-pods | +| `summary` | *string* | :heavy_check_mark: | N/A | List pods in the ingestion namespace | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/queueaccessrequestrequest.md b/client-sdks/platform/typescript/docs/models/operations/queueaccessrequestrequest.md new file mode 100644 index 000000000..d5fd8f355 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/queueaccessrequestrequest.md @@ -0,0 +1,19 @@ +# QueueAccessRequestRequest + +## Example Usage + +```typescript +import { QueueAccessRequestRequest } from "@alienplatform/platform-api/models/operations"; + +let value: QueueAccessRequestRequest = { + id: "", + workspace: "my-workspace", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | N/A | | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/queueaccessrequestresponse.md b/client-sdks/platform/typescript/docs/models/operations/queueaccessrequestresponse.md new file mode 100644 index 000000000..41f4c47fc --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/queueaccessrequestresponse.md @@ -0,0 +1,40 @@ +# QueueAccessRequestResponse + +The queued access request, with the customer approve command. + +## Example Usage + +```typescript +import { QueueAccessRequestResponse } from "@alienplatform/platform-api/models/operations"; + +let value: QueueAccessRequestResponse = { + id: "", + deploymentId: "", + remediationPlanId: "", + title: "", + reason: "", + commands: [ + { + command: "kubernetes/get-pods", + summary: "List pods in the ingestion namespace", + }, + ], + status: "customer-approved", + approvedUntil: "", + kubectlApprove: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | N/A | +| `deploymentId` | *string* | :heavy_check_mark: | N/A | +| `remediationPlanId` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | +| `reason` | *string* | :heavy_check_mark: | N/A | +| `commands` | [operations.QueueAccessRequestCommand](../../models/operations/queueaccessrequestcommand.md)[] | :heavy_check_mark: | N/A | +| `status` | [operations.QueueAccessRequestStatus](../../models/operations/queueaccessrequeststatus.md) | :heavy_check_mark: | N/A | +| `approvedUntil` | *string* | :heavy_check_mark: | N/A | +| `kubectlApprove` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/queueaccessrequeststatus.md b/client-sdks/platform/typescript/docs/models/operations/queueaccessrequeststatus.md new file mode 100644 index 000000000..e61ee3d28 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/queueaccessrequeststatus.md @@ -0,0 +1,15 @@ +# QueueAccessRequestStatus + +## Example Usage + +```typescript +import { QueueAccessRequestStatus } from "@alienplatform/platform-api/models/operations"; + +let value: QueueAccessRequestStatus = "pending-approval"; +``` + +## Values + +```typescript +"pending-approval" | "queued" | "customer-approved" | "expired" | "rejected" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/rangeresponse.md b/client-sdks/platform/typescript/docs/models/operations/rangeresponse.md new file mode 100644 index 000000000..26af33f32 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/rangeresponse.md @@ -0,0 +1,15 @@ +# RangeResponse + +## Example Usage + +```typescript +import { RangeResponse } from "@alienplatform/platform-api/models/operations"; + +let value: RangeResponse = "30d"; +``` + +## Values + +```typescript +"24h" | "7d" | "30d" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason1.md b/client-sdks/platform/typescript/docs/models/operations/reason1.md deleted file mode 100644 index e314e5fd9..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason1.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason1 - -## Example Usage - -```typescript -import { Reason1 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason1 = "timed-out"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason10.md b/client-sdks/platform/typescript/docs/models/operations/reason10.md deleted file mode 100644 index 09e45f1ea..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason10.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason10 - -## Example Usage - -```typescript -import { Reason10 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason10 = "timed-out"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason11.md b/client-sdks/platform/typescript/docs/models/operations/reason11.md deleted file mode 100644 index 53a3e1f79..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason11.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason11 - -## Example Usage - -```typescript -import { Reason11 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason11 = "not-installed"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason12.md b/client-sdks/platform/typescript/docs/models/operations/reason12.md deleted file mode 100644 index b52d87308..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason12.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason12 - -## Example Usage - -```typescript -import { Reason12 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason12 = "api-unavailable"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason13.md b/client-sdks/platform/typescript/docs/models/operations/reason13.md deleted file mode 100644 index 12e442e81..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason13.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason13 - -## Example Usage - -```typescript -import { Reason13 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason13 = "forbidden"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason14.md b/client-sdks/platform/typescript/docs/models/operations/reason14.md deleted file mode 100644 index 0a1469c64..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason14.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason14 - -## Example Usage - -```typescript -import { Reason14 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason14 = "collection-failed"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason15.md b/client-sdks/platform/typescript/docs/models/operations/reason15.md deleted file mode 100644 index 327227c90..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason15.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason15 - -## Example Usage - -```typescript -import { Reason15 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason15 = "api-unavailable"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason16.md b/client-sdks/platform/typescript/docs/models/operations/reason16.md deleted file mode 100644 index 5daba018d..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason16.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason16 - -## Example Usage - -```typescript -import { Reason16 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason16 = "timed-out"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason17.md b/client-sdks/platform/typescript/docs/models/operations/reason17.md deleted file mode 100644 index f4376ad22..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason17.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason17 - -## Example Usage - -```typescript -import { Reason17 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason17 = "forbidden"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason18.md b/client-sdks/platform/typescript/docs/models/operations/reason18.md deleted file mode 100644 index f44c88e0f..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason18.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason18 - -## Example Usage - -```typescript -import { Reason18 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason18 = "timed-out"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason19.md b/client-sdks/platform/typescript/docs/models/operations/reason19.md deleted file mode 100644 index 210940b5e..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason19.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason19 - -## Example Usage - -```typescript -import { Reason19 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason19 = "timed-out"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason2.md b/client-sdks/platform/typescript/docs/models/operations/reason2.md deleted file mode 100644 index eceb713f8..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason2.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason2 - -## Example Usage - -```typescript -import { Reason2 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason2 = "not-installed"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason20.md b/client-sdks/platform/typescript/docs/models/operations/reason20.md deleted file mode 100644 index 2f7351d52..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason20.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason20 - -## Example Usage - -```typescript -import { Reason20 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason20 = "timed-out"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason21.md b/client-sdks/platform/typescript/docs/models/operations/reason21.md deleted file mode 100644 index 436eda3da..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason21.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason21 - -## Example Usage - -```typescript -import { Reason21 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason21 = "collection-failed"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason22.md b/client-sdks/platform/typescript/docs/models/operations/reason22.md deleted file mode 100644 index 98fa1639c..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason22.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason22 - -## Example Usage - -```typescript -import { Reason22 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason22 = "api-unavailable"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason23.md b/client-sdks/platform/typescript/docs/models/operations/reason23.md deleted file mode 100644 index 22d232ed6..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason23.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason23 - -## Example Usage - -```typescript -import { Reason23 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason23 = "timed-out"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason24.md b/client-sdks/platform/typescript/docs/models/operations/reason24.md deleted file mode 100644 index 8d81988dc..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason24.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason24 - -## Example Usage - -```typescript -import { Reason24 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason24 = "api-unavailable"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason25.md b/client-sdks/platform/typescript/docs/models/operations/reason25.md deleted file mode 100644 index 2c4b1ff72..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason25.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason25 - -## Example Usage - -```typescript -import { Reason25 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason25 = "collection-failed"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason26.md b/client-sdks/platform/typescript/docs/models/operations/reason26.md deleted file mode 100644 index 431f0a62d..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason26.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason26 - -## Example Usage - -```typescript -import { Reason26 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason26 = "forbidden"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason27.md b/client-sdks/platform/typescript/docs/models/operations/reason27.md deleted file mode 100644 index 749677b2e..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason27.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason27 - -## Example Usage - -```typescript -import { Reason27 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason27 = "forbidden"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason28.md b/client-sdks/platform/typescript/docs/models/operations/reason28.md deleted file mode 100644 index 3028697de..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason28.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason28 - -## Example Usage - -```typescript -import { Reason28 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason28 = "not-installed"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason29.md b/client-sdks/platform/typescript/docs/models/operations/reason29.md deleted file mode 100644 index 2e4ce6a4e..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason29.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason29 - -## Example Usage - -```typescript -import { Reason29 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason29 = "forbidden"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason3.md b/client-sdks/platform/typescript/docs/models/operations/reason3.md deleted file mode 100644 index 2213ed73a..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason3.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason3 - -## Example Usage - -```typescript -import { Reason3 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason3 = "collection-failed"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason30.md b/client-sdks/platform/typescript/docs/models/operations/reason30.md deleted file mode 100644 index fa928e9d0..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason30.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason30 - -## Example Usage - -```typescript -import { Reason30 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason30 = "timed-out"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason31.md b/client-sdks/platform/typescript/docs/models/operations/reason31.md deleted file mode 100644 index 2d73454fb..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason31.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason31 - -## Example Usage - -```typescript -import { Reason31 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason31 = "not-installed"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason32.md b/client-sdks/platform/typescript/docs/models/operations/reason32.md deleted file mode 100644 index 65a04f929..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason32.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason32 - -## Example Usage - -```typescript -import { Reason32 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason32 = "not-installed"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason33.md b/client-sdks/platform/typescript/docs/models/operations/reason33.md deleted file mode 100644 index 14d4f772d..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason33.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason33 - -## Example Usage - -```typescript -import { Reason33 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason33 = "forbidden"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason34.md b/client-sdks/platform/typescript/docs/models/operations/reason34.md deleted file mode 100644 index ded273377..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason34.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason34 - -## Example Usage - -```typescript -import { Reason34 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason34 = "collection-failed"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason35.md b/client-sdks/platform/typescript/docs/models/operations/reason35.md deleted file mode 100644 index 1cef782ca..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason35.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason35 - -## Example Usage - -```typescript -import { Reason35 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason35 = "forbidden"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason36.md b/client-sdks/platform/typescript/docs/models/operations/reason36.md deleted file mode 100644 index 6bbbd97d5..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason36.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason36 - -## Example Usage - -```typescript -import { Reason36 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason36 = "timed-out"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason37.md b/client-sdks/platform/typescript/docs/models/operations/reason37.md deleted file mode 100644 index b7ec95259..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason37.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason37 - -## Example Usage - -```typescript -import { Reason37 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason37 = "api-unavailable"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason38.md b/client-sdks/platform/typescript/docs/models/operations/reason38.md deleted file mode 100644 index 6cf760130..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason38.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason38 - -## Example Usage - -```typescript -import { Reason38 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason38 = "timed-out"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason39.md b/client-sdks/platform/typescript/docs/models/operations/reason39.md deleted file mode 100644 index 6379c8821..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason39.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason39 - -## Example Usage - -```typescript -import { Reason39 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason39 = "timed-out"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason4.md b/client-sdks/platform/typescript/docs/models/operations/reason4.md deleted file mode 100644 index 262bfcc87..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason4.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason4 - -## Example Usage - -```typescript -import { Reason4 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason4 = "collection-failed"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason40.md b/client-sdks/platform/typescript/docs/models/operations/reason40.md deleted file mode 100644 index 408dc2223..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason40.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason40 - -## Example Usage - -```typescript -import { Reason40 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason40 = "collection-failed"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason41.md b/client-sdks/platform/typescript/docs/models/operations/reason41.md deleted file mode 100644 index 05556dcba..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason41.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason41 - -## Example Usage - -```typescript -import { Reason41 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason41 = "forbidden"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason42.md b/client-sdks/platform/typescript/docs/models/operations/reason42.md deleted file mode 100644 index e411fb68d..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason42.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason42 - -## Example Usage - -```typescript -import { Reason42 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason42 = "not-installed"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason43.md b/client-sdks/platform/typescript/docs/models/operations/reason43.md deleted file mode 100644 index 593895ff3..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason43.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason43 - -## Example Usage - -```typescript -import { Reason43 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason43 = "forbidden"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason44.md b/client-sdks/platform/typescript/docs/models/operations/reason44.md deleted file mode 100644 index 969c56cff..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason44.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason44 - -## Example Usage - -```typescript -import { Reason44 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason44 = "timed-out"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason45.md b/client-sdks/platform/typescript/docs/models/operations/reason45.md deleted file mode 100644 index d5e2bb8fc..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason45.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason45 - -## Example Usage - -```typescript -import { Reason45 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason45 = "api-unavailable"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason46.md b/client-sdks/platform/typescript/docs/models/operations/reason46.md deleted file mode 100644 index dc91319af..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason46.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason46 - -## Example Usage - -```typescript -import { Reason46 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason46 = "not-installed"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason47.md b/client-sdks/platform/typescript/docs/models/operations/reason47.md deleted file mode 100644 index f24375129..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason47.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason47 - -## Example Usage - -```typescript -import { Reason47 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason47 = "collection-failed"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason48.md b/client-sdks/platform/typescript/docs/models/operations/reason48.md deleted file mode 100644 index 8a6c16d30..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason48.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason48 - -## Example Usage - -```typescript -import { Reason48 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason48 = "api-unavailable"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason49.md b/client-sdks/platform/typescript/docs/models/operations/reason49.md deleted file mode 100644 index 1fdbe764a..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason49.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason49 - -## Example Usage - -```typescript -import { Reason49 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason49 = "collection-failed"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason5.md b/client-sdks/platform/typescript/docs/models/operations/reason5.md deleted file mode 100644 index 3410bda8e..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason5.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason5 - -## Example Usage - -```typescript -import { Reason5 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason5 = "not-installed"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason50.md b/client-sdks/platform/typescript/docs/models/operations/reason50.md deleted file mode 100644 index 6d4a984d8..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason50.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason50 - -## Example Usage - -```typescript -import { Reason50 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason50 = "timed-out"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason51.md b/client-sdks/platform/typescript/docs/models/operations/reason51.md deleted file mode 100644 index 526a27672..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason51.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason51 - -## Example Usage - -```typescript -import { Reason51 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason51 = "collection-failed"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason52.md b/client-sdks/platform/typescript/docs/models/operations/reason52.md deleted file mode 100644 index 5f1335c4d..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason52.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason52 - -## Example Usage - -```typescript -import { Reason52 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason52 = "not-installed"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason53.md b/client-sdks/platform/typescript/docs/models/operations/reason53.md deleted file mode 100644 index 0c063f039..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason53.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason53 - -## Example Usage - -```typescript -import { Reason53 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason53 = "forbidden"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason54.md b/client-sdks/platform/typescript/docs/models/operations/reason54.md deleted file mode 100644 index 6108a9979..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason54.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason54 - -## Example Usage - -```typescript -import { Reason54 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason54 = "api-unavailable"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason55.md b/client-sdks/platform/typescript/docs/models/operations/reason55.md deleted file mode 100644 index 726b7e5ff..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason55.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason55 - -## Example Usage - -```typescript -import { Reason55 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason55 = "api-unavailable"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason56.md b/client-sdks/platform/typescript/docs/models/operations/reason56.md deleted file mode 100644 index 1fa8b37d8..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason56.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason56 - -## Example Usage - -```typescript -import { Reason56 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason56 = "timed-out"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason57.md b/client-sdks/platform/typescript/docs/models/operations/reason57.md deleted file mode 100644 index 9aa5e4718..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason57.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason57 - -## Example Usage - -```typescript -import { Reason57 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason57 = "collection-failed"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason58.md b/client-sdks/platform/typescript/docs/models/operations/reason58.md deleted file mode 100644 index 4896129f6..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason58.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason58 - -## Example Usage - -```typescript -import { Reason58 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason58 = "api-unavailable"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason59.md b/client-sdks/platform/typescript/docs/models/operations/reason59.md deleted file mode 100644 index 9585916af..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason59.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason59 - -## Example Usage - -```typescript -import { Reason59 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason59 = "not-installed"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason6.md b/client-sdks/platform/typescript/docs/models/operations/reason6.md deleted file mode 100644 index 63f9e4874..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason6.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason6 - -## Example Usage - -```typescript -import { Reason6 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason6 = "forbidden"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason60.md b/client-sdks/platform/typescript/docs/models/operations/reason60.md deleted file mode 100644 index f5d9a71fc..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason60.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason60 - -## Example Usage - -```typescript -import { Reason60 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason60 = "timed-out"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason61.md b/client-sdks/platform/typescript/docs/models/operations/reason61.md deleted file mode 100644 index 6b2ce39f1..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason61.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason61 - -## Example Usage - -```typescript -import { Reason61 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason61 = "api-unavailable"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason62.md b/client-sdks/platform/typescript/docs/models/operations/reason62.md deleted file mode 100644 index 1c58e360d..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason62.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason62 - -## Example Usage - -```typescript -import { Reason62 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason62 = "api-unavailable"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason63.md b/client-sdks/platform/typescript/docs/models/operations/reason63.md deleted file mode 100644 index 710bcc262..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason63.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason63 - -## Example Usage - -```typescript -import { Reason63 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason63 = "collection-failed"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason64.md b/client-sdks/platform/typescript/docs/models/operations/reason64.md deleted file mode 100644 index 08f2c7e07..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason64.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason64 - -## Example Usage - -```typescript -import { Reason64 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason64 = "forbidden"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason65.md b/client-sdks/platform/typescript/docs/models/operations/reason65.md deleted file mode 100644 index 5b19c6201..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason65.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason65 - -## Example Usage - -```typescript -import { Reason65 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason65 = "not-installed"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason7.md b/client-sdks/platform/typescript/docs/models/operations/reason7.md deleted file mode 100644 index 7779eeac2..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason7.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason7 - -## Example Usage - -```typescript -import { Reason7 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason7 = "api-unavailable"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason8.md b/client-sdks/platform/typescript/docs/models/operations/reason8.md deleted file mode 100644 index 2d1241008..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason8.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason8 - -## Example Usage - -```typescript -import { Reason8 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason8 = "not-installed"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/reason9.md b/client-sdks/platform/typescript/docs/models/operations/reason9.md deleted file mode 100644 index 0b931f0f6..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/reason9.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reason9 - -## Example Usage - -```typescript -import { Reason9 } from "@alienplatform/platform-api/models/operations"; - -let value: Reason9 = "forbidden"; -``` - -## Values - -```typescript -"forbidden" | "not-installed" | "api-unavailable" | "collection-failed" | "timed-out" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/redeploydeploymentresponse.md b/client-sdks/platform/typescript/docs/models/operations/redeploydeploymentresponse.md index 9d657bc43..9ab608a77 100644 --- a/client-sdks/platform/typescript/docs/models/operations/redeploydeploymentresponse.md +++ b/client-sdks/platform/typescript/docs/models/operations/redeploydeploymentresponse.md @@ -9,11 +9,25 @@ import { RedeployDeploymentResponse } from "@alienplatform/platform-api/models/o let value: RedeployDeploymentResponse = { message: "", + operation: { + id: "duop_0vtxpb1sw4sbcdwg2xo37q6", + status: "failed", + reasons: [ + "configuration", + ], + targetReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", + changedKeys: [ + "", + "", + ], + requestedAt: new Date("2025-01-15T20:32:07.502Z"), + }, }; ``` ## Fields -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `message` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | +| `message` | *string* | :heavy_check_mark: | N/A | +| `operation` | [models.DeploymentUpdateOperationSummary](../../models/deploymentupdateoperationsummary.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/repository.md b/client-sdks/platform/typescript/docs/models/operations/repository.md deleted file mode 100644 index cde06c8ba..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/repository.md +++ /dev/null @@ -1,30 +0,0 @@ -# Repository - -## Example Usage - -```typescript -import { Repository } from "@alienplatform/platform-api/models/operations"; - -let value: Repository = { - createdAt: 4047.24, - kmsKeyPresent: true, - registryId: "", - repositoryArn: "", - repositoryName: "", - repositoryUri: "https://colorful-maestro.info", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------- | -------------------- | -------------------- | -------------------- | -| `createdAt` | *number* | :heavy_check_mark: | N/A | -| `encryptionType` | *string* | :heavy_minus_sign: | N/A | -| `imageTagMutability` | *string* | :heavy_minus_sign: | N/A | -| `kmsKeyPresent` | *boolean* | :heavy_check_mark: | N/A | -| `registryId` | *string* | :heavy_check_mark: | N/A | -| `repositoryArn` | *string* | :heavy_check_mark: | N/A | -| `repositoryName` | *string* | :heavy_check_mark: | N/A | -| `repositoryUri` | *string* | :heavy_check_mark: | N/A | -| `scanOnPush` | *boolean* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/resendworkspaceinvitationrequest.md b/client-sdks/platform/typescript/docs/models/operations/resendworkspaceinvitationrequest.md new file mode 100644 index 000000000..51b06f6a7 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/resendworkspaceinvitationrequest.md @@ -0,0 +1,21 @@ +# ResendWorkspaceInvitationRequest + +## Example Usage + +```typescript +import { ResendWorkspaceInvitationRequest } from "@alienplatform/platform-api/models/operations"; + +let value: ResendWorkspaceInvitationRequest = { + id: "ws_It13CUaGEhLLAB87simX0", + invitationId: "", + workspace: "my-workspace", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the workspace. | ws_It13CUaGEhLLAB87simX0 | +| `invitationId` | *string* | :heavy_check_mark: | N/A | | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/restoreawsvirtualkeyrequest.md b/client-sdks/platform/typescript/docs/models/operations/restoreawsvirtualkeyrequest.md new file mode 100644 index 000000000..9d3d89d0b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/restoreawsvirtualkeyrequest.md @@ -0,0 +1,18 @@ +# RestoreAwsVirtualKeyRequest + +## Example Usage + +```typescript +import { RestoreAwsVirtualKeyRequest } from "@alienplatform/platform-api/models/operations"; + +let value: RestoreAwsVirtualKeyRequest = { + id: "vkey_0p9nwqgtftugsoey99lqyqq", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the aws virtual key. | vkey_0p9nwqgtftugsoey99lqyqq | +| `requestBody` | [operations.RestoreAwsVirtualKeyRequestBody](../../models/operations/restoreawsvirtualkeyrequestbody.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/restoreawsvirtualkeyrequestbody.md b/client-sdks/platform/typescript/docs/models/operations/restoreawsvirtualkeyrequestbody.md new file mode 100644 index 000000000..6b1002dd0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/restoreawsvirtualkeyrequestbody.md @@ -0,0 +1,17 @@ +# RestoreAwsVirtualKeyRequestBody + +## Example Usage + +```typescript +import { RestoreAwsVirtualKeyRequestBody } from "@alienplatform/platform-api/models/operations"; + +let value: RestoreAwsVirtualKeyRequestBody = { + kmsKeyArn: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `kmsKeyArn` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/restoreawsvirtualkeyresponse.md b/client-sdks/platform/typescript/docs/models/operations/restoreawsvirtualkeyresponse.md new file mode 100644 index 000000000..de067a514 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/restoreawsvirtualkeyresponse.md @@ -0,0 +1,56 @@ +# RestoreAwsVirtualKeyResponse + +Virtual Key awaiting a successful AWS XKS canary after restore + +## Example Usage + +```typescript +import { RestoreAwsVirtualKeyResponse } from "@alienplatform/platform-api/models/operations"; + +let value: RestoreAwsVirtualKeyResponse = { + id: "vkey_0p9nwqgtftugsoey99lqyqq", + projectId: "", + status: "action-required", + externalKeyId: "", + awsAccountId: "", + awsRegion: "", + customKeyStoreId: "", + kmsKeyArn: "", + alias: "", + description: "provided sell square rationalise now", + deletionWindowDays: 450636, + tags: { + "key": "", + "key1": "", + }, + observedAt: new Date("2026-03-05T17:49:17.838Z"), + canaryPassedAt: new Date("2026-04-06T08:11:58.624Z"), + deletionScheduledAt: new Date("2026-08-25T02:41:36.889Z"), + finalDeletionObservedAt: new Date("2026-03-07T19:00:50.088Z"), + createdAt: new Date("2025-04-10T14:08:00.332Z"), + updatedAt: new Date("2026-04-17T07:33:13.454Z"), +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the aws virtual key. | vkey_0p9nwqgtftugsoey99lqyqq | +| `projectId` | *string* | :heavy_check_mark: | N/A | | +| `status` | [operations.RestoreAwsVirtualKeyStatus](../../models/operations/restoreawsvirtualkeystatus.md) | :heavy_check_mark: | N/A | | +| `externalKeyId` | *string* | :heavy_check_mark: | N/A | | +| `awsAccountId` | *string* | :heavy_check_mark: | N/A | | +| `awsRegion` | *string* | :heavy_check_mark: | N/A | | +| `customKeyStoreId` | *string* | :heavy_check_mark: | N/A | | +| `kmsKeyArn` | *string* | :heavy_check_mark: | N/A | | +| `alias` | *string* | :heavy_check_mark: | N/A | | +| `description` | *string* | :heavy_check_mark: | N/A | | +| `deletionWindowDays` | *number* | :heavy_check_mark: | N/A | | +| `tags` | Record | :heavy_check_mark: | N/A | | +| `observedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `canaryPassedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `deletionScheduledAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `finalDeletionObservedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `createdAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `updatedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/restoreawsvirtualkeystatus.md b/client-sdks/platform/typescript/docs/models/operations/restoreawsvirtualkeystatus.md new file mode 100644 index 000000000..0b00da8aa --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/restoreawsvirtualkeystatus.md @@ -0,0 +1,15 @@ +# RestoreAwsVirtualKeyStatus + +## Example Usage + +```typescript +import { RestoreAwsVirtualKeyStatus } from "@alienplatform/platform-api/models/operations"; + +let value: RestoreAwsVirtualKeyStatus = "decommissioning"; +``` + +## Values + +```typescript +"provisioning" | "ready" | "action-required" | "decommissioning" | "deletion-pending" | "deleted" | "failed" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/revokecontainerregistrycredentialrequest.md b/client-sdks/platform/typescript/docs/models/operations/revokecontainerregistrycredentialrequest.md new file mode 100644 index 000000000..9b866366d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/revokecontainerregistrycredentialrequest.md @@ -0,0 +1,21 @@ +# RevokeContainerRegistryCredentialRequest + +## Example Usage + +```typescript +import { RevokeContainerRegistryCredentialRequest } from "@alienplatform/platform-api/models/operations"; + +let value: RevokeContainerRegistryCredentialRequest = { + id: "dg_r27ict8c7vcgsumpj90ackf7b", + credentialId: "crcred_oz1xjr82f37j17g4gtmyu", + workspace: "my-workspace", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the deployment group. | dg_r27ict8c7vcgsumpj90ackf7b | +| `credentialId` | *string* | :heavy_check_mark: | Unique identifier for the container registry credential. | crcred_oz1xjr82f37j17g4gtmyu | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/revokecontainerregistryrequest.md b/client-sdks/platform/typescript/docs/models/operations/revokecontainerregistryrequest.md new file mode 100644 index 000000000..20c669d66 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/revokecontainerregistryrequest.md @@ -0,0 +1,19 @@ +# RevokeContainerRegistryRequest + +## Example Usage + +```typescript +import { RevokeContainerRegistryRequest } from "@alienplatform/platform-api/models/operations"; + +let value: RevokeContainerRegistryRequest = { + id: "dg_r27ict8c7vcgsumpj90ackf7b", + workspace: "my-workspace", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the deployment group. | dg_r27ict8c7vcgsumpj90ackf7b | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/revokecontainerregistryresponse.md b/client-sdks/platform/typescript/docs/models/operations/revokecontainerregistryresponse.md new file mode 100644 index 000000000..a0efd222c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/revokecontainerregistryresponse.md @@ -0,0 +1,37 @@ +# RevokeContainerRegistryResponse + +Registry revocation requested + +## Example Usage + +```typescript +import { RevokeContainerRegistryResponse } from "@alienplatform/platform-api/models/operations"; + +let value: RevokeContainerRegistryResponse = { + id: "crroute_c9t4xoy7fmiq7equtu20", + deploymentId: "dep_0c29fq4a2yjb7kx3smwdgxlc", + managerId: "", + resourceId: "", + resourceRevision: "", + desiredRevision: 624510, + appliedRevision: 9616, + status: "applying", + lastVerifiedAt: new Date("2026-09-21T16:28:46.372Z"), + lastError: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the container registry route. | crroute_c9t4xoy7fmiq7equtu20 | +| `deploymentId` | *string* | :heavy_check_mark: | Unique identifier for the deployment. | dep_0c29fq4a2yjb7kx3smwdgxlc | +| `managerId` | *string* | :heavy_check_mark: | N/A | | +| `resourceId` | *string* | :heavy_check_mark: | N/A | | +| `resourceRevision` | *string* | :heavy_check_mark: | N/A | | +| `desiredRevision` | *number* | :heavy_check_mark: | N/A | | +| `appliedRevision` | *number* | :heavy_check_mark: | N/A | | +| `status` | [operations.RevokeContainerRegistryStatus](../../models/operations/revokecontainerregistrystatus.md) | :heavy_check_mark: | N/A | | +| `lastVerifiedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `lastError` | *string* | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/revokecontainerregistrystatus.md b/client-sdks/platform/typescript/docs/models/operations/revokecontainerregistrystatus.md new file mode 100644 index 000000000..bc9b30381 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/revokecontainerregistrystatus.md @@ -0,0 +1,15 @@ +# RevokeContainerRegistryStatus + +## Example Usage + +```typescript +import { RevokeContainerRegistryStatus } from "@alienplatform/platform-api/models/operations"; + +let value: RevokeContainerRegistryStatus = "resolving"; +``` + +## Values + +```typescript +"resolving" | "applying" | "connected" | "degraded" | "revoking" | "revoked" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/revokeworkspaceinvitationrequest.md b/client-sdks/platform/typescript/docs/models/operations/revokeworkspaceinvitationrequest.md new file mode 100644 index 000000000..e37def30b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/revokeworkspaceinvitationrequest.md @@ -0,0 +1,21 @@ +# RevokeWorkspaceInvitationRequest + +## Example Usage + +```typescript +import { RevokeWorkspaceInvitationRequest } from "@alienplatform/platform-api/models/operations"; + +let value: RevokeWorkspaceInvitationRequest = { + id: "ws_It13CUaGEhLLAB87simX0", + invitationId: "", + workspace: "my-workspace", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the workspace. | ws_It13CUaGEhLLAB87simX0 | +| `invitationId` | *string* | :heavy_check_mark: | N/A | | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/revokeworkspaceinvitelinkrequest.md b/client-sdks/platform/typescript/docs/models/operations/revokeworkspaceinvitelinkrequest.md new file mode 100644 index 000000000..43e333f7c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/revokeworkspaceinvitelinkrequest.md @@ -0,0 +1,19 @@ +# RevokeWorkspaceInviteLinkRequest + +## Example Usage + +```typescript +import { RevokeWorkspaceInviteLinkRequest } from "@alienplatform/platform-api/models/operations"; + +let value: RevokeWorkspaceInviteLinkRequest = { + id: "ws_It13CUaGEhLLAB87simX0", + workspace: "my-workspace", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the workspace. | ws_It13CUaGEhLLAB87simX0 | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/rotateawsvirtualkeycredentialrequest.md b/client-sdks/platform/typescript/docs/models/operations/rotateawsvirtualkeycredentialrequest.md new file mode 100644 index 000000000..b9712f4f2 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/rotateawsvirtualkeycredentialrequest.md @@ -0,0 +1,18 @@ +# RotateAwsVirtualKeyCredentialRequest + +## Example Usage + +```typescript +import { RotateAwsVirtualKeyCredentialRequest } from "@alienplatform/platform-api/models/operations"; + +let value: RotateAwsVirtualKeyCredentialRequest = { + id: "vkey_0p9nwqgtftugsoey99lqyqq", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the aws virtual key. | vkey_0p9nwqgtftugsoey99lqyqq | +| `requestBody` | [operations.RotateAwsVirtualKeyCredentialRequestBody](../../models/operations/rotateawsvirtualkeycredentialrequestbody.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/rotateawsvirtualkeycredentialrequestbody.md b/client-sdks/platform/typescript/docs/models/operations/rotateawsvirtualkeycredentialrequestbody.md new file mode 100644 index 000000000..f0fe4fe57 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/rotateawsvirtualkeycredentialrequestbody.md @@ -0,0 +1,17 @@ +# RotateAwsVirtualKeyCredentialRequestBody + +## Example Usage + +```typescript +import { RotateAwsVirtualKeyCredentialRequestBody } from "@alienplatform/platform-api/models/operations"; + +let value: RotateAwsVirtualKeyCredentialRequestBody = { + generation: 20629, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `generation` | *number* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/rotateawsvirtualkeycredentialresponse.md b/client-sdks/platform/typescript/docs/models/operations/rotateawsvirtualkeycredentialresponse.md new file mode 100644 index 000000000..8e2efe5ef --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/rotateawsvirtualkeycredentialresponse.md @@ -0,0 +1,46 @@ +# RotateAwsVirtualKeyCredentialResponse + +The resumable XKS proxy credential rotation bundle + +## Example Usage + +```typescript +import { RotateAwsVirtualKeyCredentialResponse } from "@alienplatform/platform-api/models/operations"; + +let value: RotateAwsVirtualKeyCredentialResponse = { + virtualKey: { + id: "vkey_0p9nwqgtftugsoey99lqyqq", + projectId: "", + status: "provisioning", + externalKeyId: "", + awsAccountId: "", + awsRegion: "", + customKeyStoreId: "", + kmsKeyArn: "", + alias: "", + description: "reorganisation great live egg dispose know", + deletionWindowDays: 330882, + tags: {}, + observedAt: new Date("2026-10-14T12:23:05.729Z"), + canaryPassedAt: new Date("2025-02-17T07:44:26.021Z"), + deletionScheduledAt: new Date("2026-07-01T13:21:44.277Z"), + finalDeletionObservedAt: new Date("2025-09-12T03:32:45.896Z"), + createdAt: new Date("2026-10-11T00:05:14.784Z"), + updatedAt: new Date("2025-02-08T15:01:17.984Z"), + }, + setup: { + proxyUriEndpoint: "https://liquid-armchair.org/", + proxyUriPath: "", + accessKeyId: "", + secretAccessKey: "", + externalKeyId: "", + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | +| `virtualKey` | [operations.RotateAwsVirtualKeyCredentialVirtualKey](../../models/operations/rotateawsvirtualkeycredentialvirtualkey.md) | :heavy_check_mark: | N/A | +| `setup` | [operations.RotateAwsVirtualKeyCredentialSetup](../../models/operations/rotateawsvirtualkeycredentialsetup.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/rotateawsvirtualkeycredentialsetup.md b/client-sdks/platform/typescript/docs/models/operations/rotateawsvirtualkeycredentialsetup.md new file mode 100644 index 000000000..203b0289e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/rotateawsvirtualkeycredentialsetup.md @@ -0,0 +1,25 @@ +# RotateAwsVirtualKeyCredentialSetup + +## Example Usage + +```typescript +import { RotateAwsVirtualKeyCredentialSetup } from "@alienplatform/platform-api/models/operations"; + +let value: RotateAwsVirtualKeyCredentialSetup = { + proxyUriEndpoint: "https://interesting-hydrolyse.biz/", + proxyUriPath: "", + accessKeyId: "", + secretAccessKey: "", + externalKeyId: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `proxyUriEndpoint` | *string* | :heavy_check_mark: | N/A | +| `proxyUriPath` | *string* | :heavy_check_mark: | N/A | +| `accessKeyId` | *string* | :heavy_check_mark: | N/A | +| `secretAccessKey` | *string* | :heavy_check_mark: | N/A | +| `externalKeyId` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/rotateawsvirtualkeycredentialstatus.md b/client-sdks/platform/typescript/docs/models/operations/rotateawsvirtualkeycredentialstatus.md new file mode 100644 index 000000000..9f1fc331c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/rotateawsvirtualkeycredentialstatus.md @@ -0,0 +1,15 @@ +# RotateAwsVirtualKeyCredentialStatus + +## Example Usage + +```typescript +import { RotateAwsVirtualKeyCredentialStatus } from "@alienplatform/platform-api/models/operations"; + +let value: RotateAwsVirtualKeyCredentialStatus = "decommissioning"; +``` + +## Values + +```typescript +"provisioning" | "ready" | "action-required" | "decommissioning" | "deletion-pending" | "deleted" | "failed" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/rotateawsvirtualkeycredentialvirtualkey.md b/client-sdks/platform/typescript/docs/models/operations/rotateawsvirtualkeycredentialvirtualkey.md new file mode 100644 index 000000000..516f32145 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/rotateawsvirtualkeycredentialvirtualkey.md @@ -0,0 +1,51 @@ +# RotateAwsVirtualKeyCredentialVirtualKey + +## Example Usage + +```typescript +import { RotateAwsVirtualKeyCredentialVirtualKey } from "@alienplatform/platform-api/models/operations"; + +let value: RotateAwsVirtualKeyCredentialVirtualKey = { + id: "vkey_0p9nwqgtftugsoey99lqyqq", + projectId: "", + status: "ready", + externalKeyId: "", + awsAccountId: "", + awsRegion: "", + customKeyStoreId: "", + kmsKeyArn: "", + alias: "", + description: "judicious dramatic gut confirm pish scarily reassuringly", + deletionWindowDays: 873599, + tags: {}, + observedAt: new Date("2026-01-10T12:40:41.732Z"), + canaryPassedAt: new Date("2024-10-16T12:59:24.411Z"), + deletionScheduledAt: new Date("2024-10-29T18:15:40.978Z"), + finalDeletionObservedAt: new Date("2026-08-06T11:49:05.607Z"), + createdAt: new Date("2024-08-16T17:56:41.949Z"), + updatedAt: new Date("2025-11-17T20:41:18.238Z"), +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the aws virtual key. | vkey_0p9nwqgtftugsoey99lqyqq | +| `projectId` | *string* | :heavy_check_mark: | N/A | | +| `status` | [operations.RotateAwsVirtualKeyCredentialStatus](../../models/operations/rotateawsvirtualkeycredentialstatus.md) | :heavy_check_mark: | N/A | | +| `externalKeyId` | *string* | :heavy_check_mark: | N/A | | +| `awsAccountId` | *string* | :heavy_check_mark: | N/A | | +| `awsRegion` | *string* | :heavy_check_mark: | N/A | | +| `customKeyStoreId` | *string* | :heavy_check_mark: | N/A | | +| `kmsKeyArn` | *string* | :heavy_check_mark: | N/A | | +| `alias` | *string* | :heavy_check_mark: | N/A | | +| `description` | *string* | :heavy_check_mark: | N/A | | +| `deletionWindowDays` | *number* | :heavy_check_mark: | N/A | | +| `tags` | Record | :heavy_check_mark: | N/A | | +| `observedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `canaryPassedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `deletionScheduledAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `finalDeletionObservedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `createdAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `updatedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/scope.md b/client-sdks/platform/typescript/docs/models/operations/scope.md new file mode 100644 index 000000000..605ebc36b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/scope.md @@ -0,0 +1,15 @@ +# Scope + +## Example Usage + +```typescript +import { Scope } from "@alienplatform/platform-api/models/operations"; + +let value: Scope = "pull"; +``` + +## Values + +```typescript +"pull" | "pushPull" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/selector1.md b/client-sdks/platform/typescript/docs/models/operations/selector1.md new file mode 100644 index 000000000..130912cf9 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/selector1.md @@ -0,0 +1,17 @@ +# Selector1 + +## Example Usage + +```typescript +import { Selector1 } from "@alienplatform/platform-api/models/operations"; + +let value: Selector1 = { + externalId: "ext_example_01", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| `externalId` | *string* | :heavy_check_mark: | Case-sensitive, URL- and header-safe identifier from the integrating application. | ext_example_01 | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/selector2.md b/client-sdks/platform/typescript/docs/models/operations/selector2.md new file mode 100644 index 000000000..8697a8f0a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/selector2.md @@ -0,0 +1,17 @@ +# Selector2 + +## Example Usage + +```typescript +import { Selector2 } from "@alienplatform/platform-api/models/operations"; + +let value: Selector2 = { + deploymentId: "dep_0c29fq4a2yjb7kx3smwdgxlc", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------- | ------------------------------------- | ------------------------------------- | ------------------------------------- | ------------------------------------- | +| `deploymentId` | *string* | :heavy_check_mark: | Unique identifier for the deployment. | dep_0c29fq4a2yjb7kx3smwdgxlc | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/selectorunion.md b/client-sdks/platform/typescript/docs/models/operations/selectorunion.md new file mode 100644 index 000000000..7522c2845 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/selectorunion.md @@ -0,0 +1,21 @@ +# SelectorUnion + + +## Supported Types + +### `operations.Selector1` + +```typescript +const value: operations.Selector1 = { + externalId: "ext_example_01", +}; +``` + +### `operations.Selector2` + +```typescript +const value: operations.Selector2 = { + deploymentId: "dep_0c29fq4a2yjb7kx3smwdgxlc", +}; +``` + diff --git a/client-sdks/platform/typescript/docs/models/operations/setdeploymentreleasechannelrequest.md b/client-sdks/platform/typescript/docs/models/operations/setdeploymentreleasechannelrequest.md new file mode 100644 index 000000000..85fc78713 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/setdeploymentreleasechannelrequest.md @@ -0,0 +1,20 @@ +# SetDeploymentReleaseChannelRequest + +## Example Usage + +```typescript +import { SetDeploymentReleaseChannelRequest } from "@alienplatform/platform-api/models/operations"; + +let value: SetDeploymentReleaseChannelRequest = { + id: "dep_0c29fq4a2yjb7kx3smwdgxlc", + workspace: "my-workspace", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the deployment. | dep_0c29fq4a2yjb7kx3smwdgxlc | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | +| `requestBody` | [operations.SetDeploymentReleaseChannelRequestBody](../../models/operations/setdeploymentreleasechannelrequestbody.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/setdeploymentreleasechannelrequestbody.md b/client-sdks/platform/typescript/docs/models/operations/setdeploymentreleasechannelrequestbody.md new file mode 100644 index 000000000..bcb932c3f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/setdeploymentreleasechannelrequestbody.md @@ -0,0 +1,17 @@ +# SetDeploymentReleaseChannelRequestBody + +## Example Usage + +```typescript +import { SetDeploymentReleaseChannelRequestBody } from "@alienplatform/platform-api/models/operations"; + +let value: SetDeploymentReleaseChannelRequestBody = { + channel: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `channel` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/setoperationspluginenabledrequest.md b/client-sdks/platform/typescript/docs/models/operations/setoperationspluginenabledrequest.md new file mode 100644 index 000000000..59b3cac10 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/setoperationspluginenabledrequest.md @@ -0,0 +1,22 @@ +# SetOperationsPluginEnabledRequest + +## Example Usage + +```typescript +import { SetOperationsPluginEnabledRequest } from "@alienplatform/platform-api/models/operations"; + +let value: SetOperationsPluginEnabledRequest = { + name: "", + workspace: "my-workspace", + project: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `name` | *string* | :heavy_check_mark: | Plugin name. | | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | +| `project` | *string* | :heavy_check_mark: | Filter by project ID or name. | | +| `setOperationsPluginEnabledRequest` | [models.SetOperationsPluginEnabledRequest](../../models/setoperationspluginenabledrequest.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/setprojectcapabilitiesrequest.md b/client-sdks/platform/typescript/docs/models/operations/setprojectcapabilitiesrequest.md new file mode 100644 index 000000000..3bcdddc55 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/setprojectcapabilitiesrequest.md @@ -0,0 +1,20 @@ +# SetProjectCapabilitiesRequest + +## Example Usage + +```typescript +import { SetProjectCapabilitiesRequest } from "@alienplatform/platform-api/models/operations"; + +let value: SetProjectCapabilitiesRequest = { + idOrName: "", + workspace: "my-workspace", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `idOrName` | *string* | :heavy_check_mark: | Project ID or name. | | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | +| `requestBody` | [operations.SetProjectCapabilitiesRequestBody](../../models/operations/setprojectcapabilitiesrequestbody.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/setprojectcapabilitiesrequestbody.md b/client-sdks/platform/typescript/docs/models/operations/setprojectcapabilitiesrequestbody.md new file mode 100644 index 000000000..1280da36d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/setprojectcapabilitiesrequestbody.md @@ -0,0 +1,19 @@ +# SetProjectCapabilitiesRequestBody + +## Example Usage + +```typescript +import { SetProjectCapabilitiesRequestBody } from "@alienplatform/platform-api/models/operations"; + +let value: SetProjectCapabilitiesRequestBody = { + enabled: [ + "keys", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | +| `enabled` | [operations.Enabled](../../models/operations/enabled.md)[] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/setup.md b/client-sdks/platform/typescript/docs/models/operations/setup.md deleted file mode 100644 index dfe63c2ba..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/setup.md +++ /dev/null @@ -1,20 +0,0 @@ -# Setup - -## Example Usage - -```typescript -import { Setup } from "@alienplatform/platform-api/models/operations"; - -let value: Setup = { - deploymentUrlProjectId: "prj_mcytp6z3j91f7tn5ryqsfwtr", -}; -``` - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | -| `deploymentPortal` | *boolean* | :heavy_minus_sign: | N/A | | -| `packages` | *boolean* | :heavy_minus_sign: | N/A | | -| `deploymentUrlProjectId` | *string* | :heavy_minus_sign: | Unique identifier for the project. | prj_mcytp6z3j91f7tn5ryqsfwtr | -| `managerIds` | *string*[] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/slackintegrationchannelsrequest.md b/client-sdks/platform/typescript/docs/models/operations/slackintegrationchannelsrequest.md new file mode 100644 index 000000000..cbd325da0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/slackintegrationchannelsrequest.md @@ -0,0 +1,17 @@ +# SlackIntegrationChannelsRequest + +## Example Usage + +```typescript +import { SlackIntegrationChannelsRequest } from "@alienplatform/platform-api/models/operations"; + +let value: SlackIntegrationChannelsRequest = { + workspace: "my-workspace", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/slackintegrationinstallurlrequest.md b/client-sdks/platform/typescript/docs/models/operations/slackintegrationinstallurlrequest.md new file mode 100644 index 000000000..7d7b85128 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/slackintegrationinstallurlrequest.md @@ -0,0 +1,17 @@ +# SlackIntegrationInstallUrlRequest + +## Example Usage + +```typescript +import { SlackIntegrationInstallUrlRequest } from "@alienplatform/platform-api/models/operations"; + +let value: SlackIntegrationInstallUrlRequest = { + workspace: "my-workspace", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/slackintegrationsetnotificationchannelrequest.md b/client-sdks/platform/typescript/docs/models/operations/slackintegrationsetnotificationchannelrequest.md new file mode 100644 index 000000000..2d2750fa4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/slackintegrationsetnotificationchannelrequest.md @@ -0,0 +1,18 @@ +# SlackIntegrationSetNotificationChannelRequest + +## Example Usage + +```typescript +import { SlackIntegrationSetNotificationChannelRequest } from "@alienplatform/platform-api/models/operations"; + +let value: SlackIntegrationSetNotificationChannelRequest = { + workspace: "my-workspace", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | +| `slackNotificationChannelRequest` | [models.SlackNotificationChannelRequest](../../models/slacknotificationchannelrequest.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/slackintegrationstatusrequest.md b/client-sdks/platform/typescript/docs/models/operations/slackintegrationstatusrequest.md new file mode 100644 index 000000000..e58c7a7aa --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/slackintegrationstatusrequest.md @@ -0,0 +1,17 @@ +# SlackIntegrationStatusRequest + +## Example Usage + +```typescript +import { SlackIntegrationStatusRequest } from "@alienplatform/platform-api/models/operations"; + +let value: SlackIntegrationStatusRequest = { + workspace: "my-workspace", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/slackintegrationuninstallrequest.md b/client-sdks/platform/typescript/docs/models/operations/slackintegrationuninstallrequest.md new file mode 100644 index 000000000..9937d4313 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/slackintegrationuninstallrequest.md @@ -0,0 +1,17 @@ +# SlackIntegrationUninstallRequest + +## Example Usage + +```typescript +import { SlackIntegrationUninstallRequest } from "@alienplatform/platform-api/models/operations"; + +let value: SlackIntegrationUninstallRequest = { + workspace: "my-workspace", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/sourceenum1.md b/client-sdks/platform/typescript/docs/models/operations/sourceenum1.md new file mode 100644 index 000000000..c86dd830c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/sourceenum1.md @@ -0,0 +1,18 @@ +# SourceEnum1 + +Provider control plane used to observe model availability without invoking +a model, spending customer quota, or accepting provider terms. + +## Example Usage + +```typescript +import { SourceEnum1 } from "@alienplatform/platform-api/models/operations"; + +let value: SourceEnum1 = "anthropic"; +``` + +## Values + +```typescript +"aws-bedrock" | "gcp-vertex" | "azure-foundry" | "anthropic" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/sourceenum2.md b/client-sdks/platform/typescript/docs/models/operations/sourceenum2.md new file mode 100644 index 000000000..6a635f4e7 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/sourceenum2.md @@ -0,0 +1,18 @@ +# SourceEnum2 + +Provider control plane used to observe model availability without invoking +a model, spending customer quota, or accepting provider terms. + +## Example Usage + +```typescript +import { SourceEnum2 } from "@alienplatform/platform-api/models/operations"; + +let value: SourceEnum2 = "azure-foundry"; +``` + +## Values + +```typescript +"aws-bedrock" | "gcp-vertex" | "azure-foundry" | "anthropic" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/sourceenum3.md b/client-sdks/platform/typescript/docs/models/operations/sourceenum3.md new file mode 100644 index 000000000..9083e918e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/sourceenum3.md @@ -0,0 +1,18 @@ +# SourceEnum3 + +Provider control plane used to observe model availability without invoking +a model, spending customer quota, or accepting provider terms. + +## Example Usage + +```typescript +import { SourceEnum3 } from "@alienplatform/platform-api/models/operations"; + +let value: SourceEnum3 = "azure-foundry"; +``` + +## Values + +```typescript +"aws-bedrock" | "gcp-vertex" | "azure-foundry" | "anthropic" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/sourceenum4.md b/client-sdks/platform/typescript/docs/models/operations/sourceenum4.md new file mode 100644 index 000000000..77e5d1a17 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/sourceenum4.md @@ -0,0 +1,18 @@ +# SourceEnum4 + +Provider control plane used to observe model availability without invoking +a model, spending customer quota, or accepting provider terms. + +## Example Usage + +```typescript +import { SourceEnum4 } from "@alienplatform/platform-api/models/operations"; + +let value: SourceEnum4 = "aws-bedrock"; +``` + +## Values + +```typescript +"aws-bedrock" | "gcp-vertex" | "azure-foundry" | "anthropic" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/sourceevent1.md b/client-sdks/platform/typescript/docs/models/operations/sourceevent1.md new file mode 100644 index 000000000..26f621d29 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/sourceevent1.md @@ -0,0 +1,16 @@ +# SourceEvent1 + +## Example Usage + +```typescript +import { SourceEvent1 } from "@alienplatform/platform-api/models/operations"; + +let value: SourceEvent1 = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `component` | *string* | :heavy_minus_sign: | N/A | +| `host` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/sourceevent10.md b/client-sdks/platform/typescript/docs/models/operations/sourceevent10.md new file mode 100644 index 000000000..6e8e7e762 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/sourceevent10.md @@ -0,0 +1,16 @@ +# SourceEvent10 + +## Example Usage + +```typescript +import { SourceEvent10 } from "@alienplatform/platform-api/models/operations"; + +let value: SourceEvent10 = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `component` | *string* | :heavy_minus_sign: | N/A | +| `host` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/sourceevent2.md b/client-sdks/platform/typescript/docs/models/operations/sourceevent2.md new file mode 100644 index 000000000..60d255d9f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/sourceevent2.md @@ -0,0 +1,16 @@ +# SourceEvent2 + +## Example Usage + +```typescript +import { SourceEvent2 } from "@alienplatform/platform-api/models/operations"; + +let value: SourceEvent2 = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `component` | *string* | :heavy_minus_sign: | N/A | +| `host` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/sourceevent3.md b/client-sdks/platform/typescript/docs/models/operations/sourceevent3.md new file mode 100644 index 000000000..32c1cb98e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/sourceevent3.md @@ -0,0 +1,16 @@ +# SourceEvent3 + +## Example Usage + +```typescript +import { SourceEvent3 } from "@alienplatform/platform-api/models/operations"; + +let value: SourceEvent3 = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `component` | *string* | :heavy_minus_sign: | N/A | +| `host` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/sourceevent4.md b/client-sdks/platform/typescript/docs/models/operations/sourceevent4.md new file mode 100644 index 000000000..174e3e92e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/sourceevent4.md @@ -0,0 +1,16 @@ +# SourceEvent4 + +## Example Usage + +```typescript +import { SourceEvent4 } from "@alienplatform/platform-api/models/operations"; + +let value: SourceEvent4 = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `component` | *string* | :heavy_minus_sign: | N/A | +| `host` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/sourceevent5.md b/client-sdks/platform/typescript/docs/models/operations/sourceevent5.md new file mode 100644 index 000000000..16ae707f7 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/sourceevent5.md @@ -0,0 +1,16 @@ +# SourceEvent5 + +## Example Usage + +```typescript +import { SourceEvent5 } from "@alienplatform/platform-api/models/operations"; + +let value: SourceEvent5 = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `component` | *string* | :heavy_minus_sign: | N/A | +| `host` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/sourceevent6.md b/client-sdks/platform/typescript/docs/models/operations/sourceevent6.md new file mode 100644 index 000000000..35d4b167d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/sourceevent6.md @@ -0,0 +1,16 @@ +# SourceEvent6 + +## Example Usage + +```typescript +import { SourceEvent6 } from "@alienplatform/platform-api/models/operations"; + +let value: SourceEvent6 = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `component` | *string* | :heavy_minus_sign: | N/A | +| `host` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/sourceevent7.md b/client-sdks/platform/typescript/docs/models/operations/sourceevent7.md new file mode 100644 index 000000000..2059abd22 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/sourceevent7.md @@ -0,0 +1,16 @@ +# SourceEvent7 + +## Example Usage + +```typescript +import { SourceEvent7 } from "@alienplatform/platform-api/models/operations"; + +let value: SourceEvent7 = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `component` | *string* | :heavy_minus_sign: | N/A | +| `host` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/sourceevent8.md b/client-sdks/platform/typescript/docs/models/operations/sourceevent8.md new file mode 100644 index 000000000..637722149 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/sourceevent8.md @@ -0,0 +1,16 @@ +# SourceEvent8 + +## Example Usage + +```typescript +import { SourceEvent8 } from "@alienplatform/platform-api/models/operations"; + +let value: SourceEvent8 = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `component` | *string* | :heavy_minus_sign: | N/A | +| `host` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/sourceevent9.md b/client-sdks/platform/typescript/docs/models/operations/sourceevent9.md new file mode 100644 index 000000000..bafb01d84 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/sourceevent9.md @@ -0,0 +1,16 @@ +# SourceEvent9 + +## Example Usage + +```typescript +import { SourceEvent9 } from "@alienplatform/platform-api/models/operations"; + +let value: SourceEvent9 = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `component` | *string* | :heavy_minus_sign: | N/A | +| `host` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/sourcerepository.md b/client-sdks/platform/typescript/docs/models/operations/sourcerepository.md deleted file mode 100644 index 1133bbacb..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/sourcerepository.md +++ /dev/null @@ -1,15 +0,0 @@ -# SourceRepository - -## Example Usage - -```typescript -import { SourceRepository } from "@alienplatform/platform-api/models/operations"; - -let value: SourceRepository = "alienplatform/alien"; -``` - -## Values - -```typescript -"alienplatform/alien" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/sourceunion1.md b/client-sdks/platform/typescript/docs/models/operations/sourceunion1.md index 3b4bb911c..106eeda8a 100644 --- a/client-sdks/platform/typescript/docs/models/operations/sourceunion1.md +++ b/client-sdks/platform/typescript/docs/models/operations/sourceunion1.md @@ -3,10 +3,10 @@ ## Supported Types -### `operations.GetResourceDeploymentDetailSource1` +### `operations.SourceEvent1` ```typescript -const value: operations.GetResourceDeploymentDetailSource1 = {}; +const value: operations.SourceEvent1 = {}; ``` ### `any` diff --git a/client-sdks/platform/typescript/docs/models/operations/sourceunion10.md b/client-sdks/platform/typescript/docs/models/operations/sourceunion10.md index 0a0733f8c..b825e5fb1 100644 --- a/client-sdks/platform/typescript/docs/models/operations/sourceunion10.md +++ b/client-sdks/platform/typescript/docs/models/operations/sourceunion10.md @@ -3,10 +3,10 @@ ## Supported Types -### `operations.GetResourceDeploymentDetailSource10` +### `operations.SourceEvent10` ```typescript -const value: operations.GetResourceDeploymentDetailSource10 = {}; +const value: operations.SourceEvent10 = {}; ``` ### `any` diff --git a/client-sdks/platform/typescript/docs/models/operations/sourceunion2.md b/client-sdks/platform/typescript/docs/models/operations/sourceunion2.md index 41a67d8b9..9b39b966e 100644 --- a/client-sdks/platform/typescript/docs/models/operations/sourceunion2.md +++ b/client-sdks/platform/typescript/docs/models/operations/sourceunion2.md @@ -3,10 +3,10 @@ ## Supported Types -### `operations.GetResourceDeploymentDetailSource2` +### `operations.SourceEvent2` ```typescript -const value: operations.GetResourceDeploymentDetailSource2 = {}; +const value: operations.SourceEvent2 = {}; ``` ### `any` diff --git a/client-sdks/platform/typescript/docs/models/operations/sourceunion3.md b/client-sdks/platform/typescript/docs/models/operations/sourceunion3.md index af83bae07..b5702407e 100644 --- a/client-sdks/platform/typescript/docs/models/operations/sourceunion3.md +++ b/client-sdks/platform/typescript/docs/models/operations/sourceunion3.md @@ -3,10 +3,10 @@ ## Supported Types -### `operations.GetResourceDeploymentDetailSource3` +### `operations.SourceEvent3` ```typescript -const value: operations.GetResourceDeploymentDetailSource3 = {}; +const value: operations.SourceEvent3 = {}; ``` ### `any` diff --git a/client-sdks/platform/typescript/docs/models/operations/sourceunion4.md b/client-sdks/platform/typescript/docs/models/operations/sourceunion4.md index 9ab73c065..42c58cfe6 100644 --- a/client-sdks/platform/typescript/docs/models/operations/sourceunion4.md +++ b/client-sdks/platform/typescript/docs/models/operations/sourceunion4.md @@ -3,10 +3,10 @@ ## Supported Types -### `operations.GetResourceDeploymentDetailSource4` +### `operations.SourceEvent4` ```typescript -const value: operations.GetResourceDeploymentDetailSource4 = {}; +const value: operations.SourceEvent4 = {}; ``` ### `any` diff --git a/client-sdks/platform/typescript/docs/models/operations/sourceunion5.md b/client-sdks/platform/typescript/docs/models/operations/sourceunion5.md index c67edd106..2e1444082 100644 --- a/client-sdks/platform/typescript/docs/models/operations/sourceunion5.md +++ b/client-sdks/platform/typescript/docs/models/operations/sourceunion5.md @@ -3,10 +3,10 @@ ## Supported Types -### `operations.GetResourceDeploymentDetailSource5` +### `operations.SourceEvent5` ```typescript -const value: operations.GetResourceDeploymentDetailSource5 = {}; +const value: operations.SourceEvent5 = {}; ``` ### `any` diff --git a/client-sdks/platform/typescript/docs/models/operations/sourceunion6.md b/client-sdks/platform/typescript/docs/models/operations/sourceunion6.md index a1a94ebcd..8bb92dcaf 100644 --- a/client-sdks/platform/typescript/docs/models/operations/sourceunion6.md +++ b/client-sdks/platform/typescript/docs/models/operations/sourceunion6.md @@ -3,10 +3,10 @@ ## Supported Types -### `operations.GetResourceDeploymentDetailSource6` +### `operations.SourceEvent6` ```typescript -const value: operations.GetResourceDeploymentDetailSource6 = {}; +const value: operations.SourceEvent6 = {}; ``` ### `any` diff --git a/client-sdks/platform/typescript/docs/models/operations/sourceunion7.md b/client-sdks/platform/typescript/docs/models/operations/sourceunion7.md index 055d78a53..dc971601f 100644 --- a/client-sdks/platform/typescript/docs/models/operations/sourceunion7.md +++ b/client-sdks/platform/typescript/docs/models/operations/sourceunion7.md @@ -3,10 +3,10 @@ ## Supported Types -### `operations.GetResourceDeploymentDetailSource7` +### `operations.SourceEvent7` ```typescript -const value: operations.GetResourceDeploymentDetailSource7 = {}; +const value: operations.SourceEvent7 = {}; ``` ### `any` diff --git a/client-sdks/platform/typescript/docs/models/operations/sourceunion8.md b/client-sdks/platform/typescript/docs/models/operations/sourceunion8.md index 4e35a57c3..48518831b 100644 --- a/client-sdks/platform/typescript/docs/models/operations/sourceunion8.md +++ b/client-sdks/platform/typescript/docs/models/operations/sourceunion8.md @@ -3,10 +3,10 @@ ## Supported Types -### `operations.GetResourceDeploymentDetailSource8` +### `operations.SourceEvent8` ```typescript -const value: operations.GetResourceDeploymentDetailSource8 = {}; +const value: operations.SourceEvent8 = {}; ``` ### `any` diff --git a/client-sdks/platform/typescript/docs/models/operations/sourceunion9.md b/client-sdks/platform/typescript/docs/models/operations/sourceunion9.md index 40daacc40..ecd6d6086 100644 --- a/client-sdks/platform/typescript/docs/models/operations/sourceunion9.md +++ b/client-sdks/platform/typescript/docs/models/operations/sourceunion9.md @@ -3,10 +3,10 @@ ## Supported Types -### `operations.GetResourceDeploymentDetailSource9` +### `operations.SourceEvent9` ```typescript -const value: operations.GetResourceDeploymentDetailSource9 = {}; +const value: operations.SourceEvent9 = {}; ``` ### `any` diff --git a/client-sdks/platform/typescript/docs/models/operations/stopagentsessionrequest.md b/client-sdks/platform/typescript/docs/models/operations/stopagentsessionrequest.md new file mode 100644 index 000000000..6aad1ca54 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/stopagentsessionrequest.md @@ -0,0 +1,19 @@ +# StopAgentSessionRequest + +## Example Usage + +```typescript +import { StopAgentSessionRequest } from "@alienplatform/platform-api/models/operations"; + +let value: StopAgentSessionRequest = { + id: "", + workspace: "my-workspace", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | N/A | | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/syncrenewrequest.md b/client-sdks/platform/typescript/docs/models/operations/syncrenewrequest.md new file mode 100644 index 000000000..ca1a3139b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/syncrenewrequest.md @@ -0,0 +1,25 @@ +# SyncRenewRequest + +## Example Usage + +```typescript +import { SyncRenewRequest } from "@alienplatform/platform-api/models/operations"; + +let value: SyncRenewRequest = { + workspace: "my-workspace", + syncRenewRequest: { + deploymentId: "dep_0c29fq4a2yjb7kx3smwdgxlc", + deploymentIds: [ + "dep_0c29fq4a2yjb7kx3smwdgxlc", + ], + session: "", + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | +| `syncRenewRequest` | [models.SyncRenewRequest](../../models/syncrenewrequest.md) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/syncrenewresponse.md b/client-sdks/platform/typescript/docs/models/operations/syncrenewresponse.md new file mode 100644 index 000000000..eb07c05e0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/syncrenewresponse.md @@ -0,0 +1,27 @@ +# SyncRenewResponse + +Renewal processed. Inspect `leases` for per-deployment outcomes; a lost lease is reported there rather than failing the whole batch. + +## Example Usage + +```typescript +import { SyncRenewResponse } from "@alienplatform/platform-api/models/operations"; + +let value: SyncRenewResponse = { + success: false, + leases: [ + { + deploymentId: "dep_0c29fq4a2yjb7kx3smwdgxlc", + renewed: false, + leaseExpiresAt: new Date("2025-11-17T01:11:25.058Z"), + }, + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | +| `success` | *boolean* | :heavy_check_mark: | True when every requested deployment was renewed. | +| `leases` | [operations.Lease](../../models/operations/lease.md)[] | :heavy_check_mark: | Per-deployment renewal outcome. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/template.md b/client-sdks/platform/typescript/docs/models/operations/template.md deleted file mode 100644 index 6043c37c3..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/template.md +++ /dev/null @@ -1,23 +0,0 @@ -# Template - -## Example Usage - -```typescript -import { Template } from "@alienplatform/platform-api/models/operations"; - -let value: Template = { - sourceRepository: "alienplatform/alien", - forkRepository: "", - templatePath: "examples/remote-worker-ts", - resolvedRootDirectory: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | -| `sourceRepository` | [operations.SourceRepository](../../models/operations/sourcerepository.md) | :heavy_check_mark: | N/A | -| `forkRepository` | *string* | :heavy_check_mark: | Fork repository in / format | -| `templatePath` | [operations.TemplatePathResponse](../../models/operations/templatepathresponse.md) | :heavy_check_mark: | Template root directory inside alienplatform/alien | -| `resolvedRootDirectory` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/templatepathrequest.md b/client-sdks/platform/typescript/docs/models/operations/templatepathrequest.md deleted file mode 100644 index 2da664e7c..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/templatepathrequest.md +++ /dev/null @@ -1,17 +0,0 @@ -# TemplatePathRequest - -Template root directory inside alienplatform/alien - -## Example Usage - -```typescript -import { TemplatePathRequest } from "@alienplatform/platform-api/models/operations"; - -let value: TemplatePathRequest = "examples/endpoint-agent"; -``` - -## Values - -```typescript -"examples/customer-models-ts" | "examples/remote-worker-ts" | "examples/github-agent/packages/remote-agent" | "examples/endpoint-agent" | "examples/byoc-database" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/templatepathresponse.md b/client-sdks/platform/typescript/docs/models/operations/templatepathresponse.md deleted file mode 100644 index 6951192a5..000000000 --- a/client-sdks/platform/typescript/docs/models/operations/templatepathresponse.md +++ /dev/null @@ -1,17 +0,0 @@ -# TemplatePathResponse - -Template root directory inside alienplatform/alien - -## Example Usage - -```typescript -import { TemplatePathResponse } from "@alienplatform/platform-api/models/operations"; - -let value: TemplatePathResponse = "examples/byoc-database"; -``` - -## Values - -```typescript -"examples/customer-models-ts" | "examples/remote-worker-ts" | "examples/github-agent/packages/remote-agent" | "examples/endpoint-agent" | "examples/byoc-database" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/templaterequest.md b/client-sdks/platform/typescript/docs/models/operations/templaterequest.md new file mode 100644 index 000000000..1a7ced43d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/templaterequest.md @@ -0,0 +1,22 @@ +# TemplateRequest + +## Example Usage + +```typescript +import { TemplateRequest } from "@alienplatform/platform-api/models/operations"; + +let value: TemplateRequest = { + mode: "template", + targetNamespace: "", + templatePath: "examples/customer-models-ts", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| `mode` | *"template"* | :heavy_check_mark: | N/A | +| `targetNamespace` | *string* | :heavy_check_mark: | N/A | +| `templatePath` | [operations.ConfigureProjectSourceTemplatePathRequest](../../models/operations/configureprojectsourcetemplatepathrequest.md) | :heavy_check_mark: | Template root directory inside alienplatform/alien | +| `rootDirectory` | *string* | :heavy_minus_sign: | 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 | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/timesery.md b/client-sdks/platform/typescript/docs/models/operations/timesery.md new file mode 100644 index 000000000..668479e28 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/timesery.md @@ -0,0 +1,35 @@ +# TimeSery + +## Example Usage + +```typescript +import { TimeSery } from "@alienplatform/platform-api/models/operations"; + +let value: TimeSery = { + requests: 422554, + successfulRequests: 614482, + errorRequests: 856320, + averageLatencyMs: null, + p95LatencyMs: 1543.32, + inputTokens: 85741, + outputTokens: 664384, + estimatedCostMicrousd: 271514, + pricedRequests: 71398, + bucket: new Date("2024-09-08T21:07:24.747Z"), +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `requests` | *number* | :heavy_check_mark: | N/A | +| `successfulRequests` | *number* | :heavy_check_mark: | N/A | +| `errorRequests` | *number* | :heavy_check_mark: | N/A | +| `averageLatencyMs` | *number* | :heavy_check_mark: | N/A | +| `p95LatencyMs` | *number* | :heavy_check_mark: | N/A | +| `inputTokens` | *number* | :heavy_check_mark: | N/A | +| `outputTokens` | *number* | :heavy_check_mark: | N/A | +| `estimatedCostMicrousd` | *number* | :heavy_check_mark: | N/A | +| `pricedRequests` | *number* | :heavy_check_mark: | N/A | +| `bucket` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/totals.md b/client-sdks/platform/typescript/docs/models/operations/totals.md new file mode 100644 index 000000000..2ae5462ec --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/totals.md @@ -0,0 +1,33 @@ +# Totals + +## Example Usage + +```typescript +import { Totals } from "@alienplatform/platform-api/models/operations"; + +let value: Totals = { + requests: 299586, + successfulRequests: 873533, + errorRequests: 232940, + averageLatencyMs: null, + p95LatencyMs: 5533.3, + inputTokens: 818361, + outputTokens: null, + estimatedCostMicrousd: 744870, + pricedRequests: 317021, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------- | ----------------------- | ----------------------- | ----------------------- | +| `requests` | *number* | :heavy_check_mark: | N/A | +| `successfulRequests` | *number* | :heavy_check_mark: | N/A | +| `errorRequests` | *number* | :heavy_check_mark: | N/A | +| `averageLatencyMs` | *number* | :heavy_check_mark: | N/A | +| `p95LatencyMs` | *number* | :heavy_check_mark: | N/A | +| `inputTokens` | *number* | :heavy_check_mark: | N/A | +| `outputTokens` | *number* | :heavy_check_mark: | N/A | +| `estimatedCostMicrousd` | *number* | :heavy_check_mark: | N/A | +| `pricedRequests` | *number* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/unavailable.md b/client-sdks/platform/typescript/docs/models/operations/unavailable.md new file mode 100644 index 000000000..2f49ed9df --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/unavailable.md @@ -0,0 +1,19 @@ +# Unavailable + +## Example Usage + +```typescript +import { Unavailable } from "@alienplatform/platform-api/models/operations"; + +let value: Unavailable = { + status: "unavailable", + reason: "not-configured", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `status` | *"unavailable"* | :heavy_check_mark: | N/A | +| `reason` | [operations.GetProjectAiUsageReason](../../models/operations/getprojectaiusagereason.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/updateoperationspolicyrequest.md b/client-sdks/platform/typescript/docs/models/operations/updateoperationspolicyrequest.md new file mode 100644 index 000000000..51befcabb --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/updateoperationspolicyrequest.md @@ -0,0 +1,20 @@ +# UpdateOperationsPolicyRequest + +## Example Usage + +```typescript +import { UpdateOperationsPolicyRequest } from "@alienplatform/platform-api/models/operations"; + +let value: UpdateOperationsPolicyRequest = { + workspace: "my-workspace", + project: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | +| `project` | *string* | :heavy_check_mark: | Filter by project ID or name. | | +| `updateOperationsPolicyRequest` | [models.UpdateOperationsPolicyRequest](../../models/updateoperationspolicyrequest.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/updateworkspacesettingsrequest.md b/client-sdks/platform/typescript/docs/models/operations/updateworkspacesettingsrequest.md new file mode 100644 index 000000000..c47a9394d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/updateworkspacesettingsrequest.md @@ -0,0 +1,20 @@ +# UpdateWorkspaceSettingsRequest + +## Example Usage + +```typescript +import { UpdateWorkspaceSettingsRequest } from "@alienplatform/platform-api/models/operations"; + +let value: UpdateWorkspaceSettingsRequest = { + id: "ws_It13CUaGEhLLAB87simX0", + workspace: "my-workspace", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the workspace. | ws_It13CUaGEhLLAB87simX0 | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | +| `updateWorkspaceSettingsRequest` | [models.UpdateWorkspaceSettingsRequest](../../models/updateworkspacesettingsrequest.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/verification.md b/client-sdks/platform/typescript/docs/models/operations/verification.md new file mode 100644 index 000000000..ae9d3f1e5 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/verification.md @@ -0,0 +1,21 @@ +# Verification + +## Example Usage + +```typescript +import { Verification } from "@alienplatform/platform-api/models/operations"; + +let value: Verification = { + succeeded: true, + observedAt: new Date("2024-01-19T04:58:50.901Z"), + error: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `succeeded` | *boolean* | :heavy_check_mark: | N/A | +| `observedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | +| `error` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/verifycontainerregistryrequest.md b/client-sdks/platform/typescript/docs/models/operations/verifycontainerregistryrequest.md new file mode 100644 index 000000000..5a7d55f8f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/verifycontainerregistryrequest.md @@ -0,0 +1,19 @@ +# VerifyContainerRegistryRequest + +## Example Usage + +```typescript +import { VerifyContainerRegistryRequest } from "@alienplatform/platform-api/models/operations"; + +let value: VerifyContainerRegistryRequest = { + id: "dg_r27ict8c7vcgsumpj90ackf7b", + workspace: "my-workspace", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the deployment group. | dg_r27ict8c7vcgsumpj90ackf7b | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/verifycontainerregistryresponse.md b/client-sdks/platform/typescript/docs/models/operations/verifycontainerregistryresponse.md new file mode 100644 index 000000000..cc4e2ef6d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/verifycontainerregistryresponse.md @@ -0,0 +1,37 @@ +# VerifyContainerRegistryResponse + +Verification requested + +## Example Usage + +```typescript +import { VerifyContainerRegistryResponse } from "@alienplatform/platform-api/models/operations"; + +let value: VerifyContainerRegistryResponse = { + id: "crroute_c9t4xoy7fmiq7equtu20", + deploymentId: "dep_0c29fq4a2yjb7kx3smwdgxlc", + managerId: "", + resourceId: "", + resourceRevision: "", + desiredRevision: 198762, + appliedRevision: 692052, + status: "revoking", + lastVerifiedAt: null, + lastError: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the container registry route. | crroute_c9t4xoy7fmiq7equtu20 | +| `deploymentId` | *string* | :heavy_check_mark: | Unique identifier for the deployment. | dep_0c29fq4a2yjb7kx3smwdgxlc | +| `managerId` | *string* | :heavy_check_mark: | N/A | | +| `resourceId` | *string* | :heavy_check_mark: | N/A | | +| `resourceRevision` | *string* | :heavy_check_mark: | N/A | | +| `desiredRevision` | *number* | :heavy_check_mark: | N/A | | +| `appliedRevision` | *number* | :heavy_check_mark: | N/A | | +| `status` | [operations.VerifyContainerRegistryStatus](../../models/operations/verifycontainerregistrystatus.md) | :heavy_check_mark: | N/A | | +| `lastVerifiedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `lastError` | *string* | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/verifycontainerregistrystatus.md b/client-sdks/platform/typescript/docs/models/operations/verifycontainerregistrystatus.md new file mode 100644 index 000000000..720516433 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/verifycontainerregistrystatus.md @@ -0,0 +1,15 @@ +# VerifyContainerRegistryStatus + +## Example Usage + +```typescript +import { VerifyContainerRegistryStatus } from "@alienplatform/platform-api/models/operations"; + +let value: VerifyContainerRegistryStatus = "connected"; +``` + +## Values + +```typescript +"resolving" | "applying" | "connected" | "degraded" | "revoking" | "revoked" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operationsbundleuploadurlrequest.md b/client-sdks/platform/typescript/docs/models/operationsbundleuploadurlrequest.md new file mode 100644 index 000000000..78e9d710b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operationsbundleuploadurlrequest.md @@ -0,0 +1,17 @@ +# OperationsBundleUploadUrlRequest + +## Example Usage + +```typescript +import { OperationsBundleUploadUrlRequest } from "@alienplatform/platform-api/models"; + +let value: OperationsBundleUploadUrlRequest = { + name: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | +| `name` | *string* | :heavy_check_mark: | Plugin name (from the bundle's metadata.json). | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operationsbundleuploadurlresponse.md b/client-sdks/platform/typescript/docs/models/operationsbundleuploadurlresponse.md new file mode 100644 index 000000000..75e25ede6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operationsbundleuploadurlresponse.md @@ -0,0 +1,19 @@ +# OperationsBundleUploadUrlResponse + +## Example Usage + +```typescript +import { OperationsBundleUploadUrlResponse } from "@alienplatform/platform-api/models"; + +let value: OperationsBundleUploadUrlResponse = { + uploadUrl: "https://legal-meadow.com/", + contentType: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | +| `uploadUrl` | *string* | :heavy_check_mark: | Presigned S3 PUT URL to upload the bundle ZIP to. | +| `contentType` | *string* | :heavy_check_mark: | Content-Type header the PUT must send (must match the signature). | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operationsplugin.md b/client-sdks/platform/typescript/docs/models/operationsplugin.md new file mode 100644 index 000000000..3c009df9c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operationsplugin.md @@ -0,0 +1,34 @@ +# OperationsPlugin + +## Example Usage + +```typescript +import { OperationsPlugin } from "@alienplatform/platform-api/models"; + +let value: OperationsPlugin = { + name: "", + version: "", + tier: "mutating", + builtin: true, + enabled: true, + operations: [ + { + name: "", + tier: "destructive", + description: + "vision save across override pluck gurn lampoon since briskly drat", + }, + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| `name` | *string* | :heavy_check_mark: | N/A | +| `version` | *string* | :heavy_check_mark: | N/A | +| `tier` | [models.OperationsPluginTier](../models/operationsplugintier.md) | :heavy_check_mark: | Plugin-level default tier. | +| `builtin` | *boolean* | :heavy_check_mark: | True for compiled-in plugins, false for custom bundles. | +| `enabled` | *boolean* | :heavy_check_mark: | N/A | +| `operations` | [models.OperationsPluginOperation](../models/operationspluginoperation.md)[] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operationspluginoperation.md b/client-sdks/platform/typescript/docs/models/operationspluginoperation.md new file mode 100644 index 000000000..11df06bf1 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operationspluginoperation.md @@ -0,0 +1,21 @@ +# OperationsPluginOperation + +## Example Usage + +```typescript +import { OperationsPluginOperation } from "@alienplatform/platform-api/models"; + +let value: OperationsPluginOperation = { + name: "", + tier: "mutating", + description: "reopen brown likewise how likewise of vicinity nectarine yahoo", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `name` | *string* | :heavy_check_mark: | Operation name, unique within the plugin. | +| `tier` | [models.OperationsPluginOperationTier](../models/operationspluginoperationtier.md) | :heavy_check_mark: | Effective risk tier for this operation. | +| `description` | *string* | :heavy_check_mark: | Human-readable description. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operationspluginoperationtier.md b/client-sdks/platform/typescript/docs/models/operationspluginoperationtier.md new file mode 100644 index 000000000..6fbb49006 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operationspluginoperationtier.md @@ -0,0 +1,17 @@ +# OperationsPluginOperationTier + +Effective risk tier for this operation. + +## Example Usage + +```typescript +import { OperationsPluginOperationTier } from "@alienplatform/platform-api/models"; + +let value: OperationsPluginOperationTier = "destructive"; +``` + +## Values + +```typescript +"read-only" | "mutating" | "destructive" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operationsplugintier.md b/client-sdks/platform/typescript/docs/models/operationsplugintier.md new file mode 100644 index 000000000..8ef9147c6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operationsplugintier.md @@ -0,0 +1,17 @@ +# OperationsPluginTier + +Plugin-level default tier. + +## Example Usage + +```typescript +import { OperationsPluginTier } from "@alienplatform/platform-api/models"; + +let value: OperationsPluginTier = "mutating"; +``` + +## Values + +```typescript +"read-only" | "mutating" | "destructive" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operationspolicyresponse.md b/client-sdks/platform/typescript/docs/models/operationspolicyresponse.md new file mode 100644 index 000000000..efc78669a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operationspolicyresponse.md @@ -0,0 +1,24 @@ +# OperationsPolicyResponse + +## Example Usage + +```typescript +import { OperationsPolicyResponse } from "@alienplatform/platform-api/models"; + +let value: OperationsPolicyResponse = { + rules: [ + { + pattern: "", + decision: "auto", + }, + ], + default: "manual", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `rules` | [models.OperationsPolicyRule](../models/operationspolicyrule.md)[] | :heavy_check_mark: | N/A | +| `default` | [models.DefaultEnum](../models/defaultenum.md) | :heavy_check_mark: | Decision for commands no rule matches. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operationspolicyrule.md b/client-sdks/platform/typescript/docs/models/operationspolicyrule.md new file mode 100644 index 000000000..5986c0466 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operationspolicyrule.md @@ -0,0 +1,19 @@ +# OperationsPolicyRule + +## Example Usage + +```typescript +import { OperationsPolicyRule } from "@alienplatform/platform-api/models"; + +let value: OperationsPolicyRule = { + pattern: "", + decision: "manual", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `pattern` | *string* | :heavy_check_mark: | `plugin/operation`, `plugin/*`, or `*`. | +| `decision` | [models.OperationsPolicyRuleDecision](../models/operationspolicyruledecision.md) | :heavy_check_mark: | auto: run immediately. manual: needs customer approval before running. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operationspolicyruledecision.md b/client-sdks/platform/typescript/docs/models/operationspolicyruledecision.md new file mode 100644 index 000000000..248ec41be --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operationspolicyruledecision.md @@ -0,0 +1,17 @@ +# OperationsPolicyRuleDecision + +auto: run immediately. manual: needs customer approval before running. + +## Example Usage + +```typescript +import { OperationsPolicyRuleDecision } from "@alienplatform/platform-api/models"; + +let value: OperationsPolicyRuleDecision = "auto"; +``` + +## Values + +```typescript +"auto" | "manual" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/pendingapproval.md b/client-sdks/platform/typescript/docs/models/pendingapproval.md new file mode 100644 index 000000000..2011b6630 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/pendingapproval.md @@ -0,0 +1,22 @@ +# PendingApproval + +## Example Usage + +```typescript +import { PendingApproval } from "@alienplatform/platform-api/models"; + +let value: PendingApproval = { + approvalId: "", + toolCallId: "", + toolName: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `approvalId` | *string* | :heavy_check_mark: | N/A | +| `toolCallId` | *string* | :heavy_check_mark: | N/A | +| `toolName` | *string* | :heavy_check_mark: | N/A | +| `input` | *any* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/pendingpreparedstackextendconditionstateresource.md b/client-sdks/platform/typescript/docs/models/pendingpreparedstackextendconditionstateresource.md new file mode 100644 index 000000000..10e029922 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/pendingpreparedstackextendconditionstateresource.md @@ -0,0 +1,21 @@ +# PendingPreparedStackExtendConditionStateResource + +GCP IAM condition + +## Example Usage + +```typescript +import { PendingPreparedStackExtendConditionStateResource } from "@alienplatform/platform-api/models"; + +let value: PendingPreparedStackExtendConditionStateResource = { + expression: "", + title: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/pendingpreparedstackextendconditionstatestack.md b/client-sdks/platform/typescript/docs/models/pendingpreparedstackextendconditionstatestack.md new file mode 100644 index 000000000..630ff0986 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/pendingpreparedstackextendconditionstatestack.md @@ -0,0 +1,21 @@ +# PendingPreparedStackExtendConditionStateStack + +GCP IAM condition + +## Example Usage + +```typescript +import { PendingPreparedStackExtendConditionStateStack } from "@alienplatform/platform-api/models"; + +let value: PendingPreparedStackExtendConditionStateStack = { + expression: "", + title: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/pendingpreparedstackextendstateawresource.md b/client-sdks/platform/typescript/docs/models/pendingpreparedstackextendstateawresource.md new file mode 100644 index 000000000..2a12f6445 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/pendingpreparedstackextendstateawresource.md @@ -0,0 +1,23 @@ +# PendingPreparedStackExtendStateAwResource + +AWS-specific binding specification + +## Example Usage + +```typescript +import { PendingPreparedStackExtendStateAwResource } from "@alienplatform/platform-api/models"; + +let value: PendingPreparedStackExtendStateAwResource = { + resources: [ + "", + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/pendingpreparedstackextendstateazureresource.md b/client-sdks/platform/typescript/docs/models/pendingpreparedstackextendstateazureresource.md new file mode 100644 index 000000000..3289ff5df --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/pendingpreparedstackextendstateazureresource.md @@ -0,0 +1,19 @@ +# PendingPreparedStackExtendStateAzureResource + +Azure-specific binding specification + +## Example Usage + +```typescript +import { PendingPreparedStackExtendStateAzureResource } from "@alienplatform/platform-api/models"; + +let value: PendingPreparedStackExtendStateAzureResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/pendingpreparedstackextendstategcpresource.md b/client-sdks/platform/typescript/docs/models/pendingpreparedstackextendstategcpresource.md new file mode 100644 index 000000000..8e86598b6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/pendingpreparedstackextendstategcpresource.md @@ -0,0 +1,20 @@ +# PendingPreparedStackExtendStateGcpResource + +GCP-specific binding specification + +## Example Usage + +```typescript +import { PendingPreparedStackExtendStateGcpResource } from "@alienplatform/platform-api/models"; + +let value: PendingPreparedStackExtendStateGcpResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `condition` | *models.PendingPreparedStackExtendStateResourceConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/pendingpreparedstackextendstateresourceconditionunion.md b/client-sdks/platform/typescript/docs/models/pendingpreparedstackextendstateresourceconditionunion.md new file mode 100644 index 000000000..63ac397d3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/pendingpreparedstackextendstateresourceconditionunion.md @@ -0,0 +1,20 @@ +# PendingPreparedStackExtendStateResourceConditionUnion + + +## Supported Types + +### `models.PendingPreparedStackExtendConditionStateResource` + +```typescript +const value: models.PendingPreparedStackExtendConditionStateResource = { + expression: "", + title: "", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/pendingpreparedstackextendstatestackconditionunion.md b/client-sdks/platform/typescript/docs/models/pendingpreparedstackextendstatestackconditionunion.md new file mode 100644 index 000000000..bbafb8363 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/pendingpreparedstackextendstatestackconditionunion.md @@ -0,0 +1,20 @@ +# PendingPreparedStackExtendStateStackConditionUnion + + +## Supported Types + +### `models.PendingPreparedStackExtendConditionStateStack` + +```typescript +const value: models.PendingPreparedStackExtendConditionStateStack = { + expression: "", + title: "", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/pendingpreparedstackoverrideconditionstateresource.md b/client-sdks/platform/typescript/docs/models/pendingpreparedstackoverrideconditionstateresource.md new file mode 100644 index 000000000..073fba400 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/pendingpreparedstackoverrideconditionstateresource.md @@ -0,0 +1,21 @@ +# PendingPreparedStackOverrideConditionStateResource + +GCP IAM condition + +## Example Usage + +```typescript +import { PendingPreparedStackOverrideConditionStateResource } from "@alienplatform/platform-api/models"; + +let value: PendingPreparedStackOverrideConditionStateResource = { + expression: "", + title: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/pendingpreparedstackoverrideconditionstatestack.md b/client-sdks/platform/typescript/docs/models/pendingpreparedstackoverrideconditionstatestack.md new file mode 100644 index 000000000..955a7efd3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/pendingpreparedstackoverrideconditionstatestack.md @@ -0,0 +1,21 @@ +# PendingPreparedStackOverrideConditionStateStack + +GCP IAM condition + +## Example Usage + +```typescript +import { PendingPreparedStackOverrideConditionStateStack } from "@alienplatform/platform-api/models"; + +let value: PendingPreparedStackOverrideConditionStateStack = { + expression: "", + title: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/pendingpreparedstackoverridestateawresource.md b/client-sdks/platform/typescript/docs/models/pendingpreparedstackoverridestateawresource.md new file mode 100644 index 000000000..64bc61274 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/pendingpreparedstackoverridestateawresource.md @@ -0,0 +1,22 @@ +# PendingPreparedStackOverrideStateAwResource + +AWS-specific binding specification + +## Example Usage + +```typescript +import { PendingPreparedStackOverrideStateAwResource } from "@alienplatform/platform-api/models"; + +let value: PendingPreparedStackOverrideStateAwResource = { + resources: [ + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/pendingpreparedstackoverridestateazureresource.md b/client-sdks/platform/typescript/docs/models/pendingpreparedstackoverridestateazureresource.md new file mode 100644 index 000000000..21e6180a6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/pendingpreparedstackoverridestateazureresource.md @@ -0,0 +1,19 @@ +# PendingPreparedStackOverrideStateAzureResource + +Azure-specific binding specification + +## Example Usage + +```typescript +import { PendingPreparedStackOverrideStateAzureResource } from "@alienplatform/platform-api/models"; + +let value: PendingPreparedStackOverrideStateAzureResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/pendingpreparedstackoverridestategcpresource.md b/client-sdks/platform/typescript/docs/models/pendingpreparedstackoverridestategcpresource.md new file mode 100644 index 000000000..5fd820e16 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/pendingpreparedstackoverridestategcpresource.md @@ -0,0 +1,20 @@ +# PendingPreparedStackOverrideStateGcpResource + +GCP-specific binding specification + +## Example Usage + +```typescript +import { PendingPreparedStackOverrideStateGcpResource } from "@alienplatform/platform-api/models"; + +let value: PendingPreparedStackOverrideStateGcpResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | +| `condition` | *models.PendingPreparedStackOverrideStateResourceConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/pendingpreparedstackoverridestateresourceconditionunion.md b/client-sdks/platform/typescript/docs/models/pendingpreparedstackoverridestateresourceconditionunion.md new file mode 100644 index 000000000..e0c3d988b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/pendingpreparedstackoverridestateresourceconditionunion.md @@ -0,0 +1,20 @@ +# PendingPreparedStackOverrideStateResourceConditionUnion + + +## Supported Types + +### `models.PendingPreparedStackOverrideConditionStateResource` + +```typescript +const value: models.PendingPreparedStackOverrideConditionStateResource = { + expression: "", + title: "", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/pendingpreparedstackoverridestatestackconditionunion.md b/client-sdks/platform/typescript/docs/models/pendingpreparedstackoverridestatestackconditionunion.md new file mode 100644 index 000000000..2eb529e50 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/pendingpreparedstackoverridestatestackconditionunion.md @@ -0,0 +1,20 @@ +# PendingPreparedStackOverrideStateStackConditionUnion + + +## Supported Types + +### `models.PendingPreparedStackOverrideConditionStateStack` + +```typescript +const value: models.PendingPreparedStackOverrideConditionStateStack = { + expression: "", + title: "", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/pendingpreparedstackprofileconditionstateresource.md b/client-sdks/platform/typescript/docs/models/pendingpreparedstackprofileconditionstateresource.md new file mode 100644 index 000000000..9c2ab0d7a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/pendingpreparedstackprofileconditionstateresource.md @@ -0,0 +1,21 @@ +# PendingPreparedStackProfileConditionStateResource + +GCP IAM condition + +## Example Usage + +```typescript +import { PendingPreparedStackProfileConditionStateResource } from "@alienplatform/platform-api/models"; + +let value: PendingPreparedStackProfileConditionStateResource = { + expression: "", + title: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/pendingpreparedstackprofileconditionstatestack.md b/client-sdks/platform/typescript/docs/models/pendingpreparedstackprofileconditionstatestack.md new file mode 100644 index 000000000..3c1587ce3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/pendingpreparedstackprofileconditionstatestack.md @@ -0,0 +1,21 @@ +# PendingPreparedStackProfileConditionStateStack + +GCP IAM condition + +## Example Usage + +```typescript +import { PendingPreparedStackProfileConditionStateStack } from "@alienplatform/platform-api/models"; + +let value: PendingPreparedStackProfileConditionStateStack = { + expression: "", + title: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/pendingpreparedstackprofilestateawresource.md b/client-sdks/platform/typescript/docs/models/pendingpreparedstackprofilestateawresource.md new file mode 100644 index 000000000..d7f059a8d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/pendingpreparedstackprofilestateawresource.md @@ -0,0 +1,22 @@ +# PendingPreparedStackProfileStateAwResource + +AWS-specific binding specification + +## Example Usage + +```typescript +import { PendingPreparedStackProfileStateAwResource } from "@alienplatform/platform-api/models"; + +let value: PendingPreparedStackProfileStateAwResource = { + resources: [ + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/pendingpreparedstackprofilestateazureresource.md b/client-sdks/platform/typescript/docs/models/pendingpreparedstackprofilestateazureresource.md new file mode 100644 index 000000000..9fdf67fb3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/pendingpreparedstackprofilestateazureresource.md @@ -0,0 +1,19 @@ +# PendingPreparedStackProfileStateAzureResource + +Azure-specific binding specification + +## Example Usage + +```typescript +import { PendingPreparedStackProfileStateAzureResource } from "@alienplatform/platform-api/models"; + +let value: PendingPreparedStackProfileStateAzureResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/pendingpreparedstackprofilestategcpresource.md b/client-sdks/platform/typescript/docs/models/pendingpreparedstackprofilestategcpresource.md new file mode 100644 index 000000000..bf960ab33 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/pendingpreparedstackprofilestategcpresource.md @@ -0,0 +1,20 @@ +# PendingPreparedStackProfileStateGcpResource + +GCP-specific binding specification + +## Example Usage + +```typescript +import { PendingPreparedStackProfileStateGcpResource } from "@alienplatform/platform-api/models"; + +let value: PendingPreparedStackProfileStateGcpResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | +| `condition` | *models.PendingPreparedStackProfileStateResourceConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/pendingpreparedstackprofilestateresourceconditionunion.md b/client-sdks/platform/typescript/docs/models/pendingpreparedstackprofilestateresourceconditionunion.md new file mode 100644 index 000000000..f227fed3f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/pendingpreparedstackprofilestateresourceconditionunion.md @@ -0,0 +1,20 @@ +# PendingPreparedStackProfileStateResourceConditionUnion + + +## Supported Types + +### `models.PendingPreparedStackProfileConditionStateResource` + +```typescript +const value: models.PendingPreparedStackProfileConditionStateResource = { + expression: "", + title: "", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/pendingpreparedstackprofilestatestackconditionunion.md b/client-sdks/platform/typescript/docs/models/pendingpreparedstackprofilestatestackconditionunion.md new file mode 100644 index 000000000..64d8080b8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/pendingpreparedstackprofilestatestackconditionunion.md @@ -0,0 +1,20 @@ +# PendingPreparedStackProfileStateStackConditionUnion + + +## Supported Types + +### `models.PendingPreparedStackProfileConditionStateStack` + +```typescript +const value: models.PendingPreparedStackProfileConditionStateStack = { + expression: "", + title: "", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/pendingpreparedstackstatekind.md b/client-sdks/platform/typescript/docs/models/pendingpreparedstackstatekind.md new file mode 100644 index 000000000..c6a09aa2f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/pendingpreparedstackstatekind.md @@ -0,0 +1,17 @@ +# PendingPreparedStackStateKind + +Primitive stack input kind. + +## Example Usage + +```typescript +import { PendingPreparedStackStateKind } from "@alienplatform/platform-api/models"; + +let value: PendingPreparedStackStateKind = "stringList"; +``` + +## Values + +```typescript +"string" | "secret" | "number" | "integer" | "boolean" | "enum" | "stringList" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/pendingpreparedstackstatelifecycle.md b/client-sdks/platform/typescript/docs/models/pendingpreparedstackstatelifecycle.md new file mode 100644 index 000000000..970005b5b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/pendingpreparedstackstatelifecycle.md @@ -0,0 +1,17 @@ +# PendingPreparedStackStateLifecycle + +Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + +## Example Usage + +```typescript +import { PendingPreparedStackStateLifecycle } from "@alienplatform/platform-api/models"; + +let value: PendingPreparedStackStateLifecycle = "frozen"; +``` + +## Values + +```typescript +"frozen" | "live" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequest.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequest.md index 44116d127..79a23a937 100644 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequest.md +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequest.md @@ -37,6 +37,7 @@ let value: PersistImportedDeploymentRequest = { | `stackState` | *any* | :heavy_minus_sign: | N/A | | | `environmentInfo` | *models.PersistImportedDeploymentRequestEnvironmentInfoUnion* | :heavy_minus_sign: | Platform-specific environment information | | | `runtimeMetadata` | [models.PersistImportedDeploymentRequestRuntimeMetadata](../models/persistimporteddeploymentrequestruntimemetadata.md) | :heavy_check_mark: | Runtime metadata for deployment

Stores deployment state that needs to persist across step calls. | | +| `scheduleReconciliation` | *boolean* | :heavy_minus_sign: | N/A | | | `deploymentProtocolVersion` | *number* | :heavy_check_mark: | DeploymentState protocol version owned by the runtime/manager | | | `status` | [models.PersistImportedDeploymentRequestStatus](../models/persistimporteddeploymentrequeststatus.md) | :heavy_minus_sign: | Deployment status in the deployment lifecycle.

For observe-only deployments with no release or stack state, `Running`
means the Operator is attached. Connectivity comes from `lastHeartbeatAt`;
resource health comes from inventory and resource heartbeat data. | | | `currentReleaseId` | *string* | :heavy_minus_sign: | Unique identifier for the release. | rel_WbhQgksrawSKIpEN0NAssHX9 | diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestconfig.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestconfig.md deleted file mode 100644 index ad6d68fba..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestconfig.md +++ /dev/null @@ -1,22 +0,0 @@ -# PersistImportedDeploymentRequestConfig - -Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestConfig } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestConfig = { - id: "", - type: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `id` | *string* | :heavy_check_mark: | The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. | -| `type` | *string* | :heavy_check_mark: | Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. | -| `additionalProperties` | Record | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestdefaultboolean.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestdefaultboolean.md deleted file mode 100644 index a911a6b61..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestdefaultboolean.md +++ /dev/null @@ -1,19 +0,0 @@ -# PersistImportedDeploymentRequestDefaultBoolean - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestDefaultBoolean } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestDefaultBoolean = { - type: "boolean", - value: false, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -| `type` | [models.PersistImportedDeploymentRequestTypeBoolean](../models/persistimporteddeploymentrequesttypeboolean.md) | :heavy_check_mark: | N/A | -| `value` | *boolean* | :heavy_check_mark: | Boolean default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestdefaultnumber.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestdefaultnumber.md deleted file mode 100644 index e62822557..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestdefaultnumber.md +++ /dev/null @@ -1,19 +0,0 @@ -# PersistImportedDeploymentRequestDefaultNumber - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestDefaultNumber } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestDefaultNumber = { - type: "number", - value: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | -| `type` | [models.PersistImportedDeploymentRequestTypeNumber](../models/persistimporteddeploymentrequesttypenumber.md) | :heavy_check_mark: | N/A | -| `value` | *string* | :heavy_check_mark: | Number default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestdefaultstring.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestdefaultstring.md deleted file mode 100644 index 767a64737..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestdefaultstring.md +++ /dev/null @@ -1,19 +0,0 @@ -# PersistImportedDeploymentRequestDefaultString - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestDefaultString } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestDefaultString = { - type: "string", - value: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | -| `type` | [models.PersistImportedDeploymentRequestTypeString](../models/persistimporteddeploymentrequesttypestring.md) | :heavy_check_mark: | N/A | -| `value` | *string* | :heavy_check_mark: | String default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestdefaultstringlist.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestdefaultstringlist.md deleted file mode 100644 index 423e67a11..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestdefaultstringlist.md +++ /dev/null @@ -1,21 +0,0 @@ -# PersistImportedDeploymentRequestDefaultStringList - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestDefaultStringList } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestDefaultStringList = { - type: "stringList", - value: [ - "", - ], -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `type` | [models.PersistImportedDeploymentRequestTypeStringList](../models/persistimporteddeploymentrequesttypestringlist.md) | :heavy_check_mark: | N/A | -| `value` | *string*[] | :heavy_check_mark: | String list default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestdefaultunion.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestdefaultunion.md deleted file mode 100644 index f5662ffa3..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestdefaultunion.md +++ /dev/null @@ -1,49 +0,0 @@ -# PersistImportedDeploymentRequestDefaultUnion - - -## Supported Types - -### `models.PersistImportedDeploymentRequestDefaultString` - -```typescript -const value: models.PersistImportedDeploymentRequestDefaultString = { - type: "string", - value: "", -}; -``` - -### `models.PersistImportedDeploymentRequestDefaultNumber` - -```typescript -const value: models.PersistImportedDeploymentRequestDefaultNumber = { - type: "number", - value: "", -}; -``` - -### `models.PersistImportedDeploymentRequestDefaultBoolean` - -```typescript -const value: models.PersistImportedDeploymentRequestDefaultBoolean = { - type: "boolean", - value: false, -}; -``` - -### `models.PersistImportedDeploymentRequestDefaultStringList` - -```typescript -const value: models.PersistImportedDeploymentRequestDefaultStringList = { - type: "stringList", - value: [ - "", - ], -}; -``` - -### `any` - -```typescript -const value: any = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestdependency.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestdependency.md deleted file mode 100644 index b644227c2..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestdependency.md +++ /dev/null @@ -1,21 +0,0 @@ -# PersistImportedDeploymentRequestDependency - -Reference to a resource by its stable id and resource type. - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestDependency } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestDependency = { - id: "", - type: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `id` | *string* | :heavy_check_mark: | N/A | -| `type` | *string* | :heavy_check_mark: | Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestenv.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestenv.md deleted file mode 100644 index ac5a49202..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestenv.md +++ /dev/null @@ -1,21 +0,0 @@ -# PersistImportedDeploymentRequestEnv - -How a resolved stack input is injected into runtime environment variables. - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestEnv } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestEnv = { - name: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | -| `name` | *string* | :heavy_check_mark: | Environment variable name. | -| `targetResources` | *string*[] | :heavy_minus_sign: | Target resource IDs or patterns. None means every env-capable resource. | -| `type` | *models.PersistImportedDeploymentRequestTypeUnion* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextend.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextend.md deleted file mode 100644 index 870ab796d..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextend.md +++ /dev/null @@ -1,23 +0,0 @@ -# PersistImportedDeploymentRequestExtend - -A permission set that can be applied across different cloud platforms - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestExtend } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestExtend = { - description: "cantaloupe pfft pish blah gosh yum decide", - id: "", - platforms: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | -| `description` | *string* | :heavy_check_mark: | Human-readable description of what this permission set allows | -| `id` | *string* | :heavy_check_mark: | Unique identifier for the permission set (e.g., "storage/data-read") | -| `platforms` | [models.PersistImportedDeploymentRequestExtendPlatforms](../models/persistimporteddeploymentrequestextendplatforms.md) | :heavy_check_mark: | Platform-specific permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendaw.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendaw.md deleted file mode 100644 index 7179310b6..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendaw.md +++ /dev/null @@ -1,24 +0,0 @@ -# PersistImportedDeploymentRequestExtendAw - -AWS-specific platform permission configuration - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestExtendAw } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestExtendAw = { - binding: {}, - grant: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | -| `binding` | [models.PersistImportedDeploymentRequestExtendAwBinding](../models/persistimporteddeploymentrequestextendawbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | -| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | -| `effect` | [models.PersistImportedDeploymentRequestExtendEffect](../models/persistimporteddeploymentrequestextendeffect.md) | :heavy_minus_sign: | IAM effect. Defaults to Allow. | -| `grant` | [models.PersistImportedDeploymentRequestExtendAwGrant](../models/persistimporteddeploymentrequestextendawgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | -| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendawbinding.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendawbinding.md deleted file mode 100644 index b67a52829..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendawbinding.md +++ /dev/null @@ -1,18 +0,0 @@ -# PersistImportedDeploymentRequestExtendAwBinding - -Generic binding configuration for permissions - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestExtendAwBinding } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestExtendAwBinding = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | -| `resource` | [models.PersistImportedDeploymentRequestExtendAwResource](../models/persistimporteddeploymentrequestextendawresource.md) | :heavy_minus_sign: | AWS-specific binding specification | -| `stack` | [models.PersistImportedDeploymentRequestExtendAwStack](../models/persistimporteddeploymentrequestextendawstack.md) | :heavy_minus_sign: | AWS-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendawgrant.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendawgrant.md deleted file mode 100644 index bdabd105d..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendawgrant.md +++ /dev/null @@ -1,21 +0,0 @@ -# PersistImportedDeploymentRequestExtendAwGrant - -Grant permissions for a specific cloud platform - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestExtendAwGrant } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestExtendAwGrant = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | -| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | -| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | -| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | -| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendawresource.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendawresource.md deleted file mode 100644 index c40021c9e..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendawresource.md +++ /dev/null @@ -1,23 +0,0 @@ -# PersistImportedDeploymentRequestExtendAwResource - -AWS-specific binding specification - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestExtendAwResource } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestExtendAwResource = { - resources: [ - "", - "", - ], -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | -| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendawstack.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendawstack.md deleted file mode 100644 index 785a29ec0..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendawstack.md +++ /dev/null @@ -1,22 +0,0 @@ -# PersistImportedDeploymentRequestExtendAwStack - -AWS-specific binding specification - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestExtendAwStack } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestExtendAwStack = { - resources: [ - "", - ], -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | -| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendazure.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendazure.md deleted file mode 100644 index b5242d32a..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendazure.md +++ /dev/null @@ -1,23 +0,0 @@ -# PersistImportedDeploymentRequestExtendAzure - -Azure-specific platform permission configuration - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestExtendAzure } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestExtendAzure = { - binding: {}, - grant: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | -| `binding` | [models.PersistImportedDeploymentRequestExtendAzureBinding](../models/persistimporteddeploymentrequestextendazurebinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | -| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | -| `grant` | [models.PersistImportedDeploymentRequestExtendAzureGrant](../models/persistimporteddeploymentrequestextendazuregrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | -| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendazurebinding.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendazurebinding.md deleted file mode 100644 index 72a5c7915..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendazurebinding.md +++ /dev/null @@ -1,18 +0,0 @@ -# PersistImportedDeploymentRequestExtendAzureBinding - -Generic binding configuration for permissions - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestExtendAzureBinding } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestExtendAzureBinding = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | -| `resource` | [models.PersistImportedDeploymentRequestExtendAzureResource](../models/persistimporteddeploymentrequestextendazureresource.md) | :heavy_minus_sign: | Azure-specific binding specification | -| `stack` | [models.PersistImportedDeploymentRequestExtendAzureStack](../models/persistimporteddeploymentrequestextendazurestack.md) | :heavy_minus_sign: | Azure-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendazuregrant.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendazuregrant.md deleted file mode 100644 index a7168ff4b..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendazuregrant.md +++ /dev/null @@ -1,21 +0,0 @@ -# PersistImportedDeploymentRequestExtendAzureGrant - -Grant permissions for a specific cloud platform - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestExtendAzureGrant } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestExtendAzureGrant = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | -| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | -| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | -| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | -| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendazureresource.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendazureresource.md deleted file mode 100644 index f5e15a8bf..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendazureresource.md +++ /dev/null @@ -1,19 +0,0 @@ -# PersistImportedDeploymentRequestExtendAzureResource - -Azure-specific binding specification - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestExtendAzureResource } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestExtendAzureResource = { - scope: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendazurestack.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendazurestack.md deleted file mode 100644 index 01f13db62..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendazurestack.md +++ /dev/null @@ -1,19 +0,0 @@ -# PersistImportedDeploymentRequestExtendAzureStack - -Azure-specific binding specification - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestExtendAzureStack } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestExtendAzureStack = { - scope: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendconditionresource.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendconditionresource.md deleted file mode 100644 index e032fa388..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendconditionresource.md +++ /dev/null @@ -1,21 +0,0 @@ -# PersistImportedDeploymentRequestExtendConditionResource - -GCP IAM condition - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestExtendConditionResource } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestExtendConditionResource = { - expression: "", - title: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `expression` | *string* | :heavy_check_mark: | N/A | -| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendconditionstack.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendconditionstack.md deleted file mode 100644 index 4b46d24b9..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendconditionstack.md +++ /dev/null @@ -1,21 +0,0 @@ -# PersistImportedDeploymentRequestExtendConditionStack - -GCP IAM condition - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestExtendConditionStack } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestExtendConditionStack = { - expression: "", - title: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `expression` | *string* | :heavy_check_mark: | N/A | -| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendeffect.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendeffect.md deleted file mode 100644 index acdf5248f..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendeffect.md +++ /dev/null @@ -1,17 +0,0 @@ -# PersistImportedDeploymentRequestExtendEffect - -IAM effect. Defaults to Allow. - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestExtendEffect } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestExtendEffect = "Deny"; -``` - -## Values - -```typescript -"Allow" | "Deny" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendgcp.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendgcp.md deleted file mode 100644 index b82b3e8e3..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendgcp.md +++ /dev/null @@ -1,23 +0,0 @@ -# PersistImportedDeploymentRequestExtendGcp - -GCP-specific platform permission configuration - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestExtendGcp } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestExtendGcp = { - binding: {}, - grant: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | -| `binding` | [models.PersistImportedDeploymentRequestExtendGcpBinding](../models/persistimporteddeploymentrequestextendgcpbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | -| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | -| `grant` | [models.PersistImportedDeploymentRequestExtendGcpGrant](../models/persistimporteddeploymentrequestextendgcpgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | -| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendgcpbinding.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendgcpbinding.md deleted file mode 100644 index dcc677218..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendgcpbinding.md +++ /dev/null @@ -1,18 +0,0 @@ -# PersistImportedDeploymentRequestExtendGcpBinding - -Generic binding configuration for permissions - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestExtendGcpBinding } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestExtendGcpBinding = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -| `resource` | [models.PersistImportedDeploymentRequestExtendGcpResource](../models/persistimporteddeploymentrequestextendgcpresource.md) | :heavy_minus_sign: | GCP-specific binding specification | -| `stack` | [models.PersistImportedDeploymentRequestExtendGcpStack](../models/persistimporteddeploymentrequestextendgcpstack.md) | :heavy_minus_sign: | GCP-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendgcpgrant.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendgcpgrant.md deleted file mode 100644 index 867fa6061..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendgcpgrant.md +++ /dev/null @@ -1,21 +0,0 @@ -# PersistImportedDeploymentRequestExtendGcpGrant - -Grant permissions for a specific cloud platform - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestExtendGcpGrant } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestExtendGcpGrant = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | -| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | -| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | -| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | -| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendgcpresource.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendgcpresource.md deleted file mode 100644 index 641941fe3..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendgcpresource.md +++ /dev/null @@ -1,20 +0,0 @@ -# PersistImportedDeploymentRequestExtendGcpResource - -GCP-specific binding specification - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestExtendGcpResource } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestExtendGcpResource = { - scope: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | -| `condition` | *models.PersistImportedDeploymentRequestExtendResourceConditionUnion* | :heavy_minus_sign: | N/A | -| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendgcpstack.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendgcpstack.md deleted file mode 100644 index 2ba40cf33..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendgcpstack.md +++ /dev/null @@ -1,20 +0,0 @@ -# PersistImportedDeploymentRequestExtendGcpStack - -GCP-specific binding specification - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestExtendGcpStack } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestExtendGcpStack = { - scope: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | -| `condition` | *models.PersistImportedDeploymentRequestExtendStackConditionUnion* | :heavy_minus_sign: | N/A | -| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendplatforms.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendplatforms.md deleted file mode 100644 index 62ac2d652..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendplatforms.md +++ /dev/null @@ -1,19 +0,0 @@ -# PersistImportedDeploymentRequestExtendPlatforms - -Platform-specific permission configurations - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestExtendPlatforms } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestExtendPlatforms = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | -| `aws` | [models.PersistImportedDeploymentRequestExtendAw](../models/persistimporteddeploymentrequestextendaw.md)[] | :heavy_minus_sign: | AWS permission configurations | -| `azure` | [models.PersistImportedDeploymentRequestExtendAzure](../models/persistimporteddeploymentrequestextendazure.md)[] | :heavy_minus_sign: | Azure permission configurations | -| `gcp` | [models.PersistImportedDeploymentRequestExtendGcp](../models/persistimporteddeploymentrequestextendgcp.md)[] | :heavy_minus_sign: | GCP permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendresourceconditionunion.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendresourceconditionunion.md deleted file mode 100644 index ca2972220..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendresourceconditionunion.md +++ /dev/null @@ -1,20 +0,0 @@ -# PersistImportedDeploymentRequestExtendResourceConditionUnion - - -## Supported Types - -### `models.PersistImportedDeploymentRequestExtendConditionResource` - -```typescript -const value: models.PersistImportedDeploymentRequestExtendConditionResource = { - expression: "", - title: "", -}; -``` - -### `any` - -```typescript -const value: any = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendstackconditionunion.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendstackconditionunion.md deleted file mode 100644 index 6afac15ea..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendstackconditionunion.md +++ /dev/null @@ -1,20 +0,0 @@ -# PersistImportedDeploymentRequestExtendStackConditionUnion - - -## Supported Types - -### `models.PersistImportedDeploymentRequestExtendConditionStack` - -```typescript -const value: models.PersistImportedDeploymentRequestExtendConditionStack = { - expression: "", - title: "", -}; -``` - -### `any` - -```typescript -const value: any = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendunion.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendunion.md deleted file mode 100644 index e958dade5..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestextendunion.md +++ /dev/null @@ -1,23 +0,0 @@ -# PersistImportedDeploymentRequestExtendUnion - -Reference to a permission set - either by name or inline definition - - -## Supported Types - -### `models.PersistImportedDeploymentRequestExtend` - -```typescript -const value: models.PersistImportedDeploymentRequestExtend = { - description: "cantaloupe pfft pish blah gosh yum decide", - id: "", - platforms: {}, -}; -``` - -### `string` - -```typescript -const value: string = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestfailuredomains1.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestfailuredomains1.md new file mode 100644 index 000000000..67b37c2cc --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestfailuredomains1.md @@ -0,0 +1,20 @@ +# PersistImportedDeploymentRequestFailureDomains1 + +Failure-domain policy selected for a compute pool. + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestFailureDomains1 } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestFailureDomains1 = { + spread: 294914, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `selectedFailureDomains` | *string*[] | :heavy_minus_sign: | Concrete provider domains selected during setup.
Empty delegates deterministic selection to the provider setup implementation. | +| `spread` | *number* | :heavy_check_mark: | Number of distinct failure domains across which new stateful replicas may be spread. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestfailuredomains2.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestfailuredomains2.md new file mode 100644 index 000000000..297768c22 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestfailuredomains2.md @@ -0,0 +1,20 @@ +# PersistImportedDeploymentRequestFailureDomains2 + +Failure-domain policy selected for a compute pool. + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestFailureDomains2 } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestFailureDomains2 = { + spread: 666091, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `selectedFailureDomains` | *string*[] | :heavy_minus_sign: | Concrete provider domains selected during setup.
Empty delegates deterministic selection to the provider setup implementation. | +| `spread` | *number* | :heavy_check_mark: | Number of distinct failure domains across which new stateful replicas may be spread. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestfailuredomainsunion1.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestfailuredomainsunion1.md new file mode 100644 index 000000000..919c56f5f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestfailuredomainsunion1.md @@ -0,0 +1,19 @@ +# PersistImportedDeploymentRequestFailureDomainsUnion1 + + +## Supported Types + +### `models.PersistImportedDeploymentRequestFailureDomains1` + +```typescript +const value: models.PersistImportedDeploymentRequestFailureDomains1 = { + spread: 294914, +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestfailuredomainsunion2.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestfailuredomainsunion2.md new file mode 100644 index 000000000..b6c20a24c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestfailuredomainsunion2.md @@ -0,0 +1,19 @@ +# PersistImportedDeploymentRequestFailureDomainsUnion2 + + +## Supported Types + +### `models.PersistImportedDeploymentRequestFailureDomains2` + +```typescript +const value: models.PersistImportedDeploymentRequestFailureDomains2 = { + spread: 666091, +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestinitialsetupauthority.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestinitialsetupauthority.md new file mode 100644 index 000000000..e7f87cb5e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestinitialsetupauthority.md @@ -0,0 +1,18 @@ +# PersistImportedDeploymentRequestInitialSetupAuthority + +Actor that owns structural work during the initial setup phase. + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestInitialSetupAuthority } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestInitialSetupAuthority = + "importedHandoff"; +``` + +## Values + +```typescript +"importedHandoff" | "directSetup" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestinput.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestinput.md deleted file mode 100644 index 8c9d38528..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestinput.md +++ /dev/null @@ -1,36 +0,0 @@ -# PersistImportedDeploymentRequestInput - -Stack input definition serialized into a release stack. - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestInput } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestInput = { - description: "jump ew festival ah", - id: "", - kind: "integer", - label: "", - providedBy: [ - "developer", - ], - required: false, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | -| `default` | *models.PersistImportedDeploymentRequestDefaultUnion* | :heavy_minus_sign: | N/A | -| `description` | *string* | :heavy_check_mark: | Human-facing helper text. | -| `env` | [models.PersistImportedDeploymentRequestEnv](../models/persistimporteddeploymentrequestenv.md)[] | :heavy_minus_sign: | Runtime env-var mappings for v1 input resolution. | -| `id` | *string* | :heavy_check_mark: | Stable input ID used by CLI/API calls. | -| `kind` | [models.PersistImportedDeploymentRequestKind](../models/persistimporteddeploymentrequestkind.md) | :heavy_check_mark: | Primitive stack input kind. | -| `label` | *string* | :heavy_check_mark: | Human-facing field label. | -| `placeholder` | *string* | :heavy_minus_sign: | Example placeholder shown in UI. | -| `platforms` | [models.PersistImportedDeploymentRequestPreparedStackPlatform](../models/persistimporteddeploymentrequestpreparedstackplatform.md)[] | :heavy_minus_sign: | Platforms where this input applies. | -| `providedBy` | [models.PersistImportedDeploymentRequestProvidedBy](../models/persistimporteddeploymentrequestprovidedby.md)[] | :heavy_check_mark: | Who can provide this value. | -| `required` | *boolean* | :heavy_check_mark: | Whether a resolved value is required before deployment can proceed. | -| `validation` | *models.PersistImportedDeploymentRequestValidationUnion* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestkind.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestkind.md deleted file mode 100644 index d4e8d9aef..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestkind.md +++ /dev/null @@ -1,17 +0,0 @@ -# PersistImportedDeploymentRequestKind - -Primitive stack input kind. - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestKind } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestKind = "integer"; -``` - -## Values - -```typescript -"string" | "secret" | "number" | "integer" | "boolean" | "enum" | "stringList" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestlifecycle.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestlifecycle.md deleted file mode 100644 index 69b055881..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestlifecycle.md +++ /dev/null @@ -1,17 +0,0 @@ -# PersistImportedDeploymentRequestLifecycle - -Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestLifecycle } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestLifecycle = "live"; -``` - -## Values - -```typescript -"frozen" | "live" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestmanagement1.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestmanagement1.md deleted file mode 100644 index a2c231673..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestmanagement1.md +++ /dev/null @@ -1,22 +0,0 @@ -# PersistImportedDeploymentRequestManagement1 - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestManagement1 } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestManagement1 = { - extend: { - "key": [ - "", - ], - "key1": [], - }, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | -| `extend` | Record | :heavy_check_mark: | Permission profile that maps resources to permission sets
Key can be "*" for all resources or resource name for specific resource | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestmanagement2.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestmanagement2.md deleted file mode 100644 index fe1ef2b9d..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestmanagement2.md +++ /dev/null @@ -1,32 +0,0 @@ -# PersistImportedDeploymentRequestManagement2 - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestManagement2 } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestManagement2 = { - override: { - "key": [ - { - description: "rebound lay anti access underneath", - id: "", - platforms: {}, - }, - ], - "key1": [ - { - description: "rebound lay anti access underneath", - id: "", - platforms: {}, - }, - ], - }, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | -| `override` | Record | :heavy_check_mark: | Permission profile that maps resources to permission sets
Key can be "*" for all resources or resource name for specific resource | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestmanagementenum.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestmanagementenum.md deleted file mode 100644 index 790734b2a..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestmanagementenum.md +++ /dev/null @@ -1,15 +0,0 @@ -# PersistImportedDeploymentRequestManagementEnum - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestManagementEnum } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestManagementEnum = "auto"; -``` - -## Values - -```typescript -"auto" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestmanagementunion.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestmanagementunion.md deleted file mode 100644 index a3e942d6d..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestmanagementunion.md +++ /dev/null @@ -1,49 +0,0 @@ -# PersistImportedDeploymentRequestManagementUnion - -Management permissions configuration for stack management access - - -## Supported Types - -### `models.PersistImportedDeploymentRequestManagement1` - -```typescript -const value: models.PersistImportedDeploymentRequestManagement1 = { - extend: { - "key": [ - "", - ], - "key1": [], - }, -}; -``` - -### `models.PersistImportedDeploymentRequestManagement2` - -```typescript -const value: models.PersistImportedDeploymentRequestManagement2 = { - override: { - "key": [ - { - description: "rebound lay anti access underneath", - id: "", - platforms: {}, - }, - ], - "key1": [ - { - description: "rebound lay anti access underneath", - id: "", - platforms: {}, - }, - ], - }, -}; -``` - -### `models.PersistImportedDeploymentRequestManagementEnum` - -```typescript -const value: models.PersistImportedDeploymentRequestManagementEnum = "auto"; -``` - diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverride.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverride.md deleted file mode 100644 index bd8c9ae0c..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverride.md +++ /dev/null @@ -1,23 +0,0 @@ -# PersistImportedDeploymentRequestOverride - -A permission set that can be applied across different cloud platforms - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestOverride } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestOverride = { - description: "besides once uh-huh annex grimy hm quit while stitcher whether", - id: "", - platforms: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -| `description` | *string* | :heavy_check_mark: | Human-readable description of what this permission set allows | -| `id` | *string* | :heavy_check_mark: | Unique identifier for the permission set (e.g., "storage/data-read") | -| `platforms` | [models.PersistImportedDeploymentRequestOverridePlatforms](../models/persistimporteddeploymentrequestoverrideplatforms.md) | :heavy_check_mark: | Platform-specific permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverrideaw.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverrideaw.md deleted file mode 100644 index 8933a5830..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverrideaw.md +++ /dev/null @@ -1,24 +0,0 @@ -# PersistImportedDeploymentRequestOverrideAw - -AWS-specific platform permission configuration - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestOverrideAw } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestOverrideAw = { - binding: {}, - grant: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -| `binding` | [models.PersistImportedDeploymentRequestOverrideAwBinding](../models/persistimporteddeploymentrequestoverrideawbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | -| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | -| `effect` | [models.PersistImportedDeploymentRequestOverrideEffect](../models/persistimporteddeploymentrequestoverrideeffect.md) | :heavy_minus_sign: | IAM effect. Defaults to Allow. | -| `grant` | [models.PersistImportedDeploymentRequestOverrideAwGrant](../models/persistimporteddeploymentrequestoverrideawgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | -| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverrideawbinding.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverrideawbinding.md deleted file mode 100644 index 6f784ad5c..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverrideawbinding.md +++ /dev/null @@ -1,18 +0,0 @@ -# PersistImportedDeploymentRequestOverrideAwBinding - -Generic binding configuration for permissions - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestOverrideAwBinding } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestOverrideAwBinding = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | -| `resource` | [models.PersistImportedDeploymentRequestOverrideAwResource](../models/persistimporteddeploymentrequestoverrideawresource.md) | :heavy_minus_sign: | AWS-specific binding specification | -| `stack` | [models.PersistImportedDeploymentRequestOverrideAwStack](../models/persistimporteddeploymentrequestoverrideawstack.md) | :heavy_minus_sign: | AWS-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverrideawgrant.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverrideawgrant.md deleted file mode 100644 index 190763a27..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverrideawgrant.md +++ /dev/null @@ -1,21 +0,0 @@ -# PersistImportedDeploymentRequestOverrideAwGrant - -Grant permissions for a specific cloud platform - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestOverrideAwGrant } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestOverrideAwGrant = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | -| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | -| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | -| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | -| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverrideawresource.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverrideawresource.md deleted file mode 100644 index 7125413eb..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverrideawresource.md +++ /dev/null @@ -1,22 +0,0 @@ -# PersistImportedDeploymentRequestOverrideAwResource - -AWS-specific binding specification - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestOverrideAwResource } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestOverrideAwResource = { - resources: [ - "", - ], -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | -| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverrideawstack.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverrideawstack.md deleted file mode 100644 index 5be49766d..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverrideawstack.md +++ /dev/null @@ -1,20 +0,0 @@ -# PersistImportedDeploymentRequestOverrideAwStack - -AWS-specific binding specification - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestOverrideAwStack } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestOverrideAwStack = { - resources: [], -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | -| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverrideazure.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverrideazure.md deleted file mode 100644 index db0b731e4..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverrideazure.md +++ /dev/null @@ -1,23 +0,0 @@ -# PersistImportedDeploymentRequestOverrideAzure - -Azure-specific platform permission configuration - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestOverrideAzure } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestOverrideAzure = { - binding: {}, - grant: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -| `binding` | [models.PersistImportedDeploymentRequestOverrideAzureBinding](../models/persistimporteddeploymentrequestoverrideazurebinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | -| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | -| `grant` | [models.PersistImportedDeploymentRequestOverrideAzureGrant](../models/persistimporteddeploymentrequestoverrideazuregrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | -| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverrideazurebinding.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverrideazurebinding.md deleted file mode 100644 index 6e4b52f75..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverrideazurebinding.md +++ /dev/null @@ -1,18 +0,0 @@ -# PersistImportedDeploymentRequestOverrideAzureBinding - -Generic binding configuration for permissions - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestOverrideAzureBinding } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestOverrideAzureBinding = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | -| `resource` | [models.PersistImportedDeploymentRequestOverrideAzureResource](../models/persistimporteddeploymentrequestoverrideazureresource.md) | :heavy_minus_sign: | Azure-specific binding specification | -| `stack` | [models.PersistImportedDeploymentRequestOverrideAzureStack](../models/persistimporteddeploymentrequestoverrideazurestack.md) | :heavy_minus_sign: | Azure-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverrideazuregrant.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverrideazuregrant.md deleted file mode 100644 index 0b99662dd..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverrideazuregrant.md +++ /dev/null @@ -1,21 +0,0 @@ -# PersistImportedDeploymentRequestOverrideAzureGrant - -Grant permissions for a specific cloud platform - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestOverrideAzureGrant } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestOverrideAzureGrant = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | -| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | -| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | -| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | -| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverrideazureresource.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverrideazureresource.md deleted file mode 100644 index 80d38612d..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverrideazureresource.md +++ /dev/null @@ -1,19 +0,0 @@ -# PersistImportedDeploymentRequestOverrideAzureResource - -Azure-specific binding specification - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestOverrideAzureResource } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestOverrideAzureResource = { - scope: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverrideazurestack.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverrideazurestack.md deleted file mode 100644 index e09031a60..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverrideazurestack.md +++ /dev/null @@ -1,19 +0,0 @@ -# PersistImportedDeploymentRequestOverrideAzureStack - -Azure-specific binding specification - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestOverrideAzureStack } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestOverrideAzureStack = { - scope: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverrideconditionresource.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverrideconditionresource.md deleted file mode 100644 index 691df7616..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverrideconditionresource.md +++ /dev/null @@ -1,21 +0,0 @@ -# PersistImportedDeploymentRequestOverrideConditionResource - -GCP IAM condition - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestOverrideConditionResource } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestOverrideConditionResource = { - expression: "", - title: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `expression` | *string* | :heavy_check_mark: | N/A | -| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverrideconditionstack.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverrideconditionstack.md deleted file mode 100644 index 5faf319e0..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverrideconditionstack.md +++ /dev/null @@ -1,21 +0,0 @@ -# PersistImportedDeploymentRequestOverrideConditionStack - -GCP IAM condition - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestOverrideConditionStack } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestOverrideConditionStack = { - expression: "", - title: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `expression` | *string* | :heavy_check_mark: | N/A | -| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverrideeffect.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverrideeffect.md deleted file mode 100644 index 529c586f0..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverrideeffect.md +++ /dev/null @@ -1,17 +0,0 @@ -# PersistImportedDeploymentRequestOverrideEffect - -IAM effect. Defaults to Allow. - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestOverrideEffect } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestOverrideEffect = "Allow"; -``` - -## Values - -```typescript -"Allow" | "Deny" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverridegcp.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverridegcp.md deleted file mode 100644 index af12cc00c..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverridegcp.md +++ /dev/null @@ -1,23 +0,0 @@ -# PersistImportedDeploymentRequestOverrideGcp - -GCP-specific platform permission configuration - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestOverrideGcp } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestOverrideGcp = { - binding: {}, - grant: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | -| `binding` | [models.PersistImportedDeploymentRequestOverrideGcpBinding](../models/persistimporteddeploymentrequestoverridegcpbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | -| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | -| `grant` | [models.PersistImportedDeploymentRequestOverrideGcpGrant](../models/persistimporteddeploymentrequestoverridegcpgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | -| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverridegcpbinding.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverridegcpbinding.md deleted file mode 100644 index a25221800..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverridegcpbinding.md +++ /dev/null @@ -1,18 +0,0 @@ -# PersistImportedDeploymentRequestOverrideGcpBinding - -Generic binding configuration for permissions - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestOverrideGcpBinding } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestOverrideGcpBinding = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | -| `resource` | [models.PersistImportedDeploymentRequestOverrideGcpResource](../models/persistimporteddeploymentrequestoverridegcpresource.md) | :heavy_minus_sign: | GCP-specific binding specification | -| `stack` | [models.PersistImportedDeploymentRequestOverrideGcpStack](../models/persistimporteddeploymentrequestoverridegcpstack.md) | :heavy_minus_sign: | GCP-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverridegcpgrant.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverridegcpgrant.md deleted file mode 100644 index ab85d1295..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverridegcpgrant.md +++ /dev/null @@ -1,21 +0,0 @@ -# PersistImportedDeploymentRequestOverrideGcpGrant - -Grant permissions for a specific cloud platform - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestOverrideGcpGrant } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestOverrideGcpGrant = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | -| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | -| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | -| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | -| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverridegcpresource.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverridegcpresource.md deleted file mode 100644 index 4e7a03ae7..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverridegcpresource.md +++ /dev/null @@ -1,20 +0,0 @@ -# PersistImportedDeploymentRequestOverrideGcpResource - -GCP-specific binding specification - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestOverrideGcpResource } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestOverrideGcpResource = { - scope: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | -| `condition` | *models.PersistImportedDeploymentRequestOverrideResourceConditionUnion* | :heavy_minus_sign: | N/A | -| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverridegcpstack.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverridegcpstack.md deleted file mode 100644 index 36c31a9d3..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverridegcpstack.md +++ /dev/null @@ -1,20 +0,0 @@ -# PersistImportedDeploymentRequestOverrideGcpStack - -GCP-specific binding specification - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestOverrideGcpStack } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestOverrideGcpStack = { - scope: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -| `condition` | *models.PersistImportedDeploymentRequestOverrideStackConditionUnion* | :heavy_minus_sign: | N/A | -| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverrideplatforms.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverrideplatforms.md deleted file mode 100644 index ec39dabd2..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverrideplatforms.md +++ /dev/null @@ -1,19 +0,0 @@ -# PersistImportedDeploymentRequestOverridePlatforms - -Platform-specific permission configurations - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestOverridePlatforms } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestOverridePlatforms = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `aws` | [models.PersistImportedDeploymentRequestOverrideAw](../models/persistimporteddeploymentrequestoverrideaw.md)[] | :heavy_minus_sign: | AWS permission configurations | -| `azure` | [models.PersistImportedDeploymentRequestOverrideAzure](../models/persistimporteddeploymentrequestoverrideazure.md)[] | :heavy_minus_sign: | Azure permission configurations | -| `gcp` | [models.PersistImportedDeploymentRequestOverrideGcp](../models/persistimporteddeploymentrequestoverridegcp.md)[] | :heavy_minus_sign: | GCP permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverrideresourceconditionunion.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverrideresourceconditionunion.md deleted file mode 100644 index d0d7be87f..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverrideresourceconditionunion.md +++ /dev/null @@ -1,21 +0,0 @@ -# PersistImportedDeploymentRequestOverrideResourceConditionUnion - - -## Supported Types - -### `models.PersistImportedDeploymentRequestOverrideConditionResource` - -```typescript -const value: models.PersistImportedDeploymentRequestOverrideConditionResource = - { - expression: "", - title: "", - }; -``` - -### `any` - -```typescript -const value: any = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverridestackconditionunion.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverridestackconditionunion.md deleted file mode 100644 index 79c50048d..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverridestackconditionunion.md +++ /dev/null @@ -1,20 +0,0 @@ -# PersistImportedDeploymentRequestOverrideStackConditionUnion - - -## Supported Types - -### `models.PersistImportedDeploymentRequestOverrideConditionStack` - -```typescript -const value: models.PersistImportedDeploymentRequestOverrideConditionStack = { - expression: "", - title: "", -}; -``` - -### `any` - -```typescript -const value: any = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverrideunion.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverrideunion.md deleted file mode 100644 index 39140970f..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestoverrideunion.md +++ /dev/null @@ -1,23 +0,0 @@ -# PersistImportedDeploymentRequestOverrideUnion - -Reference to a permission set - either by name or inline definition - - -## Supported Types - -### `models.PersistImportedDeploymentRequestOverride` - -```typescript -const value: models.PersistImportedDeploymentRequestOverride = { - description: "besides once uh-huh annex grimy hm quit while stitcher whether", - id: "", - platforms: {}, -}; -``` - -### `string` - -```typescript -const value: string = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstack.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstack.md new file mode 100644 index 000000000..cad128d46 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstack.md @@ -0,0 +1,33 @@ +# PersistImportedDeploymentRequestPendingPreparedStack + +A bag of resources, unaware of any cloud. + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStack } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStack = { + id: "", + resources: { + "key": { + config: { + id: "", + type: "", + }, + dependencies: [], + lifecycle: "live", + }, + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the stack | +| `inputs` | [models.PersistImportedDeploymentRequestPendingPreparedStackInput](../models/persistimporteddeploymentrequestpendingpreparedstackinput.md)[] | :heavy_minus_sign: | Input definitions required before setup or deployment can proceed. | +| `permissions` | [models.PersistImportedDeploymentRequestPendingPreparedStackPermissions](../models/persistimporteddeploymentrequestpendingpreparedstackpermissions.md) | :heavy_minus_sign: | Combined permissions configuration that contains both profiles and management | +| `resources` | Record | :heavy_check_mark: | Map of resource IDs to their configurations and lifecycle settings | +| `supportedPlatforms` | [models.PersistImportedDeploymentRequestPendingPreparedStackSupportedPlatform](../models/persistimporteddeploymentrequestpendingpreparedstacksupportedplatform.md)[] | :heavy_minus_sign: | Which platforms this stack supports. When None, all platforms are supported. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackconfig.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackconfig.md new file mode 100644 index 000000000..f3664dfe6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackconfig.md @@ -0,0 +1,22 @@ +# PersistImportedDeploymentRequestPendingPreparedStackConfig + +Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackConfig } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStackConfig = { + id: "", + type: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. | +| `type` | *string* | :heavy_check_mark: | Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. | +| `additionalProperties` | Record | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackdefaultboolean.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackdefaultboolean.md new file mode 100644 index 000000000..731bce0b7 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackdefaultboolean.md @@ -0,0 +1,20 @@ +# PersistImportedDeploymentRequestPendingPreparedStackDefaultBoolean + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackDefaultBoolean } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStackDefaultBoolean = + { + type: "boolean", + value: false, + }; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `type` | [models.PersistImportedDeploymentRequestPendingPreparedStackTypeBoolean](../models/persistimporteddeploymentrequestpendingpreparedstacktypeboolean.md) | :heavy_check_mark: | N/A | +| `value` | *boolean* | :heavy_check_mark: | Boolean default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackdefaultnumber.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackdefaultnumber.md new file mode 100644 index 000000000..8083ad70c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackdefaultnumber.md @@ -0,0 +1,19 @@ +# PersistImportedDeploymentRequestPendingPreparedStackDefaultNumber + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackDefaultNumber } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStackDefaultNumber = { + type: "number", + value: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | +| `type` | [models.PersistImportedDeploymentRequestPendingPreparedStackTypeNumber](../models/persistimporteddeploymentrequestpendingpreparedstacktypenumber.md) | :heavy_check_mark: | N/A | +| `value` | *string* | :heavy_check_mark: | Number default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackdefaultstring.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackdefaultstring.md new file mode 100644 index 000000000..b20bbf28d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackdefaultstring.md @@ -0,0 +1,19 @@ +# PersistImportedDeploymentRequestPendingPreparedStackDefaultString + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackDefaultString } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStackDefaultString = { + type: "string", + value: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | +| `type` | [models.PersistImportedDeploymentRequestPendingPreparedStackTypeString](../models/persistimporteddeploymentrequestpendingpreparedstacktypestring.md) | :heavy_check_mark: | N/A | +| `value` | *string* | :heavy_check_mark: | String default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackdefaultstringlist.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackdefaultstringlist.md new file mode 100644 index 000000000..5d4b7b0a9 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackdefaultstringlist.md @@ -0,0 +1,24 @@ +# PersistImportedDeploymentRequestPendingPreparedStackDefaultStringList + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackDefaultStringList } from "@alienplatform/platform-api/models"; + +let value: + PersistImportedDeploymentRequestPendingPreparedStackDefaultStringList = { + type: "stringList", + value: [ + "", + "", + "", + ], + }; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `type` | [models.PersistImportedDeploymentRequestPendingPreparedStackTypeStringList](../models/persistimporteddeploymentrequestpendingpreparedstacktypestringlist.md) | :heavy_check_mark: | N/A | +| `value` | *string*[] | :heavy_check_mark: | String list default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackdefaultunion.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackdefaultunion.md new file mode 100644 index 000000000..fa9b283e0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackdefaultunion.md @@ -0,0 +1,56 @@ +# PersistImportedDeploymentRequestPendingPreparedStackDefaultUnion + + +## Supported Types + +### `models.PersistImportedDeploymentRequestPendingPreparedStackDefaultString` + +```typescript +const value: + models.PersistImportedDeploymentRequestPendingPreparedStackDefaultString = { + type: "string", + value: "", + }; +``` + +### `models.PersistImportedDeploymentRequestPendingPreparedStackDefaultNumber` + +```typescript +const value: + models.PersistImportedDeploymentRequestPendingPreparedStackDefaultNumber = { + type: "number", + value: "", + }; +``` + +### `models.PersistImportedDeploymentRequestPendingPreparedStackDefaultBoolean` + +```typescript +const value: + models.PersistImportedDeploymentRequestPendingPreparedStackDefaultBoolean = { + type: "boolean", + value: false, + }; +``` + +### `models.PersistImportedDeploymentRequestPendingPreparedStackDefaultStringList` + +```typescript +const value: + models.PersistImportedDeploymentRequestPendingPreparedStackDefaultStringList = + { + type: "stringList", + value: [ + "", + "", + "", + ], + }; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackdependency.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackdependency.md new file mode 100644 index 000000000..44b344092 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackdependency.md @@ -0,0 +1,21 @@ +# PersistImportedDeploymentRequestPendingPreparedStackDependency + +Reference to a resource by its stable id and resource type. + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackDependency } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStackDependency = { + id: "", + type: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | N/A | +| `type` | *string* | :heavy_check_mark: | Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackenv.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackenv.md new file mode 100644 index 000000000..22a481dad --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackenv.md @@ -0,0 +1,21 @@ +# PersistImportedDeploymentRequestPendingPreparedStackEnv + +How a resolved stack input is injected into runtime environment variables. + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackEnv } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStackEnv = { + name: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `name` | *string* | :heavy_check_mark: | Environment variable name. | +| `targetResources` | *string*[] | :heavy_minus_sign: | Target resource IDs or patterns. None means every env-capable resource. | +| `type` | *models.PersistImportedDeploymentRequestPendingPreparedStackTypeUnion* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextend.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextend.md new file mode 100644 index 000000000..ad60f7348 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextend.md @@ -0,0 +1,23 @@ +# PersistImportedDeploymentRequestPendingPreparedStackExtend + +A permission set that can be applied across different cloud platforms + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackExtend } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStackExtend = { + description: "since apud the pepper compassionate certainly hmph", + id: "", + platforms: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `description` | *string* | :heavy_check_mark: | Human-readable description of what this permission set allows | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the permission set (e.g., "storage/data-read") | +| `platforms` | [models.PersistImportedDeploymentRequestPendingPreparedStackExtendPlatforms](../models/persistimporteddeploymentrequestpendingpreparedstackextendplatforms.md) | :heavy_check_mark: | Platform-specific permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendaw.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendaw.md new file mode 100644 index 000000000..2a2e1ee32 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendaw.md @@ -0,0 +1,24 @@ +# PersistImportedDeploymentRequestPendingPreparedStackExtendAw + +AWS-specific platform permission configuration + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackExtendAw } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStackExtendAw = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.PersistImportedDeploymentRequestPendingPreparedStackExtendAwBinding](../models/persistimporteddeploymentrequestpendingpreparedstackextendawbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `effect` | [models.PersistImportedDeploymentRequestPendingPreparedStackExtendEffect](../models/persistimporteddeploymentrequestpendingpreparedstackextendeffect.md) | :heavy_minus_sign: | IAM effect. Defaults to Allow. | +| `grant` | [models.PersistImportedDeploymentRequestPendingPreparedStackExtendAwGrant](../models/persistimporteddeploymentrequestpendingpreparedstackextendawgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendawbinding.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendawbinding.md new file mode 100644 index 000000000..c5c7546cf --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendawbinding.md @@ -0,0 +1,19 @@ +# PersistImportedDeploymentRequestPendingPreparedStackExtendAwBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackExtendAwBinding } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStackExtendAwBinding = + {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.PersistImportedDeploymentRequestPendingPreparedStackExtendAwResource](../models/persistimporteddeploymentrequestpendingpreparedstackextendawresource.md) | :heavy_minus_sign: | AWS-specific binding specification | +| `stack` | [models.PersistImportedDeploymentRequestPendingPreparedStackExtendAwStack](../models/persistimporteddeploymentrequestpendingpreparedstackextendawstack.md) | :heavy_minus_sign: | AWS-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendawgrant.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendawgrant.md new file mode 100644 index 000000000..586d11267 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendawgrant.md @@ -0,0 +1,22 @@ +# PersistImportedDeploymentRequestPendingPreparedStackExtendAwGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackExtendAwGrant } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStackExtendAwGrant = + {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendawresource.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendawresource.md new file mode 100644 index 000000000..caacf7946 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendawresource.md @@ -0,0 +1,23 @@ +# PersistImportedDeploymentRequestPendingPreparedStackExtendAwResource + +AWS-specific binding specification + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackExtendAwResource } from "@alienplatform/platform-api/models"; + +let value: + PersistImportedDeploymentRequestPendingPreparedStackExtendAwResource = { + resources: [ + "", + ], + }; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendawstack.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendawstack.md new file mode 100644 index 000000000..609ef9cc5 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendawstack.md @@ -0,0 +1,24 @@ +# PersistImportedDeploymentRequestPendingPreparedStackExtendAwStack + +AWS-specific binding specification + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackExtendAwStack } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStackExtendAwStack = { + resources: [ + "", + "", + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendazure.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendazure.md new file mode 100644 index 000000000..cc6e794ed --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendazure.md @@ -0,0 +1,23 @@ +# PersistImportedDeploymentRequestPendingPreparedStackExtendAzure + +Azure-specific platform permission configuration + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackExtendAzure } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStackExtendAzure = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.PersistImportedDeploymentRequestPendingPreparedStackExtendAzureBinding](../models/persistimporteddeploymentrequestpendingpreparedstackextendazurebinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.PersistImportedDeploymentRequestPendingPreparedStackExtendAzureGrant](../models/persistimporteddeploymentrequestpendingpreparedstackextendazuregrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendazurebinding.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendazurebinding.md new file mode 100644 index 000000000..0dd3c90ef --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendazurebinding.md @@ -0,0 +1,19 @@ +# PersistImportedDeploymentRequestPendingPreparedStackExtendAzureBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackExtendAzureBinding } from "@alienplatform/platform-api/models"; + +let value: + PersistImportedDeploymentRequestPendingPreparedStackExtendAzureBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.PersistImportedDeploymentRequestPendingPreparedStackExtendAzureResource](../models/persistimporteddeploymentrequestpendingpreparedstackextendazureresource.md) | :heavy_minus_sign: | Azure-specific binding specification | +| `stack` | [models.PersistImportedDeploymentRequestPendingPreparedStackExtendAzureStack](../models/persistimporteddeploymentrequestpendingpreparedstackextendazurestack.md) | :heavy_minus_sign: | Azure-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendazuregrant.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendazuregrant.md new file mode 100644 index 000000000..3de59e1f7 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendazuregrant.md @@ -0,0 +1,22 @@ +# PersistImportedDeploymentRequestPendingPreparedStackExtendAzureGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackExtendAzureGrant } from "@alienplatform/platform-api/models"; + +let value: + PersistImportedDeploymentRequestPendingPreparedStackExtendAzureGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendazureresource.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendazureresource.md new file mode 100644 index 000000000..b276f82d6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendazureresource.md @@ -0,0 +1,20 @@ +# PersistImportedDeploymentRequestPendingPreparedStackExtendAzureResource + +Azure-specific binding specification + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackExtendAzureResource } from "@alienplatform/platform-api/models"; + +let value: + PersistImportedDeploymentRequestPendingPreparedStackExtendAzureResource = { + scope: "", + }; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendazurestack.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendazurestack.md new file mode 100644 index 000000000..b7c96fd77 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendazurestack.md @@ -0,0 +1,20 @@ +# PersistImportedDeploymentRequestPendingPreparedStackExtendAzureStack + +Azure-specific binding specification + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackExtendAzureStack } from "@alienplatform/platform-api/models"; + +let value: + PersistImportedDeploymentRequestPendingPreparedStackExtendAzureStack = { + scope: "", + }; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendconditionresource.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendconditionresource.md new file mode 100644 index 000000000..944a4f349 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendconditionresource.md @@ -0,0 +1,23 @@ +# PersistImportedDeploymentRequestPendingPreparedStackExtendConditionResource + +GCP IAM condition + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackExtendConditionResource } from "@alienplatform/platform-api/models"; + +let value: + PersistImportedDeploymentRequestPendingPreparedStackExtendConditionResource = + { + expression: "", + title: "", + }; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendconditionstack.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendconditionstack.md new file mode 100644 index 000000000..1ceced10b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendconditionstack.md @@ -0,0 +1,22 @@ +# PersistImportedDeploymentRequestPendingPreparedStackExtendConditionStack + +GCP IAM condition + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackExtendConditionStack } from "@alienplatform/platform-api/models"; + +let value: + PersistImportedDeploymentRequestPendingPreparedStackExtendConditionStack = { + expression: "", + title: "", + }; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendeffect.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendeffect.md new file mode 100644 index 000000000..baca2ced6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendeffect.md @@ -0,0 +1,18 @@ +# PersistImportedDeploymentRequestPendingPreparedStackExtendEffect + +IAM effect. Defaults to Allow. + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackExtendEffect } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStackExtendEffect = + "Allow"; +``` + +## Values + +```typescript +"Allow" | "Deny" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendgcp.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendgcp.md new file mode 100644 index 000000000..7bb199533 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendgcp.md @@ -0,0 +1,23 @@ +# PersistImportedDeploymentRequestPendingPreparedStackExtendGcp + +GCP-specific platform permission configuration + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackExtendGcp } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStackExtendGcp = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.PersistImportedDeploymentRequestPendingPreparedStackExtendGcpBinding](../models/persistimporteddeploymentrequestpendingpreparedstackextendgcpbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.PersistImportedDeploymentRequestPendingPreparedStackExtendGcpGrant](../models/persistimporteddeploymentrequestpendingpreparedstackextendgcpgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendgcpbinding.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendgcpbinding.md new file mode 100644 index 000000000..ae958b564 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendgcpbinding.md @@ -0,0 +1,19 @@ +# PersistImportedDeploymentRequestPendingPreparedStackExtendGcpBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackExtendGcpBinding } from "@alienplatform/platform-api/models"; + +let value: + PersistImportedDeploymentRequestPendingPreparedStackExtendGcpBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `resource` | [models.PersistImportedDeploymentRequestPendingPreparedStackExtendGcpResource](../models/persistimporteddeploymentrequestpendingpreparedstackextendgcpresource.md) | :heavy_minus_sign: | GCP-specific binding specification | +| `stack` | [models.PersistImportedDeploymentRequestPendingPreparedStackExtendGcpStack](../models/persistimporteddeploymentrequestpendingpreparedstackextendgcpstack.md) | :heavy_minus_sign: | GCP-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendgcpgrant.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendgcpgrant.md new file mode 100644 index 000000000..aa7f8ee50 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendgcpgrant.md @@ -0,0 +1,22 @@ +# PersistImportedDeploymentRequestPendingPreparedStackExtendGcpGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackExtendGcpGrant } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStackExtendGcpGrant = + {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendgcpresource.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendgcpresource.md new file mode 100644 index 000000000..2108ad85d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendgcpresource.md @@ -0,0 +1,21 @@ +# PersistImportedDeploymentRequestPendingPreparedStackExtendGcpResource + +GCP-specific binding specification + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackExtendGcpResource } from "@alienplatform/platform-api/models"; + +let value: + PersistImportedDeploymentRequestPendingPreparedStackExtendGcpResource = { + scope: "", + }; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | +| `condition` | *models.PersistImportedDeploymentRequestPendingPreparedStackExtendResourceConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendgcpstack.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendgcpstack.md new file mode 100644 index 000000000..4165a2fa6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendgcpstack.md @@ -0,0 +1,21 @@ +# PersistImportedDeploymentRequestPendingPreparedStackExtendGcpStack + +GCP-specific binding specification + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackExtendGcpStack } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStackExtendGcpStack = + { + scope: "", + }; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `condition` | *models.PersistImportedDeploymentRequestPendingPreparedStackExtendStackConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendplatforms.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendplatforms.md new file mode 100644 index 000000000..c42be50f6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendplatforms.md @@ -0,0 +1,20 @@ +# PersistImportedDeploymentRequestPendingPreparedStackExtendPlatforms + +Platform-specific permission configurations + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackExtendPlatforms } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStackExtendPlatforms = + {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `aws` | [models.PersistImportedDeploymentRequestPendingPreparedStackExtendAw](../models/persistimporteddeploymentrequestpendingpreparedstackextendaw.md)[] | :heavy_minus_sign: | AWS permission configurations | +| `azure` | [models.PersistImportedDeploymentRequestPendingPreparedStackExtendAzure](../models/persistimporteddeploymentrequestpendingpreparedstackextendazure.md)[] | :heavy_minus_sign: | Azure permission configurations | +| `gcp` | [models.PersistImportedDeploymentRequestPendingPreparedStackExtendGcp](../models/persistimporteddeploymentrequestpendingpreparedstackextendgcp.md)[] | :heavy_minus_sign: | GCP permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendresourceconditionunion.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendresourceconditionunion.md new file mode 100644 index 000000000..592623dd3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendresourceconditionunion.md @@ -0,0 +1,22 @@ +# PersistImportedDeploymentRequestPendingPreparedStackExtendResourceConditionUnion + + +## Supported Types + +### `models.PersistImportedDeploymentRequestPendingPreparedStackExtendConditionResource` + +```typescript +const value: + models.PersistImportedDeploymentRequestPendingPreparedStackExtendConditionResource = + { + expression: "", + title: "", + }; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendstackconditionunion.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendstackconditionunion.md new file mode 100644 index 000000000..498448ee2 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendstackconditionunion.md @@ -0,0 +1,22 @@ +# PersistImportedDeploymentRequestPendingPreparedStackExtendStackConditionUnion + + +## Supported Types + +### `models.PersistImportedDeploymentRequestPendingPreparedStackExtendConditionStack` + +```typescript +const value: + models.PersistImportedDeploymentRequestPendingPreparedStackExtendConditionStack = + { + expression: "", + title: "", + }; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendunion.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendunion.md new file mode 100644 index 000000000..75c2dc1ab --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackextendunion.md @@ -0,0 +1,24 @@ +# PersistImportedDeploymentRequestPendingPreparedStackExtendUnion + +Reference to a permission set - either by name or inline definition + + +## Supported Types + +### `models.PersistImportedDeploymentRequestPendingPreparedStackExtend` + +```typescript +const value: models.PersistImportedDeploymentRequestPendingPreparedStackExtend = + { + description: "since apud the pepper compassionate certainly hmph", + id: "", + platforms: {}, + }; +``` + +### `string` + +```typescript +const value: string = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackinput.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackinput.md new file mode 100644 index 000000000..2d3fcd2dc --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackinput.md @@ -0,0 +1,34 @@ +# PersistImportedDeploymentRequestPendingPreparedStackInput + +Stack input definition serialized into a release stack. + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackInput } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStackInput = { + description: "boohoo amongst refine what searchingly", + id: "", + kind: "string", + label: "", + providedBy: [], + required: false, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `default` | *models.PersistImportedDeploymentRequestPendingPreparedStackDefaultUnion* | :heavy_minus_sign: | N/A | +| `description` | *string* | :heavy_check_mark: | Human-facing helper text. | +| `env` | [models.PersistImportedDeploymentRequestPendingPreparedStackEnv](../models/persistimporteddeploymentrequestpendingpreparedstackenv.md)[] | :heavy_minus_sign: | Runtime env-var mappings for v1 input resolution. | +| `id` | *string* | :heavy_check_mark: | Stable input ID used by CLI/API calls. | +| `kind` | [models.PersistImportedDeploymentRequestPendingPreparedStackKind](../models/persistimporteddeploymentrequestpendingpreparedstackkind.md) | :heavy_check_mark: | Primitive stack input kind. | +| `label` | *string* | :heavy_check_mark: | Human-facing field label. | +| `placeholder` | *string* | :heavy_minus_sign: | Example placeholder shown in UI. | +| `platforms` | [models.PersistImportedDeploymentRequestPendingPreparedStackPlatform](../models/persistimporteddeploymentrequestpendingpreparedstackplatform.md)[] | :heavy_minus_sign: | Platforms where this input applies. | +| `providedBy` | [models.PersistImportedDeploymentRequestPendingPreparedStackProvidedBy](../models/persistimporteddeploymentrequestpendingpreparedstackprovidedby.md)[] | :heavy_check_mark: | Who can provide this value. | +| `required` | *boolean* | :heavy_check_mark: | Whether a resolved value is required before deployment can proceed. | +| `validation` | *models.PersistImportedDeploymentRequestPendingPreparedStackValidationUnion* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackkind.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackkind.md new file mode 100644 index 000000000..d3408c909 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackkind.md @@ -0,0 +1,17 @@ +# PersistImportedDeploymentRequestPendingPreparedStackKind + +Primitive stack input kind. + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackKind } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStackKind = "number"; +``` + +## Values + +```typescript +"string" | "secret" | "number" | "integer" | "boolean" | "enum" | "stringList" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstacklifecycle.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstacklifecycle.md new file mode 100644 index 000000000..7d237a0fd --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstacklifecycle.md @@ -0,0 +1,18 @@ +# PersistImportedDeploymentRequestPendingPreparedStackLifecycle + +Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackLifecycle } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStackLifecycle = + "live"; +``` + +## Values + +```typescript +"frozen" | "live" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackmanagement1.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackmanagement1.md new file mode 100644 index 000000000..334d4ef1a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackmanagement1.md @@ -0,0 +1,26 @@ +# PersistImportedDeploymentRequestPendingPreparedStackManagement1 + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackManagement1 } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStackManagement1 = { + extend: { + "key": [ + { + description: + "inwardly phew prioritize ha forswear godfather merry calmly whereas", + id: "", + platforms: {}, + }, + ], + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | +| `extend` | Record | :heavy_check_mark: | Permission profile that maps resources to permission sets
Key can be "*" for all resources or resource name for specific resource | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackmanagement2.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackmanagement2.md new file mode 100644 index 000000000..a0d0bdb7f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackmanagement2.md @@ -0,0 +1,23 @@ +# PersistImportedDeploymentRequestPendingPreparedStackManagement2 + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackManagement2 } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStackManagement2 = { + override: { + "key": [], + "key1": [ + "", + ], + "key2": [], + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | +| `override` | Record | :heavy_check_mark: | Permission profile that maps resources to permission sets
Key can be "*" for all resources or resource name for specific resource | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackmanagementenum.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackmanagementenum.md new file mode 100644 index 000000000..c8e184b23 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackmanagementenum.md @@ -0,0 +1,16 @@ +# PersistImportedDeploymentRequestPendingPreparedStackManagementEnum + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackManagementEnum } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStackManagementEnum = + "auto"; +``` + +## Values + +```typescript +"auto" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackmanagementunion.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackmanagementunion.md new file mode 100644 index 000000000..89c876e0c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackmanagementunion.md @@ -0,0 +1,48 @@ +# PersistImportedDeploymentRequestPendingPreparedStackManagementUnion + +Management permissions configuration for stack management access + + +## Supported Types + +### `models.PersistImportedDeploymentRequestPendingPreparedStackManagement1` + +```typescript +const value: + models.PersistImportedDeploymentRequestPendingPreparedStackManagement1 = { + extend: { + "key": [ + { + description: + "inwardly phew prioritize ha forswear godfather merry calmly whereas", + id: "", + platforms: {}, + }, + ], + }, + }; +``` + +### `models.PersistImportedDeploymentRequestPendingPreparedStackManagement2` + +```typescript +const value: + models.PersistImportedDeploymentRequestPendingPreparedStackManagement2 = { + override: { + "key": [], + "key1": [ + "", + ], + "key2": [], + }, + }; +``` + +### `models.PersistImportedDeploymentRequestPendingPreparedStackManagementEnum` + +```typescript +const value: + models.PersistImportedDeploymentRequestPendingPreparedStackManagementEnum = + "auto"; +``` + diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverride.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverride.md new file mode 100644 index 000000000..1ef760e06 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverride.md @@ -0,0 +1,23 @@ +# PersistImportedDeploymentRequestPendingPreparedStackOverride + +A permission set that can be applied across different cloud platforms + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackOverride } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStackOverride = { + description: "pointed spring icy", + id: "", + platforms: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `description` | *string* | :heavy_check_mark: | Human-readable description of what this permission set allows | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the permission set (e.g., "storage/data-read") | +| `platforms` | [models.PersistImportedDeploymentRequestPendingPreparedStackOverridePlatforms](../models/persistimporteddeploymentrequestpendingpreparedstackoverrideplatforms.md) | :heavy_check_mark: | Platform-specific permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideaw.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideaw.md new file mode 100644 index 000000000..37385f0ca --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideaw.md @@ -0,0 +1,24 @@ +# PersistImportedDeploymentRequestPendingPreparedStackOverrideAw + +AWS-specific platform permission configuration + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackOverrideAw } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStackOverrideAw = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `binding` | [models.PersistImportedDeploymentRequestPendingPreparedStackOverrideAwBinding](../models/persistimporteddeploymentrequestpendingpreparedstackoverrideawbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `effect` | [models.PersistImportedDeploymentRequestPendingPreparedStackOverrideEffect](../models/persistimporteddeploymentrequestpendingpreparedstackoverrideeffect.md) | :heavy_minus_sign: | IAM effect. Defaults to Allow. | +| `grant` | [models.PersistImportedDeploymentRequestPendingPreparedStackOverrideAwGrant](../models/persistimporteddeploymentrequestpendingpreparedstackoverrideawgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideawbinding.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideawbinding.md new file mode 100644 index 000000000..cdbebac1c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideawbinding.md @@ -0,0 +1,19 @@ +# PersistImportedDeploymentRequestPendingPreparedStackOverrideAwBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackOverrideAwBinding } from "@alienplatform/platform-api/models"; + +let value: + PersistImportedDeploymentRequestPendingPreparedStackOverrideAwBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.PersistImportedDeploymentRequestPendingPreparedStackOverrideAwResource](../models/persistimporteddeploymentrequestpendingpreparedstackoverrideawresource.md) | :heavy_minus_sign: | AWS-specific binding specification | +| `stack` | [models.PersistImportedDeploymentRequestPendingPreparedStackOverrideAwStack](../models/persistimporteddeploymentrequestpendingpreparedstackoverrideawstack.md) | :heavy_minus_sign: | AWS-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideawgrant.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideawgrant.md new file mode 100644 index 000000000..98f15af14 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideawgrant.md @@ -0,0 +1,22 @@ +# PersistImportedDeploymentRequestPendingPreparedStackOverrideAwGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackOverrideAwGrant } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStackOverrideAwGrant = + {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideawresource.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideawresource.md new file mode 100644 index 000000000..f0c6583ac --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideawresource.md @@ -0,0 +1,21 @@ +# PersistImportedDeploymentRequestPendingPreparedStackOverrideAwResource + +AWS-specific binding specification + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackOverrideAwResource } from "@alienplatform/platform-api/models"; + +let value: + PersistImportedDeploymentRequestPendingPreparedStackOverrideAwResource = { + resources: [], + }; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideawstack.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideawstack.md new file mode 100644 index 000000000..e0bf2eaf9 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideawstack.md @@ -0,0 +1,25 @@ +# PersistImportedDeploymentRequestPendingPreparedStackOverrideAwStack + +AWS-specific binding specification + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackOverrideAwStack } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStackOverrideAwStack = + { + resources: [ + "", + "", + "", + ], + }; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideazure.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideazure.md new file mode 100644 index 000000000..0778f91d0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideazure.md @@ -0,0 +1,23 @@ +# PersistImportedDeploymentRequestPendingPreparedStackOverrideAzure + +Azure-specific platform permission configuration + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackOverrideAzure } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStackOverrideAzure = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `binding` | [models.PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureBinding](../models/persistimporteddeploymentrequestpendingpreparedstackoverrideazurebinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureGrant](../models/persistimporteddeploymentrequestpendingpreparedstackoverrideazuregrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideazurebinding.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideazurebinding.md new file mode 100644 index 000000000..13dbe361e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideazurebinding.md @@ -0,0 +1,19 @@ +# PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureBinding } from "@alienplatform/platform-api/models"; + +let value: + PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureResource](../models/persistimporteddeploymentrequestpendingpreparedstackoverrideazureresource.md) | :heavy_minus_sign: | Azure-specific binding specification | +| `stack` | [models.PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureStack](../models/persistimporteddeploymentrequestpendingpreparedstackoverrideazurestack.md) | :heavy_minus_sign: | Azure-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideazuregrant.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideazuregrant.md new file mode 100644 index 000000000..feb45ca0d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideazuregrant.md @@ -0,0 +1,22 @@ +# PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureGrant } from "@alienplatform/platform-api/models"; + +let value: + PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideazureresource.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideazureresource.md new file mode 100644 index 000000000..acb0ef570 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideazureresource.md @@ -0,0 +1,20 @@ +# PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureResource + +Azure-specific binding specification + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureResource } from "@alienplatform/platform-api/models"; + +let value: + PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureResource = { + scope: "", + }; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideazurestack.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideazurestack.md new file mode 100644 index 000000000..8f458f733 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideazurestack.md @@ -0,0 +1,20 @@ +# PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureStack + +Azure-specific binding specification + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureStack } from "@alienplatform/platform-api/models"; + +let value: + PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureStack = { + scope: "", + }; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideconditionresource.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideconditionresource.md new file mode 100644 index 000000000..53660ffe4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideconditionresource.md @@ -0,0 +1,23 @@ +# PersistImportedDeploymentRequestPendingPreparedStackOverrideConditionResource + +GCP IAM condition + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackOverrideConditionResource } from "@alienplatform/platform-api/models"; + +let value: + PersistImportedDeploymentRequestPendingPreparedStackOverrideConditionResource = + { + expression: "", + title: "", + }; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideconditionstack.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideconditionstack.md new file mode 100644 index 000000000..27c16109c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideconditionstack.md @@ -0,0 +1,22 @@ +# PersistImportedDeploymentRequestPendingPreparedStackOverrideConditionStack + +GCP IAM condition + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackOverrideConditionStack } from "@alienplatform/platform-api/models"; + +let value: + PersistImportedDeploymentRequestPendingPreparedStackOverrideConditionStack = { + expression: "", + title: "", + }; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideeffect.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideeffect.md new file mode 100644 index 000000000..305f2c99f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideeffect.md @@ -0,0 +1,18 @@ +# PersistImportedDeploymentRequestPendingPreparedStackOverrideEffect + +IAM effect. Defaults to Allow. + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackOverrideEffect } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStackOverrideEffect = + "Deny"; +``` + +## Values + +```typescript +"Allow" | "Deny" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverridegcp.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverridegcp.md new file mode 100644 index 000000000..21a2c899c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverridegcp.md @@ -0,0 +1,23 @@ +# PersistImportedDeploymentRequestPendingPreparedStackOverrideGcp + +GCP-specific platform permission configuration + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackOverrideGcp } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStackOverrideGcp = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpBinding](../models/persistimporteddeploymentrequestpendingpreparedstackoverridegcpbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpGrant](../models/persistimporteddeploymentrequestpendingpreparedstackoverridegcpgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverridegcpbinding.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverridegcpbinding.md new file mode 100644 index 000000000..feea64311 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverridegcpbinding.md @@ -0,0 +1,19 @@ +# PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpBinding } from "@alienplatform/platform-api/models"; + +let value: + PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpResource](../models/persistimporteddeploymentrequestpendingpreparedstackoverridegcpresource.md) | :heavy_minus_sign: | GCP-specific binding specification | +| `stack` | [models.PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpStack](../models/persistimporteddeploymentrequestpendingpreparedstackoverridegcpstack.md) | :heavy_minus_sign: | GCP-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverridegcpgrant.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverridegcpgrant.md new file mode 100644 index 000000000..810a7806a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverridegcpgrant.md @@ -0,0 +1,22 @@ +# PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpGrant } from "@alienplatform/platform-api/models"; + +let value: + PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverridegcpresource.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverridegcpresource.md new file mode 100644 index 000000000..7fe11e5ef --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverridegcpresource.md @@ -0,0 +1,21 @@ +# PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpResource + +GCP-specific binding specification + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpResource } from "@alienplatform/platform-api/models"; + +let value: + PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpResource = { + scope: "", + }; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | +| `condition` | *models.PersistImportedDeploymentRequestPendingPreparedStackOverrideResourceConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverridegcpstack.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverridegcpstack.md new file mode 100644 index 000000000..e9ea21d6e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverridegcpstack.md @@ -0,0 +1,21 @@ +# PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpStack + +GCP-specific binding specification + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpStack } from "@alienplatform/platform-api/models"; + +let value: + PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpStack = { + scope: "", + }; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `condition` | *models.PersistImportedDeploymentRequestPendingPreparedStackOverrideStackConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideplatforms.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideplatforms.md new file mode 100644 index 000000000..6c52fa9eb --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideplatforms.md @@ -0,0 +1,20 @@ +# PersistImportedDeploymentRequestPendingPreparedStackOverridePlatforms + +Platform-specific permission configurations + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackOverridePlatforms } from "@alienplatform/platform-api/models"; + +let value: + PersistImportedDeploymentRequestPendingPreparedStackOverridePlatforms = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `aws` | [models.PersistImportedDeploymentRequestPendingPreparedStackOverrideAw](../models/persistimporteddeploymentrequestpendingpreparedstackoverrideaw.md)[] | :heavy_minus_sign: | AWS permission configurations | +| `azure` | [models.PersistImportedDeploymentRequestPendingPreparedStackOverrideAzure](../models/persistimporteddeploymentrequestpendingpreparedstackoverrideazure.md)[] | :heavy_minus_sign: | Azure permission configurations | +| `gcp` | [models.PersistImportedDeploymentRequestPendingPreparedStackOverrideGcp](../models/persistimporteddeploymentrequestpendingpreparedstackoverridegcp.md)[] | :heavy_minus_sign: | GCP permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideresourceconditionunion.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideresourceconditionunion.md new file mode 100644 index 000000000..af49562f6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideresourceconditionunion.md @@ -0,0 +1,22 @@ +# PersistImportedDeploymentRequestPendingPreparedStackOverrideResourceConditionUnion + + +## Supported Types + +### `models.PersistImportedDeploymentRequestPendingPreparedStackOverrideConditionResource` + +```typescript +const value: + models.PersistImportedDeploymentRequestPendingPreparedStackOverrideConditionResource = + { + expression: "", + title: "", + }; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverridestackconditionunion.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverridestackconditionunion.md new file mode 100644 index 000000000..1f908326a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverridestackconditionunion.md @@ -0,0 +1,22 @@ +# PersistImportedDeploymentRequestPendingPreparedStackOverrideStackConditionUnion + + +## Supported Types + +### `models.PersistImportedDeploymentRequestPendingPreparedStackOverrideConditionStack` + +```typescript +const value: + models.PersistImportedDeploymentRequestPendingPreparedStackOverrideConditionStack = + { + expression: "", + title: "", + }; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideunion.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideunion.md new file mode 100644 index 000000000..0af78c620 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackoverrideunion.md @@ -0,0 +1,24 @@ +# PersistImportedDeploymentRequestPendingPreparedStackOverrideUnion + +Reference to a permission set - either by name or inline definition + + +## Supported Types + +### `models.PersistImportedDeploymentRequestPendingPreparedStackOverride` + +```typescript +const value: + models.PersistImportedDeploymentRequestPendingPreparedStackOverride = { + description: "pointed spring icy", + id: "", + platforms: {}, + }; +``` + +### `string` + +```typescript +const value: string = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackpermissions.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackpermissions.md new file mode 100644 index 000000000..3a383141d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackpermissions.md @@ -0,0 +1,31 @@ +# PersistImportedDeploymentRequestPendingPreparedStackPermissions + +Combined permissions configuration that contains both profiles and management + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackPermissions } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStackPermissions = { + profiles: { + "key": { + "key": [], + }, + "key1": { + "key": [], + "key1": [ + "", + ], + }, + "key2": {}, + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| `management` | *models.PersistImportedDeploymentRequestPendingPreparedStackManagementUnion* | :heavy_minus_sign: | Management permissions configuration for stack management access | +| `profiles` | Record> | :heavy_check_mark: | Permission profiles that define access control for compute services
Key is the profile name, value is the permission configuration | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackplatform.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackplatform.md new file mode 100644 index 000000000..45aa904e3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackplatform.md @@ -0,0 +1,18 @@ +# PersistImportedDeploymentRequestPendingPreparedStackPlatform + +Represents the target cloud platform. + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackPlatform } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStackPlatform = + "azure"; +``` + +## Values + +```typescript +"aws" | "gcp" | "azure" | "kubernetes" | "machines" | "local" | "test" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofile.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofile.md new file mode 100644 index 000000000..ba814890b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofile.md @@ -0,0 +1,23 @@ +# PersistImportedDeploymentRequestPendingPreparedStackProfile + +A permission set that can be applied across different cloud platforms + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackProfile } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStackProfile = { + description: "sniveling reborn bemuse bar dutiful aw", + id: "", + platforms: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `description` | *string* | :heavy_check_mark: | Human-readable description of what this permission set allows | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the permission set (e.g., "storage/data-read") | +| `platforms` | [models.PersistImportedDeploymentRequestPendingPreparedStackProfilePlatforms](../models/persistimporteddeploymentrequestpendingpreparedstackprofileplatforms.md) | :heavy_check_mark: | Platform-specific permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileaw.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileaw.md new file mode 100644 index 000000000..558b226d4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileaw.md @@ -0,0 +1,24 @@ +# PersistImportedDeploymentRequestPendingPreparedStackProfileAw + +AWS-specific platform permission configuration + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackProfileAw } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStackProfileAw = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.PersistImportedDeploymentRequestPendingPreparedStackProfileAwBinding](../models/persistimporteddeploymentrequestpendingpreparedstackprofileawbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `effect` | [models.PersistImportedDeploymentRequestPendingPreparedStackProfileEffect](../models/persistimporteddeploymentrequestpendingpreparedstackprofileeffect.md) | :heavy_minus_sign: | IAM effect. Defaults to Allow. | +| `grant` | [models.PersistImportedDeploymentRequestPendingPreparedStackProfileAwGrant](../models/persistimporteddeploymentrequestpendingpreparedstackprofileawgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileawbinding.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileawbinding.md new file mode 100644 index 000000000..133446739 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileawbinding.md @@ -0,0 +1,19 @@ +# PersistImportedDeploymentRequestPendingPreparedStackProfileAwBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackProfileAwBinding } from "@alienplatform/platform-api/models"; + +let value: + PersistImportedDeploymentRequestPendingPreparedStackProfileAwBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `resource` | [models.PersistImportedDeploymentRequestPendingPreparedStackProfileAwResource](../models/persistimporteddeploymentrequestpendingpreparedstackprofileawresource.md) | :heavy_minus_sign: | AWS-specific binding specification | +| `stack` | [models.PersistImportedDeploymentRequestPendingPreparedStackProfileAwStack](../models/persistimporteddeploymentrequestpendingpreparedstackprofileawstack.md) | :heavy_minus_sign: | AWS-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileawgrant.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileawgrant.md new file mode 100644 index 000000000..5673802b7 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileawgrant.md @@ -0,0 +1,22 @@ +# PersistImportedDeploymentRequestPendingPreparedStackProfileAwGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackProfileAwGrant } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStackProfileAwGrant = + {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileawresource.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileawresource.md new file mode 100644 index 000000000..8a4bdf7ba --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileawresource.md @@ -0,0 +1,24 @@ +# PersistImportedDeploymentRequestPendingPreparedStackProfileAwResource + +AWS-specific binding specification + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackProfileAwResource } from "@alienplatform/platform-api/models"; + +let value: + PersistImportedDeploymentRequestPendingPreparedStackProfileAwResource = { + resources: [ + "", + "", + ], + }; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileawstack.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileawstack.md new file mode 100644 index 000000000..58fcf85b9 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileawstack.md @@ -0,0 +1,24 @@ +# PersistImportedDeploymentRequestPendingPreparedStackProfileAwStack + +AWS-specific binding specification + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackProfileAwStack } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStackProfileAwStack = + { + resources: [ + "", + "", + ], + }; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileazure.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileazure.md new file mode 100644 index 000000000..a72a307b5 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileazure.md @@ -0,0 +1,23 @@ +# PersistImportedDeploymentRequestPendingPreparedStackProfileAzure + +Azure-specific platform permission configuration + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackProfileAzure } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStackProfileAzure = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.PersistImportedDeploymentRequestPendingPreparedStackProfileAzureBinding](../models/persistimporteddeploymentrequestpendingpreparedstackprofileazurebinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.PersistImportedDeploymentRequestPendingPreparedStackProfileAzureGrant](../models/persistimporteddeploymentrequestpendingpreparedstackprofileazuregrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileazurebinding.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileazurebinding.md new file mode 100644 index 000000000..dd62be85d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileazurebinding.md @@ -0,0 +1,19 @@ +# PersistImportedDeploymentRequestPendingPreparedStackProfileAzureBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackProfileAzureBinding } from "@alienplatform/platform-api/models"; + +let value: + PersistImportedDeploymentRequestPendingPreparedStackProfileAzureBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `resource` | [models.PersistImportedDeploymentRequestPendingPreparedStackProfileAzureResource](../models/persistimporteddeploymentrequestpendingpreparedstackprofileazureresource.md) | :heavy_minus_sign: | Azure-specific binding specification | +| `stack` | [models.PersistImportedDeploymentRequestPendingPreparedStackProfileAzureStack](../models/persistimporteddeploymentrequestpendingpreparedstackprofileazurestack.md) | :heavy_minus_sign: | Azure-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileazuregrant.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileazuregrant.md new file mode 100644 index 000000000..df85bbb93 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileazuregrant.md @@ -0,0 +1,22 @@ +# PersistImportedDeploymentRequestPendingPreparedStackProfileAzureGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackProfileAzureGrant } from "@alienplatform/platform-api/models"; + +let value: + PersistImportedDeploymentRequestPendingPreparedStackProfileAzureGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileazureresource.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileazureresource.md new file mode 100644 index 000000000..104e61973 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileazureresource.md @@ -0,0 +1,20 @@ +# PersistImportedDeploymentRequestPendingPreparedStackProfileAzureResource + +Azure-specific binding specification + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackProfileAzureResource } from "@alienplatform/platform-api/models"; + +let value: + PersistImportedDeploymentRequestPendingPreparedStackProfileAzureResource = { + scope: "", + }; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileazurestack.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileazurestack.md new file mode 100644 index 000000000..451d60044 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileazurestack.md @@ -0,0 +1,20 @@ +# PersistImportedDeploymentRequestPendingPreparedStackProfileAzureStack + +Azure-specific binding specification + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackProfileAzureStack } from "@alienplatform/platform-api/models"; + +let value: + PersistImportedDeploymentRequestPendingPreparedStackProfileAzureStack = { + scope: "", + }; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileconditionresource.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileconditionresource.md new file mode 100644 index 000000000..a39f5364b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileconditionresource.md @@ -0,0 +1,23 @@ +# PersistImportedDeploymentRequestPendingPreparedStackProfileConditionResource + +GCP IAM condition + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackProfileConditionResource } from "@alienplatform/platform-api/models"; + +let value: + PersistImportedDeploymentRequestPendingPreparedStackProfileConditionResource = + { + expression: "", + title: "", + }; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileconditionstack.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileconditionstack.md new file mode 100644 index 000000000..15426bf92 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileconditionstack.md @@ -0,0 +1,22 @@ +# PersistImportedDeploymentRequestPendingPreparedStackProfileConditionStack + +GCP IAM condition + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackProfileConditionStack } from "@alienplatform/platform-api/models"; + +let value: + PersistImportedDeploymentRequestPendingPreparedStackProfileConditionStack = { + expression: "", + title: "", + }; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileeffect.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileeffect.md new file mode 100644 index 000000000..0b0d9d4a8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileeffect.md @@ -0,0 +1,18 @@ +# PersistImportedDeploymentRequestPendingPreparedStackProfileEffect + +IAM effect. Defaults to Allow. + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackProfileEffect } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStackProfileEffect = + "Deny"; +``` + +## Values + +```typescript +"Allow" | "Deny" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofilegcp.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofilegcp.md new file mode 100644 index 000000000..883acf68f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofilegcp.md @@ -0,0 +1,23 @@ +# PersistImportedDeploymentRequestPendingPreparedStackProfileGcp + +GCP-specific platform permission configuration + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackProfileGcp } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStackProfileGcp = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `binding` | [models.PersistImportedDeploymentRequestPendingPreparedStackProfileGcpBinding](../models/persistimporteddeploymentrequestpendingpreparedstackprofilegcpbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.PersistImportedDeploymentRequestPendingPreparedStackProfileGcpGrant](../models/persistimporteddeploymentrequestpendingpreparedstackprofilegcpgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofilegcpbinding.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofilegcpbinding.md new file mode 100644 index 000000000..d9bd8b03e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofilegcpbinding.md @@ -0,0 +1,19 @@ +# PersistImportedDeploymentRequestPendingPreparedStackProfileGcpBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackProfileGcpBinding } from "@alienplatform/platform-api/models"; + +let value: + PersistImportedDeploymentRequestPendingPreparedStackProfileGcpBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.PersistImportedDeploymentRequestPendingPreparedStackProfileGcpResource](../models/persistimporteddeploymentrequestpendingpreparedstackprofilegcpresource.md) | :heavy_minus_sign: | GCP-specific binding specification | +| `stack` | [models.PersistImportedDeploymentRequestPendingPreparedStackProfileGcpStack](../models/persistimporteddeploymentrequestpendingpreparedstackprofilegcpstack.md) | :heavy_minus_sign: | GCP-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofilegcpgrant.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofilegcpgrant.md new file mode 100644 index 000000000..32377cd15 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofilegcpgrant.md @@ -0,0 +1,22 @@ +# PersistImportedDeploymentRequestPendingPreparedStackProfileGcpGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackProfileGcpGrant } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStackProfileGcpGrant = + {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofilegcpresource.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofilegcpresource.md new file mode 100644 index 000000000..8789a9006 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofilegcpresource.md @@ -0,0 +1,21 @@ +# PersistImportedDeploymentRequestPendingPreparedStackProfileGcpResource + +GCP-specific binding specification + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackProfileGcpResource } from "@alienplatform/platform-api/models"; + +let value: + PersistImportedDeploymentRequestPendingPreparedStackProfileGcpResource = { + scope: "", + }; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `condition` | *models.PersistImportedDeploymentRequestPendingPreparedStackProfileResourceConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofilegcpstack.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofilegcpstack.md new file mode 100644 index 000000000..219f225c9 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofilegcpstack.md @@ -0,0 +1,21 @@ +# PersistImportedDeploymentRequestPendingPreparedStackProfileGcpStack + +GCP-specific binding specification + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackProfileGcpStack } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStackProfileGcpStack = + { + scope: "", + }; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | +| `condition` | *models.PersistImportedDeploymentRequestPendingPreparedStackProfileStackConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileplatforms.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileplatforms.md new file mode 100644 index 000000000..770cb8968 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileplatforms.md @@ -0,0 +1,20 @@ +# PersistImportedDeploymentRequestPendingPreparedStackProfilePlatforms + +Platform-specific permission configurations + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackProfilePlatforms } from "@alienplatform/platform-api/models"; + +let value: + PersistImportedDeploymentRequestPendingPreparedStackProfilePlatforms = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `aws` | [models.PersistImportedDeploymentRequestPendingPreparedStackProfileAw](../models/persistimporteddeploymentrequestpendingpreparedstackprofileaw.md)[] | :heavy_minus_sign: | AWS permission configurations | +| `azure` | [models.PersistImportedDeploymentRequestPendingPreparedStackProfileAzure](../models/persistimporteddeploymentrequestpendingpreparedstackprofileazure.md)[] | :heavy_minus_sign: | Azure permission configurations | +| `gcp` | [models.PersistImportedDeploymentRequestPendingPreparedStackProfileGcp](../models/persistimporteddeploymentrequestpendingpreparedstackprofilegcp.md)[] | :heavy_minus_sign: | GCP permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileresourceconditionunion.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileresourceconditionunion.md new file mode 100644 index 000000000..5b6b31db0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileresourceconditionunion.md @@ -0,0 +1,22 @@ +# PersistImportedDeploymentRequestPendingPreparedStackProfileResourceConditionUnion + + +## Supported Types + +### `models.PersistImportedDeploymentRequestPendingPreparedStackProfileConditionResource` + +```typescript +const value: + models.PersistImportedDeploymentRequestPendingPreparedStackProfileConditionResource = + { + expression: "", + title: "", + }; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofilestackconditionunion.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofilestackconditionunion.md new file mode 100644 index 000000000..0ff89c706 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofilestackconditionunion.md @@ -0,0 +1,22 @@ +# PersistImportedDeploymentRequestPendingPreparedStackProfileStackConditionUnion + + +## Supported Types + +### `models.PersistImportedDeploymentRequestPendingPreparedStackProfileConditionStack` + +```typescript +const value: + models.PersistImportedDeploymentRequestPendingPreparedStackProfileConditionStack = + { + expression: "", + title: "", + }; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileunion.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileunion.md new file mode 100644 index 000000000..b2d06c0f6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprofileunion.md @@ -0,0 +1,24 @@ +# PersistImportedDeploymentRequestPendingPreparedStackProfileUnion + +Reference to a permission set - either by name or inline definition + + +## Supported Types + +### `models.PersistImportedDeploymentRequestPendingPreparedStackProfile` + +```typescript +const value: + models.PersistImportedDeploymentRequestPendingPreparedStackProfile = { + description: "sniveling reborn bemuse bar dutiful aw", + id: "", + platforms: {}, + }; +``` + +### `string` + +```typescript +const value: string = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprovidedby.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprovidedby.md new file mode 100644 index 000000000..13ba81f0c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackprovidedby.md @@ -0,0 +1,18 @@ +# PersistImportedDeploymentRequestPendingPreparedStackProvidedBy + +Who can provide a stack input value. + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackProvidedBy } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStackProvidedBy = + "developer"; +``` + +## Values + +```typescript +"developer" | "deployer" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackresources.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackresources.md new file mode 100644 index 000000000..2015d4e81 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackresources.md @@ -0,0 +1,31 @@ +# PersistImportedDeploymentRequestPendingPreparedStackResources + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackResources } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStackResources = { + config: { + id: "", + type: "", + }, + dependencies: [ + { + id: "", + type: "", + }, + ], + lifecycle: "live", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `config` | [models.PersistImportedDeploymentRequestPendingPreparedStackConfig](../models/persistimporteddeploymentrequestpendingpreparedstackconfig.md) | :heavy_check_mark: | 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` | [models.PersistImportedDeploymentRequestPendingPreparedStackDependency](../models/persistimporteddeploymentrequestpendingpreparedstackdependency.md)[] | :heavy_check_mark: | Additional dependencies for this resource beyond those defined in the resource itself.
The total dependencies are: resource.get_dependencies() + this list | +| `enabledWhen` | *string* | :heavy_minus_sign: | 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. | +| `lifecycle` | [models.PersistImportedDeploymentRequestPendingPreparedStackLifecycle](../models/persistimporteddeploymentrequestpendingpreparedstacklifecycle.md) | :heavy_check_mark: | Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. | +| `remoteAccess` | *boolean* | :heavy_minus_sign: | Enable remote bindings for this resource (BYOB use case).
When true, binding params are synced to StackState's `remote_binding_params`.
Default: false (prevents sensitive data in synced state). | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstacksupportedplatform.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstacksupportedplatform.md new file mode 100644 index 000000000..36cfc1927 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstacksupportedplatform.md @@ -0,0 +1,19 @@ +# PersistImportedDeploymentRequestPendingPreparedStackSupportedPlatform + +Represents the target cloud platform. + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackSupportedPlatform } from "@alienplatform/platform-api/models"; + +let value: + PersistImportedDeploymentRequestPendingPreparedStackSupportedPlatform = + "azure"; +``` + +## Values + +```typescript +"aws" | "gcp" | "azure" | "kubernetes" | "machines" | "local" | "test" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstacktypeboolean.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstacktypeboolean.md new file mode 100644 index 000000000..22514880f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstacktypeboolean.md @@ -0,0 +1,16 @@ +# PersistImportedDeploymentRequestPendingPreparedStackTypeBoolean + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackTypeBoolean } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStackTypeBoolean = + "boolean"; +``` + +## Values + +```typescript +"boolean" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstacktypeenvenum.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstacktypeenvenum.md new file mode 100644 index 000000000..e3b484082 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstacktypeenvenum.md @@ -0,0 +1,18 @@ +# PersistImportedDeploymentRequestPendingPreparedStackTypeEnvEnum + +Environment variable handling for a stack input mapping. + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackTypeEnvEnum } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStackTypeEnvEnum = + "plain"; +``` + +## Values + +```typescript +"plain" | "secret" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstacktypenumber.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstacktypenumber.md new file mode 100644 index 000000000..dbe34a7a5 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstacktypenumber.md @@ -0,0 +1,16 @@ +# PersistImportedDeploymentRequestPendingPreparedStackTypeNumber + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackTypeNumber } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStackTypeNumber = + "number"; +``` + +## Values + +```typescript +"number" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstacktypestring.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstacktypestring.md new file mode 100644 index 000000000..b0c07da55 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstacktypestring.md @@ -0,0 +1,16 @@ +# PersistImportedDeploymentRequestPendingPreparedStackTypeString + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackTypeString } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStackTypeString = + "string"; +``` + +## Values + +```typescript +"string" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstacktypestringlist.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstacktypestringlist.md new file mode 100644 index 000000000..102e7b5f8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstacktypestringlist.md @@ -0,0 +1,16 @@ +# PersistImportedDeploymentRequestPendingPreparedStackTypeStringList + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackTypeStringList } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStackTypeStringList = + "stringList"; +``` + +## Values + +```typescript +"stringList" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstacktypeunion.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstacktypeunion.md new file mode 100644 index 000000000..15f77519a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstacktypeunion.md @@ -0,0 +1,19 @@ +# PersistImportedDeploymentRequestPendingPreparedStackTypeUnion + + +## Supported Types + +### `models.PersistImportedDeploymentRequestPendingPreparedStackTypeEnvEnum` + +```typescript +const value: + models.PersistImportedDeploymentRequestPendingPreparedStackTypeEnvEnum = + "plain"; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackunion.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackunion.md new file mode 100644 index 000000000..060305af2 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackunion.md @@ -0,0 +1,29 @@ +# PersistImportedDeploymentRequestPendingPreparedStackUnion + + +## Supported Types + +### `models.PersistImportedDeploymentRequestPendingPreparedStack` + +```typescript +const value: models.PersistImportedDeploymentRequestPendingPreparedStack = { + id: "", + resources: { + "key": { + config: { + id: "", + type: "", + }, + dependencies: [], + lifecycle: "live", + }, + }, +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackvalidation.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackvalidation.md new file mode 100644 index 000000000..ceced57c0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackvalidation.md @@ -0,0 +1,25 @@ +# PersistImportedDeploymentRequestPendingPreparedStackValidation + +Portable stack input validation constraints. + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPendingPreparedStackValidation } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPendingPreparedStackValidation = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | +| `format` | *string* | :heavy_minus_sign: | Semantic format hint such as url. | +| `max` | *string* | :heavy_minus_sign: | Maximum number. | +| `maxItems` | *number* | :heavy_minus_sign: | Maximum string-list items. | +| `maxLength` | *number* | :heavy_minus_sign: | Maximum string length. | +| `min` | *string* | :heavy_minus_sign: | Minimum number. | +| `minItems` | *number* | :heavy_minus_sign: | Minimum string-list items. | +| `minLength` | *number* | :heavy_minus_sign: | Minimum string length. | +| `pattern` | *string* | :heavy_minus_sign: | Portable whole-value regex pattern. | +| `values` | *string*[] | :heavy_minus_sign: | Allowed string enum values. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackvalidationunion.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackvalidationunion.md new file mode 100644 index 000000000..bff15ec4f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpendingpreparedstackvalidationunion.md @@ -0,0 +1,18 @@ +# PersistImportedDeploymentRequestPendingPreparedStackValidationUnion + + +## Supported Types + +### `models.PersistImportedDeploymentRequestPendingPreparedStackValidation` + +```typescript +const value: + models.PersistImportedDeploymentRequestPendingPreparedStackValidation = {}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpermissions.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpermissions.md deleted file mode 100644 index 070756002..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpermissions.md +++ /dev/null @@ -1,20 +0,0 @@ -# PersistImportedDeploymentRequestPermissions - -Combined permissions configuration that contains both profiles and management - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestPermissions } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestPermissions = { - profiles: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | -| `management` | *models.PersistImportedDeploymentRequestManagementUnion* | :heavy_minus_sign: | Management permissions configuration for stack management access | -| `profiles` | Record> | :heavy_check_mark: | Permission profiles that define access control for compute services
Key is the profile name, value is the permission configuration | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpoolsautoscale.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpoolsautoscale.md index 661e9e98d..acacda68b 100644 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpoolsautoscale.md +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpoolsautoscale.md @@ -14,9 +14,10 @@ let value: PersistImportedDeploymentRequestPoolsAutoscale = { ## Fields -| Field | Type | Required | Description | -| --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | -| `machine` | *string* | :heavy_minus_sign: | Provider machine type selected for this deployment. | -| `max` | *number* | :heavy_check_mark: | Maximum machine count. | -| `min` | *number* | :heavy_check_mark: | Minimum machine count. | -| `mode` | *"autoscale"* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | +| `failureDomains` | *models.PersistImportedDeploymentRequestFailureDomainsUnion2* | :heavy_minus_sign: | N/A | +| `machine` | *string* | :heavy_minus_sign: | Provider machine type selected for this deployment. | +| `max` | *number* | :heavy_check_mark: | Maximum machine count. | +| `min` | *number* | :heavy_check_mark: | Minimum machine count. | +| `mode` | *"autoscale"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpoolsfixed.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpoolsfixed.md index 689af226d..11c2806c2 100644 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpoolsfixed.md +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpoolsfixed.md @@ -13,8 +13,9 @@ let value: PersistImportedDeploymentRequestPoolsFixed = { ## Fields -| Field | Type | Required | Description | -| --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | -| `machine` | *string* | :heavy_minus_sign: | Provider machine type selected for this deployment. | -| `machines` | *number* | :heavy_check_mark: | Number of machines to run. | -| `mode` | *"fixed"* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | +| `failureDomains` | *models.PersistImportedDeploymentRequestFailureDomainsUnion1* | :heavy_minus_sign: | N/A | +| `machine` | *string* | :heavy_minus_sign: | Provider machine type selected for this deployment. | +| `machines` | *number* | :heavy_check_mark: | Number of machines to run. | +| `mode` | *"fixed"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstack.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstack.md index c6800e43d..fc0a9d33d 100644 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstack.md +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstack.md @@ -15,10 +15,10 @@ let value: PersistImportedDeploymentRequestPreparedStack = { ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | -| `id` | *string* | :heavy_check_mark: | Unique identifier for the stack | -| `inputs` | [models.PersistImportedDeploymentRequestInput](../models/persistimporteddeploymentrequestinput.md)[] | :heavy_minus_sign: | Input definitions required before setup or deployment can proceed. | -| `permissions` | [models.PersistImportedDeploymentRequestPermissions](../models/persistimporteddeploymentrequestpermissions.md) | :heavy_minus_sign: | Combined permissions configuration that contains both profiles and management | -| `resources` | Record | :heavy_check_mark: | Map of resource IDs to their configurations and lifecycle settings | -| `supportedPlatforms` | [models.PersistImportedDeploymentRequestSupportedPlatform](../models/persistimporteddeploymentrequestsupportedplatform.md)[] | :heavy_minus_sign: | Which platforms this stack supports. When None, all platforms are supported. | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the stack | +| `inputs` | [models.PersistImportedDeploymentRequestPreparedStackInput](../models/persistimporteddeploymentrequestpreparedstackinput.md)[] | :heavy_minus_sign: | Input definitions required before setup or deployment can proceed. | +| `permissions` | [models.PersistImportedDeploymentRequestPreparedStackPermissions](../models/persistimporteddeploymentrequestpreparedstackpermissions.md) | :heavy_minus_sign: | Combined permissions configuration that contains both profiles and management | +| `resources` | Record | :heavy_check_mark: | Map of resource IDs to their configurations and lifecycle settings | +| `supportedPlatforms` | [models.PersistImportedDeploymentRequestPreparedStackSupportedPlatform](../models/persistimporteddeploymentrequestpreparedstacksupportedplatform.md)[] | :heavy_minus_sign: | Which platforms this stack supports. When None, all platforms are supported. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackconfig.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackconfig.md new file mode 100644 index 000000000..2a831534c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackconfig.md @@ -0,0 +1,22 @@ +# PersistImportedDeploymentRequestPreparedStackConfig + +Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackConfig } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackConfig = { + id: "", + type: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. | +| `type` | *string* | :heavy_check_mark: | Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. | +| `additionalProperties` | Record | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackdefaultboolean.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackdefaultboolean.md new file mode 100644 index 000000000..b622c9b3a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackdefaultboolean.md @@ -0,0 +1,19 @@ +# PersistImportedDeploymentRequestPreparedStackDefaultBoolean + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackDefaultBoolean } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackDefaultBoolean = { + type: "boolean", + value: false, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `type` | [models.PersistImportedDeploymentRequestPreparedStackTypeBoolean](../models/persistimporteddeploymentrequestpreparedstacktypeboolean.md) | :heavy_check_mark: | N/A | +| `value` | *boolean* | :heavy_check_mark: | Boolean default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackdefaultnumber.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackdefaultnumber.md new file mode 100644 index 000000000..c414da251 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackdefaultnumber.md @@ -0,0 +1,19 @@ +# PersistImportedDeploymentRequestPreparedStackDefaultNumber + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackDefaultNumber } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackDefaultNumber = { + type: "number", + value: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | +| `type` | [models.PersistImportedDeploymentRequestPreparedStackTypeNumber](../models/persistimporteddeploymentrequestpreparedstacktypenumber.md) | :heavy_check_mark: | N/A | +| `value` | *string* | :heavy_check_mark: | Number default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackdefaultstring.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackdefaultstring.md new file mode 100644 index 000000000..a9b57b052 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackdefaultstring.md @@ -0,0 +1,19 @@ +# PersistImportedDeploymentRequestPreparedStackDefaultString + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackDefaultString } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackDefaultString = { + type: "string", + value: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | +| `type` | [models.PersistImportedDeploymentRequestPreparedStackTypeString](../models/persistimporteddeploymentrequestpreparedstacktypestring.md) | :heavy_check_mark: | N/A | +| `value` | *string* | :heavy_check_mark: | String default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackdefaultstringlist.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackdefaultstringlist.md new file mode 100644 index 000000000..a1ba1a79e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackdefaultstringlist.md @@ -0,0 +1,22 @@ +# PersistImportedDeploymentRequestPreparedStackDefaultStringList + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackDefaultStringList } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackDefaultStringList = { + type: "stringList", + value: [ + "", + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | +| `type` | [models.PersistImportedDeploymentRequestPreparedStackTypeStringList](../models/persistimporteddeploymentrequestpreparedstacktypestringlist.md) | :heavy_check_mark: | N/A | +| `value` | *string*[] | :heavy_check_mark: | String list default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackdefaultunion.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackdefaultunion.md new file mode 100644 index 000000000..4a9a70674 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackdefaultunion.md @@ -0,0 +1,54 @@ +# PersistImportedDeploymentRequestPreparedStackDefaultUnion + + +## Supported Types + +### `models.PersistImportedDeploymentRequestPreparedStackDefaultString` + +```typescript +const value: models.PersistImportedDeploymentRequestPreparedStackDefaultString = + { + type: "string", + value: "", + }; +``` + +### `models.PersistImportedDeploymentRequestPreparedStackDefaultNumber` + +```typescript +const value: models.PersistImportedDeploymentRequestPreparedStackDefaultNumber = + { + type: "number", + value: "", + }; +``` + +### `models.PersistImportedDeploymentRequestPreparedStackDefaultBoolean` + +```typescript +const value: + models.PersistImportedDeploymentRequestPreparedStackDefaultBoolean = { + type: "boolean", + value: false, + }; +``` + +### `models.PersistImportedDeploymentRequestPreparedStackDefaultStringList` + +```typescript +const value: + models.PersistImportedDeploymentRequestPreparedStackDefaultStringList = { + type: "stringList", + value: [ + "", + "", + ], + }; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackdependency.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackdependency.md new file mode 100644 index 000000000..d2b0dc02b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackdependency.md @@ -0,0 +1,21 @@ +# PersistImportedDeploymentRequestPreparedStackDependency + +Reference to a resource by its stable id and resource type. + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackDependency } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackDependency = { + id: "", + type: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | N/A | +| `type` | *string* | :heavy_check_mark: | Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackenv.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackenv.md new file mode 100644 index 000000000..f53889e77 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackenv.md @@ -0,0 +1,21 @@ +# PersistImportedDeploymentRequestPreparedStackEnv + +How a resolved stack input is injected into runtime environment variables. + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackEnv } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackEnv = { + name: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `name` | *string* | :heavy_check_mark: | Environment variable name. | +| `targetResources` | *string*[] | :heavy_minus_sign: | Target resource IDs or patterns. None means every env-capable resource. | +| `type` | *models.PersistImportedDeploymentRequestPreparedStackTypeUnion* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextend.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextend.md new file mode 100644 index 000000000..68bfbf429 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextend.md @@ -0,0 +1,23 @@ +# PersistImportedDeploymentRequestPreparedStackExtend + +A permission set that can be applied across different cloud platforms + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackExtend } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackExtend = { + description: "closely christen famously curiously", + id: "", + platforms: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | +| `description` | *string* | :heavy_check_mark: | Human-readable description of what this permission set allows | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the permission set (e.g., "storage/data-read") | +| `platforms` | [models.PersistImportedDeploymentRequestPreparedStackExtendPlatforms](../models/persistimporteddeploymentrequestpreparedstackextendplatforms.md) | :heavy_check_mark: | Platform-specific permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendaw.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendaw.md new file mode 100644 index 000000000..c9e5fb1a5 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendaw.md @@ -0,0 +1,24 @@ +# PersistImportedDeploymentRequestPreparedStackExtendAw + +AWS-specific platform permission configuration + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackExtendAw } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackExtendAw = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | +| `binding` | [models.PersistImportedDeploymentRequestPreparedStackExtendAwBinding](../models/persistimporteddeploymentrequestpreparedstackextendawbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `effect` | [models.PersistImportedDeploymentRequestPreparedStackExtendEffect](../models/persistimporteddeploymentrequestpreparedstackextendeffect.md) | :heavy_minus_sign: | IAM effect. Defaults to Allow. | +| `grant` | [models.PersistImportedDeploymentRequestPreparedStackExtendAwGrant](../models/persistimporteddeploymentrequestpreparedstackextendawgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendawbinding.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendawbinding.md new file mode 100644 index 000000000..e720f76b0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendawbinding.md @@ -0,0 +1,18 @@ +# PersistImportedDeploymentRequestPreparedStackExtendAwBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackExtendAwBinding } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackExtendAwBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.PersistImportedDeploymentRequestPreparedStackExtendAwResource](../models/persistimporteddeploymentrequestpreparedstackextendawresource.md) | :heavy_minus_sign: | AWS-specific binding specification | +| `stack` | [models.PersistImportedDeploymentRequestPreparedStackExtendAwStack](../models/persistimporteddeploymentrequestpreparedstackextendawstack.md) | :heavy_minus_sign: | AWS-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendawgrant.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendawgrant.md new file mode 100644 index 000000000..defbe2d32 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendawgrant.md @@ -0,0 +1,21 @@ +# PersistImportedDeploymentRequestPreparedStackExtendAwGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackExtendAwGrant } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackExtendAwGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendawresource.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendawresource.md new file mode 100644 index 000000000..cda2255f7 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendawresource.md @@ -0,0 +1,24 @@ +# PersistImportedDeploymentRequestPreparedStackExtendAwResource + +AWS-specific binding specification + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackExtendAwResource } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackExtendAwResource = { + resources: [ + "", + "", + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendawstack.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendawstack.md new file mode 100644 index 000000000..71e1448e7 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendawstack.md @@ -0,0 +1,22 @@ +# PersistImportedDeploymentRequestPreparedStackExtendAwStack + +AWS-specific binding specification + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackExtendAwStack } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackExtendAwStack = { + resources: [ + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendazure.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendazure.md new file mode 100644 index 000000000..7c7d99b93 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendazure.md @@ -0,0 +1,23 @@ +# PersistImportedDeploymentRequestPreparedStackExtendAzure + +Azure-specific platform permission configuration + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackExtendAzure } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackExtendAzure = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `binding` | [models.PersistImportedDeploymentRequestPreparedStackExtendAzureBinding](../models/persistimporteddeploymentrequestpreparedstackextendazurebinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.PersistImportedDeploymentRequestPreparedStackExtendAzureGrant](../models/persistimporteddeploymentrequestpreparedstackextendazuregrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendazurebinding.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendazurebinding.md new file mode 100644 index 000000000..297ebc712 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendazurebinding.md @@ -0,0 +1,18 @@ +# PersistImportedDeploymentRequestPreparedStackExtendAzureBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackExtendAzureBinding } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackExtendAzureBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.PersistImportedDeploymentRequestPreparedStackExtendAzureResource](../models/persistimporteddeploymentrequestpreparedstackextendazureresource.md) | :heavy_minus_sign: | Azure-specific binding specification | +| `stack` | [models.PersistImportedDeploymentRequestPreparedStackExtendAzureStack](../models/persistimporteddeploymentrequestpreparedstackextendazurestack.md) | :heavy_minus_sign: | Azure-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendazuregrant.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendazuregrant.md new file mode 100644 index 000000000..539ae1027 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendazuregrant.md @@ -0,0 +1,21 @@ +# PersistImportedDeploymentRequestPreparedStackExtendAzureGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackExtendAzureGrant } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackExtendAzureGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendazureresource.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendazureresource.md new file mode 100644 index 000000000..e138d1f0a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendazureresource.md @@ -0,0 +1,19 @@ +# PersistImportedDeploymentRequestPreparedStackExtendAzureResource + +Azure-specific binding specification + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackExtendAzureResource } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackExtendAzureResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendazurestack.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendazurestack.md new file mode 100644 index 000000000..16b8eb532 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendazurestack.md @@ -0,0 +1,19 @@ +# PersistImportedDeploymentRequestPreparedStackExtendAzureStack + +Azure-specific binding specification + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackExtendAzureStack } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackExtendAzureStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendconditionresource.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendconditionresource.md new file mode 100644 index 000000000..4f6fa6b2e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendconditionresource.md @@ -0,0 +1,22 @@ +# PersistImportedDeploymentRequestPreparedStackExtendConditionResource + +GCP IAM condition + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackExtendConditionResource } from "@alienplatform/platform-api/models"; + +let value: + PersistImportedDeploymentRequestPreparedStackExtendConditionResource = { + expression: "", + title: "", + }; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendconditionstack.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendconditionstack.md new file mode 100644 index 000000000..4e5452e6f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendconditionstack.md @@ -0,0 +1,21 @@ +# PersistImportedDeploymentRequestPreparedStackExtendConditionStack + +GCP IAM condition + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackExtendConditionStack } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackExtendConditionStack = { + expression: "", + title: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendeffect.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendeffect.md new file mode 100644 index 000000000..27e20a339 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendeffect.md @@ -0,0 +1,17 @@ +# PersistImportedDeploymentRequestPreparedStackExtendEffect + +IAM effect. Defaults to Allow. + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackExtendEffect } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackExtendEffect = "Allow"; +``` + +## Values + +```typescript +"Allow" | "Deny" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendgcp.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendgcp.md new file mode 100644 index 000000000..4a363d606 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendgcp.md @@ -0,0 +1,23 @@ +# PersistImportedDeploymentRequestPreparedStackExtendGcp + +GCP-specific platform permission configuration + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackExtendGcp } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackExtendGcp = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.PersistImportedDeploymentRequestPreparedStackExtendGcpBinding](../models/persistimporteddeploymentrequestpreparedstackextendgcpbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.PersistImportedDeploymentRequestPreparedStackExtendGcpGrant](../models/persistimporteddeploymentrequestpreparedstackextendgcpgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendgcpbinding.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendgcpbinding.md new file mode 100644 index 000000000..36f09882b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendgcpbinding.md @@ -0,0 +1,18 @@ +# PersistImportedDeploymentRequestPreparedStackExtendGcpBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackExtendGcpBinding } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackExtendGcpBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.PersistImportedDeploymentRequestPreparedStackExtendGcpResource](../models/persistimporteddeploymentrequestpreparedstackextendgcpresource.md) | :heavy_minus_sign: | GCP-specific binding specification | +| `stack` | [models.PersistImportedDeploymentRequestPreparedStackExtendGcpStack](../models/persistimporteddeploymentrequestpreparedstackextendgcpstack.md) | :heavy_minus_sign: | GCP-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendgcpgrant.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendgcpgrant.md new file mode 100644 index 000000000..fa9ea6f1a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendgcpgrant.md @@ -0,0 +1,21 @@ +# PersistImportedDeploymentRequestPreparedStackExtendGcpGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackExtendGcpGrant } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackExtendGcpGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendgcpresource.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendgcpresource.md new file mode 100644 index 000000000..ebe6eeda2 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendgcpresource.md @@ -0,0 +1,20 @@ +# PersistImportedDeploymentRequestPreparedStackExtendGcpResource + +GCP-specific binding specification + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackExtendGcpResource } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackExtendGcpResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `condition` | *models.PersistImportedDeploymentRequestPreparedStackExtendResourceConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendgcpstack.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendgcpstack.md new file mode 100644 index 000000000..41ec3303a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendgcpstack.md @@ -0,0 +1,20 @@ +# PersistImportedDeploymentRequestPreparedStackExtendGcpStack + +GCP-specific binding specification + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackExtendGcpStack } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackExtendGcpStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| `condition` | *models.PersistImportedDeploymentRequestPreparedStackExtendStackConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendplatforms.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendplatforms.md new file mode 100644 index 000000000..fba304c70 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendplatforms.md @@ -0,0 +1,19 @@ +# PersistImportedDeploymentRequestPreparedStackExtendPlatforms + +Platform-specific permission configurations + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackExtendPlatforms } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackExtendPlatforms = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | +| `aws` | [models.PersistImportedDeploymentRequestPreparedStackExtendAw](../models/persistimporteddeploymentrequestpreparedstackextendaw.md)[] | :heavy_minus_sign: | AWS permission configurations | +| `azure` | [models.PersistImportedDeploymentRequestPreparedStackExtendAzure](../models/persistimporteddeploymentrequestpreparedstackextendazure.md)[] | :heavy_minus_sign: | Azure permission configurations | +| `gcp` | [models.PersistImportedDeploymentRequestPreparedStackExtendGcp](../models/persistimporteddeploymentrequestpreparedstackextendgcp.md)[] | :heavy_minus_sign: | GCP permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendresourceconditionunion.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendresourceconditionunion.md new file mode 100644 index 000000000..a4c06a5f9 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendresourceconditionunion.md @@ -0,0 +1,22 @@ +# PersistImportedDeploymentRequestPreparedStackExtendResourceConditionUnion + + +## Supported Types + +### `models.PersistImportedDeploymentRequestPreparedStackExtendConditionResource` + +```typescript +const value: + models.PersistImportedDeploymentRequestPreparedStackExtendConditionResource = + { + expression: "", + title: "", + }; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendstackconditionunion.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendstackconditionunion.md new file mode 100644 index 000000000..37da6a102 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendstackconditionunion.md @@ -0,0 +1,21 @@ +# PersistImportedDeploymentRequestPreparedStackExtendStackConditionUnion + + +## Supported Types + +### `models.PersistImportedDeploymentRequestPreparedStackExtendConditionStack` + +```typescript +const value: + models.PersistImportedDeploymentRequestPreparedStackExtendConditionStack = { + expression: "", + title: "", + }; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendunion.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendunion.md new file mode 100644 index 000000000..4a285581c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackextendunion.md @@ -0,0 +1,23 @@ +# PersistImportedDeploymentRequestPreparedStackExtendUnion + +Reference to a permission set - either by name or inline definition + + +## Supported Types + +### `models.PersistImportedDeploymentRequestPreparedStackExtend` + +```typescript +const value: models.PersistImportedDeploymentRequestPreparedStackExtend = { + description: "closely christen famously curiously", + id: "", + platforms: {}, +}; +``` + +### `string` + +```typescript +const value: string = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackinput.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackinput.md new file mode 100644 index 000000000..14be2d5b0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackinput.md @@ -0,0 +1,36 @@ +# PersistImportedDeploymentRequestPreparedStackInput + +Stack input definition serialized into a release stack. + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackInput } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackInput = { + description: "yowza athwart till before", + id: "", + kind: "string", + label: "", + providedBy: [ + "developer", + ], + required: false, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `default` | *models.PersistImportedDeploymentRequestPreparedStackDefaultUnion* | :heavy_minus_sign: | N/A | +| `description` | *string* | :heavy_check_mark: | Human-facing helper text. | +| `env` | [models.PersistImportedDeploymentRequestPreparedStackEnv](../models/persistimporteddeploymentrequestpreparedstackenv.md)[] | :heavy_minus_sign: | Runtime env-var mappings for v1 input resolution. | +| `id` | *string* | :heavy_check_mark: | Stable input ID used by CLI/API calls. | +| `kind` | [models.PersistImportedDeploymentRequestPreparedStackKind](../models/persistimporteddeploymentrequestpreparedstackkind.md) | :heavy_check_mark: | Primitive stack input kind. | +| `label` | *string* | :heavy_check_mark: | Human-facing field label. | +| `placeholder` | *string* | :heavy_minus_sign: | Example placeholder shown in UI. | +| `platforms` | [models.PersistImportedDeploymentRequestPreparedStackPlatform](../models/persistimporteddeploymentrequestpreparedstackplatform.md)[] | :heavy_minus_sign: | Platforms where this input applies. | +| `providedBy` | [models.PersistImportedDeploymentRequestPreparedStackProvidedBy](../models/persistimporteddeploymentrequestpreparedstackprovidedby.md)[] | :heavy_check_mark: | Who can provide this value. | +| `required` | *boolean* | :heavy_check_mark: | Whether a resolved value is required before deployment can proceed. | +| `validation` | *models.PersistImportedDeploymentRequestPreparedStackValidationUnion* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackkind.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackkind.md new file mode 100644 index 000000000..cf3cfa7ba --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackkind.md @@ -0,0 +1,17 @@ +# PersistImportedDeploymentRequestPreparedStackKind + +Primitive stack input kind. + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackKind } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackKind = "string"; +``` + +## Values + +```typescript +"string" | "secret" | "number" | "integer" | "boolean" | "enum" | "stringList" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstacklifecycle.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstacklifecycle.md new file mode 100644 index 000000000..baaf0fb79 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstacklifecycle.md @@ -0,0 +1,17 @@ +# PersistImportedDeploymentRequestPreparedStackLifecycle + +Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackLifecycle } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackLifecycle = "live"; +``` + +## Values + +```typescript +"frozen" | "live" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackmanagement1.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackmanagement1.md new file mode 100644 index 000000000..3dc227012 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackmanagement1.md @@ -0,0 +1,17 @@ +# PersistImportedDeploymentRequestPreparedStackManagement1 + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackManagement1 } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackManagement1 = { + extend: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | +| `extend` | Record | :heavy_check_mark: | Permission profile that maps resources to permission sets
Key can be "*" for all resources or resource name for specific resource | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackmanagement2.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackmanagement2.md new file mode 100644 index 000000000..18c640a7f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackmanagement2.md @@ -0,0 +1,19 @@ +# PersistImportedDeploymentRequestPreparedStackManagement2 + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackManagement2 } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackManagement2 = { + override: { + "key": [], + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | +| `override` | Record | :heavy_check_mark: | Permission profile that maps resources to permission sets
Key can be "*" for all resources or resource name for specific resource | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackmanagementenum.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackmanagementenum.md new file mode 100644 index 000000000..0761fb8c0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackmanagementenum.md @@ -0,0 +1,15 @@ +# PersistImportedDeploymentRequestPreparedStackManagementEnum + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackManagementEnum } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackManagementEnum = "auto"; +``` + +## Values + +```typescript +"auto" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackmanagementunion.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackmanagementunion.md new file mode 100644 index 000000000..0ba0d28e3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackmanagementunion.md @@ -0,0 +1,32 @@ +# PersistImportedDeploymentRequestPreparedStackManagementUnion + +Management permissions configuration for stack management access + + +## Supported Types + +### `models.PersistImportedDeploymentRequestPreparedStackManagement1` + +```typescript +const value: models.PersistImportedDeploymentRequestPreparedStackManagement1 = { + extend: {}, +}; +``` + +### `models.PersistImportedDeploymentRequestPreparedStackManagement2` + +```typescript +const value: models.PersistImportedDeploymentRequestPreparedStackManagement2 = { + override: { + "key": [], + }, +}; +``` + +### `models.PersistImportedDeploymentRequestPreparedStackManagementEnum` + +```typescript +const value: + models.PersistImportedDeploymentRequestPreparedStackManagementEnum = "auto"; +``` + diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverride.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverride.md new file mode 100644 index 000000000..0fdddc1d3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverride.md @@ -0,0 +1,23 @@ +# PersistImportedDeploymentRequestPreparedStackOverride + +A permission set that can be applied across different cloud platforms + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackOverride } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackOverride = { + description: "edge bleakly quicker splosh caring nor moor yuck", + id: "", + platforms: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | +| `description` | *string* | :heavy_check_mark: | Human-readable description of what this permission set allows | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the permission set (e.g., "storage/data-read") | +| `platforms` | [models.PersistImportedDeploymentRequestPreparedStackOverridePlatforms](../models/persistimporteddeploymentrequestpreparedstackoverrideplatforms.md) | :heavy_check_mark: | Platform-specific permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverrideaw.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverrideaw.md new file mode 100644 index 000000000..778a55219 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverrideaw.md @@ -0,0 +1,24 @@ +# PersistImportedDeploymentRequestPreparedStackOverrideAw + +AWS-specific platform permission configuration + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackOverrideAw } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackOverrideAw = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.PersistImportedDeploymentRequestPreparedStackOverrideAwBinding](../models/persistimporteddeploymentrequestpreparedstackoverrideawbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `effect` | [models.PersistImportedDeploymentRequestPreparedStackOverrideEffect](../models/persistimporteddeploymentrequestpreparedstackoverrideeffect.md) | :heavy_minus_sign: | IAM effect. Defaults to Allow. | +| `grant` | [models.PersistImportedDeploymentRequestPreparedStackOverrideAwGrant](../models/persistimporteddeploymentrequestpreparedstackoverrideawgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverrideawbinding.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverrideawbinding.md new file mode 100644 index 000000000..c5eadd528 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverrideawbinding.md @@ -0,0 +1,18 @@ +# PersistImportedDeploymentRequestPreparedStackOverrideAwBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackOverrideAwBinding } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackOverrideAwBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `resource` | [models.PersistImportedDeploymentRequestPreparedStackOverrideAwResource](../models/persistimporteddeploymentrequestpreparedstackoverrideawresource.md) | :heavy_minus_sign: | AWS-specific binding specification | +| `stack` | [models.PersistImportedDeploymentRequestPreparedStackOverrideAwStack](../models/persistimporteddeploymentrequestpreparedstackoverrideawstack.md) | :heavy_minus_sign: | AWS-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverrideawgrant.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverrideawgrant.md new file mode 100644 index 000000000..8d832fcd4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverrideawgrant.md @@ -0,0 +1,21 @@ +# PersistImportedDeploymentRequestPreparedStackOverrideAwGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackOverrideAwGrant } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackOverrideAwGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverrideawresource.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverrideawresource.md new file mode 100644 index 000000000..3eaa217ff --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverrideawresource.md @@ -0,0 +1,23 @@ +# PersistImportedDeploymentRequestPreparedStackOverrideAwResource + +AWS-specific binding specification + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackOverrideAwResource } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackOverrideAwResource = { + resources: [ + "", + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverrideawstack.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverrideawstack.md new file mode 100644 index 000000000..dac540c16 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverrideawstack.md @@ -0,0 +1,24 @@ +# PersistImportedDeploymentRequestPreparedStackOverrideAwStack + +AWS-specific binding specification + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackOverrideAwStack } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackOverrideAwStack = { + resources: [ + "", + "", + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverrideazure.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverrideazure.md new file mode 100644 index 000000000..a766b2eb4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverrideazure.md @@ -0,0 +1,23 @@ +# PersistImportedDeploymentRequestPreparedStackOverrideAzure + +Azure-specific platform permission configuration + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackOverrideAzure } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackOverrideAzure = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.PersistImportedDeploymentRequestPreparedStackOverrideAzureBinding](../models/persistimporteddeploymentrequestpreparedstackoverrideazurebinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.PersistImportedDeploymentRequestPreparedStackOverrideAzureGrant](../models/persistimporteddeploymentrequestpreparedstackoverrideazuregrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverrideazurebinding.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverrideazurebinding.md new file mode 100644 index 000000000..8d687c3d2 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverrideazurebinding.md @@ -0,0 +1,19 @@ +# PersistImportedDeploymentRequestPreparedStackOverrideAzureBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackOverrideAzureBinding } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackOverrideAzureBinding = + {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `resource` | [models.PersistImportedDeploymentRequestPreparedStackOverrideAzureResource](../models/persistimporteddeploymentrequestpreparedstackoverrideazureresource.md) | :heavy_minus_sign: | Azure-specific binding specification | +| `stack` | [models.PersistImportedDeploymentRequestPreparedStackOverrideAzureStack](../models/persistimporteddeploymentrequestpreparedstackoverrideazurestack.md) | :heavy_minus_sign: | Azure-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverrideazuregrant.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverrideazuregrant.md new file mode 100644 index 000000000..756ecae83 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverrideazuregrant.md @@ -0,0 +1,21 @@ +# PersistImportedDeploymentRequestPreparedStackOverrideAzureGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackOverrideAzureGrant } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackOverrideAzureGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverrideazureresource.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverrideazureresource.md new file mode 100644 index 000000000..769b9df15 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverrideazureresource.md @@ -0,0 +1,20 @@ +# PersistImportedDeploymentRequestPreparedStackOverrideAzureResource + +Azure-specific binding specification + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackOverrideAzureResource } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackOverrideAzureResource = + { + scope: "", + }; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverrideazurestack.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverrideazurestack.md new file mode 100644 index 000000000..37152361f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverrideazurestack.md @@ -0,0 +1,19 @@ +# PersistImportedDeploymentRequestPreparedStackOverrideAzureStack + +Azure-specific binding specification + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackOverrideAzureStack } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackOverrideAzureStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverrideconditionresource.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverrideconditionresource.md new file mode 100644 index 000000000..abac9d743 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverrideconditionresource.md @@ -0,0 +1,22 @@ +# PersistImportedDeploymentRequestPreparedStackOverrideConditionResource + +GCP IAM condition + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackOverrideConditionResource } from "@alienplatform/platform-api/models"; + +let value: + PersistImportedDeploymentRequestPreparedStackOverrideConditionResource = { + expression: "", + title: "", + }; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverrideconditionstack.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverrideconditionstack.md new file mode 100644 index 000000000..56597ff21 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverrideconditionstack.md @@ -0,0 +1,22 @@ +# PersistImportedDeploymentRequestPreparedStackOverrideConditionStack + +GCP IAM condition + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackOverrideConditionStack } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackOverrideConditionStack = + { + expression: "", + title: "", + }; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverrideeffect.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverrideeffect.md new file mode 100644 index 000000000..b86aa0709 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverrideeffect.md @@ -0,0 +1,18 @@ +# PersistImportedDeploymentRequestPreparedStackOverrideEffect + +IAM effect. Defaults to Allow. + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackOverrideEffect } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackOverrideEffect = + "Allow"; +``` + +## Values + +```typescript +"Allow" | "Deny" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverridegcp.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverridegcp.md new file mode 100644 index 000000000..7877d5ec3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverridegcp.md @@ -0,0 +1,23 @@ +# PersistImportedDeploymentRequestPreparedStackOverrideGcp + +GCP-specific platform permission configuration + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackOverrideGcp } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackOverrideGcp = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `binding` | [models.PersistImportedDeploymentRequestPreparedStackOverrideGcpBinding](../models/persistimporteddeploymentrequestpreparedstackoverridegcpbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.PersistImportedDeploymentRequestPreparedStackOverrideGcpGrant](../models/persistimporteddeploymentrequestpreparedstackoverridegcpgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverridegcpbinding.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverridegcpbinding.md new file mode 100644 index 000000000..897593b28 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverridegcpbinding.md @@ -0,0 +1,18 @@ +# PersistImportedDeploymentRequestPreparedStackOverrideGcpBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackOverrideGcpBinding } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackOverrideGcpBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.PersistImportedDeploymentRequestPreparedStackOverrideGcpResource](../models/persistimporteddeploymentrequestpreparedstackoverridegcpresource.md) | :heavy_minus_sign: | GCP-specific binding specification | +| `stack` | [models.PersistImportedDeploymentRequestPreparedStackOverrideGcpStack](../models/persistimporteddeploymentrequestpreparedstackoverridegcpstack.md) | :heavy_minus_sign: | GCP-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverridegcpgrant.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverridegcpgrant.md new file mode 100644 index 000000000..b936ee071 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverridegcpgrant.md @@ -0,0 +1,21 @@ +# PersistImportedDeploymentRequestPreparedStackOverrideGcpGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackOverrideGcpGrant } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackOverrideGcpGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverridegcpresource.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverridegcpresource.md new file mode 100644 index 000000000..e8477494d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverridegcpresource.md @@ -0,0 +1,20 @@ +# PersistImportedDeploymentRequestPreparedStackOverrideGcpResource + +GCP-specific binding specification + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackOverrideGcpResource } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackOverrideGcpResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `condition` | *models.PersistImportedDeploymentRequestPreparedStackOverrideResourceConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverridegcpstack.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverridegcpstack.md new file mode 100644 index 000000000..df38a6a43 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverridegcpstack.md @@ -0,0 +1,20 @@ +# PersistImportedDeploymentRequestPreparedStackOverrideGcpStack + +GCP-specific binding specification + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackOverrideGcpStack } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackOverrideGcpStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| `condition` | *models.PersistImportedDeploymentRequestPreparedStackOverrideStackConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverrideplatforms.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverrideplatforms.md new file mode 100644 index 000000000..91dba0947 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverrideplatforms.md @@ -0,0 +1,19 @@ +# PersistImportedDeploymentRequestPreparedStackOverridePlatforms + +Platform-specific permission configurations + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackOverridePlatforms } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackOverridePlatforms = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | +| `aws` | [models.PersistImportedDeploymentRequestPreparedStackOverrideAw](../models/persistimporteddeploymentrequestpreparedstackoverrideaw.md)[] | :heavy_minus_sign: | AWS permission configurations | +| `azure` | [models.PersistImportedDeploymentRequestPreparedStackOverrideAzure](../models/persistimporteddeploymentrequestpreparedstackoverrideazure.md)[] | :heavy_minus_sign: | Azure permission configurations | +| `gcp` | [models.PersistImportedDeploymentRequestPreparedStackOverrideGcp](../models/persistimporteddeploymentrequestpreparedstackoverridegcp.md)[] | :heavy_minus_sign: | GCP permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverrideresourceconditionunion.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverrideresourceconditionunion.md new file mode 100644 index 000000000..421133ab0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverrideresourceconditionunion.md @@ -0,0 +1,22 @@ +# PersistImportedDeploymentRequestPreparedStackOverrideResourceConditionUnion + + +## Supported Types + +### `models.PersistImportedDeploymentRequestPreparedStackOverrideConditionResource` + +```typescript +const value: + models.PersistImportedDeploymentRequestPreparedStackOverrideConditionResource = + { + expression: "", + title: "", + }; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverridestackconditionunion.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverridestackconditionunion.md new file mode 100644 index 000000000..c08a25773 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverridestackconditionunion.md @@ -0,0 +1,21 @@ +# PersistImportedDeploymentRequestPreparedStackOverrideStackConditionUnion + + +## Supported Types + +### `models.PersistImportedDeploymentRequestPreparedStackOverrideConditionStack` + +```typescript +const value: + models.PersistImportedDeploymentRequestPreparedStackOverrideConditionStack = { + expression: "", + title: "", + }; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverrideunion.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverrideunion.md new file mode 100644 index 000000000..8a9f79b72 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackoverrideunion.md @@ -0,0 +1,23 @@ +# PersistImportedDeploymentRequestPreparedStackOverrideUnion + +Reference to a permission set - either by name or inline definition + + +## Supported Types + +### `models.PersistImportedDeploymentRequestPreparedStackOverride` + +```typescript +const value: models.PersistImportedDeploymentRequestPreparedStackOverride = { + description: "edge bleakly quicker splosh caring nor moor yuck", + id: "", + platforms: {}, +}; +``` + +### `string` + +```typescript +const value: string = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackpermissions.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackpermissions.md new file mode 100644 index 000000000..53a07b01f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackpermissions.md @@ -0,0 +1,42 @@ +# PersistImportedDeploymentRequestPreparedStackPermissions + +Combined permissions configuration that contains both profiles and management + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackPermissions } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackPermissions = { + profiles: { + "key": { + "key": [], + "key1": [], + "key2": [ + { + description: "mentor formula hm deliquesce forgery deceivingly nor", + id: "", + platforms: {}, + }, + ], + }, + "key1": { + "key": [], + "key1": [ + { + description: "mentor formula hm deliquesce forgery deceivingly nor", + id: "", + platforms: {}, + }, + ], + }, + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| `management` | *models.PersistImportedDeploymentRequestPreparedStackManagementUnion* | :heavy_minus_sign: | Management permissions configuration for stack management access | +| `profiles` | Record> | :heavy_check_mark: | Permission profiles that define access control for compute services
Key is the profile name, value is the permission configuration | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofile.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofile.md new file mode 100644 index 000000000..03be245f4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofile.md @@ -0,0 +1,23 @@ +# PersistImportedDeploymentRequestPreparedStackProfile + +A permission set that can be applied across different cloud platforms + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackProfile } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackProfile = { + description: "meh rarely lamp eek whereas an nougat although hence", + id: "", + platforms: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | +| `description` | *string* | :heavy_check_mark: | Human-readable description of what this permission set allows | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the permission set (e.g., "storage/data-read") | +| `platforms` | [models.PersistImportedDeploymentRequestPreparedStackProfilePlatforms](../models/persistimporteddeploymentrequestpreparedstackprofileplatforms.md) | :heavy_check_mark: | Platform-specific permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofileaw.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofileaw.md new file mode 100644 index 000000000..6c815b0d3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofileaw.md @@ -0,0 +1,24 @@ +# PersistImportedDeploymentRequestPreparedStackProfileAw + +AWS-specific platform permission configuration + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackProfileAw } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackProfileAw = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.PersistImportedDeploymentRequestPreparedStackProfileAwBinding](../models/persistimporteddeploymentrequestpreparedstackprofileawbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `effect` | [models.PersistImportedDeploymentRequestPreparedStackProfileEffect](../models/persistimporteddeploymentrequestpreparedstackprofileeffect.md) | :heavy_minus_sign: | IAM effect. Defaults to Allow. | +| `grant` | [models.PersistImportedDeploymentRequestPreparedStackProfileAwGrant](../models/persistimporteddeploymentrequestpreparedstackprofileawgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofileawbinding.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofileawbinding.md new file mode 100644 index 000000000..9792dd6e3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofileawbinding.md @@ -0,0 +1,18 @@ +# PersistImportedDeploymentRequestPreparedStackProfileAwBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackProfileAwBinding } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackProfileAwBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.PersistImportedDeploymentRequestPreparedStackProfileAwResource](../models/persistimporteddeploymentrequestpreparedstackprofileawresource.md) | :heavy_minus_sign: | AWS-specific binding specification | +| `stack` | [models.PersistImportedDeploymentRequestPreparedStackProfileAwStack](../models/persistimporteddeploymentrequestpreparedstackprofileawstack.md) | :heavy_minus_sign: | AWS-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofileawgrant.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofileawgrant.md new file mode 100644 index 000000000..e002786a3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofileawgrant.md @@ -0,0 +1,21 @@ +# PersistImportedDeploymentRequestPreparedStackProfileAwGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackProfileAwGrant } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackProfileAwGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofileawresource.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofileawresource.md new file mode 100644 index 000000000..9d1c4ed8e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofileawresource.md @@ -0,0 +1,23 @@ +# PersistImportedDeploymentRequestPreparedStackProfileAwResource + +AWS-specific binding specification + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackProfileAwResource } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackProfileAwResource = { + resources: [ + "", + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofileawstack.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofileawstack.md new file mode 100644 index 000000000..0903e6553 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofileawstack.md @@ -0,0 +1,23 @@ +# PersistImportedDeploymentRequestPreparedStackProfileAwStack + +AWS-specific binding specification + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackProfileAwStack } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackProfileAwStack = { + resources: [ + "", + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofileazure.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofileazure.md new file mode 100644 index 000000000..6d8d25a90 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofileazure.md @@ -0,0 +1,23 @@ +# PersistImportedDeploymentRequestPreparedStackProfileAzure + +Azure-specific platform permission configuration + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackProfileAzure } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackProfileAzure = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.PersistImportedDeploymentRequestPreparedStackProfileAzureBinding](../models/persistimporteddeploymentrequestpreparedstackprofileazurebinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.PersistImportedDeploymentRequestPreparedStackProfileAzureGrant](../models/persistimporteddeploymentrequestpreparedstackprofileazuregrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofileazurebinding.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofileazurebinding.md new file mode 100644 index 000000000..d15332c99 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofileazurebinding.md @@ -0,0 +1,19 @@ +# PersistImportedDeploymentRequestPreparedStackProfileAzureBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackProfileAzureBinding } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackProfileAzureBinding = + {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.PersistImportedDeploymentRequestPreparedStackProfileAzureResource](../models/persistimporteddeploymentrequestpreparedstackprofileazureresource.md) | :heavy_minus_sign: | Azure-specific binding specification | +| `stack` | [models.PersistImportedDeploymentRequestPreparedStackProfileAzureStack](../models/persistimporteddeploymentrequestpreparedstackprofileazurestack.md) | :heavy_minus_sign: | Azure-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofileazuregrant.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofileazuregrant.md new file mode 100644 index 000000000..4ef74a867 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofileazuregrant.md @@ -0,0 +1,21 @@ +# PersistImportedDeploymentRequestPreparedStackProfileAzureGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackProfileAzureGrant } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackProfileAzureGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofileazureresource.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofileazureresource.md new file mode 100644 index 000000000..98b967c1b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofileazureresource.md @@ -0,0 +1,19 @@ +# PersistImportedDeploymentRequestPreparedStackProfileAzureResource + +Azure-specific binding specification + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackProfileAzureResource } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackProfileAzureResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofileazurestack.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofileazurestack.md new file mode 100644 index 000000000..4b2c3c071 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofileazurestack.md @@ -0,0 +1,19 @@ +# PersistImportedDeploymentRequestPreparedStackProfileAzureStack + +Azure-specific binding specification + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackProfileAzureStack } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackProfileAzureStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofileconditionresource.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofileconditionresource.md new file mode 100644 index 000000000..8dbd94935 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofileconditionresource.md @@ -0,0 +1,22 @@ +# PersistImportedDeploymentRequestPreparedStackProfileConditionResource + +GCP IAM condition + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackProfileConditionResource } from "@alienplatform/platform-api/models"; + +let value: + PersistImportedDeploymentRequestPreparedStackProfileConditionResource = { + expression: "", + title: "", + }; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofileconditionstack.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofileconditionstack.md new file mode 100644 index 000000000..867bff504 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofileconditionstack.md @@ -0,0 +1,22 @@ +# PersistImportedDeploymentRequestPreparedStackProfileConditionStack + +GCP IAM condition + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackProfileConditionStack } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackProfileConditionStack = + { + expression: "", + title: "", + }; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofileeffect.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofileeffect.md new file mode 100644 index 000000000..5394270e6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofileeffect.md @@ -0,0 +1,17 @@ +# PersistImportedDeploymentRequestPreparedStackProfileEffect + +IAM effect. Defaults to Allow. + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackProfileEffect } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackProfileEffect = "Allow"; +``` + +## Values + +```typescript +"Allow" | "Deny" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofilegcp.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofilegcp.md new file mode 100644 index 000000000..1c4377913 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofilegcp.md @@ -0,0 +1,23 @@ +# PersistImportedDeploymentRequestPreparedStackProfileGcp + +GCP-specific platform permission configuration + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackProfileGcp } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackProfileGcp = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.PersistImportedDeploymentRequestPreparedStackProfileGcpBinding](../models/persistimporteddeploymentrequestpreparedstackprofilegcpbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.PersistImportedDeploymentRequestPreparedStackProfileGcpGrant](../models/persistimporteddeploymentrequestpreparedstackprofilegcpgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofilegcpbinding.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofilegcpbinding.md new file mode 100644 index 000000000..dc32e36db --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofilegcpbinding.md @@ -0,0 +1,18 @@ +# PersistImportedDeploymentRequestPreparedStackProfileGcpBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackProfileGcpBinding } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackProfileGcpBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `resource` | [models.PersistImportedDeploymentRequestPreparedStackProfileGcpResource](../models/persistimporteddeploymentrequestpreparedstackprofilegcpresource.md) | :heavy_minus_sign: | GCP-specific binding specification | +| `stack` | [models.PersistImportedDeploymentRequestPreparedStackProfileGcpStack](../models/persistimporteddeploymentrequestpreparedstackprofilegcpstack.md) | :heavy_minus_sign: | GCP-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofilegcpgrant.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofilegcpgrant.md new file mode 100644 index 000000000..2467c1d97 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofilegcpgrant.md @@ -0,0 +1,21 @@ +# PersistImportedDeploymentRequestPreparedStackProfileGcpGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackProfileGcpGrant } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackProfileGcpGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofilegcpresource.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofilegcpresource.md new file mode 100644 index 000000000..dc0ec6f92 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofilegcpresource.md @@ -0,0 +1,20 @@ +# PersistImportedDeploymentRequestPreparedStackProfileGcpResource + +GCP-specific binding specification + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackProfileGcpResource } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackProfileGcpResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `condition` | *models.PersistImportedDeploymentRequestPreparedStackProfileResourceConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofilegcpstack.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofilegcpstack.md new file mode 100644 index 000000000..6457f7d7d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofilegcpstack.md @@ -0,0 +1,20 @@ +# PersistImportedDeploymentRequestPreparedStackProfileGcpStack + +GCP-specific binding specification + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackProfileGcpStack } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackProfileGcpStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `condition` | *models.PersistImportedDeploymentRequestPreparedStackProfileStackConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofileplatforms.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofileplatforms.md new file mode 100644 index 000000000..9470540bd --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofileplatforms.md @@ -0,0 +1,19 @@ +# PersistImportedDeploymentRequestPreparedStackProfilePlatforms + +Platform-specific permission configurations + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackProfilePlatforms } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackProfilePlatforms = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | +| `aws` | [models.PersistImportedDeploymentRequestPreparedStackProfileAw](../models/persistimporteddeploymentrequestpreparedstackprofileaw.md)[] | :heavy_minus_sign: | AWS permission configurations | +| `azure` | [models.PersistImportedDeploymentRequestPreparedStackProfileAzure](../models/persistimporteddeploymentrequestpreparedstackprofileazure.md)[] | :heavy_minus_sign: | Azure permission configurations | +| `gcp` | [models.PersistImportedDeploymentRequestPreparedStackProfileGcp](../models/persistimporteddeploymentrequestpreparedstackprofilegcp.md)[] | :heavy_minus_sign: | GCP permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofileresourceconditionunion.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofileresourceconditionunion.md new file mode 100644 index 000000000..887253d13 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofileresourceconditionunion.md @@ -0,0 +1,22 @@ +# PersistImportedDeploymentRequestPreparedStackProfileResourceConditionUnion + + +## Supported Types + +### `models.PersistImportedDeploymentRequestPreparedStackProfileConditionResource` + +```typescript +const value: + models.PersistImportedDeploymentRequestPreparedStackProfileConditionResource = + { + expression: "", + title: "", + }; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofilestackconditionunion.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofilestackconditionunion.md new file mode 100644 index 000000000..832012a47 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofilestackconditionunion.md @@ -0,0 +1,21 @@ +# PersistImportedDeploymentRequestPreparedStackProfileStackConditionUnion + + +## Supported Types + +### `models.PersistImportedDeploymentRequestPreparedStackProfileConditionStack` + +```typescript +const value: + models.PersistImportedDeploymentRequestPreparedStackProfileConditionStack = { + expression: "", + title: "", + }; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofileunion.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofileunion.md new file mode 100644 index 000000000..3086935c4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprofileunion.md @@ -0,0 +1,23 @@ +# PersistImportedDeploymentRequestPreparedStackProfileUnion + +Reference to a permission set - either by name or inline definition + + +## Supported Types + +### `models.PersistImportedDeploymentRequestPreparedStackProfile` + +```typescript +const value: models.PersistImportedDeploymentRequestPreparedStackProfile = { + description: "meh rarely lamp eek whereas an nougat although hence", + id: "", + platforms: {}, +}; +``` + +### `string` + +```typescript +const value: string = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprovidedby.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprovidedby.md new file mode 100644 index 000000000..4e9697155 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackprovidedby.md @@ -0,0 +1,17 @@ +# PersistImportedDeploymentRequestPreparedStackProvidedBy + +Who can provide a stack input value. + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackProvidedBy } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackProvidedBy = "deployer"; +``` + +## Values + +```typescript +"developer" | "deployer" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackresources.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackresources.md new file mode 100644 index 000000000..3920442ba --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackresources.md @@ -0,0 +1,26 @@ +# PersistImportedDeploymentRequestPreparedStackResources + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackResources } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackResources = { + config: { + id: "", + type: "", + }, + dependencies: [], + lifecycle: "frozen", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `config` | [models.PersistImportedDeploymentRequestPreparedStackConfig](../models/persistimporteddeploymentrequestpreparedstackconfig.md) | :heavy_check_mark: | 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` | [models.PersistImportedDeploymentRequestPreparedStackDependency](../models/persistimporteddeploymentrequestpreparedstackdependency.md)[] | :heavy_check_mark: | Additional dependencies for this resource beyond those defined in the resource itself.
The total dependencies are: resource.get_dependencies() + this list | +| `enabledWhen` | *string* | :heavy_minus_sign: | 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. | +| `lifecycle` | [models.PersistImportedDeploymentRequestPreparedStackLifecycle](../models/persistimporteddeploymentrequestpreparedstacklifecycle.md) | :heavy_check_mark: | Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. | +| `remoteAccess` | *boolean* | :heavy_minus_sign: | Enable remote bindings for this resource (BYOB use case).
When true, binding params are synced to StackState's `remote_binding_params`.
Default: false (prevents sensitive data in synced state). | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstacksupportedplatform.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstacksupportedplatform.md new file mode 100644 index 000000000..679563653 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstacksupportedplatform.md @@ -0,0 +1,18 @@ +# PersistImportedDeploymentRequestPreparedStackSupportedPlatform + +Represents the target cloud platform. + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackSupportedPlatform } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackSupportedPlatform = + "local"; +``` + +## Values + +```typescript +"aws" | "gcp" | "azure" | "kubernetes" | "machines" | "local" | "test" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstacktypeboolean.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstacktypeboolean.md new file mode 100644 index 000000000..b81f8fa2d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstacktypeboolean.md @@ -0,0 +1,15 @@ +# PersistImportedDeploymentRequestPreparedStackTypeBoolean + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackTypeBoolean } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackTypeBoolean = "boolean"; +``` + +## Values + +```typescript +"boolean" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstacktypeenvenum.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstacktypeenvenum.md new file mode 100644 index 000000000..4bf265179 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstacktypeenvenum.md @@ -0,0 +1,17 @@ +# PersistImportedDeploymentRequestPreparedStackTypeEnvEnum + +Environment variable handling for a stack input mapping. + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackTypeEnvEnum } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackTypeEnvEnum = "plain"; +``` + +## Values + +```typescript +"plain" | "secret" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstacktypenumber.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstacktypenumber.md new file mode 100644 index 000000000..260fc2379 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstacktypenumber.md @@ -0,0 +1,15 @@ +# PersistImportedDeploymentRequestPreparedStackTypeNumber + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackTypeNumber } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackTypeNumber = "number"; +``` + +## Values + +```typescript +"number" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstacktypestring.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstacktypestring.md new file mode 100644 index 000000000..53d2c471b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstacktypestring.md @@ -0,0 +1,15 @@ +# PersistImportedDeploymentRequestPreparedStackTypeString + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackTypeString } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackTypeString = "string"; +``` + +## Values + +```typescript +"string" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstacktypestringlist.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstacktypestringlist.md new file mode 100644 index 000000000..baf1abac8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstacktypestringlist.md @@ -0,0 +1,16 @@ +# PersistImportedDeploymentRequestPreparedStackTypeStringList + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackTypeStringList } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackTypeStringList = + "stringList"; +``` + +## Values + +```typescript +"stringList" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstacktypeunion.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstacktypeunion.md new file mode 100644 index 000000000..a5eef3892 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstacktypeunion.md @@ -0,0 +1,18 @@ +# PersistImportedDeploymentRequestPreparedStackTypeUnion + + +## Supported Types + +### `models.PersistImportedDeploymentRequestPreparedStackTypeEnvEnum` + +```typescript +const value: models.PersistImportedDeploymentRequestPreparedStackTypeEnvEnum = + "secret"; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackvalidation.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackvalidation.md new file mode 100644 index 000000000..9b3ca47e8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackvalidation.md @@ -0,0 +1,25 @@ +# PersistImportedDeploymentRequestPreparedStackValidation + +Portable stack input validation constraints. + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestPreparedStackValidation } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestPreparedStackValidation = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | +| `format` | *string* | :heavy_minus_sign: | Semantic format hint such as url. | +| `max` | *string* | :heavy_minus_sign: | Maximum number. | +| `maxItems` | *number* | :heavy_minus_sign: | Maximum string-list items. | +| `maxLength` | *number* | :heavy_minus_sign: | Maximum string length. | +| `min` | *string* | :heavy_minus_sign: | Minimum number. | +| `minItems` | *number* | :heavy_minus_sign: | Minimum string-list items. | +| `minLength` | *number* | :heavy_minus_sign: | Minimum string length. | +| `pattern` | *string* | :heavy_minus_sign: | Portable whole-value regex pattern. | +| `values` | *string*[] | :heavy_minus_sign: | Allowed string enum values. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackvalidationunion.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackvalidationunion.md new file mode 100644 index 000000000..a75364326 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestpreparedstackvalidationunion.md @@ -0,0 +1,18 @@ +# PersistImportedDeploymentRequestPreparedStackValidationUnion + + +## Supported Types + +### `models.PersistImportedDeploymentRequestPreparedStackValidation` + +```typescript +const value: models.PersistImportedDeploymentRequestPreparedStackValidation = + {}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofile.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofile.md deleted file mode 100644 index d92201c67..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofile.md +++ /dev/null @@ -1,23 +0,0 @@ -# PersistImportedDeploymentRequestProfile - -A permission set that can be applied across different cloud platforms - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestProfile } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestProfile = { - description: "youthfully zowie infatuated", - id: "", - platforms: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | -| `description` | *string* | :heavy_check_mark: | Human-readable description of what this permission set allows | -| `id` | *string* | :heavy_check_mark: | Unique identifier for the permission set (e.g., "storage/data-read") | -| `platforms` | [models.PersistImportedDeploymentRequestProfilePlatforms](../models/persistimporteddeploymentrequestprofileplatforms.md) | :heavy_check_mark: | Platform-specific permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofileaw.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofileaw.md deleted file mode 100644 index e4249add5..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofileaw.md +++ /dev/null @@ -1,24 +0,0 @@ -# PersistImportedDeploymentRequestProfileAw - -AWS-specific platform permission configuration - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestProfileAw } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestProfileAw = { - binding: {}, - grant: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | -| `binding` | [models.PersistImportedDeploymentRequestProfileAwBinding](../models/persistimporteddeploymentrequestprofileawbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | -| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | -| `effect` | [models.PersistImportedDeploymentRequestProfileEffect](../models/persistimporteddeploymentrequestprofileeffect.md) | :heavy_minus_sign: | IAM effect. Defaults to Allow. | -| `grant` | [models.PersistImportedDeploymentRequestProfileAwGrant](../models/persistimporteddeploymentrequestprofileawgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | -| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofileawbinding.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofileawbinding.md deleted file mode 100644 index a9cd6412d..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofileawbinding.md +++ /dev/null @@ -1,18 +0,0 @@ -# PersistImportedDeploymentRequestProfileAwBinding - -Generic binding configuration for permissions - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestProfileAwBinding } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestProfileAwBinding = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -| `resource` | [models.PersistImportedDeploymentRequestProfileAwResource](../models/persistimporteddeploymentrequestprofileawresource.md) | :heavy_minus_sign: | AWS-specific binding specification | -| `stack` | [models.PersistImportedDeploymentRequestProfileAwStack](../models/persistimporteddeploymentrequestprofileawstack.md) | :heavy_minus_sign: | AWS-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofileawgrant.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofileawgrant.md deleted file mode 100644 index 642a146e5..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofileawgrant.md +++ /dev/null @@ -1,21 +0,0 @@ -# PersistImportedDeploymentRequestProfileAwGrant - -Grant permissions for a specific cloud platform - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestProfileAwGrant } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestProfileAwGrant = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | -| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | -| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | -| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | -| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofileawresource.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofileawresource.md deleted file mode 100644 index 2ee6bbf41..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofileawresource.md +++ /dev/null @@ -1,23 +0,0 @@ -# PersistImportedDeploymentRequestProfileAwResource - -AWS-specific binding specification - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestProfileAwResource } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestProfileAwResource = { - resources: [ - "", - "", - ], -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | -| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofileawstack.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofileawstack.md deleted file mode 100644 index c73801e67..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofileawstack.md +++ /dev/null @@ -1,22 +0,0 @@ -# PersistImportedDeploymentRequestProfileAwStack - -AWS-specific binding specification - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestProfileAwStack } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestProfileAwStack = { - resources: [ - "", - ], -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | -| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofileazure.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofileazure.md deleted file mode 100644 index 417ba3aa8..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofileazure.md +++ /dev/null @@ -1,23 +0,0 @@ -# PersistImportedDeploymentRequestProfileAzure - -Azure-specific platform permission configuration - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestProfileAzure } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestProfileAzure = { - binding: {}, - grant: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | -| `binding` | [models.PersistImportedDeploymentRequestProfileAzureBinding](../models/persistimporteddeploymentrequestprofileazurebinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | -| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | -| `grant` | [models.PersistImportedDeploymentRequestProfileAzureGrant](../models/persistimporteddeploymentrequestprofileazuregrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | -| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofileazurebinding.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofileazurebinding.md deleted file mode 100644 index 8cd58321e..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofileazurebinding.md +++ /dev/null @@ -1,18 +0,0 @@ -# PersistImportedDeploymentRequestProfileAzureBinding - -Generic binding configuration for permissions - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestProfileAzureBinding } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestProfileAzureBinding = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -| `resource` | [models.PersistImportedDeploymentRequestProfileAzureResource](../models/persistimporteddeploymentrequestprofileazureresource.md) | :heavy_minus_sign: | Azure-specific binding specification | -| `stack` | [models.PersistImportedDeploymentRequestProfileAzureStack](../models/persistimporteddeploymentrequestprofileazurestack.md) | :heavy_minus_sign: | Azure-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofileazuregrant.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofileazuregrant.md deleted file mode 100644 index ab25de34e..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofileazuregrant.md +++ /dev/null @@ -1,21 +0,0 @@ -# PersistImportedDeploymentRequestProfileAzureGrant - -Grant permissions for a specific cloud platform - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestProfileAzureGrant } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestProfileAzureGrant = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | -| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | -| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | -| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | -| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofileazureresource.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofileazureresource.md deleted file mode 100644 index 914a35b94..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofileazureresource.md +++ /dev/null @@ -1,19 +0,0 @@ -# PersistImportedDeploymentRequestProfileAzureResource - -Azure-specific binding specification - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestProfileAzureResource } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestProfileAzureResource = { - scope: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofileazurestack.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofileazurestack.md deleted file mode 100644 index a9529269d..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofileazurestack.md +++ /dev/null @@ -1,19 +0,0 @@ -# PersistImportedDeploymentRequestProfileAzureStack - -Azure-specific binding specification - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestProfileAzureStack } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestProfileAzureStack = { - scope: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofileconditionresource.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofileconditionresource.md deleted file mode 100644 index 44b8d62c0..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofileconditionresource.md +++ /dev/null @@ -1,21 +0,0 @@ -# PersistImportedDeploymentRequestProfileConditionResource - -GCP IAM condition - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestProfileConditionResource } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestProfileConditionResource = { - expression: "", - title: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `expression` | *string* | :heavy_check_mark: | N/A | -| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofileconditionstack.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofileconditionstack.md deleted file mode 100644 index fa3672366..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofileconditionstack.md +++ /dev/null @@ -1,21 +0,0 @@ -# PersistImportedDeploymentRequestProfileConditionStack - -GCP IAM condition - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestProfileConditionStack } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestProfileConditionStack = { - expression: "", - title: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `expression` | *string* | :heavy_check_mark: | N/A | -| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofileeffect.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofileeffect.md deleted file mode 100644 index 1605c1b90..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofileeffect.md +++ /dev/null @@ -1,17 +0,0 @@ -# PersistImportedDeploymentRequestProfileEffect - -IAM effect. Defaults to Allow. - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestProfileEffect } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestProfileEffect = "Deny"; -``` - -## Values - -```typescript -"Allow" | "Deny" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofilegcp.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofilegcp.md deleted file mode 100644 index 5b7ac7145..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofilegcp.md +++ /dev/null @@ -1,23 +0,0 @@ -# PersistImportedDeploymentRequestProfileGcp - -GCP-specific platform permission configuration - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestProfileGcp } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestProfileGcp = { - binding: {}, - grant: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -| `binding` | [models.PersistImportedDeploymentRequestProfileGcpBinding](../models/persistimporteddeploymentrequestprofilegcpbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | -| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | -| `grant` | [models.PersistImportedDeploymentRequestProfileGcpGrant](../models/persistimporteddeploymentrequestprofilegcpgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | -| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofilegcpbinding.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofilegcpbinding.md deleted file mode 100644 index b1634d5eb..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofilegcpbinding.md +++ /dev/null @@ -1,18 +0,0 @@ -# PersistImportedDeploymentRequestProfileGcpBinding - -Generic binding configuration for permissions - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestProfileGcpBinding } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestProfileGcpBinding = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | -| `resource` | [models.PersistImportedDeploymentRequestProfileGcpResource](../models/persistimporteddeploymentrequestprofilegcpresource.md) | :heavy_minus_sign: | GCP-specific binding specification | -| `stack` | [models.PersistImportedDeploymentRequestProfileGcpStack](../models/persistimporteddeploymentrequestprofilegcpstack.md) | :heavy_minus_sign: | GCP-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofilegcpgrant.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofilegcpgrant.md deleted file mode 100644 index 1d04fed31..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofilegcpgrant.md +++ /dev/null @@ -1,21 +0,0 @@ -# PersistImportedDeploymentRequestProfileGcpGrant - -Grant permissions for a specific cloud platform - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestProfileGcpGrant } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestProfileGcpGrant = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | -| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | -| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | -| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | -| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofilegcpresource.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofilegcpresource.md deleted file mode 100644 index 6b611daef..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofilegcpresource.md +++ /dev/null @@ -1,20 +0,0 @@ -# PersistImportedDeploymentRequestProfileGcpResource - -GCP-specific binding specification - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestProfileGcpResource } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestProfileGcpResource = { - scope: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | -| `condition` | *models.PersistImportedDeploymentRequestProfileResourceConditionUnion* | :heavy_minus_sign: | N/A | -| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofilegcpstack.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofilegcpstack.md deleted file mode 100644 index c415a4ab0..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofilegcpstack.md +++ /dev/null @@ -1,20 +0,0 @@ -# PersistImportedDeploymentRequestProfileGcpStack - -GCP-specific binding specification - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestProfileGcpStack } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestProfileGcpStack = { - scope: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `condition` | *models.PersistImportedDeploymentRequestProfileStackConditionUnion* | :heavy_minus_sign: | N/A | -| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofileplatforms.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofileplatforms.md deleted file mode 100644 index df4bf146c..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofileplatforms.md +++ /dev/null @@ -1,19 +0,0 @@ -# PersistImportedDeploymentRequestProfilePlatforms - -Platform-specific permission configurations - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestProfilePlatforms } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestProfilePlatforms = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | -| `aws` | [models.PersistImportedDeploymentRequestProfileAw](../models/persistimporteddeploymentrequestprofileaw.md)[] | :heavy_minus_sign: | AWS permission configurations | -| `azure` | [models.PersistImportedDeploymentRequestProfileAzure](../models/persistimporteddeploymentrequestprofileazure.md)[] | :heavy_minus_sign: | Azure permission configurations | -| `gcp` | [models.PersistImportedDeploymentRequestProfileGcp](../models/persistimporteddeploymentrequestprofilegcp.md)[] | :heavy_minus_sign: | GCP permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofileresourceconditionunion.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofileresourceconditionunion.md deleted file mode 100644 index 313dd4d81..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofileresourceconditionunion.md +++ /dev/null @@ -1,20 +0,0 @@ -# PersistImportedDeploymentRequestProfileResourceConditionUnion - - -## Supported Types - -### `models.PersistImportedDeploymentRequestProfileConditionResource` - -```typescript -const value: models.PersistImportedDeploymentRequestProfileConditionResource = { - expression: "", - title: "", -}; -``` - -### `any` - -```typescript -const value: any = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofilestackconditionunion.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofilestackconditionunion.md deleted file mode 100644 index b81e87545..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofilestackconditionunion.md +++ /dev/null @@ -1,20 +0,0 @@ -# PersistImportedDeploymentRequestProfileStackConditionUnion - - -## Supported Types - -### `models.PersistImportedDeploymentRequestProfileConditionStack` - -```typescript -const value: models.PersistImportedDeploymentRequestProfileConditionStack = { - expression: "", - title: "", -}; -``` - -### `any` - -```typescript -const value: any = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofileunion.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofileunion.md deleted file mode 100644 index 7a556fb64..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprofileunion.md +++ /dev/null @@ -1,23 +0,0 @@ -# PersistImportedDeploymentRequestProfileUnion - -Reference to a permission set - either by name or inline definition - - -## Supported Types - -### `models.PersistImportedDeploymentRequestProfile` - -```typescript -const value: models.PersistImportedDeploymentRequestProfile = { - description: "youthfully zowie infatuated", - id: "", - platforms: {}, -}; -``` - -### `string` - -```typescript -const value: string = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprovidedby.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprovidedby.md deleted file mode 100644 index 7c2ad6a3b..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestprovidedby.md +++ /dev/null @@ -1,17 +0,0 @@ -# PersistImportedDeploymentRequestProvidedBy - -Who can provide a stack input value. - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestProvidedBy } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestProvidedBy = "deployer"; -``` - -## Values - -```typescript -"developer" | "deployer" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestresources.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestresources.md deleted file mode 100644 index fc307719c..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestresources.md +++ /dev/null @@ -1,25 +0,0 @@ -# PersistImportedDeploymentRequestResources - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestResources } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestResources = { - config: { - id: "", - type: "", - }, - dependencies: [], - lifecycle: "live", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `config` | [models.PersistImportedDeploymentRequestConfig](../models/persistimporteddeploymentrequestconfig.md) | :heavy_check_mark: | 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` | [models.PersistImportedDeploymentRequestDependency](../models/persistimporteddeploymentrequestdependency.md)[] | :heavy_check_mark: | Additional dependencies for this resource beyond those defined in the resource itself.
The total dependencies are: resource.get_dependencies() + this list | -| `lifecycle` | [models.PersistImportedDeploymentRequestLifecycle](../models/persistimporteddeploymentrequestlifecycle.md) | :heavy_check_mark: | Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. | -| `remoteAccess` | *boolean* | :heavy_minus_sign: | Enable remote bindings for this resource (BYOB use case).
When true, binding params are synced to StackState's `remote_binding_params`.
Default: false (prevents sensitive data in synced state). | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestruntimemetadata.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestruntimemetadata.md index 4c6bb6a03..8673cc979 100644 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestruntimemetadata.md +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestruntimemetadata.md @@ -14,9 +14,13 @@ let value: PersistImportedDeploymentRequestRuntimeMetadata = {}; ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `lastSyncedEnvVarsHash` | *string* | :heavy_minus_sign: | Hash of the environment variables snapshot that was last synced to the vault
Used to avoid redundant sync operations during incremental deployment | -| `lastSyncedSecretNames` | *string*[] | :heavy_minus_sign: | Exact vault keys owned by the deployment secret synchronizer. This
inventory lets a later snapshot delete removed keys without listing or
touching unrelated values in the same vault. | -| `preparedStack` | *models.PersistImportedDeploymentRequestPreparedStackUnion* | :heavy_minus_sign: | N/A | -| `registryAccessGranted` | *boolean* | :heavy_minus_sign: | Whether cross-account registry access has been successfully granted.
Set to true after the manager successfully sets the ECR/GAR repo policy
for this deployment's target account. Prevents redundant API calls on
every reconcile tick. | \ No newline at end of file +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `initialSetupAuthority` | [models.PersistImportedDeploymentRequestInitialSetupAuthority](../models/persistimporteddeploymentrequestinitialsetupauthority.md) | :heavy_minus_sign: | Actor that owns structural work during the initial setup phase. | +| `lastSyncedEnvVarsHash` | *string* | :heavy_minus_sign: | Hash of the environment variables snapshot that was last synced to the vault
Used to avoid redundant sync operations during incremental deployment | +| `lastSyncedSecretNames` | *string*[] | :heavy_minus_sign: | Exact vault keys owned by the deployment secret synchronizer. This
inventory lets a later snapshot delete removed keys without listing or
touching unrelated values in the same vault. | +| `pendingPreparedStack` | *models.PersistImportedDeploymentRequestPendingPreparedStackUnion* | :heavy_minus_sign: | N/A | +| `persistedGateAnswers` | Record | :heavy_minus_sign: | Canonical resolved answers for inputs that gate Frozen resources,
keyed by input id, recorded when the deployment is created or its
setup import registers.

A frozen gate's answer is fixed for the deployment's lifetime: the
update path refuses input values that conflict with these, and a Live
resource sharing such an input resolves the persisted answer forever. | +| `preparedStack` | *models.PersistImportedDeploymentRequestPreparedStackUnion* | :heavy_minus_sign: | N/A | +| `registryAccessGranted` | *boolean* | :heavy_minus_sign: | Whether cross-account registry access has been successfully granted.
Set to true after the manager successfully sets the ECR/GAR repo policy
for this deployment's target account. Prevents redundant API calls on
every reconcile tick. | +| `setupUpdateAuthorization` | *models.PersistImportedDeploymentRequestSetupUpdateAuthorizationUnion* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestsetupupdateauthorization.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestsetupupdateauthorization.md new file mode 100644 index 000000000..631635f1c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestsetupupdateauthorization.md @@ -0,0 +1,31 @@ +# PersistImportedDeploymentRequestSetupUpdateAuthorization + +One-shot authority for a setup re-import to replace setup-owned resources. + +## Example Usage + +```typescript +import { PersistImportedDeploymentRequestSetupUpdateAuthorization } from "@alienplatform/platform-api/models"; + +let value: PersistImportedDeploymentRequestSetupUpdateAuthorization = { + baselineFrozenDigest: "", + nonce: "", + releaseId: "", + setupFingerprint: "", + setupFingerprintVersion: 956709, + setupTarget: "", + targetFrozenDigest: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | +| `baselineFrozenDigest` | *string* | :heavy_check_mark: | Frozen resource projection from the last successful deployment. | +| `nonce` | *string* | :heavy_check_mark: | Unique revision used by persistence layers for compare-and-swap updates. | +| `releaseId` | *string* | :heavy_check_mark: | Release whose stack was prepared by setup. | +| `setupFingerprint` | *string* | :heavy_check_mark: | Exact setup artifact revision that authored this authority. | +| `setupFingerprintVersion` | *number* | :heavy_check_mark: | Setup fingerprint contract version. | +| `setupTarget` | *string* | :heavy_check_mark: | Stable setup target recorded on the imported deployment. | +| `targetFrozenDigest` | *string* | :heavy_check_mark: | Frozen resource projection prepared by the setup re-import. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestsetupupdateauthorizationunion.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestsetupupdateauthorizationunion.md new file mode 100644 index 000000000..80a1d1a2a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestsetupupdateauthorizationunion.md @@ -0,0 +1,25 @@ +# PersistImportedDeploymentRequestSetupUpdateAuthorizationUnion + + +## Supported Types + +### `models.PersistImportedDeploymentRequestSetupUpdateAuthorization` + +```typescript +const value: models.PersistImportedDeploymentRequestSetupUpdateAuthorization = { + baselineFrozenDigest: "", + nonce: "", + releaseId: "", + setupFingerprint: "", + setupFingerprintVersion: 956709, + setupTarget: "", + targetFrozenDigest: "", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestsupportedplatform.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestsupportedplatform.md deleted file mode 100644 index 6238b2055..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestsupportedplatform.md +++ /dev/null @@ -1,17 +0,0 @@ -# PersistImportedDeploymentRequestSupportedPlatform - -Represents the target cloud platform. - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestSupportedPlatform } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestSupportedPlatform = "test"; -``` - -## Values - -```typescript -"aws" | "gcp" | "azure" | "kubernetes" | "machines" | "local" | "test" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequesttypeboolean.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequesttypeboolean.md deleted file mode 100644 index ef3e931af..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequesttypeboolean.md +++ /dev/null @@ -1,15 +0,0 @@ -# PersistImportedDeploymentRequestTypeBoolean - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestTypeBoolean } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestTypeBoolean = "boolean"; -``` - -## Values - -```typescript -"boolean" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequesttypeenvenum.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequesttypeenvenum.md deleted file mode 100644 index 70d455d2b..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequesttypeenvenum.md +++ /dev/null @@ -1,17 +0,0 @@ -# PersistImportedDeploymentRequestTypeEnvEnum - -Environment variable handling for a stack input mapping. - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestTypeEnvEnum } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestTypeEnvEnum = "plain"; -``` - -## Values - -```typescript -"plain" | "secret" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequesttypenumber.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequesttypenumber.md deleted file mode 100644 index fde8c46c3..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequesttypenumber.md +++ /dev/null @@ -1,15 +0,0 @@ -# PersistImportedDeploymentRequestTypeNumber - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestTypeNumber } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestTypeNumber = "number"; -``` - -## Values - -```typescript -"number" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequesttypestring.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequesttypestring.md deleted file mode 100644 index a606b8512..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequesttypestring.md +++ /dev/null @@ -1,15 +0,0 @@ -# PersistImportedDeploymentRequestTypeString - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestTypeString } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestTypeString = "string"; -``` - -## Values - -```typescript -"string" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequesttypestringlist.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequesttypestringlist.md deleted file mode 100644 index 762b46a2c..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequesttypestringlist.md +++ /dev/null @@ -1,15 +0,0 @@ -# PersistImportedDeploymentRequestTypeStringList - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestTypeStringList } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestTypeStringList = "stringList"; -``` - -## Values - -```typescript -"stringList" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequesttypeunion.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequesttypeunion.md deleted file mode 100644 index a616336e6..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequesttypeunion.md +++ /dev/null @@ -1,17 +0,0 @@ -# PersistImportedDeploymentRequestTypeUnion - - -## Supported Types - -### `models.PersistImportedDeploymentRequestTypeEnvEnum` - -```typescript -const value: models.PersistImportedDeploymentRequestTypeEnvEnum = "secret"; -``` - -### `any` - -```typescript -const value: any = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestvalidation.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestvalidation.md deleted file mode 100644 index c2b37f2b0..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestvalidation.md +++ /dev/null @@ -1,25 +0,0 @@ -# PersistImportedDeploymentRequestValidation - -Portable stack input validation constraints. - -## Example Usage - -```typescript -import { PersistImportedDeploymentRequestValidation } from "@alienplatform/platform-api/models"; - -let value: PersistImportedDeploymentRequestValidation = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `format` | *string* | :heavy_minus_sign: | Semantic format hint such as url. | -| `max` | *string* | :heavy_minus_sign: | Maximum number. | -| `maxItems` | *number* | :heavy_minus_sign: | Maximum string-list items. | -| `maxLength` | *number* | :heavy_minus_sign: | Maximum string length. | -| `min` | *string* | :heavy_minus_sign: | Minimum number. | -| `minItems` | *number* | :heavy_minus_sign: | Minimum string-list items. | -| `minLength` | *number* | :heavy_minus_sign: | Minimum string length. | -| `pattern` | *string* | :heavy_minus_sign: | Portable whole-value regex pattern. | -| `values` | *string*[] | :heavy_minus_sign: | Allowed string enum values. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestvalidationunion.md b/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestvalidationunion.md deleted file mode 100644 index cfb9c1e06..000000000 --- a/client-sdks/platform/typescript/docs/models/persistimporteddeploymentrequestvalidationunion.md +++ /dev/null @@ -1,17 +0,0 @@ -# PersistImportedDeploymentRequestValidationUnion - - -## Supported Types - -### `models.PersistImportedDeploymentRequestValidation` - -```typescript -const value: models.PersistImportedDeploymentRequestValidation = {}; -``` - -### `any` - -```typescript -const value: any = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/phase.md b/client-sdks/platform/typescript/docs/models/phase.md deleted file mode 100644 index 99ecbaa49..000000000 --- a/client-sdks/platform/typescript/docs/models/phase.md +++ /dev/null @@ -1,22 +0,0 @@ -# Phase - -Phase of a deployment at which a failure occurred. - -Derived from the source deployment status: `preflights-failed` → -`Preflights`, `provisioning-failed` → `Provisioning`, `update-failed` → -`Updating`, `delete-failed` → `Deleting`. -`refresh-failed` is modelled separately via `DeploymentDegraded`. - -## Example Usage - -```typescript -import { Phase } from "@alienplatform/platform-api/models"; - -let value: Phase = "provisioning"; -``` - -## Values - -```typescript -"preflights" | "provisioning" | "updating" | "deleting" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/pinreleaserequest.md b/client-sdks/platform/typescript/docs/models/pinreleaserequest.md index 4199ebaa1..311945c76 100644 --- a/client-sdks/platform/typescript/docs/models/pinreleaserequest.md +++ b/client-sdks/platform/typescript/docs/models/pinreleaserequest.md @@ -14,6 +14,6 @@ let value: PinReleaseRequest = { ## Fields -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | -| `releaseId` | *string* | :heavy_minus_sign: | Release ID to pin the deployment to. Set to null to unpin and use active release. | rel_WbhQgksrawSKIpEN0NAssHX9 | \ No newline at end of file +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `releaseId` | *string* | :heavy_minus_sign: | Release ID to pin the deployment to. Set to null to resume its followed channel. | rel_WbhQgksrawSKIpEN0NAssHX9 | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/prepareddeploymentstackresources.md b/client-sdks/platform/typescript/docs/models/prepareddeploymentstackresources.md index 71ecffac9..bca4536a6 100644 --- a/client-sdks/platform/typescript/docs/models/prepareddeploymentstackresources.md +++ b/client-sdks/platform/typescript/docs/models/prepareddeploymentstackresources.md @@ -17,9 +17,10 @@ let value: PreparedDeploymentStackResources = { ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `config` | [models.PreparedDeploymentStackConfig](../models/prepareddeploymentstackconfig.md) | :heavy_check_mark: | 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` | [models.PreparedDeploymentStackDependency](../models/prepareddeploymentstackdependency.md)[] | :heavy_check_mark: | Additional dependencies for this resource beyond those defined in the resource itself.
The total dependencies are: resource.get_dependencies() + this list | -| `lifecycle` | [models.PreparedDeploymentStackLifecycle](../models/prepareddeploymentstacklifecycle.md) | :heavy_check_mark: | Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. | -| `remoteAccess` | *boolean* | :heavy_minus_sign: | Enable remote bindings for this resource (BYOB use case).
When true, binding params are synced to StackState's `remote_binding_params`.
Default: false (prevents sensitive data in synced state). | \ No newline at end of file +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `config` | [models.PreparedDeploymentStackConfig](../models/prepareddeploymentstackconfig.md) | :heavy_check_mark: | 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` | [models.PreparedDeploymentStackDependency](../models/prepareddeploymentstackdependency.md)[] | :heavy_check_mark: | Additional dependencies for this resource beyond those defined in the resource itself.
The total dependencies are: resource.get_dependencies() + this list | +| `enabledWhen` | *string* | :heavy_minus_sign: | 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. | +| `lifecycle` | [models.PreparedDeploymentStackLifecycle](../models/prepareddeploymentstacklifecycle.md) | :heavy_check_mark: | Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. | +| `remoteAccess` | *boolean* | :heavy_minus_sign: | Enable remote bindings for this resource (BYOB use case).
When true, binding params are synced to StackState's `remote_binding_params`.
Default: false (prevents sensitive data in synced state). | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/previouserror.md b/client-sdks/platform/typescript/docs/models/previouserror.md deleted file mode 100644 index b1c7ad2e3..000000000 --- a/client-sdks/platform/typescript/docs/models/previouserror.md +++ /dev/null @@ -1,34 +0,0 @@ -# PreviousError - -Canonical error container that provides a structured way to represent errors -with rich metadata including error codes, human-readable messages, context, -and chaining capabilities for error propagation. - -This struct is designed to be both machine-readable and user-friendly, -supporting serialization for API responses and detailed error reporting -in distributed systems. - -## Example Usage - -```typescript -import { PreviousError } from "@alienplatform/platform-api/models"; - -let value: PreviousError = { - code: "", - internal: true, - message: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `code` | *string* | :heavy_check_mark: | A unique identifier for the type of error.

This should be a short, machine-readable string that can be used
by clients to programmatically handle different error types.
Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" | -| `context` | *any* | :heavy_minus_sign: | Additional diagnostic information about the error context.

This optional field can contain structured data providing more details
about the error, such as validation errors, request parameters that
caused the issue, or other relevant context information. | -| `hint` | *string* | :heavy_minus_sign: | Optional human-facing remediation hint. | -| `httpStatusCode` | *number* | :heavy_minus_sign: | HTTP status code for this error.

Used when converting the error to an HTTP response. If None, falls back to
the error type's default status code or 500. | -| `internal` | *boolean* | :heavy_check_mark: | Indicates if this is an internal error that should not be exposed to users.

When `true`, this error contains sensitive information or implementation
details that should not be shown to end-users. Such errors should be
logged for debugging but replaced with generic error messages in responses. | -| `message` | *string* | :heavy_check_mark: | Human-readable error message.

This message should be clear and actionable for developers or end-users,
providing context about what went wrong and potentially how to fix it. | -| `retryable` | *boolean* | :heavy_minus_sign: | Indicates whether the operation that caused the error should be retried.

When `true`, the error is transient and the operation might succeed
if attempted again. When `false`, retrying the same operation is
unlikely to succeed without changes. | -| `source` | *any* | :heavy_minus_sign: | The underlying error that caused this error, creating an error chain.

This allows for proper error propagation and debugging by maintaining
the full context of how an error occurred through multiple layers
of an application. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/previouserrorunion.md b/client-sdks/platform/typescript/docs/models/previouserrorunion.md deleted file mode 100644 index b911c916f..000000000 --- a/client-sdks/platform/typescript/docs/models/previouserrorunion.md +++ /dev/null @@ -1,21 +0,0 @@ -# PreviousErrorUnion - - -## Supported Types - -### `models.PreviousError` - -```typescript -const value: models.PreviousError = { - code: "", - internal: true, - message: "", -}; -``` - -### `any` - -```typescript -const value: any = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/progress.md b/client-sdks/platform/typescript/docs/models/progress.md deleted file mode 100644 index 9bb04cac6..000000000 --- a/client-sdks/platform/typescript/docs/models/progress.md +++ /dev/null @@ -1,27 +0,0 @@ -# Progress - -Progress information for image push operations - -## Example Usage - -```typescript -import { Progress } from "@alienplatform/platform-api/models"; - -let value: Progress = { - bytesUploaded: 641278, - layersUploaded: 340252, - operation: "", - totalBytes: 238665, - totalLayers: 685450, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| --------------------------------- | --------------------------------- | --------------------------------- | --------------------------------- | -| `bytesUploaded` | *number* | :heavy_check_mark: | Bytes uploaded so far | -| `layersUploaded` | *number* | :heavy_check_mark: | Number of layers uploaded so far | -| `operation` | *string* | :heavy_check_mark: | Current operation being performed | -| `totalBytes` | *number* | :heavy_check_mark: | Total bytes to upload | -| `totalLayers` | *number* | :heavy_check_mark: | Total number of layers to upload | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/progressunion.md b/client-sdks/platform/typescript/docs/models/progressunion.md deleted file mode 100644 index 37877eca5..000000000 --- a/client-sdks/platform/typescript/docs/models/progressunion.md +++ /dev/null @@ -1,23 +0,0 @@ -# ProgressUnion - - -## Supported Types - -### `models.Progress` - -```typescript -const value: models.Progress = { - bytesUploaded: 641278, - layersUploaded: 340252, - operation: "", - totalBytes: 238665, - totalLayers: 685450, -}; -``` - -### `any` - -```typescript -const value: any = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/project.md b/client-sdks/platform/typescript/docs/models/project.md index 9cfe07d23..29269f3f7 100644 --- a/client-sdks/platform/typescript/docs/models/project.md +++ b/client-sdks/platform/typescript/docs/models/project.md @@ -38,6 +38,6 @@ let value: Project = { | `packagesConfig` | [models.ProjectPackagesConfig](../models/projectpackagesconfig.md) | :heavy_minus_sign: | Configuration for embedded packages (CLI, CloudFormation, Helm, Terraform) | | | `domainId` | *string* | :heavy_minus_sign: | Selected domain for this project (null = default system domain) | dom_469m0agk8luj4s16sakmmpdd | | `defaultManagers` | [models.ProjectDefaultManagers](../models/projectdefaultmanagers.md) | :heavy_minus_sign: | Project default private managers for new push deployments. | | -| `customerConnections` | [models.ProjectCustomerConnections](../models/projectcustomerconnections.md) | :heavy_minus_sign: | Customer infrastructure offered by this Project through exact built-in or application-authored sources. | | +| `projectCapabilities` | [models.ProjectProjectCapabilities](../models/projectprojectcapabilities.md) | :heavy_minus_sign: | Capabilities this Project may offer through setup links. | | | `createdAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | | `workspaceId` | *string* | :heavy_check_mark: | Unique identifier for the workspace. | ws_It13CUaGEhLLAB87simX0 | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/projectaccess.md b/client-sdks/platform/typescript/docs/models/projectaccess.md new file mode 100644 index 000000000..f93466cbe --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/projectaccess.md @@ -0,0 +1,15 @@ +# ProjectAccess + +## Example Usage + +```typescript +import { ProjectAccess } from "@alienplatform/platform-api/models"; + +let value: ProjectAccess = "read-write"; +``` + +## Values + +```typescript +"read-write" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/projectallowedprovider.md b/client-sdks/platform/typescript/docs/models/projectallowedprovider.md index 6941c8db3..eecd07ddf 100644 --- a/client-sdks/platform/typescript/docs/models/projectallowedprovider.md +++ b/client-sdks/platform/typescript/docs/models/projectallowedprovider.md @@ -5,11 +5,11 @@ ```typescript import { ProjectAllowedProvider } from "@alienplatform/platform-api/models"; -let value: ProjectAllowedProvider = "anthropic"; +let value: ProjectAllowedProvider = "databricks"; ``` ## Values ```typescript -"aws-bedrock" | "gcp-vertex" | "azure-foundry" | "anthropic" +"aws-bedrock" | "gcp-vertex" | "azure-foundry" | "anthropic" | "databricks" | "openai" ``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/projectbuckets.md b/client-sdks/platform/typescript/docs/models/projectbuckets.md new file mode 100644 index 000000000..4c361f24c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/projectbuckets.md @@ -0,0 +1,19 @@ +# ProjectBuckets + +## Example Usage + +```typescript +import { ProjectBuckets } from "@alienplatform/platform-api/models"; + +let value: ProjectBuckets = { + enabled: false, + access: "read-write", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `enabled` | *boolean* | :heavy_check_mark: | N/A | +| `access` | [models.ProjectAccess](../models/projectaccess.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/projectcapabilities.md b/client-sdks/platform/typescript/docs/models/projectcapabilities.md new file mode 100644 index 000000000..767010391 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/projectcapabilities.md @@ -0,0 +1,19 @@ +# ProjectCapabilities + +## Example Usage + +```typescript +import { ProjectCapabilities } from "@alienplatform/platform-api/models"; + +let value: ProjectCapabilities = { + schemaVersion: 322.19, + capabilities: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `schemaVersion` | *number* | :heavy_check_mark: | N/A | +| `capabilities` | [models.ProjectCapabilitiesCapabilities](../models/projectcapabilitiescapabilities.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/projectcapabilitiesaccess.md b/client-sdks/platform/typescript/docs/models/projectcapabilitiesaccess.md new file mode 100644 index 000000000..4130dcca8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/projectcapabilitiesaccess.md @@ -0,0 +1,15 @@ +# ProjectCapabilitiesAccess + +## Example Usage + +```typescript +import { ProjectCapabilitiesAccess } from "@alienplatform/platform-api/models"; + +let value: ProjectCapabilitiesAccess = "read-write"; +``` + +## Values + +```typescript +"read-write" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/projectcapabilitiesallowedprovider.md b/client-sdks/platform/typescript/docs/models/projectcapabilitiesallowedprovider.md new file mode 100644 index 000000000..ae8a5a981 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/projectcapabilitiesallowedprovider.md @@ -0,0 +1,15 @@ +# ProjectCapabilitiesAllowedProvider + +## Example Usage + +```typescript +import { ProjectCapabilitiesAllowedProvider } from "@alienplatform/platform-api/models"; + +let value: ProjectCapabilitiesAllowedProvider = "anthropic"; +``` + +## Values + +```typescript +"aws-bedrock" | "gcp-vertex" | "azure-foundry" | "anthropic" | "databricks" | "openai" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/projectcapabilitiesbuckets.md b/client-sdks/platform/typescript/docs/models/projectcapabilitiesbuckets.md new file mode 100644 index 000000000..c1b9fc42b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/projectcapabilitiesbuckets.md @@ -0,0 +1,19 @@ +# ProjectCapabilitiesBuckets + +## Example Usage + +```typescript +import { ProjectCapabilitiesBuckets } from "@alienplatform/platform-api/models"; + +let value: ProjectCapabilitiesBuckets = { + enabled: true, + access: "read-write", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `enabled` | *boolean* | :heavy_check_mark: | N/A | +| `access` | [models.ProjectCapabilitiesAccess](../models/projectcapabilitiesaccess.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/projectcapabilitiescapabilities.md b/client-sdks/platform/typescript/docs/models/projectcapabilitiescapabilities.md new file mode 100644 index 000000000..507605d42 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/projectcapabilitiescapabilities.md @@ -0,0 +1,19 @@ +# ProjectCapabilitiesCapabilities + +## Example Usage + +```typescript +import { ProjectCapabilitiesCapabilities } from "@alienplatform/platform-api/models"; + +let value: ProjectCapabilitiesCapabilities = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `deployments` | [models.ProjectCapabilitiesDeployments](../models/projectcapabilitiesdeployments.md) | :heavy_minus_sign: | N/A | +| `keys` | [models.ProjectCapabilitiesKeys](../models/projectcapabilitieskeys.md) | :heavy_minus_sign: | N/A | +| `models` | [models.ProjectCapabilitiesModels](../models/projectcapabilitiesmodels.md) | :heavy_minus_sign: | N/A | +| `buckets` | [models.ProjectCapabilitiesBuckets](../models/projectcapabilitiesbuckets.md) | :heavy_minus_sign: | N/A | +| `registry` | [models.ProjectCapabilitiesRegistry](../models/projectcapabilitiesregistry.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/projectcapabilitiesclientapi.md b/client-sdks/platform/typescript/docs/models/projectcapabilitiesclientapi.md new file mode 100644 index 000000000..690a51ac5 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/projectcapabilitiesclientapi.md @@ -0,0 +1,15 @@ +# ProjectCapabilitiesClientApi + +## Example Usage + +```typescript +import { ProjectCapabilitiesClientApi } from "@alienplatform/platform-api/models"; + +let value: ProjectCapabilitiesClientApi = "openai-responses"; +``` + +## Values + +```typescript +"openai-chat" | "openai-responses" | "anthropic-messages" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/projectcapabilitiescredentialpolicy.md b/client-sdks/platform/typescript/docs/models/projectcapabilitiescredentialpolicy.md new file mode 100644 index 000000000..c93cbadc3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/projectcapabilitiescredentialpolicy.md @@ -0,0 +1,15 @@ +# ProjectCapabilitiesCredentialPolicy + +## Example Usage + +```typescript +import { ProjectCapabilitiesCredentialPolicy } from "@alienplatform/platform-api/models"; + +let value: ProjectCapabilitiesCredentialPolicy = "push-and-pull"; +``` + +## Values + +```typescript +"pull-only" | "push-and-pull" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/projectcapabilitiesdeployments.md b/client-sdks/platform/typescript/docs/models/projectcapabilitiesdeployments.md new file mode 100644 index 000000000..ef4f7491f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/projectcapabilitiesdeployments.md @@ -0,0 +1,17 @@ +# ProjectCapabilitiesDeployments + +## Example Usage + +```typescript +import { ProjectCapabilitiesDeployments } from "@alienplatform/platform-api/models"; + +let value: ProjectCapabilitiesDeployments = { + enabled: false, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `enabled` | *boolean* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/projectcapabilitieskeys.md b/client-sdks/platform/typescript/docs/models/projectcapabilitieskeys.md new file mode 100644 index 000000000..bc9804956 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/projectcapabilitieskeys.md @@ -0,0 +1,19 @@ +# ProjectCapabilitiesKeys + +## Example Usage + +```typescript +import { ProjectCapabilitiesKeys } from "@alienplatform/platform-api/models"; + +let value: ProjectCapabilitiesKeys = { + enabled: false, + applicationEncryption: true, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------- | ----------------------- | ----------------------- | ----------------------- | +| `enabled` | *boolean* | :heavy_check_mark: | N/A | +| `applicationEncryption` | *boolean* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/projectcapabilitiesmodels.md b/client-sdks/platform/typescript/docs/models/projectcapabilitiesmodels.md new file mode 100644 index 000000000..82126dcab --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/projectcapabilitiesmodels.md @@ -0,0 +1,29 @@ +# ProjectCapabilitiesModels + +## Example Usage + +```typescript +import { ProjectCapabilitiesModels } from "@alienplatform/platform-api/models"; + +let value: ProjectCapabilitiesModels = { + enabled: true, + allowedProviders: [ + "azure-foundry", + ], + requirements: [ + { + publicModelId: "", + clientApis: [], + required: false, + }, + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| `enabled` | *boolean* | :heavy_check_mark: | N/A | +| `allowedProviders` | [models.ProjectCapabilitiesAllowedProvider](../models/projectcapabilitiesallowedprovider.md)[] | :heavy_check_mark: | N/A | +| `requirements` | [models.ProjectCapabilitiesRequirement](../models/projectcapabilitiesrequirement.md)[] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/projectcapabilitiesregistry.md b/client-sdks/platform/typescript/docs/models/projectcapabilitiesregistry.md new file mode 100644 index 000000000..121fb9ab9 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/projectcapabilitiesregistry.md @@ -0,0 +1,21 @@ +# ProjectCapabilitiesRegistry + +## Example Usage + +```typescript +import { ProjectCapabilitiesRegistry } from "@alienplatform/platform-api/models"; + +let value: ProjectCapabilitiesRegistry = { + enabled: false, + repositories: [], + credentialPolicy: "pull-only", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| `enabled` | *boolean* | :heavy_check_mark: | N/A | +| `repositories` | *string*[] | :heavy_check_mark: | N/A | +| `credentialPolicy` | [models.ProjectCapabilitiesCredentialPolicy](../models/projectcapabilitiescredentialpolicy.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/projectcapabilitiesrequirement.md b/client-sdks/platform/typescript/docs/models/projectcapabilitiesrequirement.md new file mode 100644 index 000000000..a6abf89a5 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/projectcapabilitiesrequirement.md @@ -0,0 +1,23 @@ +# ProjectCapabilitiesRequirement + +## Example Usage + +```typescript +import { ProjectCapabilitiesRequirement } from "@alienplatform/platform-api/models"; + +let value: ProjectCapabilitiesRequirement = { + publicModelId: "", + clientApis: [ + "openai-chat", + ], + required: true, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `publicModelId` | *string* | :heavy_check_mark: | N/A | +| `clientApis` | [models.ProjectCapabilitiesClientApi](../models/projectcapabilitiesclientapi.md)[] | :heavy_check_mark: | N/A | +| `required` | *boolean* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/projectcapabilityoverview.md b/client-sdks/platform/typescript/docs/models/projectcapabilityoverview.md new file mode 100644 index 000000000..d39fa7b14 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/projectcapabilityoverview.md @@ -0,0 +1,144 @@ +# ProjectCapabilityOverview + +## Example Usage + +```typescript +import { ProjectCapabilityOverview } from "@alienplatform/platform-api/models"; + +let value: ProjectCapabilityOverview = { + generatedAt: new Date("2024-09-06T15:21:08.715Z"), + configurationStatus: "valid", + summary: { + groups: 180460, + capabilities: { + models: { + enabled: false, + connected: 125192, + settingUp: 258850, + needsAttention: 397545, + revoked: 804965, + notConnected: 379194, + }, + keys: { + enabled: true, + connected: 320779, + settingUp: 72958, + needsAttention: 143069, + revoked: 714520, + notConnected: 306654, + }, + buckets: { + enabled: false, + connected: 546814, + settingUp: 839265, + needsAttention: 603306, + revoked: 730330, + notConnected: 924949, + }, + registry: { + enabled: true, + connected: 336407, + settingUp: 784831, + needsAttention: 961354, + revoked: 697113, + notConnected: 723984, + }, + }, + }, + groups: [ + { + deploymentGroupId: "dg_r27ict8c7vcgsumpj90ackf7b", + name: "", + externalId: "", + createdAt: new Date("2026-02-20T18:56:11.695Z"), + capabilities: { + models: { + capability: "registry", + enabled: true, + state: "not-connected", + deploymentId: "dep_0c29fq4a2yjb7kx3smwdgxlc", + observation: { + provider: "", + platform: "local", + resourceId: "", + location: "", + account: "22393779", + observedAt: new Date("2025-02-05T09:16:14.437Z"), + stale: false, + partial: true, + health: null, + lifecycle: "", + message: "", + }, + }, + keys: { + capability: "registry", + enabled: true, + state: "connected", + deploymentId: "dep_0c29fq4a2yjb7kx3smwdgxlc", + observation: { + provider: "", + platform: "gcp", + resourceId: "", + location: "", + account: "19573632", + observedAt: new Date("2024-06-20T03:52:32.683Z"), + stale: true, + partial: true, + health: "degraded", + lifecycle: "", + message: "", + }, + }, + buckets: { + capability: "models", + enabled: true, + state: "needs-attention", + deploymentId: "dep_0c29fq4a2yjb7kx3smwdgxlc", + observation: { + provider: "", + platform: "test", + resourceId: "", + location: "", + account: "58292455", + observedAt: new Date("2024-09-29T01:47:42.152Z"), + stale: false, + partial: false, + health: "unknown", + lifecycle: "", + message: "", + }, + }, + registry: { + capability: "buckets", + enabled: false, + state: "needs-attention", + deploymentId: "dep_0c29fq4a2yjb7kx3smwdgxlc", + observation: { + provider: "", + platform: "gcp", + resourceId: "", + location: "", + account: "07843950", + observedAt: new Date("2026-07-02T12:17:56.583Z"), + stale: true, + partial: true, + health: "unknown", + lifecycle: null, + message: "", + }, + }, + }, + }, + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `generatedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | +| `configurationStatus` | [models.ConfigurationStatus](../models/configurationstatus.md) | :heavy_check_mark: | N/A | +| `summary` | [models.Summary](../models/summary.md) | :heavy_check_mark: | N/A | +| `groups` | [models.Group](../models/group.md)[] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/projectcapabilityoverviewcredentialpolicy.md b/client-sdks/platform/typescript/docs/models/projectcapabilityoverviewcredentialpolicy.md new file mode 100644 index 000000000..a3f0eaf12 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/projectcapabilityoverviewcredentialpolicy.md @@ -0,0 +1,15 @@ +# ProjectCapabilityOverviewCredentialPolicy + +## Example Usage + +```typescript +import { ProjectCapabilityOverviewCredentialPolicy } from "@alienplatform/platform-api/models"; + +let value: ProjectCapabilityOverviewCredentialPolicy = "none"; +``` + +## Values + +```typescript +"pull-only" | "push-and-pull" | "mixed" | "none" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/projectconnections.md b/client-sdks/platform/typescript/docs/models/projectconnections.md deleted file mode 100644 index 706843b12..000000000 --- a/client-sdks/platform/typescript/docs/models/projectconnections.md +++ /dev/null @@ -1,16 +0,0 @@ -# ProjectConnections - -## Example Usage - -```typescript -import { ProjectConnections } from "@alienplatform/platform-api/models"; - -let value: ProjectConnections = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `keys` | [models.ProjectKeys](../models/projectkeys.md) | :heavy_minus_sign: | N/A | -| `models` | [models.ProjectModels](../models/projectmodels.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/projectcredentialpolicy.md b/client-sdks/platform/typescript/docs/models/projectcredentialpolicy.md new file mode 100644 index 000000000..60d153f36 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/projectcredentialpolicy.md @@ -0,0 +1,15 @@ +# ProjectCredentialPolicy + +## Example Usage + +```typescript +import { ProjectCredentialPolicy } from "@alienplatform/platform-api/models"; + +let value: ProjectCredentialPolicy = "push-and-pull"; +``` + +## Values + +```typescript +"pull-only" | "push-and-pull" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/projectcustomerconnections.md b/client-sdks/platform/typescript/docs/models/projectcustomerconnections.md deleted file mode 100644 index 229a5c8d2..000000000 --- a/client-sdks/platform/typescript/docs/models/projectcustomerconnections.md +++ /dev/null @@ -1,21 +0,0 @@ -# ProjectCustomerConnections - -Customer infrastructure offered by this Project through exact built-in or application-authored sources. - -## Example Usage - -```typescript -import { ProjectCustomerConnections } from "@alienplatform/platform-api/models"; - -let value: ProjectCustomerConnections = { - schemaVersion: 628.23, - connections: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| `schemaVersion` | *number* | :heavy_check_mark: | N/A | -| `connections` | [models.ProjectConnections](../models/projectconnections.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/projectdeployments.md b/client-sdks/platform/typescript/docs/models/projectdeployments.md new file mode 100644 index 000000000..a18276e5d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/projectdeployments.md @@ -0,0 +1,17 @@ +# ProjectDeployments + +## Example Usage + +```typescript +import { ProjectDeployments } from "@alienplatform/platform-api/models"; + +let value: ProjectDeployments = { + enabled: true, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `enabled` | *boolean* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/projectlistitemresponse.md b/client-sdks/platform/typescript/docs/models/projectlistitemresponse.md index 9ae95a843..519ce1790 100644 --- a/client-sdks/platform/typescript/docs/models/projectlistitemresponse.md +++ b/client-sdks/platform/typescript/docs/models/projectlistitemresponse.md @@ -43,7 +43,7 @@ let value: ProjectListItemResponse = { | `packagesConfig` | [models.ProjectListItemResponsePackagesConfig](../models/projectlistitemresponsepackagesconfig.md) | :heavy_minus_sign: | Configuration for embedded packages (CLI, CloudFormation, Helm, Terraform) | | | `domainId` | *string* | :heavy_minus_sign: | Selected domain for this project (null = default system domain) | dom_469m0agk8luj4s16sakmmpdd | | `defaultManagers` | [models.ProjectListItemResponseDefaultManagers](../models/projectlistitemresponsedefaultmanagers.md) | :heavy_minus_sign: | Project default private managers for new push deployments. | | -| `customerConnections` | [models.ProjectListItemResponseCustomerConnections](../models/projectlistitemresponsecustomerconnections.md) | :heavy_minus_sign: | Customer infrastructure offered by this Project through exact built-in or application-authored sources. | | +| `projectCapabilities` | [models.ProjectListItemResponseProjectCapabilities](../models/projectlistitemresponseprojectcapabilities.md) | :heavy_minus_sign: | Capabilities this Project may offer through setup links. | | | `createdAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | | `workspaceId` | *string* | :heavy_check_mark: | Unique identifier for the workspace. | ws_It13CUaGEhLLAB87simX0 | | `deploymentCount` | *number* | :heavy_minus_sign: | N/A | | diff --git a/client-sdks/platform/typescript/docs/models/projectlistitemresponseaccess.md b/client-sdks/platform/typescript/docs/models/projectlistitemresponseaccess.md new file mode 100644 index 000000000..c720cfe1c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/projectlistitemresponseaccess.md @@ -0,0 +1,15 @@ +# ProjectListItemResponseAccess + +## Example Usage + +```typescript +import { ProjectListItemResponseAccess } from "@alienplatform/platform-api/models"; + +let value: ProjectListItemResponseAccess = "read-write"; +``` + +## Values + +```typescript +"read-write" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/projectlistitemresponseallowedprovider.md b/client-sdks/platform/typescript/docs/models/projectlistitemresponseallowedprovider.md index b9cfd1fed..d9589b23a 100644 --- a/client-sdks/platform/typescript/docs/models/projectlistitemresponseallowedprovider.md +++ b/client-sdks/platform/typescript/docs/models/projectlistitemresponseallowedprovider.md @@ -5,11 +5,11 @@ ```typescript import { ProjectListItemResponseAllowedProvider } from "@alienplatform/platform-api/models"; -let value: ProjectListItemResponseAllowedProvider = "azure-foundry"; +let value: ProjectListItemResponseAllowedProvider = "databricks"; ``` ## Values ```typescript -"aws-bedrock" | "gcp-vertex" | "azure-foundry" | "anthropic" +"aws-bedrock" | "gcp-vertex" | "azure-foundry" | "anthropic" | "databricks" | "openai" ``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/projectlistitemresponsebuckets.md b/client-sdks/platform/typescript/docs/models/projectlistitemresponsebuckets.md new file mode 100644 index 000000000..5ecfcdee7 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/projectlistitemresponsebuckets.md @@ -0,0 +1,19 @@ +# ProjectListItemResponseBuckets + +## Example Usage + +```typescript +import { ProjectListItemResponseBuckets } from "@alienplatform/platform-api/models"; + +let value: ProjectListItemResponseBuckets = { + enabled: false, + access: "read-write", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `enabled` | *boolean* | :heavy_check_mark: | N/A | +| `access` | [models.ProjectListItemResponseAccess](../models/projectlistitemresponseaccess.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/projectlistitemresponsecapabilities.md b/client-sdks/platform/typescript/docs/models/projectlistitemresponsecapabilities.md new file mode 100644 index 000000000..5f500d0ce --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/projectlistitemresponsecapabilities.md @@ -0,0 +1,19 @@ +# ProjectListItemResponseCapabilities + +## Example Usage + +```typescript +import { ProjectListItemResponseCapabilities } from "@alienplatform/platform-api/models"; + +let value: ProjectListItemResponseCapabilities = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `deployments` | [models.ProjectListItemResponseDeployments](../models/projectlistitemresponsedeployments.md) | :heavy_minus_sign: | N/A | +| `keys` | [models.ProjectListItemResponseKeys](../models/projectlistitemresponsekeys.md) | :heavy_minus_sign: | N/A | +| `models` | [models.ProjectListItemResponseModels](../models/projectlistitemresponsemodels.md) | :heavy_minus_sign: | N/A | +| `buckets` | [models.ProjectListItemResponseBuckets](../models/projectlistitemresponsebuckets.md) | :heavy_minus_sign: | N/A | +| `registry` | [models.ProjectListItemResponseRegistry](../models/projectlistitemresponseregistry.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/projectlistitemresponseconnections.md b/client-sdks/platform/typescript/docs/models/projectlistitemresponseconnections.md deleted file mode 100644 index 8f4477bf8..000000000 --- a/client-sdks/platform/typescript/docs/models/projectlistitemresponseconnections.md +++ /dev/null @@ -1,16 +0,0 @@ -# ProjectListItemResponseConnections - -## Example Usage - -```typescript -import { ProjectListItemResponseConnections } from "@alienplatform/platform-api/models"; - -let value: ProjectListItemResponseConnections = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | -| `keys` | [models.ProjectListItemResponseKeys](../models/projectlistitemresponsekeys.md) | :heavy_minus_sign: | N/A | -| `models` | [models.ProjectListItemResponseModels](../models/projectlistitemresponsemodels.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/projectlistitemresponsecredentialpolicy.md b/client-sdks/platform/typescript/docs/models/projectlistitemresponsecredentialpolicy.md new file mode 100644 index 000000000..05fe93c82 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/projectlistitemresponsecredentialpolicy.md @@ -0,0 +1,15 @@ +# ProjectListItemResponseCredentialPolicy + +## Example Usage + +```typescript +import { ProjectListItemResponseCredentialPolicy } from "@alienplatform/platform-api/models"; + +let value: ProjectListItemResponseCredentialPolicy = "pull-only"; +``` + +## Values + +```typescript +"pull-only" | "push-and-pull" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/projectlistitemresponsecustomerconnections.md b/client-sdks/platform/typescript/docs/models/projectlistitemresponsecustomerconnections.md deleted file mode 100644 index 391fea439..000000000 --- a/client-sdks/platform/typescript/docs/models/projectlistitemresponsecustomerconnections.md +++ /dev/null @@ -1,21 +0,0 @@ -# ProjectListItemResponseCustomerConnections - -Customer infrastructure offered by this Project through exact built-in or application-authored sources. - -## Example Usage - -```typescript -import { ProjectListItemResponseCustomerConnections } from "@alienplatform/platform-api/models"; - -let value: ProjectListItemResponseCustomerConnections = { - schemaVersion: 4674.02, - connections: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `schemaVersion` | *number* | :heavy_check_mark: | N/A | -| `connections` | [models.ProjectListItemResponseConnections](../models/projectlistitemresponseconnections.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/projectlistitemresponsedeployments.md b/client-sdks/platform/typescript/docs/models/projectlistitemresponsedeployments.md new file mode 100644 index 000000000..0d37e1487 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/projectlistitemresponsedeployments.md @@ -0,0 +1,17 @@ +# ProjectListItemResponseDeployments + +## Example Usage + +```typescript +import { ProjectListItemResponseDeployments } from "@alienplatform/platform-api/models"; + +let value: ProjectListItemResponseDeployments = { + enabled: false, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `enabled` | *boolean* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/projectlistitemresponseprojectcapabilities.md b/client-sdks/platform/typescript/docs/models/projectlistitemresponseprojectcapabilities.md new file mode 100644 index 000000000..ce5591dbc --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/projectlistitemresponseprojectcapabilities.md @@ -0,0 +1,21 @@ +# ProjectListItemResponseProjectCapabilities + +Capabilities this Project may offer through setup links. + +## Example Usage + +```typescript +import { ProjectListItemResponseProjectCapabilities } from "@alienplatform/platform-api/models"; + +let value: ProjectListItemResponseProjectCapabilities = { + schemaVersion: 1235.95, + capabilities: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| `schemaVersion` | *number* | :heavy_check_mark: | N/A | +| `capabilities` | [models.ProjectListItemResponseCapabilities](../models/projectlistitemresponsecapabilities.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/projectlistitemresponseregistry.md b/client-sdks/platform/typescript/docs/models/projectlistitemresponseregistry.md new file mode 100644 index 000000000..69920e3f5 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/projectlistitemresponseregistry.md @@ -0,0 +1,24 @@ +# ProjectListItemResponseRegistry + +## Example Usage + +```typescript +import { ProjectListItemResponseRegistry } from "@alienplatform/platform-api/models"; + +let value: ProjectListItemResponseRegistry = { + enabled: true, + repositories: [ + "", + "", + ], + credentialPolicy: "pull-only", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | +| `enabled` | *boolean* | :heavy_check_mark: | N/A | +| `repositories` | *string*[] | :heavy_check_mark: | N/A | +| `credentialPolicy` | [models.ProjectListItemResponseCredentialPolicy](../models/projectlistitemresponsecredentialpolicy.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/projectprojectcapabilities.md b/client-sdks/platform/typescript/docs/models/projectprojectcapabilities.md new file mode 100644 index 000000000..7c3658dc6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/projectprojectcapabilities.md @@ -0,0 +1,21 @@ +# ProjectProjectCapabilities + +Capabilities this Project may offer through setup links. + +## Example Usage + +```typescript +import { ProjectProjectCapabilities } from "@alienplatform/platform-api/models"; + +let value: ProjectProjectCapabilities = { + schemaVersion: 1243.35, + capabilities: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `schemaVersion` | *number* | :heavy_check_mark: | N/A | +| `capabilities` | [models.ProjectProjectCapabilitiesCapabilities](../models/projectprojectcapabilitiescapabilities.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/projectprojectcapabilitiescapabilities.md b/client-sdks/platform/typescript/docs/models/projectprojectcapabilitiescapabilities.md new file mode 100644 index 000000000..7eb1f3baf --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/projectprojectcapabilitiescapabilities.md @@ -0,0 +1,19 @@ +# ProjectProjectCapabilitiesCapabilities + +## Example Usage + +```typescript +import { ProjectProjectCapabilitiesCapabilities } from "@alienplatform/platform-api/models"; + +let value: ProjectProjectCapabilitiesCapabilities = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `deployments` | [models.ProjectDeployments](../models/projectdeployments.md) | :heavy_minus_sign: | N/A | +| `keys` | [models.ProjectKeys](../models/projectkeys.md) | :heavy_minus_sign: | N/A | +| `models` | [models.ProjectModels](../models/projectmodels.md) | :heavy_minus_sign: | N/A | +| `buckets` | [models.ProjectBuckets](../models/projectbuckets.md) | :heavy_minus_sign: | N/A | +| `registry` | [models.ProjectRegistry](../models/projectregistry.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/projectregistry.md b/client-sdks/platform/typescript/docs/models/projectregistry.md new file mode 100644 index 000000000..21008633b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/projectregistry.md @@ -0,0 +1,23 @@ +# ProjectRegistry + +## Example Usage + +```typescript +import { ProjectRegistry } from "@alienplatform/platform-api/models"; + +let value: ProjectRegistry = { + enabled: true, + repositories: [ + "", + ], + credentialPolicy: "push-and-pull", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | +| `enabled` | *boolean* | :heavy_check_mark: | N/A | +| `repositories` | *string*[] | :heavy_check_mark: | N/A | +| `credentialPolicy` | [models.ProjectCredentialPolicy](../models/projectcredentialpolicy.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/projectrole.md b/client-sdks/platform/typescript/docs/models/projectrole.md index 8801d608f..eb5beb2e1 100644 --- a/client-sdks/platform/typescript/docs/models/projectrole.md +++ b/client-sdks/platform/typescript/docs/models/projectrole.md @@ -7,11 +7,11 @@ Role for project-scoped service accounts ```typescript import { ProjectRole } from "@alienplatform/platform-api/models"; -let value: ProjectRole = "project.ai-gateway"; +let value: ProjectRole = "project.remote-bindings"; ``` ## Values ```typescript -"project.viewer" | "project.developer" | "project.encryption" | "project.ai-gateway" +"project.viewer" | "project.developer" | "project.encryption" | "project.ai-gateway" | "project.remote-bindings" ``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/protocol.md b/client-sdks/platform/typescript/docs/models/protocol.md new file mode 100644 index 000000000..cb54c439a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/protocol.md @@ -0,0 +1,15 @@ +# Protocol + +## Example Usage + +```typescript +import { Protocol } from "@alienplatform/platform-api/models"; + +let value: Protocol = "http"; +``` + +## Values + +```typescript +"http" | "tcp" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/publicendpoints.md b/client-sdks/platform/typescript/docs/models/publicendpoints.md index 083f54ec4..798da3702 100644 --- a/client-sdks/platform/typescript/docs/models/publicendpoints.md +++ b/client-sdks/platform/typescript/docs/models/publicendpoints.md @@ -7,13 +7,18 @@ import { PublicEndpoints } from "@alienplatform/platform-api/models"; let value: PublicEndpoints = { url: "https://gigantic-hello.name", + protocol: "http", + host: "wordy-step-mother.info", + port: 701832, }; ``` ## Fields -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `url` | *string* | :heavy_check_mark: | N/A | -| `host` | *string* | :heavy_minus_sign: | N/A | -| `wildcardHost` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | +| `url` | *string* | :heavy_check_mark: | N/A | +| `protocol` | [models.Protocol](../models/protocol.md) | :heavy_check_mark: | N/A | +| `host` | *string* | :heavy_check_mark: | N/A | +| `port` | *number* | :heavy_check_mark: | N/A | +| `wildcardHost` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/publishoperationspluginrequest.md b/client-sdks/platform/typescript/docs/models/publishoperationspluginrequest.md new file mode 100644 index 000000000..f1e912b19 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/publishoperationspluginrequest.md @@ -0,0 +1,22 @@ +# PublishOperationsPluginRequest + +## Example Usage + +```typescript +import { PublishOperationsPluginRequest } from "@alienplatform/platform-api/models"; + +let value: PublishOperationsPluginRequest = { + name: "", + version: "", + tier: "destructive", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `name` | *string* | :heavy_check_mark: | Plugin name (from the bundle's metadata.json). | +| `version` | *string* | :heavy_check_mark: | Plugin version. | +| `tier` | [models.PublishOperationsPluginRequestTier](../models/publishoperationspluginrequesttier.md) | :heavy_check_mark: | Plugin-level default risk tier. | +| `metadata` | *any* | :heavy_minus_sign: | The verbatim metadata.json (operations[], binaries{}). | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/publishoperationspluginrequesttier.md b/client-sdks/platform/typescript/docs/models/publishoperationspluginrequesttier.md new file mode 100644 index 000000000..356486e5f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/publishoperationspluginrequesttier.md @@ -0,0 +1,17 @@ +# PublishOperationsPluginRequestTier + +Plugin-level default risk tier. + +## Example Usage + +```typescript +import { PublishOperationsPluginRequestTier } from "@alienplatform/platform-api/models"; + +let value: PublishOperationsPluginRequestTier = "mutating"; +``` + +## Values + +```typescript +"read-only" | "mutating" | "destructive" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/publishoperationspluginresponse.md b/client-sdks/platform/typescript/docs/models/publishoperationspluginresponse.md new file mode 100644 index 000000000..bff735348 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/publishoperationspluginresponse.md @@ -0,0 +1,23 @@ +# PublishOperationsPluginResponse + +## Example Usage + +```typescript +import { PublishOperationsPluginResponse } from "@alienplatform/platform-api/models"; + +let value: PublishOperationsPluginResponse = { + name: "", + version: "", + tier: "read-only", + enabled: false, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| `name` | *string* | :heavy_check_mark: | N/A | +| `version` | *string* | :heavy_check_mark: | N/A | +| `tier` | [models.PublishOperationsPluginResponseTier](../models/publishoperationspluginresponsetier.md) | :heavy_check_mark: | How risky an operation is (declared by the plugin metadata). | +| `enabled` | *boolean* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/publishoperationspluginresponsetier.md b/client-sdks/platform/typescript/docs/models/publishoperationspluginresponsetier.md new file mode 100644 index 000000000..90c8222e9 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/publishoperationspluginresponsetier.md @@ -0,0 +1,17 @@ +# PublishOperationsPluginResponseTier + +How risky an operation is (declared by the plugin metadata). + +## Example Usage + +```typescript +import { PublishOperationsPluginResponseTier } from "@alienplatform/platform-api/models"; + +let value: PublishOperationsPluginResponseTier = "read-only"; +``` + +## Values + +```typescript +"read-only" | "mutating" | "destructive" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/putdirectanthropicbindingrequest.md b/client-sdks/platform/typescript/docs/models/putdirectanthropicbindingrequest.md deleted file mode 100644 index a700ccf26..000000000 --- a/client-sdks/platform/typescript/docs/models/putdirectanthropicbindingrequest.md +++ /dev/null @@ -1,19 +0,0 @@ -# PutDirectAnthropicBindingRequest - -## Example Usage - -```typescript -import { PutDirectAnthropicBindingRequest } from "@alienplatform/platform-api/models"; - -let value: PutDirectAnthropicBindingRequest = { - apiKey: "", - acknowledgeAlienCredentialAccess: true, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | -| `apiKey` | *string* | :heavy_check_mark: | N/A | -| `acknowledgeAlienCredentialAccess` | *boolean* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/putexternalaibindingrequest.md b/client-sdks/platform/typescript/docs/models/putexternalaibindingrequest.md new file mode 100644 index 000000000..9331cfc44 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/putexternalaibindingrequest.md @@ -0,0 +1,21 @@ +# PutExternalAIBindingRequest + +## Example Usage + +```typescript +import { PutExternalAIBindingRequest } from "@alienplatform/platform-api/models"; + +let value: PutExternalAIBindingRequest = { + provider: "anthropic", + apiKey: "", + acknowledgeAlienCredentialAccess: true, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | +| `provider` | [models.PutExternalAIBindingRequestProviderEnum](../models/putexternalaibindingrequestproviderenum.md) | :heavy_check_mark: | N/A | +| `apiKey` | *string* | :heavy_check_mark: | N/A | +| `acknowledgeAlienCredentialAccess` | *boolean* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/putexternalaibindingrequestdatabricks.md b/client-sdks/platform/typescript/docs/models/putexternalaibindingrequestdatabricks.md new file mode 100644 index 000000000..2329286cb --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/putexternalaibindingrequestdatabricks.md @@ -0,0 +1,25 @@ +# PutExternalAIBindingRequestDatabricks + +## Example Usage + +```typescript +import { PutExternalAIBindingRequestDatabricks } from "@alienplatform/platform-api/models"; + +let value: PutExternalAIBindingRequestDatabricks = { + provider: "databricks", + workspaceUrl: "https://well-off-pension.biz", + clientId: "", + clientSecret: "", + acknowledgeAlienCredentialAccess: true, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | +| `provider` | *"databricks"* | :heavy_check_mark: | N/A | +| `workspaceUrl` | *string* | :heavy_check_mark: | N/A | +| `clientId` | *string* | :heavy_check_mark: | N/A | +| `clientSecret` | *string* | :heavy_check_mark: | N/A | +| `acknowledgeAlienCredentialAccess` | *boolean* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/putexternalaibindingrequestproviderenum.md b/client-sdks/platform/typescript/docs/models/putexternalaibindingrequestproviderenum.md new file mode 100644 index 000000000..caa9e3d20 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/putexternalaibindingrequestproviderenum.md @@ -0,0 +1,15 @@ +# PutExternalAIBindingRequestProviderEnum + +## Example Usage + +```typescript +import { PutExternalAIBindingRequestProviderEnum } from "@alienplatform/platform-api/models"; + +let value: PutExternalAIBindingRequestProviderEnum = "anthropic"; +``` + +## Values + +```typescript +"anthropic" | "openai" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/putexternalaibindingrequestunion.md b/client-sdks/platform/typescript/docs/models/putexternalaibindingrequestunion.md new file mode 100644 index 000000000..c27a46831 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/putexternalaibindingrequestunion.md @@ -0,0 +1,37 @@ +# PutExternalAIBindingRequestUnion + + +## Supported Types + +### `models.PutExternalAIBindingRequest` + +```typescript +const value: models.PutExternalAIBindingRequest = { + provider: "anthropic", + apiKey: "", + acknowledgeAlienCredentialAccess: true, +}; +``` + +### `models.PutExternalAIBindingRequest` + +```typescript +const value: models.PutExternalAIBindingRequest = { + provider: "anthropic", + apiKey: "", + acknowledgeAlienCredentialAccess: true, +}; +``` + +### `models.PutExternalAIBindingRequestDatabricks` + +```typescript +const value: models.PutExternalAIBindingRequestDatabricks = { + provider: "databricks", + workspaceUrl: "https://well-off-pension.biz", + clientId: "", + clientSecret: "", + acknowledgeAlienCredentialAccess: true, +}; +``` + diff --git a/client-sdks/platform/typescript/docs/models/registryaccesstest.md b/client-sdks/platform/typescript/docs/models/registryaccesstest.md new file mode 100644 index 000000000..f043a99af --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/registryaccesstest.md @@ -0,0 +1,15 @@ +# RegistryAccessTest + +## Example Usage + +```typescript +import { RegistryAccessTest } from "@alienplatform/platform-api/models"; + +let value: RegistryAccessTest = "verified"; +``` + +## Values + +```typescript +"verified" | "failed" | "not-checked" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/registryavailability.md b/client-sdks/platform/typescript/docs/models/registryavailability.md new file mode 100644 index 000000000..7e5b5d7c3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/registryavailability.md @@ -0,0 +1,15 @@ +# RegistryAvailability + +## Example Usage + +```typescript +import { RegistryAvailability } from "@alienplatform/platform-api/models"; + +let value: RegistryAvailability = "unknown"; +``` + +## Values + +```typescript +"available" | "blocked" | "unknown" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/registrycapability.md b/client-sdks/platform/typescript/docs/models/registrycapability.md new file mode 100644 index 000000000..d6a8cffaa --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/registrycapability.md @@ -0,0 +1,15 @@ +# RegistryCapability + +## Example Usage + +```typescript +import { RegistryCapability } from "@alienplatform/platform-api/models"; + +let value: RegistryCapability = "buckets"; +``` + +## Values + +```typescript +"models" | "keys" | "buckets" | "registry" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/registrydirectprovider.md b/client-sdks/platform/typescript/docs/models/registrydirectprovider.md new file mode 100644 index 000000000..cd4225544 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/registrydirectprovider.md @@ -0,0 +1,27 @@ +# RegistryDirectProvider + +## Example Usage + +```typescript +import { RegistryDirectProvider } from "@alienplatform/platform-api/models"; + +let value: RegistryDirectProvider = { + provider: "openai", + providerEndpoint: "", + keyFingerprint: "", + availableProviderModelIds: [ + "", + ], + verifiedAt: new Date("2026-04-17T01:52:37.799Z"), +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `provider` | [models.RegistryProvider](../models/registryprovider.md) | :heavy_check_mark: | N/A | +| `providerEndpoint` | *string* | :heavy_check_mark: | N/A | +| `keyFingerprint` | *string* | :heavy_check_mark: | N/A | +| `availableProviderModelIds` | *string*[] | :heavy_check_mark: | N/A | +| `verifiedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/registryhealth.md b/client-sdks/platform/typescript/docs/models/registryhealth.md new file mode 100644 index 000000000..36d0676a2 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/registryhealth.md @@ -0,0 +1,15 @@ +# RegistryHealth + +## Example Usage + +```typescript +import { RegistryHealth } from "@alienplatform/platform-api/models"; + +let value: RegistryHealth = "degraded"; +``` + +## Values + +```typescript +"unknown" | "healthy" | "degraded" | "unhealthy" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/registrymodelcoverage.md b/client-sdks/platform/typescript/docs/models/registrymodelcoverage.md new file mode 100644 index 000000000..68ae864c4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/registrymodelcoverage.md @@ -0,0 +1,30 @@ +# RegistryModelCoverage + +## Example Usage + +```typescript +import { RegistryModelCoverage } from "@alienplatform/platform-api/models"; + +let value: RegistryModelCoverage = { + publicModelId: "", + required: false, + availability: "unknown", + blockerCodes: [ + "", + "", + ], + accessTest: "failed", + accessObservedAt: new Date("2025-09-17T09:26:59.262Z"), +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `publicModelId` | *string* | :heavy_check_mark: | N/A | +| `required` | *boolean* | :heavy_check_mark: | N/A | +| `availability` | [models.RegistryAvailability](../models/registryavailability.md) | :heavy_check_mark: | N/A | +| `blockerCodes` | *string*[] | :heavy_check_mark: | N/A | +| `accessTest` | [models.RegistryAccessTest](../models/registryaccesstest.md) | :heavy_check_mark: | N/A | +| `accessObservedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/registryobservation.md b/client-sdks/platform/typescript/docs/models/registryobservation.md new file mode 100644 index 000000000..606a3fd1a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/registryobservation.md @@ -0,0 +1,37 @@ +# RegistryObservation + +## Example Usage + +```typescript +import { RegistryObservation } from "@alienplatform/platform-api/models"; + +let value: RegistryObservation = { + provider: "", + platform: "gcp", + resourceId: "", + location: "", + account: "43521380", + observedAt: new Date("2024-02-22T06:45:05.556Z"), + stale: false, + partial: true, + health: "unknown", + lifecycle: "", + message: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `provider` | *string* | :heavy_check_mark: | N/A | +| `platform` | [models.RegistryPlatform](../models/registryplatform.md) | :heavy_check_mark: | N/A | +| `resourceId` | *string* | :heavy_check_mark: | N/A | +| `location` | *string* | :heavy_check_mark: | N/A | +| `account` | *string* | :heavy_check_mark: | N/A | +| `observedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | +| `stale` | *boolean* | :heavy_check_mark: | N/A | +| `partial` | *boolean* | :heavy_check_mark: | N/A | +| `health` | [models.RegistryHealth](../models/registryhealth.md) | :heavy_check_mark: | N/A | +| `lifecycle` | *string* | :heavy_check_mark: | N/A | +| `message` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/registryplatform.md b/client-sdks/platform/typescript/docs/models/registryplatform.md new file mode 100644 index 000000000..d65bac1f7 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/registryplatform.md @@ -0,0 +1,15 @@ +# RegistryPlatform + +## Example Usage + +```typescript +import { RegistryPlatform } from "@alienplatform/platform-api/models"; + +let value: RegistryPlatform = "local"; +``` + +## Values + +```typescript +"aws" | "gcp" | "azure" | "local" | "kubernetes" | "machines" | "test" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/registryprovider.md b/client-sdks/platform/typescript/docs/models/registryprovider.md new file mode 100644 index 000000000..0b6526b20 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/registryprovider.md @@ -0,0 +1,15 @@ +# RegistryProvider + +## Example Usage + +```typescript +import { RegistryProvider } from "@alienplatform/platform-api/models"; + +let value: RegistryProvider = "anthropic"; +``` + +## Values + +```typescript +"anthropic" | "databricks" | "openai" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/registryroot.md b/client-sdks/platform/typescript/docs/models/registryroot.md new file mode 100644 index 000000000..80bed087b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/registryroot.md @@ -0,0 +1,19 @@ +# RegistryRoot + +## Example Usage + +```typescript +import { RegistryRoot } from "@alienplatform/platform-api/models"; + +let value: RegistryRoot = { + state: "ready", + createdAt: new Date("2026-08-10T18:43:12.461Z"), +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `state` | [models.RegistryRootState](../models/registryrootstate.md) | :heavy_check_mark: | N/A | +| `createdAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/registryrootstate.md b/client-sdks/platform/typescript/docs/models/registryrootstate.md new file mode 100644 index 000000000..3296828d9 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/registryrootstate.md @@ -0,0 +1,15 @@ +# RegistryRootState + +## Example Usage + +```typescript +import { RegistryRootState } from "@alienplatform/platform-api/models"; + +let value: RegistryRootState = "pending"; +``` + +## Values + +```typescript +"pending" | "ready" | "revoked" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/registrystate.md b/client-sdks/platform/typescript/docs/models/registrystate.md new file mode 100644 index 000000000..13547c6a0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/registrystate.md @@ -0,0 +1,15 @@ +# RegistryState + +## Example Usage + +```typescript +import { RegistryState } from "@alienplatform/platform-api/models"; + +let value: RegistryState = "needs-attention"; +``` + +## Values + +```typescript +"not-connected" | "setting-up" | "connected" | "needs-attention" | "revoked" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/release.md b/client-sdks/platform/typescript/docs/models/release.md index 25e44a67d..09c190a27 100644 --- a/client-sdks/platform/typescript/docs/models/release.md +++ b/client-sdks/platform/typescript/docs/models/release.md @@ -37,7 +37,8 @@ let value: Release = { | `version` | *string* | :heavy_check_mark: | N/A | | | `gitMetadata` | [models.GitMetadata](../models/gitmetadata.md) | :heavy_minus_sign: | N/A | | | `createdAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | -| `stack` | [models.StackByPlatform](../models/stackbyplatform.md) | :heavy_minus_sign: | N/A | | +| `stack` | [models.ReleaseStack](../models/releasestack.md) | :heavy_minus_sign: | N/A | | | `setupFingerprints` | Record | :heavy_check_mark: | N/A | | | `rootDirectory` | *string* | :heavy_minus_sign: | N/A | | +| `createdByUserId` | *string* | :heavy_minus_sign: | ID of the platform user who created the release, if known | | | `workspaceId` | *string* | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/releasechannel.md b/client-sdks/platform/typescript/docs/models/releasechannel.md new file mode 100644 index 000000000..5a6eab156 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/releasechannel.md @@ -0,0 +1,28 @@ +# ReleaseChannel + +## Example Usage + +```typescript +import { ReleaseChannel } from "@alienplatform/platform-api/models"; + +let value: ReleaseChannel = { + workspaceId: "ws_It13CUaGEhLLAB87simX0", + projectId: "prj_mcytp6z3j91f7tn5ryqsfwtr", + name: "", + currentReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", + createdAt: new Date("2026-06-15T04:15:50.307Z"), + updatedAt: new Date("2024-10-13T06:24:32.093Z"), +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `workspaceId` | *string* | :heavy_check_mark: | Unique identifier for the workspace. | ws_It13CUaGEhLLAB87simX0 | +| `projectId` | *string* | :heavy_check_mark: | Unique identifier for the project. | prj_mcytp6z3j91f7tn5ryqsfwtr | +| `name` | *string* | :heavy_check_mark: | N/A | | +| `currentReleaseId` | *string* | :heavy_check_mark: | Unique identifier for the release. | rel_WbhQgksrawSKIpEN0NAssHX9 | +| `deploymentCount` | *number* | :heavy_minus_sign: | N/A | | +| `createdAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `updatedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/releasedeploymentitem.md b/client-sdks/platform/typescript/docs/models/releasedeploymentitem.md new file mode 100644 index 000000000..128a5b3e0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/releasedeploymentitem.md @@ -0,0 +1,44 @@ +# ReleaseDeploymentItem + +## Example Usage + +```typescript +import { ReleaseDeploymentItem } from "@alienplatform/platform-api/models"; + +let value: ReleaseDeploymentItem = { + id: "dep_0c29fq4a2yjb7kx3smwdgxlc", + name: "", + status: "update-failed", + platform: "gcp", + deploymentGroup: { + id: "dg_r27ict8c7vcgsumpj90ackf7b", + name: "prod-us-east-1", + externalId: "ext_example_01", + }, + currentReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", + desiredReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", + pinnedReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", + rolloutState: "pinned-other", + releasedAt: new Date("2025-04-16T08:06:07.773Z"), + durationMs: 629552, +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the deployment. | dep_0c29fq4a2yjb7kx3smwdgxlc | +| `name` | *string* | :heavy_check_mark: | N/A | | +| `status` | [models.ReleaseDeploymentItemStatus](../models/releasedeploymentitemstatus.md) | :heavy_check_mark: | Deployment status in the deployment lifecycle.

For observe-only deployments with no release or stack state, `Running`
means the Operator is attached. Connectivity comes from `lastHeartbeatAt`;
resource health comes from inventory and resource heartbeat data. | | +| `platform` | [models.ReleaseDeploymentItemPlatform](../models/releasedeploymentitemplatform.md) | :heavy_check_mark: | Target platform for the deployment | | +| `environmentInfo` | *models.ReleaseDeploymentItemEnvironmentInfoUnion* | :heavy_minus_sign: | Cloud environment information | | +| `deploymentGroup` | [models.ReleaseDeploymentItemDeploymentGroup](../models/releasedeploymentitemdeploymentgroup.md) | :heavy_minus_sign: | Deployment group this deployment belongs to | | +| `currentReleaseId` | *string* | :heavy_minus_sign: | ID of the currently deployed release | rel_WbhQgksrawSKIpEN0NAssHX9 | +| `desiredReleaseId` | *string* | :heavy_minus_sign: | ID of the desired release | rel_WbhQgksrawSKIpEN0NAssHX9 | +| `pinnedReleaseId` | *string* | :heavy_minus_sign: | ID of the pinned release | rel_WbhQgksrawSKIpEN0NAssHX9 | +| `lastHeartbeatAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_minus_sign: | Timestamp of the last received heartbeat | | +| `rolloutState` | [models.ReleaseRolloutState](../models/releaserolloutstate.md) | :heavy_check_mark: | N/A | | +| `releasedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | When this release went live on the deployment, null if it never did | | +| `durationMs` | *number* | :heavy_check_mark: | Time from release creation until the deployment finished updating, in milliseconds. Null for initial provisions and deployments that never ran this release. | | +| `error` | [models.ReleaseDeploymentItemError](../models/releasedeploymentitemerror.md) | :heavy_minus_sign: | Latest error information if the deployment is in a failed state | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/releasedeploymentitemdeploymentgroup.md b/client-sdks/platform/typescript/docs/models/releasedeploymentitemdeploymentgroup.md new file mode 100644 index 000000000..02f051f12 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/releasedeploymentitemdeploymentgroup.md @@ -0,0 +1,23 @@ +# ReleaseDeploymentItemDeploymentGroup + +Deployment group this deployment belongs to + +## Example Usage + +```typescript +import { ReleaseDeploymentItemDeploymentGroup } from "@alienplatform/platform-api/models"; + +let value: ReleaseDeploymentItemDeploymentGroup = { + id: "dg_r27ict8c7vcgsumpj90ackf7b", + name: "prod-us-east-1", + externalId: "ext_example_01", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the deployment group. | dg_r27ict8c7vcgsumpj90ackf7b | +| `name` | *string* | :heavy_check_mark: | Deployment group name. | prod-us-east-1 | +| `externalId` | *string* | :heavy_check_mark: | Case-sensitive, URL- and header-safe identifier from the integrating application. | ext_example_01 | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/releasedeploymentitemenvironmentinfoaws.md b/client-sdks/platform/typescript/docs/models/releasedeploymentitemenvironmentinfoaws.md new file mode 100644 index 000000000..be3c5ca39 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/releasedeploymentitemenvironmentinfoaws.md @@ -0,0 +1,23 @@ +# ReleaseDeploymentItemEnvironmentInfoAws + +AWS-specific environment information + +## Example Usage + +```typescript +import { ReleaseDeploymentItemEnvironmentInfoAws } from "@alienplatform/platform-api/models"; + +let value: ReleaseDeploymentItemEnvironmentInfoAws = { + accountId: "", + region: "", + platform: "aws", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `accountId` | *string* | :heavy_check_mark: | AWS account ID | +| `region` | *string* | :heavy_check_mark: | AWS region | +| `platform` | [models.ReleaseDeploymentItemPlatformAws](../models/releasedeploymentitemplatformaws.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/releasedeploymentitemenvironmentinfoazure.md b/client-sdks/platform/typescript/docs/models/releasedeploymentitemenvironmentinfoazure.md new file mode 100644 index 000000000..887dd724f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/releasedeploymentitemenvironmentinfoazure.md @@ -0,0 +1,25 @@ +# ReleaseDeploymentItemEnvironmentInfoAzure + +Azure-specific environment information + +## Example Usage + +```typescript +import { ReleaseDeploymentItemEnvironmentInfoAzure } from "@alienplatform/platform-api/models"; + +let value: ReleaseDeploymentItemEnvironmentInfoAzure = { + location: "", + subscriptionId: "", + tenantId: "", + platform: "azure", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `location` | *string* | :heavy_check_mark: | Azure location/region | +| `subscriptionId` | *string* | :heavy_check_mark: | Azure subscription ID | +| `tenantId` | *string* | :heavy_check_mark: | Azure tenant ID | +| `platform` | [models.ReleaseDeploymentItemPlatformAzure](../models/releasedeploymentitemplatformazure.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/releasedeploymentitemenvironmentinfogcp.md b/client-sdks/platform/typescript/docs/models/releasedeploymentitemenvironmentinfogcp.md new file mode 100644 index 000000000..b43100194 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/releasedeploymentitemenvironmentinfogcp.md @@ -0,0 +1,25 @@ +# ReleaseDeploymentItemEnvironmentInfoGcp + +GCP-specific environment information + +## Example Usage + +```typescript +import { ReleaseDeploymentItemEnvironmentInfoGcp } from "@alienplatform/platform-api/models"; + +let value: ReleaseDeploymentItemEnvironmentInfoGcp = { + projectId: "", + projectNumber: "", + region: "", + platform: "gcp", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `projectId` | *string* | :heavy_check_mark: | GCP project ID (e.g., "my-project") | +| `projectNumber` | *string* | :heavy_check_mark: | GCP project number (e.g., "123456789012") | +| `region` | *string* | :heavy_check_mark: | GCP region | +| `platform` | [models.ReleaseDeploymentItemPlatformGcp](../models/releasedeploymentitemplatformgcp.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/releasedeploymentitemenvironmentinfolocal.md b/client-sdks/platform/typescript/docs/models/releasedeploymentitemenvironmentinfolocal.md new file mode 100644 index 000000000..1c6b800c4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/releasedeploymentitemenvironmentinfolocal.md @@ -0,0 +1,25 @@ +# ReleaseDeploymentItemEnvironmentInfoLocal + +Local platform environment information + +## Example Usage + +```typescript +import { ReleaseDeploymentItemEnvironmentInfoLocal } from "@alienplatform/platform-api/models"; + +let value: ReleaseDeploymentItemEnvironmentInfoLocal = { + arch: "", + hostname: "unused-overcoat.biz", + os: "Linux", + platform: "local", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `arch` | *string* | :heavy_check_mark: | Architecture (e.g., "x86_64", "aarch64") | +| `hostname` | *string* | :heavy_check_mark: | Hostname of the machine running the deployment | +| `os` | *string* | :heavy_check_mark: | Operating system (e.g., "linux", "macos", "windows") | +| `platform` | [models.ReleaseDeploymentItemPlatformLocal](../models/releasedeploymentitemplatformlocal.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/releasedeploymentitemenvironmentinfotest.md b/client-sdks/platform/typescript/docs/models/releasedeploymentitemenvironmentinfotest.md new file mode 100644 index 000000000..65f4722ed --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/releasedeploymentitemenvironmentinfotest.md @@ -0,0 +1,21 @@ +# ReleaseDeploymentItemEnvironmentInfoTest + +Test platform environment information (mock) + +## Example Usage + +```typescript +import { ReleaseDeploymentItemEnvironmentInfoTest } from "@alienplatform/platform-api/models"; + +let value: ReleaseDeploymentItemEnvironmentInfoTest = { + testId: "", + platform: "test", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `testId` | *string* | :heavy_check_mark: | Test identifier for this environment | +| `platform` | [models.ReleaseDeploymentItemPlatformTest](../models/releasedeploymentitemplatformtest.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/releasedeploymentitemenvironmentinfounion.md b/client-sdks/platform/typescript/docs/models/releasedeploymentitemenvironmentinfounion.md new file mode 100644 index 000000000..8a1b4f829 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/releasedeploymentitemenvironmentinfounion.md @@ -0,0 +1,65 @@ +# ReleaseDeploymentItemEnvironmentInfoUnion + +Cloud environment information + + +## Supported Types + +### `models.ReleaseDeploymentItemEnvironmentInfoAws` + +```typescript +const value: models.ReleaseDeploymentItemEnvironmentInfoAws = { + accountId: "", + region: "", + platform: "aws", +}; +``` + +### `models.ReleaseDeploymentItemEnvironmentInfoGcp` + +```typescript +const value: models.ReleaseDeploymentItemEnvironmentInfoGcp = { + projectId: "", + projectNumber: "", + region: "", + platform: "gcp", +}; +``` + +### `models.ReleaseDeploymentItemEnvironmentInfoAzure` + +```typescript +const value: models.ReleaseDeploymentItemEnvironmentInfoAzure = { + location: "", + subscriptionId: "", + tenantId: "", + platform: "azure", +}; +``` + +### `models.ReleaseDeploymentItemEnvironmentInfoLocal` + +```typescript +const value: models.ReleaseDeploymentItemEnvironmentInfoLocal = { + arch: "", + hostname: "unused-overcoat.biz", + os: "Linux", + platform: "local", +}; +``` + +### `models.ReleaseDeploymentItemEnvironmentInfoTest` + +```typescript +const value: models.ReleaseDeploymentItemEnvironmentInfoTest = { + testId: "", + platform: "test", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/releasedeploymentitemerror.md b/client-sdks/platform/typescript/docs/models/releasedeploymentitemerror.md new file mode 100644 index 000000000..8dab43d2d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/releasedeploymentitemerror.md @@ -0,0 +1,28 @@ +# ReleaseDeploymentItemError + +Latest error information if the deployment is in a failed state + +## Example Usage + +```typescript +import { ReleaseDeploymentItemError } from "@alienplatform/platform-api/models"; + +let value: ReleaseDeploymentItemError = { + code: "", + internal: false, + message: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `code` | *string* | :heavy_check_mark: | A unique identifier for the type of error.

This should be a short, machine-readable string that can be used
by clients to programmatically handle different error types.
Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" | +| `context` | *any* | :heavy_minus_sign: | Additional diagnostic information about the error context.

This optional field can contain structured data providing more details
about the error, such as validation errors, request parameters that
caused the issue, or other relevant context information. | +| `hint` | *string* | :heavy_minus_sign: | Optional human-facing remediation hint. | +| `httpStatusCode` | *number* | :heavy_minus_sign: | HTTP status code for this error.

Used when converting the error to an HTTP response. If None, falls back to
the error type's default status code or 500. | +| `internal` | *boolean* | :heavy_check_mark: | Indicates if this is an internal error that should not be exposed to users.

When `true`, this error contains sensitive information or implementation
details that should not be shown to end-users. Such errors should be
logged for debugging but replaced with generic error messages in responses. | +| `message` | *string* | :heavy_check_mark: | Human-readable error message.

This message should be clear and actionable for developers or end-users,
providing context about what went wrong and potentially how to fix it. | +| `retryable` | *boolean* | :heavy_minus_sign: | Indicates whether the operation that caused the error should be retried.

When `true`, the error is transient and the operation might succeed
if attempted again. When `false`, retrying the same operation is
unlikely to succeed without changes. | +| `source` | *any* | :heavy_minus_sign: | The underlying error that caused this error, creating an error chain.

This allows for proper error propagation and debugging by maintaining
the full context of how an error occurred through multiple layers
of an application. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/releasedeploymentitemplatform.md b/client-sdks/platform/typescript/docs/models/releasedeploymentitemplatform.md new file mode 100644 index 000000000..0edf73fbd --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/releasedeploymentitemplatform.md @@ -0,0 +1,17 @@ +# ReleaseDeploymentItemPlatform + +Target platform for the deployment + +## Example Usage + +```typescript +import { ReleaseDeploymentItemPlatform } from "@alienplatform/platform-api/models"; + +let value: ReleaseDeploymentItemPlatform = "kubernetes"; +``` + +## Values + +```typescript +"aws" | "gcp" | "azure" | "kubernetes" | "machines" | "local" | "test" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/releasedeploymentitemplatformaws.md b/client-sdks/platform/typescript/docs/models/releasedeploymentitemplatformaws.md new file mode 100644 index 000000000..3ae9629db --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/releasedeploymentitemplatformaws.md @@ -0,0 +1,15 @@ +# ReleaseDeploymentItemPlatformAws + +## Example Usage + +```typescript +import { ReleaseDeploymentItemPlatformAws } from "@alienplatform/platform-api/models"; + +let value: ReleaseDeploymentItemPlatformAws = "aws"; +``` + +## Values + +```typescript +"aws" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/releasedeploymentitemplatformazure.md b/client-sdks/platform/typescript/docs/models/releasedeploymentitemplatformazure.md new file mode 100644 index 000000000..379c009cd --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/releasedeploymentitemplatformazure.md @@ -0,0 +1,15 @@ +# ReleaseDeploymentItemPlatformAzure + +## Example Usage + +```typescript +import { ReleaseDeploymentItemPlatformAzure } from "@alienplatform/platform-api/models"; + +let value: ReleaseDeploymentItemPlatformAzure = "azure"; +``` + +## Values + +```typescript +"azure" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/releasedeploymentitemplatformgcp.md b/client-sdks/platform/typescript/docs/models/releasedeploymentitemplatformgcp.md new file mode 100644 index 000000000..096b2f2cb --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/releasedeploymentitemplatformgcp.md @@ -0,0 +1,15 @@ +# ReleaseDeploymentItemPlatformGcp + +## Example Usage + +```typescript +import { ReleaseDeploymentItemPlatformGcp } from "@alienplatform/platform-api/models"; + +let value: ReleaseDeploymentItemPlatformGcp = "gcp"; +``` + +## Values + +```typescript +"gcp" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/releasedeploymentitemplatformlocal.md b/client-sdks/platform/typescript/docs/models/releasedeploymentitemplatformlocal.md new file mode 100644 index 000000000..41a98ec10 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/releasedeploymentitemplatformlocal.md @@ -0,0 +1,15 @@ +# ReleaseDeploymentItemPlatformLocal + +## Example Usage + +```typescript +import { ReleaseDeploymentItemPlatformLocal } from "@alienplatform/platform-api/models"; + +let value: ReleaseDeploymentItemPlatformLocal = "local"; +``` + +## Values + +```typescript +"local" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/releasedeploymentitemplatformtest.md b/client-sdks/platform/typescript/docs/models/releasedeploymentitemplatformtest.md new file mode 100644 index 000000000..4a47aa416 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/releasedeploymentitemplatformtest.md @@ -0,0 +1,15 @@ +# ReleaseDeploymentItemPlatformTest + +## Example Usage + +```typescript +import { ReleaseDeploymentItemPlatformTest } from "@alienplatform/platform-api/models"; + +let value: ReleaseDeploymentItemPlatformTest = "test"; +``` + +## Values + +```typescript +"test" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/releasedeploymentitemstatus.md b/client-sdks/platform/typescript/docs/models/releasedeploymentitemstatus.md new file mode 100644 index 000000000..dcdb9292c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/releasedeploymentitemstatus.md @@ -0,0 +1,21 @@ +# ReleaseDeploymentItemStatus + +Deployment status in the deployment lifecycle. + +For observe-only deployments with no release or stack state, `Running` +means the Operator is attached. Connectivity comes from `lastHeartbeatAt`; +resource health comes from inventory and resource heartbeat data. + +## Example Usage + +```typescript +import { ReleaseDeploymentItemStatus } from "@alienplatform/platform-api/models"; + +let value: ReleaseDeploymentItemStatus = "delete-failed"; +``` + +## Values + +```typescript +"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" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/releasedeploymentsresponse.md b/client-sdks/platform/typescript/docs/models/releasedeploymentsresponse.md new file mode 100644 index 000000000..043ce1dae --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/releasedeploymentsresponse.md @@ -0,0 +1,29 @@ +# ReleaseDeploymentsResponse + +## Example Usage + +```typescript +import { ReleaseDeploymentsResponse } from "@alienplatform/platform-api/models"; + +let value: ReleaseDeploymentsResponse = { + items: [], + nextCursor: "", + stateCounts: { + updated: 256940, + updating: 670112, + failed: 812790, + pending: 710404, + pinnedOther: 896373, + superseded: 835410, + onOther: 213666, + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | +| `items` | [models.ReleaseDeploymentItem](../models/releasedeploymentitem.md)[] | :heavy_check_mark: | Items in this page | +| `nextCursor` | *string* | :heavy_check_mark: | Cursor for the next page, null if last page | +| `stateCounts` | [models.ReleaseRolloutStateCounts](../models/releaserolloutstatecounts.md) | :heavy_check_mark: | Deployment counts per rollout state across all deployments the filters allow (ignores the state filter) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/releaseinforesources.md b/client-sdks/platform/typescript/docs/models/releaseinforesources.md index 1900a98ea..843e62345 100644 --- a/client-sdks/platform/typescript/docs/models/releaseinforesources.md +++ b/client-sdks/platform/typescript/docs/models/releaseinforesources.md @@ -22,9 +22,10 @@ let value: ReleaseInfoResources = { ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `config` | [models.ReleaseInfoConfig](../models/releaseinfoconfig.md) | :heavy_check_mark: | 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` | [models.ReleaseInfoDependency](../models/releaseinfodependency.md)[] | :heavy_check_mark: | Additional dependencies for this resource beyond those defined in the resource itself.
The total dependencies are: resource.get_dependencies() + this list | -| `lifecycle` | [models.ReleaseInfoLifecycle](../models/releaseinfolifecycle.md) | :heavy_check_mark: | Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. | -| `remoteAccess` | *boolean* | :heavy_minus_sign: | Enable remote bindings for this resource (BYOB use case).
When true, binding params are synced to StackState's `remote_binding_params`.
Default: false (prevents sensitive data in synced state). | \ No newline at end of file +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `config` | [models.ReleaseInfoConfig](../models/releaseinfoconfig.md) | :heavy_check_mark: | 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` | [models.ReleaseInfoDependency](../models/releaseinfodependency.md)[] | :heavy_check_mark: | Additional dependencies for this resource beyond those defined in the resource itself.
The total dependencies are: resource.get_dependencies() + this list | +| `enabledWhen` | *string* | :heavy_minus_sign: | 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. | +| `lifecycle` | [models.ReleaseInfoLifecycle](../models/releaseinfolifecycle.md) | :heavy_check_mark: | Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. | +| `remoteAccess` | *boolean* | :heavy_minus_sign: | Enable remote bindings for this resource (BYOB use case).
When true, binding params are synced to StackState's `remote_binding_params`.
Default: false (prevents sensitive data in synced state). | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/releaselistitemresponse.md b/client-sdks/platform/typescript/docs/models/releaselistitemresponse.md index 80358d755..3816d1d90 100644 --- a/client-sdks/platform/typescript/docs/models/releaselistitemresponse.md +++ b/client-sdks/platform/typescript/docs/models/releaselistitemresponse.md @@ -31,6 +31,11 @@ let value: ReleaseListItemResponse = { }, }, workspaceId: "", + currentChannels: [ + "", + "", + ], + commitUrl: "https://glossy-marksman.biz", }; ``` @@ -43,8 +48,13 @@ let value: ReleaseListItemResponse = { | `version` | *string* | :heavy_check_mark: | N/A | | | `gitMetadata` | [models.GitMetadata](../models/gitmetadata.md) | :heavy_minus_sign: | N/A | | | `createdAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | -| `stack` | [models.StackByPlatform](../models/stackbyplatform.md) | :heavy_minus_sign: | N/A | | +| `stack` | [models.ReleaseListItemResponseStack](../models/releaselistitemresponsestack.md) | :heavy_minus_sign: | N/A | | | `setupFingerprints` | Record | :heavy_check_mark: | N/A | | | `rootDirectory` | *string* | :heavy_minus_sign: | N/A | | +| `createdByUserId` | *string* | :heavy_minus_sign: | ID of the platform user who created the release, if known | | | `workspaceId` | *string* | :heavy_check_mark: | N/A | | -| `project` | [models.ReleaseListItemResponseProject](../models/releaselistitemresponseproject.md) | :heavy_minus_sign: | Project info, included when ?include=project is used | | \ No newline at end of file +| `currentChannels` | *string*[] | :heavy_check_mark: | Channels for which this release is currently selected | | +| `commitUrl` | *string* | :heavy_check_mark: | Validated canonical provider URL for the exact commit | | +| `project` | [models.ReleaseListItemResponseProject](../models/releaselistitemresponseproject.md) | :heavy_minus_sign: | Project info, included when ?include=project is used | | +| `rollout` | [models.Rollout](../models/rollout.md) | :heavy_minus_sign: | Rollout stats, included when ?include=rollout is used | | +| `createdBy` | [models.CreatedBy](../models/createdby.md) | :heavy_minus_sign: | Platform user who created the release, included when ?include=createdBy is used | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/releaselistitemresponsestack.md b/client-sdks/platform/typescript/docs/models/releaselistitemresponsestack.md new file mode 100644 index 000000000..caaa8233a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/releaselistitemresponsestack.md @@ -0,0 +1,21 @@ +# ReleaseListItemResponseStack + +## Example Usage + +```typescript +import { ReleaseListItemResponseStack } from "@alienplatform/platform-api/models"; + +let value: ReleaseListItemResponseStack = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `aws` | *any* | :heavy_minus_sign: | N/A | +| `gcp` | *any* | :heavy_minus_sign: | N/A | +| `azure` | *any* | :heavy_minus_sign: | N/A | +| `kubernetes` | *any* | :heavy_minus_sign: | N/A | +| `machines` | *any* | :heavy_minus_sign: | N/A | +| `local` | *any* | :heavy_minus_sign: | N/A | +| `test` | *any* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/releaserolloutstate.md b/client-sdks/platform/typescript/docs/models/releaserolloutstate.md new file mode 100644 index 000000000..7af7d416e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/releaserolloutstate.md @@ -0,0 +1,15 @@ +# ReleaseRolloutState + +## Example Usage + +```typescript +import { ReleaseRolloutState } from "@alienplatform/platform-api/models"; + +let value: ReleaseRolloutState = "updated"; +``` + +## Values + +```typescript +"updated" | "updating" | "failed" | "pending" | "pinned-other" | "superseded" | "on-other" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/releaserolloutstatecounts.md b/client-sdks/platform/typescript/docs/models/releaserolloutstatecounts.md new file mode 100644 index 000000000..61e10392f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/releaserolloutstatecounts.md @@ -0,0 +1,31 @@ +# ReleaseRolloutStateCounts + +Deployment counts per rollout state across all deployments the filters allow (ignores the state filter) + +## Example Usage + +```typescript +import { ReleaseRolloutStateCounts } from "@alienplatform/platform-api/models"; + +let value: ReleaseRolloutStateCounts = { + updated: 296286, + updating: 209667, + failed: 197301, + pending: 996144, + pinnedOther: 119808, + superseded: 913884, + onOther: 305959, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `updated` | *number* | :heavy_check_mark: | N/A | +| `updating` | *number* | :heavy_check_mark: | N/A | +| `failed` | *number* | :heavy_check_mark: | N/A | +| `pending` | *number* | :heavy_check_mark: | N/A | +| `pinnedOther` | *number* | :heavy_check_mark: | N/A | +| `superseded` | *number* | :heavy_check_mark: | N/A | +| `onOther` | *number* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/releasestack.md b/client-sdks/platform/typescript/docs/models/releasestack.md new file mode 100644 index 000000000..93e790910 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/releasestack.md @@ -0,0 +1,21 @@ +# ReleaseStack + +## Example Usage + +```typescript +import { ReleaseStack } from "@alienplatform/platform-api/models"; + +let value: ReleaseStack = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `aws` | *any* | :heavy_minus_sign: | N/A | +| `gcp` | *any* | :heavy_minus_sign: | N/A | +| `azure` | *any* | :heavy_minus_sign: | N/A | +| `kubernetes` | *any* | :heavy_minus_sign: | N/A | +| `machines` | *any* | :heavy_minus_sign: | N/A | +| `local` | *any* | :heavy_minus_sign: | N/A | +| `test` | *any* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/remotebindingsexternalaccessrequest.md b/client-sdks/platform/typescript/docs/models/remotebindingsexternalaccessrequest.md new file mode 100644 index 000000000..6c407b9b1 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/remotebindingsexternalaccessrequest.md @@ -0,0 +1,19 @@ +# RemoteBindingsExternalAccessRequest + +## Example Usage + +```typescript +import { RemoteBindingsExternalAccessRequest } from "@alienplatform/platform-api/models"; + +let value: RemoteBindingsExternalAccessRequest = { + externalId: "ext_example_01", + capability: "storage", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | +| `externalId` | *string* | :heavy_check_mark: | Case-sensitive, URL- and header-safe identifier from the integrating application. | ext_example_01 | +| `capability` | [models.RemoteBindingsExternalAccessRequestCapability](../models/remotebindingsexternalaccessrequestcapability.md) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/remotebindingsexternalaccessrequestcapability.md b/client-sdks/platform/typescript/docs/models/remotebindingsexternalaccessrequestcapability.md new file mode 100644 index 000000000..9a28233d9 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/remotebindingsexternalaccessrequestcapability.md @@ -0,0 +1,15 @@ +# RemoteBindingsExternalAccessRequestCapability + +## Example Usage + +```typescript +import { RemoteBindingsExternalAccessRequestCapability } from "@alienplatform/platform-api/models"; + +let value: RemoteBindingsExternalAccessRequestCapability = "storage"; +``` + +## Values + +```typescript +"storage" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/remotebindingsexternalaccessresponse.md b/client-sdks/platform/typescript/docs/models/remotebindingsexternalaccessresponse.md new file mode 100644 index 000000000..a230ba8e4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/remotebindingsexternalaccessresponse.md @@ -0,0 +1,27 @@ +# RemoteBindingsExternalAccessResponse + +## Example Usage + +```typescript +import { RemoteBindingsExternalAccessResponse } from "@alienplatform/platform-api/models"; + +let value: RemoteBindingsExternalAccessResponse = { + deploymentId: "dep_0c29fq4a2yjb7kx3smwdgxlc", + resourceId: "", + accessToken: "", + expiresIn: 2804.57, + tokenType: "Bearer", + managerUrl: "https://pointed-boulevard.info", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | +| `deploymentId` | *string* | :heavy_check_mark: | Unique identifier for the deployment. | dep_0c29fq4a2yjb7kx3smwdgxlc | +| `resourceId` | *string* | :heavy_check_mark: | N/A | | +| `accessToken` | *string* | :heavy_check_mark: | N/A | | +| `expiresIn` | *number* | :heavy_check_mark: | N/A | | +| `tokenType` | [models.RemoteBindingsExternalAccessResponseTokenType](../models/remotebindingsexternalaccessresponsetokentype.md) | :heavy_check_mark: | N/A | | +| `managerUrl` | *string* | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/remotebindingsexternalaccessresponsetokentype.md b/client-sdks/platform/typescript/docs/models/remotebindingsexternalaccessresponsetokentype.md new file mode 100644 index 000000000..0ad685862 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/remotebindingsexternalaccessresponsetokentype.md @@ -0,0 +1,15 @@ +# RemoteBindingsExternalAccessResponseTokenType + +## Example Usage + +```typescript +import { RemoteBindingsExternalAccessResponseTokenType } from "@alienplatform/platform-api/models"; + +let value: RemoteBindingsExternalAccessResponseTokenType = "Bearer"; +``` + +## Values + +```typescript +"Bearer" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/renderoperatormanifestrequest.md b/client-sdks/platform/typescript/docs/models/renderoperatormanifestrequest.md index 93d74398f..4adb6aa83 100644 --- a/client-sdks/platform/typescript/docs/models/renderoperatormanifestrequest.md +++ b/client-sdks/platform/typescript/docs/models/renderoperatormanifestrequest.md @@ -21,7 +21,7 @@ let value: RenderOperatorManifestRequest = { | `format` | [models.RenderOperatorManifestRequestFormat](../models/renderoperatormanifestrequestformat.md) | :heavy_minus_sign: | 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` | *string* | :heavy_minus_sign: | Per-environment identity. Required for raw output, ignored for helm. | my-app | | `namespace` | *string* | :heavy_minus_sign: | Namespace to observe and install into. Omit for helm to use the release namespace. | | -| `scope` | [models.ScopeEnum](../models/scopeenum.md) | :heavy_minus_sign: | namespace: a namespaced Role that manages the install namespace. cluster: a ClusterRole that manages every namespace. | | +| `scope` | [models.RenderOperatorManifestRequestScope](../models/renderoperatormanifestrequestscope.md) | :heavy_minus_sign: | namespace: a namespaced Role that manages the install namespace. cluster: a ClusterRole that manages every namespace. | | | `labelSelector` | *string* | :heavy_minus_sign: | Optional Kubernetes label selector narrowing what is managed, applied within the scope. | | | `permission` | [models.Permission](../models/permission.md) | :heavy_minus_sign: | Operator permission tier | | | `operatorImagePackageId` | *string* | :heavy_minus_sign: | Ready operator-image package to use for the Operator image. If omitted, the latest ready operator-image package for the project is used. | pkg_jebo2o5jmm7raefl2m1pe3cz | diff --git a/client-sdks/platform/typescript/docs/models/renderoperatormanifestrequestscope.md b/client-sdks/platform/typescript/docs/models/renderoperatormanifestrequestscope.md new file mode 100644 index 000000000..75b0723cd --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/renderoperatormanifestrequestscope.md @@ -0,0 +1,17 @@ +# RenderOperatorManifestRequestScope + +namespace: a namespaced Role that manages the install namespace. cluster: a ClusterRole that manages every namespace. + +## Example Usage + +```typescript +import { RenderOperatorManifestRequestScope } from "@alienplatform/platform-api/models"; + +let value: RenderOperatorManifestRequestScope = "namespace"; +``` + +## Values + +```typescript +"namespace" | "cluster" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/repository.md b/client-sdks/platform/typescript/docs/models/repository.md deleted file mode 100644 index a29135475..000000000 --- a/client-sdks/platform/typescript/docs/models/repository.md +++ /dev/null @@ -1,30 +0,0 @@ -# Repository - -## Example Usage - -```typescript -import { Repository } from "@alienplatform/platform-api/models"; - -let value: Repository = { - createdAt: 4047.24, - kmsKeyPresent: true, - registryId: "", - repositoryArn: "", - repositoryName: "", - repositoryUri: "https://colorful-maestro.info", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------- | -------------------- | -------------------- | -------------------- | -| `createdAt` | *number* | :heavy_check_mark: | N/A | -| `encryptionType` | *string* | :heavy_minus_sign: | N/A | -| `imageTagMutability` | *string* | :heavy_minus_sign: | N/A | -| `kmsKeyPresent` | *boolean* | :heavy_check_mark: | N/A | -| `registryId` | *string* | :heavy_check_mark: | N/A | -| `repositoryArn` | *string* | :heavy_check_mark: | N/A | -| `repositoryName` | *string* | :heavy_check_mark: | N/A | -| `repositoryUri` | *string* | :heavy_check_mark: | N/A | -| `scanOnPush` | *boolean* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/repositorystatus.md b/client-sdks/platform/typescript/docs/models/repositorystatus.md new file mode 100644 index 000000000..195cece68 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/repositorystatus.md @@ -0,0 +1,15 @@ +# RepositoryStatus + +## Example Usage + +```typescript +import { RepositoryStatus } from "@alienplatform/platform-api/models"; + +let value: RepositoryStatus = "pending"; +``` + +## Values + +```typescript +"pending" | "creating" | "ready" | "deleting" | "deleted" | "failed" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/requiredmodelcoverage.md b/client-sdks/platform/typescript/docs/models/requiredmodelcoverage.md new file mode 100644 index 000000000..4917470c3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/requiredmodelcoverage.md @@ -0,0 +1,19 @@ +# RequiredModelCoverage + +## Example Usage + +```typescript +import { RequiredModelCoverage } from "@alienplatform/platform-api/models"; + +let value: RequiredModelCoverage = { + publicModelId: "", + available: true, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `publicModelId` | *string* | :heavy_check_mark: | N/A | +| `available` | *boolean* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/resourcecounts.md b/client-sdks/platform/typescript/docs/models/resourcecounts.md index 5c9e08a2f..952326b46 100644 --- a/client-sdks/platform/typescript/docs/models/resourcecounts.md +++ b/client-sdks/platform/typescript/docs/models/resourcecounts.md @@ -20,6 +20,7 @@ let value: ResourceCounts = { | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | | `workers` | *number* | :heavy_check_mark: | N/A | | `containers` | *number* | :heavy_check_mark: | N/A | +| `daemons` | *number* | :heavy_minus_sign: | Daemon resources that run on managed runtime machines | | `publicHttpsEndpoints` | *number* | :heavy_check_mark: | Resources that declare managed public HTTPS endpoint setup | | `externalInfra` | *number* | :heavy_check_mark: | Storage, queue, KV, vault, database, or cache resources that Kubernetes needs Terraform to provision | | `total` | *number* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/resourceheartbeat.md b/client-sdks/platform/typescript/docs/models/resourceheartbeat.md index a5856bd43..dd4b3a68a 100644 --- a/client-sdks/platform/typescript/docs/models/resourceheartbeat.md +++ b/client-sdks/platform/typescript/docs/models/resourceheartbeat.md @@ -40,7 +40,7 @@ let value: ResourceHeartbeat = { | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | | `backend` | [models.ResourceHeartbeatBackendEnum](../models/resourceheartbeatbackendenum.md) | :heavy_check_mark: | N/A | | `controllerPlatform` | [models.ResourceHeartbeatControllerPlatform](../models/resourceheartbeatcontrollerplatform.md) | :heavy_check_mark: | Represents the target cloud platform. | -| `data` | *models.SyncReconcileRequestDataUnion16* | :heavy_check_mark: | N/A | +| `data` | *models.SyncReconcileRequestDataUnion18* | :heavy_check_mark: | N/A | | `deploymentId` | *string* | :heavy_minus_sign: | N/A | | `observedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | `raw` | [models.ResourceHeartbeatRaw](../models/resourceheartbeatraw.md)[] | :heavy_check_mark: | N/A | diff --git a/client-sdks/platform/typescript/docs/models/resourceheartbeatstatus66.md b/client-sdks/platform/typescript/docs/models/resourceheartbeatstatus66.md new file mode 100644 index 000000000..669009deb --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/resourceheartbeatstatus66.md @@ -0,0 +1,26 @@ +# ResourceHeartbeatStatus66 + +## Example Usage + +```typescript +import { ResourceHeartbeatStatus66 } from "@alienplatform/platform-api/models"; + +let value: ResourceHeartbeatStatus66 = { + collectionIssues: [], + health: "unhealthy", + lifecycle: "stopped", + partial: false, + stale: true, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `collectionIssues` | [models.DataCollectionIssue66](../models/datacollectionissue66.md)[] | :heavy_check_mark: | N/A | +| `health` | [models.DataHealth66](../models/datahealth66.md) | :heavy_check_mark: | N/A | +| `lifecycle` | [models.StatusLifecycle66](../models/statuslifecycle66.md) | :heavy_check_mark: | N/A | +| `message` | *string* | :heavy_minus_sign: | N/A | +| `partial` | *boolean* | :heavy_check_mark: | N/A | +| `stale` | *boolean* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/resourceheartbeatstatus67.md b/client-sdks/platform/typescript/docs/models/resourceheartbeatstatus67.md new file mode 100644 index 000000000..3a496f944 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/resourceheartbeatstatus67.md @@ -0,0 +1,26 @@ +# ResourceHeartbeatStatus67 + +## Example Usage + +```typescript +import { ResourceHeartbeatStatus67 } from "@alienplatform/platform-api/models"; + +let value: ResourceHeartbeatStatus67 = { + collectionIssues: [], + health: "healthy", + lifecycle: "running", + partial: false, + stale: true, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `collectionIssues` | [models.DataCollectionIssue67](../models/datacollectionissue67.md)[] | :heavy_check_mark: | N/A | +| `health` | [models.DataHealth67](../models/datahealth67.md) | :heavy_check_mark: | N/A | +| `lifecycle` | [models.StatusLifecycle67](../models/statuslifecycle67.md) | :heavy_check_mark: | N/A | +| `message` | *string* | :heavy_minus_sign: | N/A | +| `partial` | *boolean* | :heavy_check_mark: | N/A | +| `stale` | *boolean* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/resourceheartbeatstatus68.md b/client-sdks/platform/typescript/docs/models/resourceheartbeatstatus68.md new file mode 100644 index 000000000..b66076466 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/resourceheartbeatstatus68.md @@ -0,0 +1,26 @@ +# ResourceHeartbeatStatus68 + +## Example Usage + +```typescript +import { ResourceHeartbeatStatus68 } from "@alienplatform/platform-api/models"; + +let value: ResourceHeartbeatStatus68 = { + collectionIssues: [], + health: "healthy", + lifecycle: "failed", + partial: true, + stale: false, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `collectionIssues` | [models.DataCollectionIssue68](../models/datacollectionissue68.md)[] | :heavy_check_mark: | N/A | +| `health` | [models.DataHealth68](../models/datahealth68.md) | :heavy_check_mark: | N/A | +| `lifecycle` | [models.StatusLifecycle68](../models/statuslifecycle68.md) | :heavy_check_mark: | N/A | +| `message` | *string* | :heavy_minus_sign: | N/A | +| `partial` | *boolean* | :heavy_check_mark: | N/A | +| `stale` | *boolean* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/resourceheartbeatstatus69.md b/client-sdks/platform/typescript/docs/models/resourceheartbeatstatus69.md new file mode 100644 index 000000000..4adaf6065 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/resourceheartbeatstatus69.md @@ -0,0 +1,26 @@ +# ResourceHeartbeatStatus69 + +## Example Usage + +```typescript +import { ResourceHeartbeatStatus69 } from "@alienplatform/platform-api/models"; + +let value: ResourceHeartbeatStatus69 = { + collectionIssues: [], + health: "degraded", + lifecycle: "stopping", + partial: true, + stale: true, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `collectionIssues` | [models.DataCollectionIssue69](../models/datacollectionissue69.md)[] | :heavy_check_mark: | N/A | +| `health` | [models.DataHealth69](../models/datahealth69.md) | :heavy_check_mark: | N/A | +| `lifecycle` | [models.StatusLifecycle69](../models/statuslifecycle69.md) | :heavy_check_mark: | N/A | +| `message` | *string* | :heavy_minus_sign: | N/A | +| `partial` | *boolean* | :heavy_check_mark: | N/A | +| `stale` | *boolean* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/resourceheartbeatstatus70.md b/client-sdks/platform/typescript/docs/models/resourceheartbeatstatus70.md new file mode 100644 index 000000000..fbca6317c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/resourceheartbeatstatus70.md @@ -0,0 +1,20 @@ +# ResourceHeartbeatStatus70 + +## Example Usage + +```typescript +import { ResourceHeartbeatStatus70 } from "@alienplatform/platform-api/models"; + +let value: ResourceHeartbeatStatus70 = { + health: "unhealthy", + lifecycle: "stopping", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | +| `health` | [models.DataHealth70](../models/datahealth70.md) | :heavy_check_mark: | N/A | +| `lifecycle` | [models.StatusLifecycle70](../models/statuslifecycle70.md) | :heavy_check_mark: | N/A | +| `message` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/resourceheartbeatstatus71.md b/client-sdks/platform/typescript/docs/models/resourceheartbeatstatus71.md new file mode 100644 index 000000000..99039ef6c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/resourceheartbeatstatus71.md @@ -0,0 +1,20 @@ +# ResourceHeartbeatStatus71 + +## Example Usage + +```typescript +import { ResourceHeartbeatStatus71 } from "@alienplatform/platform-api/models"; + +let value: ResourceHeartbeatStatus71 = { + health: "degraded", + lifecycle: "updating", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | +| `health` | [models.DataHealth71](../models/datahealth71.md) | :heavy_check_mark: | N/A | +| `lifecycle` | [models.StatusLifecycle71](../models/statuslifecycle71.md) | :heavy_check_mark: | N/A | +| `message` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/resourceheartbeatstatus72.md b/client-sdks/platform/typescript/docs/models/resourceheartbeatstatus72.md new file mode 100644 index 000000000..ce81c2449 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/resourceheartbeatstatus72.md @@ -0,0 +1,20 @@ +# ResourceHeartbeatStatus72 + +## Example Usage + +```typescript +import { ResourceHeartbeatStatus72 } from "@alienplatform/platform-api/models"; + +let value: ResourceHeartbeatStatus72 = { + health: "unknown", + lifecycle: "running", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | +| `health` | [models.DataHealth72](../models/datahealth72.md) | :heavy_check_mark: | N/A | +| `lifecycle` | [models.StatusLifecycle72](../models/statuslifecycle72.md) | :heavy_check_mark: | N/A | +| `message` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/rollout.md b/client-sdks/platform/typescript/docs/models/rollout.md new file mode 100644 index 000000000..3e3c394b0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/rollout.md @@ -0,0 +1,23 @@ +# Rollout + +Rollout stats, included when ?include=rollout is used + +## Example Usage + +```typescript +import { Rollout } from "@alienplatform/platform-api/models"; + +let value: Rollout = { + updatedCount: 786693, + pendingCount: 96641, + avgDurationMs: 4012.4, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `updatedCount` | *number* | :heavy_check_mark: | Deployments that finished updating to this release (excludes initial provisions) | +| `pendingCount` | *number* | :heavy_check_mark: | Deployments currently targeting this release but not yet running it | +| `avgDurationMs` | *number* | :heavy_check_mark: | Average time from release creation until a deployment finished updating, in milliseconds | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/scopeenum.md b/client-sdks/platform/typescript/docs/models/scopeenum.md deleted file mode 100644 index 538463551..000000000 --- a/client-sdks/platform/typescript/docs/models/scopeenum.md +++ /dev/null @@ -1,17 +0,0 @@ -# ScopeEnum - -namespace: a namespaced Role that manages the install namespace. cluster: a ClusterRole that manages every namespace. - -## Example Usage - -```typescript -import { ScopeEnum } from "@alienplatform/platform-api/models"; - -let value: ScopeEnum = "namespace"; -``` - -## Values - -```typescript -"namespace" | "cluster" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/setoperationspluginenabledrequest.md b/client-sdks/platform/typescript/docs/models/setoperationspluginenabledrequest.md new file mode 100644 index 000000000..5e98fbddc --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/setoperationspluginenabledrequest.md @@ -0,0 +1,17 @@ +# SetOperationsPluginEnabledRequest + +## Example Usage + +```typescript +import { SetOperationsPluginEnabledRequest } from "@alienplatform/platform-api/models"; + +let value: SetOperationsPluginEnabledRequest = { + enabled: false, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | +| `enabled` | *boolean* | :heavy_check_mark: | Whether the plugin should be baked into the operator image. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/setoperationspluginenabledresponse.md b/client-sdks/platform/typescript/docs/models/setoperationspluginenabledresponse.md new file mode 100644 index 000000000..447164533 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/setoperationspluginenabledresponse.md @@ -0,0 +1,21 @@ +# SetOperationsPluginEnabledResponse + +## Example Usage + +```typescript +import { SetOperationsPluginEnabledResponse } from "@alienplatform/platform-api/models"; + +let value: SetOperationsPluginEnabledResponse = { + name: "", + builtin: true, + enabled: true, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `name` | *string* | :heavy_check_mark: | N/A | +| `builtin` | *boolean* | :heavy_check_mark: | N/A | +| `enabled` | *boolean* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/setupitemstatus.md b/client-sdks/platform/typescript/docs/models/setupitemstatus.md index 677726832..1cfaa682e 100644 --- a/client-sdks/platform/typescript/docs/models/setupitemstatus.md +++ b/client-sdks/platform/typescript/docs/models/setupitemstatus.md @@ -6,9 +6,9 @@ import { SetupItemStatus } from "@alienplatform/platform-api/models"; let value: SetupItemStatus = { - item: "keys", + item: "registry", source: { - type: "application-release", + type: "project-release", releaseChannel: "", releaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", }, diff --git a/client-sdks/platform/typescript/docs/models/setupitemstatusallowedprovider.md b/client-sdks/platform/typescript/docs/models/setupitemstatusallowedprovider.md index c3ca18bb4..d6ca69c37 100644 --- a/client-sdks/platform/typescript/docs/models/setupitemstatusallowedprovider.md +++ b/client-sdks/platform/typescript/docs/models/setupitemstatusallowedprovider.md @@ -11,5 +11,5 @@ let value: SetupItemStatusAllowedProvider = "aws-bedrock"; ## Values ```typescript -"aws-bedrock" | "gcp-vertex" | "azure-foundry" | "anthropic" +"aws-bedrock" | "gcp-vertex" | "azure-foundry" | "anthropic" | "databricks" | "openai" ``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/setupitemstatusdefinitionid.md b/client-sdks/platform/typescript/docs/models/setupitemstatusdefinitionid.md index 8486a0dcb..83b7c7bb3 100644 --- a/client-sdks/platform/typescript/docs/models/setupitemstatusdefinitionid.md +++ b/client-sdks/platform/typescript/docs/models/setupitemstatusdefinitionid.md @@ -5,11 +5,11 @@ ```typescript import { SetupItemStatusDefinitionId } from "@alienplatform/platform-api/models"; -let value: SetupItemStatusDefinitionId = "customer-key"; +let value: SetupItemStatusDefinitionId = "customer-registry"; ``` ## Values ```typescript -"customer-ai" | "customer-key" +"customer-ai" | "customer-key" | "customer-storage" | "customer-registry" ``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/setupitemstatusitem.md b/client-sdks/platform/typescript/docs/models/setupitemstatusitem.md index 7797a975e..942e8f4e1 100644 --- a/client-sdks/platform/typescript/docs/models/setupitemstatusitem.md +++ b/client-sdks/platform/typescript/docs/models/setupitemstatusitem.md @@ -5,11 +5,11 @@ ```typescript import { SetupItemStatusItem } from "@alienplatform/platform-api/models"; -let value: SetupItemStatusItem = "keys"; +let value: SetupItemStatusItem = "registry"; ``` ## Values ```typescript -"alien-stack" | "models" | "keys" +"deployment" | "models" | "keys" | "bucket" | "registry" ``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/setupitemstatussourceapplicationrelease.md b/client-sdks/platform/typescript/docs/models/setupitemstatussourceapplicationrelease.md deleted file mode 100644 index 34f888732..000000000 --- a/client-sdks/platform/typescript/docs/models/setupitemstatussourceapplicationrelease.md +++ /dev/null @@ -1,22 +0,0 @@ -# SetupItemStatusSourceApplicationRelease - -## Example Usage - -```typescript -import { SetupItemStatusSourceApplicationRelease } from "@alienplatform/platform-api/models"; - -let value: SetupItemStatusSourceApplicationRelease = { - type: "application-release", - releaseChannel: "", - releaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", -}; -``` - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | -| `type` | *"application-release"* | :heavy_check_mark: | N/A | | -| `releaseChannel` | *string* | :heavy_check_mark: | N/A | | -| `releaseId` | *string* | :heavy_check_mark: | Unique identifier for the release. | rel_WbhQgksrawSKIpEN0NAssHX9 | -| `resourceId` | *string* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/setupitemstatussourceprojectrelease.md b/client-sdks/platform/typescript/docs/models/setupitemstatussourceprojectrelease.md new file mode 100644 index 000000000..5379cb97d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/setupitemstatussourceprojectrelease.md @@ -0,0 +1,22 @@ +# SetupItemStatusSourceProjectRelease + +## Example Usage + +```typescript +import { SetupItemStatusSourceProjectRelease } from "@alienplatform/platform-api/models"; + +let value: SetupItemStatusSourceProjectRelease = { + type: "project-release", + releaseChannel: "", + releaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | +| `type` | *"project-release"* | :heavy_check_mark: | N/A | | +| `releaseChannel` | *string* | :heavy_check_mark: | N/A | | +| `releaseId` | *string* | :heavy_check_mark: | Unique identifier for the release. | rel_WbhQgksrawSKIpEN0NAssHX9 | +| `resourceId` | *string* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/setupitemstatussourceunion.md b/client-sdks/platform/typescript/docs/models/setupitemstatussourceunion.md index 710a0244d..1ca5ef5f5 100644 --- a/client-sdks/platform/typescript/docs/models/setupitemstatussourceunion.md +++ b/client-sdks/platform/typescript/docs/models/setupitemstatussourceunion.md @@ -3,11 +3,11 @@ ## Supported Types -### `models.SetupItemStatusSourceApplicationRelease` +### `models.SetupItemStatusSourceProjectRelease` ```typescript -const value: models.SetupItemStatusSourceApplicationRelease = { - type: "application-release", +const value: models.SetupItemStatusSourceProjectRelease = { + type: "project-release", releaseChannel: "", releaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", }; diff --git a/client-sdks/platform/typescript/docs/models/setuppackagesstatus.md b/client-sdks/platform/typescript/docs/models/setuppackagesstatus.md new file mode 100644 index 000000000..73893629c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/setuppackagesstatus.md @@ -0,0 +1,17 @@ +# SetupPackagesStatus + +Whether at least one complete automated setup package is ready across all selected setup items. + +## Example Usage + +```typescript +import { SetupPackagesStatus } from "@alienplatform/platform-api/models"; + +let value: SetupPackagesStatus = "ready"; +``` + +## Values + +```typescript +"preparing" | "ready" | "failed" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/slackchannel.md b/client-sdks/platform/typescript/docs/models/slackchannel.md new file mode 100644 index 000000000..af601c815 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/slackchannel.md @@ -0,0 +1,21 @@ +# SlackChannel + +## Example Usage + +```typescript +import { SlackChannel } from "@alienplatform/platform-api/models"; + +let value: SlackChannel = { + id: "", + name: "", + isMember: false, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `id` | *string* | :heavy_check_mark: | N/A | +| `name` | *string* | :heavy_check_mark: | N/A | +| `isMember` | *boolean* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/slackchannelsresponse.md b/client-sdks/platform/typescript/docs/models/slackchannelsresponse.md new file mode 100644 index 000000000..b1896b6db --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/slackchannelsresponse.md @@ -0,0 +1,17 @@ +# SlackChannelsResponse + +## Example Usage + +```typescript +import { SlackChannelsResponse } from "@alienplatform/platform-api/models"; + +let value: SlackChannelsResponse = { + channels: [], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `channels` | [models.SlackChannel](../models/slackchannel.md)[] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/slackinstallurlresponse.md b/client-sdks/platform/typescript/docs/models/slackinstallurlresponse.md new file mode 100644 index 000000000..a6063ada8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/slackinstallurlresponse.md @@ -0,0 +1,17 @@ +# SlackInstallUrlResponse + +## Example Usage + +```typescript +import { SlackInstallUrlResponse } from "@alienplatform/platform-api/models"; + +let value: SlackInstallUrlResponse = { + url: "https://subtle-relative.name/", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `url` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/slackintegrationstatus.md b/client-sdks/platform/typescript/docs/models/slackintegrationstatus.md new file mode 100644 index 000000000..57d92af7b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/slackintegrationstatus.md @@ -0,0 +1,27 @@ +# SlackIntegrationStatus + +## Example Usage + +```typescript +import { SlackIntegrationStatus } from "@alienplatform/platform-api/models"; + +let value: SlackIntegrationStatus = { + connected: true, + slackTeamId: "", + slackTeamName: "", + installedByUserId: "", + installedAt: "", + notificationChannelId: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------- | ----------------------- | ----------------------- | ----------------------- | +| `connected` | *boolean* | :heavy_check_mark: | N/A | +| `slackTeamId` | *string* | :heavy_check_mark: | N/A | +| `slackTeamName` | *string* | :heavy_check_mark: | N/A | +| `installedByUserId` | *string* | :heavy_check_mark: | N/A | +| `installedAt` | *string* | :heavy_check_mark: | N/A | +| `notificationChannelId` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/slacknotificationchannelrequest.md b/client-sdks/platform/typescript/docs/models/slacknotificationchannelrequest.md new file mode 100644 index 000000000..73b136ece --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/slacknotificationchannelrequest.md @@ -0,0 +1,17 @@ +# SlackNotificationChannelRequest + +## Example Usage + +```typescript +import { SlackNotificationChannelRequest } from "@alienplatform/platform-api/models"; + +let value: SlackNotificationChannelRequest = { + channelId: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `channelId` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/slacknotificationchannelresponse.md b/client-sdks/platform/typescript/docs/models/slacknotificationchannelresponse.md new file mode 100644 index 000000000..1dace8dee --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/slacknotificationchannelresponse.md @@ -0,0 +1,19 @@ +# SlackNotificationChannelResponse + +## Example Usage + +```typescript +import { SlackNotificationChannelResponse } from "@alienplatform/platform-api/models"; + +let value: SlackNotificationChannelResponse = { + notificationChannelId: "", + warning: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------- | ----------------------- | ----------------------- | ----------------------- | +| `notificationChannelId` | *string* | :heavy_check_mark: | N/A | +| `warning` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/sourceevent1.md b/client-sdks/platform/typescript/docs/models/sourceevent1.md new file mode 100644 index 000000000..d4676e867 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/sourceevent1.md @@ -0,0 +1,16 @@ +# SourceEvent1 + +## Example Usage + +```typescript +import { SourceEvent1 } from "@alienplatform/platform-api/models"; + +let value: SourceEvent1 = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `component` | *string* | :heavy_minus_sign: | N/A | +| `host` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/sourceevent10.md b/client-sdks/platform/typescript/docs/models/sourceevent10.md new file mode 100644 index 000000000..046ead673 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/sourceevent10.md @@ -0,0 +1,16 @@ +# SourceEvent10 + +## Example Usage + +```typescript +import { SourceEvent10 } from "@alienplatform/platform-api/models"; + +let value: SourceEvent10 = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `component` | *string* | :heavy_minus_sign: | N/A | +| `host` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/sourceevent2.md b/client-sdks/platform/typescript/docs/models/sourceevent2.md new file mode 100644 index 000000000..fe28891ef --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/sourceevent2.md @@ -0,0 +1,16 @@ +# SourceEvent2 + +## Example Usage + +```typescript +import { SourceEvent2 } from "@alienplatform/platform-api/models"; + +let value: SourceEvent2 = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `component` | *string* | :heavy_minus_sign: | N/A | +| `host` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/sourceevent3.md b/client-sdks/platform/typescript/docs/models/sourceevent3.md new file mode 100644 index 000000000..1517c37c4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/sourceevent3.md @@ -0,0 +1,16 @@ +# SourceEvent3 + +## Example Usage + +```typescript +import { SourceEvent3 } from "@alienplatform/platform-api/models"; + +let value: SourceEvent3 = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `component` | *string* | :heavy_minus_sign: | N/A | +| `host` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/sourceevent4.md b/client-sdks/platform/typescript/docs/models/sourceevent4.md new file mode 100644 index 000000000..c9e6c6066 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/sourceevent4.md @@ -0,0 +1,16 @@ +# SourceEvent4 + +## Example Usage + +```typescript +import { SourceEvent4 } from "@alienplatform/platform-api/models"; + +let value: SourceEvent4 = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `component` | *string* | :heavy_minus_sign: | N/A | +| `host` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/sourceevent5.md b/client-sdks/platform/typescript/docs/models/sourceevent5.md new file mode 100644 index 000000000..5858b34d8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/sourceevent5.md @@ -0,0 +1,16 @@ +# SourceEvent5 + +## Example Usage + +```typescript +import { SourceEvent5 } from "@alienplatform/platform-api/models"; + +let value: SourceEvent5 = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `component` | *string* | :heavy_minus_sign: | N/A | +| `host` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/sourceevent6.md b/client-sdks/platform/typescript/docs/models/sourceevent6.md new file mode 100644 index 000000000..b47e25a49 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/sourceevent6.md @@ -0,0 +1,16 @@ +# SourceEvent6 + +## Example Usage + +```typescript +import { SourceEvent6 } from "@alienplatform/platform-api/models"; + +let value: SourceEvent6 = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `component` | *string* | :heavy_minus_sign: | N/A | +| `host` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/sourceevent7.md b/client-sdks/platform/typescript/docs/models/sourceevent7.md new file mode 100644 index 000000000..e54630d52 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/sourceevent7.md @@ -0,0 +1,16 @@ +# SourceEvent7 + +## Example Usage + +```typescript +import { SourceEvent7 } from "@alienplatform/platform-api/models"; + +let value: SourceEvent7 = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `component` | *string* | :heavy_minus_sign: | N/A | +| `host` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/sourceevent8.md b/client-sdks/platform/typescript/docs/models/sourceevent8.md new file mode 100644 index 000000000..4ff2b3fab --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/sourceevent8.md @@ -0,0 +1,16 @@ +# SourceEvent8 + +## Example Usage + +```typescript +import { SourceEvent8 } from "@alienplatform/platform-api/models"; + +let value: SourceEvent8 = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `component` | *string* | :heavy_minus_sign: | N/A | +| `host` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/sourceevent9.md b/client-sdks/platform/typescript/docs/models/sourceevent9.md new file mode 100644 index 000000000..c628affb4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/sourceevent9.md @@ -0,0 +1,16 @@ +# SourceEvent9 + +## Example Usage + +```typescript +import { SourceEvent9 } from "@alienplatform/platform-api/models"; + +let value: SourceEvent9 = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `component` | *string* | :heavy_minus_sign: | N/A | +| `host` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/state.md b/client-sdks/platform/typescript/docs/models/state.md deleted file mode 100644 index fcc9aa55c..000000000 --- a/client-sdks/platform/typescript/docs/models/state.md +++ /dev/null @@ -1,33 +0,0 @@ -# State - -Represents the state of an event - - -## Supported Types - -### `models.EventState` - -```typescript -const value: models.EventState = { - failed: {}, -}; -``` - -### `models.StateNone` - -```typescript -const value: models.StateNone = "none"; -``` - -### `models.StateStarted` - -```typescript -const value: models.StateStarted = "started"; -``` - -### `models.StateSuccess` - -```typescript -const value: models.StateSuccess = "success"; -``` - diff --git a/client-sdks/platform/typescript/docs/models/statenone.md b/client-sdks/platform/typescript/docs/models/statenone.md deleted file mode 100644 index e7e45caf9..000000000 --- a/client-sdks/platform/typescript/docs/models/statenone.md +++ /dev/null @@ -1,15 +0,0 @@ -# StateNone - -## Example Usage - -```typescript -import { StateNone } from "@alienplatform/platform-api/models"; - -let value: StateNone = "none"; -``` - -## Values - -```typescript -"none" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/statestarted.md b/client-sdks/platform/typescript/docs/models/statestarted.md deleted file mode 100644 index a6710e860..000000000 --- a/client-sdks/platform/typescript/docs/models/statestarted.md +++ /dev/null @@ -1,15 +0,0 @@ -# StateStarted - -## Example Usage - -```typescript -import { StateStarted } from "@alienplatform/platform-api/models"; - -let value: StateStarted = "started"; -``` - -## Values - -```typescript -"started" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/statesuccess.md b/client-sdks/platform/typescript/docs/models/statesuccess.md deleted file mode 100644 index 3e7d24302..000000000 --- a/client-sdks/platform/typescript/docs/models/statesuccess.md +++ /dev/null @@ -1,15 +0,0 @@ -# StateSuccess - -## Example Usage - -```typescript -import { StateSuccess } from "@alienplatform/platform-api/models"; - -let value: StateSuccess = "success"; -``` - -## Values - -```typescript -"success" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/statuslifecycle66.md b/client-sdks/platform/typescript/docs/models/statuslifecycle66.md new file mode 100644 index 000000000..c0ccf1cc6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/statuslifecycle66.md @@ -0,0 +1,15 @@ +# StatusLifecycle66 + +## Example Usage + +```typescript +import { StatusLifecycle66 } from "@alienplatform/platform-api/models"; + +let value: StatusLifecycle66 = "stopped"; +``` + +## Values + +```typescript +"unknown" | "creating" | "updating" | "running" | "scaling" | "stopping" | "stopped" | "deleting" | "deleted" | "failed" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/statuslifecycle67.md b/client-sdks/platform/typescript/docs/models/statuslifecycle67.md new file mode 100644 index 000000000..6aab96b35 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/statuslifecycle67.md @@ -0,0 +1,15 @@ +# StatusLifecycle67 + +## Example Usage + +```typescript +import { StatusLifecycle67 } from "@alienplatform/platform-api/models"; + +let value: StatusLifecycle67 = "stopped"; +``` + +## Values + +```typescript +"unknown" | "creating" | "updating" | "running" | "scaling" | "stopping" | "stopped" | "deleting" | "deleted" | "failed" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/statuslifecycle68.md b/client-sdks/platform/typescript/docs/models/statuslifecycle68.md new file mode 100644 index 000000000..18a4d2827 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/statuslifecycle68.md @@ -0,0 +1,15 @@ +# StatusLifecycle68 + +## Example Usage + +```typescript +import { StatusLifecycle68 } from "@alienplatform/platform-api/models"; + +let value: StatusLifecycle68 = "running"; +``` + +## Values + +```typescript +"unknown" | "creating" | "updating" | "running" | "scaling" | "stopping" | "stopped" | "deleting" | "deleted" | "failed" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/statuslifecycle69.md b/client-sdks/platform/typescript/docs/models/statuslifecycle69.md new file mode 100644 index 000000000..e7cf8e352 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/statuslifecycle69.md @@ -0,0 +1,15 @@ +# StatusLifecycle69 + +## Example Usage + +```typescript +import { StatusLifecycle69 } from "@alienplatform/platform-api/models"; + +let value: StatusLifecycle69 = "running"; +``` + +## Values + +```typescript +"unknown" | "creating" | "updating" | "running" | "scaling" | "stopping" | "stopped" | "deleting" | "deleted" | "failed" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/statuslifecycle70.md b/client-sdks/platform/typescript/docs/models/statuslifecycle70.md new file mode 100644 index 000000000..a8d9c5183 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/statuslifecycle70.md @@ -0,0 +1,15 @@ +# StatusLifecycle70 + +## Example Usage + +```typescript +import { StatusLifecycle70 } from "@alienplatform/platform-api/models"; + +let value: StatusLifecycle70 = "deleting"; +``` + +## Values + +```typescript +"unknown" | "creating" | "updating" | "running" | "scaling" | "stopping" | "stopped" | "deleting" | "deleted" | "failed" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/statuslifecycle71.md b/client-sdks/platform/typescript/docs/models/statuslifecycle71.md new file mode 100644 index 000000000..95312a65d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/statuslifecycle71.md @@ -0,0 +1,15 @@ +# StatusLifecycle71 + +## Example Usage + +```typescript +import { StatusLifecycle71 } from "@alienplatform/platform-api/models"; + +let value: StatusLifecycle71 = "running"; +``` + +## Values + +```typescript +"unknown" | "creating" | "updating" | "running" | "scaling" | "stopping" | "stopped" | "deleting" | "deleted" | "failed" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/statuslifecycle72.md b/client-sdks/platform/typescript/docs/models/statuslifecycle72.md new file mode 100644 index 000000000..2144a7295 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/statuslifecycle72.md @@ -0,0 +1,15 @@ +# StatusLifecycle72 + +## Example Usage + +```typescript +import { StatusLifecycle72 } from "@alienplatform/platform-api/models"; + +let value: StatusLifecycle72 = "failed"; +``` + +## Values + +```typescript +"unknown" | "creating" | "updating" | "running" | "scaling" | "stopping" | "stopped" | "deleting" | "deleted" | "failed" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/statusseverity66.md b/client-sdks/platform/typescript/docs/models/statusseverity66.md new file mode 100644 index 000000000..3b0449a82 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/statusseverity66.md @@ -0,0 +1,15 @@ +# StatusSeverity66 + +## Example Usage + +```typescript +import { StatusSeverity66 } from "@alienplatform/platform-api/models"; + +let value: StatusSeverity66 = "error"; +``` + +## Values + +```typescript +"info" | "warning" | "error" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/statusseverity67.md b/client-sdks/platform/typescript/docs/models/statusseverity67.md new file mode 100644 index 000000000..275270234 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/statusseverity67.md @@ -0,0 +1,15 @@ +# StatusSeverity67 + +## Example Usage + +```typescript +import { StatusSeverity67 } from "@alienplatform/platform-api/models"; + +let value: StatusSeverity67 = "error"; +``` + +## Values + +```typescript +"info" | "warning" | "error" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/statusseverity68.md b/client-sdks/platform/typescript/docs/models/statusseverity68.md new file mode 100644 index 000000000..1fd714daa --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/statusseverity68.md @@ -0,0 +1,15 @@ +# StatusSeverity68 + +## Example Usage + +```typescript +import { StatusSeverity68 } from "@alienplatform/platform-api/models"; + +let value: StatusSeverity68 = "warning"; +``` + +## Values + +```typescript +"info" | "warning" | "error" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/statusseverity69.md b/client-sdks/platform/typescript/docs/models/statusseverity69.md new file mode 100644 index 000000000..857ed39b3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/statusseverity69.md @@ -0,0 +1,15 @@ +# StatusSeverity69 + +## Example Usage + +```typescript +import { StatusSeverity69 } from "@alienplatform/platform-api/models"; + +let value: StatusSeverity69 = "warning"; +``` + +## Values + +```typescript +"info" | "warning" | "error" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/summary.md b/client-sdks/platform/typescript/docs/models/summary.md new file mode 100644 index 000000000..a86f85759 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/summary.md @@ -0,0 +1,52 @@ +# Summary + +## Example Usage + +```typescript +import { Summary } from "@alienplatform/platform-api/models"; + +let value: Summary = { + groups: 717063, + capabilities: { + models: { + enabled: false, + connected: 125192, + settingUp: 258850, + needsAttention: 397545, + revoked: 804965, + notConnected: 379194, + }, + keys: { + enabled: true, + connected: 320779, + settingUp: 72958, + needsAttention: 143069, + revoked: 714520, + notConnected: 306654, + }, + buckets: { + enabled: false, + connected: 546814, + settingUp: 839265, + needsAttention: 603306, + revoked: 730330, + notConnected: 924949, + }, + registry: { + enabled: true, + connected: 336407, + settingUp: 784831, + needsAttention: 961354, + revoked: 697113, + notConnected: 723984, + }, + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `groups` | *number* | :heavy_check_mark: | N/A | +| `capabilities` | [models.SummaryCapabilities](../models/summarycapabilities.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/summarybuckets.md b/client-sdks/platform/typescript/docs/models/summarybuckets.md new file mode 100644 index 000000000..5918b136d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/summarybuckets.md @@ -0,0 +1,27 @@ +# SummaryBuckets + +## Example Usage + +```typescript +import { SummaryBuckets } from "@alienplatform/platform-api/models"; + +let value: SummaryBuckets = { + enabled: true, + connected: 880958, + settingUp: 601135, + needsAttention: 299548, + revoked: 232801, + notConnected: 968938, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `enabled` | *boolean* | :heavy_check_mark: | N/A | +| `connected` | *number* | :heavy_check_mark: | N/A | +| `settingUp` | *number* | :heavy_check_mark: | N/A | +| `needsAttention` | *number* | :heavy_check_mark: | N/A | +| `revoked` | *number* | :heavy_check_mark: | N/A | +| `notConnected` | *number* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/summarycapabilities.md b/client-sdks/platform/typescript/docs/models/summarycapabilities.md new file mode 100644 index 000000000..ebd907142 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/summarycapabilities.md @@ -0,0 +1,51 @@ +# SummaryCapabilities + +## Example Usage + +```typescript +import { SummaryCapabilities } from "@alienplatform/platform-api/models"; + +let value: SummaryCapabilities = { + models: { + enabled: false, + connected: 125192, + settingUp: 258850, + needsAttention: 397545, + revoked: 804965, + notConnected: 379194, + }, + keys: { + enabled: true, + connected: 320779, + settingUp: 72958, + needsAttention: 143069, + revoked: 714520, + notConnected: 306654, + }, + buckets: { + enabled: false, + connected: 546814, + settingUp: 839265, + needsAttention: 603306, + revoked: 730330, + notConnected: 924949, + }, + registry: { + enabled: true, + connected: 336407, + settingUp: 784831, + needsAttention: 961354, + revoked: 697113, + notConnected: 723984, + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | +| `models` | [models.SummaryModels](../models/summarymodels.md) | :heavy_check_mark: | N/A | +| `keys` | [models.SummaryKeys](../models/summarykeys.md) | :heavy_check_mark: | N/A | +| `buckets` | [models.SummaryBuckets](../models/summarybuckets.md) | :heavy_check_mark: | N/A | +| `registry` | [models.SummaryRegistry](../models/summaryregistry.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/summarykeys.md b/client-sdks/platform/typescript/docs/models/summarykeys.md new file mode 100644 index 000000000..f68fe757d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/summarykeys.md @@ -0,0 +1,27 @@ +# SummaryKeys + +## Example Usage + +```typescript +import { SummaryKeys } from "@alienplatform/platform-api/models"; + +let value: SummaryKeys = { + enabled: false, + connected: 650828, + settingUp: 549308, + needsAttention: 168151, + revoked: 503203, + notConnected: 877231, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `enabled` | *boolean* | :heavy_check_mark: | N/A | +| `connected` | *number* | :heavy_check_mark: | N/A | +| `settingUp` | *number* | :heavy_check_mark: | N/A | +| `needsAttention` | *number* | :heavy_check_mark: | N/A | +| `revoked` | *number* | :heavy_check_mark: | N/A | +| `notConnected` | *number* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/summarymodels.md b/client-sdks/platform/typescript/docs/models/summarymodels.md new file mode 100644 index 000000000..942552291 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/summarymodels.md @@ -0,0 +1,27 @@ +# SummaryModels + +## Example Usage + +```typescript +import { SummaryModels } from "@alienplatform/platform-api/models"; + +let value: SummaryModels = { + enabled: false, + connected: 101348, + settingUp: 290318, + needsAttention: 512415, + revoked: 190177, + notConnected: 532790, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `enabled` | *boolean* | :heavy_check_mark: | N/A | +| `connected` | *number* | :heavy_check_mark: | N/A | +| `settingUp` | *number* | :heavy_check_mark: | N/A | +| `needsAttention` | *number* | :heavy_check_mark: | N/A | +| `revoked` | *number* | :heavy_check_mark: | N/A | +| `notConnected` | *number* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/summaryregistry.md b/client-sdks/platform/typescript/docs/models/summaryregistry.md new file mode 100644 index 000000000..5eb8ca66d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/summaryregistry.md @@ -0,0 +1,27 @@ +# SummaryRegistry + +## Example Usage + +```typescript +import { SummaryRegistry } from "@alienplatform/platform-api/models"; + +let value: SummaryRegistry = { + enabled: false, + connected: 176866, + settingUp: 788790, + needsAttention: 792151, + revoked: 171978, + notConnected: 501701, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `enabled` | *boolean* | :heavy_check_mark: | N/A | +| `connected` | *number* | :heavy_check_mark: | N/A | +| `settingUp` | *number* | :heavy_check_mark: | N/A | +| `needsAttention` | *number* | :heavy_check_mark: | N/A | +| `revoked` | *number* | :heavy_check_mark: | N/A | +| `notConnected` | *number* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquirerequest.md b/client-sdks/platform/typescript/docs/models/syncacquirerequest.md index 77ed35fb0..df67eaf55 100644 --- a/client-sdks/platform/typescript/docs/models/syncacquirerequest.md +++ b/client-sdks/platform/typescript/docs/models/syncacquirerequest.md @@ -10,6 +10,7 @@ import { SyncAcquireRequest } from "@alienplatform/platform-api/models"; let value: SyncAcquireRequest = { managerId: "mgr_enxscjrqiiu2lrc672hwwuc5", session: "", + requestId: "", deploymentIds: [ "dep_0c29fq4a2yjb7kx3smwdgxlc", ], diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponse.md b/client-sdks/platform/typescript/docs/models/syncacquireresponse.md index 08bb4853e..2fce8b135 100644 --- a/client-sdks/platform/typescript/docs/models/syncacquireresponse.md +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponse.md @@ -10,12 +10,14 @@ import { SyncAcquireResponse } from "@alienplatform/platform-api/models"; let value: SyncAcquireResponse = { deployments: [], failures: [], + leaseExpiresAt: new Date("2025-06-11T10:38:09.056Z"), }; ``` ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | -| `deployments` | [models.SyncAcquireResponseDeployment](../models/syncacquireresponsedeployment.md)[] | :heavy_check_mark: | List of acquired deployments with deployment context | -| `failures` | [models.Failure](../models/failure.md)[] | :heavy_check_mark: | List of deployments that failed during context building (locks already released) | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `deployments` | [models.SyncAcquireResponseDeployment](../models/syncacquireresponsedeployment.md)[] | :heavy_check_mark: | List of acquired deployments with deployment context | +| `failures` | [models.Failure](../models/failure.md)[] | :heavy_check_mark: | List of deployments that failed during context building (locks already released) | +| `leaseExpiresAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | When the provisional leases on the returned deployments lapse. Confirm them with sync/renew before starting work. Null when nothing was acquired. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentapikey.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentapikey.md new file mode 100644 index 000000000..8e7c37b45 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentapikey.md @@ -0,0 +1,20 @@ +# SyncAcquireResponseDeploymentApiKey + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentApiKey } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentApiKey = { + secretRef: { + key: "", + name: "", + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `secretRef` | [models.SyncAcquireResponseDeploymentApiKeySecretRef](../models/syncacquireresponsedeploymentapikeysecretref.md) | :heavy_check_mark: | Reference to a Kubernetes Secret | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentapikeysecretref.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentapikeysecretref.md new file mode 100644 index 000000000..c31c3fab3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentapikeysecretref.md @@ -0,0 +1,21 @@ +# SyncAcquireResponseDeploymentApiKeySecretRef + +Reference to a Kubernetes Secret + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentApiKeySecretRef } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentApiKeySecretRef = { + key: "", + name: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `key` | *string* | :heavy_check_mark: | N/A | +| `name` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentapikeyunion.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentapikeyunion.md new file mode 100644 index 000000000..eb26007e9 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentapikeyunion.md @@ -0,0 +1,31 @@ +# SyncAcquireResponseDeploymentApiKeyUnion + +Represents a value that can be either a concrete value, a template expression, +or a reference to a Kubernetes Secret + + +## Supported Types + +### `any` + +```typescript +const value: any = ""; +``` + +### `string` + +```typescript +const value: string = ""; +``` + +### `models.SyncAcquireResponseDeploymentApiKey` + +```typescript +const value: models.SyncAcquireResponseDeploymentApiKey = { + secretRef: { + key: "", + name: "", + }, +}; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentconfig.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentconfig.md index d066f47b6..97348cf5e 100644 --- a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentconfig.md +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentconfig.md @@ -34,6 +34,7 @@ let value: SyncAcquireResponseDeploymentConfig = { | `domainMetadata` | *models.SyncAcquireResponseDeploymentDomainMetadataUnion* | :heavy_minus_sign: | N/A | | `environmentVariables` | [models.SyncAcquireResponseDeploymentEnvironmentVariables](../models/syncacquireresponsedeploymentenvironmentvariables.md) | :heavy_check_mark: | Snapshot of environment variables at a point in time | | `externalBindings` | Record | :heavy_minus_sign: | Map from resource ID to external binding.

Validated at runtime: binding type must match resource type. | +| `inputValues` | Record | :heavy_minus_sign: | 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. | | `labelDomain` | *string* | :heavy_minus_sign: | DNS-style label domain used for Kubernetes resource ownership labels.

Defaults to `alien.dev` when absent. Whitelabeled Operator builds set this
so generated workloads and optional log collectors share the same label
namespace. | | `managementConfig` | *models.SyncAcquireResponseDeploymentManagementConfigUnion* | :heavy_minus_sign: | N/A | | `managerUrl` | *string* | :heavy_minus_sign: | Manager base URL (e.g., "https://manager.alien.dev").

The manager IS the container registry — its `/v2/` endpoint serves as
the OCI Distribution API. Controllers derive the proxy host from this
to configure pull auth (RegistryCredentials, imagePullSecrets).

When None (e.g., `alien dev`), controllers use image URIs as-is. | diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentcurrentreleaseresources.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentcurrentreleaseresources.md index c0617126b..8604a695f 100644 --- a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentcurrentreleaseresources.md +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentcurrentreleaseresources.md @@ -17,9 +17,10 @@ let value: SyncAcquireResponseDeploymentCurrentReleaseResources = { ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `config` | [models.SyncAcquireResponseDeploymentCurrentReleaseConfig](../models/syncacquireresponsedeploymentcurrentreleaseconfig.md) | :heavy_check_mark: | 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` | [models.SyncAcquireResponseDeploymentCurrentReleaseDependency](../models/syncacquireresponsedeploymentcurrentreleasedependency.md)[] | :heavy_check_mark: | Additional dependencies for this resource beyond those defined in the resource itself.
The total dependencies are: resource.get_dependencies() + this list | -| `lifecycle` | [models.SyncAcquireResponseDeploymentCurrentReleaseLifecycle](../models/syncacquireresponsedeploymentcurrentreleaselifecycle.md) | :heavy_check_mark: | Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. | -| `remoteAccess` | *boolean* | :heavy_minus_sign: | Enable remote bindings for this resource (BYOB use case).
When true, binding params are synced to StackState's `remote_binding_params`.
Default: false (prevents sensitive data in synced state). | \ No newline at end of file +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `config` | [models.SyncAcquireResponseDeploymentCurrentReleaseConfig](../models/syncacquireresponsedeploymentcurrentreleaseconfig.md) | :heavy_check_mark: | 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` | [models.SyncAcquireResponseDeploymentCurrentReleaseDependency](../models/syncacquireresponsedeploymentcurrentreleasedependency.md)[] | :heavy_check_mark: | Additional dependencies for this resource beyond those defined in the resource itself.
The total dependencies are: resource.get_dependencies() + this list | +| `enabledWhen` | *string* | :heavy_minus_sign: | 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. | +| `lifecycle` | [models.SyncAcquireResponseDeploymentCurrentReleaseLifecycle](../models/syncacquireresponsedeploymentcurrentreleaselifecycle.md) | :heavy_check_mark: | Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. | +| `remoteAccess` | *boolean* | :heavy_minus_sign: | Enable remote bindings for this resource (BYOB use case).
When true, binding params are synced to StackState's `remote_binding_params`.
Default: false (prevents sensitive data in synced state). | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentexternalbindingsai.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentexternalbindingsai.md new file mode 100644 index 000000000..8195d2301 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentexternalbindingsai.md @@ -0,0 +1,27 @@ +# SyncAcquireResponseDeploymentExternalBindingsAi + +External AI provider binding configuration (BYO-key). + +The operator-supplied secret rides inside the binding via +`BindingValue`, so it is a literal on cloud platforms and gains +Kubernetes SecretRef resolution for free (`extract_binding_secrets` walks +the binding JSON for `secretRef`). + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentExternalBindingsAi } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentExternalBindingsAi = { + provider: "", + type: "ai", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `apiKey` | *models.SyncAcquireResponseDeploymentApiKeyUnion* | :heavy_minus_sign: | Represents a value that can be either a concrete value, a template expression,
or a reference to a Kubernetes Secret | +| `provider` | *string* | :heavy_check_mark: | The external AI provider name (e.g., "openai", "anthropic") | +| `type` | [models.SyncAcquireResponseDeploymentTypeAi](../models/syncacquireresponsedeploymenttypeai.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentexternalbindingscloudsql.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentexternalbindingscloudsql.md index 55eef0a20..eccce8a89 100644 --- a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentexternalbindingscloudsql.md +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentexternalbindingscloudsql.md @@ -21,6 +21,7 @@ let value: SyncAcquireResponseDeploymentExternalBindingsCloudSQL = { | `host` | *models.SyncAcquireResponseDeploymentHostUnion1* | :heavy_minus_sign: | Represents a value that can be either a concrete value, a template expression,
or a reference to a Kubernetes Secret | | `passwordSecretName` | *models.SyncAcquireResponseDeploymentPasswordSecretNameUnion* | :heavy_minus_sign: | Represents a value that can be either a concrete value, a template expression,
or a reference to a Kubernetes Secret | | `port` | *models.SyncAcquireResponseDeploymentPortUnion2* | :heavy_minus_sign: | Represents a value that can be either a concrete value, a template expression,
or a reference to a Kubernetes Secret | +| `serverCaCertificates` | *models.SyncAcquireResponseDeploymentServerCaCertificatesUnion* | :heavy_minus_sign: | Represents a value that can be either a concrete value, a template expression,
or a reference to a Kubernetes Secret | | `username` | *models.SyncAcquireResponseDeploymentUsernameUnion2* | :heavy_minus_sign: | Represents a value that can be either a concrete value, a template expression,
or a reference to a Kubernetes Secret | | `service` | *"cloud-sql"* | :heavy_check_mark: | N/A | | `type` | [models.SyncAcquireResponseDeploymentTypePostgres2](../models/syncacquireresponsedeploymenttypepostgres2.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentexternalbindingsexternal.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentexternalbindingsexternal.md index e8dc3bbea..acc553e74 100644 --- a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentexternalbindingsexternal.md +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentexternalbindingsexternal.md @@ -22,6 +22,7 @@ let value: SyncAcquireResponseDeploymentExternalBindingsExternal = { | `host` | *models.SyncAcquireResponseDeploymentHostUnion3* | :heavy_minus_sign: | Represents a value that can be either a concrete value, a template expression,
or a reference to a Kubernetes Secret | | `password` | *string* | :heavy_check_mark: | Connection password as a concrete value, never an unresolved `SecretRef`: the platform
materializes the Kubernetes secret into the pod env. The cloud variants carry a secret
locator instead. | | `port` | *models.SyncAcquireResponseDeploymentPortUnion4* | :heavy_minus_sign: | Represents a value that can be either a concrete value, a template expression,
or a reference to a Kubernetes Secret | +| `sslMode` | [models.SyncAcquireResponseDeploymentSslMode](../models/syncacquireresponsedeploymentsslmode.md) | :heavy_minus_sign: | TLS policy for an operator-provided / BYO Postgres database.

Unlike libpq's ambiguous `prefer` mode, both choices map exactly to the
connection settings exposed by every supported SDK. | | `username` | *models.SyncAcquireResponseDeploymentUsernameUnion4* | :heavy_minus_sign: | Represents a value that can be either a concrete value, a template expression,
or a reference to a Kubernetes Secret | | `service` | *"external"* | :heavy_check_mark: | N/A | | `type` | [models.SyncAcquireResponseDeploymentTypePostgres4](../models/syncacquireresponsedeploymenttypepostgres4.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentexternalbindingsunion7.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentexternalbindingsunion7.md index 96cafb548..acbd4e768 100644 --- a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentexternalbindingsunion7.md +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentexternalbindingsunion7.md @@ -72,3 +72,12 @@ const value: models.SyncAcquireResponseDeploymentExternalBindingsUnion6 = { }; ``` +### `models.SyncAcquireResponseDeploymentExternalBindingsAi` + +```typescript +const value: models.SyncAcquireResponseDeploymentExternalBindingsAi = { + provider: "", + type: "ai", +}; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentfailuredomains1.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentfailuredomains1.md new file mode 100644 index 000000000..f61781d61 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentfailuredomains1.md @@ -0,0 +1,20 @@ +# SyncAcquireResponseDeploymentFailureDomains1 + +Failure-domain policy selected for a compute pool. + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentFailureDomains1 } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentFailureDomains1 = { + spread: 446681, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `selectedFailureDomains` | *string*[] | :heavy_minus_sign: | Concrete provider domains selected during setup.
Empty delegates deterministic selection to the provider setup implementation. | +| `spread` | *number* | :heavy_check_mark: | Number of distinct failure domains across which new stateful replicas may be spread. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentfailuredomains2.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentfailuredomains2.md new file mode 100644 index 000000000..f98035a9a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentfailuredomains2.md @@ -0,0 +1,20 @@ +# SyncAcquireResponseDeploymentFailureDomains2 + +Failure-domain policy selected for a compute pool. + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentFailureDomains2 } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentFailureDomains2 = { + spread: 647430, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `selectedFailureDomains` | *string*[] | :heavy_minus_sign: | Concrete provider domains selected during setup.
Empty delegates deterministic selection to the provider setup implementation. | +| `spread` | *number* | :heavy_check_mark: | Number of distinct failure domains across which new stateful replicas may be spread. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentfailuredomainsunion1.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentfailuredomainsunion1.md new file mode 100644 index 000000000..b634d6ffc --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentfailuredomainsunion1.md @@ -0,0 +1,19 @@ +# SyncAcquireResponseDeploymentFailureDomainsUnion1 + + +## Supported Types + +### `models.SyncAcquireResponseDeploymentFailureDomains1` + +```typescript +const value: models.SyncAcquireResponseDeploymentFailureDomains1 = { + spread: 446681, +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentfailuredomainsunion2.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentfailuredomainsunion2.md new file mode 100644 index 000000000..cb3c7ccba --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentfailuredomainsunion2.md @@ -0,0 +1,19 @@ +# SyncAcquireResponseDeploymentFailureDomainsUnion2 + + +## Supported Types + +### `models.SyncAcquireResponseDeploymentFailureDomains2` + +```typescript +const value: models.SyncAcquireResponseDeploymentFailureDomains2 = { + spread: 647430, +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentinitialsetupauthority.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentinitialsetupauthority.md new file mode 100644 index 000000000..274d4ea2e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentinitialsetupauthority.md @@ -0,0 +1,17 @@ +# SyncAcquireResponseDeploymentInitialSetupAuthority + +Actor that owns structural work during the initial setup phase. + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentInitialSetupAuthority } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentInitialSetupAuthority = "directSetup"; +``` + +## Values + +```typescript +"importedHandoff" | "directSetup" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstack.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstack.md new file mode 100644 index 000000000..f01d067f0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstack.md @@ -0,0 +1,24 @@ +# SyncAcquireResponseDeploymentPendingPreparedStack + +A bag of resources, unaware of any cloud. + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStack } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStack = { + id: "", + resources: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the stack | +| `inputs` | [models.SyncAcquireResponseDeploymentPendingPreparedStackInput](../models/syncacquireresponsedeploymentpendingpreparedstackinput.md)[] | :heavy_minus_sign: | Input definitions required before setup or deployment can proceed. | +| `permissions` | [models.SyncAcquireResponseDeploymentPendingPreparedStackPermissions](../models/syncacquireresponsedeploymentpendingpreparedstackpermissions.md) | :heavy_minus_sign: | Combined permissions configuration that contains both profiles and management | +| `resources` | Record | :heavy_check_mark: | Map of resource IDs to their configurations and lifecycle settings | +| `supportedPlatforms` | [models.SyncAcquireResponseDeploymentPendingPreparedStackSupportedPlatform](../models/syncacquireresponsedeploymentpendingpreparedstacksupportedplatform.md)[] | :heavy_minus_sign: | Which platforms this stack supports. When None, all platforms are supported. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackconfig.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackconfig.md new file mode 100644 index 000000000..df6d30372 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackconfig.md @@ -0,0 +1,22 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackConfig + +Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackConfig } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackConfig = { + id: "", + type: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. | +| `type` | *string* | :heavy_check_mark: | Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. | +| `additionalProperties` | Record | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackdefaultboolean.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackdefaultboolean.md new file mode 100644 index 000000000..d5c540e64 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackdefaultboolean.md @@ -0,0 +1,19 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackDefaultBoolean + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackDefaultBoolean } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackDefaultBoolean = { + type: "boolean", + value: false, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | +| `type` | [models.SyncAcquireResponseDeploymentPendingPreparedStackTypeBoolean](../models/syncacquireresponsedeploymentpendingpreparedstacktypeboolean.md) | :heavy_check_mark: | N/A | +| `value` | *boolean* | :heavy_check_mark: | Boolean default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackdefaultnumber.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackdefaultnumber.md new file mode 100644 index 000000000..805b6ecf3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackdefaultnumber.md @@ -0,0 +1,19 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackDefaultNumber + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackDefaultNumber } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackDefaultNumber = { + type: "number", + value: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | +| `type` | [models.SyncAcquireResponseDeploymentPendingPreparedStackTypeNumber](../models/syncacquireresponsedeploymentpendingpreparedstacktypenumber.md) | :heavy_check_mark: | N/A | +| `value` | *string* | :heavy_check_mark: | Number default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackdefaultstring.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackdefaultstring.md new file mode 100644 index 000000000..f9c7708e8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackdefaultstring.md @@ -0,0 +1,19 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackDefaultString + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackDefaultString } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackDefaultString = { + type: "string", + value: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | +| `type` | [models.SyncAcquireResponseDeploymentPendingPreparedStackTypeString](../models/syncacquireresponsedeploymentpendingpreparedstacktypestring.md) | :heavy_check_mark: | N/A | +| `value` | *string* | :heavy_check_mark: | String default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackdefaultstringlist.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackdefaultstringlist.md new file mode 100644 index 000000000..c23d3b451 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackdefaultstringlist.md @@ -0,0 +1,23 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackDefaultStringList + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackDefaultStringList } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackDefaultStringList = + { + type: "stringList", + value: [ + "", + "", + ], + }; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `type` | [models.SyncAcquireResponseDeploymentPendingPreparedStackTypeStringList](../models/syncacquireresponsedeploymentpendingpreparedstacktypestringlist.md) | :heavy_check_mark: | N/A | +| `value` | *string*[] | :heavy_check_mark: | String list default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackdefaultunion.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackdefaultunion.md new file mode 100644 index 000000000..cec34e977 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackdefaultunion.md @@ -0,0 +1,54 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackDefaultUnion + + +## Supported Types + +### `models.SyncAcquireResponseDeploymentPendingPreparedStackDefaultString` + +```typescript +const value: + models.SyncAcquireResponseDeploymentPendingPreparedStackDefaultString = { + type: "string", + value: "", + }; +``` + +### `models.SyncAcquireResponseDeploymentPendingPreparedStackDefaultNumber` + +```typescript +const value: + models.SyncAcquireResponseDeploymentPendingPreparedStackDefaultNumber = { + type: "number", + value: "", + }; +``` + +### `models.SyncAcquireResponseDeploymentPendingPreparedStackDefaultBoolean` + +```typescript +const value: + models.SyncAcquireResponseDeploymentPendingPreparedStackDefaultBoolean = { + type: "boolean", + value: false, + }; +``` + +### `models.SyncAcquireResponseDeploymentPendingPreparedStackDefaultStringList` + +```typescript +const value: + models.SyncAcquireResponseDeploymentPendingPreparedStackDefaultStringList = { + type: "stringList", + value: [ + "", + "", + ], + }; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackdependency.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackdependency.md new file mode 100644 index 000000000..658f36ff1 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackdependency.md @@ -0,0 +1,21 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackDependency + +Reference to a resource by its stable id and resource type. + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackDependency } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackDependency = { + id: "", + type: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | N/A | +| `type` | *string* | :heavy_check_mark: | Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackenv.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackenv.md new file mode 100644 index 000000000..a9366c5d9 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackenv.md @@ -0,0 +1,21 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackEnv + +How a resolved stack input is injected into runtime environment variables. + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackEnv } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackEnv = { + name: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `name` | *string* | :heavy_check_mark: | Environment variable name. | +| `targetResources` | *string*[] | :heavy_minus_sign: | Target resource IDs or patterns. None means every env-capable resource. | +| `type` | *models.SyncAcquireResponseDeploymentPendingPreparedStackTypeUnion* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextend.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextend.md new file mode 100644 index 000000000..724e8e5e9 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextend.md @@ -0,0 +1,23 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackExtend + +A permission set that can be applied across different cloud platforms + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackExtend } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackExtend = { + description: "whoa impact toward yawningly till", + id: "", + platforms: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `description` | *string* | :heavy_check_mark: | Human-readable description of what this permission set allows | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the permission set (e.g., "storage/data-read") | +| `platforms` | [models.SyncAcquireResponseDeploymentPendingPreparedStackExtendPlatforms](../models/syncacquireresponsedeploymentpendingpreparedstackextendplatforms.md) | :heavy_check_mark: | Platform-specific permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendaw.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendaw.md new file mode 100644 index 000000000..65c3ae6af --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendaw.md @@ -0,0 +1,24 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackExtendAw + +AWS-specific platform permission configuration + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackExtendAw } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackExtendAw = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.SyncAcquireResponseDeploymentPendingPreparedStackExtendAwBinding](../models/syncacquireresponsedeploymentpendingpreparedstackextendawbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `effect` | [models.SyncAcquireResponseDeploymentPendingPreparedStackExtendEffect](../models/syncacquireresponsedeploymentpendingpreparedstackextendeffect.md) | :heavy_minus_sign: | IAM effect. Defaults to Allow. | +| `grant` | [models.SyncAcquireResponseDeploymentPendingPreparedStackExtendAwGrant](../models/syncacquireresponsedeploymentpendingpreparedstackextendawgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendawbinding.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendawbinding.md new file mode 100644 index 000000000..e1a2a2cd9 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendawbinding.md @@ -0,0 +1,19 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackExtendAwBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackExtendAwBinding } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackExtendAwBinding = + {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.SyncAcquireResponseDeploymentPendingPreparedStackExtendAwResource](../models/syncacquireresponsedeploymentpendingpreparedstackextendawresource.md) | :heavy_minus_sign: | AWS-specific binding specification | +| `stack` | [models.SyncAcquireResponseDeploymentPendingPreparedStackExtendAwStack](../models/syncacquireresponsedeploymentpendingpreparedstackextendawstack.md) | :heavy_minus_sign: | AWS-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendawgrant.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendawgrant.md new file mode 100644 index 000000000..fb0311375 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendawgrant.md @@ -0,0 +1,21 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackExtendAwGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackExtendAwGrant } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackExtendAwGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendawresource.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendawresource.md new file mode 100644 index 000000000..b5309fd5f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendawresource.md @@ -0,0 +1,24 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackExtendAwResource + +AWS-specific binding specification + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackExtendAwResource } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackExtendAwResource = { + resources: [ + "", + "", + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendawstack.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendawstack.md new file mode 100644 index 000000000..430fe8b6a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendawstack.md @@ -0,0 +1,23 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackExtendAwStack + +AWS-specific binding specification + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackExtendAwStack } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackExtendAwStack = { + resources: [ + "", + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendazure.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendazure.md new file mode 100644 index 000000000..02cf609ab --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendazure.md @@ -0,0 +1,23 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackExtendAzure + +Azure-specific platform permission configuration + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackExtendAzure } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackExtendAzure = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.SyncAcquireResponseDeploymentPendingPreparedStackExtendAzureBinding](../models/syncacquireresponsedeploymentpendingpreparedstackextendazurebinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.SyncAcquireResponseDeploymentPendingPreparedStackExtendAzureGrant](../models/syncacquireresponsedeploymentpendingpreparedstackextendazuregrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendazurebinding.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendazurebinding.md new file mode 100644 index 000000000..87429a971 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendazurebinding.md @@ -0,0 +1,19 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackExtendAzureBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackExtendAzureBinding } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackExtendAzureBinding = + {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.SyncAcquireResponseDeploymentPendingPreparedStackExtendAzureResource](../models/syncacquireresponsedeploymentpendingpreparedstackextendazureresource.md) | :heavy_minus_sign: | Azure-specific binding specification | +| `stack` | [models.SyncAcquireResponseDeploymentPendingPreparedStackExtendAzureStack](../models/syncacquireresponsedeploymentpendingpreparedstackextendazurestack.md) | :heavy_minus_sign: | Azure-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendazuregrant.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendazuregrant.md new file mode 100644 index 000000000..13c15d18b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendazuregrant.md @@ -0,0 +1,22 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackExtendAzureGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackExtendAzureGrant } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackExtendAzureGrant = + {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendazureresource.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendazureresource.md new file mode 100644 index 000000000..584ab22f9 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendazureresource.md @@ -0,0 +1,20 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackExtendAzureResource + +Azure-specific binding specification + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackExtendAzureResource } from "@alienplatform/platform-api/models"; + +let value: + SyncAcquireResponseDeploymentPendingPreparedStackExtendAzureResource = { + scope: "", + }; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendazurestack.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendazurestack.md new file mode 100644 index 000000000..77155e6f3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendazurestack.md @@ -0,0 +1,19 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackExtendAzureStack + +Azure-specific binding specification + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackExtendAzureStack } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackExtendAzureStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendconditionresource.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendconditionresource.md new file mode 100644 index 000000000..de6b8b838 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendconditionresource.md @@ -0,0 +1,22 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackExtendConditionResource + +GCP IAM condition + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackExtendConditionResource } from "@alienplatform/platform-api/models"; + +let value: + SyncAcquireResponseDeploymentPendingPreparedStackExtendConditionResource = { + expression: "", + title: "", + }; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendconditionstack.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendconditionstack.md new file mode 100644 index 000000000..40d899171 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendconditionstack.md @@ -0,0 +1,22 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackExtendConditionStack + +GCP IAM condition + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackExtendConditionStack } from "@alienplatform/platform-api/models"; + +let value: + SyncAcquireResponseDeploymentPendingPreparedStackExtendConditionStack = { + expression: "", + title: "", + }; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendeffect.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendeffect.md new file mode 100644 index 000000000..f7f345630 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendeffect.md @@ -0,0 +1,18 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackExtendEffect + +IAM effect. Defaults to Allow. + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackExtendEffect } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackExtendEffect = + "Allow"; +``` + +## Values + +```typescript +"Allow" | "Deny" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendgcp.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendgcp.md new file mode 100644 index 000000000..e53effdba --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendgcp.md @@ -0,0 +1,23 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackExtendGcp + +GCP-specific platform permission configuration + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackExtendGcp } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackExtendGcp = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.SyncAcquireResponseDeploymentPendingPreparedStackExtendGcpBinding](../models/syncacquireresponsedeploymentpendingpreparedstackextendgcpbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.SyncAcquireResponseDeploymentPendingPreparedStackExtendGcpGrant](../models/syncacquireresponsedeploymentpendingpreparedstackextendgcpgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendgcpbinding.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendgcpbinding.md new file mode 100644 index 000000000..f634f6a7e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendgcpbinding.md @@ -0,0 +1,19 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackExtendGcpBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackExtendGcpBinding } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackExtendGcpBinding = + {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `resource` | [models.SyncAcquireResponseDeploymentPendingPreparedStackExtendGcpResource](../models/syncacquireresponsedeploymentpendingpreparedstackextendgcpresource.md) | :heavy_minus_sign: | GCP-specific binding specification | +| `stack` | [models.SyncAcquireResponseDeploymentPendingPreparedStackExtendGcpStack](../models/syncacquireresponsedeploymentpendingpreparedstackextendgcpstack.md) | :heavy_minus_sign: | GCP-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendgcpgrant.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendgcpgrant.md new file mode 100644 index 000000000..37280c34f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendgcpgrant.md @@ -0,0 +1,21 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackExtendGcpGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackExtendGcpGrant } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackExtendGcpGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendgcpresource.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendgcpresource.md new file mode 100644 index 000000000..d57cf9f1a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendgcpresource.md @@ -0,0 +1,21 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackExtendGcpResource + +GCP-specific binding specification + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackExtendGcpResource } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackExtendGcpResource = + { + scope: "", + }; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `condition` | *models.SyncAcquireResponseDeploymentPendingPreparedStackExtendResourceConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendgcpstack.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendgcpstack.md new file mode 100644 index 000000000..e67b5b667 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendgcpstack.md @@ -0,0 +1,20 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackExtendGcpStack + +GCP-specific binding specification + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackExtendGcpStack } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackExtendGcpStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `condition` | *models.SyncAcquireResponseDeploymentPendingPreparedStackExtendStackConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendplatforms.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendplatforms.md new file mode 100644 index 000000000..d228a4e36 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendplatforms.md @@ -0,0 +1,20 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackExtendPlatforms + +Platform-specific permission configurations + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackExtendPlatforms } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackExtendPlatforms = + {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | +| `aws` | [models.SyncAcquireResponseDeploymentPendingPreparedStackExtendAw](../models/syncacquireresponsedeploymentpendingpreparedstackextendaw.md)[] | :heavy_minus_sign: | AWS permission configurations | +| `azure` | [models.SyncAcquireResponseDeploymentPendingPreparedStackExtendAzure](../models/syncacquireresponsedeploymentpendingpreparedstackextendazure.md)[] | :heavy_minus_sign: | Azure permission configurations | +| `gcp` | [models.SyncAcquireResponseDeploymentPendingPreparedStackExtendGcp](../models/syncacquireresponsedeploymentpendingpreparedstackextendgcp.md)[] | :heavy_minus_sign: | GCP permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendresourceconditionunion.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendresourceconditionunion.md new file mode 100644 index 000000000..189c37bcd --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendresourceconditionunion.md @@ -0,0 +1,22 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackExtendResourceConditionUnion + + +## Supported Types + +### `models.SyncAcquireResponseDeploymentPendingPreparedStackExtendConditionResource` + +```typescript +const value: + models.SyncAcquireResponseDeploymentPendingPreparedStackExtendConditionResource = + { + expression: "", + title: "", + }; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendstackconditionunion.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendstackconditionunion.md new file mode 100644 index 000000000..6fab8f500 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendstackconditionunion.md @@ -0,0 +1,22 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackExtendStackConditionUnion + + +## Supported Types + +### `models.SyncAcquireResponseDeploymentPendingPreparedStackExtendConditionStack` + +```typescript +const value: + models.SyncAcquireResponseDeploymentPendingPreparedStackExtendConditionStack = + { + expression: "", + title: "", + }; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendunion.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendunion.md new file mode 100644 index 000000000..ca63af894 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackextendunion.md @@ -0,0 +1,23 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackExtendUnion + +Reference to a permission set - either by name or inline definition + + +## Supported Types + +### `models.SyncAcquireResponseDeploymentPendingPreparedStackExtend` + +```typescript +const value: models.SyncAcquireResponseDeploymentPendingPreparedStackExtend = { + description: "whoa impact toward yawningly till", + id: "", + platforms: {}, +}; +``` + +### `string` + +```typescript +const value: string = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackinput.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackinput.md new file mode 100644 index 000000000..d7dd10a21 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackinput.md @@ -0,0 +1,35 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackInput + +Stack input definition serialized into a release stack. + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackInput } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackInput = { + description: + "whoa give passport reflate couch glider someplace bowler slipper openly", + id: "", + kind: "secret", + label: "", + providedBy: [], + required: true, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | +| `default` | *models.SyncAcquireResponseDeploymentPendingPreparedStackDefaultUnion* | :heavy_minus_sign: | N/A | +| `description` | *string* | :heavy_check_mark: | Human-facing helper text. | +| `env` | [models.SyncAcquireResponseDeploymentPendingPreparedStackEnv](../models/syncacquireresponsedeploymentpendingpreparedstackenv.md)[] | :heavy_minus_sign: | Runtime env-var mappings for v1 input resolution. | +| `id` | *string* | :heavy_check_mark: | Stable input ID used by CLI/API calls. | +| `kind` | [models.SyncAcquireResponseDeploymentPendingPreparedStackKind](../models/syncacquireresponsedeploymentpendingpreparedstackkind.md) | :heavy_check_mark: | Primitive stack input kind. | +| `label` | *string* | :heavy_check_mark: | Human-facing field label. | +| `placeholder` | *string* | :heavy_minus_sign: | Example placeholder shown in UI. | +| `platforms` | [models.SyncAcquireResponseDeploymentPendingPreparedStackPlatform](../models/syncacquireresponsedeploymentpendingpreparedstackplatform.md)[] | :heavy_minus_sign: | Platforms where this input applies. | +| `providedBy` | [models.SyncAcquireResponseDeploymentPendingPreparedStackProvidedBy](../models/syncacquireresponsedeploymentpendingpreparedstackprovidedby.md)[] | :heavy_check_mark: | Who can provide this value. | +| `required` | *boolean* | :heavy_check_mark: | Whether a resolved value is required before deployment can proceed. | +| `validation` | *models.SyncAcquireResponseDeploymentPendingPreparedStackValidationUnion* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackkind.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackkind.md new file mode 100644 index 000000000..a426a8944 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackkind.md @@ -0,0 +1,17 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackKind + +Primitive stack input kind. + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackKind } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackKind = "stringList"; +``` + +## Values + +```typescript +"string" | "secret" | "number" | "integer" | "boolean" | "enum" | "stringList" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstacklifecycle.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstacklifecycle.md new file mode 100644 index 000000000..b3373e261 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstacklifecycle.md @@ -0,0 +1,17 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackLifecycle + +Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackLifecycle } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackLifecycle = "live"; +``` + +## Values + +```typescript +"frozen" | "live" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackmanagement1.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackmanagement1.md new file mode 100644 index 000000000..03ce0bad6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackmanagement1.md @@ -0,0 +1,27 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackManagement1 + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackManagement1 } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackManagement1 = { + extend: { + "key": [], + "key1": [ + { + description: "properly with suddenly", + id: "", + platforms: {}, + }, + ], + "key2": [], + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | +| `extend` | Record | :heavy_check_mark: | Permission profile that maps resources to permission sets
Key can be "*" for all resources or resource name for specific resource | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackmanagement2.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackmanagement2.md new file mode 100644 index 000000000..f8756a82f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackmanagement2.md @@ -0,0 +1,17 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackManagement2 + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackManagement2 } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackManagement2 = { + override: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | +| `override` | Record | :heavy_check_mark: | Permission profile that maps resources to permission sets
Key can be "*" for all resources or resource name for specific resource | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackmanagementenum.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackmanagementenum.md new file mode 100644 index 000000000..2285cf437 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackmanagementenum.md @@ -0,0 +1,16 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackManagementEnum + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackManagementEnum } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackManagementEnum = + "auto"; +``` + +## Values + +```typescript +"auto" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackmanagementunion.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackmanagementunion.md new file mode 100644 index 000000000..fa5a5a4c6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackmanagementunion.md @@ -0,0 +1,43 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackManagementUnion + +Management permissions configuration for stack management access + + +## Supported Types + +### `models.SyncAcquireResponseDeploymentPendingPreparedStackManagement1` + +```typescript +const value: + models.SyncAcquireResponseDeploymentPendingPreparedStackManagement1 = { + extend: { + "key": [], + "key1": [ + { + description: "properly with suddenly", + id: "", + platforms: {}, + }, + ], + "key2": [], + }, + }; +``` + +### `models.SyncAcquireResponseDeploymentPendingPreparedStackManagement2` + +```typescript +const value: + models.SyncAcquireResponseDeploymentPendingPreparedStackManagement2 = { + override: {}, + }; +``` + +### `models.SyncAcquireResponseDeploymentPendingPreparedStackManagementEnum` + +```typescript +const value: + models.SyncAcquireResponseDeploymentPendingPreparedStackManagementEnum = + "auto"; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverride.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverride.md new file mode 100644 index 000000000..2dcb06a65 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverride.md @@ -0,0 +1,23 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackOverride + +A permission set that can be applied across different cloud platforms + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackOverride } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackOverride = { + description: "past huzzah which er plus or unripe vaguely phew deploy", + id: "", + platforms: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `description` | *string* | :heavy_check_mark: | Human-readable description of what this permission set allows | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the permission set (e.g., "storage/data-read") | +| `platforms` | [models.SyncAcquireResponseDeploymentPendingPreparedStackOverridePlatforms](../models/syncacquireresponsedeploymentpendingpreparedstackoverrideplatforms.md) | :heavy_check_mark: | Platform-specific permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideaw.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideaw.md new file mode 100644 index 000000000..c14cb2cf8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideaw.md @@ -0,0 +1,24 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackOverrideAw + +AWS-specific platform permission configuration + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackOverrideAw } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackOverrideAw = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `binding` | [models.SyncAcquireResponseDeploymentPendingPreparedStackOverrideAwBinding](../models/syncacquireresponsedeploymentpendingpreparedstackoverrideawbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `effect` | [models.SyncAcquireResponseDeploymentPendingPreparedStackOverrideEffect](../models/syncacquireresponsedeploymentpendingpreparedstackoverrideeffect.md) | :heavy_minus_sign: | IAM effect. Defaults to Allow. | +| `grant` | [models.SyncAcquireResponseDeploymentPendingPreparedStackOverrideAwGrant](../models/syncacquireresponsedeploymentpendingpreparedstackoverrideawgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideawbinding.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideawbinding.md new file mode 100644 index 000000000..24f2c41ef --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideawbinding.md @@ -0,0 +1,19 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackOverrideAwBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackOverrideAwBinding } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackOverrideAwBinding = + {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.SyncAcquireResponseDeploymentPendingPreparedStackOverrideAwResource](../models/syncacquireresponsedeploymentpendingpreparedstackoverrideawresource.md) | :heavy_minus_sign: | AWS-specific binding specification | +| `stack` | [models.SyncAcquireResponseDeploymentPendingPreparedStackOverrideAwStack](../models/syncacquireresponsedeploymentpendingpreparedstackoverrideawstack.md) | :heavy_minus_sign: | AWS-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideawgrant.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideawgrant.md new file mode 100644 index 000000000..9c48aae28 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideawgrant.md @@ -0,0 +1,22 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackOverrideAwGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackOverrideAwGrant } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackOverrideAwGrant = + {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideawresource.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideawresource.md new file mode 100644 index 000000000..6fcb3254d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideawresource.md @@ -0,0 +1,24 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackOverrideAwResource + +AWS-specific binding specification + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackOverrideAwResource } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackOverrideAwResource = + { + resources: [ + "", + "", + ], + }; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideawstack.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideawstack.md new file mode 100644 index 000000000..a79731f20 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideawstack.md @@ -0,0 +1,23 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackOverrideAwStack + +AWS-specific binding specification + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackOverrideAwStack } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackOverrideAwStack = { + resources: [ + "", + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideazure.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideazure.md new file mode 100644 index 000000000..34568f704 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideazure.md @@ -0,0 +1,23 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzure + +Azure-specific platform permission configuration + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzure } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzure = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `binding` | [models.SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzureBinding](../models/syncacquireresponsedeploymentpendingpreparedstackoverrideazurebinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzureGrant](../models/syncacquireresponsedeploymentpendingpreparedstackoverrideazuregrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideazurebinding.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideazurebinding.md new file mode 100644 index 000000000..f068dc5a3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideazurebinding.md @@ -0,0 +1,19 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzureBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzureBinding } from "@alienplatform/platform-api/models"; + +let value: + SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzureBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzureResource](../models/syncacquireresponsedeploymentpendingpreparedstackoverrideazureresource.md) | :heavy_minus_sign: | Azure-specific binding specification | +| `stack` | [models.SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzureStack](../models/syncacquireresponsedeploymentpendingpreparedstackoverrideazurestack.md) | :heavy_minus_sign: | Azure-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideazuregrant.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideazuregrant.md new file mode 100644 index 000000000..cac695131 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideazuregrant.md @@ -0,0 +1,22 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzureGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzureGrant } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzureGrant = + {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideazureresource.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideazureresource.md new file mode 100644 index 000000000..920766467 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideazureresource.md @@ -0,0 +1,20 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzureResource + +Azure-specific binding specification + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzureResource } from "@alienplatform/platform-api/models"; + +let value: + SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzureResource = { + scope: "", + }; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideazurestack.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideazurestack.md new file mode 100644 index 000000000..afd7d50cf --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideazurestack.md @@ -0,0 +1,20 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzureStack + +Azure-specific binding specification + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzureStack } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzureStack = + { + scope: "", + }; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideconditionresource.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideconditionresource.md new file mode 100644 index 000000000..b74e2ed64 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideconditionresource.md @@ -0,0 +1,22 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackOverrideConditionResource + +GCP IAM condition + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackOverrideConditionResource } from "@alienplatform/platform-api/models"; + +let value: + SyncAcquireResponseDeploymentPendingPreparedStackOverrideConditionResource = { + expression: "", + title: "", + }; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideconditionstack.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideconditionstack.md new file mode 100644 index 000000000..d5d2a66a8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideconditionstack.md @@ -0,0 +1,22 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackOverrideConditionStack + +GCP IAM condition + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackOverrideConditionStack } from "@alienplatform/platform-api/models"; + +let value: + SyncAcquireResponseDeploymentPendingPreparedStackOverrideConditionStack = { + expression: "", + title: "", + }; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideeffect.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideeffect.md new file mode 100644 index 000000000..09b9c2102 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideeffect.md @@ -0,0 +1,18 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackOverrideEffect + +IAM effect. Defaults to Allow. + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackOverrideEffect } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackOverrideEffect = + "Allow"; +``` + +## Values + +```typescript +"Allow" | "Deny" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverridegcp.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverridegcp.md new file mode 100644 index 000000000..a2e226b77 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverridegcp.md @@ -0,0 +1,23 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcp + +GCP-specific platform permission configuration + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcp } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcp = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcpBinding](../models/syncacquireresponsedeploymentpendingpreparedstackoverridegcpbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcpGrant](../models/syncacquireresponsedeploymentpendingpreparedstackoverridegcpgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverridegcpbinding.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverridegcpbinding.md new file mode 100644 index 000000000..64b2edfb0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverridegcpbinding.md @@ -0,0 +1,19 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcpBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcpBinding } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcpBinding = + {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcpResource](../models/syncacquireresponsedeploymentpendingpreparedstackoverridegcpresource.md) | :heavy_minus_sign: | GCP-specific binding specification | +| `stack` | [models.SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcpStack](../models/syncacquireresponsedeploymentpendingpreparedstackoverridegcpstack.md) | :heavy_minus_sign: | GCP-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverridegcpgrant.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverridegcpgrant.md new file mode 100644 index 000000000..bea28b4fc --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverridegcpgrant.md @@ -0,0 +1,22 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcpGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcpGrant } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcpGrant = + {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverridegcpresource.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverridegcpresource.md new file mode 100644 index 000000000..b2379d1fc --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverridegcpresource.md @@ -0,0 +1,21 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcpResource + +GCP-specific binding specification + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcpResource } from "@alienplatform/platform-api/models"; + +let value: + SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcpResource = { + scope: "", + }; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `condition` | *models.SyncAcquireResponseDeploymentPendingPreparedStackOverrideResourceConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverridegcpstack.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverridegcpstack.md new file mode 100644 index 000000000..f7d18fd14 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverridegcpstack.md @@ -0,0 +1,20 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcpStack + +GCP-specific binding specification + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcpStack } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcpStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | +| `condition` | *models.SyncAcquireResponseDeploymentPendingPreparedStackOverrideStackConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideplatforms.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideplatforms.md new file mode 100644 index 000000000..e7d2edebc --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideplatforms.md @@ -0,0 +1,20 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackOverridePlatforms + +Platform-specific permission configurations + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackOverridePlatforms } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackOverridePlatforms = + {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `aws` | [models.SyncAcquireResponseDeploymentPendingPreparedStackOverrideAw](../models/syncacquireresponsedeploymentpendingpreparedstackoverrideaw.md)[] | :heavy_minus_sign: | AWS permission configurations | +| `azure` | [models.SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzure](../models/syncacquireresponsedeploymentpendingpreparedstackoverrideazure.md)[] | :heavy_minus_sign: | Azure permission configurations | +| `gcp` | [models.SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcp](../models/syncacquireresponsedeploymentpendingpreparedstackoverridegcp.md)[] | :heavy_minus_sign: | GCP permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideresourceconditionunion.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideresourceconditionunion.md new file mode 100644 index 000000000..7759bbd41 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideresourceconditionunion.md @@ -0,0 +1,22 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackOverrideResourceConditionUnion + + +## Supported Types + +### `models.SyncAcquireResponseDeploymentPendingPreparedStackOverrideConditionResource` + +```typescript +const value: + models.SyncAcquireResponseDeploymentPendingPreparedStackOverrideConditionResource = + { + expression: "", + title: "", + }; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverridestackconditionunion.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverridestackconditionunion.md new file mode 100644 index 000000000..8c143b29d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverridestackconditionunion.md @@ -0,0 +1,22 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackOverrideStackConditionUnion + + +## Supported Types + +### `models.SyncAcquireResponseDeploymentPendingPreparedStackOverrideConditionStack` + +```typescript +const value: + models.SyncAcquireResponseDeploymentPendingPreparedStackOverrideConditionStack = + { + expression: "", + title: "", + }; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideunion.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideunion.md new file mode 100644 index 000000000..eca3f27f3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackoverrideunion.md @@ -0,0 +1,24 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackOverrideUnion + +Reference to a permission set - either by name or inline definition + + +## Supported Types + +### `models.SyncAcquireResponseDeploymentPendingPreparedStackOverride` + +```typescript +const value: models.SyncAcquireResponseDeploymentPendingPreparedStackOverride = + { + description: "past huzzah which er plus or unripe vaguely phew deploy", + id: "", + platforms: {}, + }; +``` + +### `string` + +```typescript +const value: string = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackpermissions.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackpermissions.md new file mode 100644 index 000000000..786a4bfc6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackpermissions.md @@ -0,0 +1,46 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackPermissions + +Combined permissions configuration that contains both profiles and management + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackPermissions } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackPermissions = { + profiles: { + "key": { + "key": [ + { + description: "yowza formamide now recent claw", + id: "", + platforms: {}, + }, + ], + "key1": [ + { + description: "yowza formamide now recent claw", + id: "", + platforms: {}, + }, + ], + }, + "key1": { + "key": [ + { + description: "yowza formamide now recent claw", + id: "", + platforms: {}, + }, + ], + }, + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| `management` | *models.SyncAcquireResponseDeploymentPendingPreparedStackManagementUnion* | :heavy_minus_sign: | Management permissions configuration for stack management access | +| `profiles` | Record> | :heavy_check_mark: | Permission profiles that define access control for compute services
Key is the profile name, value is the permission configuration | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackplatform.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackplatform.md new file mode 100644 index 000000000..e8b0e6b01 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackplatform.md @@ -0,0 +1,17 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackPlatform + +Represents the target cloud platform. + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackPlatform } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackPlatform = "azure"; +``` + +## Values + +```typescript +"aws" | "gcp" | "azure" | "kubernetes" | "machines" | "local" | "test" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofile.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofile.md new file mode 100644 index 000000000..aec8fe97a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofile.md @@ -0,0 +1,23 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackProfile + +A permission set that can be applied across different cloud platforms + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackProfile } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackProfile = { + description: "polished boo indeed exempt", + id: "", + platforms: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `description` | *string* | :heavy_check_mark: | Human-readable description of what this permission set allows | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the permission set (e.g., "storage/data-read") | +| `platforms` | [models.SyncAcquireResponseDeploymentPendingPreparedStackProfilePlatforms](../models/syncacquireresponsedeploymentpendingpreparedstackprofileplatforms.md) | :heavy_check_mark: | Platform-specific permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileaw.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileaw.md new file mode 100644 index 000000000..442a3a9be --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileaw.md @@ -0,0 +1,24 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackProfileAw + +AWS-specific platform permission configuration + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackProfileAw } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackProfileAw = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.SyncAcquireResponseDeploymentPendingPreparedStackProfileAwBinding](../models/syncacquireresponsedeploymentpendingpreparedstackprofileawbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `effect` | [models.SyncAcquireResponseDeploymentPendingPreparedStackProfileEffect](../models/syncacquireresponsedeploymentpendingpreparedstackprofileeffect.md) | :heavy_minus_sign: | IAM effect. Defaults to Allow. | +| `grant` | [models.SyncAcquireResponseDeploymentPendingPreparedStackProfileAwGrant](../models/syncacquireresponsedeploymentpendingpreparedstackprofileawgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileawbinding.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileawbinding.md new file mode 100644 index 000000000..19afee450 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileawbinding.md @@ -0,0 +1,19 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackProfileAwBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackProfileAwBinding } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackProfileAwBinding = + {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `resource` | [models.SyncAcquireResponseDeploymentPendingPreparedStackProfileAwResource](../models/syncacquireresponsedeploymentpendingpreparedstackprofileawresource.md) | :heavy_minus_sign: | AWS-specific binding specification | +| `stack` | [models.SyncAcquireResponseDeploymentPendingPreparedStackProfileAwStack](../models/syncacquireresponsedeploymentpendingpreparedstackprofileawstack.md) | :heavy_minus_sign: | AWS-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileawgrant.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileawgrant.md new file mode 100644 index 000000000..154626eb6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileawgrant.md @@ -0,0 +1,21 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackProfileAwGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackProfileAwGrant } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackProfileAwGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileawresource.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileawresource.md new file mode 100644 index 000000000..4adfbcfe1 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileawresource.md @@ -0,0 +1,25 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackProfileAwResource + +AWS-specific binding specification + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackProfileAwResource } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackProfileAwResource = + { + resources: [ + "", + "", + "", + ], + }; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileawstack.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileawstack.md new file mode 100644 index 000000000..ce36d5eee --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileawstack.md @@ -0,0 +1,20 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackProfileAwStack + +AWS-specific binding specification + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackProfileAwStack } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackProfileAwStack = { + resources: [], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileazure.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileazure.md new file mode 100644 index 000000000..26f7431cf --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileazure.md @@ -0,0 +1,23 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackProfileAzure + +Azure-specific platform permission configuration + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackProfileAzure } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackProfileAzure = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.SyncAcquireResponseDeploymentPendingPreparedStackProfileAzureBinding](../models/syncacquireresponsedeploymentpendingpreparedstackprofileazurebinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.SyncAcquireResponseDeploymentPendingPreparedStackProfileAzureGrant](../models/syncacquireresponsedeploymentpendingpreparedstackprofileazuregrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileazurebinding.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileazurebinding.md new file mode 100644 index 000000000..f9b36da88 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileazurebinding.md @@ -0,0 +1,19 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackProfileAzureBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackProfileAzureBinding } from "@alienplatform/platform-api/models"; + +let value: + SyncAcquireResponseDeploymentPendingPreparedStackProfileAzureBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `resource` | [models.SyncAcquireResponseDeploymentPendingPreparedStackProfileAzureResource](../models/syncacquireresponsedeploymentpendingpreparedstackprofileazureresource.md) | :heavy_minus_sign: | Azure-specific binding specification | +| `stack` | [models.SyncAcquireResponseDeploymentPendingPreparedStackProfileAzureStack](../models/syncacquireresponsedeploymentpendingpreparedstackprofileazurestack.md) | :heavy_minus_sign: | Azure-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileazuregrant.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileazuregrant.md new file mode 100644 index 000000000..6c8768078 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileazuregrant.md @@ -0,0 +1,22 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackProfileAzureGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackProfileAzureGrant } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackProfileAzureGrant = + {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileazureresource.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileazureresource.md new file mode 100644 index 000000000..25a56113e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileazureresource.md @@ -0,0 +1,20 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackProfileAzureResource + +Azure-specific binding specification + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackProfileAzureResource } from "@alienplatform/platform-api/models"; + +let value: + SyncAcquireResponseDeploymentPendingPreparedStackProfileAzureResource = { + scope: "", + }; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileazurestack.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileazurestack.md new file mode 100644 index 000000000..17ae80be0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileazurestack.md @@ -0,0 +1,20 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackProfileAzureStack + +Azure-specific binding specification + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackProfileAzureStack } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackProfileAzureStack = + { + scope: "", + }; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileconditionresource.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileconditionresource.md new file mode 100644 index 000000000..811019e5e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileconditionresource.md @@ -0,0 +1,22 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackProfileConditionResource + +GCP IAM condition + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackProfileConditionResource } from "@alienplatform/platform-api/models"; + +let value: + SyncAcquireResponseDeploymentPendingPreparedStackProfileConditionResource = { + expression: "", + title: "", + }; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileconditionstack.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileconditionstack.md new file mode 100644 index 000000000..0106c8d2d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileconditionstack.md @@ -0,0 +1,22 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackProfileConditionStack + +GCP IAM condition + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackProfileConditionStack } from "@alienplatform/platform-api/models"; + +let value: + SyncAcquireResponseDeploymentPendingPreparedStackProfileConditionStack = { + expression: "", + title: "", + }; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileeffect.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileeffect.md new file mode 100644 index 000000000..928bd6387 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileeffect.md @@ -0,0 +1,18 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackProfileEffect + +IAM effect. Defaults to Allow. + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackProfileEffect } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackProfileEffect = + "Deny"; +``` + +## Values + +```typescript +"Allow" | "Deny" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofilegcp.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofilegcp.md new file mode 100644 index 000000000..9d8d642db --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofilegcp.md @@ -0,0 +1,23 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackProfileGcp + +GCP-specific platform permission configuration + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackProfileGcp } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackProfileGcp = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `binding` | [models.SyncAcquireResponseDeploymentPendingPreparedStackProfileGcpBinding](../models/syncacquireresponsedeploymentpendingpreparedstackprofilegcpbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.SyncAcquireResponseDeploymentPendingPreparedStackProfileGcpGrant](../models/syncacquireresponsedeploymentpendingpreparedstackprofilegcpgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofilegcpbinding.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofilegcpbinding.md new file mode 100644 index 000000000..74c40fb5d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofilegcpbinding.md @@ -0,0 +1,19 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackProfileGcpBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackProfileGcpBinding } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackProfileGcpBinding = + {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.SyncAcquireResponseDeploymentPendingPreparedStackProfileGcpResource](../models/syncacquireresponsedeploymentpendingpreparedstackprofilegcpresource.md) | :heavy_minus_sign: | GCP-specific binding specification | +| `stack` | [models.SyncAcquireResponseDeploymentPendingPreparedStackProfileGcpStack](../models/syncacquireresponsedeploymentpendingpreparedstackprofilegcpstack.md) | :heavy_minus_sign: | GCP-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofilegcpgrant.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofilegcpgrant.md new file mode 100644 index 000000000..8c5566433 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofilegcpgrant.md @@ -0,0 +1,22 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackProfileGcpGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackProfileGcpGrant } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackProfileGcpGrant = + {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofilegcpresource.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofilegcpresource.md new file mode 100644 index 000000000..30fa849bc --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofilegcpresource.md @@ -0,0 +1,21 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackProfileGcpResource + +GCP-specific binding specification + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackProfileGcpResource } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackProfileGcpResource = + { + scope: "", + }; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | +| `condition` | *models.SyncAcquireResponseDeploymentPendingPreparedStackProfileResourceConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofilegcpstack.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofilegcpstack.md new file mode 100644 index 000000000..0e5b61c36 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofilegcpstack.md @@ -0,0 +1,20 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackProfileGcpStack + +GCP-specific binding specification + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackProfileGcpStack } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackProfileGcpStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `condition` | *models.SyncAcquireResponseDeploymentPendingPreparedStackProfileStackConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileplatforms.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileplatforms.md new file mode 100644 index 000000000..c545e26f1 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileplatforms.md @@ -0,0 +1,20 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackProfilePlatforms + +Platform-specific permission configurations + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackProfilePlatforms } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackProfilePlatforms = + {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | +| `aws` | [models.SyncAcquireResponseDeploymentPendingPreparedStackProfileAw](../models/syncacquireresponsedeploymentpendingpreparedstackprofileaw.md)[] | :heavy_minus_sign: | AWS permission configurations | +| `azure` | [models.SyncAcquireResponseDeploymentPendingPreparedStackProfileAzure](../models/syncacquireresponsedeploymentpendingpreparedstackprofileazure.md)[] | :heavy_minus_sign: | Azure permission configurations | +| `gcp` | [models.SyncAcquireResponseDeploymentPendingPreparedStackProfileGcp](../models/syncacquireresponsedeploymentpendingpreparedstackprofilegcp.md)[] | :heavy_minus_sign: | GCP permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileresourceconditionunion.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileresourceconditionunion.md new file mode 100644 index 000000000..2a1da79d0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileresourceconditionunion.md @@ -0,0 +1,22 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackProfileResourceConditionUnion + + +## Supported Types + +### `models.SyncAcquireResponseDeploymentPendingPreparedStackProfileConditionResource` + +```typescript +const value: + models.SyncAcquireResponseDeploymentPendingPreparedStackProfileConditionResource = + { + expression: "", + title: "", + }; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofilestackconditionunion.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofilestackconditionunion.md new file mode 100644 index 000000000..52c641e7a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofilestackconditionunion.md @@ -0,0 +1,22 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackProfileStackConditionUnion + + +## Supported Types + +### `models.SyncAcquireResponseDeploymentPendingPreparedStackProfileConditionStack` + +```typescript +const value: + models.SyncAcquireResponseDeploymentPendingPreparedStackProfileConditionStack = + { + expression: "", + title: "", + }; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileunion.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileunion.md new file mode 100644 index 000000000..73b4c19a3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprofileunion.md @@ -0,0 +1,23 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackProfileUnion + +Reference to a permission set - either by name or inline definition + + +## Supported Types + +### `models.SyncAcquireResponseDeploymentPendingPreparedStackProfile` + +```typescript +const value: models.SyncAcquireResponseDeploymentPendingPreparedStackProfile = { + description: "polished boo indeed exempt", + id: "", + platforms: {}, +}; +``` + +### `string` + +```typescript +const value: string = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprovidedby.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprovidedby.md new file mode 100644 index 000000000..62b12f9f3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackprovidedby.md @@ -0,0 +1,18 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackProvidedBy + +Who can provide a stack input value. + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackProvidedBy } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackProvidedBy = + "developer"; +``` + +## Values + +```typescript +"developer" | "deployer" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackresources.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackresources.md new file mode 100644 index 000000000..4840b5a54 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackresources.md @@ -0,0 +1,26 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackResources + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackResources } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackResources = { + config: { + id: "", + type: "", + }, + dependencies: [], + lifecycle: "live", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `config` | [models.SyncAcquireResponseDeploymentPendingPreparedStackConfig](../models/syncacquireresponsedeploymentpendingpreparedstackconfig.md) | :heavy_check_mark: | 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` | [models.SyncAcquireResponseDeploymentPendingPreparedStackDependency](../models/syncacquireresponsedeploymentpendingpreparedstackdependency.md)[] | :heavy_check_mark: | Additional dependencies for this resource beyond those defined in the resource itself.
The total dependencies are: resource.get_dependencies() + this list | +| `enabledWhen` | *string* | :heavy_minus_sign: | 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. | +| `lifecycle` | [models.SyncAcquireResponseDeploymentPendingPreparedStackLifecycle](../models/syncacquireresponsedeploymentpendingpreparedstacklifecycle.md) | :heavy_check_mark: | Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. | +| `remoteAccess` | *boolean* | :heavy_minus_sign: | Enable remote bindings for this resource (BYOB use case).
When true, binding params are synced to StackState's `remote_binding_params`.
Default: false (prevents sensitive data in synced state). | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstacksupportedplatform.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstacksupportedplatform.md new file mode 100644 index 000000000..3d1488859 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstacksupportedplatform.md @@ -0,0 +1,18 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackSupportedPlatform + +Represents the target cloud platform. + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackSupportedPlatform } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackSupportedPlatform = + "aws"; +``` + +## Values + +```typescript +"aws" | "gcp" | "azure" | "kubernetes" | "machines" | "local" | "test" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstacktypeboolean.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstacktypeboolean.md new file mode 100644 index 000000000..47fa48a3d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstacktypeboolean.md @@ -0,0 +1,16 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackTypeBoolean + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackTypeBoolean } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackTypeBoolean = + "boolean"; +``` + +## Values + +```typescript +"boolean" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstacktypeenvenum.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstacktypeenvenum.md new file mode 100644 index 000000000..c860aa65c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstacktypeenvenum.md @@ -0,0 +1,18 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackTypeEnvEnum + +Environment variable handling for a stack input mapping. + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackTypeEnvEnum } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackTypeEnvEnum = + "secret"; +``` + +## Values + +```typescript +"plain" | "secret" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstacktypenumber.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstacktypenumber.md new file mode 100644 index 000000000..0fde7811c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstacktypenumber.md @@ -0,0 +1,16 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackTypeNumber + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackTypeNumber } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackTypeNumber = + "number"; +``` + +## Values + +```typescript +"number" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstacktypestring.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstacktypestring.md new file mode 100644 index 000000000..3ab83069f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstacktypestring.md @@ -0,0 +1,16 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackTypeString + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackTypeString } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackTypeString = + "string"; +``` + +## Values + +```typescript +"string" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstacktypestringlist.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstacktypestringlist.md new file mode 100644 index 000000000..e6c687286 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstacktypestringlist.md @@ -0,0 +1,16 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackTypeStringList + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackTypeStringList } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackTypeStringList = + "stringList"; +``` + +## Values + +```typescript +"stringList" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstacktypeunion.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstacktypeunion.md new file mode 100644 index 000000000..cb0179079 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstacktypeunion.md @@ -0,0 +1,18 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackTypeUnion + + +## Supported Types + +### `models.SyncAcquireResponseDeploymentPendingPreparedStackTypeEnvEnum` + +```typescript +const value: + models.SyncAcquireResponseDeploymentPendingPreparedStackTypeEnvEnum = "plain"; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackunion.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackunion.md new file mode 100644 index 000000000..2116b5633 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackunion.md @@ -0,0 +1,20 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackUnion + + +## Supported Types + +### `models.SyncAcquireResponseDeploymentPendingPreparedStack` + +```typescript +const value: models.SyncAcquireResponseDeploymentPendingPreparedStack = { + id: "", + resources: {}, +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackvalidation.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackvalidation.md new file mode 100644 index 000000000..d02465f77 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackvalidation.md @@ -0,0 +1,25 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackValidation + +Portable stack input validation constraints. + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentPendingPreparedStackValidation } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentPendingPreparedStackValidation = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | +| `format` | *string* | :heavy_minus_sign: | Semantic format hint such as url. | +| `max` | *string* | :heavy_minus_sign: | Maximum number. | +| `maxItems` | *number* | :heavy_minus_sign: | Maximum string-list items. | +| `maxLength` | *number* | :heavy_minus_sign: | Maximum string length. | +| `min` | *string* | :heavy_minus_sign: | Minimum number. | +| `minItems` | *number* | :heavy_minus_sign: | Minimum string-list items. | +| `minLength` | *number* | :heavy_minus_sign: | Minimum string length. | +| `pattern` | *string* | :heavy_minus_sign: | Portable whole-value regex pattern. | +| `values` | *string*[] | :heavy_minus_sign: | Allowed string enum values. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackvalidationunion.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackvalidationunion.md new file mode 100644 index 000000000..606bac443 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpendingpreparedstackvalidationunion.md @@ -0,0 +1,18 @@ +# SyncAcquireResponseDeploymentPendingPreparedStackValidationUnion + + +## Supported Types + +### `models.SyncAcquireResponseDeploymentPendingPreparedStackValidation` + +```typescript +const value: + models.SyncAcquireResponseDeploymentPendingPreparedStackValidation = {}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpoolsautoscale.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpoolsautoscale.md index 7e2e5214d..e0e90e0c3 100644 --- a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpoolsautoscale.md +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpoolsautoscale.md @@ -14,9 +14,10 @@ let value: SyncAcquireResponseDeploymentPoolsAutoscale = { ## Fields -| Field | Type | Required | Description | -| --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | -| `machine` | *string* | :heavy_minus_sign: | Provider machine type selected for this deployment. | -| `max` | *number* | :heavy_check_mark: | Maximum machine count. | -| `min` | *number* | :heavy_check_mark: | Minimum machine count. | -| `mode` | *"autoscale"* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | +| `failureDomains` | *models.SyncAcquireResponseDeploymentFailureDomainsUnion2* | :heavy_minus_sign: | N/A | +| `machine` | *string* | :heavy_minus_sign: | Provider machine type selected for this deployment. | +| `max` | *number* | :heavy_check_mark: | Maximum machine count. | +| `min` | *number* | :heavy_check_mark: | Minimum machine count. | +| `mode` | *"autoscale"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpoolsfixed.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpoolsfixed.md index dcbf4ac15..0b98eb2d9 100644 --- a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpoolsfixed.md +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpoolsfixed.md @@ -13,8 +13,9 @@ let value: SyncAcquireResponseDeploymentPoolsFixed = { ## Fields -| Field | Type | Required | Description | -| --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | -| `machine` | *string* | :heavy_minus_sign: | Provider machine type selected for this deployment. | -| `machines` | *number* | :heavy_check_mark: | Number of machines to run. | -| `mode` | *"fixed"* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | +| `failureDomains` | *models.SyncAcquireResponseDeploymentFailureDomainsUnion1* | :heavy_minus_sign: | N/A | +| `machine` | *string* | :heavy_minus_sign: | Provider machine type selected for this deployment. | +| `machines` | *number* | :heavy_check_mark: | Number of machines to run. | +| `mode` | *"fixed"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpreparedstackresources.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpreparedstackresources.md index 68a040394..a64457d55 100644 --- a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpreparedstackresources.md +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentpreparedstackresources.md @@ -22,9 +22,10 @@ let value: SyncAcquireResponseDeploymentPreparedStackResources = { ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `config` | [models.SyncAcquireResponseDeploymentPreparedStackConfig](../models/syncacquireresponsedeploymentpreparedstackconfig.md) | :heavy_check_mark: | 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` | [models.SyncAcquireResponseDeploymentPreparedStackDependency](../models/syncacquireresponsedeploymentpreparedstackdependency.md)[] | :heavy_check_mark: | Additional dependencies for this resource beyond those defined in the resource itself.
The total dependencies are: resource.get_dependencies() + this list | -| `lifecycle` | [models.SyncAcquireResponseDeploymentPreparedStackLifecycle](../models/syncacquireresponsedeploymentpreparedstacklifecycle.md) | :heavy_check_mark: | Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. | -| `remoteAccess` | *boolean* | :heavy_minus_sign: | Enable remote bindings for this resource (BYOB use case).
When true, binding params are synced to StackState's `remote_binding_params`.
Default: false (prevents sensitive data in synced state). | \ No newline at end of file +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `config` | [models.SyncAcquireResponseDeploymentPreparedStackConfig](../models/syncacquireresponsedeploymentpreparedstackconfig.md) | :heavy_check_mark: | 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` | [models.SyncAcquireResponseDeploymentPreparedStackDependency](../models/syncacquireresponsedeploymentpreparedstackdependency.md)[] | :heavy_check_mark: | Additional dependencies for this resource beyond those defined in the resource itself.
The total dependencies are: resource.get_dependencies() + this list | +| `enabledWhen` | *string* | :heavy_minus_sign: | 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. | +| `lifecycle` | [models.SyncAcquireResponseDeploymentPreparedStackLifecycle](../models/syncacquireresponsedeploymentpreparedstacklifecycle.md) | :heavy_check_mark: | Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. | +| `remoteAccess` | *boolean* | :heavy_minus_sign: | Enable remote bindings for this resource (BYOB use case).
When true, binding params are synced to StackState's `remote_binding_params`.
Default: false (prevents sensitive data in synced state). | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentruntimemetadata.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentruntimemetadata.md index b010fd0d7..5518a39ea 100644 --- a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentruntimemetadata.md +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentruntimemetadata.md @@ -14,9 +14,13 @@ let value: SyncAcquireResponseDeploymentRuntimeMetadata = {}; ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `lastSyncedEnvVarsHash` | *string* | :heavy_minus_sign: | Hash of the environment variables snapshot that was last synced to the vault
Used to avoid redundant sync operations during incremental deployment | -| `lastSyncedSecretNames` | *string*[] | :heavy_minus_sign: | Exact vault keys owned by the deployment secret synchronizer. This
inventory lets a later snapshot delete removed keys without listing or
touching unrelated values in the same vault. | -| `preparedStack` | *models.SyncAcquireResponseDeploymentPreparedStackUnion* | :heavy_minus_sign: | N/A | -| `registryAccessGranted` | *boolean* | :heavy_minus_sign: | Whether cross-account registry access has been successfully granted.
Set to true after the manager successfully sets the ECR/GAR repo policy
for this deployment's target account. Prevents redundant API calls on
every reconcile tick. | \ No newline at end of file +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `initialSetupAuthority` | [models.SyncAcquireResponseDeploymentInitialSetupAuthority](../models/syncacquireresponsedeploymentinitialsetupauthority.md) | :heavy_minus_sign: | Actor that owns structural work during the initial setup phase. | +| `lastSyncedEnvVarsHash` | *string* | :heavy_minus_sign: | Hash of the environment variables snapshot that was last synced to the vault
Used to avoid redundant sync operations during incremental deployment | +| `lastSyncedSecretNames` | *string*[] | :heavy_minus_sign: | Exact vault keys owned by the deployment secret synchronizer. This
inventory lets a later snapshot delete removed keys without listing or
touching unrelated values in the same vault. | +| `pendingPreparedStack` | *models.SyncAcquireResponseDeploymentPendingPreparedStackUnion* | :heavy_minus_sign: | N/A | +| `persistedGateAnswers` | Record | :heavy_minus_sign: | Canonical resolved answers for inputs that gate Frozen resources,
keyed by input id, recorded when the deployment is created or its
setup import registers.

A frozen gate's answer is fixed for the deployment's lifetime: the
update path refuses input values that conflict with these, and a Live
resource sharing such an input resolves the persisted answer forever. | +| `preparedStack` | *models.SyncAcquireResponseDeploymentPreparedStackUnion* | :heavy_minus_sign: | N/A | +| `registryAccessGranted` | *boolean* | :heavy_minus_sign: | Whether cross-account registry access has been successfully granted.
Set to true after the manager successfully sets the ECR/GAR repo policy
for this deployment's target account. Prevents redundant API calls on
every reconcile tick. | +| `setupUpdateAuthorization` | *models.SyncAcquireResponseDeploymentSetupUpdateAuthorizationUnion* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentservercacertificates.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentservercacertificates.md new file mode 100644 index 000000000..c73b8ad7a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentservercacertificates.md @@ -0,0 +1,20 @@ +# SyncAcquireResponseDeploymentServerCaCertificates + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentServerCaCertificates } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentServerCaCertificates = { + secretRef: { + key: "", + name: "", + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | +| `secretRef` | [models.SyncAcquireResponseDeploymentServerCaCertificatesSecretRef](../models/syncacquireresponsedeploymentservercacertificatessecretref.md) | :heavy_check_mark: | Reference to a Kubernetes Secret | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentservercacertificatessecretref.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentservercacertificatessecretref.md new file mode 100644 index 000000000..ba76a040f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentservercacertificatessecretref.md @@ -0,0 +1,21 @@ +# SyncAcquireResponseDeploymentServerCaCertificatesSecretRef + +Reference to a Kubernetes Secret + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentServerCaCertificatesSecretRef } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentServerCaCertificatesSecretRef = { + key: "", + name: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `key` | *string* | :heavy_check_mark: | N/A | +| `name` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentservercacertificatesunion.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentservercacertificatesunion.md new file mode 100644 index 000000000..8871fda9b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentservercacertificatesunion.md @@ -0,0 +1,34 @@ +# SyncAcquireResponseDeploymentServerCaCertificatesUnion + +Represents a value that can be either a concrete value, a template expression, +or a reference to a Kubernetes Secret + + +## Supported Types + +### `string[]` + +```typescript +const value: string[] = [ + "", + "", +]; +``` + +### `any` + +```typescript +const value: any = ""; +``` + +### `models.SyncAcquireResponseDeploymentServerCaCertificates` + +```typescript +const value: models.SyncAcquireResponseDeploymentServerCaCertificates = { + secretRef: { + key: "", + name: "", + }, +}; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentsetupupdateauthorization.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentsetupupdateauthorization.md new file mode 100644 index 000000000..b9f3209e8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentsetupupdateauthorization.md @@ -0,0 +1,31 @@ +# SyncAcquireResponseDeploymentSetupUpdateAuthorization + +One-shot authority for a setup re-import to replace setup-owned resources. + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentSetupUpdateAuthorization } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentSetupUpdateAuthorization = { + baselineFrozenDigest: "", + nonce: "", + releaseId: "", + setupFingerprint: "", + setupFingerprintVersion: 21546, + setupTarget: "", + targetFrozenDigest: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | +| `baselineFrozenDigest` | *string* | :heavy_check_mark: | Frozen resource projection from the last successful deployment. | +| `nonce` | *string* | :heavy_check_mark: | Unique revision used by persistence layers for compare-and-swap updates. | +| `releaseId` | *string* | :heavy_check_mark: | Release whose stack was prepared by setup. | +| `setupFingerprint` | *string* | :heavy_check_mark: | Exact setup artifact revision that authored this authority. | +| `setupFingerprintVersion` | *number* | :heavy_check_mark: | Setup fingerprint contract version. | +| `setupTarget` | *string* | :heavy_check_mark: | Stable setup target recorded on the imported deployment. | +| `targetFrozenDigest` | *string* | :heavy_check_mark: | Frozen resource projection prepared by the setup re-import. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentsetupupdateauthorizationunion.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentsetupupdateauthorizationunion.md new file mode 100644 index 000000000..da7123629 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentsetupupdateauthorizationunion.md @@ -0,0 +1,25 @@ +# SyncAcquireResponseDeploymentSetupUpdateAuthorizationUnion + + +## Supported Types + +### `models.SyncAcquireResponseDeploymentSetupUpdateAuthorization` + +```typescript +const value: models.SyncAcquireResponseDeploymentSetupUpdateAuthorization = { + baselineFrozenDigest: "", + nonce: "", + releaseId: "", + setupFingerprint: "", + setupFingerprintVersion: 21546, + setupTarget: "", + targetFrozenDigest: "", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentsslmode.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentsslmode.md new file mode 100644 index 000000000..cf29c93cf --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymentsslmode.md @@ -0,0 +1,20 @@ +# SyncAcquireResponseDeploymentSslMode + +TLS policy for an operator-provided / BYO Postgres database. + +Unlike libpq's ambiguous `prefer` mode, both choices map exactly to the +connection settings exposed by every supported SDK. + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentSslMode } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentSslMode = "disable"; +``` + +## Values + +```typescript +"verify-full" | "disable" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymenttargetreleaseresources.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymenttargetreleaseresources.md index 81c49f554..9bd00622a 100644 --- a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymenttargetreleaseresources.md +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymenttargetreleaseresources.md @@ -17,9 +17,10 @@ let value: SyncAcquireResponseDeploymentTargetReleaseResources = { ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `config` | [models.SyncAcquireResponseDeploymentTargetReleaseConfig](../models/syncacquireresponsedeploymenttargetreleaseconfig.md) | :heavy_check_mark: | 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` | [models.SyncAcquireResponseDeploymentTargetReleaseDependency](../models/syncacquireresponsedeploymenttargetreleasedependency.md)[] | :heavy_check_mark: | Additional dependencies for this resource beyond those defined in the resource itself.
The total dependencies are: resource.get_dependencies() + this list | -| `lifecycle` | [models.SyncAcquireResponseDeploymentTargetReleaseLifecycle](../models/syncacquireresponsedeploymenttargetreleaselifecycle.md) | :heavy_check_mark: | Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. | -| `remoteAccess` | *boolean* | :heavy_minus_sign: | Enable remote bindings for this resource (BYOB use case).
When true, binding params are synced to StackState's `remote_binding_params`.
Default: false (prevents sensitive data in synced state). | \ No newline at end of file +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `config` | [models.SyncAcquireResponseDeploymentTargetReleaseConfig](../models/syncacquireresponsedeploymenttargetreleaseconfig.md) | :heavy_check_mark: | 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` | [models.SyncAcquireResponseDeploymentTargetReleaseDependency](../models/syncacquireresponsedeploymenttargetreleasedependency.md)[] | :heavy_check_mark: | Additional dependencies for this resource beyond those defined in the resource itself.
The total dependencies are: resource.get_dependencies() + this list | +| `enabledWhen` | *string* | :heavy_minus_sign: | 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. | +| `lifecycle` | [models.SyncAcquireResponseDeploymentTargetReleaseLifecycle](../models/syncacquireresponsedeploymenttargetreleaselifecycle.md) | :heavy_check_mark: | Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. | +| `remoteAccess` | *boolean* | :heavy_minus_sign: | Enable remote bindings for this resource (BYOB use case).
When true, binding params are synced to StackState's `remote_binding_params`.
Default: false (prevents sensitive data in synced state). | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymenttypeai.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymenttypeai.md new file mode 100644 index 000000000..020b3c559 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeploymenttypeai.md @@ -0,0 +1,15 @@ +# SyncAcquireResponseDeploymentTypeAi + +## Example Usage + +```typescript +import { SyncAcquireResponseDeploymentTypeAi } from "@alienplatform/platform-api/models"; + +let value: SyncAcquireResponseDeploymentTypeAi = "ai"; +``` + +## Values + +```typescript +"ai" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponse.md b/client-sdks/platform/typescript/docs/models/synclistresponse.md index 9796c5bdd..f71d06485 100644 --- a/client-sdks/platform/typescript/docs/models/synclistresponse.md +++ b/client-sdks/platform/typescript/docs/models/synclistresponse.md @@ -17,16 +17,65 @@ let value: SyncListResponse = { platform: "aws", deploymentProtocolVersion: 492804, deploymentGroupId: "dg_r27ict8c7vcgsumpj90ackf7b", + purpose: "encryption", stackSettings: {}, currentReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", desiredReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", pinnedReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", - retryRequested: true, - createdAt: new Date("2026-10-15T16:14:26.325Z"), - updatedAt: new Date("2025-12-30T11:04:55.945Z"), + releaseChannel: "", + retryRequested: false, + updateState: { + active: { + id: "duop_0vtxpb1sw4sbcdwg2xo37q6", + status: "applying", + reasons: [], + targetReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", + changedKeys: [], + requestedAt: new Date("2026-04-28T10:12:17.277Z"), + }, + next: { + id: "duop_0vtxpb1sw4sbcdwg2xo37q6", + status: "queued", + reasons: [], + targetReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", + changedKeys: [ + "", + "", + "", + ], + requestedAt: new Date("2025-05-23T02:17:08.731Z"), + }, + latest: { + id: "duop_0vtxpb1sw4sbcdwg2xo37q6", + status: "superseded", + reasons: [ + "redeploy", + ], + targetReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", + changedKeys: [ + "", + "", + "", + ], + requestedAt: new Date("2024-11-23T19:43:18.153Z"), + }, + }, + createdAt: new Date("2025-12-30T11:04:55.945Z"), + updatedAt: new Date("2025-06-15T22:31:32.420Z"), managerId: "mgr_enxscjrqiiu2lrc672hwwuc5", workspaceId: "ws_It13CUaGEhLLAB87simX0", - userEnvironmentVariables: [], + userEnvironmentVariables: [ + { + name: "", + value: "", + type: "plain", + targetResources: [ + "", + "", + "", + ], + }, + ], }, ], }; diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsedefaultboolean.md b/client-sdks/platform/typescript/docs/models/synclistresponsedefaultboolean.md deleted file mode 100644 index b2a0889bd..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponsedefaultboolean.md +++ /dev/null @@ -1,19 +0,0 @@ -# SyncListResponseDefaultBoolean - -## Example Usage - -```typescript -import { SyncListResponseDefaultBoolean } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseDefaultBoolean = { - type: "boolean", - value: false, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | -| `type` | [models.SyncListResponseTypeBoolean](../models/synclistresponsetypeboolean.md) | :heavy_check_mark: | N/A | -| `value` | *boolean* | :heavy_check_mark: | Boolean default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsedefaultnumber.md b/client-sdks/platform/typescript/docs/models/synclistresponsedefaultnumber.md deleted file mode 100644 index d6dd25184..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponsedefaultnumber.md +++ /dev/null @@ -1,19 +0,0 @@ -# SyncListResponseDefaultNumber - -## Example Usage - -```typescript -import { SyncListResponseDefaultNumber } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseDefaultNumber = { - type: "number", - value: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | -| `type` | [models.SyncListResponseTypeNumber](../models/synclistresponsetypenumber.md) | :heavy_check_mark: | N/A | -| `value` | *string* | :heavy_check_mark: | Number default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsedefaultstring.md b/client-sdks/platform/typescript/docs/models/synclistresponsedefaultstring.md deleted file mode 100644 index 25b1dc755..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponsedefaultstring.md +++ /dev/null @@ -1,19 +0,0 @@ -# SyncListResponseDefaultString - -## Example Usage - -```typescript -import { SyncListResponseDefaultString } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseDefaultString = { - type: "string", - value: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | -| `type` | [models.SyncListResponseTypeString](../models/synclistresponsetypestring.md) | :heavy_check_mark: | N/A | -| `value` | *string* | :heavy_check_mark: | String default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsedefaultstringlist.md b/client-sdks/platform/typescript/docs/models/synclistresponsedefaultstringlist.md deleted file mode 100644 index 951d4a07a..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponsedefaultstringlist.md +++ /dev/null @@ -1,21 +0,0 @@ -# SyncListResponseDefaultStringList - -## Example Usage - -```typescript -import { SyncListResponseDefaultStringList } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseDefaultStringList = { - type: "stringList", - value: [ - "", - ], -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | -| `type` | [models.SyncListResponseTypeStringList](../models/synclistresponsetypestringlist.md) | :heavy_check_mark: | N/A | -| `value` | *string*[] | :heavy_check_mark: | String list default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsedefaultunion.md b/client-sdks/platform/typescript/docs/models/synclistresponsedefaultunion.md deleted file mode 100644 index 0047656f4..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponsedefaultunion.md +++ /dev/null @@ -1,49 +0,0 @@ -# SyncListResponseDefaultUnion - - -## Supported Types - -### `models.SyncListResponseDefaultString` - -```typescript -const value: models.SyncListResponseDefaultString = { - type: "string", - value: "", -}; -``` - -### `models.SyncListResponseDefaultNumber` - -```typescript -const value: models.SyncListResponseDefaultNumber = { - type: "number", - value: "", -}; -``` - -### `models.SyncListResponseDefaultBoolean` - -```typescript -const value: models.SyncListResponseDefaultBoolean = { - type: "boolean", - value: false, -}; -``` - -### `models.SyncListResponseDefaultStringList` - -```typescript -const value: models.SyncListResponseDefaultStringList = { - type: "stringList", - value: [ - "", - ], -}; -``` - -### `any` - -```typescript -const value: any = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsedeployment.md b/client-sdks/platform/typescript/docs/models/synclistresponsedeployment.md index fff640a76..980a3858e 100644 --- a/client-sdks/platform/typescript/docs/models/synclistresponsedeployment.md +++ b/client-sdks/platform/typescript/docs/models/synclistresponsedeployment.md @@ -13,13 +13,51 @@ let value: SyncListResponseDeployment = { platform: "azure", deploymentProtocolVersion: 562146, deploymentGroupId: "dg_r27ict8c7vcgsumpj90ackf7b", + purpose: "container-registry", stackSettings: {}, currentReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", desiredReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", pinnedReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", - retryRequested: false, - createdAt: new Date("2024-10-11T05:39:21.095Z"), - updatedAt: new Date("2026-03-09T16:42:49.718Z"), + releaseChannel: "", + retryRequested: true, + updateState: { + active: { + id: "duop_0vtxpb1sw4sbcdwg2xo37q6", + status: "applying", + reasons: [], + targetReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", + changedKeys: [], + requestedAt: new Date("2026-04-28T10:12:17.277Z"), + }, + next: { + id: "duop_0vtxpb1sw4sbcdwg2xo37q6", + status: "queued", + reasons: [], + targetReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", + changedKeys: [ + "", + "", + "", + ], + requestedAt: new Date("2025-05-23T02:17:08.731Z"), + }, + latest: { + id: "duop_0vtxpb1sw4sbcdwg2xo37q6", + status: "superseded", + reasons: [ + "redeploy", + ], + targetReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", + changedKeys: [ + "", + "", + "", + ], + requestedAt: new Date("2024-11-23T19:43:18.153Z"), + }, + }, + createdAt: new Date("2025-10-11T05:09:33.631Z"), + updatedAt: new Date("2025-04-19T07:22:22.968Z"), managerId: "mgr_enxscjrqiiu2lrc672hwwuc5", workspaceId: "ws_It13CUaGEhLLAB87simX0", userEnvironmentVariables: [], @@ -40,6 +78,7 @@ let value: SyncListResponseDeployment = { | `region` | *string* | :heavy_minus_sign: | Cloud region or location for the deployment. | | | `deploymentProtocolVersion` | *number* | :heavy_check_mark: | DeploymentState protocol version owned by the runtime/manager | | | `deploymentGroupId` | *string* | :heavy_check_mark: | ID of deployment group this deployment belongs to | dg_r27ict8c7vcgsumpj90ackf7b | +| `purpose` | [models.DeploymentPurpose](../models/deploymentpurpose.md) | :heavy_check_mark: | Operational purpose of this deployment within its customer environment. | | | `environmentInfo` | *models.SyncListResponseEnvironmentInfoUnion* | :heavy_minus_sign: | Cloud environment information | | | `stackSettings` | [models.SyncListResponseStackSettings](../models/synclistresponsestacksettings.md) | :heavy_check_mark: | User-provided configuration (network, deployment model, approvals) | | | `stackState` | [models.SyncListResponseStackState](../models/synclistresponsestackstate.md) | :heavy_minus_sign: | State of infrastructure components managed by this deployment | | @@ -47,6 +86,7 @@ let value: SyncListResponseDeployment = { | `currentReleaseId` | *string* | :heavy_minus_sign: | ID of the currently deployed release (actual state) | rel_WbhQgksrawSKIpEN0NAssHX9 | | `desiredReleaseId` | *string* | :heavy_minus_sign: | ID of the desired release for deployment/update (desired state) | rel_WbhQgksrawSKIpEN0NAssHX9 | | `pinnedReleaseId` | *string* | :heavy_minus_sign: | ID of the pinned release | rel_WbhQgksrawSKIpEN0NAssHX9 | +| `releaseChannel` | *string* | :heavy_check_mark: | N/A | | | `importSource` | [models.SyncListResponseImportSource](../models/synclistresponseimportsource.md) | :heavy_minus_sign: | Setup source that imported this deployment | | | `setupMethod` | [models.SyncListResponseSetupMethod](../models/synclistresponsesetupmethod.md) | :heavy_minus_sign: | Setup method that created the deployment record and owns setup-time resources. | | | `setupMetadata` | Record | :heavy_minus_sign: | Setup method metadata needed to guide privileged teardown. | | @@ -60,6 +100,7 @@ let value: SyncListResponseDeployment = { | `retryRequested` | *boolean* | :heavy_check_mark: | Whether a retry has been requested for a failed deployment | | | `lastHeartbeatAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_minus_sign: | Timestamp of the last received heartbeat from the deployment | | | `error` | [models.SyncListResponseError](../models/synclistresponseerror.md) | :heavy_minus_sign: | Latest error information if the deployment is in a failed state | | +| `updateState` | [models.SyncListResponseUpdateState](../models/synclistresponseupdatestate.md) | :heavy_minus_sign: | Durable progress for deployment updates | | | `createdAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | | `updatedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | | `managerId` | *string* | :heavy_check_mark: | N/A | mgr_enxscjrqiiu2lrc672hwwuc5 | diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseenv.md b/client-sdks/platform/typescript/docs/models/synclistresponseenv.md deleted file mode 100644 index f0e44e69e..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseenv.md +++ /dev/null @@ -1,21 +0,0 @@ -# SyncListResponseEnv - -How a resolved stack input is injected into runtime environment variables. - -## Example Usage - -```typescript -import { SyncListResponseEnv } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseEnv = { - name: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | -| `name` | *string* | :heavy_check_mark: | Environment variable name. | -| `targetResources` | *string*[] | :heavy_minus_sign: | Target resource IDs or patterns. None means every env-capable resource. | -| `type` | *models.SyncListResponseTypeUnion* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseextend.md b/client-sdks/platform/typescript/docs/models/synclistresponseextend.md deleted file mode 100644 index 743a86a47..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseextend.md +++ /dev/null @@ -1,23 +0,0 @@ -# SyncListResponseExtend - -A permission set that can be applied across different cloud platforms - -## Example Usage - -```typescript -import { SyncListResponseExtend } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseExtend = { - description: "probable inasmuch cork", - id: "", - platforms: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -| `description` | *string* | :heavy_check_mark: | Human-readable description of what this permission set allows | -| `id` | *string* | :heavy_check_mark: | Unique identifier for the permission set (e.g., "storage/data-read") | -| `platforms` | [models.SyncListResponseExtendPlatforms](../models/synclistresponseextendplatforms.md) | :heavy_check_mark: | Platform-specific permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseextendaw.md b/client-sdks/platform/typescript/docs/models/synclistresponseextendaw.md deleted file mode 100644 index 3f7936deb..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseextendaw.md +++ /dev/null @@ -1,24 +0,0 @@ -# SyncListResponseExtendAw - -AWS-specific platform permission configuration - -## Example Usage - -```typescript -import { SyncListResponseExtendAw } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseExtendAw = { - binding: {}, - grant: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -| `binding` | [models.SyncListResponseExtendAwBinding](../models/synclistresponseextendawbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | -| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | -| `effect` | [models.SyncListResponseExtendEffect](../models/synclistresponseextendeffect.md) | :heavy_minus_sign: | IAM effect. Defaults to Allow. | -| `grant` | [models.SyncListResponseExtendAwGrant](../models/synclistresponseextendawgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | -| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseextendawbinding.md b/client-sdks/platform/typescript/docs/models/synclistresponseextendawbinding.md deleted file mode 100644 index 51ea4792d..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseextendawbinding.md +++ /dev/null @@ -1,18 +0,0 @@ -# SyncListResponseExtendAwBinding - -Generic binding configuration for permissions - -## Example Usage - -```typescript -import { SyncListResponseExtendAwBinding } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseExtendAwBinding = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | -| `resource` | [models.SyncListResponseExtendAwResource](../models/synclistresponseextendawresource.md) | :heavy_minus_sign: | AWS-specific binding specification | -| `stack` | [models.SyncListResponseExtendAwStack](../models/synclistresponseextendawstack.md) | :heavy_minus_sign: | AWS-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseextendawgrant.md b/client-sdks/platform/typescript/docs/models/synclistresponseextendawgrant.md deleted file mode 100644 index 2bb849031..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseextendawgrant.md +++ /dev/null @@ -1,21 +0,0 @@ -# SyncListResponseExtendAwGrant - -Grant permissions for a specific cloud platform - -## Example Usage - -```typescript -import { SyncListResponseExtendAwGrant } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseExtendAwGrant = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | -| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | -| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | -| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | -| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseextendawresource.md b/client-sdks/platform/typescript/docs/models/synclistresponseextendawresource.md deleted file mode 100644 index b2be0d1fb..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseextendawresource.md +++ /dev/null @@ -1,20 +0,0 @@ -# SyncListResponseExtendAwResource - -AWS-specific binding specification - -## Example Usage - -```typescript -import { SyncListResponseExtendAwResource } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseExtendAwResource = { - resources: [], -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | -| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseextendawstack.md b/client-sdks/platform/typescript/docs/models/synclistresponseextendawstack.md deleted file mode 100644 index d3b13a9f2..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseextendawstack.md +++ /dev/null @@ -1,22 +0,0 @@ -# SyncListResponseExtendAwStack - -AWS-specific binding specification - -## Example Usage - -```typescript -import { SyncListResponseExtendAwStack } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseExtendAwStack = { - resources: [ - "", - ], -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | -| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseextendazure.md b/client-sdks/platform/typescript/docs/models/synclistresponseextendazure.md deleted file mode 100644 index af9ef5022..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseextendazure.md +++ /dev/null @@ -1,23 +0,0 @@ -# SyncListResponseExtendAzure - -Azure-specific platform permission configuration - -## Example Usage - -```typescript -import { SyncListResponseExtendAzure } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseExtendAzure = { - binding: {}, - grant: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `binding` | [models.SyncListResponseExtendAzureBinding](../models/synclistresponseextendazurebinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | -| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | -| `grant` | [models.SyncListResponseExtendAzureGrant](../models/synclistresponseextendazuregrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | -| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseextendazurebinding.md b/client-sdks/platform/typescript/docs/models/synclistresponseextendazurebinding.md deleted file mode 100644 index d29956fb2..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseextendazurebinding.md +++ /dev/null @@ -1,18 +0,0 @@ -# SyncListResponseExtendAzureBinding - -Generic binding configuration for permissions - -## Example Usage - -```typescript -import { SyncListResponseExtendAzureBinding } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseExtendAzureBinding = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | -| `resource` | [models.SyncListResponseExtendAzureResource](../models/synclistresponseextendazureresource.md) | :heavy_minus_sign: | Azure-specific binding specification | -| `stack` | [models.SyncListResponseExtendAzureStack](../models/synclistresponseextendazurestack.md) | :heavy_minus_sign: | Azure-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseextendazuregrant.md b/client-sdks/platform/typescript/docs/models/synclistresponseextendazuregrant.md deleted file mode 100644 index e1826ffb8..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseextendazuregrant.md +++ /dev/null @@ -1,21 +0,0 @@ -# SyncListResponseExtendAzureGrant - -Grant permissions for a specific cloud platform - -## Example Usage - -```typescript -import { SyncListResponseExtendAzureGrant } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseExtendAzureGrant = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | -| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | -| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | -| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | -| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseextendazureresource.md b/client-sdks/platform/typescript/docs/models/synclistresponseextendazureresource.md deleted file mode 100644 index 2a7d635e4..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseextendazureresource.md +++ /dev/null @@ -1,19 +0,0 @@ -# SyncListResponseExtendAzureResource - -Azure-specific binding specification - -## Example Usage - -```typescript -import { SyncListResponseExtendAzureResource } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseExtendAzureResource = { - scope: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseextendazurestack.md b/client-sdks/platform/typescript/docs/models/synclistresponseextendazurestack.md deleted file mode 100644 index 8e95ca2d2..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseextendazurestack.md +++ /dev/null @@ -1,19 +0,0 @@ -# SyncListResponseExtendAzureStack - -Azure-specific binding specification - -## Example Usage - -```typescript -import { SyncListResponseExtendAzureStack } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseExtendAzureStack = { - scope: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseextendconditionresource.md b/client-sdks/platform/typescript/docs/models/synclistresponseextendconditionresource.md deleted file mode 100644 index b2506c3f6..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseextendconditionresource.md +++ /dev/null @@ -1,21 +0,0 @@ -# SyncListResponseExtendConditionResource - -GCP IAM condition - -## Example Usage - -```typescript -import { SyncListResponseExtendConditionResource } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseExtendConditionResource = { - expression: "", - title: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `expression` | *string* | :heavy_check_mark: | N/A | -| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseextendconditionstack.md b/client-sdks/platform/typescript/docs/models/synclistresponseextendconditionstack.md deleted file mode 100644 index bcec1de17..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseextendconditionstack.md +++ /dev/null @@ -1,21 +0,0 @@ -# SyncListResponseExtendConditionStack - -GCP IAM condition - -## Example Usage - -```typescript -import { SyncListResponseExtendConditionStack } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseExtendConditionStack = { - expression: "", - title: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `expression` | *string* | :heavy_check_mark: | N/A | -| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseextendeffect.md b/client-sdks/platform/typescript/docs/models/synclistresponseextendeffect.md deleted file mode 100644 index 8d02d1aaf..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseextendeffect.md +++ /dev/null @@ -1,17 +0,0 @@ -# SyncListResponseExtendEffect - -IAM effect. Defaults to Allow. - -## Example Usage - -```typescript -import { SyncListResponseExtendEffect } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseExtendEffect = "Allow"; -``` - -## Values - -```typescript -"Allow" | "Deny" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseextendgcp.md b/client-sdks/platform/typescript/docs/models/synclistresponseextendgcp.md deleted file mode 100644 index 91b9a24ed..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseextendgcp.md +++ /dev/null @@ -1,23 +0,0 @@ -# SyncListResponseExtendGcp - -GCP-specific platform permission configuration - -## Example Usage - -```typescript -import { SyncListResponseExtendGcp } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseExtendGcp = { - binding: {}, - grant: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | -| `binding` | [models.SyncListResponseExtendGcpBinding](../models/synclistresponseextendgcpbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | -| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | -| `grant` | [models.SyncListResponseExtendGcpGrant](../models/synclistresponseextendgcpgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | -| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseextendgcpbinding.md b/client-sdks/platform/typescript/docs/models/synclistresponseextendgcpbinding.md deleted file mode 100644 index 4cca25430..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseextendgcpbinding.md +++ /dev/null @@ -1,18 +0,0 @@ -# SyncListResponseExtendGcpBinding - -Generic binding configuration for permissions - -## Example Usage - -```typescript -import { SyncListResponseExtendGcpBinding } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseExtendGcpBinding = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | -| `resource` | [models.SyncListResponseExtendGcpResource](../models/synclistresponseextendgcpresource.md) | :heavy_minus_sign: | GCP-specific binding specification | -| `stack` | [models.SyncListResponseExtendGcpStack](../models/synclistresponseextendgcpstack.md) | :heavy_minus_sign: | GCP-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseextendgcpgrant.md b/client-sdks/platform/typescript/docs/models/synclistresponseextendgcpgrant.md deleted file mode 100644 index 3cf7795c7..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseextendgcpgrant.md +++ /dev/null @@ -1,21 +0,0 @@ -# SyncListResponseExtendGcpGrant - -Grant permissions for a specific cloud platform - -## Example Usage - -```typescript -import { SyncListResponseExtendGcpGrant } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseExtendGcpGrant = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | -| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | -| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | -| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | -| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseextendgcpresource.md b/client-sdks/platform/typescript/docs/models/synclistresponseextendgcpresource.md deleted file mode 100644 index 2145e1ee8..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseextendgcpresource.md +++ /dev/null @@ -1,20 +0,0 @@ -# SyncListResponseExtendGcpResource - -GCP-specific binding specification - -## Example Usage - -```typescript -import { SyncListResponseExtendGcpResource } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseExtendGcpResource = { - scope: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | -| `condition` | *models.SyncListResponseExtendResourceConditionUnion* | :heavy_minus_sign: | N/A | -| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseextendgcpstack.md b/client-sdks/platform/typescript/docs/models/synclistresponseextendgcpstack.md deleted file mode 100644 index 30d72bc2b..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseextendgcpstack.md +++ /dev/null @@ -1,20 +0,0 @@ -# SyncListResponseExtendGcpStack - -GCP-specific binding specification - -## Example Usage - -```typescript -import { SyncListResponseExtendGcpStack } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseExtendGcpStack = { - scope: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `condition` | *models.SyncListResponseExtendStackConditionUnion* | :heavy_minus_sign: | N/A | -| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseextendplatforms.md b/client-sdks/platform/typescript/docs/models/synclistresponseextendplatforms.md deleted file mode 100644 index 71b73ebe5..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseextendplatforms.md +++ /dev/null @@ -1,19 +0,0 @@ -# SyncListResponseExtendPlatforms - -Platform-specific permission configurations - -## Example Usage - -```typescript -import { SyncListResponseExtendPlatforms } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseExtendPlatforms = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -| `aws` | [models.SyncListResponseExtendAw](../models/synclistresponseextendaw.md)[] | :heavy_minus_sign: | AWS permission configurations | -| `azure` | [models.SyncListResponseExtendAzure](../models/synclistresponseextendazure.md)[] | :heavy_minus_sign: | Azure permission configurations | -| `gcp` | [models.SyncListResponseExtendGcp](../models/synclistresponseextendgcp.md)[] | :heavy_minus_sign: | GCP permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseextendresourceconditionunion.md b/client-sdks/platform/typescript/docs/models/synclistresponseextendresourceconditionunion.md deleted file mode 100644 index 4ffbc3802..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseextendresourceconditionunion.md +++ /dev/null @@ -1,20 +0,0 @@ -# SyncListResponseExtendResourceConditionUnion - - -## Supported Types - -### `models.SyncListResponseExtendConditionResource` - -```typescript -const value: models.SyncListResponseExtendConditionResource = { - expression: "", - title: "", -}; -``` - -### `any` - -```typescript -const value: any = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseextendstackconditionunion.md b/client-sdks/platform/typescript/docs/models/synclistresponseextendstackconditionunion.md deleted file mode 100644 index ce110ef1b..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseextendstackconditionunion.md +++ /dev/null @@ -1,20 +0,0 @@ -# SyncListResponseExtendStackConditionUnion - - -## Supported Types - -### `models.SyncListResponseExtendConditionStack` - -```typescript -const value: models.SyncListResponseExtendConditionStack = { - expression: "", - title: "", -}; -``` - -### `any` - -```typescript -const value: any = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseextendunion.md b/client-sdks/platform/typescript/docs/models/synclistresponseextendunion.md deleted file mode 100644 index 4cf0f217d..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseextendunion.md +++ /dev/null @@ -1,23 +0,0 @@ -# SyncListResponseExtendUnion - -Reference to a permission set - either by name or inline definition - - -## Supported Types - -### `models.SyncListResponseExtend` - -```typescript -const value: models.SyncListResponseExtend = { - description: "probable inasmuch cork", - id: "", - platforms: {}, -}; -``` - -### `string` - -```typescript -const value: string = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsefailuredomains1.md b/client-sdks/platform/typescript/docs/models/synclistresponsefailuredomains1.md new file mode 100644 index 000000000..bef0bf126 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsefailuredomains1.md @@ -0,0 +1,20 @@ +# SyncListResponseFailureDomains1 + +Failure-domain policy selected for a compute pool. + +## Example Usage + +```typescript +import { SyncListResponseFailureDomains1 } from "@alienplatform/platform-api/models"; + +let value: SyncListResponseFailureDomains1 = { + spread: 124748, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `selectedFailureDomains` | *string*[] | :heavy_minus_sign: | Concrete provider domains selected during setup.
Empty delegates deterministic selection to the provider setup implementation. | +| `spread` | *number* | :heavy_check_mark: | Number of distinct failure domains across which new stateful replicas may be spread. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsefailuredomains2.md b/client-sdks/platform/typescript/docs/models/synclistresponsefailuredomains2.md new file mode 100644 index 000000000..edae27522 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsefailuredomains2.md @@ -0,0 +1,20 @@ +# SyncListResponseFailureDomains2 + +Failure-domain policy selected for a compute pool. + +## Example Usage + +```typescript +import { SyncListResponseFailureDomains2 } from "@alienplatform/platform-api/models"; + +let value: SyncListResponseFailureDomains2 = { + spread: 625371, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `selectedFailureDomains` | *string*[] | :heavy_minus_sign: | Concrete provider domains selected during setup.
Empty delegates deterministic selection to the provider setup implementation. | +| `spread` | *number* | :heavy_check_mark: | Number of distinct failure domains across which new stateful replicas may be spread. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsefailuredomainsunion1.md b/client-sdks/platform/typescript/docs/models/synclistresponsefailuredomainsunion1.md new file mode 100644 index 000000000..a310cef4b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsefailuredomainsunion1.md @@ -0,0 +1,19 @@ +# SyncListResponseFailureDomainsUnion1 + + +## Supported Types + +### `models.SyncListResponseFailureDomains1` + +```typescript +const value: models.SyncListResponseFailureDomains1 = { + spread: 124748, +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsefailuredomainsunion2.md b/client-sdks/platform/typescript/docs/models/synclistresponsefailuredomainsunion2.md new file mode 100644 index 000000000..fe23a8348 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsefailuredomainsunion2.md @@ -0,0 +1,19 @@ +# SyncListResponseFailureDomainsUnion2 + + +## Supported Types + +### `models.SyncListResponseFailureDomains2` + +```typescript +const value: models.SyncListResponseFailureDomains2 = { + spread: 625371, +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseinitialsetupauthority.md b/client-sdks/platform/typescript/docs/models/synclistresponseinitialsetupauthority.md new file mode 100644 index 000000000..20f0d75ed --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponseinitialsetupauthority.md @@ -0,0 +1,17 @@ +# SyncListResponseInitialSetupAuthority + +Actor that owns structural work during the initial setup phase. + +## Example Usage + +```typescript +import { SyncListResponseInitialSetupAuthority } from "@alienplatform/platform-api/models"; + +let value: SyncListResponseInitialSetupAuthority = "importedHandoff"; +``` + +## Values + +```typescript +"importedHandoff" | "directSetup" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseinput.md b/client-sdks/platform/typescript/docs/models/synclistresponseinput.md deleted file mode 100644 index 4eb827ea6..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseinput.md +++ /dev/null @@ -1,36 +0,0 @@ -# SyncListResponseInput - -Stack input definition serialized into a release stack. - -## Example Usage - -```typescript -import { SyncListResponseInput } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseInput = { - description: "draw neatly round modulo sensitize", - id: "", - kind: "integer", - label: "", - providedBy: [ - "deployer", - ], - required: false, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | -| `default` | *models.SyncListResponseDefaultUnion* | :heavy_minus_sign: | N/A | -| `description` | *string* | :heavy_check_mark: | Human-facing helper text. | -| `env` | [models.SyncListResponseEnv](../models/synclistresponseenv.md)[] | :heavy_minus_sign: | Runtime env-var mappings for v1 input resolution. | -| `id` | *string* | :heavy_check_mark: | Stable input ID used by CLI/API calls. | -| `kind` | [models.SyncListResponseKind](../models/synclistresponsekind.md) | :heavy_check_mark: | Primitive stack input kind. | -| `label` | *string* | :heavy_check_mark: | Human-facing field label. | -| `placeholder` | *string* | :heavy_minus_sign: | Example placeholder shown in UI. | -| `platforms` | [models.SyncListResponsePreparedStackPlatform](../models/synclistresponsepreparedstackplatform.md)[] | :heavy_minus_sign: | Platforms where this input applies. | -| `providedBy` | [models.SyncListResponseProvidedBy](../models/synclistresponseprovidedby.md)[] | :heavy_check_mark: | Who can provide this value. | -| `required` | *boolean* | :heavy_check_mark: | Whether a resolved value is required before deployment can proceed. | -| `validation` | *models.SyncListResponseValidationUnion* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsekind.md b/client-sdks/platform/typescript/docs/models/synclistresponsekind.md deleted file mode 100644 index 69657de70..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponsekind.md +++ /dev/null @@ -1,17 +0,0 @@ -# SyncListResponseKind - -Primitive stack input kind. - -## Example Usage - -```typescript -import { SyncListResponseKind } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseKind = "enum"; -``` - -## Values - -```typescript -"string" | "secret" | "number" | "integer" | "boolean" | "enum" | "stringList" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsemanagement1.md b/client-sdks/platform/typescript/docs/models/synclistresponsemanagement1.md deleted file mode 100644 index 0c9b0ed5f..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponsemanagement1.md +++ /dev/null @@ -1,17 +0,0 @@ -# SyncListResponseManagement1 - -## Example Usage - -```typescript -import { SyncListResponseManagement1 } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseManagement1 = { - extend: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | -| `extend` | Record | :heavy_check_mark: | Permission profile that maps resources to permission sets
Key can be "*" for all resources or resource name for specific resource | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsemanagement2.md b/client-sdks/platform/typescript/docs/models/synclistresponsemanagement2.md deleted file mode 100644 index 4c1f3e190..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponsemanagement2.md +++ /dev/null @@ -1,20 +0,0 @@ -# SyncListResponseManagement2 - -## Example Usage - -```typescript -import { SyncListResponseManagement2 } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseManagement2 = { - override: { - "key": [], - "key1": [], - }, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | -| `override` | Record | :heavy_check_mark: | Permission profile that maps resources to permission sets
Key can be "*" for all resources or resource name for specific resource | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsemanagementenum.md b/client-sdks/platform/typescript/docs/models/synclistresponsemanagementenum.md deleted file mode 100644 index 8f3de0fa0..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponsemanagementenum.md +++ /dev/null @@ -1,15 +0,0 @@ -# SyncListResponseManagementEnum - -## Example Usage - -```typescript -import { SyncListResponseManagementEnum } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseManagementEnum = "auto"; -``` - -## Values - -```typescript -"auto" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsemanagementunion.md b/client-sdks/platform/typescript/docs/models/synclistresponsemanagementunion.md deleted file mode 100644 index 580b016ea..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponsemanagementunion.md +++ /dev/null @@ -1,32 +0,0 @@ -# SyncListResponseManagementUnion - -Management permissions configuration for stack management access - - -## Supported Types - -### `models.SyncListResponseManagement1` - -```typescript -const value: models.SyncListResponseManagement1 = { - extend: {}, -}; -``` - -### `models.SyncListResponseManagement2` - -```typescript -const value: models.SyncListResponseManagement2 = { - override: { - "key": [], - "key1": [], - }, -}; -``` - -### `models.SyncListResponseManagementEnum` - -```typescript -const value: models.SyncListResponseManagementEnum = "auto"; -``` - diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseoverride.md b/client-sdks/platform/typescript/docs/models/synclistresponseoverride.md deleted file mode 100644 index bdc4c6734..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseoverride.md +++ /dev/null @@ -1,23 +0,0 @@ -# SyncListResponseOverride - -A permission set that can be applied across different cloud platforms - -## Example Usage - -```typescript -import { SyncListResponseOverride } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseOverride = { - description: "singe excepting censor overcooked gee youthfully um including", - id: "", - platforms: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | -| `description` | *string* | :heavy_check_mark: | Human-readable description of what this permission set allows | -| `id` | *string* | :heavy_check_mark: | Unique identifier for the permission set (e.g., "storage/data-read") | -| `platforms` | [models.SyncListResponseOverridePlatforms](../models/synclistresponseoverrideplatforms.md) | :heavy_check_mark: | Platform-specific permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseoverrideaw.md b/client-sdks/platform/typescript/docs/models/synclistresponseoverrideaw.md deleted file mode 100644 index 0f48bc470..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseoverrideaw.md +++ /dev/null @@ -1,24 +0,0 @@ -# SyncListResponseOverrideAw - -AWS-specific platform permission configuration - -## Example Usage - -```typescript -import { SyncListResponseOverrideAw } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseOverrideAw = { - binding: {}, - grant: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | -| `binding` | [models.SyncListResponseOverrideAwBinding](../models/synclistresponseoverrideawbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | -| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | -| `effect` | [models.SyncListResponseOverrideEffect](../models/synclistresponseoverrideeffect.md) | :heavy_minus_sign: | IAM effect. Defaults to Allow. | -| `grant` | [models.SyncListResponseOverrideAwGrant](../models/synclistresponseoverrideawgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | -| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseoverrideawbinding.md b/client-sdks/platform/typescript/docs/models/synclistresponseoverrideawbinding.md deleted file mode 100644 index 6211e89c5..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseoverrideawbinding.md +++ /dev/null @@ -1,18 +0,0 @@ -# SyncListResponseOverrideAwBinding - -Generic binding configuration for permissions - -## Example Usage - -```typescript -import { SyncListResponseOverrideAwBinding } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseOverrideAwBinding = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `resource` | [models.SyncListResponseOverrideAwResource](../models/synclistresponseoverrideawresource.md) | :heavy_minus_sign: | AWS-specific binding specification | -| `stack` | [models.SyncListResponseOverrideAwStack](../models/synclistresponseoverrideawstack.md) | :heavy_minus_sign: | AWS-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseoverrideawgrant.md b/client-sdks/platform/typescript/docs/models/synclistresponseoverrideawgrant.md deleted file mode 100644 index ddffe3050..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseoverrideawgrant.md +++ /dev/null @@ -1,21 +0,0 @@ -# SyncListResponseOverrideAwGrant - -Grant permissions for a specific cloud platform - -## Example Usage - -```typescript -import { SyncListResponseOverrideAwGrant } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseOverrideAwGrant = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | -| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | -| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | -| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | -| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseoverrideawresource.md b/client-sdks/platform/typescript/docs/models/synclistresponseoverrideawresource.md deleted file mode 100644 index 006538549..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseoverrideawresource.md +++ /dev/null @@ -1,23 +0,0 @@ -# SyncListResponseOverrideAwResource - -AWS-specific binding specification - -## Example Usage - -```typescript -import { SyncListResponseOverrideAwResource } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseOverrideAwResource = { - resources: [ - "", - "", - ], -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | -| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseoverrideawstack.md b/client-sdks/platform/typescript/docs/models/synclistresponseoverrideawstack.md deleted file mode 100644 index 420e60090..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseoverrideawstack.md +++ /dev/null @@ -1,20 +0,0 @@ -# SyncListResponseOverrideAwStack - -AWS-specific binding specification - -## Example Usage - -```typescript -import { SyncListResponseOverrideAwStack } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseOverrideAwStack = { - resources: [], -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | -| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseoverrideazure.md b/client-sdks/platform/typescript/docs/models/synclistresponseoverrideazure.md deleted file mode 100644 index 2eff38ca8..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseoverrideazure.md +++ /dev/null @@ -1,23 +0,0 @@ -# SyncListResponseOverrideAzure - -Azure-specific platform permission configuration - -## Example Usage - -```typescript -import { SyncListResponseOverrideAzure } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseOverrideAzure = { - binding: {}, - grant: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | -| `binding` | [models.SyncListResponseOverrideAzureBinding](../models/synclistresponseoverrideazurebinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | -| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | -| `grant` | [models.SyncListResponseOverrideAzureGrant](../models/synclistresponseoverrideazuregrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | -| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseoverrideazurebinding.md b/client-sdks/platform/typescript/docs/models/synclistresponseoverrideazurebinding.md deleted file mode 100644 index 3cb01c11b..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseoverrideazurebinding.md +++ /dev/null @@ -1,18 +0,0 @@ -# SyncListResponseOverrideAzureBinding - -Generic binding configuration for permissions - -## Example Usage - -```typescript -import { SyncListResponseOverrideAzureBinding } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseOverrideAzureBinding = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -| `resource` | [models.SyncListResponseOverrideAzureResource](../models/synclistresponseoverrideazureresource.md) | :heavy_minus_sign: | Azure-specific binding specification | -| `stack` | [models.SyncListResponseOverrideAzureStack](../models/synclistresponseoverrideazurestack.md) | :heavy_minus_sign: | Azure-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseoverrideazuregrant.md b/client-sdks/platform/typescript/docs/models/synclistresponseoverrideazuregrant.md deleted file mode 100644 index c14ac3a83..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseoverrideazuregrant.md +++ /dev/null @@ -1,21 +0,0 @@ -# SyncListResponseOverrideAzureGrant - -Grant permissions for a specific cloud platform - -## Example Usage - -```typescript -import { SyncListResponseOverrideAzureGrant } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseOverrideAzureGrant = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | -| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | -| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | -| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | -| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseoverrideazureresource.md b/client-sdks/platform/typescript/docs/models/synclistresponseoverrideazureresource.md deleted file mode 100644 index 6d01fc344..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseoverrideazureresource.md +++ /dev/null @@ -1,19 +0,0 @@ -# SyncListResponseOverrideAzureResource - -Azure-specific binding specification - -## Example Usage - -```typescript -import { SyncListResponseOverrideAzureResource } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseOverrideAzureResource = { - scope: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseoverrideazurestack.md b/client-sdks/platform/typescript/docs/models/synclistresponseoverrideazurestack.md deleted file mode 100644 index 30fc35b69..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseoverrideazurestack.md +++ /dev/null @@ -1,19 +0,0 @@ -# SyncListResponseOverrideAzureStack - -Azure-specific binding specification - -## Example Usage - -```typescript -import { SyncListResponseOverrideAzureStack } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseOverrideAzureStack = { - scope: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseoverrideconditionresource.md b/client-sdks/platform/typescript/docs/models/synclistresponseoverrideconditionresource.md deleted file mode 100644 index a511107ca..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseoverrideconditionresource.md +++ /dev/null @@ -1,21 +0,0 @@ -# SyncListResponseOverrideConditionResource - -GCP IAM condition - -## Example Usage - -```typescript -import { SyncListResponseOverrideConditionResource } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseOverrideConditionResource = { - expression: "", - title: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `expression` | *string* | :heavy_check_mark: | N/A | -| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseoverrideconditionstack.md b/client-sdks/platform/typescript/docs/models/synclistresponseoverrideconditionstack.md deleted file mode 100644 index aaa5905d1..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseoverrideconditionstack.md +++ /dev/null @@ -1,21 +0,0 @@ -# SyncListResponseOverrideConditionStack - -GCP IAM condition - -## Example Usage - -```typescript -import { SyncListResponseOverrideConditionStack } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseOverrideConditionStack = { - expression: "", - title: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `expression` | *string* | :heavy_check_mark: | N/A | -| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseoverrideeffect.md b/client-sdks/platform/typescript/docs/models/synclistresponseoverrideeffect.md deleted file mode 100644 index 0dbcfb1e3..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseoverrideeffect.md +++ /dev/null @@ -1,17 +0,0 @@ -# SyncListResponseOverrideEffect - -IAM effect. Defaults to Allow. - -## Example Usage - -```typescript -import { SyncListResponseOverrideEffect } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseOverrideEffect = "Allow"; -``` - -## Values - -```typescript -"Allow" | "Deny" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseoverridegcp.md b/client-sdks/platform/typescript/docs/models/synclistresponseoverridegcp.md deleted file mode 100644 index b7123593a..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseoverridegcp.md +++ /dev/null @@ -1,23 +0,0 @@ -# SyncListResponseOverrideGcp - -GCP-specific platform permission configuration - -## Example Usage - -```typescript -import { SyncListResponseOverrideGcp } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseOverrideGcp = { - binding: {}, - grant: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `binding` | [models.SyncListResponseOverrideGcpBinding](../models/synclistresponseoverridegcpbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | -| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | -| `grant` | [models.SyncListResponseOverrideGcpGrant](../models/synclistresponseoverridegcpgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | -| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseoverridegcpbinding.md b/client-sdks/platform/typescript/docs/models/synclistresponseoverridegcpbinding.md deleted file mode 100644 index 4da417185..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseoverridegcpbinding.md +++ /dev/null @@ -1,18 +0,0 @@ -# SyncListResponseOverrideGcpBinding - -Generic binding configuration for permissions - -## Example Usage - -```typescript -import { SyncListResponseOverrideGcpBinding } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseOverrideGcpBinding = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | -| `resource` | [models.SyncListResponseOverrideGcpResource](../models/synclistresponseoverridegcpresource.md) | :heavy_minus_sign: | GCP-specific binding specification | -| `stack` | [models.SyncListResponseOverrideGcpStack](../models/synclistresponseoverridegcpstack.md) | :heavy_minus_sign: | GCP-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseoverridegcpgrant.md b/client-sdks/platform/typescript/docs/models/synclistresponseoverridegcpgrant.md deleted file mode 100644 index 35780b497..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseoverridegcpgrant.md +++ /dev/null @@ -1,21 +0,0 @@ -# SyncListResponseOverrideGcpGrant - -Grant permissions for a specific cloud platform - -## Example Usage - -```typescript -import { SyncListResponseOverrideGcpGrant } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseOverrideGcpGrant = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | -| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | -| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | -| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | -| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseoverridegcpresource.md b/client-sdks/platform/typescript/docs/models/synclistresponseoverridegcpresource.md deleted file mode 100644 index 41a7e7ab2..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseoverridegcpresource.md +++ /dev/null @@ -1,20 +0,0 @@ -# SyncListResponseOverrideGcpResource - -GCP-specific binding specification - -## Example Usage - -```typescript -import { SyncListResponseOverrideGcpResource } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseOverrideGcpResource = { - scope: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | -| `condition` | *models.SyncListResponseOverrideResourceConditionUnion* | :heavy_minus_sign: | N/A | -| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseoverridegcpstack.md b/client-sdks/platform/typescript/docs/models/synclistresponseoverridegcpstack.md deleted file mode 100644 index 2a4a5f5db..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseoverridegcpstack.md +++ /dev/null @@ -1,20 +0,0 @@ -# SyncListResponseOverrideGcpStack - -GCP-specific binding specification - -## Example Usage - -```typescript -import { SyncListResponseOverrideGcpStack } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseOverrideGcpStack = { - scope: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | -| `condition` | *models.SyncListResponseOverrideStackConditionUnion* | :heavy_minus_sign: | N/A | -| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseoverrideplatforms.md b/client-sdks/platform/typescript/docs/models/synclistresponseoverrideplatforms.md deleted file mode 100644 index 4012fdb16..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseoverrideplatforms.md +++ /dev/null @@ -1,19 +0,0 @@ -# SyncListResponseOverridePlatforms - -Platform-specific permission configurations - -## Example Usage - -```typescript -import { SyncListResponseOverridePlatforms } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseOverridePlatforms = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | -| `aws` | [models.SyncListResponseOverrideAw](../models/synclistresponseoverrideaw.md)[] | :heavy_minus_sign: | AWS permission configurations | -| `azure` | [models.SyncListResponseOverrideAzure](../models/synclistresponseoverrideazure.md)[] | :heavy_minus_sign: | Azure permission configurations | -| `gcp` | [models.SyncListResponseOverrideGcp](../models/synclistresponseoverridegcp.md)[] | :heavy_minus_sign: | GCP permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseoverrideresourceconditionunion.md b/client-sdks/platform/typescript/docs/models/synclistresponseoverrideresourceconditionunion.md deleted file mode 100644 index d639b1bd5..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseoverrideresourceconditionunion.md +++ /dev/null @@ -1,20 +0,0 @@ -# SyncListResponseOverrideResourceConditionUnion - - -## Supported Types - -### `models.SyncListResponseOverrideConditionResource` - -```typescript -const value: models.SyncListResponseOverrideConditionResource = { - expression: "", - title: "", -}; -``` - -### `any` - -```typescript -const value: any = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseoverridestackconditionunion.md b/client-sdks/platform/typescript/docs/models/synclistresponseoverridestackconditionunion.md deleted file mode 100644 index b79a2052b..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseoverridestackconditionunion.md +++ /dev/null @@ -1,20 +0,0 @@ -# SyncListResponseOverrideStackConditionUnion - - -## Supported Types - -### `models.SyncListResponseOverrideConditionStack` - -```typescript -const value: models.SyncListResponseOverrideConditionStack = { - expression: "", - title: "", -}; -``` - -### `any` - -```typescript -const value: any = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseoverrideunion.md b/client-sdks/platform/typescript/docs/models/synclistresponseoverrideunion.md deleted file mode 100644 index 3073ddc9a..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseoverrideunion.md +++ /dev/null @@ -1,23 +0,0 @@ -# SyncListResponseOverrideUnion - -Reference to a permission set - either by name or inline definition - - -## Supported Types - -### `models.SyncListResponseOverride` - -```typescript -const value: models.SyncListResponseOverride = { - description: "singe excepting censor overcooked gee youthfully um including", - id: "", - platforms: {}, -}; -``` - -### `string` - -```typescript -const value: string = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstack.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstack.md new file mode 100644 index 000000000..98cea5a96 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstack.md @@ -0,0 +1,38 @@ +# SyncListResponsePendingPreparedStack + +A bag of resources, unaware of any cloud. + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStack } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStack = { + id: "", + resources: { + "key": { + config: { + id: "", + type: "", + }, + dependencies: [ + { + id: "", + type: "", + }, + ], + lifecycle: "frozen", + }, + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the stack | +| `inputs` | [models.SyncListResponsePendingPreparedStackInput](../models/synclistresponsependingpreparedstackinput.md)[] | :heavy_minus_sign: | Input definitions required before setup or deployment can proceed. | +| `permissions` | [models.SyncListResponsePendingPreparedStackPermissions](../models/synclistresponsependingpreparedstackpermissions.md) | :heavy_minus_sign: | Combined permissions configuration that contains both profiles and management | +| `resources` | Record | :heavy_check_mark: | Map of resource IDs to their configurations and lifecycle settings | +| `supportedPlatforms` | [models.SyncListResponsePendingPreparedStackSupportedPlatform](../models/synclistresponsependingpreparedstacksupportedplatform.md)[] | :heavy_minus_sign: | Which platforms this stack supports. When None, all platforms are supported. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackconfig.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackconfig.md new file mode 100644 index 000000000..b64851ea8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackconfig.md @@ -0,0 +1,22 @@ +# SyncListResponsePendingPreparedStackConfig + +Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackConfig } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackConfig = { + id: "", + type: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. | +| `type` | *string* | :heavy_check_mark: | Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. | +| `additionalProperties` | Record | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackdefaultboolean.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackdefaultboolean.md new file mode 100644 index 000000000..2bd851301 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackdefaultboolean.md @@ -0,0 +1,19 @@ +# SyncListResponsePendingPreparedStackDefaultBoolean + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackDefaultBoolean } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackDefaultBoolean = { + type: "boolean", + value: false, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | +| `type` | [models.SyncListResponsePendingPreparedStackTypeBoolean](../models/synclistresponsependingpreparedstacktypeboolean.md) | :heavy_check_mark: | N/A | +| `value` | *boolean* | :heavy_check_mark: | Boolean default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackdefaultnumber.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackdefaultnumber.md new file mode 100644 index 000000000..065164ad5 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackdefaultnumber.md @@ -0,0 +1,19 @@ +# SyncListResponsePendingPreparedStackDefaultNumber + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackDefaultNumber } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackDefaultNumber = { + type: "number", + value: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `type` | [models.SyncListResponsePendingPreparedStackTypeNumber](../models/synclistresponsependingpreparedstacktypenumber.md) | :heavy_check_mark: | N/A | +| `value` | *string* | :heavy_check_mark: | Number default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackdefaultstring.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackdefaultstring.md new file mode 100644 index 000000000..6f4871798 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackdefaultstring.md @@ -0,0 +1,19 @@ +# SyncListResponsePendingPreparedStackDefaultString + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackDefaultString } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackDefaultString = { + type: "string", + value: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `type` | [models.SyncListResponsePendingPreparedStackTypeString](../models/synclistresponsependingpreparedstacktypestring.md) | :heavy_check_mark: | N/A | +| `value` | *string* | :heavy_check_mark: | String default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackdefaultstringlist.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackdefaultstringlist.md new file mode 100644 index 000000000..0aa88104b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackdefaultstringlist.md @@ -0,0 +1,22 @@ +# SyncListResponsePendingPreparedStackDefaultStringList + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackDefaultStringList } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackDefaultStringList = { + type: "stringList", + value: [ + "", + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | +| `type` | [models.SyncListResponsePendingPreparedStackTypeStringList](../models/synclistresponsependingpreparedstacktypestringlist.md) | :heavy_check_mark: | N/A | +| `value` | *string*[] | :heavy_check_mark: | String list default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackdefaultunion.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackdefaultunion.md new file mode 100644 index 000000000..81e70d04e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackdefaultunion.md @@ -0,0 +1,50 @@ +# SyncListResponsePendingPreparedStackDefaultUnion + + +## Supported Types + +### `models.SyncListResponsePendingPreparedStackDefaultString` + +```typescript +const value: models.SyncListResponsePendingPreparedStackDefaultString = { + type: "string", + value: "", +}; +``` + +### `models.SyncListResponsePendingPreparedStackDefaultNumber` + +```typescript +const value: models.SyncListResponsePendingPreparedStackDefaultNumber = { + type: "number", + value: "", +}; +``` + +### `models.SyncListResponsePendingPreparedStackDefaultBoolean` + +```typescript +const value: models.SyncListResponsePendingPreparedStackDefaultBoolean = { + type: "boolean", + value: false, +}; +``` + +### `models.SyncListResponsePendingPreparedStackDefaultStringList` + +```typescript +const value: models.SyncListResponsePendingPreparedStackDefaultStringList = { + type: "stringList", + value: [ + "", + "", + ], +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackdependency.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackdependency.md new file mode 100644 index 000000000..8d19d11dd --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackdependency.md @@ -0,0 +1,21 @@ +# SyncListResponsePendingPreparedStackDependency + +Reference to a resource by its stable id and resource type. + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackDependency } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackDependency = { + id: "", + type: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | N/A | +| `type` | *string* | :heavy_check_mark: | Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackenv.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackenv.md new file mode 100644 index 000000000..35977c6c4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackenv.md @@ -0,0 +1,21 @@ +# SyncListResponsePendingPreparedStackEnv + +How a resolved stack input is injected into runtime environment variables. + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackEnv } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackEnv = { + name: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `name` | *string* | :heavy_check_mark: | Environment variable name. | +| `targetResources` | *string*[] | :heavy_minus_sign: | Target resource IDs or patterns. None means every env-capable resource. | +| `type` | *models.SyncListResponsePendingPreparedStackTypeUnion* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextend.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextend.md new file mode 100644 index 000000000..cd9ae179b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextend.md @@ -0,0 +1,24 @@ +# SyncListResponsePendingPreparedStackExtend + +A permission set that can be applied across different cloud platforms + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackExtend } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackExtend = { + description: + "since miskey flimsy near ambitious pish though ignite accurate tooth", + id: "", + platforms: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `description` | *string* | :heavy_check_mark: | Human-readable description of what this permission set allows | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the permission set (e.g., "storage/data-read") | +| `platforms` | [models.SyncListResponsePendingPreparedStackExtendPlatforms](../models/synclistresponsependingpreparedstackextendplatforms.md) | :heavy_check_mark: | Platform-specific permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendaw.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendaw.md new file mode 100644 index 000000000..ccebfaf0b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendaw.md @@ -0,0 +1,24 @@ +# SyncListResponsePendingPreparedStackExtendAw + +AWS-specific platform permission configuration + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackExtendAw } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackExtendAw = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `binding` | [models.SyncListResponsePendingPreparedStackExtendAwBinding](../models/synclistresponsependingpreparedstackextendawbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `effect` | [models.SyncListResponsePendingPreparedStackExtendEffect](../models/synclistresponsependingpreparedstackextendeffect.md) | :heavy_minus_sign: | IAM effect. Defaults to Allow. | +| `grant` | [models.SyncListResponsePendingPreparedStackExtendAwGrant](../models/synclistresponsependingpreparedstackextendawgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendawbinding.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendawbinding.md new file mode 100644 index 000000000..676145484 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendawbinding.md @@ -0,0 +1,18 @@ +# SyncListResponsePendingPreparedStackExtendAwBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackExtendAwBinding } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackExtendAwBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.SyncListResponsePendingPreparedStackExtendAwResource](../models/synclistresponsependingpreparedstackextendawresource.md) | :heavy_minus_sign: | AWS-specific binding specification | +| `stack` | [models.SyncListResponsePendingPreparedStackExtendAwStack](../models/synclistresponsependingpreparedstackextendawstack.md) | :heavy_minus_sign: | AWS-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendawgrant.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendawgrant.md new file mode 100644 index 000000000..f49dadc7b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendawgrant.md @@ -0,0 +1,21 @@ +# SyncListResponsePendingPreparedStackExtendAwGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackExtendAwGrant } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackExtendAwGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendawresource.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendawresource.md new file mode 100644 index 000000000..eafa5d8ac --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendawresource.md @@ -0,0 +1,23 @@ +# SyncListResponsePendingPreparedStackExtendAwResource + +AWS-specific binding specification + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackExtendAwResource } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackExtendAwResource = { + resources: [ + "", + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendawstack.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendawstack.md new file mode 100644 index 000000000..ee9ea6a3f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendawstack.md @@ -0,0 +1,22 @@ +# SyncListResponsePendingPreparedStackExtendAwStack + +AWS-specific binding specification + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackExtendAwStack } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackExtendAwStack = { + resources: [ + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendazure.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendazure.md new file mode 100644 index 000000000..3377fb68d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendazure.md @@ -0,0 +1,23 @@ +# SyncListResponsePendingPreparedStackExtendAzure + +Azure-specific platform permission configuration + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackExtendAzure } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackExtendAzure = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | +| `binding` | [models.SyncListResponsePendingPreparedStackExtendAzureBinding](../models/synclistresponsependingpreparedstackextendazurebinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.SyncListResponsePendingPreparedStackExtendAzureGrant](../models/synclistresponsependingpreparedstackextendazuregrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendazurebinding.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendazurebinding.md new file mode 100644 index 000000000..841f37385 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendazurebinding.md @@ -0,0 +1,18 @@ +# SyncListResponsePendingPreparedStackExtendAzureBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackExtendAzureBinding } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackExtendAzureBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.SyncListResponsePendingPreparedStackExtendAzureResource](../models/synclistresponsependingpreparedstackextendazureresource.md) | :heavy_minus_sign: | Azure-specific binding specification | +| `stack` | [models.SyncListResponsePendingPreparedStackExtendAzureStack](../models/synclistresponsependingpreparedstackextendazurestack.md) | :heavy_minus_sign: | Azure-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendazuregrant.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendazuregrant.md new file mode 100644 index 000000000..ee367cf94 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendazuregrant.md @@ -0,0 +1,21 @@ +# SyncListResponsePendingPreparedStackExtendAzureGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackExtendAzureGrant } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackExtendAzureGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendazureresource.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendazureresource.md new file mode 100644 index 000000000..ea5f28cb1 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendazureresource.md @@ -0,0 +1,19 @@ +# SyncListResponsePendingPreparedStackExtendAzureResource + +Azure-specific binding specification + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackExtendAzureResource } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackExtendAzureResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendazurestack.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendazurestack.md new file mode 100644 index 000000000..4ea9fcc6f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendazurestack.md @@ -0,0 +1,19 @@ +# SyncListResponsePendingPreparedStackExtendAzureStack + +Azure-specific binding specification + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackExtendAzureStack } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackExtendAzureStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendconditionresource.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendconditionresource.md new file mode 100644 index 000000000..58c05983a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendconditionresource.md @@ -0,0 +1,21 @@ +# SyncListResponsePendingPreparedStackExtendConditionResource + +GCP IAM condition + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackExtendConditionResource } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackExtendConditionResource = { + expression: "", + title: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendconditionstack.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendconditionstack.md new file mode 100644 index 000000000..479a3536c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendconditionstack.md @@ -0,0 +1,21 @@ +# SyncListResponsePendingPreparedStackExtendConditionStack + +GCP IAM condition + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackExtendConditionStack } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackExtendConditionStack = { + expression: "", + title: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendeffect.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendeffect.md new file mode 100644 index 000000000..f2a860698 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendeffect.md @@ -0,0 +1,17 @@ +# SyncListResponsePendingPreparedStackExtendEffect + +IAM effect. Defaults to Allow. + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackExtendEffect } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackExtendEffect = "Deny"; +``` + +## Values + +```typescript +"Allow" | "Deny" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendgcp.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendgcp.md new file mode 100644 index 000000000..540f947d4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendgcp.md @@ -0,0 +1,23 @@ +# SyncListResponsePendingPreparedStackExtendGcp + +GCP-specific platform permission configuration + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackExtendGcp } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackExtendGcp = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.SyncListResponsePendingPreparedStackExtendGcpBinding](../models/synclistresponsependingpreparedstackextendgcpbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.SyncListResponsePendingPreparedStackExtendGcpGrant](../models/synclistresponsependingpreparedstackextendgcpgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendgcpbinding.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendgcpbinding.md new file mode 100644 index 000000000..19f58a2c5 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendgcpbinding.md @@ -0,0 +1,18 @@ +# SyncListResponsePendingPreparedStackExtendGcpBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackExtendGcpBinding } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackExtendGcpBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.SyncListResponsePendingPreparedStackExtendGcpResource](../models/synclistresponsependingpreparedstackextendgcpresource.md) | :heavy_minus_sign: | GCP-specific binding specification | +| `stack` | [models.SyncListResponsePendingPreparedStackExtendGcpStack](../models/synclistresponsependingpreparedstackextendgcpstack.md) | :heavy_minus_sign: | GCP-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendgcpgrant.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendgcpgrant.md new file mode 100644 index 000000000..d8d0703b4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendgcpgrant.md @@ -0,0 +1,21 @@ +# SyncListResponsePendingPreparedStackExtendGcpGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackExtendGcpGrant } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackExtendGcpGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendgcpresource.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendgcpresource.md new file mode 100644 index 000000000..de3fa8d10 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendgcpresource.md @@ -0,0 +1,20 @@ +# SyncListResponsePendingPreparedStackExtendGcpResource + +GCP-specific binding specification + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackExtendGcpResource } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackExtendGcpResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| `condition` | *models.SyncListResponsePendingPreparedStackExtendResourceConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendgcpstack.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendgcpstack.md new file mode 100644 index 000000000..61d8e51aa --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendgcpstack.md @@ -0,0 +1,20 @@ +# SyncListResponsePendingPreparedStackExtendGcpStack + +GCP-specific binding specification + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackExtendGcpStack } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackExtendGcpStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | +| `condition` | *models.SyncListResponsePendingPreparedStackExtendStackConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendplatforms.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendplatforms.md new file mode 100644 index 000000000..ab3768f54 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendplatforms.md @@ -0,0 +1,19 @@ +# SyncListResponsePendingPreparedStackExtendPlatforms + +Platform-specific permission configurations + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackExtendPlatforms } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackExtendPlatforms = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | +| `aws` | [models.SyncListResponsePendingPreparedStackExtendAw](../models/synclistresponsependingpreparedstackextendaw.md)[] | :heavy_minus_sign: | AWS permission configurations | +| `azure` | [models.SyncListResponsePendingPreparedStackExtendAzure](../models/synclistresponsependingpreparedstackextendazure.md)[] | :heavy_minus_sign: | Azure permission configurations | +| `gcp` | [models.SyncListResponsePendingPreparedStackExtendGcp](../models/synclistresponsependingpreparedstackextendgcp.md)[] | :heavy_minus_sign: | GCP permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendresourceconditionunion.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendresourceconditionunion.md new file mode 100644 index 000000000..cb2adc4c3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendresourceconditionunion.md @@ -0,0 +1,21 @@ +# SyncListResponsePendingPreparedStackExtendResourceConditionUnion + + +## Supported Types + +### `models.SyncListResponsePendingPreparedStackExtendConditionResource` + +```typescript +const value: + models.SyncListResponsePendingPreparedStackExtendConditionResource = { + expression: "", + title: "", + }; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendstackconditionunion.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendstackconditionunion.md new file mode 100644 index 000000000..8a5ee11c7 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendstackconditionunion.md @@ -0,0 +1,20 @@ +# SyncListResponsePendingPreparedStackExtendStackConditionUnion + + +## Supported Types + +### `models.SyncListResponsePendingPreparedStackExtendConditionStack` + +```typescript +const value: models.SyncListResponsePendingPreparedStackExtendConditionStack = { + expression: "", + title: "", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendunion.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendunion.md new file mode 100644 index 000000000..c1bb51b86 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackextendunion.md @@ -0,0 +1,24 @@ +# SyncListResponsePendingPreparedStackExtendUnion + +Reference to a permission set - either by name or inline definition + + +## Supported Types + +### `models.SyncListResponsePendingPreparedStackExtend` + +```typescript +const value: models.SyncListResponsePendingPreparedStackExtend = { + description: + "since miskey flimsy near ambitious pish though ignite accurate tooth", + id: "", + platforms: {}, +}; +``` + +### `string` + +```typescript +const value: string = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackinput.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackinput.md new file mode 100644 index 000000000..fa42cddeb --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackinput.md @@ -0,0 +1,34 @@ +# SyncListResponsePendingPreparedStackInput + +Stack input definition serialized into a release stack. + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackInput } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackInput = { + description: "and ack twine absent plus", + id: "", + kind: "enum", + label: "", + providedBy: [], + required: false, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | +| `default` | *models.SyncListResponsePendingPreparedStackDefaultUnion* | :heavy_minus_sign: | N/A | +| `description` | *string* | :heavy_check_mark: | Human-facing helper text. | +| `env` | [models.SyncListResponsePendingPreparedStackEnv](../models/synclistresponsependingpreparedstackenv.md)[] | :heavy_minus_sign: | Runtime env-var mappings for v1 input resolution. | +| `id` | *string* | :heavy_check_mark: | Stable input ID used by CLI/API calls. | +| `kind` | [models.SyncListResponsePendingPreparedStackKind](../models/synclistresponsependingpreparedstackkind.md) | :heavy_check_mark: | Primitive stack input kind. | +| `label` | *string* | :heavy_check_mark: | Human-facing field label. | +| `placeholder` | *string* | :heavy_minus_sign: | Example placeholder shown in UI. | +| `platforms` | [models.SyncListResponsePendingPreparedStackPlatform](../models/synclistresponsependingpreparedstackplatform.md)[] | :heavy_minus_sign: | Platforms where this input applies. | +| `providedBy` | [models.SyncListResponsePendingPreparedStackProvidedBy](../models/synclistresponsependingpreparedstackprovidedby.md)[] | :heavy_check_mark: | Who can provide this value. | +| `required` | *boolean* | :heavy_check_mark: | Whether a resolved value is required before deployment can proceed. | +| `validation` | *models.SyncListResponsePendingPreparedStackValidationUnion* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackkind.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackkind.md new file mode 100644 index 000000000..23ab8a81e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackkind.md @@ -0,0 +1,17 @@ +# SyncListResponsePendingPreparedStackKind + +Primitive stack input kind. + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackKind } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackKind = "secret"; +``` + +## Values + +```typescript +"string" | "secret" | "number" | "integer" | "boolean" | "enum" | "stringList" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstacklifecycle.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstacklifecycle.md new file mode 100644 index 000000000..aa9399061 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstacklifecycle.md @@ -0,0 +1,17 @@ +# SyncListResponsePendingPreparedStackLifecycle + +Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackLifecycle } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackLifecycle = "live"; +``` + +## Values + +```typescript +"frozen" | "live" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackmanagement1.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackmanagement1.md new file mode 100644 index 000000000..1ea565861 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackmanagement1.md @@ -0,0 +1,35 @@ +# SyncListResponsePendingPreparedStackManagement1 + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackManagement1 } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackManagement1 = { + extend: { + "key": [ + { + description: "alongside however generously ick teammate for", + id: "", + platforms: {}, + }, + ], + "key1": [ + "", + ], + "key2": [ + { + description: "alongside however generously ick teammate for", + id: "", + platforms: {}, + }, + ], + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | +| `extend` | Record | :heavy_check_mark: | Permission profile that maps resources to permission sets
Key can be "*" for all resources or resource name for specific resource | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackmanagement2.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackmanagement2.md new file mode 100644 index 000000000..d1fdaa1a6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackmanagement2.md @@ -0,0 +1,22 @@ +# SyncListResponsePendingPreparedStackManagement2 + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackManagement2 } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackManagement2 = { + override: { + "key": [], + "key1": [ + "", + ], + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | +| `override` | Record | :heavy_check_mark: | Permission profile that maps resources to permission sets
Key can be "*" for all resources or resource name for specific resource | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackmanagementenum.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackmanagementenum.md new file mode 100644 index 000000000..4002de3b8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackmanagementenum.md @@ -0,0 +1,15 @@ +# SyncListResponsePendingPreparedStackManagementEnum + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackManagementEnum } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackManagementEnum = "auto"; +``` + +## Values + +```typescript +"auto" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackmanagementunion.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackmanagementunion.md new file mode 100644 index 000000000..a8ff12316 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackmanagementunion.md @@ -0,0 +1,52 @@ +# SyncListResponsePendingPreparedStackManagementUnion + +Management permissions configuration for stack management access + + +## Supported Types + +### `models.SyncListResponsePendingPreparedStackManagement1` + +```typescript +const value: models.SyncListResponsePendingPreparedStackManagement1 = { + extend: { + "key": [ + { + description: "alongside however generously ick teammate for", + id: "", + platforms: {}, + }, + ], + "key1": [ + "", + ], + "key2": [ + { + description: "alongside however generously ick teammate for", + id: "", + platforms: {}, + }, + ], + }, +}; +``` + +### `models.SyncListResponsePendingPreparedStackManagement2` + +```typescript +const value: models.SyncListResponsePendingPreparedStackManagement2 = { + override: { + "key": [], + "key1": [ + "", + ], + }, +}; +``` + +### `models.SyncListResponsePendingPreparedStackManagementEnum` + +```typescript +const value: models.SyncListResponsePendingPreparedStackManagementEnum = "auto"; +``` + diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverride.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverride.md new file mode 100644 index 000000000..d3a99be04 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverride.md @@ -0,0 +1,23 @@ +# SyncListResponsePendingPreparedStackOverride + +A permission set that can be applied across different cloud platforms + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackOverride } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackOverride = { + description: "as ack duh", + id: "", + platforms: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| `description` | *string* | :heavy_check_mark: | Human-readable description of what this permission set allows | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the permission set (e.g., "storage/data-read") | +| `platforms` | [models.SyncListResponsePendingPreparedStackOverridePlatforms](../models/synclistresponsependingpreparedstackoverrideplatforms.md) | :heavy_check_mark: | Platform-specific permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverrideaw.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverrideaw.md new file mode 100644 index 000000000..cac6a93f1 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverrideaw.md @@ -0,0 +1,24 @@ +# SyncListResponsePendingPreparedStackOverrideAw + +AWS-specific platform permission configuration + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackOverrideAw } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackOverrideAw = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.SyncListResponsePendingPreparedStackOverrideAwBinding](../models/synclistresponsependingpreparedstackoverrideawbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `effect` | [models.SyncListResponsePendingPreparedStackOverrideEffect](../models/synclistresponsependingpreparedstackoverrideeffect.md) | :heavy_minus_sign: | IAM effect. Defaults to Allow. | +| `grant` | [models.SyncListResponsePendingPreparedStackOverrideAwGrant](../models/synclistresponsependingpreparedstackoverrideawgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverrideawbinding.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverrideawbinding.md new file mode 100644 index 000000000..ed6beaa28 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverrideawbinding.md @@ -0,0 +1,18 @@ +# SyncListResponsePendingPreparedStackOverrideAwBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackOverrideAwBinding } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackOverrideAwBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | +| `resource` | [models.SyncListResponsePendingPreparedStackOverrideAwResource](../models/synclistresponsependingpreparedstackoverrideawresource.md) | :heavy_minus_sign: | AWS-specific binding specification | +| `stack` | [models.SyncListResponsePendingPreparedStackOverrideAwStack](../models/synclistresponsependingpreparedstackoverrideawstack.md) | :heavy_minus_sign: | AWS-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverrideawgrant.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverrideawgrant.md new file mode 100644 index 000000000..897f3da0f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverrideawgrant.md @@ -0,0 +1,21 @@ +# SyncListResponsePendingPreparedStackOverrideAwGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackOverrideAwGrant } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackOverrideAwGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverrideawresource.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverrideawresource.md new file mode 100644 index 000000000..45de3977c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverrideawresource.md @@ -0,0 +1,24 @@ +# SyncListResponsePendingPreparedStackOverrideAwResource + +AWS-specific binding specification + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackOverrideAwResource } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackOverrideAwResource = { + resources: [ + "", + "", + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverrideawstack.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverrideawstack.md new file mode 100644 index 000000000..2d3b29759 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverrideawstack.md @@ -0,0 +1,20 @@ +# SyncListResponsePendingPreparedStackOverrideAwStack + +AWS-specific binding specification + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackOverrideAwStack } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackOverrideAwStack = { + resources: [], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverrideazure.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverrideazure.md new file mode 100644 index 000000000..989322e74 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverrideazure.md @@ -0,0 +1,23 @@ +# SyncListResponsePendingPreparedStackOverrideAzure + +Azure-specific platform permission configuration + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackOverrideAzure } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackOverrideAzure = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.SyncListResponsePendingPreparedStackOverrideAzureBinding](../models/synclistresponsependingpreparedstackoverrideazurebinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.SyncListResponsePendingPreparedStackOverrideAzureGrant](../models/synclistresponsependingpreparedstackoverrideazuregrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverrideazurebinding.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverrideazurebinding.md new file mode 100644 index 000000000..e0d4e6630 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverrideazurebinding.md @@ -0,0 +1,18 @@ +# SyncListResponsePendingPreparedStackOverrideAzureBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackOverrideAzureBinding } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackOverrideAzureBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | +| `resource` | [models.SyncListResponsePendingPreparedStackOverrideAzureResource](../models/synclistresponsependingpreparedstackoverrideazureresource.md) | :heavy_minus_sign: | Azure-specific binding specification | +| `stack` | [models.SyncListResponsePendingPreparedStackOverrideAzureStack](../models/synclistresponsependingpreparedstackoverrideazurestack.md) | :heavy_minus_sign: | Azure-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverrideazuregrant.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverrideazuregrant.md new file mode 100644 index 000000000..9cf579c5f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverrideazuregrant.md @@ -0,0 +1,21 @@ +# SyncListResponsePendingPreparedStackOverrideAzureGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackOverrideAzureGrant } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackOverrideAzureGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverrideazureresource.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverrideazureresource.md new file mode 100644 index 000000000..6977f47ef --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverrideazureresource.md @@ -0,0 +1,19 @@ +# SyncListResponsePendingPreparedStackOverrideAzureResource + +Azure-specific binding specification + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackOverrideAzureResource } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackOverrideAzureResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverrideazurestack.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverrideazurestack.md new file mode 100644 index 000000000..f32bfd7fb --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverrideazurestack.md @@ -0,0 +1,19 @@ +# SyncListResponsePendingPreparedStackOverrideAzureStack + +Azure-specific binding specification + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackOverrideAzureStack } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackOverrideAzureStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverrideconditionresource.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverrideconditionresource.md new file mode 100644 index 000000000..5b3f164c6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverrideconditionresource.md @@ -0,0 +1,21 @@ +# SyncListResponsePendingPreparedStackOverrideConditionResource + +GCP IAM condition + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackOverrideConditionResource } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackOverrideConditionResource = { + expression: "", + title: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverrideconditionstack.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverrideconditionstack.md new file mode 100644 index 000000000..55ac71c17 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverrideconditionstack.md @@ -0,0 +1,21 @@ +# SyncListResponsePendingPreparedStackOverrideConditionStack + +GCP IAM condition + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackOverrideConditionStack } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackOverrideConditionStack = { + expression: "", + title: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverrideeffect.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverrideeffect.md new file mode 100644 index 000000000..79d294913 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverrideeffect.md @@ -0,0 +1,17 @@ +# SyncListResponsePendingPreparedStackOverrideEffect + +IAM effect. Defaults to Allow. + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackOverrideEffect } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackOverrideEffect = "Allow"; +``` + +## Values + +```typescript +"Allow" | "Deny" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverridegcp.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverridegcp.md new file mode 100644 index 000000000..532931ffc --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverridegcp.md @@ -0,0 +1,23 @@ +# SyncListResponsePendingPreparedStackOverrideGcp + +GCP-specific platform permission configuration + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackOverrideGcp } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackOverrideGcp = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | +| `binding` | [models.SyncListResponsePendingPreparedStackOverrideGcpBinding](../models/synclistresponsependingpreparedstackoverridegcpbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.SyncListResponsePendingPreparedStackOverrideGcpGrant](../models/synclistresponsependingpreparedstackoverridegcpgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverridegcpbinding.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverridegcpbinding.md new file mode 100644 index 000000000..40e6fcd06 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverridegcpbinding.md @@ -0,0 +1,18 @@ +# SyncListResponsePendingPreparedStackOverrideGcpBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackOverrideGcpBinding } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackOverrideGcpBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.SyncListResponsePendingPreparedStackOverrideGcpResource](../models/synclistresponsependingpreparedstackoverridegcpresource.md) | :heavy_minus_sign: | GCP-specific binding specification | +| `stack` | [models.SyncListResponsePendingPreparedStackOverrideGcpStack](../models/synclistresponsependingpreparedstackoverridegcpstack.md) | :heavy_minus_sign: | GCP-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverridegcpgrant.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverridegcpgrant.md new file mode 100644 index 000000000..9cfd6a19a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverridegcpgrant.md @@ -0,0 +1,21 @@ +# SyncListResponsePendingPreparedStackOverrideGcpGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackOverrideGcpGrant } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackOverrideGcpGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverridegcpresource.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverridegcpresource.md new file mode 100644 index 000000000..1b0b9bc51 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverridegcpresource.md @@ -0,0 +1,20 @@ +# SyncListResponsePendingPreparedStackOverrideGcpResource + +GCP-specific binding specification + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackOverrideGcpResource } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackOverrideGcpResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| `condition` | *models.SyncListResponsePendingPreparedStackOverrideResourceConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverridegcpstack.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverridegcpstack.md new file mode 100644 index 000000000..eb1f21470 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverridegcpstack.md @@ -0,0 +1,20 @@ +# SyncListResponsePendingPreparedStackOverrideGcpStack + +GCP-specific binding specification + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackOverrideGcpStack } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackOverrideGcpStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | +| `condition` | *models.SyncListResponsePendingPreparedStackOverrideStackConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverrideplatforms.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverrideplatforms.md new file mode 100644 index 000000000..abbaa48c8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverrideplatforms.md @@ -0,0 +1,19 @@ +# SyncListResponsePendingPreparedStackOverridePlatforms + +Platform-specific permission configurations + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackOverridePlatforms } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackOverridePlatforms = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | +| `aws` | [models.SyncListResponsePendingPreparedStackOverrideAw](../models/synclistresponsependingpreparedstackoverrideaw.md)[] | :heavy_minus_sign: | AWS permission configurations | +| `azure` | [models.SyncListResponsePendingPreparedStackOverrideAzure](../models/synclistresponsependingpreparedstackoverrideazure.md)[] | :heavy_minus_sign: | Azure permission configurations | +| `gcp` | [models.SyncListResponsePendingPreparedStackOverrideGcp](../models/synclistresponsependingpreparedstackoverridegcp.md)[] | :heavy_minus_sign: | GCP permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverrideresourceconditionunion.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverrideresourceconditionunion.md new file mode 100644 index 000000000..24a1748a8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverrideresourceconditionunion.md @@ -0,0 +1,21 @@ +# SyncListResponsePendingPreparedStackOverrideResourceConditionUnion + + +## Supported Types + +### `models.SyncListResponsePendingPreparedStackOverrideConditionResource` + +```typescript +const value: + models.SyncListResponsePendingPreparedStackOverrideConditionResource = { + expression: "", + title: "", + }; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverridestackconditionunion.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverridestackconditionunion.md new file mode 100644 index 000000000..3077e979b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverridestackconditionunion.md @@ -0,0 +1,21 @@ +# SyncListResponsePendingPreparedStackOverrideStackConditionUnion + + +## Supported Types + +### `models.SyncListResponsePendingPreparedStackOverrideConditionStack` + +```typescript +const value: models.SyncListResponsePendingPreparedStackOverrideConditionStack = + { + expression: "", + title: "", + }; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverrideunion.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverrideunion.md new file mode 100644 index 000000000..1d5154bd4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackoverrideunion.md @@ -0,0 +1,23 @@ +# SyncListResponsePendingPreparedStackOverrideUnion + +Reference to a permission set - either by name or inline definition + + +## Supported Types + +### `models.SyncListResponsePendingPreparedStackOverride` + +```typescript +const value: models.SyncListResponsePendingPreparedStackOverride = { + description: "as ack duh", + id: "", + platforms: {}, +}; +``` + +### `string` + +```typescript +const value: string = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackpermissions.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackpermissions.md new file mode 100644 index 000000000..ef787c09f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackpermissions.md @@ -0,0 +1,25 @@ +# SyncListResponsePendingPreparedStackPermissions + +Combined permissions configuration that contains both profiles and management + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackPermissions } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackPermissions = { + profiles: { + "key": { + "key": [], + }, + "key1": {}, + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| `management` | *models.SyncListResponsePendingPreparedStackManagementUnion* | :heavy_minus_sign: | Management permissions configuration for stack management access | +| `profiles` | Record> | :heavy_check_mark: | Permission profiles that define access control for compute services
Key is the profile name, value is the permission configuration | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackplatform.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackplatform.md new file mode 100644 index 000000000..5fdf1eda2 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackplatform.md @@ -0,0 +1,17 @@ +# SyncListResponsePendingPreparedStackPlatform + +Represents the target cloud platform. + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackPlatform } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackPlatform = "azure"; +``` + +## Values + +```typescript +"aws" | "gcp" | "azure" | "kubernetes" | "machines" | "local" | "test" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofile.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofile.md new file mode 100644 index 000000000..c0f0e866b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofile.md @@ -0,0 +1,24 @@ +# SyncListResponsePendingPreparedStackProfile + +A permission set that can be applied across different cloud platforms + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackProfile } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackProfile = { + description: + "whereas spectacles er late seldom absentmindedly experienced where", + id: "", + platforms: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | +| `description` | *string* | :heavy_check_mark: | Human-readable description of what this permission set allows | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the permission set (e.g., "storage/data-read") | +| `platforms` | [models.SyncListResponsePendingPreparedStackProfilePlatforms](../models/synclistresponsependingpreparedstackprofileplatforms.md) | :heavy_check_mark: | Platform-specific permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofileaw.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofileaw.md new file mode 100644 index 000000000..7f8aafaa6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofileaw.md @@ -0,0 +1,24 @@ +# SyncListResponsePendingPreparedStackProfileAw + +AWS-specific platform permission configuration + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackProfileAw } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackProfileAw = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.SyncListResponsePendingPreparedStackProfileAwBinding](../models/synclistresponsependingpreparedstackprofileawbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `effect` | [models.SyncListResponsePendingPreparedStackProfileEffect](../models/synclistresponsependingpreparedstackprofileeffect.md) | :heavy_minus_sign: | IAM effect. Defaults to Allow. | +| `grant` | [models.SyncListResponsePendingPreparedStackProfileAwGrant](../models/synclistresponsependingpreparedstackprofileawgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofileawbinding.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofileawbinding.md new file mode 100644 index 000000000..a06df7c44 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofileawbinding.md @@ -0,0 +1,18 @@ +# SyncListResponsePendingPreparedStackProfileAwBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackProfileAwBinding } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackProfileAwBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.SyncListResponsePendingPreparedStackProfileAwResource](../models/synclistresponsependingpreparedstackprofileawresource.md) | :heavy_minus_sign: | AWS-specific binding specification | +| `stack` | [models.SyncListResponsePendingPreparedStackProfileAwStack](../models/synclistresponsependingpreparedstackprofileawstack.md) | :heavy_minus_sign: | AWS-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofileawgrant.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofileawgrant.md new file mode 100644 index 000000000..92383b9d1 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofileawgrant.md @@ -0,0 +1,21 @@ +# SyncListResponsePendingPreparedStackProfileAwGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackProfileAwGrant } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackProfileAwGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofileawresource.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofileawresource.md new file mode 100644 index 000000000..a1e6ba562 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofileawresource.md @@ -0,0 +1,23 @@ +# SyncListResponsePendingPreparedStackProfileAwResource + +AWS-specific binding specification + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackProfileAwResource } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackProfileAwResource = { + resources: [ + "", + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofileawstack.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofileawstack.md new file mode 100644 index 000000000..5641a0795 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofileawstack.md @@ -0,0 +1,20 @@ +# SyncListResponsePendingPreparedStackProfileAwStack + +AWS-specific binding specification + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackProfileAwStack } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackProfileAwStack = { + resources: [], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofileazure.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofileazure.md new file mode 100644 index 000000000..21469a5fd --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofileazure.md @@ -0,0 +1,23 @@ +# SyncListResponsePendingPreparedStackProfileAzure + +Azure-specific platform permission configuration + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackProfileAzure } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackProfileAzure = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.SyncListResponsePendingPreparedStackProfileAzureBinding](../models/synclistresponsependingpreparedstackprofileazurebinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.SyncListResponsePendingPreparedStackProfileAzureGrant](../models/synclistresponsependingpreparedstackprofileazuregrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofileazurebinding.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofileazurebinding.md new file mode 100644 index 000000000..1cd643e22 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofileazurebinding.md @@ -0,0 +1,18 @@ +# SyncListResponsePendingPreparedStackProfileAzureBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackProfileAzureBinding } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackProfileAzureBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.SyncListResponsePendingPreparedStackProfileAzureResource](../models/synclistresponsependingpreparedstackprofileazureresource.md) | :heavy_minus_sign: | Azure-specific binding specification | +| `stack` | [models.SyncListResponsePendingPreparedStackProfileAzureStack](../models/synclistresponsependingpreparedstackprofileazurestack.md) | :heavy_minus_sign: | Azure-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofileazuregrant.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofileazuregrant.md new file mode 100644 index 000000000..32e3897b3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofileazuregrant.md @@ -0,0 +1,21 @@ +# SyncListResponsePendingPreparedStackProfileAzureGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackProfileAzureGrant } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackProfileAzureGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofileazureresource.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofileazureresource.md new file mode 100644 index 000000000..d704640e2 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofileazureresource.md @@ -0,0 +1,19 @@ +# SyncListResponsePendingPreparedStackProfileAzureResource + +Azure-specific binding specification + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackProfileAzureResource } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackProfileAzureResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofileazurestack.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofileazurestack.md new file mode 100644 index 000000000..91e7d5feb --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofileazurestack.md @@ -0,0 +1,19 @@ +# SyncListResponsePendingPreparedStackProfileAzureStack + +Azure-specific binding specification + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackProfileAzureStack } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackProfileAzureStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofileconditionresource.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofileconditionresource.md new file mode 100644 index 000000000..9edf4c244 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofileconditionresource.md @@ -0,0 +1,21 @@ +# SyncListResponsePendingPreparedStackProfileConditionResource + +GCP IAM condition + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackProfileConditionResource } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackProfileConditionResource = { + expression: "", + title: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofileconditionstack.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofileconditionstack.md new file mode 100644 index 000000000..9b5786900 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofileconditionstack.md @@ -0,0 +1,21 @@ +# SyncListResponsePendingPreparedStackProfileConditionStack + +GCP IAM condition + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackProfileConditionStack } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackProfileConditionStack = { + expression: "", + title: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofileeffect.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofileeffect.md new file mode 100644 index 000000000..d44887463 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofileeffect.md @@ -0,0 +1,17 @@ +# SyncListResponsePendingPreparedStackProfileEffect + +IAM effect. Defaults to Allow. + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackProfileEffect } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackProfileEffect = "Allow"; +``` + +## Values + +```typescript +"Allow" | "Deny" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofilegcp.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofilegcp.md new file mode 100644 index 000000000..b8dfd20be --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofilegcp.md @@ -0,0 +1,23 @@ +# SyncListResponsePendingPreparedStackProfileGcp + +GCP-specific platform permission configuration + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackProfileGcp } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackProfileGcp = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.SyncListResponsePendingPreparedStackProfileGcpBinding](../models/synclistresponsependingpreparedstackprofilegcpbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.SyncListResponsePendingPreparedStackProfileGcpGrant](../models/synclistresponsependingpreparedstackprofilegcpgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofilegcpbinding.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofilegcpbinding.md new file mode 100644 index 000000000..a55b9a0b2 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofilegcpbinding.md @@ -0,0 +1,18 @@ +# SyncListResponsePendingPreparedStackProfileGcpBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackProfileGcpBinding } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackProfileGcpBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | +| `resource` | [models.SyncListResponsePendingPreparedStackProfileGcpResource](../models/synclistresponsependingpreparedstackprofilegcpresource.md) | :heavy_minus_sign: | GCP-specific binding specification | +| `stack` | [models.SyncListResponsePendingPreparedStackProfileGcpStack](../models/synclistresponsependingpreparedstackprofilegcpstack.md) | :heavy_minus_sign: | GCP-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofilegcpgrant.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofilegcpgrant.md new file mode 100644 index 000000000..fe33f855f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofilegcpgrant.md @@ -0,0 +1,21 @@ +# SyncListResponsePendingPreparedStackProfileGcpGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackProfileGcpGrant } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackProfileGcpGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofilegcpresource.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofilegcpresource.md new file mode 100644 index 000000000..12b201bc7 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofilegcpresource.md @@ -0,0 +1,20 @@ +# SyncListResponsePendingPreparedStackProfileGcpResource + +GCP-specific binding specification + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackProfileGcpResource } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackProfileGcpResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `condition` | *models.SyncListResponsePendingPreparedStackProfileResourceConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofilegcpstack.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofilegcpstack.md new file mode 100644 index 000000000..64d4f1333 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofilegcpstack.md @@ -0,0 +1,20 @@ +# SyncListResponsePendingPreparedStackProfileGcpStack + +GCP-specific binding specification + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackProfileGcpStack } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackProfileGcpStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `condition` | *models.SyncListResponsePendingPreparedStackProfileStackConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofileplatforms.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofileplatforms.md new file mode 100644 index 000000000..b5de6e467 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofileplatforms.md @@ -0,0 +1,19 @@ +# SyncListResponsePendingPreparedStackProfilePlatforms + +Platform-specific permission configurations + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackProfilePlatforms } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackProfilePlatforms = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | +| `aws` | [models.SyncListResponsePendingPreparedStackProfileAw](../models/synclistresponsependingpreparedstackprofileaw.md)[] | :heavy_minus_sign: | AWS permission configurations | +| `azure` | [models.SyncListResponsePendingPreparedStackProfileAzure](../models/synclistresponsependingpreparedstackprofileazure.md)[] | :heavy_minus_sign: | Azure permission configurations | +| `gcp` | [models.SyncListResponsePendingPreparedStackProfileGcp](../models/synclistresponsependingpreparedstackprofilegcp.md)[] | :heavy_minus_sign: | GCP permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofileresourceconditionunion.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofileresourceconditionunion.md new file mode 100644 index 000000000..c1e46f793 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofileresourceconditionunion.md @@ -0,0 +1,21 @@ +# SyncListResponsePendingPreparedStackProfileResourceConditionUnion + + +## Supported Types + +### `models.SyncListResponsePendingPreparedStackProfileConditionResource` + +```typescript +const value: + models.SyncListResponsePendingPreparedStackProfileConditionResource = { + expression: "", + title: "", + }; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofilestackconditionunion.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofilestackconditionunion.md new file mode 100644 index 000000000..05debe5ab --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofilestackconditionunion.md @@ -0,0 +1,21 @@ +# SyncListResponsePendingPreparedStackProfileStackConditionUnion + + +## Supported Types + +### `models.SyncListResponsePendingPreparedStackProfileConditionStack` + +```typescript +const value: models.SyncListResponsePendingPreparedStackProfileConditionStack = + { + expression: "", + title: "", + }; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofileunion.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofileunion.md new file mode 100644 index 000000000..4c8fe67a7 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprofileunion.md @@ -0,0 +1,24 @@ +# SyncListResponsePendingPreparedStackProfileUnion + +Reference to a permission set - either by name or inline definition + + +## Supported Types + +### `models.SyncListResponsePendingPreparedStackProfile` + +```typescript +const value: models.SyncListResponsePendingPreparedStackProfile = { + description: + "whereas spectacles er late seldom absentmindedly experienced where", + id: "", + platforms: {}, +}; +``` + +### `string` + +```typescript +const value: string = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprovidedby.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprovidedby.md new file mode 100644 index 000000000..1ecf00f7a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackprovidedby.md @@ -0,0 +1,17 @@ +# SyncListResponsePendingPreparedStackProvidedBy + +Who can provide a stack input value. + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackProvidedBy } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackProvidedBy = "developer"; +``` + +## Values + +```typescript +"developer" | "deployer" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackresources.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackresources.md new file mode 100644 index 000000000..1e0b90de3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackresources.md @@ -0,0 +1,26 @@ +# SyncListResponsePendingPreparedStackResources + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackResources } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackResources = { + config: { + id: "", + type: "", + }, + dependencies: [], + lifecycle: "frozen", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `config` | [models.SyncListResponsePendingPreparedStackConfig](../models/synclistresponsependingpreparedstackconfig.md) | :heavy_check_mark: | 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` | [models.SyncListResponsePendingPreparedStackDependency](../models/synclistresponsependingpreparedstackdependency.md)[] | :heavy_check_mark: | Additional dependencies for this resource beyond those defined in the resource itself.
The total dependencies are: resource.get_dependencies() + this list | +| `enabledWhen` | *string* | :heavy_minus_sign: | 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. | +| `lifecycle` | [models.SyncListResponsePendingPreparedStackLifecycle](../models/synclistresponsependingpreparedstacklifecycle.md) | :heavy_check_mark: | Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. | +| `remoteAccess` | *boolean* | :heavy_minus_sign: | Enable remote bindings for this resource (BYOB use case).
When true, binding params are synced to StackState's `remote_binding_params`.
Default: false (prevents sensitive data in synced state). | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstacksupportedplatform.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstacksupportedplatform.md new file mode 100644 index 000000000..46b04d63e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstacksupportedplatform.md @@ -0,0 +1,17 @@ +# SyncListResponsePendingPreparedStackSupportedPlatform + +Represents the target cloud platform. + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackSupportedPlatform } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackSupportedPlatform = "kubernetes"; +``` + +## Values + +```typescript +"aws" | "gcp" | "azure" | "kubernetes" | "machines" | "local" | "test" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstacktypeboolean.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstacktypeboolean.md new file mode 100644 index 000000000..0a001b257 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstacktypeboolean.md @@ -0,0 +1,15 @@ +# SyncListResponsePendingPreparedStackTypeBoolean + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackTypeBoolean } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackTypeBoolean = "boolean"; +``` + +## Values + +```typescript +"boolean" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstacktypeenvenum.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstacktypeenvenum.md new file mode 100644 index 000000000..7b3ff275d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstacktypeenvenum.md @@ -0,0 +1,17 @@ +# SyncListResponsePendingPreparedStackTypeEnvEnum + +Environment variable handling for a stack input mapping. + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackTypeEnvEnum } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackTypeEnvEnum = "plain"; +``` + +## Values + +```typescript +"plain" | "secret" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstacktypenumber.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstacktypenumber.md new file mode 100644 index 000000000..e0a734081 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstacktypenumber.md @@ -0,0 +1,15 @@ +# SyncListResponsePendingPreparedStackTypeNumber + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackTypeNumber } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackTypeNumber = "number"; +``` + +## Values + +```typescript +"number" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstacktypestring.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstacktypestring.md new file mode 100644 index 000000000..7125a3eda --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstacktypestring.md @@ -0,0 +1,15 @@ +# SyncListResponsePendingPreparedStackTypeString + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackTypeString } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackTypeString = "string"; +``` + +## Values + +```typescript +"string" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstacktypestringlist.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstacktypestringlist.md new file mode 100644 index 000000000..e22c7cdfc --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstacktypestringlist.md @@ -0,0 +1,15 @@ +# SyncListResponsePendingPreparedStackTypeStringList + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackTypeStringList } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackTypeStringList = "stringList"; +``` + +## Values + +```typescript +"stringList" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstacktypeunion.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstacktypeunion.md new file mode 100644 index 000000000..4baa1a667 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstacktypeunion.md @@ -0,0 +1,17 @@ +# SyncListResponsePendingPreparedStackTypeUnion + + +## Supported Types + +### `models.SyncListResponsePendingPreparedStackTypeEnvEnum` + +```typescript +const value: models.SyncListResponsePendingPreparedStackTypeEnvEnum = "secret"; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackunion.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackunion.md new file mode 100644 index 000000000..b6d60392c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackunion.md @@ -0,0 +1,34 @@ +# SyncListResponsePendingPreparedStackUnion + + +## Supported Types + +### `models.SyncListResponsePendingPreparedStack` + +```typescript +const value: models.SyncListResponsePendingPreparedStack = { + id: "", + resources: { + "key": { + config: { + id: "", + type: "", + }, + dependencies: [ + { + id: "", + type: "", + }, + ], + lifecycle: "frozen", + }, + }, +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackvalidation.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackvalidation.md new file mode 100644 index 000000000..4d8b01589 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackvalidation.md @@ -0,0 +1,25 @@ +# SyncListResponsePendingPreparedStackValidation + +Portable stack input validation constraints. + +## Example Usage + +```typescript +import { SyncListResponsePendingPreparedStackValidation } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePendingPreparedStackValidation = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | +| `format` | *string* | :heavy_minus_sign: | Semantic format hint such as url. | +| `max` | *string* | :heavy_minus_sign: | Maximum number. | +| `maxItems` | *number* | :heavy_minus_sign: | Maximum string-list items. | +| `maxLength` | *number* | :heavy_minus_sign: | Maximum string length. | +| `min` | *string* | :heavy_minus_sign: | Minimum number. | +| `minItems` | *number* | :heavy_minus_sign: | Minimum string-list items. | +| `minLength` | *number* | :heavy_minus_sign: | Minimum string length. | +| `pattern` | *string* | :heavy_minus_sign: | Portable whole-value regex pattern. | +| `values` | *string*[] | :heavy_minus_sign: | Allowed string enum values. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackvalidationunion.md b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackvalidationunion.md new file mode 100644 index 000000000..e81559643 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsependingpreparedstackvalidationunion.md @@ -0,0 +1,17 @@ +# SyncListResponsePendingPreparedStackValidationUnion + + +## Supported Types + +### `models.SyncListResponsePendingPreparedStackValidation` + +```typescript +const value: models.SyncListResponsePendingPreparedStackValidation = {}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepermissions.md b/client-sdks/platform/typescript/docs/models/synclistresponsepermissions.md deleted file mode 100644 index bd5a95021..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponsepermissions.md +++ /dev/null @@ -1,20 +0,0 @@ -# SyncListResponsePermissions - -Combined permissions configuration that contains both profiles and management - -## Example Usage - -```typescript -import { SyncListResponsePermissions } from "@alienplatform/platform-api/models"; - -let value: SyncListResponsePermissions = { - profiles: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | -| `management` | *models.SyncListResponseManagementUnion* | :heavy_minus_sign: | Management permissions configuration for stack management access | -| `profiles` | Record> | :heavy_check_mark: | Permission profiles that define access control for compute services
Key is the profile name, value is the permission configuration | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepoolsautoscale.md b/client-sdks/platform/typescript/docs/models/synclistresponsepoolsautoscale.md index b4d2d4c0e..6032bbb31 100644 --- a/client-sdks/platform/typescript/docs/models/synclistresponsepoolsautoscale.md +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepoolsautoscale.md @@ -16,6 +16,7 @@ let value: SyncListResponsePoolsAutoscale = { | Field | Type | Required | Description | | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | +| `failureDomains` | *models.SyncListResponseFailureDomainsUnion2* | :heavy_minus_sign: | N/A | | `machine` | *string* | :heavy_minus_sign: | Provider machine type selected for this deployment. | | `max` | *number* | :heavy_check_mark: | Maximum machine count. | | `min` | *number* | :heavy_check_mark: | Minimum machine count. | diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepoolsfixed.md b/client-sdks/platform/typescript/docs/models/synclistresponsepoolsfixed.md index afeb652a3..538897181 100644 --- a/client-sdks/platform/typescript/docs/models/synclistresponsepoolsfixed.md +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepoolsfixed.md @@ -15,6 +15,7 @@ let value: SyncListResponsePoolsFixed = { | Field | Type | Required | Description | | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | +| `failureDomains` | *models.SyncListResponseFailureDomainsUnion1* | :heavy_minus_sign: | N/A | | `machine` | *string* | :heavy_minus_sign: | Provider machine type selected for this deployment. | | `machines` | *number* | :heavy_check_mark: | Number of machines to run. | | `mode` | *"fixed"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstack.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstack.md index 4ac8d5cbe..89cbad199 100644 --- a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstack.md +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstack.md @@ -15,10 +15,10 @@ let value: SyncListResponsePreparedStack = { ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `id` | *string* | :heavy_check_mark: | Unique identifier for the stack | -| `inputs` | [models.SyncListResponseInput](../models/synclistresponseinput.md)[] | :heavy_minus_sign: | Input definitions required before setup or deployment can proceed. | -| `permissions` | [models.SyncListResponsePermissions](../models/synclistresponsepermissions.md) | :heavy_minus_sign: | Combined permissions configuration that contains both profiles and management | -| `resources` | Record | :heavy_check_mark: | Map of resource IDs to their configurations and lifecycle settings | -| `supportedPlatforms` | [models.SyncListResponseSupportedPlatform](../models/synclistresponsesupportedplatform.md)[] | :heavy_minus_sign: | Which platforms this stack supports. When None, all platforms are supported. | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the stack | +| `inputs` | [models.SyncListResponsePreparedStackInput](../models/synclistresponsepreparedstackinput.md)[] | :heavy_minus_sign: | Input definitions required before setup or deployment can proceed. | +| `permissions` | [models.SyncListResponsePreparedStackPermissions](../models/synclistresponsepreparedstackpermissions.md) | :heavy_minus_sign: | Combined permissions configuration that contains both profiles and management | +| `resources` | Record | :heavy_check_mark: | Map of resource IDs to their configurations and lifecycle settings | +| `supportedPlatforms` | [models.SyncListResponsePreparedStackSupportedPlatform](../models/synclistresponsepreparedstacksupportedplatform.md)[] | :heavy_minus_sign: | Which platforms this stack supports. When None, all platforms are supported. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackdefaultboolean.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackdefaultboolean.md new file mode 100644 index 000000000..ee5211172 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackdefaultboolean.md @@ -0,0 +1,19 @@ +# SyncListResponsePreparedStackDefaultBoolean + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackDefaultBoolean } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackDefaultBoolean = { + type: "boolean", + value: false, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `type` | [models.SyncListResponsePreparedStackTypeBoolean](../models/synclistresponsepreparedstacktypeboolean.md) | :heavy_check_mark: | N/A | +| `value` | *boolean* | :heavy_check_mark: | Boolean default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackdefaultnumber.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackdefaultnumber.md new file mode 100644 index 000000000..3ba264879 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackdefaultnumber.md @@ -0,0 +1,19 @@ +# SyncListResponsePreparedStackDefaultNumber + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackDefaultNumber } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackDefaultNumber = { + type: "number", + value: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | +| `type` | [models.SyncListResponsePreparedStackTypeNumber](../models/synclistresponsepreparedstacktypenumber.md) | :heavy_check_mark: | N/A | +| `value` | *string* | :heavy_check_mark: | Number default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackdefaultstring.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackdefaultstring.md new file mode 100644 index 000000000..e2dbe2576 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackdefaultstring.md @@ -0,0 +1,19 @@ +# SyncListResponsePreparedStackDefaultString + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackDefaultString } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackDefaultString = { + type: "string", + value: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | +| `type` | [models.SyncListResponsePreparedStackTypeString](../models/synclistresponsepreparedstacktypestring.md) | :heavy_check_mark: | N/A | +| `value` | *string* | :heavy_check_mark: | String default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackdefaultstringlist.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackdefaultstringlist.md new file mode 100644 index 000000000..a3e77d762 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackdefaultstringlist.md @@ -0,0 +1,23 @@ +# SyncListResponsePreparedStackDefaultStringList + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackDefaultStringList } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackDefaultStringList = { + type: "stringList", + value: [ + "", + "", + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | +| `type` | [models.SyncListResponsePreparedStackTypeStringList](../models/synclistresponsepreparedstacktypestringlist.md) | :heavy_check_mark: | N/A | +| `value` | *string*[] | :heavy_check_mark: | String list default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackdefaultunion.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackdefaultunion.md new file mode 100644 index 000000000..fab2963b7 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackdefaultunion.md @@ -0,0 +1,51 @@ +# SyncListResponsePreparedStackDefaultUnion + + +## Supported Types + +### `models.SyncListResponsePreparedStackDefaultString` + +```typescript +const value: models.SyncListResponsePreparedStackDefaultString = { + type: "string", + value: "", +}; +``` + +### `models.SyncListResponsePreparedStackDefaultNumber` + +```typescript +const value: models.SyncListResponsePreparedStackDefaultNumber = { + type: "number", + value: "", +}; +``` + +### `models.SyncListResponsePreparedStackDefaultBoolean` + +```typescript +const value: models.SyncListResponsePreparedStackDefaultBoolean = { + type: "boolean", + value: false, +}; +``` + +### `models.SyncListResponsePreparedStackDefaultStringList` + +```typescript +const value: models.SyncListResponsePreparedStackDefaultStringList = { + type: "stringList", + value: [ + "", + "", + "", + ], +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackenv.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackenv.md new file mode 100644 index 000000000..e5593c9c2 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackenv.md @@ -0,0 +1,21 @@ +# SyncListResponsePreparedStackEnv + +How a resolved stack input is injected into runtime environment variables. + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackEnv } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackEnv = { + name: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `name` | *string* | :heavy_check_mark: | Environment variable name. | +| `targetResources` | *string*[] | :heavy_minus_sign: | Target resource IDs or patterns. None means every env-capable resource. | +| `type` | *models.SyncListResponsePreparedStackTypeUnion* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextend.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextend.md new file mode 100644 index 000000000..8699e9145 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextend.md @@ -0,0 +1,23 @@ +# SyncListResponsePreparedStackExtend + +A permission set that can be applied across different cloud platforms + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackExtend } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackExtend = { + description: "why nor cultivated openly trust garage scary hateful waist", + id: "", + platforms: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `description` | *string* | :heavy_check_mark: | Human-readable description of what this permission set allows | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the permission set (e.g., "storage/data-read") | +| `platforms` | [models.SyncListResponsePreparedStackExtendPlatforms](../models/synclistresponsepreparedstackextendplatforms.md) | :heavy_check_mark: | Platform-specific permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendaw.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendaw.md new file mode 100644 index 000000000..d4bffb43c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendaw.md @@ -0,0 +1,24 @@ +# SyncListResponsePreparedStackExtendAw + +AWS-specific platform permission configuration + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackExtendAw } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackExtendAw = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.SyncListResponsePreparedStackExtendAwBinding](../models/synclistresponsepreparedstackextendawbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `effect` | [models.SyncListResponsePreparedStackExtendEffect](../models/synclistresponsepreparedstackextendeffect.md) | :heavy_minus_sign: | IAM effect. Defaults to Allow. | +| `grant` | [models.SyncListResponsePreparedStackExtendAwGrant](../models/synclistresponsepreparedstackextendawgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendawbinding.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendawbinding.md new file mode 100644 index 000000000..18f414a61 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendawbinding.md @@ -0,0 +1,18 @@ +# SyncListResponsePreparedStackExtendAwBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackExtendAwBinding } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackExtendAwBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | +| `resource` | [models.SyncListResponsePreparedStackExtendAwResource](../models/synclistresponsepreparedstackextendawresource.md) | :heavy_minus_sign: | AWS-specific binding specification | +| `stack` | [models.SyncListResponsePreparedStackExtendAwStack](../models/synclistresponsepreparedstackextendawstack.md) | :heavy_minus_sign: | AWS-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendawgrant.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendawgrant.md new file mode 100644 index 000000000..72dc08b2a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendawgrant.md @@ -0,0 +1,21 @@ +# SyncListResponsePreparedStackExtendAwGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackExtendAwGrant } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackExtendAwGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendawresource.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendawresource.md new file mode 100644 index 000000000..4689dd7dc --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendawresource.md @@ -0,0 +1,24 @@ +# SyncListResponsePreparedStackExtendAwResource + +AWS-specific binding specification + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackExtendAwResource } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackExtendAwResource = { + resources: [ + "", + "", + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendawstack.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendawstack.md new file mode 100644 index 000000000..89a0ddd8d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendawstack.md @@ -0,0 +1,23 @@ +# SyncListResponsePreparedStackExtendAwStack + +AWS-specific binding specification + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackExtendAwStack } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackExtendAwStack = { + resources: [ + "", + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendazure.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendazure.md new file mode 100644 index 000000000..4ffc46e83 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendazure.md @@ -0,0 +1,23 @@ +# SyncListResponsePreparedStackExtendAzure + +Azure-specific platform permission configuration + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackExtendAzure } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackExtendAzure = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.SyncListResponsePreparedStackExtendAzureBinding](../models/synclistresponsepreparedstackextendazurebinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.SyncListResponsePreparedStackExtendAzureGrant](../models/synclistresponsepreparedstackextendazuregrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendazurebinding.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendazurebinding.md new file mode 100644 index 000000000..7e1cb4421 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendazurebinding.md @@ -0,0 +1,18 @@ +# SyncListResponsePreparedStackExtendAzureBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackExtendAzureBinding } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackExtendAzureBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | +| `resource` | [models.SyncListResponsePreparedStackExtendAzureResource](../models/synclistresponsepreparedstackextendazureresource.md) | :heavy_minus_sign: | Azure-specific binding specification | +| `stack` | [models.SyncListResponsePreparedStackExtendAzureStack](../models/synclistresponsepreparedstackextendazurestack.md) | :heavy_minus_sign: | Azure-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendazuregrant.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendazuregrant.md new file mode 100644 index 000000000..a7472a8ef --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendazuregrant.md @@ -0,0 +1,21 @@ +# SyncListResponsePreparedStackExtendAzureGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackExtendAzureGrant } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackExtendAzureGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendazureresource.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendazureresource.md new file mode 100644 index 000000000..3efd17682 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendazureresource.md @@ -0,0 +1,19 @@ +# SyncListResponsePreparedStackExtendAzureResource + +Azure-specific binding specification + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackExtendAzureResource } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackExtendAzureResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendazurestack.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendazurestack.md new file mode 100644 index 000000000..a08443e1d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendazurestack.md @@ -0,0 +1,19 @@ +# SyncListResponsePreparedStackExtendAzureStack + +Azure-specific binding specification + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackExtendAzureStack } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackExtendAzureStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendconditionresource.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendconditionresource.md new file mode 100644 index 000000000..855636644 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendconditionresource.md @@ -0,0 +1,21 @@ +# SyncListResponsePreparedStackExtendConditionResource + +GCP IAM condition + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackExtendConditionResource } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackExtendConditionResource = { + expression: "", + title: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendconditionstack.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendconditionstack.md new file mode 100644 index 000000000..c8c403c31 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendconditionstack.md @@ -0,0 +1,21 @@ +# SyncListResponsePreparedStackExtendConditionStack + +GCP IAM condition + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackExtendConditionStack } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackExtendConditionStack = { + expression: "", + title: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendeffect.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendeffect.md new file mode 100644 index 000000000..8744d2729 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendeffect.md @@ -0,0 +1,17 @@ +# SyncListResponsePreparedStackExtendEffect + +IAM effect. Defaults to Allow. + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackExtendEffect } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackExtendEffect = "Allow"; +``` + +## Values + +```typescript +"Allow" | "Deny" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendgcp.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendgcp.md new file mode 100644 index 000000000..096c06431 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendgcp.md @@ -0,0 +1,23 @@ +# SyncListResponsePreparedStackExtendGcp + +GCP-specific platform permission configuration + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackExtendGcp } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackExtendGcp = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | +| `binding` | [models.SyncListResponsePreparedStackExtendGcpBinding](../models/synclistresponsepreparedstackextendgcpbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.SyncListResponsePreparedStackExtendGcpGrant](../models/synclistresponsepreparedstackextendgcpgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendgcpbinding.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendgcpbinding.md new file mode 100644 index 000000000..32cd007c3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendgcpbinding.md @@ -0,0 +1,18 @@ +# SyncListResponsePreparedStackExtendGcpBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackExtendGcpBinding } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackExtendGcpBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.SyncListResponsePreparedStackExtendGcpResource](../models/synclistresponsepreparedstackextendgcpresource.md) | :heavy_minus_sign: | GCP-specific binding specification | +| `stack` | [models.SyncListResponsePreparedStackExtendGcpStack](../models/synclistresponsepreparedstackextendgcpstack.md) | :heavy_minus_sign: | GCP-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendgcpgrant.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendgcpgrant.md new file mode 100644 index 000000000..cd5cd06db --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendgcpgrant.md @@ -0,0 +1,21 @@ +# SyncListResponsePreparedStackExtendGcpGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackExtendGcpGrant } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackExtendGcpGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendgcpresource.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendgcpresource.md new file mode 100644 index 000000000..69680b249 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendgcpresource.md @@ -0,0 +1,20 @@ +# SyncListResponsePreparedStackExtendGcpResource + +GCP-specific binding specification + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackExtendGcpResource } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackExtendGcpResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `condition` | *models.SyncListResponsePreparedStackExtendResourceConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendgcpstack.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendgcpstack.md new file mode 100644 index 000000000..f044a61d3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendgcpstack.md @@ -0,0 +1,20 @@ +# SyncListResponsePreparedStackExtendGcpStack + +GCP-specific binding specification + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackExtendGcpStack } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackExtendGcpStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | +| `condition` | *models.SyncListResponsePreparedStackExtendStackConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendplatforms.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendplatforms.md new file mode 100644 index 000000000..a945321f1 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendplatforms.md @@ -0,0 +1,19 @@ +# SyncListResponsePreparedStackExtendPlatforms + +Platform-specific permission configurations + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackExtendPlatforms } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackExtendPlatforms = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | +| `aws` | [models.SyncListResponsePreparedStackExtendAw](../models/synclistresponsepreparedstackextendaw.md)[] | :heavy_minus_sign: | AWS permission configurations | +| `azure` | [models.SyncListResponsePreparedStackExtendAzure](../models/synclistresponsepreparedstackextendazure.md)[] | :heavy_minus_sign: | Azure permission configurations | +| `gcp` | [models.SyncListResponsePreparedStackExtendGcp](../models/synclistresponsepreparedstackextendgcp.md)[] | :heavy_minus_sign: | GCP permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendresourceconditionunion.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendresourceconditionunion.md new file mode 100644 index 000000000..7ba97ea5a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendresourceconditionunion.md @@ -0,0 +1,20 @@ +# SyncListResponsePreparedStackExtendResourceConditionUnion + + +## Supported Types + +### `models.SyncListResponsePreparedStackExtendConditionResource` + +```typescript +const value: models.SyncListResponsePreparedStackExtendConditionResource = { + expression: "", + title: "", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendstackconditionunion.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendstackconditionunion.md new file mode 100644 index 000000000..9388a268d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendstackconditionunion.md @@ -0,0 +1,20 @@ +# SyncListResponsePreparedStackExtendStackConditionUnion + + +## Supported Types + +### `models.SyncListResponsePreparedStackExtendConditionStack` + +```typescript +const value: models.SyncListResponsePreparedStackExtendConditionStack = { + expression: "", + title: "", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendunion.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendunion.md new file mode 100644 index 000000000..ae64529e4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackextendunion.md @@ -0,0 +1,23 @@ +# SyncListResponsePreparedStackExtendUnion + +Reference to a permission set - either by name or inline definition + + +## Supported Types + +### `models.SyncListResponsePreparedStackExtend` + +```typescript +const value: models.SyncListResponsePreparedStackExtend = { + description: "why nor cultivated openly trust garage scary hateful waist", + id: "", + platforms: {}, +}; +``` + +### `string` + +```typescript +const value: string = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackinput.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackinput.md new file mode 100644 index 000000000..66a993473 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackinput.md @@ -0,0 +1,34 @@ +# SyncListResponsePreparedStackInput + +Stack input definition serialized into a release stack. + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackInput } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackInput = { + description: "or calculus vision via buttery times", + id: "", + kind: "boolean", + label: "", + providedBy: [], + required: false, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `default` | *models.SyncListResponsePreparedStackDefaultUnion* | :heavy_minus_sign: | N/A | +| `description` | *string* | :heavy_check_mark: | Human-facing helper text. | +| `env` | [models.SyncListResponsePreparedStackEnv](../models/synclistresponsepreparedstackenv.md)[] | :heavy_minus_sign: | Runtime env-var mappings for v1 input resolution. | +| `id` | *string* | :heavy_check_mark: | Stable input ID used by CLI/API calls. | +| `kind` | [models.SyncListResponsePreparedStackKind](../models/synclistresponsepreparedstackkind.md) | :heavy_check_mark: | Primitive stack input kind. | +| `label` | *string* | :heavy_check_mark: | Human-facing field label. | +| `placeholder` | *string* | :heavy_minus_sign: | Example placeholder shown in UI. | +| `platforms` | [models.SyncListResponsePreparedStackPlatform](../models/synclistresponsepreparedstackplatform.md)[] | :heavy_minus_sign: | Platforms where this input applies. | +| `providedBy` | [models.SyncListResponsePreparedStackProvidedBy](../models/synclistresponsepreparedstackprovidedby.md)[] | :heavy_check_mark: | Who can provide this value. | +| `required` | *boolean* | :heavy_check_mark: | Whether a resolved value is required before deployment can proceed. | +| `validation` | *models.SyncListResponsePreparedStackValidationUnion* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackkind.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackkind.md new file mode 100644 index 000000000..31916cf51 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackkind.md @@ -0,0 +1,17 @@ +# SyncListResponsePreparedStackKind + +Primitive stack input kind. + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackKind } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackKind = "boolean"; +``` + +## Values + +```typescript +"string" | "secret" | "number" | "integer" | "boolean" | "enum" | "stringList" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackmanagement1.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackmanagement1.md new file mode 100644 index 000000000..f7ed73414 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackmanagement1.md @@ -0,0 +1,22 @@ +# SyncListResponsePreparedStackManagement1 + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackManagement1 } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackManagement1 = { + extend: { + "key": [ + "", + ], + "key1": [], + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | +| `extend` | Record | :heavy_check_mark: | Permission profile that maps resources to permission sets
Key can be "*" for all resources or resource name for specific resource | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackmanagement2.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackmanagement2.md new file mode 100644 index 000000000..94ecc8182 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackmanagement2.md @@ -0,0 +1,17 @@ +# SyncListResponsePreparedStackManagement2 + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackManagement2 } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackManagement2 = { + override: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | +| `override` | Record | :heavy_check_mark: | Permission profile that maps resources to permission sets
Key can be "*" for all resources or resource name for specific resource | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackmanagementenum.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackmanagementenum.md new file mode 100644 index 000000000..77fb3f690 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackmanagementenum.md @@ -0,0 +1,15 @@ +# SyncListResponsePreparedStackManagementEnum + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackManagementEnum } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackManagementEnum = "auto"; +``` + +## Values + +```typescript +"auto" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackmanagementunion.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackmanagementunion.md new file mode 100644 index 000000000..f5ed3fee3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackmanagementunion.md @@ -0,0 +1,34 @@ +# SyncListResponsePreparedStackManagementUnion + +Management permissions configuration for stack management access + + +## Supported Types + +### `models.SyncListResponsePreparedStackManagement1` + +```typescript +const value: models.SyncListResponsePreparedStackManagement1 = { + extend: { + "key": [ + "", + ], + "key1": [], + }, +}; +``` + +### `models.SyncListResponsePreparedStackManagement2` + +```typescript +const value: models.SyncListResponsePreparedStackManagement2 = { + override: {}, +}; +``` + +### `models.SyncListResponsePreparedStackManagementEnum` + +```typescript +const value: models.SyncListResponsePreparedStackManagementEnum = "auto"; +``` + diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverride.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverride.md new file mode 100644 index 000000000..66e90e1b5 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverride.md @@ -0,0 +1,24 @@ +# SyncListResponsePreparedStackOverride + +A permission set that can be applied across different cloud platforms + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackOverride } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackOverride = { + description: + "circa as armchair jiggle fictionalize devise consequently acceptable concerning fraternise", + id: "", + platforms: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `description` | *string* | :heavy_check_mark: | Human-readable description of what this permission set allows | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the permission set (e.g., "storage/data-read") | +| `platforms` | [models.SyncListResponsePreparedStackOverridePlatforms](../models/synclistresponsepreparedstackoverrideplatforms.md) | :heavy_check_mark: | Platform-specific permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverrideaw.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverrideaw.md new file mode 100644 index 000000000..3b2c2be4f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverrideaw.md @@ -0,0 +1,24 @@ +# SyncListResponsePreparedStackOverrideAw + +AWS-specific platform permission configuration + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackOverrideAw } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackOverrideAw = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.SyncListResponsePreparedStackOverrideAwBinding](../models/synclistresponsepreparedstackoverrideawbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `effect` | [models.SyncListResponsePreparedStackOverrideEffect](../models/synclistresponsepreparedstackoverrideeffect.md) | :heavy_minus_sign: | IAM effect. Defaults to Allow. | +| `grant` | [models.SyncListResponsePreparedStackOverrideAwGrant](../models/synclistresponsepreparedstackoverrideawgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverrideawbinding.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverrideawbinding.md new file mode 100644 index 000000000..d3cc7553e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverrideawbinding.md @@ -0,0 +1,18 @@ +# SyncListResponsePreparedStackOverrideAwBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackOverrideAwBinding } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackOverrideAwBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.SyncListResponsePreparedStackOverrideAwResource](../models/synclistresponsepreparedstackoverrideawresource.md) | :heavy_minus_sign: | AWS-specific binding specification | +| `stack` | [models.SyncListResponsePreparedStackOverrideAwStack](../models/synclistresponsepreparedstackoverrideawstack.md) | :heavy_minus_sign: | AWS-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverrideawgrant.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverrideawgrant.md new file mode 100644 index 000000000..52a398097 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverrideawgrant.md @@ -0,0 +1,21 @@ +# SyncListResponsePreparedStackOverrideAwGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackOverrideAwGrant } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackOverrideAwGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverrideawresource.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverrideawresource.md new file mode 100644 index 000000000..6ea5d6974 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverrideawresource.md @@ -0,0 +1,23 @@ +# SyncListResponsePreparedStackOverrideAwResource + +AWS-specific binding specification + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackOverrideAwResource } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackOverrideAwResource = { + resources: [ + "", + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverrideawstack.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverrideawstack.md new file mode 100644 index 000000000..3970c3fd2 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverrideawstack.md @@ -0,0 +1,24 @@ +# SyncListResponsePreparedStackOverrideAwStack + +AWS-specific binding specification + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackOverrideAwStack } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackOverrideAwStack = { + resources: [ + "", + "", + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverrideazure.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverrideazure.md new file mode 100644 index 000000000..c69c1f29d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverrideazure.md @@ -0,0 +1,23 @@ +# SyncListResponsePreparedStackOverrideAzure + +Azure-specific platform permission configuration + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackOverrideAzure } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackOverrideAzure = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.SyncListResponsePreparedStackOverrideAzureBinding](../models/synclistresponsepreparedstackoverrideazurebinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.SyncListResponsePreparedStackOverrideAzureGrant](../models/synclistresponsepreparedstackoverrideazuregrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverrideazurebinding.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverrideazurebinding.md new file mode 100644 index 000000000..eaa05199b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverrideazurebinding.md @@ -0,0 +1,18 @@ +# SyncListResponsePreparedStackOverrideAzureBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackOverrideAzureBinding } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackOverrideAzureBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.SyncListResponsePreparedStackOverrideAzureResource](../models/synclistresponsepreparedstackoverrideazureresource.md) | :heavy_minus_sign: | Azure-specific binding specification | +| `stack` | [models.SyncListResponsePreparedStackOverrideAzureStack](../models/synclistresponsepreparedstackoverrideazurestack.md) | :heavy_minus_sign: | Azure-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverrideazuregrant.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverrideazuregrant.md new file mode 100644 index 000000000..b57d2bf87 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverrideazuregrant.md @@ -0,0 +1,21 @@ +# SyncListResponsePreparedStackOverrideAzureGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackOverrideAzureGrant } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackOverrideAzureGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverrideazureresource.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverrideazureresource.md new file mode 100644 index 000000000..00ef78ef8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverrideazureresource.md @@ -0,0 +1,19 @@ +# SyncListResponsePreparedStackOverrideAzureResource + +Azure-specific binding specification + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackOverrideAzureResource } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackOverrideAzureResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverrideazurestack.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverrideazurestack.md new file mode 100644 index 000000000..ab78b9cc4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverrideazurestack.md @@ -0,0 +1,19 @@ +# SyncListResponsePreparedStackOverrideAzureStack + +Azure-specific binding specification + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackOverrideAzureStack } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackOverrideAzureStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverrideconditionresource.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverrideconditionresource.md new file mode 100644 index 000000000..3e6ddfd4c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverrideconditionresource.md @@ -0,0 +1,21 @@ +# SyncListResponsePreparedStackOverrideConditionResource + +GCP IAM condition + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackOverrideConditionResource } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackOverrideConditionResource = { + expression: "", + title: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverrideconditionstack.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverrideconditionstack.md new file mode 100644 index 000000000..89616101b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverrideconditionstack.md @@ -0,0 +1,21 @@ +# SyncListResponsePreparedStackOverrideConditionStack + +GCP IAM condition + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackOverrideConditionStack } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackOverrideConditionStack = { + expression: "", + title: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverrideeffect.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverrideeffect.md new file mode 100644 index 000000000..e4004fc50 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverrideeffect.md @@ -0,0 +1,17 @@ +# SyncListResponsePreparedStackOverrideEffect + +IAM effect. Defaults to Allow. + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackOverrideEffect } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackOverrideEffect = "Deny"; +``` + +## Values + +```typescript +"Allow" | "Deny" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverridegcp.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverridegcp.md new file mode 100644 index 000000000..50d7ca221 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverridegcp.md @@ -0,0 +1,23 @@ +# SyncListResponsePreparedStackOverrideGcp + +GCP-specific platform permission configuration + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackOverrideGcp } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackOverrideGcp = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.SyncListResponsePreparedStackOverrideGcpBinding](../models/synclistresponsepreparedstackoverridegcpbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.SyncListResponsePreparedStackOverrideGcpGrant](../models/synclistresponsepreparedstackoverridegcpgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverridegcpbinding.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverridegcpbinding.md new file mode 100644 index 000000000..43e3fcc7e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverridegcpbinding.md @@ -0,0 +1,18 @@ +# SyncListResponsePreparedStackOverrideGcpBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackOverrideGcpBinding } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackOverrideGcpBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | +| `resource` | [models.SyncListResponsePreparedStackOverrideGcpResource](../models/synclistresponsepreparedstackoverridegcpresource.md) | :heavy_minus_sign: | GCP-specific binding specification | +| `stack` | [models.SyncListResponsePreparedStackOverrideGcpStack](../models/synclistresponsepreparedstackoverridegcpstack.md) | :heavy_minus_sign: | GCP-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverridegcpgrant.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverridegcpgrant.md new file mode 100644 index 000000000..e3fe6f07f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverridegcpgrant.md @@ -0,0 +1,21 @@ +# SyncListResponsePreparedStackOverrideGcpGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackOverrideGcpGrant } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackOverrideGcpGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverridegcpresource.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverridegcpresource.md new file mode 100644 index 000000000..860093917 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverridegcpresource.md @@ -0,0 +1,20 @@ +# SyncListResponsePreparedStackOverrideGcpResource + +GCP-specific binding specification + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackOverrideGcpResource } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackOverrideGcpResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `condition` | *models.SyncListResponsePreparedStackOverrideResourceConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverridegcpstack.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverridegcpstack.md new file mode 100644 index 000000000..85c150c0f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverridegcpstack.md @@ -0,0 +1,20 @@ +# SyncListResponsePreparedStackOverrideGcpStack + +GCP-specific binding specification + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackOverrideGcpStack } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackOverrideGcpStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | +| `condition` | *models.SyncListResponsePreparedStackOverrideStackConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverrideplatforms.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverrideplatforms.md new file mode 100644 index 000000000..002eb9771 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverrideplatforms.md @@ -0,0 +1,19 @@ +# SyncListResponsePreparedStackOverridePlatforms + +Platform-specific permission configurations + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackOverridePlatforms } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackOverridePlatforms = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | +| `aws` | [models.SyncListResponsePreparedStackOverrideAw](../models/synclistresponsepreparedstackoverrideaw.md)[] | :heavy_minus_sign: | AWS permission configurations | +| `azure` | [models.SyncListResponsePreparedStackOverrideAzure](../models/synclistresponsepreparedstackoverrideazure.md)[] | :heavy_minus_sign: | Azure permission configurations | +| `gcp` | [models.SyncListResponsePreparedStackOverrideGcp](../models/synclistresponsepreparedstackoverridegcp.md)[] | :heavy_minus_sign: | GCP permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverrideresourceconditionunion.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverrideresourceconditionunion.md new file mode 100644 index 000000000..a3e2f5301 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverrideresourceconditionunion.md @@ -0,0 +1,20 @@ +# SyncListResponsePreparedStackOverrideResourceConditionUnion + + +## Supported Types + +### `models.SyncListResponsePreparedStackOverrideConditionResource` + +```typescript +const value: models.SyncListResponsePreparedStackOverrideConditionResource = { + expression: "", + title: "", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverridestackconditionunion.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverridestackconditionunion.md new file mode 100644 index 000000000..bb0b28662 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverridestackconditionunion.md @@ -0,0 +1,20 @@ +# SyncListResponsePreparedStackOverrideStackConditionUnion + + +## Supported Types + +### `models.SyncListResponsePreparedStackOverrideConditionStack` + +```typescript +const value: models.SyncListResponsePreparedStackOverrideConditionStack = { + expression: "", + title: "", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverrideunion.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverrideunion.md new file mode 100644 index 000000000..fb009ec50 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackoverrideunion.md @@ -0,0 +1,24 @@ +# SyncListResponsePreparedStackOverrideUnion + +Reference to a permission set - either by name or inline definition + + +## Supported Types + +### `models.SyncListResponsePreparedStackOverride` + +```typescript +const value: models.SyncListResponsePreparedStackOverride = { + description: + "circa as armchair jiggle fictionalize devise consequently acceptable concerning fraternise", + id: "", + platforms: {}, +}; +``` + +### `string` + +```typescript +const value: string = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackpermissions.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackpermissions.md new file mode 100644 index 000000000..f8a1684ff --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackpermissions.md @@ -0,0 +1,24 @@ +# SyncListResponsePreparedStackPermissions + +Combined permissions configuration that contains both profiles and management + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackPermissions } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackPermissions = { + profiles: { + "key": { + "key": [], + }, + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| `management` | *models.SyncListResponsePreparedStackManagementUnion* | :heavy_minus_sign: | Management permissions configuration for stack management access | +| `profiles` | Record> | :heavy_check_mark: | Permission profiles that define access control for compute services
Key is the profile name, value is the permission configuration | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofile.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofile.md new file mode 100644 index 000000000..c74e29fa5 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofile.md @@ -0,0 +1,24 @@ +# SyncListResponsePreparedStackProfile + +A permission set that can be applied across different cloud platforms + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackProfile } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackProfile = { + description: + "an joyously sternly colorize zowie puff till trusting ick until", + id: "", + platforms: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | +| `description` | *string* | :heavy_check_mark: | Human-readable description of what this permission set allows | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the permission set (e.g., "storage/data-read") | +| `platforms` | [models.SyncListResponsePreparedStackProfilePlatforms](../models/synclistresponsepreparedstackprofileplatforms.md) | :heavy_check_mark: | Platform-specific permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofileaw.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofileaw.md new file mode 100644 index 000000000..70f2497b4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofileaw.md @@ -0,0 +1,24 @@ +# SyncListResponsePreparedStackProfileAw + +AWS-specific platform permission configuration + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackProfileAw } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackProfileAw = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | +| `binding` | [models.SyncListResponsePreparedStackProfileAwBinding](../models/synclistresponsepreparedstackprofileawbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `effect` | [models.SyncListResponsePreparedStackProfileEffect](../models/synclistresponsepreparedstackprofileeffect.md) | :heavy_minus_sign: | IAM effect. Defaults to Allow. | +| `grant` | [models.SyncListResponsePreparedStackProfileAwGrant](../models/synclistresponsepreparedstackprofileawgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofileawbinding.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofileawbinding.md new file mode 100644 index 000000000..df92aebd8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofileawbinding.md @@ -0,0 +1,18 @@ +# SyncListResponsePreparedStackProfileAwBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackProfileAwBinding } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackProfileAwBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.SyncListResponsePreparedStackProfileAwResource](../models/synclistresponsepreparedstackprofileawresource.md) | :heavy_minus_sign: | AWS-specific binding specification | +| `stack` | [models.SyncListResponsePreparedStackProfileAwStack](../models/synclistresponsepreparedstackprofileawstack.md) | :heavy_minus_sign: | AWS-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofileawgrant.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofileawgrant.md new file mode 100644 index 000000000..38eab0eed --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofileawgrant.md @@ -0,0 +1,21 @@ +# SyncListResponsePreparedStackProfileAwGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackProfileAwGrant } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackProfileAwGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofileawresource.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofileawresource.md new file mode 100644 index 000000000..6f60cbdff --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofileawresource.md @@ -0,0 +1,22 @@ +# SyncListResponsePreparedStackProfileAwResource + +AWS-specific binding specification + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackProfileAwResource } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackProfileAwResource = { + resources: [ + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofileawstack.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofileawstack.md new file mode 100644 index 000000000..b81b193e0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofileawstack.md @@ -0,0 +1,24 @@ +# SyncListResponsePreparedStackProfileAwStack + +AWS-specific binding specification + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackProfileAwStack } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackProfileAwStack = { + resources: [ + "", + "", + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofileazure.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofileazure.md new file mode 100644 index 000000000..e3de20129 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofileazure.md @@ -0,0 +1,23 @@ +# SyncListResponsePreparedStackProfileAzure + +Azure-specific platform permission configuration + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackProfileAzure } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackProfileAzure = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | +| `binding` | [models.SyncListResponsePreparedStackProfileAzureBinding](../models/synclistresponsepreparedstackprofileazurebinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.SyncListResponsePreparedStackProfileAzureGrant](../models/synclistresponsepreparedstackprofileazuregrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofileazurebinding.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofileazurebinding.md new file mode 100644 index 000000000..ac48e1d51 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofileazurebinding.md @@ -0,0 +1,18 @@ +# SyncListResponsePreparedStackProfileAzureBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackProfileAzureBinding } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackProfileAzureBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.SyncListResponsePreparedStackProfileAzureResource](../models/synclistresponsepreparedstackprofileazureresource.md) | :heavy_minus_sign: | Azure-specific binding specification | +| `stack` | [models.SyncListResponsePreparedStackProfileAzureStack](../models/synclistresponsepreparedstackprofileazurestack.md) | :heavy_minus_sign: | Azure-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofileazuregrant.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofileazuregrant.md new file mode 100644 index 000000000..639bff2a6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofileazuregrant.md @@ -0,0 +1,21 @@ +# SyncListResponsePreparedStackProfileAzureGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackProfileAzureGrant } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackProfileAzureGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofileazureresource.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofileazureresource.md new file mode 100644 index 000000000..8b4fde022 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofileazureresource.md @@ -0,0 +1,19 @@ +# SyncListResponsePreparedStackProfileAzureResource + +Azure-specific binding specification + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackProfileAzureResource } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackProfileAzureResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofileazurestack.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofileazurestack.md new file mode 100644 index 000000000..29d144bb3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofileazurestack.md @@ -0,0 +1,19 @@ +# SyncListResponsePreparedStackProfileAzureStack + +Azure-specific binding specification + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackProfileAzureStack } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackProfileAzureStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofileconditionresource.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofileconditionresource.md new file mode 100644 index 000000000..5103919fd --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofileconditionresource.md @@ -0,0 +1,21 @@ +# SyncListResponsePreparedStackProfileConditionResource + +GCP IAM condition + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackProfileConditionResource } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackProfileConditionResource = { + expression: "", + title: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofileconditionstack.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofileconditionstack.md new file mode 100644 index 000000000..9760ee18a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofileconditionstack.md @@ -0,0 +1,21 @@ +# SyncListResponsePreparedStackProfileConditionStack + +GCP IAM condition + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackProfileConditionStack } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackProfileConditionStack = { + expression: "", + title: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofileeffect.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofileeffect.md new file mode 100644 index 000000000..b88b51e10 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofileeffect.md @@ -0,0 +1,17 @@ +# SyncListResponsePreparedStackProfileEffect + +IAM effect. Defaults to Allow. + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackProfileEffect } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackProfileEffect = "Allow"; +``` + +## Values + +```typescript +"Allow" | "Deny" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofilegcp.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofilegcp.md new file mode 100644 index 000000000..f42099dcb --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofilegcp.md @@ -0,0 +1,23 @@ +# SyncListResponsePreparedStackProfileGcp + +GCP-specific platform permission configuration + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackProfileGcp } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackProfileGcp = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.SyncListResponsePreparedStackProfileGcpBinding](../models/synclistresponsepreparedstackprofilegcpbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.SyncListResponsePreparedStackProfileGcpGrant](../models/synclistresponsepreparedstackprofilegcpgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofilegcpbinding.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofilegcpbinding.md new file mode 100644 index 000000000..545362ad6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofilegcpbinding.md @@ -0,0 +1,18 @@ +# SyncListResponsePreparedStackProfileGcpBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackProfileGcpBinding } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackProfileGcpBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.SyncListResponsePreparedStackProfileGcpResource](../models/synclistresponsepreparedstackprofilegcpresource.md) | :heavy_minus_sign: | GCP-specific binding specification | +| `stack` | [models.SyncListResponsePreparedStackProfileGcpStack](../models/synclistresponsepreparedstackprofilegcpstack.md) | :heavy_minus_sign: | GCP-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofilegcpgrant.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofilegcpgrant.md new file mode 100644 index 000000000..86f4cc5e5 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofilegcpgrant.md @@ -0,0 +1,21 @@ +# SyncListResponsePreparedStackProfileGcpGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackProfileGcpGrant } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackProfileGcpGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofilegcpresource.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofilegcpresource.md new file mode 100644 index 000000000..5a840ee3f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofilegcpresource.md @@ -0,0 +1,20 @@ +# SyncListResponsePreparedStackProfileGcpResource + +GCP-specific binding specification + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackProfileGcpResource } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackProfileGcpResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `condition` | *models.SyncListResponsePreparedStackProfileResourceConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofilegcpstack.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofilegcpstack.md new file mode 100644 index 000000000..0099b8967 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofilegcpstack.md @@ -0,0 +1,20 @@ +# SyncListResponsePreparedStackProfileGcpStack + +GCP-specific binding specification + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackProfileGcpStack } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackProfileGcpStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | +| `condition` | *models.SyncListResponsePreparedStackProfileStackConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofileplatforms.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofileplatforms.md new file mode 100644 index 000000000..2d46d491b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofileplatforms.md @@ -0,0 +1,19 @@ +# SyncListResponsePreparedStackProfilePlatforms + +Platform-specific permission configurations + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackProfilePlatforms } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackProfilePlatforms = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | +| `aws` | [models.SyncListResponsePreparedStackProfileAw](../models/synclistresponsepreparedstackprofileaw.md)[] | :heavy_minus_sign: | AWS permission configurations | +| `azure` | [models.SyncListResponsePreparedStackProfileAzure](../models/synclistresponsepreparedstackprofileazure.md)[] | :heavy_minus_sign: | Azure permission configurations | +| `gcp` | [models.SyncListResponsePreparedStackProfileGcp](../models/synclistresponsepreparedstackprofilegcp.md)[] | :heavy_minus_sign: | GCP permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofileresourceconditionunion.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofileresourceconditionunion.md new file mode 100644 index 000000000..7d6bb73b7 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofileresourceconditionunion.md @@ -0,0 +1,20 @@ +# SyncListResponsePreparedStackProfileResourceConditionUnion + + +## Supported Types + +### `models.SyncListResponsePreparedStackProfileConditionResource` + +```typescript +const value: models.SyncListResponsePreparedStackProfileConditionResource = { + expression: "", + title: "", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofilestackconditionunion.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofilestackconditionunion.md new file mode 100644 index 000000000..0ac8882a2 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofilestackconditionunion.md @@ -0,0 +1,20 @@ +# SyncListResponsePreparedStackProfileStackConditionUnion + + +## Supported Types + +### `models.SyncListResponsePreparedStackProfileConditionStack` + +```typescript +const value: models.SyncListResponsePreparedStackProfileConditionStack = { + expression: "", + title: "", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofileunion.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofileunion.md new file mode 100644 index 000000000..ae19db626 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprofileunion.md @@ -0,0 +1,24 @@ +# SyncListResponsePreparedStackProfileUnion + +Reference to a permission set - either by name or inline definition + + +## Supported Types + +### `models.SyncListResponsePreparedStackProfile` + +```typescript +const value: models.SyncListResponsePreparedStackProfile = { + description: + "an joyously sternly colorize zowie puff till trusting ick until", + id: "", + platforms: {}, +}; +``` + +### `string` + +```typescript +const value: string = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprovidedby.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprovidedby.md new file mode 100644 index 000000000..5c58e4bcb --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackprovidedby.md @@ -0,0 +1,17 @@ +# SyncListResponsePreparedStackProvidedBy + +Who can provide a stack input value. + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackProvidedBy } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackProvidedBy = "developer"; +``` + +## Values + +```typescript +"developer" | "deployer" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackresources.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackresources.md index f041dd3ff..caad6e3f0 100644 --- a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackresources.md +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackresources.md @@ -17,9 +17,10 @@ let value: SyncListResponsePreparedStackResources = { ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `config` | [models.SyncListResponsePreparedStackConfig](../models/synclistresponsepreparedstackconfig.md) | :heavy_check_mark: | 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` | [models.SyncListResponsePreparedStackDependency](../models/synclistresponsepreparedstackdependency.md)[] | :heavy_check_mark: | Additional dependencies for this resource beyond those defined in the resource itself.
The total dependencies are: resource.get_dependencies() + this list | -| `lifecycle` | [models.SyncListResponsePreparedStackLifecycle](../models/synclistresponsepreparedstacklifecycle.md) | :heavy_check_mark: | Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. | -| `remoteAccess` | *boolean* | :heavy_minus_sign: | Enable remote bindings for this resource (BYOB use case).
When true, binding params are synced to StackState's `remote_binding_params`.
Default: false (prevents sensitive data in synced state). | \ No newline at end of file +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `config` | [models.SyncListResponsePreparedStackConfig](../models/synclistresponsepreparedstackconfig.md) | :heavy_check_mark: | 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` | [models.SyncListResponsePreparedStackDependency](../models/synclistresponsepreparedstackdependency.md)[] | :heavy_check_mark: | Additional dependencies for this resource beyond those defined in the resource itself.
The total dependencies are: resource.get_dependencies() + this list | +| `enabledWhen` | *string* | :heavy_minus_sign: | 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. | +| `lifecycle` | [models.SyncListResponsePreparedStackLifecycle](../models/synclistresponsepreparedstacklifecycle.md) | :heavy_check_mark: | Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. | +| `remoteAccess` | *boolean* | :heavy_minus_sign: | Enable remote bindings for this resource (BYOB use case).
When true, binding params are synced to StackState's `remote_binding_params`.
Default: false (prevents sensitive data in synced state). | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstacksupportedplatform.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstacksupportedplatform.md new file mode 100644 index 000000000..e9fdfe5aa --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstacksupportedplatform.md @@ -0,0 +1,17 @@ +# SyncListResponsePreparedStackSupportedPlatform + +Represents the target cloud platform. + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackSupportedPlatform } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackSupportedPlatform = "azure"; +``` + +## Values + +```typescript +"aws" | "gcp" | "azure" | "kubernetes" | "machines" | "local" | "test" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstacktypeboolean.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstacktypeboolean.md new file mode 100644 index 000000000..3965035be --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstacktypeboolean.md @@ -0,0 +1,15 @@ +# SyncListResponsePreparedStackTypeBoolean + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackTypeBoolean } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackTypeBoolean = "boolean"; +``` + +## Values + +```typescript +"boolean" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstacktypeenvenum.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstacktypeenvenum.md new file mode 100644 index 000000000..2b8a209c6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstacktypeenvenum.md @@ -0,0 +1,17 @@ +# SyncListResponsePreparedStackTypeEnvEnum + +Environment variable handling for a stack input mapping. + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackTypeEnvEnum } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackTypeEnvEnum = "plain"; +``` + +## Values + +```typescript +"plain" | "secret" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstacktypenumber.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstacktypenumber.md new file mode 100644 index 000000000..d33e69781 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstacktypenumber.md @@ -0,0 +1,15 @@ +# SyncListResponsePreparedStackTypeNumber + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackTypeNumber } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackTypeNumber = "number"; +``` + +## Values + +```typescript +"number" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstacktypestring.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstacktypestring.md new file mode 100644 index 000000000..1a1bde608 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstacktypestring.md @@ -0,0 +1,15 @@ +# SyncListResponsePreparedStackTypeString + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackTypeString } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackTypeString = "string"; +``` + +## Values + +```typescript +"string" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstacktypestringlist.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstacktypestringlist.md new file mode 100644 index 000000000..33ebff7ff --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstacktypestringlist.md @@ -0,0 +1,15 @@ +# SyncListResponsePreparedStackTypeStringList + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackTypeStringList } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackTypeStringList = "stringList"; +``` + +## Values + +```typescript +"stringList" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstacktypeunion.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstacktypeunion.md new file mode 100644 index 000000000..915108173 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstacktypeunion.md @@ -0,0 +1,17 @@ +# SyncListResponsePreparedStackTypeUnion + + +## Supported Types + +### `models.SyncListResponsePreparedStackTypeEnvEnum` + +```typescript +const value: models.SyncListResponsePreparedStackTypeEnvEnum = "secret"; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackvalidation.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackvalidation.md new file mode 100644 index 000000000..8c9998976 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackvalidation.md @@ -0,0 +1,25 @@ +# SyncListResponsePreparedStackValidation + +Portable stack input validation constraints. + +## Example Usage + +```typescript +import { SyncListResponsePreparedStackValidation } from "@alienplatform/platform-api/models"; + +let value: SyncListResponsePreparedStackValidation = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | +| `format` | *string* | :heavy_minus_sign: | Semantic format hint such as url. | +| `max` | *string* | :heavy_minus_sign: | Maximum number. | +| `maxItems` | *number* | :heavy_minus_sign: | Maximum string-list items. | +| `maxLength` | *number* | :heavy_minus_sign: | Maximum string length. | +| `min` | *string* | :heavy_minus_sign: | Minimum number. | +| `minItems` | *number* | :heavy_minus_sign: | Minimum string-list items. | +| `minLength` | *number* | :heavy_minus_sign: | Minimum string length. | +| `pattern` | *string* | :heavy_minus_sign: | Portable whole-value regex pattern. | +| `values` | *string*[] | :heavy_minus_sign: | Allowed string enum values. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackvalidationunion.md b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackvalidationunion.md new file mode 100644 index 000000000..600b5b36c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsepreparedstackvalidationunion.md @@ -0,0 +1,17 @@ +# SyncListResponsePreparedStackValidationUnion + + +## Supported Types + +### `models.SyncListResponsePreparedStackValidation` + +```typescript +const value: models.SyncListResponsePreparedStackValidation = {}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseprofile.md b/client-sdks/platform/typescript/docs/models/synclistresponseprofile.md deleted file mode 100644 index 238e1fe15..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseprofile.md +++ /dev/null @@ -1,24 +0,0 @@ -# SyncListResponseProfile - -A permission set that can be applied across different cloud platforms - -## Example Usage - -```typescript -import { SyncListResponseProfile } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseProfile = { - description: - "regarding even now bungalow boiling promptly entry eventually where", - id: "", - platforms: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | -| `description` | *string* | :heavy_check_mark: | Human-readable description of what this permission set allows | -| `id` | *string* | :heavy_check_mark: | Unique identifier for the permission set (e.g., "storage/data-read") | -| `platforms` | [models.SyncListResponseProfilePlatforms](../models/synclistresponseprofileplatforms.md) | :heavy_check_mark: | Platform-specific permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseprofileaw.md b/client-sdks/platform/typescript/docs/models/synclistresponseprofileaw.md deleted file mode 100644 index 987c70614..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseprofileaw.md +++ /dev/null @@ -1,24 +0,0 @@ -# SyncListResponseProfileAw - -AWS-specific platform permission configuration - -## Example Usage - -```typescript -import { SyncListResponseProfileAw } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseProfileAw = { - binding: {}, - grant: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | -| `binding` | [models.SyncListResponseProfileAwBinding](../models/synclistresponseprofileawbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | -| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | -| `effect` | [models.SyncListResponseProfileEffect](../models/synclistresponseprofileeffect.md) | :heavy_minus_sign: | IAM effect. Defaults to Allow. | -| `grant` | [models.SyncListResponseProfileAwGrant](../models/synclistresponseprofileawgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | -| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseprofileawbinding.md b/client-sdks/platform/typescript/docs/models/synclistresponseprofileawbinding.md deleted file mode 100644 index 2eb26a410..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseprofileawbinding.md +++ /dev/null @@ -1,18 +0,0 @@ -# SyncListResponseProfileAwBinding - -Generic binding configuration for permissions - -## Example Usage - -```typescript -import { SyncListResponseProfileAwBinding } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseProfileAwBinding = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | -| `resource` | [models.SyncListResponseProfileAwResource](../models/synclistresponseprofileawresource.md) | :heavy_minus_sign: | AWS-specific binding specification | -| `stack` | [models.SyncListResponseProfileAwStack](../models/synclistresponseprofileawstack.md) | :heavy_minus_sign: | AWS-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseprofileawgrant.md b/client-sdks/platform/typescript/docs/models/synclistresponseprofileawgrant.md deleted file mode 100644 index 1d170cb70..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseprofileawgrant.md +++ /dev/null @@ -1,21 +0,0 @@ -# SyncListResponseProfileAwGrant - -Grant permissions for a specific cloud platform - -## Example Usage - -```typescript -import { SyncListResponseProfileAwGrant } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseProfileAwGrant = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | -| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | -| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | -| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | -| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseprofileawresource.md b/client-sdks/platform/typescript/docs/models/synclistresponseprofileawresource.md deleted file mode 100644 index 0dc0c16b2..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseprofileawresource.md +++ /dev/null @@ -1,23 +0,0 @@ -# SyncListResponseProfileAwResource - -AWS-specific binding specification - -## Example Usage - -```typescript -import { SyncListResponseProfileAwResource } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseProfileAwResource = { - resources: [ - "", - "", - ], -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | -| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseprofileawstack.md b/client-sdks/platform/typescript/docs/models/synclistresponseprofileawstack.md deleted file mode 100644 index 676d6447c..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseprofileawstack.md +++ /dev/null @@ -1,22 +0,0 @@ -# SyncListResponseProfileAwStack - -AWS-specific binding specification - -## Example Usage - -```typescript -import { SyncListResponseProfileAwStack } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseProfileAwStack = { - resources: [ - "", - ], -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | -| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseprofileazure.md b/client-sdks/platform/typescript/docs/models/synclistresponseprofileazure.md deleted file mode 100644 index d1c45333a..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseprofileazure.md +++ /dev/null @@ -1,23 +0,0 @@ -# SyncListResponseProfileAzure - -Azure-specific platform permission configuration - -## Example Usage - -```typescript -import { SyncListResponseProfileAzure } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseProfileAzure = { - binding: {}, - grant: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | -| `binding` | [models.SyncListResponseProfileAzureBinding](../models/synclistresponseprofileazurebinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | -| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | -| `grant` | [models.SyncListResponseProfileAzureGrant](../models/synclistresponseprofileazuregrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | -| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseprofileazurebinding.md b/client-sdks/platform/typescript/docs/models/synclistresponseprofileazurebinding.md deleted file mode 100644 index a80f47c78..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseprofileazurebinding.md +++ /dev/null @@ -1,18 +0,0 @@ -# SyncListResponseProfileAzureBinding - -Generic binding configuration for permissions - -## Example Usage - -```typescript -import { SyncListResponseProfileAzureBinding } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseProfileAzureBinding = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | -| `resource` | [models.SyncListResponseProfileAzureResource](../models/synclistresponseprofileazureresource.md) | :heavy_minus_sign: | Azure-specific binding specification | -| `stack` | [models.SyncListResponseProfileAzureStack](../models/synclistresponseprofileazurestack.md) | :heavy_minus_sign: | Azure-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseprofileazuregrant.md b/client-sdks/platform/typescript/docs/models/synclistresponseprofileazuregrant.md deleted file mode 100644 index ad9e04d7c..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseprofileazuregrant.md +++ /dev/null @@ -1,21 +0,0 @@ -# SyncListResponseProfileAzureGrant - -Grant permissions for a specific cloud platform - -## Example Usage - -```typescript -import { SyncListResponseProfileAzureGrant } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseProfileAzureGrant = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | -| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | -| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | -| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | -| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseprofileazureresource.md b/client-sdks/platform/typescript/docs/models/synclistresponseprofileazureresource.md deleted file mode 100644 index de9da1fe8..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseprofileazureresource.md +++ /dev/null @@ -1,19 +0,0 @@ -# SyncListResponseProfileAzureResource - -Azure-specific binding specification - -## Example Usage - -```typescript -import { SyncListResponseProfileAzureResource } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseProfileAzureResource = { - scope: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseprofileazurestack.md b/client-sdks/platform/typescript/docs/models/synclistresponseprofileazurestack.md deleted file mode 100644 index 2ef44dde5..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseprofileazurestack.md +++ /dev/null @@ -1,19 +0,0 @@ -# SyncListResponseProfileAzureStack - -Azure-specific binding specification - -## Example Usage - -```typescript -import { SyncListResponseProfileAzureStack } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseProfileAzureStack = { - scope: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseprofileconditionresource.md b/client-sdks/platform/typescript/docs/models/synclistresponseprofileconditionresource.md deleted file mode 100644 index 520a6573d..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseprofileconditionresource.md +++ /dev/null @@ -1,21 +0,0 @@ -# SyncListResponseProfileConditionResource - -GCP IAM condition - -## Example Usage - -```typescript -import { SyncListResponseProfileConditionResource } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseProfileConditionResource = { - expression: "", - title: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `expression` | *string* | :heavy_check_mark: | N/A | -| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseprofileconditionstack.md b/client-sdks/platform/typescript/docs/models/synclistresponseprofileconditionstack.md deleted file mode 100644 index 242337317..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseprofileconditionstack.md +++ /dev/null @@ -1,21 +0,0 @@ -# SyncListResponseProfileConditionStack - -GCP IAM condition - -## Example Usage - -```typescript -import { SyncListResponseProfileConditionStack } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseProfileConditionStack = { - expression: "", - title: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `expression` | *string* | :heavy_check_mark: | N/A | -| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseprofileeffect.md b/client-sdks/platform/typescript/docs/models/synclistresponseprofileeffect.md deleted file mode 100644 index 210cdc774..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseprofileeffect.md +++ /dev/null @@ -1,17 +0,0 @@ -# SyncListResponseProfileEffect - -IAM effect. Defaults to Allow. - -## Example Usage - -```typescript -import { SyncListResponseProfileEffect } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseProfileEffect = "Deny"; -``` - -## Values - -```typescript -"Allow" | "Deny" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseprofilegcp.md b/client-sdks/platform/typescript/docs/models/synclistresponseprofilegcp.md deleted file mode 100644 index 8d5b756da..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseprofilegcp.md +++ /dev/null @@ -1,23 +0,0 @@ -# SyncListResponseProfileGcp - -GCP-specific platform permission configuration - -## Example Usage - -```typescript -import { SyncListResponseProfileGcp } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseProfileGcp = { - binding: {}, - grant: {}, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | -| `binding` | [models.SyncListResponseProfileGcpBinding](../models/synclistresponseprofilegcpbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | -| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | -| `grant` | [models.SyncListResponseProfileGcpGrant](../models/synclistresponseprofilegcpgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | -| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseprofilegcpbinding.md b/client-sdks/platform/typescript/docs/models/synclistresponseprofilegcpbinding.md deleted file mode 100644 index 348032150..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseprofilegcpbinding.md +++ /dev/null @@ -1,18 +0,0 @@ -# SyncListResponseProfileGcpBinding - -Generic binding configuration for permissions - -## Example Usage - -```typescript -import { SyncListResponseProfileGcpBinding } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseProfileGcpBinding = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `resource` | [models.SyncListResponseProfileGcpResource](../models/synclistresponseprofilegcpresource.md) | :heavy_minus_sign: | GCP-specific binding specification | -| `stack` | [models.SyncListResponseProfileGcpStack](../models/synclistresponseprofilegcpstack.md) | :heavy_minus_sign: | GCP-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseprofilegcpgrant.md b/client-sdks/platform/typescript/docs/models/synclistresponseprofilegcpgrant.md deleted file mode 100644 index 87f225737..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseprofilegcpgrant.md +++ /dev/null @@ -1,21 +0,0 @@ -# SyncListResponseProfileGcpGrant - -Grant permissions for a specific cloud platform - -## Example Usage - -```typescript -import { SyncListResponseProfileGcpGrant } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseProfileGcpGrant = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | -| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | -| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | -| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | -| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseprofilegcpresource.md b/client-sdks/platform/typescript/docs/models/synclistresponseprofilegcpresource.md deleted file mode 100644 index 07a2ffd92..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseprofilegcpresource.md +++ /dev/null @@ -1,20 +0,0 @@ -# SyncListResponseProfileGcpResource - -GCP-specific binding specification - -## Example Usage - -```typescript -import { SyncListResponseProfileGcpResource } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseProfileGcpResource = { - scope: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | -| `condition` | *models.SyncListResponseProfileResourceConditionUnion* | :heavy_minus_sign: | N/A | -| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseprofilegcpstack.md b/client-sdks/platform/typescript/docs/models/synclistresponseprofilegcpstack.md deleted file mode 100644 index 8e87d36c3..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseprofilegcpstack.md +++ /dev/null @@ -1,20 +0,0 @@ -# SyncListResponseProfileGcpStack - -GCP-specific binding specification - -## Example Usage - -```typescript -import { SyncListResponseProfileGcpStack } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseProfileGcpStack = { - scope: "", -}; -``` - -## Fields - -| Field | Type | Required | Description | -| --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | -| `condition` | *models.SyncListResponseProfileStackConditionUnion* | :heavy_minus_sign: | N/A | -| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseprofileplatforms.md b/client-sdks/platform/typescript/docs/models/synclistresponseprofileplatforms.md deleted file mode 100644 index faf193dcc..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseprofileplatforms.md +++ /dev/null @@ -1,19 +0,0 @@ -# SyncListResponseProfilePlatforms - -Platform-specific permission configurations - -## Example Usage - -```typescript -import { SyncListResponseProfilePlatforms } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseProfilePlatforms = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | -| `aws` | [models.SyncListResponseProfileAw](../models/synclistresponseprofileaw.md)[] | :heavy_minus_sign: | AWS permission configurations | -| `azure` | [models.SyncListResponseProfileAzure](../models/synclistresponseprofileazure.md)[] | :heavy_minus_sign: | Azure permission configurations | -| `gcp` | [models.SyncListResponseProfileGcp](../models/synclistresponseprofilegcp.md)[] | :heavy_minus_sign: | GCP permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseprofileresourceconditionunion.md b/client-sdks/platform/typescript/docs/models/synclistresponseprofileresourceconditionunion.md deleted file mode 100644 index 83c0c0036..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseprofileresourceconditionunion.md +++ /dev/null @@ -1,20 +0,0 @@ -# SyncListResponseProfileResourceConditionUnion - - -## Supported Types - -### `models.SyncListResponseProfileConditionResource` - -```typescript -const value: models.SyncListResponseProfileConditionResource = { - expression: "", - title: "", -}; -``` - -### `any` - -```typescript -const value: any = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseprofilestackconditionunion.md b/client-sdks/platform/typescript/docs/models/synclistresponseprofilestackconditionunion.md deleted file mode 100644 index 84f803db0..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseprofilestackconditionunion.md +++ /dev/null @@ -1,20 +0,0 @@ -# SyncListResponseProfileStackConditionUnion - - -## Supported Types - -### `models.SyncListResponseProfileConditionStack` - -```typescript -const value: models.SyncListResponseProfileConditionStack = { - expression: "", - title: "", -}; -``` - -### `any` - -```typescript -const value: any = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseprofileunion.md b/client-sdks/platform/typescript/docs/models/synclistresponseprofileunion.md deleted file mode 100644 index 4a00f6276..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseprofileunion.md +++ /dev/null @@ -1,24 +0,0 @@ -# SyncListResponseProfileUnion - -Reference to a permission set - either by name or inline definition - - -## Supported Types - -### `models.SyncListResponseProfile` - -```typescript -const value: models.SyncListResponseProfile = { - description: - "regarding even now bungalow boiling promptly entry eventually where", - id: "", - platforms: {}, -}; -``` - -### `string` - -```typescript -const value: string = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseprovidedby.md b/client-sdks/platform/typescript/docs/models/synclistresponseprovidedby.md deleted file mode 100644 index f23e1fd4f..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponseprovidedby.md +++ /dev/null @@ -1,17 +0,0 @@ -# SyncListResponseProvidedBy - -Who can provide a stack input value. - -## Example Usage - -```typescript -import { SyncListResponseProvidedBy } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseProvidedBy = "deployer"; -``` - -## Values - -```typescript -"developer" | "deployer" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseruntimemetadata.md b/client-sdks/platform/typescript/docs/models/synclistresponseruntimemetadata.md index 53b393f71..f974bf674 100644 --- a/client-sdks/platform/typescript/docs/models/synclistresponseruntimemetadata.md +++ b/client-sdks/platform/typescript/docs/models/synclistresponseruntimemetadata.md @@ -12,9 +12,13 @@ let value: SyncListResponseRuntimeMetadata = {}; ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `lastSyncedEnvVarsHash` | *string* | :heavy_minus_sign: | Hash of the environment variables snapshot that was last synced to the vault
Used to avoid redundant sync operations during incremental deployment | -| `lastSyncedSecretNames` | *string*[] | :heavy_minus_sign: | Exact vault keys owned by the deployment secret synchronizer. This
inventory lets a later snapshot delete removed keys without listing or
touching unrelated values in the same vault. | -| `preparedStack` | *models.SyncListResponsePreparedStackUnion* | :heavy_minus_sign: | N/A | -| `registryAccessGranted` | *boolean* | :heavy_minus_sign: | Whether cross-account registry access has been successfully granted.
Set to true after the manager successfully sets the ECR/GAR repo policy
for this deployment's target account. Prevents redundant API calls on
every reconcile tick. | \ No newline at end of file +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `initialSetupAuthority` | [models.SyncListResponseInitialSetupAuthority](../models/synclistresponseinitialsetupauthority.md) | :heavy_minus_sign: | Actor that owns structural work during the initial setup phase. | +| `lastSyncedEnvVarsHash` | *string* | :heavy_minus_sign: | Hash of the environment variables snapshot that was last synced to the vault
Used to avoid redundant sync operations during incremental deployment | +| `lastSyncedSecretNames` | *string*[] | :heavy_minus_sign: | Exact vault keys owned by the deployment secret synchronizer. This
inventory lets a later snapshot delete removed keys without listing or
touching unrelated values in the same vault. | +| `pendingPreparedStack` | *models.SyncListResponsePendingPreparedStackUnion* | :heavy_minus_sign: | N/A | +| `persistedGateAnswers` | Record | :heavy_minus_sign: | Canonical resolved answers for inputs that gate Frozen resources,
keyed by input id, recorded when the deployment is created or its
setup import registers.

A frozen gate's answer is fixed for the deployment's lifetime: the
update path refuses input values that conflict with these, and a Live
resource sharing such an input resolves the persisted answer forever. | +| `preparedStack` | *models.SyncListResponsePreparedStackUnion* | :heavy_minus_sign: | N/A | +| `registryAccessGranted` | *boolean* | :heavy_minus_sign: | Whether cross-account registry access has been successfully granted.
Set to true after the manager successfully sets the ECR/GAR repo policy
for this deployment's target account. Prevents redundant API calls on
every reconcile tick. | +| `setupUpdateAuthorization` | *models.SyncListResponseSetupUpdateAuthorizationUnion* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsesetupupdateauthorization.md b/client-sdks/platform/typescript/docs/models/synclistresponsesetupupdateauthorization.md new file mode 100644 index 000000000..a67e8137c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsesetupupdateauthorization.md @@ -0,0 +1,31 @@ +# SyncListResponseSetupUpdateAuthorization + +One-shot authority for a setup re-import to replace setup-owned resources. + +## Example Usage + +```typescript +import { SyncListResponseSetupUpdateAuthorization } from "@alienplatform/platform-api/models"; + +let value: SyncListResponseSetupUpdateAuthorization = { + baselineFrozenDigest: "", + nonce: "", + releaseId: "", + setupFingerprint: "", + setupFingerprintVersion: 256760, + setupTarget: "", + targetFrozenDigest: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | +| `baselineFrozenDigest` | *string* | :heavy_check_mark: | Frozen resource projection from the last successful deployment. | +| `nonce` | *string* | :heavy_check_mark: | Unique revision used by persistence layers for compare-and-swap updates. | +| `releaseId` | *string* | :heavy_check_mark: | Release whose stack was prepared by setup. | +| `setupFingerprint` | *string* | :heavy_check_mark: | Exact setup artifact revision that authored this authority. | +| `setupFingerprintVersion` | *number* | :heavy_check_mark: | Setup fingerprint contract version. | +| `setupTarget` | *string* | :heavy_check_mark: | Stable setup target recorded on the imported deployment. | +| `targetFrozenDigest` | *string* | :heavy_check_mark: | Frozen resource projection prepared by the setup re-import. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsesetupupdateauthorizationunion.md b/client-sdks/platform/typescript/docs/models/synclistresponsesetupupdateauthorizationunion.md new file mode 100644 index 000000000..0cb096ff9 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponsesetupupdateauthorizationunion.md @@ -0,0 +1,25 @@ +# SyncListResponseSetupUpdateAuthorizationUnion + + +## Supported Types + +### `models.SyncListResponseSetupUpdateAuthorization` + +```typescript +const value: models.SyncListResponseSetupUpdateAuthorization = { + baselineFrozenDigest: "", + nonce: "", + releaseId: "", + setupFingerprint: "", + setupFingerprintVersion: 256760, + setupTarget: "", + targetFrozenDigest: "", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsesupportedplatform.md b/client-sdks/platform/typescript/docs/models/synclistresponsesupportedplatform.md deleted file mode 100644 index 6681a2b5c..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponsesupportedplatform.md +++ /dev/null @@ -1,17 +0,0 @@ -# SyncListResponseSupportedPlatform - -Represents the target cloud platform. - -## Example Usage - -```typescript -import { SyncListResponseSupportedPlatform } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseSupportedPlatform = "machines"; -``` - -## Values - -```typescript -"aws" | "gcp" | "azure" | "kubernetes" | "machines" | "local" | "test" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsetypeboolean.md b/client-sdks/platform/typescript/docs/models/synclistresponsetypeboolean.md deleted file mode 100644 index 8a87011cb..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponsetypeboolean.md +++ /dev/null @@ -1,15 +0,0 @@ -# SyncListResponseTypeBoolean - -## Example Usage - -```typescript -import { SyncListResponseTypeBoolean } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseTypeBoolean = "boolean"; -``` - -## Values - -```typescript -"boolean" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsetypeenvenum.md b/client-sdks/platform/typescript/docs/models/synclistresponsetypeenvenum.md deleted file mode 100644 index b6df8a0e1..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponsetypeenvenum.md +++ /dev/null @@ -1,17 +0,0 @@ -# SyncListResponseTypeEnvEnum - -Environment variable handling for a stack input mapping. - -## Example Usage - -```typescript -import { SyncListResponseTypeEnvEnum } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseTypeEnvEnum = "secret"; -``` - -## Values - -```typescript -"plain" | "secret" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsetypenumber.md b/client-sdks/platform/typescript/docs/models/synclistresponsetypenumber.md deleted file mode 100644 index 2233d0800..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponsetypenumber.md +++ /dev/null @@ -1,15 +0,0 @@ -# SyncListResponseTypeNumber - -## Example Usage - -```typescript -import { SyncListResponseTypeNumber } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseTypeNumber = "number"; -``` - -## Values - -```typescript -"number" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsetypestring.md b/client-sdks/platform/typescript/docs/models/synclistresponsetypestring.md deleted file mode 100644 index 20e3c0e6f..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponsetypestring.md +++ /dev/null @@ -1,15 +0,0 @@ -# SyncListResponseTypeString - -## Example Usage - -```typescript -import { SyncListResponseTypeString } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseTypeString = "string"; -``` - -## Values - -```typescript -"string" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsetypestringlist.md b/client-sdks/platform/typescript/docs/models/synclistresponsetypestringlist.md deleted file mode 100644 index feae29106..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponsetypestringlist.md +++ /dev/null @@ -1,15 +0,0 @@ -# SyncListResponseTypeStringList - -## Example Usage - -```typescript -import { SyncListResponseTypeStringList } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseTypeStringList = "stringList"; -``` - -## Values - -```typescript -"stringList" -``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsetypeunion.md b/client-sdks/platform/typescript/docs/models/synclistresponsetypeunion.md deleted file mode 100644 index f94f2cf16..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponsetypeunion.md +++ /dev/null @@ -1,17 +0,0 @@ -# SyncListResponseTypeUnion - - -## Supported Types - -### `models.SyncListResponseTypeEnvEnum` - -```typescript -const value: models.SyncListResponseTypeEnvEnum = "secret"; -``` - -### `any` - -```typescript -const value: any = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseupdatestate.md b/client-sdks/platform/typescript/docs/models/synclistresponseupdatestate.md new file mode 100644 index 000000000..f2fa0aeb1 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponseupdatestate.md @@ -0,0 +1,54 @@ +# SyncListResponseUpdateState + +Durable progress for deployment updates + +## Example Usage + +```typescript +import { SyncListResponseUpdateState } from "@alienplatform/platform-api/models"; + +let value: SyncListResponseUpdateState = { + active: { + id: "duop_0vtxpb1sw4sbcdwg2xo37q6", + status: "applying", + reasons: [], + targetReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", + changedKeys: [], + requestedAt: new Date("2026-04-28T10:12:17.277Z"), + }, + next: { + id: "duop_0vtxpb1sw4sbcdwg2xo37q6", + status: "queued", + reasons: [], + targetReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", + changedKeys: [ + "", + "", + "", + ], + requestedAt: new Date("2025-05-23T02:17:08.731Z"), + }, + latest: { + id: "duop_0vtxpb1sw4sbcdwg2xo37q6", + status: "superseded", + reasons: [ + "redeploy", + ], + targetReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", + changedKeys: [ + "", + "", + "", + ], + requestedAt: new Date("2024-11-23T19:43:18.153Z"), + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `active` | [models.DeploymentUpdateOperationSummary](../models/deploymentupdateoperationsummary.md) | :heavy_check_mark: | N/A | +| `next` | [models.DeploymentUpdateOperationSummary](../models/deploymentupdateoperationsummary.md) | :heavy_check_mark: | N/A | +| `latest` | [models.DeploymentUpdateOperationSummary](../models/deploymentupdateoperationsummary.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsevalidation.md b/client-sdks/platform/typescript/docs/models/synclistresponsevalidation.md deleted file mode 100644 index 6acbb83f5..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponsevalidation.md +++ /dev/null @@ -1,25 +0,0 @@ -# SyncListResponseValidation - -Portable stack input validation constraints. - -## Example Usage - -```typescript -import { SyncListResponseValidation } from "@alienplatform/platform-api/models"; - -let value: SyncListResponseValidation = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `format` | *string* | :heavy_minus_sign: | Semantic format hint such as url. | -| `max` | *string* | :heavy_minus_sign: | Maximum number. | -| `maxItems` | *number* | :heavy_minus_sign: | Maximum string-list items. | -| `maxLength` | *number* | :heavy_minus_sign: | Maximum string length. | -| `min` | *string* | :heavy_minus_sign: | Minimum number. | -| `minItems` | *number* | :heavy_minus_sign: | Minimum string-list items. | -| `minLength` | *number* | :heavy_minus_sign: | Minimum string length. | -| `pattern` | *string* | :heavy_minus_sign: | Portable whole-value regex pattern. | -| `values` | *string*[] | :heavy_minus_sign: | Allowed string enum values. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsevalidationunion.md b/client-sdks/platform/typescript/docs/models/synclistresponsevalidationunion.md deleted file mode 100644 index a239f4dbf..000000000 --- a/client-sdks/platform/typescript/docs/models/synclistresponsevalidationunion.md +++ /dev/null @@ -1,17 +0,0 @@ -# SyncListResponseValidationUnion - - -## Supported Types - -### `models.SyncListResponseValidation` - -```typescript -const value: models.SyncListResponseValidation = {}; -``` - -### `any` - -```typescript -const value: any = ""; -``` - diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestaccesstest1.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestaccesstest1.md new file mode 100644 index 000000000..e066e08e6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestaccesstest1.md @@ -0,0 +1,15 @@ +# SyncReconcileRequestAccessTest1 + +## Example Usage + +```typescript +import { SyncReconcileRequestAccessTest1 } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestAccessTest1 = "failed"; +``` + +## Values + +```typescript +"verified" | "failed" | "not-checked" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestaccesstest2.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestaccesstest2.md new file mode 100644 index 000000000..6a313f946 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestaccesstest2.md @@ -0,0 +1,15 @@ +# SyncReconcileRequestAccessTest2 + +## Example Usage + +```typescript +import { SyncReconcileRequestAccessTest2 } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestAccessTest2 = "not-checked"; +``` + +## Values + +```typescript +"verified" | "failed" | "not-checked" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestaccesstest3.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestaccesstest3.md new file mode 100644 index 000000000..b12a53347 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestaccesstest3.md @@ -0,0 +1,15 @@ +# SyncReconcileRequestAccessTest3 + +## Example Usage + +```typescript +import { SyncReconcileRequestAccessTest3 } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestAccessTest3 = "failed"; +``` + +## Values + +```typescript +"verified" | "failed" | "not-checked" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestaccesstest4.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestaccesstest4.md new file mode 100644 index 000000000..0d406b517 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestaccesstest4.md @@ -0,0 +1,15 @@ +# SyncReconcileRequestAccessTest4 + +## Example Usage + +```typescript +import { SyncReconcileRequestAccessTest4 } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestAccessTest4 = "verified"; +``` + +## Values + +```typescript +"verified" | "failed" | "not-checked" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestavailability1.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestavailability1.md new file mode 100644 index 000000000..d351e861a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestavailability1.md @@ -0,0 +1,22 @@ +# SyncReconcileRequestAvailability1 + +## Example Usage + +```typescript +import { SyncReconcileRequestAvailability1 } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestAvailability1 = { + catalogRevision: "", + models: [], + source: "gcp-vertex", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | +| `catalogRevision` | *string* | :heavy_check_mark: | N/A | +| `location` | *string* | :heavy_minus_sign: | N/A | +| `models` | [models.SyncReconcileRequestModel1](../models/syncreconcilerequestmodel1.md)[] | :heavy_check_mark: | N/A | +| `source` | [models.SyncReconcileRequestAvailabilitySource1](../models/syncreconcilerequestavailabilitysource1.md) | :heavy_check_mark: | Provider control plane used to observe model availability without invoking
a model, spending customer quota, or accepting provider terms. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestavailability2.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestavailability2.md new file mode 100644 index 000000000..fdd56c444 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestavailability2.md @@ -0,0 +1,32 @@ +# SyncReconcileRequestAvailability2 + +## Example Usage + +```typescript +import { SyncReconcileRequestAvailability2 } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestAvailability2 = { + catalogRevision: "", + models: [ + { + accessTest: "failed", + availability: "blocked", + blockers: [], + clientApis: [ + "open-ai-chat-completions", + ], + publicModelId: "", + }, + ], + source: "aws-bedrock", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | +| `catalogRevision` | *string* | :heavy_check_mark: | N/A | +| `location` | *string* | :heavy_minus_sign: | N/A | +| `models` | [models.SyncReconcileRequestModel2](../models/syncreconcilerequestmodel2.md)[] | :heavy_check_mark: | N/A | +| `source` | [models.SyncReconcileRequestAvailabilitySource2](../models/syncreconcilerequestavailabilitysource2.md) | :heavy_check_mark: | Provider control plane used to observe model availability without invoking
a model, spending customer quota, or accepting provider terms. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestavailability3.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestavailability3.md new file mode 100644 index 000000000..553b590b5 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestavailability3.md @@ -0,0 +1,34 @@ +# SyncReconcileRequestAvailability3 + +## Example Usage + +```typescript +import { SyncReconcileRequestAvailability3 } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestAvailability3 = { + catalogRevision: "", + models: [ + { + accessTest: "verified", + availability: "available", + blockers: [ + "quota-configuration-required", + ], + clientApis: [ + "open-ai-responses", + ], + publicModelId: "", + }, + ], + source: "gcp-vertex", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | +| `catalogRevision` | *string* | :heavy_check_mark: | N/A | +| `location` | *string* | :heavy_minus_sign: | N/A | +| `models` | [models.SyncReconcileRequestModel3](../models/syncreconcilerequestmodel3.md)[] | :heavy_check_mark: | N/A | +| `source` | [models.SyncReconcileRequestAvailabilitySource3](../models/syncreconcilerequestavailabilitysource3.md) | :heavy_check_mark: | Provider control plane used to observe model availability without invoking
a model, spending customer quota, or accepting provider terms. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestavailability4.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestavailability4.md new file mode 100644 index 000000000..e28bb9799 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestavailability4.md @@ -0,0 +1,22 @@ +# SyncReconcileRequestAvailability4 + +## Example Usage + +```typescript +import { SyncReconcileRequestAvailability4 } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestAvailability4 = { + catalogRevision: "", + models: [], + source: "aws-bedrock", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | +| `catalogRevision` | *string* | :heavy_check_mark: | N/A | +| `location` | *string* | :heavy_minus_sign: | N/A | +| `models` | [models.SyncReconcileRequestModel4](../models/syncreconcilerequestmodel4.md)[] | :heavy_check_mark: | N/A | +| `source` | [models.SyncReconcileRequestAvailabilitySource4](../models/syncreconcilerequestavailabilitysource4.md) | :heavy_check_mark: | Provider control plane used to observe model availability without invoking
a model, spending customer quota, or accepting provider terms. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestavailabilitysource1.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestavailabilitysource1.md new file mode 100644 index 000000000..2bc199f23 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestavailabilitysource1.md @@ -0,0 +1,18 @@ +# SyncReconcileRequestAvailabilitySource1 + +Provider control plane used to observe model availability without invoking +a model, spending customer quota, or accepting provider terms. + +## Example Usage + +```typescript +import { SyncReconcileRequestAvailabilitySource1 } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestAvailabilitySource1 = "gcp-vertex"; +``` + +## Values + +```typescript +"aws-bedrock" | "gcp-vertex" | "azure-foundry" | "anthropic" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestavailabilitysource2.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestavailabilitysource2.md new file mode 100644 index 000000000..6c39f4bc0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestavailabilitysource2.md @@ -0,0 +1,18 @@ +# SyncReconcileRequestAvailabilitySource2 + +Provider control plane used to observe model availability without invoking +a model, spending customer quota, or accepting provider terms. + +## Example Usage + +```typescript +import { SyncReconcileRequestAvailabilitySource2 } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestAvailabilitySource2 = "azure-foundry"; +``` + +## Values + +```typescript +"aws-bedrock" | "gcp-vertex" | "azure-foundry" | "anthropic" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestavailabilitysource3.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestavailabilitysource3.md new file mode 100644 index 000000000..3f3b1459c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestavailabilitysource3.md @@ -0,0 +1,18 @@ +# SyncReconcileRequestAvailabilitySource3 + +Provider control plane used to observe model availability without invoking +a model, spending customer quota, or accepting provider terms. + +## Example Usage + +```typescript +import { SyncReconcileRequestAvailabilitySource3 } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestAvailabilitySource3 = "gcp-vertex"; +``` + +## Values + +```typescript +"aws-bedrock" | "gcp-vertex" | "azure-foundry" | "anthropic" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestavailabilitysource4.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestavailabilitysource4.md new file mode 100644 index 000000000..193f7d67f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestavailabilitysource4.md @@ -0,0 +1,18 @@ +# SyncReconcileRequestAvailabilitySource4 + +Provider control plane used to observe model availability without invoking +a model, spending customer quota, or accepting provider terms. + +## Example Usage + +```typescript +import { SyncReconcileRequestAvailabilitySource4 } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestAvailabilitySource4 = "anthropic"; +``` + +## Values + +```typescript +"aws-bedrock" | "gcp-vertex" | "azure-foundry" | "anthropic" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestblockerenum1.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestblockerenum1.md new file mode 100644 index 000000000..498ef65ac --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestblockerenum1.md @@ -0,0 +1,15 @@ +# SyncReconcileRequestBlockerEnum1 + +## Example Usage + +```typescript +import { SyncReconcileRequestBlockerEnum1 } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestBlockerEnum1 = "quota-configuration-required"; +``` + +## Values + +```typescript +"agreement-required" | "entitlement-required" | "model-activation-required" | "deployment-required" | "quota-configuration-required" | "region-unavailable" | "access-denied" | "observation-failed" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestblockerenum2.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestblockerenum2.md new file mode 100644 index 000000000..20c470553 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestblockerenum2.md @@ -0,0 +1,15 @@ +# SyncReconcileRequestBlockerEnum2 + +## Example Usage + +```typescript +import { SyncReconcileRequestBlockerEnum2 } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestBlockerEnum2 = "entitlement-required"; +``` + +## Values + +```typescript +"agreement-required" | "entitlement-required" | "model-activation-required" | "deployment-required" | "quota-configuration-required" | "region-unavailable" | "access-denied" | "observation-failed" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestblockerenum3.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestblockerenum3.md new file mode 100644 index 000000000..351f600cf --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestblockerenum3.md @@ -0,0 +1,15 @@ +# SyncReconcileRequestBlockerEnum3 + +## Example Usage + +```typescript +import { SyncReconcileRequestBlockerEnum3 } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestBlockerEnum3 = "access-denied"; +``` + +## Values + +```typescript +"agreement-required" | "entitlement-required" | "model-activation-required" | "deployment-required" | "quota-configuration-required" | "region-unavailable" | "access-denied" | "observation-failed" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestblockerenum4.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestblockerenum4.md new file mode 100644 index 000000000..bdbedb674 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestblockerenum4.md @@ -0,0 +1,15 @@ +# SyncReconcileRequestBlockerEnum4 + +## Example Usage + +```typescript +import { SyncReconcileRequestBlockerEnum4 } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestBlockerEnum4 = "agreement-required"; +``` + +## Values + +```typescript +"agreement-required" | "entitlement-required" | "model-activation-required" | "deployment-required" | "quota-configuration-required" | "region-unavailable" | "access-denied" | "observation-failed" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestclientapi1.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestclientapi1.md new file mode 100644 index 000000000..01d9cc527 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestclientapi1.md @@ -0,0 +1,17 @@ +# SyncReconcileRequestClientApi1 + +A public API accepted from an application client. + +## Example Usage + +```typescript +import { SyncReconcileRequestClientApi1 } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestClientApi1 = "anthropic-messages"; +``` + +## Values + +```typescript +"open-ai-chat-completions" | "open-ai-responses" | "anthropic-messages" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestclientapi2.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestclientapi2.md new file mode 100644 index 000000000..7b99e35f4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestclientapi2.md @@ -0,0 +1,17 @@ +# SyncReconcileRequestClientApi2 + +A public API accepted from an application client. + +## Example Usage + +```typescript +import { SyncReconcileRequestClientApi2 } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestClientApi2 = "open-ai-responses"; +``` + +## Values + +```typescript +"open-ai-chat-completions" | "open-ai-responses" | "anthropic-messages" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestclientapi3.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestclientapi3.md new file mode 100644 index 000000000..aedfc08c1 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestclientapi3.md @@ -0,0 +1,17 @@ +# SyncReconcileRequestClientApi3 + +A public API accepted from an application client. + +## Example Usage + +```typescript +import { SyncReconcileRequestClientApi3 } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestClientApi3 = "anthropic-messages"; +``` + +## Values + +```typescript +"open-ai-chat-completions" | "open-ai-responses" | "anthropic-messages" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestclientapi4.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestclientapi4.md new file mode 100644 index 000000000..3962b6692 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestclientapi4.md @@ -0,0 +1,17 @@ +# SyncReconcileRequestClientApi4 + +A public API accepted from an application client. + +## Example Usage + +```typescript +import { SyncReconcileRequestClientApi4 } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestClientApi4 = "open-ai-responses"; +``` + +## Values + +```typescript +"open-ai-chat-completions" | "open-ai-responses" | "anthropic-messages" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestcurrentreleaseresources.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestcurrentreleaseresources.md index 4f4b85dfa..0bda4c11a 100644 --- a/client-sdks/platform/typescript/docs/models/syncreconcilerequestcurrentreleaseresources.md +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestcurrentreleaseresources.md @@ -17,9 +17,10 @@ let value: SyncReconcileRequestCurrentReleaseResources = { ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `config` | [models.SyncReconcileRequestCurrentReleaseConfig](../models/syncreconcilerequestcurrentreleaseconfig.md) | :heavy_check_mark: | 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` | [models.SyncReconcileRequestCurrentReleaseDependency](../models/syncreconcilerequestcurrentreleasedependency.md)[] | :heavy_check_mark: | Additional dependencies for this resource beyond those defined in the resource itself.
The total dependencies are: resource.get_dependencies() + this list | -| `lifecycle` | [models.CurrentReleaseStateLifecycle](../models/currentreleasestatelifecycle.md) | :heavy_check_mark: | Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. | -| `remoteAccess` | *boolean* | :heavy_minus_sign: | Enable remote bindings for this resource (BYOB use case).
When true, binding params are synced to StackState's `remote_binding_params`.
Default: false (prevents sensitive data in synced state). | \ No newline at end of file +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `config` | [models.SyncReconcileRequestCurrentReleaseConfig](../models/syncreconcilerequestcurrentreleaseconfig.md) | :heavy_check_mark: | 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` | [models.SyncReconcileRequestCurrentReleaseDependency](../models/syncreconcilerequestcurrentreleasedependency.md)[] | :heavy_check_mark: | Additional dependencies for this resource beyond those defined in the resource itself.
The total dependencies are: resource.get_dependencies() + this list | +| `enabledWhen` | *string* | :heavy_minus_sign: | 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. | +| `lifecycle` | [models.CurrentReleaseStateLifecycle](../models/currentreleasestatelifecycle.md) | :heavy_check_mark: | Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. | +| `remoteAccess` | *boolean* | :heavy_minus_sign: | Enable remote bindings for this resource (BYOB use case).
When true, binding params are synced to StackState's `remote_binding_params`.
Default: false (prevents sensitive data in synced state). | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestdata6.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestdata6.md new file mode 100644 index 000000000..89d2278e7 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestdata6.md @@ -0,0 +1,30 @@ +# SyncReconcileRequestData6 + +## Example Usage + +```typescript +import { SyncReconcileRequestData6 } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestData6 = { + enabled: true, + keyArn: "", + keySpec: "", + keyState: "", + keyUsage: "", + status: { + health: "unhealthy", + lifecycle: "stopped", + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `enabled` | *boolean* | :heavy_check_mark: | N/A | +| `keyArn` | *string* | :heavy_check_mark: | N/A | +| `keySpec` | *string* | :heavy_check_mark: | N/A | +| `keyState` | *string* | :heavy_check_mark: | N/A | +| `keyUsage` | *string* | :heavy_check_mark: | N/A | +| `status` | [models.ResourceHeartbeatStatus70](../models/resourceheartbeatstatus70.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestdata7.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestdata7.md new file mode 100644 index 000000000..6ec228328 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestdata7.md @@ -0,0 +1,27 @@ +# SyncReconcileRequestData7 + +## Example Usage + +```typescript +import { SyncReconcileRequestData7 } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestData7 = { + cryptoKeyName: "", + purpose: "", + status: { + health: "degraded", + lifecycle: "running", + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `algorithm` | *string* | :heavy_minus_sign: | N/A | +| `cryptoKeyName` | *string* | :heavy_check_mark: | N/A | +| `primaryState` | *string* | :heavy_minus_sign: | N/A | +| `primaryVersion` | *string* | :heavy_minus_sign: | N/A | +| `purpose` | *string* | :heavy_check_mark: | N/A | +| `status` | [models.ResourceHeartbeatStatus71](../models/resourceheartbeatstatus71.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestdata8.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestdata8.md new file mode 100644 index 000000000..f0dd70791 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestdata8.md @@ -0,0 +1,28 @@ +# SyncReconcileRequestData8 + +## Example Usage + +```typescript +import { SyncReconcileRequestData8 } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestData8 = { + keyId: "", + keyOperations: [], + keyType: "", + status: { + health: "unknown", + lifecycle: "deleting", + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `enabled` | *boolean* | :heavy_minus_sign: | N/A | +| `keyId` | *string* | :heavy_check_mark: | N/A | +| `keyOperations` | *string*[] | :heavy_check_mark: | N/A | +| `keyType` | *string* | :heavy_check_mark: | N/A | +| `recoveryLevel` | *string* | :heavy_minus_sign: | N/A | +| `status` | [models.ResourceHeartbeatStatus72](../models/resourceheartbeatstatus72.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestdataunion16.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestdataunion16.md index 81fc5e752..8b2147e4a 100644 --- a/client-sdks/platform/typescript/docs/models/syncreconcilerequestdataunion16.md +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestdataunion16.md @@ -3,549 +3,112 @@ ## Supported Types -### `models.DataStorage` +### `models.DataAwsBedrock` ```typescript -const value: models.DataStorage = { - data: { - path: "/home", - pathExists: false, - status: { - collectionIssues: [ - { - message: "", - reason: "collection-failed", - severity: "warning", - source: "", - }, - ], - health: "unhealthy", - lifecycle: "stopping", - partial: false, - stale: true, - }, - backend: "local", +const value: models.DataAwsBedrock = { + availability: { + catalogRevision: "", + models: [], + source: "aws-bedrock", }, - resourceType: "storage", -}; -``` - -### `models.DataWorker` - -```typescript -const value: models.DataWorker = { - data: { - commandSupported: false, - events: [ + region: "", + status: { + collectionIssues: [ { - kind: "", message: "", - severity: "info", - timestamp: new Date("2024-07-21T11:12:11.792Z"), + reason: "timed-out", + severity: "warning", + source: "", }, ], - imagePathPresent: true, - status: { - collectionIssues: [ - { - message: "", - reason: "not-installed", - severity: "warning", - source: "", - }, - ], - health: "degraded", - lifecycle: "updating", - partial: true, - stale: false, - }, - triggerCount: 71218, - backend: "local", + health: "unhealthy", + lifecycle: "deleting", + partial: false, + stale: false, }, - resourceType: "worker", + backend: "awsBedrock", }; ``` -### `models.DataContainer` +### `models.DataGcpVertex` ```typescript -const value: models.DataContainer = { - data: { - attentionCount: 486054, - containerId: "", - events: [], - replicaUnits: [], - replicas: {}, - schedulingMode: "stateful", - status: { - collectionIssues: [ - { - message: "", - reason: "not-installed", - severity: "info", - source: "", - }, - ], - health: "degraded", - lifecycle: "failed", - partial: false, - stale: true, - }, - backend: "horizonPlatform", - }, - resourceType: "container", -}; -``` - -### `models.DataDaemon` - -```typescript -const value: models.DataDaemon = { - data: { - assignedMachines: 489905, - capacityGroup: "", - commandSupported: true, - daemonInstances: [], - desiredMachines: 665477, - events: [ +const value: models.DataGcpVertex = { + availability: { + catalogRevision: "", + models: [ { - message: "", - reason: "", + accessTest: "failed", + availability: "blocked", + blockers: [], + clientApis: [ + "open-ai-chat-completions", + ], + publicModelId: "", }, ], - healthyInstances: 921353, - horizonClusterId: "", - horizonStatus: "", - latestUpdateTimestamp: "", - status: { - collectionIssues: [ - { - message: "", - reason: "api-unavailable", - severity: "warning", - source: "", - }, - ], - health: "unknown", - lifecycle: "stopped", - partial: true, - stale: true, - }, - unavailableInstances: 431179, - backend: "azure", + source: "anthropic", }, - resourceType: "daemon", -}; -``` - -### `models.DataComputeCluster` - -```typescript -const value: models.DataComputeCluster = { - data: { - dockerAvailable: true, - name: "", - networkAvailable: true, - nodes: {}, - status: { - collectionIssues: [ - { - message: "", - reason: "forbidden", - severity: "error", - source: "", - }, - ], - health: "unknown", - lifecycle: "running", - partial: false, - stale: true, - }, - backend: "local", + location: "", + project: "", + status: { + collectionIssues: [], + health: "degraded", + lifecycle: "unknown", + partial: false, + stale: false, }, - resourceType: "compute-cluster", + backend: "gcpVertex", }; ``` -### `models.DataKubernetesCluster` +### `models.DataAzureFoundry` ```typescript -const value: models.DataKubernetesCluster = { - data: { - events: [ +const value: models.DataAzureFoundry = { + accountName: "", + availability: { + catalogRevision: "", + models: [ { - message: "", - reason: "", + accessTest: "verified", + availability: "available", + blockers: [ + "quota-configuration-required", + ], + clientApis: [ + "open-ai-responses", + ], + publicModelId: "", }, ], - name: "", - nodeCounts: {}, - podCounts: {}, - status: { - collectionIssues: [ - { - message: "", - reason: "timed-out", - severity: "warning", - source: "", - }, - ], - health: "unknown", - lifecycle: "stopping", - partial: true, - stale: false, - }, - }, - resourceType: "kubernetes-cluster", -}; -``` - -### `models.DataQueue` - -```typescript -const value: models.DataQueue = { - data: { - messageStorageAllowedPersistenceRegions: [ - "", - "", - ], - status: { - collectionIssues: [], - health: "healthy", - lifecycle: "failed", - partial: true, - stale: true, - }, - subscriptionLabels: { - "key": "", - }, - subscriptionPushAttributes: { - "key": "", - "key1": "", - "key2": "", - }, - topicLabels: {}, - topicName: "", - backend: "gcpPubSub", - }, - resourceType: "queue", -}; -``` - -### `models.DataKv` - -```typescript -const value: models.DataKv = { - data: { - status: { - collectionIssues: [ - { - message: "", - reason: "api-unavailable", - severity: "warning", - source: "", - }, - ], - health: "degraded", - lifecycle: "unknown", - partial: true, - stale: false, - }, - storageAccountName: "", - tableExists: false, - tableName: "", - backend: "azureTable", - }, - resourceType: "kv", -}; -``` - -### `models.DataPostgres` - -```typescript -const value: models.DataPostgres = { - data: { - serverName: "", - status: { - collectionIssues: [], - health: "unknown", - lifecycle: "stopped", - partial: true, - stale: false, - }, - backend: "flexibleServer", - }, - resourceType: "postgres", -}; -``` - -### `models.DataVault` - -```typescript -const value: models.DataVault = { - data: { - accountId: "", - parameterMetadataSampled: true, - prefix: "", - region: "", - status: { - collectionIssues: [], - health: "unknown", - lifecycle: "unknown", - partial: true, - stale: false, - }, - backend: "awsParameterStore", - }, - resourceType: "vault", -}; -``` - -### `models.DataServiceAccount` - -```typescript -const value: models.DataServiceAccount = { - data: { - customRoleDefinitionCount: 991371, - customRoleDefinitionIds: [ - "", - "", - "", - ], - location: "", - managedTagCount: 438151, - name: "", - resourceGroup: "", - resourceId: "", - roleAssignmentCount: 703891, - roleAssignmentIds: [ - "", - ], - stackPermissionsApplied: true, - status: { - collectionIssues: [ - { - message: "", - reason: "timed-out", - severity: "warning", - source: "", - }, - ], - health: "healthy", - lifecycle: "stopped", - partial: true, - stale: false, - }, - backend: "azureManagedIdentity", + source: "aws-bedrock", }, - resourceType: "service-account", -}; -``` - -### `models.DataNetwork` - -```typescript -const value: models.DataNetwork = { - data: { - isByoVnet: true, - status: { - collectionIssues: [], - health: "unhealthy", - lifecycle: "unknown", - partial: true, - stale: true, - }, - backend: "azureVnet", - }, - resourceType: "network", -}; -``` - -### `models.DataRemoteStackManagement` - -```typescript -const value: models.DataRemoteStackManagement = { - data: { - managementPermissionsApplied: true, - status: { - collectionIssues: [ - { - message: "", - reason: "api-unavailable", - severity: "warning", - source: "", - }, - ], - health: "unknown", - lifecycle: "stopping", - partial: true, - stale: true, - }, - backend: "awsIamRole", - }, - resourceType: "remote-stack-management", -}; -``` - -### `models.DataArtifactRegistry` - -```typescript -const value: models.DataArtifactRegistry = { - data: { - reachable: false, - registryUrl: "https://tedious-reach.com", - status: { - collectionIssues: [], - health: "unknown", - lifecycle: "creating", - partial: true, - stale: false, - }, - backend: "local", - }, - resourceType: "artifact-registry", -}; -``` - -### `models.DataBuild` - -```typescript -const value: models.DataBuild = { - data: { - encryptionKeyPresent: false, - environmentVariableCount: 19119, - projectName: "", - serviceRolePresent: true, - status: { - collectionIssues: [ - { - message: "", - reason: "not-installed", - severity: "info", - source: "", - }, - ], - health: "healthy", - lifecycle: "failed", - partial: false, - stale: true, - }, - backend: "awsCodeBuild", - }, - resourceType: "build", -}; -``` - -### `models.DataServiceActivation` - -```typescript -const value: models.DataServiceActivation = { - data: { - enabled: true, - projectId: "", - serviceName: "", - status: { - collectionIssues: [ - { - message: "", - reason: "api-unavailable", - severity: "error", - source: "", - }, - ], - health: "unhealthy", - lifecycle: "stopped", - partial: true, - stale: true, - }, - backend: "gcpServiceUsage", - }, - resourceType: "service_activation", -}; -``` - -### `models.DataAzureResourceGroup` - -```typescript -const value: models.DataAzureResourceGroup = { - data: { - managedTags: {}, - name: "", - status: { - collectionIssues: [ - { - message: "", - reason: "timed-out", - severity: "error", - source: "", - }, - ], - health: "degraded", - lifecycle: "deleting", - partial: true, - stale: true, - }, - }, - resourceType: "azure_resource_group", -}; -``` - -### `models.DataAzureStorageAccount` - -```typescript -const value: models.DataAzureStorageAccount = { - data: { - name: "", - primaryEndpoints: {}, - secondaryEndpoints: {}, - status: { - collectionIssues: [], - health: "unhealthy", - lifecycle: "unknown", - partial: true, - stale: false, - }, - }, - resourceType: "azure_storage_account", -}; -``` - -### `models.DataAzureContainerAppsEnvironment` - -```typescript -const value: models.DataAzureContainerAppsEnvironment = { - data: { - name: "", - status: { - collectionIssues: [], - health: "unknown", - lifecycle: "scaling", - partial: true, - stale: true, - }, - workloadProfileCount: 415280, - workloadProfiles: [], + status: { + collectionIssues: [], + health: "unknown", + lifecycle: "stopped", + partial: false, + stale: false, }, - resourceType: "azure_container_apps_environment", + backend: "azureFoundry", }; ``` -### `models.DataAzureServiceBusNamespace` +### `models.DataExternal` ```typescript -const value: models.DataAzureServiceBusNamespace = { - data: { - name: "", - privateEndpointConnectionCount: 152029, - status: { - collectionIssues: [], - health: "degraded", - lifecycle: "creating", - partial: true, - stale: false, - }, +const value: models.DataExternal = { + provider: "", + status: { + collectionIssues: [], + health: "unknown", + lifecycle: "running", + partial: true, + stale: false, }, - resourceType: "azure_service_bus_namespace", + backend: "external", }; ``` diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestdataunion17.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestdataunion17.md new file mode 100644 index 000000000..b5694c56f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestdataunion17.md @@ -0,0 +1,57 @@ +# SyncReconcileRequestDataUnion17 + + +## Supported Types + +### `models.DataAwsKms` + +```typescript +const value: models.DataAwsKms = { + data: { + enabled: true, + keyArn: "", + keySpec: "", + keyState: "", + keyUsage: "", + status: { + health: "unhealthy", + lifecycle: "stopped", + }, + }, + provider: "aws-kms", +}; +``` + +### `models.DataGcpCloudKms` + +```typescript +const value: models.DataGcpCloudKms = { + data: { + cryptoKeyName: "", + purpose: "", + status: { + health: "degraded", + lifecycle: "running", + }, + }, + provider: "gcp-cloud-kms", +}; +``` + +### `models.DataAzureKeyVault2` + +```typescript +const value: models.DataAzureKeyVault2 = { + data: { + keyId: "", + keyOperations: [], + keyType: "", + status: { + health: "unknown", + lifecycle: "deleting", + }, + }, + provider: "azure-key-vault", +}; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestdataunion18.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestdataunion18.md new file mode 100644 index 000000000..f38e2bb3e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestdataunion18.md @@ -0,0 +1,606 @@ +# SyncReconcileRequestDataUnion18 + + +## Supported Types + +### `models.DataStorage` + +```typescript +const value: models.DataStorage = { + data: { + path: "/home", + pathExists: false, + status: { + collectionIssues: [ + { + message: "", + reason: "collection-failed", + severity: "warning", + source: "", + }, + ], + health: "unhealthy", + lifecycle: "stopping", + partial: false, + stale: true, + }, + backend: "local", + }, + resourceType: "storage", +}; +``` + +### `models.DataWorker` + +```typescript +const value: models.DataWorker = { + data: { + commandSupported: false, + events: [ + { + kind: "", + message: "", + severity: "info", + timestamp: new Date("2024-07-21T11:12:11.792Z"), + }, + ], + imagePathPresent: true, + status: { + collectionIssues: [ + { + message: "", + reason: "not-installed", + severity: "warning", + source: "", + }, + ], + health: "degraded", + lifecycle: "updating", + partial: true, + stale: false, + }, + triggerCount: 71218, + backend: "local", + }, + resourceType: "worker", +}; +``` + +### `models.DataContainer` + +```typescript +const value: models.DataContainer = { + data: { + attentionCount: 486054, + containerId: "", + events: [], + replicaUnits: [], + replicas: {}, + schedulingMode: "stateful", + status: { + collectionIssues: [ + { + message: "", + reason: "not-installed", + severity: "info", + source: "", + }, + ], + health: "degraded", + lifecycle: "failed", + partial: false, + stale: true, + }, + backend: "horizonPlatform", + }, + resourceType: "container", +}; +``` + +### `models.DataDaemon` + +```typescript +const value: models.DataDaemon = { + data: { + assignedMachines: 489905, + capacityGroup: "", + commandSupported: true, + daemonInstances: [], + desiredMachines: 665477, + events: [ + { + message: "", + reason: "", + }, + ], + healthyInstances: 921353, + horizonClusterId: "", + horizonStatus: "", + latestUpdateTimestamp: "", + status: { + collectionIssues: [ + { + message: "", + reason: "api-unavailable", + severity: "warning", + source: "", + }, + ], + health: "unknown", + lifecycle: "stopped", + partial: true, + stale: true, + }, + unavailableInstances: 431179, + backend: "azure", + }, + resourceType: "daemon", +}; +``` + +### `models.DataComputeCluster` + +```typescript +const value: models.DataComputeCluster = { + data: { + dockerAvailable: true, + name: "", + networkAvailable: true, + nodes: {}, + status: { + collectionIssues: [ + { + message: "", + reason: "forbidden", + severity: "error", + source: "", + }, + ], + health: "unknown", + lifecycle: "running", + partial: false, + stale: true, + }, + backend: "local", + }, + resourceType: "compute-cluster", +}; +``` + +### `models.DataKubernetesCluster` + +```typescript +const value: models.DataKubernetesCluster = { + data: { + events: [ + { + message: "", + reason: "", + }, + ], + name: "", + nodeCounts: {}, + podCounts: {}, + status: { + collectionIssues: [ + { + message: "", + reason: "timed-out", + severity: "warning", + source: "", + }, + ], + health: "unknown", + lifecycle: "stopping", + partial: true, + stale: false, + }, + }, + resourceType: "kubernetes-cluster", +}; +``` + +### `models.DataQueue` + +```typescript +const value: models.DataQueue = { + data: { + messageStorageAllowedPersistenceRegions: [ + "", + "", + ], + status: { + collectionIssues: [], + health: "healthy", + lifecycle: "failed", + partial: true, + stale: true, + }, + subscriptionLabels: { + "key": "", + }, + subscriptionPushAttributes: { + "key": "", + "key1": "", + "key2": "", + }, + topicLabels: {}, + topicName: "", + backend: "gcpPubSub", + }, + resourceType: "queue", +}; +``` + +### `models.DataKv` + +```typescript +const value: models.DataKv = { + data: { + status: { + collectionIssues: [ + { + message: "", + reason: "api-unavailable", + severity: "warning", + source: "", + }, + ], + health: "degraded", + lifecycle: "unknown", + partial: true, + stale: false, + }, + storageAccountName: "", + tableExists: false, + tableName: "", + backend: "azureTable", + }, + resourceType: "kv", +}; +``` + +### `models.DataPostgres` + +```typescript +const value: models.DataPostgres = { + data: { + serverName: "", + status: { + collectionIssues: [], + health: "unknown", + lifecycle: "stopped", + partial: true, + stale: false, + }, + backend: "flexibleServer", + }, + resourceType: "postgres", +}; +``` + +### `models.DataVault` + +```typescript +const value: models.DataVault = { + data: { + accountId: "", + parameterMetadataSampled: true, + prefix: "", + region: "", + status: { + collectionIssues: [], + health: "unknown", + lifecycle: "unknown", + partial: true, + stale: false, + }, + backend: "awsParameterStore", + }, + resourceType: "vault", +}; +``` + +### `models.DataServiceAccount` + +```typescript +const value: models.DataServiceAccount = { + data: { + customRoleDefinitionCount: 991371, + customRoleDefinitionIds: [ + "", + "", + "", + ], + location: "", + managedTagCount: 438151, + name: "", + resourceGroup: "", + resourceId: "", + roleAssignmentCount: 703891, + roleAssignmentIds: [ + "", + ], + stackPermissionsApplied: true, + status: { + collectionIssues: [ + { + message: "", + reason: "timed-out", + severity: "warning", + source: "", + }, + ], + health: "healthy", + lifecycle: "stopped", + partial: true, + stale: false, + }, + backend: "azureManagedIdentity", + }, + resourceType: "service-account", +}; +``` + +### `models.DataNetwork` + +```typescript +const value: models.DataNetwork = { + data: { + isByoVnet: true, + status: { + collectionIssues: [], + health: "unhealthy", + lifecycle: "unknown", + partial: true, + stale: true, + }, + backend: "azureVnet", + }, + resourceType: "network", +}; +``` + +### `models.DataRemoteStackManagement` + +```typescript +const value: models.DataRemoteStackManagement = { + data: { + managementPermissionsApplied: true, + status: { + collectionIssues: [ + { + message: "", + reason: "api-unavailable", + severity: "warning", + source: "", + }, + ], + health: "unknown", + lifecycle: "stopping", + partial: true, + stale: true, + }, + backend: "awsIamRole", + }, + resourceType: "remote-stack-management", +}; +``` + +### `models.DataArtifactRegistry` + +```typescript +const value: models.DataArtifactRegistry = { + data: { + reachable: false, + registryUrl: "https://tedious-reach.com", + status: { + collectionIssues: [], + health: "unknown", + lifecycle: "creating", + partial: true, + stale: false, + }, + backend: "local", + }, + resourceType: "artifact-registry", +}; +``` + +### `models.DataBuild` + +```typescript +const value: models.DataBuild = { + data: { + encryptionKeyPresent: false, + environmentVariableCount: 19119, + projectName: "", + serviceRolePresent: true, + status: { + collectionIssues: [ + { + message: "", + reason: "not-installed", + severity: "info", + source: "", + }, + ], + health: "healthy", + lifecycle: "failed", + partial: false, + stale: true, + }, + backend: "awsCodeBuild", + }, + resourceType: "build", +}; +``` + +### `models.DataServiceActivation` + +```typescript +const value: models.DataServiceActivation = { + data: { + enabled: true, + projectId: "", + serviceName: "", + status: { + collectionIssues: [ + { + message: "", + reason: "api-unavailable", + severity: "error", + source: "", + }, + ], + health: "unhealthy", + lifecycle: "stopped", + partial: true, + stale: true, + }, + backend: "gcpServiceUsage", + }, + resourceType: "service_activation", +}; +``` + +### `models.DataAzureResourceGroup` + +```typescript +const value: models.DataAzureResourceGroup = { + data: { + managedTags: {}, + name: "", + status: { + collectionIssues: [ + { + message: "", + reason: "timed-out", + severity: "error", + source: "", + }, + ], + health: "degraded", + lifecycle: "deleting", + partial: true, + stale: true, + }, + }, + resourceType: "azure_resource_group", +}; +``` + +### `models.DataAzureStorageAccount` + +```typescript +const value: models.DataAzureStorageAccount = { + data: { + name: "", + primaryEndpoints: {}, + secondaryEndpoints: {}, + status: { + collectionIssues: [], + health: "unhealthy", + lifecycle: "unknown", + partial: true, + stale: false, + }, + }, + resourceType: "azure_storage_account", +}; +``` + +### `models.DataAzureContainerAppsEnvironment` + +```typescript +const value: models.DataAzureContainerAppsEnvironment = { + data: { + name: "", + status: { + collectionIssues: [], + health: "unknown", + lifecycle: "scaling", + partial: true, + stale: true, + }, + workloadProfileCount: 415280, + workloadProfiles: [], + }, + resourceType: "azure_container_apps_environment", +}; +``` + +### `models.DataAzureServiceBusNamespace` + +```typescript +const value: models.DataAzureServiceBusNamespace = { + data: { + name: "", + privateEndpointConnectionCount: 152029, + status: { + collectionIssues: [], + health: "degraded", + lifecycle: "creating", + partial: true, + stale: false, + }, + }, + resourceType: "azure_service_bus_namespace", +}; +``` + +### `models.DataAi` + +```typescript +const value: models.DataAi = { + data: { + availability: { + catalogRevision: "", + models: [ + { + accessTest: "failed", + availability: "blocked", + blockers: [], + clientApis: [ + "open-ai-chat-completions", + ], + publicModelId: "", + }, + ], + source: "anthropic", + }, + location: "", + project: "", + status: { + collectionIssues: [], + health: "degraded", + lifecycle: "unknown", + partial: false, + stale: false, + }, + backend: "gcpVertex", + }, + resourceType: "ai", +}; +``` + +### `models.DataKey` + +```typescript +const value: models.DataKey = { + data: { + data: { + keyId: "", + keyOperations: [], + keyType: "", + status: { + health: "unknown", + lifecycle: "deleting", + }, + }, + provider: "azure-key-vault", + }, + resourceType: "key", +}; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestdataunion9.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestdataunion9.md index 3da519146..3a852e463 100644 --- a/client-sdks/platform/typescript/docs/models/syncreconcilerequestdataunion9.md +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestdataunion9.md @@ -41,23 +41,30 @@ const value: models.DataGcpSecretManager = { }; ``` -### `models.DataAzureKeyVault` +### `models.DataAzureKeyVault1` ```typescript -const value: models.DataAzureKeyVault = { - accessPolicyCount: 923246, +const value: models.DataAzureKeyVault1 = { + accessPolicyCount: 582917, name: "", - privateEndpointConnectionCount: 319306, + privateEndpointConnectionCount: 112234, publicNetworkAccess: "", rbacAuthorizationEnabled: true, secretMetadataListed: false, - softDeleteEnabled: false, - softDeleteRetentionDays: 497787, + softDeleteEnabled: true, + softDeleteRetentionDays: 457442, status: { - collectionIssues: [], - health: "degraded", - lifecycle: "creating", - partial: true, + collectionIssues: [ + { + message: "", + reason: "timed-out", + severity: "error", + source: "", + }, + ], + health: "unknown", + lifecycle: "updating", + partial: false, stale: false, }, backend: "azureKeyVault", diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestinitialsetupauthority.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestinitialsetupauthority.md new file mode 100644 index 000000000..a28264c13 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestinitialsetupauthority.md @@ -0,0 +1,17 @@ +# SyncReconcileRequestInitialSetupAuthority + +Actor that owns structural work during the initial setup phase. + +## Example Usage + +```typescript +import { SyncReconcileRequestInitialSetupAuthority } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestInitialSetupAuthority = "importedHandoff"; +``` + +## Values + +```typescript +"importedHandoff" | "directSetup" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestmodel1.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestmodel1.md new file mode 100644 index 000000000..168609290 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestmodel1.md @@ -0,0 +1,31 @@ +# SyncReconcileRequestModel1 + +## Example Usage + +```typescript +import { SyncReconcileRequestModel1 } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestModel1 = { + accessTest: "failed", + availability: "available", + blockers: [ + "quota-configuration-required", + ], + clientApis: [ + "open-ai-chat-completions", + ], + publicModelId: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `accessTest` | [models.SyncReconcileRequestAccessTest1](../models/syncreconcilerequestaccesstest1.md) | :heavy_check_mark: | N/A | +| `availability` | [models.SyncReconcileRequestModelAvailability1](../models/syncreconcilerequestmodelavailability1.md) | :heavy_check_mark: | N/A | +| `blockers` | [models.SyncReconcileRequestBlockerEnum1](../models/syncreconcilerequestblockerenum1.md)[] | :heavy_check_mark: | N/A | +| `clientApis` | [models.SyncReconcileRequestClientApi1](../models/syncreconcilerequestclientapi1.md)[] | :heavy_check_mark: | N/A | +| `errorCode` | *string* | :heavy_minus_sign: | N/A | +| `publicModelId` | *string* | :heavy_check_mark: | N/A | +| `testedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestmodel2.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestmodel2.md new file mode 100644 index 000000000..a6412bdcd --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestmodel2.md @@ -0,0 +1,31 @@ +# SyncReconcileRequestModel2 + +## Example Usage + +```typescript +import { SyncReconcileRequestModel2 } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestModel2 = { + accessTest: "failed", + availability: "blocked", + blockers: [ + "deployment-required", + ], + clientApis: [ + "open-ai-responses", + ], + publicModelId: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `accessTest` | [models.SyncReconcileRequestAccessTest2](../models/syncreconcilerequestaccesstest2.md) | :heavy_check_mark: | N/A | +| `availability` | [models.SyncReconcileRequestModelAvailability2](../models/syncreconcilerequestmodelavailability2.md) | :heavy_check_mark: | N/A | +| `blockers` | [models.SyncReconcileRequestBlockerEnum2](../models/syncreconcilerequestblockerenum2.md)[] | :heavy_check_mark: | N/A | +| `clientApis` | [models.SyncReconcileRequestClientApi2](../models/syncreconcilerequestclientapi2.md)[] | :heavy_check_mark: | N/A | +| `errorCode` | *string* | :heavy_minus_sign: | N/A | +| `publicModelId` | *string* | :heavy_check_mark: | N/A | +| `testedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestmodel3.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestmodel3.md new file mode 100644 index 000000000..b167afe4f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestmodel3.md @@ -0,0 +1,29 @@ +# SyncReconcileRequestModel3 + +## Example Usage + +```typescript +import { SyncReconcileRequestModel3 } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestModel3 = { + accessTest: "failed", + availability: "blocked", + blockers: [], + clientApis: [ + "open-ai-responses", + ], + publicModelId: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `accessTest` | [models.SyncReconcileRequestAccessTest3](../models/syncreconcilerequestaccesstest3.md) | :heavy_check_mark: | N/A | +| `availability` | [models.SyncReconcileRequestModelAvailability3](../models/syncreconcilerequestmodelavailability3.md) | :heavy_check_mark: | N/A | +| `blockers` | [models.SyncReconcileRequestBlockerEnum3](../models/syncreconcilerequestblockerenum3.md)[] | :heavy_check_mark: | N/A | +| `clientApis` | [models.SyncReconcileRequestClientApi3](../models/syncreconcilerequestclientapi3.md)[] | :heavy_check_mark: | N/A | +| `errorCode` | *string* | :heavy_minus_sign: | N/A | +| `publicModelId` | *string* | :heavy_check_mark: | N/A | +| `testedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestmodel4.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestmodel4.md new file mode 100644 index 000000000..aa6cf0f7b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestmodel4.md @@ -0,0 +1,29 @@ +# SyncReconcileRequestModel4 + +## Example Usage + +```typescript +import { SyncReconcileRequestModel4 } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestModel4 = { + accessTest: "not-checked", + availability: "unknown", + blockers: [], + clientApis: [ + "open-ai-responses", + ], + publicModelId: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `accessTest` | [models.SyncReconcileRequestAccessTest4](../models/syncreconcilerequestaccesstest4.md) | :heavy_check_mark: | N/A | +| `availability` | [models.SyncReconcileRequestModelAvailability4](../models/syncreconcilerequestmodelavailability4.md) | :heavy_check_mark: | N/A | +| `blockers` | [models.SyncReconcileRequestBlockerEnum4](../models/syncreconcilerequestblockerenum4.md)[] | :heavy_check_mark: | N/A | +| `clientApis` | [models.SyncReconcileRequestClientApi4](../models/syncreconcilerequestclientapi4.md)[] | :heavy_check_mark: | N/A | +| `errorCode` | *string* | :heavy_minus_sign: | N/A | +| `publicModelId` | *string* | :heavy_check_mark: | N/A | +| `testedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestmodelavailability1.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestmodelavailability1.md new file mode 100644 index 000000000..77cee6d22 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestmodelavailability1.md @@ -0,0 +1,15 @@ +# SyncReconcileRequestModelAvailability1 + +## Example Usage + +```typescript +import { SyncReconcileRequestModelAvailability1 } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestModelAvailability1 = "available"; +``` + +## Values + +```typescript +"available" | "blocked" | "unknown" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestmodelavailability2.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestmodelavailability2.md new file mode 100644 index 000000000..35caa32d2 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestmodelavailability2.md @@ -0,0 +1,15 @@ +# SyncReconcileRequestModelAvailability2 + +## Example Usage + +```typescript +import { SyncReconcileRequestModelAvailability2 } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestModelAvailability2 = "available"; +``` + +## Values + +```typescript +"available" | "blocked" | "unknown" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestmodelavailability3.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestmodelavailability3.md new file mode 100644 index 000000000..e81e8dfba --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestmodelavailability3.md @@ -0,0 +1,15 @@ +# SyncReconcileRequestModelAvailability3 + +## Example Usage + +```typescript +import { SyncReconcileRequestModelAvailability3 } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestModelAvailability3 = "available"; +``` + +## Values + +```typescript +"available" | "blocked" | "unknown" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestmodelavailability4.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestmodelavailability4.md new file mode 100644 index 000000000..b2d8697ad --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestmodelavailability4.md @@ -0,0 +1,15 @@ +# SyncReconcileRequestModelAvailability4 + +## Example Usage + +```typescript +import { SyncReconcileRequestModelAvailability4 } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestModelAvailability4 = "blocked"; +``` + +## Values + +```typescript +"available" | "blocked" | "unknown" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstack.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstack.md new file mode 100644 index 000000000..51fddc16d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstack.md @@ -0,0 +1,24 @@ +# SyncReconcileRequestPendingPreparedStack + +A bag of resources, unaware of any cloud. + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStack } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStack = { + id: "", + resources: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the stack | +| `inputs` | [models.SyncReconcileRequestPendingPreparedStackInput](../models/syncreconcilerequestpendingpreparedstackinput.md)[] | :heavy_minus_sign: | Input definitions required before setup or deployment can proceed. | +| `permissions` | [models.SyncReconcileRequestPendingPreparedStackPermissions](../models/syncreconcilerequestpendingpreparedstackpermissions.md) | :heavy_minus_sign: | Combined permissions configuration that contains both profiles and management | +| `resources` | Record | :heavy_check_mark: | Map of resource IDs to their configurations and lifecycle settings | +| `supportedPlatforms` | [models.SyncReconcileRequestPendingPreparedStackSupportedPlatform](../models/syncreconcilerequestpendingpreparedstacksupportedplatform.md)[] | :heavy_minus_sign: | Which platforms this stack supports. When None, all platforms are supported. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackconfig.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackconfig.md new file mode 100644 index 000000000..ac778a24d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackconfig.md @@ -0,0 +1,22 @@ +# SyncReconcileRequestPendingPreparedStackConfig + +Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackConfig } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackConfig = { + id: "", + type: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. | +| `type` | *string* | :heavy_check_mark: | Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. | +| `additionalProperties` | Record | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackdefaultboolean.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackdefaultboolean.md new file mode 100644 index 000000000..aed707997 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackdefaultboolean.md @@ -0,0 +1,19 @@ +# SyncReconcileRequestPendingPreparedStackDefaultBoolean + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackDefaultBoolean } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackDefaultBoolean = { + type: "boolean", + value: true, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `type` | [models.SyncReconcileRequestPendingPreparedStackTypeBoolean](../models/syncreconcilerequestpendingpreparedstacktypeboolean.md) | :heavy_check_mark: | N/A | +| `value` | *boolean* | :heavy_check_mark: | Boolean default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackdefaultnumber.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackdefaultnumber.md new file mode 100644 index 000000000..2d672fa40 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackdefaultnumber.md @@ -0,0 +1,19 @@ +# SyncReconcileRequestPendingPreparedStackDefaultNumber + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackDefaultNumber } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackDefaultNumber = { + type: "number", + value: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | +| `type` | [models.SyncReconcileRequestPendingPreparedStackTypeNumber](../models/syncreconcilerequestpendingpreparedstacktypenumber.md) | :heavy_check_mark: | N/A | +| `value` | *string* | :heavy_check_mark: | Number default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackdefaultstring.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackdefaultstring.md new file mode 100644 index 000000000..b6f510b75 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackdefaultstring.md @@ -0,0 +1,19 @@ +# SyncReconcileRequestPendingPreparedStackDefaultString + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackDefaultString } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackDefaultString = { + type: "string", + value: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | +| `type` | [models.SyncReconcileRequestPendingPreparedStackTypeString](../models/syncreconcilerequestpendingpreparedstacktypestring.md) | :heavy_check_mark: | N/A | +| `value` | *string* | :heavy_check_mark: | String default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackdefaultstringlist.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackdefaultstringlist.md new file mode 100644 index 000000000..1163d420c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackdefaultstringlist.md @@ -0,0 +1,22 @@ +# SyncReconcileRequestPendingPreparedStackDefaultStringList + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackDefaultStringList } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackDefaultStringList = { + type: "stringList", + value: [ + "", + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | +| `type` | [models.SyncReconcileRequestPendingPreparedStackTypeStringList](../models/syncreconcilerequestpendingpreparedstacktypestringlist.md) | :heavy_check_mark: | N/A | +| `value` | *string*[] | :heavy_check_mark: | String list default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackdefaultunion.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackdefaultunion.md new file mode 100644 index 000000000..65d6abaad --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackdefaultunion.md @@ -0,0 +1,51 @@ +# SyncReconcileRequestPendingPreparedStackDefaultUnion + + +## Supported Types + +### `models.SyncReconcileRequestPendingPreparedStackDefaultString` + +```typescript +const value: models.SyncReconcileRequestPendingPreparedStackDefaultString = { + type: "string", + value: "", +}; +``` + +### `models.SyncReconcileRequestPendingPreparedStackDefaultNumber` + +```typescript +const value: models.SyncReconcileRequestPendingPreparedStackDefaultNumber = { + type: "number", + value: "", +}; +``` + +### `models.SyncReconcileRequestPendingPreparedStackDefaultBoolean` + +```typescript +const value: models.SyncReconcileRequestPendingPreparedStackDefaultBoolean = { + type: "boolean", + value: true, +}; +``` + +### `models.SyncReconcileRequestPendingPreparedStackDefaultStringList` + +```typescript +const value: models.SyncReconcileRequestPendingPreparedStackDefaultStringList = + { + type: "stringList", + value: [ + "", + "", + ], + }; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackdependency.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackdependency.md new file mode 100644 index 000000000..082334ed0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackdependency.md @@ -0,0 +1,21 @@ +# SyncReconcileRequestPendingPreparedStackDependency + +Reference to a resource by its stable id and resource type. + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackDependency } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackDependency = { + id: "", + type: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | N/A | +| `type` | *string* | :heavy_check_mark: | Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackenv.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackenv.md new file mode 100644 index 000000000..158ac8c0e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackenv.md @@ -0,0 +1,21 @@ +# SyncReconcileRequestPendingPreparedStackEnv + +How a resolved stack input is injected into runtime environment variables. + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackEnv } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackEnv = { + name: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `name` | *string* | :heavy_check_mark: | Environment variable name. | +| `targetResources` | *string*[] | :heavy_minus_sign: | Target resource IDs or patterns. None means every env-capable resource. | +| `type` | *models.SyncReconcileRequestPendingPreparedStackTypeUnion* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackextend.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackextend.md new file mode 100644 index 000000000..1b05db9fe --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackextend.md @@ -0,0 +1,23 @@ +# SyncReconcileRequestPendingPreparedStackExtend + +A permission set that can be applied across different cloud platforms + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackExtend } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackExtend = { + description: "from unto closely", + id: "", + platforms: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | +| `description` | *string* | :heavy_check_mark: | Human-readable description of what this permission set allows | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the permission set (e.g., "storage/data-read") | +| `platforms` | [models.SyncReconcileRequestPendingPreparedStackExtendPlatforms](../models/syncreconcilerequestpendingpreparedstackextendplatforms.md) | :heavy_check_mark: | Platform-specific permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackextendaw.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackextendaw.md new file mode 100644 index 000000000..acbc8c0a1 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackextendaw.md @@ -0,0 +1,24 @@ +# SyncReconcileRequestPendingPreparedStackExtendAw + +AWS-specific platform permission configuration + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackExtendAw } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackExtendAw = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.SyncReconcileRequestPendingPreparedStackExtendAwBinding](../models/syncreconcilerequestpendingpreparedstackextendawbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `effect` | [models.SyncReconcileRequestPendingPreparedStackExtendEffect](../models/syncreconcilerequestpendingpreparedstackextendeffect.md) | :heavy_minus_sign: | IAM effect. Defaults to Allow. | +| `grant` | [models.SyncReconcileRequestPendingPreparedStackExtendAwGrant](../models/syncreconcilerequestpendingpreparedstackextendawgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackextendawbinding.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackextendawbinding.md new file mode 100644 index 000000000..ab6244c83 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackextendawbinding.md @@ -0,0 +1,18 @@ +# SyncReconcileRequestPendingPreparedStackExtendAwBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackExtendAwBinding } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackExtendAwBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.PendingPreparedStackExtendStateAwResource](../models/pendingpreparedstackextendstateawresource.md) | :heavy_minus_sign: | AWS-specific binding specification | +| `stack` | [models.SyncReconcileRequestPendingPreparedStackExtendAwStack](../models/syncreconcilerequestpendingpreparedstackextendawstack.md) | :heavy_minus_sign: | AWS-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackextendawgrant.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackextendawgrant.md new file mode 100644 index 000000000..988016168 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackextendawgrant.md @@ -0,0 +1,21 @@ +# SyncReconcileRequestPendingPreparedStackExtendAwGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackExtendAwGrant } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackExtendAwGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackextendawstack.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackextendawstack.md new file mode 100644 index 000000000..d96f87bc2 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackextendawstack.md @@ -0,0 +1,20 @@ +# SyncReconcileRequestPendingPreparedStackExtendAwStack + +AWS-specific binding specification + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackExtendAwStack } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackExtendAwStack = { + resources: [], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackextendazure.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackextendazure.md new file mode 100644 index 000000000..381ca360d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackextendazure.md @@ -0,0 +1,23 @@ +# SyncReconcileRequestPendingPreparedStackExtendAzure + +Azure-specific platform permission configuration + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackExtendAzure } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackExtendAzure = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.SyncReconcileRequestPendingPreparedStackExtendAzureBinding](../models/syncreconcilerequestpendingpreparedstackextendazurebinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.SyncReconcileRequestPendingPreparedStackExtendAzureGrant](../models/syncreconcilerequestpendingpreparedstackextendazuregrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackextendazurebinding.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackextendazurebinding.md new file mode 100644 index 000000000..60ffa2740 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackextendazurebinding.md @@ -0,0 +1,18 @@ +# SyncReconcileRequestPendingPreparedStackExtendAzureBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackExtendAzureBinding } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackExtendAzureBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.PendingPreparedStackExtendStateAzureResource](../models/pendingpreparedstackextendstateazureresource.md) | :heavy_minus_sign: | Azure-specific binding specification | +| `stack` | [models.SyncReconcileRequestPendingPreparedStackExtendAzureStack](../models/syncreconcilerequestpendingpreparedstackextendazurestack.md) | :heavy_minus_sign: | Azure-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackextendazuregrant.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackextendazuregrant.md new file mode 100644 index 000000000..386f50f9a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackextendazuregrant.md @@ -0,0 +1,21 @@ +# SyncReconcileRequestPendingPreparedStackExtendAzureGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackExtendAzureGrant } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackExtendAzureGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackextendazurestack.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackextendazurestack.md new file mode 100644 index 000000000..4dd07e114 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackextendazurestack.md @@ -0,0 +1,19 @@ +# SyncReconcileRequestPendingPreparedStackExtendAzureStack + +Azure-specific binding specification + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackExtendAzureStack } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackExtendAzureStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackextendeffect.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackextendeffect.md new file mode 100644 index 000000000..77b0d00a4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackextendeffect.md @@ -0,0 +1,17 @@ +# SyncReconcileRequestPendingPreparedStackExtendEffect + +IAM effect. Defaults to Allow. + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackExtendEffect } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackExtendEffect = "Allow"; +``` + +## Values + +```typescript +"Allow" | "Deny" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackextendgcp.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackextendgcp.md new file mode 100644 index 000000000..bd58f0f57 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackextendgcp.md @@ -0,0 +1,23 @@ +# SyncReconcileRequestPendingPreparedStackExtendGcp + +GCP-specific platform permission configuration + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackExtendGcp } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackExtendGcp = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.SyncReconcileRequestPendingPreparedStackExtendGcpBinding](../models/syncreconcilerequestpendingpreparedstackextendgcpbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.SyncReconcileRequestPendingPreparedStackExtendGcpGrant](../models/syncreconcilerequestpendingpreparedstackextendgcpgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackextendgcpbinding.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackextendgcpbinding.md new file mode 100644 index 000000000..8f80ba17e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackextendgcpbinding.md @@ -0,0 +1,18 @@ +# SyncReconcileRequestPendingPreparedStackExtendGcpBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackExtendGcpBinding } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackExtendGcpBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | +| `resource` | [models.PendingPreparedStackExtendStateGcpResource](../models/pendingpreparedstackextendstategcpresource.md) | :heavy_minus_sign: | GCP-specific binding specification | +| `stack` | [models.SyncReconcileRequestPendingPreparedStackExtendGcpStack](../models/syncreconcilerequestpendingpreparedstackextendgcpstack.md) | :heavy_minus_sign: | GCP-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackextendgcpgrant.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackextendgcpgrant.md new file mode 100644 index 000000000..00799a996 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackextendgcpgrant.md @@ -0,0 +1,21 @@ +# SyncReconcileRequestPendingPreparedStackExtendGcpGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackExtendGcpGrant } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackExtendGcpGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackextendgcpstack.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackextendgcpstack.md new file mode 100644 index 000000000..90b930919 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackextendgcpstack.md @@ -0,0 +1,20 @@ +# SyncReconcileRequestPendingPreparedStackExtendGcpStack + +GCP-specific binding specification + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackExtendGcpStack } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackExtendGcpStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | +| `condition` | *models.PendingPreparedStackExtendStateStackConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackextendplatforms.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackextendplatforms.md new file mode 100644 index 000000000..8eab08438 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackextendplatforms.md @@ -0,0 +1,19 @@ +# SyncReconcileRequestPendingPreparedStackExtendPlatforms + +Platform-specific permission configurations + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackExtendPlatforms } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackExtendPlatforms = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | +| `aws` | [models.SyncReconcileRequestPendingPreparedStackExtendAw](../models/syncreconcilerequestpendingpreparedstackextendaw.md)[] | :heavy_minus_sign: | AWS permission configurations | +| `azure` | [models.SyncReconcileRequestPendingPreparedStackExtendAzure](../models/syncreconcilerequestpendingpreparedstackextendazure.md)[] | :heavy_minus_sign: | Azure permission configurations | +| `gcp` | [models.SyncReconcileRequestPendingPreparedStackExtendGcp](../models/syncreconcilerequestpendingpreparedstackextendgcp.md)[] | :heavy_minus_sign: | GCP permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackextendunion.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackextendunion.md new file mode 100644 index 000000000..945c5956d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackextendunion.md @@ -0,0 +1,23 @@ +# SyncReconcileRequestPendingPreparedStackExtendUnion + +Reference to a permission set - either by name or inline definition + + +## Supported Types + +### `models.SyncReconcileRequestPendingPreparedStackExtend` + +```typescript +const value: models.SyncReconcileRequestPendingPreparedStackExtend = { + description: "from unto closely", + id: "", + platforms: {}, +}; +``` + +### `string` + +```typescript +const value: string = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackinput.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackinput.md new file mode 100644 index 000000000..4c4778c1c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackinput.md @@ -0,0 +1,35 @@ +# SyncReconcileRequestPendingPreparedStackInput + +Stack input definition serialized into a release stack. + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackInput } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackInput = { + description: + "yet whine moral ew massive well-off forsaken willfully uh-huh developmental", + id: "", + kind: "integer", + label: "", + providedBy: [], + required: true, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `default` | *models.SyncReconcileRequestPendingPreparedStackDefaultUnion* | :heavy_minus_sign: | N/A | +| `description` | *string* | :heavy_check_mark: | Human-facing helper text. | +| `env` | [models.SyncReconcileRequestPendingPreparedStackEnv](../models/syncreconcilerequestpendingpreparedstackenv.md)[] | :heavy_minus_sign: | Runtime env-var mappings for v1 input resolution. | +| `id` | *string* | :heavy_check_mark: | Stable input ID used by CLI/API calls. | +| `kind` | [models.PendingPreparedStackStateKind](../models/pendingpreparedstackstatekind.md) | :heavy_check_mark: | Primitive stack input kind. | +| `label` | *string* | :heavy_check_mark: | Human-facing field label. | +| `placeholder` | *string* | :heavy_minus_sign: | Example placeholder shown in UI. | +| `platforms` | [models.SyncReconcileRequestPendingPreparedStackPlatform](../models/syncreconcilerequestpendingpreparedstackplatform.md)[] | :heavy_minus_sign: | Platforms where this input applies. | +| `providedBy` | [models.SyncReconcileRequestPendingPreparedStackProvidedBy](../models/syncreconcilerequestpendingpreparedstackprovidedby.md)[] | :heavy_check_mark: | Who can provide this value. | +| `required` | *boolean* | :heavy_check_mark: | Whether a resolved value is required before deployment can proceed. | +| `validation` | *models.SyncReconcileRequestPendingPreparedStackValidationUnion* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackmanagement1.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackmanagement1.md new file mode 100644 index 000000000..5712dd9d7 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackmanagement1.md @@ -0,0 +1,20 @@ +# SyncReconcileRequestPendingPreparedStackManagement1 + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackManagement1 } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackManagement1 = { + extend: { + "key": [], + "key1": [], + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | +| `extend` | Record | :heavy_check_mark: | Permission profile that maps resources to permission sets
Key can be "*" for all resources or resource name for specific resource | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackmanagement2.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackmanagement2.md new file mode 100644 index 000000000..db4e331fa --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackmanagement2.md @@ -0,0 +1,25 @@ +# SyncReconcileRequestPendingPreparedStackManagement2 + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackManagement2 } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackManagement2 = { + override: { + "key": [ + "", + ], + "key1": [ + "", + ], + "key2": [], + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | +| `override` | Record | :heavy_check_mark: | Permission profile that maps resources to permission sets
Key can be "*" for all resources or resource name for specific resource | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackmanagementenum.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackmanagementenum.md new file mode 100644 index 000000000..2dd2fb33a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackmanagementenum.md @@ -0,0 +1,15 @@ +# SyncReconcileRequestPendingPreparedStackManagementEnum + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackManagementEnum } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackManagementEnum = "auto"; +``` + +## Values + +```typescript +"auto" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackmanagementunion.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackmanagementunion.md new file mode 100644 index 000000000..84f867af8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackmanagementunion.md @@ -0,0 +1,41 @@ +# SyncReconcileRequestPendingPreparedStackManagementUnion + +Management permissions configuration for stack management access + + +## Supported Types + +### `models.SyncReconcileRequestPendingPreparedStackManagement1` + +```typescript +const value: models.SyncReconcileRequestPendingPreparedStackManagement1 = { + extend: { + "key": [], + "key1": [], + }, +}; +``` + +### `models.SyncReconcileRequestPendingPreparedStackManagement2` + +```typescript +const value: models.SyncReconcileRequestPendingPreparedStackManagement2 = { + override: { + "key": [ + "", + ], + "key1": [ + "", + ], + "key2": [], + }, +}; +``` + +### `models.SyncReconcileRequestPendingPreparedStackManagementEnum` + +```typescript +const value: models.SyncReconcileRequestPendingPreparedStackManagementEnum = + "auto"; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackoverride.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackoverride.md new file mode 100644 index 000000000..43523c293 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackoverride.md @@ -0,0 +1,24 @@ +# SyncReconcileRequestPendingPreparedStackOverride + +A permission set that can be applied across different cloud platforms + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackOverride } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackOverride = { + description: + "ouch daily past dual regularly gracefully athwart flu zowie whose", + id: "", + platforms: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | +| `description` | *string* | :heavy_check_mark: | Human-readable description of what this permission set allows | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the permission set (e.g., "storage/data-read") | +| `platforms` | [models.SyncReconcileRequestPendingPreparedStackOverridePlatforms](../models/syncreconcilerequestpendingpreparedstackoverrideplatforms.md) | :heavy_check_mark: | Platform-specific permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackoverrideaw.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackoverrideaw.md new file mode 100644 index 000000000..a9e31c0c8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackoverrideaw.md @@ -0,0 +1,24 @@ +# SyncReconcileRequestPendingPreparedStackOverrideAw + +AWS-specific platform permission configuration + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackOverrideAw } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackOverrideAw = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | +| `binding` | [models.SyncReconcileRequestPendingPreparedStackOverrideAwBinding](../models/syncreconcilerequestpendingpreparedstackoverrideawbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `effect` | [models.SyncReconcileRequestPendingPreparedStackOverrideEffect](../models/syncreconcilerequestpendingpreparedstackoverrideeffect.md) | :heavy_minus_sign: | IAM effect. Defaults to Allow. | +| `grant` | [models.SyncReconcileRequestPendingPreparedStackOverrideAwGrant](../models/syncreconcilerequestpendingpreparedstackoverrideawgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackoverrideawbinding.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackoverrideawbinding.md new file mode 100644 index 000000000..7d8d22a6c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackoverrideawbinding.md @@ -0,0 +1,18 @@ +# SyncReconcileRequestPendingPreparedStackOverrideAwBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackOverrideAwBinding } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackOverrideAwBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.PendingPreparedStackOverrideStateAwResource](../models/pendingpreparedstackoverridestateawresource.md) | :heavy_minus_sign: | AWS-specific binding specification | +| `stack` | [models.SyncReconcileRequestPendingPreparedStackOverrideAwStack](../models/syncreconcilerequestpendingpreparedstackoverrideawstack.md) | :heavy_minus_sign: | AWS-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackoverrideawgrant.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackoverrideawgrant.md new file mode 100644 index 000000000..bfcb66473 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackoverrideawgrant.md @@ -0,0 +1,21 @@ +# SyncReconcileRequestPendingPreparedStackOverrideAwGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackOverrideAwGrant } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackOverrideAwGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackoverrideawstack.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackoverrideawstack.md new file mode 100644 index 000000000..3dc4cdd52 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackoverrideawstack.md @@ -0,0 +1,24 @@ +# SyncReconcileRequestPendingPreparedStackOverrideAwStack + +AWS-specific binding specification + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackOverrideAwStack } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackOverrideAwStack = { + resources: [ + "", + "", + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackoverrideazure.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackoverrideazure.md new file mode 100644 index 000000000..5ff3b39ab --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackoverrideazure.md @@ -0,0 +1,23 @@ +# SyncReconcileRequestPendingPreparedStackOverrideAzure + +Azure-specific platform permission configuration + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackOverrideAzure } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackOverrideAzure = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | +| `binding` | [models.SyncReconcileRequestPendingPreparedStackOverrideAzureBinding](../models/syncreconcilerequestpendingpreparedstackoverrideazurebinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.SyncReconcileRequestPendingPreparedStackOverrideAzureGrant](../models/syncreconcilerequestpendingpreparedstackoverrideazuregrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackoverrideazurebinding.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackoverrideazurebinding.md new file mode 100644 index 000000000..d4e8abd7c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackoverrideazurebinding.md @@ -0,0 +1,18 @@ +# SyncReconcileRequestPendingPreparedStackOverrideAzureBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackOverrideAzureBinding } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackOverrideAzureBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.PendingPreparedStackOverrideStateAzureResource](../models/pendingpreparedstackoverridestateazureresource.md) | :heavy_minus_sign: | Azure-specific binding specification | +| `stack` | [models.SyncReconcileRequestPendingPreparedStackOverrideAzureStack](../models/syncreconcilerequestpendingpreparedstackoverrideazurestack.md) | :heavy_minus_sign: | Azure-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackoverrideazuregrant.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackoverrideazuregrant.md new file mode 100644 index 000000000..1f2aa8244 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackoverrideazuregrant.md @@ -0,0 +1,21 @@ +# SyncReconcileRequestPendingPreparedStackOverrideAzureGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackOverrideAzureGrant } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackOverrideAzureGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackoverrideazurestack.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackoverrideazurestack.md new file mode 100644 index 000000000..851c2b313 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackoverrideazurestack.md @@ -0,0 +1,19 @@ +# SyncReconcileRequestPendingPreparedStackOverrideAzureStack + +Azure-specific binding specification + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackOverrideAzureStack } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackOverrideAzureStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackoverrideeffect.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackoverrideeffect.md new file mode 100644 index 000000000..faf14664e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackoverrideeffect.md @@ -0,0 +1,17 @@ +# SyncReconcileRequestPendingPreparedStackOverrideEffect + +IAM effect. Defaults to Allow. + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackOverrideEffect } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackOverrideEffect = "Deny"; +``` + +## Values + +```typescript +"Allow" | "Deny" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackoverridegcp.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackoverridegcp.md new file mode 100644 index 000000000..b7dab9723 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackoverridegcp.md @@ -0,0 +1,23 @@ +# SyncReconcileRequestPendingPreparedStackOverrideGcp + +GCP-specific platform permission configuration + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackOverrideGcp } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackOverrideGcp = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.SyncReconcileRequestPendingPreparedStackOverrideGcpBinding](../models/syncreconcilerequestpendingpreparedstackoverridegcpbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.SyncReconcileRequestPendingPreparedStackOverrideGcpGrant](../models/syncreconcilerequestpendingpreparedstackoverridegcpgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackoverridegcpbinding.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackoverridegcpbinding.md new file mode 100644 index 000000000..a1fa671fa --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackoverridegcpbinding.md @@ -0,0 +1,18 @@ +# SyncReconcileRequestPendingPreparedStackOverrideGcpBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackOverrideGcpBinding } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackOverrideGcpBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.PendingPreparedStackOverrideStateGcpResource](../models/pendingpreparedstackoverridestategcpresource.md) | :heavy_minus_sign: | GCP-specific binding specification | +| `stack` | [models.SyncReconcileRequestPendingPreparedStackOverrideGcpStack](../models/syncreconcilerequestpendingpreparedstackoverridegcpstack.md) | :heavy_minus_sign: | GCP-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackoverridegcpgrant.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackoverridegcpgrant.md new file mode 100644 index 000000000..2a6d7ecbd --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackoverridegcpgrant.md @@ -0,0 +1,21 @@ +# SyncReconcileRequestPendingPreparedStackOverrideGcpGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackOverrideGcpGrant } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackOverrideGcpGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackoverridegcpstack.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackoverridegcpstack.md new file mode 100644 index 000000000..280d864c8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackoverridegcpstack.md @@ -0,0 +1,20 @@ +# SyncReconcileRequestPendingPreparedStackOverrideGcpStack + +GCP-specific binding specification + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackOverrideGcpStack } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackOverrideGcpStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | +| `condition` | *models.PendingPreparedStackOverrideStateStackConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackoverrideplatforms.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackoverrideplatforms.md new file mode 100644 index 000000000..6d631da53 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackoverrideplatforms.md @@ -0,0 +1,19 @@ +# SyncReconcileRequestPendingPreparedStackOverridePlatforms + +Platform-specific permission configurations + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackOverridePlatforms } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackOverridePlatforms = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | +| `aws` | [models.SyncReconcileRequestPendingPreparedStackOverrideAw](../models/syncreconcilerequestpendingpreparedstackoverrideaw.md)[] | :heavy_minus_sign: | AWS permission configurations | +| `azure` | [models.SyncReconcileRequestPendingPreparedStackOverrideAzure](../models/syncreconcilerequestpendingpreparedstackoverrideazure.md)[] | :heavy_minus_sign: | Azure permission configurations | +| `gcp` | [models.SyncReconcileRequestPendingPreparedStackOverrideGcp](../models/syncreconcilerequestpendingpreparedstackoverridegcp.md)[] | :heavy_minus_sign: | GCP permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackoverrideunion.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackoverrideunion.md new file mode 100644 index 000000000..0d7434db7 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackoverrideunion.md @@ -0,0 +1,24 @@ +# SyncReconcileRequestPendingPreparedStackOverrideUnion + +Reference to a permission set - either by name or inline definition + + +## Supported Types + +### `models.SyncReconcileRequestPendingPreparedStackOverride` + +```typescript +const value: models.SyncReconcileRequestPendingPreparedStackOverride = { + description: + "ouch daily past dual regularly gracefully athwart flu zowie whose", + id: "", + platforms: {}, +}; +``` + +### `string` + +```typescript +const value: string = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackpermissions.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackpermissions.md new file mode 100644 index 000000000..a8ff2b043 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackpermissions.md @@ -0,0 +1,37 @@ +# SyncReconcileRequestPendingPreparedStackPermissions + +Combined permissions configuration that contains both profiles and management + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackPermissions } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackPermissions = { + profiles: { + "key": { + "key": [ + { + description: "unfortunately hmph voluntarily issue pure finding aw", + id: "", + platforms: {}, + }, + ], + "key1": [ + { + description: "unfortunately hmph voluntarily issue pure finding aw", + id: "", + platforms: {}, + }, + ], + }, + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| `management` | *models.SyncReconcileRequestPendingPreparedStackManagementUnion* | :heavy_minus_sign: | Management permissions configuration for stack management access | +| `profiles` | Record> | :heavy_check_mark: | Permission profiles that define access control for compute services
Key is the profile name, value is the permission configuration | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackplatform.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackplatform.md new file mode 100644 index 000000000..29cccea6a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackplatform.md @@ -0,0 +1,17 @@ +# SyncReconcileRequestPendingPreparedStackPlatform + +Represents the target cloud platform. + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackPlatform } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackPlatform = "kubernetes"; +``` + +## Values + +```typescript +"aws" | "gcp" | "azure" | "kubernetes" | "machines" | "local" | "test" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprofile.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprofile.md new file mode 100644 index 000000000..f125644ea --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprofile.md @@ -0,0 +1,23 @@ +# SyncReconcileRequestPendingPreparedStackProfile + +A permission set that can be applied across different cloud platforms + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackProfile } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackProfile = { + description: "amidst unaccountably so brr sermon ugh violent", + id: "", + platforms: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `description` | *string* | :heavy_check_mark: | Human-readable description of what this permission set allows | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the permission set (e.g., "storage/data-read") | +| `platforms` | [models.SyncReconcileRequestPendingPreparedStackProfilePlatforms](../models/syncreconcilerequestpendingpreparedstackprofileplatforms.md) | :heavy_check_mark: | Platform-specific permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprofileaw.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprofileaw.md new file mode 100644 index 000000000..8f4d0bf8f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprofileaw.md @@ -0,0 +1,24 @@ +# SyncReconcileRequestPendingPreparedStackProfileAw + +AWS-specific platform permission configuration + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackProfileAw } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackProfileAw = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.SyncReconcileRequestPendingPreparedStackProfileAwBinding](../models/syncreconcilerequestpendingpreparedstackprofileawbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `effect` | [models.SyncReconcileRequestPendingPreparedStackProfileEffect](../models/syncreconcilerequestpendingpreparedstackprofileeffect.md) | :heavy_minus_sign: | IAM effect. Defaults to Allow. | +| `grant` | [models.SyncReconcileRequestPendingPreparedStackProfileAwGrant](../models/syncreconcilerequestpendingpreparedstackprofileawgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprofileawbinding.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprofileawbinding.md new file mode 100644 index 000000000..2f69940f8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprofileawbinding.md @@ -0,0 +1,18 @@ +# SyncReconcileRequestPendingPreparedStackProfileAwBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackProfileAwBinding } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackProfileAwBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | +| `resource` | [models.PendingPreparedStackProfileStateAwResource](../models/pendingpreparedstackprofilestateawresource.md) | :heavy_minus_sign: | AWS-specific binding specification | +| `stack` | [models.SyncReconcileRequestPendingPreparedStackProfileAwStack](../models/syncreconcilerequestpendingpreparedstackprofileawstack.md) | :heavy_minus_sign: | AWS-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprofileawgrant.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprofileawgrant.md new file mode 100644 index 000000000..b70678a07 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprofileawgrant.md @@ -0,0 +1,21 @@ +# SyncReconcileRequestPendingPreparedStackProfileAwGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackProfileAwGrant } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackProfileAwGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprofileawstack.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprofileawstack.md new file mode 100644 index 000000000..9015d92a8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprofileawstack.md @@ -0,0 +1,23 @@ +# SyncReconcileRequestPendingPreparedStackProfileAwStack + +AWS-specific binding specification + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackProfileAwStack } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackProfileAwStack = { + resources: [ + "", + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprofileazure.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprofileazure.md new file mode 100644 index 000000000..57456ea6d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprofileazure.md @@ -0,0 +1,23 @@ +# SyncReconcileRequestPendingPreparedStackProfileAzure + +Azure-specific platform permission configuration + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackProfileAzure } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackProfileAzure = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.SyncReconcileRequestPendingPreparedStackProfileAzureBinding](../models/syncreconcilerequestpendingpreparedstackprofileazurebinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.SyncReconcileRequestPendingPreparedStackProfileAzureGrant](../models/syncreconcilerequestpendingpreparedstackprofileazuregrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprofileazurebinding.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprofileazurebinding.md new file mode 100644 index 000000000..972cda111 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprofileazurebinding.md @@ -0,0 +1,18 @@ +# SyncReconcileRequestPendingPreparedStackProfileAzureBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackProfileAzureBinding } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackProfileAzureBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | +| `resource` | [models.PendingPreparedStackProfileStateAzureResource](../models/pendingpreparedstackprofilestateazureresource.md) | :heavy_minus_sign: | Azure-specific binding specification | +| `stack` | [models.SyncReconcileRequestPendingPreparedStackProfileAzureStack](../models/syncreconcilerequestpendingpreparedstackprofileazurestack.md) | :heavy_minus_sign: | Azure-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprofileazuregrant.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprofileazuregrant.md new file mode 100644 index 000000000..2d6ea55b5 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprofileazuregrant.md @@ -0,0 +1,21 @@ +# SyncReconcileRequestPendingPreparedStackProfileAzureGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackProfileAzureGrant } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackProfileAzureGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprofileazurestack.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprofileazurestack.md new file mode 100644 index 000000000..660df978d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprofileazurestack.md @@ -0,0 +1,19 @@ +# SyncReconcileRequestPendingPreparedStackProfileAzureStack + +Azure-specific binding specification + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackProfileAzureStack } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackProfileAzureStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprofileeffect.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprofileeffect.md new file mode 100644 index 000000000..c64ca7e63 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprofileeffect.md @@ -0,0 +1,17 @@ +# SyncReconcileRequestPendingPreparedStackProfileEffect + +IAM effect. Defaults to Allow. + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackProfileEffect } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackProfileEffect = "Allow"; +``` + +## Values + +```typescript +"Allow" | "Deny" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprofilegcp.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprofilegcp.md new file mode 100644 index 000000000..f427c4958 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprofilegcp.md @@ -0,0 +1,23 @@ +# SyncReconcileRequestPendingPreparedStackProfileGcp + +GCP-specific platform permission configuration + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackProfileGcp } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackProfileGcp = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | +| `binding` | [models.SyncReconcileRequestPendingPreparedStackProfileGcpBinding](../models/syncreconcilerequestpendingpreparedstackprofilegcpbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.SyncReconcileRequestPendingPreparedStackProfileGcpGrant](../models/syncreconcilerequestpendingpreparedstackprofilegcpgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprofilegcpbinding.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprofilegcpbinding.md new file mode 100644 index 000000000..abc4dff0a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprofilegcpbinding.md @@ -0,0 +1,18 @@ +# SyncReconcileRequestPendingPreparedStackProfileGcpBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackProfileGcpBinding } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackProfileGcpBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.PendingPreparedStackProfileStateGcpResource](../models/pendingpreparedstackprofilestategcpresource.md) | :heavy_minus_sign: | GCP-specific binding specification | +| `stack` | [models.SyncReconcileRequestPendingPreparedStackProfileGcpStack](../models/syncreconcilerequestpendingpreparedstackprofilegcpstack.md) | :heavy_minus_sign: | GCP-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprofilegcpgrant.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprofilegcpgrant.md new file mode 100644 index 000000000..0bf125080 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprofilegcpgrant.md @@ -0,0 +1,21 @@ +# SyncReconcileRequestPendingPreparedStackProfileGcpGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackProfileGcpGrant } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackProfileGcpGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprofilegcpstack.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprofilegcpstack.md new file mode 100644 index 000000000..b5444a017 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprofilegcpstack.md @@ -0,0 +1,20 @@ +# SyncReconcileRequestPendingPreparedStackProfileGcpStack + +GCP-specific binding specification + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackProfileGcpStack } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackProfileGcpStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `condition` | *models.PendingPreparedStackProfileStateStackConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprofileplatforms.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprofileplatforms.md new file mode 100644 index 000000000..b6f3fb940 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprofileplatforms.md @@ -0,0 +1,19 @@ +# SyncReconcileRequestPendingPreparedStackProfilePlatforms + +Platform-specific permission configurations + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackProfilePlatforms } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackProfilePlatforms = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| `aws` | [models.SyncReconcileRequestPendingPreparedStackProfileAw](../models/syncreconcilerequestpendingpreparedstackprofileaw.md)[] | :heavy_minus_sign: | AWS permission configurations | +| `azure` | [models.SyncReconcileRequestPendingPreparedStackProfileAzure](../models/syncreconcilerequestpendingpreparedstackprofileazure.md)[] | :heavy_minus_sign: | Azure permission configurations | +| `gcp` | [models.SyncReconcileRequestPendingPreparedStackProfileGcp](../models/syncreconcilerequestpendingpreparedstackprofilegcp.md)[] | :heavy_minus_sign: | GCP permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprofileunion.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprofileunion.md new file mode 100644 index 000000000..df0bbeb1f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprofileunion.md @@ -0,0 +1,23 @@ +# SyncReconcileRequestPendingPreparedStackProfileUnion + +Reference to a permission set - either by name or inline definition + + +## Supported Types + +### `models.SyncReconcileRequestPendingPreparedStackProfile` + +```typescript +const value: models.SyncReconcileRequestPendingPreparedStackProfile = { + description: "amidst unaccountably so brr sermon ugh violent", + id: "", + platforms: {}, +}; +``` + +### `string` + +```typescript +const value: string = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprovidedby.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprovidedby.md new file mode 100644 index 000000000..cf95da743 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackprovidedby.md @@ -0,0 +1,17 @@ +# SyncReconcileRequestPendingPreparedStackProvidedBy + +Who can provide a stack input value. + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackProvidedBy } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackProvidedBy = "deployer"; +``` + +## Values + +```typescript +"developer" | "deployer" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackresources.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackresources.md new file mode 100644 index 000000000..fcdb729ce --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackresources.md @@ -0,0 +1,26 @@ +# SyncReconcileRequestPendingPreparedStackResources + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackResources } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackResources = { + config: { + id: "", + type: "", + }, + dependencies: [], + lifecycle: "live", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `config` | [models.SyncReconcileRequestPendingPreparedStackConfig](../models/syncreconcilerequestpendingpreparedstackconfig.md) | :heavy_check_mark: | 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` | [models.SyncReconcileRequestPendingPreparedStackDependency](../models/syncreconcilerequestpendingpreparedstackdependency.md)[] | :heavy_check_mark: | Additional dependencies for this resource beyond those defined in the resource itself.
The total dependencies are: resource.get_dependencies() + this list | +| `enabledWhen` | *string* | :heavy_minus_sign: | 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. | +| `lifecycle` | [models.PendingPreparedStackStateLifecycle](../models/pendingpreparedstackstatelifecycle.md) | :heavy_check_mark: | Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. | +| `remoteAccess` | *boolean* | :heavy_minus_sign: | Enable remote bindings for this resource (BYOB use case).
When true, binding params are synced to StackState's `remote_binding_params`.
Default: false (prevents sensitive data in synced state). | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstacksupportedplatform.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstacksupportedplatform.md new file mode 100644 index 000000000..a2b3238bf --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstacksupportedplatform.md @@ -0,0 +1,17 @@ +# SyncReconcileRequestPendingPreparedStackSupportedPlatform + +Represents the target cloud platform. + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackSupportedPlatform } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackSupportedPlatform = "aws"; +``` + +## Values + +```typescript +"aws" | "gcp" | "azure" | "kubernetes" | "machines" | "local" | "test" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstacktypeboolean.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstacktypeboolean.md new file mode 100644 index 000000000..1ed3a21ce --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstacktypeboolean.md @@ -0,0 +1,15 @@ +# SyncReconcileRequestPendingPreparedStackTypeBoolean + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackTypeBoolean } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackTypeBoolean = "boolean"; +``` + +## Values + +```typescript +"boolean" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstacktypeenvenum.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstacktypeenvenum.md new file mode 100644 index 000000000..836c5955c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstacktypeenvenum.md @@ -0,0 +1,17 @@ +# SyncReconcileRequestPendingPreparedStackTypeEnvEnum + +Environment variable handling for a stack input mapping. + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackTypeEnvEnum } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackTypeEnvEnum = "plain"; +``` + +## Values + +```typescript +"plain" | "secret" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstacktypenumber.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstacktypenumber.md new file mode 100644 index 000000000..7196f32db --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstacktypenumber.md @@ -0,0 +1,15 @@ +# SyncReconcileRequestPendingPreparedStackTypeNumber + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackTypeNumber } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackTypeNumber = "number"; +``` + +## Values + +```typescript +"number" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstacktypestring.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstacktypestring.md new file mode 100644 index 000000000..94be57c96 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstacktypestring.md @@ -0,0 +1,15 @@ +# SyncReconcileRequestPendingPreparedStackTypeString + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackTypeString } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackTypeString = "string"; +``` + +## Values + +```typescript +"string" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstacktypestringlist.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstacktypestringlist.md new file mode 100644 index 000000000..a3a652c53 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstacktypestringlist.md @@ -0,0 +1,16 @@ +# SyncReconcileRequestPendingPreparedStackTypeStringList + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackTypeStringList } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackTypeStringList = + "stringList"; +``` + +## Values + +```typescript +"stringList" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstacktypeunion.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstacktypeunion.md new file mode 100644 index 000000000..7138fe36a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstacktypeunion.md @@ -0,0 +1,18 @@ +# SyncReconcileRequestPendingPreparedStackTypeUnion + + +## Supported Types + +### `models.SyncReconcileRequestPendingPreparedStackTypeEnvEnum` + +```typescript +const value: models.SyncReconcileRequestPendingPreparedStackTypeEnvEnum = + "plain"; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackunion.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackunion.md new file mode 100644 index 000000000..377b3588b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackunion.md @@ -0,0 +1,20 @@ +# SyncReconcileRequestPendingPreparedStackUnion + + +## Supported Types + +### `models.SyncReconcileRequestPendingPreparedStack` + +```typescript +const value: models.SyncReconcileRequestPendingPreparedStack = { + id: "", + resources: {}, +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackvalidation.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackvalidation.md new file mode 100644 index 000000000..0b1310660 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackvalidation.md @@ -0,0 +1,25 @@ +# SyncReconcileRequestPendingPreparedStackValidation + +Portable stack input validation constraints. + +## Example Usage + +```typescript +import { SyncReconcileRequestPendingPreparedStackValidation } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestPendingPreparedStackValidation = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | +| `format` | *string* | :heavy_minus_sign: | Semantic format hint such as url. | +| `max` | *string* | :heavy_minus_sign: | Maximum number. | +| `maxItems` | *number* | :heavy_minus_sign: | Maximum string-list items. | +| `maxLength` | *number* | :heavy_minus_sign: | Maximum string length. | +| `min` | *string* | :heavy_minus_sign: | Minimum number. | +| `minItems` | *number* | :heavy_minus_sign: | Minimum string-list items. | +| `minLength` | *number* | :heavy_minus_sign: | Minimum string length. | +| `pattern` | *string* | :heavy_minus_sign: | Portable whole-value regex pattern. | +| `values` | *string*[] | :heavy_minus_sign: | Allowed string enum values. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackvalidationunion.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackvalidationunion.md new file mode 100644 index 000000000..6a783332c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpendingpreparedstackvalidationunion.md @@ -0,0 +1,17 @@ +# SyncReconcileRequestPendingPreparedStackValidationUnion + + +## Supported Types + +### `models.SyncReconcileRequestPendingPreparedStackValidation` + +```typescript +const value: models.SyncReconcileRequestPendingPreparedStackValidation = {}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpreparedstackresources.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpreparedstackresources.md index 47457bd69..68118f7f0 100644 --- a/client-sdks/platform/typescript/docs/models/syncreconcilerequestpreparedstackresources.md +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestpreparedstackresources.md @@ -17,9 +17,10 @@ let value: SyncReconcileRequestPreparedStackResources = { ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `config` | [models.SyncReconcileRequestPreparedStackConfig](../models/syncreconcilerequestpreparedstackconfig.md) | :heavy_check_mark: | 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` | [models.SyncReconcileRequestPreparedStackDependency](../models/syncreconcilerequestpreparedstackdependency.md)[] | :heavy_check_mark: | Additional dependencies for this resource beyond those defined in the resource itself.
The total dependencies are: resource.get_dependencies() + this list | -| `lifecycle` | [models.PreparedStackStateLifecycle](../models/preparedstackstatelifecycle.md) | :heavy_check_mark: | Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. | -| `remoteAccess` | *boolean* | :heavy_minus_sign: | Enable remote bindings for this resource (BYOB use case).
When true, binding params are synced to StackState's `remote_binding_params`.
Default: false (prevents sensitive data in synced state). | \ No newline at end of file +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `config` | [models.SyncReconcileRequestPreparedStackConfig](../models/syncreconcilerequestpreparedstackconfig.md) | :heavy_check_mark: | 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` | [models.SyncReconcileRequestPreparedStackDependency](../models/syncreconcilerequestpreparedstackdependency.md)[] | :heavy_check_mark: | Additional dependencies for this resource beyond those defined in the resource itself.
The total dependencies are: resource.get_dependencies() + this list | +| `enabledWhen` | *string* | :heavy_minus_sign: | 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. | +| `lifecycle` | [models.PreparedStackStateLifecycle](../models/preparedstackstatelifecycle.md) | :heavy_check_mark: | Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. | +| `remoteAccess` | *boolean* | :heavy_minus_sign: | Enable remote bindings for this resource (BYOB use case).
When true, binding params are synced to StackState's `remote_binding_params`.
Default: false (prevents sensitive data in synced state). | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestrepository.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestrepository.md new file mode 100644 index 000000000..06c9d0b0f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestrepository.md @@ -0,0 +1,30 @@ +# SyncReconcileRequestRepository + +## Example Usage + +```typescript +import { SyncReconcileRequestRepository } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestRepository = { + createdAt: 5074.62, + kmsKeyPresent: false, + registryId: "", + repositoryArn: "", + repositoryName: "", + repositoryUri: "https://alarmed-minister.biz", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------- | -------------------- | -------------------- | -------------------- | +| `createdAt` | *number* | :heavy_check_mark: | N/A | +| `encryptionType` | *string* | :heavy_minus_sign: | N/A | +| `imageTagMutability` | *string* | :heavy_minus_sign: | N/A | +| `kmsKeyPresent` | *boolean* | :heavy_check_mark: | N/A | +| `registryId` | *string* | :heavy_check_mark: | N/A | +| `repositoryArn` | *string* | :heavy_check_mark: | N/A | +| `repositoryName` | *string* | :heavy_check_mark: | N/A | +| `repositoryUri` | *string* | :heavy_check_mark: | N/A | +| `scanOnPush` | *boolean* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestruntimemetadata.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestruntimemetadata.md index 4e4fa25e3..0dce1b40b 100644 --- a/client-sdks/platform/typescript/docs/models/syncreconcilerequestruntimemetadata.md +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestruntimemetadata.md @@ -14,9 +14,13 @@ let value: SyncReconcileRequestRuntimeMetadata = {}; ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `lastSyncedEnvVarsHash` | *string* | :heavy_minus_sign: | Hash of the environment variables snapshot that was last synced to the vault
Used to avoid redundant sync operations during incremental deployment | -| `lastSyncedSecretNames` | *string*[] | :heavy_minus_sign: | Exact vault keys owned by the deployment secret synchronizer. This
inventory lets a later snapshot delete removed keys without listing or
touching unrelated values in the same vault. | -| `preparedStack` | *models.SyncReconcileRequestPreparedStackUnion* | :heavy_minus_sign: | N/A | -| `registryAccessGranted` | *boolean* | :heavy_minus_sign: | Whether cross-account registry access has been successfully granted.
Set to true after the manager successfully sets the ECR/GAR repo policy
for this deployment's target account. Prevents redundant API calls on
every reconcile tick. | \ No newline at end of file +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `initialSetupAuthority` | [models.SyncReconcileRequestInitialSetupAuthority](../models/syncreconcilerequestinitialsetupauthority.md) | :heavy_minus_sign: | Actor that owns structural work during the initial setup phase. | +| `lastSyncedEnvVarsHash` | *string* | :heavy_minus_sign: | Hash of the environment variables snapshot that was last synced to the vault
Used to avoid redundant sync operations during incremental deployment | +| `lastSyncedSecretNames` | *string*[] | :heavy_minus_sign: | Exact vault keys owned by the deployment secret synchronizer. This
inventory lets a later snapshot delete removed keys without listing or
touching unrelated values in the same vault. | +| `pendingPreparedStack` | *models.SyncReconcileRequestPendingPreparedStackUnion* | :heavy_minus_sign: | N/A | +| `persistedGateAnswers` | Record | :heavy_minus_sign: | Canonical resolved answers for inputs that gate Frozen resources,
keyed by input id, recorded when the deployment is created or its
setup import registers.

A frozen gate's answer is fixed for the deployment's lifetime: the
update path refuses input values that conflict with these, and a Live
resource sharing such an input resolves the persisted answer forever. | +| `preparedStack` | *models.SyncReconcileRequestPreparedStackUnion* | :heavy_minus_sign: | N/A | +| `registryAccessGranted` | *boolean* | :heavy_minus_sign: | Whether cross-account registry access has been successfully granted.
Set to true after the manager successfully sets the ECR/GAR repo policy
for this deployment's target account. Prevents redundant API calls on
every reconcile tick. | +| `setupUpdateAuthorization` | *models.SyncReconcileRequestSetupUpdateAuthorizationUnion* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestsetupupdateauthorization.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestsetupupdateauthorization.md new file mode 100644 index 000000000..d1636e670 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestsetupupdateauthorization.md @@ -0,0 +1,31 @@ +# SyncReconcileRequestSetupUpdateAuthorization + +One-shot authority for a setup re-import to replace setup-owned resources. + +## Example Usage + +```typescript +import { SyncReconcileRequestSetupUpdateAuthorization } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestSetupUpdateAuthorization = { + baselineFrozenDigest: "", + nonce: "", + releaseId: "", + setupFingerprint: "", + setupFingerprintVersion: 809897, + setupTarget: "", + targetFrozenDigest: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | +| `baselineFrozenDigest` | *string* | :heavy_check_mark: | Frozen resource projection from the last successful deployment. | +| `nonce` | *string* | :heavy_check_mark: | Unique revision used by persistence layers for compare-and-swap updates. | +| `releaseId` | *string* | :heavy_check_mark: | Release whose stack was prepared by setup. | +| `setupFingerprint` | *string* | :heavy_check_mark: | Exact setup artifact revision that authored this authority. | +| `setupFingerprintVersion` | *number* | :heavy_check_mark: | Setup fingerprint contract version. | +| `setupTarget` | *string* | :heavy_check_mark: | Stable setup target recorded on the imported deployment. | +| `targetFrozenDigest` | *string* | :heavy_check_mark: | Frozen resource projection prepared by the setup re-import. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestsetupupdateauthorizationunion.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestsetupupdateauthorizationunion.md new file mode 100644 index 000000000..4235e1292 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestsetupupdateauthorizationunion.md @@ -0,0 +1,25 @@ +# SyncReconcileRequestSetupUpdateAuthorizationUnion + + +## Supported Types + +### `models.SyncReconcileRequestSetupUpdateAuthorization` + +```typescript +const value: models.SyncReconcileRequestSetupUpdateAuthorization = { + baselineFrozenDigest: "", + nonce: "", + releaseId: "", + setupFingerprint: "", + setupFingerprintVersion: 809897, + setupTarget: "", + targetFrozenDigest: "", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestsource1.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestsource1.md deleted file mode 100644 index e088c765d..000000000 --- a/client-sdks/platform/typescript/docs/models/syncreconcilerequestsource1.md +++ /dev/null @@ -1,16 +0,0 @@ -# SyncReconcileRequestSource1 - -## Example Usage - -```typescript -import { SyncReconcileRequestSource1 } from "@alienplatform/platform-api/models"; - -let value: SyncReconcileRequestSource1 = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `component` | *string* | :heavy_minus_sign: | N/A | -| `host` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestsource10.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestsource10.md deleted file mode 100644 index 06894983d..000000000 --- a/client-sdks/platform/typescript/docs/models/syncreconcilerequestsource10.md +++ /dev/null @@ -1,16 +0,0 @@ -# SyncReconcileRequestSource10 - -## Example Usage - -```typescript -import { SyncReconcileRequestSource10 } from "@alienplatform/platform-api/models"; - -let value: SyncReconcileRequestSource10 = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `component` | *string* | :heavy_minus_sign: | N/A | -| `host` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestsource2.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestsource2.md deleted file mode 100644 index dbfed25d3..000000000 --- a/client-sdks/platform/typescript/docs/models/syncreconcilerequestsource2.md +++ /dev/null @@ -1,16 +0,0 @@ -# SyncReconcileRequestSource2 - -## Example Usage - -```typescript -import { SyncReconcileRequestSource2 } from "@alienplatform/platform-api/models"; - -let value: SyncReconcileRequestSource2 = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `component` | *string* | :heavy_minus_sign: | N/A | -| `host` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestsource3.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestsource3.md deleted file mode 100644 index 307c9c330..000000000 --- a/client-sdks/platform/typescript/docs/models/syncreconcilerequestsource3.md +++ /dev/null @@ -1,16 +0,0 @@ -# SyncReconcileRequestSource3 - -## Example Usage - -```typescript -import { SyncReconcileRequestSource3 } from "@alienplatform/platform-api/models"; - -let value: SyncReconcileRequestSource3 = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `component` | *string* | :heavy_minus_sign: | N/A | -| `host` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestsource4.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestsource4.md deleted file mode 100644 index a7166492d..000000000 --- a/client-sdks/platform/typescript/docs/models/syncreconcilerequestsource4.md +++ /dev/null @@ -1,16 +0,0 @@ -# SyncReconcileRequestSource4 - -## Example Usage - -```typescript -import { SyncReconcileRequestSource4 } from "@alienplatform/platform-api/models"; - -let value: SyncReconcileRequestSource4 = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `component` | *string* | :heavy_minus_sign: | N/A | -| `host` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestsource5.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestsource5.md deleted file mode 100644 index fc4895587..000000000 --- a/client-sdks/platform/typescript/docs/models/syncreconcilerequestsource5.md +++ /dev/null @@ -1,16 +0,0 @@ -# SyncReconcileRequestSource5 - -## Example Usage - -```typescript -import { SyncReconcileRequestSource5 } from "@alienplatform/platform-api/models"; - -let value: SyncReconcileRequestSource5 = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `component` | *string* | :heavy_minus_sign: | N/A | -| `host` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestsource6.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestsource6.md deleted file mode 100644 index 16ea50e2c..000000000 --- a/client-sdks/platform/typescript/docs/models/syncreconcilerequestsource6.md +++ /dev/null @@ -1,16 +0,0 @@ -# SyncReconcileRequestSource6 - -## Example Usage - -```typescript -import { SyncReconcileRequestSource6 } from "@alienplatform/platform-api/models"; - -let value: SyncReconcileRequestSource6 = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `component` | *string* | :heavy_minus_sign: | N/A | -| `host` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestsource7.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestsource7.md deleted file mode 100644 index 9101f77b6..000000000 --- a/client-sdks/platform/typescript/docs/models/syncreconcilerequestsource7.md +++ /dev/null @@ -1,16 +0,0 @@ -# SyncReconcileRequestSource7 - -## Example Usage - -```typescript -import { SyncReconcileRequestSource7 } from "@alienplatform/platform-api/models"; - -let value: SyncReconcileRequestSource7 = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `component` | *string* | :heavy_minus_sign: | N/A | -| `host` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestsource8.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestsource8.md deleted file mode 100644 index 87c3e1b01..000000000 --- a/client-sdks/platform/typescript/docs/models/syncreconcilerequestsource8.md +++ /dev/null @@ -1,16 +0,0 @@ -# SyncReconcileRequestSource8 - -## Example Usage - -```typescript -import { SyncReconcileRequestSource8 } from "@alienplatform/platform-api/models"; - -let value: SyncReconcileRequestSource8 = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `component` | *string* | :heavy_minus_sign: | N/A | -| `host` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestsource9.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestsource9.md deleted file mode 100644 index f4ec35288..000000000 --- a/client-sdks/platform/typescript/docs/models/syncreconcilerequestsource9.md +++ /dev/null @@ -1,16 +0,0 @@ -# SyncReconcileRequestSource9 - -## Example Usage - -```typescript -import { SyncReconcileRequestSource9 } from "@alienplatform/platform-api/models"; - -let value: SyncReconcileRequestSource9 = {}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `component` | *string* | :heavy_minus_sign: | N/A | -| `host` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequesttargetreleaseresources.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequesttargetreleaseresources.md index 1e93239fc..4156953c4 100644 --- a/client-sdks/platform/typescript/docs/models/syncreconcilerequesttargetreleaseresources.md +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequesttargetreleaseresources.md @@ -22,9 +22,10 @@ let value: SyncReconcileRequestTargetReleaseResources = { ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `config` | [models.SyncReconcileRequestTargetReleaseConfig](../models/syncreconcilerequesttargetreleaseconfig.md) | :heavy_check_mark: | 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` | [models.SyncReconcileRequestTargetReleaseDependency](../models/syncreconcilerequesttargetreleasedependency.md)[] | :heavy_check_mark: | Additional dependencies for this resource beyond those defined in the resource itself.
The total dependencies are: resource.get_dependencies() + this list | -| `lifecycle` | [models.TargetReleaseStateLifecycle](../models/targetreleasestatelifecycle.md) | :heavy_check_mark: | Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. | -| `remoteAccess` | *boolean* | :heavy_minus_sign: | Enable remote bindings for this resource (BYOB use case).
When true, binding params are synced to StackState's `remote_binding_params`.
Default: false (prevents sensitive data in synced state). | \ No newline at end of file +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `config` | [models.SyncReconcileRequestTargetReleaseConfig](../models/syncreconcilerequesttargetreleaseconfig.md) | :heavy_check_mark: | 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` | [models.SyncReconcileRequestTargetReleaseDependency](../models/syncreconcilerequesttargetreleasedependency.md)[] | :heavy_check_mark: | Additional dependencies for this resource beyond those defined in the resource itself.
The total dependencies are: resource.get_dependencies() + this list | +| `enabledWhen` | *string* | :heavy_minus_sign: | 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. | +| `lifecycle` | [models.TargetReleaseStateLifecycle](../models/targetreleasestatelifecycle.md) | :heavy_check_mark: | Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. | +| `remoteAccess` | *boolean* | :heavy_minus_sign: | Enable remote bindings for this resource (BYOB use case).
When true, binding params are synced to StackState's `remote_binding_params`.
Default: false (prevents sensitive data in synced state). | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponseapikey.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponseapikey.md new file mode 100644 index 000000000..5e0bc9448 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponseapikey.md @@ -0,0 +1,20 @@ +# SyncReconcileResponseApiKey + +## Example Usage + +```typescript +import { SyncReconcileResponseApiKey } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponseApiKey = { + secretRef: { + key: "", + name: "", + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `secretRef` | [models.SyncReconcileResponseApiKeySecretRef](../models/syncreconcileresponseapikeysecretref.md) | :heavy_check_mark: | Reference to a Kubernetes Secret | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponseapikeysecretref.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponseapikeysecretref.md new file mode 100644 index 000000000..a7427a77d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponseapikeysecretref.md @@ -0,0 +1,21 @@ +# SyncReconcileResponseApiKeySecretRef + +Reference to a Kubernetes Secret + +## Example Usage + +```typescript +import { SyncReconcileResponseApiKeySecretRef } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponseApiKeySecretRef = { + key: "", + name: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `key` | *string* | :heavy_check_mark: | N/A | +| `name` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponseapikeyunion.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponseapikeyunion.md new file mode 100644 index 000000000..46ea1eafe --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponseapikeyunion.md @@ -0,0 +1,31 @@ +# SyncReconcileResponseApiKeyUnion + +Represents a value that can be either a concrete value, a template expression, +or a reference to a Kubernetes Secret + + +## Supported Types + +### `any` + +```typescript +const value: any = ""; +``` + +### `string` + +```typescript +const value: string = ""; +``` + +### `models.SyncReconcileResponseApiKey` + +```typescript +const value: models.SyncReconcileResponseApiKey = { + secretRef: { + key: "", + name: "", + }, +}; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsecurrentreleaseresources.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsecurrentreleaseresources.md index cf00a8abe..290aab3ab 100644 --- a/client-sdks/platform/typescript/docs/models/syncreconcileresponsecurrentreleaseresources.md +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsecurrentreleaseresources.md @@ -17,9 +17,10 @@ let value: SyncReconcileResponseCurrentReleaseResources = { ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `config` | [models.SyncReconcileResponseCurrentReleaseConfig](../models/syncreconcileresponsecurrentreleaseconfig.md) | :heavy_check_mark: | 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` | [models.SyncReconcileResponseCurrentReleaseDependency](../models/syncreconcileresponsecurrentreleasedependency.md)[] | :heavy_check_mark: | Additional dependencies for this resource beyond those defined in the resource itself.
The total dependencies are: resource.get_dependencies() + this list | -| `lifecycle` | [models.SyncReconcileResponseCurrentReleaseLifecycle](../models/syncreconcileresponsecurrentreleaselifecycle.md) | :heavy_check_mark: | Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. | -| `remoteAccess` | *boolean* | :heavy_minus_sign: | Enable remote bindings for this resource (BYOB use case).
When true, binding params are synced to StackState's `remote_binding_params`.
Default: false (prevents sensitive data in synced state). | \ No newline at end of file +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `config` | [models.SyncReconcileResponseCurrentReleaseConfig](../models/syncreconcileresponsecurrentreleaseconfig.md) | :heavy_check_mark: | 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` | [models.SyncReconcileResponseCurrentReleaseDependency](../models/syncreconcileresponsecurrentreleasedependency.md)[] | :heavy_check_mark: | Additional dependencies for this resource beyond those defined in the resource itself.
The total dependencies are: resource.get_dependencies() + this list | +| `enabledWhen` | *string* | :heavy_minus_sign: | 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. | +| `lifecycle` | [models.SyncReconcileResponseCurrentReleaseLifecycle](../models/syncreconcileresponsecurrentreleaselifecycle.md) | :heavy_check_mark: | Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. | +| `remoteAccess` | *boolean* | :heavy_minus_sign: | Enable remote bindings for this resource (BYOB use case).
When true, binding params are synced to StackState's `remote_binding_params`.
Default: false (prevents sensitive data in synced state). | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponseexternalbindingsai.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponseexternalbindingsai.md new file mode 100644 index 000000000..a255eea32 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponseexternalbindingsai.md @@ -0,0 +1,27 @@ +# SyncReconcileResponseExternalBindingsAi + +External AI provider binding configuration (BYO-key). + +The operator-supplied secret rides inside the binding via +`BindingValue`, so it is a literal on cloud platforms and gains +Kubernetes SecretRef resolution for free (`extract_binding_secrets` walks +the binding JSON for `secretRef`). + +## Example Usage + +```typescript +import { SyncReconcileResponseExternalBindingsAi } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponseExternalBindingsAi = { + provider: "", + type: "ai", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `apiKey` | *models.SyncReconcileResponseApiKeyUnion* | :heavy_minus_sign: | Represents a value that can be either a concrete value, a template expression,
or a reference to a Kubernetes Secret | +| `provider` | *string* | :heavy_check_mark: | The external AI provider name (e.g., "openai", "anthropic") | +| `type` | [models.TargetTypeAi](../models/targettypeai.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponseexternalbindingscloudsql.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponseexternalbindingscloudsql.md index 5af93c2ce..8c00ea8c9 100644 --- a/client-sdks/platform/typescript/docs/models/syncreconcileresponseexternalbindingscloudsql.md +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponseexternalbindingscloudsql.md @@ -21,6 +21,7 @@ let value: SyncReconcileResponseExternalBindingsCloudSQL = { | `host` | *models.SyncReconcileResponseHostUnion1* | :heavy_minus_sign: | Represents a value that can be either a concrete value, a template expression,
or a reference to a Kubernetes Secret | | `passwordSecretName` | *models.SyncReconcileResponsePasswordSecretNameUnion* | :heavy_minus_sign: | Represents a value that can be either a concrete value, a template expression,
or a reference to a Kubernetes Secret | | `port` | *models.SyncReconcileResponsePortUnion2* | :heavy_minus_sign: | Represents a value that can be either a concrete value, a template expression,
or a reference to a Kubernetes Secret | +| `serverCaCertificates` | *models.SyncReconcileResponseServerCaCertificatesUnion* | :heavy_minus_sign: | Represents a value that can be either a concrete value, a template expression,
or a reference to a Kubernetes Secret | | `username` | *models.SyncReconcileResponseUsernameUnion2* | :heavy_minus_sign: | Represents a value that can be either a concrete value, a template expression,
or a reference to a Kubernetes Secret | | `service` | *"cloud-sql"* | :heavy_check_mark: | N/A | | `type` | [models.TargetTypePostgres2](../models/targettypepostgres2.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponseexternalbindingsexternal.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponseexternalbindingsexternal.md index d536b460f..ea7af204c 100644 --- a/client-sdks/platform/typescript/docs/models/syncreconcileresponseexternalbindingsexternal.md +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponseexternalbindingsexternal.md @@ -22,6 +22,7 @@ let value: SyncReconcileResponseExternalBindingsExternal = { | `host` | *models.SyncReconcileResponseHostUnion3* | :heavy_minus_sign: | Represents a value that can be either a concrete value, a template expression,
or a reference to a Kubernetes Secret | | `password` | *string* | :heavy_check_mark: | Connection password as a concrete value, never an unresolved `SecretRef`: the platform
materializes the Kubernetes secret into the pod env. The cloud variants carry a secret
locator instead. | | `port` | *models.SyncReconcileResponsePortUnion4* | :heavy_minus_sign: | Represents a value that can be either a concrete value, a template expression,
or a reference to a Kubernetes Secret | +| `sslMode` | [models.SyncReconcileResponseSslMode](../models/syncreconcileresponsesslmode.md) | :heavy_minus_sign: | TLS policy for an operator-provided / BYO Postgres database.

Unlike libpq's ambiguous `prefer` mode, both choices map exactly to the
connection settings exposed by every supported SDK. | | `username` | *models.SyncReconcileResponseUsernameUnion4* | :heavy_minus_sign: | Represents a value that can be either a concrete value, a template expression,
or a reference to a Kubernetes Secret | | `service` | *"external"* | :heavy_check_mark: | N/A | | `type` | [models.TargetTypePostgres4](../models/targettypepostgres4.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponseexternalbindingsunion7.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponseexternalbindingsunion7.md index 36d0ee555..4c5fccf71 100644 --- a/client-sdks/platform/typescript/docs/models/syncreconcileresponseexternalbindingsunion7.md +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponseexternalbindingsunion7.md @@ -73,3 +73,12 @@ const value: models.SyncReconcileResponseExternalBindingsUnion6 = { }; ``` +### `models.SyncReconcileResponseExternalBindingsAi` + +```typescript +const value: models.SyncReconcileResponseExternalBindingsAi = { + provider: "", + type: "ai", +}; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsefailuredomains1.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsefailuredomains1.md new file mode 100644 index 000000000..2cd557444 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsefailuredomains1.md @@ -0,0 +1,20 @@ +# SyncReconcileResponseFailureDomains1 + +Failure-domain policy selected for a compute pool. + +## Example Usage + +```typescript +import { SyncReconcileResponseFailureDomains1 } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponseFailureDomains1 = { + spread: 244778, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `selectedFailureDomains` | *string*[] | :heavy_minus_sign: | Concrete provider domains selected during setup.
Empty delegates deterministic selection to the provider setup implementation. | +| `spread` | *number* | :heavy_check_mark: | Number of distinct failure domains across which new stateful replicas may be spread. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsefailuredomains2.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsefailuredomains2.md new file mode 100644 index 000000000..e0807df7b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsefailuredomains2.md @@ -0,0 +1,20 @@ +# SyncReconcileResponseFailureDomains2 + +Failure-domain policy selected for a compute pool. + +## Example Usage + +```typescript +import { SyncReconcileResponseFailureDomains2 } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponseFailureDomains2 = { + spread: 575572, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `selectedFailureDomains` | *string*[] | :heavy_minus_sign: | Concrete provider domains selected during setup.
Empty delegates deterministic selection to the provider setup implementation. | +| `spread` | *number* | :heavy_check_mark: | Number of distinct failure domains across which new stateful replicas may be spread. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsefailuredomainsunion1.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsefailuredomainsunion1.md new file mode 100644 index 000000000..d1322630f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsefailuredomainsunion1.md @@ -0,0 +1,19 @@ +# SyncReconcileResponseFailureDomainsUnion1 + + +## Supported Types + +### `models.SyncReconcileResponseFailureDomains1` + +```typescript +const value: models.SyncReconcileResponseFailureDomains1 = { + spread: 244778, +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsefailuredomainsunion2.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsefailuredomainsunion2.md new file mode 100644 index 000000000..75b46fa26 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsefailuredomainsunion2.md @@ -0,0 +1,19 @@ +# SyncReconcileResponseFailureDomainsUnion2 + + +## Supported Types + +### `models.SyncReconcileResponseFailureDomains2` + +```typescript +const value: models.SyncReconcileResponseFailureDomains2 = { + spread: 575572, +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponseinitialsetupauthority.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponseinitialsetupauthority.md new file mode 100644 index 000000000..6de8736e6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponseinitialsetupauthority.md @@ -0,0 +1,17 @@ +# SyncReconcileResponseInitialSetupAuthority + +Actor that owns structural work during the initial setup phase. + +## Example Usage + +```typescript +import { SyncReconcileResponseInitialSetupAuthority } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponseInitialSetupAuthority = "importedHandoff"; +``` + +## Values + +```typescript +"importedHandoff" | "directSetup" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstack.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstack.md new file mode 100644 index 000000000..0655c0735 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstack.md @@ -0,0 +1,38 @@ +# SyncReconcileResponsePendingPreparedStack + +A bag of resources, unaware of any cloud. + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStack } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStack = { + id: "", + resources: { + "key": { + config: { + id: "", + type: "", + }, + dependencies: [ + { + id: "", + type: "", + }, + ], + lifecycle: "live", + }, + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the stack | +| `inputs` | [models.SyncReconcileResponsePendingPreparedStackInput](../models/syncreconcileresponsependingpreparedstackinput.md)[] | :heavy_minus_sign: | Input definitions required before setup or deployment can proceed. | +| `permissions` | [models.SyncReconcileResponsePendingPreparedStackPermissions](../models/syncreconcileresponsependingpreparedstackpermissions.md) | :heavy_minus_sign: | Combined permissions configuration that contains both profiles and management | +| `resources` | Record | :heavy_check_mark: | Map of resource IDs to their configurations and lifecycle settings | +| `supportedPlatforms` | [models.SyncReconcileResponsePendingPreparedStackSupportedPlatform](../models/syncreconcileresponsependingpreparedstacksupportedplatform.md)[] | :heavy_minus_sign: | Which platforms this stack supports. When None, all platforms are supported. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackconfig.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackconfig.md new file mode 100644 index 000000000..c263b98d0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackconfig.md @@ -0,0 +1,22 @@ +# SyncReconcileResponsePendingPreparedStackConfig + +Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackConfig } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackConfig = { + id: "", + type: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. | +| `type` | *string* | :heavy_check_mark: | Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. | +| `additionalProperties` | Record | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackdefaultboolean.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackdefaultboolean.md new file mode 100644 index 000000000..63d36b41b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackdefaultboolean.md @@ -0,0 +1,19 @@ +# SyncReconcileResponsePendingPreparedStackDefaultBoolean + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackDefaultBoolean } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackDefaultBoolean = { + type: "boolean", + value: false, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | +| `type` | [models.SyncReconcileResponsePendingPreparedStackTypeBoolean](../models/syncreconcileresponsependingpreparedstacktypeboolean.md) | :heavy_check_mark: | N/A | +| `value` | *boolean* | :heavy_check_mark: | Boolean default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackdefaultnumber.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackdefaultnumber.md new file mode 100644 index 000000000..d1aa73d1d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackdefaultnumber.md @@ -0,0 +1,19 @@ +# SyncReconcileResponsePendingPreparedStackDefaultNumber + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackDefaultNumber } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackDefaultNumber = { + type: "number", + value: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `type` | [models.SyncReconcileResponsePendingPreparedStackTypeNumber](../models/syncreconcileresponsependingpreparedstacktypenumber.md) | :heavy_check_mark: | N/A | +| `value` | *string* | :heavy_check_mark: | Number default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackdefaultstring.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackdefaultstring.md new file mode 100644 index 000000000..cb94bdc56 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackdefaultstring.md @@ -0,0 +1,19 @@ +# SyncReconcileResponsePendingPreparedStackDefaultString + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackDefaultString } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackDefaultString = { + type: "string", + value: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `type` | [models.SyncReconcileResponsePendingPreparedStackTypeString](../models/syncreconcileresponsependingpreparedstacktypestring.md) | :heavy_check_mark: | N/A | +| `value` | *string* | :heavy_check_mark: | String default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackdefaultstringlist.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackdefaultstringlist.md new file mode 100644 index 000000000..8edb7d81e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackdefaultstringlist.md @@ -0,0 +1,23 @@ +# SyncReconcileResponsePendingPreparedStackDefaultStringList + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackDefaultStringList } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackDefaultStringList = { + type: "stringList", + value: [ + "", + "", + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | +| `type` | [models.SyncReconcileResponsePendingPreparedStackTypeStringList](../models/syncreconcileresponsependingpreparedstacktypestringlist.md) | :heavy_check_mark: | N/A | +| `value` | *string*[] | :heavy_check_mark: | String list default. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackdefaultunion.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackdefaultunion.md new file mode 100644 index 000000000..01dbde0d8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackdefaultunion.md @@ -0,0 +1,52 @@ +# SyncReconcileResponsePendingPreparedStackDefaultUnion + + +## Supported Types + +### `models.SyncReconcileResponsePendingPreparedStackDefaultString` + +```typescript +const value: models.SyncReconcileResponsePendingPreparedStackDefaultString = { + type: "string", + value: "", +}; +``` + +### `models.SyncReconcileResponsePendingPreparedStackDefaultNumber` + +```typescript +const value: models.SyncReconcileResponsePendingPreparedStackDefaultNumber = { + type: "number", + value: "", +}; +``` + +### `models.SyncReconcileResponsePendingPreparedStackDefaultBoolean` + +```typescript +const value: models.SyncReconcileResponsePendingPreparedStackDefaultBoolean = { + type: "boolean", + value: false, +}; +``` + +### `models.SyncReconcileResponsePendingPreparedStackDefaultStringList` + +```typescript +const value: models.SyncReconcileResponsePendingPreparedStackDefaultStringList = + { + type: "stringList", + value: [ + "", + "", + "", + ], + }; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackdependency.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackdependency.md new file mode 100644 index 000000000..9fa80e1fb --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackdependency.md @@ -0,0 +1,21 @@ +# SyncReconcileResponsePendingPreparedStackDependency + +Reference to a resource by its stable id and resource type. + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackDependency } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackDependency = { + id: "", + type: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | N/A | +| `type` | *string* | :heavy_check_mark: | Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackenv.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackenv.md new file mode 100644 index 000000000..ebcbdfc01 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackenv.md @@ -0,0 +1,21 @@ +# SyncReconcileResponsePendingPreparedStackEnv + +How a resolved stack input is injected into runtime environment variables. + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackEnv } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackEnv = { + name: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `name` | *string* | :heavy_check_mark: | Environment variable name. | +| `targetResources` | *string*[] | :heavy_minus_sign: | Target resource IDs or patterns. None means every env-capable resource. | +| `type` | *models.SyncReconcileResponsePendingPreparedStackTypeUnion* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextend.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextend.md new file mode 100644 index 000000000..fd44eb7ab --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextend.md @@ -0,0 +1,23 @@ +# SyncReconcileResponsePendingPreparedStackExtend + +A permission set that can be applied across different cloud platforms + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackExtend } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackExtend = { + description: "cruelly whether yowza incidentally innocently idealistic", + id: "", + platforms: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `description` | *string* | :heavy_check_mark: | Human-readable description of what this permission set allows | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the permission set (e.g., "storage/data-read") | +| `platforms` | [models.SyncReconcileResponsePendingPreparedStackExtendPlatforms](../models/syncreconcileresponsependingpreparedstackextendplatforms.md) | :heavy_check_mark: | Platform-specific permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendaw.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendaw.md new file mode 100644 index 000000000..48ea14141 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendaw.md @@ -0,0 +1,24 @@ +# SyncReconcileResponsePendingPreparedStackExtendAw + +AWS-specific platform permission configuration + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackExtendAw } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackExtendAw = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.SyncReconcileResponsePendingPreparedStackExtendAwBinding](../models/syncreconcileresponsependingpreparedstackextendawbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `effect` | [models.SyncReconcileResponsePendingPreparedStackExtendEffect](../models/syncreconcileresponsependingpreparedstackextendeffect.md) | :heavy_minus_sign: | IAM effect. Defaults to Allow. | +| `grant` | [models.SyncReconcileResponsePendingPreparedStackExtendAwGrant](../models/syncreconcileresponsependingpreparedstackextendawgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendawbinding.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendawbinding.md new file mode 100644 index 000000000..74aa4b204 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendawbinding.md @@ -0,0 +1,18 @@ +# SyncReconcileResponsePendingPreparedStackExtendAwBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackExtendAwBinding } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackExtendAwBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | +| `resource` | [models.SyncReconcileResponsePendingPreparedStackExtendAwResource](../models/syncreconcileresponsependingpreparedstackextendawresource.md) | :heavy_minus_sign: | AWS-specific binding specification | +| `stack` | [models.SyncReconcileResponsePendingPreparedStackExtendAwStack](../models/syncreconcileresponsependingpreparedstackextendawstack.md) | :heavy_minus_sign: | AWS-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendawgrant.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendawgrant.md new file mode 100644 index 000000000..fb89c1a75 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendawgrant.md @@ -0,0 +1,21 @@ +# SyncReconcileResponsePendingPreparedStackExtendAwGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackExtendAwGrant } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackExtendAwGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendawresource.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendawresource.md new file mode 100644 index 000000000..bd2d40633 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendawresource.md @@ -0,0 +1,20 @@ +# SyncReconcileResponsePendingPreparedStackExtendAwResource + +AWS-specific binding specification + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackExtendAwResource } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackExtendAwResource = { + resources: [], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendawstack.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendawstack.md new file mode 100644 index 000000000..f7175dd91 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendawstack.md @@ -0,0 +1,24 @@ +# SyncReconcileResponsePendingPreparedStackExtendAwStack + +AWS-specific binding specification + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackExtendAwStack } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackExtendAwStack = { + resources: [ + "", + "", + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendazure.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendazure.md new file mode 100644 index 000000000..c458ccbaa --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendazure.md @@ -0,0 +1,23 @@ +# SyncReconcileResponsePendingPreparedStackExtendAzure + +Azure-specific platform permission configuration + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackExtendAzure } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackExtendAzure = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.SyncReconcileResponsePendingPreparedStackExtendAzureBinding](../models/syncreconcileresponsependingpreparedstackextendazurebinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.SyncReconcileResponsePendingPreparedStackExtendAzureGrant](../models/syncreconcileresponsependingpreparedstackextendazuregrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendazurebinding.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendazurebinding.md new file mode 100644 index 000000000..cdebfc136 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendazurebinding.md @@ -0,0 +1,18 @@ +# SyncReconcileResponsePendingPreparedStackExtendAzureBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackExtendAzureBinding } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackExtendAzureBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | +| `resource` | [models.SyncReconcileResponsePendingPreparedStackExtendAzureResource](../models/syncreconcileresponsependingpreparedstackextendazureresource.md) | :heavy_minus_sign: | Azure-specific binding specification | +| `stack` | [models.SyncReconcileResponsePendingPreparedStackExtendAzureStack](../models/syncreconcileresponsependingpreparedstackextendazurestack.md) | :heavy_minus_sign: | Azure-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendazuregrant.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendazuregrant.md new file mode 100644 index 000000000..87a46bc13 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendazuregrant.md @@ -0,0 +1,21 @@ +# SyncReconcileResponsePendingPreparedStackExtendAzureGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackExtendAzureGrant } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackExtendAzureGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendazureresource.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendazureresource.md new file mode 100644 index 000000000..b1b812a4a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendazureresource.md @@ -0,0 +1,19 @@ +# SyncReconcileResponsePendingPreparedStackExtendAzureResource + +Azure-specific binding specification + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackExtendAzureResource } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackExtendAzureResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendazurestack.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendazurestack.md new file mode 100644 index 000000000..7d4b71355 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendazurestack.md @@ -0,0 +1,19 @@ +# SyncReconcileResponsePendingPreparedStackExtendAzureStack + +Azure-specific binding specification + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackExtendAzureStack } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackExtendAzureStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendconditionresource.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendconditionresource.md new file mode 100644 index 000000000..6443c519d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendconditionresource.md @@ -0,0 +1,21 @@ +# SyncReconcileResponsePendingPreparedStackExtendConditionResource + +GCP IAM condition + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackExtendConditionResource } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackExtendConditionResource = { + expression: "", + title: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendconditionstack.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendconditionstack.md new file mode 100644 index 000000000..31644f19a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendconditionstack.md @@ -0,0 +1,21 @@ +# SyncReconcileResponsePendingPreparedStackExtendConditionStack + +GCP IAM condition + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackExtendConditionStack } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackExtendConditionStack = { + expression: "", + title: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendeffect.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendeffect.md new file mode 100644 index 000000000..ac3fb2465 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendeffect.md @@ -0,0 +1,17 @@ +# SyncReconcileResponsePendingPreparedStackExtendEffect + +IAM effect. Defaults to Allow. + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackExtendEffect } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackExtendEffect = "Allow"; +``` + +## Values + +```typescript +"Allow" | "Deny" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendgcp.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendgcp.md new file mode 100644 index 000000000..f15b86750 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendgcp.md @@ -0,0 +1,23 @@ +# SyncReconcileResponsePendingPreparedStackExtendGcp + +GCP-specific platform permission configuration + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackExtendGcp } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackExtendGcp = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | +| `binding` | [models.SyncReconcileResponsePendingPreparedStackExtendGcpBinding](../models/syncreconcileresponsependingpreparedstackextendgcpbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.SyncReconcileResponsePendingPreparedStackExtendGcpGrant](../models/syncreconcileresponsependingpreparedstackextendgcpgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendgcpbinding.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendgcpbinding.md new file mode 100644 index 000000000..e23efec21 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendgcpbinding.md @@ -0,0 +1,18 @@ +# SyncReconcileResponsePendingPreparedStackExtendGcpBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackExtendGcpBinding } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackExtendGcpBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.SyncReconcileResponsePendingPreparedStackExtendGcpResource](../models/syncreconcileresponsependingpreparedstackextendgcpresource.md) | :heavy_minus_sign: | GCP-specific binding specification | +| `stack` | [models.SyncReconcileResponsePendingPreparedStackExtendGcpStack](../models/syncreconcileresponsependingpreparedstackextendgcpstack.md) | :heavy_minus_sign: | GCP-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendgcpgrant.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendgcpgrant.md new file mode 100644 index 000000000..ed5da3d30 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendgcpgrant.md @@ -0,0 +1,21 @@ +# SyncReconcileResponsePendingPreparedStackExtendGcpGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackExtendGcpGrant } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackExtendGcpGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendgcpresource.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendgcpresource.md new file mode 100644 index 000000000..087e55bd9 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendgcpresource.md @@ -0,0 +1,20 @@ +# SyncReconcileResponsePendingPreparedStackExtendGcpResource + +GCP-specific binding specification + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackExtendGcpResource } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackExtendGcpResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | +| `condition` | *models.SyncReconcileResponsePendingPreparedStackExtendResourceConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendgcpstack.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendgcpstack.md new file mode 100644 index 000000000..dad0679a3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendgcpstack.md @@ -0,0 +1,20 @@ +# SyncReconcileResponsePendingPreparedStackExtendGcpStack + +GCP-specific binding specification + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackExtendGcpStack } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackExtendGcpStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| `condition` | *models.SyncReconcileResponsePendingPreparedStackExtendStackConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendplatforms.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendplatforms.md new file mode 100644 index 000000000..53d9a9bc8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendplatforms.md @@ -0,0 +1,19 @@ +# SyncReconcileResponsePendingPreparedStackExtendPlatforms + +Platform-specific permission configurations + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackExtendPlatforms } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackExtendPlatforms = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| `aws` | [models.SyncReconcileResponsePendingPreparedStackExtendAw](../models/syncreconcileresponsependingpreparedstackextendaw.md)[] | :heavy_minus_sign: | AWS permission configurations | +| `azure` | [models.SyncReconcileResponsePendingPreparedStackExtendAzure](../models/syncreconcileresponsependingpreparedstackextendazure.md)[] | :heavy_minus_sign: | Azure permission configurations | +| `gcp` | [models.SyncReconcileResponsePendingPreparedStackExtendGcp](../models/syncreconcileresponsependingpreparedstackextendgcp.md)[] | :heavy_minus_sign: | GCP permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendresourceconditionunion.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendresourceconditionunion.md new file mode 100644 index 000000000..f51962fb6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendresourceconditionunion.md @@ -0,0 +1,21 @@ +# SyncReconcileResponsePendingPreparedStackExtendResourceConditionUnion + + +## Supported Types + +### `models.SyncReconcileResponsePendingPreparedStackExtendConditionResource` + +```typescript +const value: + models.SyncReconcileResponsePendingPreparedStackExtendConditionResource = { + expression: "", + title: "", + }; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendstackconditionunion.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendstackconditionunion.md new file mode 100644 index 000000000..db149cc19 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendstackconditionunion.md @@ -0,0 +1,21 @@ +# SyncReconcileResponsePendingPreparedStackExtendStackConditionUnion + + +## Supported Types + +### `models.SyncReconcileResponsePendingPreparedStackExtendConditionStack` + +```typescript +const value: + models.SyncReconcileResponsePendingPreparedStackExtendConditionStack = { + expression: "", + title: "", + }; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendunion.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendunion.md new file mode 100644 index 000000000..00593ca9d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackextendunion.md @@ -0,0 +1,23 @@ +# SyncReconcileResponsePendingPreparedStackExtendUnion + +Reference to a permission set - either by name or inline definition + + +## Supported Types + +### `models.SyncReconcileResponsePendingPreparedStackExtend` + +```typescript +const value: models.SyncReconcileResponsePendingPreparedStackExtend = { + description: "cruelly whether yowza incidentally innocently idealistic", + id: "", + platforms: {}, +}; +``` + +### `string` + +```typescript +const value: string = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackinput.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackinput.md new file mode 100644 index 000000000..6b9321b97 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackinput.md @@ -0,0 +1,34 @@ +# SyncReconcileResponsePendingPreparedStackInput + +Stack input definition serialized into a release stack. + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackInput } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackInput = { + description: "left qualified yahoo", + id: "", + kind: "integer", + label: "", + providedBy: [], + required: false, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | +| `default` | *models.SyncReconcileResponsePendingPreparedStackDefaultUnion* | :heavy_minus_sign: | N/A | +| `description` | *string* | :heavy_check_mark: | Human-facing helper text. | +| `env` | [models.SyncReconcileResponsePendingPreparedStackEnv](../models/syncreconcileresponsependingpreparedstackenv.md)[] | :heavy_minus_sign: | Runtime env-var mappings for v1 input resolution. | +| `id` | *string* | :heavy_check_mark: | Stable input ID used by CLI/API calls. | +| `kind` | [models.SyncReconcileResponsePendingPreparedStackKind](../models/syncreconcileresponsependingpreparedstackkind.md) | :heavy_check_mark: | Primitive stack input kind. | +| `label` | *string* | :heavy_check_mark: | Human-facing field label. | +| `placeholder` | *string* | :heavy_minus_sign: | Example placeholder shown in UI. | +| `platforms` | [models.SyncReconcileResponsePendingPreparedStackPlatform](../models/syncreconcileresponsependingpreparedstackplatform.md)[] | :heavy_minus_sign: | Platforms where this input applies. | +| `providedBy` | [models.SyncReconcileResponsePendingPreparedStackProvidedBy](../models/syncreconcileresponsependingpreparedstackprovidedby.md)[] | :heavy_check_mark: | Who can provide this value. | +| `required` | *boolean* | :heavy_check_mark: | Whether a resolved value is required before deployment can proceed. | +| `validation` | *models.SyncReconcileResponsePendingPreparedStackValidationUnion* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackkind.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackkind.md new file mode 100644 index 000000000..8d49662e5 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackkind.md @@ -0,0 +1,17 @@ +# SyncReconcileResponsePendingPreparedStackKind + +Primitive stack input kind. + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackKind } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackKind = "stringList"; +``` + +## Values + +```typescript +"string" | "secret" | "number" | "integer" | "boolean" | "enum" | "stringList" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstacklifecycle.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstacklifecycle.md new file mode 100644 index 000000000..41c10ccac --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstacklifecycle.md @@ -0,0 +1,17 @@ +# SyncReconcileResponsePendingPreparedStackLifecycle + +Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackLifecycle } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackLifecycle = "frozen"; +``` + +## Values + +```typescript +"frozen" | "live" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackmanagement1.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackmanagement1.md new file mode 100644 index 000000000..28b93feba --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackmanagement1.md @@ -0,0 +1,26 @@ +# SyncReconcileResponsePendingPreparedStackManagement1 + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackManagement1 } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackManagement1 = { + extend: { + "key": [], + "key1": [ + { + description: "now forager phooey cinder finally whenever restfully ack", + id: "", + platforms: {}, + }, + ], + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | +| `extend` | Record | :heavy_check_mark: | Permission profile that maps resources to permission sets
Key can be "*" for all resources or resource name for specific resource | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackmanagement2.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackmanagement2.md new file mode 100644 index 000000000..6c6fcd4fa --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackmanagement2.md @@ -0,0 +1,27 @@ +# SyncReconcileResponsePendingPreparedStackManagement2 + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackManagement2 } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackManagement2 = { + override: { + "key": [ + { + description: + "incidentally outnumber before till roadway encouragement rightfully", + id: "", + platforms: {}, + }, + ], + "key1": [], + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | +| `override` | Record | :heavy_check_mark: | Permission profile that maps resources to permission sets
Key can be "*" for all resources or resource name for specific resource | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackmanagementenum.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackmanagementenum.md new file mode 100644 index 000000000..82a4d9e90 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackmanagementenum.md @@ -0,0 +1,15 @@ +# SyncReconcileResponsePendingPreparedStackManagementEnum + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackManagementEnum } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackManagementEnum = "auto"; +``` + +## Values + +```typescript +"auto" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackmanagementunion.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackmanagementunion.md new file mode 100644 index 000000000..865a401af --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackmanagementunion.md @@ -0,0 +1,49 @@ +# SyncReconcileResponsePendingPreparedStackManagementUnion + +Management permissions configuration for stack management access + + +## Supported Types + +### `models.SyncReconcileResponsePendingPreparedStackManagement1` + +```typescript +const value: models.SyncReconcileResponsePendingPreparedStackManagement1 = { + extend: { + "key": [], + "key1": [ + { + description: "now forager phooey cinder finally whenever restfully ack", + id: "", + platforms: {}, + }, + ], + }, +}; +``` + +### `models.SyncReconcileResponsePendingPreparedStackManagement2` + +```typescript +const value: models.SyncReconcileResponsePendingPreparedStackManagement2 = { + override: { + "key": [ + { + description: + "incidentally outnumber before till roadway encouragement rightfully", + id: "", + platforms: {}, + }, + ], + "key1": [], + }, +}; +``` + +### `models.SyncReconcileResponsePendingPreparedStackManagementEnum` + +```typescript +const value: models.SyncReconcileResponsePendingPreparedStackManagementEnum = + "auto"; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverride.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverride.md new file mode 100644 index 000000000..d0148dcf4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverride.md @@ -0,0 +1,23 @@ +# SyncReconcileResponsePendingPreparedStackOverride + +A permission set that can be applied across different cloud platforms + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackOverride } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackOverride = { + description: "fatally the equal whimsical for coal bare rowdy flint", + id: "", + platforms: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | +| `description` | *string* | :heavy_check_mark: | Human-readable description of what this permission set allows | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the permission set (e.g., "storage/data-read") | +| `platforms` | [models.SyncReconcileResponsePendingPreparedStackOverridePlatforms](../models/syncreconcileresponsependingpreparedstackoverrideplatforms.md) | :heavy_check_mark: | Platform-specific permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverrideaw.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverrideaw.md new file mode 100644 index 000000000..8c2c0f404 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverrideaw.md @@ -0,0 +1,24 @@ +# SyncReconcileResponsePendingPreparedStackOverrideAw + +AWS-specific platform permission configuration + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackOverrideAw } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackOverrideAw = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.SyncReconcileResponsePendingPreparedStackOverrideAwBinding](../models/syncreconcileresponsependingpreparedstackoverrideawbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `effect` | [models.SyncReconcileResponsePendingPreparedStackOverrideEffect](../models/syncreconcileresponsependingpreparedstackoverrideeffect.md) | :heavy_minus_sign: | IAM effect. Defaults to Allow. | +| `grant` | [models.SyncReconcileResponsePendingPreparedStackOverrideAwGrant](../models/syncreconcileresponsependingpreparedstackoverrideawgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverrideawbinding.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverrideawbinding.md new file mode 100644 index 000000000..1de5e9c43 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverrideawbinding.md @@ -0,0 +1,18 @@ +# SyncReconcileResponsePendingPreparedStackOverrideAwBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackOverrideAwBinding } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackOverrideAwBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.SyncReconcileResponsePendingPreparedStackOverrideAwResource](../models/syncreconcileresponsependingpreparedstackoverrideawresource.md) | :heavy_minus_sign: | AWS-specific binding specification | +| `stack` | [models.SyncReconcileResponsePendingPreparedStackOverrideAwStack](../models/syncreconcileresponsependingpreparedstackoverrideawstack.md) | :heavy_minus_sign: | AWS-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverrideawgrant.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverrideawgrant.md new file mode 100644 index 000000000..aa438b7ab --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverrideawgrant.md @@ -0,0 +1,21 @@ +# SyncReconcileResponsePendingPreparedStackOverrideAwGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackOverrideAwGrant } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackOverrideAwGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverrideawresource.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverrideawresource.md new file mode 100644 index 000000000..62a50b175 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverrideawresource.md @@ -0,0 +1,24 @@ +# SyncReconcileResponsePendingPreparedStackOverrideAwResource + +AWS-specific binding specification + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackOverrideAwResource } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackOverrideAwResource = { + resources: [ + "", + "", + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverrideawstack.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverrideawstack.md new file mode 100644 index 000000000..4402ff734 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverrideawstack.md @@ -0,0 +1,20 @@ +# SyncReconcileResponsePendingPreparedStackOverrideAwStack + +AWS-specific binding specification + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackOverrideAwStack } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackOverrideAwStack = { + resources: [], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverrideazure.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverrideazure.md new file mode 100644 index 000000000..ef84cf30d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverrideazure.md @@ -0,0 +1,23 @@ +# SyncReconcileResponsePendingPreparedStackOverrideAzure + +Azure-specific platform permission configuration + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackOverrideAzure } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackOverrideAzure = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.SyncReconcileResponsePendingPreparedStackOverrideAzureBinding](../models/syncreconcileresponsependingpreparedstackoverrideazurebinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.SyncReconcileResponsePendingPreparedStackOverrideAzureGrant](../models/syncreconcileresponsependingpreparedstackoverrideazuregrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverrideazurebinding.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverrideazurebinding.md new file mode 100644 index 000000000..b0d3cb363 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverrideazurebinding.md @@ -0,0 +1,18 @@ +# SyncReconcileResponsePendingPreparedStackOverrideAzureBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackOverrideAzureBinding } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackOverrideAzureBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.SyncReconcileResponsePendingPreparedStackOverrideAzureResource](../models/syncreconcileresponsependingpreparedstackoverrideazureresource.md) | :heavy_minus_sign: | Azure-specific binding specification | +| `stack` | [models.SyncReconcileResponsePendingPreparedStackOverrideAzureStack](../models/syncreconcileresponsependingpreparedstackoverrideazurestack.md) | :heavy_minus_sign: | Azure-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverrideazuregrant.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverrideazuregrant.md new file mode 100644 index 000000000..329d873ad --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverrideazuregrant.md @@ -0,0 +1,21 @@ +# SyncReconcileResponsePendingPreparedStackOverrideAzureGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackOverrideAzureGrant } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackOverrideAzureGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverrideazureresource.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverrideazureresource.md new file mode 100644 index 000000000..002ac9b23 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverrideazureresource.md @@ -0,0 +1,19 @@ +# SyncReconcileResponsePendingPreparedStackOverrideAzureResource + +Azure-specific binding specification + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackOverrideAzureResource } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackOverrideAzureResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverrideazurestack.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverrideazurestack.md new file mode 100644 index 000000000..58ca500de --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverrideazurestack.md @@ -0,0 +1,19 @@ +# SyncReconcileResponsePendingPreparedStackOverrideAzureStack + +Azure-specific binding specification + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackOverrideAzureStack } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackOverrideAzureStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverrideconditionresource.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverrideconditionresource.md new file mode 100644 index 000000000..74ed965c8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverrideconditionresource.md @@ -0,0 +1,22 @@ +# SyncReconcileResponsePendingPreparedStackOverrideConditionResource + +GCP IAM condition + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackOverrideConditionResource } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackOverrideConditionResource = + { + expression: "", + title: "", + }; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverrideconditionstack.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverrideconditionstack.md new file mode 100644 index 000000000..7140c97d3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverrideconditionstack.md @@ -0,0 +1,21 @@ +# SyncReconcileResponsePendingPreparedStackOverrideConditionStack + +GCP IAM condition + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackOverrideConditionStack } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackOverrideConditionStack = { + expression: "", + title: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverrideeffect.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverrideeffect.md new file mode 100644 index 000000000..b8f0559be --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverrideeffect.md @@ -0,0 +1,17 @@ +# SyncReconcileResponsePendingPreparedStackOverrideEffect + +IAM effect. Defaults to Allow. + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackOverrideEffect } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackOverrideEffect = "Allow"; +``` + +## Values + +```typescript +"Allow" | "Deny" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverridegcp.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverridegcp.md new file mode 100644 index 000000000..6fc17a874 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverridegcp.md @@ -0,0 +1,23 @@ +# SyncReconcileResponsePendingPreparedStackOverrideGcp + +GCP-specific platform permission configuration + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackOverrideGcp } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackOverrideGcp = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.SyncReconcileResponsePendingPreparedStackOverrideGcpBinding](../models/syncreconcileresponsependingpreparedstackoverridegcpbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.SyncReconcileResponsePendingPreparedStackOverrideGcpGrant](../models/syncreconcileresponsependingpreparedstackoverridegcpgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverridegcpbinding.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverridegcpbinding.md new file mode 100644 index 000000000..7b59a0234 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverridegcpbinding.md @@ -0,0 +1,18 @@ +# SyncReconcileResponsePendingPreparedStackOverrideGcpBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackOverrideGcpBinding } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackOverrideGcpBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | +| `resource` | [models.SyncReconcileResponsePendingPreparedStackOverrideGcpResource](../models/syncreconcileresponsependingpreparedstackoverridegcpresource.md) | :heavy_minus_sign: | GCP-specific binding specification | +| `stack` | [models.SyncReconcileResponsePendingPreparedStackOverrideGcpStack](../models/syncreconcileresponsependingpreparedstackoverridegcpstack.md) | :heavy_minus_sign: | GCP-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverridegcpgrant.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverridegcpgrant.md new file mode 100644 index 000000000..a589a2b14 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverridegcpgrant.md @@ -0,0 +1,21 @@ +# SyncReconcileResponsePendingPreparedStackOverrideGcpGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackOverrideGcpGrant } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackOverrideGcpGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverridegcpresource.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverridegcpresource.md new file mode 100644 index 000000000..99bdf9b2b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverridegcpresource.md @@ -0,0 +1,20 @@ +# SyncReconcileResponsePendingPreparedStackOverrideGcpResource + +GCP-specific binding specification + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackOverrideGcpResource } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackOverrideGcpResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `condition` | *models.SyncReconcileResponsePendingPreparedStackOverrideResourceConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverridegcpstack.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverridegcpstack.md new file mode 100644 index 000000000..67529bebd --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverridegcpstack.md @@ -0,0 +1,20 @@ +# SyncReconcileResponsePendingPreparedStackOverrideGcpStack + +GCP-specific binding specification + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackOverrideGcpStack } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackOverrideGcpStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | +| `condition` | *models.SyncReconcileResponsePendingPreparedStackOverrideStackConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverrideplatforms.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverrideplatforms.md new file mode 100644 index 000000000..62c0b918a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverrideplatforms.md @@ -0,0 +1,19 @@ +# SyncReconcileResponsePendingPreparedStackOverridePlatforms + +Platform-specific permission configurations + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackOverridePlatforms } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackOverridePlatforms = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | +| `aws` | [models.SyncReconcileResponsePendingPreparedStackOverrideAw](../models/syncreconcileresponsependingpreparedstackoverrideaw.md)[] | :heavy_minus_sign: | AWS permission configurations | +| `azure` | [models.SyncReconcileResponsePendingPreparedStackOverrideAzure](../models/syncreconcileresponsependingpreparedstackoverrideazure.md)[] | :heavy_minus_sign: | Azure permission configurations | +| `gcp` | [models.SyncReconcileResponsePendingPreparedStackOverrideGcp](../models/syncreconcileresponsependingpreparedstackoverridegcp.md)[] | :heavy_minus_sign: | GCP permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverrideresourceconditionunion.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverrideresourceconditionunion.md new file mode 100644 index 000000000..b3f686214 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverrideresourceconditionunion.md @@ -0,0 +1,21 @@ +# SyncReconcileResponsePendingPreparedStackOverrideResourceConditionUnion + + +## Supported Types + +### `models.SyncReconcileResponsePendingPreparedStackOverrideConditionResource` + +```typescript +const value: + models.SyncReconcileResponsePendingPreparedStackOverrideConditionResource = { + expression: "", + title: "", + }; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverridestackconditionunion.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverridestackconditionunion.md new file mode 100644 index 000000000..412e52c5b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverridestackconditionunion.md @@ -0,0 +1,21 @@ +# SyncReconcileResponsePendingPreparedStackOverrideStackConditionUnion + + +## Supported Types + +### `models.SyncReconcileResponsePendingPreparedStackOverrideConditionStack` + +```typescript +const value: + models.SyncReconcileResponsePendingPreparedStackOverrideConditionStack = { + expression: "", + title: "", + }; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverrideunion.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverrideunion.md new file mode 100644 index 000000000..7e79bff88 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackoverrideunion.md @@ -0,0 +1,23 @@ +# SyncReconcileResponsePendingPreparedStackOverrideUnion + +Reference to a permission set - either by name or inline definition + + +## Supported Types + +### `models.SyncReconcileResponsePendingPreparedStackOverride` + +```typescript +const value: models.SyncReconcileResponsePendingPreparedStackOverride = { + description: "fatally the equal whimsical for coal bare rowdy flint", + id: "", + platforms: {}, +}; +``` + +### `string` + +```typescript +const value: string = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackpermissions.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackpermissions.md new file mode 100644 index 000000000..69a747e66 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackpermissions.md @@ -0,0 +1,33 @@ +# SyncReconcileResponsePendingPreparedStackPermissions + +Combined permissions configuration that contains both profiles and management + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackPermissions } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackPermissions = { + profiles: { + "key": { + "key": [ + "", + ], + "key1": [], + "key2": [], + }, + "key1": { + "key": [], + "key1": [], + "key2": [], + }, + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| `management` | *models.SyncReconcileResponsePendingPreparedStackManagementUnion* | :heavy_minus_sign: | Management permissions configuration for stack management access | +| `profiles` | Record> | :heavy_check_mark: | Permission profiles that define access control for compute services
Key is the profile name, value is the permission configuration | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackplatform.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackplatform.md new file mode 100644 index 000000000..8fa211df9 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackplatform.md @@ -0,0 +1,17 @@ +# SyncReconcileResponsePendingPreparedStackPlatform + +Represents the target cloud platform. + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackPlatform } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackPlatform = "azure"; +``` + +## Values + +```typescript +"aws" | "gcp" | "azure" | "kubernetes" | "machines" | "local" | "test" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofile.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofile.md new file mode 100644 index 000000000..1b0c2195e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofile.md @@ -0,0 +1,24 @@ +# SyncReconcileResponsePendingPreparedStackProfile + +A permission set that can be applied across different cloud platforms + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackProfile } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackProfile = { + description: + "catalyze consequently forenenst smuggle pomelo stealthily keenly", + id: "", + platforms: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | +| `description` | *string* | :heavy_check_mark: | Human-readable description of what this permission set allows | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the permission set (e.g., "storage/data-read") | +| `platforms` | [models.SyncReconcileResponsePendingPreparedStackProfilePlatforms](../models/syncreconcileresponsependingpreparedstackprofileplatforms.md) | :heavy_check_mark: | Platform-specific permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofileaw.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofileaw.md new file mode 100644 index 000000000..400827c85 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofileaw.md @@ -0,0 +1,24 @@ +# SyncReconcileResponsePendingPreparedStackProfileAw + +AWS-specific platform permission configuration + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackProfileAw } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackProfileAw = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | +| `binding` | [models.SyncReconcileResponsePendingPreparedStackProfileAwBinding](../models/syncreconcileresponsependingpreparedstackprofileawbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `effect` | [models.SyncReconcileResponsePendingPreparedStackProfileEffect](../models/syncreconcileresponsependingpreparedstackprofileeffect.md) | :heavy_minus_sign: | IAM effect. Defaults to Allow. | +| `grant` | [models.SyncReconcileResponsePendingPreparedStackProfileAwGrant](../models/syncreconcileresponsependingpreparedstackprofileawgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofileawbinding.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofileawbinding.md new file mode 100644 index 000000000..9a7848826 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofileawbinding.md @@ -0,0 +1,18 @@ +# SyncReconcileResponsePendingPreparedStackProfileAwBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackProfileAwBinding } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackProfileAwBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.SyncReconcileResponsePendingPreparedStackProfileAwResource](../models/syncreconcileresponsependingpreparedstackprofileawresource.md) | :heavy_minus_sign: | AWS-specific binding specification | +| `stack` | [models.SyncReconcileResponsePendingPreparedStackProfileAwStack](../models/syncreconcileresponsependingpreparedstackprofileawstack.md) | :heavy_minus_sign: | AWS-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofileawgrant.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofileawgrant.md new file mode 100644 index 000000000..c63492355 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofileawgrant.md @@ -0,0 +1,21 @@ +# SyncReconcileResponsePendingPreparedStackProfileAwGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackProfileAwGrant } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackProfileAwGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofileawresource.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofileawresource.md new file mode 100644 index 000000000..d9000c30f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofileawresource.md @@ -0,0 +1,24 @@ +# SyncReconcileResponsePendingPreparedStackProfileAwResource + +AWS-specific binding specification + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackProfileAwResource } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackProfileAwResource = { + resources: [ + "", + "", + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofileawstack.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofileawstack.md new file mode 100644 index 000000000..c33e3d9db --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofileawstack.md @@ -0,0 +1,22 @@ +# SyncReconcileResponsePendingPreparedStackProfileAwStack + +AWS-specific binding specification + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackProfileAwStack } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackProfileAwStack = { + resources: [ + "", + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `condition` | Record> | :heavy_minus_sign: | Optional condition for additional filtering (rare) | +| `resources` | *string*[] | :heavy_check_mark: | Resource ARNs to bind to | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofileazure.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofileazure.md new file mode 100644 index 000000000..86e0bfd52 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofileazure.md @@ -0,0 +1,23 @@ +# SyncReconcileResponsePendingPreparedStackProfileAzure + +Azure-specific platform permission configuration + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackProfileAzure } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackProfileAzure = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | +| `binding` | [models.SyncReconcileResponsePendingPreparedStackProfileAzureBinding](../models/syncreconcileresponsependingpreparedstackprofileazurebinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.SyncReconcileResponsePendingPreparedStackProfileAzureGrant](../models/syncreconcileresponsependingpreparedstackprofileazuregrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofileazurebinding.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofileazurebinding.md new file mode 100644 index 000000000..7d1c57b0e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofileazurebinding.md @@ -0,0 +1,18 @@ +# SyncReconcileResponsePendingPreparedStackProfileAzureBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackProfileAzureBinding } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackProfileAzureBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.SyncReconcileResponsePendingPreparedStackProfileAzureResource](../models/syncreconcileresponsependingpreparedstackprofileazureresource.md) | :heavy_minus_sign: | Azure-specific binding specification | +| `stack` | [models.SyncReconcileResponsePendingPreparedStackProfileAzureStack](../models/syncreconcileresponsependingpreparedstackprofileazurestack.md) | :heavy_minus_sign: | Azure-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofileazuregrant.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofileazuregrant.md new file mode 100644 index 000000000..764b2efb4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofileazuregrant.md @@ -0,0 +1,21 @@ +# SyncReconcileResponsePendingPreparedStackProfileAzureGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackProfileAzureGrant } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackProfileAzureGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofileazureresource.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofileazureresource.md new file mode 100644 index 000000000..4e6fd2086 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofileazureresource.md @@ -0,0 +1,19 @@ +# SyncReconcileResponsePendingPreparedStackProfileAzureResource + +Azure-specific binding specification + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackProfileAzureResource } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackProfileAzureResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofileazurestack.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofileazurestack.md new file mode 100644 index 000000000..e66ad8162 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofileazurestack.md @@ -0,0 +1,19 @@ +# SyncReconcileResponsePendingPreparedStackProfileAzureStack + +Azure-specific binding specification + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackProfileAzureStack } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackProfileAzureStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `scope` | *string* | :heavy_check_mark: | Scope (subscription/resource group/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofileconditionresource.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofileconditionresource.md new file mode 100644 index 000000000..7c5fd3d2a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofileconditionresource.md @@ -0,0 +1,21 @@ +# SyncReconcileResponsePendingPreparedStackProfileConditionResource + +GCP IAM condition + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackProfileConditionResource } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackProfileConditionResource = { + expression: "", + title: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofileconditionstack.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofileconditionstack.md new file mode 100644 index 000000000..d62b67b0b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofileconditionstack.md @@ -0,0 +1,21 @@ +# SyncReconcileResponsePendingPreparedStackProfileConditionStack + +GCP IAM condition + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackProfileConditionStack } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackProfileConditionStack = { + expression: "", + title: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `expression` | *string* | :heavy_check_mark: | N/A | +| `title` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofileeffect.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofileeffect.md new file mode 100644 index 000000000..93bb4786b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofileeffect.md @@ -0,0 +1,17 @@ +# SyncReconcileResponsePendingPreparedStackProfileEffect + +IAM effect. Defaults to Allow. + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackProfileEffect } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackProfileEffect = "Allow"; +``` + +## Values + +```typescript +"Allow" | "Deny" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofilegcp.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofilegcp.md new file mode 100644 index 000000000..0fe4662be --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofilegcp.md @@ -0,0 +1,23 @@ +# SyncReconcileResponsePendingPreparedStackProfileGcp + +GCP-specific platform permission configuration + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackProfileGcp } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackProfileGcp = { + binding: {}, + grant: {}, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | +| `binding` | [models.SyncReconcileResponsePendingPreparedStackProfileGcpBinding](../models/syncreconcileresponsependingpreparedstackprofilegcpbinding.md) | :heavy_check_mark: | Generic binding configuration for permissions | +| `description` | *string* | :heavy_minus_sign: | Short admin-facing description of why this entry exists. | +| `grant` | [models.SyncReconcileResponsePendingPreparedStackProfileGcpGrant](../models/syncreconcileresponsependingpreparedstackprofilegcpgrant.md) | :heavy_check_mark: | Grant permissions for a specific cloud platform | +| `label` | *string* | :heavy_minus_sign: | Stable admin-facing label for this permission entry. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofilegcpbinding.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofilegcpbinding.md new file mode 100644 index 000000000..59934d9eb --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofilegcpbinding.md @@ -0,0 +1,18 @@ +# SyncReconcileResponsePendingPreparedStackProfileGcpBinding + +Generic binding configuration for permissions + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackProfileGcpBinding } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackProfileGcpBinding = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | +| `resource` | [models.SyncReconcileResponsePendingPreparedStackProfileGcpResource](../models/syncreconcileresponsependingpreparedstackprofilegcpresource.md) | :heavy_minus_sign: | GCP-specific binding specification | +| `stack` | [models.SyncReconcileResponsePendingPreparedStackProfileGcpStack](../models/syncreconcileresponsependingpreparedstackprofilegcpstack.md) | :heavy_minus_sign: | GCP-specific binding specification | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofilegcpgrant.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofilegcpgrant.md new file mode 100644 index 000000000..3d6ae977f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofilegcpgrant.md @@ -0,0 +1,21 @@ +# SyncReconcileResponsePendingPreparedStackProfileGcpGrant + +Grant permissions for a specific cloud platform + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackProfileGcpGrant } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackProfileGcpGrant = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `actions` | *string*[] | :heavy_minus_sign: | AWS IAM actions (only for AWS) | +| `dataActions` | *string*[] | :heavy_minus_sign: | Azure actions (only for Azure) | +| `permissions` | *string*[] | :heavy_minus_sign: | GCP permissions that require an exact residual custom role. | +| `predefinedRoles` | *string*[] | :heavy_minus_sign: | Provider predefined roles to bind directly. | +| `residualPermissions` | *string*[] | :heavy_minus_sign: | GCP residual custom permissions to pair with predefined roles. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofilegcpresource.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofilegcpresource.md new file mode 100644 index 000000000..9c98581a7 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofilegcpresource.md @@ -0,0 +1,20 @@ +# SyncReconcileResponsePendingPreparedStackProfileGcpResource + +GCP-specific binding specification + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackProfileGcpResource } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackProfileGcpResource = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| `condition` | *models.SyncReconcileResponsePendingPreparedStackProfileResourceConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofilegcpstack.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofilegcpstack.md new file mode 100644 index 000000000..8ab9039c0 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofilegcpstack.md @@ -0,0 +1,20 @@ +# SyncReconcileResponsePendingPreparedStackProfileGcpStack + +GCP-specific binding specification + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackProfileGcpStack } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackProfileGcpStack = { + scope: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| `condition` | *models.SyncReconcileResponsePendingPreparedStackProfileStackConditionUnion* | :heavy_minus_sign: | N/A | +| `scope` | *string* | :heavy_check_mark: | Scope (project/resource level) | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofileplatforms.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofileplatforms.md new file mode 100644 index 000000000..09468639c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofileplatforms.md @@ -0,0 +1,19 @@ +# SyncReconcileResponsePendingPreparedStackProfilePlatforms + +Platform-specific permission configurations + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackProfilePlatforms } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackProfilePlatforms = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | +| `aws` | [models.SyncReconcileResponsePendingPreparedStackProfileAw](../models/syncreconcileresponsependingpreparedstackprofileaw.md)[] | :heavy_minus_sign: | AWS permission configurations | +| `azure` | [models.SyncReconcileResponsePendingPreparedStackProfileAzure](../models/syncreconcileresponsependingpreparedstackprofileazure.md)[] | :heavy_minus_sign: | Azure permission configurations | +| `gcp` | [models.SyncReconcileResponsePendingPreparedStackProfileGcp](../models/syncreconcileresponsependingpreparedstackprofilegcp.md)[] | :heavy_minus_sign: | GCP permission configurations | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofileresourceconditionunion.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofileresourceconditionunion.md new file mode 100644 index 000000000..d2cfc238a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofileresourceconditionunion.md @@ -0,0 +1,21 @@ +# SyncReconcileResponsePendingPreparedStackProfileResourceConditionUnion + + +## Supported Types + +### `models.SyncReconcileResponsePendingPreparedStackProfileConditionResource` + +```typescript +const value: + models.SyncReconcileResponsePendingPreparedStackProfileConditionResource = { + expression: "", + title: "", + }; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofilestackconditionunion.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofilestackconditionunion.md new file mode 100644 index 000000000..8ec4764ca --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofilestackconditionunion.md @@ -0,0 +1,21 @@ +# SyncReconcileResponsePendingPreparedStackProfileStackConditionUnion + + +## Supported Types + +### `models.SyncReconcileResponsePendingPreparedStackProfileConditionStack` + +```typescript +const value: + models.SyncReconcileResponsePendingPreparedStackProfileConditionStack = { + expression: "", + title: "", + }; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofileunion.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofileunion.md new file mode 100644 index 000000000..8ee432dff --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprofileunion.md @@ -0,0 +1,24 @@ +# SyncReconcileResponsePendingPreparedStackProfileUnion + +Reference to a permission set - either by name or inline definition + + +## Supported Types + +### `models.SyncReconcileResponsePendingPreparedStackProfile` + +```typescript +const value: models.SyncReconcileResponsePendingPreparedStackProfile = { + description: + "catalyze consequently forenenst smuggle pomelo stealthily keenly", + id: "", + platforms: {}, +}; +``` + +### `string` + +```typescript +const value: string = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprovidedby.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprovidedby.md new file mode 100644 index 000000000..02b9a0580 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackprovidedby.md @@ -0,0 +1,17 @@ +# SyncReconcileResponsePendingPreparedStackProvidedBy + +Who can provide a stack input value. + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackProvidedBy } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackProvidedBy = "developer"; +``` + +## Values + +```typescript +"developer" | "deployer" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackresources.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackresources.md new file mode 100644 index 000000000..896e51c9d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackresources.md @@ -0,0 +1,26 @@ +# SyncReconcileResponsePendingPreparedStackResources + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackResources } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackResources = { + config: { + id: "", + type: "", + }, + dependencies: [], + lifecycle: "frozen", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `config` | [models.SyncReconcileResponsePendingPreparedStackConfig](../models/syncreconcileresponsependingpreparedstackconfig.md) | :heavy_check_mark: | 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` | [models.SyncReconcileResponsePendingPreparedStackDependency](../models/syncreconcileresponsependingpreparedstackdependency.md)[] | :heavy_check_mark: | Additional dependencies for this resource beyond those defined in the resource itself.
The total dependencies are: resource.get_dependencies() + this list | +| `enabledWhen` | *string* | :heavy_minus_sign: | 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. | +| `lifecycle` | [models.SyncReconcileResponsePendingPreparedStackLifecycle](../models/syncreconcileresponsependingpreparedstacklifecycle.md) | :heavy_check_mark: | Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. | +| `remoteAccess` | *boolean* | :heavy_minus_sign: | Enable remote bindings for this resource (BYOB use case).
When true, binding params are synced to StackState's `remote_binding_params`.
Default: false (prevents sensitive data in synced state). | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstacksupportedplatform.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstacksupportedplatform.md new file mode 100644 index 000000000..916c988a3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstacksupportedplatform.md @@ -0,0 +1,17 @@ +# SyncReconcileResponsePendingPreparedStackSupportedPlatform + +Represents the target cloud platform. + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackSupportedPlatform } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackSupportedPlatform = "test"; +``` + +## Values + +```typescript +"aws" | "gcp" | "azure" | "kubernetes" | "machines" | "local" | "test" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstacktypeboolean.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstacktypeboolean.md new file mode 100644 index 000000000..e7a9f6122 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstacktypeboolean.md @@ -0,0 +1,15 @@ +# SyncReconcileResponsePendingPreparedStackTypeBoolean + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackTypeBoolean } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackTypeBoolean = "boolean"; +``` + +## Values + +```typescript +"boolean" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstacktypeenvenum.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstacktypeenvenum.md new file mode 100644 index 000000000..0aa260fa2 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstacktypeenvenum.md @@ -0,0 +1,17 @@ +# SyncReconcileResponsePendingPreparedStackTypeEnvEnum + +Environment variable handling for a stack input mapping. + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackTypeEnvEnum } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackTypeEnvEnum = "plain"; +``` + +## Values + +```typescript +"plain" | "secret" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstacktypenumber.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstacktypenumber.md new file mode 100644 index 000000000..4601bfafe --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstacktypenumber.md @@ -0,0 +1,15 @@ +# SyncReconcileResponsePendingPreparedStackTypeNumber + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackTypeNumber } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackTypeNumber = "number"; +``` + +## Values + +```typescript +"number" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstacktypestring.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstacktypestring.md new file mode 100644 index 000000000..eb7fa2383 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstacktypestring.md @@ -0,0 +1,15 @@ +# SyncReconcileResponsePendingPreparedStackTypeString + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackTypeString } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackTypeString = "string"; +``` + +## Values + +```typescript +"string" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstacktypestringlist.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstacktypestringlist.md new file mode 100644 index 000000000..d53d93e5c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstacktypestringlist.md @@ -0,0 +1,16 @@ +# SyncReconcileResponsePendingPreparedStackTypeStringList + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackTypeStringList } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackTypeStringList = + "stringList"; +``` + +## Values + +```typescript +"stringList" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstacktypeunion.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstacktypeunion.md new file mode 100644 index 000000000..9acb9042a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstacktypeunion.md @@ -0,0 +1,18 @@ +# SyncReconcileResponsePendingPreparedStackTypeUnion + + +## Supported Types + +### `models.SyncReconcileResponsePendingPreparedStackTypeEnvEnum` + +```typescript +const value: models.SyncReconcileResponsePendingPreparedStackTypeEnvEnum = + "plain"; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackunion.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackunion.md new file mode 100644 index 000000000..c2b404658 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackunion.md @@ -0,0 +1,34 @@ +# SyncReconcileResponsePendingPreparedStackUnion + + +## Supported Types + +### `models.SyncReconcileResponsePendingPreparedStack` + +```typescript +const value: models.SyncReconcileResponsePendingPreparedStack = { + id: "", + resources: { + "key": { + config: { + id: "", + type: "", + }, + dependencies: [ + { + id: "", + type: "", + }, + ], + lifecycle: "live", + }, + }, +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackvalidation.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackvalidation.md new file mode 100644 index 000000000..714428df2 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackvalidation.md @@ -0,0 +1,25 @@ +# SyncReconcileResponsePendingPreparedStackValidation + +Portable stack input validation constraints. + +## Example Usage + +```typescript +import { SyncReconcileResponsePendingPreparedStackValidation } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponsePendingPreparedStackValidation = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | +| `format` | *string* | :heavy_minus_sign: | Semantic format hint such as url. | +| `max` | *string* | :heavy_minus_sign: | Maximum number. | +| `maxItems` | *number* | :heavy_minus_sign: | Maximum string-list items. | +| `maxLength` | *number* | :heavy_minus_sign: | Maximum string length. | +| `min` | *string* | :heavy_minus_sign: | Minimum number. | +| `minItems` | *number* | :heavy_minus_sign: | Minimum string-list items. | +| `minLength` | *number* | :heavy_minus_sign: | Minimum string length. | +| `pattern` | *string* | :heavy_minus_sign: | Portable whole-value regex pattern. | +| `values` | *string*[] | :heavy_minus_sign: | Allowed string enum values. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackvalidationunion.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackvalidationunion.md new file mode 100644 index 000000000..6fcc0b8b9 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsependingpreparedstackvalidationunion.md @@ -0,0 +1,17 @@ +# SyncReconcileResponsePendingPreparedStackValidationUnion + + +## Supported Types + +### `models.SyncReconcileResponsePendingPreparedStackValidation` + +```typescript +const value: models.SyncReconcileResponsePendingPreparedStackValidation = {}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsepoolsautoscale.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsepoolsautoscale.md index 5c8dbdcfc..f9b32f32b 100644 --- a/client-sdks/platform/typescript/docs/models/syncreconcileresponsepoolsautoscale.md +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsepoolsautoscale.md @@ -16,6 +16,7 @@ let value: SyncReconcileResponsePoolsAutoscale = { | Field | Type | Required | Description | | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | +| `failureDomains` | *models.SyncReconcileResponseFailureDomainsUnion2* | :heavy_minus_sign: | N/A | | `machine` | *string* | :heavy_minus_sign: | Provider machine type selected for this deployment. | | `max` | *number* | :heavy_check_mark: | Maximum machine count. | | `min` | *number* | :heavy_check_mark: | Minimum machine count. | diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsepoolsfixed.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsepoolsfixed.md index c81e70fbf..bdf2b52e5 100644 --- a/client-sdks/platform/typescript/docs/models/syncreconcileresponsepoolsfixed.md +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsepoolsfixed.md @@ -15,6 +15,7 @@ let value: SyncReconcileResponsePoolsFixed = { | Field | Type | Required | Description | | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | +| `failureDomains` | *models.SyncReconcileResponseFailureDomainsUnion1* | :heavy_minus_sign: | N/A | | `machine` | *string* | :heavy_minus_sign: | Provider machine type selected for this deployment. | | `machines` | *number* | :heavy_check_mark: | Number of machines to run. | | `mode` | *"fixed"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsepreparedstackresources.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsepreparedstackresources.md index 996b8ad22..760310910 100644 --- a/client-sdks/platform/typescript/docs/models/syncreconcileresponsepreparedstackresources.md +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsepreparedstackresources.md @@ -22,9 +22,10 @@ let value: SyncReconcileResponsePreparedStackResources = { ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `config` | [models.SyncReconcileResponsePreparedStackConfig](../models/syncreconcileresponsepreparedstackconfig.md) | :heavy_check_mark: | 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` | [models.SyncReconcileResponsePreparedStackDependency](../models/syncreconcileresponsepreparedstackdependency.md)[] | :heavy_check_mark: | Additional dependencies for this resource beyond those defined in the resource itself.
The total dependencies are: resource.get_dependencies() + this list | -| `lifecycle` | [models.SyncReconcileResponsePreparedStackLifecycle](../models/syncreconcileresponsepreparedstacklifecycle.md) | :heavy_check_mark: | Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. | -| `remoteAccess` | *boolean* | :heavy_minus_sign: | Enable remote bindings for this resource (BYOB use case).
When true, binding params are synced to StackState's `remote_binding_params`.
Default: false (prevents sensitive data in synced state). | \ No newline at end of file +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `config` | [models.SyncReconcileResponsePreparedStackConfig](../models/syncreconcileresponsepreparedstackconfig.md) | :heavy_check_mark: | 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` | [models.SyncReconcileResponsePreparedStackDependency](../models/syncreconcileresponsepreparedstackdependency.md)[] | :heavy_check_mark: | Additional dependencies for this resource beyond those defined in the resource itself.
The total dependencies are: resource.get_dependencies() + this list | +| `enabledWhen` | *string* | :heavy_minus_sign: | 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. | +| `lifecycle` | [models.SyncReconcileResponsePreparedStackLifecycle](../models/syncreconcileresponsepreparedstacklifecycle.md) | :heavy_check_mark: | Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. | +| `remoteAccess` | *boolean* | :heavy_minus_sign: | Enable remote bindings for this resource (BYOB use case).
When true, binding params are synced to StackState's `remote_binding_params`.
Default: false (prevents sensitive data in synced state). | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponseruntimemetadata.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponseruntimemetadata.md index 0ced73a05..fb49dbd39 100644 --- a/client-sdks/platform/typescript/docs/models/syncreconcileresponseruntimemetadata.md +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponseruntimemetadata.md @@ -14,9 +14,13 @@ let value: SyncReconcileResponseRuntimeMetadata = {}; ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `lastSyncedEnvVarsHash` | *string* | :heavy_minus_sign: | Hash of the environment variables snapshot that was last synced to the vault
Used to avoid redundant sync operations during incremental deployment | -| `lastSyncedSecretNames` | *string*[] | :heavy_minus_sign: | Exact vault keys owned by the deployment secret synchronizer. This
inventory lets a later snapshot delete removed keys without listing or
touching unrelated values in the same vault. | -| `preparedStack` | *models.SyncReconcileResponsePreparedStackUnion* | :heavy_minus_sign: | N/A | -| `registryAccessGranted` | *boolean* | :heavy_minus_sign: | Whether cross-account registry access has been successfully granted.
Set to true after the manager successfully sets the ECR/GAR repo policy
for this deployment's target account. Prevents redundant API calls on
every reconcile tick. | \ No newline at end of file +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `initialSetupAuthority` | [models.SyncReconcileResponseInitialSetupAuthority](../models/syncreconcileresponseinitialsetupauthority.md) | :heavy_minus_sign: | Actor that owns structural work during the initial setup phase. | +| `lastSyncedEnvVarsHash` | *string* | :heavy_minus_sign: | Hash of the environment variables snapshot that was last synced to the vault
Used to avoid redundant sync operations during incremental deployment | +| `lastSyncedSecretNames` | *string*[] | :heavy_minus_sign: | Exact vault keys owned by the deployment secret synchronizer. This
inventory lets a later snapshot delete removed keys without listing or
touching unrelated values in the same vault. | +| `pendingPreparedStack` | *models.SyncReconcileResponsePendingPreparedStackUnion* | :heavy_minus_sign: | N/A | +| `persistedGateAnswers` | Record | :heavy_minus_sign: | Canonical resolved answers for inputs that gate Frozen resources,
keyed by input id, recorded when the deployment is created or its
setup import registers.

A frozen gate's answer is fixed for the deployment's lifetime: the
update path refuses input values that conflict with these, and a Live
resource sharing such an input resolves the persisted answer forever. | +| `preparedStack` | *models.SyncReconcileResponsePreparedStackUnion* | :heavy_minus_sign: | N/A | +| `registryAccessGranted` | *boolean* | :heavy_minus_sign: | Whether cross-account registry access has been successfully granted.
Set to true after the manager successfully sets the ECR/GAR repo policy
for this deployment's target account. Prevents redundant API calls on
every reconcile tick. | +| `setupUpdateAuthorization` | *models.SyncReconcileResponseSetupUpdateAuthorizationUnion* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponseservercacertificates.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponseservercacertificates.md new file mode 100644 index 000000000..d53d62554 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponseservercacertificates.md @@ -0,0 +1,20 @@ +# SyncReconcileResponseServerCaCertificates + +## Example Usage + +```typescript +import { SyncReconcileResponseServerCaCertificates } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponseServerCaCertificates = { + secretRef: { + key: "", + name: "", + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | +| `secretRef` | [models.SyncReconcileResponseServerCaCertificatesSecretRef](../models/syncreconcileresponseservercacertificatessecretref.md) | :heavy_check_mark: | Reference to a Kubernetes Secret | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponseservercacertificatessecretref.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponseservercacertificatessecretref.md new file mode 100644 index 000000000..3e6cfc6c3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponseservercacertificatessecretref.md @@ -0,0 +1,21 @@ +# SyncReconcileResponseServerCaCertificatesSecretRef + +Reference to a Kubernetes Secret + +## Example Usage + +```typescript +import { SyncReconcileResponseServerCaCertificatesSecretRef } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponseServerCaCertificatesSecretRef = { + key: "", + name: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `key` | *string* | :heavy_check_mark: | N/A | +| `name` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponseservercacertificatesunion.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponseservercacertificatesunion.md new file mode 100644 index 000000000..58e4fc8bb --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponseservercacertificatesunion.md @@ -0,0 +1,34 @@ +# SyncReconcileResponseServerCaCertificatesUnion + +Represents a value that can be either a concrete value, a template expression, +or a reference to a Kubernetes Secret + + +## Supported Types + +### `string[]` + +```typescript +const value: string[] = [ + "", + "", +]; +``` + +### `any` + +```typescript +const value: any = ""; +``` + +### `models.SyncReconcileResponseServerCaCertificates` + +```typescript +const value: models.SyncReconcileResponseServerCaCertificates = { + secretRef: { + key: "", + name: "", + }, +}; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsesetupupdateauthorization.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsesetupupdateauthorization.md new file mode 100644 index 000000000..caaf33c5e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsesetupupdateauthorization.md @@ -0,0 +1,31 @@ +# SyncReconcileResponseSetupUpdateAuthorization + +One-shot authority for a setup re-import to replace setup-owned resources. + +## Example Usage + +```typescript +import { SyncReconcileResponseSetupUpdateAuthorization } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponseSetupUpdateAuthorization = { + baselineFrozenDigest: "", + nonce: "", + releaseId: "", + setupFingerprint: "", + setupFingerprintVersion: 91270, + setupTarget: "", + targetFrozenDigest: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | +| `baselineFrozenDigest` | *string* | :heavy_check_mark: | Frozen resource projection from the last successful deployment. | +| `nonce` | *string* | :heavy_check_mark: | Unique revision used by persistence layers for compare-and-swap updates. | +| `releaseId` | *string* | :heavy_check_mark: | Release whose stack was prepared by setup. | +| `setupFingerprint` | *string* | :heavy_check_mark: | Exact setup artifact revision that authored this authority. | +| `setupFingerprintVersion` | *number* | :heavy_check_mark: | Setup fingerprint contract version. | +| `setupTarget` | *string* | :heavy_check_mark: | Stable setup target recorded on the imported deployment. | +| `targetFrozenDigest` | *string* | :heavy_check_mark: | Frozen resource projection prepared by the setup re-import. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsesetupupdateauthorizationunion.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsesetupupdateauthorizationunion.md new file mode 100644 index 000000000..2b6837208 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsesetupupdateauthorizationunion.md @@ -0,0 +1,25 @@ +# SyncReconcileResponseSetupUpdateAuthorizationUnion + + +## Supported Types + +### `models.SyncReconcileResponseSetupUpdateAuthorization` + +```typescript +const value: models.SyncReconcileResponseSetupUpdateAuthorization = { + baselineFrozenDigest: "", + nonce: "", + releaseId: "", + setupFingerprint: "", + setupFingerprintVersion: 91270, + setupTarget: "", + targetFrozenDigest: "", +}; +``` + +### `any` + +```typescript +const value: any = ""; +``` + diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsesslmode.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsesslmode.md new file mode 100644 index 000000000..17c372c92 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsesslmode.md @@ -0,0 +1,20 @@ +# SyncReconcileResponseSslMode + +TLS policy for an operator-provided / BYO Postgres database. + +Unlike libpq's ambiguous `prefer` mode, both choices map exactly to the +connection settings exposed by every supported SDK. + +## Example Usage + +```typescript +import { SyncReconcileResponseSslMode } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileResponseSslMode = "verify-full"; +``` + +## Values + +```typescript +"verify-full" | "disable" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcileresponsetargetreleaseresources.md b/client-sdks/platform/typescript/docs/models/syncreconcileresponsetargetreleaseresources.md index 06c7b898e..be9064f7c 100644 --- a/client-sdks/platform/typescript/docs/models/syncreconcileresponsetargetreleaseresources.md +++ b/client-sdks/platform/typescript/docs/models/syncreconcileresponsetargetreleaseresources.md @@ -17,9 +17,10 @@ let value: SyncReconcileResponseTargetReleaseResources = { ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `config` | [models.SyncReconcileResponseTargetReleaseConfig](../models/syncreconcileresponsetargetreleaseconfig.md) | :heavy_check_mark: | 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` | [models.SyncReconcileResponseTargetReleaseDependency](../models/syncreconcileresponsetargetreleasedependency.md)[] | :heavy_check_mark: | Additional dependencies for this resource beyond those defined in the resource itself.
The total dependencies are: resource.get_dependencies() + this list | -| `lifecycle` | [models.SyncReconcileResponseTargetReleaseLifecycle](../models/syncreconcileresponsetargetreleaselifecycle.md) | :heavy_check_mark: | Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. | -| `remoteAccess` | *boolean* | :heavy_minus_sign: | Enable remote bindings for this resource (BYOB use case).
When true, binding params are synced to StackState's `remote_binding_params`.
Default: false (prevents sensitive data in synced state). | \ No newline at end of file +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `config` | [models.SyncReconcileResponseTargetReleaseConfig](../models/syncreconcileresponsetargetreleaseconfig.md) | :heavy_check_mark: | 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` | [models.SyncReconcileResponseTargetReleaseDependency](../models/syncreconcileresponsetargetreleasedependency.md)[] | :heavy_check_mark: | Additional dependencies for this resource beyond those defined in the resource itself.
The total dependencies are: resource.get_dependencies() + this list | +| `enabledWhen` | *string* | :heavy_minus_sign: | 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. | +| `lifecycle` | [models.SyncReconcileResponseTargetReleaseLifecycle](../models/syncreconcileresponsetargetreleaselifecycle.md) | :heavy_check_mark: | Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. | +| `remoteAccess` | *boolean* | :heavy_minus_sign: | Enable remote bindings for this resource (BYOB use case).
When true, binding params are synced to StackState's `remote_binding_params`.
Default: false (prevents sensitive data in synced state). | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncrenewrequest.md b/client-sdks/platform/typescript/docs/models/syncrenewrequest.md new file mode 100644 index 000000000..d70204cde --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncrenewrequest.md @@ -0,0 +1,23 @@ +# SyncRenewRequest + +## Example Usage + +```typescript +import { SyncRenewRequest } from "@alienplatform/platform-api/models"; + +let value: SyncRenewRequest = { + deploymentId: "dep_0c29fq4a2yjb7kx3smwdgxlc", + deploymentIds: [ + "dep_0c29fq4a2yjb7kx3smwdgxlc", + ], + session: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | +| `deploymentId` | *string* | :heavy_minus_sign: | Single deployment to renew. Deprecated: use deploymentIds. Retained so a manager built against the previous API keeps renewing during rollout. | dep_0c29fq4a2yjb7kx3smwdgxlc | +| `deploymentIds` | *string*[] | :heavy_minus_sign: | Deployments to renew or confirm. Renewal is per deployment: the response reports each one independently. | | +| `session` | *string* | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/targetconfig.md b/client-sdks/platform/typescript/docs/models/targetconfig.md index f5d85637d..dfbe5b5b5 100644 --- a/client-sdks/platform/typescript/docs/models/targetconfig.md +++ b/client-sdks/platform/typescript/docs/models/targetconfig.md @@ -31,6 +31,7 @@ let value: TargetConfig = { | `domainMetadata` | *models.SyncReconcileResponseDomainMetadataUnion* | :heavy_minus_sign: | N/A | | `environmentVariables` | [models.SyncReconcileResponseEnvironmentVariables](../models/syncreconcileresponseenvironmentvariables.md) | :heavy_check_mark: | Snapshot of environment variables at a point in time | | `externalBindings` | Record | :heavy_minus_sign: | Map from resource ID to external binding.

Validated at runtime: binding type must match resource type. | +| `inputValues` | Record | :heavy_minus_sign: | 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. | | `labelDomain` | *string* | :heavy_minus_sign: | DNS-style label domain used for Kubernetes resource ownership labels.

Defaults to `alien.dev` when absent. Whitelabeled Operator builds set this
so generated workloads and optional log collectors share the same label
namespace. | | `managementConfig` | *models.SyncReconcileResponseManagementConfigUnion* | :heavy_minus_sign: | N/A | | `managerUrl` | *string* | :heavy_minus_sign: | Manager base URL (e.g., "https://manager.alien.dev").

The manager IS the container registry — its `/v2/` endpoint serves as
the OCI Distribution API. Controllers derive the proxy host from this
to configure pull auth (RegistryCredentials, imagePullSecrets).

When None (e.g., `alien dev`), controllers use image URIs as-is. | diff --git a/client-sdks/platform/typescript/docs/models/targettypeai.md b/client-sdks/platform/typescript/docs/models/targettypeai.md new file mode 100644 index 000000000..f688269d4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/targettypeai.md @@ -0,0 +1,15 @@ +# TargetTypeAi + +## Example Usage + +```typescript +import { TargetTypeAi } from "@alienplatform/platform-api/models"; + +let value: TargetTypeAi = "ai"; +``` + +## Values + +```typescript +"ai" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/updatedeploymentinputsresponse.md b/client-sdks/platform/typescript/docs/models/updatedeploymentinputsresponse.md index 962485c2d..6043ac954 100644 --- a/client-sdks/platform/typescript/docs/models/updatedeploymentinputsresponse.md +++ b/client-sdks/platform/typescript/docs/models/updatedeploymentinputsresponse.md @@ -23,14 +23,30 @@ let value: UpdateDeploymentInputsResponse = { "", ], runtimeUpdateRequested: false, + outcome: "accepted", + operation: { + id: "duop_0vtxpb1sw4sbcdwg2xo37q6", + status: "failed", + reasons: [ + "configuration", + ], + targetReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", + changedKeys: [ + "", + "", + ], + requestedAt: new Date("2025-01-15T20:32:07.502Z"), + }, }; ``` ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | -| `inputs` | [models.UpdateDeploymentInputsResponseInput](../models/updatedeploymentinputsresponseinput.md)[] | :heavy_check_mark: | N/A | -| `values` | Record | :heavy_check_mark: | Current non-secret input values. Secret values are never returned. | -| `providedInputIds` | *string*[] | :heavy_check_mark: | Input IDs that currently have a value, including redacted secrets. | -| `runtimeUpdateRequested` | *boolean* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `inputs` | [models.UpdateDeploymentInputsResponseInput](../models/updatedeploymentinputsresponseinput.md)[] | :heavy_check_mark: | N/A | +| `values` | Record | :heavy_check_mark: | Current non-secret input values. Secret values are never returned. | +| `providedInputIds` | *string*[] | :heavy_check_mark: | Input IDs that currently have a value, including redacted secrets. | +| `runtimeUpdateRequested` | *boolean* | :heavy_check_mark: | N/A | +| `outcome` | [models.UpdateDeploymentInputsResponseOutcome](../models/updatedeploymentinputsresponseoutcome.md) | :heavy_check_mark: | N/A | +| `operation` | [models.DeploymentUpdateOperationSummary](../models/deploymentupdateoperationsummary.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/updatedeploymentinputsresponseoutcome.md b/client-sdks/platform/typescript/docs/models/updatedeploymentinputsresponseoutcome.md new file mode 100644 index 000000000..d5fc0fd2f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/updatedeploymentinputsresponseoutcome.md @@ -0,0 +1,15 @@ +# UpdateDeploymentInputsResponseOutcome + +## Example Usage + +```typescript +import { UpdateDeploymentInputsResponseOutcome } from "@alienplatform/platform-api/models"; + +let value: UpdateDeploymentInputsResponseOutcome = "accepted"; +``` + +## Values + +```typescript +"accepted" | "unchanged" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/updatedeploymentsetuppolicy.md b/client-sdks/platform/typescript/docs/models/updatedeploymentsetuppolicy.md index 3cbd81fea..4104e39aa 100644 --- a/client-sdks/platform/typescript/docs/models/updatedeploymentsetuppolicy.md +++ b/client-sdks/platform/typescript/docs/models/updatedeploymentsetuppolicy.md @@ -10,7 +10,9 @@ import { UpdateDeploymentSetupPolicy } from "@alienplatform/platform-api/models" let value: UpdateDeploymentSetupPolicy = { policy: { allowedPlatforms: [], - allowedSetupMethods: [], + allowedSetupMethods: [ + "google-oauth", + ], }, }; ``` diff --git a/client-sdks/platform/typescript/docs/models/updateoperationspolicyrequest.md b/client-sdks/platform/typescript/docs/models/updateoperationspolicyrequest.md new file mode 100644 index 000000000..c06dbf35a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/updateoperationspolicyrequest.md @@ -0,0 +1,17 @@ +# UpdateOperationsPolicyRequest + +## Example Usage + +```typescript +import { UpdateOperationsPolicyRequest } from "@alienplatform/platform-api/models"; + +let value: UpdateOperationsPolicyRequest = { + rules: [], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `rules` | [models.OperationsPolicyRule](../models/operationspolicyrule.md)[] | :heavy_check_mark: | The full rule set (replaces the previous one). | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/updateworkspacesettingsrequest.md b/client-sdks/platform/typescript/docs/models/updateworkspacesettingsrequest.md new file mode 100644 index 000000000..edca8a59e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/updateworkspacesettingsrequest.md @@ -0,0 +1,16 @@ +# UpdateWorkspaceSettingsRequest + +## Example Usage + +```typescript +import { UpdateWorkspaceSettingsRequest } from "@alienplatform/platform-api/models"; + +let value: UpdateWorkspaceSettingsRequest = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `debugPermissionMode` | [models.UpdateWorkspaceSettingsRequestDebugPermissionMode](../models/updateworkspacesettingsrequestdebugpermissionmode.md) | :heavy_minus_sign: | 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` | *boolean* | :heavy_minus_sign: | Turn the ai-agent on (`true`) or off (`false`) for this workspace. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/updateworkspacesettingsrequestdebugpermissionmode.md b/client-sdks/platform/typescript/docs/models/updateworkspacesettingsrequestdebugpermissionmode.md new file mode 100644 index 000000000..03d408814 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/updateworkspacesettingsrequestdebugpermissionmode.md @@ -0,0 +1,17 @@ +# UpdateWorkspaceSettingsRequestDebugPermissionMode + +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. + +## Example Usage + +```typescript +import { UpdateWorkspaceSettingsRequestDebugPermissionMode } from "@alienplatform/platform-api/models"; + +let value: UpdateWorkspaceSettingsRequestDebugPermissionMode = "auto"; +``` + +## Values + +```typescript +"auto" | "ask" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/usernameenum.md b/client-sdks/platform/typescript/docs/models/usernameenum.md new file mode 100644 index 000000000..55821d16c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/usernameenum.md @@ -0,0 +1,15 @@ +# UsernameEnum + +## Example Usage + +```typescript +import { UsernameEnum } from "@alienplatform/platform-api/models"; + +let value: UsernameEnum = "alien"; +``` + +## Values + +```typescript +"alien" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/workspacebillingentitlements.md b/client-sdks/platform/typescript/docs/models/workspacebillingentitlements.md index 7e417df92..749798c7f 100644 --- a/client-sdks/platform/typescript/docs/models/workspacebillingentitlements.md +++ b/client-sdks/platform/typescript/docs/models/workspacebillingentitlements.md @@ -11,20 +11,21 @@ let value: WorkspaceBillingEntitlements = { features: { customDomains: true, privateManagers: false, - ssoSaml: false, + operationsCustomPlugins: false, + ssoSaml: true, auditLogs: true, airgapped: true, }, limits: { - maxDeployments: 1611.31, - maxProjects: 4036.58, - maxSeats: 9607.5, - maxCustomDomains: 9208.96, - creditUsd: 7075.2, - seatsIncluded: 7490.77, + maxDeployments: 1385.32, + maxProjects: 3144.64, + maxSeats: 3743.19, + maxCustomDomains: 7182.98, + creditUsd: 2481.03, + seatsIncluded: 863.33, }, - syncedAt: null, - stale: true, + syncedAt: new Date("2025-01-06T04:12:40.643Z"), + stale: false, }; ``` diff --git a/client-sdks/platform/typescript/docs/models/workspaceinvitation.md b/client-sdks/platform/typescript/docs/models/workspaceinvitation.md new file mode 100644 index 000000000..06fb17a7a --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/workspaceinvitation.md @@ -0,0 +1,33 @@ +# WorkspaceInvitation + +## Example Usage + +```typescript +import { WorkspaceInvitation } from "@alienplatform/platform-api/models"; + +let value: WorkspaceInvitation = { + id: "winv_DsgltMIFV0GmqtxV5NYTtrknrna", + email: "Lane.Wolff@yahoo.com", + role: "workspace.member", + status: "expired", + deliveryStatus: "sent", + expiresAt: new Date("2026-06-18T15:21:24.905Z"), + lastSentAt: new Date("2024-12-31T09:24:38.956Z"), + createdAt: new Date("2026-03-05T13:06:57.242Z"), + inviteUrl: "https://impractical-perfection.org/", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the workspace invitation. | winv_DsgltMIFV0GmqtxV5NYTtrknrna | +| `email` | *string* | :heavy_check_mark: | N/A | | +| `role` | [models.WorkspaceRole](../models/workspacerole.md) | :heavy_check_mark: | Role for workspace-scoped service accounts | workspace.member | +| `status` | [models.WorkspaceInvitationStatus](../models/workspaceinvitationstatus.md) | :heavy_check_mark: | N/A | | +| `deliveryStatus` | [models.DeliveryStatus](../models/deliverystatus.md) | :heavy_check_mark: | N/A | | +| `expiresAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `lastSentAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `createdAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `inviteUrl` | *string* | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/workspaceinvitationpreview.md b/client-sdks/platform/typescript/docs/models/workspaceinvitationpreview.md new file mode 100644 index 000000000..344bf6c6e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/workspaceinvitationpreview.md @@ -0,0 +1,36 @@ +# WorkspaceInvitationPreview + +## Example Usage + +```typescript +import { WorkspaceInvitationPreview } from "@alienplatform/platform-api/models"; + +let value: WorkspaceInvitationPreview = { + kind: "link", + workspace: { + id: "ws_It13CUaGEhLLAB87simX0", + name: "", + logoUrl: "https://deficient-draft.com/", + }, + inviter: { + name: "", + image: "https://grandiose-self-confidence.biz", + }, + role: "workspace.member", + expiresAt: new Date("2024-01-12T23:31:33.131Z"), + state: "revoked", + emailHint: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| `kind` | [models.WorkspaceInvitationPreviewKind](../models/workspaceinvitationpreviewkind.md) | :heavy_check_mark: | N/A | | +| `workspace` | [models.WorkspaceInvitationPreviewWorkspace](../models/workspaceinvitationpreviewworkspace.md) | :heavy_check_mark: | N/A | | +| `inviter` | [models.Inviter](../models/inviter.md) | :heavy_check_mark: | N/A | | +| `role` | [models.WorkspaceRole](../models/workspacerole.md) | :heavy_check_mark: | Role for workspace-scoped service accounts | workspace.member | +| `expiresAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `state` | [models.WorkspaceInvitationPreviewState](../models/workspaceinvitationpreviewstate.md) | :heavy_check_mark: | N/A | | +| `emailHint` | *string* | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/workspaceinvitationpreviewkind.md b/client-sdks/platform/typescript/docs/models/workspaceinvitationpreviewkind.md new file mode 100644 index 000000000..93b24b440 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/workspaceinvitationpreviewkind.md @@ -0,0 +1,15 @@ +# WorkspaceInvitationPreviewKind + +## Example Usage + +```typescript +import { WorkspaceInvitationPreviewKind } from "@alienplatform/platform-api/models"; + +let value: WorkspaceInvitationPreviewKind = "email"; +``` + +## Values + +```typescript +"email" | "link" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/workspaceinvitationpreviewstate.md b/client-sdks/platform/typescript/docs/models/workspaceinvitationpreviewstate.md new file mode 100644 index 000000000..1af1b5d58 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/workspaceinvitationpreviewstate.md @@ -0,0 +1,15 @@ +# WorkspaceInvitationPreviewState + +## Example Usage + +```typescript +import { WorkspaceInvitationPreviewState } from "@alienplatform/platform-api/models"; + +let value: WorkspaceInvitationPreviewState = "active"; +``` + +## Values + +```typescript +"active" | "accepted" | "expired" | "revoked" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/workspaceinvitationpreviewworkspace.md b/client-sdks/platform/typescript/docs/models/workspaceinvitationpreviewworkspace.md new file mode 100644 index 000000000..9ec6a560e --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/workspaceinvitationpreviewworkspace.md @@ -0,0 +1,21 @@ +# WorkspaceInvitationPreviewWorkspace + +## Example Usage + +```typescript +import { WorkspaceInvitationPreviewWorkspace } from "@alienplatform/platform-api/models"; + +let value: WorkspaceInvitationPreviewWorkspace = { + id: "ws_It13CUaGEhLLAB87simX0", + name: "", + logoUrl: null, +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the workspace. | ws_It13CUaGEhLLAB87simX0 | +| `name` | *string* | :heavy_check_mark: | N/A | | +| `logoUrl` | *string* | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/workspaceinvitationstatus.md b/client-sdks/platform/typescript/docs/models/workspaceinvitationstatus.md new file mode 100644 index 000000000..0c88655b6 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/workspaceinvitationstatus.md @@ -0,0 +1,15 @@ +# WorkspaceInvitationStatus + +## Example Usage + +```typescript +import { WorkspaceInvitationStatus } from "@alienplatform/platform-api/models"; + +let value: WorkspaceInvitationStatus = "accepted"; +``` + +## Values + +```typescript +"pending" | "accepted" | "revoked" | "expired" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/workspaceinvitelink.md b/client-sdks/platform/typescript/docs/models/workspaceinvitelink.md new file mode 100644 index 000000000..47d55f74d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/workspaceinvitelink.md @@ -0,0 +1,29 @@ +# WorkspaceInviteLink + +## Example Usage + +```typescript +import { WorkspaceInviteLink } from "@alienplatform/platform-api/models"; + +let value: WorkspaceInviteLink = { + id: "wil_RgcthDSZ37rmFLekuItpFS7btjXoYwou1gE4", + role: "workspace.member", + expiresAt: new Date("2025-08-10T09:44:19.208Z"), + createdAt: new Date("2024-12-17T22:24:34.536Z"), + useCount: 786384, + lastUsedAt: new Date("2024-02-08T13:27:28.425Z"), + inviteUrl: "https://immediate-drug.net/", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the workspace invite link. | wil_RgcthDSZ37rmFLekuItpFS7btjXoYwou1gE4 | +| `role` | [models.WorkspaceRole](../models/workspacerole.md) | :heavy_check_mark: | Role for workspace-scoped service accounts | workspace.member | +| `expiresAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `createdAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `useCount` | *number* | :heavy_check_mark: | N/A | | +| `lastUsedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `inviteUrl` | *string* | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/sdks/agentsessions/README.md b/client-sdks/platform/typescript/docs/sdks/agentsessions/README.md new file mode 100644 index 000000000..a6deaf994 --- /dev/null +++ b/client-sdks/platform/typescript/docs/sdks/agentsessions/README.md @@ -0,0 +1,390 @@ +# AgentSessions + +## Overview + +### Available Operations + +* [list](#list) - List ai-agent monitor sessions for this workspace. Newest first, capped at 50. +* [get](#get) - Retrieve one ai-agent monitor session by id. +* [events](#events) - 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. +* [approve](#approve) - 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. +* [stop](#stop) - 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. + +## list + +List ai-agent monitor sessions for this workspace. Newest first, capped at 50. + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.agentSessions.list({ + workspace: "my-workspace", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { agentSessionsList } from "@alienplatform/platform-api/funcs/agentSessionsList.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await agentSessionsList(alien, { + workspace: "my-workspace", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("agentSessionsList failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.ListAgentSessionsRequest](../../models/operations/listagentsessionsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[models.AgentSessionListResponse](../../models/agentsessionlistresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## get + +Retrieve one ai-agent monitor session by id. + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.agentSessions.get({ + id: "", + workspace: "my-workspace", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { agentSessionsGet } from "@alienplatform/platform-api/funcs/agentSessionsGet.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await agentSessionsGet(alien, { + id: "", + workspace: "my-workspace", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("agentSessionsGet failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.GetAgentSessionRequest](../../models/operations/getagentsessionrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[models.AgentSessionDetail](../../models/agentsessiondetail.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 404 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## events + +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. + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.agentSessions.events({ + id: "", + workspace: "my-workspace", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { agentSessionsEvents } from "@alienplatform/platform-api/funcs/agentSessionsEvents.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await agentSessionsEvents(alien, { + id: "", + workspace: "my-workspace", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("agentSessionsEvents failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.ListAgentSessionEventsRequest](../../models/operations/listagentsessioneventsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[models.AgentSessionEventsResponse](../../models/agentsessioneventsresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 404 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## approve + +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. + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.agentSessions.approve({ + id: "", + workspace: "my-workspace", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { agentSessionsApprove } from "@alienplatform/platform-api/funcs/agentSessionsApprove.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await agentSessionsApprove(alien, { + id: "", + workspace: "my-workspace", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("agentSessionsApprove failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.ApproveAgentSessionRequest](../../models/operations/approveagentsessionrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[models.AgentSessionApproveResponse](../../models/agentsessionapproveresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 404 | application/json | +| errors.APIError | 503 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## stop + +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. + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.agentSessions.stop({ + id: "", + workspace: "my-workspace", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { agentSessionsStop } from "@alienplatform/platform-api/funcs/agentSessionsStop.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await agentSessionsStop(alien, { + id: "", + workspace: "my-workspace", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("agentSessionsStop failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.StopAgentSessionRequest](../../models/operations/stopagentsessionrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[models.AgentSessionStopResponse](../../models/agentsessionstopresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 404 | application/json | +| errors.APIError | 503 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/sdks/alien/README.md b/client-sdks/platform/typescript/docs/sdks/alien/README.md new file mode 100644 index 000000000..cc689131c --- /dev/null +++ b/client-sdks/platform/typescript/docs/sdks/alien/README.md @@ -0,0 +1,1299 @@ +# Alien SDK + +## Overview + +### Available Operations + +* [getWorkspaceInvitationPreview](#getworkspaceinvitationpreview) +* [acceptWorkspaceInvitation](#acceptworkspaceinvitation) +* [listWorkspaceInvitations](#listworkspaceinvitations) +* [createWorkspaceInvitation](#createworkspaceinvitation) +* [resendWorkspaceInvitation](#resendworkspaceinvitation) +* [revokeWorkspaceInvitation](#revokeworkspaceinvitation) +* [getWorkspaceInviteLink](#getworkspaceinvitelink) +* [createWorkspaceInviteLink](#createworkspaceinvitelink) +* [revokeWorkspaceInviteLink](#revokeworkspaceinvitelink) +* [listAwsVirtualKeys](#listawsvirtualkeys) +* [createAwsVirtualKey](#createawsvirtualkey) +* [rotateAwsVirtualKeyCredential](#rotateawsvirtualkeycredential) +* [restoreAwsVirtualKey](#restoreawsvirtualkey) +* [finalizeAwsVirtualKeyDeletion](#finalizeawsvirtualkeydeletion) +* [decommissionAwsVirtualKey](#decommissionawsvirtualkey) +* [getAwsVirtualKey](#getawsvirtualkey) +* [continueAwsVirtualKey](#continueawsvirtualkey) + +## getWorkspaceInvitationPreview + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.getWorkspaceInvitationPreview({ + token: "", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { getWorkspaceInvitationPreview } from "@alienplatform/platform-api/funcs/getWorkspaceInvitationPreview.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await getWorkspaceInvitationPreview(alien, { + token: "", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("getWorkspaceInvitationPreview failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.GetWorkspaceInvitationPreviewRequest](../../models/operations/getworkspaceinvitationpreviewrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[models.WorkspaceInvitationPreview](../../models/workspaceinvitationpreview.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 404 | application/json | +| errors.APIError | 500 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## acceptWorkspaceInvitation + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.acceptWorkspaceInvitation({ + token: "", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { acceptWorkspaceInvitation } from "@alienplatform/platform-api/funcs/acceptWorkspaceInvitation.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await acceptWorkspaceInvitation(alien, { + token: "", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("acceptWorkspaceInvitation failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.AcceptWorkspaceInvitationRequest](../../models/operations/acceptworkspaceinvitationrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[models.AcceptWorkspaceInvitationResponse](../../models/acceptworkspaceinvitationresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 404, 409 | application/json | +| errors.APIError | 500 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## listWorkspaceInvitations + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.listWorkspaceInvitations({ + id: "ws_It13CUaGEhLLAB87simX0", + workspace: "my-workspace", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { listWorkspaceInvitations } from "@alienplatform/platform-api/funcs/listWorkspaceInvitations.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await listWorkspaceInvitations(alien, { + id: "ws_It13CUaGEhLLAB87simX0", + workspace: "my-workspace", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("listWorkspaceInvitations failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.ListWorkspaceInvitationsRequest](../../models/operations/listworkspaceinvitationsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[operations.ListWorkspaceInvitationsResponse](../../models/operations/listworkspaceinvitationsresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 404 | application/json | +| errors.APIError | 500 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## createWorkspaceInvitation + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.createWorkspaceInvitation({ + id: "ws_It13CUaGEhLLAB87simX0", + workspace: "my-workspace", + requestBody: { + email: "Moriah.Rolfson@hotmail.com", + role: "workspace.member", + }, + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { createWorkspaceInvitation } from "@alienplatform/platform-api/funcs/createWorkspaceInvitation.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await createWorkspaceInvitation(alien, { + id: "ws_It13CUaGEhLLAB87simX0", + workspace: "my-workspace", + requestBody: { + email: "Moriah.Rolfson@hotmail.com", + role: "workspace.member", + }, + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("createWorkspaceInvitation failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.CreateWorkspaceInvitationRequest](../../models/operations/createworkspaceinvitationrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[models.WorkspaceInvitation](../../models/workspaceinvitation.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 403, 404, 409 | application/json | +| errors.APIError | 500 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## resendWorkspaceInvitation + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.resendWorkspaceInvitation({ + id: "ws_It13CUaGEhLLAB87simX0", + invitationId: "", + workspace: "my-workspace", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { resendWorkspaceInvitation } from "@alienplatform/platform-api/funcs/resendWorkspaceInvitation.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await resendWorkspaceInvitation(alien, { + id: "ws_It13CUaGEhLLAB87simX0", + invitationId: "", + workspace: "my-workspace", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("resendWorkspaceInvitation failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.ResendWorkspaceInvitationRequest](../../models/operations/resendworkspaceinvitationrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[models.WorkspaceInvitation](../../models/workspaceinvitation.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 404 | application/json | +| errors.APIError | 500 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## revokeWorkspaceInvitation + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + await alien.revokeWorkspaceInvitation({ + id: "ws_It13CUaGEhLLAB87simX0", + invitationId: "", + workspace: "my-workspace", + }); + + +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { revokeWorkspaceInvitation } from "@alienplatform/platform-api/funcs/revokeWorkspaceInvitation.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await revokeWorkspaceInvitation(alien, { + id: "ws_It13CUaGEhLLAB87simX0", + invitationId: "", + workspace: "my-workspace", + }); + if (res.ok) { + const { value: result } = res; + + } else { + console.log("revokeWorkspaceInvitation failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.RevokeWorkspaceInvitationRequest](../../models/operations/revokeworkspaceinvitationrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 404 | application/json | +| errors.APIError | 500 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## getWorkspaceInviteLink + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.getWorkspaceInviteLink({ + id: "ws_It13CUaGEhLLAB87simX0", + workspace: "my-workspace", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { getWorkspaceInviteLink } from "@alienplatform/platform-api/funcs/getWorkspaceInviteLink.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await getWorkspaceInviteLink(alien, { + id: "ws_It13CUaGEhLLAB87simX0", + workspace: "my-workspace", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("getWorkspaceInviteLink failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.GetWorkspaceInviteLinkRequest](../../models/operations/getworkspaceinvitelinkrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[models.WorkspaceInviteLink](../../models/workspaceinvitelink.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 404 | application/json | +| errors.APIError | 500 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## createWorkspaceInviteLink + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.createWorkspaceInviteLink({ + id: "ws_It13CUaGEhLLAB87simX0", + workspace: "my-workspace", + requestBody: { + role: "workspace.member", + }, + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { createWorkspaceInviteLink } from "@alienplatform/platform-api/funcs/createWorkspaceInviteLink.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await createWorkspaceInviteLink(alien, { + id: "ws_It13CUaGEhLLAB87simX0", + workspace: "my-workspace", + requestBody: { + role: "workspace.member", + }, + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("createWorkspaceInviteLink failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.CreateWorkspaceInviteLinkRequest](../../models/operations/createworkspaceinvitelinkrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[models.WorkspaceInviteLink](../../models/workspaceinvitelink.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 404 | application/json | +| errors.APIError | 500 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## revokeWorkspaceInviteLink + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + await alien.revokeWorkspaceInviteLink({ + id: "ws_It13CUaGEhLLAB87simX0", + workspace: "my-workspace", + }); + + +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { revokeWorkspaceInviteLink } from "@alienplatform/platform-api/funcs/revokeWorkspaceInviteLink.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await revokeWorkspaceInviteLink(alien, { + id: "ws_It13CUaGEhLLAB87simX0", + workspace: "my-workspace", + }); + if (res.ok) { + const { value: result } = res; + + } else { + console.log("revokeWorkspaceInviteLink failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.RevokeWorkspaceInviteLinkRequest](../../models/operations/revokeworkspaceinvitelinkrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 404 | application/json | +| errors.APIError | 500 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## listAwsVirtualKeys + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.listAwsVirtualKeys({ + project: "my-project", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { listAwsVirtualKeys } from "@alienplatform/platform-api/funcs/listAwsVirtualKeys.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await listAwsVirtualKeys(alien, { + project: "my-project", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("listAwsVirtualKeys failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.ListAwsVirtualKeysRequest](../../models/operations/listawsvirtualkeysrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[operations.ListAwsVirtualKeysResponse](../../models/operations/listawsvirtualkeysresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 401, 404 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## createAwsVirtualKey + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.createAwsVirtualKey({ + selector: { + deploymentId: "dep_0c29fq4a2yjb7kx3smwdgxlc", + }, + awsAccountId: "", + awsRegion: "", + idempotencyKey: "", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { createAwsVirtualKey } from "@alienplatform/platform-api/funcs/createAwsVirtualKey.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await createAwsVirtualKey(alien, { + selector: { + deploymentId: "dep_0c29fq4a2yjb7kx3smwdgxlc", + }, + awsAccountId: "", + awsRegion: "", + idempotencyKey: "", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("createAwsVirtualKey failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.CreateAwsVirtualKeyRequest](../../models/operations/createawsvirtualkeyrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[operations.CreateAwsVirtualKeyResponse](../../models/operations/createawsvirtualkeyresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 400, 401, 404, 409 | application/json | +| errors.APIError | 500, 503 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## rotateAwsVirtualKeyCredential + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.rotateAwsVirtualKeyCredential({ + id: "vkey_0p9nwqgtftugsoey99lqyqq", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { rotateAwsVirtualKeyCredential } from "@alienplatform/platform-api/funcs/rotateAwsVirtualKeyCredential.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await rotateAwsVirtualKeyCredential(alien, { + id: "vkey_0p9nwqgtftugsoey99lqyqq", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("rotateAwsVirtualKeyCredential failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.RotateAwsVirtualKeyCredentialRequest](../../models/operations/rotateawsvirtualkeycredentialrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[operations.RotateAwsVirtualKeyCredentialResponse](../../models/operations/rotateawsvirtualkeycredentialresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 401, 404, 409 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## restoreAwsVirtualKey + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.restoreAwsVirtualKey({ + id: "vkey_0p9nwqgtftugsoey99lqyqq", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { restoreAwsVirtualKey } from "@alienplatform/platform-api/funcs/restoreAwsVirtualKey.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await restoreAwsVirtualKey(alien, { + id: "vkey_0p9nwqgtftugsoey99lqyqq", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("restoreAwsVirtualKey failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.RestoreAwsVirtualKeyRequest](../../models/operations/restoreawsvirtualkeyrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[operations.RestoreAwsVirtualKeyResponse](../../models/operations/restoreawsvirtualkeyresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 401, 404, 409 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## finalizeAwsVirtualKeyDeletion + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.finalizeAwsVirtualKeyDeletion({ + id: "vkey_0p9nwqgtftugsoey99lqyqq", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { finalizeAwsVirtualKeyDeletion } from "@alienplatform/platform-api/funcs/finalizeAwsVirtualKeyDeletion.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await finalizeAwsVirtualKeyDeletion(alien, { + id: "vkey_0p9nwqgtftugsoey99lqyqq", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("finalizeAwsVirtualKeyDeletion failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.FinalizeAwsVirtualKeyDeletionRequest](../../models/operations/finalizeawsvirtualkeydeletionrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[operations.FinalizeAwsVirtualKeyDeletionResponse](../../models/operations/finalizeawsvirtualkeydeletionresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 401, 404, 409 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## decommissionAwsVirtualKey + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.decommissionAwsVirtualKey({ + id: "vkey_0p9nwqgtftugsoey99lqyqq", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { decommissionAwsVirtualKey } from "@alienplatform/platform-api/funcs/decommissionAwsVirtualKey.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await decommissionAwsVirtualKey(alien, { + id: "vkey_0p9nwqgtftugsoey99lqyqq", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("decommissionAwsVirtualKey failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.DecommissionAwsVirtualKeyRequest](../../models/operations/decommissionawsvirtualkeyrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[operations.DecommissionAwsVirtualKeyResponse](../../models/operations/decommissionawsvirtualkeyresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 400, 401, 404, 409 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## getAwsVirtualKey + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.getAwsVirtualKey({ + id: "vkey_0p9nwqgtftugsoey99lqyqq", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { getAwsVirtualKey } from "@alienplatform/platform-api/funcs/getAwsVirtualKey.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await getAwsVirtualKey(alien, { + id: "vkey_0p9nwqgtftugsoey99lqyqq", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("getAwsVirtualKey failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.GetAwsVirtualKeyRequest](../../models/operations/getawsvirtualkeyrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[operations.GetAwsVirtualKeyResponse](../../models/operations/getawsvirtualkeyresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 401, 404 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## continueAwsVirtualKey + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.continueAwsVirtualKey({ + id: "vkey_0p9nwqgtftugsoey99lqyqq", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { continueAwsVirtualKey } from "@alienplatform/platform-api/funcs/continueAwsVirtualKey.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await continueAwsVirtualKey(alien, { + id: "vkey_0p9nwqgtftugsoey99lqyqq", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("continueAwsVirtualKey failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.ContinueAwsVirtualKeyRequest](../../models/operations/continueawsvirtualkeyrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[operations.ContinueAwsVirtualKeyResponse](../../models/operations/continueawsvirtualkeyresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 400, 401, 404, 409 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/sdks/commands/README.md b/client-sdks/platform/typescript/docs/sdks/commands/README.md index 1dcf7d6de..c7797512c 100644 --- a/client-sdks/platform/typescript/docs/sdks/commands/README.md +++ b/client-sdks/platform/typescript/docs/sdks/commands/README.md @@ -4,6 +4,7 @@ ### Available Operations +* [bootstrap](#bootstrap) - Resolve a deployment's current manager and mint a five-minute command capability. Sender tokens can dispatch and observe commands only for this deployment. Receiver tokens can lease and complete commands only for the resolved Container or Daemon target. * [list](#list) - Retrieve commands. Use for dashboard analytics and command history. * [create](#create) - Create command metadata. Called by manager when processing commands. Returns project info for routing decisions. * [listNames](#listnames) - List distinct command names. Use for filter dropdowns in the dashboard. @@ -15,6 +16,85 @@ * [complete](#complete) - Atomically transition a command to a terminal state (SUCCEEDED, FAILED, or EXPIRED) unless it is already terminal. Returns whether the transition was applied. * [incrementAttempt](#incrementattempt) - Atomically increment the command's attempt counter and return the new value. +## bootstrap + +Resolve a deployment's current manager and mint a five-minute command capability. Sender tokens can dispatch and observe commands only for this deployment. Receiver tokens can lease and complete commands only for the resolved Container or Daemon target. + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.commands.bootstrap({ + deploymentId: "dep_0c29fq4a2yjb7kx3smwdgxlc", + role: "receiver", + target: "", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { commandsBootstrap } from "@alienplatform/platform-api/funcs/commandsBootstrap.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await commandsBootstrap(alien, { + deploymentId: "dep_0c29fq4a2yjb7kx3smwdgxlc", + role: "receiver", + target: "", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("commandsBootstrap failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [models.CommandBootstrapRequest](../../models/commandbootstraprequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[models.CommandBootstrapResponse](../../models/commandbootstrapresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 400, 401, 403, 404, 422 | application/json | +| errors.APIError | 500, 503 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + ## list Retrieve commands. Use for dashboard analytics and command history. diff --git a/client-sdks/platform/typescript/docs/sdks/containerregistry/README.md b/client-sdks/platform/typescript/docs/sdks/containerregistry/README.md new file mode 100644 index 000000000..c4c22acd8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/sdks/containerregistry/README.md @@ -0,0 +1,808 @@ +# ContainerRegistry + +## Overview + +### Available Operations + +* [getContainerRegistry](#getcontainerregistry) +* [putContainerRegistry](#putcontainerregistry) +* [createContainerRegistryRepository](#createcontainerregistryrepository) +* [createContainerRegistryCredential](#createcontainerregistrycredential) +* [revokeContainerRegistryCredential](#revokecontainerregistrycredential) +* [deleteContainerRegistryRepository](#deletecontainerregistryrepository) +* [verifyContainerRegistry](#verifycontainerregistry) +* [revokeContainerRegistry](#revokecontainerregistry) +* [getContainerRegistryManagerSnapshot](#getcontainerregistrymanagersnapshot) +* [applyContainerRegistryManagerSnapshot](#applycontainerregistrymanagersnapshot) + +## getContainerRegistry + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.containerRegistry.getContainerRegistry({ + id: "dg_r27ict8c7vcgsumpj90ackf7b", + workspace: "my-workspace", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { containerRegistryGetContainerRegistry } from "@alienplatform/platform-api/funcs/containerRegistryGetContainerRegistry.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await containerRegistryGetContainerRegistry(alien, { + id: "dg_r27ict8c7vcgsumpj90ackf7b", + workspace: "my-workspace", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("containerRegistryGetContainerRegistry failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.GetContainerRegistryRequest](../../models/operations/getcontainerregistryrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[models.ContainerRegistryState](../../models/containerregistrystate.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 404, 409 | application/json | +| errors.APIError | 500 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## putContainerRegistry + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.containerRegistry.putContainerRegistry({ + id: "dg_r27ict8c7vcgsumpj90ackf7b", + workspace: "my-workspace", + requestBody: { + deploymentId: "dep_0c29fq4a2yjb7kx3smwdgxlc", + resourceId: "", + }, + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { containerRegistryPutContainerRegistry } from "@alienplatform/platform-api/funcs/containerRegistryPutContainerRegistry.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await containerRegistryPutContainerRegistry(alien, { + id: "dg_r27ict8c7vcgsumpj90ackf7b", + workspace: "my-workspace", + requestBody: { + deploymentId: "dep_0c29fq4a2yjb7kx3smwdgxlc", + resourceId: "", + }, + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("containerRegistryPutContainerRegistry failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.PutContainerRegistryRequest](../../models/operations/putcontainerregistryrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[operations.PutContainerRegistryResponse](../../models/operations/putcontainerregistryresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 404, 409 | application/json | +| errors.APIError | 500 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## createContainerRegistryRepository + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.containerRegistry.createContainerRegistryRepository({ + id: "dg_r27ict8c7vcgsumpj90ackf7b", + workspace: "my-workspace", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { containerRegistryCreateContainerRegistryRepository } from "@alienplatform/platform-api/funcs/containerRegistryCreateContainerRegistryRepository.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await containerRegistryCreateContainerRegistryRepository(alien, { + id: "dg_r27ict8c7vcgsumpj90ackf7b", + workspace: "my-workspace", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("containerRegistryCreateContainerRegistryRepository failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.CreateContainerRegistryRepositoryRequest](../../models/operations/createcontainerregistryrepositoryrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[operations.CreateContainerRegistryRepositoryResponse](../../models/operations/createcontainerregistryrepositoryresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 404, 409 | application/json | +| errors.APIError | 500 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## createContainerRegistryCredential + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.containerRegistry.createContainerRegistryCredential({ + id: "dg_r27ict8c7vcgsumpj90ackf7b", + workspace: "my-workspace", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { containerRegistryCreateContainerRegistryCredential } from "@alienplatform/platform-api/funcs/containerRegistryCreateContainerRegistryCredential.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await containerRegistryCreateContainerRegistryCredential(alien, { + id: "dg_r27ict8c7vcgsumpj90ackf7b", + workspace: "my-workspace", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("containerRegistryCreateContainerRegistryCredential failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.CreateContainerRegistryCredentialRequest](../../models/operations/createcontainerregistrycredentialrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[models.CreateContainerRegistryCredentialResponse](../../models/createcontainerregistrycredentialresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 404, 409 | application/json | +| errors.APIError | 500 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## revokeContainerRegistryCredential + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + await alien.containerRegistry.revokeContainerRegistryCredential({ + id: "dg_r27ict8c7vcgsumpj90ackf7b", + credentialId: "crcred_oz1xjr82f37j17g4gtmyu", + workspace: "my-workspace", + }); + + +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { containerRegistryRevokeContainerRegistryCredential } from "@alienplatform/platform-api/funcs/containerRegistryRevokeContainerRegistryCredential.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await containerRegistryRevokeContainerRegistryCredential(alien, { + id: "dg_r27ict8c7vcgsumpj90ackf7b", + credentialId: "crcred_oz1xjr82f37j17g4gtmyu", + workspace: "my-workspace", + }); + if (res.ok) { + const { value: result } = res; + + } else { + console.log("containerRegistryRevokeContainerRegistryCredential failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.RevokeContainerRegistryCredentialRequest](../../models/operations/revokecontainerregistrycredentialrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 404, 409 | application/json | +| errors.APIError | 500 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## deleteContainerRegistryRepository + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.containerRegistry.deleteContainerRegistryRepository({ + id: "dg_r27ict8c7vcgsumpj90ackf7b", + repositoryId: "crrepo_625temdq3bnu25jw9rcux", + workspace: "my-workspace", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { containerRegistryDeleteContainerRegistryRepository } from "@alienplatform/platform-api/funcs/containerRegistryDeleteContainerRegistryRepository.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await containerRegistryDeleteContainerRegistryRepository(alien, { + id: "dg_r27ict8c7vcgsumpj90ackf7b", + repositoryId: "crrepo_625temdq3bnu25jw9rcux", + workspace: "my-workspace", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("containerRegistryDeleteContainerRegistryRepository failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.DeleteContainerRegistryRepositoryRequest](../../models/operations/deletecontainerregistryrepositoryrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[operations.DeleteContainerRegistryRepositoryResponse](../../models/operations/deletecontainerregistryrepositoryresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 404, 409 | application/json | +| errors.APIError | 500 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## verifyContainerRegistry + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.containerRegistry.verifyContainerRegistry({ + id: "dg_r27ict8c7vcgsumpj90ackf7b", + workspace: "my-workspace", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { containerRegistryVerifyContainerRegistry } from "@alienplatform/platform-api/funcs/containerRegistryVerifyContainerRegistry.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await containerRegistryVerifyContainerRegistry(alien, { + id: "dg_r27ict8c7vcgsumpj90ackf7b", + workspace: "my-workspace", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("containerRegistryVerifyContainerRegistry failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.VerifyContainerRegistryRequest](../../models/operations/verifycontainerregistryrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[operations.VerifyContainerRegistryResponse](../../models/operations/verifycontainerregistryresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 404, 409 | application/json | +| errors.APIError | 500 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## revokeContainerRegistry + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.containerRegistry.revokeContainerRegistry({ + id: "dg_r27ict8c7vcgsumpj90ackf7b", + workspace: "my-workspace", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { containerRegistryRevokeContainerRegistry } from "@alienplatform/platform-api/funcs/containerRegistryRevokeContainerRegistry.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await containerRegistryRevokeContainerRegistry(alien, { + id: "dg_r27ict8c7vcgsumpj90ackf7b", + workspace: "my-workspace", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("containerRegistryRevokeContainerRegistry failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.RevokeContainerRegistryRequest](../../models/operations/revokecontainerregistryrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[operations.RevokeContainerRegistryResponse](../../models/operations/revokecontainerregistryresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 404, 409 | application/json | +| errors.APIError | 500 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## getContainerRegistryManagerSnapshot + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.containerRegistry.getContainerRegistryManagerSnapshot({ + id: "", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { containerRegistryGetContainerRegistryManagerSnapshot } from "@alienplatform/platform-api/funcs/containerRegistryGetContainerRegistryManagerSnapshot.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await containerRegistryGetContainerRegistryManagerSnapshot(alien, { + id: "", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("containerRegistryGetContainerRegistryManagerSnapshot failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.GetContainerRegistryManagerSnapshotRequest](../../models/operations/getcontainerregistrymanagersnapshotrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[models.ContainerRegistryManagerSnapshot](../../models/containerregistrymanagersnapshot.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 403, 409 | application/json | +| errors.APIError | 500 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## applyContainerRegistryManagerSnapshot + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.containerRegistry.applyContainerRegistryManagerSnapshot({ + id: "", + requestBody: { + routeId: "crroute_c9t4xoy7fmiq7equtu20", + desiredRevision: 186433, + repositories: [ + { + id: "crrepo_625temdq3bnu25jw9rcux", + status: "failed", + routableUpstreamName: "", + error: "", + }, + ], + verification: { + succeeded: false, + observedAt: new Date("2026-11-26T10:14:03.486Z"), + error: "", + }, + }, + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { containerRegistryApplyContainerRegistryManagerSnapshot } from "@alienplatform/platform-api/funcs/containerRegistryApplyContainerRegistryManagerSnapshot.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await containerRegistryApplyContainerRegistryManagerSnapshot(alien, { + id: "", + requestBody: { + routeId: "crroute_c9t4xoy7fmiq7equtu20", + desiredRevision: 186433, + repositories: [ + { + id: "crrepo_625temdq3bnu25jw9rcux", + status: "failed", + routableUpstreamName: "", + error: "", + }, + ], + verification: { + succeeded: false, + observedAt: new Date("2026-11-26T10:14:03.486Z"), + error: "", + }, + }, + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("containerRegistryApplyContainerRegistryManagerSnapshot failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.ApplyContainerRegistryManagerSnapshotRequest](../../models/operations/applycontainerregistrymanagersnapshotrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[models.ApplyContainerRegistrySnapshotResponse](../../models/applycontainerregistrysnapshotresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 403, 409 | application/json | +| errors.APIError | 500 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/sdks/deploymentgroups/README.md b/client-sdks/platform/typescript/docs/sdks/deploymentgroups/README.md index 1148a6c10..82dc33961 100644 --- a/client-sdks/platform/typescript/docs/sdks/deploymentgroups/README.md +++ b/client-sdks/platform/typescript/docs/sdks/deploymentgroups/README.md @@ -15,9 +15,9 @@ * [setDeploymentGroupExternalId](#setdeploymentgroupexternalid) - Set or clear a deployment group's external ID * [createDeploymentGroupToken](#createdeploymentgrouptoken) - Create deployment group token * [createFirstPartyDeploymentSession](#createfirstpartydeploymentsession) - Create first-party deployment session -* [getDirectAnthropicBinding](#getdirectanthropicbinding) - Get direct Anthropic connection state -* [putDirectAnthropicBinding](#putdirectanthropicbinding) - Connect or rotate a direct Anthropic workspace key -* [deleteDirectAnthropicBinding](#deletedirectanthropicbinding) - Revoke the direct Anthropic connection +* [getExternalAIBinding](#getexternalaibinding) - Get external AI connection state +* [putExternalAIBinding](#putexternalaibinding) - Connect or rotate an external AI provider key +* [deleteExternalAIBinding](#deleteexternalaibinding) - Revoke the external AI connection ## createDeploymentGroup @@ -365,7 +365,6 @@ const alien = new Alien({ async function run() { const result = await alien.deploymentGroups.getDeploymentGroupByExternalId({ workspace: "my-workspace", - project: "my-project", externalId: "ext_example_01", }); @@ -392,7 +391,6 @@ const alien = new AlienCore({ async function run() { const res = await deploymentGroupsGetDeploymentGroupByExternalId(alien, { workspace: "my-workspace", - project: "my-project", externalId: "ext_example_01", }); if (res.ok) { @@ -937,13 +935,13 @@ run(); | errors.APIError | 500 | application/json | | errors.AlienDefaultError | 4XX, 5XX | \*/\* | -## getDirectAnthropicBinding +## getExternalAIBinding -Get direct Anthropic connection state +Get external AI connection state ### Example Usage - + ```typescript import { Alien } from "@alienplatform/platform-api"; @@ -952,7 +950,7 @@ const alien = new Alien({ }); async function run() { - const result = await alien.deploymentGroups.getDirectAnthropicBinding({ + const result = await alien.deploymentGroups.getExternalAIBinding({ id: "dg_r27ict8c7vcgsumpj90ackf7b", workspace: "my-workspace", }); @@ -969,7 +967,7 @@ The standalone function version of this method: ```typescript import { AlienCore } from "@alienplatform/platform-api/core.js"; -import { deploymentGroupsGetDirectAnthropicBinding } from "@alienplatform/platform-api/funcs/deploymentGroupsGetDirectAnthropicBinding.js"; +import { deploymentGroupsGetExternalAIBinding } from "@alienplatform/platform-api/funcs/deploymentGroupsGetExternalAIBinding.js"; // Use `AlienCore` for best tree-shaking performance. // You can create one instance of it to use across an application. @@ -978,7 +976,7 @@ const alien = new AlienCore({ }); async function run() { - const res = await deploymentGroupsGetDirectAnthropicBinding(alien, { + const res = await deploymentGroupsGetExternalAIBinding(alien, { id: "dg_r27ict8c7vcgsumpj90ackf7b", workspace: "my-workspace", }); @@ -986,7 +984,7 @@ async function run() { const { value: result } = res; console.log(result); } else { - console.log("deploymentGroupsGetDirectAnthropicBinding failed:", res.error); + console.log("deploymentGroupsGetExternalAIBinding failed:", res.error); } } @@ -997,14 +995,14 @@ run(); | Parameter | Type | Required | Description | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `request` | [operations.GetDirectAnthropicBindingRequest](../../models/operations/getdirectanthropicbindingrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `request` | [operations.GetExternalAIBindingRequest](../../models/operations/getexternalaibindingrequest.md) | :heavy_check_mark: | The request object to use for the request. | | `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | | `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | | `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | ### Response -**Promise\<[models.DirectAnthropicBindingState](../../models/directanthropicbindingstate.md)\>** +**Promise\<[models.ExternalAIBindingState](../../models/externalaibindingstate.md)\>** ### Errors @@ -1014,13 +1012,13 @@ run(); | errors.APIError | 500 | application/json | | errors.AlienDefaultError | 4XX, 5XX | \*/\* | -## putDirectAnthropicBinding +## putExternalAIBinding -Connect or rotate a direct Anthropic workspace key +Connect or rotate an external AI provider key ### Example Usage - + ```typescript import { Alien } from "@alienplatform/platform-api"; @@ -1029,10 +1027,11 @@ const alien = new Alien({ }); async function run() { - const result = await alien.deploymentGroups.putDirectAnthropicBinding({ + const result = await alien.deploymentGroups.putExternalAIBinding({ id: "dg_r27ict8c7vcgsumpj90ackf7b", workspace: "my-workspace", - putDirectAnthropicBindingRequest: { + putExternalAIBindingRequest: { + provider: "anthropic", apiKey: "", acknowledgeAlienCredentialAccess: true, }, @@ -1050,7 +1049,7 @@ The standalone function version of this method: ```typescript import { AlienCore } from "@alienplatform/platform-api/core.js"; -import { deploymentGroupsPutDirectAnthropicBinding } from "@alienplatform/platform-api/funcs/deploymentGroupsPutDirectAnthropicBinding.js"; +import { deploymentGroupsPutExternalAIBinding } from "@alienplatform/platform-api/funcs/deploymentGroupsPutExternalAIBinding.js"; // Use `AlienCore` for best tree-shaking performance. // You can create one instance of it to use across an application. @@ -1059,10 +1058,11 @@ const alien = new AlienCore({ }); async function run() { - const res = await deploymentGroupsPutDirectAnthropicBinding(alien, { + const res = await deploymentGroupsPutExternalAIBinding(alien, { id: "dg_r27ict8c7vcgsumpj90ackf7b", workspace: "my-workspace", - putDirectAnthropicBindingRequest: { + putExternalAIBindingRequest: { + provider: "anthropic", apiKey: "", acknowledgeAlienCredentialAccess: true, }, @@ -1071,7 +1071,7 @@ async function run() { const { value: result } = res; console.log(result); } else { - console.log("deploymentGroupsPutDirectAnthropicBinding failed:", res.error); + console.log("deploymentGroupsPutExternalAIBinding failed:", res.error); } } @@ -1082,14 +1082,14 @@ run(); | Parameter | Type | Required | Description | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `request` | [operations.PutDirectAnthropicBindingRequest](../../models/operations/putdirectanthropicbindingrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `request` | [operations.PutExternalAIBindingRequest](../../models/operations/putexternalaibindingrequest.md) | :heavy_check_mark: | The request object to use for the request. | | `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | | `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | | `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | ### Response -**Promise\<[models.DirectAnthropicBinding](../../models/directanthropicbinding.md)\>** +**Promise\<[models.ExternalAIBinding](../../models/externalaibinding.md)\>** ### Errors @@ -1099,13 +1099,13 @@ run(); | errors.APIError | 500, 503 | application/json | | errors.AlienDefaultError | 4XX, 5XX | \*/\* | -## deleteDirectAnthropicBinding +## deleteExternalAIBinding -Revoke the direct Anthropic connection +Revoke the external AI connection ### Example Usage - + ```typescript import { Alien } from "@alienplatform/platform-api"; @@ -1114,7 +1114,7 @@ const alien = new Alien({ }); async function run() { - await alien.deploymentGroups.deleteDirectAnthropicBinding({ + await alien.deploymentGroups.deleteExternalAIBinding({ id: "dg_r27ict8c7vcgsumpj90ackf7b", workspace: "my-workspace", }); @@ -1131,7 +1131,7 @@ The standalone function version of this method: ```typescript import { AlienCore } from "@alienplatform/platform-api/core.js"; -import { deploymentGroupsDeleteDirectAnthropicBinding } from "@alienplatform/platform-api/funcs/deploymentGroupsDeleteDirectAnthropicBinding.js"; +import { deploymentGroupsDeleteExternalAIBinding } from "@alienplatform/platform-api/funcs/deploymentGroupsDeleteExternalAIBinding.js"; // Use `AlienCore` for best tree-shaking performance. // You can create one instance of it to use across an application. @@ -1140,7 +1140,7 @@ const alien = new AlienCore({ }); async function run() { - const res = await deploymentGroupsDeleteDirectAnthropicBinding(alien, { + const res = await deploymentGroupsDeleteExternalAIBinding(alien, { id: "dg_r27ict8c7vcgsumpj90ackf7b", workspace: "my-workspace", }); @@ -1148,7 +1148,7 @@ async function run() { const { value: result } = res; } else { - console.log("deploymentGroupsDeleteDirectAnthropicBinding failed:", res.error); + console.log("deploymentGroupsDeleteExternalAIBinding failed:", res.error); } } @@ -1159,7 +1159,7 @@ run(); | Parameter | Type | Required | Description | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `request` | [operations.DeleteDirectAnthropicBindingRequest](../../models/operations/deletedirectanthropicbindingrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `request` | [operations.DeleteExternalAIBindingRequest](../../models/operations/deleteexternalaibindingrequest.md) | :heavy_check_mark: | The request object to use for the request. | | `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | | `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | | `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | diff --git a/client-sdks/platform/typescript/docs/sdks/deployments/README.md b/client-sdks/platform/typescript/docs/sdks/deployments/README.md index 1301da51f..466294a89 100644 --- a/client-sdks/platform/typescript/docs/sdks/deployments/README.md +++ b/client-sdks/platform/typescript/docs/sdks/deployments/README.md @@ -18,6 +18,7 @@ * [delete](#delete) - Delete, detach, or forget a deployment by ID. * [redeploy](#redeploy) - Redeploy a running deployment with the same release and fresh environment variables. Sets status to update-pending. * [pinRelease](#pinrelease) - Pin or unpin a running or runtime-failed deployment. Running deployments start an update; failed deployments retry toward the selected release. +* [setReleaseChannel](#setreleasechannel) * [retry](#retry) - Retry a failed deployment operation. Uses alien-infra's retry mechanisms to resume from exact failure point. * [getInputs](#getinputs) - Get the active input definitions and current non-secret values for a deployment. * [updateInputs](#updateinputs) - Update runtime stack inputs, rebuild their environment-variable mappings, and request a deployment update when runtime configuration changes. @@ -1221,6 +1222,80 @@ run(); | errors.APIError | 500 | application/json | | errors.AlienDefaultError | 4XX, 5XX | \*/\* | +## setReleaseChannel + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.deployments.setReleaseChannel({ + id: "dep_0c29fq4a2yjb7kx3smwdgxlc", + workspace: "my-workspace", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { deploymentsSetReleaseChannel } from "@alienplatform/platform-api/funcs/deploymentsSetReleaseChannel.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await deploymentsSetReleaseChannel(alien, { + id: "dep_0c29fq4a2yjb7kx3smwdgxlc", + workspace: "my-workspace", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("deploymentsSetReleaseChannel failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.SetDeploymentReleaseChannelRequest](../../models/operations/setdeploymentreleasechannelrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[models.Deployment](../../models/deployment.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 400, 404 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + ## retry Retry a failed deployment operation. Uses alien-infra's retry mechanisms to resume from exact failure point. diff --git a/client-sdks/platform/typescript/docs/sdks/managers/README.md b/client-sdks/platform/typescript/docs/sdks/managers/README.md index 8bfe2a424..6de5c4112 100644 --- a/client-sdks/platform/typescript/docs/sdks/managers/README.md +++ b/client-sdks/platform/typescript/docs/sdks/managers/README.md @@ -18,6 +18,7 @@ * [update](#update) - Update a manager to a specific release ID or active release. * [listEvents](#listevents) - Retrieve all events of a manager. * [generateManagerToken](#generatemanagertoken) - 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. +* [generateManagerBindingToken](#generatemanagerbindingtoken) - Generate a short-lived deployment-scoped token for resolving opted-in remote bindings through the currently assigned manager. * [resolveGcpOAuthProvider](#resolvegcpoauthprovider) - Resolve decrypted project-level Google Cloud OAuth provider settings for a manager-side deployment bootstrap. * [reportHeartbeat](#reportheartbeat) - Report Manager health status and metrics. * [getDeployment](#getdeployment) - Get deployment details for a private manager (internal deployment platform, status, resources). @@ -1109,6 +1110,89 @@ run(); | errors.APIError | 500 | application/json | | errors.AlienDefaultError | 4XX, 5XX | \*/\* | +## generateManagerBindingToken + +Generate a short-lived deployment-scoped token for resolving opted-in remote bindings through the currently assigned manager. + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.managers.generateManagerBindingToken({ + id: "mgr_enxscjrqiiu2lrc672hwwuc5", + workspace: "my-workspace", + generateManagerBindingTokenRequest: { + deploymentId: "dep_0c29fq4a2yjb7kx3smwdgxlc", + }, + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { managersGenerateManagerBindingToken } from "@alienplatform/platform-api/funcs/managersGenerateManagerBindingToken.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await managersGenerateManagerBindingToken(alien, { + id: "mgr_enxscjrqiiu2lrc672hwwuc5", + workspace: "my-workspace", + generateManagerBindingTokenRequest: { + deploymentId: "dep_0c29fq4a2yjb7kx3smwdgxlc", + }, + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("managersGenerateManagerBindingToken failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.GenerateManagerBindingTokenRequest](../../models/operations/generatemanagerbindingtokenrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[models.GenerateManagerBindingTokenResponse](../../models/generatemanagerbindingtokenresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 403, 404 | application/json | +| errors.APIError | 503 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + ## resolveGcpOAuthProvider Resolve decrypted project-level Google Cloud OAuth provider settings for a manager-side deployment bootstrap. diff --git a/client-sdks/platform/typescript/docs/sdks/operations/README.md b/client-sdks/platform/typescript/docs/sdks/operations/README.md new file mode 100644 index 000000000..4b8ad4da3 --- /dev/null +++ b/client-sdks/platform/typescript/docs/sdks/operations/README.md @@ -0,0 +1,794 @@ +# Operations + +## Overview + +### Available Operations + +* [listPlugins](#listplugins) - List available operations plugins (builtin + custom) for a project, with their operations and risk tiers. +* [publishPlugin](#publishplugin) - Register a custom operations plugin whose bundle ZIP has already been uploaded to S3 (see POST /plugins/upload-url). Replaces any existing plugin of the same name in that project. New custom plugins are enabled by default. +* [createBundleUploadUrl](#createbundleuploadurl) - Get a presigned S3 URL to upload a custom operations plugin bundle ZIP. Upload the ZIP with a PUT to the returned url (sending the given Content-Type), then call POST /plugins to register it. +* [setPluginEnabled](#setpluginenabled) - Enable or disable an operations plugin (builtin or custom) for a project. Only enabled plugins are baked into the operator image and can be invoked. +* [getPolicy](#getpolicy) - Get a project's per-command approval policy. Mirrors what the operator enforces: `plugin/operation` / `plugin/*` / `*` patterns → auto | manual. +* [updatePolicy](#updatepolicy) - Replace a project's per-command approval policy (full rule set). Patterns are `plugin/operation`, `plugin/*`, or `*`; each maps to auto | manual. +* [invoke](#invoke) - Invoke a plugin operation against a deployment. Honors the project's per-command approval policy. +* [createAccessRequest](#createaccessrequest) - Create a pending access request covering a remediation plan's commands. Awaits the engineer gate before it is queued for the operator. +* [queueAccessRequest](#queueaccessrequest) - Engineer gate — approve a pending access request, queuing it for the operator to materialize. Records who queued it. +* [getAccessRequestCoordinates](#getaccessrequestcoordinates) - The customer's kubectl approve command for a queued access request, or null until the operator has materialized the grant CR and reported its coordinates. Polled by the Slack handler to update the access-plan card. + +## listPlugins + +List available operations plugins (builtin + custom) for a project, with their operations and risk tiers. + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.operations.listPlugins({ + workspace: "my-workspace", + project: "my-project", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { operationsListPlugins } from "@alienplatform/platform-api/funcs/operationsListPlugins.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await operationsListPlugins(alien, { + workspace: "my-workspace", + project: "my-project", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("operationsListPlugins failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.ListOperationsPluginsRequest](../../models/operations/listoperationspluginsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[models.ListOperationsPluginsResponse](../../models/listoperationspluginsresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 500 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## publishPlugin + +Register a custom operations plugin whose bundle ZIP has already been uploaded to S3 (see POST /plugins/upload-url). Replaces any existing plugin of the same name in that project. New custom plugins are enabled by default. + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.operations.publishPlugin({ + workspace: "my-workspace", + project: "my-project", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { operationsPublishPlugin } from "@alienplatform/platform-api/funcs/operationsPublishPlugin.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await operationsPublishPlugin(alien, { + workspace: "my-workspace", + project: "my-project", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("operationsPublishPlugin failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.PublishOperationsPluginRequest](../../models/operations/publishoperationspluginrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[models.PublishOperationsPluginResponse](../../models/publishoperationspluginresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 400, 402 | application/json | +| errors.APIError | 500 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## createBundleUploadUrl + +Get a presigned S3 URL to upload a custom operations plugin bundle ZIP. Upload the ZIP with a PUT to the returned url (sending the given Content-Type), then call POST /plugins to register it. + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.operations.createBundleUploadUrl({ + workspace: "my-workspace", + project: "my-project", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { operationsCreateBundleUploadUrl } from "@alienplatform/platform-api/funcs/operationsCreateBundleUploadUrl.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await operationsCreateBundleUploadUrl(alien, { + workspace: "my-workspace", + project: "my-project", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("operationsCreateBundleUploadUrl failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.CreateOperationsBundleUploadUrlRequest](../../models/operations/createoperationsbundleuploadurlrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[models.OperationsBundleUploadUrlResponse](../../models/operationsbundleuploadurlresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 402 | application/json | +| errors.APIError | 503 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## setPluginEnabled + +Enable or disable an operations plugin (builtin or custom) for a project. Only enabled plugins are baked into the operator image and can be invoked. + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.operations.setPluginEnabled({ + name: "", + workspace: "my-workspace", + project: "my-project", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { operationsSetPluginEnabled } from "@alienplatform/platform-api/funcs/operationsSetPluginEnabled.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await operationsSetPluginEnabled(alien, { + name: "", + workspace: "my-workspace", + project: "my-project", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("operationsSetPluginEnabled failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.SetOperationsPluginEnabledRequest](../../models/operations/setoperationspluginenabledrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[models.SetOperationsPluginEnabledResponse](../../models/setoperationspluginenabledresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 404 | application/json | +| errors.APIError | 500 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## getPolicy + +Get a project's per-command approval policy. Mirrors what the operator enforces: `plugin/operation` / `plugin/*` / `*` patterns → auto | manual. + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.operations.getPolicy({ + workspace: "my-workspace", + project: "my-project", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { operationsGetPolicy } from "@alienplatform/platform-api/funcs/operationsGetPolicy.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await operationsGetPolicy(alien, { + workspace: "my-workspace", + project: "my-project", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("operationsGetPolicy failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.GetOperationsPolicyRequest](../../models/operations/getoperationspolicyrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[models.OperationsPolicyResponse](../../models/operationspolicyresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 500 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## updatePolicy + +Replace a project's per-command approval policy (full rule set). Patterns are `plugin/operation`, `plugin/*`, or `*`; each maps to auto | manual. + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.operations.updatePolicy({ + workspace: "my-workspace", + project: "my-project", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { operationsUpdatePolicy } from "@alienplatform/platform-api/funcs/operationsUpdatePolicy.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await operationsUpdatePolicy(alien, { + workspace: "my-workspace", + project: "my-project", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("operationsUpdatePolicy failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.UpdateOperationsPolicyRequest](../../models/operations/updateoperationspolicyrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[models.OperationsPolicyResponse](../../models/operationspolicyresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 400 | application/json | +| errors.APIError | 500 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## invoke + +Invoke a plugin operation against a deployment. Honors the project's per-command approval policy. + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.operations.invoke({ + workspace: "my-workspace", + project: "my-project", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { operationsInvoke } from "@alienplatform/platform-api/funcs/operationsInvoke.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await operationsInvoke(alien, { + workspace: "my-workspace", + project: "my-project", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("operationsInvoke failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.InvokeOperationRequest](../../models/operations/invokeoperationrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[models.InvokeOperationResponse](../../models/invokeoperationresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 402, 403, 404 | application/json | +| errors.APIError | 500 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## createAccessRequest + +Create a pending access request covering a remediation plan's commands. Awaits the engineer gate before it is queued for the operator. + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.operations.createAccessRequest({ + workspace: "my-workspace", + requestBody: { + deploymentId: "", + remediationPlanId: "", + title: "", + commands: [], + }, + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { operationsCreateAccessRequest } from "@alienplatform/platform-api/funcs/operationsCreateAccessRequest.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await operationsCreateAccessRequest(alien, { + workspace: "my-workspace", + requestBody: { + deploymentId: "", + remediationPlanId: "", + title: "", + commands: [], + }, + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("operationsCreateAccessRequest failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.CreateAccessRequestRequest](../../models/operations/createaccessrequestrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[operations.CreateAccessRequestResponse](../../models/operations/createaccessrequestresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 404 | application/json | +| errors.APIError | 500 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## queueAccessRequest + +Engineer gate — approve a pending access request, queuing it for the operator to materialize. Records who queued it. + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.operations.queueAccessRequest({ + id: "", + workspace: "my-workspace", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { operationsQueueAccessRequest } from "@alienplatform/platform-api/funcs/operationsQueueAccessRequest.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await operationsQueueAccessRequest(alien, { + id: "", + workspace: "my-workspace", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("operationsQueueAccessRequest failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.QueueAccessRequestRequest](../../models/operations/queueaccessrequestrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[operations.QueueAccessRequestResponse](../../models/operations/queueaccessrequestresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 404, 409 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## getAccessRequestCoordinates + +The customer's kubectl approve command for a queued access request, or null until the operator has materialized the grant CR and reported its coordinates. Polled by the Slack handler to update the access-plan card. + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.operations.getAccessRequestCoordinates({ + id: "", + workspace: "my-workspace", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { operationsGetAccessRequestCoordinates } from "@alienplatform/platform-api/funcs/operationsGetAccessRequestCoordinates.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await operationsGetAccessRequestCoordinates(alien, { + id: "", + workspace: "my-workspace", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("operationsGetAccessRequestCoordinates failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.GetAccessRequestCoordinatesRequest](../../models/operations/getaccessrequestcoordinatesrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[operations.GetAccessRequestCoordinatesResponse](../../models/operations/getaccessrequestcoordinatesresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 404 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/sdks/projects/README.md b/client-sdks/platform/typescript/docs/sdks/projects/README.md index c1fddb188..8032f6d05 100644 --- a/client-sdks/platform/typescript/docs/sdks/projects/README.md +++ b/client-sdks/platform/typescript/docs/sdks/projects/README.md @@ -11,11 +11,20 @@ * [delete](#delete) - Delete a project. The project must have no deployments. * [getGcpOAuthProvider](#getgcpoauthprovider) - Retrieve redacted project-level Google Cloud OAuth provider settings. * [updateGcpOAuthProvider](#updategcpoauthprovider) - Update project-level Google Cloud OAuth provider settings. +* [configureSource](#configuresource) - Connect a GitHub repository or Alien template to an existing project and configure its release workflow. * [getDeploymentPortalDomain](#getdeploymentportaldomain) - Get the deployment portal domain binding for a project. * [createFromTemplate](#createfromtemplate) - Create a project by forking alienplatform/alien into your namespace, then configuring GitHub Actions. * [getTemplateUrls](#gettemplateurls) - Get template URLs for deploying setup stacks in this project. * [getDeploymentLinkSetup](#getdeploymentlinksetup) - Get the active release stack and portal-visible setup availability for deployment-link configuration. -* [getActiveRelease](#getactiverelease) - 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. +* [getActiveRelease](#getactiverelease) - Get the production channel's current release. When deploymentId is provided, returns that deployment's effective release: its pin, or its followed channel's current release. +* [setCapabilities](#setcapabilities) - Set the capabilities offered by a Project. Removing a capability prevents new setup without deleting existing customer resources. +* [configureDeployments](#configuredeployments) - Enable deployments for a Project. +* [configureModels](#configuremodels) - Configure customer-owned model providers without requiring an application Release. +* [configureKeys](#configurekeys) - Enable customer-owned application encryption without requiring an application Release. +* [configureBuckets](#configurebuckets) - Enable buckets without requiring a project Release. +* [configureRegistry](#configureregistry) - Enable customer-owned container registries without requiring an application Release. +* [getCapabilityOverview](#getcapabilityoverview) - Get safe, server-derived capability status for a Project. +* [getAiUsage](#getaiusage) ## list @@ -583,6 +592,97 @@ run(); | errors.APIError | 500 | application/json | | errors.AlienDefaultError | 4XX, 5XX | \*/\* | +## configureSource + +Connect a GitHub repository or Alien template to an existing project and configure its release workflow. + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.projects.configureSource({ + idOrName: "my-project", + workspace: "my-workspace", + requestBody: { + mode: "repository", + gitRepository: { + type: "github", + repo: "alien/my-agent", + }, + }, + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { projectsConfigureSource } from "@alienplatform/platform-api/funcs/projectsConfigureSource.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await projectsConfigureSource(alien, { + idOrName: "my-project", + workspace: "my-workspace", + requestBody: { + mode: "repository", + gitRepository: { + type: "github", + repo: "alien/my-agent", + }, + }, + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("projectsConfigureSource failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.ConfigureProjectSourceRequest](../../models/operations/configureprojectsourcerequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[operations.ConfigureProjectSourceResponse](../../models/operations/configureprojectsourceresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 400, 403, 404 | application/json | +| errors.APIError | 500, 503 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + ## getDeploymentPortalDomain Get the deployment portal domain binding for a project. @@ -901,7 +1001,7 @@ run(); ## getActiveRelease -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. +Get the production channel's current release. When deploymentId is provided, returns that deployment's effective release: its pin, or its followed channel's current release. ### Example Usage @@ -974,4 +1074,618 @@ run(); | ------------------------ | ------------------------ | ------------------------ | | errors.APIError | 404 | application/json | | errors.APIError | 500 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## setCapabilities + +Set the capabilities offered by a Project. Removing a capability prevents new setup without deleting existing customer resources. + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.projects.setCapabilities({ + idOrName: "my-project", + workspace: "my-workspace", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { projectsSetCapabilities } from "@alienplatform/platform-api/funcs/projectsSetCapabilities.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await projectsSetCapabilities(alien, { + idOrName: "my-project", + workspace: "my-workspace", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("projectsSetCapabilities failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.SetProjectCapabilitiesRequest](../../models/operations/setprojectcapabilitiesrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[models.ProjectCapabilities](../../models/projectcapabilities.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 403, 404 | application/json | +| errors.APIError | 500 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## configureDeployments + +Enable deployments for a Project. + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.projects.configureDeployments({ + idOrName: "my-project", + workspace: "my-workspace", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { projectsConfigureDeployments } from "@alienplatform/platform-api/funcs/projectsConfigureDeployments.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await projectsConfigureDeployments(alien, { + idOrName: "my-project", + workspace: "my-workspace", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("projectsConfigureDeployments failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.ConfigureProjectDeploymentsRequest](../../models/operations/configureprojectdeploymentsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[models.ProjectCapabilities](../../models/projectcapabilities.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 403, 404 | application/json | +| errors.APIError | 500 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## configureModels + +Configure customer-owned model providers without requiring an application Release. + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.projects.configureModels({ + idOrName: "my-project", + workspace: "my-workspace", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { projectsConfigureModels } from "@alienplatform/platform-api/funcs/projectsConfigureModels.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await projectsConfigureModels(alien, { + idOrName: "my-project", + workspace: "my-workspace", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("projectsConfigureModels failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.ConfigureProjectModelsRequest](../../models/operations/configureprojectmodelsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[models.CapabilityMaterialization](../../models/capabilitymaterialization.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 403, 404 | application/json | +| errors.APIError | 500 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## configureKeys + +Enable customer-owned application encryption without requiring an application Release. + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.projects.configureKeys({ + idOrName: "my-project", + workspace: "my-workspace", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { projectsConfigureKeys } from "@alienplatform/platform-api/funcs/projectsConfigureKeys.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await projectsConfigureKeys(alien, { + idOrName: "my-project", + workspace: "my-workspace", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("projectsConfigureKeys failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.ConfigureProjectKeysRequest](../../models/operations/configureprojectkeysrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[models.CapabilityMaterialization](../../models/capabilitymaterialization.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 403, 404 | application/json | +| errors.APIError | 500 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## configureBuckets + +Enable buckets without requiring a project Release. + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.projects.configureBuckets({ + idOrName: "my-project", + workspace: "my-workspace", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { projectsConfigureBuckets } from "@alienplatform/platform-api/funcs/projectsConfigureBuckets.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await projectsConfigureBuckets(alien, { + idOrName: "my-project", + workspace: "my-workspace", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("projectsConfigureBuckets failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.ConfigureProjectBucketsRequest](../../models/operations/configureprojectbucketsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[models.CapabilityMaterialization](../../models/capabilitymaterialization.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 403, 404 | application/json | +| errors.APIError | 500 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## configureRegistry + +Enable customer-owned container registries without requiring an application Release. + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.projects.configureRegistry({ + idOrName: "my-project", + workspace: "my-workspace", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { projectsConfigureRegistry } from "@alienplatform/platform-api/funcs/projectsConfigureRegistry.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await projectsConfigureRegistry(alien, { + idOrName: "my-project", + workspace: "my-workspace", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("projectsConfigureRegistry failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.ConfigureProjectRegistryRequest](../../models/operations/configureprojectregistryrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[models.CapabilityMaterialization](../../models/capabilitymaterialization.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 403, 404 | application/json | +| errors.APIError | 500 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## getCapabilityOverview + +Get safe, server-derived capability status for a Project. + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.projects.getCapabilityOverview({ + idOrName: "my-project", + workspace: "my-workspace", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { projectsGetCapabilityOverview } from "@alienplatform/platform-api/funcs/projectsGetCapabilityOverview.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await projectsGetCapabilityOverview(alien, { + idOrName: "my-project", + workspace: "my-workspace", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("projectsGetCapabilityOverview failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.GetProjectCapabilityOverviewRequest](../../models/operations/getprojectcapabilityoverviewrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[models.ProjectCapabilityOverview](../../models/projectcapabilityoverview.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 403, 404 | application/json | +| errors.APIError | 500 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## getAiUsage + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.projects.getAiUsage({ + idOrName: "my-project", + workspace: "my-workspace", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { projectsGetAiUsage } from "@alienplatform/platform-api/funcs/projectsGetAiUsage.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await projectsGetAiUsage(alien, { + idOrName: "my-project", + workspace: "my-workspace", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("projectsGetAiUsage failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.GetProjectAiUsageRequest](../../models/operations/getprojectaiusagerequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[operations.GetProjectAiUsageResponse](../../models/operations/getprojectaiusageresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 403, 404 | application/json | +| errors.APIError | 500 | application/json | | errors.AlienDefaultError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/sdks/releasechannels/README.md b/client-sdks/platform/typescript/docs/sdks/releasechannels/README.md new file mode 100644 index 000000000..c7609adc1 --- /dev/null +++ b/client-sdks/platform/typescript/docs/sdks/releasechannels/README.md @@ -0,0 +1,247 @@ +# ReleaseChannels + +## Overview + +### Available Operations + +* [list](#list) - List release channels +* [create](#create) - Create a release channel +* [delete](#delete) - Delete a release channel + +## list + +List the release channels configured for a project. + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.releaseChannels.list({ + workspace: "my-workspace", + project: "my-project", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { releaseChannelsList } from "@alienplatform/platform-api/funcs/releaseChannelsList.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await releaseChannelsList(alien, { + workspace: "my-workspace", + project: "my-project", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("releaseChannelsList failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.ListReleaseChannelsRequest](../../models/operations/listreleasechannelsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[operations.ListReleaseChannelsResponse](../../models/operations/listreleasechannelsresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 404 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## create + +Create a release channel for a project. + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.releaseChannels.create({ + workspace: "my-workspace", + project: "my-project", + requestBody: { + name: "", + releaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", + }, + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { releaseChannelsCreate } from "@alienplatform/platform-api/funcs/releaseChannelsCreate.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await releaseChannelsCreate(alien, { + workspace: "my-workspace", + project: "my-project", + requestBody: { + name: "", + releaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", + }, + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("releaseChannelsCreate failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.CreateReleaseChannelRequest](../../models/operations/createreleasechannelrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[models.ReleaseChannel](../../models/releasechannel.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 400, 404 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## delete + +Delete a release channel from a project. + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + await alien.releaseChannels.delete({ + name: "", + workspace: "my-workspace", + project: "my-project", + }); + + +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { releaseChannelsDelete } from "@alienplatform/platform-api/funcs/releaseChannelsDelete.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await releaseChannelsDelete(alien, { + name: "", + workspace: "my-workspace", + project: "my-project", + }); + if (res.ok) { + const { value: result } = res; + + } else { + console.log("releaseChannelsDelete failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.DeleteReleaseChannelRequest](../../models/operations/deletereleasechannelrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 400, 404, 409 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/sdks/releases/README.md b/client-sdks/platform/typescript/docs/sdks/releases/README.md index c9dde0507..824eac8f9 100644 --- a/client-sdks/platform/typescript/docs/sdks/releases/README.md +++ b/client-sdks/platform/typescript/docs/sdks/releases/README.md @@ -9,6 +9,8 @@ * [listBranches](#listbranches) - List distinct git branches across releases. Used for filter dropdowns. * [listAuthors](#listauthors) - List distinct commit authors across releases. Used for filter dropdowns. * [get](#get) - Retrieve a release by ID. +* [listDeployments](#listdeployments) - List the project's deployments with their rollout state relative to this release. +* [promote](#promote) ## list @@ -418,4 +420,165 @@ run(); | ------------------------ | ------------------------ | ------------------------ | | errors.APIError | 404 | application/json | | errors.APIError | 500 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## listDeployments + +List the project's deployments with their rollout state relative to this release. + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.releases.listDeployments({ + id: "rel_WbhQgksrawSKIpEN0NAssHX9", + workspace: "my-workspace", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { releasesListDeployments } from "@alienplatform/platform-api/funcs/releasesListDeployments.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await releasesListDeployments(alien, { + id: "rel_WbhQgksrawSKIpEN0NAssHX9", + workspace: "my-workspace", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("releasesListDeployments failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.ListReleaseDeploymentsRequest](../../models/operations/listreleasedeploymentsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[models.ReleaseDeploymentsResponse](../../models/releasedeploymentsresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 404 | application/json | +| errors.APIError | 500 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## promote + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.releases.promote({ + name: "", + workspace: "my-workspace", + project: "my-project", + requestBody: { + releaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", + expectedReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", + }, + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { releasesPromote } from "@alienplatform/platform-api/funcs/releasesPromote.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await releasesPromote(alien, { + name: "", + workspace: "my-workspace", + project: "my-project", + requestBody: { + releaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", + expectedReleaseId: "rel_WbhQgksrawSKIpEN0NAssHX9", + }, + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("releasesPromote failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.PromoteReleaseRequest](../../models/operations/promotereleaserequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[models.ReleaseChannel](../../models/releasechannel.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 404, 409 | application/json | | errors.AlienDefaultError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/sdks/remotebindings/README.md b/client-sdks/platform/typescript/docs/sdks/remotebindings/README.md new file mode 100644 index 000000000..daaa8d77d --- /dev/null +++ b/client-sdks/platform/typescript/docs/sdks/remotebindings/README.md @@ -0,0 +1,92 @@ +# RemoteBindings + +## Overview + +### Available Operations + +* [createExternalAccess](#createexternalaccess) - Create short-lived Remote Bindings access for a external resource + +## createExternalAccess + +Selects a connected external resource by Project and external ID, then returns a short-lived deployment-scoped Manager capability. The caller never receives the external cloud credentials from Platform. + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.remoteBindings.createExternalAccess({ + idOrName: "my-project", + workspace: "my-workspace", + remoteBindingsExternalAccessRequest: { + externalId: "ext_example_01", + capability: "storage", + }, + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { remoteBindingsCreateExternalAccess } from "@alienplatform/platform-api/funcs/remoteBindingsCreateExternalAccess.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await remoteBindingsCreateExternalAccess(alien, { + idOrName: "my-project", + workspace: "my-workspace", + remoteBindingsExternalAccessRequest: { + externalId: "ext_example_01", + capability: "storage", + }, + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("remoteBindingsCreateExternalAccess failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.CreateRemoteBindingsExternalAccessRequest](../../models/operations/createremotebindingsexternalaccessrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[models.RemoteBindingsExternalAccessResponse](../../models/remotebindingsexternalaccessresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 401, 403, 404, 409 | application/json | +| errors.APIError | 500, 503 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/sdks/slackintegration/README.md b/client-sdks/platform/typescript/docs/sdks/slackintegration/README.md new file mode 100644 index 000000000..42a9a9449 --- /dev/null +++ b/client-sdks/platform/typescript/docs/sdks/slackintegration/README.md @@ -0,0 +1,379 @@ +# SlackIntegration + +## Overview + +### Available Operations + +* [installUrl](#installurl) - Generate the Slack OAuth consent URL for this workspace. +* [status](#status) - Return the Slack install for this workspace (if any). +* [listChannels](#listchannels) - List public Slack channels for this workspace's install. Used by the dashboard's notification-channel picker. +* [setNotificationChannel](#setnotificationchannel) - Configure which Slack channel receives ai-agent monitor reports. +* [uninstall](#uninstall) - Uninstall the Slack integration for this workspace. Revokes the bot token at Slack and deletes the row. + +## installUrl + +Generate the Slack OAuth consent URL for this workspace. + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.slackIntegration.installUrl({ + workspace: "my-workspace", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { slackIntegrationInstallUrl } from "@alienplatform/platform-api/funcs/slackIntegrationInstallUrl.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await slackIntegrationInstallUrl(alien, { + workspace: "my-workspace", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("slackIntegrationInstallUrl failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.SlackIntegrationInstallUrlRequest](../../models/operations/slackintegrationinstallurlrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[models.SlackInstallUrlResponse](../../models/slackinstallurlresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 500 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## status + +Return the Slack install for this workspace (if any). + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.slackIntegration.status({ + workspace: "my-workspace", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { slackIntegrationStatus } from "@alienplatform/platform-api/funcs/slackIntegrationStatus.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await slackIntegrationStatus(alien, { + workspace: "my-workspace", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("slackIntegrationStatus failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.SlackIntegrationStatusRequest](../../models/operations/slackintegrationstatusrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[models.SlackIntegrationStatus](../../models/slackintegrationstatus.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## listChannels + +List public Slack channels for this workspace's install. Used by the dashboard's notification-channel picker. + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.slackIntegration.listChannels({ + workspace: "my-workspace", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { slackIntegrationListChannels } from "@alienplatform/platform-api/funcs/slackIntegrationListChannels.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await slackIntegrationListChannels(alien, { + workspace: "my-workspace", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("slackIntegrationListChannels failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.SlackIntegrationChannelsRequest](../../models/operations/slackintegrationchannelsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[models.SlackChannelsResponse](../../models/slackchannelsresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 400 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## setNotificationChannel + +Configure which Slack channel receives ai-agent monitor reports. + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.slackIntegration.setNotificationChannel({ + workspace: "my-workspace", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { slackIntegrationSetNotificationChannel } from "@alienplatform/platform-api/funcs/slackIntegrationSetNotificationChannel.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await slackIntegrationSetNotificationChannel(alien, { + workspace: "my-workspace", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("slackIntegrationSetNotificationChannel failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.SlackIntegrationSetNotificationChannelRequest](../../models/operations/slackintegrationsetnotificationchannelrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[models.SlackNotificationChannelResponse](../../models/slacknotificationchannelresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 400 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## uninstall + +Uninstall the Slack integration for this workspace. Revokes the bot token at Slack and deletes the row. + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + await alien.slackIntegration.uninstall({ + workspace: "my-workspace", + }); + + +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { slackIntegrationUninstall } from "@alienplatform/platform-api/funcs/slackIntegrationUninstall.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await slackIntegrationUninstall(alien, { + workspace: "my-workspace", + }); + if (res.ok) { + const { value: result } = res; + + } else { + console.log("slackIntegrationUninstall failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.SlackIntegrationUninstallRequest](../../models/operations/slackintegrationuninstallrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/sdks/sync/README.md b/client-sdks/platform/typescript/docs/sdks/sync/README.md index c0377133c..5b1c4b8db 100644 --- a/client-sdks/platform/typescript/docs/sdks/sync/README.md +++ b/client-sdks/platform/typescript/docs/sdks/sync/README.md @@ -8,6 +8,7 @@ * [context](#context) - Get computed deployment state and configuration for a manager-side operation without acquiring the deployment reconciliation lock. * [acquire](#acquire) - 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. * [reconcile](#reconcile) - 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. +* [renew](#renew) * [release](#release) - Release a deployment lock. Must be called after processing an acquired deployment, even if processing failed. This is critical to avoid deadlocks. ## list @@ -202,6 +203,7 @@ async function run() { syncAcquireRequest: { managerId: "mgr_enxscjrqiiu2lrc672hwwuc5", session: "", + requestId: "", deploymentIds: [ "dep_0c29fq4a2yjb7kx3smwdgxlc", ], @@ -235,6 +237,7 @@ async function run() { syncAcquireRequest: { managerId: "mgr_enxscjrqiiu2lrc672hwwuc5", session: "", + requestId: "", deploymentIds: [ "dep_0c29fq4a2yjb7kx3smwdgxlc", ], @@ -364,6 +367,93 @@ run(); | errors.APIError | 500 | application/json | | errors.AlienDefaultError | 4XX, 5XX | \*/\* | +## renew + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.sync.renew({ + workspace: "my-workspace", + syncRenewRequest: { + deploymentId: "dep_0c29fq4a2yjb7kx3smwdgxlc", + deploymentIds: [ + "dep_0c29fq4a2yjb7kx3smwdgxlc", + ], + session: "", + }, + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { syncRenew } from "@alienplatform/platform-api/funcs/syncRenew.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await syncRenew(alien, { + workspace: "my-workspace", + syncRenewRequest: { + deploymentId: "dep_0c29fq4a2yjb7kx3smwdgxlc", + deploymentIds: [ + "dep_0c29fq4a2yjb7kx3smwdgxlc", + ], + session: "", + }, + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("syncRenew failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.SyncRenewRequest](../../models/operations/syncrenewrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[operations.SyncRenewResponse](../../models/operations/syncrenewresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 404, 409 | application/json | +| errors.APIError | 500 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + ## release Release a deployment lock. Must be called after processing an acquired deployment, even if processing failed. This is critical to avoid deadlocks. diff --git a/client-sdks/platform/typescript/docs/sdks/workspaces/README.md b/client-sdks/platform/typescript/docs/sdks/workspaces/README.md index 611010858..ee4ca7811 100644 --- a/client-sdks/platform/typescript/docs/sdks/workspaces/README.md +++ b/client-sdks/platform/typescript/docs/sdks/workspaces/README.md @@ -13,6 +13,8 @@ * [updateMember](#updatemember) - Update a workspace member's role. * [removeMember](#removemember) - Remove a member from a workspace. * [dismissOnboarding](#dismissonboarding) - 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. +* [getSettings](#getsettings) - Read the ai-agent settings for a workspace. Returns defaults (`enabled: true`, `debugPermissionMode: auto`) when the workspace has never customized them. +* [updateSettings](#updatesettings) - 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). ## list @@ -720,4 +722,156 @@ run(); | ------------------------ | ------------------------ | ------------------------ | | errors.APIError | 404 | application/json | | errors.APIError | 500 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## getSettings + +Read the ai-agent settings for a workspace. Returns defaults (`enabled: true`, `debugPermissionMode: auto`) when the workspace has never customized them. + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.workspaces.getSettings({ + id: "ws_It13CUaGEhLLAB87simX0", + workspace: "my-workspace", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { workspacesGetSettings } from "@alienplatform/platform-api/funcs/workspacesGetSettings.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await workspacesGetSettings(alien, { + id: "ws_It13CUaGEhLLAB87simX0", + workspace: "my-workspace", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("workspacesGetSettings failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.GetWorkspaceSettingsRequest](../../models/operations/getworkspacesettingsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[models.AgentSettings](../../models/agentsettings.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 404 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## updateSettings + +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). + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.workspaces.updateSettings({ + id: "ws_It13CUaGEhLLAB87simX0", + workspace: "my-workspace", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { workspacesUpdateSettings } from "@alienplatform/platform-api/funcs/workspacesUpdateSettings.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await workspacesUpdateSettings(alien, { + id: "ws_It13CUaGEhLLAB87simX0", + workspace: "my-workspace", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("workspacesUpdateSettings failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.UpdateWorkspaceSettingsRequest](../../models/operations/updateworkspacesettingsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[models.AgentSettings](../../models/agentsettings.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 404 | application/json | | errors.AlienDefaultError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/client-sdks/platform/typescript/examples/getWorkspaceInvitationPreview.example.ts b/client-sdks/platform/typescript/examples/getWorkspaceInvitationPreview.example.ts new file mode 100644 index 000000000..11c31f8f0 --- /dev/null +++ b/client-sdks/platform/typescript/examples/getWorkspaceInvitationPreview.example.ts @@ -0,0 +1,28 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import dotenv from "dotenv"; +dotenv.config(); +/** + * Example usage of the @alienplatform/platform-api SDK + * + * To run this example from the examples directory: + * npm run build && npx tsx getWorkspaceInvitationPreview.example.ts + */ + +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function main() { + const result = await alien.getWorkspaceInvitationPreview({ + token: "", + }); + + console.log(result); +} + +main().catch(console.error); diff --git a/client-sdks/platform/typescript/examples/userListMemberships.example.ts b/client-sdks/platform/typescript/examples/userListMemberships.example.ts deleted file mode 100644 index dc513216f..000000000 --- a/client-sdks/platform/typescript/examples/userListMemberships.example.ts +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - */ - -import dotenv from "dotenv"; -dotenv.config(); -/** - * Example usage of the @alienplatform/platform-api SDK - * - * To run this example from the examples directory: - * npm run build && npx tsx userListMemberships.example.ts - */ - -import { Alien } from "@alienplatform/platform-api"; - -const alien = new Alien({ - apiKey: process.env["ALIEN_API_KEY"] ?? "", -}); - -async function main() { - const result = await alien.user.listMemberships(); - - console.log(result); -} - -main().catch(console.error); diff --git a/client-sdks/platform/typescript/package.json b/client-sdks/platform/typescript/package.json index 91a2246da..bae7e1483 100644 --- a/client-sdks/platform/typescript/package.json +++ b/client-sdks/platform/typescript/package.json @@ -52,7 +52,7 @@ "sideEffects": false, "scripts": { "lint": "eslint --cache --max-warnings=0 src", - "build": "tsc", + "build": "NODE_OPTIONS=--max-old-space-size=14336 tsc", "prepublishOnly": "npm run build" }, "peerDependencies": { @@ -61,8 +61,8 @@ "devDependencies": { "@eslint/js": "^9.19.0", "eslint": "^9.19.0", - "globals": "^17.0.0", - "typescript": "~5.9.0", + "globals": "^15.14.0", + "typescript": "~5.8.3", "typescript-eslint": "^8.26.0" }, "dependencies": { diff --git a/client-sdks/platform/typescript/src/funcs/acceptWorkspaceInvitation.ts b/client-sdks/platform/typescript/src/funcs/acceptWorkspaceInvitation.ts new file mode 100644 index 000000000..e74b919e0 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/acceptWorkspaceInvitation.ts @@ -0,0 +1,172 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +export function acceptWorkspaceInvitation( + client: AlienCore, + request: operations.AcceptWorkspaceInvitationRequest, + options?: RequestOptions, +): APIPromise< + Result< + models.AcceptWorkspaceInvitationResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.AcceptWorkspaceInvitationRequest, + options?: RequestOptions, +): Promise< + [ + Result< + models.AcceptWorkspaceInvitationResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.AcceptWorkspaceInvitationRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = null; + + const pathParams = { + token: encodeSimple("token", payload.token, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc("/v1/user/invitations/{token}/accept")(pathParams); + + const headers = new Headers(compactMap({ + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "acceptWorkspaceInvitation", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "POST", + baseURL: options?.serverURL, + path: path, + headers: headers, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["404", "409", "4XX", "500", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + models.AcceptWorkspaceInvitationResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, models.AcceptWorkspaceInvitationResponse$inboundSchema), + M.jsonErr([404, 409], errors.APIError$inboundSchema), + M.jsonErr(500, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/agentSessionsApprove.ts b/client-sdks/platform/typescript/src/funcs/agentSessionsApprove.ts new file mode 100644 index 000000000..f017d5695 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/agentSessionsApprove.ts @@ -0,0 +1,180 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * 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. + */ +export function agentSessionsApprove( + client: AlienCore, + request: operations.ApproveAgentSessionRequest, + options?: RequestOptions, +): APIPromise< + Result< + models.AgentSessionApproveResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.ApproveAgentSessionRequest, + options?: RequestOptions, +): Promise< + [ + Result< + models.AgentSessionApproveResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.ApproveAgentSessionRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = null; + + const pathParams = { + id: encodeSimple("id", payload.id, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc("/v1/agent-sessions/{id}/approve")(pathParams); + + const query = encodeFormQuery({ + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "approveAgentSession", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "POST", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["404", "4XX", "503", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + models.AgentSessionApproveResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json([200, 202], models.AgentSessionApproveResponse$inboundSchema), + M.jsonErr(404, errors.APIError$inboundSchema), + M.jsonErr(503, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/agentSessionsEvents.ts b/client-sdks/platform/typescript/src/funcs/agentSessionsEvents.ts new file mode 100644 index 000000000..c6facc8c5 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/agentSessionsEvents.ts @@ -0,0 +1,181 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * 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. + */ +export function agentSessionsEvents( + client: AlienCore, + request: operations.ListAgentSessionEventsRequest, + options?: RequestOptions, +): APIPromise< + Result< + models.AgentSessionEventsResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.ListAgentSessionEventsRequest, + options?: RequestOptions, +): Promise< + [ + Result< + models.AgentSessionEventsResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.ListAgentSessionEventsRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = null; + + const pathParams = { + id: encodeSimple("id", payload.id, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc("/v1/agent-sessions/{id}/events")(pathParams); + + const query = encodeFormQuery({ + "after": payload.after, + "limit": payload.limit, + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "listAgentSessionEvents", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "GET", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["404", "4XX", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + models.AgentSessionEventsResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, models.AgentSessionEventsResponse$inboundSchema), + M.jsonErr(404, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/agentSessionsGet.ts b/client-sdks/platform/typescript/src/funcs/agentSessionsGet.ts new file mode 100644 index 000000000..bd64c55df --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/agentSessionsGet.ts @@ -0,0 +1,178 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Retrieve one ai-agent monitor session by id. + */ +export function agentSessionsGet( + client: AlienCore, + request: operations.GetAgentSessionRequest, + options?: RequestOptions, +): APIPromise< + Result< + models.AgentSessionDetail, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.GetAgentSessionRequest, + options?: RequestOptions, +): Promise< + [ + Result< + models.AgentSessionDetail, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => operations.GetAgentSessionRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = null; + + const pathParams = { + id: encodeSimple("id", payload.id, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc("/v1/agent-sessions/{id}")(pathParams); + + const query = encodeFormQuery({ + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "getAgentSession", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "GET", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["404", "4XX", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + models.AgentSessionDetail, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, models.AgentSessionDetail$inboundSchema), + M.jsonErr(404, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/agentSessionsList.ts b/client-sdks/platform/typescript/src/funcs/agentSessionsList.ts new file mode 100644 index 000000000..332e6e278 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/agentSessionsList.ts @@ -0,0 +1,165 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * List ai-agent monitor sessions for this workspace. Newest first, capped at 50. + */ +export function agentSessionsList( + client: AlienCore, + request?: operations.ListAgentSessionsRequest | undefined, + options?: RequestOptions, +): APIPromise< + Result< + models.AgentSessionListResponse, + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request?: operations.ListAgentSessionsRequest | undefined, + options?: RequestOptions, +): Promise< + [ + Result< + models.AgentSessionListResponse, + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.ListAgentSessionsRequest$outboundSchema.optional().parse( + value, + ), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = null; + + const path = pathToFunc("/v1/agent-sessions")(); + + const query = encodeFormQuery({ + "workspace": payload?.workspace, + }); + + const headers = new Headers(compactMap({ + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "listAgentSessions", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "GET", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["4XX", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const [result] = await M.match< + models.AgentSessionListResponse, + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, models.AgentSessionListResponse$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/agentSessionsStop.ts b/client-sdks/platform/typescript/src/funcs/agentSessionsStop.ts new file mode 100644 index 000000000..2fbd5e3d9 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/agentSessionsStop.ts @@ -0,0 +1,179 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * 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. + */ +export function agentSessionsStop( + client: AlienCore, + request: operations.StopAgentSessionRequest, + options?: RequestOptions, +): APIPromise< + Result< + models.AgentSessionStopResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.StopAgentSessionRequest, + options?: RequestOptions, +): Promise< + [ + Result< + models.AgentSessionStopResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => operations.StopAgentSessionRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = null; + + const pathParams = { + id: encodeSimple("id", payload.id, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc("/v1/agent-sessions/{id}/stop")(pathParams); + + const query = encodeFormQuery({ + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "stopAgentSession", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "POST", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["404", "4XX", "503", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + models.AgentSessionStopResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json([200, 202], models.AgentSessionStopResponse$inboundSchema), + M.jsonErr(404, errors.APIError$inboundSchema), + M.jsonErr(503, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/commandsBootstrap.ts b/client-sdks/platform/typescript/src/funcs/commandsBootstrap.ts new file mode 100644 index 000000000..2966ddad8 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/commandsBootstrap.ts @@ -0,0 +1,167 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeJSON } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as models from "../models/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Resolve a deployment's current manager and mint a five-minute command capability. Sender tokens can dispatch and observe commands only for this deployment. Receiver tokens can lease and complete commands only for the resolved Container or Daemon target. + */ +export function commandsBootstrap( + client: AlienCore, + request: models.CommandBootstrapRequest, + options?: RequestOptions, +): APIPromise< + Result< + models.CommandBootstrapResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: models.CommandBootstrapRequest, + options?: RequestOptions, +): Promise< + [ + Result< + models.CommandBootstrapResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => models.CommandBootstrapRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = encodeJSON("body", payload, { explode: true }); + + const path = pathToFunc("/v1/commands/bootstrap")(); + + const headers = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "bootstrapCommands", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "POST", + baseURL: options?.serverURL, + path: path, + headers: headers, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["400", "401", "403", "404", "422", "4XX", "500", "503", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + models.CommandBootstrapResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, models.CommandBootstrapResponse$inboundSchema), + M.jsonErr([400, 401, 403, 404, 422], errors.APIError$inboundSchema), + M.jsonErr([500, 503], errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/containerRegistryApplyContainerRegistryManagerSnapshot.ts b/client-sdks/platform/typescript/src/funcs/containerRegistryApplyContainerRegistryManagerSnapshot.ts new file mode 100644 index 000000000..41dc42734 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/containerRegistryApplyContainerRegistryManagerSnapshot.ts @@ -0,0 +1,176 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeJSON, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +export function containerRegistryApplyContainerRegistryManagerSnapshot( + client: AlienCore, + request: operations.ApplyContainerRegistryManagerSnapshotRequest, + options?: RequestOptions, +): APIPromise< + Result< + models.ApplyContainerRegistrySnapshotResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.ApplyContainerRegistryManagerSnapshotRequest, + options?: RequestOptions, +): Promise< + [ + Result< + models.ApplyContainerRegistrySnapshotResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.ApplyContainerRegistryManagerSnapshotRequest$outboundSchema + .parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = encodeJSON("body", payload.RequestBody, { explode: true }); + + const pathParams = { + id: encodeSimple("id", payload.id, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc("/v1/managers/{id}/container-registry/applied")( + pathParams, + ); + + const headers = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "applyContainerRegistryManagerSnapshot", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "POST", + baseURL: options?.serverURL, + path: path, + headers: headers, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["403", "409", "4XX", "500", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + models.ApplyContainerRegistrySnapshotResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, models.ApplyContainerRegistrySnapshotResponse$inboundSchema), + M.jsonErr([403, 409], errors.APIError$inboundSchema), + M.jsonErr(500, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/containerRegistryCreateContainerRegistryCredential.ts b/client-sdks/platform/typescript/src/funcs/containerRegistryCreateContainerRegistryCredential.ts new file mode 100644 index 000000000..702aac7ae --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/containerRegistryCreateContainerRegistryCredential.ts @@ -0,0 +1,182 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeJSON, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +export function containerRegistryCreateContainerRegistryCredential( + client: AlienCore, + request: operations.CreateContainerRegistryCredentialRequest, + options?: RequestOptions, +): APIPromise< + Result< + models.CreateContainerRegistryCredentialResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.CreateContainerRegistryCredentialRequest, + options?: RequestOptions, +): Promise< + [ + Result< + models.CreateContainerRegistryCredentialResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.CreateContainerRegistryCredentialRequest$outboundSchema.parse( + value, + ), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = encodeJSON("body", payload.RequestBody, { explode: true }); + + const pathParams = { + id: encodeSimple("id", payload.id, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc( + "/v1/deployment-groups/{id}/container-registry/credentials", + )(pathParams); + + const query = encodeFormQuery({ + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "createContainerRegistryCredential", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "POST", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["404", "409", "4XX", "500", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + models.CreateContainerRegistryCredentialResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(201, models.CreateContainerRegistryCredentialResponse$inboundSchema), + M.jsonErr([404, 409], errors.APIError$inboundSchema), + M.jsonErr(500, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/containerRegistryCreateContainerRegistryRepository.ts b/client-sdks/platform/typescript/src/funcs/containerRegistryCreateContainerRegistryRepository.ts new file mode 100644 index 000000000..eb78208c3 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/containerRegistryCreateContainerRegistryRepository.ts @@ -0,0 +1,184 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeJSON, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +export function containerRegistryCreateContainerRegistryRepository( + client: AlienCore, + request: operations.CreateContainerRegistryRepositoryRequest, + options?: RequestOptions, +): APIPromise< + Result< + operations.CreateContainerRegistryRepositoryResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.CreateContainerRegistryRepositoryRequest, + options?: RequestOptions, +): Promise< + [ + Result< + operations.CreateContainerRegistryRepositoryResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.CreateContainerRegistryRepositoryRequest$outboundSchema.parse( + value, + ), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = encodeJSON("body", payload.RequestBody, { explode: true }); + + const pathParams = { + id: encodeSimple("id", payload.id, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc( + "/v1/deployment-groups/{id}/container-registry/repositories", + )(pathParams); + + const query = encodeFormQuery({ + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "createContainerRegistryRepository", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "POST", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["404", "409", "4XX", "500", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + operations.CreateContainerRegistryRepositoryResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json( + 201, + operations.CreateContainerRegistryRepositoryResponse$inboundSchema, + ), + M.jsonErr([404, 409], errors.APIError$inboundSchema), + M.jsonErr(500, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/containerRegistryDeleteContainerRegistryRepository.ts b/client-sdks/platform/typescript/src/funcs/containerRegistryDeleteContainerRegistryRepository.ts new file mode 100644 index 000000000..32ae75a81 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/containerRegistryDeleteContainerRegistryRepository.ts @@ -0,0 +1,188 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeJSON, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +export function containerRegistryDeleteContainerRegistryRepository( + client: AlienCore, + request: operations.DeleteContainerRegistryRepositoryRequest, + options?: RequestOptions, +): APIPromise< + Result< + operations.DeleteContainerRegistryRepositoryResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.DeleteContainerRegistryRepositoryRequest, + options?: RequestOptions, +): Promise< + [ + Result< + operations.DeleteContainerRegistryRepositoryResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.DeleteContainerRegistryRepositoryRequest$outboundSchema.parse( + value, + ), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = encodeJSON("body", payload.RequestBody, { explode: true }); + + const pathParams = { + id: encodeSimple("id", payload.id, { + explode: false, + charEncoding: "percent", + }), + repositoryId: encodeSimple("repositoryId", payload.repositoryId, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc( + "/v1/deployment-groups/{id}/container-registry/repositories/{repositoryId}", + )(pathParams); + + const query = encodeFormQuery({ + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "deleteContainerRegistryRepository", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "DELETE", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["404", "409", "4XX", "500", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + operations.DeleteContainerRegistryRepositoryResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json( + 202, + operations.DeleteContainerRegistryRepositoryResponse$inboundSchema, + ), + M.jsonErr([404, 409], errors.APIError$inboundSchema), + M.jsonErr(500, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/containerRegistryGetContainerRegistry.ts b/client-sdks/platform/typescript/src/funcs/containerRegistryGetContainerRegistry.ts new file mode 100644 index 000000000..7ab57baa9 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/containerRegistryGetContainerRegistry.ts @@ -0,0 +1,179 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +export function containerRegistryGetContainerRegistry( + client: AlienCore, + request: operations.GetContainerRegistryRequest, + options?: RequestOptions, +): APIPromise< + Result< + models.ContainerRegistryState, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.GetContainerRegistryRequest, + options?: RequestOptions, +): Promise< + [ + Result< + models.ContainerRegistryState, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.GetContainerRegistryRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = null; + + const pathParams = { + id: encodeSimple("id", payload.id, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc("/v1/deployment-groups/{id}/container-registry")( + pathParams, + ); + + const query = encodeFormQuery({ + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "getContainerRegistry", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "GET", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["404", "409", "4XX", "500", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + models.ContainerRegistryState, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, models.ContainerRegistryState$inboundSchema), + M.jsonErr([404, 409], errors.APIError$inboundSchema), + M.jsonErr(500, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/containerRegistryGetContainerRegistryManagerSnapshot.ts b/client-sdks/platform/typescript/src/funcs/containerRegistryGetContainerRegistryManagerSnapshot.ts new file mode 100644 index 000000000..35edc79ab --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/containerRegistryGetContainerRegistryManagerSnapshot.ts @@ -0,0 +1,175 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +export function containerRegistryGetContainerRegistryManagerSnapshot( + client: AlienCore, + request: operations.GetContainerRegistryManagerSnapshotRequest, + options?: RequestOptions, +): APIPromise< + Result< + models.ContainerRegistryManagerSnapshot, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.GetContainerRegistryManagerSnapshotRequest, + options?: RequestOptions, +): Promise< + [ + Result< + models.ContainerRegistryManagerSnapshot, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.GetContainerRegistryManagerSnapshotRequest$outboundSchema + .parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = null; + + const pathParams = { + id: encodeSimple("id", payload.id, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc("/v1/managers/{id}/container-registry/snapshot")( + pathParams, + ); + + const headers = new Headers(compactMap({ + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "getContainerRegistryManagerSnapshot", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "GET", + baseURL: options?.serverURL, + path: path, + headers: headers, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["403", "409", "4XX", "500", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + models.ContainerRegistryManagerSnapshot, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, models.ContainerRegistryManagerSnapshot$inboundSchema), + M.jsonErr([403, 409], errors.APIError$inboundSchema), + M.jsonErr(500, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/containerRegistryPutContainerRegistry.ts b/client-sdks/platform/typescript/src/funcs/containerRegistryPutContainerRegistry.ts new file mode 100644 index 000000000..1a1aae2de --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/containerRegistryPutContainerRegistry.ts @@ -0,0 +1,179 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeJSON, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +export function containerRegistryPutContainerRegistry( + client: AlienCore, + request: operations.PutContainerRegistryRequest, + options?: RequestOptions, +): APIPromise< + Result< + operations.PutContainerRegistryResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.PutContainerRegistryRequest, + options?: RequestOptions, +): Promise< + [ + Result< + operations.PutContainerRegistryResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.PutContainerRegistryRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = encodeJSON("body", payload.RequestBody, { explode: true }); + + const pathParams = { + id: encodeSimple("id", payload.id, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc("/v1/deployment-groups/{id}/container-registry")( + pathParams, + ); + + const query = encodeFormQuery({ + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "putContainerRegistry", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "PUT", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["404", "409", "4XX", "500", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + operations.PutContainerRegistryResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, operations.PutContainerRegistryResponse$inboundSchema), + M.jsonErr([404, 409], errors.APIError$inboundSchema), + M.jsonErr(500, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/containerRegistryRevokeContainerRegistry.ts b/client-sdks/platform/typescript/src/funcs/containerRegistryRevokeContainerRegistry.ts new file mode 100644 index 000000000..bb12f5a11 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/containerRegistryRevokeContainerRegistry.ts @@ -0,0 +1,178 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +export function containerRegistryRevokeContainerRegistry( + client: AlienCore, + request: operations.RevokeContainerRegistryRequest, + options?: RequestOptions, +): APIPromise< + Result< + operations.RevokeContainerRegistryResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.RevokeContainerRegistryRequest, + options?: RequestOptions, +): Promise< + [ + Result< + operations.RevokeContainerRegistryResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.RevokeContainerRegistryRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = null; + + const pathParams = { + id: encodeSimple("id", payload.id, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc( + "/v1/deployment-groups/{id}/container-registry/revoke", + )(pathParams); + + const query = encodeFormQuery({ + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "revokeContainerRegistry", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "POST", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["404", "409", "4XX", "500", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + operations.RevokeContainerRegistryResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(202, operations.RevokeContainerRegistryResponse$inboundSchema), + M.jsonErr([404, 409], errors.APIError$inboundSchema), + M.jsonErr(500, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/containerRegistryRevokeContainerRegistryCredential.ts b/client-sdks/platform/typescript/src/funcs/containerRegistryRevokeContainerRegistryCredential.ts new file mode 100644 index 000000000..34e0650aa --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/containerRegistryRevokeContainerRegistryCredential.ts @@ -0,0 +1,185 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +export function containerRegistryRevokeContainerRegistryCredential( + client: AlienCore, + request: operations.RevokeContainerRegistryCredentialRequest, + options?: RequestOptions, +): APIPromise< + Result< + void, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.RevokeContainerRegistryCredentialRequest, + options?: RequestOptions, +): Promise< + [ + Result< + void, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.RevokeContainerRegistryCredentialRequest$outboundSchema.parse( + value, + ), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = null; + + const pathParams = { + credentialId: encodeSimple("credentialId", payload.credentialId, { + explode: false, + charEncoding: "percent", + }), + id: encodeSimple("id", payload.id, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc( + "/v1/deployment-groups/{id}/container-registry/credentials/{credentialId}", + )(pathParams); + + const query = encodeFormQuery({ + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "revokeContainerRegistryCredential", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "DELETE", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["404", "409", "4XX", "500", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + void, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.nil(204, z.void()), + M.jsonErr([404, 409], errors.APIError$inboundSchema), + M.jsonErr(500, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/containerRegistryVerifyContainerRegistry.ts b/client-sdks/platform/typescript/src/funcs/containerRegistryVerifyContainerRegistry.ts new file mode 100644 index 000000000..d2a6a87c4 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/containerRegistryVerifyContainerRegistry.ts @@ -0,0 +1,178 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +export function containerRegistryVerifyContainerRegistry( + client: AlienCore, + request: operations.VerifyContainerRegistryRequest, + options?: RequestOptions, +): APIPromise< + Result< + operations.VerifyContainerRegistryResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.VerifyContainerRegistryRequest, + options?: RequestOptions, +): Promise< + [ + Result< + operations.VerifyContainerRegistryResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.VerifyContainerRegistryRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = null; + + const pathParams = { + id: encodeSimple("id", payload.id, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc( + "/v1/deployment-groups/{id}/container-registry/verify", + )(pathParams); + + const query = encodeFormQuery({ + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "verifyContainerRegistry", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "POST", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["404", "409", "4XX", "500", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + operations.VerifyContainerRegistryResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(202, operations.VerifyContainerRegistryResponse$inboundSchema), + M.jsonErr([404, 409], errors.APIError$inboundSchema), + M.jsonErr(500, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/continueAwsVirtualKey.ts b/client-sdks/platform/typescript/src/funcs/continueAwsVirtualKey.ts new file mode 100644 index 000000000..c8878bee0 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/continueAwsVirtualKey.ts @@ -0,0 +1,171 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeJSON, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +export function continueAwsVirtualKey( + client: AlienCore, + request: operations.ContinueAwsVirtualKeyRequest, + options?: RequestOptions, +): APIPromise< + Result< + operations.ContinueAwsVirtualKeyResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.ContinueAwsVirtualKeyRequest, + options?: RequestOptions, +): Promise< + [ + Result< + operations.ContinueAwsVirtualKeyResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.ContinueAwsVirtualKeyRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = encodeJSON("body", payload.RequestBody, { explode: true }); + + const pathParams = { + id: encodeSimple("id", payload.id, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc("/v1/aws-virtual-keys/{id}/continue")(pathParams); + + const headers = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "continueAwsVirtualKey", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "POST", + baseURL: options?.serverURL, + path: path, + headers: headers, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["400", "401", "404", "409", "4XX", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + operations.ContinueAwsVirtualKeyResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, operations.ContinueAwsVirtualKeyResponse$inboundSchema), + M.jsonErr([400, 401, 404, 409], errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/createAwsVirtualKey.ts b/client-sdks/platform/typescript/src/funcs/createAwsVirtualKey.ts new file mode 100644 index 000000000..eabb27a65 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/createAwsVirtualKey.ts @@ -0,0 +1,169 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeJSON } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +export function createAwsVirtualKey( + client: AlienCore, + request?: operations.CreateAwsVirtualKeyRequest | undefined, + options?: RequestOptions, +): APIPromise< + Result< + operations.CreateAwsVirtualKeyResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request?: operations.CreateAwsVirtualKeyRequest | undefined, + options?: RequestOptions, +): Promise< + [ + Result< + operations.CreateAwsVirtualKeyResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.CreateAwsVirtualKeyRequest$outboundSchema.optional().parse( + value, + ), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = payload === undefined + ? null + : encodeJSON("body", payload, { explode: true }); + + const path = pathToFunc("/v1/aws-virtual-keys")(); + + const headers = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "createAwsVirtualKey", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "POST", + baseURL: options?.serverURL, + path: path, + headers: headers, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["400", "401", "404", "409", "4XX", "500", "503", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + operations.CreateAwsVirtualKeyResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, operations.CreateAwsVirtualKeyResponse$inboundSchema), + M.jsonErr([400, 401, 404, 409], errors.APIError$inboundSchema), + M.jsonErr([500, 503], errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/createWorkspaceInvitation.ts b/client-sdks/platform/typescript/src/funcs/createWorkspaceInvitation.ts new file mode 100644 index 000000000..d72c54200 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/createWorkspaceInvitation.ts @@ -0,0 +1,178 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeJSON, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +export function createWorkspaceInvitation( + client: AlienCore, + request: operations.CreateWorkspaceInvitationRequest, + options?: RequestOptions, +): APIPromise< + Result< + models.WorkspaceInvitation, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.CreateWorkspaceInvitationRequest, + options?: RequestOptions, +): Promise< + [ + Result< + models.WorkspaceInvitation, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.CreateWorkspaceInvitationRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = encodeJSON("body", payload.RequestBody, { explode: true }); + + const pathParams = { + id: encodeSimple("id", payload.id, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc("/v1/workspaces/{id}/invitations")(pathParams); + + const query = encodeFormQuery({ + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "createWorkspaceInvitation", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "POST", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["403", "404", "409", "4XX", "500", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + models.WorkspaceInvitation, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(201, models.WorkspaceInvitation$inboundSchema), + M.jsonErr([403, 404, 409], errors.APIError$inboundSchema), + M.jsonErr(500, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/createWorkspaceInviteLink.ts b/client-sdks/platform/typescript/src/funcs/createWorkspaceInviteLink.ts new file mode 100644 index 000000000..bb475ffb5 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/createWorkspaceInviteLink.ts @@ -0,0 +1,178 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeJSON, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +export function createWorkspaceInviteLink( + client: AlienCore, + request: operations.CreateWorkspaceInviteLinkRequest, + options?: RequestOptions, +): APIPromise< + Result< + models.WorkspaceInviteLink, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.CreateWorkspaceInviteLinkRequest, + options?: RequestOptions, +): Promise< + [ + Result< + models.WorkspaceInviteLink, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.CreateWorkspaceInviteLinkRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = encodeJSON("body", payload.RequestBody, { explode: true }); + + const pathParams = { + id: encodeSimple("id", payload.id, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc("/v1/workspaces/{id}/invite-link")(pathParams); + + const query = encodeFormQuery({ + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "createWorkspaceInviteLink", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "PUT", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["404", "4XX", "500", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + models.WorkspaceInviteLink, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, models.WorkspaceInviteLink$inboundSchema), + M.jsonErr(404, errors.APIError$inboundSchema), + M.jsonErr(500, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/decommissionAwsVirtualKey.ts b/client-sdks/platform/typescript/src/funcs/decommissionAwsVirtualKey.ts new file mode 100644 index 000000000..cd38e43b8 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/decommissionAwsVirtualKey.ts @@ -0,0 +1,171 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeJSON, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +export function decommissionAwsVirtualKey( + client: AlienCore, + request: operations.DecommissionAwsVirtualKeyRequest, + options?: RequestOptions, +): APIPromise< + Result< + operations.DecommissionAwsVirtualKeyResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.DecommissionAwsVirtualKeyRequest, + options?: RequestOptions, +): Promise< + [ + Result< + operations.DecommissionAwsVirtualKeyResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.DecommissionAwsVirtualKeyRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = encodeJSON("body", payload.RequestBody, { explode: true }); + + const pathParams = { + id: encodeSimple("id", payload.id, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc("/v1/aws-virtual-keys/{id}/decommission")(pathParams); + + const headers = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "decommissionAwsVirtualKey", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "POST", + baseURL: options?.serverURL, + path: path, + headers: headers, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["400", "401", "404", "409", "4XX", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + operations.DecommissionAwsVirtualKeyResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, operations.DecommissionAwsVirtualKeyResponse$inboundSchema), + M.jsonErr([400, 401, 404, 409], errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/deploymentGroupsCreateDeploymentGroupToken.ts b/client-sdks/platform/typescript/src/funcs/deploymentGroupsCreateDeploymentGroupToken.ts index c7967960a..195de6bfb 100644 --- a/client-sdks/platform/typescript/src/funcs/deploymentGroupsCreateDeploymentGroupToken.ts +++ b/client-sdks/platform/typescript/src/funcs/deploymentGroupsCreateDeploymentGroupToken.ts @@ -147,7 +147,7 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["404", "4XX", "500", "5XX"], + errorCodes: ["400", "404", "4XX", "500", "5XX"], retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); @@ -173,7 +173,7 @@ async function $do( | SDKValidationError >( M.json(200, models.CreateDeploymentGroupTokenResponse$inboundSchema), - M.jsonErr(404, errors.APIError$inboundSchema), + M.jsonErr([400, 404], errors.APIError$inboundSchema), M.jsonErr(500, errors.APIError$inboundSchema), M.fail("4XX"), M.fail("5XX"), diff --git a/client-sdks/platform/typescript/src/funcs/deploymentGroupsDeleteDirectAnthropicBinding.ts b/client-sdks/platform/typescript/src/funcs/deploymentGroupsDeleteDirectAnthropicBinding.ts deleted file mode 100644 index dd9d9ecd2..000000000 --- a/client-sdks/platform/typescript/src/funcs/deploymentGroupsDeleteDirectAnthropicBinding.ts +++ /dev/null @@ -1,184 +0,0 @@ -/* - * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - */ - -import * as z from "zod/v4"; -import { AlienCore } from "../core.js"; -import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; -import * as M from "../lib/matchers.js"; -import { compactMap } from "../lib/primitives.js"; -import { safeParse } from "../lib/schemas.js"; -import { RequestOptions } from "../lib/sdks.js"; -import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; -import { pathToFunc } from "../lib/url.js"; -import { AlienError } from "../models/errors/alienerror.js"; -import { - ConnectionError, - InvalidRequestError, - RequestAbortedError, - RequestTimeoutError, - UnexpectedClientError, -} from "../models/errors/httpclienterrors.js"; -import * as errors from "../models/errors/index.js"; -import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; -import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; -import * as operations from "../models/operations/index.js"; -import { APICall, APIPromise } from "../types/async.js"; -import { Result } from "../types/fp.js"; - -/** - * Revoke the direct Anthropic connection - */ -export function deploymentGroupsDeleteDirectAnthropicBinding( - client: AlienCore, - request: operations.DeleteDirectAnthropicBindingRequest, - options?: RequestOptions, -): APIPromise< - Result< - void, - | errors.APIError - | AlienError - | ResponseValidationError - | ConnectionError - | RequestAbortedError - | RequestTimeoutError - | InvalidRequestError - | UnexpectedClientError - | SDKValidationError - > -> { - return new APIPromise($do( - client, - request, - options, - )); -} - -async function $do( - client: AlienCore, - request: operations.DeleteDirectAnthropicBindingRequest, - options?: RequestOptions, -): Promise< - [ - Result< - void, - | errors.APIError - | AlienError - | ResponseValidationError - | ConnectionError - | RequestAbortedError - | RequestTimeoutError - | InvalidRequestError - | UnexpectedClientError - | SDKValidationError - >, - APICall, - ] -> { - const parsed = safeParse( - request, - (value) => - operations.DeleteDirectAnthropicBindingRequest$outboundSchema.parse( - value, - ), - "Input validation failed", - ); - if (!parsed.ok) { - return [parsed, { status: "invalid" }]; - } - const payload = parsed.value; - const body = null; - - const pathParams = { - id: encodeSimple("id", payload.id, { - explode: false, - charEncoding: "percent", - }), - }; - - const path = pathToFunc("/v1/deployment-groups/{id}/ai/anthropic")( - pathParams, - ); - - const query = encodeFormQuery({ - "workspace": payload.workspace, - }); - - const headers = new Headers(compactMap({ - Accept: "application/json", - })); - - const secConfig = await extractSecurity(client._options.apiKey); - const securityInput = secConfig == null ? {} : { apiKey: secConfig }; - const requestSecurity = resolveGlobalSecurity(securityInput); - - const context = { - options: client._options, - baseURL: options?.serverURL ?? client._baseURL ?? "", - operationID: "deleteDirectAnthropicBinding", - oAuth2Scopes: null, - - resolvedSecurity: requestSecurity, - - securitySource: client._options.apiKey, - retryConfig: options?.retries - || client._options.retryConfig - || { strategy: "none" }, - retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], - }; - - const requestRes = client._createRequest(context, { - security: requestSecurity, - method: "DELETE", - baseURL: options?.serverURL, - path: path, - headers: headers, - query: query, - body: body, - userAgent: client._options.userAgent, - timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, - }, options); - if (!requestRes.ok) { - return [requestRes, { status: "invalid" }]; - } - const req = requestRes.value; - - const doResult = await client._do(req, { - context, - errorCodes: ["403", "404", "4XX", "500", "5XX"], - retryConfig: context.retryConfig, - retryCodes: context.retryCodes, - }); - if (!doResult.ok) { - return [doResult, { status: "request-error", request: req }]; - } - const response = doResult.value; - - const responseFields = { - HttpMeta: { Response: response, Request: req }, - }; - - const [result] = await M.match< - void, - | errors.APIError - | AlienError - | ResponseValidationError - | ConnectionError - | RequestAbortedError - | RequestTimeoutError - | InvalidRequestError - | UnexpectedClientError - | SDKValidationError - >( - M.nil(204, z.void()), - M.jsonErr([403, 404], errors.APIError$inboundSchema), - M.jsonErr(500, errors.APIError$inboundSchema), - M.fail("4XX"), - M.fail("5XX"), - )(response, req, { extraFields: responseFields }); - if (!result.ok) { - return [result, { status: "complete", request: req, response }]; - } - - return [result, { status: "complete", request: req, response }]; -} diff --git a/client-sdks/platform/typescript/src/funcs/deploymentGroupsDeleteExternalAIBinding.ts b/client-sdks/platform/typescript/src/funcs/deploymentGroupsDeleteExternalAIBinding.ts new file mode 100644 index 000000000..1eee59265 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/deploymentGroupsDeleteExternalAIBinding.ts @@ -0,0 +1,180 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Revoke the external AI connection + */ +export function deploymentGroupsDeleteExternalAIBinding( + client: AlienCore, + request: operations.DeleteExternalAIBindingRequest, + options?: RequestOptions, +): APIPromise< + Result< + void, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.DeleteExternalAIBindingRequest, + options?: RequestOptions, +): Promise< + [ + Result< + void, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.DeleteExternalAIBindingRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = null; + + const pathParams = { + id: encodeSimple("id", payload.id, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc("/v1/deployment-groups/{id}/ai/external")(pathParams); + + const query = encodeFormQuery({ + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "deleteExternalAIBinding", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "DELETE", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["403", "404", "4XX", "500", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + void, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.nil(204, z.void()), + M.jsonErr([403, 404], errors.APIError$inboundSchema), + M.jsonErr(500, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/deploymentGroupsGetDirectAnthropicBinding.ts b/client-sdks/platform/typescript/src/funcs/deploymentGroupsGetDirectAnthropicBinding.ts deleted file mode 100644 index d8be2eefa..000000000 --- a/client-sdks/platform/typescript/src/funcs/deploymentGroupsGetDirectAnthropicBinding.ts +++ /dev/null @@ -1,182 +0,0 @@ -/* - * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - */ - -import { AlienCore } from "../core.js"; -import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; -import * as M from "../lib/matchers.js"; -import { compactMap } from "../lib/primitives.js"; -import { safeParse } from "../lib/schemas.js"; -import { RequestOptions } from "../lib/sdks.js"; -import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; -import { pathToFunc } from "../lib/url.js"; -import { AlienError } from "../models/errors/alienerror.js"; -import { - ConnectionError, - InvalidRequestError, - RequestAbortedError, - RequestTimeoutError, - UnexpectedClientError, -} from "../models/errors/httpclienterrors.js"; -import * as errors from "../models/errors/index.js"; -import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; -import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; -import * as models from "../models/index.js"; -import * as operations from "../models/operations/index.js"; -import { APICall, APIPromise } from "../types/async.js"; -import { Result } from "../types/fp.js"; - -/** - * Get direct Anthropic connection state - */ -export function deploymentGroupsGetDirectAnthropicBinding( - client: AlienCore, - request: operations.GetDirectAnthropicBindingRequest, - options?: RequestOptions, -): APIPromise< - Result< - models.DirectAnthropicBindingState, - | errors.APIError - | AlienError - | ResponseValidationError - | ConnectionError - | RequestAbortedError - | RequestTimeoutError - | InvalidRequestError - | UnexpectedClientError - | SDKValidationError - > -> { - return new APIPromise($do( - client, - request, - options, - )); -} - -async function $do( - client: AlienCore, - request: operations.GetDirectAnthropicBindingRequest, - options?: RequestOptions, -): Promise< - [ - Result< - models.DirectAnthropicBindingState, - | errors.APIError - | AlienError - | ResponseValidationError - | ConnectionError - | RequestAbortedError - | RequestTimeoutError - | InvalidRequestError - | UnexpectedClientError - | SDKValidationError - >, - APICall, - ] -> { - const parsed = safeParse( - request, - (value) => - operations.GetDirectAnthropicBindingRequest$outboundSchema.parse(value), - "Input validation failed", - ); - if (!parsed.ok) { - return [parsed, { status: "invalid" }]; - } - const payload = parsed.value; - const body = null; - - const pathParams = { - id: encodeSimple("id", payload.id, { - explode: false, - charEncoding: "percent", - }), - }; - - const path = pathToFunc("/v1/deployment-groups/{id}/ai/anthropic")( - pathParams, - ); - - const query = encodeFormQuery({ - "workspace": payload.workspace, - }); - - const headers = new Headers(compactMap({ - Accept: "application/json", - })); - - const secConfig = await extractSecurity(client._options.apiKey); - const securityInput = secConfig == null ? {} : { apiKey: secConfig }; - const requestSecurity = resolveGlobalSecurity(securityInput); - - const context = { - options: client._options, - baseURL: options?.serverURL ?? client._baseURL ?? "", - operationID: "getDirectAnthropicBinding", - oAuth2Scopes: null, - - resolvedSecurity: requestSecurity, - - securitySource: client._options.apiKey, - retryConfig: options?.retries - || client._options.retryConfig - || { strategy: "none" }, - retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], - }; - - const requestRes = client._createRequest(context, { - security: requestSecurity, - method: "GET", - baseURL: options?.serverURL, - path: path, - headers: headers, - query: query, - body: body, - userAgent: client._options.userAgent, - timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, - }, options); - if (!requestRes.ok) { - return [requestRes, { status: "invalid" }]; - } - const req = requestRes.value; - - const doResult = await client._do(req, { - context, - errorCodes: ["403", "404", "4XX", "500", "5XX"], - retryConfig: context.retryConfig, - retryCodes: context.retryCodes, - }); - if (!doResult.ok) { - return [doResult, { status: "request-error", request: req }]; - } - const response = doResult.value; - - const responseFields = { - HttpMeta: { Response: response, Request: req }, - }; - - const [result] = await M.match< - models.DirectAnthropicBindingState, - | errors.APIError - | AlienError - | ResponseValidationError - | ConnectionError - | RequestAbortedError - | RequestTimeoutError - | InvalidRequestError - | UnexpectedClientError - | SDKValidationError - >( - M.json(200, models.DirectAnthropicBindingState$inboundSchema), - M.jsonErr([403, 404], errors.APIError$inboundSchema), - M.jsonErr(500, errors.APIError$inboundSchema), - M.fail("4XX"), - M.fail("5XX"), - )(response, req, { extraFields: responseFields }); - if (!result.ok) { - return [result, { status: "complete", request: req, response }]; - } - - return [result, { status: "complete", request: req, response }]; -} diff --git a/client-sdks/platform/typescript/src/funcs/deploymentGroupsGetExternalAIBinding.ts b/client-sdks/platform/typescript/src/funcs/deploymentGroupsGetExternalAIBinding.ts new file mode 100644 index 000000000..080ad8c54 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/deploymentGroupsGetExternalAIBinding.ts @@ -0,0 +1,180 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Get external AI connection state + */ +export function deploymentGroupsGetExternalAIBinding( + client: AlienCore, + request: operations.GetExternalAIBindingRequest, + options?: RequestOptions, +): APIPromise< + Result< + models.ExternalAIBindingState, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.GetExternalAIBindingRequest, + options?: RequestOptions, +): Promise< + [ + Result< + models.ExternalAIBindingState, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.GetExternalAIBindingRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = null; + + const pathParams = { + id: encodeSimple("id", payload.id, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc("/v1/deployment-groups/{id}/ai/external")(pathParams); + + const query = encodeFormQuery({ + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "getExternalAIBinding", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "GET", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["403", "404", "4XX", "500", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + models.ExternalAIBindingState, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, models.ExternalAIBindingState$inboundSchema), + M.jsonErr([403, 404], errors.APIError$inboundSchema), + M.jsonErr(500, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/deploymentGroupsPutDirectAnthropicBinding.ts b/client-sdks/platform/typescript/src/funcs/deploymentGroupsPutDirectAnthropicBinding.ts deleted file mode 100644 index a0909580e..000000000 --- a/client-sdks/platform/typescript/src/funcs/deploymentGroupsPutDirectAnthropicBinding.ts +++ /dev/null @@ -1,185 +0,0 @@ -/* - * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - */ - -import { AlienCore } from "../core.js"; -import { encodeFormQuery, encodeJSON, encodeSimple } from "../lib/encodings.js"; -import * as M from "../lib/matchers.js"; -import { compactMap } from "../lib/primitives.js"; -import { safeParse } from "../lib/schemas.js"; -import { RequestOptions } from "../lib/sdks.js"; -import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; -import { pathToFunc } from "../lib/url.js"; -import { AlienError } from "../models/errors/alienerror.js"; -import { - ConnectionError, - InvalidRequestError, - RequestAbortedError, - RequestTimeoutError, - UnexpectedClientError, -} from "../models/errors/httpclienterrors.js"; -import * as errors from "../models/errors/index.js"; -import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; -import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; -import * as models from "../models/index.js"; -import * as operations from "../models/operations/index.js"; -import { APICall, APIPromise } from "../types/async.js"; -import { Result } from "../types/fp.js"; - -/** - * Connect or rotate a direct Anthropic workspace key - */ -export function deploymentGroupsPutDirectAnthropicBinding( - client: AlienCore, - request: operations.PutDirectAnthropicBindingRequest, - options?: RequestOptions, -): APIPromise< - Result< - models.DirectAnthropicBinding, - | errors.APIError - | AlienError - | ResponseValidationError - | ConnectionError - | RequestAbortedError - | RequestTimeoutError - | InvalidRequestError - | UnexpectedClientError - | SDKValidationError - > -> { - return new APIPromise($do( - client, - request, - options, - )); -} - -async function $do( - client: AlienCore, - request: operations.PutDirectAnthropicBindingRequest, - options?: RequestOptions, -): Promise< - [ - Result< - models.DirectAnthropicBinding, - | errors.APIError - | AlienError - | ResponseValidationError - | ConnectionError - | RequestAbortedError - | RequestTimeoutError - | InvalidRequestError - | UnexpectedClientError - | SDKValidationError - >, - APICall, - ] -> { - const parsed = safeParse( - request, - (value) => - operations.PutDirectAnthropicBindingRequest$outboundSchema.parse(value), - "Input validation failed", - ); - if (!parsed.ok) { - return [parsed, { status: "invalid" }]; - } - const payload = parsed.value; - const body = encodeJSON("body", payload.PutDirectAnthropicBindingRequest, { - explode: true, - }); - - const pathParams = { - id: encodeSimple("id", payload.id, { - explode: false, - charEncoding: "percent", - }), - }; - - const path = pathToFunc("/v1/deployment-groups/{id}/ai/anthropic")( - pathParams, - ); - - const query = encodeFormQuery({ - "workspace": payload.workspace, - }); - - const headers = new Headers(compactMap({ - "Content-Type": "application/json", - Accept: "application/json", - })); - - const secConfig = await extractSecurity(client._options.apiKey); - const securityInput = secConfig == null ? {} : { apiKey: secConfig }; - const requestSecurity = resolveGlobalSecurity(securityInput); - - const context = { - options: client._options, - baseURL: options?.serverURL ?? client._baseURL ?? "", - operationID: "putDirectAnthropicBinding", - oAuth2Scopes: null, - - resolvedSecurity: requestSecurity, - - securitySource: client._options.apiKey, - retryConfig: options?.retries - || client._options.retryConfig - || { strategy: "none" }, - retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], - }; - - const requestRes = client._createRequest(context, { - security: requestSecurity, - method: "PUT", - baseURL: options?.serverURL, - path: path, - headers: headers, - query: query, - body: body, - userAgent: client._options.userAgent, - timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, - }, options); - if (!requestRes.ok) { - return [requestRes, { status: "invalid" }]; - } - const req = requestRes.value; - - const doResult = await client._do(req, { - context, - errorCodes: ["400", "403", "404", "409", "4XX", "500", "503", "5XX"], - retryConfig: context.retryConfig, - retryCodes: context.retryCodes, - }); - if (!doResult.ok) { - return [doResult, { status: "request-error", request: req }]; - } - const response = doResult.value; - - const responseFields = { - HttpMeta: { Response: response, Request: req }, - }; - - const [result] = await M.match< - models.DirectAnthropicBinding, - | errors.APIError - | AlienError - | ResponseValidationError - | ConnectionError - | RequestAbortedError - | RequestTimeoutError - | InvalidRequestError - | UnexpectedClientError - | SDKValidationError - >( - M.json(200, models.DirectAnthropicBinding$inboundSchema), - M.jsonErr([400, 403, 404, 409], errors.APIError$inboundSchema), - M.jsonErr([500, 503], errors.APIError$inboundSchema), - M.fail("4XX"), - M.fail("5XX"), - )(response, req, { extraFields: responseFields }); - if (!result.ok) { - return [result, { status: "complete", request: req, response }]; - } - - return [result, { status: "complete", request: req, response }]; -} diff --git a/client-sdks/platform/typescript/src/funcs/deploymentGroupsPutExternalAIBinding.ts b/client-sdks/platform/typescript/src/funcs/deploymentGroupsPutExternalAIBinding.ts new file mode 100644 index 000000000..a431ca153 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/deploymentGroupsPutExternalAIBinding.ts @@ -0,0 +1,183 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeJSON, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Connect or rotate an external AI provider key + */ +export function deploymentGroupsPutExternalAIBinding( + client: AlienCore, + request: operations.PutExternalAIBindingRequest, + options?: RequestOptions, +): APIPromise< + Result< + models.ExternalAIBinding, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.PutExternalAIBindingRequest, + options?: RequestOptions, +): Promise< + [ + Result< + models.ExternalAIBinding, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.PutExternalAIBindingRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = encodeJSON("body", payload.PutExternalAIBindingRequest, { + explode: true, + }); + + const pathParams = { + id: encodeSimple("id", payload.id, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc("/v1/deployment-groups/{id}/ai/external")(pathParams); + + const query = encodeFormQuery({ + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "putExternalAIBinding", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "PUT", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["400", "403", "404", "409", "4XX", "500", "503", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + models.ExternalAIBinding, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, models.ExternalAIBinding$inboundSchema), + M.jsonErr([400, 403, 404, 409], errors.APIError$inboundSchema), + M.jsonErr([500, 503], errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/deploymentsGetStats.ts b/client-sdks/platform/typescript/src/funcs/deploymentsGetStats.ts index e1df927b2..861a04adc 100644 --- a/client-sdks/platform/typescript/src/funcs/deploymentsGetStats.ts +++ b/client-sdks/platform/typescript/src/funcs/deploymentsGetStats.ts @@ -96,6 +96,7 @@ async function $do( "environment": payload?.environment, "managerId": payload?.managerId, "project": payload?.project, + "purpose": payload?.purpose, "search": payload?.search, "status": payload?.status, "workspace": payload?.workspace, diff --git a/client-sdks/platform/typescript/src/funcs/deploymentsList.ts b/client-sdks/platform/typescript/src/funcs/deploymentsList.ts index b43a1bfbb..1e67e9a98 100644 --- a/client-sdks/platform/typescript/src/funcs/deploymentsList.ts +++ b/client-sdks/platform/typescript/src/funcs/deploymentsList.ts @@ -97,6 +97,7 @@ async function $do( "managerId": payload?.managerId, "name": payload?.name, "project": payload?.project, + "purpose": payload?.purpose, "search": payload?.search, "status": payload?.status, "workspace": payload?.workspace, diff --git a/client-sdks/platform/typescript/src/funcs/deploymentsSetReleaseChannel.ts b/client-sdks/platform/typescript/src/funcs/deploymentsSetReleaseChannel.ts new file mode 100644 index 000000000..29cd7d2c1 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/deploymentsSetReleaseChannel.ts @@ -0,0 +1,177 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeJSON, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +export function deploymentsSetReleaseChannel( + client: AlienCore, + request: operations.SetDeploymentReleaseChannelRequest, + options?: RequestOptions, +): APIPromise< + Result< + models.Deployment, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.SetDeploymentReleaseChannelRequest, + options?: RequestOptions, +): Promise< + [ + Result< + models.Deployment, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.SetDeploymentReleaseChannelRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = encodeJSON("body", payload.RequestBody, { explode: true }); + + const pathParams = { + id: encodeSimple("id", payload.id, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc("/v1/deployments/{id}/release-channel")(pathParams); + + const query = encodeFormQuery({ + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "setDeploymentReleaseChannel", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "POST", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["400", "404", "4XX", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + models.Deployment, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, models.Deployment$inboundSchema), + M.jsonErr([400, 404], errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/eventsList.ts b/client-sdks/platform/typescript/src/funcs/eventsList.ts index 9eb623291..cff4a709c 100644 --- a/client-sdks/platform/typescript/src/funcs/eventsList.ts +++ b/client-sdks/platform/typescript/src/funcs/eventsList.ts @@ -91,8 +91,10 @@ async function $do( const query = encodeFormQuery({ "cursor": payload?.cursor, "deploymentId": payload?.deploymentId, + "include": payload?.include, "limit": payload?.limit, "project": payload?.project, + "releaseId": payload?.releaseId, "workspace": payload?.workspace, }); diff --git a/client-sdks/platform/typescript/src/funcs/finalizeAwsVirtualKeyDeletion.ts b/client-sdks/platform/typescript/src/funcs/finalizeAwsVirtualKeyDeletion.ts new file mode 100644 index 000000000..2b146da5d --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/finalizeAwsVirtualKeyDeletion.ts @@ -0,0 +1,175 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeJSON, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +export function finalizeAwsVirtualKeyDeletion( + client: AlienCore, + request: operations.FinalizeAwsVirtualKeyDeletionRequest, + options?: RequestOptions, +): APIPromise< + Result< + operations.FinalizeAwsVirtualKeyDeletionResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.FinalizeAwsVirtualKeyDeletionRequest, + options?: RequestOptions, +): Promise< + [ + Result< + operations.FinalizeAwsVirtualKeyDeletionResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.FinalizeAwsVirtualKeyDeletionRequest$outboundSchema.parse( + value, + ), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = encodeJSON("body", payload.RequestBody, { explode: true }); + + const pathParams = { + id: encodeSimple("id", payload.id, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc("/v1/aws-virtual-keys/{id}/finalize-deletion")( + pathParams, + ); + + const headers = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "finalizeAwsVirtualKeyDeletion", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "POST", + baseURL: options?.serverURL, + path: path, + headers: headers, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["401", "404", "409", "4XX", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + operations.FinalizeAwsVirtualKeyDeletionResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, operations.FinalizeAwsVirtualKeyDeletionResponse$inboundSchema), + M.jsonErr([401, 404, 409], errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/getAwsVirtualKey.ts b/client-sdks/platform/typescript/src/funcs/getAwsVirtualKey.ts new file mode 100644 index 000000000..4e4f406b4 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/getAwsVirtualKey.ts @@ -0,0 +1,169 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +export function getAwsVirtualKey( + client: AlienCore, + request: operations.GetAwsVirtualKeyRequest, + options?: RequestOptions, +): APIPromise< + Result< + operations.GetAwsVirtualKeyResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.GetAwsVirtualKeyRequest, + options?: RequestOptions, +): Promise< + [ + Result< + operations.GetAwsVirtualKeyResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => operations.GetAwsVirtualKeyRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = null; + + const pathParams = { + id: encodeSimple("id", payload.id, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc("/v1/aws-virtual-keys/{id}")(pathParams); + + const headers = new Headers(compactMap({ + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "getAwsVirtualKey", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "GET", + baseURL: options?.serverURL, + path: path, + headers: headers, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["401", "404", "4XX", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + operations.GetAwsVirtualKeyResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, operations.GetAwsVirtualKeyResponse$inboundSchema), + M.jsonErr([401, 404], errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/getWorkspaceInvitationPreview.ts b/client-sdks/platform/typescript/src/funcs/getWorkspaceInvitationPreview.ts new file mode 100644 index 000000000..2a1e4718c --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/getWorkspaceInvitationPreview.ts @@ -0,0 +1,174 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +export function getWorkspaceInvitationPreview( + client: AlienCore, + request: operations.GetWorkspaceInvitationPreviewRequest, + options?: RequestOptions, +): APIPromise< + Result< + models.WorkspaceInvitationPreview, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.GetWorkspaceInvitationPreviewRequest, + options?: RequestOptions, +): Promise< + [ + Result< + models.WorkspaceInvitationPreview, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.GetWorkspaceInvitationPreviewRequest$outboundSchema.parse( + value, + ), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = null; + + const pathParams = { + token: encodeSimple("token", payload.token, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc("/v1/invitations/{token}")(pathParams); + + const headers = new Headers(compactMap({ + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "getWorkspaceInvitationPreview", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "GET", + baseURL: options?.serverURL, + path: path, + headers: headers, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["404", "4XX", "500", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + models.WorkspaceInvitationPreview, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, models.WorkspaceInvitationPreview$inboundSchema), + M.jsonErr(404, errors.APIError$inboundSchema), + M.jsonErr(500, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/getWorkspaceInviteLink.ts b/client-sdks/platform/typescript/src/funcs/getWorkspaceInviteLink.ts new file mode 100644 index 000000000..8155fe4dd --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/getWorkspaceInviteLink.ts @@ -0,0 +1,177 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +export function getWorkspaceInviteLink( + client: AlienCore, + request: operations.GetWorkspaceInviteLinkRequest, + options?: RequestOptions, +): APIPromise< + Result< + models.WorkspaceInviteLink, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.GetWorkspaceInviteLinkRequest, + options?: RequestOptions, +): Promise< + [ + Result< + models.WorkspaceInviteLink, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.GetWorkspaceInviteLinkRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = null; + + const pathParams = { + id: encodeSimple("id", payload.id, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc("/v1/workspaces/{id}/invite-link")(pathParams); + + const query = encodeFormQuery({ + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "getWorkspaceInviteLink", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "GET", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["404", "4XX", "500", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + models.WorkspaceInviteLink, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, models.WorkspaceInviteLink$inboundSchema), + M.jsonErr(404, errors.APIError$inboundSchema), + M.jsonErr(500, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/listAwsVirtualKeys.ts b/client-sdks/platform/typescript/src/funcs/listAwsVirtualKeys.ts new file mode 100644 index 000000000..def14a41b --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/listAwsVirtualKeys.ts @@ -0,0 +1,167 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +export function listAwsVirtualKeys( + client: AlienCore, + request: operations.ListAwsVirtualKeysRequest, + options?: RequestOptions, +): APIPromise< + Result< + operations.ListAwsVirtualKeysResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.ListAwsVirtualKeysRequest, + options?: RequestOptions, +): Promise< + [ + Result< + operations.ListAwsVirtualKeysResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => operations.ListAwsVirtualKeysRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = null; + + const path = pathToFunc("/v1/aws-virtual-keys")(); + + const query = encodeFormQuery({ + "project": payload.project, + }); + + const headers = new Headers(compactMap({ + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "listAwsVirtualKeys", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "GET", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["401", "404", "4XX", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + operations.ListAwsVirtualKeysResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, operations.ListAwsVirtualKeysResponse$inboundSchema), + M.jsonErr([401, 404], errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/listWorkspaceInvitations.ts b/client-sdks/platform/typescript/src/funcs/listWorkspaceInvitations.ts new file mode 100644 index 000000000..b81150c3b --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/listWorkspaceInvitations.ts @@ -0,0 +1,176 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +export function listWorkspaceInvitations( + client: AlienCore, + request: operations.ListWorkspaceInvitationsRequest, + options?: RequestOptions, +): APIPromise< + Result< + operations.ListWorkspaceInvitationsResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.ListWorkspaceInvitationsRequest, + options?: RequestOptions, +): Promise< + [ + Result< + operations.ListWorkspaceInvitationsResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.ListWorkspaceInvitationsRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = null; + + const pathParams = { + id: encodeSimple("id", payload.id, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc("/v1/workspaces/{id}/invitations")(pathParams); + + const query = encodeFormQuery({ + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "listWorkspaceInvitations", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "GET", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["404", "4XX", "500", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + operations.ListWorkspaceInvitationsResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, operations.ListWorkspaceInvitationsResponse$inboundSchema), + M.jsonErr(404, errors.APIError$inboundSchema), + M.jsonErr(500, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/managersGenerateManagerBindingToken.ts b/client-sdks/platform/typescript/src/funcs/managersGenerateManagerBindingToken.ts new file mode 100644 index 000000000..b4175bf76 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/managersGenerateManagerBindingToken.ts @@ -0,0 +1,183 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeJSON, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Generate a short-lived deployment-scoped token for resolving opted-in remote bindings through the currently assigned manager. + */ +export function managersGenerateManagerBindingToken( + client: AlienCore, + request: operations.GenerateManagerBindingTokenRequest, + options?: RequestOptions, +): APIPromise< + Result< + models.GenerateManagerBindingTokenResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.GenerateManagerBindingTokenRequest, + options?: RequestOptions, +): Promise< + [ + Result< + models.GenerateManagerBindingTokenResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.GenerateManagerBindingTokenRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = encodeJSON("body", payload.GenerateManagerBindingTokenRequest, { + explode: true, + }); + + const pathParams = { + id: encodeSimple("id", payload.id, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc("/v1/managers/{id}/binding-token")(pathParams); + + const query = encodeFormQuery({ + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "generateManagerBindingToken", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "POST", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["403", "404", "4XX", "503", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + models.GenerateManagerBindingTokenResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, models.GenerateManagerBindingTokenResponse$inboundSchema), + M.jsonErr([403, 404], errors.APIError$inboundSchema), + M.jsonErr(503, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/operationsCreateAccessRequest.ts b/client-sdks/platform/typescript/src/funcs/operationsCreateAccessRequest.ts new file mode 100644 index 000000000..730edc109 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/operationsCreateAccessRequest.ts @@ -0,0 +1,175 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeJSON } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Create a pending access request covering a remediation plan's commands. Awaits the engineer gate before it is queued for the operator. + */ +export function operationsCreateAccessRequest( + client: AlienCore, + request?: operations.CreateAccessRequestRequest | undefined, + options?: RequestOptions, +): APIPromise< + Result< + operations.CreateAccessRequestResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request?: operations.CreateAccessRequestRequest | undefined, + options?: RequestOptions, +): Promise< + [ + Result< + operations.CreateAccessRequestResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.CreateAccessRequestRequest$outboundSchema.optional().parse( + value, + ), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = encodeJSON("body", payload?.RequestBody, { explode: true }); + + const path = pathToFunc("/v1/access-requests")(); + + const query = encodeFormQuery({ + "workspace": payload?.workspace, + }); + + const headers = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "createAccessRequest", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "POST", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["404", "4XX", "500", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + operations.CreateAccessRequestResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(201, operations.CreateAccessRequestResponse$inboundSchema), + M.jsonErr(404, errors.APIError$inboundSchema), + M.jsonErr(500, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/operationsCreateBundleUploadUrl.ts b/client-sdks/platform/typescript/src/funcs/operationsCreateBundleUploadUrl.ts new file mode 100644 index 000000000..dc8df0c58 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/operationsCreateBundleUploadUrl.ts @@ -0,0 +1,179 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeJSON } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Get a presigned S3 URL to upload a custom operations plugin bundle ZIP. Upload the ZIP with a PUT to the returned url (sending the given Content-Type), then call POST /plugins to register it. + */ +export function operationsCreateBundleUploadUrl( + client: AlienCore, + request: operations.CreateOperationsBundleUploadUrlRequest, + options?: RequestOptions, +): APIPromise< + Result< + models.OperationsBundleUploadUrlResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.CreateOperationsBundleUploadUrlRequest, + options?: RequestOptions, +): Promise< + [ + Result< + models.OperationsBundleUploadUrlResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.CreateOperationsBundleUploadUrlRequest$outboundSchema.parse( + value, + ), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = encodeJSON("body", payload.OperationsBundleUploadUrlRequest, { + explode: true, + }); + + const path = pathToFunc("/v1/operations/plugins/upload-url")(); + + const query = encodeFormQuery({ + "project": payload.project, + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "createOperationsBundleUploadUrl", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "POST", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["402", "4XX", "503", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + models.OperationsBundleUploadUrlResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, models.OperationsBundleUploadUrlResponse$inboundSchema), + M.jsonErr(402, errors.APIError$inboundSchema), + M.jsonErr(503, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/operationsGetAccessRequestCoordinates.ts b/client-sdks/platform/typescript/src/funcs/operationsGetAccessRequestCoordinates.ts new file mode 100644 index 000000000..51caff055 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/operationsGetAccessRequestCoordinates.ts @@ -0,0 +1,178 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * The customer's kubectl approve command for a queued access request, or null until the operator has materialized the grant CR and reported its coordinates. Polled by the Slack handler to update the access-plan card. + */ +export function operationsGetAccessRequestCoordinates( + client: AlienCore, + request: operations.GetAccessRequestCoordinatesRequest, + options?: RequestOptions, +): APIPromise< + Result< + operations.GetAccessRequestCoordinatesResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.GetAccessRequestCoordinatesRequest, + options?: RequestOptions, +): Promise< + [ + Result< + operations.GetAccessRequestCoordinatesResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.GetAccessRequestCoordinatesRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = null; + + const pathParams = { + id: encodeSimple("id", payload.id, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc("/v1/access-requests/{id}/coordinates")(pathParams); + + const query = encodeFormQuery({ + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "getAccessRequestCoordinates", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "GET", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["404", "4XX", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + operations.GetAccessRequestCoordinatesResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, operations.GetAccessRequestCoordinatesResponse$inboundSchema), + M.jsonErr(404, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/operationsGetPolicy.ts b/client-sdks/platform/typescript/src/funcs/operationsGetPolicy.ts new file mode 100644 index 000000000..f659ebe21 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/operationsGetPolicy.ts @@ -0,0 +1,173 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Get a project's per-command approval policy. Mirrors what the operator enforces: `plugin/operation` / `plugin/*` / `*` patterns → auto | manual. + */ +export function operationsGetPolicy( + client: AlienCore, + request: operations.GetOperationsPolicyRequest, + options?: RequestOptions, +): APIPromise< + Result< + models.OperationsPolicyResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.GetOperationsPolicyRequest, + options?: RequestOptions, +): Promise< + [ + Result< + models.OperationsPolicyResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.GetOperationsPolicyRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = null; + + const path = pathToFunc("/v1/operations/policy")(); + + const query = encodeFormQuery({ + "project": payload.project, + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "getOperationsPolicy", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "GET", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["4XX", "500", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + models.OperationsPolicyResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, models.OperationsPolicyResponse$inboundSchema), + M.jsonErr(500, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/operationsInvoke.ts b/client-sdks/platform/typescript/src/funcs/operationsInvoke.ts new file mode 100644 index 000000000..e11f563b0 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/operationsInvoke.ts @@ -0,0 +1,176 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeJSON } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Invoke a plugin operation against a deployment. Honors the project's per-command approval policy. + */ +export function operationsInvoke( + client: AlienCore, + request: operations.InvokeOperationRequest, + options?: RequestOptions, +): APIPromise< + Result< + models.InvokeOperationResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.InvokeOperationRequest, + options?: RequestOptions, +): Promise< + [ + Result< + models.InvokeOperationResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => operations.InvokeOperationRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = encodeJSON("body", payload.InvokeOperationRequest, { + explode: true, + }); + + const path = pathToFunc("/v1/operations/invoke")(); + + const query = encodeFormQuery({ + "project": payload.project, + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "invokeOperation", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "POST", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["402", "403", "404", "4XX", "500", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + models.InvokeOperationResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, models.InvokeOperationResponse$inboundSchema), + M.jsonErr([402, 403, 404], errors.APIError$inboundSchema), + M.jsonErr(500, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/operationsListPlugins.ts b/client-sdks/platform/typescript/src/funcs/operationsListPlugins.ts new file mode 100644 index 000000000..703f47db5 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/operationsListPlugins.ts @@ -0,0 +1,173 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * List available operations plugins (builtin + custom) for a project, with their operations and risk tiers. + */ +export function operationsListPlugins( + client: AlienCore, + request: operations.ListOperationsPluginsRequest, + options?: RequestOptions, +): APIPromise< + Result< + models.ListOperationsPluginsResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.ListOperationsPluginsRequest, + options?: RequestOptions, +): Promise< + [ + Result< + models.ListOperationsPluginsResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.ListOperationsPluginsRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = null; + + const path = pathToFunc("/v1/operations/plugins")(); + + const query = encodeFormQuery({ + "project": payload.project, + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "listOperationsPlugins", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "GET", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["4XX", "500", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + models.ListOperationsPluginsResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, models.ListOperationsPluginsResponse$inboundSchema), + M.jsonErr(500, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/operationsPublishPlugin.ts b/client-sdks/platform/typescript/src/funcs/operationsPublishPlugin.ts new file mode 100644 index 000000000..1198604d3 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/operationsPublishPlugin.ts @@ -0,0 +1,177 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeJSON } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Register a custom operations plugin whose bundle ZIP has already been uploaded to S3 (see POST /plugins/upload-url). Replaces any existing plugin of the same name in that project. New custom plugins are enabled by default. + */ +export function operationsPublishPlugin( + client: AlienCore, + request: operations.PublishOperationsPluginRequest, + options?: RequestOptions, +): APIPromise< + Result< + models.PublishOperationsPluginResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.PublishOperationsPluginRequest, + options?: RequestOptions, +): Promise< + [ + Result< + models.PublishOperationsPluginResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.PublishOperationsPluginRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = encodeJSON("body", payload.PublishOperationsPluginRequest, { + explode: true, + }); + + const path = pathToFunc("/v1/operations/plugins")(); + + const query = encodeFormQuery({ + "project": payload.project, + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "publishOperationsPlugin", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "POST", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["400", "402", "4XX", "500", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + models.PublishOperationsPluginResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(201, models.PublishOperationsPluginResponse$inboundSchema), + M.jsonErr([400, 402], errors.APIError$inboundSchema), + M.jsonErr(500, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/operationsQueueAccessRequest.ts b/client-sdks/platform/typescript/src/funcs/operationsQueueAccessRequest.ts new file mode 100644 index 000000000..e702d3167 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/operationsQueueAccessRequest.ts @@ -0,0 +1,177 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Engineer gate — approve a pending access request, queuing it for the operator to materialize. Records who queued it. + */ +export function operationsQueueAccessRequest( + client: AlienCore, + request: operations.QueueAccessRequestRequest, + options?: RequestOptions, +): APIPromise< + Result< + operations.QueueAccessRequestResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.QueueAccessRequestRequest, + options?: RequestOptions, +): Promise< + [ + Result< + operations.QueueAccessRequestResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => operations.QueueAccessRequestRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = null; + + const pathParams = { + id: encodeSimple("id", payload.id, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc("/v1/access-requests/{id}/queue")(pathParams); + + const query = encodeFormQuery({ + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "queueAccessRequest", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "POST", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["404", "409", "4XX", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + operations.QueueAccessRequestResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, operations.QueueAccessRequestResponse$inboundSchema), + M.jsonErr([404, 409], errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/operationsSetPluginEnabled.ts b/client-sdks/platform/typescript/src/funcs/operationsSetPluginEnabled.ts new file mode 100644 index 000000000..ffc23af7d --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/operationsSetPluginEnabled.ts @@ -0,0 +1,184 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeJSON, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Enable or disable an operations plugin (builtin or custom) for a project. Only enabled plugins are baked into the operator image and can be invoked. + */ +export function operationsSetPluginEnabled( + client: AlienCore, + request: operations.SetOperationsPluginEnabledRequest, + options?: RequestOptions, +): APIPromise< + Result< + models.SetOperationsPluginEnabledResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.SetOperationsPluginEnabledRequest, + options?: RequestOptions, +): Promise< + [ + Result< + models.SetOperationsPluginEnabledResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.SetOperationsPluginEnabledRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = encodeJSON("body", payload.SetOperationsPluginEnabledRequest, { + explode: true, + }); + + const pathParams = { + name: encodeSimple("name", payload.name, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc("/v1/operations/plugins/{name}/enabled")(pathParams); + + const query = encodeFormQuery({ + "project": payload.project, + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "setOperationsPluginEnabled", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "PATCH", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["404", "4XX", "500", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + models.SetOperationsPluginEnabledResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, models.SetOperationsPluginEnabledResponse$inboundSchema), + M.jsonErr(404, errors.APIError$inboundSchema), + M.jsonErr(500, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/operationsUpdatePolicy.ts b/client-sdks/platform/typescript/src/funcs/operationsUpdatePolicy.ts new file mode 100644 index 000000000..a3e5083a9 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/operationsUpdatePolicy.ts @@ -0,0 +1,177 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeJSON } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Replace a project's per-command approval policy (full rule set). Patterns are `plugin/operation`, `plugin/*`, or `*`; each maps to auto | manual. + */ +export function operationsUpdatePolicy( + client: AlienCore, + request: operations.UpdateOperationsPolicyRequest, + options?: RequestOptions, +): APIPromise< + Result< + models.OperationsPolicyResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.UpdateOperationsPolicyRequest, + options?: RequestOptions, +): Promise< + [ + Result< + models.OperationsPolicyResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.UpdateOperationsPolicyRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = encodeJSON("body", payload.UpdateOperationsPolicyRequest, { + explode: true, + }); + + const path = pathToFunc("/v1/operations/policy")(); + + const query = encodeFormQuery({ + "project": payload.project, + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "updateOperationsPolicy", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "PUT", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["400", "4XX", "500", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + models.OperationsPolicyResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, models.OperationsPolicyResponse$inboundSchema), + M.jsonErr(400, errors.APIError$inboundSchema), + M.jsonErr(500, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/projectsConfigureBuckets.ts b/client-sdks/platform/typescript/src/funcs/projectsConfigureBuckets.ts new file mode 100644 index 000000000..1b846d323 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/projectsConfigureBuckets.ts @@ -0,0 +1,183 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeJSON, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Enable buckets without requiring a project Release. + */ +export function projectsConfigureBuckets( + client: AlienCore, + request: operations.ConfigureProjectBucketsRequest, + options?: RequestOptions, +): APIPromise< + Result< + models.CapabilityMaterialization, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.ConfigureProjectBucketsRequest, + options?: RequestOptions, +): Promise< + [ + Result< + models.CapabilityMaterialization, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.ConfigureProjectBucketsRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = encodeJSON("body", payload.RequestBody, { explode: true }); + + const pathParams = { + idOrName: encodeSimple("idOrName", payload.idOrName, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc( + "/v1/projects/{idOrName}/project-capabilities/buckets", + )(pathParams); + + const query = encodeFormQuery({ + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "configureProjectBuckets", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "PUT", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["403", "404", "4XX", "500", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + models.CapabilityMaterialization, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, models.CapabilityMaterialization$inboundSchema), + M.jsonErr([403, 404], errors.APIError$inboundSchema), + M.jsonErr(500, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/projectsConfigureCustomerKey.ts b/client-sdks/platform/typescript/src/funcs/projectsConfigureCustomerKey.ts deleted file mode 100644 index 316f07a55..000000000 --- a/client-sdks/platform/typescript/src/funcs/projectsConfigureCustomerKey.ts +++ /dev/null @@ -1,183 +0,0 @@ -/* - * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - */ - -import { AlienCore } from "../core.js"; -import { encodeFormQuery, encodeJSON, encodeSimple } from "../lib/encodings.js"; -import * as M from "../lib/matchers.js"; -import { compactMap } from "../lib/primitives.js"; -import { safeParse } from "../lib/schemas.js"; -import { RequestOptions } from "../lib/sdks.js"; -import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; -import { pathToFunc } from "../lib/url.js"; -import { AlienError } from "../models/errors/alienerror.js"; -import { - ConnectionError, - InvalidRequestError, - RequestAbortedError, - RequestTimeoutError, - UnexpectedClientError, -} from "../models/errors/httpclienterrors.js"; -import * as errors from "../models/errors/index.js"; -import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; -import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; -import * as models from "../models/index.js"; -import * as operations from "../models/operations/index.js"; -import { APICall, APIPromise } from "../types/async.js"; -import { Result } from "../types/fp.js"; - -/** - * Enable customer-owned application encryption without requiring an application Release. - */ -export function projectsConfigureCustomerKey( - client: AlienCore, - request: operations.ConfigureProjectCustomerKeyRequest, - options?: RequestOptions, -): APIPromise< - Result< - models.CustomerConnectionMaterialization, - | errors.APIError - | AlienError - | ResponseValidationError - | ConnectionError - | RequestAbortedError - | RequestTimeoutError - | InvalidRequestError - | UnexpectedClientError - | SDKValidationError - > -> { - return new APIPromise($do( - client, - request, - options, - )); -} - -async function $do( - client: AlienCore, - request: operations.ConfigureProjectCustomerKeyRequest, - options?: RequestOptions, -): Promise< - [ - Result< - models.CustomerConnectionMaterialization, - | errors.APIError - | AlienError - | ResponseValidationError - | ConnectionError - | RequestAbortedError - | RequestTimeoutError - | InvalidRequestError - | UnexpectedClientError - | SDKValidationError - >, - APICall, - ] -> { - const parsed = safeParse( - request, - (value) => - operations.ConfigureProjectCustomerKeyRequest$outboundSchema.parse(value), - "Input validation failed", - ); - if (!parsed.ok) { - return [parsed, { status: "invalid" }]; - } - const payload = parsed.value; - const body = encodeJSON("body", payload.RequestBody, { explode: true }); - - const pathParams = { - idOrName: encodeSimple("idOrName", payload.idOrName, { - explode: false, - charEncoding: "percent", - }), - }; - - const path = pathToFunc("/v1/projects/{idOrName}/customer-connections/keys")( - pathParams, - ); - - const query = encodeFormQuery({ - "workspace": payload.workspace, - }); - - const headers = new Headers(compactMap({ - "Content-Type": "application/json", - Accept: "application/json", - })); - - const secConfig = await extractSecurity(client._options.apiKey); - const securityInput = secConfig == null ? {} : { apiKey: secConfig }; - const requestSecurity = resolveGlobalSecurity(securityInput); - - const context = { - options: client._options, - baseURL: options?.serverURL ?? client._baseURL ?? "", - operationID: "configureProjectCustomerKey", - oAuth2Scopes: null, - - resolvedSecurity: requestSecurity, - - securitySource: client._options.apiKey, - retryConfig: options?.retries - || client._options.retryConfig - || { strategy: "none" }, - retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], - }; - - const requestRes = client._createRequest(context, { - security: requestSecurity, - method: "PUT", - baseURL: options?.serverURL, - path: path, - headers: headers, - query: query, - body: body, - userAgent: client._options.userAgent, - timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, - }, options); - if (!requestRes.ok) { - return [requestRes, { status: "invalid" }]; - } - const req = requestRes.value; - - const doResult = await client._do(req, { - context, - errorCodes: ["403", "404", "4XX", "500", "5XX"], - retryConfig: context.retryConfig, - retryCodes: context.retryCodes, - }); - if (!doResult.ok) { - return [doResult, { status: "request-error", request: req }]; - } - const response = doResult.value; - - const responseFields = { - HttpMeta: { Response: response, Request: req }, - }; - - const [result] = await M.match< - models.CustomerConnectionMaterialization, - | errors.APIError - | AlienError - | ResponseValidationError - | ConnectionError - | RequestAbortedError - | RequestTimeoutError - | InvalidRequestError - | UnexpectedClientError - | SDKValidationError - >( - M.json(200, models.CustomerConnectionMaterialization$inboundSchema), - M.jsonErr([403, 404], errors.APIError$inboundSchema), - M.jsonErr(500, errors.APIError$inboundSchema), - M.fail("4XX"), - M.fail("5XX"), - )(response, req, { extraFields: responseFields }); - if (!result.ok) { - return [result, { status: "complete", request: req, response }]; - } - - return [result, { status: "complete", request: req, response }]; -} diff --git a/client-sdks/platform/typescript/src/funcs/projectsConfigureCustomerModels.ts b/client-sdks/platform/typescript/src/funcs/projectsConfigureCustomerModels.ts deleted file mode 100644 index 1867ab809..000000000 --- a/client-sdks/platform/typescript/src/funcs/projectsConfigureCustomerModels.ts +++ /dev/null @@ -1,187 +0,0 @@ -/* - * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - */ - -import { AlienCore } from "../core.js"; -import { encodeFormQuery, encodeJSON, encodeSimple } from "../lib/encodings.js"; -import * as M from "../lib/matchers.js"; -import { compactMap } from "../lib/primitives.js"; -import { safeParse } from "../lib/schemas.js"; -import { RequestOptions } from "../lib/sdks.js"; -import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; -import { pathToFunc } from "../lib/url.js"; -import { AlienError } from "../models/errors/alienerror.js"; -import { - ConnectionError, - InvalidRequestError, - RequestAbortedError, - RequestTimeoutError, - UnexpectedClientError, -} from "../models/errors/httpclienterrors.js"; -import * as errors from "../models/errors/index.js"; -import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; -import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; -import * as models from "../models/index.js"; -import * as operations from "../models/operations/index.js"; -import { APICall, APIPromise } from "../types/async.js"; -import { Result } from "../types/fp.js"; - -/** - * Configure customer-owned model providers without requiring an application Release. - */ -export function projectsConfigureCustomerModels( - client: AlienCore, - request: operations.ConfigureProjectCustomerModelsRequest, - options?: RequestOptions, -): APIPromise< - Result< - models.CustomerConnectionMaterialization, - | errors.APIError - | AlienError - | ResponseValidationError - | ConnectionError - | RequestAbortedError - | RequestTimeoutError - | InvalidRequestError - | UnexpectedClientError - | SDKValidationError - > -> { - return new APIPromise($do( - client, - request, - options, - )); -} - -async function $do( - client: AlienCore, - request: operations.ConfigureProjectCustomerModelsRequest, - options?: RequestOptions, -): Promise< - [ - Result< - models.CustomerConnectionMaterialization, - | errors.APIError - | AlienError - | ResponseValidationError - | ConnectionError - | RequestAbortedError - | RequestTimeoutError - | InvalidRequestError - | UnexpectedClientError - | SDKValidationError - >, - APICall, - ] -> { - const parsed = safeParse( - request, - (value) => - operations.ConfigureProjectCustomerModelsRequest$outboundSchema.parse( - value, - ), - "Input validation failed", - ); - if (!parsed.ok) { - return [parsed, { status: "invalid" }]; - } - const payload = parsed.value; - const body = encodeJSON("body", payload.ConfigureCustomerModelsRequest, { - explode: true, - }); - - const pathParams = { - idOrName: encodeSimple("idOrName", payload.idOrName, { - explode: false, - charEncoding: "percent", - }), - }; - - const path = pathToFunc( - "/v1/projects/{idOrName}/customer-connections/models", - )(pathParams); - - const query = encodeFormQuery({ - "workspace": payload.workspace, - }); - - const headers = new Headers(compactMap({ - "Content-Type": "application/json", - Accept: "application/json", - })); - - const secConfig = await extractSecurity(client._options.apiKey); - const securityInput = secConfig == null ? {} : { apiKey: secConfig }; - const requestSecurity = resolveGlobalSecurity(securityInput); - - const context = { - options: client._options, - baseURL: options?.serverURL ?? client._baseURL ?? "", - operationID: "configureProjectCustomerModels", - oAuth2Scopes: null, - - resolvedSecurity: requestSecurity, - - securitySource: client._options.apiKey, - retryConfig: options?.retries - || client._options.retryConfig - || { strategy: "none" }, - retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], - }; - - const requestRes = client._createRequest(context, { - security: requestSecurity, - method: "PUT", - baseURL: options?.serverURL, - path: path, - headers: headers, - query: query, - body: body, - userAgent: client._options.userAgent, - timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, - }, options); - if (!requestRes.ok) { - return [requestRes, { status: "invalid" }]; - } - const req = requestRes.value; - - const doResult = await client._do(req, { - context, - errorCodes: ["403", "404", "4XX", "500", "5XX"], - retryConfig: context.retryConfig, - retryCodes: context.retryCodes, - }); - if (!doResult.ok) { - return [doResult, { status: "request-error", request: req }]; - } - const response = doResult.value; - - const responseFields = { - HttpMeta: { Response: response, Request: req }, - }; - - const [result] = await M.match< - models.CustomerConnectionMaterialization, - | errors.APIError - | AlienError - | ResponseValidationError - | ConnectionError - | RequestAbortedError - | RequestTimeoutError - | InvalidRequestError - | UnexpectedClientError - | SDKValidationError - >( - M.json(200, models.CustomerConnectionMaterialization$inboundSchema), - M.jsonErr([403, 404], errors.APIError$inboundSchema), - M.jsonErr(500, errors.APIError$inboundSchema), - M.fail("4XX"), - M.fail("5XX"), - )(response, req, { extraFields: responseFields }); - if (!result.ok) { - return [result, { status: "complete", request: req, response }]; - } - - return [result, { status: "complete", request: req, response }]; -} diff --git a/client-sdks/platform/typescript/src/funcs/projectsConfigureDeployments.ts b/client-sdks/platform/typescript/src/funcs/projectsConfigureDeployments.ts new file mode 100644 index 000000000..88155f0fa --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/projectsConfigureDeployments.ts @@ -0,0 +1,183 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeJSON, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Enable deployments for a Project. + */ +export function projectsConfigureDeployments( + client: AlienCore, + request: operations.ConfigureProjectDeploymentsRequest, + options?: RequestOptions, +): APIPromise< + Result< + models.ProjectCapabilities, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.ConfigureProjectDeploymentsRequest, + options?: RequestOptions, +): Promise< + [ + Result< + models.ProjectCapabilities, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.ConfigureProjectDeploymentsRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = encodeJSON("body", payload.RequestBody, { explode: true }); + + const pathParams = { + idOrName: encodeSimple("idOrName", payload.idOrName, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc( + "/v1/projects/{idOrName}/project-capabilities/deployments", + )(pathParams); + + const query = encodeFormQuery({ + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "configureProjectDeployments", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "PUT", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["403", "404", "4XX", "500", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + models.ProjectCapabilities, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, models.ProjectCapabilities$inboundSchema), + M.jsonErr([403, 404], errors.APIError$inboundSchema), + M.jsonErr(500, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/projectsConfigureKeys.ts b/client-sdks/platform/typescript/src/funcs/projectsConfigureKeys.ts new file mode 100644 index 000000000..923139ba1 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/projectsConfigureKeys.ts @@ -0,0 +1,183 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeJSON, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Enable customer-owned application encryption without requiring an application Release. + */ +export function projectsConfigureKeys( + client: AlienCore, + request: operations.ConfigureProjectKeysRequest, + options?: RequestOptions, +): APIPromise< + Result< + models.CapabilityMaterialization, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.ConfigureProjectKeysRequest, + options?: RequestOptions, +): Promise< + [ + Result< + models.CapabilityMaterialization, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.ConfigureProjectKeysRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = encodeJSON("body", payload.RequestBody, { explode: true }); + + const pathParams = { + idOrName: encodeSimple("idOrName", payload.idOrName, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc("/v1/projects/{idOrName}/project-capabilities/keys")( + pathParams, + ); + + const query = encodeFormQuery({ + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "configureProjectKeys", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "PUT", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["403", "404", "4XX", "500", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + models.CapabilityMaterialization, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, models.CapabilityMaterialization$inboundSchema), + M.jsonErr([403, 404], errors.APIError$inboundSchema), + M.jsonErr(500, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/projectsConfigureModels.ts b/client-sdks/platform/typescript/src/funcs/projectsConfigureModels.ts new file mode 100644 index 000000000..44b6acca5 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/projectsConfigureModels.ts @@ -0,0 +1,185 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeJSON, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Configure customer-owned model providers without requiring an application Release. + */ +export function projectsConfigureModels( + client: AlienCore, + request: operations.ConfigureProjectModelsRequest, + options?: RequestOptions, +): APIPromise< + Result< + models.CapabilityMaterialization, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.ConfigureProjectModelsRequest, + options?: RequestOptions, +): Promise< + [ + Result< + models.CapabilityMaterialization, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.ConfigureProjectModelsRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = encodeJSON("body", payload.ConfigureModelsRequest, { + explode: true, + }); + + const pathParams = { + idOrName: encodeSimple("idOrName", payload.idOrName, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc( + "/v1/projects/{idOrName}/project-capabilities/models", + )(pathParams); + + const query = encodeFormQuery({ + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "configureProjectModels", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "PUT", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["403", "404", "4XX", "500", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + models.CapabilityMaterialization, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, models.CapabilityMaterialization$inboundSchema), + M.jsonErr([403, 404], errors.APIError$inboundSchema), + M.jsonErr(500, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/projectsConfigureRegistry.ts b/client-sdks/platform/typescript/src/funcs/projectsConfigureRegistry.ts new file mode 100644 index 000000000..18d783f14 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/projectsConfigureRegistry.ts @@ -0,0 +1,183 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeJSON, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Enable customer-owned container registries without requiring an application Release. + */ +export function projectsConfigureRegistry( + client: AlienCore, + request: operations.ConfigureProjectRegistryRequest, + options?: RequestOptions, +): APIPromise< + Result< + models.CapabilityMaterialization, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.ConfigureProjectRegistryRequest, + options?: RequestOptions, +): Promise< + [ + Result< + models.CapabilityMaterialization, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.ConfigureProjectRegistryRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = encodeJSON("body", payload.RequestBody, { explode: true }); + + const pathParams = { + idOrName: encodeSimple("idOrName", payload.idOrName, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc( + "/v1/projects/{idOrName}/project-capabilities/registry", + )(pathParams); + + const query = encodeFormQuery({ + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "configureProjectRegistry", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "PUT", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["403", "404", "4XX", "500", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + models.CapabilityMaterialization, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, models.CapabilityMaterialization$inboundSchema), + M.jsonErr([403, 404], errors.APIError$inboundSchema), + M.jsonErr(500, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/projectsConfigureSource.ts b/client-sdks/platform/typescript/src/funcs/projectsConfigureSource.ts new file mode 100644 index 000000000..664cc2857 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/projectsConfigureSource.ts @@ -0,0 +1,180 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeJSON, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Connect a GitHub repository or Alien template to an existing project and configure its release workflow. + */ +export function projectsConfigureSource( + client: AlienCore, + request: operations.ConfigureProjectSourceRequest, + options?: RequestOptions, +): APIPromise< + Result< + operations.ConfigureProjectSourceResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.ConfigureProjectSourceRequest, + options?: RequestOptions, +): Promise< + [ + Result< + operations.ConfigureProjectSourceResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.ConfigureProjectSourceRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = encodeJSON("body", payload.RequestBody, { explode: true }); + + const pathParams = { + idOrName: encodeSimple("idOrName", payload.idOrName, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc("/v1/projects/{idOrName}/source")(pathParams); + + const query = encodeFormQuery({ + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "configureProjectSource", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "POST", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["400", "403", "404", "4XX", "500", "503", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + operations.ConfigureProjectSourceResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, operations.ConfigureProjectSourceResponse$inboundSchema), + M.jsonErr([400, 403, 404], errors.APIError$inboundSchema), + M.jsonErr([500, 503], errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/projectsGetActiveRelease.ts b/client-sdks/platform/typescript/src/funcs/projectsGetActiveRelease.ts index ead8e6b01..778753685 100644 --- a/client-sdks/platform/typescript/src/funcs/projectsGetActiveRelease.ts +++ b/client-sdks/platform/typescript/src/funcs/projectsGetActiveRelease.ts @@ -27,7 +27,7 @@ import { APICall, APIPromise } from "../types/async.js"; import { Result } from "../types/fp.js"; /** - * 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. + * Get the production channel's current release. When deploymentId is provided, returns that deployment's effective release: its pin, or its followed channel's current release. */ export function projectsGetActiveRelease( client: AlienCore, diff --git a/client-sdks/platform/typescript/src/funcs/projectsGetAiUsage.ts b/client-sdks/platform/typescript/src/funcs/projectsGetAiUsage.ts new file mode 100644 index 000000000..c35051c88 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/projectsGetAiUsage.ts @@ -0,0 +1,176 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +export function projectsGetAiUsage( + client: AlienCore, + request: operations.GetProjectAiUsageRequest, + options?: RequestOptions, +): APIPromise< + Result< + operations.GetProjectAiUsageResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.GetProjectAiUsageRequest, + options?: RequestOptions, +): Promise< + [ + Result< + operations.GetProjectAiUsageResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => operations.GetProjectAiUsageRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = null; + + const pathParams = { + idOrName: encodeSimple("idOrName", payload.idOrName, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc("/v1/projects/{idOrName}/ai-metrics")(pathParams); + + const query = encodeFormQuery({ + "range": payload.range, + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "getProjectAiUsage", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "GET", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["403", "404", "4XX", "500", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + operations.GetProjectAiUsageResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, operations.GetProjectAiUsageResponse$inboundSchema), + M.jsonErr([403, 404], errors.APIError$inboundSchema), + M.jsonErr(500, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/projectsGetCapabilityOverview.ts b/client-sdks/platform/typescript/src/funcs/projectsGetCapabilityOverview.ts new file mode 100644 index 000000000..ef8cd3d34 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/projectsGetCapabilityOverview.ts @@ -0,0 +1,184 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Get safe, server-derived capability status for a Project. + */ +export function projectsGetCapabilityOverview( + client: AlienCore, + request: operations.GetProjectCapabilityOverviewRequest, + options?: RequestOptions, +): APIPromise< + Result< + models.ProjectCapabilityOverview, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.GetProjectCapabilityOverviewRequest, + options?: RequestOptions, +): Promise< + [ + Result< + models.ProjectCapabilityOverview, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.GetProjectCapabilityOverviewRequest$outboundSchema.parse( + value, + ), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = null; + + const pathParams = { + idOrName: encodeSimple("idOrName", payload.idOrName, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc( + "/v1/projects/{idOrName}/project-capabilities/overview", + )(pathParams); + + const query = encodeFormQuery({ + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "getProjectCapabilityOverview", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "GET", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["403", "404", "4XX", "500", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + models.ProjectCapabilityOverview, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, models.ProjectCapabilityOverview$inboundSchema), + M.jsonErr([403, 404], errors.APIError$inboundSchema), + M.jsonErr(500, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/projectsSetCapabilities.ts b/client-sdks/platform/typescript/src/funcs/projectsSetCapabilities.ts new file mode 100644 index 000000000..23c4e7b19 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/projectsSetCapabilities.ts @@ -0,0 +1,183 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeJSON, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Set the capabilities offered by a Project. Removing a capability prevents new setup without deleting existing customer resources. + */ +export function projectsSetCapabilities( + client: AlienCore, + request: operations.SetProjectCapabilitiesRequest, + options?: RequestOptions, +): APIPromise< + Result< + models.ProjectCapabilities, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.SetProjectCapabilitiesRequest, + options?: RequestOptions, +): Promise< + [ + Result< + models.ProjectCapabilities, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.SetProjectCapabilitiesRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = encodeJSON("body", payload.RequestBody, { explode: true }); + + const pathParams = { + idOrName: encodeSimple("idOrName", payload.idOrName, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc("/v1/projects/{idOrName}/project-capabilities")( + pathParams, + ); + + const query = encodeFormQuery({ + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "setProjectCapabilities", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "PUT", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["403", "404", "4XX", "500", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + models.ProjectCapabilities, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, models.ProjectCapabilities$inboundSchema), + M.jsonErr([403, 404], errors.APIError$inboundSchema), + M.jsonErr(500, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/releaseChannelsCreate.ts b/client-sdks/platform/typescript/src/funcs/releaseChannelsCreate.ts new file mode 100644 index 000000000..ee36dd7e3 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/releaseChannelsCreate.ts @@ -0,0 +1,177 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeJSON } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Create a release channel + * + * @remarks + * Create a release channel for a project. + */ +export function releaseChannelsCreate( + client: AlienCore, + request: operations.CreateReleaseChannelRequest, + options?: RequestOptions, +): APIPromise< + Result< + models.ReleaseChannel, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.CreateReleaseChannelRequest, + options?: RequestOptions, +): Promise< + [ + Result< + models.ReleaseChannel, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.CreateReleaseChannelRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = encodeJSON("body", payload.RequestBody, { explode: true }); + + const path = pathToFunc("/v1/release-channels")(); + + const query = encodeFormQuery({ + "project": payload.project, + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "createReleaseChannel", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "POST", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["400", "404", "4XX", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + models.ReleaseChannel, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(201, models.ReleaseChannel$inboundSchema), + M.jsonErr([400, 404], errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/releaseChannelsDelete.ts b/client-sdks/platform/typescript/src/funcs/releaseChannelsDelete.ts new file mode 100644 index 000000000..47e301edf --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/releaseChannelsDelete.ts @@ -0,0 +1,183 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Delete a release channel + * + * @remarks + * Delete a release channel from a project. + */ +export function releaseChannelsDelete( + client: AlienCore, + request: operations.DeleteReleaseChannelRequest, + options?: RequestOptions, +): APIPromise< + Result< + void, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.DeleteReleaseChannelRequest, + options?: RequestOptions, +): Promise< + [ + Result< + void, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.DeleteReleaseChannelRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = null; + + const pathParams = { + name: encodeSimple("name", payload.name, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc("/v1/release-channels/{name}")(pathParams); + + const query = encodeFormQuery({ + "project": payload.project, + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "deleteReleaseChannel", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "DELETE", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["400", "404", "409", "4XX", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + void, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.nil(204, z.void()), + M.jsonErr([400, 404, 409], errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/releaseChannelsList.ts b/client-sdks/platform/typescript/src/funcs/releaseChannelsList.ts new file mode 100644 index 000000000..508137b7a --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/releaseChannelsList.ts @@ -0,0 +1,175 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * List release channels + * + * @remarks + * List the release channels configured for a project. + */ +export function releaseChannelsList( + client: AlienCore, + request: operations.ListReleaseChannelsRequest, + options?: RequestOptions, +): APIPromise< + Result< + operations.ListReleaseChannelsResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.ListReleaseChannelsRequest, + options?: RequestOptions, +): Promise< + [ + Result< + operations.ListReleaseChannelsResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.ListReleaseChannelsRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = null; + + const path = pathToFunc("/v1/release-channels")(); + + const query = encodeFormQuery({ + "project": payload.project, + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "listReleaseChannels", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "GET", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["404", "4XX", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + operations.ListReleaseChannelsResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, operations.ListReleaseChannelsResponse$inboundSchema), + M.jsonErr(404, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/releasesList.ts b/client-sdks/platform/typescript/src/funcs/releasesList.ts index 945fb175c..99c98bd89 100644 --- a/client-sdks/platform/typescript/src/funcs/releasesList.ts +++ b/client-sdks/platform/typescript/src/funcs/releasesList.ts @@ -89,8 +89,10 @@ async function $do( const path = pathToFunc("/v1/releases")(); const query = encodeFormQuery({ + "allChannels": payload?.allChannels, "author": payload?.author, "branch": payload?.branch, + "channel": payload?.channel, "createdAfter": payload?.createdAfter, "createdBefore": payload?.createdBefore, "cursor": payload?.cursor, diff --git a/client-sdks/platform/typescript/src/funcs/releasesListDeployments.ts b/client-sdks/platform/typescript/src/funcs/releasesListDeployments.ts new file mode 100644 index 000000000..249b7f105 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/releasesListDeployments.ts @@ -0,0 +1,184 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * List the project's deployments with their rollout state relative to this release. + */ +export function releasesListDeployments( + client: AlienCore, + request: operations.ListReleaseDeploymentsRequest, + options?: RequestOptions, +): APIPromise< + Result< + models.ReleaseDeploymentsResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.ListReleaseDeploymentsRequest, + options?: RequestOptions, +): Promise< + [ + Result< + models.ReleaseDeploymentsResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.ListReleaseDeploymentsRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = null; + + const pathParams = { + id: encodeSimple("id", payload.id, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc("/v1/releases/{id}/deployments")(pathParams); + + const query = encodeFormQuery({ + "cursor": payload.cursor, + "deploymentGroup": payload.deploymentGroup, + "limit": payload.limit, + "state": payload.state, + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "listReleaseDeployments", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "GET", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["404", "4XX", "500", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + models.ReleaseDeploymentsResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, models.ReleaseDeploymentsResponse$inboundSchema), + M.jsonErr(404, errors.APIError$inboundSchema), + M.jsonErr(500, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/releasesPromote.ts b/client-sdks/platform/typescript/src/funcs/releasesPromote.ts new file mode 100644 index 000000000..666313241 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/releasesPromote.ts @@ -0,0 +1,177 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeJSON, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +export function releasesPromote( + client: AlienCore, + request: operations.PromoteReleaseRequest, + options?: RequestOptions, +): APIPromise< + Result< + models.ReleaseChannel, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.PromoteReleaseRequest, + options?: RequestOptions, +): Promise< + [ + Result< + models.ReleaseChannel, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => operations.PromoteReleaseRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = encodeJSON("body", payload.RequestBody, { explode: true }); + + const pathParams = { + name: encodeSimple("name", payload.name, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc("/v1/release-channels/{name}/promote")(pathParams); + + const query = encodeFormQuery({ + "project": payload.project, + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "promoteRelease", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "POST", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["404", "409", "4XX", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + models.ReleaseChannel, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, models.ReleaseChannel$inboundSchema), + M.jsonErr([404, 409], errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/remoteBindingsCreateExternalAccess.ts b/client-sdks/platform/typescript/src/funcs/remoteBindingsCreateExternalAccess.ts new file mode 100644 index 000000000..bc1f72450 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/remoteBindingsCreateExternalAccess.ts @@ -0,0 +1,190 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeJSON, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Create short-lived Remote Bindings access for a external resource + * + * @remarks + * Selects a connected external resource by Project and external ID, then returns a short-lived deployment-scoped Manager capability. The caller never receives the external cloud credentials from Platform. + */ +export function remoteBindingsCreateExternalAccess( + client: AlienCore, + request: operations.CreateRemoteBindingsExternalAccessRequest, + options?: RequestOptions, +): APIPromise< + Result< + models.RemoteBindingsExternalAccessResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.CreateRemoteBindingsExternalAccessRequest, + options?: RequestOptions, +): Promise< + [ + Result< + models.RemoteBindingsExternalAccessResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.CreateRemoteBindingsExternalAccessRequest$outboundSchema.parse( + value, + ), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = encodeJSON("body", payload.RemoteBindingsExternalAccessRequest, { + explode: true, + }); + + const pathParams = { + idOrName: encodeSimple("idOrName", payload.idOrName, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc("/v1/projects/{idOrName}/remote-bindings/access")( + pathParams, + ); + + const query = encodeFormQuery({ + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "createRemoteBindingsExternalAccess", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "POST", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["401", "403", "404", "409", "4XX", "500", "503", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + models.RemoteBindingsExternalAccessResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, models.RemoteBindingsExternalAccessResponse$inboundSchema), + M.jsonErr([401, 403, 404, 409], errors.APIError$inboundSchema), + M.jsonErr([500, 503], errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/resendWorkspaceInvitation.ts b/client-sdks/platform/typescript/src/funcs/resendWorkspaceInvitation.ts new file mode 100644 index 000000000..646525687 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/resendWorkspaceInvitation.ts @@ -0,0 +1,183 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +export function resendWorkspaceInvitation( + client: AlienCore, + request: operations.ResendWorkspaceInvitationRequest, + options?: RequestOptions, +): APIPromise< + Result< + models.WorkspaceInvitation, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.ResendWorkspaceInvitationRequest, + options?: RequestOptions, +): Promise< + [ + Result< + models.WorkspaceInvitation, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.ResendWorkspaceInvitationRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = null; + + const pathParams = { + id: encodeSimple("id", payload.id, { + explode: false, + charEncoding: "percent", + }), + invitationId: encodeSimple("invitationId", payload.invitationId, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc( + "/v1/workspaces/{id}/invitations/{invitationId}/resend", + )(pathParams); + + const query = encodeFormQuery({ + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "resendWorkspaceInvitation", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "POST", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["404", "4XX", "500", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + models.WorkspaceInvitation, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, models.WorkspaceInvitation$inboundSchema), + M.jsonErr(404, errors.APIError$inboundSchema), + M.jsonErr(500, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/restoreAwsVirtualKey.ts b/client-sdks/platform/typescript/src/funcs/restoreAwsVirtualKey.ts new file mode 100644 index 000000000..ae8618148 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/restoreAwsVirtualKey.ts @@ -0,0 +1,171 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeJSON, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +export function restoreAwsVirtualKey( + client: AlienCore, + request: operations.RestoreAwsVirtualKeyRequest, + options?: RequestOptions, +): APIPromise< + Result< + operations.RestoreAwsVirtualKeyResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.RestoreAwsVirtualKeyRequest, + options?: RequestOptions, +): Promise< + [ + Result< + operations.RestoreAwsVirtualKeyResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.RestoreAwsVirtualKeyRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = encodeJSON("body", payload.RequestBody, { explode: true }); + + const pathParams = { + id: encodeSimple("id", payload.id, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc("/v1/aws-virtual-keys/{id}/restore")(pathParams); + + const headers = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "restoreAwsVirtualKey", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "POST", + baseURL: options?.serverURL, + path: path, + headers: headers, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["401", "404", "409", "4XX", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + operations.RestoreAwsVirtualKeyResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, operations.RestoreAwsVirtualKeyResponse$inboundSchema), + M.jsonErr([401, 404, 409], errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/revokeWorkspaceInvitation.ts b/client-sdks/platform/typescript/src/funcs/revokeWorkspaceInvitation.ts new file mode 100644 index 000000000..6ef959216 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/revokeWorkspaceInvitation.ts @@ -0,0 +1,183 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +export function revokeWorkspaceInvitation( + client: AlienCore, + request: operations.RevokeWorkspaceInvitationRequest, + options?: RequestOptions, +): APIPromise< + Result< + void, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.RevokeWorkspaceInvitationRequest, + options?: RequestOptions, +): Promise< + [ + Result< + void, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.RevokeWorkspaceInvitationRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = null; + + const pathParams = { + id: encodeSimple("id", payload.id, { + explode: false, + charEncoding: "percent", + }), + invitationId: encodeSimple("invitationId", payload.invitationId, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc("/v1/workspaces/{id}/invitations/{invitationId}")( + pathParams, + ); + + const query = encodeFormQuery({ + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "revokeWorkspaceInvitation", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "DELETE", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["404", "4XX", "500", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + void, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.nil(204, z.void()), + M.jsonErr(404, errors.APIError$inboundSchema), + M.jsonErr(500, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/revokeWorkspaceInviteLink.ts b/client-sdks/platform/typescript/src/funcs/revokeWorkspaceInviteLink.ts new file mode 100644 index 000000000..619c078bf --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/revokeWorkspaceInviteLink.ts @@ -0,0 +1,177 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +export function revokeWorkspaceInviteLink( + client: AlienCore, + request: operations.RevokeWorkspaceInviteLinkRequest, + options?: RequestOptions, +): APIPromise< + Result< + void, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.RevokeWorkspaceInviteLinkRequest, + options?: RequestOptions, +): Promise< + [ + Result< + void, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.RevokeWorkspaceInviteLinkRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = null; + + const pathParams = { + id: encodeSimple("id", payload.id, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc("/v1/workspaces/{id}/invite-link")(pathParams); + + const query = encodeFormQuery({ + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "revokeWorkspaceInviteLink", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "DELETE", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["404", "4XX", "500", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + void, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.nil(204, z.void()), + M.jsonErr(404, errors.APIError$inboundSchema), + M.jsonErr(500, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/rotateAwsVirtualKeyCredential.ts b/client-sdks/platform/typescript/src/funcs/rotateAwsVirtualKeyCredential.ts new file mode 100644 index 000000000..58a229990 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/rotateAwsVirtualKeyCredential.ts @@ -0,0 +1,175 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeJSON, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +export function rotateAwsVirtualKeyCredential( + client: AlienCore, + request: operations.RotateAwsVirtualKeyCredentialRequest, + options?: RequestOptions, +): APIPromise< + Result< + operations.RotateAwsVirtualKeyCredentialResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.RotateAwsVirtualKeyCredentialRequest, + options?: RequestOptions, +): Promise< + [ + Result< + operations.RotateAwsVirtualKeyCredentialResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.RotateAwsVirtualKeyCredentialRequest$outboundSchema.parse( + value, + ), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = encodeJSON("body", payload.RequestBody, { explode: true }); + + const pathParams = { + id: encodeSimple("id", payload.id, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc("/v1/aws-virtual-keys/{id}/rotate-credential")( + pathParams, + ); + + const headers = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "rotateAwsVirtualKeyCredential", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "POST", + baseURL: options?.serverURL, + path: path, + headers: headers, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["401", "404", "409", "4XX", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + operations.RotateAwsVirtualKeyCredentialResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, operations.RotateAwsVirtualKeyCredentialResponse$inboundSchema), + M.jsonErr([401, 404, 409], errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/slackIntegrationInstallUrl.ts b/client-sdks/platform/typescript/src/funcs/slackIntegrationInstallUrl.ts new file mode 100644 index 000000000..f32f906a8 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/slackIntegrationInstallUrl.ts @@ -0,0 +1,173 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Generate the Slack OAuth consent URL for this workspace. + */ +export function slackIntegrationInstallUrl( + client: AlienCore, + request?: operations.SlackIntegrationInstallUrlRequest | undefined, + options?: RequestOptions, +): APIPromise< + Result< + models.SlackInstallUrlResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request?: operations.SlackIntegrationInstallUrlRequest | undefined, + options?: RequestOptions, +): Promise< + [ + Result< + models.SlackInstallUrlResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.SlackIntegrationInstallUrlRequest$outboundSchema.optional() + .parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = null; + + const path = pathToFunc("/v1/integrations/slack/install-url")(); + + const query = encodeFormQuery({ + "workspace": payload?.workspace, + }); + + const headers = new Headers(compactMap({ + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "slackIntegrationInstallUrl", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "POST", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["4XX", "500", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + models.SlackInstallUrlResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, models.SlackInstallUrlResponse$inboundSchema), + M.jsonErr(500, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/slackIntegrationListChannels.ts b/client-sdks/platform/typescript/src/funcs/slackIntegrationListChannels.ts new file mode 100644 index 000000000..5709afe3b --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/slackIntegrationListChannels.ts @@ -0,0 +1,173 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * List public Slack channels for this workspace's install. Used by the dashboard's notification-channel picker. + */ +export function slackIntegrationListChannels( + client: AlienCore, + request?: operations.SlackIntegrationChannelsRequest | undefined, + options?: RequestOptions, +): APIPromise< + Result< + models.SlackChannelsResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request?: operations.SlackIntegrationChannelsRequest | undefined, + options?: RequestOptions, +): Promise< + [ + Result< + models.SlackChannelsResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.SlackIntegrationChannelsRequest$outboundSchema.optional() + .parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = null; + + const path = pathToFunc("/v1/integrations/slack/channels")(); + + const query = encodeFormQuery({ + "workspace": payload?.workspace, + }); + + const headers = new Headers(compactMap({ + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "slackIntegrationChannels", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "GET", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["400", "4XX", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + models.SlackChannelsResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, models.SlackChannelsResponse$inboundSchema), + M.jsonErr(400, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/slackIntegrationSetNotificationChannel.ts b/client-sdks/platform/typescript/src/funcs/slackIntegrationSetNotificationChannel.ts new file mode 100644 index 000000000..2e403c7af --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/slackIntegrationSetNotificationChannel.ts @@ -0,0 +1,180 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeJSON } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Configure which Slack channel receives ai-agent monitor reports. + */ +export function slackIntegrationSetNotificationChannel( + client: AlienCore, + request?: + | operations.SlackIntegrationSetNotificationChannelRequest + | undefined, + options?: RequestOptions, +): APIPromise< + Result< + models.SlackNotificationChannelResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request?: + | operations.SlackIntegrationSetNotificationChannelRequest + | undefined, + options?: RequestOptions, +): Promise< + [ + Result< + models.SlackNotificationChannelResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.SlackIntegrationSetNotificationChannelRequest$outboundSchema + .optional().parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = encodeJSON("body", payload?.SlackNotificationChannelRequest, { + explode: true, + }); + + const path = pathToFunc("/v1/integrations/slack/notification-channel")(); + + const query = encodeFormQuery({ + "workspace": payload?.workspace, + }); + + const headers = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "slackIntegrationSetNotificationChannel", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "PUT", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["400", "4XX", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + models.SlackNotificationChannelResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, models.SlackNotificationChannelResponse$inboundSchema), + M.jsonErr(400, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/slackIntegrationStatus.ts b/client-sdks/platform/typescript/src/funcs/slackIntegrationStatus.ts new file mode 100644 index 000000000..bcf1620e7 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/slackIntegrationStatus.ts @@ -0,0 +1,165 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Return the Slack install for this workspace (if any). + */ +export function slackIntegrationStatus( + client: AlienCore, + request?: operations.SlackIntegrationStatusRequest | undefined, + options?: RequestOptions, +): APIPromise< + Result< + models.SlackIntegrationStatus, + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request?: operations.SlackIntegrationStatusRequest | undefined, + options?: RequestOptions, +): Promise< + [ + Result< + models.SlackIntegrationStatus, + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.SlackIntegrationStatusRequest$outboundSchema.optional().parse( + value, + ), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = null; + + const path = pathToFunc("/v1/integrations/slack/status")(); + + const query = encodeFormQuery({ + "workspace": payload?.workspace, + }); + + const headers = new Headers(compactMap({ + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "slackIntegrationStatus", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "GET", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["4XX", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const [result] = await M.match< + models.SlackIntegrationStatus, + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, models.SlackIntegrationStatus$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/slackIntegrationUninstall.ts b/client-sdks/platform/typescript/src/funcs/slackIntegrationUninstall.ts new file mode 100644 index 000000000..ab41fcf3a --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/slackIntegrationUninstall.ts @@ -0,0 +1,164 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { AlienCore } from "../core.js"; +import { encodeFormQuery } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Uninstall the Slack integration for this workspace. Revokes the bot token at Slack and deletes the row. + */ +export function slackIntegrationUninstall( + client: AlienCore, + request?: operations.SlackIntegrationUninstallRequest | undefined, + options?: RequestOptions, +): APIPromise< + Result< + void, + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request?: operations.SlackIntegrationUninstallRequest | undefined, + options?: RequestOptions, +): Promise< + [ + Result< + void, + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.SlackIntegrationUninstallRequest$outboundSchema.optional() + .parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = null; + + const path = pathToFunc("/v1/integrations/slack/installation")(); + + const query = encodeFormQuery({ + "workspace": payload?.workspace, + }); + + const headers = new Headers(compactMap({ + Accept: "*/*", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "slackIntegrationUninstall", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "DELETE", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["4XX", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const [result] = await M.match< + void, + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.nil(204, z.void()), + M.fail("4XX"), + M.fail("5XX"), + )(response, req); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/syncRenew.ts b/client-sdks/platform/typescript/src/funcs/syncRenew.ts new file mode 100644 index 000000000..4c03cbc91 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/syncRenew.ts @@ -0,0 +1,169 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeJSON } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +export function syncRenew( + client: AlienCore, + request: operations.SyncRenewRequest, + options?: RequestOptions, +): APIPromise< + Result< + operations.SyncRenewResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.SyncRenewRequest, + options?: RequestOptions, +): Promise< + [ + Result< + operations.SyncRenewResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => operations.SyncRenewRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = encodeJSON("body", payload.SyncRenewRequest, { explode: true }); + + const path = pathToFunc("/v1/sync/renew")(); + + const query = encodeFormQuery({ + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "syncRenew", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "POST", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["404", "409", "4XX", "500", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + operations.SyncRenewResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, operations.SyncRenewResponse$inboundSchema), + M.jsonErr([404, 409], errors.APIError$inboundSchema), + M.jsonErr(500, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/workspacesGetSettings.ts b/client-sdks/platform/typescript/src/funcs/workspacesGetSettings.ts new file mode 100644 index 000000000..0def81be8 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/workspacesGetSettings.ts @@ -0,0 +1,179 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Read the ai-agent settings for a workspace. Returns defaults (`enabled: true`, `debugPermissionMode: auto`) when the workspace has never customized them. + */ +export function workspacesGetSettings( + client: AlienCore, + request: operations.GetWorkspaceSettingsRequest, + options?: RequestOptions, +): APIPromise< + Result< + models.AgentSettings, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.GetWorkspaceSettingsRequest, + options?: RequestOptions, +): Promise< + [ + Result< + models.AgentSettings, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.GetWorkspaceSettingsRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = null; + + const pathParams = { + id: encodeSimple("id", payload.id, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc("/v1/workspaces/{id}/settings")(pathParams); + + const query = encodeFormQuery({ + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "getWorkspaceSettings", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "GET", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["404", "4XX", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + models.AgentSettings, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, models.AgentSettings$inboundSchema), + M.jsonErr(404, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/workspacesUpdateSettings.ts b/client-sdks/platform/typescript/src/funcs/workspacesUpdateSettings.ts new file mode 100644 index 000000000..07cacec65 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/workspacesUpdateSettings.ts @@ -0,0 +1,182 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeJSON, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * 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). + */ +export function workspacesUpdateSettings( + client: AlienCore, + request: operations.UpdateWorkspaceSettingsRequest, + options?: RequestOptions, +): APIPromise< + Result< + models.AgentSettings, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.UpdateWorkspaceSettingsRequest, + options?: RequestOptions, +): Promise< + [ + Result< + models.AgentSettings, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.UpdateWorkspaceSettingsRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = encodeJSON("body", payload.UpdateWorkspaceSettingsRequest, { + explode: true, + }); + + const pathParams = { + id: encodeSimple("id", payload.id, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc("/v1/workspaces/{id}/settings")(pathParams); + + const query = encodeFormQuery({ + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "updateWorkspaceSettings", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "PATCH", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["404", "4XX", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + models.AgentSettings, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, models.AgentSettings$inboundSchema), + M.jsonErr(404, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/lib/config.ts b/client-sdks/platform/typescript/src/lib/config.ts index ea094ae04..44d5a6880 100644 --- a/client-sdks/platform/typescript/src/lib/config.ts +++ b/client-sdks/platform/typescript/src/lib/config.ts @@ -61,8 +61,8 @@ export function serverURLFromOptions(options: SDKOptions): URL | null { export const SDK_METADATA = { language: "typescript", openapiDocVersion: "1.0.0", - sdkVersion: "1.14.3", + sdkVersion: "3.3.12", genVersion: "2.788.15", userAgent: - "speakeasy-sdk/typescript 1.14.3 2.788.15 1.0.0 @alienplatform/platform-api", + "speakeasy-sdk/typescript 3.3.12 2.788.15 1.0.0 @alienplatform/platform-api", } as const; diff --git a/client-sdks/platform/typescript/src/models/acceptworkspaceinvitationresponse.ts b/client-sdks/platform/typescript/src/models/acceptworkspaceinvitationresponse.ts new file mode 100644 index 000000000..5658a7090 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/acceptworkspaceinvitationresponse.ts @@ -0,0 +1,57 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { ClosedEnum } from "../types/enums.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; +import { WorkspaceRole, WorkspaceRole$inboundSchema } from "./workspacerole.js"; + +export const AcceptWorkspaceInvitationResponseOutcome = { + Joined: "joined", + AlreadyMember: "already-member", +} as const; +export type AcceptWorkspaceInvitationResponseOutcome = ClosedEnum< + typeof AcceptWorkspaceInvitationResponseOutcome +>; + +export type AcceptWorkspaceInvitationResponse = { + outcome: AcceptWorkspaceInvitationResponseOutcome; + /** + * Unique identifier for the workspace. + */ + workspaceId: string; + workspaceName: string; + /** + * Role for workspace-scoped service accounts + */ + role: WorkspaceRole; +}; + +/** @internal */ +export const AcceptWorkspaceInvitationResponseOutcome$inboundSchema: z.ZodEnum< + typeof AcceptWorkspaceInvitationResponseOutcome +> = z.enum(AcceptWorkspaceInvitationResponseOutcome); + +/** @internal */ +export const AcceptWorkspaceInvitationResponse$inboundSchema: z.ZodType< + AcceptWorkspaceInvitationResponse, + unknown +> = z.object({ + outcome: AcceptWorkspaceInvitationResponseOutcome$inboundSchema, + workspaceId: z.string(), + workspaceName: z.string(), + role: WorkspaceRole$inboundSchema, +}); + +export function acceptWorkspaceInvitationResponseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => AcceptWorkspaceInvitationResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'AcceptWorkspaceInvitationResponse' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/agentsessionapprovalgrantedevent.ts b/client-sdks/platform/typescript/src/models/agentsessionapprovalgrantedevent.ts new file mode 100644 index 000000000..8700396e5 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/agentsessionapprovalgrantedevent.ts @@ -0,0 +1,84 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { ClosedEnum } from "../types/enums.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +export const AgentSessionApprovalGrantedEventSource = { + Dashboard: "dashboard", + Slack: "slack", +} as const; +export type AgentSessionApprovalGrantedEventSource = ClosedEnum< + typeof AgentSessionApprovalGrantedEventSource +>; + +export type AgentSessionApprovalGrantedEventPayload = { + approvalId: string; + approvedByUserId: string; + approvedByName: string | null; + source: AgentSessionApprovalGrantedEventSource; +}; + +export type AgentSessionApprovalGrantedEvent = { + seq: number; + createdAt: string; + type: "approval_granted"; + payload: AgentSessionApprovalGrantedEventPayload; +}; + +/** @internal */ +export const AgentSessionApprovalGrantedEventSource$inboundSchema: z.ZodEnum< + typeof AgentSessionApprovalGrantedEventSource +> = z.enum(AgentSessionApprovalGrantedEventSource); + +/** @internal */ +export const AgentSessionApprovalGrantedEventPayload$inboundSchema: z.ZodType< + AgentSessionApprovalGrantedEventPayload, + unknown +> = z.object({ + approvalId: z.string(), + approvedByUserId: z.string(), + approvedByName: z.nullable(z.string()), + source: AgentSessionApprovalGrantedEventSource$inboundSchema, +}); + +export function agentSessionApprovalGrantedEventPayloadFromJSON( + jsonString: string, +): SafeParseResult< + AgentSessionApprovalGrantedEventPayload, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + AgentSessionApprovalGrantedEventPayload$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'AgentSessionApprovalGrantedEventPayload' from JSON`, + ); +} + +/** @internal */ +export const AgentSessionApprovalGrantedEvent$inboundSchema: z.ZodType< + AgentSessionApprovalGrantedEvent, + unknown +> = z.object({ + seq: z.number(), + createdAt: z.string(), + type: z.literal("approval_granted"), + payload: z.lazy(() => AgentSessionApprovalGrantedEventPayload$inboundSchema), +}); + +export function agentSessionApprovalGrantedEventFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => AgentSessionApprovalGrantedEvent$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'AgentSessionApprovalGrantedEvent' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/agentsessionapprovalrequestedevent.ts b/client-sdks/platform/typescript/src/models/agentsessionapprovalrequestedevent.ts new file mode 100644 index 000000000..c559cc0f9 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/agentsessionapprovalrequestedevent.ts @@ -0,0 +1,73 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +export type AgentSessionApprovalRequestedEventPayload = { + approvalId: string; + toolCallId: string; + toolName: string; + input?: any | null | undefined; +}; + +export type AgentSessionApprovalRequestedEvent = { + seq: number; + createdAt: string; + type: "approval_requested"; + payload: AgentSessionApprovalRequestedEventPayload; +}; + +/** @internal */ +export const AgentSessionApprovalRequestedEventPayload$inboundSchema: z.ZodType< + AgentSessionApprovalRequestedEventPayload, + unknown +> = z.object({ + approvalId: z.string(), + toolCallId: z.string(), + toolName: z.string(), + input: z.nullable(z.any()).optional(), +}); + +export function agentSessionApprovalRequestedEventPayloadFromJSON( + jsonString: string, +): SafeParseResult< + AgentSessionApprovalRequestedEventPayload, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + AgentSessionApprovalRequestedEventPayload$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'AgentSessionApprovalRequestedEventPayload' from JSON`, + ); +} + +/** @internal */ +export const AgentSessionApprovalRequestedEvent$inboundSchema: z.ZodType< + AgentSessionApprovalRequestedEvent, + unknown +> = z.object({ + seq: z.number(), + createdAt: z.string(), + type: z.literal("approval_requested"), + payload: z.lazy(() => + AgentSessionApprovalRequestedEventPayload$inboundSchema + ), +}); + +export function agentSessionApprovalRequestedEventFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + AgentSessionApprovalRequestedEvent$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'AgentSessionApprovalRequestedEvent' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/agentsessionapproveresponse.ts b/client-sdks/platform/typescript/src/models/agentsessionapproveresponse.ts new file mode 100644 index 000000000..2f0f7b806 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/agentsessionapproveresponse.ts @@ -0,0 +1,34 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +export type AgentSessionApproveResponse = { + jobId: string; + status: string; + resumed: boolean; +}; + +/** @internal */ +export const AgentSessionApproveResponse$inboundSchema: z.ZodType< + AgentSessionApproveResponse, + unknown +> = z.object({ + jobId: z.string(), + status: z.string(), + resumed: z.boolean(), +}); + +export function agentSessionApproveResponseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => AgentSessionApproveResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'AgentSessionApproveResponse' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/agentsessiondetail.ts b/client-sdks/platform/typescript/src/models/agentsessiondetail.ts new file mode 100644 index 000000000..0c7f65284 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/agentsessiondetail.ts @@ -0,0 +1,82 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { + AgentSessionSubject, + AgentSessionSubject$inboundSchema, +} from "./agentsessionsubject.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +export type PendingApproval = { + approvalId: string; + toolCallId: string; + toolName: string; + input?: any | null | undefined; +}; + +export type AgentSessionDetail = { + id: string; + triggerType: string; + subjectId: string; + subject: AgentSessionSubject; + status: string; + createdAt: string; + updatedAt: string; + resultText: string | null; + toolNames: Array | null; + error: string | null; + pendingApproval: PendingApproval | null; +}; + +/** @internal */ +export const PendingApproval$inboundSchema: z.ZodType< + PendingApproval, + unknown +> = z.object({ + approvalId: z.string(), + toolCallId: z.string(), + toolName: z.string(), + input: z.nullable(z.any()).optional(), +}); + +export function pendingApprovalFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => PendingApproval$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'PendingApproval' from JSON`, + ); +} + +/** @internal */ +export const AgentSessionDetail$inboundSchema: z.ZodType< + AgentSessionDetail, + unknown +> = z.object({ + id: z.string(), + triggerType: z.string(), + subjectId: z.string(), + subject: AgentSessionSubject$inboundSchema, + status: z.string(), + createdAt: z.string(), + updatedAt: z.string(), + resultText: z.nullable(z.string()), + toolNames: z.nullable(z.array(z.string())), + error: z.nullable(z.string()), + pendingApproval: z.nullable(z.lazy(() => PendingApproval$inboundSchema)), +}); + +export function agentSessionDetailFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => AgentSessionDetail$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'AgentSessionDetail' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/agentsessionevent.ts b/client-sdks/platform/typescript/src/models/agentsessionevent.ts new file mode 100644 index 000000000..2fec5ca6e --- /dev/null +++ b/client-sdks/platform/typescript/src/models/agentsessionevent.ts @@ -0,0 +1,81 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { + AgentSessionApprovalGrantedEvent, + AgentSessionApprovalGrantedEvent$inboundSchema, +} from "./agentsessionapprovalgrantedevent.js"; +import { + AgentSessionApprovalRequestedEvent, + AgentSessionApprovalRequestedEvent$inboundSchema, +} from "./agentsessionapprovalrequestedevent.js"; +import { + AgentSessionEventsTruncatedEvent, + AgentSessionEventsTruncatedEvent$inboundSchema, +} from "./agentsessioneventstruncatedevent.js"; +import { + AgentSessionMarkdownEvent, + AgentSessionMarkdownEvent$inboundSchema, +} from "./agentsessionmarkdownevent.js"; +import { + AgentSessionRestartedEvent, + AgentSessionRestartedEvent$inboundSchema, +} from "./agentsessionrestartedevent.js"; +import { + AgentSessionStatusEvent, + AgentSessionStatusEvent$inboundSchema, +} from "./agentsessionstatusevent.js"; +import { + AgentSessionStepEvent, + AgentSessionStepEvent$inboundSchema, +} from "./agentsessionstepevent.js"; +import { + AgentSessionToolCallEvent, + AgentSessionToolCallEvent$inboundSchema, +} from "./agentsessiontoolcallevent.js"; +import { + AgentSessionToolResultEvent, + AgentSessionToolResultEvent$inboundSchema, +} from "./agentsessiontoolresultevent.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +export type AgentSessionEvent = + | AgentSessionStatusEvent + | AgentSessionStepEvent + | AgentSessionToolCallEvent + | AgentSessionToolResultEvent + | AgentSessionMarkdownEvent + | AgentSessionApprovalRequestedEvent + | AgentSessionApprovalGrantedEvent + | AgentSessionRestartedEvent + | AgentSessionEventsTruncatedEvent; + +/** @internal */ +export const AgentSessionEvent$inboundSchema: z.ZodType< + AgentSessionEvent, + unknown +> = z.union([ + AgentSessionStatusEvent$inboundSchema, + AgentSessionStepEvent$inboundSchema, + AgentSessionToolCallEvent$inboundSchema, + AgentSessionToolResultEvent$inboundSchema, + AgentSessionMarkdownEvent$inboundSchema, + AgentSessionApprovalRequestedEvent$inboundSchema, + AgentSessionApprovalGrantedEvent$inboundSchema, + AgentSessionRestartedEvent$inboundSchema, + AgentSessionEventsTruncatedEvent$inboundSchema, +]); + +export function agentSessionEventFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => AgentSessionEvent$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'AgentSessionEvent' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/agentsessioneventsresponse.ts b/client-sdks/platform/typescript/src/models/agentsessioneventsresponse.ts new file mode 100644 index 000000000..571d7d4da --- /dev/null +++ b/client-sdks/platform/typescript/src/models/agentsessioneventsresponse.ts @@ -0,0 +1,38 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { + AgentSessionEvent, + AgentSessionEvent$inboundSchema, +} from "./agentsessionevent.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +export type AgentSessionEventsResponse = { + events: Array; + latestSeq: number; + hasMore: boolean; +}; + +/** @internal */ +export const AgentSessionEventsResponse$inboundSchema: z.ZodType< + AgentSessionEventsResponse, + unknown +> = z.object({ + events: z.array(AgentSessionEvent$inboundSchema), + latestSeq: z.number(), + hasMore: z.boolean(), +}); + +export function agentSessionEventsResponseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => AgentSessionEventsResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'AgentSessionEventsResponse' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/agentsessioneventstruncatedevent.ts b/client-sdks/platform/typescript/src/models/agentsessioneventstruncatedevent.ts new file mode 100644 index 000000000..4f4d0238b --- /dev/null +++ b/client-sdks/platform/typescript/src/models/agentsessioneventstruncatedevent.ts @@ -0,0 +1,64 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +export type AgentSessionEventsTruncatedEventPayload = { + limit: number; +}; + +export type AgentSessionEventsTruncatedEvent = { + seq: number; + createdAt: string; + type: "events_truncated"; + payload: AgentSessionEventsTruncatedEventPayload; +}; + +/** @internal */ +export const AgentSessionEventsTruncatedEventPayload$inboundSchema: z.ZodType< + AgentSessionEventsTruncatedEventPayload, + unknown +> = z.object({ + limit: z.number(), +}); + +export function agentSessionEventsTruncatedEventPayloadFromJSON( + jsonString: string, +): SafeParseResult< + AgentSessionEventsTruncatedEventPayload, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + AgentSessionEventsTruncatedEventPayload$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'AgentSessionEventsTruncatedEventPayload' from JSON`, + ); +} + +/** @internal */ +export const AgentSessionEventsTruncatedEvent$inboundSchema: z.ZodType< + AgentSessionEventsTruncatedEvent, + unknown +> = z.object({ + seq: z.number(), + createdAt: z.string(), + type: z.literal("events_truncated"), + payload: z.lazy(() => AgentSessionEventsTruncatedEventPayload$inboundSchema), +}); + +export function agentSessionEventsTruncatedEventFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => AgentSessionEventsTruncatedEvent$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'AgentSessionEventsTruncatedEvent' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/agentsessionlistitem.ts b/client-sdks/platform/typescript/src/models/agentsessionlistitem.ts new file mode 100644 index 000000000..5079f4cc6 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/agentsessionlistitem.ts @@ -0,0 +1,46 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { + AgentSessionSubject, + AgentSessionSubject$inboundSchema, +} from "./agentsessionsubject.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +export type AgentSessionListItem = { + id: string; + triggerType: string; + subjectId: string; + subject: AgentSessionSubject; + status: string; + createdAt: string; + updatedAt: string; +}; + +/** @internal */ +export const AgentSessionListItem$inboundSchema: z.ZodType< + AgentSessionListItem, + unknown +> = z.object({ + id: z.string(), + triggerType: z.string(), + subjectId: z.string(), + subject: AgentSessionSubject$inboundSchema, + status: z.string(), + createdAt: z.string(), + updatedAt: z.string(), +}); + +export function agentSessionListItemFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => AgentSessionListItem$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'AgentSessionListItem' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/agentsessionlistresponse.ts b/client-sdks/platform/typescript/src/models/agentsessionlistresponse.ts new file mode 100644 index 000000000..00594bd94 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/agentsessionlistresponse.ts @@ -0,0 +1,34 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { + AgentSessionListItem, + AgentSessionListItem$inboundSchema, +} from "./agentsessionlistitem.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +export type AgentSessionListResponse = { + sessions: Array; +}; + +/** @internal */ +export const AgentSessionListResponse$inboundSchema: z.ZodType< + AgentSessionListResponse, + unknown +> = z.object({ + sessions: z.array(AgentSessionListItem$inboundSchema), +}); + +export function agentSessionListResponseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => AgentSessionListResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'AgentSessionListResponse' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/agentsessionmarkdownevent.ts b/client-sdks/platform/typescript/src/models/agentsessionmarkdownevent.ts new file mode 100644 index 000000000..9511f17db --- /dev/null +++ b/client-sdks/platform/typescript/src/models/agentsessionmarkdownevent.ts @@ -0,0 +1,58 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +export type AgentSessionMarkdownEventPayload = { + text: string; +}; + +export type AgentSessionMarkdownEvent = { + seq: number; + createdAt: string; + type: "markdown"; + payload: AgentSessionMarkdownEventPayload; +}; + +/** @internal */ +export const AgentSessionMarkdownEventPayload$inboundSchema: z.ZodType< + AgentSessionMarkdownEventPayload, + unknown +> = z.object({ + text: z.string(), +}); + +export function agentSessionMarkdownEventPayloadFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => AgentSessionMarkdownEventPayload$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'AgentSessionMarkdownEventPayload' from JSON`, + ); +} + +/** @internal */ +export const AgentSessionMarkdownEvent$inboundSchema: z.ZodType< + AgentSessionMarkdownEvent, + unknown +> = z.object({ + seq: z.number(), + createdAt: z.string(), + type: z.literal("markdown"), + payload: z.lazy(() => AgentSessionMarkdownEventPayload$inboundSchema), +}); + +export function agentSessionMarkdownEventFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => AgentSessionMarkdownEvent$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'AgentSessionMarkdownEvent' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/agentsessionrestartedevent.ts b/client-sdks/platform/typescript/src/models/agentsessionrestartedevent.ts new file mode 100644 index 000000000..c70d9af46 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/agentsessionrestartedevent.ts @@ -0,0 +1,58 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +export type AgentSessionRestartedEventPayload = { + reason: string; +}; + +export type AgentSessionRestartedEvent = { + seq: number; + createdAt: string; + type: "session_restarted"; + payload: AgentSessionRestartedEventPayload; +}; + +/** @internal */ +export const AgentSessionRestartedEventPayload$inboundSchema: z.ZodType< + AgentSessionRestartedEventPayload, + unknown +> = z.object({ + reason: z.string(), +}); + +export function agentSessionRestartedEventPayloadFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => AgentSessionRestartedEventPayload$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'AgentSessionRestartedEventPayload' from JSON`, + ); +} + +/** @internal */ +export const AgentSessionRestartedEvent$inboundSchema: z.ZodType< + AgentSessionRestartedEvent, + unknown +> = z.object({ + seq: z.number(), + createdAt: z.string(), + type: z.literal("session_restarted"), + payload: z.lazy(() => AgentSessionRestartedEventPayload$inboundSchema), +}); + +export function agentSessionRestartedEventFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => AgentSessionRestartedEvent$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'AgentSessionRestartedEvent' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/agentsessionstatusevent.ts b/client-sdks/platform/typescript/src/models/agentsessionstatusevent.ts new file mode 100644 index 000000000..0e4f018d1 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/agentsessionstatusevent.ts @@ -0,0 +1,60 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +export type AgentSessionStatusEventPayload = { + status: string; + error?: string | undefined; +}; + +export type AgentSessionStatusEvent = { + seq: number; + createdAt: string; + type: "status"; + payload: AgentSessionStatusEventPayload; +}; + +/** @internal */ +export const AgentSessionStatusEventPayload$inboundSchema: z.ZodType< + AgentSessionStatusEventPayload, + unknown +> = z.object({ + status: z.string(), + error: z.string().optional(), +}); + +export function agentSessionStatusEventPayloadFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => AgentSessionStatusEventPayload$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'AgentSessionStatusEventPayload' from JSON`, + ); +} + +/** @internal */ +export const AgentSessionStatusEvent$inboundSchema: z.ZodType< + AgentSessionStatusEvent, + unknown +> = z.object({ + seq: z.number(), + createdAt: z.string(), + type: z.literal("status"), + payload: z.lazy(() => AgentSessionStatusEventPayload$inboundSchema), +}); + +export function agentSessionStatusEventFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => AgentSessionStatusEvent$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'AgentSessionStatusEvent' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/agentsessionstepevent.ts b/client-sdks/platform/typescript/src/models/agentsessionstepevent.ts new file mode 100644 index 000000000..82d603f64 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/agentsessionstepevent.ts @@ -0,0 +1,77 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { ClosedEnum } from "../types/enums.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +export const AgentSessionStepEventStatus = { + InProgress: "in_progress", + Complete: "complete", + Error: "error", +} as const; +export type AgentSessionStepEventStatus = ClosedEnum< + typeof AgentSessionStepEventStatus +>; + +export type AgentSessionStepEventPayload = { + stepId: string; + title: string; + status: AgentSessionStepEventStatus; +}; + +export type AgentSessionStepEvent = { + seq: number; + createdAt: string; + type: "step"; + payload: AgentSessionStepEventPayload; +}; + +/** @internal */ +export const AgentSessionStepEventStatus$inboundSchema: z.ZodEnum< + typeof AgentSessionStepEventStatus +> = z.enum(AgentSessionStepEventStatus); + +/** @internal */ +export const AgentSessionStepEventPayload$inboundSchema: z.ZodType< + AgentSessionStepEventPayload, + unknown +> = z.object({ + stepId: z.string(), + title: z.string(), + status: AgentSessionStepEventStatus$inboundSchema, +}); + +export function agentSessionStepEventPayloadFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => AgentSessionStepEventPayload$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'AgentSessionStepEventPayload' from JSON`, + ); +} + +/** @internal */ +export const AgentSessionStepEvent$inboundSchema: z.ZodType< + AgentSessionStepEvent, + unknown +> = z.object({ + seq: z.number(), + createdAt: z.string(), + type: z.literal("step"), + payload: z.lazy(() => AgentSessionStepEventPayload$inboundSchema), +}); + +export function agentSessionStepEventFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => AgentSessionStepEvent$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'AgentSessionStepEvent' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/agentsessionstopresponse.ts b/client-sdks/platform/typescript/src/models/agentsessionstopresponse.ts new file mode 100644 index 000000000..3c798096c --- /dev/null +++ b/client-sdks/platform/typescript/src/models/agentsessionstopresponse.ts @@ -0,0 +1,34 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +export type AgentSessionStopResponse = { + jobId: string; + status: string; + canceled: boolean; +}; + +/** @internal */ +export const AgentSessionStopResponse$inboundSchema: z.ZodType< + AgentSessionStopResponse, + unknown +> = z.object({ + jobId: z.string(), + status: z.string(), + canceled: z.boolean(), +}); + +export function agentSessionStopResponseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => AgentSessionStopResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'AgentSessionStopResponse' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/agentsessionsubject.ts b/client-sdks/platform/typescript/src/models/agentsessionsubject.ts new file mode 100644 index 000000000..97a291c85 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/agentsessionsubject.ts @@ -0,0 +1,44 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +export type AgentSessionSubject = { + deploymentName: string | null; + deploymentGroupId: string | null; + deploymentGroupName: string | null; + releaseId: string | null; + releaseCommitMessage: string | null; + releaseCommitRef: string | null; + projectId: string | null; + projectName: string | null; +}; + +/** @internal */ +export const AgentSessionSubject$inboundSchema: z.ZodType< + AgentSessionSubject, + unknown +> = z.object({ + deploymentName: z.nullable(z.string()), + deploymentGroupId: z.nullable(z.string()), + deploymentGroupName: z.nullable(z.string()), + releaseId: z.nullable(z.string()), + releaseCommitMessage: z.nullable(z.string()), + releaseCommitRef: z.nullable(z.string()), + projectId: z.nullable(z.string()), + projectName: z.nullable(z.string()), +}); + +export function agentSessionSubjectFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => AgentSessionSubject$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'AgentSessionSubject' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/agentsessiontoolcallevent.ts b/client-sdks/platform/typescript/src/models/agentsessiontoolcallevent.ts new file mode 100644 index 000000000..03352e188 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/agentsessiontoolcallevent.ts @@ -0,0 +1,62 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +export type AgentSessionToolCallEventPayload = { + toolCallId: string; + toolName: string; + input?: any | null | undefined; +}; + +export type AgentSessionToolCallEvent = { + seq: number; + createdAt: string; + type: "tool_call"; + payload: AgentSessionToolCallEventPayload; +}; + +/** @internal */ +export const AgentSessionToolCallEventPayload$inboundSchema: z.ZodType< + AgentSessionToolCallEventPayload, + unknown +> = z.object({ + toolCallId: z.string(), + toolName: z.string(), + input: z.nullable(z.any()).optional(), +}); + +export function agentSessionToolCallEventPayloadFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => AgentSessionToolCallEventPayload$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'AgentSessionToolCallEventPayload' from JSON`, + ); +} + +/** @internal */ +export const AgentSessionToolCallEvent$inboundSchema: z.ZodType< + AgentSessionToolCallEvent, + unknown +> = z.object({ + seq: z.number(), + createdAt: z.string(), + type: z.literal("tool_call"), + payload: z.lazy(() => AgentSessionToolCallEventPayload$inboundSchema), +}); + +export function agentSessionToolCallEventFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => AgentSessionToolCallEvent$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'AgentSessionToolCallEvent' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/agentsessiontoolresultevent.ts b/client-sdks/platform/typescript/src/models/agentsessiontoolresultevent.ts new file mode 100644 index 000000000..d6ef79069 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/agentsessiontoolresultevent.ts @@ -0,0 +1,65 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +export type AgentSessionToolResultEventPayload = { + toolCallId: string | null; + toolName: string | null; + ok: boolean; + output?: any | null | undefined; +}; + +export type AgentSessionToolResultEvent = { + seq: number; + createdAt: string; + type: "tool_result"; + payload: AgentSessionToolResultEventPayload; +}; + +/** @internal */ +export const AgentSessionToolResultEventPayload$inboundSchema: z.ZodType< + AgentSessionToolResultEventPayload, + unknown +> = z.object({ + toolCallId: z.nullable(z.string()), + toolName: z.nullable(z.string()), + ok: z.boolean(), + output: z.nullable(z.any()).optional(), +}); + +export function agentSessionToolResultEventPayloadFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + AgentSessionToolResultEventPayload$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'AgentSessionToolResultEventPayload' from JSON`, + ); +} + +/** @internal */ +export const AgentSessionToolResultEvent$inboundSchema: z.ZodType< + AgentSessionToolResultEvent, + unknown +> = z.object({ + seq: z.number(), + createdAt: z.string(), + type: z.literal("tool_result"), + payload: z.lazy(() => AgentSessionToolResultEventPayload$inboundSchema), +}); + +export function agentSessionToolResultEventFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => AgentSessionToolResultEvent$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'AgentSessionToolResultEvent' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/agentsettings.ts b/client-sdks/platform/typescript/src/models/agentsettings.ts new file mode 100644 index 000000000..a1e393637 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/agentsettings.ts @@ -0,0 +1,65 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { ClosedEnum } from "../types/enums.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +/** + * 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. + */ +export const AgentSettingsDebugPermissionMode = { + Auto: "auto", + Ask: "ask", +} as const; +/** + * 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. + */ +export type AgentSettingsDebugPermissionMode = ClosedEnum< + typeof AgentSettingsDebugPermissionMode +>; + +export type AgentSettings = { + /** + * Unique identifier for the workspace. + */ + workspaceId: string; + /** + * 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`. + */ + enabled: boolean; + /** + * 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. + */ + debugPermissionMode: AgentSettingsDebugPermissionMode; + createdAt: Date; + updatedAt: Date; +}; + +/** @internal */ +export const AgentSettingsDebugPermissionMode$inboundSchema: z.ZodEnum< + typeof AgentSettingsDebugPermissionMode +> = z.enum(AgentSettingsDebugPermissionMode); + +/** @internal */ +export const AgentSettings$inboundSchema: z.ZodType = z + .object({ + workspaceId: z.string(), + enabled: z.boolean(), + debugPermissionMode: AgentSettingsDebugPermissionMode$inboundSchema, + createdAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), + updatedAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), + }); + +export function agentSettingsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => AgentSettings$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'AgentSettings' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/apikeydeploymentsetupconfig.ts b/client-sdks/platform/typescript/src/models/apikeydeploymentsetupconfig.ts index 7254ae9d5..ba9669d60 100644 --- a/client-sdks/platform/typescript/src/models/apikeydeploymentsetupconfig.ts +++ b/client-sdks/platform/typescript/src/models/apikeydeploymentsetupconfig.ts @@ -17,9 +17,11 @@ import { import { SDKValidationError } from "./errors/sdkvalidationerror.js"; export const APIKeyDeploymentSetupConfigItemEnum = { - AlienStack: "alien-stack", + Deployment: "deployment", Models: "models", Keys: "keys", + Bucket: "bucket", + Registry: "registry", } as const; export type APIKeyDeploymentSetupConfigItemEnum = ClosedEnum< typeof APIKeyDeploymentSetupConfigItemEnum @@ -28,6 +30,8 @@ export type APIKeyDeploymentSetupConfigItemEnum = ClosedEnum< export const APIKeyDeploymentSetupConfigDefinitionId = { CustomerAi: "customer-ai", CustomerKey: "customer-key", + CustomerStorage: "customer-storage", + CustomerRegistry: "customer-registry", } as const; export type APIKeyDeploymentSetupConfigDefinitionId = ClosedEnum< typeof APIKeyDeploymentSetupConfigDefinitionId @@ -43,8 +47,8 @@ export type APIKeyDeploymentSetupConfigSourceBuiltIn = { sourceReleaseId: string; }; -export type APIKeyDeploymentSetupConfigSourceApplicationRelease = { - type: "application-release"; +export type APIKeyDeploymentSetupConfigSourceProjectRelease = { + type: "project-release"; releaseChannel: string; /** * Unique identifier for the release. @@ -54,7 +58,7 @@ export type APIKeyDeploymentSetupConfigSourceApplicationRelease = { }; export type APIKeyDeploymentSetupConfigSourceUnion = - | APIKeyDeploymentSetupConfigSourceApplicationRelease + | APIKeyDeploymentSetupConfigSourceProjectRelease | APIKeyDeploymentSetupConfigSourceBuiltIn; export const APIKeyDeploymentSetupConfigAllowedProvider = { @@ -62,6 +66,8 @@ export const APIKeyDeploymentSetupConfigAllowedProvider = { GcpVertex: "gcp-vertex", AzureFoundry: "azure-foundry", Anthropic: "anthropic", + Databricks: "databricks", + Openai: "openai", } as const; export type APIKeyDeploymentSetupConfigAllowedProvider = ClosedEnum< typeof APIKeyDeploymentSetupConfigAllowedProvider @@ -94,7 +100,7 @@ export type APIKeyDeploymentSetupConfigConfiguration = { export type APIKeyDeploymentSetupConfigItem = { item: APIKeyDeploymentSetupConfigItemEnum; source: - | APIKeyDeploymentSetupConfigSourceApplicationRelease + | APIKeyDeploymentSetupConfigSourceProjectRelease | APIKeyDeploymentSetupConfigSourceBuiltIn; required: boolean; configuration?: APIKeyDeploymentSetupConfigConfiguration | undefined; @@ -145,28 +151,28 @@ export function apiKeyDeploymentSetupConfigSourceBuiltInFromJSON( } /** @internal */ -export const APIKeyDeploymentSetupConfigSourceApplicationRelease$inboundSchema: - z.ZodType = z +export const APIKeyDeploymentSetupConfigSourceProjectRelease$inboundSchema: + z.ZodType = z .object({ - type: z.literal("application-release"), + type: z.literal("project-release"), releaseChannel: z.string(), releaseId: z.string(), resourceId: z.string().optional(), }); -export function apiKeyDeploymentSetupConfigSourceApplicationReleaseFromJSON( +export function apiKeyDeploymentSetupConfigSourceProjectReleaseFromJSON( jsonString: string, ): SafeParseResult< - APIKeyDeploymentSetupConfigSourceApplicationRelease, + APIKeyDeploymentSetupConfigSourceProjectRelease, SDKValidationError > { return safeParse( jsonString, (x) => - APIKeyDeploymentSetupConfigSourceApplicationRelease$inboundSchema.parse( + APIKeyDeploymentSetupConfigSourceProjectRelease$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'APIKeyDeploymentSetupConfigSourceApplicationRelease' from JSON`, + `Failed to parse 'APIKeyDeploymentSetupConfigSourceProjectRelease' from JSON`, ); } @@ -175,9 +181,7 @@ export const APIKeyDeploymentSetupConfigSourceUnion$inboundSchema: z.ZodType< APIKeyDeploymentSetupConfigSourceUnion, unknown > = z.union([ - z.lazy(() => - APIKeyDeploymentSetupConfigSourceApplicationRelease$inboundSchema - ), + z.lazy(() => APIKeyDeploymentSetupConfigSourceProjectRelease$inboundSchema), z.lazy(() => APIKeyDeploymentSetupConfigSourceBuiltIn$inboundSchema), ]); @@ -263,9 +267,7 @@ export const APIKeyDeploymentSetupConfigItem$inboundSchema: z.ZodType< > = z.object({ item: APIKeyDeploymentSetupConfigItemEnum$inboundSchema, source: z.union([ - z.lazy(() => - APIKeyDeploymentSetupConfigSourceApplicationRelease$inboundSchema - ), + z.lazy(() => APIKeyDeploymentSetupConfigSourceProjectRelease$inboundSchema), z.lazy(() => APIKeyDeploymentSetupConfigSourceBuiltIn$inboundSchema), ]), required: z.boolean(), diff --git a/client-sdks/platform/typescript/src/models/applycontainerregistrysnapshotresponse.ts b/client-sdks/platform/typescript/src/models/applycontainerregistrysnapshotresponse.ts new file mode 100644 index 000000000..525fb6eb5 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/applycontainerregistrysnapshotresponse.ts @@ -0,0 +1,50 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { ClosedEnum } from "../types/enums.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +export const ApplyContainerRegistrySnapshotResponseStatus = { + Applying: "applying", + Connected: "connected", + Degraded: "degraded", + Revoked: "revoked", +} as const; +export type ApplyContainerRegistrySnapshotResponseStatus = ClosedEnum< + typeof ApplyContainerRegistrySnapshotResponseStatus +>; + +export type ApplyContainerRegistrySnapshotResponse = { + appliedRevision: number; + status: ApplyContainerRegistrySnapshotResponseStatus; +}; + +/** @internal */ +export const ApplyContainerRegistrySnapshotResponseStatus$inboundSchema: + z.ZodEnum = z.enum( + ApplyContainerRegistrySnapshotResponseStatus, + ); + +/** @internal */ +export const ApplyContainerRegistrySnapshotResponse$inboundSchema: z.ZodType< + ApplyContainerRegistrySnapshotResponse, + unknown +> = z.object({ + appliedRevision: z.int(), + status: ApplyContainerRegistrySnapshotResponseStatus$inboundSchema, +}); + +export function applyContainerRegistrySnapshotResponseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ApplyContainerRegistrySnapshotResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ApplyContainerRegistrySnapshotResponse' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/billingfeatureflags.ts b/client-sdks/platform/typescript/src/models/billingfeatureflags.ts index 18062adce..4f4ab4032 100644 --- a/client-sdks/platform/typescript/src/models/billingfeatureflags.ts +++ b/client-sdks/platform/typescript/src/models/billingfeatureflags.ts @@ -11,6 +11,7 @@ import { SDKValidationError } from "./errors/sdkvalidationerror.js"; export type BillingFeatureFlags = { customDomains: boolean; privateManagers: boolean; + operationsCustomPlugins: boolean; ssoSaml: boolean; auditLogs: boolean; airgapped: boolean; @@ -23,6 +24,7 @@ export const BillingFeatureFlags$inboundSchema: z.ZodType< > = z.object({ custom_domains: z.boolean(), private_managers: z.boolean(), + operations_custom_plugins: z.boolean(), sso_saml: z.boolean(), audit_logs: z.boolean(), airgapped: z.boolean(), @@ -30,6 +32,7 @@ export const BillingFeatureFlags$inboundSchema: z.ZodType< return remap$(v, { "custom_domains": "customDomains", "private_managers": "privateManagers", + "operations_custom_plugins": "operationsCustomPlugins", "sso_saml": "ssoSaml", "audit_logs": "auditLogs", }); diff --git a/client-sdks/platform/typescript/src/models/capabilitymaterialization.ts b/client-sdks/platform/typescript/src/models/capabilitymaterialization.ts new file mode 100644 index 000000000..4a9b4b868 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/capabilitymaterialization.ts @@ -0,0 +1,135 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { ClosedEnum } from "../types/enums.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; +import { + ProjectCapabilities, + ProjectCapabilities$inboundSchema, +} from "./projectcapabilities.js"; + +export const CapabilityMaterializationDefinitionId = { + CustomerAi: "customer-ai", + CustomerKey: "customer-key", + CustomerStorage: "customer-storage", + CustomerRegistry: "customer-registry", +} as const; +export type CapabilityMaterializationDefinitionId = ClosedEnum< + typeof CapabilityMaterializationDefinitionId +>; + +export type CapabilityMaterializationSource = { + definitionId: CapabilityMaterializationDefinitionId; + definitionVersion: string; + releaseId: string; +}; + +export const CapabilityMaterializationType = { + Cloudformation: "cloudformation", + Terraform: "terraform", +} as const; +export type CapabilityMaterializationType = ClosedEnum< + typeof CapabilityMaterializationType +>; + +export const CapabilityMaterializationStatus = { + Pending: "pending", + Building: "building", + Ready: "ready", + Failed: "failed", + Canceled: "canceled", +} as const; +export type CapabilityMaterializationStatus = ClosedEnum< + typeof CapabilityMaterializationStatus +>; + +export type CapabilityMaterializationPackage = { + type: CapabilityMaterializationType; + status: CapabilityMaterializationStatus; +}; + +export type CapabilityMaterialization = { + projectCapabilities: ProjectCapabilities; + source: CapabilityMaterializationSource; + packages: Array; +}; + +/** @internal */ +export const CapabilityMaterializationDefinitionId$inboundSchema: z.ZodEnum< + typeof CapabilityMaterializationDefinitionId +> = z.enum(CapabilityMaterializationDefinitionId); + +/** @internal */ +export const CapabilityMaterializationSource$inboundSchema: z.ZodType< + CapabilityMaterializationSource, + unknown +> = z.object({ + definitionId: CapabilityMaterializationDefinitionId$inboundSchema, + definitionVersion: z.string(), + releaseId: z.string(), +}); + +export function capabilityMaterializationSourceFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CapabilityMaterializationSource$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CapabilityMaterializationSource' from JSON`, + ); +} + +/** @internal */ +export const CapabilityMaterializationType$inboundSchema: z.ZodEnum< + typeof CapabilityMaterializationType +> = z.enum(CapabilityMaterializationType); + +/** @internal */ +export const CapabilityMaterializationStatus$inboundSchema: z.ZodEnum< + typeof CapabilityMaterializationStatus +> = z.enum(CapabilityMaterializationStatus); + +/** @internal */ +export const CapabilityMaterializationPackage$inboundSchema: z.ZodType< + CapabilityMaterializationPackage, + unknown +> = z.object({ + type: CapabilityMaterializationType$inboundSchema, + status: CapabilityMaterializationStatus$inboundSchema, +}); + +export function capabilityMaterializationPackageFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CapabilityMaterializationPackage$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CapabilityMaterializationPackage' from JSON`, + ); +} + +/** @internal */ +export const CapabilityMaterialization$inboundSchema: z.ZodType< + CapabilityMaterialization, + unknown +> = z.object({ + projectCapabilities: ProjectCapabilities$inboundSchema, + source: z.lazy(() => CapabilityMaterializationSource$inboundSchema), + packages: z.array( + z.lazy(() => CapabilityMaterializationPackage$inboundSchema), + ), +}); + +export function capabilityMaterializationFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CapabilityMaterialization$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CapabilityMaterialization' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/commandbootstraprequest.ts b/client-sdks/platform/typescript/src/models/commandbootstraprequest.ts new file mode 100644 index 000000000..cd5551b44 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/commandbootstraprequest.ts @@ -0,0 +1,100 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; + +export type CommandBootstrapRequestReceiver = { + /** + * Unique identifier for the deployment. + */ + deploymentId: string; + role: "receiver"; + target: string; +}; + +export type CommandBootstrapRequestSender = { + /** + * Unique identifier for the deployment. + */ + deploymentId: string; + role: "sender"; +}; + +export type CommandBootstrapRequest = + | CommandBootstrapRequestSender + | CommandBootstrapRequestReceiver; + +/** @internal */ +export type CommandBootstrapRequestReceiver$Outbound = { + deploymentId: string; + role: "receiver"; + target: string; +}; + +/** @internal */ +export const CommandBootstrapRequestReceiver$outboundSchema: z.ZodType< + CommandBootstrapRequestReceiver$Outbound, + CommandBootstrapRequestReceiver +> = z.object({ + deploymentId: z.string(), + role: z.literal("receiver"), + target: z.string(), +}); + +export function commandBootstrapRequestReceiverToJSON( + commandBootstrapRequestReceiver: CommandBootstrapRequestReceiver, +): string { + return JSON.stringify( + CommandBootstrapRequestReceiver$outboundSchema.parse( + commandBootstrapRequestReceiver, + ), + ); +} + +/** @internal */ +export type CommandBootstrapRequestSender$Outbound = { + deploymentId: string; + role: "sender"; +}; + +/** @internal */ +export const CommandBootstrapRequestSender$outboundSchema: z.ZodType< + CommandBootstrapRequestSender$Outbound, + CommandBootstrapRequestSender +> = z.object({ + deploymentId: z.string(), + role: z.literal("sender"), +}); + +export function commandBootstrapRequestSenderToJSON( + commandBootstrapRequestSender: CommandBootstrapRequestSender, +): string { + return JSON.stringify( + CommandBootstrapRequestSender$outboundSchema.parse( + commandBootstrapRequestSender, + ), + ); +} + +/** @internal */ +export type CommandBootstrapRequest$Outbound = + | CommandBootstrapRequestSender$Outbound + | CommandBootstrapRequestReceiver$Outbound; + +/** @internal */ +export const CommandBootstrapRequest$outboundSchema: z.ZodType< + CommandBootstrapRequest$Outbound, + CommandBootstrapRequest +> = z.union([ + z.lazy(() => CommandBootstrapRequestSender$outboundSchema), + z.lazy(() => CommandBootstrapRequestReceiver$outboundSchema), +]); + +export function commandBootstrapRequestToJSON( + commandBootstrapRequest: CommandBootstrapRequest, +): string { + return JSON.stringify( + CommandBootstrapRequest$outboundSchema.parse(commandBootstrapRequest), + ); +} diff --git a/client-sdks/platform/typescript/src/models/commandbootstrapresponse.ts b/client-sdks/platform/typescript/src/models/commandbootstrapresponse.ts new file mode 100644 index 000000000..452485ec4 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/commandbootstrapresponse.ts @@ -0,0 +1,52 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { + CommandReceiverBootstrapTarget, + CommandReceiverBootstrapTarget$inboundSchema, +} from "./commandreceiverbootstraptarget.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +export type CommandBootstrapResponse = { + /** + * Current customer-facing manager URL + */ + managerUrl: string; + /** + * Short-lived command capability token + */ + token: string; + /** + * Capability expiry in RFC 3339 format + */ + expiresAt: Date; + /** + * Resolved target identity; present only for receiver bootstrap + */ + target?: CommandReceiverBootstrapTarget | undefined; +}; + +/** @internal */ +export const CommandBootstrapResponse$inboundSchema: z.ZodType< + CommandBootstrapResponse, + unknown +> = z.object({ + managerUrl: z.string(), + token: z.string(), + expiresAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), + target: CommandReceiverBootstrapTarget$inboundSchema.optional(), +}); + +export function commandBootstrapResponseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CommandBootstrapResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CommandBootstrapResponse' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/commandreceiverbootstraptarget.ts b/client-sdks/platform/typescript/src/models/commandreceiverbootstraptarget.ts new file mode 100644 index 000000000..9cb788d56 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/commandreceiverbootstraptarget.ts @@ -0,0 +1,50 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { ClosedEnum } from "../types/enums.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +export const CommandReceiverBootstrapTargetResourceType = { + Container: "container", + Daemon: "daemon", +} as const; +export type CommandReceiverBootstrapTargetResourceType = ClosedEnum< + typeof CommandReceiverBootstrapTargetResourceType +>; + +/** + * Resolved target identity; present only for receiver bootstrap + */ +export type CommandReceiverBootstrapTarget = { + resourceId: string; + resourceType: CommandReceiverBootstrapTargetResourceType; +}; + +/** @internal */ +export const CommandReceiverBootstrapTargetResourceType$inboundSchema: + z.ZodEnum = z.enum( + CommandReceiverBootstrapTargetResourceType, + ); + +/** @internal */ +export const CommandReceiverBootstrapTarget$inboundSchema: z.ZodType< + CommandReceiverBootstrapTarget, + unknown +> = z.object({ + resourceId: z.string(), + resourceType: CommandReceiverBootstrapTargetResourceType$inboundSchema, +}); + +export function commandReceiverBootstrapTargetFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CommandReceiverBootstrapTarget$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CommandReceiverBootstrapTarget' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/configurecustomermodelsrequest.ts b/client-sdks/platform/typescript/src/models/configurecustomermodelsrequest.ts deleted file mode 100644 index d033243fd..000000000 --- a/client-sdks/platform/typescript/src/models/configurecustomermodelsrequest.ts +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - */ - -import * as z from "zod/v4"; -import { ClosedEnum } from "../types/enums.js"; - -export const ConfigureCustomerModelsRequestAllowedProvider = { - AwsBedrock: "aws-bedrock", - GcpVertex: "gcp-vertex", - AzureFoundry: "azure-foundry", - Anthropic: "anthropic", -} as const; -export type ConfigureCustomerModelsRequestAllowedProvider = ClosedEnum< - typeof ConfigureCustomerModelsRequestAllowedProvider ->; - -export const ConfigureCustomerModelsRequestClientApi = { - OpenaiChat: "openai-chat", - OpenaiResponses: "openai-responses", - AnthropicMessages: "anthropic-messages", -} as const; -export type ConfigureCustomerModelsRequestClientApi = ClosedEnum< - typeof ConfigureCustomerModelsRequestClientApi ->; - -export type ConfigureCustomerModelsRequestRequirement = { - publicModelId: string; - clientApis: Array; - required: boolean; -}; - -export type ConfigureCustomerModelsRequest = { - allowedProviders: Array; - requirements: Array; -}; - -/** @internal */ -export const ConfigureCustomerModelsRequestAllowedProvider$outboundSchema: - z.ZodEnum = z.enum( - ConfigureCustomerModelsRequestAllowedProvider, - ); - -/** @internal */ -export const ConfigureCustomerModelsRequestClientApi$outboundSchema: z.ZodEnum< - typeof ConfigureCustomerModelsRequestClientApi -> = z.enum(ConfigureCustomerModelsRequestClientApi); - -/** @internal */ -export type ConfigureCustomerModelsRequestRequirement$Outbound = { - publicModelId: string; - clientApis: Array; - required: boolean; -}; - -/** @internal */ -export const ConfigureCustomerModelsRequestRequirement$outboundSchema: - z.ZodType< - ConfigureCustomerModelsRequestRequirement$Outbound, - ConfigureCustomerModelsRequestRequirement - > = z.object({ - publicModelId: z.string(), - clientApis: z.array(ConfigureCustomerModelsRequestClientApi$outboundSchema), - required: z.boolean(), - }); - -export function configureCustomerModelsRequestRequirementToJSON( - configureCustomerModelsRequestRequirement: - ConfigureCustomerModelsRequestRequirement, -): string { - return JSON.stringify( - ConfigureCustomerModelsRequestRequirement$outboundSchema.parse( - configureCustomerModelsRequestRequirement, - ), - ); -} - -/** @internal */ -export type ConfigureCustomerModelsRequest$Outbound = { - allowedProviders: Array; - requirements: Array; -}; - -/** @internal */ -export const ConfigureCustomerModelsRequest$outboundSchema: z.ZodType< - ConfigureCustomerModelsRequest$Outbound, - ConfigureCustomerModelsRequest -> = z.object({ - allowedProviders: z.array( - ConfigureCustomerModelsRequestAllowedProvider$outboundSchema, - ), - requirements: z.array( - z.lazy(() => ConfigureCustomerModelsRequestRequirement$outboundSchema), - ), -}); - -export function configureCustomerModelsRequestToJSON( - configureCustomerModelsRequest: ConfigureCustomerModelsRequest, -): string { - return JSON.stringify( - ConfigureCustomerModelsRequest$outboundSchema.parse( - configureCustomerModelsRequest, - ), - ); -} diff --git a/client-sdks/platform/typescript/src/models/configuremodelsrequest.ts b/client-sdks/platform/typescript/src/models/configuremodelsrequest.ts new file mode 100644 index 000000000..eec99aab5 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/configuremodelsrequest.ts @@ -0,0 +1,102 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { ClosedEnum } from "../types/enums.js"; + +export const ConfigureModelsRequestAllowedProvider = { + AwsBedrock: "aws-bedrock", + GcpVertex: "gcp-vertex", + AzureFoundry: "azure-foundry", + Anthropic: "anthropic", + Databricks: "databricks", + Openai: "openai", +} as const; +export type ConfigureModelsRequestAllowedProvider = ClosedEnum< + typeof ConfigureModelsRequestAllowedProvider +>; + +export const ConfigureModelsRequestClientApi = { + OpenaiChat: "openai-chat", + OpenaiResponses: "openai-responses", + AnthropicMessages: "anthropic-messages", +} as const; +export type ConfigureModelsRequestClientApi = ClosedEnum< + typeof ConfigureModelsRequestClientApi +>; + +export type ConfigureModelsRequestRequirement = { + publicModelId: string; + clientApis: Array; + required: boolean; +}; + +export type ConfigureModelsRequest = { + allowedProviders: Array; + requirements: Array; +}; + +/** @internal */ +export const ConfigureModelsRequestAllowedProvider$outboundSchema: z.ZodEnum< + typeof ConfigureModelsRequestAllowedProvider +> = z.enum(ConfigureModelsRequestAllowedProvider); + +/** @internal */ +export const ConfigureModelsRequestClientApi$outboundSchema: z.ZodEnum< + typeof ConfigureModelsRequestClientApi +> = z.enum(ConfigureModelsRequestClientApi); + +/** @internal */ +export type ConfigureModelsRequestRequirement$Outbound = { + publicModelId: string; + clientApis: Array; + required: boolean; +}; + +/** @internal */ +export const ConfigureModelsRequestRequirement$outboundSchema: z.ZodType< + ConfigureModelsRequestRequirement$Outbound, + ConfigureModelsRequestRequirement +> = z.object({ + publicModelId: z.string(), + clientApis: z.array(ConfigureModelsRequestClientApi$outboundSchema), + required: z.boolean(), +}); + +export function configureModelsRequestRequirementToJSON( + configureModelsRequestRequirement: ConfigureModelsRequestRequirement, +): string { + return JSON.stringify( + ConfigureModelsRequestRequirement$outboundSchema.parse( + configureModelsRequestRequirement, + ), + ); +} + +/** @internal */ +export type ConfigureModelsRequest$Outbound = { + allowedProviders: Array; + requirements: Array; +}; + +/** @internal */ +export const ConfigureModelsRequest$outboundSchema: z.ZodType< + ConfigureModelsRequest$Outbound, + ConfigureModelsRequest +> = z.object({ + allowedProviders: z.array( + ConfigureModelsRequestAllowedProvider$outboundSchema, + ), + requirements: z.array( + z.lazy(() => ConfigureModelsRequestRequirement$outboundSchema), + ), +}); + +export function configureModelsRequestToJSON( + configureModelsRequest: ConfigureModelsRequest, +): string { + return JSON.stringify( + ConfigureModelsRequest$outboundSchema.parse(configureModelsRequest), + ); +} diff --git a/client-sdks/platform/typescript/src/models/containerregistrymanagersnapshot.ts b/client-sdks/platform/typescript/src/models/containerregistrymanagersnapshot.ts new file mode 100644 index 000000000..762c85302 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/containerregistrymanagersnapshot.ts @@ -0,0 +1,208 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { ClosedEnum } from "../types/enums.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +export const ContainerRegistryManagerSnapshotStatus = { + Resolving: "resolving", + Applying: "applying", + Connected: "connected", + Degraded: "degraded", + Revoking: "revoking", + Revoked: "revoked", +} as const; +export type ContainerRegistryManagerSnapshotStatus = ClosedEnum< + typeof ContainerRegistryManagerSnapshotStatus +>; + +export const ContainerRegistryManagerSnapshotDesiredState = { + Present: "present", + DeleteRequested: "deleteRequested", + Deleted: "deleted", +} as const; +export type ContainerRegistryManagerSnapshotDesiredState = ClosedEnum< + typeof ContainerRegistryManagerSnapshotDesiredState +>; + +export type ContainerRegistryManagerSnapshotRepository = { + /** + * Unique identifier for the container registry repository. + */ + id: string; + logicalName: string; + desiredState: ContainerRegistryManagerSnapshotDesiredState; + routableUpstreamName: string | null; + remoteResourceRevision: string; +}; + +export const ContainerRegistryManagerSnapshotScope = { + Pull: "pull", + PushPull: "pushPull", +} as const; +export type ContainerRegistryManagerSnapshotScope = ClosedEnum< + typeof ContainerRegistryManagerSnapshotScope +>; + +export type ContainerRegistryManagerSnapshotCredential = { + /** + * Unique identifier for the container registry credential. + */ + id: string; + secretPrefix: string; + secretDigest: string; + scope: ContainerRegistryManagerSnapshotScope; + repositorySubset: Array | null; + expiresAt: Date | null; + revokedAt: Date | null; +}; + +export type ContainerRegistryManagerSnapshotRoute = { + /** + * Unique identifier for the container registry route. + */ + id: string; + deploymentId: string; + resourceId: string; + resourceRevision: string; + desiredRevision: number; + appliedRevision: number; + status: ContainerRegistryManagerSnapshotStatus; + repositories: Array; + credentials: Array; +}; + +export type ContainerRegistryManagerSnapshot = { + generatedAt: Date; + routes: Array; +}; + +/** @internal */ +export const ContainerRegistryManagerSnapshotStatus$inboundSchema: z.ZodEnum< + typeof ContainerRegistryManagerSnapshotStatus +> = z.enum(ContainerRegistryManagerSnapshotStatus); + +/** @internal */ +export const ContainerRegistryManagerSnapshotDesiredState$inboundSchema: + z.ZodEnum = z.enum( + ContainerRegistryManagerSnapshotDesiredState, + ); + +/** @internal */ +export const ContainerRegistryManagerSnapshotRepository$inboundSchema: + z.ZodType = z.object({ + id: z.string(), + logicalName: z.string(), + desiredState: ContainerRegistryManagerSnapshotDesiredState$inboundSchema, + routableUpstreamName: z.nullable(z.string()), + remoteResourceRevision: z.string(), + }); + +export function containerRegistryManagerSnapshotRepositoryFromJSON( + jsonString: string, +): SafeParseResult< + ContainerRegistryManagerSnapshotRepository, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + ContainerRegistryManagerSnapshotRepository$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'ContainerRegistryManagerSnapshotRepository' from JSON`, + ); +} + +/** @internal */ +export const ContainerRegistryManagerSnapshotScope$inboundSchema: z.ZodEnum< + typeof ContainerRegistryManagerSnapshotScope +> = z.enum(ContainerRegistryManagerSnapshotScope); + +/** @internal */ +export const ContainerRegistryManagerSnapshotCredential$inboundSchema: + z.ZodType = z.object({ + id: z.string(), + secretPrefix: z.string(), + secretDigest: z.string(), + scope: ContainerRegistryManagerSnapshotScope$inboundSchema, + repositorySubset: z.nullable(z.array(z.string())), + expiresAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + revokedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + }); + +export function containerRegistryManagerSnapshotCredentialFromJSON( + jsonString: string, +): SafeParseResult< + ContainerRegistryManagerSnapshotCredential, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + ContainerRegistryManagerSnapshotCredential$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'ContainerRegistryManagerSnapshotCredential' from JSON`, + ); +} + +/** @internal */ +export const ContainerRegistryManagerSnapshotRoute$inboundSchema: z.ZodType< + ContainerRegistryManagerSnapshotRoute, + unknown +> = z.object({ + id: z.string(), + deploymentId: z.string(), + resourceId: z.string(), + resourceRevision: z.string(), + desiredRevision: z.int(), + appliedRevision: z.int(), + status: ContainerRegistryManagerSnapshotStatus$inboundSchema, + repositories: z.array( + z.lazy(() => ContainerRegistryManagerSnapshotRepository$inboundSchema), + ), + credentials: z.array( + z.lazy(() => ContainerRegistryManagerSnapshotCredential$inboundSchema), + ), +}); + +export function containerRegistryManagerSnapshotRouteFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ContainerRegistryManagerSnapshotRoute$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ContainerRegistryManagerSnapshotRoute' from JSON`, + ); +} + +/** @internal */ +export const ContainerRegistryManagerSnapshot$inboundSchema: z.ZodType< + ContainerRegistryManagerSnapshot, + unknown +> = z.object({ + generatedAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), + routes: z.array( + z.lazy(() => ContainerRegistryManagerSnapshotRoute$inboundSchema), + ), +}); + +export function containerRegistryManagerSnapshotFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ContainerRegistryManagerSnapshot$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ContainerRegistryManagerSnapshot' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/containerregistrystate.ts b/client-sdks/platform/typescript/src/models/containerregistrystate.ts new file mode 100644 index 000000000..fb81d4a81 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/containerregistrystate.ts @@ -0,0 +1,262 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { ClosedEnum } from "../types/enums.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +export const ContainerRegistryStateRouteStatus = { + Resolving: "resolving", + Applying: "applying", + Connected: "connected", + Degraded: "degraded", + Revoking: "revoking", + Revoked: "revoked", +} as const; +export type ContainerRegistryStateRouteStatus = ClosedEnum< + typeof ContainerRegistryStateRouteStatus +>; + +export type ContainerRegistryStateRoute = { + /** + * Unique identifier for the container registry route. + */ + id: string; + /** + * Unique identifier for the deployment. + */ + deploymentId: string; + managerId: string; + resourceId: string; + resourceRevision: string; + desiredRevision: number; + appliedRevision: number; + status: ContainerRegistryStateRouteStatus; + lastVerifiedAt: Date | null; + lastError: string | null; +}; + +export const ContainerRegistryStateSource = { + Runtime: "runtime", + CustomDomain: "custom-domain", +} as const; +export type ContainerRegistryStateSource = ClosedEnum< + typeof ContainerRegistryStateSource +>; + +export type Endpoint = { + url: string; + source: ContainerRegistryStateSource; +}; + +export const ContainerRegistryStateDesiredState = { + Present: "present", + DeleteRequested: "deleteRequested", + Deleted: "deleted", +} as const; +export type ContainerRegistryStateDesiredState = ClosedEnum< + typeof ContainerRegistryStateDesiredState +>; + +export const RepositoryStatus = { + Pending: "pending", + Creating: "creating", + Ready: "ready", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type RepositoryStatus = ClosedEnum; + +export type ContainerRegistryStateRepository = { + /** + * Unique identifier for the container registry repository. + */ + id: string; + logicalName: string; + desiredState: ContainerRegistryStateDesiredState; + status: RepositoryStatus; + verifiedAt: Date | null; +}; + +export const ContainerRegistryStateScope = { + Pull: "pull", + PushPull: "pushPull", +} as const; +export type ContainerRegistryStateScope = ClosedEnum< + typeof ContainerRegistryStateScope +>; + +export type ContainerRegistryStateCredential = { + /** + * Unique identifier for the container registry credential. + */ + id: string; + label: string; + scope: ContainerRegistryStateScope; + repositorySubset: Array | null; + expiresAt: Date | null; + lastUsedAt: Date | null; + revokedAt: Date | null; + createdAt: Date; +}; + +export type ContainerRegistryState = { + route: ContainerRegistryStateRoute | null; + endpoint: Endpoint | null; + repositories: Array; + credentials: Array; +}; + +/** @internal */ +export const ContainerRegistryStateRouteStatus$inboundSchema: z.ZodEnum< + typeof ContainerRegistryStateRouteStatus +> = z.enum(ContainerRegistryStateRouteStatus); + +/** @internal */ +export const ContainerRegistryStateRoute$inboundSchema: z.ZodType< + ContainerRegistryStateRoute, + unknown +> = z.object({ + id: z.string(), + deploymentId: z.string(), + managerId: z.string(), + resourceId: z.string(), + resourceRevision: z.string(), + desiredRevision: z.int(), + appliedRevision: z.int(), + status: ContainerRegistryStateRouteStatus$inboundSchema, + lastVerifiedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + lastError: z.nullable(z.string()), +}); + +export function containerRegistryStateRouteFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ContainerRegistryStateRoute$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ContainerRegistryStateRoute' from JSON`, + ); +} + +/** @internal */ +export const ContainerRegistryStateSource$inboundSchema: z.ZodEnum< + typeof ContainerRegistryStateSource +> = z.enum(ContainerRegistryStateSource); + +/** @internal */ +export const Endpoint$inboundSchema: z.ZodType = z.object({ + url: z.string(), + source: ContainerRegistryStateSource$inboundSchema, +}); + +export function endpointFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Endpoint$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Endpoint' from JSON`, + ); +} + +/** @internal */ +export const ContainerRegistryStateDesiredState$inboundSchema: z.ZodEnum< + typeof ContainerRegistryStateDesiredState +> = z.enum(ContainerRegistryStateDesiredState); + +/** @internal */ +export const RepositoryStatus$inboundSchema: z.ZodEnum< + typeof RepositoryStatus +> = z.enum(RepositoryStatus); + +/** @internal */ +export const ContainerRegistryStateRepository$inboundSchema: z.ZodType< + ContainerRegistryStateRepository, + unknown +> = z.object({ + id: z.string(), + logicalName: z.string(), + desiredState: ContainerRegistryStateDesiredState$inboundSchema, + status: RepositoryStatus$inboundSchema, + verifiedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), +}); + +export function containerRegistryStateRepositoryFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ContainerRegistryStateRepository$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ContainerRegistryStateRepository' from JSON`, + ); +} + +/** @internal */ +export const ContainerRegistryStateScope$inboundSchema: z.ZodEnum< + typeof ContainerRegistryStateScope +> = z.enum(ContainerRegistryStateScope); + +/** @internal */ +export const ContainerRegistryStateCredential$inboundSchema: z.ZodType< + ContainerRegistryStateCredential, + unknown +> = z.object({ + id: z.string(), + label: z.string(), + scope: ContainerRegistryStateScope$inboundSchema, + repositorySubset: z.nullable(z.array(z.string())), + expiresAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + lastUsedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + revokedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + createdAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), +}); + +export function containerRegistryStateCredentialFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ContainerRegistryStateCredential$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ContainerRegistryStateCredential' from JSON`, + ); +} + +/** @internal */ +export const ContainerRegistryState$inboundSchema: z.ZodType< + ContainerRegistryState, + unknown +> = z.object({ + route: z.nullable(z.lazy(() => ContainerRegistryStateRoute$inboundSchema)), + endpoint: z.nullable(z.lazy(() => Endpoint$inboundSchema)), + repositories: z.array( + z.lazy(() => ContainerRegistryStateRepository$inboundSchema), + ), + credentials: z.array( + z.lazy(() => ContainerRegistryStateCredential$inboundSchema), + ), +}); + +export function containerRegistryStateFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ContainerRegistryState$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ContainerRegistryState' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/createcontainerregistrycredentialresponse.ts b/client-sdks/platform/typescript/src/models/createcontainerregistrycredentialresponse.ts new file mode 100644 index 000000000..953c4221e --- /dev/null +++ b/client-sdks/platform/typescript/src/models/createcontainerregistrycredentialresponse.ts @@ -0,0 +1,116 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { ClosedEnum } from "../types/enums.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +export const CreateContainerRegistryCredentialResponseScope = { + Pull: "pull", + PushPull: "pushPull", +} as const; +export type CreateContainerRegistryCredentialResponseScope = ClosedEnum< + typeof CreateContainerRegistryCredentialResponseScope +>; + +export type CreateContainerRegistryCredentialResponseCredential = { + /** + * Unique identifier for the container registry credential. + */ + id: string; + label: string; + scope: CreateContainerRegistryCredentialResponseScope; + repositorySubset: Array | null; + expiresAt: Date | null; + lastUsedAt: Date | null; + revokedAt: Date | null; + createdAt: Date; +}; + +export const UsernameEnum = { + Alien: "alien", +} as const; +export type UsernameEnum = ClosedEnum; + +export type CreateContainerRegistryCredentialResponse = { + credential: CreateContainerRegistryCredentialResponseCredential; + username: UsernameEnum; + password: string; +}; + +/** @internal */ +export const CreateContainerRegistryCredentialResponseScope$inboundSchema: + z.ZodEnum = z.enum( + CreateContainerRegistryCredentialResponseScope, + ); + +/** @internal */ +export const CreateContainerRegistryCredentialResponseCredential$inboundSchema: + z.ZodType = z + .object({ + id: z.string(), + label: z.string(), + scope: CreateContainerRegistryCredentialResponseScope$inboundSchema, + repositorySubset: z.nullable(z.array(z.string())), + expiresAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + lastUsedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + revokedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + createdAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), + }); + +export function createContainerRegistryCredentialResponseCredentialFromJSON( + jsonString: string, +): SafeParseResult< + CreateContainerRegistryCredentialResponseCredential, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + CreateContainerRegistryCredentialResponseCredential$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'CreateContainerRegistryCredentialResponseCredential' from JSON`, + ); +} + +/** @internal */ +export const UsernameEnum$inboundSchema: z.ZodEnum = z + .enum(UsernameEnum); + +/** @internal */ +export const CreateContainerRegistryCredentialResponse$inboundSchema: z.ZodType< + CreateContainerRegistryCredentialResponse, + unknown +> = z.object({ + credential: z.lazy(() => + CreateContainerRegistryCredentialResponseCredential$inboundSchema + ), + username: UsernameEnum$inboundSchema, + password: z.string(), +}); + +export function createContainerRegistryCredentialResponseFromJSON( + jsonString: string, +): SafeParseResult< + CreateContainerRegistryCredentialResponse, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + CreateContainerRegistryCredentialResponse$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'CreateContainerRegistryCredentialResponse' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/createdeploymenttokenrequest.ts b/client-sdks/platform/typescript/src/models/createdeploymenttokenrequest.ts index a515f8369..f3e3af5d5 100644 --- a/client-sdks/platform/typescript/src/models/createdeploymenttokenrequest.ts +++ b/client-sdks/platform/typescript/src/models/createdeploymenttokenrequest.ts @@ -12,13 +12,13 @@ export type CreateDeploymentTokenRequest = { /** * Optional expiration date for the deployment token */ - expiresAt?: Date | undefined; + expiresAt?: Date | null | undefined; }; /** @internal */ export type CreateDeploymentTokenRequest$Outbound = { description: string | null; - expiresAt?: string | undefined; + expiresAt?: string | null | undefined; }; /** @internal */ @@ -27,7 +27,7 @@ export const CreateDeploymentTokenRequest$outboundSchema: z.ZodType< CreateDeploymentTokenRequest > = z.object({ description: z.nullable(z.string()), - expiresAt: z.date().transform(v => v.toISOString()).optional(), + expiresAt: z.nullable(z.date().transform(v => v.toISOString())).optional(), }); export function createDeploymentTokenRequestToJSON( diff --git a/client-sdks/platform/typescript/src/models/createmanagerresponse.ts b/client-sdks/platform/typescript/src/models/createmanagerresponse.ts index 5653f1f98..0af593964 100644 --- a/client-sdks/platform/typescript/src/models/createmanagerresponse.ts +++ b/client-sdks/platform/typescript/src/models/createmanagerresponse.ts @@ -25,9 +25,11 @@ export type CreateManagerResponseSetupStatus = ClosedEnum< >; export const CreateManagerResponseItemEnum = { - AlienStack: "alien-stack", + Deployment: "deployment", Models: "models", Keys: "keys", + Bucket: "bucket", + Registry: "registry", } as const; export type CreateManagerResponseItemEnum = ClosedEnum< typeof CreateManagerResponseItemEnum @@ -36,6 +38,8 @@ export type CreateManagerResponseItemEnum = ClosedEnum< export const CreateManagerResponseDefinitionId = { CustomerAi: "customer-ai", CustomerKey: "customer-key", + CustomerStorage: "customer-storage", + CustomerRegistry: "customer-registry", } as const; export type CreateManagerResponseDefinitionId = ClosedEnum< typeof CreateManagerResponseDefinitionId @@ -51,8 +55,8 @@ export type CreateManagerResponseSourceBuiltIn = { sourceReleaseId: string; }; -export type CreateManagerResponseSourceApplicationRelease = { - type: "application-release"; +export type CreateManagerResponseSourceProjectRelease = { + type: "project-release"; releaseChannel: string; /** * Unique identifier for the release. @@ -62,7 +66,7 @@ export type CreateManagerResponseSourceApplicationRelease = { }; export type CreateManagerResponseSourceUnion = - | CreateManagerResponseSourceApplicationRelease + | CreateManagerResponseSourceProjectRelease | CreateManagerResponseSourceBuiltIn; export const CreateManagerResponseAllowedProvider = { @@ -70,6 +74,8 @@ export const CreateManagerResponseAllowedProvider = { GcpVertex: "gcp-vertex", AzureFoundry: "azure-foundry", Anthropic: "anthropic", + Databricks: "databricks", + Openai: "openai", } as const; export type CreateManagerResponseAllowedProvider = ClosedEnum< typeof CreateManagerResponseAllowedProvider @@ -98,7 +104,7 @@ export type CreateManagerResponseConfiguration = { export type CreateManagerResponseItem = { item: CreateManagerResponseItemEnum; source: - | CreateManagerResponseSourceApplicationRelease + | CreateManagerResponseSourceProjectRelease | CreateManagerResponseSourceBuiltIn; required: boolean; configuration?: CreateManagerResponseConfiguration | undefined; @@ -133,7 +139,33 @@ export type CreateManagerResponseSetupConfig = { environmentVariables: Array; }; +/** + * Failure-domain policy selected for a compute pool. + */ +export type CreateManagerResponseFailureDomains6 = { + /** + * Concrete provider domains selected during setup. + * + * @remarks + * Empty delegates deterministic selection to the provider setup implementation. + */ + selectedFailureDomains?: Array | undefined; + /** + * Number of distinct failure domains across which new stateful replicas may be spread. + */ + spread: number; +}; + +export type CreateManagerResponseFailureDomainsUnion6 = + | CreateManagerResponseFailureDomains6 + | any; + export type CreateManagerResponsePoolsAutoscale3 = { + failureDomains?: + | CreateManagerResponseFailureDomains6 + | any + | null + | undefined; /** * Provider machine type selected for this deployment. */ @@ -149,7 +181,33 @@ export type CreateManagerResponsePoolsAutoscale3 = { mode: "autoscale"; }; +/** + * Failure-domain policy selected for a compute pool. + */ +export type CreateManagerResponseFailureDomains5 = { + /** + * Concrete provider domains selected during setup. + * + * @remarks + * Empty delegates deterministic selection to the provider setup implementation. + */ + selectedFailureDomains?: Array | undefined; + /** + * Number of distinct failure domains across which new stateful replicas may be spread. + */ + spread: number; +}; + +export type CreateManagerResponseFailureDomainsUnion5 = + | CreateManagerResponseFailureDomains5 + | any; + export type CreateManagerResponsePoolsFixed3 = { + failureDomains?: + | CreateManagerResponseFailureDomains5 + | any + | null + | undefined; /** * Provider machine type selected for this deployment. */ @@ -1303,7 +1361,33 @@ export type CreateManagerResponseSetupTerraform = { stackSettings: CreateManagerResponseStackSettings3; }; +/** + * Failure-domain policy selected for a compute pool. + */ +export type CreateManagerResponseFailureDomains4 = { + /** + * Concrete provider domains selected during setup. + * + * @remarks + * Empty delegates deterministic selection to the provider setup implementation. + */ + selectedFailureDomains?: Array | undefined; + /** + * Number of distinct failure domains across which new stateful replicas may be spread. + */ + spread: number; +}; + +export type CreateManagerResponseFailureDomainsUnion4 = + | CreateManagerResponseFailureDomains4 + | any; + export type CreateManagerResponsePoolsAutoscale2 = { + failureDomains?: + | CreateManagerResponseFailureDomains4 + | any + | null + | undefined; /** * Provider machine type selected for this deployment. */ @@ -1319,7 +1403,33 @@ export type CreateManagerResponsePoolsAutoscale2 = { mode: "autoscale"; }; +/** + * Failure-domain policy selected for a compute pool. + */ +export type CreateManagerResponseFailureDomains3 = { + /** + * Concrete provider domains selected during setup. + * + * @remarks + * Empty delegates deterministic selection to the provider setup implementation. + */ + selectedFailureDomains?: Array | undefined; + /** + * Number of distinct failure domains across which new stateful replicas may be spread. + */ + spread: number; +}; + +export type CreateManagerResponseFailureDomainsUnion3 = + | CreateManagerResponseFailureDomains3 + | any; + export type CreateManagerResponsePoolsFixed2 = { + failureDomains?: + | CreateManagerResponseFailureDomains3 + | any + | null + | undefined; /** * Provider machine type selected for this deployment. */ @@ -2468,7 +2578,33 @@ export type CreateManagerResponseSetupGoogleOauth = { stackSettings: CreateManagerResponseStackSettings2; }; +/** + * Failure-domain policy selected for a compute pool. + */ +export type CreateManagerResponseFailureDomains2 = { + /** + * Concrete provider domains selected during setup. + * + * @remarks + * Empty delegates deterministic selection to the provider setup implementation. + */ + selectedFailureDomains?: Array | undefined; + /** + * Number of distinct failure domains across which new stateful replicas may be spread. + */ + spread: number; +}; + +export type CreateManagerResponseFailureDomainsUnion2 = + | CreateManagerResponseFailureDomains2 + | any; + export type CreateManagerResponsePoolsAutoscale1 = { + failureDomains?: + | CreateManagerResponseFailureDomains2 + | any + | null + | undefined; /** * Provider machine type selected for this deployment. */ @@ -2484,7 +2620,33 @@ export type CreateManagerResponsePoolsAutoscale1 = { mode: "autoscale"; }; +/** + * Failure-domain policy selected for a compute pool. + */ +export type CreateManagerResponseFailureDomains1 = { + /** + * Concrete provider domains selected during setup. + * + * @remarks + * Empty delegates deterministic selection to the provider setup implementation. + */ + selectedFailureDomains?: Array | undefined; + /** + * Number of distinct failure domains across which new stateful replicas may be spread. + */ + spread: number; +}; + +export type CreateManagerResponseFailureDomainsUnion1 = + | CreateManagerResponseFailureDomains1 + | any; + export type CreateManagerResponsePoolsFixed1 = { + failureDomains?: + | CreateManagerResponseFailureDomains1 + | any + | null + | undefined; /** * Provider machine type selected for this deployment. */ @@ -3690,27 +3852,29 @@ export function createManagerResponseSourceBuiltInFromJSON( } /** @internal */ -export const CreateManagerResponseSourceApplicationRelease$inboundSchema: - z.ZodType = z.object({ - type: z.literal("application-release"), - releaseChannel: z.string(), - releaseId: z.string(), - resourceId: z.string().optional(), - }); +export const CreateManagerResponseSourceProjectRelease$inboundSchema: z.ZodType< + CreateManagerResponseSourceProjectRelease, + unknown +> = z.object({ + type: z.literal("project-release"), + releaseChannel: z.string(), + releaseId: z.string(), + resourceId: z.string().optional(), +}); -export function createManagerResponseSourceApplicationReleaseFromJSON( +export function createManagerResponseSourceProjectReleaseFromJSON( jsonString: string, ): SafeParseResult< - CreateManagerResponseSourceApplicationRelease, + CreateManagerResponseSourceProjectRelease, SDKValidationError > { return safeParse( jsonString, (x) => - CreateManagerResponseSourceApplicationRelease$inboundSchema.parse( + CreateManagerResponseSourceProjectRelease$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'CreateManagerResponseSourceApplicationRelease' from JSON`, + `Failed to parse 'CreateManagerResponseSourceProjectRelease' from JSON`, ); } @@ -3719,7 +3883,7 @@ export const CreateManagerResponseSourceUnion$inboundSchema: z.ZodType< CreateManagerResponseSourceUnion, unknown > = z.union([ - z.lazy(() => CreateManagerResponseSourceApplicationRelease$inboundSchema), + z.lazy(() => CreateManagerResponseSourceProjectRelease$inboundSchema), z.lazy(() => CreateManagerResponseSourceBuiltIn$inboundSchema), ]); @@ -3794,7 +3958,7 @@ export const CreateManagerResponseItem$inboundSchema: z.ZodType< > = z.object({ item: CreateManagerResponseItemEnum$inboundSchema, source: z.union([ - z.lazy(() => CreateManagerResponseSourceApplicationRelease$inboundSchema), + z.lazy(() => CreateManagerResponseSourceProjectRelease$inboundSchema), z.lazy(() => CreateManagerResponseSourceBuiltIn$inboundSchema), ]), required: z.boolean(), @@ -3871,15 +4035,70 @@ export function createManagerResponseSetupConfigFromJSON( ); } +/** @internal */ +export const CreateManagerResponseFailureDomains6$inboundSchema: z.ZodType< + CreateManagerResponseFailureDomains6, + unknown +> = z.object({ + selectedFailureDomains: z.array(z.string()).optional(), + spread: z.int(), +}); + +export function createManagerResponseFailureDomains6FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseFailureDomains6$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseFailureDomains6' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseFailureDomainsUnion6$inboundSchema: z.ZodType< + CreateManagerResponseFailureDomainsUnion6, + unknown +> = z.union([ + z.lazy(() => CreateManagerResponseFailureDomains6$inboundSchema), + z.any(), +]); + +export function createManagerResponseFailureDomainsUnion6FromJSON( + jsonString: string, +): SafeParseResult< + CreateManagerResponseFailureDomainsUnion6, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + CreateManagerResponseFailureDomainsUnion6$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'CreateManagerResponseFailureDomainsUnion6' from JSON`, + ); +} + /** @internal */ export const CreateManagerResponsePoolsAutoscale3$inboundSchema: z.ZodType< CreateManagerResponsePoolsAutoscale3, unknown > = z.object({ + failure_domains: z.nullable( + z.union([ + z.lazy(() => CreateManagerResponseFailureDomains6$inboundSchema), + z.any(), + ]), + ).optional(), machine: z.nullable(z.string()).optional(), max: z.int(), min: z.int(), mode: z.literal("autoscale"), +}).transform((v) => { + return remap$(v, { + "failure_domains": "failureDomains", + }); }); export function createManagerResponsePoolsAutoscale3FromJSON( @@ -3893,14 +4112,69 @@ export function createManagerResponsePoolsAutoscale3FromJSON( ); } +/** @internal */ +export const CreateManagerResponseFailureDomains5$inboundSchema: z.ZodType< + CreateManagerResponseFailureDomains5, + unknown +> = z.object({ + selectedFailureDomains: z.array(z.string()).optional(), + spread: z.int(), +}); + +export function createManagerResponseFailureDomains5FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseFailureDomains5$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseFailureDomains5' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseFailureDomainsUnion5$inboundSchema: z.ZodType< + CreateManagerResponseFailureDomainsUnion5, + unknown +> = z.union([ + z.lazy(() => CreateManagerResponseFailureDomains5$inboundSchema), + z.any(), +]); + +export function createManagerResponseFailureDomainsUnion5FromJSON( + jsonString: string, +): SafeParseResult< + CreateManagerResponseFailureDomainsUnion5, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + CreateManagerResponseFailureDomainsUnion5$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'CreateManagerResponseFailureDomainsUnion5' from JSON`, + ); +} + /** @internal */ export const CreateManagerResponsePoolsFixed3$inboundSchema: z.ZodType< CreateManagerResponsePoolsFixed3, unknown > = z.object({ + failure_domains: z.nullable( + z.union([ + z.lazy(() => CreateManagerResponseFailureDomains5$inboundSchema), + z.any(), + ]), + ).optional(), machine: z.nullable(z.string()).optional(), machines: z.int(), mode: z.literal("fixed"), +}).transform((v) => { + return remap$(v, { + "failure_domains": "failureDomains", + }); }); export function createManagerResponsePoolsFixed3FromJSON( @@ -5854,15 +6128,70 @@ export function createManagerResponseSetupTerraformFromJSON( ); } +/** @internal */ +export const CreateManagerResponseFailureDomains4$inboundSchema: z.ZodType< + CreateManagerResponseFailureDomains4, + unknown +> = z.object({ + selectedFailureDomains: z.array(z.string()).optional(), + spread: z.int(), +}); + +export function createManagerResponseFailureDomains4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseFailureDomains4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseFailureDomains4' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseFailureDomainsUnion4$inboundSchema: z.ZodType< + CreateManagerResponseFailureDomainsUnion4, + unknown +> = z.union([ + z.lazy(() => CreateManagerResponseFailureDomains4$inboundSchema), + z.any(), +]); + +export function createManagerResponseFailureDomainsUnion4FromJSON( + jsonString: string, +): SafeParseResult< + CreateManagerResponseFailureDomainsUnion4, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + CreateManagerResponseFailureDomainsUnion4$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'CreateManagerResponseFailureDomainsUnion4' from JSON`, + ); +} + /** @internal */ export const CreateManagerResponsePoolsAutoscale2$inboundSchema: z.ZodType< CreateManagerResponsePoolsAutoscale2, unknown > = z.object({ + failure_domains: z.nullable( + z.union([ + z.lazy(() => CreateManagerResponseFailureDomains4$inboundSchema), + z.any(), + ]), + ).optional(), machine: z.nullable(z.string()).optional(), max: z.int(), min: z.int(), mode: z.literal("autoscale"), +}).transform((v) => { + return remap$(v, { + "failure_domains": "failureDomains", + }); }); export function createManagerResponsePoolsAutoscale2FromJSON( @@ -5876,14 +6205,69 @@ export function createManagerResponsePoolsAutoscale2FromJSON( ); } +/** @internal */ +export const CreateManagerResponseFailureDomains3$inboundSchema: z.ZodType< + CreateManagerResponseFailureDomains3, + unknown +> = z.object({ + selectedFailureDomains: z.array(z.string()).optional(), + spread: z.int(), +}); + +export function createManagerResponseFailureDomains3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseFailureDomains3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseFailureDomains3' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseFailureDomainsUnion3$inboundSchema: z.ZodType< + CreateManagerResponseFailureDomainsUnion3, + unknown +> = z.union([ + z.lazy(() => CreateManagerResponseFailureDomains3$inboundSchema), + z.any(), +]); + +export function createManagerResponseFailureDomainsUnion3FromJSON( + jsonString: string, +): SafeParseResult< + CreateManagerResponseFailureDomainsUnion3, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + CreateManagerResponseFailureDomainsUnion3$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'CreateManagerResponseFailureDomainsUnion3' from JSON`, + ); +} + /** @internal */ export const CreateManagerResponsePoolsFixed2$inboundSchema: z.ZodType< CreateManagerResponsePoolsFixed2, unknown > = z.object({ + failure_domains: z.nullable( + z.union([ + z.lazy(() => CreateManagerResponseFailureDomains3$inboundSchema), + z.any(), + ]), + ).optional(), machine: z.nullable(z.string()).optional(), machines: z.int(), mode: z.literal("fixed"), +}).transform((v) => { + return remap$(v, { + "failure_domains": "failureDomains", + }); }); export function createManagerResponsePoolsFixed2FromJSON( @@ -7832,15 +8216,70 @@ export function createManagerResponseSetupGoogleOauthFromJSON( ); } +/** @internal */ +export const CreateManagerResponseFailureDomains2$inboundSchema: z.ZodType< + CreateManagerResponseFailureDomains2, + unknown +> = z.object({ + selectedFailureDomains: z.array(z.string()).optional(), + spread: z.int(), +}); + +export function createManagerResponseFailureDomains2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseFailureDomains2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseFailureDomains2' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseFailureDomainsUnion2$inboundSchema: z.ZodType< + CreateManagerResponseFailureDomainsUnion2, + unknown +> = z.union([ + z.lazy(() => CreateManagerResponseFailureDomains2$inboundSchema), + z.any(), +]); + +export function createManagerResponseFailureDomainsUnion2FromJSON( + jsonString: string, +): SafeParseResult< + CreateManagerResponseFailureDomainsUnion2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + CreateManagerResponseFailureDomainsUnion2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'CreateManagerResponseFailureDomainsUnion2' from JSON`, + ); +} + /** @internal */ export const CreateManagerResponsePoolsAutoscale1$inboundSchema: z.ZodType< CreateManagerResponsePoolsAutoscale1, unknown > = z.object({ + failure_domains: z.nullable( + z.union([ + z.lazy(() => CreateManagerResponseFailureDomains2$inboundSchema), + z.any(), + ]), + ).optional(), machine: z.nullable(z.string()).optional(), max: z.int(), min: z.int(), mode: z.literal("autoscale"), +}).transform((v) => { + return remap$(v, { + "failure_domains": "failureDomains", + }); }); export function createManagerResponsePoolsAutoscale1FromJSON( @@ -7854,14 +8293,69 @@ export function createManagerResponsePoolsAutoscale1FromJSON( ); } +/** @internal */ +export const CreateManagerResponseFailureDomains1$inboundSchema: z.ZodType< + CreateManagerResponseFailureDomains1, + unknown +> = z.object({ + selectedFailureDomains: z.array(z.string()).optional(), + spread: z.int(), +}); + +export function createManagerResponseFailureDomains1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseFailureDomains1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseFailureDomains1' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseFailureDomainsUnion1$inboundSchema: z.ZodType< + CreateManagerResponseFailureDomainsUnion1, + unknown +> = z.union([ + z.lazy(() => CreateManagerResponseFailureDomains1$inboundSchema), + z.any(), +]); + +export function createManagerResponseFailureDomainsUnion1FromJSON( + jsonString: string, +): SafeParseResult< + CreateManagerResponseFailureDomainsUnion1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + CreateManagerResponseFailureDomainsUnion1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'CreateManagerResponseFailureDomainsUnion1' from JSON`, + ); +} + /** @internal */ export const CreateManagerResponsePoolsFixed1$inboundSchema: z.ZodType< CreateManagerResponsePoolsFixed1, unknown > = z.object({ + failure_domains: z.nullable( + z.union([ + z.lazy(() => CreateManagerResponseFailureDomains1$inboundSchema), + z.any(), + ]), + ).optional(), machine: z.nullable(z.string()).optional(), machines: z.int(), mode: z.literal("fixed"), +}).transform((v) => { + return remap$(v, { + "failure_domains": "failureDomains", + }); }); export function createManagerResponsePoolsFixed1FromJSON( diff --git a/client-sdks/platform/typescript/src/models/createreleaserequest.ts b/client-sdks/platform/typescript/src/models/createreleaserequest.ts index 6ea40be7e..5a13956a7 100644 --- a/client-sdks/platform/typescript/src/models/createreleaserequest.ts +++ b/client-sdks/platform/typescript/src/models/createreleaserequest.ts @@ -21,8 +21,9 @@ export type CreateReleaseRequest = { project: string; version?: string | undefined; gitMetadata?: GitMetadata | null | undefined; - stack?: StackByPlatform | null | undefined; + stack?: StackByPlatform | undefined; rootDirectory?: string | null | undefined; + channel?: string | undefined; }; /** @internal */ @@ -30,8 +31,9 @@ export type CreateReleaseRequest$Outbound = { project: string; version?: string | undefined; gitMetadata?: GitMetadata$Outbound | null | undefined; - stack?: StackByPlatform$Outbound | null | undefined; + stack?: StackByPlatform$Outbound | undefined; rootDirectory?: string | null | undefined; + channel?: string | undefined; }; /** @internal */ @@ -42,8 +44,9 @@ export const CreateReleaseRequest$outboundSchema: z.ZodType< project: z.string(), version: z.string().optional(), gitMetadata: z.nullable(GitMetadata$outboundSchema).optional(), - stack: z.nullable(StackByPlatform$outboundSchema).optional(), + stack: StackByPlatform$outboundSchema.optional(), rootDirectory: z.nullable(z.string()).optional(), + channel: z.string().optional(), }); export function createReleaseRequestToJSON( diff --git a/client-sdks/platform/typescript/src/models/createsetupregistrationoperationrequest.ts b/client-sdks/platform/typescript/src/models/createsetupregistrationoperationrequest.ts index 619dd8779..d6a3c0f1c 100644 --- a/client-sdks/platform/typescript/src/models/createsetupregistrationoperationrequest.ts +++ b/client-sdks/platform/typescript/src/models/createsetupregistrationoperationrequest.ts @@ -52,7 +52,33 @@ export type CreateSetupRegistrationOperationRequestPlatform = ClosedEnum< typeof CreateSetupRegistrationOperationRequestPlatform >; +/** + * Failure-domain policy selected for a compute pool. + */ +export type CreateSetupRegistrationOperationRequestFailureDomains2 = { + /** + * Concrete provider domains selected during setup. + * + * @remarks + * Empty delegates deterministic selection to the provider setup implementation. + */ + selectedFailureDomains?: Array | undefined; + /** + * Number of distinct failure domains across which new stateful replicas may be spread. + */ + spread: number; +}; + +export type CreateSetupRegistrationOperationRequestFailureDomainsUnion2 = + | CreateSetupRegistrationOperationRequestFailureDomains2 + | any; + export type CreateSetupRegistrationOperationRequestPoolsAutoscale = { + failureDomains?: + | CreateSetupRegistrationOperationRequestFailureDomains2 + | any + | null + | undefined; /** * Provider machine type selected for this deployment. */ @@ -68,7 +94,33 @@ export type CreateSetupRegistrationOperationRequestPoolsAutoscale = { mode: "autoscale"; }; +/** + * Failure-domain policy selected for a compute pool. + */ +export type CreateSetupRegistrationOperationRequestFailureDomains1 = { + /** + * Concrete provider domains selected during setup. + * + * @remarks + * Empty delegates deterministic selection to the provider setup implementation. + */ + selectedFailureDomains?: Array | undefined; + /** + * Number of distinct failure domains across which new stateful replicas may be spread. + */ + spread: number; +}; + +export type CreateSetupRegistrationOperationRequestFailureDomainsUnion1 = + | CreateSetupRegistrationOperationRequestFailureDomains1 + | any; + export type CreateSetupRegistrationOperationRequestPoolsFixed = { + failureDomains?: + | CreateSetupRegistrationOperationRequestFailureDomains1 + | any + | null + | undefined; /** * Provider machine type selected for this deployment. */ @@ -1406,8 +1458,67 @@ export const CreateSetupRegistrationOperationRequestPlatform$outboundSchema: CreateSetupRegistrationOperationRequestPlatform, ); +/** @internal */ +export type CreateSetupRegistrationOperationRequestFailureDomains2$Outbound = { + selectedFailureDomains?: Array | undefined; + spread: number; +}; + +/** @internal */ +export const CreateSetupRegistrationOperationRequestFailureDomains2$outboundSchema: + z.ZodType< + CreateSetupRegistrationOperationRequestFailureDomains2$Outbound, + CreateSetupRegistrationOperationRequestFailureDomains2 + > = z.object({ + selectedFailureDomains: z.array(z.string()).optional(), + spread: z.int(), + }); + +export function createSetupRegistrationOperationRequestFailureDomains2ToJSON( + createSetupRegistrationOperationRequestFailureDomains2: + CreateSetupRegistrationOperationRequestFailureDomains2, +): string { + return JSON.stringify( + CreateSetupRegistrationOperationRequestFailureDomains2$outboundSchema.parse( + createSetupRegistrationOperationRequestFailureDomains2, + ), + ); +} + +/** @internal */ +export type CreateSetupRegistrationOperationRequestFailureDomainsUnion2$Outbound = + | CreateSetupRegistrationOperationRequestFailureDomains2$Outbound + | any; + +/** @internal */ +export const CreateSetupRegistrationOperationRequestFailureDomainsUnion2$outboundSchema: + z.ZodType< + CreateSetupRegistrationOperationRequestFailureDomainsUnion2$Outbound, + CreateSetupRegistrationOperationRequestFailureDomainsUnion2 + > = z.union([ + z.lazy(() => + CreateSetupRegistrationOperationRequestFailureDomains2$outboundSchema + ), + z.any(), + ]); + +export function createSetupRegistrationOperationRequestFailureDomainsUnion2ToJSON( + createSetupRegistrationOperationRequestFailureDomainsUnion2: + CreateSetupRegistrationOperationRequestFailureDomainsUnion2, +): string { + return JSON.stringify( + CreateSetupRegistrationOperationRequestFailureDomainsUnion2$outboundSchema + .parse(createSetupRegistrationOperationRequestFailureDomainsUnion2), + ); +} + /** @internal */ export type CreateSetupRegistrationOperationRequestPoolsAutoscale$Outbound = { + failure_domains?: + | CreateSetupRegistrationOperationRequestFailureDomains2$Outbound + | any + | null + | undefined; machine?: string | null | undefined; max: number; min: number; @@ -1420,10 +1531,22 @@ export const CreateSetupRegistrationOperationRequestPoolsAutoscale$outboundSchem CreateSetupRegistrationOperationRequestPoolsAutoscale$Outbound, CreateSetupRegistrationOperationRequestPoolsAutoscale > = z.object({ + failureDomains: z.nullable( + z.union([ + z.lazy(() => + CreateSetupRegistrationOperationRequestFailureDomains2$outboundSchema + ), + z.any(), + ]), + ).optional(), machine: z.nullable(z.string()).optional(), max: z.int(), min: z.int(), mode: z.literal("autoscale"), + }).transform((v) => { + return remap$(v, { + failureDomains: "failure_domains", + }); }); export function createSetupRegistrationOperationRequestPoolsAutoscaleToJSON( @@ -1437,8 +1560,67 @@ export function createSetupRegistrationOperationRequestPoolsAutoscaleToJSON( ); } +/** @internal */ +export type CreateSetupRegistrationOperationRequestFailureDomains1$Outbound = { + selectedFailureDomains?: Array | undefined; + spread: number; +}; + +/** @internal */ +export const CreateSetupRegistrationOperationRequestFailureDomains1$outboundSchema: + z.ZodType< + CreateSetupRegistrationOperationRequestFailureDomains1$Outbound, + CreateSetupRegistrationOperationRequestFailureDomains1 + > = z.object({ + selectedFailureDomains: z.array(z.string()).optional(), + spread: z.int(), + }); + +export function createSetupRegistrationOperationRequestFailureDomains1ToJSON( + createSetupRegistrationOperationRequestFailureDomains1: + CreateSetupRegistrationOperationRequestFailureDomains1, +): string { + return JSON.stringify( + CreateSetupRegistrationOperationRequestFailureDomains1$outboundSchema.parse( + createSetupRegistrationOperationRequestFailureDomains1, + ), + ); +} + +/** @internal */ +export type CreateSetupRegistrationOperationRequestFailureDomainsUnion1$Outbound = + | CreateSetupRegistrationOperationRequestFailureDomains1$Outbound + | any; + +/** @internal */ +export const CreateSetupRegistrationOperationRequestFailureDomainsUnion1$outboundSchema: + z.ZodType< + CreateSetupRegistrationOperationRequestFailureDomainsUnion1$Outbound, + CreateSetupRegistrationOperationRequestFailureDomainsUnion1 + > = z.union([ + z.lazy(() => + CreateSetupRegistrationOperationRequestFailureDomains1$outboundSchema + ), + z.any(), + ]); + +export function createSetupRegistrationOperationRequestFailureDomainsUnion1ToJSON( + createSetupRegistrationOperationRequestFailureDomainsUnion1: + CreateSetupRegistrationOperationRequestFailureDomainsUnion1, +): string { + return JSON.stringify( + CreateSetupRegistrationOperationRequestFailureDomainsUnion1$outboundSchema + .parse(createSetupRegistrationOperationRequestFailureDomainsUnion1), + ); +} + /** @internal */ export type CreateSetupRegistrationOperationRequestPoolsFixed$Outbound = { + failure_domains?: + | CreateSetupRegistrationOperationRequestFailureDomains1$Outbound + | any + | null + | undefined; machine?: string | null | undefined; machines: number; mode: "fixed"; @@ -1450,9 +1632,21 @@ export const CreateSetupRegistrationOperationRequestPoolsFixed$outboundSchema: CreateSetupRegistrationOperationRequestPoolsFixed$Outbound, CreateSetupRegistrationOperationRequestPoolsFixed > = z.object({ + failureDomains: z.nullable( + z.union([ + z.lazy(() => + CreateSetupRegistrationOperationRequestFailureDomains1$outboundSchema + ), + z.any(), + ]), + ).optional(), machine: z.nullable(z.string()).optional(), machines: z.int(), mode: z.literal("fixed"), + }).transform((v) => { + return remap$(v, { + failureDomains: "failure_domains", + }); }); export function createSetupRegistrationOperationRequestPoolsFixedToJSON( diff --git a/client-sdks/platform/typescript/src/models/customerconnectionmaterialization.ts b/client-sdks/platform/typescript/src/models/customerconnectionmaterialization.ts deleted file mode 100644 index b8aefae5f..000000000 --- a/client-sdks/platform/typescript/src/models/customerconnectionmaterialization.ts +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - */ - -import * as z from "zod/v4"; -import { safeParse } from "../lib/schemas.js"; -import { ClosedEnum } from "../types/enums.js"; -import { Result as SafeParseResult } from "../types/fp.js"; -import { - CustomerConnections, - CustomerConnections$inboundSchema, -} from "./customerconnections.js"; -import { SDKValidationError } from "./errors/sdkvalidationerror.js"; - -export const CustomerConnectionMaterializationDefinitionId = { - CustomerAi: "customer-ai", - CustomerKey: "customer-key", -} as const; -export type CustomerConnectionMaterializationDefinitionId = ClosedEnum< - typeof CustomerConnectionMaterializationDefinitionId ->; - -export type CustomerConnectionMaterializationSource = { - definitionId: CustomerConnectionMaterializationDefinitionId; - definitionVersion: string; - releaseId: string; -}; - -export const CustomerConnectionMaterializationType = { - Cloudformation: "cloudformation", - Terraform: "terraform", -} as const; -export type CustomerConnectionMaterializationType = ClosedEnum< - typeof CustomerConnectionMaterializationType ->; - -export const CustomerConnectionMaterializationStatus = { - Pending: "pending", - Building: "building", - Ready: "ready", - Failed: "failed", - Canceled: "canceled", -} as const; -export type CustomerConnectionMaterializationStatus = ClosedEnum< - typeof CustomerConnectionMaterializationStatus ->; - -export type CustomerConnectionMaterializationPackage = { - type: CustomerConnectionMaterializationType; - status: CustomerConnectionMaterializationStatus; -}; - -export type CustomerConnectionMaterialization = { - customerConnections: CustomerConnections; - source: CustomerConnectionMaterializationSource; - packages: Array; -}; - -/** @internal */ -export const CustomerConnectionMaterializationDefinitionId$inboundSchema: - z.ZodEnum = z.enum( - CustomerConnectionMaterializationDefinitionId, - ); - -/** @internal */ -export const CustomerConnectionMaterializationSource$inboundSchema: z.ZodType< - CustomerConnectionMaterializationSource, - unknown -> = z.object({ - definitionId: CustomerConnectionMaterializationDefinitionId$inboundSchema, - definitionVersion: z.string(), - releaseId: z.string(), -}); - -export function customerConnectionMaterializationSourceFromJSON( - jsonString: string, -): SafeParseResult< - CustomerConnectionMaterializationSource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - CustomerConnectionMaterializationSource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'CustomerConnectionMaterializationSource' from JSON`, - ); -} - -/** @internal */ -export const CustomerConnectionMaterializationType$inboundSchema: z.ZodEnum< - typeof CustomerConnectionMaterializationType -> = z.enum(CustomerConnectionMaterializationType); - -/** @internal */ -export const CustomerConnectionMaterializationStatus$inboundSchema: z.ZodEnum< - typeof CustomerConnectionMaterializationStatus -> = z.enum(CustomerConnectionMaterializationStatus); - -/** @internal */ -export const CustomerConnectionMaterializationPackage$inboundSchema: z.ZodType< - CustomerConnectionMaterializationPackage, - unknown -> = z.object({ - type: CustomerConnectionMaterializationType$inboundSchema, - status: CustomerConnectionMaterializationStatus$inboundSchema, -}); - -export function customerConnectionMaterializationPackageFromJSON( - jsonString: string, -): SafeParseResult< - CustomerConnectionMaterializationPackage, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - CustomerConnectionMaterializationPackage$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'CustomerConnectionMaterializationPackage' from JSON`, - ); -} - -/** @internal */ -export const CustomerConnectionMaterialization$inboundSchema: z.ZodType< - CustomerConnectionMaterialization, - unknown -> = z.object({ - customerConnections: CustomerConnections$inboundSchema, - source: z.lazy(() => CustomerConnectionMaterializationSource$inboundSchema), - packages: z.array( - z.lazy(() => CustomerConnectionMaterializationPackage$inboundSchema), - ), -}); - -export function customerConnectionMaterializationFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CustomerConnectionMaterialization$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CustomerConnectionMaterialization' from JSON`, - ); -} diff --git a/client-sdks/platform/typescript/src/models/customerconnections.ts b/client-sdks/platform/typescript/src/models/customerconnections.ts deleted file mode 100644 index af146822a..000000000 --- a/client-sdks/platform/typescript/src/models/customerconnections.ts +++ /dev/null @@ -1,164 +0,0 @@ -/* - * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - */ - -import * as z from "zod/v4"; -import { safeParse } from "../lib/schemas.js"; -import { ClosedEnum } from "../types/enums.js"; -import { Result as SafeParseResult } from "../types/fp.js"; -import { SDKValidationError } from "./errors/sdkvalidationerror.js"; - -export type CustomerConnectionsKeys = { - enabled: boolean; - applicationEncryption: boolean; -}; - -export const CustomerConnectionsAllowedProvider = { - AwsBedrock: "aws-bedrock", - GcpVertex: "gcp-vertex", - AzureFoundry: "azure-foundry", - Anthropic: "anthropic", -} as const; -export type CustomerConnectionsAllowedProvider = ClosedEnum< - typeof CustomerConnectionsAllowedProvider ->; - -export const CustomerConnectionsClientApi = { - OpenaiChat: "openai-chat", - OpenaiResponses: "openai-responses", - AnthropicMessages: "anthropic-messages", -} as const; -export type CustomerConnectionsClientApi = ClosedEnum< - typeof CustomerConnectionsClientApi ->; - -export type CustomerConnectionsRequirement = { - publicModelId: string; - clientApis: Array; - required: boolean; -}; - -export type CustomerConnectionsModels = { - enabled: boolean; - allowedProviders: Array; - requirements: Array; -}; - -export type CustomerConnectionsConnections = { - keys?: CustomerConnectionsKeys | undefined; - models?: CustomerConnectionsModels | undefined; -}; - -export type CustomerConnections = { - schemaVersion: number; - connections: CustomerConnectionsConnections; -}; - -/** @internal */ -export const CustomerConnectionsKeys$inboundSchema: z.ZodType< - CustomerConnectionsKeys, - unknown -> = z.object({ - enabled: z.boolean(), - applicationEncryption: z.boolean(), -}); - -export function customerConnectionsKeysFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CustomerConnectionsKeys$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CustomerConnectionsKeys' from JSON`, - ); -} - -/** @internal */ -export const CustomerConnectionsAllowedProvider$inboundSchema: z.ZodEnum< - typeof CustomerConnectionsAllowedProvider -> = z.enum(CustomerConnectionsAllowedProvider); - -/** @internal */ -export const CustomerConnectionsClientApi$inboundSchema: z.ZodEnum< - typeof CustomerConnectionsClientApi -> = z.enum(CustomerConnectionsClientApi); - -/** @internal */ -export const CustomerConnectionsRequirement$inboundSchema: z.ZodType< - CustomerConnectionsRequirement, - unknown -> = z.object({ - publicModelId: z.string(), - clientApis: z.array(CustomerConnectionsClientApi$inboundSchema), - required: z.boolean(), -}); - -export function customerConnectionsRequirementFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CustomerConnectionsRequirement$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CustomerConnectionsRequirement' from JSON`, - ); -} - -/** @internal */ -export const CustomerConnectionsModels$inboundSchema: z.ZodType< - CustomerConnectionsModels, - unknown -> = z.object({ - enabled: z.boolean(), - allowedProviders: z.array(CustomerConnectionsAllowedProvider$inboundSchema), - requirements: z.array( - z.lazy(() => CustomerConnectionsRequirement$inboundSchema), - ), -}); - -export function customerConnectionsModelsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CustomerConnectionsModels$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CustomerConnectionsModels' from JSON`, - ); -} - -/** @internal */ -export const CustomerConnectionsConnections$inboundSchema: z.ZodType< - CustomerConnectionsConnections, - unknown -> = z.object({ - keys: z.lazy(() => CustomerConnectionsKeys$inboundSchema).optional(), - models: z.lazy(() => CustomerConnectionsModels$inboundSchema).optional(), -}); - -export function customerConnectionsConnectionsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CustomerConnectionsConnections$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CustomerConnectionsConnections' from JSON`, - ); -} - -/** @internal */ -export const CustomerConnections$inboundSchema: z.ZodType< - CustomerConnections, - unknown -> = z.object({ - schemaVersion: z.number(), - connections: z.lazy(() => CustomerConnectionsConnections$inboundSchema), -}); - -export function customerConnectionsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CustomerConnections$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CustomerConnections' from JSON`, - ); -} diff --git a/client-sdks/platform/typescript/src/models/deployment.ts b/client-sdks/platform/typescript/src/models/deployment.ts index 1af8d8efc..c0544f597 100644 --- a/client-sdks/platform/typescript/src/models/deployment.ts +++ b/client-sdks/platform/typescript/src/models/deployment.ts @@ -14,6 +14,10 @@ import { DeploymentPurpose, DeploymentPurpose$inboundSchema, } from "./deploymentpurpose.js"; +import { + DeploymentUpdateOperationSummary, + DeploymentUpdateOperationSummary$inboundSchema, +} from "./deploymentupdateoperationsummary.js"; import { EnvironmentVariableConfig, EnvironmentVariableConfig$inboundSchema, @@ -218,7 +222,27 @@ export type DeploymentEnvironmentInfoUnion = | DeploymentEnvironmentInfoTest | any; +/** + * Failure-domain policy selected for a compute pool. + */ +export type DeploymentFailureDomains2 = { + /** + * Concrete provider domains selected during setup. + * + * @remarks + * Empty delegates deterministic selection to the provider setup implementation. + */ + selectedFailureDomains?: Array | undefined; + /** + * Number of distinct failure domains across which new stateful replicas may be spread. + */ + spread: number; +}; + +export type DeploymentFailureDomainsUnion2 = DeploymentFailureDomains2 | any; + export type DeploymentPoolsAutoscale = { + failureDomains?: DeploymentFailureDomains2 | any | null | undefined; /** * Provider machine type selected for this deployment. */ @@ -234,7 +258,27 @@ export type DeploymentPoolsAutoscale = { mode: "autoscale"; }; +/** + * Failure-domain policy selected for a compute pool. + */ +export type DeploymentFailureDomains1 = { + /** + * Concrete provider domains selected during setup. + * + * @remarks + * Empty delegates deterministic selection to the provider setup implementation. + */ + selectedFailureDomains?: Array | undefined; + /** + * Number of distinct failure domains across which new stateful replicas may be spread. + */ + spread: number; +}; + +export type DeploymentFailureDomainsUnion1 = DeploymentFailureDomains1 | any; + export type DeploymentPoolsFixed = { + failureDomains?: DeploymentFailureDomains1 | any | null | undefined; /** * Provider machine type selected for this deployment. */ @@ -1608,85 +1652,109 @@ export type DeploymentStackState = { resources: { [k: string]: DeploymentStackStateResources }; }; -export const DeploymentTypeStringList = { +/** + * Actor that owns structural work during the initial setup phase. + */ +export const DeploymentInitialSetupAuthority = { + ImportedHandoff: "importedHandoff", + DirectSetup: "directSetup", +} as const; +/** + * Actor that owns structural work during the initial setup phase. + */ +export type DeploymentInitialSetupAuthority = ClosedEnum< + typeof DeploymentInitialSetupAuthority +>; + +export const DeploymentPendingPreparedStackTypeStringList = { StringList: "stringList", } as const; -export type DeploymentTypeStringList = ClosedEnum< - typeof DeploymentTypeStringList +export type DeploymentPendingPreparedStackTypeStringList = ClosedEnum< + typeof DeploymentPendingPreparedStackTypeStringList >; -export type DeploymentDefaultStringList = { - type: DeploymentTypeStringList; +export type DeploymentPendingPreparedStackDefaultStringList = { + type: DeploymentPendingPreparedStackTypeStringList; /** * String list default. */ value: Array; }; -export const DeploymentTypeBoolean = { +export const DeploymentPendingPreparedStackTypeBoolean = { Boolean: "boolean", } as const; -export type DeploymentTypeBoolean = ClosedEnum; +export type DeploymentPendingPreparedStackTypeBoolean = ClosedEnum< + typeof DeploymentPendingPreparedStackTypeBoolean +>; -export type DeploymentDefaultBoolean = { - type: DeploymentTypeBoolean; +export type DeploymentPendingPreparedStackDefaultBoolean = { + type: DeploymentPendingPreparedStackTypeBoolean; /** * Boolean default. */ value: boolean; }; -export const DeploymentTypeNumber = { +export const DeploymentPendingPreparedStackTypeNumber = { Number: "number", } as const; -export type DeploymentTypeNumber = ClosedEnum; +export type DeploymentPendingPreparedStackTypeNumber = ClosedEnum< + typeof DeploymentPendingPreparedStackTypeNumber +>; -export type DeploymentDefaultNumber = { - type: DeploymentTypeNumber; +export type DeploymentPendingPreparedStackDefaultNumber = { + type: DeploymentPendingPreparedStackTypeNumber; /** * Number default. */ value: string; }; -export const DeploymentTypeString = { +export const DeploymentPendingPreparedStackTypeString = { String: "string", } as const; -export type DeploymentTypeString = ClosedEnum; +export type DeploymentPendingPreparedStackTypeString = ClosedEnum< + typeof DeploymentPendingPreparedStackTypeString +>; -export type DeploymentDefaultString = { - type: DeploymentTypeString; +export type DeploymentPendingPreparedStackDefaultString = { + type: DeploymentPendingPreparedStackTypeString; /** * String default. */ value: string; }; -export type DeploymentDefaultUnion = - | DeploymentDefaultString - | DeploymentDefaultNumber - | DeploymentDefaultBoolean - | DeploymentDefaultStringList +export type DeploymentPendingPreparedStackDefaultUnion = + | DeploymentPendingPreparedStackDefaultString + | DeploymentPendingPreparedStackDefaultNumber + | DeploymentPendingPreparedStackDefaultBoolean + | DeploymentPendingPreparedStackDefaultStringList | any; /** * Environment variable handling for a stack input mapping. */ -export const DeploymentTypeEnvEnum = { +export const DeploymentPendingPreparedStackTypeEnvEnum = { Plain: "plain", Secret: "secret", } as const; /** * Environment variable handling for a stack input mapping. */ -export type DeploymentTypeEnvEnum = ClosedEnum; +export type DeploymentPendingPreparedStackTypeEnvEnum = ClosedEnum< + typeof DeploymentPendingPreparedStackTypeEnvEnum +>; -export type DeploymentTypeUnion = DeploymentTypeEnvEnum | any; +export type DeploymentPendingPreparedStackTypeUnion = + | DeploymentPendingPreparedStackTypeEnvEnum + | any; /** * How a resolved stack input is injected into runtime environment variables. */ -export type DeploymentEnv = { +export type DeploymentPendingPreparedStackEnv = { /** * Environment variable name. */ @@ -1695,13 +1763,13 @@ export type DeploymentEnv = { * Target resource IDs or patterns. None means every env-capable resource. */ targetResources?: Array | null | undefined; - type?: DeploymentTypeEnvEnum | any | null | undefined; + type?: DeploymentPendingPreparedStackTypeEnvEnum | any | null | undefined; }; /** * Primitive stack input kind. */ -export const DeploymentKind = { +export const DeploymentPendingPreparedStackKind = { String: "string", Secret: "secret", Number: "number", @@ -1713,12 +1781,14 @@ export const DeploymentKind = { /** * Primitive stack input kind. */ -export type DeploymentKind = ClosedEnum; +export type DeploymentPendingPreparedStackKind = ClosedEnum< + typeof DeploymentPendingPreparedStackKind +>; /** * Represents the target cloud platform. */ -export const DeploymentPreparedStackPlatform = { +export const DeploymentPendingPreparedStackPlatform = { Aws: "aws", Gcp: "gcp", Azure: "azure", @@ -1730,26 +1800,28 @@ export const DeploymentPreparedStackPlatform = { /** * Represents the target cloud platform. */ -export type DeploymentPreparedStackPlatform = ClosedEnum< - typeof DeploymentPreparedStackPlatform +export type DeploymentPendingPreparedStackPlatform = ClosedEnum< + typeof DeploymentPendingPreparedStackPlatform >; /** * Who can provide a stack input value. */ -export const DeploymentProvidedBy = { +export const DeploymentPendingPreparedStackProvidedBy = { Developer: "developer", Deployer: "deployer", } as const; /** * Who can provide a stack input value. */ -export type DeploymentProvidedBy = ClosedEnum; +export type DeploymentPendingPreparedStackProvidedBy = ClosedEnum< + typeof DeploymentPendingPreparedStackProvidedBy +>; /** * Portable stack input validation constraints. */ -export type DeploymentValidation = { +export type DeploymentPendingPreparedStackValidation = { /** * Semantic format hint such as url. */ @@ -1788,17 +1860,19 @@ export type DeploymentValidation = { values?: Array | null | undefined; }; -export type DeploymentValidationUnion = DeploymentValidation | any; +export type DeploymentPendingPreparedStackValidationUnion = + | DeploymentPendingPreparedStackValidation + | any; /** * Stack input definition serialized into a release stack. */ -export type DeploymentInput = { +export type DeploymentPendingPreparedStackInput = { default?: - | DeploymentDefaultString - | DeploymentDefaultNumber - | DeploymentDefaultBoolean - | DeploymentDefaultStringList + | DeploymentPendingPreparedStackDefaultString + | DeploymentPendingPreparedStackDefaultNumber + | DeploymentPendingPreparedStackDefaultBoolean + | DeploymentPendingPreparedStackDefaultStringList | any | null | undefined; @@ -1809,7 +1883,7 @@ export type DeploymentInput = { /** * Runtime env-var mappings for v1 input resolution. */ - env?: Array | undefined; + env?: Array | undefined; /** * Stable input ID used by CLI/API calls. */ @@ -1817,7 +1891,7 @@ export type DeploymentInput = { /** * Primitive stack input kind. */ - kind: DeploymentKind; + kind: DeploymentPendingPreparedStackKind; /** * Human-facing field label. */ @@ -1829,29 +1903,33 @@ export type DeploymentInput = { /** * Platforms where this input applies. */ - platforms?: Array | null | undefined; + platforms?: Array | null | undefined; /** * Who can provide this value. */ - providedBy: Array; + providedBy: Array; /** * Whether a resolved value is required before deployment can proceed. */ required: boolean; - validation?: DeploymentValidation | any | null | undefined; + validation?: + | DeploymentPendingPreparedStackValidation + | any + | null + | undefined; }; -export const DeploymentManagementEnum = { +export const DeploymentPendingPreparedStackManagementEnum = { Auto: "auto", } as const; -export type DeploymentManagementEnum = ClosedEnum< - typeof DeploymentManagementEnum +export type DeploymentPendingPreparedStackManagementEnum = ClosedEnum< + typeof DeploymentPendingPreparedStackManagementEnum >; /** * AWS-specific binding specification */ -export type DeploymentOverrideAwResource = { +export type DeploymentPendingPreparedStackOverrideAwResource = { /** * Optional condition for additional filtering (rare) */ @@ -1865,7 +1943,7 @@ export type DeploymentOverrideAwResource = { /** * AWS-specific binding specification */ -export type DeploymentOverrideAwStack = { +export type DeploymentPendingPreparedStackOverrideAwStack = { /** * Optional condition for additional filtering (rare) */ @@ -1879,35 +1957,35 @@ export type DeploymentOverrideAwStack = { /** * Generic binding configuration for permissions */ -export type DeploymentOverrideAwBinding = { +export type DeploymentPendingPreparedStackOverrideAwBinding = { /** * AWS-specific binding specification */ - resource?: DeploymentOverrideAwResource | undefined; + resource?: DeploymentPendingPreparedStackOverrideAwResource | undefined; /** * AWS-specific binding specification */ - stack?: DeploymentOverrideAwStack | undefined; + stack?: DeploymentPendingPreparedStackOverrideAwStack | undefined; }; /** * IAM effect. Defaults to Allow. */ -export const DeploymentOverrideEffect = { +export const DeploymentPendingPreparedStackOverrideEffect = { Allow: "Allow", Deny: "Deny", } as const; /** * IAM effect. Defaults to Allow. */ -export type DeploymentOverrideEffect = ClosedEnum< - typeof DeploymentOverrideEffect +export type DeploymentPendingPreparedStackOverrideEffect = ClosedEnum< + typeof DeploymentPendingPreparedStackOverrideEffect >; /** * Grant permissions for a specific cloud platform */ -export type DeploymentOverrideAwGrant = { +export type DeploymentPendingPreparedStackOverrideAwGrant = { /** * AWS IAM actions (only for AWS) */ @@ -1933,11 +2011,11 @@ export type DeploymentOverrideAwGrant = { /** * AWS-specific platform permission configuration */ -export type DeploymentOverrideAw = { +export type DeploymentPendingPreparedStackOverrideAw = { /** * Generic binding configuration for permissions */ - binding: DeploymentOverrideAwBinding; + binding: DeploymentPendingPreparedStackOverrideAwBinding; /** * Short admin-facing description of why this entry exists. */ @@ -1945,11 +2023,11 @@ export type DeploymentOverrideAw = { /** * IAM effect. Defaults to Allow. */ - effect?: DeploymentOverrideEffect | undefined; + effect?: DeploymentPendingPreparedStackOverrideEffect | undefined; /** * Grant permissions for a specific cloud platform */ - grant: DeploymentOverrideAwGrant; + grant: DeploymentPendingPreparedStackOverrideAwGrant; /** * Stable admin-facing label for this permission entry. */ @@ -1959,7 +2037,7 @@ export type DeploymentOverrideAw = { /** * Azure-specific binding specification */ -export type DeploymentOverrideAzureResource = { +export type DeploymentPendingPreparedStackOverrideAzureResource = { /** * Scope (subscription/resource group/resource level) */ @@ -1969,7 +2047,7 @@ export type DeploymentOverrideAzureResource = { /** * Azure-specific binding specification */ -export type DeploymentOverrideAzureStack = { +export type DeploymentPendingPreparedStackOverrideAzureStack = { /** * Scope (subscription/resource group/resource level) */ @@ -1979,21 +2057,21 @@ export type DeploymentOverrideAzureStack = { /** * Generic binding configuration for permissions */ -export type DeploymentOverrideAzureBinding = { +export type DeploymentPendingPreparedStackOverrideAzureBinding = { /** * Azure-specific binding specification */ - resource?: DeploymentOverrideAzureResource | undefined; + resource?: DeploymentPendingPreparedStackOverrideAzureResource | undefined; /** * Azure-specific binding specification */ - stack?: DeploymentOverrideAzureStack | undefined; + stack?: DeploymentPendingPreparedStackOverrideAzureStack | undefined; }; /** * Grant permissions for a specific cloud platform */ -export type DeploymentOverrideAzureGrant = { +export type DeploymentPendingPreparedStackOverrideAzureGrant = { /** * AWS IAM actions (only for AWS) */ @@ -2019,11 +2097,11 @@ export type DeploymentOverrideAzureGrant = { /** * Azure-specific platform permission configuration */ -export type DeploymentOverrideAzure = { +export type DeploymentPendingPreparedStackOverrideAzure = { /** * Generic binding configuration for permissions */ - binding: DeploymentOverrideAzureBinding; + binding: DeploymentPendingPreparedStackOverrideAzureBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2031,7 +2109,7 @@ export type DeploymentOverrideAzure = { /** * Grant permissions for a specific cloud platform */ - grant: DeploymentOverrideAzureGrant; + grant: DeploymentPendingPreparedStackOverrideAzureGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2041,20 +2119,24 @@ export type DeploymentOverrideAzure = { /** * GCP IAM condition */ -export type DeploymentOverrideConditionResource = { +export type DeploymentPendingPreparedStackOverrideConditionResource = { expression: string; title: string; }; -export type DeploymentOverrideResourceConditionUnion = - | DeploymentOverrideConditionResource +export type DeploymentPendingPreparedStackOverrideResourceConditionUnion = + | DeploymentPendingPreparedStackOverrideConditionResource | any; /** * GCP-specific binding specification */ -export type DeploymentOverrideGcpResource = { - condition?: DeploymentOverrideConditionResource | any | null | undefined; +export type DeploymentPendingPreparedStackOverrideGcpResource = { + condition?: + | DeploymentPendingPreparedStackOverrideConditionResource + | any + | null + | undefined; /** * Scope (project/resource level) */ @@ -2064,20 +2146,24 @@ export type DeploymentOverrideGcpResource = { /** * GCP IAM condition */ -export type DeploymentOverrideConditionStack = { +export type DeploymentPendingPreparedStackOverrideConditionStack = { expression: string; title: string; }; -export type DeploymentOverrideStackConditionUnion = - | DeploymentOverrideConditionStack +export type DeploymentPendingPreparedStackOverrideStackConditionUnion = + | DeploymentPendingPreparedStackOverrideConditionStack | any; /** * GCP-specific binding specification */ -export type DeploymentOverrideGcpStack = { - condition?: DeploymentOverrideConditionStack | any | null | undefined; +export type DeploymentPendingPreparedStackOverrideGcpStack = { + condition?: + | DeploymentPendingPreparedStackOverrideConditionStack + | any + | null + | undefined; /** * Scope (project/resource level) */ @@ -2087,21 +2173,21 @@ export type DeploymentOverrideGcpStack = { /** * Generic binding configuration for permissions */ -export type DeploymentOverrideGcpBinding = { +export type DeploymentPendingPreparedStackOverrideGcpBinding = { /** * GCP-specific binding specification */ - resource?: DeploymentOverrideGcpResource | undefined; + resource?: DeploymentPendingPreparedStackOverrideGcpResource | undefined; /** * GCP-specific binding specification */ - stack?: DeploymentOverrideGcpStack | undefined; + stack?: DeploymentPendingPreparedStackOverrideGcpStack | undefined; }; /** * Grant permissions for a specific cloud platform */ -export type DeploymentOverrideGcpGrant = { +export type DeploymentPendingPreparedStackOverrideGcpGrant = { /** * AWS IAM actions (only for AWS) */ @@ -2127,11 +2213,11 @@ export type DeploymentOverrideGcpGrant = { /** * GCP-specific platform permission configuration */ -export type DeploymentOverrideGcp = { +export type DeploymentPendingPreparedStackOverrideGcp = { /** * Generic binding configuration for permissions */ - binding: DeploymentOverrideGcpBinding; + binding: DeploymentPendingPreparedStackOverrideGcpBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2139,7 +2225,7 @@ export type DeploymentOverrideGcp = { /** * Grant permissions for a specific cloud platform */ - grant: DeploymentOverrideGcpGrant; + grant: DeploymentPendingPreparedStackOverrideGcpGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2149,25 +2235,25 @@ export type DeploymentOverrideGcp = { /** * Platform-specific permission configurations */ -export type DeploymentOverridePlatforms = { +export type DeploymentPendingPreparedStackOverridePlatforms = { /** * AWS permission configurations */ - aws?: Array | null | undefined; + aws?: Array | null | undefined; /** * Azure permission configurations */ - azure?: Array | null | undefined; + azure?: Array | null | undefined; /** * GCP permission configurations */ - gcp?: Array | null | undefined; + gcp?: Array | null | undefined; }; /** * A permission set that can be applied across different cloud platforms */ -export type DeploymentOverride = { +export type DeploymentPendingPreparedStackOverride = { /** * Human-readable description of what this permission set allows */ @@ -2179,28 +2265,32 @@ export type DeploymentOverride = { /** * Platform-specific permission configurations */ - platforms: DeploymentOverridePlatforms; + platforms: DeploymentPendingPreparedStackOverridePlatforms; }; /** * Reference to a permission set - either by name or inline definition */ -export type DeploymentOverrideUnion = DeploymentOverride | string; +export type DeploymentPendingPreparedStackOverrideUnion = + | DeploymentPendingPreparedStackOverride + | string; -export type DeploymentManagement2 = { +export type DeploymentPendingPreparedStackManagement2 = { /** * Permission profile that maps resources to permission sets * * @remarks * Key can be "*" for all resources or resource name for specific resource */ - override: { [k: string]: Array }; + override: { + [k: string]: Array; + }; }; /** * AWS-specific binding specification */ -export type DeploymentExtendAwResource = { +export type DeploymentPendingPreparedStackExtendAwResource = { /** * Optional condition for additional filtering (rare) */ @@ -2214,7 +2304,7 @@ export type DeploymentExtendAwResource = { /** * AWS-specific binding specification */ -export type DeploymentExtendAwStack = { +export type DeploymentPendingPreparedStackExtendAwStack = { /** * Optional condition for additional filtering (rare) */ @@ -2228,33 +2318,35 @@ export type DeploymentExtendAwStack = { /** * Generic binding configuration for permissions */ -export type DeploymentExtendAwBinding = { +export type DeploymentPendingPreparedStackExtendAwBinding = { /** * AWS-specific binding specification */ - resource?: DeploymentExtendAwResource | undefined; + resource?: DeploymentPendingPreparedStackExtendAwResource | undefined; /** * AWS-specific binding specification */ - stack?: DeploymentExtendAwStack | undefined; + stack?: DeploymentPendingPreparedStackExtendAwStack | undefined; }; /** * IAM effect. Defaults to Allow. */ -export const DeploymentExtendEffect = { +export const DeploymentPendingPreparedStackExtendEffect = { Allow: "Allow", Deny: "Deny", } as const; /** * IAM effect. Defaults to Allow. */ -export type DeploymentExtendEffect = ClosedEnum; +export type DeploymentPendingPreparedStackExtendEffect = ClosedEnum< + typeof DeploymentPendingPreparedStackExtendEffect +>; /** * Grant permissions for a specific cloud platform */ -export type DeploymentExtendAwGrant = { +export type DeploymentPendingPreparedStackExtendAwGrant = { /** * AWS IAM actions (only for AWS) */ @@ -2280,11 +2372,11 @@ export type DeploymentExtendAwGrant = { /** * AWS-specific platform permission configuration */ -export type DeploymentExtendAw = { +export type DeploymentPendingPreparedStackExtendAw = { /** * Generic binding configuration for permissions */ - binding: DeploymentExtendAwBinding; + binding: DeploymentPendingPreparedStackExtendAwBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2292,11 +2384,11 @@ export type DeploymentExtendAw = { /** * IAM effect. Defaults to Allow. */ - effect?: DeploymentExtendEffect | undefined; + effect?: DeploymentPendingPreparedStackExtendEffect | undefined; /** * Grant permissions for a specific cloud platform */ - grant: DeploymentExtendAwGrant; + grant: DeploymentPendingPreparedStackExtendAwGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2306,7 +2398,7 @@ export type DeploymentExtendAw = { /** * Azure-specific binding specification */ -export type DeploymentExtendAzureResource = { +export type DeploymentPendingPreparedStackExtendAzureResource = { /** * Scope (subscription/resource group/resource level) */ @@ -2316,7 +2408,7 @@ export type DeploymentExtendAzureResource = { /** * Azure-specific binding specification */ -export type DeploymentExtendAzureStack = { +export type DeploymentPendingPreparedStackExtendAzureStack = { /** * Scope (subscription/resource group/resource level) */ @@ -2326,21 +2418,21 @@ export type DeploymentExtendAzureStack = { /** * Generic binding configuration for permissions */ -export type DeploymentExtendAzureBinding = { +export type DeploymentPendingPreparedStackExtendAzureBinding = { /** * Azure-specific binding specification */ - resource?: DeploymentExtendAzureResource | undefined; + resource?: DeploymentPendingPreparedStackExtendAzureResource | undefined; /** * Azure-specific binding specification */ - stack?: DeploymentExtendAzureStack | undefined; + stack?: DeploymentPendingPreparedStackExtendAzureStack | undefined; }; /** * Grant permissions for a specific cloud platform */ -export type DeploymentExtendAzureGrant = { +export type DeploymentPendingPreparedStackExtendAzureGrant = { /** * AWS IAM actions (only for AWS) */ @@ -2366,11 +2458,11 @@ export type DeploymentExtendAzureGrant = { /** * Azure-specific platform permission configuration */ -export type DeploymentExtendAzure = { +export type DeploymentPendingPreparedStackExtendAzure = { /** * Generic binding configuration for permissions */ - binding: DeploymentExtendAzureBinding; + binding: DeploymentPendingPreparedStackExtendAzureBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2378,7 +2470,7 @@ export type DeploymentExtendAzure = { /** * Grant permissions for a specific cloud platform */ - grant: DeploymentExtendAzureGrant; + grant: DeploymentPendingPreparedStackExtendAzureGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2388,20 +2480,24 @@ export type DeploymentExtendAzure = { /** * GCP IAM condition */ -export type DeploymentExtendConditionResource = { +export type DeploymentPendingPreparedStackExtendConditionResource = { expression: string; title: string; }; -export type DeploymentExtendResourceConditionUnion = - | DeploymentExtendConditionResource +export type DeploymentPendingPreparedStackExtendResourceConditionUnion = + | DeploymentPendingPreparedStackExtendConditionResource | any; /** * GCP-specific binding specification */ -export type DeploymentExtendGcpResource = { - condition?: DeploymentExtendConditionResource | any | null | undefined; +export type DeploymentPendingPreparedStackExtendGcpResource = { + condition?: + | DeploymentPendingPreparedStackExtendConditionResource + | any + | null + | undefined; /** * Scope (project/resource level) */ @@ -2411,20 +2507,24 @@ export type DeploymentExtendGcpResource = { /** * GCP IAM condition */ -export type DeploymentExtendConditionStack = { +export type DeploymentPendingPreparedStackExtendConditionStack = { expression: string; title: string; }; -export type DeploymentExtendStackConditionUnion = - | DeploymentExtendConditionStack +export type DeploymentPendingPreparedStackExtendStackConditionUnion = + | DeploymentPendingPreparedStackExtendConditionStack | any; /** * GCP-specific binding specification */ -export type DeploymentExtendGcpStack = { - condition?: DeploymentExtendConditionStack | any | null | undefined; +export type DeploymentPendingPreparedStackExtendGcpStack = { + condition?: + | DeploymentPendingPreparedStackExtendConditionStack + | any + | null + | undefined; /** * Scope (project/resource level) */ @@ -2434,21 +2534,21 @@ export type DeploymentExtendGcpStack = { /** * Generic binding configuration for permissions */ -export type DeploymentExtendGcpBinding = { +export type DeploymentPendingPreparedStackExtendGcpBinding = { /** * GCP-specific binding specification */ - resource?: DeploymentExtendGcpResource | undefined; + resource?: DeploymentPendingPreparedStackExtendGcpResource | undefined; /** * GCP-specific binding specification */ - stack?: DeploymentExtendGcpStack | undefined; + stack?: DeploymentPendingPreparedStackExtendGcpStack | undefined; }; /** * Grant permissions for a specific cloud platform */ -export type DeploymentExtendGcpGrant = { +export type DeploymentPendingPreparedStackExtendGcpGrant = { /** * AWS IAM actions (only for AWS) */ @@ -2474,11 +2574,11 @@ export type DeploymentExtendGcpGrant = { /** * GCP-specific platform permission configuration */ -export type DeploymentExtendGcp = { +export type DeploymentPendingPreparedStackExtendGcp = { /** * Generic binding configuration for permissions */ - binding: DeploymentExtendGcpBinding; + binding: DeploymentPendingPreparedStackExtendGcpBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2486,7 +2586,7 @@ export type DeploymentExtendGcp = { /** * Grant permissions for a specific cloud platform */ - grant: DeploymentExtendGcpGrant; + grant: DeploymentPendingPreparedStackExtendGcpGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2496,25 +2596,25 @@ export type DeploymentExtendGcp = { /** * Platform-specific permission configurations */ -export type DeploymentExtendPlatforms = { +export type DeploymentPendingPreparedStackExtendPlatforms = { /** * AWS permission configurations */ - aws?: Array | null | undefined; + aws?: Array | null | undefined; /** * Azure permission configurations */ - azure?: Array | null | undefined; + azure?: Array | null | undefined; /** * GCP permission configurations */ - gcp?: Array | null | undefined; + gcp?: Array | null | undefined; }; /** * A permission set that can be applied across different cloud platforms */ -export type DeploymentExtend = { +export type DeploymentPendingPreparedStackExtend = { /** * Human-readable description of what this permission set allows */ @@ -2526,36 +2626,38 @@ export type DeploymentExtend = { /** * Platform-specific permission configurations */ - platforms: DeploymentExtendPlatforms; + platforms: DeploymentPendingPreparedStackExtendPlatforms; }; /** * Reference to a permission set - either by name or inline definition */ -export type DeploymentExtendUnion = DeploymentExtend | string; +export type DeploymentPendingPreparedStackExtendUnion = + | DeploymentPendingPreparedStackExtend + | string; -export type DeploymentManagement1 = { +export type DeploymentPendingPreparedStackManagement1 = { /** * Permission profile that maps resources to permission sets * * @remarks * Key can be "*" for all resources or resource name for specific resource */ - extend: { [k: string]: Array }; + extend: { [k: string]: Array }; }; /** * Management permissions configuration for stack management access */ -export type DeploymentManagementUnion = - | DeploymentManagement1 - | DeploymentManagement2 - | DeploymentManagementEnum; +export type DeploymentPendingPreparedStackManagementUnion = + | DeploymentPendingPreparedStackManagement1 + | DeploymentPendingPreparedStackManagement2 + | DeploymentPendingPreparedStackManagementEnum; /** * AWS-specific binding specification */ -export type DeploymentProfileAwResource = { +export type DeploymentPendingPreparedStackProfileAwResource = { /** * Optional condition for additional filtering (rare) */ @@ -2569,7 +2671,7 @@ export type DeploymentProfileAwResource = { /** * AWS-specific binding specification */ -export type DeploymentProfileAwStack = { +export type DeploymentPendingPreparedStackProfileAwStack = { /** * Optional condition for additional filtering (rare) */ @@ -2583,35 +2685,35 @@ export type DeploymentProfileAwStack = { /** * Generic binding configuration for permissions */ -export type DeploymentProfileAwBinding = { +export type DeploymentPendingPreparedStackProfileAwBinding = { /** * AWS-specific binding specification */ - resource?: DeploymentProfileAwResource | undefined; + resource?: DeploymentPendingPreparedStackProfileAwResource | undefined; /** * AWS-specific binding specification */ - stack?: DeploymentProfileAwStack | undefined; + stack?: DeploymentPendingPreparedStackProfileAwStack | undefined; }; /** * IAM effect. Defaults to Allow. */ -export const DeploymentProfileEffect = { +export const DeploymentPendingPreparedStackProfileEffect = { Allow: "Allow", Deny: "Deny", } as const; /** * IAM effect. Defaults to Allow. */ -export type DeploymentProfileEffect = ClosedEnum< - typeof DeploymentProfileEffect +export type DeploymentPendingPreparedStackProfileEffect = ClosedEnum< + typeof DeploymentPendingPreparedStackProfileEffect >; /** * Grant permissions for a specific cloud platform */ -export type DeploymentProfileAwGrant = { +export type DeploymentPendingPreparedStackProfileAwGrant = { /** * AWS IAM actions (only for AWS) */ @@ -2637,11 +2739,11 @@ export type DeploymentProfileAwGrant = { /** * AWS-specific platform permission configuration */ -export type DeploymentProfileAw = { +export type DeploymentPendingPreparedStackProfileAw = { /** * Generic binding configuration for permissions */ - binding: DeploymentProfileAwBinding; + binding: DeploymentPendingPreparedStackProfileAwBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2649,11 +2751,11 @@ export type DeploymentProfileAw = { /** * IAM effect. Defaults to Allow. */ - effect?: DeploymentProfileEffect | undefined; + effect?: DeploymentPendingPreparedStackProfileEffect | undefined; /** * Grant permissions for a specific cloud platform */ - grant: DeploymentProfileAwGrant; + grant: DeploymentPendingPreparedStackProfileAwGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2663,7 +2765,7 @@ export type DeploymentProfileAw = { /** * Azure-specific binding specification */ -export type DeploymentProfileAzureResource = { +export type DeploymentPendingPreparedStackProfileAzureResource = { /** * Scope (subscription/resource group/resource level) */ @@ -2673,7 +2775,7 @@ export type DeploymentProfileAzureResource = { /** * Azure-specific binding specification */ -export type DeploymentProfileAzureStack = { +export type DeploymentPendingPreparedStackProfileAzureStack = { /** * Scope (subscription/resource group/resource level) */ @@ -2683,21 +2785,21 @@ export type DeploymentProfileAzureStack = { /** * Generic binding configuration for permissions */ -export type DeploymentProfileAzureBinding = { +export type DeploymentPendingPreparedStackProfileAzureBinding = { /** * Azure-specific binding specification */ - resource?: DeploymentProfileAzureResource | undefined; + resource?: DeploymentPendingPreparedStackProfileAzureResource | undefined; /** * Azure-specific binding specification */ - stack?: DeploymentProfileAzureStack | undefined; + stack?: DeploymentPendingPreparedStackProfileAzureStack | undefined; }; /** * Grant permissions for a specific cloud platform */ -export type DeploymentProfileAzureGrant = { +export type DeploymentPendingPreparedStackProfileAzureGrant = { /** * AWS IAM actions (only for AWS) */ @@ -2723,11 +2825,11 @@ export type DeploymentProfileAzureGrant = { /** * Azure-specific platform permission configuration */ -export type DeploymentProfileAzure = { +export type DeploymentPendingPreparedStackProfileAzure = { /** * Generic binding configuration for permissions */ - binding: DeploymentProfileAzureBinding; + binding: DeploymentPendingPreparedStackProfileAzureBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2735,7 +2837,7 @@ export type DeploymentProfileAzure = { /** * Grant permissions for a specific cloud platform */ - grant: DeploymentProfileAzureGrant; + grant: DeploymentPendingPreparedStackProfileAzureGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2745,20 +2847,24 @@ export type DeploymentProfileAzure = { /** * GCP IAM condition */ -export type DeploymentProfileConditionResource = { +export type DeploymentPendingPreparedStackProfileConditionResource = { expression: string; title: string; }; -export type DeploymentProfileResourceConditionUnion = - | DeploymentProfileConditionResource +export type DeploymentPendingPreparedStackProfileResourceConditionUnion = + | DeploymentPendingPreparedStackProfileConditionResource | any; /** * GCP-specific binding specification */ -export type DeploymentProfileGcpResource = { - condition?: DeploymentProfileConditionResource | any | null | undefined; +export type DeploymentPendingPreparedStackProfileGcpResource = { + condition?: + | DeploymentPendingPreparedStackProfileConditionResource + | any + | null + | undefined; /** * Scope (project/resource level) */ @@ -2768,20 +2874,24 @@ export type DeploymentProfileGcpResource = { /** * GCP IAM condition */ -export type DeploymentProfileConditionStack = { +export type DeploymentPendingPreparedStackProfileConditionStack = { expression: string; title: string; }; -export type DeploymentProfileStackConditionUnion = - | DeploymentProfileConditionStack +export type DeploymentPendingPreparedStackProfileStackConditionUnion = + | DeploymentPendingPreparedStackProfileConditionStack | any; /** * GCP-specific binding specification */ -export type DeploymentProfileGcpStack = { - condition?: DeploymentProfileConditionStack | any | null | undefined; +export type DeploymentPendingPreparedStackProfileGcpStack = { + condition?: + | DeploymentPendingPreparedStackProfileConditionStack + | any + | null + | undefined; /** * Scope (project/resource level) */ @@ -2791,21 +2901,21 @@ export type DeploymentProfileGcpStack = { /** * Generic binding configuration for permissions */ -export type DeploymentProfileGcpBinding = { +export type DeploymentPendingPreparedStackProfileGcpBinding = { /** * GCP-specific binding specification */ - resource?: DeploymentProfileGcpResource | undefined; + resource?: DeploymentPendingPreparedStackProfileGcpResource | undefined; /** * GCP-specific binding specification */ - stack?: DeploymentProfileGcpStack | undefined; + stack?: DeploymentPendingPreparedStackProfileGcpStack | undefined; }; /** * Grant permissions for a specific cloud platform */ -export type DeploymentProfileGcpGrant = { +export type DeploymentPendingPreparedStackProfileGcpGrant = { /** * AWS IAM actions (only for AWS) */ @@ -2831,11 +2941,11 @@ export type DeploymentProfileGcpGrant = { /** * GCP-specific platform permission configuration */ -export type DeploymentProfileGcp = { +export type DeploymentPendingPreparedStackProfileGcp = { /** * Generic binding configuration for permissions */ - binding: DeploymentProfileGcpBinding; + binding: DeploymentPendingPreparedStackProfileGcpBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2843,7 +2953,7 @@ export type DeploymentProfileGcp = { /** * Grant permissions for a specific cloud platform */ - grant: DeploymentProfileGcpGrant; + grant: DeploymentPendingPreparedStackProfileGcpGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2853,25 +2963,25 @@ export type DeploymentProfileGcp = { /** * Platform-specific permission configurations */ -export type DeploymentProfilePlatforms = { +export type DeploymentPendingPreparedStackProfilePlatforms = { /** * AWS permission configurations */ - aws?: Array | null | undefined; + aws?: Array | null | undefined; /** * Azure permission configurations */ - azure?: Array | null | undefined; + azure?: Array | null | undefined; /** * GCP permission configurations */ - gcp?: Array | null | undefined; + gcp?: Array | null | undefined; }; /** * A permission set that can be applied across different cloud platforms */ -export type DeploymentProfile = { +export type DeploymentPendingPreparedStackProfile = { /** * Human-readable description of what this permission set allows */ @@ -2883,25 +2993,27 @@ export type DeploymentProfile = { /** * Platform-specific permission configurations */ - platforms: DeploymentProfilePlatforms; + platforms: DeploymentPendingPreparedStackProfilePlatforms; }; /** * Reference to a permission set - either by name or inline definition */ -export type DeploymentProfileUnion = DeploymentProfile | string; +export type DeploymentPendingPreparedStackProfileUnion = + | DeploymentPendingPreparedStackProfile + | string; /** * Combined permissions configuration that contains both profiles and management */ -export type DeploymentPermissions = { +export type DeploymentPendingPreparedStackPermissions = { /** * Management permissions configuration for stack management access */ management?: - | DeploymentManagement1 - | DeploymentManagement2 - | DeploymentManagementEnum + | DeploymentPendingPreparedStackManagement1 + | DeploymentPendingPreparedStackManagement2 + | DeploymentPendingPreparedStackManagementEnum | undefined; /** * Permission profiles that define access control for compute services @@ -2909,13 +3021,17 @@ export type DeploymentPermissions = { * @remarks * Key is the profile name, value is the permission configuration */ - profiles: { [k: string]: { [k: string]: Array } }; + profiles: { + [k: string]: { + [k: string]: Array; + }; + }; }; /** * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. */ -export type DeploymentPreparedStackConfig = { +export type DeploymentPendingPreparedStackConfig = { /** * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. */ @@ -2930,7 +3046,7 @@ export type DeploymentPreparedStackConfig = { /** * Reference to a resource by its stable id and resource type. */ -export type DeploymentPreparedStackDependency = { +export type DeploymentPendingPreparedStackDependency = { id: string; /** * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. @@ -2941,33 +3057,44 @@ export type DeploymentPreparedStackDependency = { /** * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ -export const DeploymentPreparedStackLifecycle = { +export const DeploymentPendingPreparedStackLifecycle = { Frozen: "frozen", Live: "live", } as const; /** * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ -export type DeploymentPreparedStackLifecycle = ClosedEnum< - typeof DeploymentPreparedStackLifecycle +export type DeploymentPendingPreparedStackLifecycle = ClosedEnum< + typeof DeploymentPendingPreparedStackLifecycle >; -export type DeploymentPreparedStackResources = { +export type DeploymentPendingPreparedStackResources = { /** * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. */ - config: DeploymentPreparedStackConfig; + config: DeploymentPendingPreparedStackConfig; /** * Additional dependencies for this resource beyond those defined in the resource itself. * * @remarks * The total dependencies are: resource.get_dependencies() + this list */ - dependencies: Array; + dependencies: Array; + /** + * Id of the boolean stack input that decides whether this resource is + * + * @remarks + * 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. + */ + enabledWhen?: string | null | undefined; /** * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ - lifecycle: DeploymentPreparedStackLifecycle; + lifecycle: DeploymentPendingPreparedStackLifecycle; /** * Enable remote bindings for this resource (BYOB use case). * @@ -2981,7 +3108,7 @@ export type DeploymentPreparedStackResources = { /** * Represents the target cloud platform. */ -export const DeploymentSupportedPlatform = { +export const DeploymentPendingPreparedStackSupportedPlatform = { Aws: "aws", Gcp: "gcp", Azure: "azure", @@ -2993,14 +3120,14 @@ export const DeploymentSupportedPlatform = { /** * Represents the target cloud platform. */ -export type DeploymentSupportedPlatform = ClosedEnum< - typeof DeploymentSupportedPlatform +export type DeploymentPendingPreparedStackSupportedPlatform = ClosedEnum< + typeof DeploymentPendingPreparedStackSupportedPlatform >; /** * A bag of resources, unaware of any cloud. */ -export type DeploymentPreparedStack = { +export type DeploymentPendingPreparedStack = { /** * Unique identifier for the stack */ @@ -3008,2458 +3135,6467 @@ export type DeploymentPreparedStack = { /** * Input definitions required before setup or deployment can proceed. */ - inputs?: Array | undefined; + inputs?: Array | undefined; /** * Combined permissions configuration that contains both profiles and management */ - permissions?: DeploymentPermissions | undefined; + permissions?: DeploymentPendingPreparedStackPermissions | undefined; /** * Map of resource IDs to their configurations and lifecycle settings */ - resources: { [k: string]: DeploymentPreparedStackResources }; + resources: { [k: string]: DeploymentPendingPreparedStackResources }; /** * Which platforms this stack supports. When None, all platforms are supported. */ - supportedPlatforms?: Array | null | undefined; + supportedPlatforms?: + | Array + | null + | undefined; }; -export type DeploymentPreparedStackUnion = DeploymentPreparedStack | any; +export type DeploymentPendingPreparedStackUnion = + | DeploymentPendingPreparedStack + | any; -/** - * Runtime metadata for deployment state persistence - */ -export type DeploymentRuntimeMetadata = { +export const DeploymentPreparedStackTypeStringList = { + StringList: "stringList", +} as const; +export type DeploymentPreparedStackTypeStringList = ClosedEnum< + typeof DeploymentPreparedStackTypeStringList +>; + +export type DeploymentPreparedStackDefaultStringList = { + type: DeploymentPreparedStackTypeStringList; /** - * Hash of the environment variables snapshot that was last synced to the vault - * - * @remarks - * Used to avoid redundant sync operations during incremental deployment + * String list default. */ - lastSyncedEnvVarsHash?: string | null | undefined; + value: Array; +}; + +export const DeploymentPreparedStackTypeBoolean = { + Boolean: "boolean", +} as const; +export type DeploymentPreparedStackTypeBoolean = ClosedEnum< + typeof DeploymentPreparedStackTypeBoolean +>; + +export type DeploymentPreparedStackDefaultBoolean = { + type: DeploymentPreparedStackTypeBoolean; /** - * Exact vault keys owned by the deployment secret synchronizer. This - * - * @remarks - * inventory lets a later snapshot delete removed keys without listing or - * touching unrelated values in the same vault. + * Boolean default. */ - lastSyncedSecretNames?: Array | undefined; - preparedStack?: DeploymentPreparedStack | any | null | undefined; + value: boolean; +}; + +export const DeploymentPreparedStackTypeNumber = { + Number: "number", +} as const; +export type DeploymentPreparedStackTypeNumber = ClosedEnum< + typeof DeploymentPreparedStackTypeNumber +>; + +export type DeploymentPreparedStackDefaultNumber = { + type: DeploymentPreparedStackTypeNumber; /** - * Whether cross-account registry access has been successfully granted. - * - * @remarks - * Set to true after the manager successfully sets the ECR/GAR repo policy - * for this deployment's target account. Prevents redundant API calls on - * every reconcile tick. + * Number default. */ - registryAccessGranted?: boolean | undefined; + value: string; +}; + +export const DeploymentPreparedStackTypeString = { + String: "string", +} as const; +export type DeploymentPreparedStackTypeString = ClosedEnum< + typeof DeploymentPreparedStackTypeString +>; + +export type DeploymentPreparedStackDefaultString = { + type: DeploymentPreparedStackTypeString; + /** + * String default. + */ + value: string; }; +export type DeploymentPreparedStackDefaultUnion = + | DeploymentPreparedStackDefaultString + | DeploymentPreparedStackDefaultNumber + | DeploymentPreparedStackDefaultBoolean + | DeploymentPreparedStackDefaultStringList + | any; + /** - * Setup source that imported this deployment + * Environment variable handling for a stack input mapping. */ -export const DeploymentImportSource = { - Cloudformation: "cloudformation", - Terraform: "terraform", - Helm: "helm", +export const DeploymentPreparedStackTypeEnvEnum = { + Plain: "plain", + Secret: "secret", } as const; /** - * Setup source that imported this deployment + * Environment variable handling for a stack input mapping. */ -export type DeploymentImportSource = ClosedEnum; +export type DeploymentPreparedStackTypeEnvEnum = ClosedEnum< + typeof DeploymentPreparedStackTypeEnvEnum +>; + +export type DeploymentPreparedStackTypeUnion = + | DeploymentPreparedStackTypeEnvEnum + | any; /** - * Setup method that created the deployment record and owns setup-time resources. + * How a resolved stack input is injected into runtime environment variables. */ -export const DeploymentSetupMethod1 = { - Cloudformation: "cloudformation", - GoogleOauth: "google-oauth", - Terraform: "terraform", - Helm: "helm", - Cli: "cli", - Manual: "manual", +export type DeploymentPreparedStackEnv = { + /** + * Environment variable name. + */ + name: string; + /** + * Target resource IDs or patterns. None means every env-capable resource. + */ + targetResources?: Array | null | undefined; + type?: DeploymentPreparedStackTypeEnvEnum | any | null | undefined; +}; + +/** + * Primitive stack input kind. + */ +export const DeploymentPreparedStackKind = { + String: "string", + Secret: "secret", + Number: "number", + Integer: "integer", + Boolean: "boolean", + Enum: "enum", + StringList: "stringList", } as const; /** - * Setup method that created the deployment record and owns setup-time resources. + * Primitive stack input kind. */ -export type DeploymentSetupMethod1 = ClosedEnum; +export type DeploymentPreparedStackKind = ClosedEnum< + typeof DeploymentPreparedStackKind +>; /** - * Latest error information if the deployment is in a failed state + * Represents the target cloud platform. */ -export type DeploymentError = { +export const DeploymentPreparedStackPlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Machines: "machines", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type DeploymentPreparedStackPlatform = ClosedEnum< + typeof DeploymentPreparedStackPlatform +>; + +/** + * Who can provide a stack input value. + */ +export const DeploymentPreparedStackProvidedBy = { + Developer: "developer", + Deployer: "deployer", +} as const; +/** + * Who can provide a stack input value. + */ +export type DeploymentPreparedStackProvidedBy = ClosedEnum< + typeof DeploymentPreparedStackProvidedBy +>; + +/** + * Portable stack input validation constraints. + */ +export type DeploymentPreparedStackValidation = { /** - * A unique identifier for the type of error. - * - * @remarks - * - * This should be a short, machine-readable string that can be used - * by clients to programmatically handle different error types. - * Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" + * Semantic format hint such as url. */ - code: string; + format?: string | null | undefined; /** - * Additional diagnostic information about the error context. - * - * @remarks - * - * This optional field can contain structured data providing more details - * about the error, such as validation errors, request parameters that - * caused the issue, or other relevant context information. + * Maximum number. */ - context?: any | null | undefined; + max?: string | null | undefined; /** - * Optional human-facing remediation hint. + * Maximum string-list items. */ - hint?: string | null | undefined; + maxItems?: number | null | undefined; /** - * HTTP status code for this error. - * - * @remarks - * - * Used when converting the error to an HTTP response. If None, falls back to - * the error type's default status code or 500. + * Maximum string length. */ - httpStatusCode?: number | null | undefined; + maxLength?: number | null | undefined; /** - * Indicates if this is an internal error that should not be exposed to users. - * - * @remarks - * - * When `true`, this error contains sensitive information or implementation - * details that should not be shown to end-users. Such errors should be - * logged for debugging but replaced with generic error messages in responses. + * Minimum number. */ - internal: boolean; + min?: string | null | undefined; /** - * Human-readable error message. - * - * @remarks - * - * This message should be clear and actionable for developers or end-users, - * providing context about what went wrong and potentially how to fix it. + * Minimum string-list items. */ - message: string; + minItems?: number | null | undefined; /** - * Indicates whether the operation that caused the error should be retried. - * - * @remarks - * - * When `true`, the error is transient and the operation might succeed - * if attempted again. When `false`, retrying the same operation is - * unlikely to succeed without changes. + * Minimum string length. */ - retryable: boolean; + minLength?: number | null | undefined; /** - * The underlying error that caused this error, creating an error chain. - * - * @remarks - * - * This allows for proper error propagation and debugging by maintaining - * the full context of how an error occurred through multiple layers - * of an application. + * Portable whole-value regex pattern. */ - source?: any | null | undefined; + pattern?: string | null | undefined; + /** + * Allowed string enum values. + */ + values?: Array | null | undefined; }; +export type DeploymentPreparedStackValidationUnion = + | DeploymentPreparedStackValidation + | any; + /** - * Snapshot of target environment variables for the deployment + * Stack input definition serialized into a release stack. */ -export type DeploymentTargetEnvironmentVariables = { +export type DeploymentPreparedStackInput = { + default?: + | DeploymentPreparedStackDefaultString + | DeploymentPreparedStackDefaultNumber + | DeploymentPreparedStackDefaultBoolean + | DeploymentPreparedStackDefaultStringList + | any + | null + | undefined; /** - * Environment variables in the snapshot + * Human-facing helper text. */ - variables: Array; + description: string; /** - * Deterministic hash of all variables for change detection + * Runtime env-var mappings for v1 input resolution. */ - hash: string; + env?: Array | undefined; /** - * ISO 8601 timestamp when snapshot was created + * Stable input ID used by CLI/API calls. */ - createdAt: Date; -}; - -/** - * Snapshot of current environment variables for the deployment - */ -export type DeploymentCurrentEnvironmentVariables = { + id: string; /** - * Environment variables in the snapshot + * Primitive stack input kind. */ - variables: Array; + kind: DeploymentPreparedStackKind; /** - * Deterministic hash of all variables for change detection + * Human-facing field label. */ - hash: string; + label: string; /** - * ISO 8601 timestamp when snapshot was created + * Example placeholder shown in UI. */ - createdAt: Date; -}; - -export type Deployment = { + placeholder?: string | null | undefined; /** - * Unique identifier for the deployment. + * Platforms where this input applies. */ - id: string; + platforms?: Array | null | undefined; /** - * Deployment name. + * Who can provide this value. */ - name: string; + providedBy: Array; /** - * Public subdomain for auto-generated domains + * Whether a resolved value is required before deployment can proceed. */ - publicSubdomain?: string | null | undefined; + required: boolean; + validation?: DeploymentPreparedStackValidation | any | null | undefined; +}; + +export const DeploymentPreparedStackManagementEnum = { + Auto: "auto", +} as const; +export type DeploymentPreparedStackManagementEnum = ClosedEnum< + typeof DeploymentPreparedStackManagementEnum +>; + +/** + * AWS-specific binding specification + */ +export type DeploymentPreparedStackOverrideAwResource = { /** - * Deployment status in the deployment lifecycle. - * - * @remarks - * - * For observe-only deployments with no release or stack state, `Running` - * means the Operator is attached. Connectivity comes from `lastHeartbeatAt`; - * resource health comes from inventory and resource heartbeat data. + * Optional condition for additional filtering (rare) */ - status: DeploymentStatus; + condition?: { [k: string]: { [k: string]: string } } | null | undefined; /** - * Unique identifier for the project. + * Resource ARNs to bind to */ - projectId: string; + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type DeploymentPreparedStackOverrideAwStack = { /** - * Target platform for the deployment + * Optional condition for additional filtering (rare) */ - platform: DeploymentPlatform; + condition?: { [k: string]: { [k: string]: string } } | null | undefined; /** - * Underlying cloud platform for Kubernetes deployments. + * Resource ARNs to bind to */ - basePlatform?: DeploymentBasePlatform | null | undefined; + resources: Array; +}; + +/** + * Generic binding configuration for permissions + */ +export type DeploymentPreparedStackOverrideAwBinding = { /** - * Cloud region or location for the deployment. + * AWS-specific binding specification */ - region?: string | null | undefined; + resource?: DeploymentPreparedStackOverrideAwResource | undefined; /** - * DeploymentState protocol version owned by the runtime/manager + * AWS-specific binding specification */ - deploymentProtocolVersion: number; + stack?: DeploymentPreparedStackOverrideAwStack | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const DeploymentPreparedStackOverrideEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type DeploymentPreparedStackOverrideEffect = ClosedEnum< + typeof DeploymentPreparedStackOverrideEffect +>; + +/** + * Grant permissions for a specific cloud platform + */ +export type DeploymentPreparedStackOverrideAwGrant = { /** - * ID of deployment group this deployment belongs to + * AWS IAM actions (only for AWS) */ - deploymentGroupId: string; + actions?: Array | null | undefined; /** - * Operational purpose of this deployment within its customer environment. + * Azure actions (only for Azure) */ - purpose: DeploymentPurpose; + dataActions?: Array | null | undefined; /** - * Cloud environment information + * GCP permissions that require an exact residual custom role. */ - environmentInfo?: - | DeploymentEnvironmentInfoGcp - | DeploymentEnvironmentInfoAzure - | DeploymentEnvironmentInfoLocal - | DeploymentEnvironmentInfoAws - | DeploymentEnvironmentInfoTest - | any - | null - | undefined; + permissions?: Array | null | undefined; /** - * User-provided configuration (network, deployment model, approvals) + * Provider predefined roles to bind directly. */ - stackSettings: DeploymentStackSettings; + predefinedRoles?: Array | null | undefined; /** - * State of infrastructure components managed by this deployment + * GCP residual custom permissions to pair with predefined roles. */ - stackState?: DeploymentStackState | null | undefined; + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type DeploymentPreparedStackOverrideAw = { /** - * Runtime metadata for deployment state persistence + * Generic binding configuration for permissions */ - runtimeMetadata?: DeploymentRuntimeMetadata | null | undefined; + binding: DeploymentPreparedStackOverrideAwBinding; /** - * ID of the currently deployed release (actual state) + * Short admin-facing description of why this entry exists. */ - currentReleaseId?: string | null | undefined; + description?: string | null | undefined; /** - * ID of the desired release for deployment/update (desired state) + * IAM effect. Defaults to Allow. */ - desiredReleaseId?: string | null | undefined; + effect?: DeploymentPreparedStackOverrideEffect | undefined; /** - * ID of the pinned release + * Grant permissions for a specific cloud platform */ - pinnedReleaseId?: string | null | undefined; + grant: DeploymentPreparedStackOverrideAwGrant; /** - * Setup source that imported this deployment + * Stable admin-facing label for this permission entry. */ - importSource?: DeploymentImportSource | null | undefined; + label?: string | null | undefined; +}; + +/** + * Azure-specific binding specification + */ +export type DeploymentPreparedStackOverrideAzureResource = { /** - * Setup method that created the deployment record and owns setup-time resources. + * Scope (subscription/resource group/resource level) */ - setupMethod?: DeploymentSetupMethod1 | null | undefined; + scope: string; +}; + +/** + * Azure-specific binding specification + */ +export type DeploymentPreparedStackOverrideAzureStack = { /** - * Setup method metadata needed to guide privileged teardown. + * Scope (subscription/resource group/resource level) */ - setupMetadata?: { [k: string]: any | null } | null | undefined; + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type DeploymentPreparedStackOverrideAzureBinding = { /** - * Imported setup target for compatibility checks + * Azure-specific binding specification */ - setupTarget?: string | null | undefined; + resource?: DeploymentPreparedStackOverrideAzureResource | undefined; /** - * Imported setup compatibility fingerprint + * Azure-specific binding specification */ - setupFingerprint?: string | null | undefined; + stack?: DeploymentPreparedStackOverrideAzureStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type DeploymentPreparedStackOverrideAzureGrant = { /** - * Imported setup fingerprint algorithm version + * AWS IAM actions (only for AWS) */ - setupFingerprintVersion?: number | null | undefined; + actions?: Array | null | undefined; /** - * Display-only scope reported by the Operator manifest + * Azure actions (only for Azure) */ - operatorScope?: string | null | undefined; + dataActions?: Array | null | undefined; /** - * Display-only permission tier reported by the Operator manifest + * GCP permissions that require an exact residual custom role. */ - operatorPermission?: string | null | undefined; + permissions?: Array | null | undefined; /** - * Version reported by the Operator + * Provider predefined roles to bind directly. */ - operatorVersion?: string | null | undefined; + predefinedRoles?: Array | null | undefined; /** - * Capability state reported by the Operator - */ - capabilities?: Array | null | undefined; - /** - * Whether a retry has been requested for a failed deployment + * GCP residual custom permissions to pair with predefined roles. */ - retryRequested: boolean; + residualPermissions?: Array | null | undefined; +}; + +/** + * Azure-specific platform permission configuration + */ +export type DeploymentPreparedStackOverrideAzure = { /** - * Timestamp of the last received heartbeat from the deployment + * Generic binding configuration for permissions */ - lastHeartbeatAt?: Date | null | undefined; + binding: DeploymentPreparedStackOverrideAzureBinding; /** - * Latest error information if the deployment is in a failed state + * Short admin-facing description of why this entry exists. */ - error?: DeploymentError | null | undefined; + description?: string | null | undefined; /** - * Configuration of environment variables for the deployment + * Grant permissions for a specific cloud platform */ - environmentVariables?: Array | null | undefined; + grant: DeploymentPreparedStackOverrideAzureGrant; /** - * Snapshot of target environment variables for the deployment + * Stable admin-facing label for this permission entry. */ - targetEnvironmentVariables?: - | DeploymentTargetEnvironmentVariables + label?: string | null | undefined; +}; + +/** + * GCP IAM condition + */ +export type DeploymentPreparedStackOverrideConditionResource = { + expression: string; + title: string; +}; + +export type DeploymentPreparedStackOverrideResourceConditionUnion = + | DeploymentPreparedStackOverrideConditionResource + | any; + +/** + * GCP-specific binding specification + */ +export type DeploymentPreparedStackOverrideGcpResource = { + condition?: + | DeploymentPreparedStackOverrideConditionResource + | any | null | undefined; /** - * Snapshot of current environment variables for the deployment + * Scope (project/resource level) */ - currentEnvironmentVariables?: - | DeploymentCurrentEnvironmentVariables + scope: string; +}; + +/** + * GCP IAM condition + */ +export type DeploymentPreparedStackOverrideConditionStack = { + expression: string; + title: string; +}; + +export type DeploymentPreparedStackOverrideStackConditionUnion = + | DeploymentPreparedStackOverrideConditionStack + | any; + +/** + * GCP-specific binding specification + */ +export type DeploymentPreparedStackOverrideGcpStack = { + condition?: + | DeploymentPreparedStackOverrideConditionStack + | any | null | undefined; - createdAt: Date; - updatedAt: Date; - managerId: string; /** - * Unique identifier for the workspace. + * Scope (project/resource level) */ - workspaceId: string; + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type DeploymentPreparedStackOverrideGcpBinding = { + /** + * GCP-specific binding specification + */ + resource?: DeploymentPreparedStackOverrideGcpResource | undefined; + /** + * GCP-specific binding specification + */ + stack?: DeploymentPreparedStackOverrideGcpStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type DeploymentPreparedStackOverrideGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * GCP-specific platform permission configuration + */ +export type DeploymentPreparedStackOverrideGcp = { + /** + * Generic binding configuration for permissions + */ + binding: DeploymentPreparedStackOverrideGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: DeploymentPreparedStackOverrideGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Platform-specific permission configurations + */ +export type DeploymentPreparedStackOverridePlatforms = { + /** + * AWS permission configurations + */ + aws?: Array | null | undefined; + /** + * Azure permission configurations + */ + azure?: Array | null | undefined; + /** + * GCP permission configurations + */ + gcp?: Array | null | undefined; +}; + +/** + * A permission set that can be applied across different cloud platforms + */ +export type DeploymentPreparedStackOverride = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: DeploymentPreparedStackOverridePlatforms; +}; + +/** + * Reference to a permission set - either by name or inline definition + */ +export type DeploymentPreparedStackOverrideUnion = + | DeploymentPreparedStackOverride + | string; + +export type DeploymentPreparedStackManagement2 = { + /** + * Permission profile that maps resources to permission sets + * + * @remarks + * Key can be "*" for all resources or resource name for specific resource + */ + override: { [k: string]: Array }; +}; + +/** + * AWS-specific binding specification + */ +export type DeploymentPreparedStackExtendAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type DeploymentPreparedStackExtendAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; }; +/** + * Generic binding configuration for permissions + */ +export type DeploymentPreparedStackExtendAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: DeploymentPreparedStackExtendAwResource | undefined; + /** + * AWS-specific binding specification + */ + stack?: DeploymentPreparedStackExtendAwStack | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const DeploymentPreparedStackExtendEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type DeploymentPreparedStackExtendEffect = ClosedEnum< + typeof DeploymentPreparedStackExtendEffect +>; + +/** + * Grant permissions for a specific cloud platform + */ +export type DeploymentPreparedStackExtendAwGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type DeploymentPreparedStackExtendAw = { + /** + * Generic binding configuration for permissions + */ + binding: DeploymentPreparedStackExtendAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: DeploymentPreparedStackExtendEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: DeploymentPreparedStackExtendAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Azure-specific binding specification + */ +export type DeploymentPreparedStackExtendAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Azure-specific binding specification + */ +export type DeploymentPreparedStackExtendAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type DeploymentPreparedStackExtendAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: DeploymentPreparedStackExtendAzureResource | undefined; + /** + * Azure-specific binding specification + */ + stack?: DeploymentPreparedStackExtendAzureStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type DeploymentPreparedStackExtendAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * Azure-specific platform permission configuration + */ +export type DeploymentPreparedStackExtendAzure = { + /** + * Generic binding configuration for permissions + */ + binding: DeploymentPreparedStackExtendAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: DeploymentPreparedStackExtendAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * GCP IAM condition + */ +export type DeploymentPreparedStackExtendConditionResource = { + expression: string; + title: string; +}; + +export type DeploymentPreparedStackExtendResourceConditionUnion = + | DeploymentPreparedStackExtendConditionResource + | any; + +/** + * GCP-specific binding specification + */ +export type DeploymentPreparedStackExtendGcpResource = { + condition?: + | DeploymentPreparedStackExtendConditionResource + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * GCP IAM condition + */ +export type DeploymentPreparedStackExtendConditionStack = { + expression: string; + title: string; +}; + +export type DeploymentPreparedStackExtendStackConditionUnion = + | DeploymentPreparedStackExtendConditionStack + | any; + +/** + * GCP-specific binding specification + */ +export type DeploymentPreparedStackExtendGcpStack = { + condition?: + | DeploymentPreparedStackExtendConditionStack + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type DeploymentPreparedStackExtendGcpBinding = { + /** + * GCP-specific binding specification + */ + resource?: DeploymentPreparedStackExtendGcpResource | undefined; + /** + * GCP-specific binding specification + */ + stack?: DeploymentPreparedStackExtendGcpStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type DeploymentPreparedStackExtendGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * GCP-specific platform permission configuration + */ +export type DeploymentPreparedStackExtendGcp = { + /** + * Generic binding configuration for permissions + */ + binding: DeploymentPreparedStackExtendGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: DeploymentPreparedStackExtendGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Platform-specific permission configurations + */ +export type DeploymentPreparedStackExtendPlatforms = { + /** + * AWS permission configurations + */ + aws?: Array | null | undefined; + /** + * Azure permission configurations + */ + azure?: Array | null | undefined; + /** + * GCP permission configurations + */ + gcp?: Array | null | undefined; +}; + +/** + * A permission set that can be applied across different cloud platforms + */ +export type DeploymentPreparedStackExtend = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: DeploymentPreparedStackExtendPlatforms; +}; + +/** + * Reference to a permission set - either by name or inline definition + */ +export type DeploymentPreparedStackExtendUnion = + | DeploymentPreparedStackExtend + | string; + +export type DeploymentPreparedStackManagement1 = { + /** + * Permission profile that maps resources to permission sets + * + * @remarks + * Key can be "*" for all resources or resource name for specific resource + */ + extend: { [k: string]: Array }; +}; + +/** + * Management permissions configuration for stack management access + */ +export type DeploymentPreparedStackManagementUnion = + | DeploymentPreparedStackManagement1 + | DeploymentPreparedStackManagement2 + | DeploymentPreparedStackManagementEnum; + +/** + * AWS-specific binding specification + */ +export type DeploymentPreparedStackProfileAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type DeploymentPreparedStackProfileAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * Generic binding configuration for permissions + */ +export type DeploymentPreparedStackProfileAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: DeploymentPreparedStackProfileAwResource | undefined; + /** + * AWS-specific binding specification + */ + stack?: DeploymentPreparedStackProfileAwStack | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const DeploymentPreparedStackProfileEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type DeploymentPreparedStackProfileEffect = ClosedEnum< + typeof DeploymentPreparedStackProfileEffect +>; + +/** + * Grant permissions for a specific cloud platform + */ +export type DeploymentPreparedStackProfileAwGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type DeploymentPreparedStackProfileAw = { + /** + * Generic binding configuration for permissions + */ + binding: DeploymentPreparedStackProfileAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: DeploymentPreparedStackProfileEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: DeploymentPreparedStackProfileAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Azure-specific binding specification + */ +export type DeploymentPreparedStackProfileAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Azure-specific binding specification + */ +export type DeploymentPreparedStackProfileAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type DeploymentPreparedStackProfileAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: DeploymentPreparedStackProfileAzureResource | undefined; + /** + * Azure-specific binding specification + */ + stack?: DeploymentPreparedStackProfileAzureStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type DeploymentPreparedStackProfileAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * Azure-specific platform permission configuration + */ +export type DeploymentPreparedStackProfileAzure = { + /** + * Generic binding configuration for permissions + */ + binding: DeploymentPreparedStackProfileAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: DeploymentPreparedStackProfileAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * GCP IAM condition + */ +export type DeploymentPreparedStackProfileConditionResource = { + expression: string; + title: string; +}; + +export type DeploymentPreparedStackProfileResourceConditionUnion = + | DeploymentPreparedStackProfileConditionResource + | any; + +/** + * GCP-specific binding specification + */ +export type DeploymentPreparedStackProfileGcpResource = { + condition?: + | DeploymentPreparedStackProfileConditionResource + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * GCP IAM condition + */ +export type DeploymentPreparedStackProfileConditionStack = { + expression: string; + title: string; +}; + +export type DeploymentPreparedStackProfileStackConditionUnion = + | DeploymentPreparedStackProfileConditionStack + | any; + +/** + * GCP-specific binding specification + */ +export type DeploymentPreparedStackProfileGcpStack = { + condition?: + | DeploymentPreparedStackProfileConditionStack + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type DeploymentPreparedStackProfileGcpBinding = { + /** + * GCP-specific binding specification + */ + resource?: DeploymentPreparedStackProfileGcpResource | undefined; + /** + * GCP-specific binding specification + */ + stack?: DeploymentPreparedStackProfileGcpStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type DeploymentPreparedStackProfileGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * GCP-specific platform permission configuration + */ +export type DeploymentPreparedStackProfileGcp = { + /** + * Generic binding configuration for permissions + */ + binding: DeploymentPreparedStackProfileGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: DeploymentPreparedStackProfileGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Platform-specific permission configurations + */ +export type DeploymentPreparedStackProfilePlatforms = { + /** + * AWS permission configurations + */ + aws?: Array | null | undefined; + /** + * Azure permission configurations + */ + azure?: Array | null | undefined; + /** + * GCP permission configurations + */ + gcp?: Array | null | undefined; +}; + +/** + * A permission set that can be applied across different cloud platforms + */ +export type DeploymentPreparedStackProfile = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: DeploymentPreparedStackProfilePlatforms; +}; + +/** + * Reference to a permission set - either by name or inline definition + */ +export type DeploymentPreparedStackProfileUnion = + | DeploymentPreparedStackProfile + | string; + +/** + * Combined permissions configuration that contains both profiles and management + */ +export type DeploymentPreparedStackPermissions = { + /** + * Management permissions configuration for stack management access + */ + management?: + | DeploymentPreparedStackManagement1 + | DeploymentPreparedStackManagement2 + | DeploymentPreparedStackManagementEnum + | undefined; + /** + * Permission profiles that define access control for compute services + * + * @remarks + * Key is the profile name, value is the permission configuration + */ + profiles: { + [k: string]: { + [k: string]: Array; + }; + }; +}; + +/** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ +export type DeploymentPreparedStackConfig = { + /** + * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. + */ + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; +}; + +/** + * Reference to a resource by its stable id and resource type. + */ +export type DeploymentPreparedStackDependency = { + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; +}; + +/** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ +export const DeploymentPreparedStackLifecycle = { + Frozen: "frozen", + Live: "live", +} as const; +/** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ +export type DeploymentPreparedStackLifecycle = ClosedEnum< + typeof DeploymentPreparedStackLifecycle +>; + +export type DeploymentPreparedStackResources = { + /** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ + config: DeploymentPreparedStackConfig; + /** + * Additional dependencies for this resource beyond those defined in the resource itself. + * + * @remarks + * The total dependencies are: resource.get_dependencies() + this list + */ + dependencies: Array; + /** + * Id of the boolean stack input that decides whether this resource is + * + * @remarks + * 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. + */ + enabledWhen?: string | null | undefined; + /** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ + lifecycle: DeploymentPreparedStackLifecycle; + /** + * Enable remote bindings for this resource (BYOB use case). + * + * @remarks + * When true, binding params are synced to StackState's `remote_binding_params`. + * Default: false (prevents sensitive data in synced state). + */ + remoteAccess?: boolean | undefined; +}; + +/** + * Represents the target cloud platform. + */ +export const DeploymentPreparedStackSupportedPlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Machines: "machines", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type DeploymentPreparedStackSupportedPlatform = ClosedEnum< + typeof DeploymentPreparedStackSupportedPlatform +>; + +/** + * A bag of resources, unaware of any cloud. + */ +export type DeploymentPreparedStack = { + /** + * Unique identifier for the stack + */ + id: string; + /** + * Input definitions required before setup or deployment can proceed. + */ + inputs?: Array | undefined; + /** + * Combined permissions configuration that contains both profiles and management + */ + permissions?: DeploymentPreparedStackPermissions | undefined; + /** + * Map of resource IDs to their configurations and lifecycle settings + */ + resources: { [k: string]: DeploymentPreparedStackResources }; + /** + * Which platforms this stack supports. When None, all platforms are supported. + */ + supportedPlatforms?: + | Array + | null + | undefined; +}; + +export type DeploymentPreparedStackUnion = DeploymentPreparedStack | any; + +/** + * One-shot authority for a setup re-import to replace setup-owned resources. + */ +export type DeploymentSetupUpdateAuthorization = { + /** + * Frozen resource projection from the last successful deployment. + */ + baselineFrozenDigest: string; + /** + * Unique revision used by persistence layers for compare-and-swap updates. + */ + nonce: string; + /** + * Release whose stack was prepared by setup. + */ + releaseId: string; + /** + * Exact setup artifact revision that authored this authority. + */ + setupFingerprint: string; + /** + * Setup fingerprint contract version. + */ + setupFingerprintVersion: number; + /** + * Stable setup target recorded on the imported deployment. + */ + setupTarget: string; + /** + * Frozen resource projection prepared by the setup re-import. + */ + targetFrozenDigest: string; +}; + +export type DeploymentSetupUpdateAuthorizationUnion = + | DeploymentSetupUpdateAuthorization + | any; + +/** + * Runtime metadata for deployment state persistence + */ +export type DeploymentRuntimeMetadata = { + /** + * Actor that owns structural work during the initial setup phase. + */ + initialSetupAuthority?: DeploymentInitialSetupAuthority | undefined; + /** + * Hash of the environment variables snapshot that was last synced to the vault + * + * @remarks + * Used to avoid redundant sync operations during incremental deployment + */ + lastSyncedEnvVarsHash?: string | null | undefined; + /** + * Exact vault keys owned by the deployment secret synchronizer. This + * + * @remarks + * inventory lets a later snapshot delete removed keys without listing or + * touching unrelated values in the same vault. + */ + lastSyncedSecretNames?: Array | undefined; + pendingPreparedStack?: + | DeploymentPendingPreparedStack + | any + | null + | undefined; + /** + * Canonical resolved answers for inputs that gate Frozen resources, + * + * @remarks + * keyed by input id, recorded when the deployment is created or its + * setup import registers. + * + * A frozen gate's answer is fixed for the deployment's lifetime: the + * update path refuses input values that conflict with these, and a Live + * resource sharing such an input resolves the persisted answer forever. + */ + persistedGateAnswers?: { [k: string]: boolean } | undefined; + preparedStack?: DeploymentPreparedStack | any | null | undefined; + /** + * Whether cross-account registry access has been successfully granted. + * + * @remarks + * Set to true after the manager successfully sets the ECR/GAR repo policy + * for this deployment's target account. Prevents redundant API calls on + * every reconcile tick. + */ + registryAccessGranted?: boolean | undefined; + setupUpdateAuthorization?: + | DeploymentSetupUpdateAuthorization + | any + | null + | undefined; +}; + +/** + * Setup source that imported this deployment + */ +export const DeploymentImportSource = { + Cloudformation: "cloudformation", + Terraform: "terraform", + Helm: "helm", +} as const; +/** + * Setup source that imported this deployment + */ +export type DeploymentImportSource = ClosedEnum; + +/** + * Setup method that created the deployment record and owns setup-time resources. + */ +export const DeploymentSetupMethod1 = { + Cloudformation: "cloudformation", + GoogleOauth: "google-oauth", + Terraform: "terraform", + Helm: "helm", + Cli: "cli", + Manual: "manual", +} as const; +/** + * Setup method that created the deployment record and owns setup-time resources. + */ +export type DeploymentSetupMethod1 = ClosedEnum; + +/** + * Latest error information if the deployment is in a failed state + */ +export type DeploymentError = { + /** + * A unique identifier for the type of error. + * + * @remarks + * + * This should be a short, machine-readable string that can be used + * by clients to programmatically handle different error types. + * Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" + */ + code: string; + /** + * Additional diagnostic information about the error context. + * + * @remarks + * + * This optional field can contain structured data providing more details + * about the error, such as validation errors, request parameters that + * caused the issue, or other relevant context information. + */ + context?: any | null | undefined; + /** + * Optional human-facing remediation hint. + */ + hint?: string | null | undefined; + /** + * HTTP status code for this error. + * + * @remarks + * + * Used when converting the error to an HTTP response. If None, falls back to + * the error type's default status code or 500. + */ + httpStatusCode?: number | null | undefined; + /** + * Indicates if this is an internal error that should not be exposed to users. + * + * @remarks + * + * When `true`, this error contains sensitive information or implementation + * details that should not be shown to end-users. Such errors should be + * logged for debugging but replaced with generic error messages in responses. + */ + internal: boolean; + /** + * Human-readable error message. + * + * @remarks + * + * This message should be clear and actionable for developers or end-users, + * providing context about what went wrong and potentially how to fix it. + */ + message: string; + /** + * Indicates whether the operation that caused the error should be retried. + * + * @remarks + * + * When `true`, the error is transient and the operation might succeed + * if attempted again. When `false`, retrying the same operation is + * unlikely to succeed without changes. + */ + retryable: boolean; + /** + * The underlying error that caused this error, creating an error chain. + * + * @remarks + * + * This allows for proper error propagation and debugging by maintaining + * the full context of how an error occurred through multiple layers + * of an application. + */ + source?: any | null | undefined; +}; + +/** + * Snapshot of target environment variables for the deployment + */ +export type DeploymentTargetEnvironmentVariables = { + /** + * Environment variables in the snapshot + */ + variables: Array; + /** + * Deterministic hash of all variables for change detection + */ + hash: string; + /** + * ISO 8601 timestamp when snapshot was created + */ + createdAt: Date; +}; + +/** + * Snapshot of current environment variables for the deployment + */ +export type DeploymentCurrentEnvironmentVariables = { + /** + * Environment variables in the snapshot + */ + variables: Array; + /** + * Deterministic hash of all variables for change detection + */ + hash: string; + /** + * ISO 8601 timestamp when snapshot was created + */ + createdAt: Date; +}; + +/** + * Durable progress for deployment updates + */ +export type DeploymentUpdateState = { + active: DeploymentUpdateOperationSummary | null; + next: DeploymentUpdateOperationSummary | null; + latest: DeploymentUpdateOperationSummary | null; +}; + +export type Deployment = { + /** + * Unique identifier for the deployment. + */ + id: string; + /** + * Deployment name. + */ + name: string; + /** + * Public subdomain for auto-generated domains + */ + publicSubdomain?: string | null | undefined; + /** + * Deployment status in the deployment lifecycle. + * + * @remarks + * + * For observe-only deployments with no release or stack state, `Running` + * means the Operator is attached. Connectivity comes from `lastHeartbeatAt`; + * resource health comes from inventory and resource heartbeat data. + */ + status: DeploymentStatus; + /** + * Unique identifier for the project. + */ + projectId: string; + /** + * Target platform for the deployment + */ + platform: DeploymentPlatform; + /** + * Underlying cloud platform for Kubernetes deployments. + */ + basePlatform?: DeploymentBasePlatform | null | undefined; + /** + * Cloud region or location for the deployment. + */ + region?: string | null | undefined; + /** + * DeploymentState protocol version owned by the runtime/manager + */ + deploymentProtocolVersion: number; + /** + * ID of deployment group this deployment belongs to + */ + deploymentGroupId: string; + /** + * Operational purpose of this deployment within its customer environment. + */ + purpose: DeploymentPurpose; + /** + * Cloud environment information + */ + environmentInfo?: + | DeploymentEnvironmentInfoGcp + | DeploymentEnvironmentInfoAzure + | DeploymentEnvironmentInfoLocal + | DeploymentEnvironmentInfoAws + | DeploymentEnvironmentInfoTest + | any + | null + | undefined; + /** + * User-provided configuration (network, deployment model, approvals) + */ + stackSettings: DeploymentStackSettings; + /** + * State of infrastructure components managed by this deployment + */ + stackState?: DeploymentStackState | null | undefined; + /** + * Runtime metadata for deployment state persistence + */ + runtimeMetadata?: DeploymentRuntimeMetadata | null | undefined; + /** + * ID of the currently deployed release (actual state) + */ + currentReleaseId?: string | null | undefined; + /** + * ID of the desired release for deployment/update (desired state) + */ + desiredReleaseId?: string | null | undefined; + /** + * ID of the pinned release + */ + pinnedReleaseId?: string | null | undefined; + releaseChannel: string; + /** + * Setup source that imported this deployment + */ + importSource?: DeploymentImportSource | null | undefined; + /** + * Setup method that created the deployment record and owns setup-time resources. + */ + setupMethod?: DeploymentSetupMethod1 | null | undefined; + /** + * Setup method metadata needed to guide privileged teardown. + */ + setupMetadata?: { [k: string]: any | null } | null | undefined; + /** + * Imported setup target for compatibility checks + */ + setupTarget?: string | null | undefined; + /** + * Imported setup compatibility fingerprint + */ + setupFingerprint?: string | null | undefined; + /** + * Imported setup fingerprint algorithm version + */ + setupFingerprintVersion?: number | null | undefined; + /** + * Display-only scope reported by the Operator manifest + */ + operatorScope?: string | null | undefined; + /** + * Display-only permission tier reported by the Operator manifest + */ + operatorPermission?: string | null | undefined; + /** + * Version reported by the Operator + */ + operatorVersion?: string | null | undefined; + /** + * Capability state reported by the Operator + */ + capabilities?: Array | null | undefined; + /** + * Whether a retry has been requested for a failed deployment + */ + retryRequested: boolean; + /** + * Timestamp of the last received heartbeat from the deployment + */ + lastHeartbeatAt?: Date | null | undefined; + /** + * Latest error information if the deployment is in a failed state + */ + error?: DeploymentError | null | undefined; + /** + * Configuration of environment variables for the deployment + */ + environmentVariables?: Array | null | undefined; + /** + * Snapshot of target environment variables for the deployment + */ + targetEnvironmentVariables?: + | DeploymentTargetEnvironmentVariables + | null + | undefined; + /** + * Snapshot of current environment variables for the deployment + */ + currentEnvironmentVariables?: + | DeploymentCurrentEnvironmentVariables + | null + | undefined; + /** + * Durable progress for deployment updates + */ + updateState?: DeploymentUpdateState | undefined; + createdAt: Date; + updatedAt: Date; + managerId: string; + /** + * Unique identifier for the workspace. + */ + workspaceId: string; +}; + +/** @internal */ +export const DeploymentStatus$inboundSchema: z.ZodEnum< + typeof DeploymentStatus +> = z.enum(DeploymentStatus); + +/** @internal */ +export const DeploymentPlatform$inboundSchema: z.ZodEnum< + typeof DeploymentPlatform +> = z.enum(DeploymentPlatform); + +/** @internal */ +export const DeploymentBasePlatform$inboundSchema: z.ZodEnum< + typeof DeploymentBasePlatform +> = z.enum(DeploymentBasePlatform); + +/** @internal */ +export const DeploymentPlatformTest$inboundSchema: z.ZodEnum< + typeof DeploymentPlatformTest +> = z.enum(DeploymentPlatformTest); + +/** @internal */ +export const DeploymentEnvironmentInfoTest$inboundSchema: z.ZodType< + DeploymentEnvironmentInfoTest, + unknown +> = z.object({ + testId: z.string(), + platform: DeploymentPlatformTest$inboundSchema, +}); + +export function deploymentEnvironmentInfoTestFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentEnvironmentInfoTest$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentEnvironmentInfoTest' from JSON`, + ); +} + +/** @internal */ +export const DeploymentPlatformLocal$inboundSchema: z.ZodEnum< + typeof DeploymentPlatformLocal +> = z.enum(DeploymentPlatformLocal); + +/** @internal */ +export const DeploymentEnvironmentInfoLocal$inboundSchema: z.ZodType< + DeploymentEnvironmentInfoLocal, + unknown +> = z.object({ + arch: z.string(), + hostname: z.string(), + os: z.string(), + platform: DeploymentPlatformLocal$inboundSchema, +}); + +export function deploymentEnvironmentInfoLocalFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentEnvironmentInfoLocal$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentEnvironmentInfoLocal' from JSON`, + ); +} + +/** @internal */ +export const DeploymentPlatformAzure$inboundSchema: z.ZodEnum< + typeof DeploymentPlatformAzure +> = z.enum(DeploymentPlatformAzure); + +/** @internal */ +export const DeploymentEnvironmentInfoAzure$inboundSchema: z.ZodType< + DeploymentEnvironmentInfoAzure, + unknown +> = z.object({ + location: z.string(), + subscriptionId: z.string(), + tenantId: z.string(), + platform: DeploymentPlatformAzure$inboundSchema, +}); + +export function deploymentEnvironmentInfoAzureFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentEnvironmentInfoAzure$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentEnvironmentInfoAzure' from JSON`, + ); +} + +/** @internal */ +export const DeploymentPlatformGcp$inboundSchema: z.ZodEnum< + typeof DeploymentPlatformGcp +> = z.enum(DeploymentPlatformGcp); + +/** @internal */ +export const DeploymentEnvironmentInfoGcp$inboundSchema: z.ZodType< + DeploymentEnvironmentInfoGcp, + unknown +> = z.object({ + projectId: z.string(), + projectNumber: z.string(), + region: z.string(), + platform: DeploymentPlatformGcp$inboundSchema, +}); + +export function deploymentEnvironmentInfoGcpFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentEnvironmentInfoGcp$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentEnvironmentInfoGcp' from JSON`, + ); +} + +/** @internal */ +export const DeploymentPlatformAws$inboundSchema: z.ZodEnum< + typeof DeploymentPlatformAws +> = z.enum(DeploymentPlatformAws); + +/** @internal */ +export const DeploymentEnvironmentInfoAws$inboundSchema: z.ZodType< + DeploymentEnvironmentInfoAws, + unknown +> = z.object({ + accountId: z.string(), + region: z.string(), + platform: DeploymentPlatformAws$inboundSchema, +}); + +export function deploymentEnvironmentInfoAwsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentEnvironmentInfoAws$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentEnvironmentInfoAws' from JSON`, + ); +} + +/** @internal */ +export const DeploymentEnvironmentInfoUnion$inboundSchema: z.ZodType< + DeploymentEnvironmentInfoUnion, + unknown +> = z.union([ + z.lazy(() => DeploymentEnvironmentInfoGcp$inboundSchema), + z.lazy(() => DeploymentEnvironmentInfoAzure$inboundSchema), + z.lazy(() => DeploymentEnvironmentInfoLocal$inboundSchema), + z.lazy(() => DeploymentEnvironmentInfoAws$inboundSchema), + z.lazy(() => DeploymentEnvironmentInfoTest$inboundSchema), + z.any(), +]); + +export function deploymentEnvironmentInfoUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentEnvironmentInfoUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentEnvironmentInfoUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentFailureDomains2$inboundSchema: z.ZodType< + DeploymentFailureDomains2, + unknown +> = z.object({ + selectedFailureDomains: z.array(z.string()).optional(), + spread: z.int(), +}); + +export function deploymentFailureDomains2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentFailureDomains2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentFailureDomains2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentFailureDomainsUnion2$inboundSchema: z.ZodType< + DeploymentFailureDomainsUnion2, + unknown +> = z.union([z.lazy(() => DeploymentFailureDomains2$inboundSchema), z.any()]); + +export function deploymentFailureDomainsUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentFailureDomainsUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentFailureDomainsUnion2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentPoolsAutoscale$inboundSchema: z.ZodType< + DeploymentPoolsAutoscale, + unknown +> = z.object({ + failure_domains: z.nullable( + z.union([z.lazy(() => DeploymentFailureDomains2$inboundSchema), z.any()]), + ).optional(), + machine: z.nullable(z.string()).optional(), + max: z.int(), + min: z.int(), + mode: z.literal("autoscale"), +}).transform((v) => { + return remap$(v, { + "failure_domains": "failureDomains", + }); +}); + +export function deploymentPoolsAutoscaleFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentPoolsAutoscale$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPoolsAutoscale' from JSON`, + ); +} + +/** @internal */ +export const DeploymentFailureDomains1$inboundSchema: z.ZodType< + DeploymentFailureDomains1, + unknown +> = z.object({ + selectedFailureDomains: z.array(z.string()).optional(), + spread: z.int(), +}); + +export function deploymentFailureDomains1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentFailureDomains1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentFailureDomains1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentFailureDomainsUnion1$inboundSchema: z.ZodType< + DeploymentFailureDomainsUnion1, + unknown +> = z.union([z.lazy(() => DeploymentFailureDomains1$inboundSchema), z.any()]); + +export function deploymentFailureDomainsUnion1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentFailureDomainsUnion1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentFailureDomainsUnion1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentPoolsFixed$inboundSchema: z.ZodType< + DeploymentPoolsFixed, + unknown +> = z.object({ + failure_domains: z.nullable( + z.union([z.lazy(() => DeploymentFailureDomains1$inboundSchema), z.any()]), + ).optional(), + machine: z.nullable(z.string()).optional(), + machines: z.int(), + mode: z.literal("fixed"), +}).transform((v) => { + return remap$(v, { + "failure_domains": "failureDomains", + }); +}); + +export function deploymentPoolsFixedFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentPoolsFixed$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPoolsFixed' from JSON`, + ); +} + +/** @internal */ +export const DeploymentPoolsUnion$inboundSchema: z.ZodType< + DeploymentPoolsUnion, + unknown +> = z.union([ + z.lazy(() => DeploymentPoolsFixed$inboundSchema), + z.lazy(() => DeploymentPoolsAutoscale$inboundSchema), +]); + +export function deploymentPoolsUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentPoolsUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPoolsUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentCompute$inboundSchema: z.ZodType< + DeploymentCompute, + unknown +> = z.object({ + pools: z.record( + z.string(), + z.union([ + z.lazy(() => DeploymentPoolsFixed$inboundSchema), + z.lazy(() => DeploymentPoolsAutoscale$inboundSchema), + ]), + ).optional(), +}); + +export function deploymentComputeFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentCompute$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentCompute' from JSON`, + ); +} + +/** @internal */ +export const DeploymentComputeUnion$inboundSchema: z.ZodType< + DeploymentComputeUnion, + unknown +> = z.union([z.lazy(() => DeploymentCompute$inboundSchema), z.any()]); + +export function deploymentComputeUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentComputeUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentComputeUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDeploymentModel$inboundSchema: z.ZodEnum< + typeof DeploymentDeploymentModel +> = z.enum(DeploymentDeploymentModel); + +/** @internal */ +export const DeploymentAws$inboundSchema: z.ZodType = z + .object({ + certificateArn: z.string(), + }); + +export function deploymentAwsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentAws$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentAws' from JSON`, + ); +} + +/** @internal */ +export const DeploymentAwsUnion$inboundSchema: z.ZodType< + DeploymentAwsUnion, + unknown +> = z.union([z.lazy(() => DeploymentAws$inboundSchema), z.any()]); + +export function deploymentAwsUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentAwsUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentAwsUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentAzureStackSettings$inboundSchema: z.ZodType< + DeploymentAzureStackSettings, + unknown +> = z.object({ + keyVaultCertificateId: z.string(), + keyVaultResourceId: z.nullable(z.string()).optional(), +}); + +export function deploymentAzureStackSettingsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentAzureStackSettings$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentAzureStackSettings' from JSON`, + ); +} + +/** @internal */ +export const DeploymentAzureUnion$inboundSchema: z.ZodType< + DeploymentAzureUnion, + unknown +> = z.union([ + z.lazy(() => DeploymentAzureStackSettings$inboundSchema), + z.any(), +]); + +export function deploymentAzureUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentAzureUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentAzureUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentGcpStackSettings$inboundSchema: z.ZodType< + DeploymentGcpStackSettings, + unknown +> = z.object({ + certificateName: z.string(), +}); + +export function deploymentGcpStackSettingsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentGcpStackSettings$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentGcpStackSettings' from JSON`, + ); +} + +/** @internal */ +export const DeploymentGcpUnion$inboundSchema: z.ZodType< + DeploymentGcpUnion, + unknown +> = z.union([z.lazy(() => DeploymentGcpStackSettings$inboundSchema), z.any()]); + +export function deploymentGcpUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentGcpUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentGcpUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentTlsSecretRef$inboundSchema: z.ZodType< + DeploymentTlsSecretRef, + unknown +> = z.object({ + namespace: z.nullable(z.string()).optional(), + secretName: z.string(), +}); + +export function deploymentTlsSecretRefFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentTlsSecretRef$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentTlsSecretRef' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDomainsKubernetes$inboundSchema: z.ZodType< + DeploymentDomainsKubernetes, + unknown +> = z.object({ + tlsSecretRef: z.lazy(() => DeploymentTlsSecretRef$inboundSchema), +}); + +export function deploymentDomainsKubernetesFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentDomainsKubernetes$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDomainsKubernetes' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDomainsKubernetesUnion$inboundSchema: z.ZodType< + DeploymentDomainsKubernetesUnion, + unknown +> = z.union([z.lazy(() => DeploymentDomainsKubernetes$inboundSchema), z.any()]); + +export function deploymentDomainsKubernetesUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentDomainsKubernetesUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDomainsKubernetesUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDomainsCertificate$inboundSchema: z.ZodType< + DeploymentDomainsCertificate, + unknown +> = z.object({ + aws: z.nullable(z.union([z.lazy(() => DeploymentAws$inboundSchema), z.any()])) + .optional(), + azure: z.nullable( + z.union([ + z.lazy(() => DeploymentAzureStackSettings$inboundSchema), + z.any(), + ]), + ).optional(), + gcp: z.nullable( + z.union([z.lazy(() => DeploymentGcpStackSettings$inboundSchema), z.any()]), + ).optional(), + kubernetes: z.nullable( + z.union([z.lazy(() => DeploymentDomainsKubernetes$inboundSchema), z.any()]), + ).optional(), +}); + +export function deploymentDomainsCertificateFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentDomainsCertificate$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDomainsCertificate' from JSON`, + ); +} + +/** @internal */ +export const DeploymentCustomDomains$inboundSchema: z.ZodType< + DeploymentCustomDomains, + unknown +> = z.object({ + certificate: z.lazy(() => DeploymentDomainsCertificate$inboundSchema), + domain: z.string(), +}); + +export function deploymentCustomDomainsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentCustomDomains$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentCustomDomains' from JSON`, + ); +} + +/** @internal */ +export const DeploymentModeLoadBalancer$inboundSchema: z.ZodEnum< + typeof DeploymentModeLoadBalancer +> = z.enum(DeploymentModeLoadBalancer); + +/** @internal */ +export const DeploymentPublicEndpointTargetLoadBalancer$inboundSchema: + z.ZodType = z.object({ + cnameTarget: z.string(), + mode: DeploymentModeLoadBalancer$inboundSchema, + }); + +export function deploymentPublicEndpointTargetLoadBalancerFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentPublicEndpointTargetLoadBalancer, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentPublicEndpointTargetLoadBalancer$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPublicEndpointTargetLoadBalancer' from JSON`, + ); +} + +/** @internal */ +export const DeploymentModeMachineAddresses$inboundSchema: z.ZodEnum< + typeof DeploymentModeMachineAddresses +> = z.enum(DeploymentModeMachineAddresses); + +/** @internal */ +export const DeploymentPublicEndpointTargetMachineAddresses$inboundSchema: + z.ZodType = z.object( + { + mode: DeploymentModeMachineAddresses$inboundSchema, + }, + ); + +export function deploymentPublicEndpointTargetMachineAddressesFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentPublicEndpointTargetMachineAddresses, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentPublicEndpointTargetMachineAddresses$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPublicEndpointTargetMachineAddresses' from JSON`, + ); +} + +/** @internal */ +export const DeploymentPublicEndpointTargetUnion$inboundSchema: z.ZodType< + DeploymentPublicEndpointTargetUnion, + unknown +> = z.union([ + z.lazy(() => DeploymentPublicEndpointTargetLoadBalancer$inboundSchema), + z.lazy(() => DeploymentPublicEndpointTargetMachineAddresses$inboundSchema), + z.any(), +]); + +export function deploymentPublicEndpointTargetUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentPublicEndpointTargetUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPublicEndpointTargetUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDomains$inboundSchema: z.ZodType< + DeploymentDomains, + unknown +> = z.object({ + customDomains: z.nullable( + z.record(z.string(), z.lazy(() => DeploymentCustomDomains$inboundSchema)), + ).optional(), + publicEndpointTarget: z.nullable( + z.union([ + z.lazy(() => DeploymentPublicEndpointTargetLoadBalancer$inboundSchema), + z.lazy(() => + DeploymentPublicEndpointTargetMachineAddresses$inboundSchema + ), + z.any(), + ]), + ).optional(), +}); + +export function deploymentDomainsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentDomains$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDomains' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDomainsUnion$inboundSchema: z.ZodType< + DeploymentDomainsUnion, + unknown +> = z.union([z.lazy(() => DeploymentDomains$inboundSchema), z.any()]); + +export function deploymentDomainsUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentDomainsUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDomainsUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentExternalBindings$inboundSchema: z.ZodType< + DeploymentExternalBindings, + unknown +> = z.object({}); + +export function deploymentExternalBindingsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentExternalBindings$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentExternalBindings' from JSON`, + ); +} + +/** @internal */ +export const DeploymentHeartbeats$inboundSchema: z.ZodEnum< + typeof DeploymentHeartbeats +> = z.enum(DeploymentHeartbeats); + +/** @internal */ +export const DeploymentCloud$inboundSchema: z.ZodType< + DeploymentCloud, + unknown +> = z.object({ + accountId: z.nullable(z.string()).optional(), + clusterId: z.nullable(z.string()).optional(), + clusterName: z.nullable(z.string()).optional(), + projectId: z.nullable(z.string()).optional(), + region: z.nullable(z.string()).optional(), + resourceGroup: z.nullable(z.string()).optional(), + subscriptionId: z.nullable(z.string()).optional(), +}); + +export function deploymentCloudFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentCloud$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentCloud' from JSON`, + ); +} + +/** @internal */ +export const DeploymentCloudUnion$inboundSchema: z.ZodType< + DeploymentCloudUnion, + unknown +> = z.union([z.lazy(() => DeploymentCloud$inboundSchema), z.any()]); + +export function deploymentCloudUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentCloudUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentCloudUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentOwnership$inboundSchema: z.ZodEnum< + typeof DeploymentOwnership +> = z.enum(DeploymentOwnership); + +/** @internal */ +export const DeploymentCluster$inboundSchema: z.ZodType< + DeploymentCluster, + unknown +> = z.object({ + cloud: z.nullable( + z.union([z.lazy(() => DeploymentCloud$inboundSchema), z.any()]), + ).optional(), + namespace: z.nullable(z.string()).optional(), + ownership: DeploymentOwnership$inboundSchema, +}); + +export function deploymentClusterFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentCluster$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentCluster' from JSON`, + ); +} + +/** @internal */ +export const DeploymentClusterUnion$inboundSchema: z.ZodType< + DeploymentClusterUnion, + unknown +> = z.union([z.lazy(() => DeploymentCluster$inboundSchema), z.any()]); + +export function deploymentClusterUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentClusterUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentClusterUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentCertificateNone2$inboundSchema: z.ZodType< + DeploymentCertificateNone2, + unknown +> = z.object({ + mode: z.literal("none"), +}); + +export function deploymentCertificateNone2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentCertificateNone2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentCertificateNone2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentCertificateManagedTLSSecret2$inboundSchema: z.ZodType< + DeploymentCertificateManagedTLSSecret2, + unknown +> = z.object({ + mode: z.literal("managedTlsSecret"), + secretNameTemplate: z.string(), +}); + +export function deploymentCertificateManagedTLSSecret2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentCertificateManagedTLSSecret2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentCertificateManagedTLSSecret2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentCertificateAwsAcmArn2$inboundSchema: z.ZodType< + DeploymentCertificateAwsAcmArn2, + unknown +> = z.object({ + certificateArn: z.string(), + mode: z.literal("awsAcmArn"), +}); + +export function deploymentCertificateAwsAcmArn2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentCertificateAwsAcmArn2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentCertificateAwsAcmArn2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentCertificateManagedAcmImport2$inboundSchema: z.ZodType< + DeploymentCertificateManagedAcmImport2, + unknown +> = z.object({ + mode: z.literal("managedAcmImport"), + region: z.nullable(z.string()).optional(), + tags: z.record(z.string(), z.string()).optional(), +}); + +export function deploymentCertificateManagedAcmImport2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentCertificateManagedAcmImport2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentCertificateManagedAcmImport2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentCertificateTLSSecretRef2$inboundSchema: z.ZodType< + DeploymentCertificateTLSSecretRef2, + unknown +> = z.object({ + namespace: z.nullable(z.string()).optional(), + secretName: z.string(), + mode: z.literal("tlsSecretRef"), +}); + +export function deploymentCertificateTLSSecretRef2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentCertificateTLSSecretRef2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentCertificateTLSSecretRef2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentCertificateUnion2$inboundSchema: z.ZodType< + DeploymentCertificateUnion2, + unknown +> = z.union([ + z.lazy(() => DeploymentCertificateTLSSecretRef2$inboundSchema), + z.lazy(() => DeploymentCertificateManagedAcmImport2$inboundSchema), + z.lazy(() => DeploymentCertificateAwsAcmArn2$inboundSchema), + z.lazy(() => DeploymentCertificateManagedTLSSecret2$inboundSchema), + z.lazy(() => DeploymentCertificateNone2$inboundSchema), +]); + +export function deploymentCertificateUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentCertificateUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentCertificateUnion2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentModeCustom$inboundSchema: z.ZodEnum< + typeof DeploymentModeCustom +> = z.enum(DeploymentModeCustom); + +/** @internal */ +export const DeploymentProviderAzureApplicationGatewayForContainersEnum4$inboundSchema: + z.ZodEnum< + typeof DeploymentProviderAzureApplicationGatewayForContainersEnum4 + > = z.enum(DeploymentProviderAzureApplicationGatewayForContainersEnum4); + +/** @internal */ +export const DeploymentProviderAzureApplicationGatewayForContainers4$inboundSchema: + z.ZodType = + z.object({ + albName: z.nullable(z.string()).optional(), + albNamespace: z.nullable(z.string()).optional(), + frontend: z.string(), + provider: + DeploymentProviderAzureApplicationGatewayForContainersEnum4$inboundSchema, + }); + +export function deploymentProviderAzureApplicationGatewayForContainers4FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentProviderAzureApplicationGatewayForContainers4, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentProviderAzureApplicationGatewayForContainers4$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentProviderAzureApplicationGatewayForContainers4' from JSON`, + ); +} + +/** @internal */ +export const DeploymentProviderGkeGatewayEnum4$inboundSchema: z.ZodEnum< + typeof DeploymentProviderGkeGatewayEnum4 +> = z.enum(DeploymentProviderGkeGatewayEnum4); + +/** @internal */ +export const DeploymentProviderGkeGateway4$inboundSchema: z.ZodType< + DeploymentProviderGkeGateway4, + unknown +> = z.object({ + provider: DeploymentProviderGkeGatewayEnum4$inboundSchema, + staticAddressName: z.nullable(z.string()).optional(), +}); + +export function deploymentProviderGkeGateway4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentProviderGkeGateway4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentProviderGkeGateway4' from JSON`, + ); +} + +/** @internal */ +export const DeploymentProviderAwsAlbEnum4$inboundSchema: z.ZodEnum< + typeof DeploymentProviderAwsAlbEnum4 +> = z.enum(DeploymentProviderAwsAlbEnum4); + +/** @internal */ +export const DeploymentProviderAwsAlb4$inboundSchema: z.ZodType< + DeploymentProviderAwsAlb4, + unknown +> = z.object({ + ipAddressType: z.nullable(z.string()).optional(), + provider: DeploymentProviderAwsAlbEnum4$inboundSchema, + scheme: z.string(), + subnetIds: z.array(z.string()).optional(), + targetType: z.string(), +}); + +export function deploymentProviderAwsAlb4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentProviderAwsAlb4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentProviderAwsAlb4' from JSON`, + ); +} + +/** @internal */ +export const DeploymentProviderUnion4$inboundSchema: z.ZodType< + DeploymentProviderUnion4, + unknown +> = z.union([ + z.lazy(() => DeploymentProviderAwsAlb4$inboundSchema), + z.lazy(() => + DeploymentProviderAzureApplicationGatewayForContainers4$inboundSchema + ), + z.lazy(() => DeploymentProviderGkeGateway4$inboundSchema), + z.any(), +]); + +export function deploymentProviderUnion4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentProviderUnion4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentProviderUnion4' from JSON`, + ); +} + +/** @internal */ +export const DeploymentRouteGateway2$inboundSchema: z.ZodType< + DeploymentRouteGateway2, + unknown +> = z.object({ + annotations: z.record(z.string(), z.string()).optional(), + controller: z.nullable(z.string()).optional(), + gatewayClassName: z.string(), + labels: z.record(z.string(), z.string()).optional(), + listenerPort: z.int(), + provider: z.nullable( + z.union([ + z.lazy(() => DeploymentProviderAwsAlb4$inboundSchema), + z.lazy(() => + DeploymentProviderAzureApplicationGatewayForContainers4$inboundSchema + ), + z.lazy(() => DeploymentProviderGkeGateway4$inboundSchema), + z.any(), + ]), + ).optional(), + routeApi: z.literal("gateway"), +}); + +export function deploymentRouteGateway2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentRouteGateway2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentRouteGateway2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentProviderAzureApplicationGatewayForContainersEnum3$inboundSchema: + z.ZodEnum< + typeof DeploymentProviderAzureApplicationGatewayForContainersEnum3 + > = z.enum(DeploymentProviderAzureApplicationGatewayForContainersEnum3); + +/** @internal */ +export const DeploymentProviderAzureApplicationGatewayForContainers3$inboundSchema: + z.ZodType = + z.object({ + albName: z.nullable(z.string()).optional(), + albNamespace: z.nullable(z.string()).optional(), + frontend: z.string(), + provider: + DeploymentProviderAzureApplicationGatewayForContainersEnum3$inboundSchema, + }); + +export function deploymentProviderAzureApplicationGatewayForContainers3FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentProviderAzureApplicationGatewayForContainers3, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentProviderAzureApplicationGatewayForContainers3$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentProviderAzureApplicationGatewayForContainers3' from JSON`, + ); +} + +/** @internal */ +export const DeploymentProviderGkeGatewayEnum3$inboundSchema: z.ZodEnum< + typeof DeploymentProviderGkeGatewayEnum3 +> = z.enum(DeploymentProviderGkeGatewayEnum3); + +/** @internal */ +export const DeploymentProviderGkeGateway3$inboundSchema: z.ZodType< + DeploymentProviderGkeGateway3, + unknown +> = z.object({ + provider: DeploymentProviderGkeGatewayEnum3$inboundSchema, + staticAddressName: z.nullable(z.string()).optional(), +}); + +export function deploymentProviderGkeGateway3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentProviderGkeGateway3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentProviderGkeGateway3' from JSON`, + ); +} + +/** @internal */ +export const DeploymentProviderAwsAlbEnum3$inboundSchema: z.ZodEnum< + typeof DeploymentProviderAwsAlbEnum3 +> = z.enum(DeploymentProviderAwsAlbEnum3); + +/** @internal */ +export const DeploymentProviderAwsAlb3$inboundSchema: z.ZodType< + DeploymentProviderAwsAlb3, + unknown +> = z.object({ + ipAddressType: z.nullable(z.string()).optional(), + provider: DeploymentProviderAwsAlbEnum3$inboundSchema, + scheme: z.string(), + subnetIds: z.array(z.string()).optional(), + targetType: z.string(), +}); + +export function deploymentProviderAwsAlb3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentProviderAwsAlb3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentProviderAwsAlb3' from JSON`, + ); +} + +/** @internal */ +export const DeploymentProviderUnion3$inboundSchema: z.ZodType< + DeploymentProviderUnion3, + unknown +> = z.union([ + z.lazy(() => DeploymentProviderAwsAlb3$inboundSchema), + z.lazy(() => + DeploymentProviderAzureApplicationGatewayForContainers3$inboundSchema + ), + z.lazy(() => DeploymentProviderGkeGateway3$inboundSchema), + z.any(), +]); + +export function deploymentProviderUnion3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentProviderUnion3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentProviderUnion3' from JSON`, + ); +} + +/** @internal */ +export const DeploymentRouteIngress2$inboundSchema: z.ZodType< + DeploymentRouteIngress2, + unknown +> = z.object({ + annotations: z.record(z.string(), z.string()).optional(), + controller: z.nullable(z.string()).optional(), + ingressClassName: z.string(), + labels: z.record(z.string(), z.string()).optional(), + provider: z.nullable( + z.union([ + z.lazy(() => DeploymentProviderAwsAlb3$inboundSchema), + z.lazy(() => + DeploymentProviderAzureApplicationGatewayForContainers3$inboundSchema + ), + z.lazy(() => DeploymentProviderGkeGateway3$inboundSchema), + z.any(), + ]), + ).optional(), + routeApi: z.literal("ingress"), +}); + +export function deploymentRouteIngress2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentRouteIngress2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentRouteIngress2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentRouteUnion2$inboundSchema: z.ZodType< + DeploymentRouteUnion2, + unknown +> = z.union([ + z.lazy(() => DeploymentRouteIngress2$inboundSchema), + z.lazy(() => DeploymentRouteGateway2$inboundSchema), +]); + +export function deploymentRouteUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentRouteUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentRouteUnion2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentExposureCustom$inboundSchema: z.ZodType< + DeploymentExposureCustom, + unknown +> = z.object({ + certificate: z.union([ + z.lazy(() => DeploymentCertificateTLSSecretRef2$inboundSchema), + z.lazy(() => DeploymentCertificateManagedAcmImport2$inboundSchema), + z.lazy(() => DeploymentCertificateAwsAcmArn2$inboundSchema), + z.lazy(() => DeploymentCertificateManagedTLSSecret2$inboundSchema), + z.lazy(() => DeploymentCertificateNone2$inboundSchema), + ]), + domain: z.string(), + mode: DeploymentModeCustom$inboundSchema, + route: z.union([ + z.lazy(() => DeploymentRouteIngress2$inboundSchema), + z.lazy(() => DeploymentRouteGateway2$inboundSchema), + ]), +}); + +export function deploymentExposureCustomFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentExposureCustom$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentExposureCustom' from JSON`, + ); +} + +/** @internal */ +export const DeploymentCertificateNone1$inboundSchema: z.ZodType< + DeploymentCertificateNone1, + unknown +> = z.object({ + mode: z.literal("none"), +}); + +export function deploymentCertificateNone1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentCertificateNone1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentCertificateNone1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentCertificateManagedTLSSecret1$inboundSchema: z.ZodType< + DeploymentCertificateManagedTLSSecret1, + unknown +> = z.object({ + mode: z.literal("managedTlsSecret"), + secretNameTemplate: z.string(), +}); + +export function deploymentCertificateManagedTLSSecret1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentCertificateManagedTLSSecret1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentCertificateManagedTLSSecret1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentCertificateAwsAcmArn1$inboundSchema: z.ZodType< + DeploymentCertificateAwsAcmArn1, + unknown +> = z.object({ + certificateArn: z.string(), + mode: z.literal("awsAcmArn"), +}); + +export function deploymentCertificateAwsAcmArn1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentCertificateAwsAcmArn1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentCertificateAwsAcmArn1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentCertificateManagedAcmImport1$inboundSchema: z.ZodType< + DeploymentCertificateManagedAcmImport1, + unknown +> = z.object({ + mode: z.literal("managedAcmImport"), + region: z.nullable(z.string()).optional(), + tags: z.record(z.string(), z.string()).optional(), +}); + +export function deploymentCertificateManagedAcmImport1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentCertificateManagedAcmImport1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentCertificateManagedAcmImport1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentCertificateTLSSecretRef1$inboundSchema: z.ZodType< + DeploymentCertificateTLSSecretRef1, + unknown +> = z.object({ + namespace: z.nullable(z.string()).optional(), + secretName: z.string(), + mode: z.literal("tlsSecretRef"), +}); + +export function deploymentCertificateTLSSecretRef1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentCertificateTLSSecretRef1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentCertificateTLSSecretRef1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentCertificateUnion1$inboundSchema: z.ZodType< + DeploymentCertificateUnion1, + unknown +> = z.union([ + z.lazy(() => DeploymentCertificateTLSSecretRef1$inboundSchema), + z.lazy(() => DeploymentCertificateManagedAcmImport1$inboundSchema), + z.lazy(() => DeploymentCertificateAwsAcmArn1$inboundSchema), + z.lazy(() => DeploymentCertificateManagedTLSSecret1$inboundSchema), + z.lazy(() => DeploymentCertificateNone1$inboundSchema), +]); + +export function deploymentCertificateUnion1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentCertificateUnion1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentCertificateUnion1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentModeGenerated$inboundSchema: z.ZodEnum< + typeof DeploymentModeGenerated +> = z.enum(DeploymentModeGenerated); + +/** @internal */ +export const DeploymentProviderAzureApplicationGatewayForContainersEnum2$inboundSchema: + z.ZodEnum< + typeof DeploymentProviderAzureApplicationGatewayForContainersEnum2 + > = z.enum(DeploymentProviderAzureApplicationGatewayForContainersEnum2); + +/** @internal */ +export const DeploymentProviderAzureApplicationGatewayForContainers2$inboundSchema: + z.ZodType = + z.object({ + albName: z.nullable(z.string()).optional(), + albNamespace: z.nullable(z.string()).optional(), + frontend: z.string(), + provider: + DeploymentProviderAzureApplicationGatewayForContainersEnum2$inboundSchema, + }); + +export function deploymentProviderAzureApplicationGatewayForContainers2FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentProviderAzureApplicationGatewayForContainers2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentProviderAzureApplicationGatewayForContainers2$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentProviderAzureApplicationGatewayForContainers2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentProviderGkeGatewayEnum2$inboundSchema: z.ZodEnum< + typeof DeploymentProviderGkeGatewayEnum2 +> = z.enum(DeploymentProviderGkeGatewayEnum2); + +/** @internal */ +export const DeploymentProviderGkeGateway2$inboundSchema: z.ZodType< + DeploymentProviderGkeGateway2, + unknown +> = z.object({ + provider: DeploymentProviderGkeGatewayEnum2$inboundSchema, + staticAddressName: z.nullable(z.string()).optional(), +}); + +export function deploymentProviderGkeGateway2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentProviderGkeGateway2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentProviderGkeGateway2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentProviderAwsAlbEnum2$inboundSchema: z.ZodEnum< + typeof DeploymentProviderAwsAlbEnum2 +> = z.enum(DeploymentProviderAwsAlbEnum2); + +/** @internal */ +export const DeploymentProviderAwsAlb2$inboundSchema: z.ZodType< + DeploymentProviderAwsAlb2, + unknown +> = z.object({ + ipAddressType: z.nullable(z.string()).optional(), + provider: DeploymentProviderAwsAlbEnum2$inboundSchema, + scheme: z.string(), + subnetIds: z.array(z.string()).optional(), + targetType: z.string(), +}); + +export function deploymentProviderAwsAlb2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentProviderAwsAlb2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentProviderAwsAlb2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentProviderUnion2$inboundSchema: z.ZodType< + DeploymentProviderUnion2, + unknown +> = z.union([ + z.lazy(() => DeploymentProviderAwsAlb2$inboundSchema), + z.lazy(() => + DeploymentProviderAzureApplicationGatewayForContainers2$inboundSchema + ), + z.lazy(() => DeploymentProviderGkeGateway2$inboundSchema), + z.any(), +]); + +export function deploymentProviderUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentProviderUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentProviderUnion2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentRouteGateway1$inboundSchema: z.ZodType< + DeploymentRouteGateway1, + unknown +> = z.object({ + annotations: z.record(z.string(), z.string()).optional(), + controller: z.nullable(z.string()).optional(), + gatewayClassName: z.string(), + labels: z.record(z.string(), z.string()).optional(), + listenerPort: z.int(), + provider: z.nullable( + z.union([ + z.lazy(() => DeploymentProviderAwsAlb2$inboundSchema), + z.lazy(() => + DeploymentProviderAzureApplicationGatewayForContainers2$inboundSchema + ), + z.lazy(() => DeploymentProviderGkeGateway2$inboundSchema), + z.any(), + ]), + ).optional(), + routeApi: z.literal("gateway"), +}); + +export function deploymentRouteGateway1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentRouteGateway1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentRouteGateway1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentProviderAzureApplicationGatewayForContainersEnum1$inboundSchema: + z.ZodEnum< + typeof DeploymentProviderAzureApplicationGatewayForContainersEnum1 + > = z.enum(DeploymentProviderAzureApplicationGatewayForContainersEnum1); + +/** @internal */ +export const DeploymentProviderAzureApplicationGatewayForContainers1$inboundSchema: + z.ZodType = + z.object({ + albName: z.nullable(z.string()).optional(), + albNamespace: z.nullable(z.string()).optional(), + frontend: z.string(), + provider: + DeploymentProviderAzureApplicationGatewayForContainersEnum1$inboundSchema, + }); + +export function deploymentProviderAzureApplicationGatewayForContainers1FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentProviderAzureApplicationGatewayForContainers1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentProviderAzureApplicationGatewayForContainers1$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentProviderAzureApplicationGatewayForContainers1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentProviderGkeGatewayEnum1$inboundSchema: z.ZodEnum< + typeof DeploymentProviderGkeGatewayEnum1 +> = z.enum(DeploymentProviderGkeGatewayEnum1); + +/** @internal */ +export const DeploymentProviderGkeGateway1$inboundSchema: z.ZodType< + DeploymentProviderGkeGateway1, + unknown +> = z.object({ + provider: DeploymentProviderGkeGatewayEnum1$inboundSchema, + staticAddressName: z.nullable(z.string()).optional(), +}); + +export function deploymentProviderGkeGateway1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentProviderGkeGateway1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentProviderGkeGateway1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentProviderAwsAlbEnum1$inboundSchema: z.ZodEnum< + typeof DeploymentProviderAwsAlbEnum1 +> = z.enum(DeploymentProviderAwsAlbEnum1); + +/** @internal */ +export const DeploymentProviderAwsAlb1$inboundSchema: z.ZodType< + DeploymentProviderAwsAlb1, + unknown +> = z.object({ + ipAddressType: z.nullable(z.string()).optional(), + provider: DeploymentProviderAwsAlbEnum1$inboundSchema, + scheme: z.string(), + subnetIds: z.array(z.string()).optional(), + targetType: z.string(), +}); + +export function deploymentProviderAwsAlb1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentProviderAwsAlb1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentProviderAwsAlb1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentProviderUnion1$inboundSchema: z.ZodType< + DeploymentProviderUnion1, + unknown +> = z.union([ + z.lazy(() => DeploymentProviderAwsAlb1$inboundSchema), + z.lazy(() => + DeploymentProviderAzureApplicationGatewayForContainers1$inboundSchema + ), + z.lazy(() => DeploymentProviderGkeGateway1$inboundSchema), + z.any(), +]); + +export function deploymentProviderUnion1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentProviderUnion1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentProviderUnion1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentRouteIngress1$inboundSchema: z.ZodType< + DeploymentRouteIngress1, + unknown +> = z.object({ + annotations: z.record(z.string(), z.string()).optional(), + controller: z.nullable(z.string()).optional(), + ingressClassName: z.string(), + labels: z.record(z.string(), z.string()).optional(), + provider: z.nullable( + z.union([ + z.lazy(() => DeploymentProviderAwsAlb1$inboundSchema), + z.lazy(() => + DeploymentProviderAzureApplicationGatewayForContainers1$inboundSchema + ), + z.lazy(() => DeploymentProviderGkeGateway1$inboundSchema), + z.any(), + ]), + ).optional(), + routeApi: z.literal("ingress"), +}); + +export function deploymentRouteIngress1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentRouteIngress1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentRouteIngress1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentRouteUnion1$inboundSchema: z.ZodType< + DeploymentRouteUnion1, + unknown +> = z.union([ + z.lazy(() => DeploymentRouteIngress1$inboundSchema), + z.lazy(() => DeploymentRouteGateway1$inboundSchema), +]); + +export function deploymentRouteUnion1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentRouteUnion1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentRouteUnion1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentExposureGenerated$inboundSchema: z.ZodType< + DeploymentExposureGenerated, + unknown +> = z.object({ + certificate: z.union([ + z.lazy(() => DeploymentCertificateTLSSecretRef1$inboundSchema), + z.lazy(() => DeploymentCertificateManagedAcmImport1$inboundSchema), + z.lazy(() => DeploymentCertificateAwsAcmArn1$inboundSchema), + z.lazy(() => DeploymentCertificateManagedTLSSecret1$inboundSchema), + z.lazy(() => DeploymentCertificateNone1$inboundSchema), + ]), + mode: DeploymentModeGenerated$inboundSchema, + route: z.union([ + z.lazy(() => DeploymentRouteIngress1$inboundSchema), + z.lazy(() => DeploymentRouteGateway1$inboundSchema), + ]), +}); + +export function deploymentExposureGeneratedFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentExposureGenerated$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentExposureGenerated' from JSON`, + ); +} + +/** @internal */ +export const DeploymentModeDisabled$inboundSchema: z.ZodEnum< + typeof DeploymentModeDisabled +> = z.enum(DeploymentModeDisabled); + +/** @internal */ +export const DeploymentExposureDisabled$inboundSchema: z.ZodType< + DeploymentExposureDisabled, + unknown +> = z.object({ + mode: DeploymentModeDisabled$inboundSchema, +}); + +export function deploymentExposureDisabledFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentExposureDisabled$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentExposureDisabled' from JSON`, + ); +} + +/** @internal */ +export const DeploymentExposureUnion$inboundSchema: z.ZodType< + DeploymentExposureUnion, + unknown +> = z.union([ + z.lazy(() => DeploymentExposureCustom$inboundSchema), + z.lazy(() => DeploymentExposureGenerated$inboundSchema), + z.lazy(() => DeploymentExposureDisabled$inboundSchema), + z.any(), +]); + +export function deploymentExposureUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentExposureUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentExposureUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentKubernetes$inboundSchema: z.ZodType< + DeploymentKubernetes, + unknown +> = z.object({ + cluster: z.nullable( + z.union([z.lazy(() => DeploymentCluster$inboundSchema), z.any()]), + ).optional(), + exposure: z.nullable( + z.union([ + z.lazy(() => DeploymentExposureCustom$inboundSchema), + z.lazy(() => DeploymentExposureGenerated$inboundSchema), + z.lazy(() => DeploymentExposureDisabled$inboundSchema), + z.any(), + ]), + ).optional(), +}); + +export function deploymentKubernetesFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentKubernetes$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentKubernetes' from JSON`, + ); +} + +/** @internal */ +export const DeploymentKubernetesUnion$inboundSchema: z.ZodType< + DeploymentKubernetesUnion, + unknown +> = z.union([z.lazy(() => DeploymentKubernetes$inboundSchema), z.any()]); + +export function deploymentKubernetesUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentKubernetesUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentKubernetesUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentTypeByoVnetAzure$inboundSchema: z.ZodEnum< + typeof DeploymentTypeByoVnetAzure +> = z.enum(DeploymentTypeByoVnetAzure); + +/** @internal */ +export const DeploymentNetworkByoVnetAzure$inboundSchema: z.ZodType< + DeploymentNetworkByoVnetAzure, + unknown +> = z.object({ + application_gateway_subnet_name: z.nullable(z.string()).optional(), + private_endpoint_subnet_name: z.nullable(z.string()).optional(), + private_subnet_name: z.string(), + public_subnet_name: z.string(), + type: DeploymentTypeByoVnetAzure$inboundSchema, + vnet_resource_id: z.string(), +}).transform((v) => { + return remap$(v, { + "application_gateway_subnet_name": "applicationGatewaySubnetName", + "private_endpoint_subnet_name": "privateEndpointSubnetName", + "private_subnet_name": "privateSubnetName", + "public_subnet_name": "publicSubnetName", + "vnet_resource_id": "vnetResourceId", + }); +}); + +export function deploymentNetworkByoVnetAzureFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentNetworkByoVnetAzure$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentNetworkByoVnetAzure' from JSON`, + ); +} + +/** @internal */ +export const DeploymentTypeByoVpcGcp$inboundSchema: z.ZodEnum< + typeof DeploymentTypeByoVpcGcp +> = z.enum(DeploymentTypeByoVpcGcp); + +/** @internal */ +export const DeploymentNetworkByoVpcGcp$inboundSchema: z.ZodType< + DeploymentNetworkByoVpcGcp, + unknown +> = z.object({ + network_name: z.string(), + region: z.string(), + subnet_name: z.string(), + type: DeploymentTypeByoVpcGcp$inboundSchema, +}).transform((v) => { + return remap$(v, { + "network_name": "networkName", + "subnet_name": "subnetName", + }); +}); + +export function deploymentNetworkByoVpcGcpFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentNetworkByoVpcGcp$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentNetworkByoVpcGcp' from JSON`, + ); +} + /** @internal */ -export const DeploymentStatus$inboundSchema: z.ZodEnum< - typeof DeploymentStatus -> = z.enum(DeploymentStatus); +export const DeploymentTypeByoVpcAws$inboundSchema: z.ZodEnum< + typeof DeploymentTypeByoVpcAws +> = z.enum(DeploymentTypeByoVpcAws); /** @internal */ -export const DeploymentPlatform$inboundSchema: z.ZodEnum< - typeof DeploymentPlatform -> = z.enum(DeploymentPlatform); +export const DeploymentNetworkByoVpcAws$inboundSchema: z.ZodType< + DeploymentNetworkByoVpcAws, + unknown +> = z.object({ + private_subnet_ids: z.array(z.string()), + public_subnet_ids: z.array(z.string()), + security_group_ids: z.array(z.string()).optional(), + type: DeploymentTypeByoVpcAws$inboundSchema, + vpc_id: z.string(), +}).transform((v) => { + return remap$(v, { + "private_subnet_ids": "privateSubnetIds", + "public_subnet_ids": "publicSubnetIds", + "security_group_ids": "securityGroupIds", + "vpc_id": "vpcId", + }); +}); + +export function deploymentNetworkByoVpcAwsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentNetworkByoVpcAws$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentNetworkByoVpcAws' from JSON`, + ); +} /** @internal */ -export const DeploymentBasePlatform$inboundSchema: z.ZodEnum< - typeof DeploymentBasePlatform -> = z.enum(DeploymentBasePlatform); +export const DeploymentTypeCreate$inboundSchema: z.ZodEnum< + typeof DeploymentTypeCreate +> = z.enum(DeploymentTypeCreate); /** @internal */ -export const DeploymentPlatformTest$inboundSchema: z.ZodEnum< - typeof DeploymentPlatformTest -> = z.enum(DeploymentPlatformTest); +export const DeploymentNetworkCreate$inboundSchema: z.ZodType< + DeploymentNetworkCreate, + unknown +> = z.object({ + availability_zones: z.int().optional(), + cidr: z.nullable(z.string()).optional(), + type: DeploymentTypeCreate$inboundSchema, +}).transform((v) => { + return remap$(v, { + "availability_zones": "availabilityZones", + }); +}); + +export function deploymentNetworkCreateFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentNetworkCreate$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentNetworkCreate' from JSON`, + ); +} /** @internal */ -export const DeploymentEnvironmentInfoTest$inboundSchema: z.ZodType< - DeploymentEnvironmentInfoTest, +export const DeploymentTypeUseDefault$inboundSchema: z.ZodEnum< + typeof DeploymentTypeUseDefault +> = z.enum(DeploymentTypeUseDefault); + +/** @internal */ +export const DeploymentNetworkUseDefault$inboundSchema: z.ZodType< + DeploymentNetworkUseDefault, unknown > = z.object({ - testId: z.string(), - platform: DeploymentPlatformTest$inboundSchema, + type: DeploymentTypeUseDefault$inboundSchema, }); -export function deploymentEnvironmentInfoTestFromJSON( +export function deploymentNetworkUseDefaultFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentEnvironmentInfoTest$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentEnvironmentInfoTest' from JSON`, + (x) => DeploymentNetworkUseDefault$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentNetworkUseDefault' from JSON`, ); } /** @internal */ -export const DeploymentPlatformLocal$inboundSchema: z.ZodEnum< - typeof DeploymentPlatformLocal -> = z.enum(DeploymentPlatformLocal); +export const DeploymentNetworkUnion$inboundSchema: z.ZodType< + DeploymentNetworkUnion, + unknown +> = z.union([ + z.lazy(() => DeploymentNetworkByoVpcAws$inboundSchema), + z.lazy(() => DeploymentNetworkByoVpcGcp$inboundSchema), + z.lazy(() => DeploymentNetworkByoVnetAzure$inboundSchema), + z.lazy(() => DeploymentNetworkUseDefault$inboundSchema), + z.lazy(() => DeploymentNetworkCreate$inboundSchema), + z.any(), +]); + +export function deploymentNetworkUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentNetworkUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentNetworkUnion' from JSON`, + ); +} /** @internal */ -export const DeploymentEnvironmentInfoLocal$inboundSchema: z.ZodType< - DeploymentEnvironmentInfoLocal, +export const DeploymentTelemetry$inboundSchema: z.ZodEnum< + typeof DeploymentTelemetry +> = z.enum(DeploymentTelemetry); + +/** @internal */ +export const DeploymentUpdates$inboundSchema: z.ZodEnum< + typeof DeploymentUpdates +> = z.enum(DeploymentUpdates); + +/** @internal */ +export const DeploymentStackSettings$inboundSchema: z.ZodType< + DeploymentStackSettings, unknown > = z.object({ - arch: z.string(), - hostname: z.string(), - os: z.string(), - platform: DeploymentPlatformLocal$inboundSchema, + compute: z.nullable( + z.union([z.lazy(() => DeploymentCompute$inboundSchema), z.any()]), + ).optional(), + deploymentModel: DeploymentDeploymentModel$inboundSchema.optional(), + domains: z.nullable( + z.union([z.lazy(() => DeploymentDomains$inboundSchema), z.any()]), + ).optional(), + externalBindings: z.nullable( + z.lazy(() => DeploymentExternalBindings$inboundSchema), + ).optional(), + heartbeats: DeploymentHeartbeats$inboundSchema.optional(), + kubernetes: z.nullable( + z.union([z.lazy(() => DeploymentKubernetes$inboundSchema), z.any()]), + ).optional(), + network: z.nullable( + z.union([ + z.lazy(() => DeploymentNetworkByoVpcAws$inboundSchema), + z.lazy(() => DeploymentNetworkByoVpcGcp$inboundSchema), + z.lazy(() => DeploymentNetworkByoVnetAzure$inboundSchema), + z.lazy(() => DeploymentNetworkUseDefault$inboundSchema), + z.lazy(() => DeploymentNetworkCreate$inboundSchema), + z.any(), + ]), + ).optional(), + telemetry: DeploymentTelemetry$inboundSchema.optional(), + updates: DeploymentUpdates$inboundSchema.optional(), }); -export function deploymentEnvironmentInfoLocalFromJSON( +export function deploymentStackSettingsFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentEnvironmentInfoLocal$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentEnvironmentInfoLocal' from JSON`, + (x) => DeploymentStackSettings$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentStackSettings' from JSON`, ); } /** @internal */ -export const DeploymentPlatformAzure$inboundSchema: z.ZodEnum< - typeof DeploymentPlatformAzure -> = z.enum(DeploymentPlatformAzure); +export const DeploymentStackStatePlatform$inboundSchema: z.ZodEnum< + typeof DeploymentStackStatePlatform +> = z.enum(DeploymentStackStatePlatform); /** @internal */ -export const DeploymentEnvironmentInfoAzure$inboundSchema: z.ZodType< - DeploymentEnvironmentInfoAzure, +export const DeploymentStackStateConfig$inboundSchema: z.ZodType< + DeploymentStackStateConfig, + unknown +> = collectExtraKeys$( + z.object({ + id: z.string(), + type: z.string(), + }).catchall(z.any()), + "additionalProperties", + true, +); + +export function deploymentStackStateConfigFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentStackStateConfig$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentStackStateConfig' from JSON`, + ); +} + +/** @internal */ +export const DeploymentControllerPlatformEnum$inboundSchema: z.ZodEnum< + typeof DeploymentControllerPlatformEnum +> = z.enum(DeploymentControllerPlatformEnum); + +/** @internal */ +export const DeploymentControllerPlatformUnion$inboundSchema: z.ZodType< + DeploymentControllerPlatformUnion, + unknown +> = z.union([DeploymentControllerPlatformEnum$inboundSchema, z.any()]); + +export function deploymentControllerPlatformUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentControllerPlatformUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentControllerPlatformUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentStackStateDependency$inboundSchema: z.ZodType< + DeploymentStackStateDependency, unknown > = z.object({ - location: z.string(), - subscriptionId: z.string(), - tenantId: z.string(), - platform: DeploymentPlatformAzure$inboundSchema, + id: z.string(), + type: z.string(), }); -export function deploymentEnvironmentInfoAzureFromJSON( +export function deploymentStackStateDependencyFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentEnvironmentInfoAzure$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentEnvironmentInfoAzure' from JSON`, + (x) => DeploymentStackStateDependency$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentStackStateDependency' from JSON`, + ); +} + +/** @internal */ +export const DeploymentErrorStackState$inboundSchema: z.ZodType< + DeploymentErrorStackState, + unknown +> = z.object({ + code: z.string(), + context: z.nullable(z.any()).optional(), + hint: z.nullable(z.string()).optional(), + httpStatusCode: z.nullable(z.int()).optional(), + internal: z.boolean(), + message: z.string(), + retryable: z.boolean().default(false), + source: z.nullable(z.any()).optional(), +}); + +export function deploymentErrorStackStateFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentErrorStackState$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentErrorStackState' from JSON`, ); } /** @internal */ -export const DeploymentPlatformGcp$inboundSchema: z.ZodEnum< - typeof DeploymentPlatformGcp -> = z.enum(DeploymentPlatformGcp); - -/** @internal */ -export const DeploymentEnvironmentInfoGcp$inboundSchema: z.ZodType< - DeploymentEnvironmentInfoGcp, +export const DeploymentErrorUnion$inboundSchema: z.ZodType< + DeploymentErrorUnion, unknown -> = z.object({ - projectId: z.string(), - projectNumber: z.string(), - region: z.string(), - platform: DeploymentPlatformGcp$inboundSchema, -}); +> = z.union([z.lazy(() => DeploymentErrorStackState$inboundSchema), z.any()]); -export function deploymentEnvironmentInfoGcpFromJSON( +export function deploymentErrorUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentEnvironmentInfoGcp$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentEnvironmentInfoGcp' from JSON`, + (x) => DeploymentErrorUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentErrorUnion' from JSON`, ); } /** @internal */ -export const DeploymentPlatformAws$inboundSchema: z.ZodEnum< - typeof DeploymentPlatformAws -> = z.enum(DeploymentPlatformAws); +export const DeploymentLifecycleStackStateEnum$inboundSchema: z.ZodEnum< + typeof DeploymentLifecycleStackStateEnum +> = z.enum(DeploymentLifecycleStackStateEnum); /** @internal */ -export const DeploymentEnvironmentInfoAws$inboundSchema: z.ZodType< - DeploymentEnvironmentInfoAws, +export const DeploymentLifecycleUnion$inboundSchema: z.ZodType< + DeploymentLifecycleUnion, unknown -> = z.object({ - accountId: z.string(), - region: z.string(), - platform: DeploymentPlatformAws$inboundSchema, -}); +> = z.union([DeploymentLifecycleStackStateEnum$inboundSchema, z.any()]); -export function deploymentEnvironmentInfoAwsFromJSON( +export function deploymentLifecycleUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentEnvironmentInfoAws$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentEnvironmentInfoAws' from JSON`, + (x) => DeploymentLifecycleUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentLifecycleUnion' from JSON`, ); } /** @internal */ -export const DeploymentEnvironmentInfoUnion$inboundSchema: z.ZodType< - DeploymentEnvironmentInfoUnion, +export const DeploymentOutputs$inboundSchema: z.ZodType< + DeploymentOutputs, unknown -> = z.union([ - z.lazy(() => DeploymentEnvironmentInfoGcp$inboundSchema), - z.lazy(() => DeploymentEnvironmentInfoAzure$inboundSchema), - z.lazy(() => DeploymentEnvironmentInfoLocal$inboundSchema), - z.lazy(() => DeploymentEnvironmentInfoAws$inboundSchema), - z.lazy(() => DeploymentEnvironmentInfoTest$inboundSchema), - z.any(), -]); +> = collectExtraKeys$( + z.object({ + type: z.string(), + }).catchall(z.any()), + "additionalProperties", + true, +); -export function deploymentEnvironmentInfoUnionFromJSON( +export function deploymentOutputsFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentEnvironmentInfoUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentEnvironmentInfoUnion' from JSON`, + (x) => DeploymentOutputs$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentOutputs' from JSON`, ); } /** @internal */ -export const DeploymentPoolsAutoscale$inboundSchema: z.ZodType< - DeploymentPoolsAutoscale, +export const DeploymentOutputsUnion$inboundSchema: z.ZodType< + DeploymentOutputsUnion, unknown -> = z.object({ - machine: z.nullable(z.string()).optional(), - max: z.int(), - min: z.int(), - mode: z.literal("autoscale"), -}); +> = z.union([z.lazy(() => DeploymentOutputs$inboundSchema), z.any()]); -export function deploymentPoolsAutoscaleFromJSON( +export function deploymentOutputsUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentPoolsAutoscale$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentPoolsAutoscale' from JSON`, + (x) => DeploymentOutputsUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentOutputsUnion' from JSON`, ); } /** @internal */ -export const DeploymentPoolsFixed$inboundSchema: z.ZodType< - DeploymentPoolsFixed, +export const DeploymentPreviousConfig$inboundSchema: z.ZodType< + DeploymentPreviousConfig, unknown -> = z.object({ - machine: z.nullable(z.string()).optional(), - machines: z.int(), - mode: z.literal("fixed"), -}); +> = collectExtraKeys$( + z.object({ + id: z.string(), + type: z.string(), + }).catchall(z.any()), + "additionalProperties", + true, +); -export function deploymentPoolsFixedFromJSON( +export function deploymentPreviousConfigFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentPoolsFixed$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentPoolsFixed' from JSON`, + (x) => DeploymentPreviousConfig$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPreviousConfig' from JSON`, ); } /** @internal */ -export const DeploymentPoolsUnion$inboundSchema: z.ZodType< - DeploymentPoolsUnion, +export const DeploymentPreviousConfigUnion$inboundSchema: z.ZodType< + DeploymentPreviousConfigUnion, unknown -> = z.union([ - z.lazy(() => DeploymentPoolsFixed$inboundSchema), - z.lazy(() => DeploymentPoolsAutoscale$inboundSchema), -]); +> = z.union([z.lazy(() => DeploymentPreviousConfig$inboundSchema), z.any()]); -export function deploymentPoolsUnionFromJSON( +export function deploymentPreviousConfigUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentPoolsUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentPoolsUnion' from JSON`, + (x) => DeploymentPreviousConfigUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPreviousConfigUnion' from JSON`, ); } /** @internal */ -export const DeploymentCompute$inboundSchema: z.ZodType< - DeploymentCompute, +export const DeploymentStackStateStatus$inboundSchema: z.ZodEnum< + typeof DeploymentStackStateStatus +> = z.enum(DeploymentStackStateStatus); + +/** @internal */ +export const DeploymentStackStateResources$inboundSchema: z.ZodType< + DeploymentStackStateResources, unknown > = z.object({ - pools: z.record( - z.string(), - z.union([ - z.lazy(() => DeploymentPoolsFixed$inboundSchema), - z.lazy(() => DeploymentPoolsAutoscale$inboundSchema), - ]), + _internal: z.nullable(z.any()).optional(), + config: z.lazy(() => DeploymentStackStateConfig$inboundSchema), + controllerPlatform: z.nullable( + z.union([DeploymentControllerPlatformEnum$inboundSchema, z.any()]), + ).optional(), + dependencies: z.array( + z.lazy(() => DeploymentStackStateDependency$inboundSchema), + ).optional(), + error: z.nullable( + z.union([z.lazy(() => DeploymentErrorStackState$inboundSchema), z.any()]), + ).optional(), + lastFailedState: z.nullable(z.any()).optional(), + lifecycle: z.nullable( + z.union([DeploymentLifecycleStackStateEnum$inboundSchema, z.any()]), + ).optional(), + outputs: z.nullable( + z.union([z.lazy(() => DeploymentOutputs$inboundSchema), z.any()]), ).optional(), + previousConfig: z.nullable( + z.union([z.lazy(() => DeploymentPreviousConfig$inboundSchema), z.any()]), + ).optional(), + remoteBindingParams: z.nullable(z.any()).optional(), + retryAttempt: z.int().optional(), + status: DeploymentStackStateStatus$inboundSchema, + type: z.string(), +}).transform((v) => { + return remap$(v, { + "_internal": "internal", + }); }); -export function deploymentComputeFromJSON( +export function deploymentStackStateResourcesFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentCompute$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentCompute' from JSON`, + (x) => DeploymentStackStateResources$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentStackStateResources' from JSON`, ); } /** @internal */ -export const DeploymentComputeUnion$inboundSchema: z.ZodType< - DeploymentComputeUnion, +export const DeploymentStackState$inboundSchema: z.ZodType< + DeploymentStackState, unknown -> = z.union([z.lazy(() => DeploymentCompute$inboundSchema), z.any()]); +> = z.object({ + platform: DeploymentStackStatePlatform$inboundSchema, + resourcePrefix: z.string(), + resources: z.record( + z.string(), + z.lazy(() => DeploymentStackStateResources$inboundSchema), + ), +}); -export function deploymentComputeUnionFromJSON( +export function deploymentStackStateFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentComputeUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentComputeUnion' from JSON`, + (x) => DeploymentStackState$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentStackState' from JSON`, ); } /** @internal */ -export const DeploymentDeploymentModel$inboundSchema: z.ZodEnum< - typeof DeploymentDeploymentModel -> = z.enum(DeploymentDeploymentModel); +export const DeploymentInitialSetupAuthority$inboundSchema: z.ZodEnum< + typeof DeploymentInitialSetupAuthority +> = z.enum(DeploymentInitialSetupAuthority); /** @internal */ -export const DeploymentAws$inboundSchema: z.ZodType = z - .object({ - certificateArn: z.string(), - }); +export const DeploymentPendingPreparedStackTypeStringList$inboundSchema: + z.ZodEnum = z.enum( + DeploymentPendingPreparedStackTypeStringList, + ); -export function deploymentAwsFromJSON( +/** @internal */ +export const DeploymentPendingPreparedStackDefaultStringList$inboundSchema: + z.ZodType = z + .object({ + type: DeploymentPendingPreparedStackTypeStringList$inboundSchema, + value: z.array(z.string()), + }); + +export function deploymentPendingPreparedStackDefaultStringListFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackDefaultStringList, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentAws$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentAws' from JSON`, + (x) => + DeploymentPendingPreparedStackDefaultStringList$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackDefaultStringList' from JSON`, ); } /** @internal */ -export const DeploymentAwsUnion$inboundSchema: z.ZodType< - DeploymentAwsUnion, - unknown -> = z.union([z.lazy(() => DeploymentAws$inboundSchema), z.any()]); +export const DeploymentPendingPreparedStackTypeBoolean$inboundSchema: z.ZodEnum< + typeof DeploymentPendingPreparedStackTypeBoolean +> = z.enum(DeploymentPendingPreparedStackTypeBoolean); -export function deploymentAwsUnionFromJSON( +/** @internal */ +export const DeploymentPendingPreparedStackDefaultBoolean$inboundSchema: + z.ZodType = z.object({ + type: DeploymentPendingPreparedStackTypeBoolean$inboundSchema, + value: z.boolean(), + }); + +export function deploymentPendingPreparedStackDefaultBooleanFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackDefaultBoolean, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentAwsUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentAwsUnion' from JSON`, + (x) => + DeploymentPendingPreparedStackDefaultBoolean$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackDefaultBoolean' from JSON`, ); } /** @internal */ -export const DeploymentAzureStackSettings$inboundSchema: z.ZodType< - DeploymentAzureStackSettings, - unknown -> = z.object({ - keyVaultCertificateId: z.string(), - keyVaultResourceId: z.nullable(z.string()).optional(), -}); +export const DeploymentPendingPreparedStackTypeNumber$inboundSchema: z.ZodEnum< + typeof DeploymentPendingPreparedStackTypeNumber +> = z.enum(DeploymentPendingPreparedStackTypeNumber); + +/** @internal */ +export const DeploymentPendingPreparedStackDefaultNumber$inboundSchema: + z.ZodType = z.object({ + type: DeploymentPendingPreparedStackTypeNumber$inboundSchema, + value: z.string(), + }); -export function deploymentAzureStackSettingsFromJSON( +export function deploymentPendingPreparedStackDefaultNumberFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackDefaultNumber, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentAzureStackSettings$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentAzureStackSettings' from JSON`, + (x) => + DeploymentPendingPreparedStackDefaultNumber$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackDefaultNumber' from JSON`, ); } /** @internal */ -export const DeploymentAzureUnion$inboundSchema: z.ZodType< - DeploymentAzureUnion, - unknown -> = z.union([ - z.lazy(() => DeploymentAzureStackSettings$inboundSchema), - z.any(), -]); +export const DeploymentPendingPreparedStackTypeString$inboundSchema: z.ZodEnum< + typeof DeploymentPendingPreparedStackTypeString +> = z.enum(DeploymentPendingPreparedStackTypeString); -export function deploymentAzureUnionFromJSON( +/** @internal */ +export const DeploymentPendingPreparedStackDefaultString$inboundSchema: + z.ZodType = z.object({ + type: DeploymentPendingPreparedStackTypeString$inboundSchema, + value: z.string(), + }); + +export function deploymentPendingPreparedStackDefaultStringFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackDefaultString, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentAzureUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentAzureUnion' from JSON`, + (x) => + DeploymentPendingPreparedStackDefaultString$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackDefaultString' from JSON`, ); } /** @internal */ -export const DeploymentGcpStackSettings$inboundSchema: z.ZodType< - DeploymentGcpStackSettings, - unknown -> = z.object({ - certificateName: z.string(), -}); +export const DeploymentPendingPreparedStackDefaultUnion$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => DeploymentPendingPreparedStackDefaultString$inboundSchema), + z.lazy(() => DeploymentPendingPreparedStackDefaultNumber$inboundSchema), + z.lazy(() => DeploymentPendingPreparedStackDefaultBoolean$inboundSchema), + z.lazy(() => DeploymentPendingPreparedStackDefaultStringList$inboundSchema), + z.any(), + ]); -export function deploymentGcpStackSettingsFromJSON( +export function deploymentPendingPreparedStackDefaultUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackDefaultUnion, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentGcpStackSettings$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentGcpStackSettings' from JSON`, + (x) => + DeploymentPendingPreparedStackDefaultUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackDefaultUnion' from JSON`, ); } /** @internal */ -export const DeploymentGcpUnion$inboundSchema: z.ZodType< - DeploymentGcpUnion, +export const DeploymentPendingPreparedStackTypeEnvEnum$inboundSchema: z.ZodEnum< + typeof DeploymentPendingPreparedStackTypeEnvEnum +> = z.enum(DeploymentPendingPreparedStackTypeEnvEnum); + +/** @internal */ +export const DeploymentPendingPreparedStackTypeUnion$inboundSchema: z.ZodType< + DeploymentPendingPreparedStackTypeUnion, unknown -> = z.union([z.lazy(() => DeploymentGcpStackSettings$inboundSchema), z.any()]); +> = z.union([DeploymentPendingPreparedStackTypeEnvEnum$inboundSchema, z.any()]); -export function deploymentGcpUnionFromJSON( +export function deploymentPendingPreparedStackTypeUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackTypeUnion, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentGcpUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentGcpUnion' from JSON`, + (x) => + DeploymentPendingPreparedStackTypeUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackTypeUnion' from JSON`, ); } /** @internal */ -export const DeploymentTlsSecretRef$inboundSchema: z.ZodType< - DeploymentTlsSecretRef, +export const DeploymentPendingPreparedStackEnv$inboundSchema: z.ZodType< + DeploymentPendingPreparedStackEnv, unknown > = z.object({ - namespace: z.nullable(z.string()).optional(), - secretName: z.string(), + name: z.string(), + targetResources: z.nullable(z.array(z.string())).optional(), + type: z.nullable( + z.union([DeploymentPendingPreparedStackTypeEnvEnum$inboundSchema, z.any()]), + ).optional(), }); -export function deploymentTlsSecretRefFromJSON( +export function deploymentPendingPreparedStackEnvFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentTlsSecretRef$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentTlsSecretRef' from JSON`, + (x) => DeploymentPendingPreparedStackEnv$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPendingPreparedStackEnv' from JSON`, ); } /** @internal */ -export const DeploymentDomainsKubernetes$inboundSchema: z.ZodType< - DeploymentDomainsKubernetes, +export const DeploymentPendingPreparedStackKind$inboundSchema: z.ZodEnum< + typeof DeploymentPendingPreparedStackKind +> = z.enum(DeploymentPendingPreparedStackKind); + +/** @internal */ +export const DeploymentPendingPreparedStackPlatform$inboundSchema: z.ZodEnum< + typeof DeploymentPendingPreparedStackPlatform +> = z.enum(DeploymentPendingPreparedStackPlatform); + +/** @internal */ +export const DeploymentPendingPreparedStackProvidedBy$inboundSchema: z.ZodEnum< + typeof DeploymentPendingPreparedStackProvidedBy +> = z.enum(DeploymentPendingPreparedStackProvidedBy); + +/** @internal */ +export const DeploymentPendingPreparedStackValidation$inboundSchema: z.ZodType< + DeploymentPendingPreparedStackValidation, unknown > = z.object({ - tlsSecretRef: z.lazy(() => DeploymentTlsSecretRef$inboundSchema), + format: z.nullable(z.string()).optional(), + max: z.nullable(z.string()).optional(), + maxItems: z.nullable(z.int()).optional(), + maxLength: z.nullable(z.int()).optional(), + min: z.nullable(z.string()).optional(), + minItems: z.nullable(z.int()).optional(), + minLength: z.nullable(z.int()).optional(), + pattern: z.nullable(z.string()).optional(), + values: z.nullable(z.array(z.string())).optional(), }); -export function deploymentDomainsKubernetesFromJSON( +export function deploymentPendingPreparedStackValidationFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackValidation, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentDomainsKubernetes$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDomainsKubernetes' from JSON`, + (x) => + DeploymentPendingPreparedStackValidation$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackValidation' from JSON`, ); } /** @internal */ -export const DeploymentDomainsKubernetesUnion$inboundSchema: z.ZodType< - DeploymentDomainsKubernetesUnion, - unknown -> = z.union([z.lazy(() => DeploymentDomainsKubernetes$inboundSchema), z.any()]); +export const DeploymentPendingPreparedStackValidationUnion$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => DeploymentPendingPreparedStackValidation$inboundSchema), + z.any(), + ]); -export function deploymentDomainsKubernetesUnionFromJSON( +export function deploymentPendingPreparedStackValidationUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackValidationUnion, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentDomainsKubernetesUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDomainsKubernetesUnion' from JSON`, + (x) => + DeploymentPendingPreparedStackValidationUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackValidationUnion' from JSON`, ); } /** @internal */ -export const DeploymentDomainsCertificate$inboundSchema: z.ZodType< - DeploymentDomainsCertificate, +export const DeploymentPendingPreparedStackInput$inboundSchema: z.ZodType< + DeploymentPendingPreparedStackInput, unknown > = z.object({ - aws: z.nullable(z.union([z.lazy(() => DeploymentAws$inboundSchema), z.any()])) - .optional(), - azure: z.nullable( + default: z.nullable( z.union([ - z.lazy(() => DeploymentAzureStackSettings$inboundSchema), + z.lazy(() => DeploymentPendingPreparedStackDefaultString$inboundSchema), + z.lazy(() => DeploymentPendingPreparedStackDefaultNumber$inboundSchema), + z.lazy(() => DeploymentPendingPreparedStackDefaultBoolean$inboundSchema), + z.lazy(() => + DeploymentPendingPreparedStackDefaultStringList$inboundSchema + ), z.any(), ]), ).optional(), - gcp: z.nullable( - z.union([z.lazy(() => DeploymentGcpStackSettings$inboundSchema), z.any()]), + description: z.string(), + env: z.array(z.lazy(() => DeploymentPendingPreparedStackEnv$inboundSchema)) + .optional(), + id: z.string(), + kind: DeploymentPendingPreparedStackKind$inboundSchema, + label: z.string(), + placeholder: z.nullable(z.string()).optional(), + platforms: z.nullable( + z.array(DeploymentPendingPreparedStackPlatform$inboundSchema), ).optional(), - kubernetes: z.nullable( - z.union([z.lazy(() => DeploymentDomainsKubernetes$inboundSchema), z.any()]), + providedBy: z.array(DeploymentPendingPreparedStackProvidedBy$inboundSchema), + required: z.boolean(), + validation: z.nullable( + z.union([ + z.lazy(() => DeploymentPendingPreparedStackValidation$inboundSchema), + z.any(), + ]), ).optional(), }); -export function deploymentDomainsCertificateFromJSON( +export function deploymentPendingPreparedStackInputFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentDomainsCertificate$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDomainsCertificate' from JSON`, + (x) => + DeploymentPendingPreparedStackInput$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPendingPreparedStackInput' from JSON`, ); } /** @internal */ -export const DeploymentCustomDomains$inboundSchema: z.ZodType< - DeploymentCustomDomains, - unknown -> = z.object({ - certificate: z.lazy(() => DeploymentDomainsCertificate$inboundSchema), - domain: z.string(), -}); - -export function deploymentCustomDomainsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentCustomDomains$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentCustomDomains' from JSON`, +export const DeploymentPendingPreparedStackManagementEnum$inboundSchema: + z.ZodEnum = z.enum( + DeploymentPendingPreparedStackManagementEnum, ); -} - -/** @internal */ -export const DeploymentModeLoadBalancer$inboundSchema: z.ZodEnum< - typeof DeploymentModeLoadBalancer -> = z.enum(DeploymentModeLoadBalancer); /** @internal */ -export const DeploymentPublicEndpointTargetLoadBalancer$inboundSchema: - z.ZodType = z.object({ - cnameTarget: z.string(), - mode: DeploymentModeLoadBalancer$inboundSchema, - }); +export const DeploymentPendingPreparedStackOverrideAwResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); -export function deploymentPublicEndpointTargetLoadBalancerFromJSON( +export function deploymentPendingPreparedStackOverrideAwResourceFromJSON( jsonString: string, ): SafeParseResult< - DeploymentPublicEndpointTargetLoadBalancer, + DeploymentPendingPreparedStackOverrideAwResource, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentPublicEndpointTargetLoadBalancer$inboundSchema.parse( + DeploymentPendingPreparedStackOverrideAwResource$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'DeploymentPublicEndpointTargetLoadBalancer' from JSON`, + `Failed to parse 'DeploymentPendingPreparedStackOverrideAwResource' from JSON`, ); } /** @internal */ -export const DeploymentModeMachineAddresses$inboundSchema: z.ZodEnum< - typeof DeploymentModeMachineAddresses -> = z.enum(DeploymentModeMachineAddresses); - -/** @internal */ -export const DeploymentPublicEndpointTargetMachineAddresses$inboundSchema: - z.ZodType = z.object( - { - mode: DeploymentModeMachineAddresses$inboundSchema, - }, - ); +export const DeploymentPendingPreparedStackOverrideAwStack$inboundSchema: + z.ZodType = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); -export function deploymentPublicEndpointTargetMachineAddressesFromJSON( +export function deploymentPendingPreparedStackOverrideAwStackFromJSON( jsonString: string, ): SafeParseResult< - DeploymentPublicEndpointTargetMachineAddresses, + DeploymentPendingPreparedStackOverrideAwStack, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentPublicEndpointTargetMachineAddresses$inboundSchema.parse( + DeploymentPendingPreparedStackOverrideAwStack$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'DeploymentPublicEndpointTargetMachineAddresses' from JSON`, + `Failed to parse 'DeploymentPendingPreparedStackOverrideAwStack' from JSON`, ); } /** @internal */ -export const DeploymentPublicEndpointTargetUnion$inboundSchema: z.ZodType< - DeploymentPublicEndpointTargetUnion, - unknown -> = z.union([ - z.lazy(() => DeploymentPublicEndpointTargetLoadBalancer$inboundSchema), - z.lazy(() => DeploymentPublicEndpointTargetMachineAddresses$inboundSchema), - z.any(), -]); +export const DeploymentPendingPreparedStackOverrideAwBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + DeploymentPendingPreparedStackOverrideAwResource$inboundSchema + ).optional(), + stack: z.lazy(() => + DeploymentPendingPreparedStackOverrideAwStack$inboundSchema + ).optional(), + }); -export function deploymentPublicEndpointTargetUnionFromJSON( +export function deploymentPendingPreparedStackOverrideAwBindingFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackOverrideAwBinding, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentPublicEndpointTargetUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentPublicEndpointTargetUnion' from JSON`, + DeploymentPendingPreparedStackOverrideAwBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackOverrideAwBinding' from JSON`, ); } /** @internal */ -export const DeploymentDomains$inboundSchema: z.ZodType< - DeploymentDomains, - unknown -> = z.object({ - customDomains: z.nullable( - z.record(z.string(), z.lazy(() => DeploymentCustomDomains$inboundSchema)), - ).optional(), - publicEndpointTarget: z.nullable( - z.union([ - z.lazy(() => DeploymentPublicEndpointTargetLoadBalancer$inboundSchema), - z.lazy(() => - DeploymentPublicEndpointTargetMachineAddresses$inboundSchema - ), - z.any(), - ]), - ).optional(), -}); +export const DeploymentPendingPreparedStackOverrideEffect$inboundSchema: + z.ZodEnum = z.enum( + DeploymentPendingPreparedStackOverrideEffect, + ); -export function deploymentDomainsFromJSON( +/** @internal */ +export const DeploymentPendingPreparedStackOverrideAwGrant$inboundSchema: + z.ZodType = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function deploymentPendingPreparedStackOverrideAwGrantFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackOverrideAwGrant, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentDomains$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDomains' from JSON`, + (x) => + DeploymentPendingPreparedStackOverrideAwGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackOverrideAwGrant' from JSON`, ); } /** @internal */ -export const DeploymentDomainsUnion$inboundSchema: z.ZodType< - DeploymentDomainsUnion, +export const DeploymentPendingPreparedStackOverrideAw$inboundSchema: z.ZodType< + DeploymentPendingPreparedStackOverrideAw, unknown -> = z.union([z.lazy(() => DeploymentDomains$inboundSchema), z.any()]); +> = z.object({ + binding: z.lazy(() => + DeploymentPendingPreparedStackOverrideAwBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: DeploymentPendingPreparedStackOverrideEffect$inboundSchema.optional(), + grant: z.lazy(() => + DeploymentPendingPreparedStackOverrideAwGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), +}); -export function deploymentDomainsUnionFromJSON( +export function deploymentPendingPreparedStackOverrideAwFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackOverrideAw, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentDomainsUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDomainsUnion' from JSON`, + (x) => + DeploymentPendingPreparedStackOverrideAw$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackOverrideAw' from JSON`, ); } /** @internal */ -export const DeploymentExternalBindings$inboundSchema: z.ZodType< - DeploymentExternalBindings, - unknown -> = z.object({}); +export const DeploymentPendingPreparedStackOverrideAzureResource$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); -export function deploymentExternalBindingsFromJSON( +export function deploymentPendingPreparedStackOverrideAzureResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackOverrideAzureResource, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentExternalBindings$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentExternalBindings' from JSON`, + (x) => + DeploymentPendingPreparedStackOverrideAzureResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackOverrideAzureResource' from JSON`, ); } /** @internal */ -export const DeploymentHeartbeats$inboundSchema: z.ZodEnum< - typeof DeploymentHeartbeats -> = z.enum(DeploymentHeartbeats); - -/** @internal */ -export const DeploymentCloud$inboundSchema: z.ZodType< - DeploymentCloud, - unknown -> = z.object({ - accountId: z.nullable(z.string()).optional(), - clusterId: z.nullable(z.string()).optional(), - clusterName: z.nullable(z.string()).optional(), - projectId: z.nullable(z.string()).optional(), - region: z.nullable(z.string()).optional(), - resourceGroup: z.nullable(z.string()).optional(), - subscriptionId: z.nullable(z.string()).optional(), -}); +export const DeploymentPendingPreparedStackOverrideAzureStack$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); -export function deploymentCloudFromJSON( +export function deploymentPendingPreparedStackOverrideAzureStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackOverrideAzureStack, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentCloud$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentCloud' from JSON`, + (x) => + DeploymentPendingPreparedStackOverrideAzureStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackOverrideAzureStack' from JSON`, ); } /** @internal */ -export const DeploymentCloudUnion$inboundSchema: z.ZodType< - DeploymentCloudUnion, - unknown -> = z.union([z.lazy(() => DeploymentCloud$inboundSchema), z.any()]); +export const DeploymentPendingPreparedStackOverrideAzureBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + DeploymentPendingPreparedStackOverrideAzureResource$inboundSchema + ).optional(), + stack: z.lazy(() => + DeploymentPendingPreparedStackOverrideAzureStack$inboundSchema + ).optional(), + }); -export function deploymentCloudUnionFromJSON( +export function deploymentPendingPreparedStackOverrideAzureBindingFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackOverrideAzureBinding, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentCloudUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentCloudUnion' from JSON`, + (x) => + DeploymentPendingPreparedStackOverrideAzureBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackOverrideAzureBinding' from JSON`, ); } /** @internal */ -export const DeploymentOwnership$inboundSchema: z.ZodEnum< - typeof DeploymentOwnership -> = z.enum(DeploymentOwnership); - -/** @internal */ -export const DeploymentCluster$inboundSchema: z.ZodType< - DeploymentCluster, - unknown -> = z.object({ - cloud: z.nullable( - z.union([z.lazy(() => DeploymentCloud$inboundSchema), z.any()]), - ).optional(), - namespace: z.nullable(z.string()).optional(), - ownership: DeploymentOwnership$inboundSchema, -}); +export const DeploymentPendingPreparedStackOverrideAzureGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); -export function deploymentClusterFromJSON( +export function deploymentPendingPreparedStackOverrideAzureGrantFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackOverrideAzureGrant, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentCluster$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentCluster' from JSON`, + (x) => + DeploymentPendingPreparedStackOverrideAzureGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackOverrideAzureGrant' from JSON`, ); } /** @internal */ -export const DeploymentClusterUnion$inboundSchema: z.ZodType< - DeploymentClusterUnion, - unknown -> = z.union([z.lazy(() => DeploymentCluster$inboundSchema), z.any()]); +export const DeploymentPendingPreparedStackOverrideAzure$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + DeploymentPendingPreparedStackOverrideAzureBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + DeploymentPendingPreparedStackOverrideAzureGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); -export function deploymentClusterUnionFromJSON( +export function deploymentPendingPreparedStackOverrideAzureFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackOverrideAzure, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentClusterUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentClusterUnion' from JSON`, + (x) => + DeploymentPendingPreparedStackOverrideAzure$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackOverrideAzure' from JSON`, ); } /** @internal */ -export const DeploymentCertificateNone2$inboundSchema: z.ZodType< - DeploymentCertificateNone2, - unknown -> = z.object({ - mode: z.literal("none"), -}); +export const DeploymentPendingPreparedStackOverrideConditionResource$inboundSchema: + z.ZodType = + z.object({ + expression: z.string(), + title: z.string(), + }); -export function deploymentCertificateNone2FromJSON( +export function deploymentPendingPreparedStackOverrideConditionResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackOverrideConditionResource, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentCertificateNone2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentCertificateNone2' from JSON`, + (x) => + DeploymentPendingPreparedStackOverrideConditionResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentPendingPreparedStackOverrideConditionResource' from JSON`, ); } /** @internal */ -export const DeploymentCertificateManagedTLSSecret2$inboundSchema: z.ZodType< - DeploymentCertificateManagedTLSSecret2, - unknown -> = z.object({ - mode: z.literal("managedTlsSecret"), - secretNameTemplate: z.string(), -}); +export const DeploymentPendingPreparedStackOverrideResourceConditionUnion$inboundSchema: + z.ZodType< + DeploymentPendingPreparedStackOverrideResourceConditionUnion, + unknown + > = z.union([ + z.lazy(() => + DeploymentPendingPreparedStackOverrideConditionResource$inboundSchema + ), + z.any(), + ]); -export function deploymentCertificateManagedTLSSecret2FromJSON( +export function deploymentPendingPreparedStackOverrideResourceConditionUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackOverrideResourceConditionUnion, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentCertificateManagedTLSSecret2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentCertificateManagedTLSSecret2' from JSON`, + DeploymentPendingPreparedStackOverrideResourceConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentPendingPreparedStackOverrideResourceConditionUnion' from JSON`, ); } /** @internal */ -export const DeploymentCertificateAwsAcmArn2$inboundSchema: z.ZodType< - DeploymentCertificateAwsAcmArn2, - unknown -> = z.object({ - certificateArn: z.string(), - mode: z.literal("awsAcmArn"), -}); +export const DeploymentPendingPreparedStackOverrideGcpResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + DeploymentPendingPreparedStackOverrideConditionResource$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); -export function deploymentCertificateAwsAcmArn2FromJSON( +export function deploymentPendingPreparedStackOverrideGcpResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackOverrideGcpResource, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentCertificateAwsAcmArn2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentCertificateAwsAcmArn2' from JSON`, + (x) => + DeploymentPendingPreparedStackOverrideGcpResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackOverrideGcpResource' from JSON`, ); } /** @internal */ -export const DeploymentCertificateManagedAcmImport2$inboundSchema: z.ZodType< - DeploymentCertificateManagedAcmImport2, - unknown -> = z.object({ - mode: z.literal("managedAcmImport"), - region: z.nullable(z.string()).optional(), - tags: z.record(z.string(), z.string()).optional(), -}); +export const DeploymentPendingPreparedStackOverrideConditionStack$inboundSchema: + z.ZodType = z + .object({ + expression: z.string(), + title: z.string(), + }); -export function deploymentCertificateManagedAcmImport2FromJSON( +export function deploymentPendingPreparedStackOverrideConditionStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackOverrideConditionStack, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentCertificateManagedAcmImport2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentCertificateManagedAcmImport2' from JSON`, + DeploymentPendingPreparedStackOverrideConditionStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackOverrideConditionStack' from JSON`, ); } /** @internal */ -export const DeploymentCertificateTLSSecretRef2$inboundSchema: z.ZodType< - DeploymentCertificateTLSSecretRef2, - unknown -> = z.object({ - namespace: z.nullable(z.string()).optional(), - secretName: z.string(), - mode: z.literal("tlsSecretRef"), -}); +export const DeploymentPendingPreparedStackOverrideStackConditionUnion$inboundSchema: + z.ZodType< + DeploymentPendingPreparedStackOverrideStackConditionUnion, + unknown + > = z.union([ + z.lazy(() => + DeploymentPendingPreparedStackOverrideConditionStack$inboundSchema + ), + z.any(), + ]); -export function deploymentCertificateTLSSecretRef2FromJSON( +export function deploymentPendingPreparedStackOverrideStackConditionUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackOverrideStackConditionUnion, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentCertificateTLSSecretRef2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentCertificateTLSSecretRef2' from JSON`, + DeploymentPendingPreparedStackOverrideStackConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentPendingPreparedStackOverrideStackConditionUnion' from JSON`, ); } /** @internal */ -export const DeploymentCertificateUnion2$inboundSchema: z.ZodType< - DeploymentCertificateUnion2, - unknown -> = z.union([ - z.lazy(() => DeploymentCertificateTLSSecretRef2$inboundSchema), - z.lazy(() => DeploymentCertificateManagedAcmImport2$inboundSchema), - z.lazy(() => DeploymentCertificateAwsAcmArn2$inboundSchema), - z.lazy(() => DeploymentCertificateManagedTLSSecret2$inboundSchema), - z.lazy(() => DeploymentCertificateNone2$inboundSchema), -]); +export const DeploymentPendingPreparedStackOverrideGcpStack$inboundSchema: + z.ZodType = z.object( + { + condition: z.nullable(z.union([ + z.lazy(() => + DeploymentPendingPreparedStackOverrideConditionStack$inboundSchema + ), + z.any(), + ])).optional(), + scope: z.string(), + }, + ); -export function deploymentCertificateUnion2FromJSON( +export function deploymentPendingPreparedStackOverrideGcpStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackOverrideGcpStack, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentCertificateUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentCertificateUnion2' from JSON`, + (x) => + DeploymentPendingPreparedStackOverrideGcpStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackOverrideGcpStack' from JSON`, ); } /** @internal */ -export const DeploymentModeCustom$inboundSchema: z.ZodEnum< - typeof DeploymentModeCustom -> = z.enum(DeploymentModeCustom); - -/** @internal */ -export const DeploymentProviderAzureApplicationGatewayForContainersEnum4$inboundSchema: - z.ZodEnum< - typeof DeploymentProviderAzureApplicationGatewayForContainersEnum4 - > = z.enum(DeploymentProviderAzureApplicationGatewayForContainersEnum4); - -/** @internal */ -export const DeploymentProviderAzureApplicationGatewayForContainers4$inboundSchema: - z.ZodType = - z.object({ - albName: z.nullable(z.string()).optional(), - albNamespace: z.nullable(z.string()).optional(), - frontend: z.string(), - provider: - DeploymentProviderAzureApplicationGatewayForContainersEnum4$inboundSchema, +export const DeploymentPendingPreparedStackOverrideGcpBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + DeploymentPendingPreparedStackOverrideGcpResource$inboundSchema + ).optional(), + stack: z.lazy(() => + DeploymentPendingPreparedStackOverrideGcpStack$inboundSchema + ).optional(), }); -export function deploymentProviderAzureApplicationGatewayForContainers4FromJSON( +export function deploymentPendingPreparedStackOverrideGcpBindingFromJSON( jsonString: string, ): SafeParseResult< - DeploymentProviderAzureApplicationGatewayForContainers4, + DeploymentPendingPreparedStackOverrideGcpBinding, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentProviderAzureApplicationGatewayForContainers4$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'DeploymentProviderAzureApplicationGatewayForContainers4' from JSON`, + DeploymentPendingPreparedStackOverrideGcpBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackOverrideGcpBinding' from JSON`, ); } /** @internal */ -export const DeploymentProviderGkeGatewayEnum4$inboundSchema: z.ZodEnum< - typeof DeploymentProviderGkeGatewayEnum4 -> = z.enum(DeploymentProviderGkeGatewayEnum4); - -/** @internal */ -export const DeploymentProviderGkeGateway4$inboundSchema: z.ZodType< - DeploymentProviderGkeGateway4, - unknown -> = z.object({ - provider: DeploymentProviderGkeGatewayEnum4$inboundSchema, - staticAddressName: z.nullable(z.string()).optional(), -}); +export const DeploymentPendingPreparedStackOverrideGcpGrant$inboundSchema: + z.ZodType = z.object( + { + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }, + ); -export function deploymentProviderGkeGateway4FromJSON( +export function deploymentPendingPreparedStackOverrideGcpGrantFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackOverrideGcpGrant, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentProviderGkeGateway4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentProviderGkeGateway4' from JSON`, + (x) => + DeploymentPendingPreparedStackOverrideGcpGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackOverrideGcpGrant' from JSON`, ); } /** @internal */ -export const DeploymentProviderAwsAlbEnum4$inboundSchema: z.ZodEnum< - typeof DeploymentProviderAwsAlbEnum4 -> = z.enum(DeploymentProviderAwsAlbEnum4); - -/** @internal */ -export const DeploymentProviderAwsAlb4$inboundSchema: z.ZodType< - DeploymentProviderAwsAlb4, +export const DeploymentPendingPreparedStackOverrideGcp$inboundSchema: z.ZodType< + DeploymentPendingPreparedStackOverrideGcp, unknown > = z.object({ - ipAddressType: z.nullable(z.string()).optional(), - provider: DeploymentProviderAwsAlbEnum4$inboundSchema, - scheme: z.string(), - subnetIds: z.array(z.string()).optional(), - targetType: z.string(), + binding: z.lazy(() => + DeploymentPendingPreparedStackOverrideGcpBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + DeploymentPendingPreparedStackOverrideGcpGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), }); -export function deploymentProviderAwsAlb4FromJSON( +export function deploymentPendingPreparedStackOverrideGcpFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackOverrideGcp, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentProviderAwsAlb4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentProviderAwsAlb4' from JSON`, - ); -} - -/** @internal */ -export const DeploymentProviderUnion4$inboundSchema: z.ZodType< - DeploymentProviderUnion4, - unknown -> = z.union([ - z.lazy(() => DeploymentProviderAwsAlb4$inboundSchema), - z.lazy(() => - DeploymentProviderAzureApplicationGatewayForContainers4$inboundSchema - ), - z.lazy(() => DeploymentProviderGkeGateway4$inboundSchema), - z.any(), -]); + (x) => + DeploymentPendingPreparedStackOverrideGcp$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackOverrideGcp' from JSON`, + ); +} + +/** @internal */ +export const DeploymentPendingPreparedStackOverridePlatforms$inboundSchema: + z.ZodType = z + .object({ + aws: z.nullable( + z.array(z.lazy(() => + DeploymentPendingPreparedStackOverrideAw$inboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + DeploymentPendingPreparedStackOverrideAzure$inboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + DeploymentPendingPreparedStackOverrideGcp$inboundSchema + )), + ).optional(), + }); -export function deploymentProviderUnion4FromJSON( +export function deploymentPendingPreparedStackOverridePlatformsFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackOverridePlatforms, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentProviderUnion4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentProviderUnion4' from JSON`, + (x) => + DeploymentPendingPreparedStackOverridePlatforms$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackOverridePlatforms' from JSON`, ); } /** @internal */ -export const DeploymentRouteGateway2$inboundSchema: z.ZodType< - DeploymentRouteGateway2, +export const DeploymentPendingPreparedStackOverride$inboundSchema: z.ZodType< + DeploymentPendingPreparedStackOverride, unknown > = z.object({ - annotations: z.record(z.string(), z.string()).optional(), - controller: z.nullable(z.string()).optional(), - gatewayClassName: z.string(), - labels: z.record(z.string(), z.string()).optional(), - listenerPort: z.int(), - provider: z.nullable( - z.union([ - z.lazy(() => DeploymentProviderAwsAlb4$inboundSchema), - z.lazy(() => - DeploymentProviderAzureApplicationGatewayForContainers4$inboundSchema - ), - z.lazy(() => DeploymentProviderGkeGateway4$inboundSchema), - z.any(), - ]), - ).optional(), - routeApi: z.literal("gateway"), + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + DeploymentPendingPreparedStackOverridePlatforms$inboundSchema + ), }); -export function deploymentRouteGateway2FromJSON( +export function deploymentPendingPreparedStackOverrideFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentRouteGateway2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentRouteGateway2' from JSON`, + (x) => + DeploymentPendingPreparedStackOverride$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPendingPreparedStackOverride' from JSON`, ); } /** @internal */ -export const DeploymentProviderAzureApplicationGatewayForContainersEnum3$inboundSchema: - z.ZodEnum< - typeof DeploymentProviderAzureApplicationGatewayForContainersEnum3 - > = z.enum(DeploymentProviderAzureApplicationGatewayForContainersEnum3); - -/** @internal */ -export const DeploymentProviderAzureApplicationGatewayForContainers3$inboundSchema: - z.ZodType = - z.object({ - albName: z.nullable(z.string()).optional(), - albNamespace: z.nullable(z.string()).optional(), - frontend: z.string(), - provider: - DeploymentProviderAzureApplicationGatewayForContainersEnum3$inboundSchema, - }); +export const DeploymentPendingPreparedStackOverrideUnion$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => DeploymentPendingPreparedStackOverride$inboundSchema), + z.string(), + ]); -export function deploymentProviderAzureApplicationGatewayForContainers3FromJSON( +export function deploymentPendingPreparedStackOverrideUnionFromJSON( jsonString: string, ): SafeParseResult< - DeploymentProviderAzureApplicationGatewayForContainers3, + DeploymentPendingPreparedStackOverrideUnion, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentProviderAzureApplicationGatewayForContainers3$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'DeploymentProviderAzureApplicationGatewayForContainers3' from JSON`, + DeploymentPendingPreparedStackOverrideUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackOverrideUnion' from JSON`, ); } /** @internal */ -export const DeploymentProviderGkeGatewayEnum3$inboundSchema: z.ZodEnum< - typeof DeploymentProviderGkeGatewayEnum3 -> = z.enum(DeploymentProviderGkeGatewayEnum3); - -/** @internal */ -export const DeploymentProviderGkeGateway3$inboundSchema: z.ZodType< - DeploymentProviderGkeGateway3, +export const DeploymentPendingPreparedStackManagement2$inboundSchema: z.ZodType< + DeploymentPendingPreparedStackManagement2, unknown > = z.object({ - provider: DeploymentProviderGkeGatewayEnum3$inboundSchema, - staticAddressName: z.nullable(z.string()).optional(), + override: z.record( + z.string(), + z.array(z.union([ + z.lazy(() => DeploymentPendingPreparedStackOverride$inboundSchema), + z.string(), + ])), + ), }); -export function deploymentProviderGkeGateway3FromJSON( +export function deploymentPendingPreparedStackManagement2FromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackManagement2, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentProviderGkeGateway3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentProviderGkeGateway3' from JSON`, + (x) => + DeploymentPendingPreparedStackManagement2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackManagement2' from JSON`, ); } /** @internal */ -export const DeploymentProviderAwsAlbEnum3$inboundSchema: z.ZodEnum< - typeof DeploymentProviderAwsAlbEnum3 -> = z.enum(DeploymentProviderAwsAlbEnum3); - -/** @internal */ -export const DeploymentProviderAwsAlb3$inboundSchema: z.ZodType< - DeploymentProviderAwsAlb3, - unknown -> = z.object({ - ipAddressType: z.nullable(z.string()).optional(), - provider: DeploymentProviderAwsAlbEnum3$inboundSchema, - scheme: z.string(), - subnetIds: z.array(z.string()).optional(), - targetType: z.string(), -}); +export const DeploymentPendingPreparedStackExtendAwResource$inboundSchema: + z.ZodType = z.object( + { + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }, + ); -export function deploymentProviderAwsAlb3FromJSON( +export function deploymentPendingPreparedStackExtendAwResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackExtendAwResource, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentProviderAwsAlb3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentProviderAwsAlb3' from JSON`, + (x) => + DeploymentPendingPreparedStackExtendAwResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackExtendAwResource' from JSON`, ); } /** @internal */ -export const DeploymentProviderUnion3$inboundSchema: z.ZodType< - DeploymentProviderUnion3, - unknown -> = z.union([ - z.lazy(() => DeploymentProviderAwsAlb3$inboundSchema), - z.lazy(() => - DeploymentProviderAzureApplicationGatewayForContainers3$inboundSchema - ), - z.lazy(() => DeploymentProviderGkeGateway3$inboundSchema), - z.any(), -]); +export const DeploymentPendingPreparedStackExtendAwStack$inboundSchema: + z.ZodType = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); -export function deploymentProviderUnion3FromJSON( +export function deploymentPendingPreparedStackExtendAwStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackExtendAwStack, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentProviderUnion3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentProviderUnion3' from JSON`, + (x) => + DeploymentPendingPreparedStackExtendAwStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackExtendAwStack' from JSON`, ); } /** @internal */ -export const DeploymentRouteIngress2$inboundSchema: z.ZodType< - DeploymentRouteIngress2, - unknown -> = z.object({ - annotations: z.record(z.string(), z.string()).optional(), - controller: z.nullable(z.string()).optional(), - ingressClassName: z.string(), - labels: z.record(z.string(), z.string()).optional(), - provider: z.nullable( - z.union([ - z.lazy(() => DeploymentProviderAwsAlb3$inboundSchema), - z.lazy(() => - DeploymentProviderAzureApplicationGatewayForContainers3$inboundSchema - ), - z.lazy(() => DeploymentProviderGkeGateway3$inboundSchema), - z.any(), - ]), - ).optional(), - routeApi: z.literal("ingress"), -}); +export const DeploymentPendingPreparedStackExtendAwBinding$inboundSchema: + z.ZodType = z.object({ + resource: z.lazy(() => + DeploymentPendingPreparedStackExtendAwResource$inboundSchema + ).optional(), + stack: z.lazy(() => + DeploymentPendingPreparedStackExtendAwStack$inboundSchema + ).optional(), + }); -export function deploymentRouteIngress2FromJSON( +export function deploymentPendingPreparedStackExtendAwBindingFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackExtendAwBinding, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentRouteIngress2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentRouteIngress2' from JSON`, + (x) => + DeploymentPendingPreparedStackExtendAwBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackExtendAwBinding' from JSON`, ); } /** @internal */ -export const DeploymentRouteUnion2$inboundSchema: z.ZodType< - DeploymentRouteUnion2, - unknown -> = z.union([ - z.lazy(() => DeploymentRouteIngress2$inboundSchema), - z.lazy(() => DeploymentRouteGateway2$inboundSchema), -]); +export const DeploymentPendingPreparedStackExtendEffect$inboundSchema: + z.ZodEnum = z.enum( + DeploymentPendingPreparedStackExtendEffect, + ); -export function deploymentRouteUnion2FromJSON( +/** @internal */ +export const DeploymentPendingPreparedStackExtendAwGrant$inboundSchema: + z.ZodType = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function deploymentPendingPreparedStackExtendAwGrantFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackExtendAwGrant, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentRouteUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentRouteUnion2' from JSON`, + (x) => + DeploymentPendingPreparedStackExtendAwGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackExtendAwGrant' from JSON`, ); } /** @internal */ -export const DeploymentExposureCustom$inboundSchema: z.ZodType< - DeploymentExposureCustom, +export const DeploymentPendingPreparedStackExtendAw$inboundSchema: z.ZodType< + DeploymentPendingPreparedStackExtendAw, unknown > = z.object({ - certificate: z.union([ - z.lazy(() => DeploymentCertificateTLSSecretRef2$inboundSchema), - z.lazy(() => DeploymentCertificateManagedAcmImport2$inboundSchema), - z.lazy(() => DeploymentCertificateAwsAcmArn2$inboundSchema), - z.lazy(() => DeploymentCertificateManagedTLSSecret2$inboundSchema), - z.lazy(() => DeploymentCertificateNone2$inboundSchema), - ]), - domain: z.string(), - mode: DeploymentModeCustom$inboundSchema, - route: z.union([ - z.lazy(() => DeploymentRouteIngress2$inboundSchema), - z.lazy(() => DeploymentRouteGateway2$inboundSchema), - ]), + binding: z.lazy(() => + DeploymentPendingPreparedStackExtendAwBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: DeploymentPendingPreparedStackExtendEffect$inboundSchema.optional(), + grant: z.lazy(() => + DeploymentPendingPreparedStackExtendAwGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), }); -export function deploymentExposureCustomFromJSON( +export function deploymentPendingPreparedStackExtendAwFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentExposureCustom$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentExposureCustom' from JSON`, + (x) => + DeploymentPendingPreparedStackExtendAw$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPendingPreparedStackExtendAw' from JSON`, ); } /** @internal */ -export const DeploymentCertificateNone1$inboundSchema: z.ZodType< - DeploymentCertificateNone1, - unknown -> = z.object({ - mode: z.literal("none"), -}); +export const DeploymentPendingPreparedStackExtendAzureResource$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); -export function deploymentCertificateNone1FromJSON( +export function deploymentPendingPreparedStackExtendAzureResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackExtendAzureResource, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentCertificateNone1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentCertificateNone1' from JSON`, + (x) => + DeploymentPendingPreparedStackExtendAzureResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackExtendAzureResource' from JSON`, ); } /** @internal */ -export const DeploymentCertificateManagedTLSSecret1$inboundSchema: z.ZodType< - DeploymentCertificateManagedTLSSecret1, - unknown -> = z.object({ - mode: z.literal("managedTlsSecret"), - secretNameTemplate: z.string(), -}); +export const DeploymentPendingPreparedStackExtendAzureStack$inboundSchema: + z.ZodType = z.object( + { + scope: z.string(), + }, + ); -export function deploymentCertificateManagedTLSSecret1FromJSON( +export function deploymentPendingPreparedStackExtendAzureStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackExtendAzureStack, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentCertificateManagedTLSSecret1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentCertificateManagedTLSSecret1' from JSON`, + DeploymentPendingPreparedStackExtendAzureStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackExtendAzureStack' from JSON`, ); } /** @internal */ -export const DeploymentCertificateAwsAcmArn1$inboundSchema: z.ZodType< - DeploymentCertificateAwsAcmArn1, - unknown -> = z.object({ - certificateArn: z.string(), - mode: z.literal("awsAcmArn"), -}); +export const DeploymentPendingPreparedStackExtendAzureBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + DeploymentPendingPreparedStackExtendAzureResource$inboundSchema + ).optional(), + stack: z.lazy(() => + DeploymentPendingPreparedStackExtendAzureStack$inboundSchema + ).optional(), + }); -export function deploymentCertificateAwsAcmArn1FromJSON( +export function deploymentPendingPreparedStackExtendAzureBindingFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackExtendAzureBinding, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentCertificateAwsAcmArn1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentCertificateAwsAcmArn1' from JSON`, + (x) => + DeploymentPendingPreparedStackExtendAzureBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackExtendAzureBinding' from JSON`, ); } /** @internal */ -export const DeploymentCertificateManagedAcmImport1$inboundSchema: z.ZodType< - DeploymentCertificateManagedAcmImport1, - unknown -> = z.object({ - mode: z.literal("managedAcmImport"), - region: z.nullable(z.string()).optional(), - tags: z.record(z.string(), z.string()).optional(), -}); +export const DeploymentPendingPreparedStackExtendAzureGrant$inboundSchema: + z.ZodType = z.object( + { + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }, + ); -export function deploymentCertificateManagedAcmImport1FromJSON( +export function deploymentPendingPreparedStackExtendAzureGrantFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackExtendAzureGrant, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentCertificateManagedAcmImport1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentCertificateManagedAcmImport1' from JSON`, + DeploymentPendingPreparedStackExtendAzureGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackExtendAzureGrant' from JSON`, ); } /** @internal */ -export const DeploymentCertificateTLSSecretRef1$inboundSchema: z.ZodType< - DeploymentCertificateTLSSecretRef1, +export const DeploymentPendingPreparedStackExtendAzure$inboundSchema: z.ZodType< + DeploymentPendingPreparedStackExtendAzure, unknown > = z.object({ - namespace: z.nullable(z.string()).optional(), - secretName: z.string(), - mode: z.literal("tlsSecretRef"), + binding: z.lazy(() => + DeploymentPendingPreparedStackExtendAzureBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + DeploymentPendingPreparedStackExtendAzureGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), }); -export function deploymentCertificateTLSSecretRef1FromJSON( +export function deploymentPendingPreparedStackExtendAzureFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackExtendAzure, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentCertificateTLSSecretRef1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentCertificateTLSSecretRef1' from JSON`, + DeploymentPendingPreparedStackExtendAzure$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackExtendAzure' from JSON`, ); } /** @internal */ -export const DeploymentCertificateUnion1$inboundSchema: z.ZodType< - DeploymentCertificateUnion1, - unknown -> = z.union([ - z.lazy(() => DeploymentCertificateTLSSecretRef1$inboundSchema), - z.lazy(() => DeploymentCertificateManagedAcmImport1$inboundSchema), - z.lazy(() => DeploymentCertificateAwsAcmArn1$inboundSchema), - z.lazy(() => DeploymentCertificateManagedTLSSecret1$inboundSchema), - z.lazy(() => DeploymentCertificateNone1$inboundSchema), -]); +export const DeploymentPendingPreparedStackExtendConditionResource$inboundSchema: + z.ZodType = z + .object({ + expression: z.string(), + title: z.string(), + }); -export function deploymentCertificateUnion1FromJSON( +export function deploymentPendingPreparedStackExtendConditionResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackExtendConditionResource, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentCertificateUnion1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentCertificateUnion1' from JSON`, + (x) => + DeploymentPendingPreparedStackExtendConditionResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackExtendConditionResource' from JSON`, ); } /** @internal */ -export const DeploymentModeGenerated$inboundSchema: z.ZodEnum< - typeof DeploymentModeGenerated -> = z.enum(DeploymentModeGenerated); +export const DeploymentPendingPreparedStackExtendResourceConditionUnion$inboundSchema: + z.ZodType< + DeploymentPendingPreparedStackExtendResourceConditionUnion, + unknown + > = z.union([ + z.lazy(() => + DeploymentPendingPreparedStackExtendConditionResource$inboundSchema + ), + z.any(), + ]); -/** @internal */ -export const DeploymentProviderAzureApplicationGatewayForContainersEnum2$inboundSchema: - z.ZodEnum< - typeof DeploymentProviderAzureApplicationGatewayForContainersEnum2 - > = z.enum(DeploymentProviderAzureApplicationGatewayForContainersEnum2); +export function deploymentPendingPreparedStackExtendResourceConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentPendingPreparedStackExtendResourceConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentPendingPreparedStackExtendResourceConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentPendingPreparedStackExtendResourceConditionUnion' from JSON`, + ); +} /** @internal */ -export const DeploymentProviderAzureApplicationGatewayForContainers2$inboundSchema: - z.ZodType = - z.object({ - albName: z.nullable(z.string()).optional(), - albNamespace: z.nullable(z.string()).optional(), - frontend: z.string(), - provider: - DeploymentProviderAzureApplicationGatewayForContainersEnum2$inboundSchema, +export const DeploymentPendingPreparedStackExtendGcpResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + DeploymentPendingPreparedStackExtendConditionResource$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), }); -export function deploymentProviderAzureApplicationGatewayForContainers2FromJSON( +export function deploymentPendingPreparedStackExtendGcpResourceFromJSON( jsonString: string, ): SafeParseResult< - DeploymentProviderAzureApplicationGatewayForContainers2, + DeploymentPendingPreparedStackExtendGcpResource, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentProviderAzureApplicationGatewayForContainers2$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'DeploymentProviderAzureApplicationGatewayForContainers2' from JSON`, + DeploymentPendingPreparedStackExtendGcpResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackExtendGcpResource' from JSON`, ); } /** @internal */ -export const DeploymentProviderGkeGatewayEnum2$inboundSchema: z.ZodEnum< - typeof DeploymentProviderGkeGatewayEnum2 -> = z.enum(DeploymentProviderGkeGatewayEnum2); - -/** @internal */ -export const DeploymentProviderGkeGateway2$inboundSchema: z.ZodType< - DeploymentProviderGkeGateway2, - unknown -> = z.object({ - provider: DeploymentProviderGkeGatewayEnum2$inboundSchema, - staticAddressName: z.nullable(z.string()).optional(), -}); +export const DeploymentPendingPreparedStackExtendConditionStack$inboundSchema: + z.ZodType = z + .object({ + expression: z.string(), + title: z.string(), + }); -export function deploymentProviderGkeGateway2FromJSON( +export function deploymentPendingPreparedStackExtendConditionStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackExtendConditionStack, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentProviderGkeGateway2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentProviderGkeGateway2' from JSON`, + (x) => + DeploymentPendingPreparedStackExtendConditionStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackExtendConditionStack' from JSON`, ); } /** @internal */ -export const DeploymentProviderAwsAlbEnum2$inboundSchema: z.ZodEnum< - typeof DeploymentProviderAwsAlbEnum2 -> = z.enum(DeploymentProviderAwsAlbEnum2); - -/** @internal */ -export const DeploymentProviderAwsAlb2$inboundSchema: z.ZodType< - DeploymentProviderAwsAlb2, - unknown -> = z.object({ - ipAddressType: z.nullable(z.string()).optional(), - provider: DeploymentProviderAwsAlbEnum2$inboundSchema, - scheme: z.string(), - subnetIds: z.array(z.string()).optional(), - targetType: z.string(), -}); +export const DeploymentPendingPreparedStackExtendStackConditionUnion$inboundSchema: + z.ZodType = + z.union([ + z.lazy(() => + DeploymentPendingPreparedStackExtendConditionStack$inboundSchema + ), + z.any(), + ]); -export function deploymentProviderAwsAlb2FromJSON( +export function deploymentPendingPreparedStackExtendStackConditionUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackExtendStackConditionUnion, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentProviderAwsAlb2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentProviderAwsAlb2' from JSON`, + (x) => + DeploymentPendingPreparedStackExtendStackConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentPendingPreparedStackExtendStackConditionUnion' from JSON`, ); } /** @internal */ -export const DeploymentProviderUnion2$inboundSchema: z.ZodType< - DeploymentProviderUnion2, - unknown -> = z.union([ - z.lazy(() => DeploymentProviderAwsAlb2$inboundSchema), - z.lazy(() => - DeploymentProviderAzureApplicationGatewayForContainers2$inboundSchema - ), - z.lazy(() => DeploymentProviderGkeGateway2$inboundSchema), - z.any(), -]); +export const DeploymentPendingPreparedStackExtendGcpStack$inboundSchema: + z.ZodType = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => + DeploymentPendingPreparedStackExtendConditionStack$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); -export function deploymentProviderUnion2FromJSON( +export function deploymentPendingPreparedStackExtendGcpStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackExtendGcpStack, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentProviderUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentProviderUnion2' from JSON`, + (x) => + DeploymentPendingPreparedStackExtendGcpStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackExtendGcpStack' from JSON`, ); } /** @internal */ -export const DeploymentRouteGateway1$inboundSchema: z.ZodType< - DeploymentRouteGateway1, - unknown -> = z.object({ - annotations: z.record(z.string(), z.string()).optional(), - controller: z.nullable(z.string()).optional(), - gatewayClassName: z.string(), - labels: z.record(z.string(), z.string()).optional(), - listenerPort: z.int(), - provider: z.nullable( - z.union([ - z.lazy(() => DeploymentProviderAwsAlb2$inboundSchema), - z.lazy(() => - DeploymentProviderAzureApplicationGatewayForContainers2$inboundSchema - ), - z.lazy(() => DeploymentProviderGkeGateway2$inboundSchema), - z.any(), - ]), - ).optional(), - routeApi: z.literal("gateway"), -}); +export const DeploymentPendingPreparedStackExtendGcpBinding$inboundSchema: + z.ZodType = z.object( + { + resource: z.lazy(() => + DeploymentPendingPreparedStackExtendGcpResource$inboundSchema + ).optional(), + stack: z.lazy(() => + DeploymentPendingPreparedStackExtendGcpStack$inboundSchema + ).optional(), + }, + ); -export function deploymentRouteGateway1FromJSON( +export function deploymentPendingPreparedStackExtendGcpBindingFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackExtendGcpBinding, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentRouteGateway1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentRouteGateway1' from JSON`, + (x) => + DeploymentPendingPreparedStackExtendGcpBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackExtendGcpBinding' from JSON`, ); } /** @internal */ -export const DeploymentProviderAzureApplicationGatewayForContainersEnum1$inboundSchema: - z.ZodEnum< - typeof DeploymentProviderAzureApplicationGatewayForContainersEnum1 - > = z.enum(DeploymentProviderAzureApplicationGatewayForContainersEnum1); - -/** @internal */ -export const DeploymentProviderAzureApplicationGatewayForContainers1$inboundSchema: - z.ZodType = - z.object({ - albName: z.nullable(z.string()).optional(), - albNamespace: z.nullable(z.string()).optional(), - frontend: z.string(), - provider: - DeploymentProviderAzureApplicationGatewayForContainersEnum1$inboundSchema, - }); +export const DeploymentPendingPreparedStackExtendGcpGrant$inboundSchema: + z.ZodType = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); -export function deploymentProviderAzureApplicationGatewayForContainers1FromJSON( +export function deploymentPendingPreparedStackExtendGcpGrantFromJSON( jsonString: string, ): SafeParseResult< - DeploymentProviderAzureApplicationGatewayForContainers1, + DeploymentPendingPreparedStackExtendGcpGrant, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentProviderAzureApplicationGatewayForContainers1$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'DeploymentProviderAzureApplicationGatewayForContainers1' from JSON`, + DeploymentPendingPreparedStackExtendGcpGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackExtendGcpGrant' from JSON`, ); } /** @internal */ -export const DeploymentProviderGkeGatewayEnum1$inboundSchema: z.ZodEnum< - typeof DeploymentProviderGkeGatewayEnum1 -> = z.enum(DeploymentProviderGkeGatewayEnum1); - -/** @internal */ -export const DeploymentProviderGkeGateway1$inboundSchema: z.ZodType< - DeploymentProviderGkeGateway1, +export const DeploymentPendingPreparedStackExtendGcp$inboundSchema: z.ZodType< + DeploymentPendingPreparedStackExtendGcp, unknown > = z.object({ - provider: DeploymentProviderGkeGatewayEnum1$inboundSchema, - staticAddressName: z.nullable(z.string()).optional(), + binding: z.lazy(() => + DeploymentPendingPreparedStackExtendGcpBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + DeploymentPendingPreparedStackExtendGcpGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), }); -export function deploymentProviderGkeGateway1FromJSON( +export function deploymentPendingPreparedStackExtendGcpFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackExtendGcp, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentProviderGkeGateway1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentProviderGkeGateway1' from JSON`, + (x) => + DeploymentPendingPreparedStackExtendGcp$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackExtendGcp' from JSON`, ); } /** @internal */ -export const DeploymentProviderAwsAlbEnum1$inboundSchema: z.ZodEnum< - typeof DeploymentProviderAwsAlbEnum1 -> = z.enum(DeploymentProviderAwsAlbEnum1); +export const DeploymentPendingPreparedStackExtendPlatforms$inboundSchema: + z.ZodType = z.object({ + aws: z.nullable( + z.array( + z.lazy(() => DeploymentPendingPreparedStackExtendAw$inboundSchema), + ), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + DeploymentPendingPreparedStackExtendAzure$inboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array( + z.lazy(() => DeploymentPendingPreparedStackExtendGcp$inboundSchema), + ), + ).optional(), + }); + +export function deploymentPendingPreparedStackExtendPlatformsFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentPendingPreparedStackExtendPlatforms, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentPendingPreparedStackExtendPlatforms$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackExtendPlatforms' from JSON`, + ); +} /** @internal */ -export const DeploymentProviderAwsAlb1$inboundSchema: z.ZodType< - DeploymentProviderAwsAlb1, +export const DeploymentPendingPreparedStackExtend$inboundSchema: z.ZodType< + DeploymentPendingPreparedStackExtend, unknown > = z.object({ - ipAddressType: z.nullable(z.string()).optional(), - provider: DeploymentProviderAwsAlbEnum1$inboundSchema, - scheme: z.string(), - subnetIds: z.array(z.string()).optional(), - targetType: z.string(), + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + DeploymentPendingPreparedStackExtendPlatforms$inboundSchema + ), }); -export function deploymentProviderAwsAlb1FromJSON( +export function deploymentPendingPreparedStackExtendFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentProviderAwsAlb1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentProviderAwsAlb1' from JSON`, + (x) => + DeploymentPendingPreparedStackExtend$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPendingPreparedStackExtend' from JSON`, ); } /** @internal */ -export const DeploymentProviderUnion1$inboundSchema: z.ZodType< - DeploymentProviderUnion1, +export const DeploymentPendingPreparedStackExtendUnion$inboundSchema: z.ZodType< + DeploymentPendingPreparedStackExtendUnion, unknown > = z.union([ - z.lazy(() => DeploymentProviderAwsAlb1$inboundSchema), - z.lazy(() => - DeploymentProviderAzureApplicationGatewayForContainers1$inboundSchema - ), - z.lazy(() => DeploymentProviderGkeGateway1$inboundSchema), - z.any(), + z.lazy(() => DeploymentPendingPreparedStackExtend$inboundSchema), + z.string(), ]); -export function deploymentProviderUnion1FromJSON( +export function deploymentPendingPreparedStackExtendUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackExtendUnion, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentProviderUnion1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentProviderUnion1' from JSON`, + (x) => + DeploymentPendingPreparedStackExtendUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackExtendUnion' from JSON`, ); } /** @internal */ -export const DeploymentRouteIngress1$inboundSchema: z.ZodType< - DeploymentRouteIngress1, +export const DeploymentPendingPreparedStackManagement1$inboundSchema: z.ZodType< + DeploymentPendingPreparedStackManagement1, unknown > = z.object({ - annotations: z.record(z.string(), z.string()).optional(), - controller: z.nullable(z.string()).optional(), - ingressClassName: z.string(), - labels: z.record(z.string(), z.string()).optional(), - provider: z.nullable( - z.union([ - z.lazy(() => DeploymentProviderAwsAlb1$inboundSchema), - z.lazy(() => - DeploymentProviderAzureApplicationGatewayForContainers1$inboundSchema - ), - z.lazy(() => DeploymentProviderGkeGateway1$inboundSchema), - z.any(), - ]), - ).optional(), - routeApi: z.literal("ingress"), + extend: z.record( + z.string(), + z.array(z.union([ + z.lazy(() => DeploymentPendingPreparedStackExtend$inboundSchema), + z.string(), + ])), + ), }); -export function deploymentRouteIngress1FromJSON( +export function deploymentPendingPreparedStackManagement1FromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackManagement1, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentRouteIngress1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentRouteIngress1' from JSON`, + (x) => + DeploymentPendingPreparedStackManagement1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackManagement1' from JSON`, ); } /** @internal */ -export const DeploymentRouteUnion1$inboundSchema: z.ZodType< - DeploymentRouteUnion1, - unknown -> = z.union([ - z.lazy(() => DeploymentRouteIngress1$inboundSchema), - z.lazy(() => DeploymentRouteGateway1$inboundSchema), -]); +export const DeploymentPendingPreparedStackManagementUnion$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => DeploymentPendingPreparedStackManagement1$inboundSchema), + z.lazy(() => DeploymentPendingPreparedStackManagement2$inboundSchema), + DeploymentPendingPreparedStackManagementEnum$inboundSchema, + ]); -export function deploymentRouteUnion1FromJSON( +export function deploymentPendingPreparedStackManagementUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackManagementUnion, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentRouteUnion1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentRouteUnion1' from JSON`, + (x) => + DeploymentPendingPreparedStackManagementUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackManagementUnion' from JSON`, ); } /** @internal */ -export const DeploymentExposureGenerated$inboundSchema: z.ZodType< - DeploymentExposureGenerated, - unknown -> = z.object({ - certificate: z.union([ - z.lazy(() => DeploymentCertificateTLSSecretRef1$inboundSchema), - z.lazy(() => DeploymentCertificateManagedAcmImport1$inboundSchema), - z.lazy(() => DeploymentCertificateAwsAcmArn1$inboundSchema), - z.lazy(() => DeploymentCertificateManagedTLSSecret1$inboundSchema), - z.lazy(() => DeploymentCertificateNone1$inboundSchema), - ]), - mode: DeploymentModeGenerated$inboundSchema, - route: z.union([ - z.lazy(() => DeploymentRouteIngress1$inboundSchema), - z.lazy(() => DeploymentRouteGateway1$inboundSchema), - ]), -}); +export const DeploymentPendingPreparedStackProfileAwResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); -export function deploymentExposureGeneratedFromJSON( +export function deploymentPendingPreparedStackProfileAwResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackProfileAwResource, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentExposureGenerated$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentExposureGenerated' from JSON`, + (x) => + DeploymentPendingPreparedStackProfileAwResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackProfileAwResource' from JSON`, ); } /** @internal */ -export const DeploymentModeDisabled$inboundSchema: z.ZodEnum< - typeof DeploymentModeDisabled -> = z.enum(DeploymentModeDisabled); +export const DeploymentPendingPreparedStackProfileAwStack$inboundSchema: + z.ZodType = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function deploymentPendingPreparedStackProfileAwStackFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentPendingPreparedStackProfileAwStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentPendingPreparedStackProfileAwStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackProfileAwStack' from JSON`, + ); +} /** @internal */ -export const DeploymentExposureDisabled$inboundSchema: z.ZodType< - DeploymentExposureDisabled, - unknown -> = z.object({ - mode: DeploymentModeDisabled$inboundSchema, -}); +export const DeploymentPendingPreparedStackProfileAwBinding$inboundSchema: + z.ZodType = z.object( + { + resource: z.lazy(() => + DeploymentPendingPreparedStackProfileAwResource$inboundSchema + ).optional(), + stack: z.lazy(() => + DeploymentPendingPreparedStackProfileAwStack$inboundSchema + ).optional(), + }, + ); -export function deploymentExposureDisabledFromJSON( +export function deploymentPendingPreparedStackProfileAwBindingFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackProfileAwBinding, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentExposureDisabled$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentExposureDisabled' from JSON`, + (x) => + DeploymentPendingPreparedStackProfileAwBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackProfileAwBinding' from JSON`, ); } /** @internal */ -export const DeploymentExposureUnion$inboundSchema: z.ZodType< - DeploymentExposureUnion, - unknown -> = z.union([ - z.lazy(() => DeploymentExposureCustom$inboundSchema), - z.lazy(() => DeploymentExposureGenerated$inboundSchema), - z.lazy(() => DeploymentExposureDisabled$inboundSchema), - z.any(), -]); +export const DeploymentPendingPreparedStackProfileEffect$inboundSchema: + z.ZodEnum = z.enum( + DeploymentPendingPreparedStackProfileEffect, + ); -export function deploymentExposureUnionFromJSON( +/** @internal */ +export const DeploymentPendingPreparedStackProfileAwGrant$inboundSchema: + z.ZodType = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function deploymentPendingPreparedStackProfileAwGrantFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackProfileAwGrant, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentExposureUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentExposureUnion' from JSON`, + (x) => + DeploymentPendingPreparedStackProfileAwGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackProfileAwGrant' from JSON`, ); } /** @internal */ -export const DeploymentKubernetes$inboundSchema: z.ZodType< - DeploymentKubernetes, +export const DeploymentPendingPreparedStackProfileAw$inboundSchema: z.ZodType< + DeploymentPendingPreparedStackProfileAw, unknown > = z.object({ - cluster: z.nullable( - z.union([z.lazy(() => DeploymentCluster$inboundSchema), z.any()]), - ).optional(), - exposure: z.nullable( - z.union([ - z.lazy(() => DeploymentExposureCustom$inboundSchema), - z.lazy(() => DeploymentExposureGenerated$inboundSchema), - z.lazy(() => DeploymentExposureDisabled$inboundSchema), - z.any(), - ]), - ).optional(), + binding: z.lazy(() => + DeploymentPendingPreparedStackProfileAwBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: DeploymentPendingPreparedStackProfileEffect$inboundSchema.optional(), + grant: z.lazy(() => + DeploymentPendingPreparedStackProfileAwGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), }); -export function deploymentKubernetesFromJSON( +export function deploymentPendingPreparedStackProfileAwFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackProfileAw, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentKubernetes$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentKubernetes' from JSON`, + (x) => + DeploymentPendingPreparedStackProfileAw$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackProfileAw' from JSON`, ); } /** @internal */ -export const DeploymentKubernetesUnion$inboundSchema: z.ZodType< - DeploymentKubernetesUnion, - unknown -> = z.union([z.lazy(() => DeploymentKubernetes$inboundSchema), z.any()]); +export const DeploymentPendingPreparedStackProfileAzureResource$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); -export function deploymentKubernetesUnionFromJSON( +export function deploymentPendingPreparedStackProfileAzureResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackProfileAzureResource, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentKubernetesUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentKubernetesUnion' from JSON`, + (x) => + DeploymentPendingPreparedStackProfileAzureResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackProfileAzureResource' from JSON`, ); } /** @internal */ -export const DeploymentTypeByoVnetAzure$inboundSchema: z.ZodEnum< - typeof DeploymentTypeByoVnetAzure -> = z.enum(DeploymentTypeByoVnetAzure); - -/** @internal */ -export const DeploymentNetworkByoVnetAzure$inboundSchema: z.ZodType< - DeploymentNetworkByoVnetAzure, - unknown -> = z.object({ - application_gateway_subnet_name: z.nullable(z.string()).optional(), - private_endpoint_subnet_name: z.nullable(z.string()).optional(), - private_subnet_name: z.string(), - public_subnet_name: z.string(), - type: DeploymentTypeByoVnetAzure$inboundSchema, - vnet_resource_id: z.string(), -}).transform((v) => { - return remap$(v, { - "application_gateway_subnet_name": "applicationGatewaySubnetName", - "private_endpoint_subnet_name": "privateEndpointSubnetName", - "private_subnet_name": "privateSubnetName", - "public_subnet_name": "publicSubnetName", - "vnet_resource_id": "vnetResourceId", - }); -}); +export const DeploymentPendingPreparedStackProfileAzureStack$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); -export function deploymentNetworkByoVnetAzureFromJSON( +export function deploymentPendingPreparedStackProfileAzureStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackProfileAzureStack, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentNetworkByoVnetAzure$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentNetworkByoVnetAzure' from JSON`, + (x) => + DeploymentPendingPreparedStackProfileAzureStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackProfileAzureStack' from JSON`, ); } /** @internal */ -export const DeploymentTypeByoVpcGcp$inboundSchema: z.ZodEnum< - typeof DeploymentTypeByoVpcGcp -> = z.enum(DeploymentTypeByoVpcGcp); - -/** @internal */ -export const DeploymentNetworkByoVpcGcp$inboundSchema: z.ZodType< - DeploymentNetworkByoVpcGcp, - unknown -> = z.object({ - network_name: z.string(), - region: z.string(), - subnet_name: z.string(), - type: DeploymentTypeByoVpcGcp$inboundSchema, -}).transform((v) => { - return remap$(v, { - "network_name": "networkName", - "subnet_name": "subnetName", - }); -}); +export const DeploymentPendingPreparedStackProfileAzureBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + DeploymentPendingPreparedStackProfileAzureResource$inboundSchema + ).optional(), + stack: z.lazy(() => + DeploymentPendingPreparedStackProfileAzureStack$inboundSchema + ).optional(), + }); -export function deploymentNetworkByoVpcGcpFromJSON( +export function deploymentPendingPreparedStackProfileAzureBindingFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackProfileAzureBinding, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentNetworkByoVpcGcp$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentNetworkByoVpcGcp' from JSON`, + (x) => + DeploymentPendingPreparedStackProfileAzureBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackProfileAzureBinding' from JSON`, ); } /** @internal */ -export const DeploymentTypeByoVpcAws$inboundSchema: z.ZodEnum< - typeof DeploymentTypeByoVpcAws -> = z.enum(DeploymentTypeByoVpcAws); - -/** @internal */ -export const DeploymentNetworkByoVpcAws$inboundSchema: z.ZodType< - DeploymentNetworkByoVpcAws, - unknown -> = z.object({ - private_subnet_ids: z.array(z.string()), - public_subnet_ids: z.array(z.string()), - security_group_ids: z.array(z.string()).optional(), - type: DeploymentTypeByoVpcAws$inboundSchema, - vpc_id: z.string(), -}).transform((v) => { - return remap$(v, { - "private_subnet_ids": "privateSubnetIds", - "public_subnet_ids": "publicSubnetIds", - "security_group_ids": "securityGroupIds", - "vpc_id": "vpcId", - }); -}); +export const DeploymentPendingPreparedStackProfileAzureGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); -export function deploymentNetworkByoVpcAwsFromJSON( +export function deploymentPendingPreparedStackProfileAzureGrantFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackProfileAzureGrant, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentNetworkByoVpcAws$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentNetworkByoVpcAws' from JSON`, + (x) => + DeploymentPendingPreparedStackProfileAzureGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackProfileAzureGrant' from JSON`, ); } /** @internal */ -export const DeploymentTypeCreate$inboundSchema: z.ZodEnum< - typeof DeploymentTypeCreate -> = z.enum(DeploymentTypeCreate); - -/** @internal */ -export const DeploymentNetworkCreate$inboundSchema: z.ZodType< - DeploymentNetworkCreate, - unknown -> = z.object({ - availability_zones: z.int().optional(), - cidr: z.nullable(z.string()).optional(), - type: DeploymentTypeCreate$inboundSchema, -}).transform((v) => { - return remap$(v, { - "availability_zones": "availabilityZones", +export const DeploymentPendingPreparedStackProfileAzure$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + DeploymentPendingPreparedStackProfileAzureBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + DeploymentPendingPreparedStackProfileAzureGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), }); -}); -export function deploymentNetworkCreateFromJSON( +export function deploymentPendingPreparedStackProfileAzureFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackProfileAzure, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentNetworkCreate$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentNetworkCreate' from JSON`, + (x) => + DeploymentPendingPreparedStackProfileAzure$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackProfileAzure' from JSON`, ); } /** @internal */ -export const DeploymentTypeUseDefault$inboundSchema: z.ZodEnum< - typeof DeploymentTypeUseDefault -> = z.enum(DeploymentTypeUseDefault); +export const DeploymentPendingPreparedStackProfileConditionResource$inboundSchema: + z.ZodType = z + .object({ + expression: z.string(), + title: z.string(), + }); + +export function deploymentPendingPreparedStackProfileConditionResourceFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentPendingPreparedStackProfileConditionResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentPendingPreparedStackProfileConditionResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentPendingPreparedStackProfileConditionResource' from JSON`, + ); +} /** @internal */ -export const DeploymentNetworkUseDefault$inboundSchema: z.ZodType< - DeploymentNetworkUseDefault, - unknown -> = z.object({ - type: DeploymentTypeUseDefault$inboundSchema, -}); +export const DeploymentPendingPreparedStackProfileResourceConditionUnion$inboundSchema: + z.ZodType< + DeploymentPendingPreparedStackProfileResourceConditionUnion, + unknown + > = z.union([ + z.lazy(() => + DeploymentPendingPreparedStackProfileConditionResource$inboundSchema + ), + z.any(), + ]); -export function deploymentNetworkUseDefaultFromJSON( +export function deploymentPendingPreparedStackProfileResourceConditionUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackProfileResourceConditionUnion, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentNetworkUseDefault$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentNetworkUseDefault' from JSON`, + (x) => + DeploymentPendingPreparedStackProfileResourceConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentPendingPreparedStackProfileResourceConditionUnion' from JSON`, ); } /** @internal */ -export const DeploymentNetworkUnion$inboundSchema: z.ZodType< - DeploymentNetworkUnion, - unknown -> = z.union([ - z.lazy(() => DeploymentNetworkByoVpcAws$inboundSchema), - z.lazy(() => DeploymentNetworkByoVpcGcp$inboundSchema), - z.lazy(() => DeploymentNetworkByoVnetAzure$inboundSchema), - z.lazy(() => DeploymentNetworkUseDefault$inboundSchema), - z.lazy(() => DeploymentNetworkCreate$inboundSchema), - z.any(), -]); +export const DeploymentPendingPreparedStackProfileGcpResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + DeploymentPendingPreparedStackProfileConditionResource$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); -export function deploymentNetworkUnionFromJSON( +export function deploymentPendingPreparedStackProfileGcpResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackProfileGcpResource, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentNetworkUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentNetworkUnion' from JSON`, + (x) => + DeploymentPendingPreparedStackProfileGcpResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackProfileGcpResource' from JSON`, ); } /** @internal */ -export const DeploymentTelemetry$inboundSchema: z.ZodEnum< - typeof DeploymentTelemetry -> = z.enum(DeploymentTelemetry); +export const DeploymentPendingPreparedStackProfileConditionStack$inboundSchema: + z.ZodType = z + .object({ + expression: z.string(), + title: z.string(), + }); -/** @internal */ -export const DeploymentUpdates$inboundSchema: z.ZodEnum< - typeof DeploymentUpdates -> = z.enum(DeploymentUpdates); +export function deploymentPendingPreparedStackProfileConditionStackFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentPendingPreparedStackProfileConditionStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentPendingPreparedStackProfileConditionStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackProfileConditionStack' from JSON`, + ); +} /** @internal */ -export const DeploymentStackSettings$inboundSchema: z.ZodType< - DeploymentStackSettings, - unknown -> = z.object({ - compute: z.nullable( - z.union([z.lazy(() => DeploymentCompute$inboundSchema), z.any()]), - ).optional(), - deploymentModel: DeploymentDeploymentModel$inboundSchema.optional(), - domains: z.nullable( - z.union([z.lazy(() => DeploymentDomains$inboundSchema), z.any()]), - ).optional(), - externalBindings: z.nullable( - z.lazy(() => DeploymentExternalBindings$inboundSchema), - ).optional(), - heartbeats: DeploymentHeartbeats$inboundSchema.optional(), - kubernetes: z.nullable( - z.union([z.lazy(() => DeploymentKubernetes$inboundSchema), z.any()]), - ).optional(), - network: z.nullable( +export const DeploymentPendingPreparedStackProfileStackConditionUnion$inboundSchema: + z.ZodType = z.union([ - z.lazy(() => DeploymentNetworkByoVpcAws$inboundSchema), - z.lazy(() => DeploymentNetworkByoVpcGcp$inboundSchema), - z.lazy(() => DeploymentNetworkByoVnetAzure$inboundSchema), - z.lazy(() => DeploymentNetworkUseDefault$inboundSchema), - z.lazy(() => DeploymentNetworkCreate$inboundSchema), - z.any(), - ]), - ).optional(), - telemetry: DeploymentTelemetry$inboundSchema.optional(), - updates: DeploymentUpdates$inboundSchema.optional(), -}); + z.lazy(() => + DeploymentPendingPreparedStackProfileConditionStack$inboundSchema + ), + z.any(), + ]); -export function deploymentStackSettingsFromJSON( +export function deploymentPendingPreparedStackProfileStackConditionUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackProfileStackConditionUnion, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentStackSettings$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentStackSettings' from JSON`, + (x) => + DeploymentPendingPreparedStackProfileStackConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentPendingPreparedStackProfileStackConditionUnion' from JSON`, ); } /** @internal */ -export const DeploymentStackStatePlatform$inboundSchema: z.ZodEnum< - typeof DeploymentStackStatePlatform -> = z.enum(DeploymentStackStatePlatform); - -/** @internal */ -export const DeploymentStackStateConfig$inboundSchema: z.ZodType< - DeploymentStackStateConfig, - unknown -> = collectExtraKeys$( - z.object({ - id: z.string(), - type: z.string(), - }).catchall(z.any()), - "additionalProperties", - true, -); +export const DeploymentPendingPreparedStackProfileGcpStack$inboundSchema: + z.ZodType = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => + DeploymentPendingPreparedStackProfileConditionStack$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); -export function deploymentStackStateConfigFromJSON( +export function deploymentPendingPreparedStackProfileGcpStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackProfileGcpStack, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentStackStateConfig$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentStackStateConfig' from JSON`, + (x) => + DeploymentPendingPreparedStackProfileGcpStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackProfileGcpStack' from JSON`, ); } /** @internal */ -export const DeploymentControllerPlatformEnum$inboundSchema: z.ZodEnum< - typeof DeploymentControllerPlatformEnum -> = z.enum(DeploymentControllerPlatformEnum); - -/** @internal */ -export const DeploymentControllerPlatformUnion$inboundSchema: z.ZodType< - DeploymentControllerPlatformUnion, - unknown -> = z.union([DeploymentControllerPlatformEnum$inboundSchema, z.any()]); +export const DeploymentPendingPreparedStackProfileGcpBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + DeploymentPendingPreparedStackProfileGcpResource$inboundSchema + ).optional(), + stack: z.lazy(() => + DeploymentPendingPreparedStackProfileGcpStack$inboundSchema + ).optional(), + }); -export function deploymentControllerPlatformUnionFromJSON( +export function deploymentPendingPreparedStackProfileGcpBindingFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackProfileGcpBinding, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentControllerPlatformUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentControllerPlatformUnion' from JSON`, + (x) => + DeploymentPendingPreparedStackProfileGcpBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackProfileGcpBinding' from JSON`, ); } /** @internal */ -export const DeploymentStackStateDependency$inboundSchema: z.ZodType< - DeploymentStackStateDependency, - unknown -> = z.object({ - id: z.string(), - type: z.string(), -}); +export const DeploymentPendingPreparedStackProfileGcpGrant$inboundSchema: + z.ZodType = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); -export function deploymentStackStateDependencyFromJSON( +export function deploymentPendingPreparedStackProfileGcpGrantFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackProfileGcpGrant, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentStackStateDependency$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentStackStateDependency' from JSON`, + (x) => + DeploymentPendingPreparedStackProfileGcpGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackProfileGcpGrant' from JSON`, ); } /** @internal */ -export const DeploymentErrorStackState$inboundSchema: z.ZodType< - DeploymentErrorStackState, +export const DeploymentPendingPreparedStackProfileGcp$inboundSchema: z.ZodType< + DeploymentPendingPreparedStackProfileGcp, unknown > = z.object({ - code: z.string(), - context: z.nullable(z.any()).optional(), - hint: z.nullable(z.string()).optional(), - httpStatusCode: z.nullable(z.int()).optional(), - internal: z.boolean(), - message: z.string(), - retryable: z.boolean().default(false), - source: z.nullable(z.any()).optional(), + binding: z.lazy(() => + DeploymentPendingPreparedStackProfileGcpBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + DeploymentPendingPreparedStackProfileGcpGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), }); -export function deploymentErrorStackStateFromJSON( +export function deploymentPendingPreparedStackProfileGcpFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackProfileGcp, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentErrorStackState$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentErrorStackState' from JSON`, + (x) => + DeploymentPendingPreparedStackProfileGcp$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackProfileGcp' from JSON`, ); } /** @internal */ -export const DeploymentErrorUnion$inboundSchema: z.ZodType< - DeploymentErrorUnion, - unknown -> = z.union([z.lazy(() => DeploymentErrorStackState$inboundSchema), z.any()]); +export const DeploymentPendingPreparedStackProfilePlatforms$inboundSchema: + z.ZodType = z.object( + { + aws: z.nullable(z.array(z.lazy(() => + DeploymentPendingPreparedStackProfileAw$inboundSchema + ))).optional(), + azure: z.nullable(z.array(z.lazy(() => + DeploymentPendingPreparedStackProfileAzure$inboundSchema + ))).optional(), + gcp: z.nullable(z.array(z.lazy(() => + DeploymentPendingPreparedStackProfileGcp$inboundSchema + ))).optional(), + }, + ); -export function deploymentErrorUnionFromJSON( +export function deploymentPendingPreparedStackProfilePlatformsFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackProfilePlatforms, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentErrorUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentErrorUnion' from JSON`, + (x) => + DeploymentPendingPreparedStackProfilePlatforms$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackProfilePlatforms' from JSON`, ); } /** @internal */ -export const DeploymentLifecycleStackStateEnum$inboundSchema: z.ZodEnum< - typeof DeploymentLifecycleStackStateEnum -> = z.enum(DeploymentLifecycleStackStateEnum); - -/** @internal */ -export const DeploymentLifecycleUnion$inboundSchema: z.ZodType< - DeploymentLifecycleUnion, +export const DeploymentPendingPreparedStackProfile$inboundSchema: z.ZodType< + DeploymentPendingPreparedStackProfile, unknown -> = z.union([DeploymentLifecycleStackStateEnum$inboundSchema, z.any()]); +> = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + DeploymentPendingPreparedStackProfilePlatforms$inboundSchema + ), +}); -export function deploymentLifecycleUnionFromJSON( +export function deploymentPendingPreparedStackProfileFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentLifecycleUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentLifecycleUnion' from JSON`, + (x) => + DeploymentPendingPreparedStackProfile$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPendingPreparedStackProfile' from JSON`, ); } /** @internal */ -export const DeploymentOutputs$inboundSchema: z.ZodType< - DeploymentOutputs, - unknown -> = collectExtraKeys$( - z.object({ - type: z.string(), - }).catchall(z.any()), - "additionalProperties", - true, -); +export const DeploymentPendingPreparedStackProfileUnion$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => DeploymentPendingPreparedStackProfile$inboundSchema), + z.string(), + ]); -export function deploymentOutputsFromJSON( +export function deploymentPendingPreparedStackProfileUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackProfileUnion, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentOutputs$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentOutputs' from JSON`, + (x) => + DeploymentPendingPreparedStackProfileUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackProfileUnion' from JSON`, ); } /** @internal */ -export const DeploymentOutputsUnion$inboundSchema: z.ZodType< - DeploymentOutputsUnion, +export const DeploymentPendingPreparedStackPermissions$inboundSchema: z.ZodType< + DeploymentPendingPreparedStackPermissions, unknown -> = z.union([z.lazy(() => DeploymentOutputs$inboundSchema), z.any()]); +> = z.object({ + management: z.union([ + z.lazy(() => DeploymentPendingPreparedStackManagement1$inboundSchema), + z.lazy(() => DeploymentPendingPreparedStackManagement2$inboundSchema), + DeploymentPendingPreparedStackManagementEnum$inboundSchema, + ]).optional(), + profiles: z.record( + z.string(), + z.record( + z.string(), + z.array( + z.union([ + z.lazy(() => DeploymentPendingPreparedStackProfile$inboundSchema), + z.string(), + ]), + ), + ), + ), +}); -export function deploymentOutputsUnionFromJSON( +export function deploymentPendingPreparedStackPermissionsFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackPermissions, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentOutputsUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentOutputsUnion' from JSON`, + (x) => + DeploymentPendingPreparedStackPermissions$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackPermissions' from JSON`, ); } /** @internal */ -export const DeploymentPreviousConfig$inboundSchema: z.ZodType< - DeploymentPreviousConfig, +export const DeploymentPendingPreparedStackConfig$inboundSchema: z.ZodType< + DeploymentPendingPreparedStackConfig, unknown > = collectExtraKeys$( z.object({ @@ -5470,267 +9606,309 @@ export const DeploymentPreviousConfig$inboundSchema: z.ZodType< true, ); -export function deploymentPreviousConfigFromJSON( +export function deploymentPendingPreparedStackConfigFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentPreviousConfig$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentPreviousConfig' from JSON`, + (x) => + DeploymentPendingPreparedStackConfig$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPendingPreparedStackConfig' from JSON`, ); } /** @internal */ -export const DeploymentPreviousConfigUnion$inboundSchema: z.ZodType< - DeploymentPreviousConfigUnion, +export const DeploymentPendingPreparedStackDependency$inboundSchema: z.ZodType< + DeploymentPendingPreparedStackDependency, unknown -> = z.union([z.lazy(() => DeploymentPreviousConfig$inboundSchema), z.any()]); +> = z.object({ + id: z.string(), + type: z.string(), +}); -export function deploymentPreviousConfigUnionFromJSON( +export function deploymentPendingPreparedStackDependencyFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPendingPreparedStackDependency, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentPreviousConfigUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentPreviousConfigUnion' from JSON`, + (x) => + DeploymentPendingPreparedStackDependency$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackDependency' from JSON`, ); } /** @internal */ -export const DeploymentStackStateStatus$inboundSchema: z.ZodEnum< - typeof DeploymentStackStateStatus -> = z.enum(DeploymentStackStateStatus); +export const DeploymentPendingPreparedStackLifecycle$inboundSchema: z.ZodEnum< + typeof DeploymentPendingPreparedStackLifecycle +> = z.enum(DeploymentPendingPreparedStackLifecycle); /** @internal */ -export const DeploymentStackStateResources$inboundSchema: z.ZodType< - DeploymentStackStateResources, +export const DeploymentPendingPreparedStackResources$inboundSchema: z.ZodType< + DeploymentPendingPreparedStackResources, unknown > = z.object({ - _internal: z.nullable(z.any()).optional(), - config: z.lazy(() => DeploymentStackStateConfig$inboundSchema), - controllerPlatform: z.nullable( - z.union([DeploymentControllerPlatformEnum$inboundSchema, z.any()]), - ).optional(), + config: z.lazy(() => DeploymentPendingPreparedStackConfig$inboundSchema), dependencies: z.array( - z.lazy(() => DeploymentStackStateDependency$inboundSchema), - ).optional(), - error: z.nullable( - z.union([z.lazy(() => DeploymentErrorStackState$inboundSchema), z.any()]), - ).optional(), - lastFailedState: z.nullable(z.any()).optional(), - lifecycle: z.nullable( - z.union([DeploymentLifecycleStackStateEnum$inboundSchema, z.any()]), + z.lazy(() => DeploymentPendingPreparedStackDependency$inboundSchema), + ), + enabledWhen: z.nullable(z.string()).optional(), + lifecycle: DeploymentPendingPreparedStackLifecycle$inboundSchema, + remoteAccess: z.boolean().optional(), +}); + +export function deploymentPendingPreparedStackResourcesFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentPendingPreparedStackResources, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentPendingPreparedStackResources$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPendingPreparedStackResources' from JSON`, + ); +} + +/** @internal */ +export const DeploymentPendingPreparedStackSupportedPlatform$inboundSchema: + z.ZodEnum = z.enum( + DeploymentPendingPreparedStackSupportedPlatform, + ); + +/** @internal */ +export const DeploymentPendingPreparedStack$inboundSchema: z.ZodType< + DeploymentPendingPreparedStack, + unknown +> = z.object({ + id: z.string(), + inputs: z.array( + z.lazy(() => DeploymentPendingPreparedStackInput$inboundSchema), ).optional(), - outputs: z.nullable( - z.union([z.lazy(() => DeploymentOutputs$inboundSchema), z.any()]), + permissions: z.lazy(() => + DeploymentPendingPreparedStackPermissions$inboundSchema ).optional(), - previousConfig: z.nullable( - z.union([z.lazy(() => DeploymentPreviousConfig$inboundSchema), z.any()]), + resources: z.record( + z.string(), + z.lazy(() => DeploymentPendingPreparedStackResources$inboundSchema), + ), + supportedPlatforms: z.nullable( + z.array(DeploymentPendingPreparedStackSupportedPlatform$inboundSchema), ).optional(), - remoteBindingParams: z.nullable(z.any()).optional(), - retryAttempt: z.int().optional(), - status: DeploymentStackStateStatus$inboundSchema, - type: z.string(), -}).transform((v) => { - return remap$(v, { - "_internal": "internal", - }); }); -export function deploymentStackStateResourcesFromJSON( +export function deploymentPendingPreparedStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentStackStateResources$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentStackStateResources' from JSON`, + (x) => DeploymentPendingPreparedStack$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPendingPreparedStack' from JSON`, ); } /** @internal */ -export const DeploymentStackState$inboundSchema: z.ZodType< - DeploymentStackState, +export const DeploymentPendingPreparedStackUnion$inboundSchema: z.ZodType< + DeploymentPendingPreparedStackUnion, unknown -> = z.object({ - platform: DeploymentStackStatePlatform$inboundSchema, - resourcePrefix: z.string(), - resources: z.record( - z.string(), - z.lazy(() => DeploymentStackStateResources$inboundSchema), - ), -}); +> = z.union([ + z.lazy(() => DeploymentPendingPreparedStack$inboundSchema), + z.any(), +]); -export function deploymentStackStateFromJSON( +export function deploymentPendingPreparedStackUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentStackState$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentStackState' from JSON`, + (x) => + DeploymentPendingPreparedStackUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPendingPreparedStackUnion' from JSON`, ); } /** @internal */ -export const DeploymentTypeStringList$inboundSchema: z.ZodEnum< - typeof DeploymentTypeStringList -> = z.enum(DeploymentTypeStringList); +export const DeploymentPreparedStackTypeStringList$inboundSchema: z.ZodEnum< + typeof DeploymentPreparedStackTypeStringList +> = z.enum(DeploymentPreparedStackTypeStringList); /** @internal */ -export const DeploymentDefaultStringList$inboundSchema: z.ZodType< - DeploymentDefaultStringList, +export const DeploymentPreparedStackDefaultStringList$inboundSchema: z.ZodType< + DeploymentPreparedStackDefaultStringList, unknown > = z.object({ - type: DeploymentTypeStringList$inboundSchema, + type: DeploymentPreparedStackTypeStringList$inboundSchema, value: z.array(z.string()), }); -export function deploymentDefaultStringListFromJSON( +export function deploymentPreparedStackDefaultStringListFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPreparedStackDefaultStringList, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentDefaultStringList$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDefaultStringList' from JSON`, + (x) => + DeploymentPreparedStackDefaultStringList$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPreparedStackDefaultStringList' from JSON`, ); } /** @internal */ -export const DeploymentTypeBoolean$inboundSchema: z.ZodEnum< - typeof DeploymentTypeBoolean -> = z.enum(DeploymentTypeBoolean); +export const DeploymentPreparedStackTypeBoolean$inboundSchema: z.ZodEnum< + typeof DeploymentPreparedStackTypeBoolean +> = z.enum(DeploymentPreparedStackTypeBoolean); /** @internal */ -export const DeploymentDefaultBoolean$inboundSchema: z.ZodType< - DeploymentDefaultBoolean, +export const DeploymentPreparedStackDefaultBoolean$inboundSchema: z.ZodType< + DeploymentPreparedStackDefaultBoolean, unknown > = z.object({ - type: DeploymentTypeBoolean$inboundSchema, + type: DeploymentPreparedStackTypeBoolean$inboundSchema, value: z.boolean(), }); -export function deploymentDefaultBooleanFromJSON( +export function deploymentPreparedStackDefaultBooleanFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentDefaultBoolean$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDefaultBoolean' from JSON`, + (x) => + DeploymentPreparedStackDefaultBoolean$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPreparedStackDefaultBoolean' from JSON`, ); } /** @internal */ -export const DeploymentTypeNumber$inboundSchema: z.ZodEnum< - typeof DeploymentTypeNumber -> = z.enum(DeploymentTypeNumber); +export const DeploymentPreparedStackTypeNumber$inboundSchema: z.ZodEnum< + typeof DeploymentPreparedStackTypeNumber +> = z.enum(DeploymentPreparedStackTypeNumber); /** @internal */ -export const DeploymentDefaultNumber$inboundSchema: z.ZodType< - DeploymentDefaultNumber, +export const DeploymentPreparedStackDefaultNumber$inboundSchema: z.ZodType< + DeploymentPreparedStackDefaultNumber, unknown > = z.object({ - type: DeploymentTypeNumber$inboundSchema, + type: DeploymentPreparedStackTypeNumber$inboundSchema, value: z.string(), }); -export function deploymentDefaultNumberFromJSON( +export function deploymentPreparedStackDefaultNumberFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentDefaultNumber$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDefaultNumber' from JSON`, + (x) => + DeploymentPreparedStackDefaultNumber$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPreparedStackDefaultNumber' from JSON`, ); } /** @internal */ -export const DeploymentTypeString$inboundSchema: z.ZodEnum< - typeof DeploymentTypeString -> = z.enum(DeploymentTypeString); +export const DeploymentPreparedStackTypeString$inboundSchema: z.ZodEnum< + typeof DeploymentPreparedStackTypeString +> = z.enum(DeploymentPreparedStackTypeString); /** @internal */ -export const DeploymentDefaultString$inboundSchema: z.ZodType< - DeploymentDefaultString, +export const DeploymentPreparedStackDefaultString$inboundSchema: z.ZodType< + DeploymentPreparedStackDefaultString, unknown > = z.object({ - type: DeploymentTypeString$inboundSchema, + type: DeploymentPreparedStackTypeString$inboundSchema, value: z.string(), }); -export function deploymentDefaultStringFromJSON( +export function deploymentPreparedStackDefaultStringFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentDefaultString$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDefaultString' from JSON`, + (x) => + DeploymentPreparedStackDefaultString$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPreparedStackDefaultString' from JSON`, ); } /** @internal */ -export const DeploymentDefaultUnion$inboundSchema: z.ZodType< - DeploymentDefaultUnion, +export const DeploymentPreparedStackDefaultUnion$inboundSchema: z.ZodType< + DeploymentPreparedStackDefaultUnion, unknown > = z.union([ - z.lazy(() => DeploymentDefaultString$inboundSchema), - z.lazy(() => DeploymentDefaultNumber$inboundSchema), - z.lazy(() => DeploymentDefaultBoolean$inboundSchema), - z.lazy(() => DeploymentDefaultStringList$inboundSchema), + z.lazy(() => DeploymentPreparedStackDefaultString$inboundSchema), + z.lazy(() => DeploymentPreparedStackDefaultNumber$inboundSchema), + z.lazy(() => DeploymentPreparedStackDefaultBoolean$inboundSchema), + z.lazy(() => DeploymentPreparedStackDefaultStringList$inboundSchema), z.any(), ]); -export function deploymentDefaultUnionFromJSON( +export function deploymentPreparedStackDefaultUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentDefaultUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDefaultUnion' from JSON`, + (x) => + DeploymentPreparedStackDefaultUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPreparedStackDefaultUnion' from JSON`, ); } /** @internal */ -export const DeploymentTypeEnvEnum$inboundSchema: z.ZodEnum< - typeof DeploymentTypeEnvEnum -> = z.enum(DeploymentTypeEnvEnum); +export const DeploymentPreparedStackTypeEnvEnum$inboundSchema: z.ZodEnum< + typeof DeploymentPreparedStackTypeEnvEnum +> = z.enum(DeploymentPreparedStackTypeEnvEnum); /** @internal */ -export const DeploymentTypeUnion$inboundSchema: z.ZodType< - DeploymentTypeUnion, +export const DeploymentPreparedStackTypeUnion$inboundSchema: z.ZodType< + DeploymentPreparedStackTypeUnion, unknown -> = z.union([DeploymentTypeEnvEnum$inboundSchema, z.any()]); +> = z.union([DeploymentPreparedStackTypeEnvEnum$inboundSchema, z.any()]); -export function deploymentTypeUnionFromJSON( +export function deploymentPreparedStackTypeUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentTypeUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentTypeUnion' from JSON`, + (x) => DeploymentPreparedStackTypeUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPreparedStackTypeUnion' from JSON`, ); } /** @internal */ -export const DeploymentEnv$inboundSchema: z.ZodType = z - .object({ - name: z.string(), - targetResources: z.nullable(z.array(z.string())).optional(), - type: z.nullable(z.union([DeploymentTypeEnvEnum$inboundSchema, z.any()])) - .optional(), - }); +export const DeploymentPreparedStackEnv$inboundSchema: z.ZodType< + DeploymentPreparedStackEnv, + unknown +> = z.object({ + name: z.string(), + targetResources: z.nullable(z.array(z.string())).optional(), + type: z.nullable( + z.union([DeploymentPreparedStackTypeEnvEnum$inboundSchema, z.any()]), + ).optional(), +}); -export function deploymentEnvFromJSON( +export function deploymentPreparedStackEnvFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentEnv$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentEnv' from JSON`, + (x) => DeploymentPreparedStackEnv$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPreparedStackEnv' from JSON`, ); } /** @internal */ -export const DeploymentKind$inboundSchema: z.ZodEnum = z - .enum(DeploymentKind); +export const DeploymentPreparedStackKind$inboundSchema: z.ZodEnum< + typeof DeploymentPreparedStackKind +> = z.enum(DeploymentPreparedStackKind); /** @internal */ export const DeploymentPreparedStackPlatform$inboundSchema: z.ZodEnum< @@ -5738,13 +9916,13 @@ export const DeploymentPreparedStackPlatform$inboundSchema: z.ZodEnum< > = z.enum(DeploymentPreparedStackPlatform); /** @internal */ -export const DeploymentProvidedBy$inboundSchema: z.ZodEnum< - typeof DeploymentProvidedBy -> = z.enum(DeploymentProvidedBy); +export const DeploymentPreparedStackProvidedBy$inboundSchema: z.ZodEnum< + typeof DeploymentPreparedStackProvidedBy +> = z.enum(DeploymentPreparedStackProvidedBy); /** @internal */ -export const DeploymentValidation$inboundSchema: z.ZodType< - DeploymentValidation, +export const DeploymentPreparedStackValidation$inboundSchema: z.ZodType< + DeploymentPreparedStackValidation, unknown > = z.object({ format: z.nullable(z.string()).optional(), @@ -5758,79 +9936,87 @@ export const DeploymentValidation$inboundSchema: z.ZodType< values: z.nullable(z.array(z.string())).optional(), }); -export function deploymentValidationFromJSON( +export function deploymentPreparedStackValidationFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentValidation$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentValidation' from JSON`, + (x) => DeploymentPreparedStackValidation$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPreparedStackValidation' from JSON`, ); } /** @internal */ -export const DeploymentValidationUnion$inboundSchema: z.ZodType< - DeploymentValidationUnion, +export const DeploymentPreparedStackValidationUnion$inboundSchema: z.ZodType< + DeploymentPreparedStackValidationUnion, unknown -> = z.union([z.lazy(() => DeploymentValidation$inboundSchema), z.any()]); +> = z.union([ + z.lazy(() => DeploymentPreparedStackValidation$inboundSchema), + z.any(), +]); -export function deploymentValidationUnionFromJSON( +export function deploymentPreparedStackValidationUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentValidationUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentValidationUnion' from JSON`, + (x) => + DeploymentPreparedStackValidationUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPreparedStackValidationUnion' from JSON`, ); } /** @internal */ -export const DeploymentInput$inboundSchema: z.ZodType< - DeploymentInput, +export const DeploymentPreparedStackInput$inboundSchema: z.ZodType< + DeploymentPreparedStackInput, unknown > = z.object({ default: z.nullable( z.union([ - z.lazy(() => DeploymentDefaultString$inboundSchema), - z.lazy(() => DeploymentDefaultNumber$inboundSchema), - z.lazy(() => DeploymentDefaultBoolean$inboundSchema), - z.lazy(() => DeploymentDefaultStringList$inboundSchema), + z.lazy(() => DeploymentPreparedStackDefaultString$inboundSchema), + z.lazy(() => DeploymentPreparedStackDefaultNumber$inboundSchema), + z.lazy(() => DeploymentPreparedStackDefaultBoolean$inboundSchema), + z.lazy(() => DeploymentPreparedStackDefaultStringList$inboundSchema), z.any(), ]), ).optional(), description: z.string(), - env: z.array(z.lazy(() => DeploymentEnv$inboundSchema)).optional(), + env: z.array(z.lazy(() => DeploymentPreparedStackEnv$inboundSchema)) + .optional(), id: z.string(), - kind: DeploymentKind$inboundSchema, + kind: DeploymentPreparedStackKind$inboundSchema, label: z.string(), placeholder: z.nullable(z.string()).optional(), platforms: z.nullable(z.array(DeploymentPreparedStackPlatform$inboundSchema)) .optional(), - providedBy: z.array(DeploymentProvidedBy$inboundSchema), + providedBy: z.array(DeploymentPreparedStackProvidedBy$inboundSchema), required: z.boolean(), validation: z.nullable( - z.union([z.lazy(() => DeploymentValidation$inboundSchema), z.any()]), + z.union([ + z.lazy(() => DeploymentPreparedStackValidation$inboundSchema), + z.any(), + ]), ).optional(), }); -export function deploymentInputFromJSON( +export function deploymentPreparedStackInputFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentInput$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentInput' from JSON`, + (x) => DeploymentPreparedStackInput$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPreparedStackInput' from JSON`, ); } /** @internal */ -export const DeploymentManagementEnum$inboundSchema: z.ZodEnum< - typeof DeploymentManagementEnum -> = z.enum(DeploymentManagementEnum); +export const DeploymentPreparedStackManagementEnum$inboundSchema: z.ZodEnum< + typeof DeploymentPreparedStackManagementEnum +> = z.enum(DeploymentPreparedStackManagementEnum); /** @internal */ -export const DeploymentOverrideAwResource$inboundSchema: z.ZodType< - DeploymentOverrideAwResource, +export const DeploymentPreparedStackOverrideAwResource$inboundSchema: z.ZodType< + DeploymentPreparedStackOverrideAwResource, unknown > = z.object({ condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) @@ -5838,19 +10024,25 @@ export const DeploymentOverrideAwResource$inboundSchema: z.ZodType< resources: z.array(z.string()), }); -export function deploymentOverrideAwResourceFromJSON( +export function deploymentPreparedStackOverrideAwResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPreparedStackOverrideAwResource, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentOverrideAwResource$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentOverrideAwResource' from JSON`, + (x) => + DeploymentPreparedStackOverrideAwResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPreparedStackOverrideAwResource' from JSON`, ); } /** @internal */ -export const DeploymentOverrideAwStack$inboundSchema: z.ZodType< - DeploymentOverrideAwStack, +export const DeploymentPreparedStackOverrideAwStack$inboundSchema: z.ZodType< + DeploymentPreparedStackOverrideAwStack, unknown > = z.object({ condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) @@ -5858,43 +10050,53 @@ export const DeploymentOverrideAwStack$inboundSchema: z.ZodType< resources: z.array(z.string()), }); -export function deploymentOverrideAwStackFromJSON( +export function deploymentPreparedStackOverrideAwStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentOverrideAwStack$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentOverrideAwStack' from JSON`, + (x) => + DeploymentPreparedStackOverrideAwStack$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPreparedStackOverrideAwStack' from JSON`, ); } /** @internal */ -export const DeploymentOverrideAwBinding$inboundSchema: z.ZodType< - DeploymentOverrideAwBinding, +export const DeploymentPreparedStackOverrideAwBinding$inboundSchema: z.ZodType< + DeploymentPreparedStackOverrideAwBinding, unknown > = z.object({ - resource: z.lazy(() => DeploymentOverrideAwResource$inboundSchema).optional(), - stack: z.lazy(() => DeploymentOverrideAwStack$inboundSchema).optional(), + resource: z.lazy(() => + DeploymentPreparedStackOverrideAwResource$inboundSchema + ).optional(), + stack: z.lazy(() => DeploymentPreparedStackOverrideAwStack$inboundSchema) + .optional(), }); -export function deploymentOverrideAwBindingFromJSON( +export function deploymentPreparedStackOverrideAwBindingFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPreparedStackOverrideAwBinding, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentOverrideAwBinding$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentOverrideAwBinding' from JSON`, + (x) => + DeploymentPreparedStackOverrideAwBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPreparedStackOverrideAwBinding' from JSON`, ); } /** @internal */ -export const DeploymentOverrideEffect$inboundSchema: z.ZodEnum< - typeof DeploymentOverrideEffect -> = z.enum(DeploymentOverrideEffect); +export const DeploymentPreparedStackOverrideEffect$inboundSchema: z.ZodEnum< + typeof DeploymentPreparedStackOverrideEffect +> = z.enum(DeploymentPreparedStackOverrideEffect); /** @internal */ -export const DeploymentOverrideAwGrant$inboundSchema: z.ZodType< - DeploymentOverrideAwGrant, +export const DeploymentPreparedStackOverrideAwGrant$inboundSchema: z.ZodType< + DeploymentPreparedStackOverrideAwGrant, unknown > = z.object({ actions: z.nullable(z.array(z.string())).optional(), @@ -5904,97 +10106,114 @@ export const DeploymentOverrideAwGrant$inboundSchema: z.ZodType< residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function deploymentOverrideAwGrantFromJSON( +export function deploymentPreparedStackOverrideAwGrantFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentOverrideAwGrant$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentOverrideAwGrant' from JSON`, + (x) => + DeploymentPreparedStackOverrideAwGrant$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPreparedStackOverrideAwGrant' from JSON`, ); } /** @internal */ -export const DeploymentOverrideAw$inboundSchema: z.ZodType< - DeploymentOverrideAw, +export const DeploymentPreparedStackOverrideAw$inboundSchema: z.ZodType< + DeploymentPreparedStackOverrideAw, unknown > = z.object({ - binding: z.lazy(() => DeploymentOverrideAwBinding$inboundSchema), + binding: z.lazy(() => DeploymentPreparedStackOverrideAwBinding$inboundSchema), description: z.nullable(z.string()).optional(), - effect: DeploymentOverrideEffect$inboundSchema.optional(), - grant: z.lazy(() => DeploymentOverrideAwGrant$inboundSchema), + effect: DeploymentPreparedStackOverrideEffect$inboundSchema.optional(), + grant: z.lazy(() => DeploymentPreparedStackOverrideAwGrant$inboundSchema), label: z.nullable(z.string()).optional(), }); -export function deploymentOverrideAwFromJSON( +export function deploymentPreparedStackOverrideAwFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentOverrideAw$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentOverrideAw' from JSON`, + (x) => DeploymentPreparedStackOverrideAw$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPreparedStackOverrideAw' from JSON`, ); } /** @internal */ -export const DeploymentOverrideAzureResource$inboundSchema: z.ZodType< - DeploymentOverrideAzureResource, - unknown -> = z.object({ - scope: z.string(), -}); +export const DeploymentPreparedStackOverrideAzureResource$inboundSchema: + z.ZodType = z.object({ + scope: z.string(), + }); -export function deploymentOverrideAzureResourceFromJSON( +export function deploymentPreparedStackOverrideAzureResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPreparedStackOverrideAzureResource, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentOverrideAzureResource$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentOverrideAzureResource' from JSON`, + (x) => + DeploymentPreparedStackOverrideAzureResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPreparedStackOverrideAzureResource' from JSON`, ); } /** @internal */ -export const DeploymentOverrideAzureStack$inboundSchema: z.ZodType< - DeploymentOverrideAzureStack, +export const DeploymentPreparedStackOverrideAzureStack$inboundSchema: z.ZodType< + DeploymentPreparedStackOverrideAzureStack, unknown > = z.object({ scope: z.string(), }); -export function deploymentOverrideAzureStackFromJSON( +export function deploymentPreparedStackOverrideAzureStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPreparedStackOverrideAzureStack, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentOverrideAzureStack$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentOverrideAzureStack' from JSON`, + (x) => + DeploymentPreparedStackOverrideAzureStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPreparedStackOverrideAzureStack' from JSON`, ); } /** @internal */ -export const DeploymentOverrideAzureBinding$inboundSchema: z.ZodType< - DeploymentOverrideAzureBinding, - unknown -> = z.object({ - resource: z.lazy(() => DeploymentOverrideAzureResource$inboundSchema) - .optional(), - stack: z.lazy(() => DeploymentOverrideAzureStack$inboundSchema).optional(), -}); +export const DeploymentPreparedStackOverrideAzureBinding$inboundSchema: + z.ZodType = z.object({ + resource: z.lazy(() => + DeploymentPreparedStackOverrideAzureResource$inboundSchema + ).optional(), + stack: z.lazy(() => DeploymentPreparedStackOverrideAzureStack$inboundSchema) + .optional(), + }); -export function deploymentOverrideAzureBindingFromJSON( +export function deploymentPreparedStackOverrideAzureBindingFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPreparedStackOverrideAzureBinding, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentOverrideAzureBinding$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentOverrideAzureBinding' from JSON`, + (x) => + DeploymentPreparedStackOverrideAzureBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPreparedStackOverrideAzureBinding' from JSON`, ); } /** @internal */ -export const DeploymentOverrideAzureGrant$inboundSchema: z.ZodType< - DeploymentOverrideAzureGrant, +export const DeploymentPreparedStackOverrideAzureGrant$inboundSchema: z.ZodType< + DeploymentPreparedStackOverrideAzureGrant, unknown > = z.object({ actions: z.nullable(z.array(z.string())).optional(), @@ -6004,192 +10223,234 @@ export const DeploymentOverrideAzureGrant$inboundSchema: z.ZodType< residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function deploymentOverrideAzureGrantFromJSON( +export function deploymentPreparedStackOverrideAzureGrantFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPreparedStackOverrideAzureGrant, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentOverrideAzureGrant$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentOverrideAzureGrant' from JSON`, + (x) => + DeploymentPreparedStackOverrideAzureGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPreparedStackOverrideAzureGrant' from JSON`, ); } /** @internal */ -export const DeploymentOverrideAzure$inboundSchema: z.ZodType< - DeploymentOverrideAzure, +export const DeploymentPreparedStackOverrideAzure$inboundSchema: z.ZodType< + DeploymentPreparedStackOverrideAzure, unknown > = z.object({ - binding: z.lazy(() => DeploymentOverrideAzureBinding$inboundSchema), + binding: z.lazy(() => + DeploymentPreparedStackOverrideAzureBinding$inboundSchema + ), description: z.nullable(z.string()).optional(), - grant: z.lazy(() => DeploymentOverrideAzureGrant$inboundSchema), + grant: z.lazy(() => DeploymentPreparedStackOverrideAzureGrant$inboundSchema), label: z.nullable(z.string()).optional(), }); -export function deploymentOverrideAzureFromJSON( +export function deploymentPreparedStackOverrideAzureFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentOverrideAzure$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentOverrideAzure' from JSON`, + (x) => + DeploymentPreparedStackOverrideAzure$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPreparedStackOverrideAzure' from JSON`, ); } /** @internal */ -export const DeploymentOverrideConditionResource$inboundSchema: z.ZodType< - DeploymentOverrideConditionResource, - unknown -> = z.object({ - expression: z.string(), - title: z.string(), -}); +export const DeploymentPreparedStackOverrideConditionResource$inboundSchema: + z.ZodType = z + .object({ + expression: z.string(), + title: z.string(), + }); -export function deploymentOverrideConditionResourceFromJSON( +export function deploymentPreparedStackOverrideConditionResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPreparedStackOverrideConditionResource, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentOverrideConditionResource$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentOverrideConditionResource' from JSON`, + DeploymentPreparedStackOverrideConditionResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPreparedStackOverrideConditionResource' from JSON`, ); } /** @internal */ -export const DeploymentOverrideResourceConditionUnion$inboundSchema: z.ZodType< - DeploymentOverrideResourceConditionUnion, - unknown -> = z.union([ - z.lazy(() => DeploymentOverrideConditionResource$inboundSchema), - z.any(), -]); +export const DeploymentPreparedStackOverrideResourceConditionUnion$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => + DeploymentPreparedStackOverrideConditionResource$inboundSchema + ), + z.any(), + ]); -export function deploymentOverrideResourceConditionUnionFromJSON( +export function deploymentPreparedStackOverrideResourceConditionUnionFromJSON( jsonString: string, ): SafeParseResult< - DeploymentOverrideResourceConditionUnion, + DeploymentPreparedStackOverrideResourceConditionUnion, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentOverrideResourceConditionUnion$inboundSchema.parse( + DeploymentPreparedStackOverrideResourceConditionUnion$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'DeploymentOverrideResourceConditionUnion' from JSON`, + `Failed to parse 'DeploymentPreparedStackOverrideResourceConditionUnion' from JSON`, ); } /** @internal */ -export const DeploymentOverrideGcpResource$inboundSchema: z.ZodType< - DeploymentOverrideGcpResource, - unknown -> = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => DeploymentOverrideConditionResource$inboundSchema), - z.any(), - ]), - ).optional(), - scope: z.string(), -}); +export const DeploymentPreparedStackOverrideGcpResource$inboundSchema: + z.ZodType = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => + DeploymentPreparedStackOverrideConditionResource$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); -export function deploymentOverrideGcpResourceFromJSON( +export function deploymentPreparedStackOverrideGcpResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPreparedStackOverrideGcpResource, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentOverrideGcpResource$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentOverrideGcpResource' from JSON`, + (x) => + DeploymentPreparedStackOverrideGcpResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPreparedStackOverrideGcpResource' from JSON`, ); } /** @internal */ -export const DeploymentOverrideConditionStack$inboundSchema: z.ZodType< - DeploymentOverrideConditionStack, - unknown -> = z.object({ - expression: z.string(), - title: z.string(), -}); +export const DeploymentPreparedStackOverrideConditionStack$inboundSchema: + z.ZodType = z.object({ + expression: z.string(), + title: z.string(), + }); -export function deploymentOverrideConditionStackFromJSON( +export function deploymentPreparedStackOverrideConditionStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPreparedStackOverrideConditionStack, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentOverrideConditionStack$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentOverrideConditionStack' from JSON`, + (x) => + DeploymentPreparedStackOverrideConditionStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPreparedStackOverrideConditionStack' from JSON`, ); } /** @internal */ -export const DeploymentOverrideStackConditionUnion$inboundSchema: z.ZodType< - DeploymentOverrideStackConditionUnion, - unknown -> = z.union([ - z.lazy(() => DeploymentOverrideConditionStack$inboundSchema), - z.any(), -]); +export const DeploymentPreparedStackOverrideStackConditionUnion$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => DeploymentPreparedStackOverrideConditionStack$inboundSchema), + z.any(), + ]); -export function deploymentOverrideStackConditionUnionFromJSON( +export function deploymentPreparedStackOverrideStackConditionUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPreparedStackOverrideStackConditionUnion, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentOverrideStackConditionUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentOverrideStackConditionUnion' from JSON`, + DeploymentPreparedStackOverrideStackConditionUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPreparedStackOverrideStackConditionUnion' from JSON`, ); } /** @internal */ -export const DeploymentOverrideGcpStack$inboundSchema: z.ZodType< - DeploymentOverrideGcpStack, +export const DeploymentPreparedStackOverrideGcpStack$inboundSchema: z.ZodType< + DeploymentPreparedStackOverrideGcpStack, unknown > = z.object({ condition: z.nullable( z.union([ - z.lazy(() => DeploymentOverrideConditionStack$inboundSchema), + z.lazy(() => DeploymentPreparedStackOverrideConditionStack$inboundSchema), z.any(), ]), ).optional(), scope: z.string(), }); -export function deploymentOverrideGcpStackFromJSON( +export function deploymentPreparedStackOverrideGcpStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPreparedStackOverrideGcpStack, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentOverrideGcpStack$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentOverrideGcpStack' from JSON`, + (x) => + DeploymentPreparedStackOverrideGcpStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPreparedStackOverrideGcpStack' from JSON`, ); } /** @internal */ -export const DeploymentOverrideGcpBinding$inboundSchema: z.ZodType< - DeploymentOverrideGcpBinding, +export const DeploymentPreparedStackOverrideGcpBinding$inboundSchema: z.ZodType< + DeploymentPreparedStackOverrideGcpBinding, unknown > = z.object({ - resource: z.lazy(() => DeploymentOverrideGcpResource$inboundSchema) + resource: z.lazy(() => + DeploymentPreparedStackOverrideGcpResource$inboundSchema + ).optional(), + stack: z.lazy(() => DeploymentPreparedStackOverrideGcpStack$inboundSchema) .optional(), - stack: z.lazy(() => DeploymentOverrideGcpStack$inboundSchema).optional(), }); -export function deploymentOverrideGcpBindingFromJSON( +export function deploymentPreparedStackOverrideGcpBindingFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPreparedStackOverrideGcpBinding, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentOverrideGcpBinding$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentOverrideGcpBinding' from JSON`, + (x) => + DeploymentPreparedStackOverrideGcpBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPreparedStackOverrideGcpBinding' from JSON`, ); } /** @internal */ -export const DeploymentOverrideGcpGrant$inboundSchema: z.ZodType< - DeploymentOverrideGcpGrant, +export const DeploymentPreparedStackOverrideGcpGrant$inboundSchema: z.ZodType< + DeploymentPreparedStackOverrideGcpGrant, unknown > = z.object({ actions: z.nullable(z.array(z.string())).optional(), @@ -6199,123 +10460,148 @@ export const DeploymentOverrideGcpGrant$inboundSchema: z.ZodType< residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function deploymentOverrideGcpGrantFromJSON( +export function deploymentPreparedStackOverrideGcpGrantFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPreparedStackOverrideGcpGrant, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentOverrideGcpGrant$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentOverrideGcpGrant' from JSON`, + (x) => + DeploymentPreparedStackOverrideGcpGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPreparedStackOverrideGcpGrant' from JSON`, ); } /** @internal */ -export const DeploymentOverrideGcp$inboundSchema: z.ZodType< - DeploymentOverrideGcp, +export const DeploymentPreparedStackOverrideGcp$inboundSchema: z.ZodType< + DeploymentPreparedStackOverrideGcp, unknown > = z.object({ - binding: z.lazy(() => DeploymentOverrideGcpBinding$inboundSchema), + binding: z.lazy(() => + DeploymentPreparedStackOverrideGcpBinding$inboundSchema + ), description: z.nullable(z.string()).optional(), - grant: z.lazy(() => DeploymentOverrideGcpGrant$inboundSchema), + grant: z.lazy(() => DeploymentPreparedStackOverrideGcpGrant$inboundSchema), label: z.nullable(z.string()).optional(), }); -export function deploymentOverrideGcpFromJSON( +export function deploymentPreparedStackOverrideGcpFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentOverrideGcp$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentOverrideGcp' from JSON`, + (x) => + DeploymentPreparedStackOverrideGcp$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPreparedStackOverrideGcp' from JSON`, ); } /** @internal */ -export const DeploymentOverridePlatforms$inboundSchema: z.ZodType< - DeploymentOverridePlatforms, +export const DeploymentPreparedStackOverridePlatforms$inboundSchema: z.ZodType< + DeploymentPreparedStackOverridePlatforms, unknown > = z.object({ - aws: z.nullable(z.array(z.lazy(() => DeploymentOverrideAw$inboundSchema))) - .optional(), + aws: z.nullable( + z.array(z.lazy(() => DeploymentPreparedStackOverrideAw$inboundSchema)), + ).optional(), azure: z.nullable( - z.array(z.lazy(() => DeploymentOverrideAzure$inboundSchema)), + z.array(z.lazy(() => DeploymentPreparedStackOverrideAzure$inboundSchema)), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => DeploymentPreparedStackOverrideGcp$inboundSchema)), ).optional(), - gcp: z.nullable(z.array(z.lazy(() => DeploymentOverrideGcp$inboundSchema))) - .optional(), }); -export function deploymentOverridePlatformsFromJSON( +export function deploymentPreparedStackOverridePlatformsFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPreparedStackOverridePlatforms, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentOverridePlatforms$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentOverridePlatforms' from JSON`, + (x) => + DeploymentPreparedStackOverridePlatforms$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPreparedStackOverridePlatforms' from JSON`, ); } /** @internal */ -export const DeploymentOverride$inboundSchema: z.ZodType< - DeploymentOverride, +export const DeploymentPreparedStackOverride$inboundSchema: z.ZodType< + DeploymentPreparedStackOverride, unknown > = z.object({ description: z.string(), id: z.string(), - platforms: z.lazy(() => DeploymentOverridePlatforms$inboundSchema), + platforms: z.lazy(() => + DeploymentPreparedStackOverridePlatforms$inboundSchema + ), }); -export function deploymentOverrideFromJSON( +export function deploymentPreparedStackOverrideFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentOverride$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentOverride' from JSON`, + (x) => DeploymentPreparedStackOverride$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPreparedStackOverride' from JSON`, ); } /** @internal */ -export const DeploymentOverrideUnion$inboundSchema: z.ZodType< - DeploymentOverrideUnion, +export const DeploymentPreparedStackOverrideUnion$inboundSchema: z.ZodType< + DeploymentPreparedStackOverrideUnion, unknown -> = z.union([z.lazy(() => DeploymentOverride$inboundSchema), z.string()]); +> = z.union([ + z.lazy(() => DeploymentPreparedStackOverride$inboundSchema), + z.string(), +]); -export function deploymentOverrideUnionFromJSON( +export function deploymentPreparedStackOverrideUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentOverrideUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentOverrideUnion' from JSON`, + (x) => + DeploymentPreparedStackOverrideUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPreparedStackOverrideUnion' from JSON`, ); } /** @internal */ -export const DeploymentManagement2$inboundSchema: z.ZodType< - DeploymentManagement2, +export const DeploymentPreparedStackManagement2$inboundSchema: z.ZodType< + DeploymentPreparedStackManagement2, unknown > = z.object({ override: z.record( z.string(), - z.array( - z.union([z.lazy(() => DeploymentOverride$inboundSchema), z.string()]), - ), + z.array(z.union([ + z.lazy(() => DeploymentPreparedStackOverride$inboundSchema), + z.string(), + ])), ), }); -export function deploymentManagement2FromJSON( +export function deploymentPreparedStackManagement2FromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentManagement2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentManagement2' from JSON`, + (x) => + DeploymentPreparedStackManagement2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPreparedStackManagement2' from JSON`, ); } /** @internal */ -export const DeploymentExtendAwResource$inboundSchema: z.ZodType< - DeploymentExtendAwResource, +export const DeploymentPreparedStackExtendAwResource$inboundSchema: z.ZodType< + DeploymentPreparedStackExtendAwResource, unknown > = z.object({ condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) @@ -6323,19 +10609,25 @@ export const DeploymentExtendAwResource$inboundSchema: z.ZodType< resources: z.array(z.string()), }); -export function deploymentExtendAwResourceFromJSON( +export function deploymentPreparedStackExtendAwResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPreparedStackExtendAwResource, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentExtendAwResource$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentExtendAwResource' from JSON`, + (x) => + DeploymentPreparedStackExtendAwResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPreparedStackExtendAwResource' from JSON`, ); } /** @internal */ -export const DeploymentExtendAwStack$inboundSchema: z.ZodType< - DeploymentExtendAwStack, +export const DeploymentPreparedStackExtendAwStack$inboundSchema: z.ZodType< + DeploymentPreparedStackExtendAwStack, unknown > = z.object({ condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) @@ -6343,43 +10635,47 @@ export const DeploymentExtendAwStack$inboundSchema: z.ZodType< resources: z.array(z.string()), }); -export function deploymentExtendAwStackFromJSON( +export function deploymentPreparedStackExtendAwStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentExtendAwStack$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentExtendAwStack' from JSON`, + (x) => + DeploymentPreparedStackExtendAwStack$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPreparedStackExtendAwStack' from JSON`, ); } /** @internal */ -export const DeploymentExtendAwBinding$inboundSchema: z.ZodType< - DeploymentExtendAwBinding, +export const DeploymentPreparedStackExtendAwBinding$inboundSchema: z.ZodType< + DeploymentPreparedStackExtendAwBinding, unknown > = z.object({ - resource: z.lazy(() => DeploymentExtendAwResource$inboundSchema).optional(), - stack: z.lazy(() => DeploymentExtendAwStack$inboundSchema).optional(), + resource: z.lazy(() => DeploymentPreparedStackExtendAwResource$inboundSchema) + .optional(), + stack: z.lazy(() => DeploymentPreparedStackExtendAwStack$inboundSchema) + .optional(), }); -export function deploymentExtendAwBindingFromJSON( +export function deploymentPreparedStackExtendAwBindingFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentExtendAwBinding$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentExtendAwBinding' from JSON`, + (x) => + DeploymentPreparedStackExtendAwBinding$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPreparedStackExtendAwBinding' from JSON`, ); } /** @internal */ -export const DeploymentExtendEffect$inboundSchema: z.ZodEnum< - typeof DeploymentExtendEffect -> = z.enum(DeploymentExtendEffect); +export const DeploymentPreparedStackExtendEffect$inboundSchema: z.ZodEnum< + typeof DeploymentPreparedStackExtendEffect +> = z.enum(DeploymentPreparedStackExtendEffect); /** @internal */ -export const DeploymentExtendAwGrant$inboundSchema: z.ZodType< - DeploymentExtendAwGrant, +export const DeploymentPreparedStackExtendAwGrant$inboundSchema: z.ZodType< + DeploymentPreparedStackExtendAwGrant, unknown > = z.object({ actions: z.nullable(z.array(z.string())).optional(), @@ -6389,97 +10685,116 @@ export const DeploymentExtendAwGrant$inboundSchema: z.ZodType< residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function deploymentExtendAwGrantFromJSON( +export function deploymentPreparedStackExtendAwGrantFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentExtendAwGrant$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentExtendAwGrant' from JSON`, + (x) => + DeploymentPreparedStackExtendAwGrant$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPreparedStackExtendAwGrant' from JSON`, ); } /** @internal */ -export const DeploymentExtendAw$inboundSchema: z.ZodType< - DeploymentExtendAw, +export const DeploymentPreparedStackExtendAw$inboundSchema: z.ZodType< + DeploymentPreparedStackExtendAw, unknown > = z.object({ - binding: z.lazy(() => DeploymentExtendAwBinding$inboundSchema), + binding: z.lazy(() => DeploymentPreparedStackExtendAwBinding$inboundSchema), description: z.nullable(z.string()).optional(), - effect: DeploymentExtendEffect$inboundSchema.optional(), - grant: z.lazy(() => DeploymentExtendAwGrant$inboundSchema), + effect: DeploymentPreparedStackExtendEffect$inboundSchema.optional(), + grant: z.lazy(() => DeploymentPreparedStackExtendAwGrant$inboundSchema), label: z.nullable(z.string()).optional(), }); -export function deploymentExtendAwFromJSON( +export function deploymentPreparedStackExtendAwFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentExtendAw$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentExtendAw' from JSON`, + (x) => DeploymentPreparedStackExtendAw$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPreparedStackExtendAw' from JSON`, ); } /** @internal */ -export const DeploymentExtendAzureResource$inboundSchema: z.ZodType< - DeploymentExtendAzureResource, - unknown -> = z.object({ - scope: z.string(), -}); +export const DeploymentPreparedStackExtendAzureResource$inboundSchema: + z.ZodType = z.object({ + scope: z.string(), + }); -export function deploymentExtendAzureResourceFromJSON( +export function deploymentPreparedStackExtendAzureResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPreparedStackExtendAzureResource, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentExtendAzureResource$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentExtendAzureResource' from JSON`, + (x) => + DeploymentPreparedStackExtendAzureResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPreparedStackExtendAzureResource' from JSON`, ); } /** @internal */ -export const DeploymentExtendAzureStack$inboundSchema: z.ZodType< - DeploymentExtendAzureStack, +export const DeploymentPreparedStackExtendAzureStack$inboundSchema: z.ZodType< + DeploymentPreparedStackExtendAzureStack, unknown > = z.object({ scope: z.string(), }); -export function deploymentExtendAzureStackFromJSON( +export function deploymentPreparedStackExtendAzureStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPreparedStackExtendAzureStack, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentExtendAzureStack$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentExtendAzureStack' from JSON`, + (x) => + DeploymentPreparedStackExtendAzureStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPreparedStackExtendAzureStack' from JSON`, ); } /** @internal */ -export const DeploymentExtendAzureBinding$inboundSchema: z.ZodType< - DeploymentExtendAzureBinding, +export const DeploymentPreparedStackExtendAzureBinding$inboundSchema: z.ZodType< + DeploymentPreparedStackExtendAzureBinding, unknown > = z.object({ - resource: z.lazy(() => DeploymentExtendAzureResource$inboundSchema) + resource: z.lazy(() => + DeploymentPreparedStackExtendAzureResource$inboundSchema + ).optional(), + stack: z.lazy(() => DeploymentPreparedStackExtendAzureStack$inboundSchema) .optional(), - stack: z.lazy(() => DeploymentExtendAzureStack$inboundSchema).optional(), }); -export function deploymentExtendAzureBindingFromJSON( +export function deploymentPreparedStackExtendAzureBindingFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPreparedStackExtendAzureBinding, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentExtendAzureBinding$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentExtendAzureBinding' from JSON`, + (x) => + DeploymentPreparedStackExtendAzureBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPreparedStackExtendAzureBinding' from JSON`, ); } /** @internal */ -export const DeploymentExtendAzureGrant$inboundSchema: z.ZodType< - DeploymentExtendAzureGrant, +export const DeploymentPreparedStackExtendAzureGrant$inboundSchema: z.ZodType< + DeploymentPreparedStackExtendAzureGrant, unknown > = z.object({ actions: z.nullable(z.array(z.string())).optional(), @@ -6489,185 +10804,231 @@ export const DeploymentExtendAzureGrant$inboundSchema: z.ZodType< residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function deploymentExtendAzureGrantFromJSON( +export function deploymentPreparedStackExtendAzureGrantFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPreparedStackExtendAzureGrant, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentExtendAzureGrant$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentExtendAzureGrant' from JSON`, + (x) => + DeploymentPreparedStackExtendAzureGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPreparedStackExtendAzureGrant' from JSON`, ); } /** @internal */ -export const DeploymentExtendAzure$inboundSchema: z.ZodType< - DeploymentExtendAzure, +export const DeploymentPreparedStackExtendAzure$inboundSchema: z.ZodType< + DeploymentPreparedStackExtendAzure, unknown > = z.object({ - binding: z.lazy(() => DeploymentExtendAzureBinding$inboundSchema), + binding: z.lazy(() => + DeploymentPreparedStackExtendAzureBinding$inboundSchema + ), description: z.nullable(z.string()).optional(), - grant: z.lazy(() => DeploymentExtendAzureGrant$inboundSchema), + grant: z.lazy(() => DeploymentPreparedStackExtendAzureGrant$inboundSchema), label: z.nullable(z.string()).optional(), }); -export function deploymentExtendAzureFromJSON( +export function deploymentPreparedStackExtendAzureFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentExtendAzure$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentExtendAzure' from JSON`, + (x) => + DeploymentPreparedStackExtendAzure$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPreparedStackExtendAzure' from JSON`, ); } -/** @internal */ -export const DeploymentExtendConditionResource$inboundSchema: z.ZodType< - DeploymentExtendConditionResource, - unknown -> = z.object({ - expression: z.string(), - title: z.string(), -}); - -export function deploymentExtendConditionResourceFromJSON( +/** @internal */ +export const DeploymentPreparedStackExtendConditionResource$inboundSchema: + z.ZodType = z.object( + { + expression: z.string(), + title: z.string(), + }, + ); + +export function deploymentPreparedStackExtendConditionResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPreparedStackExtendConditionResource, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentExtendConditionResource$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentExtendConditionResource' from JSON`, + (x) => + DeploymentPreparedStackExtendConditionResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPreparedStackExtendConditionResource' from JSON`, ); } /** @internal */ -export const DeploymentExtendResourceConditionUnion$inboundSchema: z.ZodType< - DeploymentExtendResourceConditionUnion, - unknown -> = z.union([ - z.lazy(() => DeploymentExtendConditionResource$inboundSchema), - z.any(), -]); +export const DeploymentPreparedStackExtendResourceConditionUnion$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => + DeploymentPreparedStackExtendConditionResource$inboundSchema + ), + z.any(), + ]); -export function deploymentExtendResourceConditionUnionFromJSON( +export function deploymentPreparedStackExtendResourceConditionUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPreparedStackExtendResourceConditionUnion, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentExtendResourceConditionUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentExtendResourceConditionUnion' from JSON`, + DeploymentPreparedStackExtendResourceConditionUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPreparedStackExtendResourceConditionUnion' from JSON`, ); } /** @internal */ -export const DeploymentExtendGcpResource$inboundSchema: z.ZodType< - DeploymentExtendGcpResource, +export const DeploymentPreparedStackExtendGcpResource$inboundSchema: z.ZodType< + DeploymentPreparedStackExtendGcpResource, unknown > = z.object({ condition: z.nullable( z.union([ - z.lazy(() => DeploymentExtendConditionResource$inboundSchema), + z.lazy(() => + DeploymentPreparedStackExtendConditionResource$inboundSchema + ), z.any(), ]), ).optional(), scope: z.string(), }); -export function deploymentExtendGcpResourceFromJSON( +export function deploymentPreparedStackExtendGcpResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPreparedStackExtendGcpResource, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentExtendGcpResource$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentExtendGcpResource' from JSON`, + (x) => + DeploymentPreparedStackExtendGcpResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPreparedStackExtendGcpResource' from JSON`, ); } /** @internal */ -export const DeploymentExtendConditionStack$inboundSchema: z.ZodType< - DeploymentExtendConditionStack, - unknown -> = z.object({ - expression: z.string(), - title: z.string(), -}); +export const DeploymentPreparedStackExtendConditionStack$inboundSchema: + z.ZodType = z.object({ + expression: z.string(), + title: z.string(), + }); -export function deploymentExtendConditionStackFromJSON( +export function deploymentPreparedStackExtendConditionStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPreparedStackExtendConditionStack, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentExtendConditionStack$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentExtendConditionStack' from JSON`, + (x) => + DeploymentPreparedStackExtendConditionStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPreparedStackExtendConditionStack' from JSON`, ); } /** @internal */ -export const DeploymentExtendStackConditionUnion$inboundSchema: z.ZodType< - DeploymentExtendStackConditionUnion, - unknown -> = z.union([ - z.lazy(() => DeploymentExtendConditionStack$inboundSchema), - z.any(), -]); +export const DeploymentPreparedStackExtendStackConditionUnion$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => DeploymentPreparedStackExtendConditionStack$inboundSchema), + z.any(), + ]); -export function deploymentExtendStackConditionUnionFromJSON( +export function deploymentPreparedStackExtendStackConditionUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPreparedStackExtendStackConditionUnion, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentExtendStackConditionUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentExtendStackConditionUnion' from JSON`, + DeploymentPreparedStackExtendStackConditionUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPreparedStackExtendStackConditionUnion' from JSON`, ); } /** @internal */ -export const DeploymentExtendGcpStack$inboundSchema: z.ZodType< - DeploymentExtendGcpStack, +export const DeploymentPreparedStackExtendGcpStack$inboundSchema: z.ZodType< + DeploymentPreparedStackExtendGcpStack, unknown > = z.object({ condition: z.nullable( z.union([ - z.lazy(() => DeploymentExtendConditionStack$inboundSchema), + z.lazy(() => DeploymentPreparedStackExtendConditionStack$inboundSchema), z.any(), ]), ).optional(), scope: z.string(), }); -export function deploymentExtendGcpStackFromJSON( +export function deploymentPreparedStackExtendGcpStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentExtendGcpStack$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentExtendGcpStack' from JSON`, + (x) => + DeploymentPreparedStackExtendGcpStack$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPreparedStackExtendGcpStack' from JSON`, ); } /** @internal */ -export const DeploymentExtendGcpBinding$inboundSchema: z.ZodType< - DeploymentExtendGcpBinding, +export const DeploymentPreparedStackExtendGcpBinding$inboundSchema: z.ZodType< + DeploymentPreparedStackExtendGcpBinding, unknown > = z.object({ - resource: z.lazy(() => DeploymentExtendGcpResource$inboundSchema).optional(), - stack: z.lazy(() => DeploymentExtendGcpStack$inboundSchema).optional(), + resource: z.lazy(() => DeploymentPreparedStackExtendGcpResource$inboundSchema) + .optional(), + stack: z.lazy(() => DeploymentPreparedStackExtendGcpStack$inboundSchema) + .optional(), }); -export function deploymentExtendGcpBindingFromJSON( +export function deploymentPreparedStackExtendGcpBindingFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPreparedStackExtendGcpBinding, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentExtendGcpBinding$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentExtendGcpBinding' from JSON`, + (x) => + DeploymentPreparedStackExtendGcpBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPreparedStackExtendGcpBinding' from JSON`, ); } /** @internal */ -export const DeploymentExtendGcpGrant$inboundSchema: z.ZodType< - DeploymentExtendGcpGrant, +export const DeploymentPreparedStackExtendGcpGrant$inboundSchema: z.ZodType< + DeploymentPreparedStackExtendGcpGrant, unknown > = z.object({ actions: z.nullable(z.array(z.string())).optional(), @@ -6677,142 +11038,154 @@ export const DeploymentExtendGcpGrant$inboundSchema: z.ZodType< residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function deploymentExtendGcpGrantFromJSON( +export function deploymentPreparedStackExtendGcpGrantFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentExtendGcpGrant$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentExtendGcpGrant' from JSON`, + (x) => + DeploymentPreparedStackExtendGcpGrant$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPreparedStackExtendGcpGrant' from JSON`, ); } /** @internal */ -export const DeploymentExtendGcp$inboundSchema: z.ZodType< - DeploymentExtendGcp, +export const DeploymentPreparedStackExtendGcp$inboundSchema: z.ZodType< + DeploymentPreparedStackExtendGcp, unknown > = z.object({ - binding: z.lazy(() => DeploymentExtendGcpBinding$inboundSchema), + binding: z.lazy(() => DeploymentPreparedStackExtendGcpBinding$inboundSchema), description: z.nullable(z.string()).optional(), - grant: z.lazy(() => DeploymentExtendGcpGrant$inboundSchema), + grant: z.lazy(() => DeploymentPreparedStackExtendGcpGrant$inboundSchema), label: z.nullable(z.string()).optional(), }); -export function deploymentExtendGcpFromJSON( +export function deploymentPreparedStackExtendGcpFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentExtendGcp$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentExtendGcp' from JSON`, + (x) => DeploymentPreparedStackExtendGcp$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPreparedStackExtendGcp' from JSON`, ); } /** @internal */ -export const DeploymentExtendPlatforms$inboundSchema: z.ZodType< - DeploymentExtendPlatforms, +export const DeploymentPreparedStackExtendPlatforms$inboundSchema: z.ZodType< + DeploymentPreparedStackExtendPlatforms, unknown > = z.object({ - aws: z.nullable(z.array(z.lazy(() => DeploymentExtendAw$inboundSchema))) - .optional(), - azure: z.nullable(z.array(z.lazy(() => DeploymentExtendAzure$inboundSchema))) - .optional(), - gcp: z.nullable(z.array(z.lazy(() => DeploymentExtendGcp$inboundSchema))) - .optional(), + aws: z.nullable( + z.array(z.lazy(() => DeploymentPreparedStackExtendAw$inboundSchema)), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => DeploymentPreparedStackExtendAzure$inboundSchema)), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => DeploymentPreparedStackExtendGcp$inboundSchema)), + ).optional(), }); -export function deploymentExtendPlatformsFromJSON( +export function deploymentPreparedStackExtendPlatformsFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentExtendPlatforms$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentExtendPlatforms' from JSON`, + (x) => + DeploymentPreparedStackExtendPlatforms$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPreparedStackExtendPlatforms' from JSON`, ); } /** @internal */ -export const DeploymentExtend$inboundSchema: z.ZodType< - DeploymentExtend, +export const DeploymentPreparedStackExtend$inboundSchema: z.ZodType< + DeploymentPreparedStackExtend, unknown > = z.object({ description: z.string(), id: z.string(), - platforms: z.lazy(() => DeploymentExtendPlatforms$inboundSchema), + platforms: z.lazy(() => DeploymentPreparedStackExtendPlatforms$inboundSchema), }); -export function deploymentExtendFromJSON( +export function deploymentPreparedStackExtendFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentExtend$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentExtend' from JSON`, + (x) => DeploymentPreparedStackExtend$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPreparedStackExtend' from JSON`, ); } /** @internal */ -export const DeploymentExtendUnion$inboundSchema: z.ZodType< - DeploymentExtendUnion, +export const DeploymentPreparedStackExtendUnion$inboundSchema: z.ZodType< + DeploymentPreparedStackExtendUnion, unknown -> = z.union([z.lazy(() => DeploymentExtend$inboundSchema), z.string()]); +> = z.union([ + z.lazy(() => DeploymentPreparedStackExtend$inboundSchema), + z.string(), +]); -export function deploymentExtendUnionFromJSON( +export function deploymentPreparedStackExtendUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentExtendUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentExtendUnion' from JSON`, + (x) => + DeploymentPreparedStackExtendUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPreparedStackExtendUnion' from JSON`, ); } /** @internal */ -export const DeploymentManagement1$inboundSchema: z.ZodType< - DeploymentManagement1, +export const DeploymentPreparedStackManagement1$inboundSchema: z.ZodType< + DeploymentPreparedStackManagement1, unknown > = z.object({ extend: z.record( z.string(), - z.array( - z.union([z.lazy(() => DeploymentExtend$inboundSchema), z.string()]), - ), + z.array(z.union([ + z.lazy(() => DeploymentPreparedStackExtend$inboundSchema), + z.string(), + ])), ), }); -export function deploymentManagement1FromJSON( +export function deploymentPreparedStackManagement1FromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentManagement1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentManagement1' from JSON`, + (x) => + DeploymentPreparedStackManagement1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPreparedStackManagement1' from JSON`, ); } /** @internal */ -export const DeploymentManagementUnion$inboundSchema: z.ZodType< - DeploymentManagementUnion, +export const DeploymentPreparedStackManagementUnion$inboundSchema: z.ZodType< + DeploymentPreparedStackManagementUnion, unknown > = z.union([ - z.lazy(() => DeploymentManagement1$inboundSchema), - z.lazy(() => DeploymentManagement2$inboundSchema), - DeploymentManagementEnum$inboundSchema, + z.lazy(() => DeploymentPreparedStackManagement1$inboundSchema), + z.lazy(() => DeploymentPreparedStackManagement2$inboundSchema), + DeploymentPreparedStackManagementEnum$inboundSchema, ]); -export function deploymentManagementUnionFromJSON( +export function deploymentPreparedStackManagementUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentManagementUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentManagementUnion' from JSON`, + (x) => + DeploymentPreparedStackManagementUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPreparedStackManagementUnion' from JSON`, ); } /** @internal */ -export const DeploymentProfileAwResource$inboundSchema: z.ZodType< - DeploymentProfileAwResource, +export const DeploymentPreparedStackProfileAwResource$inboundSchema: z.ZodType< + DeploymentPreparedStackProfileAwResource, unknown > = z.object({ condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) @@ -6820,19 +11193,25 @@ export const DeploymentProfileAwResource$inboundSchema: z.ZodType< resources: z.array(z.string()), }); -export function deploymentProfileAwResourceFromJSON( +export function deploymentPreparedStackProfileAwResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPreparedStackProfileAwResource, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentProfileAwResource$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentProfileAwResource' from JSON`, + (x) => + DeploymentPreparedStackProfileAwResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPreparedStackProfileAwResource' from JSON`, ); } /** @internal */ -export const DeploymentProfileAwStack$inboundSchema: z.ZodType< - DeploymentProfileAwStack, +export const DeploymentPreparedStackProfileAwStack$inboundSchema: z.ZodType< + DeploymentPreparedStackProfileAwStack, unknown > = z.object({ condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) @@ -6840,43 +11219,52 @@ export const DeploymentProfileAwStack$inboundSchema: z.ZodType< resources: z.array(z.string()), }); -export function deploymentProfileAwStackFromJSON( +export function deploymentPreparedStackProfileAwStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentProfileAwStack$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentProfileAwStack' from JSON`, + (x) => + DeploymentPreparedStackProfileAwStack$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPreparedStackProfileAwStack' from JSON`, ); } /** @internal */ -export const DeploymentProfileAwBinding$inboundSchema: z.ZodType< - DeploymentProfileAwBinding, +export const DeploymentPreparedStackProfileAwBinding$inboundSchema: z.ZodType< + DeploymentPreparedStackProfileAwBinding, unknown > = z.object({ - resource: z.lazy(() => DeploymentProfileAwResource$inboundSchema).optional(), - stack: z.lazy(() => DeploymentProfileAwStack$inboundSchema).optional(), + resource: z.lazy(() => DeploymentPreparedStackProfileAwResource$inboundSchema) + .optional(), + stack: z.lazy(() => DeploymentPreparedStackProfileAwStack$inboundSchema) + .optional(), }); -export function deploymentProfileAwBindingFromJSON( +export function deploymentPreparedStackProfileAwBindingFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPreparedStackProfileAwBinding, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentProfileAwBinding$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentProfileAwBinding' from JSON`, + (x) => + DeploymentPreparedStackProfileAwBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPreparedStackProfileAwBinding' from JSON`, ); } /** @internal */ -export const DeploymentProfileEffect$inboundSchema: z.ZodEnum< - typeof DeploymentProfileEffect -> = z.enum(DeploymentProfileEffect); +export const DeploymentPreparedStackProfileEffect$inboundSchema: z.ZodEnum< + typeof DeploymentPreparedStackProfileEffect +> = z.enum(DeploymentPreparedStackProfileEffect); /** @internal */ -export const DeploymentProfileAwGrant$inboundSchema: z.ZodType< - DeploymentProfileAwGrant, +export const DeploymentPreparedStackProfileAwGrant$inboundSchema: z.ZodType< + DeploymentPreparedStackProfileAwGrant, unknown > = z.object({ actions: z.nullable(z.array(z.string())).optional(), @@ -6886,97 +11274,114 @@ export const DeploymentProfileAwGrant$inboundSchema: z.ZodType< residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function deploymentProfileAwGrantFromJSON( +export function deploymentPreparedStackProfileAwGrantFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentProfileAwGrant$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentProfileAwGrant' from JSON`, + (x) => + DeploymentPreparedStackProfileAwGrant$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPreparedStackProfileAwGrant' from JSON`, ); } /** @internal */ -export const DeploymentProfileAw$inboundSchema: z.ZodType< - DeploymentProfileAw, +export const DeploymentPreparedStackProfileAw$inboundSchema: z.ZodType< + DeploymentPreparedStackProfileAw, unknown > = z.object({ - binding: z.lazy(() => DeploymentProfileAwBinding$inboundSchema), + binding: z.lazy(() => DeploymentPreparedStackProfileAwBinding$inboundSchema), description: z.nullable(z.string()).optional(), - effect: DeploymentProfileEffect$inboundSchema.optional(), - grant: z.lazy(() => DeploymentProfileAwGrant$inboundSchema), + effect: DeploymentPreparedStackProfileEffect$inboundSchema.optional(), + grant: z.lazy(() => DeploymentPreparedStackProfileAwGrant$inboundSchema), label: z.nullable(z.string()).optional(), }); -export function deploymentProfileAwFromJSON( +export function deploymentPreparedStackProfileAwFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentProfileAw$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentProfileAw' from JSON`, + (x) => DeploymentPreparedStackProfileAw$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPreparedStackProfileAw' from JSON`, ); } /** @internal */ -export const DeploymentProfileAzureResource$inboundSchema: z.ZodType< - DeploymentProfileAzureResource, - unknown -> = z.object({ - scope: z.string(), -}); +export const DeploymentPreparedStackProfileAzureResource$inboundSchema: + z.ZodType = z.object({ + scope: z.string(), + }); -export function deploymentProfileAzureResourceFromJSON( +export function deploymentPreparedStackProfileAzureResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPreparedStackProfileAzureResource, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentProfileAzureResource$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentProfileAzureResource' from JSON`, + (x) => + DeploymentPreparedStackProfileAzureResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPreparedStackProfileAzureResource' from JSON`, ); } /** @internal */ -export const DeploymentProfileAzureStack$inboundSchema: z.ZodType< - DeploymentProfileAzureStack, +export const DeploymentPreparedStackProfileAzureStack$inboundSchema: z.ZodType< + DeploymentPreparedStackProfileAzureStack, unknown > = z.object({ scope: z.string(), }); -export function deploymentProfileAzureStackFromJSON( +export function deploymentPreparedStackProfileAzureStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPreparedStackProfileAzureStack, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentProfileAzureStack$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentProfileAzureStack' from JSON`, + (x) => + DeploymentPreparedStackProfileAzureStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPreparedStackProfileAzureStack' from JSON`, ); } /** @internal */ -export const DeploymentProfileAzureBinding$inboundSchema: z.ZodType< - DeploymentProfileAzureBinding, - unknown -> = z.object({ - resource: z.lazy(() => DeploymentProfileAzureResource$inboundSchema) - .optional(), - stack: z.lazy(() => DeploymentProfileAzureStack$inboundSchema).optional(), -}); +export const DeploymentPreparedStackProfileAzureBinding$inboundSchema: + z.ZodType = z.object({ + resource: z.lazy(() => + DeploymentPreparedStackProfileAzureResource$inboundSchema + ).optional(), + stack: z.lazy(() => DeploymentPreparedStackProfileAzureStack$inboundSchema) + .optional(), + }); -export function deploymentProfileAzureBindingFromJSON( +export function deploymentPreparedStackProfileAzureBindingFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPreparedStackProfileAzureBinding, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentProfileAzureBinding$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentProfileAzureBinding' from JSON`, + (x) => + DeploymentPreparedStackProfileAzureBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPreparedStackProfileAzureBinding' from JSON`, ); } /** @internal */ -export const DeploymentProfileAzureGrant$inboundSchema: z.ZodType< - DeploymentProfileAzureGrant, +export const DeploymentPreparedStackProfileAzureGrant$inboundSchema: z.ZodType< + DeploymentPreparedStackProfileAzureGrant, unknown > = z.object({ actions: z.nullable(z.array(z.string())).optional(), @@ -6986,191 +11391,231 @@ export const DeploymentProfileAzureGrant$inboundSchema: z.ZodType< residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function deploymentProfileAzureGrantFromJSON( +export function deploymentPreparedStackProfileAzureGrantFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPreparedStackProfileAzureGrant, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentProfileAzureGrant$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentProfileAzureGrant' from JSON`, + (x) => + DeploymentPreparedStackProfileAzureGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPreparedStackProfileAzureGrant' from JSON`, ); } /** @internal */ -export const DeploymentProfileAzure$inboundSchema: z.ZodType< - DeploymentProfileAzure, +export const DeploymentPreparedStackProfileAzure$inboundSchema: z.ZodType< + DeploymentPreparedStackProfileAzure, unknown > = z.object({ - binding: z.lazy(() => DeploymentProfileAzureBinding$inboundSchema), + binding: z.lazy(() => + DeploymentPreparedStackProfileAzureBinding$inboundSchema + ), description: z.nullable(z.string()).optional(), - grant: z.lazy(() => DeploymentProfileAzureGrant$inboundSchema), + grant: z.lazy(() => DeploymentPreparedStackProfileAzureGrant$inboundSchema), label: z.nullable(z.string()).optional(), }); -export function deploymentProfileAzureFromJSON( +export function deploymentPreparedStackProfileAzureFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentProfileAzure$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentProfileAzure' from JSON`, + (x) => + DeploymentPreparedStackProfileAzure$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPreparedStackProfileAzure' from JSON`, ); } /** @internal */ -export const DeploymentProfileConditionResource$inboundSchema: z.ZodType< - DeploymentProfileConditionResource, - unknown -> = z.object({ - expression: z.string(), - title: z.string(), -}); +export const DeploymentPreparedStackProfileConditionResource$inboundSchema: + z.ZodType = z + .object({ + expression: z.string(), + title: z.string(), + }); -export function deploymentProfileConditionResourceFromJSON( +export function deploymentPreparedStackProfileConditionResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPreparedStackProfileConditionResource, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentProfileConditionResource$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentProfileConditionResource' from JSON`, + DeploymentPreparedStackProfileConditionResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPreparedStackProfileConditionResource' from JSON`, ); } /** @internal */ -export const DeploymentProfileResourceConditionUnion$inboundSchema: z.ZodType< - DeploymentProfileResourceConditionUnion, - unknown -> = z.union([ - z.lazy(() => DeploymentProfileConditionResource$inboundSchema), - z.any(), -]); +export const DeploymentPreparedStackProfileResourceConditionUnion$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => + DeploymentPreparedStackProfileConditionResource$inboundSchema + ), + z.any(), + ]); -export function deploymentProfileResourceConditionUnionFromJSON( +export function deploymentPreparedStackProfileResourceConditionUnionFromJSON( jsonString: string, ): SafeParseResult< - DeploymentProfileResourceConditionUnion, + DeploymentPreparedStackProfileResourceConditionUnion, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentProfileResourceConditionUnion$inboundSchema.parse( + DeploymentPreparedStackProfileResourceConditionUnion$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'DeploymentProfileResourceConditionUnion' from JSON`, + `Failed to parse 'DeploymentPreparedStackProfileResourceConditionUnion' from JSON`, ); } /** @internal */ -export const DeploymentProfileGcpResource$inboundSchema: z.ZodType< - DeploymentProfileGcpResource, +export const DeploymentPreparedStackProfileGcpResource$inboundSchema: z.ZodType< + DeploymentPreparedStackProfileGcpResource, unknown > = z.object({ condition: z.nullable( z.union([ - z.lazy(() => DeploymentProfileConditionResource$inboundSchema), + z.lazy(() => + DeploymentPreparedStackProfileConditionResource$inboundSchema + ), z.any(), ]), ).optional(), scope: z.string(), }); -export function deploymentProfileGcpResourceFromJSON( +export function deploymentPreparedStackProfileGcpResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPreparedStackProfileGcpResource, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentProfileGcpResource$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentProfileGcpResource' from JSON`, + (x) => + DeploymentPreparedStackProfileGcpResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPreparedStackProfileGcpResource' from JSON`, ); } /** @internal */ -export const DeploymentProfileConditionStack$inboundSchema: z.ZodType< - DeploymentProfileConditionStack, - unknown -> = z.object({ - expression: z.string(), - title: z.string(), -}); +export const DeploymentPreparedStackProfileConditionStack$inboundSchema: + z.ZodType = z.object({ + expression: z.string(), + title: z.string(), + }); -export function deploymentProfileConditionStackFromJSON( +export function deploymentPreparedStackProfileConditionStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPreparedStackProfileConditionStack, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentProfileConditionStack$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentProfileConditionStack' from JSON`, + (x) => + DeploymentPreparedStackProfileConditionStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPreparedStackProfileConditionStack' from JSON`, ); } /** @internal */ -export const DeploymentProfileStackConditionUnion$inboundSchema: z.ZodType< - DeploymentProfileStackConditionUnion, - unknown -> = z.union([ - z.lazy(() => DeploymentProfileConditionStack$inboundSchema), - z.any(), -]); +export const DeploymentPreparedStackProfileStackConditionUnion$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => DeploymentPreparedStackProfileConditionStack$inboundSchema), + z.any(), + ]); -export function deploymentProfileStackConditionUnionFromJSON( +export function deploymentPreparedStackProfileStackConditionUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPreparedStackProfileStackConditionUnion, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentProfileStackConditionUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentProfileStackConditionUnion' from JSON`, + DeploymentPreparedStackProfileStackConditionUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPreparedStackProfileStackConditionUnion' from JSON`, ); } /** @internal */ -export const DeploymentProfileGcpStack$inboundSchema: z.ZodType< - DeploymentProfileGcpStack, +export const DeploymentPreparedStackProfileGcpStack$inboundSchema: z.ZodType< + DeploymentPreparedStackProfileGcpStack, unknown > = z.object({ condition: z.nullable( z.union([ - z.lazy(() => DeploymentProfileConditionStack$inboundSchema), + z.lazy(() => DeploymentPreparedStackProfileConditionStack$inboundSchema), z.any(), ]), ).optional(), scope: z.string(), }); -export function deploymentProfileGcpStackFromJSON( +export function deploymentPreparedStackProfileGcpStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentProfileGcpStack$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentProfileGcpStack' from JSON`, + (x) => + DeploymentPreparedStackProfileGcpStack$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPreparedStackProfileGcpStack' from JSON`, ); } /** @internal */ -export const DeploymentProfileGcpBinding$inboundSchema: z.ZodType< - DeploymentProfileGcpBinding, +export const DeploymentPreparedStackProfileGcpBinding$inboundSchema: z.ZodType< + DeploymentPreparedStackProfileGcpBinding, unknown > = z.object({ - resource: z.lazy(() => DeploymentProfileGcpResource$inboundSchema).optional(), - stack: z.lazy(() => DeploymentProfileGcpStack$inboundSchema).optional(), + resource: z.lazy(() => + DeploymentPreparedStackProfileGcpResource$inboundSchema + ).optional(), + stack: z.lazy(() => DeploymentPreparedStackProfileGcpStack$inboundSchema) + .optional(), }); -export function deploymentProfileGcpBindingFromJSON( +export function deploymentPreparedStackProfileGcpBindingFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPreparedStackProfileGcpBinding, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentProfileGcpBinding$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentProfileGcpBinding' from JSON`, + (x) => + DeploymentPreparedStackProfileGcpBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPreparedStackProfileGcpBinding' from JSON`, ); } /** @internal */ -export const DeploymentProfileGcpGrant$inboundSchema: z.ZodType< - DeploymentProfileGcpGrant, +export const DeploymentPreparedStackProfileGcpGrant$inboundSchema: z.ZodType< + DeploymentPreparedStackProfileGcpGrant, unknown > = z.object({ actions: z.nullable(z.array(z.string())).optional(), @@ -7180,124 +11625,144 @@ export const DeploymentProfileGcpGrant$inboundSchema: z.ZodType< residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function deploymentProfileGcpGrantFromJSON( +export function deploymentPreparedStackProfileGcpGrantFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentProfileGcpGrant$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentProfileGcpGrant' from JSON`, + (x) => + DeploymentPreparedStackProfileGcpGrant$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPreparedStackProfileGcpGrant' from JSON`, ); } /** @internal */ -export const DeploymentProfileGcp$inboundSchema: z.ZodType< - DeploymentProfileGcp, +export const DeploymentPreparedStackProfileGcp$inboundSchema: z.ZodType< + DeploymentPreparedStackProfileGcp, unknown > = z.object({ - binding: z.lazy(() => DeploymentProfileGcpBinding$inboundSchema), + binding: z.lazy(() => DeploymentPreparedStackProfileGcpBinding$inboundSchema), description: z.nullable(z.string()).optional(), - grant: z.lazy(() => DeploymentProfileGcpGrant$inboundSchema), + grant: z.lazy(() => DeploymentPreparedStackProfileGcpGrant$inboundSchema), label: z.nullable(z.string()).optional(), }); -export function deploymentProfileGcpFromJSON( +export function deploymentPreparedStackProfileGcpFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentProfileGcp$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentProfileGcp' from JSON`, + (x) => DeploymentPreparedStackProfileGcp$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPreparedStackProfileGcp' from JSON`, ); } /** @internal */ -export const DeploymentProfilePlatforms$inboundSchema: z.ZodType< - DeploymentProfilePlatforms, +export const DeploymentPreparedStackProfilePlatforms$inboundSchema: z.ZodType< + DeploymentPreparedStackProfilePlatforms, unknown > = z.object({ - aws: z.nullable(z.array(z.lazy(() => DeploymentProfileAw$inboundSchema))) - .optional(), - azure: z.nullable(z.array(z.lazy(() => DeploymentProfileAzure$inboundSchema))) - .optional(), - gcp: z.nullable(z.array(z.lazy(() => DeploymentProfileGcp$inboundSchema))) - .optional(), + aws: z.nullable( + z.array(z.lazy(() => DeploymentPreparedStackProfileAw$inboundSchema)), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => DeploymentPreparedStackProfileAzure$inboundSchema)), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => DeploymentPreparedStackProfileGcp$inboundSchema)), + ).optional(), }); -export function deploymentProfilePlatformsFromJSON( +export function deploymentPreparedStackProfilePlatformsFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentPreparedStackProfilePlatforms, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentProfilePlatforms$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentProfilePlatforms' from JSON`, + (x) => + DeploymentPreparedStackProfilePlatforms$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentPreparedStackProfilePlatforms' from JSON`, ); } /** @internal */ -export const DeploymentProfile$inboundSchema: z.ZodType< - DeploymentProfile, +export const DeploymentPreparedStackProfile$inboundSchema: z.ZodType< + DeploymentPreparedStackProfile, unknown > = z.object({ description: z.string(), id: z.string(), - platforms: z.lazy(() => DeploymentProfilePlatforms$inboundSchema), + platforms: z.lazy(() => + DeploymentPreparedStackProfilePlatforms$inboundSchema + ), }); -export function deploymentProfileFromJSON( +export function deploymentPreparedStackProfileFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentProfile$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentProfile' from JSON`, + (x) => DeploymentPreparedStackProfile$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPreparedStackProfile' from JSON`, ); } /** @internal */ -export const DeploymentProfileUnion$inboundSchema: z.ZodType< - DeploymentProfileUnion, +export const DeploymentPreparedStackProfileUnion$inboundSchema: z.ZodType< + DeploymentPreparedStackProfileUnion, unknown -> = z.union([z.lazy(() => DeploymentProfile$inboundSchema), z.string()]); +> = z.union([ + z.lazy(() => DeploymentPreparedStackProfile$inboundSchema), + z.string(), +]); -export function deploymentProfileUnionFromJSON( +export function deploymentPreparedStackProfileUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentProfileUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentProfileUnion' from JSON`, + (x) => + DeploymentPreparedStackProfileUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPreparedStackProfileUnion' from JSON`, ); } /** @internal */ -export const DeploymentPermissions$inboundSchema: z.ZodType< - DeploymentPermissions, +export const DeploymentPreparedStackPermissions$inboundSchema: z.ZodType< + DeploymentPreparedStackPermissions, unknown > = z.object({ management: z.union([ - z.lazy(() => DeploymentManagement1$inboundSchema), - z.lazy(() => DeploymentManagement2$inboundSchema), - DeploymentManagementEnum$inboundSchema, + z.lazy(() => DeploymentPreparedStackManagement1$inboundSchema), + z.lazy(() => DeploymentPreparedStackManagement2$inboundSchema), + DeploymentPreparedStackManagementEnum$inboundSchema, ]).optional(), profiles: z.record( z.string(), z.record( z.string(), z.array( - z.union([z.lazy(() => DeploymentProfile$inboundSchema), z.string()]), + z.union([ + z.lazy(() => DeploymentPreparedStackProfile$inboundSchema), + z.string(), + ]), ), ), ), }); -export function deploymentPermissionsFromJSON( +export function deploymentPreparedStackPermissionsFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DeploymentPermissions$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentPermissions' from JSON`, + (x) => + DeploymentPreparedStackPermissions$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPreparedStackPermissions' from JSON`, ); } @@ -7357,6 +11822,7 @@ export const DeploymentPreparedStackResources$inboundSchema: z.ZodType< dependencies: z.array( z.lazy(() => DeploymentPreparedStackDependency$inboundSchema), ), + enabledWhen: z.nullable(z.string()).optional(), lifecycle: DeploymentPreparedStackLifecycle$inboundSchema, remoteAccess: z.boolean().optional(), }); @@ -7372,9 +11838,9 @@ export function deploymentPreparedStackResourcesFromJSON( } /** @internal */ -export const DeploymentSupportedPlatform$inboundSchema: z.ZodEnum< - typeof DeploymentSupportedPlatform -> = z.enum(DeploymentSupportedPlatform); +export const DeploymentPreparedStackSupportedPlatform$inboundSchema: z.ZodEnum< + typeof DeploymentPreparedStackSupportedPlatform +> = z.enum(DeploymentPreparedStackSupportedPlatform); /** @internal */ export const DeploymentPreparedStack$inboundSchema: z.ZodType< @@ -7382,14 +11848,16 @@ export const DeploymentPreparedStack$inboundSchema: z.ZodType< unknown > = z.object({ id: z.string(), - inputs: z.array(z.lazy(() => DeploymentInput$inboundSchema)).optional(), - permissions: z.lazy(() => DeploymentPermissions$inboundSchema).optional(), + inputs: z.array(z.lazy(() => DeploymentPreparedStackInput$inboundSchema)) + .optional(), + permissions: z.lazy(() => DeploymentPreparedStackPermissions$inboundSchema) + .optional(), resources: z.record( z.string(), z.lazy(() => DeploymentPreparedStackResources$inboundSchema), ), supportedPlatforms: z.nullable( - z.array(DeploymentSupportedPlatform$inboundSchema), + z.array(DeploymentPreparedStackSupportedPlatform$inboundSchema), ).optional(), }); @@ -7419,17 +11887,82 @@ export function deploymentPreparedStackUnionFromJSON( ); } +/** @internal */ +export const DeploymentSetupUpdateAuthorization$inboundSchema: z.ZodType< + DeploymentSetupUpdateAuthorization, + unknown +> = z.object({ + baselineFrozenDigest: z.string(), + nonce: z.string(), + releaseId: z.string(), + setupFingerprint: z.string(), + setupFingerprintVersion: z.int(), + setupTarget: z.string(), + targetFrozenDigest: z.string(), +}); + +export function deploymentSetupUpdateAuthorizationFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentSetupUpdateAuthorization$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentSetupUpdateAuthorization' from JSON`, + ); +} + +/** @internal */ +export const DeploymentSetupUpdateAuthorizationUnion$inboundSchema: z.ZodType< + DeploymentSetupUpdateAuthorizationUnion, + unknown +> = z.union([ + z.lazy(() => DeploymentSetupUpdateAuthorization$inboundSchema), + z.any(), +]); + +export function deploymentSetupUpdateAuthorizationUnionFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentSetupUpdateAuthorizationUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentSetupUpdateAuthorizationUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentSetupUpdateAuthorizationUnion' from JSON`, + ); +} + /** @internal */ export const DeploymentRuntimeMetadata$inboundSchema: z.ZodType< DeploymentRuntimeMetadata, unknown > = z.object({ + initialSetupAuthority: DeploymentInitialSetupAuthority$inboundSchema + .optional(), lastSyncedEnvVarsHash: z.nullable(z.string()).optional(), lastSyncedSecretNames: z.array(z.string()).optional(), + pendingPreparedStack: z.nullable( + z.union([ + z.lazy(() => DeploymentPendingPreparedStack$inboundSchema), + z.any(), + ]), + ).optional(), + persistedGateAnswers: z.record(z.string(), z.boolean()).optional(), preparedStack: z.nullable( z.union([z.lazy(() => DeploymentPreparedStack$inboundSchema), z.any()]), ).optional(), registryAccessGranted: z.boolean().optional(), + setupUpdateAuthorization: z.nullable( + z.union([ + z.lazy(() => DeploymentSetupUpdateAuthorization$inboundSchema), + z.any(), + ]), + ).optional(), }); export function deploymentRuntimeMetadataFromJSON( @@ -7519,6 +12052,26 @@ export function deploymentCurrentEnvironmentVariablesFromJSON( ); } +/** @internal */ +export const DeploymentUpdateState$inboundSchema: z.ZodType< + DeploymentUpdateState, + unknown +> = z.object({ + active: z.nullable(DeploymentUpdateOperationSummary$inboundSchema), + next: z.nullable(DeploymentUpdateOperationSummary$inboundSchema), + latest: z.nullable(DeploymentUpdateOperationSummary$inboundSchema), +}); + +export function deploymentUpdateStateFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentUpdateState$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentUpdateState' from JSON`, + ); +} + /** @internal */ export const Deployment$inboundSchema: z.ZodType = z .object({ @@ -7552,6 +12105,7 @@ export const Deployment$inboundSchema: z.ZodType = z currentReleaseId: z.nullable(z.string()).optional(), desiredReleaseId: z.nullable(z.string()).optional(), pinnedReleaseId: z.nullable(z.string()).optional(), + releaseChannel: z.string(), importSource: z.nullable(DeploymentImportSource$inboundSchema).optional(), setupMethod: z.nullable(DeploymentSetupMethod1$inboundSchema).optional(), setupMetadata: z.nullable(z.record(z.string(), z.nullable(z.any()))) @@ -7578,6 +12132,7 @@ export const Deployment$inboundSchema: z.ZodType = z currentEnvironmentVariables: z.nullable( z.lazy(() => DeploymentCurrentEnvironmentVariables$inboundSchema), ).optional(), + updateState: z.lazy(() => DeploymentUpdateState$inboundSchema).optional(), createdAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), updatedAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), managerId: z.string(), diff --git a/client-sdks/platform/typescript/src/models/deploymentconnectioninfo.ts b/client-sdks/platform/typescript/src/models/deploymentconnectioninfo.ts index ac3c0dd3e..7b04b32ed 100644 --- a/client-sdks/platform/typescript/src/models/deploymentconnectioninfo.ts +++ b/client-sdks/platform/typescript/src/models/deploymentconnectioninfo.ts @@ -19,9 +19,17 @@ export type Arc = { deploymentId: string; }; +export const Protocol = { + Http: "http", + Tcp: "tcp", +} as const; +export type Protocol = ClosedEnum; + export type PublicEndpoints = { url: string; - host?: string | undefined; + protocol: Protocol; + host: string; + port: number; wildcardHost?: string | undefined; }; @@ -114,13 +122,20 @@ export function arcFromJSON( ); } +/** @internal */ +export const Protocol$inboundSchema: z.ZodEnum = z.enum( + Protocol, +); + /** @internal */ export const PublicEndpoints$inboundSchema: z.ZodType< PublicEndpoints, unknown > = z.object({ url: z.string(), - host: z.string().optional(), + protocol: Protocol$inboundSchema, + host: z.string(), + port: z.int(), wildcardHost: z.string().optional(), }); diff --git a/client-sdks/platform/typescript/src/models/deploymentdetailresponse.ts b/client-sdks/platform/typescript/src/models/deploymentdetailresponse.ts index 788422efb..355981d5c 100644 --- a/client-sdks/platform/typescript/src/models/deploymentdetailresponse.ts +++ b/client-sdks/platform/typescript/src/models/deploymentdetailresponse.ts @@ -26,6 +26,10 @@ import { DeploymentReleaseInfo, DeploymentReleaseInfo$inboundSchema, } from "./deploymentreleaseinfo.js"; +import { + DeploymentUpdateOperationSummary, + DeploymentUpdateOperationSummary$inboundSchema, +} from "./deploymentupdateoperationsummary.js"; import { EnvironmentVariableConfig, EnvironmentVariableConfig$inboundSchema, @@ -242,7 +246,33 @@ export type DeploymentDetailResponseEnvironmentInfoUnion = | DeploymentDetailResponseEnvironmentInfoTest | any; +/** + * Failure-domain policy selected for a compute pool. + */ +export type DeploymentDetailResponseFailureDomains2 = { + /** + * Concrete provider domains selected during setup. + * + * @remarks + * Empty delegates deterministic selection to the provider setup implementation. + */ + selectedFailureDomains?: Array | undefined; + /** + * Number of distinct failure domains across which new stateful replicas may be spread. + */ + spread: number; +}; + +export type DeploymentDetailResponseFailureDomainsUnion2 = + | DeploymentDetailResponseFailureDomains2 + | any; + export type DeploymentDetailResponsePoolsAutoscale = { + failureDomains?: + | DeploymentDetailResponseFailureDomains2 + | any + | null + | undefined; /** * Provider machine type selected for this deployment. */ @@ -258,7 +288,33 @@ export type DeploymentDetailResponsePoolsAutoscale = { mode: "autoscale"; }; +/** + * Failure-domain policy selected for a compute pool. + */ +export type DeploymentDetailResponseFailureDomains1 = { + /** + * Concrete provider domains selected during setup. + * + * @remarks + * Empty delegates deterministic selection to the provider setup implementation. + */ + selectedFailureDomains?: Array | undefined; + /** + * Number of distinct failure domains across which new stateful replicas may be spread. + */ + spread: number; +}; + +export type DeploymentDetailResponseFailureDomainsUnion1 = + | DeploymentDetailResponseFailureDomains1 + | any; + export type DeploymentDetailResponsePoolsFixed = { + failureDomains?: + | DeploymentDetailResponseFailureDomains1 + | any + | null + | undefined; /** * Provider machine type selected for this deployment. */ @@ -1712,95 +1768,106 @@ export type DeploymentDetailResponseStackState = { resources: { [k: string]: DeploymentDetailResponseStackStateResources }; }; -export const DeploymentDetailResponseTypeStringList = { - StringList: "stringList", +/** + * Actor that owns structural work during the initial setup phase. + */ +export const DeploymentDetailResponseInitialSetupAuthority = { + ImportedHandoff: "importedHandoff", + DirectSetup: "directSetup", } as const; -export type DeploymentDetailResponseTypeStringList = ClosedEnum< - typeof DeploymentDetailResponseTypeStringList +/** + * Actor that owns structural work during the initial setup phase. + */ +export type DeploymentDetailResponseInitialSetupAuthority = ClosedEnum< + typeof DeploymentDetailResponseInitialSetupAuthority >; -export type DeploymentDetailResponseDefaultStringList = { - type: DeploymentDetailResponseTypeStringList; +export const DeploymentDetailResponsePendingPreparedStackTypeStringList = { + StringList: "stringList", +} as const; +export type DeploymentDetailResponsePendingPreparedStackTypeStringList = + ClosedEnum; + +export type DeploymentDetailResponsePendingPreparedStackDefaultStringList = { + type: DeploymentDetailResponsePendingPreparedStackTypeStringList; /** * String list default. */ value: Array; }; -export const DeploymentDetailResponseTypeBoolean = { +export const DeploymentDetailResponsePendingPreparedStackTypeBoolean = { Boolean: "boolean", } as const; -export type DeploymentDetailResponseTypeBoolean = ClosedEnum< - typeof DeploymentDetailResponseTypeBoolean ->; +export type DeploymentDetailResponsePendingPreparedStackTypeBoolean = + ClosedEnum; -export type DeploymentDetailResponseDefaultBoolean = { - type: DeploymentDetailResponseTypeBoolean; +export type DeploymentDetailResponsePendingPreparedStackDefaultBoolean = { + type: DeploymentDetailResponsePendingPreparedStackTypeBoolean; /** * Boolean default. */ value: boolean; }; -export const DeploymentDetailResponseTypeNumber = { +export const DeploymentDetailResponsePendingPreparedStackTypeNumber = { Number: "number", } as const; -export type DeploymentDetailResponseTypeNumber = ClosedEnum< - typeof DeploymentDetailResponseTypeNumber +export type DeploymentDetailResponsePendingPreparedStackTypeNumber = ClosedEnum< + typeof DeploymentDetailResponsePendingPreparedStackTypeNumber >; -export type DeploymentDetailResponseDefaultNumber = { - type: DeploymentDetailResponseTypeNumber; +export type DeploymentDetailResponsePendingPreparedStackDefaultNumber = { + type: DeploymentDetailResponsePendingPreparedStackTypeNumber; /** * Number default. */ value: string; }; -export const DeploymentDetailResponseTypeString = { +export const DeploymentDetailResponsePendingPreparedStackTypeString = { String: "string", } as const; -export type DeploymentDetailResponseTypeString = ClosedEnum< - typeof DeploymentDetailResponseTypeString +export type DeploymentDetailResponsePendingPreparedStackTypeString = ClosedEnum< + typeof DeploymentDetailResponsePendingPreparedStackTypeString >; -export type DeploymentDetailResponseDefaultString = { - type: DeploymentDetailResponseTypeString; +export type DeploymentDetailResponsePendingPreparedStackDefaultString = { + type: DeploymentDetailResponsePendingPreparedStackTypeString; /** * String default. */ value: string; }; -export type DeploymentDetailResponseDefaultUnion = - | DeploymentDetailResponseDefaultString - | DeploymentDetailResponseDefaultNumber - | DeploymentDetailResponseDefaultBoolean - | DeploymentDetailResponseDefaultStringList +export type DeploymentDetailResponsePendingPreparedStackDefaultUnion = + | DeploymentDetailResponsePendingPreparedStackDefaultString + | DeploymentDetailResponsePendingPreparedStackDefaultNumber + | DeploymentDetailResponsePendingPreparedStackDefaultBoolean + | DeploymentDetailResponsePendingPreparedStackDefaultStringList | any; /** * Environment variable handling for a stack input mapping. */ -export const DeploymentDetailResponseTypeEnvEnum = { +export const DeploymentDetailResponsePendingPreparedStackTypeEnvEnum = { Plain: "plain", Secret: "secret", } as const; /** * Environment variable handling for a stack input mapping. */ -export type DeploymentDetailResponseTypeEnvEnum = ClosedEnum< - typeof DeploymentDetailResponseTypeEnvEnum ->; +export type DeploymentDetailResponsePendingPreparedStackTypeEnvEnum = + ClosedEnum; -export type DeploymentDetailResponseTypeUnion = - | DeploymentDetailResponseTypeEnvEnum +export type DeploymentDetailResponsePendingPreparedStackTypeUnion = + | DeploymentDetailResponsePendingPreparedStackTypeEnvEnum | any; /** * How a resolved stack input is injected into runtime environment variables. */ -export type DeploymentDetailResponseEnv = { +export type DeploymentDetailResponsePendingPreparedStackEnv = { /** * Environment variable name. */ @@ -1809,13 +1876,17 @@ export type DeploymentDetailResponseEnv = { * Target resource IDs or patterns. None means every env-capable resource. */ targetResources?: Array | null | undefined; - type?: DeploymentDetailResponseTypeEnvEnum | any | null | undefined; + type?: + | DeploymentDetailResponsePendingPreparedStackTypeEnvEnum + | any + | null + | undefined; }; /** * Primitive stack input kind. */ -export const DeploymentDetailResponseKind = { +export const DeploymentDetailResponsePendingPreparedStackKind = { String: "string", Secret: "secret", Number: "number", @@ -1827,14 +1898,14 @@ export const DeploymentDetailResponseKind = { /** * Primitive stack input kind. */ -export type DeploymentDetailResponseKind = ClosedEnum< - typeof DeploymentDetailResponseKind +export type DeploymentDetailResponsePendingPreparedStackKind = ClosedEnum< + typeof DeploymentDetailResponsePendingPreparedStackKind >; /** * Represents the target cloud platform. */ -export const DeploymentDetailResponsePreparedStackPlatform = { +export const DeploymentDetailResponsePendingPreparedStackPlatform = { Aws: "aws", Gcp: "gcp", Azure: "azure", @@ -1846,28 +1917,28 @@ export const DeploymentDetailResponsePreparedStackPlatform = { /** * Represents the target cloud platform. */ -export type DeploymentDetailResponsePreparedStackPlatform = ClosedEnum< - typeof DeploymentDetailResponsePreparedStackPlatform +export type DeploymentDetailResponsePendingPreparedStackPlatform = ClosedEnum< + typeof DeploymentDetailResponsePendingPreparedStackPlatform >; /** * Who can provide a stack input value. */ -export const DeploymentDetailResponseProvidedBy = { +export const DeploymentDetailResponsePendingPreparedStackProvidedBy = { Developer: "developer", Deployer: "deployer", } as const; /** * Who can provide a stack input value. */ -export type DeploymentDetailResponseProvidedBy = ClosedEnum< - typeof DeploymentDetailResponseProvidedBy +export type DeploymentDetailResponsePendingPreparedStackProvidedBy = ClosedEnum< + typeof DeploymentDetailResponsePendingPreparedStackProvidedBy >; /** * Portable stack input validation constraints. */ -export type DeploymentDetailResponseValidation = { +export type DeploymentDetailResponsePendingPreparedStackValidation = { /** * Semantic format hint such as url. */ @@ -1906,19 +1977,19 @@ export type DeploymentDetailResponseValidation = { values?: Array | null | undefined; }; -export type DeploymentDetailResponseValidationUnion = - | DeploymentDetailResponseValidation +export type DeploymentDetailResponsePendingPreparedStackValidationUnion = + | DeploymentDetailResponsePendingPreparedStackValidation | any; /** * Stack input definition serialized into a release stack. */ -export type DeploymentDetailResponseInput = { +export type DeploymentDetailResponsePendingPreparedStackInput = { default?: - | DeploymentDetailResponseDefaultString - | DeploymentDetailResponseDefaultNumber - | DeploymentDetailResponseDefaultBoolean - | DeploymentDetailResponseDefaultStringList + | DeploymentDetailResponsePendingPreparedStackDefaultString + | DeploymentDetailResponsePendingPreparedStackDefaultNumber + | DeploymentDetailResponsePendingPreparedStackDefaultBoolean + | DeploymentDetailResponsePendingPreparedStackDefaultStringList | any | null | undefined; @@ -1929,7 +2000,7 @@ export type DeploymentDetailResponseInput = { /** * Runtime env-var mappings for v1 input resolution. */ - env?: Array | undefined; + env?: Array | undefined; /** * Stable input ID used by CLI/API calls. */ @@ -1937,7 +2008,7 @@ export type DeploymentDetailResponseInput = { /** * Primitive stack input kind. */ - kind: DeploymentDetailResponseKind; + kind: DeploymentDetailResponsePendingPreparedStackKind; /** * Human-facing field label. */ @@ -1950,31 +2021,34 @@ export type DeploymentDetailResponseInput = { * Platforms where this input applies. */ platforms?: - | Array + | Array | null | undefined; /** * Who can provide this value. */ - providedBy: Array; + providedBy: Array; /** * Whether a resolved value is required before deployment can proceed. */ required: boolean; - validation?: DeploymentDetailResponseValidation | any | null | undefined; + validation?: + | DeploymentDetailResponsePendingPreparedStackValidation + | any + | null + | undefined; }; -export const DeploymentDetailResponseManagementEnum = { +export const DeploymentDetailResponsePendingPreparedStackManagementEnum = { Auto: "auto", } as const; -export type DeploymentDetailResponseManagementEnum = ClosedEnum< - typeof DeploymentDetailResponseManagementEnum ->; +export type DeploymentDetailResponsePendingPreparedStackManagementEnum = + ClosedEnum; /** * AWS-specific binding specification */ -export type DeploymentDetailResponseOverrideAwResource = { +export type DeploymentDetailResponsePendingPreparedStackOverrideAwResource = { /** * Optional condition for additional filtering (rare) */ @@ -1988,7 +2062,7 @@ export type DeploymentDetailResponseOverrideAwResource = { /** * AWS-specific binding specification */ -export type DeploymentDetailResponseOverrideAwStack = { +export type DeploymentDetailResponsePendingPreparedStackOverrideAwStack = { /** * Optional condition for additional filtering (rare) */ @@ -2002,35 +2076,38 @@ export type DeploymentDetailResponseOverrideAwStack = { /** * Generic binding configuration for permissions */ -export type DeploymentDetailResponseOverrideAwBinding = { +export type DeploymentDetailResponsePendingPreparedStackOverrideAwBinding = { /** * AWS-specific binding specification */ - resource?: DeploymentDetailResponseOverrideAwResource | undefined; + resource?: + | DeploymentDetailResponsePendingPreparedStackOverrideAwResource + | undefined; /** * AWS-specific binding specification */ - stack?: DeploymentDetailResponseOverrideAwStack | undefined; + stack?: + | DeploymentDetailResponsePendingPreparedStackOverrideAwStack + | undefined; }; /** * IAM effect. Defaults to Allow. */ -export const DeploymentDetailResponseOverrideEffect = { +export const DeploymentDetailResponsePendingPreparedStackOverrideEffect = { Allow: "Allow", Deny: "Deny", } as const; /** * IAM effect. Defaults to Allow. */ -export type DeploymentDetailResponseOverrideEffect = ClosedEnum< - typeof DeploymentDetailResponseOverrideEffect ->; +export type DeploymentDetailResponsePendingPreparedStackOverrideEffect = + ClosedEnum; /** * Grant permissions for a specific cloud platform */ -export type DeploymentDetailResponseOverrideAwGrant = { +export type DeploymentDetailResponsePendingPreparedStackOverrideAwGrant = { /** * AWS IAM actions (only for AWS) */ @@ -2056,11 +2133,11 @@ export type DeploymentDetailResponseOverrideAwGrant = { /** * AWS-specific platform permission configuration */ -export type DeploymentDetailResponseOverrideAw = { +export type DeploymentDetailResponsePendingPreparedStackOverrideAw = { /** * Generic binding configuration for permissions */ - binding: DeploymentDetailResponseOverrideAwBinding; + binding: DeploymentDetailResponsePendingPreparedStackOverrideAwBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2068,11 +2145,13 @@ export type DeploymentDetailResponseOverrideAw = { /** * IAM effect. Defaults to Allow. */ - effect?: DeploymentDetailResponseOverrideEffect | undefined; + effect?: + | DeploymentDetailResponsePendingPreparedStackOverrideEffect + | undefined; /** * Grant permissions for a specific cloud platform */ - grant: DeploymentDetailResponseOverrideAwGrant; + grant: DeploymentDetailResponsePendingPreparedStackOverrideAwGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2082,17 +2161,18 @@ export type DeploymentDetailResponseOverrideAw = { /** * Azure-specific binding specification */ -export type DeploymentDetailResponseOverrideAzureResource = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; +export type DeploymentDetailResponsePendingPreparedStackOverrideAzureResource = + { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; + }; /** * Azure-specific binding specification */ -export type DeploymentDetailResponseOverrideAzureStack = { +export type DeploymentDetailResponsePendingPreparedStackOverrideAzureStack = { /** * Scope (subscription/resource group/resource level) */ @@ -2102,21 +2182,25 @@ export type DeploymentDetailResponseOverrideAzureStack = { /** * Generic binding configuration for permissions */ -export type DeploymentDetailResponseOverrideAzureBinding = { +export type DeploymentDetailResponsePendingPreparedStackOverrideAzureBinding = { /** * Azure-specific binding specification */ - resource?: DeploymentDetailResponseOverrideAzureResource | undefined; + resource?: + | DeploymentDetailResponsePendingPreparedStackOverrideAzureResource + | undefined; /** * Azure-specific binding specification */ - stack?: DeploymentDetailResponseOverrideAzureStack | undefined; + stack?: + | DeploymentDetailResponsePendingPreparedStackOverrideAzureStack + | undefined; }; /** * Grant permissions for a specific cloud platform */ -export type DeploymentDetailResponseOverrideAzureGrant = { +export type DeploymentDetailResponsePendingPreparedStackOverrideAzureGrant = { /** * AWS IAM actions (only for AWS) */ @@ -2142,11 +2226,11 @@ export type DeploymentDetailResponseOverrideAzureGrant = { /** * Azure-specific platform permission configuration */ -export type DeploymentDetailResponseOverrideAzure = { +export type DeploymentDetailResponsePendingPreparedStackOverrideAzure = { /** * Generic binding configuration for permissions */ - binding: DeploymentDetailResponseOverrideAzureBinding; + binding: DeploymentDetailResponsePendingPreparedStackOverrideAzureBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2154,7 +2238,7 @@ export type DeploymentDetailResponseOverrideAzure = { /** * Grant permissions for a specific cloud platform */ - grant: DeploymentDetailResponseOverrideAzureGrant; + grant: DeploymentDetailResponsePendingPreparedStackOverrideAzureGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2164,21 +2248,22 @@ export type DeploymentDetailResponseOverrideAzure = { /** * GCP IAM condition */ -export type DeploymentDetailResponseOverrideConditionResource = { - expression: string; - title: string; -}; +export type DeploymentDetailResponsePendingPreparedStackOverrideConditionResource = + { + expression: string; + title: string; + }; -export type DeploymentDetailResponseOverrideResourceConditionUnion = - | DeploymentDetailResponseOverrideConditionResource +export type DeploymentDetailResponsePendingPreparedStackOverrideResourceConditionUnion = + | DeploymentDetailResponsePendingPreparedStackOverrideConditionResource | any; /** * GCP-specific binding specification */ -export type DeploymentDetailResponseOverrideGcpResource = { +export type DeploymentDetailResponsePendingPreparedStackOverrideGcpResource = { condition?: - | DeploymentDetailResponseOverrideConditionResource + | DeploymentDetailResponsePendingPreparedStackOverrideConditionResource | any | null | undefined; @@ -2191,21 +2276,22 @@ export type DeploymentDetailResponseOverrideGcpResource = { /** * GCP IAM condition */ -export type DeploymentDetailResponseOverrideConditionStack = { - expression: string; - title: string; -}; +export type DeploymentDetailResponsePendingPreparedStackOverrideConditionStack = + { + expression: string; + title: string; + }; -export type DeploymentDetailResponseOverrideStackConditionUnion = - | DeploymentDetailResponseOverrideConditionStack +export type DeploymentDetailResponsePendingPreparedStackOverrideStackConditionUnion = + | DeploymentDetailResponsePendingPreparedStackOverrideConditionStack | any; /** * GCP-specific binding specification */ -export type DeploymentDetailResponseOverrideGcpStack = { +export type DeploymentDetailResponsePendingPreparedStackOverrideGcpStack = { condition?: - | DeploymentDetailResponseOverrideConditionStack + | DeploymentDetailResponsePendingPreparedStackOverrideConditionStack | any | null | undefined; @@ -2218,21 +2304,25 @@ export type DeploymentDetailResponseOverrideGcpStack = { /** * Generic binding configuration for permissions */ -export type DeploymentDetailResponseOverrideGcpBinding = { +export type DeploymentDetailResponsePendingPreparedStackOverrideGcpBinding = { /** * GCP-specific binding specification */ - resource?: DeploymentDetailResponseOverrideGcpResource | undefined; + resource?: + | DeploymentDetailResponsePendingPreparedStackOverrideGcpResource + | undefined; /** * GCP-specific binding specification */ - stack?: DeploymentDetailResponseOverrideGcpStack | undefined; + stack?: + | DeploymentDetailResponsePendingPreparedStackOverrideGcpStack + | undefined; }; /** * Grant permissions for a specific cloud platform */ -export type DeploymentDetailResponseOverrideGcpGrant = { +export type DeploymentDetailResponsePendingPreparedStackOverrideGcpGrant = { /** * AWS IAM actions (only for AWS) */ @@ -2258,11 +2348,11 @@ export type DeploymentDetailResponseOverrideGcpGrant = { /** * GCP-specific platform permission configuration */ -export type DeploymentDetailResponseOverrideGcp = { +export type DeploymentDetailResponsePendingPreparedStackOverrideGcp = { /** * Generic binding configuration for permissions */ - binding: DeploymentDetailResponseOverrideGcpBinding; + binding: DeploymentDetailResponsePendingPreparedStackOverrideGcpBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2270,7 +2360,7 @@ export type DeploymentDetailResponseOverrideGcp = { /** * Grant permissions for a specific cloud platform */ - grant: DeploymentDetailResponseOverrideGcpGrant; + grant: DeploymentDetailResponsePendingPreparedStackOverrideGcpGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2280,25 +2370,34 @@ export type DeploymentDetailResponseOverrideGcp = { /** * Platform-specific permission configurations */ -export type DeploymentDetailResponseOverridePlatforms = { +export type DeploymentDetailResponsePendingPreparedStackOverridePlatforms = { /** * AWS permission configurations */ - aws?: Array | null | undefined; + aws?: + | Array + | null + | undefined; /** * Azure permission configurations */ - azure?: Array | null | undefined; + azure?: + | Array + | null + | undefined; /** * GCP permission configurations */ - gcp?: Array | null | undefined; + gcp?: + | Array + | null + | undefined; }; /** * A permission set that can be applied across different cloud platforms */ -export type DeploymentDetailResponseOverride = { +export type DeploymentDetailResponsePendingPreparedStackOverride = { /** * Human-readable description of what this permission set allows */ @@ -2310,30 +2409,34 @@ export type DeploymentDetailResponseOverride = { /** * Platform-specific permission configurations */ - platforms: DeploymentDetailResponseOverridePlatforms; + platforms: DeploymentDetailResponsePendingPreparedStackOverridePlatforms; }; /** * Reference to a permission set - either by name or inline definition */ -export type DeploymentDetailResponseOverrideUnion = - | DeploymentDetailResponseOverride +export type DeploymentDetailResponsePendingPreparedStackOverrideUnion = + | DeploymentDetailResponsePendingPreparedStackOverride | string; -export type DeploymentDetailResponseManagement2 = { +export type DeploymentDetailResponsePendingPreparedStackManagement2 = { /** * Permission profile that maps resources to permission sets * * @remarks * Key can be "*" for all resources or resource name for specific resource */ - override: { [k: string]: Array }; + override: { + [k: string]: Array< + DeploymentDetailResponsePendingPreparedStackOverride | string + >; + }; }; /** * AWS-specific binding specification */ -export type DeploymentDetailResponseExtendAwResource = { +export type DeploymentDetailResponsePendingPreparedStackExtendAwResource = { /** * Optional condition for additional filtering (rare) */ @@ -2347,7 +2450,7 @@ export type DeploymentDetailResponseExtendAwResource = { /** * AWS-specific binding specification */ -export type DeploymentDetailResponseExtendAwStack = { +export type DeploymentDetailResponsePendingPreparedStackExtendAwStack = { /** * Optional condition for additional filtering (rare) */ @@ -2361,35 +2464,36 @@ export type DeploymentDetailResponseExtendAwStack = { /** * Generic binding configuration for permissions */ -export type DeploymentDetailResponseExtendAwBinding = { +export type DeploymentDetailResponsePendingPreparedStackExtendAwBinding = { /** * AWS-specific binding specification */ - resource?: DeploymentDetailResponseExtendAwResource | undefined; + resource?: + | DeploymentDetailResponsePendingPreparedStackExtendAwResource + | undefined; /** * AWS-specific binding specification */ - stack?: DeploymentDetailResponseExtendAwStack | undefined; + stack?: DeploymentDetailResponsePendingPreparedStackExtendAwStack | undefined; }; /** * IAM effect. Defaults to Allow. */ -export const DeploymentDetailResponseExtendEffect = { +export const DeploymentDetailResponsePendingPreparedStackExtendEffect = { Allow: "Allow", Deny: "Deny", } as const; /** * IAM effect. Defaults to Allow. */ -export type DeploymentDetailResponseExtendEffect = ClosedEnum< - typeof DeploymentDetailResponseExtendEffect ->; +export type DeploymentDetailResponsePendingPreparedStackExtendEffect = + ClosedEnum; /** * Grant permissions for a specific cloud platform */ -export type DeploymentDetailResponseExtendAwGrant = { +export type DeploymentDetailResponsePendingPreparedStackExtendAwGrant = { /** * AWS IAM actions (only for AWS) */ @@ -2415,11 +2519,11 @@ export type DeploymentDetailResponseExtendAwGrant = { /** * AWS-specific platform permission configuration */ -export type DeploymentDetailResponseExtendAw = { +export type DeploymentDetailResponsePendingPreparedStackExtendAw = { /** * Generic binding configuration for permissions */ - binding: DeploymentDetailResponseExtendAwBinding; + binding: DeploymentDetailResponsePendingPreparedStackExtendAwBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2427,11 +2531,11 @@ export type DeploymentDetailResponseExtendAw = { /** * IAM effect. Defaults to Allow. */ - effect?: DeploymentDetailResponseExtendEffect | undefined; + effect?: DeploymentDetailResponsePendingPreparedStackExtendEffect | undefined; /** * Grant permissions for a specific cloud platform */ - grant: DeploymentDetailResponseExtendAwGrant; + grant: DeploymentDetailResponsePendingPreparedStackExtendAwGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2441,7 +2545,7 @@ export type DeploymentDetailResponseExtendAw = { /** * Azure-specific binding specification */ -export type DeploymentDetailResponseExtendAzureResource = { +export type DeploymentDetailResponsePendingPreparedStackExtendAzureResource = { /** * Scope (subscription/resource group/resource level) */ @@ -2451,7 +2555,7 @@ export type DeploymentDetailResponseExtendAzureResource = { /** * Azure-specific binding specification */ -export type DeploymentDetailResponseExtendAzureStack = { +export type DeploymentDetailResponsePendingPreparedStackExtendAzureStack = { /** * Scope (subscription/resource group/resource level) */ @@ -2461,21 +2565,25 @@ export type DeploymentDetailResponseExtendAzureStack = { /** * Generic binding configuration for permissions */ -export type DeploymentDetailResponseExtendAzureBinding = { +export type DeploymentDetailResponsePendingPreparedStackExtendAzureBinding = { /** * Azure-specific binding specification */ - resource?: DeploymentDetailResponseExtendAzureResource | undefined; + resource?: + | DeploymentDetailResponsePendingPreparedStackExtendAzureResource + | undefined; /** * Azure-specific binding specification */ - stack?: DeploymentDetailResponseExtendAzureStack | undefined; + stack?: + | DeploymentDetailResponsePendingPreparedStackExtendAzureStack + | undefined; }; /** * Grant permissions for a specific cloud platform */ -export type DeploymentDetailResponseExtendAzureGrant = { +export type DeploymentDetailResponsePendingPreparedStackExtendAzureGrant = { /** * AWS IAM actions (only for AWS) */ @@ -2501,11 +2609,11 @@ export type DeploymentDetailResponseExtendAzureGrant = { /** * Azure-specific platform permission configuration */ -export type DeploymentDetailResponseExtendAzure = { +export type DeploymentDetailResponsePendingPreparedStackExtendAzure = { /** * Generic binding configuration for permissions */ - binding: DeploymentDetailResponseExtendAzureBinding; + binding: DeploymentDetailResponsePendingPreparedStackExtendAzureBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2513,7 +2621,7 @@ export type DeploymentDetailResponseExtendAzure = { /** * Grant permissions for a specific cloud platform */ - grant: DeploymentDetailResponseExtendAzureGrant; + grant: DeploymentDetailResponsePendingPreparedStackExtendAzureGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2523,21 +2631,22 @@ export type DeploymentDetailResponseExtendAzure = { /** * GCP IAM condition */ -export type DeploymentDetailResponseExtendConditionResource = { - expression: string; - title: string; -}; +export type DeploymentDetailResponsePendingPreparedStackExtendConditionResource = + { + expression: string; + title: string; + }; -export type DeploymentDetailResponseExtendResourceConditionUnion = - | DeploymentDetailResponseExtendConditionResource +export type DeploymentDetailResponsePendingPreparedStackExtendResourceConditionUnion = + | DeploymentDetailResponsePendingPreparedStackExtendConditionResource | any; /** * GCP-specific binding specification */ -export type DeploymentDetailResponseExtendGcpResource = { +export type DeploymentDetailResponsePendingPreparedStackExtendGcpResource = { condition?: - | DeploymentDetailResponseExtendConditionResource + | DeploymentDetailResponsePendingPreparedStackExtendConditionResource | any | null | undefined; @@ -2550,21 +2659,21 @@ export type DeploymentDetailResponseExtendGcpResource = { /** * GCP IAM condition */ -export type DeploymentDetailResponseExtendConditionStack = { +export type DeploymentDetailResponsePendingPreparedStackExtendConditionStack = { expression: string; title: string; }; -export type DeploymentDetailResponseExtendStackConditionUnion = - | DeploymentDetailResponseExtendConditionStack +export type DeploymentDetailResponsePendingPreparedStackExtendStackConditionUnion = + | DeploymentDetailResponsePendingPreparedStackExtendConditionStack | any; /** * GCP-specific binding specification */ -export type DeploymentDetailResponseExtendGcpStack = { +export type DeploymentDetailResponsePendingPreparedStackExtendGcpStack = { condition?: - | DeploymentDetailResponseExtendConditionStack + | DeploymentDetailResponsePendingPreparedStackExtendConditionStack | any | null | undefined; @@ -2577,21 +2686,25 @@ export type DeploymentDetailResponseExtendGcpStack = { /** * Generic binding configuration for permissions */ -export type DeploymentDetailResponseExtendGcpBinding = { +export type DeploymentDetailResponsePendingPreparedStackExtendGcpBinding = { /** * GCP-specific binding specification */ - resource?: DeploymentDetailResponseExtendGcpResource | undefined; + resource?: + | DeploymentDetailResponsePendingPreparedStackExtendGcpResource + | undefined; /** * GCP-specific binding specification */ - stack?: DeploymentDetailResponseExtendGcpStack | undefined; + stack?: + | DeploymentDetailResponsePendingPreparedStackExtendGcpStack + | undefined; }; /** * Grant permissions for a specific cloud platform */ -export type DeploymentDetailResponseExtendGcpGrant = { +export type DeploymentDetailResponsePendingPreparedStackExtendGcpGrant = { /** * AWS IAM actions (only for AWS) */ @@ -2617,11 +2730,11 @@ export type DeploymentDetailResponseExtendGcpGrant = { /** * GCP-specific platform permission configuration */ -export type DeploymentDetailResponseExtendGcp = { +export type DeploymentDetailResponsePendingPreparedStackExtendGcp = { /** * Generic binding configuration for permissions */ - binding: DeploymentDetailResponseExtendGcpBinding; + binding: DeploymentDetailResponsePendingPreparedStackExtendGcpBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2629,7 +2742,7 @@ export type DeploymentDetailResponseExtendGcp = { /** * Grant permissions for a specific cloud platform */ - grant: DeploymentDetailResponseExtendGcpGrant; + grant: DeploymentDetailResponsePendingPreparedStackExtendGcpGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2639,25 +2752,34 @@ export type DeploymentDetailResponseExtendGcp = { /** * Platform-specific permission configurations */ -export type DeploymentDetailResponseExtendPlatforms = { +export type DeploymentDetailResponsePendingPreparedStackExtendPlatforms = { /** * AWS permission configurations */ - aws?: Array | null | undefined; + aws?: + | Array + | null + | undefined; /** * Azure permission configurations */ - azure?: Array | null | undefined; + azure?: + | Array + | null + | undefined; /** * GCP permission configurations */ - gcp?: Array | null | undefined; + gcp?: + | Array + | null + | undefined; }; /** * A permission set that can be applied across different cloud platforms */ -export type DeploymentDetailResponseExtend = { +export type DeploymentDetailResponsePendingPreparedStackExtend = { /** * Human-readable description of what this permission set allows */ @@ -2669,38 +2791,42 @@ export type DeploymentDetailResponseExtend = { /** * Platform-specific permission configurations */ - platforms: DeploymentDetailResponseExtendPlatforms; + platforms: DeploymentDetailResponsePendingPreparedStackExtendPlatforms; }; /** * Reference to a permission set - either by name or inline definition */ -export type DeploymentDetailResponseExtendUnion = - | DeploymentDetailResponseExtend +export type DeploymentDetailResponsePendingPreparedStackExtendUnion = + | DeploymentDetailResponsePendingPreparedStackExtend | string; -export type DeploymentDetailResponseManagement1 = { +export type DeploymentDetailResponsePendingPreparedStackManagement1 = { /** * Permission profile that maps resources to permission sets * * @remarks * Key can be "*" for all resources or resource name for specific resource */ - extend: { [k: string]: Array }; + extend: { + [k: string]: Array< + DeploymentDetailResponsePendingPreparedStackExtend | string + >; + }; }; /** * Management permissions configuration for stack management access */ -export type DeploymentDetailResponseManagementUnion = - | DeploymentDetailResponseManagement1 - | DeploymentDetailResponseManagement2 - | DeploymentDetailResponseManagementEnum; +export type DeploymentDetailResponsePendingPreparedStackManagementUnion = + | DeploymentDetailResponsePendingPreparedStackManagement1 + | DeploymentDetailResponsePendingPreparedStackManagement2 + | DeploymentDetailResponsePendingPreparedStackManagementEnum; /** * AWS-specific binding specification */ -export type DeploymentDetailResponseProfileAwResource = { +export type DeploymentDetailResponsePendingPreparedStackProfileAwResource = { /** * Optional condition for additional filtering (rare) */ @@ -2714,7 +2840,7 @@ export type DeploymentDetailResponseProfileAwResource = { /** * AWS-specific binding specification */ -export type DeploymentDetailResponseProfileAwStack = { +export type DeploymentDetailResponsePendingPreparedStackProfileAwStack = { /** * Optional condition for additional filtering (rare) */ @@ -2728,35 +2854,38 @@ export type DeploymentDetailResponseProfileAwStack = { /** * Generic binding configuration for permissions */ -export type DeploymentDetailResponseProfileAwBinding = { +export type DeploymentDetailResponsePendingPreparedStackProfileAwBinding = { /** * AWS-specific binding specification */ - resource?: DeploymentDetailResponseProfileAwResource | undefined; + resource?: + | DeploymentDetailResponsePendingPreparedStackProfileAwResource + | undefined; /** * AWS-specific binding specification */ - stack?: DeploymentDetailResponseProfileAwStack | undefined; + stack?: + | DeploymentDetailResponsePendingPreparedStackProfileAwStack + | undefined; }; /** * IAM effect. Defaults to Allow. */ -export const DeploymentDetailResponseProfileEffect = { +export const DeploymentDetailResponsePendingPreparedStackProfileEffect = { Allow: "Allow", Deny: "Deny", } as const; /** * IAM effect. Defaults to Allow. */ -export type DeploymentDetailResponseProfileEffect = ClosedEnum< - typeof DeploymentDetailResponseProfileEffect ->; +export type DeploymentDetailResponsePendingPreparedStackProfileEffect = + ClosedEnum; /** * Grant permissions for a specific cloud platform */ -export type DeploymentDetailResponseProfileAwGrant = { +export type DeploymentDetailResponsePendingPreparedStackProfileAwGrant = { /** * AWS IAM actions (only for AWS) */ @@ -2782,11 +2911,11 @@ export type DeploymentDetailResponseProfileAwGrant = { /** * AWS-specific platform permission configuration */ -export type DeploymentDetailResponseProfileAw = { +export type DeploymentDetailResponsePendingPreparedStackProfileAw = { /** * Generic binding configuration for permissions */ - binding: DeploymentDetailResponseProfileAwBinding; + binding: DeploymentDetailResponsePendingPreparedStackProfileAwBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2794,11 +2923,13 @@ export type DeploymentDetailResponseProfileAw = { /** * IAM effect. Defaults to Allow. */ - effect?: DeploymentDetailResponseProfileEffect | undefined; + effect?: + | DeploymentDetailResponsePendingPreparedStackProfileEffect + | undefined; /** * Grant permissions for a specific cloud platform */ - grant: DeploymentDetailResponseProfileAwGrant; + grant: DeploymentDetailResponsePendingPreparedStackProfileAwGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2808,7 +2939,7 @@ export type DeploymentDetailResponseProfileAw = { /** * Azure-specific binding specification */ -export type DeploymentDetailResponseProfileAzureResource = { +export type DeploymentDetailResponsePendingPreparedStackProfileAzureResource = { /** * Scope (subscription/resource group/resource level) */ @@ -2818,7 +2949,7 @@ export type DeploymentDetailResponseProfileAzureResource = { /** * Azure-specific binding specification */ -export type DeploymentDetailResponseProfileAzureStack = { +export type DeploymentDetailResponsePendingPreparedStackProfileAzureStack = { /** * Scope (subscription/resource group/resource level) */ @@ -2828,21 +2959,25 @@ export type DeploymentDetailResponseProfileAzureStack = { /** * Generic binding configuration for permissions */ -export type DeploymentDetailResponseProfileAzureBinding = { +export type DeploymentDetailResponsePendingPreparedStackProfileAzureBinding = { /** * Azure-specific binding specification */ - resource?: DeploymentDetailResponseProfileAzureResource | undefined; + resource?: + | DeploymentDetailResponsePendingPreparedStackProfileAzureResource + | undefined; /** * Azure-specific binding specification */ - stack?: DeploymentDetailResponseProfileAzureStack | undefined; + stack?: + | DeploymentDetailResponsePendingPreparedStackProfileAzureStack + | undefined; }; /** * Grant permissions for a specific cloud platform */ -export type DeploymentDetailResponseProfileAzureGrant = { +export type DeploymentDetailResponsePendingPreparedStackProfileAzureGrant = { /** * AWS IAM actions (only for AWS) */ @@ -2868,11 +3003,11 @@ export type DeploymentDetailResponseProfileAzureGrant = { /** * Azure-specific platform permission configuration */ -export type DeploymentDetailResponseProfileAzure = { +export type DeploymentDetailResponsePendingPreparedStackProfileAzure = { /** * Generic binding configuration for permissions */ - binding: DeploymentDetailResponseProfileAzureBinding; + binding: DeploymentDetailResponsePendingPreparedStackProfileAzureBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2880,7 +3015,7 @@ export type DeploymentDetailResponseProfileAzure = { /** * Grant permissions for a specific cloud platform */ - grant: DeploymentDetailResponseProfileAzureGrant; + grant: DeploymentDetailResponsePendingPreparedStackProfileAzureGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2890,21 +3025,22 @@ export type DeploymentDetailResponseProfileAzure = { /** * GCP IAM condition */ -export type DeploymentDetailResponseProfileConditionResource = { - expression: string; - title: string; -}; +export type DeploymentDetailResponsePendingPreparedStackProfileConditionResource = + { + expression: string; + title: string; + }; -export type DeploymentDetailResponseProfileResourceConditionUnion = - | DeploymentDetailResponseProfileConditionResource +export type DeploymentDetailResponsePendingPreparedStackProfileResourceConditionUnion = + | DeploymentDetailResponsePendingPreparedStackProfileConditionResource | any; /** * GCP-specific binding specification */ -export type DeploymentDetailResponseProfileGcpResource = { +export type DeploymentDetailResponsePendingPreparedStackProfileGcpResource = { condition?: - | DeploymentDetailResponseProfileConditionResource + | DeploymentDetailResponsePendingPreparedStackProfileConditionResource | any | null | undefined; @@ -2917,21 +3053,22 @@ export type DeploymentDetailResponseProfileGcpResource = { /** * GCP IAM condition */ -export type DeploymentDetailResponseProfileConditionStack = { - expression: string; - title: string; -}; +export type DeploymentDetailResponsePendingPreparedStackProfileConditionStack = + { + expression: string; + title: string; + }; -export type DeploymentDetailResponseProfileStackConditionUnion = - | DeploymentDetailResponseProfileConditionStack +export type DeploymentDetailResponsePendingPreparedStackProfileStackConditionUnion = + | DeploymentDetailResponsePendingPreparedStackProfileConditionStack | any; /** * GCP-specific binding specification */ -export type DeploymentDetailResponseProfileGcpStack = { +export type DeploymentDetailResponsePendingPreparedStackProfileGcpStack = { condition?: - | DeploymentDetailResponseProfileConditionStack + | DeploymentDetailResponsePendingPreparedStackProfileConditionStack | any | null | undefined; @@ -2944,21 +3081,25 @@ export type DeploymentDetailResponseProfileGcpStack = { /** * Generic binding configuration for permissions */ -export type DeploymentDetailResponseProfileGcpBinding = { +export type DeploymentDetailResponsePendingPreparedStackProfileGcpBinding = { /** * GCP-specific binding specification */ - resource?: DeploymentDetailResponseProfileGcpResource | undefined; + resource?: + | DeploymentDetailResponsePendingPreparedStackProfileGcpResource + | undefined; /** * GCP-specific binding specification */ - stack?: DeploymentDetailResponseProfileGcpStack | undefined; + stack?: + | DeploymentDetailResponsePendingPreparedStackProfileGcpStack + | undefined; }; /** * Grant permissions for a specific cloud platform */ -export type DeploymentDetailResponseProfileGcpGrant = { +export type DeploymentDetailResponsePendingPreparedStackProfileGcpGrant = { /** * AWS IAM actions (only for AWS) */ @@ -2984,11 +3125,11 @@ export type DeploymentDetailResponseProfileGcpGrant = { /** * GCP-specific platform permission configuration */ -export type DeploymentDetailResponseProfileGcp = { +export type DeploymentDetailResponsePendingPreparedStackProfileGcp = { /** * Generic binding configuration for permissions */ - binding: DeploymentDetailResponseProfileGcpBinding; + binding: DeploymentDetailResponsePendingPreparedStackProfileGcpBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2996,7 +3137,7 @@ export type DeploymentDetailResponseProfileGcp = { /** * Grant permissions for a specific cloud platform */ - grant: DeploymentDetailResponseProfileGcpGrant; + grant: DeploymentDetailResponsePendingPreparedStackProfileGcpGrant; /** * Stable admin-facing label for this permission entry. */ @@ -3006,25 +3147,34 @@ export type DeploymentDetailResponseProfileGcp = { /** * Platform-specific permission configurations */ -export type DeploymentDetailResponseProfilePlatforms = { +export type DeploymentDetailResponsePendingPreparedStackProfilePlatforms = { /** * AWS permission configurations */ - aws?: Array | null | undefined; + aws?: + | Array + | null + | undefined; /** * Azure permission configurations */ - azure?: Array | null | undefined; + azure?: + | Array + | null + | undefined; /** * GCP permission configurations */ - gcp?: Array | null | undefined; + gcp?: + | Array + | null + | undefined; }; /** * A permission set that can be applied across different cloud platforms */ -export type DeploymentDetailResponseProfile = { +export type DeploymentDetailResponsePendingPreparedStackProfile = { /** * Human-readable description of what this permission set allows */ @@ -3036,27 +3186,27 @@ export type DeploymentDetailResponseProfile = { /** * Platform-specific permission configurations */ - platforms: DeploymentDetailResponseProfilePlatforms; + platforms: DeploymentDetailResponsePendingPreparedStackProfilePlatforms; }; /** * Reference to a permission set - either by name or inline definition */ -export type DeploymentDetailResponseProfileUnion = - | DeploymentDetailResponseProfile +export type DeploymentDetailResponsePendingPreparedStackProfileUnion = + | DeploymentDetailResponsePendingPreparedStackProfile | string; /** * Combined permissions configuration that contains both profiles and management */ -export type DeploymentDetailResponsePermissions = { +export type DeploymentDetailResponsePendingPreparedStackPermissions = { /** * Management permissions configuration for stack management access */ management?: - | DeploymentDetailResponseManagement1 - | DeploymentDetailResponseManagement2 - | DeploymentDetailResponseManagementEnum + | DeploymentDetailResponsePendingPreparedStackManagement1 + | DeploymentDetailResponsePendingPreparedStackManagement2 + | DeploymentDetailResponsePendingPreparedStackManagementEnum | undefined; /** * Permission profiles that define access control for compute services @@ -3066,7 +3216,9 @@ export type DeploymentDetailResponsePermissions = { */ profiles: { [k: string]: { - [k: string]: Array; + [k: string]: Array< + DeploymentDetailResponsePendingPreparedStackProfile | string + >; }; }; }; @@ -3074,7 +3226,7 @@ export type DeploymentDetailResponsePermissions = { /** * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. */ -export type DeploymentDetailResponsePreparedStackConfig = { +export type DeploymentDetailResponsePendingPreparedStackConfig = { /** * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. */ @@ -3089,7 +3241,7 @@ export type DeploymentDetailResponsePreparedStackConfig = { /** * Reference to a resource by its stable id and resource type. */ -export type DeploymentDetailResponsePreparedStackDependency = { +export type DeploymentDetailResponsePendingPreparedStackDependency = { id: string; /** * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. @@ -3100,33 +3252,44 @@ export type DeploymentDetailResponsePreparedStackDependency = { /** * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ -export const DeploymentDetailResponsePreparedStackLifecycle = { +export const DeploymentDetailResponsePendingPreparedStackLifecycle = { Frozen: "frozen", Live: "live", } as const; /** * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ -export type DeploymentDetailResponsePreparedStackLifecycle = ClosedEnum< - typeof DeploymentDetailResponsePreparedStackLifecycle +export type DeploymentDetailResponsePendingPreparedStackLifecycle = ClosedEnum< + typeof DeploymentDetailResponsePendingPreparedStackLifecycle >; -export type DeploymentDetailResponsePreparedStackResources = { +export type DeploymentDetailResponsePendingPreparedStackResources = { /** * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. */ - config: DeploymentDetailResponsePreparedStackConfig; + config: DeploymentDetailResponsePendingPreparedStackConfig; /** * Additional dependencies for this resource beyond those defined in the resource itself. * * @remarks * The total dependencies are: resource.get_dependencies() + this list */ - dependencies: Array; + dependencies: Array; + /** + * Id of the boolean stack input that decides whether this resource is + * + * @remarks + * 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. + */ + enabledWhen?: string | null | undefined; /** * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ - lifecycle: DeploymentDetailResponsePreparedStackLifecycle; + lifecycle: DeploymentDetailResponsePendingPreparedStackLifecycle; /** * Enable remote bindings for this resource (BYOB use case). * @@ -3140,7 +3303,7 @@ export type DeploymentDetailResponsePreparedStackResources = { /** * Represents the target cloud platform. */ -export const DeploymentDetailResponseSupportedPlatform = { +export const DeploymentDetailResponsePendingPreparedStackSupportedPlatform = { Aws: "aws", Gcp: "gcp", Azure: "azure", @@ -3152,14 +3315,15 @@ export const DeploymentDetailResponseSupportedPlatform = { /** * Represents the target cloud platform. */ -export type DeploymentDetailResponseSupportedPlatform = ClosedEnum< - typeof DeploymentDetailResponseSupportedPlatform ->; +export type DeploymentDetailResponsePendingPreparedStackSupportedPlatform = + ClosedEnum< + typeof DeploymentDetailResponsePendingPreparedStackSupportedPlatform + >; /** * A bag of resources, unaware of any cloud. */ -export type DeploymentDetailResponsePreparedStack = { +export type DeploymentDetailResponsePendingPreparedStack = { /** * Unique identifier for the stack */ @@ -3167,3153 +3331,7475 @@ export type DeploymentDetailResponsePreparedStack = { /** * Input definitions required before setup or deployment can proceed. */ - inputs?: Array | undefined; + inputs?: Array | undefined; /** * Combined permissions configuration that contains both profiles and management */ - permissions?: DeploymentDetailResponsePermissions | undefined; + permissions?: + | DeploymentDetailResponsePendingPreparedStackPermissions + | undefined; /** * Map of resource IDs to their configurations and lifecycle settings */ - resources: { [k: string]: DeploymentDetailResponsePreparedStackResources }; + resources: { + [k: string]: DeploymentDetailResponsePendingPreparedStackResources; + }; /** * Which platforms this stack supports. When None, all platforms are supported. */ supportedPlatforms?: - | Array + | Array | null | undefined; }; -export type DeploymentDetailResponsePreparedStackUnion = - | DeploymentDetailResponsePreparedStack +export type DeploymentDetailResponsePendingPreparedStackUnion = + | DeploymentDetailResponsePendingPreparedStack | any; -/** - * Runtime metadata for deployment state persistence - */ -export type DeploymentDetailResponseRuntimeMetadata = { +export const DeploymentDetailResponsePreparedStackTypeStringList = { + StringList: "stringList", +} as const; +export type DeploymentDetailResponsePreparedStackTypeStringList = ClosedEnum< + typeof DeploymentDetailResponsePreparedStackTypeStringList +>; + +export type DeploymentDetailResponsePreparedStackDefaultStringList = { + type: DeploymentDetailResponsePreparedStackTypeStringList; /** - * Hash of the environment variables snapshot that was last synced to the vault - * - * @remarks - * Used to avoid redundant sync operations during incremental deployment + * String list default. */ - lastSyncedEnvVarsHash?: string | null | undefined; + value: Array; +}; + +export const DeploymentDetailResponsePreparedStackTypeBoolean = { + Boolean: "boolean", +} as const; +export type DeploymentDetailResponsePreparedStackTypeBoolean = ClosedEnum< + typeof DeploymentDetailResponsePreparedStackTypeBoolean +>; + +export type DeploymentDetailResponsePreparedStackDefaultBoolean = { + type: DeploymentDetailResponsePreparedStackTypeBoolean; /** - * Exact vault keys owned by the deployment secret synchronizer. This - * - * @remarks - * inventory lets a later snapshot delete removed keys without listing or - * touching unrelated values in the same vault. + * Boolean default. */ - lastSyncedSecretNames?: Array | undefined; - preparedStack?: - | DeploymentDetailResponsePreparedStack - | any - | null - | undefined; + value: boolean; +}; + +export const DeploymentDetailResponsePreparedStackTypeNumber = { + Number: "number", +} as const; +export type DeploymentDetailResponsePreparedStackTypeNumber = ClosedEnum< + typeof DeploymentDetailResponsePreparedStackTypeNumber +>; + +export type DeploymentDetailResponsePreparedStackDefaultNumber = { + type: DeploymentDetailResponsePreparedStackTypeNumber; /** - * Whether cross-account registry access has been successfully granted. - * - * @remarks - * Set to true after the manager successfully sets the ECR/GAR repo policy - * for this deployment's target account. Prevents redundant API calls on - * every reconcile tick. + * Number default. */ - registryAccessGranted?: boolean | undefined; + value: string; }; -/** - * Setup source that imported this deployment - */ -export const DeploymentDetailResponseImportSource = { - Cloudformation: "cloudformation", - Terraform: "terraform", - Helm: "helm", +export const DeploymentDetailResponsePreparedStackTypeString = { + String: "string", } as const; -/** - * Setup source that imported this deployment - */ -export type DeploymentDetailResponseImportSource = ClosedEnum< - typeof DeploymentDetailResponseImportSource +export type DeploymentDetailResponsePreparedStackTypeString = ClosedEnum< + typeof DeploymentDetailResponsePreparedStackTypeString >; +export type DeploymentDetailResponsePreparedStackDefaultString = { + type: DeploymentDetailResponsePreparedStackTypeString; + /** + * String default. + */ + value: string; +}; + +export type DeploymentDetailResponsePreparedStackDefaultUnion = + | DeploymentDetailResponsePreparedStackDefaultString + | DeploymentDetailResponsePreparedStackDefaultNumber + | DeploymentDetailResponsePreparedStackDefaultBoolean + | DeploymentDetailResponsePreparedStackDefaultStringList + | any; + /** - * Setup method that created the deployment record and owns setup-time resources. + * Environment variable handling for a stack input mapping. */ -export const DeploymentDetailResponseSetupMethod = { - Cloudformation: "cloudformation", - GoogleOauth: "google-oauth", - Terraform: "terraform", - Helm: "helm", - Cli: "cli", - Manual: "manual", +export const DeploymentDetailResponsePreparedStackTypeEnvEnum = { + Plain: "plain", + Secret: "secret", } as const; /** - * Setup method that created the deployment record and owns setup-time resources. + * Environment variable handling for a stack input mapping. */ -export type DeploymentDetailResponseSetupMethod = ClosedEnum< - typeof DeploymentDetailResponseSetupMethod +export type DeploymentDetailResponsePreparedStackTypeEnvEnum = ClosedEnum< + typeof DeploymentDetailResponsePreparedStackTypeEnvEnum >; +export type DeploymentDetailResponsePreparedStackTypeUnion = + | DeploymentDetailResponsePreparedStackTypeEnvEnum + | any; + /** - * Latest error information if the deployment is in a failed state + * How a resolved stack input is injected into runtime environment variables. */ -export type DeploymentDetailResponseError = { +export type DeploymentDetailResponsePreparedStackEnv = { /** - * A unique identifier for the type of error. - * - * @remarks - * - * This should be a short, machine-readable string that can be used - * by clients to programmatically handle different error types. - * Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" + * Environment variable name. */ - code: string; + name: string; /** - * Additional diagnostic information about the error context. - * - * @remarks - * - * This optional field can contain structured data providing more details - * about the error, such as validation errors, request parameters that - * caused the issue, or other relevant context information. + * Target resource IDs or patterns. None means every env-capable resource. */ - context?: any | null | undefined; + targetResources?: Array | null | undefined; + type?: + | DeploymentDetailResponsePreparedStackTypeEnvEnum + | any + | null + | undefined; +}; + +/** + * Primitive stack input kind. + */ +export const DeploymentDetailResponsePreparedStackKind = { + String: "string", + Secret: "secret", + Number: "number", + Integer: "integer", + Boolean: "boolean", + Enum: "enum", + StringList: "stringList", +} as const; +/** + * Primitive stack input kind. + */ +export type DeploymentDetailResponsePreparedStackKind = ClosedEnum< + typeof DeploymentDetailResponsePreparedStackKind +>; + +/** + * Represents the target cloud platform. + */ +export const DeploymentDetailResponsePreparedStackPlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Machines: "machines", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type DeploymentDetailResponsePreparedStackPlatform = ClosedEnum< + typeof DeploymentDetailResponsePreparedStackPlatform +>; + +/** + * Who can provide a stack input value. + */ +export const DeploymentDetailResponsePreparedStackProvidedBy = { + Developer: "developer", + Deployer: "deployer", +} as const; +/** + * Who can provide a stack input value. + */ +export type DeploymentDetailResponsePreparedStackProvidedBy = ClosedEnum< + typeof DeploymentDetailResponsePreparedStackProvidedBy +>; + +/** + * Portable stack input validation constraints. + */ +export type DeploymentDetailResponsePreparedStackValidation = { /** - * Optional human-facing remediation hint. + * Semantic format hint such as url. */ - hint?: string | null | undefined; + format?: string | null | undefined; /** - * HTTP status code for this error. - * - * @remarks - * - * Used when converting the error to an HTTP response. If None, falls back to - * the error type's default status code or 500. + * Maximum number. */ - httpStatusCode?: number | null | undefined; + max?: string | null | undefined; /** - * Indicates if this is an internal error that should not be exposed to users. - * - * @remarks - * - * When `true`, this error contains sensitive information or implementation - * details that should not be shown to end-users. Such errors should be - * logged for debugging but replaced with generic error messages in responses. + * Maximum string-list items. */ - internal: boolean; + maxItems?: number | null | undefined; /** - * Human-readable error message. - * - * @remarks - * - * This message should be clear and actionable for developers or end-users, - * providing context about what went wrong and potentially how to fix it. + * Maximum string length. */ - message: string; + maxLength?: number | null | undefined; /** - * Indicates whether the operation that caused the error should be retried. - * - * @remarks - * - * When `true`, the error is transient and the operation might succeed - * if attempted again. When `false`, retrying the same operation is - * unlikely to succeed without changes. + * Minimum number. */ - retryable: boolean; + min?: string | null | undefined; /** - * The underlying error that caused this error, creating an error chain. - * - * @remarks - * - * This allows for proper error propagation and debugging by maintaining - * the full context of how an error occurred through multiple layers - * of an application. + * Minimum string-list items. */ - source?: any | null | undefined; -}; - -/** - * Snapshot of target environment variables for the deployment - */ -export type DeploymentDetailResponseTargetEnvironmentVariables = { + minItems?: number | null | undefined; /** - * Environment variables in the snapshot + * Minimum string length. */ - variables: Array; + minLength?: number | null | undefined; /** - * Deterministic hash of all variables for change detection + * Portable whole-value regex pattern. */ - hash: string; + pattern?: string | null | undefined; /** - * ISO 8601 timestamp when snapshot was created + * Allowed string enum values. */ - createdAt: Date; + values?: Array | null | undefined; }; +export type DeploymentDetailResponsePreparedStackValidationUnion = + | DeploymentDetailResponsePreparedStackValidation + | any; + /** - * Snapshot of current environment variables for the deployment + * Stack input definition serialized into a release stack. */ -export type DeploymentDetailResponseCurrentEnvironmentVariables = { - /** - * Environment variables in the snapshot - */ - variables: Array; +export type DeploymentDetailResponsePreparedStackInput = { + default?: + | DeploymentDetailResponsePreparedStackDefaultString + | DeploymentDetailResponsePreparedStackDefaultNumber + | DeploymentDetailResponsePreparedStackDefaultBoolean + | DeploymentDetailResponsePreparedStackDefaultStringList + | any + | null + | undefined; /** - * Deterministic hash of all variables for change detection + * Human-facing helper text. */ - hash: string; + description: string; /** - * ISO 8601 timestamp when snapshot was created + * Runtime env-var mappings for v1 input resolution. */ - createdAt: Date; -}; - -export type DeploymentDetailResponse = { + env?: Array | undefined; /** - * Unique identifier for the deployment. + * Stable input ID used by CLI/API calls. */ id: string; /** - * Deployment name. + * Primitive stack input kind. */ - name: string; + kind: DeploymentDetailResponsePreparedStackKind; /** - * Public subdomain for auto-generated domains + * Human-facing field label. */ - publicSubdomain?: string | null | undefined; + label: string; /** - * Deployment status in the deployment lifecycle. - * - * @remarks - * - * For observe-only deployments with no release or stack state, `Running` - * means the Operator is attached. Connectivity comes from `lastHeartbeatAt`; - * resource health comes from inventory and resource heartbeat data. + * Example placeholder shown in UI. */ - status: DeploymentDetailResponseStatus; + placeholder?: string | null | undefined; /** - * Unique identifier for the project. + * Platforms where this input applies. */ - projectId: string; + platforms?: + | Array + | null + | undefined; /** - * Target platform for the deployment + * Who can provide this value. */ - platform: DeploymentDetailResponsePlatform; + providedBy: Array; /** - * Underlying cloud platform for Kubernetes deployments. + * Whether a resolved value is required before deployment can proceed. */ - basePlatform?: DeploymentDetailResponseBasePlatform | null | undefined; + required: boolean; + validation?: + | DeploymentDetailResponsePreparedStackValidation + | any + | null + | undefined; +}; + +export const DeploymentDetailResponsePreparedStackManagementEnum = { + Auto: "auto", +} as const; +export type DeploymentDetailResponsePreparedStackManagementEnum = ClosedEnum< + typeof DeploymentDetailResponsePreparedStackManagementEnum +>; + +/** + * AWS-specific binding specification + */ +export type DeploymentDetailResponsePreparedStackOverrideAwResource = { /** - * Cloud region or location for the deployment. + * Optional condition for additional filtering (rare) */ - region?: string | null | undefined; + condition?: { [k: string]: { [k: string]: string } } | null | undefined; /** - * DeploymentState protocol version owned by the runtime/manager + * Resource ARNs to bind to */ - deploymentProtocolVersion: number; + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type DeploymentDetailResponsePreparedStackOverrideAwStack = { /** - * ID of deployment group this deployment belongs to + * Optional condition for additional filtering (rare) */ - deploymentGroupId: string; + condition?: { [k: string]: { [k: string]: string } } | null | undefined; /** - * Operational purpose of this deployment within its customer environment. + * Resource ARNs to bind to */ - purpose: DeploymentPurpose; + resources: Array; +}; + +/** + * Generic binding configuration for permissions + */ +export type DeploymentDetailResponsePreparedStackOverrideAwBinding = { /** - * Cloud environment information + * AWS-specific binding specification */ - environmentInfo?: - | DeploymentDetailResponseEnvironmentInfoGcp - | DeploymentDetailResponseEnvironmentInfoAzure - | DeploymentDetailResponseEnvironmentInfoLocal - | DeploymentDetailResponseEnvironmentInfoAws - | DeploymentDetailResponseEnvironmentInfoTest - | any - | null + resource?: + | DeploymentDetailResponsePreparedStackOverrideAwResource | undefined; /** - * User-provided configuration (network, deployment model, approvals) + * AWS-specific binding specification */ - stackSettings: DeploymentDetailResponseStackSettings; + stack?: DeploymentDetailResponsePreparedStackOverrideAwStack | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const DeploymentDetailResponsePreparedStackOverrideEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type DeploymentDetailResponsePreparedStackOverrideEffect = ClosedEnum< + typeof DeploymentDetailResponsePreparedStackOverrideEffect +>; + +/** + * Grant permissions for a specific cloud platform + */ +export type DeploymentDetailResponsePreparedStackOverrideAwGrant = { /** - * State of infrastructure components managed by this deployment + * AWS IAM actions (only for AWS) */ - stackState?: DeploymentDetailResponseStackState | null | undefined; + actions?: Array | null | undefined; /** - * Runtime metadata for deployment state persistence + * Azure actions (only for Azure) */ - runtimeMetadata?: DeploymentDetailResponseRuntimeMetadata | null | undefined; + dataActions?: Array | null | undefined; /** - * ID of the currently deployed release (actual state) + * GCP permissions that require an exact residual custom role. */ - currentReleaseId?: string | null | undefined; + permissions?: Array | null | undefined; /** - * ID of the desired release for deployment/update (desired state) + * Provider predefined roles to bind directly. */ - desiredReleaseId?: string | null | undefined; + predefinedRoles?: Array | null | undefined; /** - * ID of the pinned release + * GCP residual custom permissions to pair with predefined roles. */ - pinnedReleaseId?: string | null | undefined; + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type DeploymentDetailResponsePreparedStackOverrideAw = { /** - * Setup source that imported this deployment + * Generic binding configuration for permissions */ - importSource?: DeploymentDetailResponseImportSource | null | undefined; + binding: DeploymentDetailResponsePreparedStackOverrideAwBinding; /** - * Setup method that created the deployment record and owns setup-time resources. + * Short admin-facing description of why this entry exists. */ - setupMethod?: DeploymentDetailResponseSetupMethod | null | undefined; + description?: string | null | undefined; /** - * Setup method metadata needed to guide privileged teardown. + * IAM effect. Defaults to Allow. */ - setupMetadata?: { [k: string]: any | null } | null | undefined; + effect?: DeploymentDetailResponsePreparedStackOverrideEffect | undefined; /** - * Imported setup target for compatibility checks + * Grant permissions for a specific cloud platform */ - setupTarget?: string | null | undefined; + grant: DeploymentDetailResponsePreparedStackOverrideAwGrant; /** - * Imported setup compatibility fingerprint + * Stable admin-facing label for this permission entry. */ - setupFingerprint?: string | null | undefined; + label?: string | null | undefined; +}; + +/** + * Azure-specific binding specification + */ +export type DeploymentDetailResponsePreparedStackOverrideAzureResource = { /** - * Imported setup fingerprint algorithm version + * Scope (subscription/resource group/resource level) */ - setupFingerprintVersion?: number | null | undefined; + scope: string; +}; + +/** + * Azure-specific binding specification + */ +export type DeploymentDetailResponsePreparedStackOverrideAzureStack = { /** - * Display-only scope reported by the Operator manifest + * Scope (subscription/resource group/resource level) */ - operatorScope?: string | null | undefined; + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type DeploymentDetailResponsePreparedStackOverrideAzureBinding = { /** - * Display-only permission tier reported by the Operator manifest + * Azure-specific binding specification */ - operatorPermission?: string | null | undefined; + resource?: + | DeploymentDetailResponsePreparedStackOverrideAzureResource + | undefined; /** - * Version reported by the Operator + * Azure-specific binding specification */ - operatorVersion?: string | null | undefined; + stack?: DeploymentDetailResponsePreparedStackOverrideAzureStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type DeploymentDetailResponsePreparedStackOverrideAzureGrant = { /** - * Capability state reported by the Operator + * AWS IAM actions (only for AWS) */ - capabilities?: Array | null | undefined; + actions?: Array | null | undefined; /** - * Whether a retry has been requested for a failed deployment + * Azure actions (only for Azure) */ - retryRequested: boolean; + dataActions?: Array | null | undefined; /** - * Timestamp of the last received heartbeat from the deployment + * GCP permissions that require an exact residual custom role. */ - lastHeartbeatAt?: Date | null | undefined; + permissions?: Array | null | undefined; /** - * Latest error information if the deployment is in a failed state + * Provider predefined roles to bind directly. */ - error?: DeploymentDetailResponseError | null | undefined; + predefinedRoles?: Array | null | undefined; /** - * Configuration of environment variables for the deployment + * GCP residual custom permissions to pair with predefined roles. */ - environmentVariables?: Array | null | undefined; + residualPermissions?: Array | null | undefined; +}; + +/** + * Azure-specific platform permission configuration + */ +export type DeploymentDetailResponsePreparedStackOverrideAzure = { /** - * Snapshot of target environment variables for the deployment + * Generic binding configuration for permissions */ - targetEnvironmentVariables?: - | DeploymentDetailResponseTargetEnvironmentVariables + binding: DeploymentDetailResponsePreparedStackOverrideAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: DeploymentDetailResponsePreparedStackOverrideAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * GCP IAM condition + */ +export type DeploymentDetailResponsePreparedStackOverrideConditionResource = { + expression: string; + title: string; +}; + +export type DeploymentDetailResponsePreparedStackOverrideResourceConditionUnion = + | DeploymentDetailResponsePreparedStackOverrideConditionResource + | any; + +/** + * GCP-specific binding specification + */ +export type DeploymentDetailResponsePreparedStackOverrideGcpResource = { + condition?: + | DeploymentDetailResponsePreparedStackOverrideConditionResource + | any | null | undefined; /** - * Snapshot of current environment variables for the deployment + * Scope (project/resource level) */ - currentEnvironmentVariables?: - | DeploymentDetailResponseCurrentEnvironmentVariables + scope: string; +}; + +/** + * GCP IAM condition + */ +export type DeploymentDetailResponsePreparedStackOverrideConditionStack = { + expression: string; + title: string; +}; + +export type DeploymentDetailResponsePreparedStackOverrideStackConditionUnion = + | DeploymentDetailResponsePreparedStackOverrideConditionStack + | any; + +/** + * GCP-specific binding specification + */ +export type DeploymentDetailResponsePreparedStackOverrideGcpStack = { + condition?: + | DeploymentDetailResponsePreparedStackOverrideConditionStack + | any | null | undefined; - createdAt: Date; - updatedAt: Date; - managerId: string; /** - * Unique identifier for the workspace. + * Scope (project/resource level) */ - workspaceId: string; - release?: DeploymentReleaseInfo | null | undefined; - deploymentGroup?: DeploymentGroupInfo | undefined; - project?: DeploymentProjectInfo | undefined; + scope: string; }; -/** @internal */ -export const DeploymentDetailResponseStatus$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseStatus -> = z.enum(DeploymentDetailResponseStatus); +/** + * Generic binding configuration for permissions + */ +export type DeploymentDetailResponsePreparedStackOverrideGcpBinding = { + /** + * GCP-specific binding specification + */ + resource?: + | DeploymentDetailResponsePreparedStackOverrideGcpResource + | undefined; + /** + * GCP-specific binding specification + */ + stack?: DeploymentDetailResponsePreparedStackOverrideGcpStack | undefined; +}; -/** @internal */ -export const DeploymentDetailResponsePlatform$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponsePlatform -> = z.enum(DeploymentDetailResponsePlatform); +/** + * Grant permissions for a specific cloud platform + */ +export type DeploymentDetailResponsePreparedStackOverrideGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; -/** @internal */ -export const DeploymentDetailResponseBasePlatform$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseBasePlatform -> = z.enum(DeploymentDetailResponseBasePlatform); +/** + * GCP-specific platform permission configuration + */ +export type DeploymentDetailResponsePreparedStackOverrideGcp = { + /** + * Generic binding configuration for permissions + */ + binding: DeploymentDetailResponsePreparedStackOverrideGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: DeploymentDetailResponsePreparedStackOverrideGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; -/** @internal */ -export const DeploymentDetailResponsePlatformTest$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponsePlatformTest -> = z.enum(DeploymentDetailResponsePlatformTest); +/** + * Platform-specific permission configurations + */ +export type DeploymentDetailResponsePreparedStackOverridePlatforms = { + /** + * AWS permission configurations + */ + aws?: + | Array + | null + | undefined; + /** + * Azure permission configurations + */ + azure?: + | Array + | null + | undefined; + /** + * GCP permission configurations + */ + gcp?: + | Array + | null + | undefined; +}; -/** @internal */ -export const DeploymentDetailResponseEnvironmentInfoTest$inboundSchema: - z.ZodType = z.object({ - testId: z.string(), - platform: DeploymentDetailResponsePlatformTest$inboundSchema, +/** + * A permission set that can be applied across different cloud platforms + */ +export type DeploymentDetailResponsePreparedStackOverride = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: DeploymentDetailResponsePreparedStackOverridePlatforms; +}; + +/** + * Reference to a permission set - either by name or inline definition + */ +export type DeploymentDetailResponsePreparedStackOverrideUnion = + | DeploymentDetailResponsePreparedStackOverride + | string; + +export type DeploymentDetailResponsePreparedStackManagement2 = { + /** + * Permission profile that maps resources to permission sets + * + * @remarks + * Key can be "*" for all resources or resource name for specific resource + */ + override: { + [k: string]: Array; + }; +}; + +/** + * AWS-specific binding specification + */ +export type DeploymentDetailResponsePreparedStackExtendAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type DeploymentDetailResponsePreparedStackExtendAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * Generic binding configuration for permissions + */ +export type DeploymentDetailResponsePreparedStackExtendAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: DeploymentDetailResponsePreparedStackExtendAwResource | undefined; + /** + * AWS-specific binding specification + */ + stack?: DeploymentDetailResponsePreparedStackExtendAwStack | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const DeploymentDetailResponsePreparedStackExtendEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type DeploymentDetailResponsePreparedStackExtendEffect = ClosedEnum< + typeof DeploymentDetailResponsePreparedStackExtendEffect +>; + +/** + * Grant permissions for a specific cloud platform + */ +export type DeploymentDetailResponsePreparedStackExtendAwGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type DeploymentDetailResponsePreparedStackExtendAw = { + /** + * Generic binding configuration for permissions + */ + binding: DeploymentDetailResponsePreparedStackExtendAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: DeploymentDetailResponsePreparedStackExtendEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: DeploymentDetailResponsePreparedStackExtendAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Azure-specific binding specification + */ +export type DeploymentDetailResponsePreparedStackExtendAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Azure-specific binding specification + */ +export type DeploymentDetailResponsePreparedStackExtendAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type DeploymentDetailResponsePreparedStackExtendAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: + | DeploymentDetailResponsePreparedStackExtendAzureResource + | undefined; + /** + * Azure-specific binding specification + */ + stack?: DeploymentDetailResponsePreparedStackExtendAzureStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type DeploymentDetailResponsePreparedStackExtendAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * Azure-specific platform permission configuration + */ +export type DeploymentDetailResponsePreparedStackExtendAzure = { + /** + * Generic binding configuration for permissions + */ + binding: DeploymentDetailResponsePreparedStackExtendAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: DeploymentDetailResponsePreparedStackExtendAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * GCP IAM condition + */ +export type DeploymentDetailResponsePreparedStackExtendConditionResource = { + expression: string; + title: string; +}; + +export type DeploymentDetailResponsePreparedStackExtendResourceConditionUnion = + | DeploymentDetailResponsePreparedStackExtendConditionResource + | any; + +/** + * GCP-specific binding specification + */ +export type DeploymentDetailResponsePreparedStackExtendGcpResource = { + condition?: + | DeploymentDetailResponsePreparedStackExtendConditionResource + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * GCP IAM condition + */ +export type DeploymentDetailResponsePreparedStackExtendConditionStack = { + expression: string; + title: string; +}; + +export type DeploymentDetailResponsePreparedStackExtendStackConditionUnion = + | DeploymentDetailResponsePreparedStackExtendConditionStack + | any; + +/** + * GCP-specific binding specification + */ +export type DeploymentDetailResponsePreparedStackExtendGcpStack = { + condition?: + | DeploymentDetailResponsePreparedStackExtendConditionStack + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type DeploymentDetailResponsePreparedStackExtendGcpBinding = { + /** + * GCP-specific binding specification + */ + resource?: DeploymentDetailResponsePreparedStackExtendGcpResource | undefined; + /** + * GCP-specific binding specification + */ + stack?: DeploymentDetailResponsePreparedStackExtendGcpStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type DeploymentDetailResponsePreparedStackExtendGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * GCP-specific platform permission configuration + */ +export type DeploymentDetailResponsePreparedStackExtendGcp = { + /** + * Generic binding configuration for permissions + */ + binding: DeploymentDetailResponsePreparedStackExtendGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: DeploymentDetailResponsePreparedStackExtendGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Platform-specific permission configurations + */ +export type DeploymentDetailResponsePreparedStackExtendPlatforms = { + /** + * AWS permission configurations + */ + aws?: Array | null | undefined; + /** + * Azure permission configurations + */ + azure?: + | Array + | null + | undefined; + /** + * GCP permission configurations + */ + gcp?: + | Array + | null + | undefined; +}; + +/** + * A permission set that can be applied across different cloud platforms + */ +export type DeploymentDetailResponsePreparedStackExtend = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: DeploymentDetailResponsePreparedStackExtendPlatforms; +}; + +/** + * Reference to a permission set - either by name or inline definition + */ +export type DeploymentDetailResponsePreparedStackExtendUnion = + | DeploymentDetailResponsePreparedStackExtend + | string; + +export type DeploymentDetailResponsePreparedStackManagement1 = { + /** + * Permission profile that maps resources to permission sets + * + * @remarks + * Key can be "*" for all resources or resource name for specific resource + */ + extend: { + [k: string]: Array; + }; +}; + +/** + * Management permissions configuration for stack management access + */ +export type DeploymentDetailResponsePreparedStackManagementUnion = + | DeploymentDetailResponsePreparedStackManagement1 + | DeploymentDetailResponsePreparedStackManagement2 + | DeploymentDetailResponsePreparedStackManagementEnum; + +/** + * AWS-specific binding specification + */ +export type DeploymentDetailResponsePreparedStackProfileAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type DeploymentDetailResponsePreparedStackProfileAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * Generic binding configuration for permissions + */ +export type DeploymentDetailResponsePreparedStackProfileAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: DeploymentDetailResponsePreparedStackProfileAwResource | undefined; + /** + * AWS-specific binding specification + */ + stack?: DeploymentDetailResponsePreparedStackProfileAwStack | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const DeploymentDetailResponsePreparedStackProfileEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type DeploymentDetailResponsePreparedStackProfileEffect = ClosedEnum< + typeof DeploymentDetailResponsePreparedStackProfileEffect +>; + +/** + * Grant permissions for a specific cloud platform + */ +export type DeploymentDetailResponsePreparedStackProfileAwGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type DeploymentDetailResponsePreparedStackProfileAw = { + /** + * Generic binding configuration for permissions + */ + binding: DeploymentDetailResponsePreparedStackProfileAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: DeploymentDetailResponsePreparedStackProfileEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: DeploymentDetailResponsePreparedStackProfileAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Azure-specific binding specification + */ +export type DeploymentDetailResponsePreparedStackProfileAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Azure-specific binding specification + */ +export type DeploymentDetailResponsePreparedStackProfileAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type DeploymentDetailResponsePreparedStackProfileAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: + | DeploymentDetailResponsePreparedStackProfileAzureResource + | undefined; + /** + * Azure-specific binding specification + */ + stack?: DeploymentDetailResponsePreparedStackProfileAzureStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type DeploymentDetailResponsePreparedStackProfileAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * Azure-specific platform permission configuration + */ +export type DeploymentDetailResponsePreparedStackProfileAzure = { + /** + * Generic binding configuration for permissions + */ + binding: DeploymentDetailResponsePreparedStackProfileAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: DeploymentDetailResponsePreparedStackProfileAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * GCP IAM condition + */ +export type DeploymentDetailResponsePreparedStackProfileConditionResource = { + expression: string; + title: string; +}; + +export type DeploymentDetailResponsePreparedStackProfileResourceConditionUnion = + | DeploymentDetailResponsePreparedStackProfileConditionResource + | any; + +/** + * GCP-specific binding specification + */ +export type DeploymentDetailResponsePreparedStackProfileGcpResource = { + condition?: + | DeploymentDetailResponsePreparedStackProfileConditionResource + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * GCP IAM condition + */ +export type DeploymentDetailResponsePreparedStackProfileConditionStack = { + expression: string; + title: string; +}; + +export type DeploymentDetailResponsePreparedStackProfileStackConditionUnion = + | DeploymentDetailResponsePreparedStackProfileConditionStack + | any; + +/** + * GCP-specific binding specification + */ +export type DeploymentDetailResponsePreparedStackProfileGcpStack = { + condition?: + | DeploymentDetailResponsePreparedStackProfileConditionStack + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type DeploymentDetailResponsePreparedStackProfileGcpBinding = { + /** + * GCP-specific binding specification + */ + resource?: + | DeploymentDetailResponsePreparedStackProfileGcpResource + | undefined; + /** + * GCP-specific binding specification + */ + stack?: DeploymentDetailResponsePreparedStackProfileGcpStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type DeploymentDetailResponsePreparedStackProfileGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * GCP-specific platform permission configuration + */ +export type DeploymentDetailResponsePreparedStackProfileGcp = { + /** + * Generic binding configuration for permissions + */ + binding: DeploymentDetailResponsePreparedStackProfileGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: DeploymentDetailResponsePreparedStackProfileGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Platform-specific permission configurations + */ +export type DeploymentDetailResponsePreparedStackProfilePlatforms = { + /** + * AWS permission configurations + */ + aws?: + | Array + | null + | undefined; + /** + * Azure permission configurations + */ + azure?: + | Array + | null + | undefined; + /** + * GCP permission configurations + */ + gcp?: + | Array + | null + | undefined; +}; + +/** + * A permission set that can be applied across different cloud platforms + */ +export type DeploymentDetailResponsePreparedStackProfile = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: DeploymentDetailResponsePreparedStackProfilePlatforms; +}; + +/** + * Reference to a permission set - either by name or inline definition + */ +export type DeploymentDetailResponsePreparedStackProfileUnion = + | DeploymentDetailResponsePreparedStackProfile + | string; + +/** + * Combined permissions configuration that contains both profiles and management + */ +export type DeploymentDetailResponsePreparedStackPermissions = { + /** + * Management permissions configuration for stack management access + */ + management?: + | DeploymentDetailResponsePreparedStackManagement1 + | DeploymentDetailResponsePreparedStackManagement2 + | DeploymentDetailResponsePreparedStackManagementEnum + | undefined; + /** + * Permission profiles that define access control for compute services + * + * @remarks + * Key is the profile name, value is the permission configuration + */ + profiles: { + [k: string]: { + [k: string]: Array; + }; + }; +}; + +/** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ +export type DeploymentDetailResponsePreparedStackConfig = { + /** + * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. + */ + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; +}; + +/** + * Reference to a resource by its stable id and resource type. + */ +export type DeploymentDetailResponsePreparedStackDependency = { + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; +}; + +/** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ +export const DeploymentDetailResponsePreparedStackLifecycle = { + Frozen: "frozen", + Live: "live", +} as const; +/** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ +export type DeploymentDetailResponsePreparedStackLifecycle = ClosedEnum< + typeof DeploymentDetailResponsePreparedStackLifecycle +>; + +export type DeploymentDetailResponsePreparedStackResources = { + /** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ + config: DeploymentDetailResponsePreparedStackConfig; + /** + * Additional dependencies for this resource beyond those defined in the resource itself. + * + * @remarks + * The total dependencies are: resource.get_dependencies() + this list + */ + dependencies: Array; + /** + * Id of the boolean stack input that decides whether this resource is + * + * @remarks + * 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. + */ + enabledWhen?: string | null | undefined; + /** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ + lifecycle: DeploymentDetailResponsePreparedStackLifecycle; + /** + * Enable remote bindings for this resource (BYOB use case). + * + * @remarks + * When true, binding params are synced to StackState's `remote_binding_params`. + * Default: false (prevents sensitive data in synced state). + */ + remoteAccess?: boolean | undefined; +}; + +/** + * Represents the target cloud platform. + */ +export const DeploymentDetailResponsePreparedStackSupportedPlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Machines: "machines", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type DeploymentDetailResponsePreparedStackSupportedPlatform = ClosedEnum< + typeof DeploymentDetailResponsePreparedStackSupportedPlatform +>; + +/** + * A bag of resources, unaware of any cloud. + */ +export type DeploymentDetailResponsePreparedStack = { + /** + * Unique identifier for the stack + */ + id: string; + /** + * Input definitions required before setup or deployment can proceed. + */ + inputs?: Array | undefined; + /** + * Combined permissions configuration that contains both profiles and management + */ + permissions?: DeploymentDetailResponsePreparedStackPermissions | undefined; + /** + * Map of resource IDs to their configurations and lifecycle settings + */ + resources: { [k: string]: DeploymentDetailResponsePreparedStackResources }; + /** + * Which platforms this stack supports. When None, all platforms are supported. + */ + supportedPlatforms?: + | Array + | null + | undefined; +}; + +export type DeploymentDetailResponsePreparedStackUnion = + | DeploymentDetailResponsePreparedStack + | any; + +/** + * One-shot authority for a setup re-import to replace setup-owned resources. + */ +export type DeploymentDetailResponseSetupUpdateAuthorization = { + /** + * Frozen resource projection from the last successful deployment. + */ + baselineFrozenDigest: string; + /** + * Unique revision used by persistence layers for compare-and-swap updates. + */ + nonce: string; + /** + * Release whose stack was prepared by setup. + */ + releaseId: string; + /** + * Exact setup artifact revision that authored this authority. + */ + setupFingerprint: string; + /** + * Setup fingerprint contract version. + */ + setupFingerprintVersion: number; + /** + * Stable setup target recorded on the imported deployment. + */ + setupTarget: string; + /** + * Frozen resource projection prepared by the setup re-import. + */ + targetFrozenDigest: string; +}; + +export type DeploymentDetailResponseSetupUpdateAuthorizationUnion = + | DeploymentDetailResponseSetupUpdateAuthorization + | any; + +/** + * Runtime metadata for deployment state persistence + */ +export type DeploymentDetailResponseRuntimeMetadata = { + /** + * Actor that owns structural work during the initial setup phase. + */ + initialSetupAuthority?: + | DeploymentDetailResponseInitialSetupAuthority + | undefined; + /** + * Hash of the environment variables snapshot that was last synced to the vault + * + * @remarks + * Used to avoid redundant sync operations during incremental deployment + */ + lastSyncedEnvVarsHash?: string | null | undefined; + /** + * Exact vault keys owned by the deployment secret synchronizer. This + * + * @remarks + * inventory lets a later snapshot delete removed keys without listing or + * touching unrelated values in the same vault. + */ + lastSyncedSecretNames?: Array | undefined; + pendingPreparedStack?: + | DeploymentDetailResponsePendingPreparedStack + | any + | null + | undefined; + /** + * Canonical resolved answers for inputs that gate Frozen resources, + * + * @remarks + * keyed by input id, recorded when the deployment is created or its + * setup import registers. + * + * A frozen gate's answer is fixed for the deployment's lifetime: the + * update path refuses input values that conflict with these, and a Live + * resource sharing such an input resolves the persisted answer forever. + */ + persistedGateAnswers?: { [k: string]: boolean } | undefined; + preparedStack?: + | DeploymentDetailResponsePreparedStack + | any + | null + | undefined; + /** + * Whether cross-account registry access has been successfully granted. + * + * @remarks + * Set to true after the manager successfully sets the ECR/GAR repo policy + * for this deployment's target account. Prevents redundant API calls on + * every reconcile tick. + */ + registryAccessGranted?: boolean | undefined; + setupUpdateAuthorization?: + | DeploymentDetailResponseSetupUpdateAuthorization + | any + | null + | undefined; +}; + +/** + * Setup source that imported this deployment + */ +export const DeploymentDetailResponseImportSource = { + Cloudformation: "cloudformation", + Terraform: "terraform", + Helm: "helm", +} as const; +/** + * Setup source that imported this deployment + */ +export type DeploymentDetailResponseImportSource = ClosedEnum< + typeof DeploymentDetailResponseImportSource +>; + +/** + * Setup method that created the deployment record and owns setup-time resources. + */ +export const DeploymentDetailResponseSetupMethod = { + Cloudformation: "cloudformation", + GoogleOauth: "google-oauth", + Terraform: "terraform", + Helm: "helm", + Cli: "cli", + Manual: "manual", +} as const; +/** + * Setup method that created the deployment record and owns setup-time resources. + */ +export type DeploymentDetailResponseSetupMethod = ClosedEnum< + typeof DeploymentDetailResponseSetupMethod +>; + +/** + * Latest error information if the deployment is in a failed state + */ +export type DeploymentDetailResponseError = { + /** + * A unique identifier for the type of error. + * + * @remarks + * + * This should be a short, machine-readable string that can be used + * by clients to programmatically handle different error types. + * Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" + */ + code: string; + /** + * Additional diagnostic information about the error context. + * + * @remarks + * + * This optional field can contain structured data providing more details + * about the error, such as validation errors, request parameters that + * caused the issue, or other relevant context information. + */ + context?: any | null | undefined; + /** + * Optional human-facing remediation hint. + */ + hint?: string | null | undefined; + /** + * HTTP status code for this error. + * + * @remarks + * + * Used when converting the error to an HTTP response. If None, falls back to + * the error type's default status code or 500. + */ + httpStatusCode?: number | null | undefined; + /** + * Indicates if this is an internal error that should not be exposed to users. + * + * @remarks + * + * When `true`, this error contains sensitive information or implementation + * details that should not be shown to end-users. Such errors should be + * logged for debugging but replaced with generic error messages in responses. + */ + internal: boolean; + /** + * Human-readable error message. + * + * @remarks + * + * This message should be clear and actionable for developers or end-users, + * providing context about what went wrong and potentially how to fix it. + */ + message: string; + /** + * Indicates whether the operation that caused the error should be retried. + * + * @remarks + * + * When `true`, the error is transient and the operation might succeed + * if attempted again. When `false`, retrying the same operation is + * unlikely to succeed without changes. + */ + retryable: boolean; + /** + * The underlying error that caused this error, creating an error chain. + * + * @remarks + * + * This allows for proper error propagation and debugging by maintaining + * the full context of how an error occurred through multiple layers + * of an application. + */ + source?: any | null | undefined; +}; + +/** + * Snapshot of target environment variables for the deployment + */ +export type DeploymentDetailResponseTargetEnvironmentVariables = { + /** + * Environment variables in the snapshot + */ + variables: Array; + /** + * Deterministic hash of all variables for change detection + */ + hash: string; + /** + * ISO 8601 timestamp when snapshot was created + */ + createdAt: Date; +}; + +/** + * Snapshot of current environment variables for the deployment + */ +export type DeploymentDetailResponseCurrentEnvironmentVariables = { + /** + * Environment variables in the snapshot + */ + variables: Array; + /** + * Deterministic hash of all variables for change detection + */ + hash: string; + /** + * ISO 8601 timestamp when snapshot was created + */ + createdAt: Date; +}; + +/** + * Durable progress for deployment updates + */ +export type DeploymentDetailResponseUpdateState = { + active: DeploymentUpdateOperationSummary | null; + next: DeploymentUpdateOperationSummary | null; + latest: DeploymentUpdateOperationSummary | null; +}; + +export type DeploymentDetailResponse = { + /** + * Unique identifier for the deployment. + */ + id: string; + /** + * Deployment name. + */ + name: string; + /** + * Public subdomain for auto-generated domains + */ + publicSubdomain?: string | null | undefined; + /** + * Deployment status in the deployment lifecycle. + * + * @remarks + * + * For observe-only deployments with no release or stack state, `Running` + * means the Operator is attached. Connectivity comes from `lastHeartbeatAt`; + * resource health comes from inventory and resource heartbeat data. + */ + status: DeploymentDetailResponseStatus; + /** + * Unique identifier for the project. + */ + projectId: string; + /** + * Target platform for the deployment + */ + platform: DeploymentDetailResponsePlatform; + /** + * Underlying cloud platform for Kubernetes deployments. + */ + basePlatform?: DeploymentDetailResponseBasePlatform | null | undefined; + /** + * Cloud region or location for the deployment. + */ + region?: string | null | undefined; + /** + * DeploymentState protocol version owned by the runtime/manager + */ + deploymentProtocolVersion: number; + /** + * ID of deployment group this deployment belongs to + */ + deploymentGroupId: string; + /** + * Operational purpose of this deployment within its customer environment. + */ + purpose: DeploymentPurpose; + /** + * Cloud environment information + */ + environmentInfo?: + | DeploymentDetailResponseEnvironmentInfoGcp + | DeploymentDetailResponseEnvironmentInfoAzure + | DeploymentDetailResponseEnvironmentInfoLocal + | DeploymentDetailResponseEnvironmentInfoAws + | DeploymentDetailResponseEnvironmentInfoTest + | any + | null + | undefined; + /** + * User-provided configuration (network, deployment model, approvals) + */ + stackSettings: DeploymentDetailResponseStackSettings; + /** + * State of infrastructure components managed by this deployment + */ + stackState?: DeploymentDetailResponseStackState | null | undefined; + /** + * Runtime metadata for deployment state persistence + */ + runtimeMetadata?: DeploymentDetailResponseRuntimeMetadata | null | undefined; + /** + * ID of the currently deployed release (actual state) + */ + currentReleaseId?: string | null | undefined; + /** + * ID of the desired release for deployment/update (desired state) + */ + desiredReleaseId?: string | null | undefined; + /** + * ID of the pinned release + */ + pinnedReleaseId?: string | null | undefined; + releaseChannel: string; + /** + * Setup source that imported this deployment + */ + importSource?: DeploymentDetailResponseImportSource | null | undefined; + /** + * Setup method that created the deployment record and owns setup-time resources. + */ + setupMethod?: DeploymentDetailResponseSetupMethod | null | undefined; + /** + * Setup method metadata needed to guide privileged teardown. + */ + setupMetadata?: { [k: string]: any | null } | null | undefined; + /** + * Imported setup target for compatibility checks + */ + setupTarget?: string | null | undefined; + /** + * Imported setup compatibility fingerprint + */ + setupFingerprint?: string | null | undefined; + /** + * Imported setup fingerprint algorithm version + */ + setupFingerprintVersion?: number | null | undefined; + /** + * Display-only scope reported by the Operator manifest + */ + operatorScope?: string | null | undefined; + /** + * Display-only permission tier reported by the Operator manifest + */ + operatorPermission?: string | null | undefined; + /** + * Version reported by the Operator + */ + operatorVersion?: string | null | undefined; + /** + * Capability state reported by the Operator + */ + capabilities?: Array | null | undefined; + /** + * Whether a retry has been requested for a failed deployment + */ + retryRequested: boolean; + /** + * Timestamp of the last received heartbeat from the deployment + */ + lastHeartbeatAt?: Date | null | undefined; + /** + * Latest error information if the deployment is in a failed state + */ + error?: DeploymentDetailResponseError | null | undefined; + /** + * Configuration of environment variables for the deployment + */ + environmentVariables?: Array | null | undefined; + /** + * Snapshot of target environment variables for the deployment + */ + targetEnvironmentVariables?: + | DeploymentDetailResponseTargetEnvironmentVariables + | null + | undefined; + /** + * Snapshot of current environment variables for the deployment + */ + currentEnvironmentVariables?: + | DeploymentDetailResponseCurrentEnvironmentVariables + | null + | undefined; + /** + * Durable progress for deployment updates + */ + updateState?: DeploymentDetailResponseUpdateState | undefined; + createdAt: Date; + updatedAt: Date; + managerId: string; + /** + * Unique identifier for the workspace. + */ + workspaceId: string; + release?: DeploymentReleaseInfo | null | undefined; + deploymentGroup?: DeploymentGroupInfo | undefined; + project?: DeploymentProjectInfo | undefined; +}; + +/** @internal */ +export const DeploymentDetailResponseStatus$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponseStatus +> = z.enum(DeploymentDetailResponseStatus); + +/** @internal */ +export const DeploymentDetailResponsePlatform$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponsePlatform +> = z.enum(DeploymentDetailResponsePlatform); + +/** @internal */ +export const DeploymentDetailResponseBasePlatform$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponseBasePlatform +> = z.enum(DeploymentDetailResponseBasePlatform); + +/** @internal */ +export const DeploymentDetailResponsePlatformTest$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponsePlatformTest +> = z.enum(DeploymentDetailResponsePlatformTest); + +/** @internal */ +export const DeploymentDetailResponseEnvironmentInfoTest$inboundSchema: + z.ZodType = z.object({ + testId: z.string(), + platform: DeploymentDetailResponsePlatformTest$inboundSchema, + }); + +export function deploymentDetailResponseEnvironmentInfoTestFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseEnvironmentInfoTest, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseEnvironmentInfoTest$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseEnvironmentInfoTest' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponsePlatformLocal$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponsePlatformLocal +> = z.enum(DeploymentDetailResponsePlatformLocal); + +/** @internal */ +export const DeploymentDetailResponseEnvironmentInfoLocal$inboundSchema: + z.ZodType = z.object({ + arch: z.string(), + hostname: z.string(), + os: z.string(), + platform: DeploymentDetailResponsePlatformLocal$inboundSchema, + }); + +export function deploymentDetailResponseEnvironmentInfoLocalFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseEnvironmentInfoLocal, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseEnvironmentInfoLocal$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseEnvironmentInfoLocal' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponsePlatformAzure$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponsePlatformAzure +> = z.enum(DeploymentDetailResponsePlatformAzure); + +/** @internal */ +export const DeploymentDetailResponseEnvironmentInfoAzure$inboundSchema: + z.ZodType = z.object({ + location: z.string(), + subscriptionId: z.string(), + tenantId: z.string(), + platform: DeploymentDetailResponsePlatformAzure$inboundSchema, + }); + +export function deploymentDetailResponseEnvironmentInfoAzureFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseEnvironmentInfoAzure, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseEnvironmentInfoAzure$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseEnvironmentInfoAzure' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponsePlatformGcp$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponsePlatformGcp +> = z.enum(DeploymentDetailResponsePlatformGcp); + +/** @internal */ +export const DeploymentDetailResponseEnvironmentInfoGcp$inboundSchema: + z.ZodType = z.object({ + projectId: z.string(), + projectNumber: z.string(), + region: z.string(), + platform: DeploymentDetailResponsePlatformGcp$inboundSchema, + }); + +export function deploymentDetailResponseEnvironmentInfoGcpFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseEnvironmentInfoGcp, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseEnvironmentInfoGcp$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseEnvironmentInfoGcp' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponsePlatformAws$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponsePlatformAws +> = z.enum(DeploymentDetailResponsePlatformAws); + +/** @internal */ +export const DeploymentDetailResponseEnvironmentInfoAws$inboundSchema: + z.ZodType = z.object({ + accountId: z.string(), + region: z.string(), + platform: DeploymentDetailResponsePlatformAws$inboundSchema, + }); + +export function deploymentDetailResponseEnvironmentInfoAwsFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseEnvironmentInfoAws, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseEnvironmentInfoAws$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseEnvironmentInfoAws' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseEnvironmentInfoUnion$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => DeploymentDetailResponseEnvironmentInfoGcp$inboundSchema), + z.lazy(() => DeploymentDetailResponseEnvironmentInfoAzure$inboundSchema), + z.lazy(() => DeploymentDetailResponseEnvironmentInfoLocal$inboundSchema), + z.lazy(() => DeploymentDetailResponseEnvironmentInfoAws$inboundSchema), + z.lazy(() => DeploymentDetailResponseEnvironmentInfoTest$inboundSchema), + z.any(), + ]); + +export function deploymentDetailResponseEnvironmentInfoUnionFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseEnvironmentInfoUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseEnvironmentInfoUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseEnvironmentInfoUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseFailureDomains2$inboundSchema: z.ZodType< + DeploymentDetailResponseFailureDomains2, + unknown +> = z.object({ + selectedFailureDomains: z.array(z.string()).optional(), + spread: z.int(), +}); + +export function deploymentDetailResponseFailureDomains2FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseFailureDomains2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseFailureDomains2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseFailureDomains2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseFailureDomainsUnion2$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => DeploymentDetailResponseFailureDomains2$inboundSchema), + z.any(), + ]); + +export function deploymentDetailResponseFailureDomainsUnion2FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseFailureDomainsUnion2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseFailureDomainsUnion2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseFailureDomainsUnion2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponsePoolsAutoscale$inboundSchema: z.ZodType< + DeploymentDetailResponsePoolsAutoscale, + unknown +> = z.object({ + failure_domains: z.nullable( + z.union([ + z.lazy(() => DeploymentDetailResponseFailureDomains2$inboundSchema), + z.any(), + ]), + ).optional(), + machine: z.nullable(z.string()).optional(), + max: z.int(), + min: z.int(), + mode: z.literal("autoscale"), +}).transform((v) => { + return remap$(v, { + "failure_domains": "failureDomains", + }); +}); + +export function deploymentDetailResponsePoolsAutoscaleFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponsePoolsAutoscale$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePoolsAutoscale' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseFailureDomains1$inboundSchema: z.ZodType< + DeploymentDetailResponseFailureDomains1, + unknown +> = z.object({ + selectedFailureDomains: z.array(z.string()).optional(), + spread: z.int(), +}); + +export function deploymentDetailResponseFailureDomains1FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseFailureDomains1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseFailureDomains1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseFailureDomains1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseFailureDomainsUnion1$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => DeploymentDetailResponseFailureDomains1$inboundSchema), + z.any(), + ]); + +export function deploymentDetailResponseFailureDomainsUnion1FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseFailureDomainsUnion1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseFailureDomainsUnion1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseFailureDomainsUnion1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponsePoolsFixed$inboundSchema: z.ZodType< + DeploymentDetailResponsePoolsFixed, + unknown +> = z.object({ + failure_domains: z.nullable( + z.union([ + z.lazy(() => DeploymentDetailResponseFailureDomains1$inboundSchema), + z.any(), + ]), + ).optional(), + machine: z.nullable(z.string()).optional(), + machines: z.int(), + mode: z.literal("fixed"), +}).transform((v) => { + return remap$(v, { + "failure_domains": "failureDomains", + }); +}); + +export function deploymentDetailResponsePoolsFixedFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponsePoolsFixed$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePoolsFixed' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponsePoolsUnion$inboundSchema: z.ZodType< + DeploymentDetailResponsePoolsUnion, + unknown +> = z.union([ + z.lazy(() => DeploymentDetailResponsePoolsFixed$inboundSchema), + z.lazy(() => DeploymentDetailResponsePoolsAutoscale$inboundSchema), +]); + +export function deploymentDetailResponsePoolsUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponsePoolsUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePoolsUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseCompute$inboundSchema: z.ZodType< + DeploymentDetailResponseCompute, + unknown +> = z.object({ + pools: z.record( + z.string(), + z.union([ + z.lazy(() => DeploymentDetailResponsePoolsFixed$inboundSchema), + z.lazy(() => DeploymentDetailResponsePoolsAutoscale$inboundSchema), + ]), + ).optional(), +}); + +export function deploymentDetailResponseComputeFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentDetailResponseCompute$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseCompute' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseComputeUnion$inboundSchema: z.ZodType< + DeploymentDetailResponseComputeUnion, + unknown +> = z.union([ + z.lazy(() => DeploymentDetailResponseCompute$inboundSchema), + z.any(), +]); + +export function deploymentDetailResponseComputeUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseComputeUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseComputeUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseDeploymentModel$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponseDeploymentModel +> = z.enum(DeploymentDetailResponseDeploymentModel); + +/** @internal */ +export const DeploymentDetailResponseAws$inboundSchema: z.ZodType< + DeploymentDetailResponseAws, + unknown +> = z.object({ + certificateArn: z.string(), +}); + +export function deploymentDetailResponseAwsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentDetailResponseAws$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseAws' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseAwsUnion$inboundSchema: z.ZodType< + DeploymentDetailResponseAwsUnion, + unknown +> = z.union([z.lazy(() => DeploymentDetailResponseAws$inboundSchema), z.any()]); + +export function deploymentDetailResponseAwsUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentDetailResponseAwsUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseAwsUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseAzureStackSettings$inboundSchema: + z.ZodType = z.object({ + keyVaultCertificateId: z.string(), + keyVaultResourceId: z.nullable(z.string()).optional(), + }); + +export function deploymentDetailResponseAzureStackSettingsFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseAzureStackSettings, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseAzureStackSettings$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseAzureStackSettings' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseAzureUnion$inboundSchema: z.ZodType< + DeploymentDetailResponseAzureUnion, + unknown +> = z.union([ + z.lazy(() => DeploymentDetailResponseAzureStackSettings$inboundSchema), + z.any(), +]); + +export function deploymentDetailResponseAzureUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseAzureUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseAzureUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseGcpStackSettings$inboundSchema: z.ZodType< + DeploymentDetailResponseGcpStackSettings, + unknown +> = z.object({ + certificateName: z.string(), +}); + +export function deploymentDetailResponseGcpStackSettingsFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseGcpStackSettings, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseGcpStackSettings$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseGcpStackSettings' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseGcpUnion$inboundSchema: z.ZodType< + DeploymentDetailResponseGcpUnion, + unknown +> = z.union([ + z.lazy(() => DeploymentDetailResponseGcpStackSettings$inboundSchema), + z.any(), +]); + +export function deploymentDetailResponseGcpUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentDetailResponseGcpUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseGcpUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseTlsSecretRef$inboundSchema: z.ZodType< + DeploymentDetailResponseTlsSecretRef, + unknown +> = z.object({ + namespace: z.nullable(z.string()).optional(), + secretName: z.string(), +}); + +export function deploymentDetailResponseTlsSecretRefFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseTlsSecretRef$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseTlsSecretRef' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseDomainsKubernetes$inboundSchema: z.ZodType< + DeploymentDetailResponseDomainsKubernetes, + unknown +> = z.object({ + tlsSecretRef: z.lazy(() => + DeploymentDetailResponseTlsSecretRef$inboundSchema + ), +}); + +export function deploymentDetailResponseDomainsKubernetesFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseDomainsKubernetes, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseDomainsKubernetes$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseDomainsKubernetes' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseDomainsKubernetesUnion$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => DeploymentDetailResponseDomainsKubernetes$inboundSchema), + z.any(), + ]); + +export function deploymentDetailResponseDomainsKubernetesUnionFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseDomainsKubernetesUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseDomainsKubernetesUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseDomainsKubernetesUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseDomainsCertificate$inboundSchema: + z.ZodType = z.object({ + aws: z.nullable( + z.union([ + z.lazy(() => DeploymentDetailResponseAws$inboundSchema), + z.any(), + ]), + ).optional(), + azure: z.nullable( + z.union([ + z.lazy(() => DeploymentDetailResponseAzureStackSettings$inboundSchema), + z.any(), + ]), + ).optional(), + gcp: z.nullable( + z.union([ + z.lazy(() => DeploymentDetailResponseGcpStackSettings$inboundSchema), + z.any(), + ]), + ).optional(), + kubernetes: z.nullable( + z.union([ + z.lazy(() => DeploymentDetailResponseDomainsKubernetes$inboundSchema), + z.any(), + ]), + ).optional(), + }); + +export function deploymentDetailResponseDomainsCertificateFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseDomainsCertificate, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseDomainsCertificate$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseDomainsCertificate' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseCustomDomains$inboundSchema: z.ZodType< + DeploymentDetailResponseCustomDomains, + unknown +> = z.object({ + certificate: z.lazy(() => + DeploymentDetailResponseDomainsCertificate$inboundSchema + ), + domain: z.string(), +}); + +export function deploymentDetailResponseCustomDomainsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseCustomDomains$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseCustomDomains' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseModeLoadBalancer$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponseModeLoadBalancer +> = z.enum(DeploymentDetailResponseModeLoadBalancer); + +/** @internal */ +export const DeploymentDetailResponsePublicEndpointTargetLoadBalancer$inboundSchema: + z.ZodType = + z.object({ + cnameTarget: z.string(), + mode: DeploymentDetailResponseModeLoadBalancer$inboundSchema, + }); + +export function deploymentDetailResponsePublicEndpointTargetLoadBalancerFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponsePublicEndpointTargetLoadBalancer, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponsePublicEndpointTargetLoadBalancer$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePublicEndpointTargetLoadBalancer' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseModeMachineAddresses$inboundSchema: + z.ZodEnum = z.enum( + DeploymentDetailResponseModeMachineAddresses, + ); + +/** @internal */ +export const DeploymentDetailResponsePublicEndpointTargetMachineAddresses$inboundSchema: + z.ZodType< + DeploymentDetailResponsePublicEndpointTargetMachineAddresses, + unknown + > = z.object({ + mode: DeploymentDetailResponseModeMachineAddresses$inboundSchema, + }); + +export function deploymentDetailResponsePublicEndpointTargetMachineAddressesFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponsePublicEndpointTargetMachineAddresses, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponsePublicEndpointTargetMachineAddresses$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePublicEndpointTargetMachineAddresses' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponsePublicEndpointTargetUnion$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => + DeploymentDetailResponsePublicEndpointTargetLoadBalancer$inboundSchema + ), + z.lazy(() => + DeploymentDetailResponsePublicEndpointTargetMachineAddresses$inboundSchema + ), + z.any(), + ]); + +export function deploymentDetailResponsePublicEndpointTargetUnionFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponsePublicEndpointTargetUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponsePublicEndpointTargetUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponsePublicEndpointTargetUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseDomains$inboundSchema: z.ZodType< + DeploymentDetailResponseDomains, + unknown +> = z.object({ + customDomains: z.nullable( + z.record( + z.string(), + z.lazy(() => DeploymentDetailResponseCustomDomains$inboundSchema), + ), + ).optional(), + publicEndpointTarget: z.nullable( + z.union([ + z.lazy(() => + DeploymentDetailResponsePublicEndpointTargetLoadBalancer$inboundSchema + ), + z.lazy(() => + DeploymentDetailResponsePublicEndpointTargetMachineAddresses$inboundSchema + ), + z.any(), + ]), + ).optional(), +}); + +export function deploymentDetailResponseDomainsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentDetailResponseDomains$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseDomains' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseDomainsUnion$inboundSchema: z.ZodType< + DeploymentDetailResponseDomainsUnion, + unknown +> = z.union([ + z.lazy(() => DeploymentDetailResponseDomains$inboundSchema), + z.any(), +]); + +export function deploymentDetailResponseDomainsUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseDomainsUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseDomainsUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseExternalBindings$inboundSchema: z.ZodType< + DeploymentDetailResponseExternalBindings, + unknown +> = z.object({}); + +export function deploymentDetailResponseExternalBindingsFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseExternalBindings, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseExternalBindings$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseExternalBindings' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseHeartbeats$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponseHeartbeats +> = z.enum(DeploymentDetailResponseHeartbeats); + +/** @internal */ +export const DeploymentDetailResponseCloud$inboundSchema: z.ZodType< + DeploymentDetailResponseCloud, + unknown +> = z.object({ + accountId: z.nullable(z.string()).optional(), + clusterId: z.nullable(z.string()).optional(), + clusterName: z.nullable(z.string()).optional(), + projectId: z.nullable(z.string()).optional(), + region: z.nullable(z.string()).optional(), + resourceGroup: z.nullable(z.string()).optional(), + subscriptionId: z.nullable(z.string()).optional(), +}); + +export function deploymentDetailResponseCloudFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentDetailResponseCloud$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseCloud' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseCloudUnion$inboundSchema: z.ZodType< + DeploymentDetailResponseCloudUnion, + unknown +> = z.union([ + z.lazy(() => DeploymentDetailResponseCloud$inboundSchema), + z.any(), +]); + +export function deploymentDetailResponseCloudUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseCloudUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseCloudUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseOwnership$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponseOwnership +> = z.enum(DeploymentDetailResponseOwnership); + +/** @internal */ +export const DeploymentDetailResponseCluster$inboundSchema: z.ZodType< + DeploymentDetailResponseCluster, + unknown +> = z.object({ + cloud: z.nullable( + z.union([ + z.lazy(() => DeploymentDetailResponseCloud$inboundSchema), + z.any(), + ]), + ).optional(), + namespace: z.nullable(z.string()).optional(), + ownership: DeploymentDetailResponseOwnership$inboundSchema, +}); + +export function deploymentDetailResponseClusterFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentDetailResponseCluster$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseCluster' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseClusterUnion$inboundSchema: z.ZodType< + DeploymentDetailResponseClusterUnion, + unknown +> = z.union([ + z.lazy(() => DeploymentDetailResponseCluster$inboundSchema), + z.any(), +]); + +export function deploymentDetailResponseClusterUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseClusterUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseClusterUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseCertificateNone2$inboundSchema: z.ZodType< + DeploymentDetailResponseCertificateNone2, + unknown +> = z.object({ + mode: z.literal("none"), +}); + +export function deploymentDetailResponseCertificateNone2FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseCertificateNone2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseCertificateNone2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseCertificateNone2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseCertificateManagedTLSSecret2$inboundSchema: + z.ZodType = z + .object({ + mode: z.literal("managedTlsSecret"), + secretNameTemplate: z.string(), + }); + +export function deploymentDetailResponseCertificateManagedTLSSecret2FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseCertificateManagedTLSSecret2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseCertificateManagedTLSSecret2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseCertificateManagedTLSSecret2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseCertificateAwsAcmArn2$inboundSchema: + z.ZodType = z.object({ + certificateArn: z.string(), + mode: z.literal("awsAcmArn"), + }); + +export function deploymentDetailResponseCertificateAwsAcmArn2FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseCertificateAwsAcmArn2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseCertificateAwsAcmArn2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseCertificateAwsAcmArn2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseCertificateManagedAcmImport2$inboundSchema: + z.ZodType = z + .object({ + mode: z.literal("managedAcmImport"), + region: z.nullable(z.string()).optional(), + tags: z.record(z.string(), z.string()).optional(), + }); + +export function deploymentDetailResponseCertificateManagedAcmImport2FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseCertificateManagedAcmImport2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseCertificateManagedAcmImport2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseCertificateManagedAcmImport2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseCertificateTLSSecretRef2$inboundSchema: + z.ZodType = z + .object({ + namespace: z.nullable(z.string()).optional(), + secretName: z.string(), + mode: z.literal("tlsSecretRef"), + }); + +export function deploymentDetailResponseCertificateTLSSecretRef2FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseCertificateTLSSecretRef2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseCertificateTLSSecretRef2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseCertificateTLSSecretRef2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseCertificateUnion2$inboundSchema: z.ZodType< + DeploymentDetailResponseCertificateUnion2, + unknown +> = z.union([ + z.lazy(() => DeploymentDetailResponseCertificateTLSSecretRef2$inboundSchema), + z.lazy(() => + DeploymentDetailResponseCertificateManagedAcmImport2$inboundSchema + ), + z.lazy(() => DeploymentDetailResponseCertificateAwsAcmArn2$inboundSchema), + z.lazy(() => + DeploymentDetailResponseCertificateManagedTLSSecret2$inboundSchema + ), + z.lazy(() => DeploymentDetailResponseCertificateNone2$inboundSchema), +]); + +export function deploymentDetailResponseCertificateUnion2FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseCertificateUnion2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseCertificateUnion2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseCertificateUnion2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseModeCustom$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponseModeCustom +> = z.enum(DeploymentDetailResponseModeCustom); + +/** @internal */ +export const DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum4$inboundSchema: + z.ZodEnum< + typeof DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum4 + > = z.enum( + DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum4, + ); + +/** @internal */ +export const DeploymentDetailResponseProviderAzureApplicationGatewayForContainers4$inboundSchema: + z.ZodType< + DeploymentDetailResponseProviderAzureApplicationGatewayForContainers4, + unknown + > = z.object({ + albName: z.nullable(z.string()).optional(), + albNamespace: z.nullable(z.string()).optional(), + frontend: z.string(), + provider: + DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum4$inboundSchema, + }); + +export function deploymentDetailResponseProviderAzureApplicationGatewayForContainers4FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseProviderAzureApplicationGatewayForContainers4, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseProviderAzureApplicationGatewayForContainers4$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseProviderAzureApplicationGatewayForContainers4' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseProviderGkeGatewayEnum4$inboundSchema: + z.ZodEnum = z.enum( + DeploymentDetailResponseProviderGkeGatewayEnum4, + ); + +/** @internal */ +export const DeploymentDetailResponseProviderGkeGateway4$inboundSchema: + z.ZodType = z.object({ + provider: DeploymentDetailResponseProviderGkeGatewayEnum4$inboundSchema, + staticAddressName: z.nullable(z.string()).optional(), + }); + +export function deploymentDetailResponseProviderGkeGateway4FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseProviderGkeGateway4, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseProviderGkeGateway4$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseProviderGkeGateway4' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseProviderAwsAlbEnum4$inboundSchema: + z.ZodEnum = z.enum( + DeploymentDetailResponseProviderAwsAlbEnum4, + ); + +/** @internal */ +export const DeploymentDetailResponseProviderAwsAlb4$inboundSchema: z.ZodType< + DeploymentDetailResponseProviderAwsAlb4, + unknown +> = z.object({ + ipAddressType: z.nullable(z.string()).optional(), + provider: DeploymentDetailResponseProviderAwsAlbEnum4$inboundSchema, + scheme: z.string(), + subnetIds: z.array(z.string()).optional(), + targetType: z.string(), +}); + +export function deploymentDetailResponseProviderAwsAlb4FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseProviderAwsAlb4, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseProviderAwsAlb4$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseProviderAwsAlb4' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseProviderUnion4$inboundSchema: z.ZodType< + DeploymentDetailResponseProviderUnion4, + unknown +> = z.union([ + z.lazy(() => DeploymentDetailResponseProviderAwsAlb4$inboundSchema), + z.lazy(() => + DeploymentDetailResponseProviderAzureApplicationGatewayForContainers4$inboundSchema + ), + z.lazy(() => DeploymentDetailResponseProviderGkeGateway4$inboundSchema), + z.any(), +]); + +export function deploymentDetailResponseProviderUnion4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseProviderUnion4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseProviderUnion4' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseRouteGateway2$inboundSchema: z.ZodType< + DeploymentDetailResponseRouteGateway2, + unknown +> = z.object({ + annotations: z.record(z.string(), z.string()).optional(), + controller: z.nullable(z.string()).optional(), + gatewayClassName: z.string(), + labels: z.record(z.string(), z.string()).optional(), + listenerPort: z.int(), + provider: z.nullable( + z.union([ + z.lazy(() => DeploymentDetailResponseProviderAwsAlb4$inboundSchema), + z.lazy(() => + DeploymentDetailResponseProviderAzureApplicationGatewayForContainers4$inboundSchema + ), + z.lazy(() => DeploymentDetailResponseProviderGkeGateway4$inboundSchema), + z.any(), + ]), + ).optional(), + routeApi: z.literal("gateway"), +}); + +export function deploymentDetailResponseRouteGateway2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseRouteGateway2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseRouteGateway2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum3$inboundSchema: + z.ZodEnum< + typeof DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum3 + > = z.enum( + DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum3, + ); + +/** @internal */ +export const DeploymentDetailResponseProviderAzureApplicationGatewayForContainers3$inboundSchema: + z.ZodType< + DeploymentDetailResponseProviderAzureApplicationGatewayForContainers3, + unknown + > = z.object({ + albName: z.nullable(z.string()).optional(), + albNamespace: z.nullable(z.string()).optional(), + frontend: z.string(), + provider: + DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum3$inboundSchema, + }); + +export function deploymentDetailResponseProviderAzureApplicationGatewayForContainers3FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseProviderAzureApplicationGatewayForContainers3, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseProviderAzureApplicationGatewayForContainers3$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseProviderAzureApplicationGatewayForContainers3' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseProviderGkeGatewayEnum3$inboundSchema: + z.ZodEnum = z.enum( + DeploymentDetailResponseProviderGkeGatewayEnum3, + ); + +/** @internal */ +export const DeploymentDetailResponseProviderGkeGateway3$inboundSchema: + z.ZodType = z.object({ + provider: DeploymentDetailResponseProviderGkeGatewayEnum3$inboundSchema, + staticAddressName: z.nullable(z.string()).optional(), + }); + +export function deploymentDetailResponseProviderGkeGateway3FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseProviderGkeGateway3, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseProviderGkeGateway3$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseProviderGkeGateway3' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseProviderAwsAlbEnum3$inboundSchema: + z.ZodEnum = z.enum( + DeploymentDetailResponseProviderAwsAlbEnum3, + ); + +/** @internal */ +export const DeploymentDetailResponseProviderAwsAlb3$inboundSchema: z.ZodType< + DeploymentDetailResponseProviderAwsAlb3, + unknown +> = z.object({ + ipAddressType: z.nullable(z.string()).optional(), + provider: DeploymentDetailResponseProviderAwsAlbEnum3$inboundSchema, + scheme: z.string(), + subnetIds: z.array(z.string()).optional(), + targetType: z.string(), +}); + +export function deploymentDetailResponseProviderAwsAlb3FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseProviderAwsAlb3, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseProviderAwsAlb3$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseProviderAwsAlb3' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseProviderUnion3$inboundSchema: z.ZodType< + DeploymentDetailResponseProviderUnion3, + unknown +> = z.union([ + z.lazy(() => DeploymentDetailResponseProviderAwsAlb3$inboundSchema), + z.lazy(() => + DeploymentDetailResponseProviderAzureApplicationGatewayForContainers3$inboundSchema + ), + z.lazy(() => DeploymentDetailResponseProviderGkeGateway3$inboundSchema), + z.any(), +]); + +export function deploymentDetailResponseProviderUnion3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseProviderUnion3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseProviderUnion3' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseRouteIngress2$inboundSchema: z.ZodType< + DeploymentDetailResponseRouteIngress2, + unknown +> = z.object({ + annotations: z.record(z.string(), z.string()).optional(), + controller: z.nullable(z.string()).optional(), + ingressClassName: z.string(), + labels: z.record(z.string(), z.string()).optional(), + provider: z.nullable( + z.union([ + z.lazy(() => DeploymentDetailResponseProviderAwsAlb3$inboundSchema), + z.lazy(() => + DeploymentDetailResponseProviderAzureApplicationGatewayForContainers3$inboundSchema + ), + z.lazy(() => DeploymentDetailResponseProviderGkeGateway3$inboundSchema), + z.any(), + ]), + ).optional(), + routeApi: z.literal("ingress"), +}); + +export function deploymentDetailResponseRouteIngress2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseRouteIngress2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseRouteIngress2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseRouteUnion2$inboundSchema: z.ZodType< + DeploymentDetailResponseRouteUnion2, + unknown +> = z.union([ + z.lazy(() => DeploymentDetailResponseRouteIngress2$inboundSchema), + z.lazy(() => DeploymentDetailResponseRouteGateway2$inboundSchema), +]); + +export function deploymentDetailResponseRouteUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseRouteUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseRouteUnion2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseExposureCustom$inboundSchema: z.ZodType< + DeploymentDetailResponseExposureCustom, + unknown +> = z.object({ + certificate: z.union([ + z.lazy(() => + DeploymentDetailResponseCertificateTLSSecretRef2$inboundSchema + ), + z.lazy(() => + DeploymentDetailResponseCertificateManagedAcmImport2$inboundSchema + ), + z.lazy(() => DeploymentDetailResponseCertificateAwsAcmArn2$inboundSchema), + z.lazy(() => + DeploymentDetailResponseCertificateManagedTLSSecret2$inboundSchema + ), + z.lazy(() => DeploymentDetailResponseCertificateNone2$inboundSchema), + ]), + domain: z.string(), + mode: DeploymentDetailResponseModeCustom$inboundSchema, + route: z.union([ + z.lazy(() => DeploymentDetailResponseRouteIngress2$inboundSchema), + z.lazy(() => DeploymentDetailResponseRouteGateway2$inboundSchema), + ]), +}); + +export function deploymentDetailResponseExposureCustomFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseExposureCustom$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseExposureCustom' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseCertificateNone1$inboundSchema: z.ZodType< + DeploymentDetailResponseCertificateNone1, + unknown +> = z.object({ + mode: z.literal("none"), +}); + +export function deploymentDetailResponseCertificateNone1FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseCertificateNone1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseCertificateNone1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseCertificateNone1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseCertificateManagedTLSSecret1$inboundSchema: + z.ZodType = z + .object({ + mode: z.literal("managedTlsSecret"), + secretNameTemplate: z.string(), + }); + +export function deploymentDetailResponseCertificateManagedTLSSecret1FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseCertificateManagedTLSSecret1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseCertificateManagedTLSSecret1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseCertificateManagedTLSSecret1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseCertificateAwsAcmArn1$inboundSchema: + z.ZodType = z.object({ + certificateArn: z.string(), + mode: z.literal("awsAcmArn"), + }); + +export function deploymentDetailResponseCertificateAwsAcmArn1FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseCertificateAwsAcmArn1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseCertificateAwsAcmArn1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseCertificateAwsAcmArn1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseCertificateManagedAcmImport1$inboundSchema: + z.ZodType = z + .object({ + mode: z.literal("managedAcmImport"), + region: z.nullable(z.string()).optional(), + tags: z.record(z.string(), z.string()).optional(), + }); + +export function deploymentDetailResponseCertificateManagedAcmImport1FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseCertificateManagedAcmImport1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseCertificateManagedAcmImport1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseCertificateManagedAcmImport1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseCertificateTLSSecretRef1$inboundSchema: + z.ZodType = z + .object({ + namespace: z.nullable(z.string()).optional(), + secretName: z.string(), + mode: z.literal("tlsSecretRef"), + }); + +export function deploymentDetailResponseCertificateTLSSecretRef1FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseCertificateTLSSecretRef1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseCertificateTLSSecretRef1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseCertificateTLSSecretRef1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseCertificateUnion1$inboundSchema: z.ZodType< + DeploymentDetailResponseCertificateUnion1, + unknown +> = z.union([ + z.lazy(() => DeploymentDetailResponseCertificateTLSSecretRef1$inboundSchema), + z.lazy(() => + DeploymentDetailResponseCertificateManagedAcmImport1$inboundSchema + ), + z.lazy(() => DeploymentDetailResponseCertificateAwsAcmArn1$inboundSchema), + z.lazy(() => + DeploymentDetailResponseCertificateManagedTLSSecret1$inboundSchema + ), + z.lazy(() => DeploymentDetailResponseCertificateNone1$inboundSchema), +]); + +export function deploymentDetailResponseCertificateUnion1FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseCertificateUnion1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseCertificateUnion1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseCertificateUnion1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseModeGenerated$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponseModeGenerated +> = z.enum(DeploymentDetailResponseModeGenerated); + +/** @internal */ +export const DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum2$inboundSchema: + z.ZodEnum< + typeof DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum2 + > = z.enum( + DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum2, + ); + +/** @internal */ +export const DeploymentDetailResponseProviderAzureApplicationGatewayForContainers2$inboundSchema: + z.ZodType< + DeploymentDetailResponseProviderAzureApplicationGatewayForContainers2, + unknown + > = z.object({ + albName: z.nullable(z.string()).optional(), + albNamespace: z.nullable(z.string()).optional(), + frontend: z.string(), + provider: + DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum2$inboundSchema, + }); + +export function deploymentDetailResponseProviderAzureApplicationGatewayForContainers2FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseProviderAzureApplicationGatewayForContainers2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseProviderAzureApplicationGatewayForContainers2$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseProviderAzureApplicationGatewayForContainers2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseProviderGkeGatewayEnum2$inboundSchema: + z.ZodEnum = z.enum( + DeploymentDetailResponseProviderGkeGatewayEnum2, + ); + +/** @internal */ +export const DeploymentDetailResponseProviderGkeGateway2$inboundSchema: + z.ZodType = z.object({ + provider: DeploymentDetailResponseProviderGkeGatewayEnum2$inboundSchema, + staticAddressName: z.nullable(z.string()).optional(), + }); + +export function deploymentDetailResponseProviderGkeGateway2FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseProviderGkeGateway2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseProviderGkeGateway2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseProviderGkeGateway2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseProviderAwsAlbEnum2$inboundSchema: + z.ZodEnum = z.enum( + DeploymentDetailResponseProviderAwsAlbEnum2, + ); + +/** @internal */ +export const DeploymentDetailResponseProviderAwsAlb2$inboundSchema: z.ZodType< + DeploymentDetailResponseProviderAwsAlb2, + unknown +> = z.object({ + ipAddressType: z.nullable(z.string()).optional(), + provider: DeploymentDetailResponseProviderAwsAlbEnum2$inboundSchema, + scheme: z.string(), + subnetIds: z.array(z.string()).optional(), + targetType: z.string(), +}); + +export function deploymentDetailResponseProviderAwsAlb2FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseProviderAwsAlb2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseProviderAwsAlb2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseProviderAwsAlb2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseProviderUnion2$inboundSchema: z.ZodType< + DeploymentDetailResponseProviderUnion2, + unknown +> = z.union([ + z.lazy(() => DeploymentDetailResponseProviderAwsAlb2$inboundSchema), + z.lazy(() => + DeploymentDetailResponseProviderAzureApplicationGatewayForContainers2$inboundSchema + ), + z.lazy(() => DeploymentDetailResponseProviderGkeGateway2$inboundSchema), + z.any(), +]); + +export function deploymentDetailResponseProviderUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseProviderUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseProviderUnion2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseRouteGateway1$inboundSchema: z.ZodType< + DeploymentDetailResponseRouteGateway1, + unknown +> = z.object({ + annotations: z.record(z.string(), z.string()).optional(), + controller: z.nullable(z.string()).optional(), + gatewayClassName: z.string(), + labels: z.record(z.string(), z.string()).optional(), + listenerPort: z.int(), + provider: z.nullable( + z.union([ + z.lazy(() => DeploymentDetailResponseProviderAwsAlb2$inboundSchema), + z.lazy(() => + DeploymentDetailResponseProviderAzureApplicationGatewayForContainers2$inboundSchema + ), + z.lazy(() => DeploymentDetailResponseProviderGkeGateway2$inboundSchema), + z.any(), + ]), + ).optional(), + routeApi: z.literal("gateway"), +}); + +export function deploymentDetailResponseRouteGateway1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseRouteGateway1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseRouteGateway1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum1$inboundSchema: + z.ZodEnum< + typeof DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum1 + > = z.enum( + DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum1, + ); + +/** @internal */ +export const DeploymentDetailResponseProviderAzureApplicationGatewayForContainers1$inboundSchema: + z.ZodType< + DeploymentDetailResponseProviderAzureApplicationGatewayForContainers1, + unknown + > = z.object({ + albName: z.nullable(z.string()).optional(), + albNamespace: z.nullable(z.string()).optional(), + frontend: z.string(), + provider: + DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum1$inboundSchema, + }); + +export function deploymentDetailResponseProviderAzureApplicationGatewayForContainers1FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseProviderAzureApplicationGatewayForContainers1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseProviderAzureApplicationGatewayForContainers1$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseProviderAzureApplicationGatewayForContainers1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseProviderGkeGatewayEnum1$inboundSchema: + z.ZodEnum = z.enum( + DeploymentDetailResponseProviderGkeGatewayEnum1, + ); + +/** @internal */ +export const DeploymentDetailResponseProviderGkeGateway1$inboundSchema: + z.ZodType = z.object({ + provider: DeploymentDetailResponseProviderGkeGatewayEnum1$inboundSchema, + staticAddressName: z.nullable(z.string()).optional(), + }); + +export function deploymentDetailResponseProviderGkeGateway1FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseProviderGkeGateway1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseProviderGkeGateway1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseProviderGkeGateway1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseProviderAwsAlbEnum1$inboundSchema: + z.ZodEnum = z.enum( + DeploymentDetailResponseProviderAwsAlbEnum1, + ); + +/** @internal */ +export const DeploymentDetailResponseProviderAwsAlb1$inboundSchema: z.ZodType< + DeploymentDetailResponseProviderAwsAlb1, + unknown +> = z.object({ + ipAddressType: z.nullable(z.string()).optional(), + provider: DeploymentDetailResponseProviderAwsAlbEnum1$inboundSchema, + scheme: z.string(), + subnetIds: z.array(z.string()).optional(), + targetType: z.string(), +}); + +export function deploymentDetailResponseProviderAwsAlb1FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseProviderAwsAlb1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseProviderAwsAlb1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseProviderAwsAlb1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseProviderUnion1$inboundSchema: z.ZodType< + DeploymentDetailResponseProviderUnion1, + unknown +> = z.union([ + z.lazy(() => DeploymentDetailResponseProviderAwsAlb1$inboundSchema), + z.lazy(() => + DeploymentDetailResponseProviderAzureApplicationGatewayForContainers1$inboundSchema + ), + z.lazy(() => DeploymentDetailResponseProviderGkeGateway1$inboundSchema), + z.any(), +]); + +export function deploymentDetailResponseProviderUnion1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseProviderUnion1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseProviderUnion1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseRouteIngress1$inboundSchema: z.ZodType< + DeploymentDetailResponseRouteIngress1, + unknown +> = z.object({ + annotations: z.record(z.string(), z.string()).optional(), + controller: z.nullable(z.string()).optional(), + ingressClassName: z.string(), + labels: z.record(z.string(), z.string()).optional(), + provider: z.nullable( + z.union([ + z.lazy(() => DeploymentDetailResponseProviderAwsAlb1$inboundSchema), + z.lazy(() => + DeploymentDetailResponseProviderAzureApplicationGatewayForContainers1$inboundSchema + ), + z.lazy(() => DeploymentDetailResponseProviderGkeGateway1$inboundSchema), + z.any(), + ]), + ).optional(), + routeApi: z.literal("ingress"), +}); + +export function deploymentDetailResponseRouteIngress1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseRouteIngress1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseRouteIngress1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseRouteUnion1$inboundSchema: z.ZodType< + DeploymentDetailResponseRouteUnion1, + unknown +> = z.union([ + z.lazy(() => DeploymentDetailResponseRouteIngress1$inboundSchema), + z.lazy(() => DeploymentDetailResponseRouteGateway1$inboundSchema), +]); + +export function deploymentDetailResponseRouteUnion1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseRouteUnion1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseRouteUnion1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseExposureGenerated$inboundSchema: z.ZodType< + DeploymentDetailResponseExposureGenerated, + unknown +> = z.object({ + certificate: z.union([ + z.lazy(() => + DeploymentDetailResponseCertificateTLSSecretRef1$inboundSchema + ), + z.lazy(() => + DeploymentDetailResponseCertificateManagedAcmImport1$inboundSchema + ), + z.lazy(() => DeploymentDetailResponseCertificateAwsAcmArn1$inboundSchema), + z.lazy(() => + DeploymentDetailResponseCertificateManagedTLSSecret1$inboundSchema + ), + z.lazy(() => DeploymentDetailResponseCertificateNone1$inboundSchema), + ]), + mode: DeploymentDetailResponseModeGenerated$inboundSchema, + route: z.union([ + z.lazy(() => DeploymentDetailResponseRouteIngress1$inboundSchema), + z.lazy(() => DeploymentDetailResponseRouteGateway1$inboundSchema), + ]), +}); + +export function deploymentDetailResponseExposureGeneratedFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseExposureGenerated, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseExposureGenerated$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseExposureGenerated' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseModeDisabled$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponseModeDisabled +> = z.enum(DeploymentDetailResponseModeDisabled); + +/** @internal */ +export const DeploymentDetailResponseExposureDisabled$inboundSchema: z.ZodType< + DeploymentDetailResponseExposureDisabled, + unknown +> = z.object({ + mode: DeploymentDetailResponseModeDisabled$inboundSchema, +}); + +export function deploymentDetailResponseExposureDisabledFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseExposureDisabled, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseExposureDisabled$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseExposureDisabled' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseExposureUnion$inboundSchema: z.ZodType< + DeploymentDetailResponseExposureUnion, + unknown +> = z.union([ + z.lazy(() => DeploymentDetailResponseExposureCustom$inboundSchema), + z.lazy(() => DeploymentDetailResponseExposureGenerated$inboundSchema), + z.lazy(() => DeploymentDetailResponseExposureDisabled$inboundSchema), + z.any(), +]); + +export function deploymentDetailResponseExposureUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseExposureUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseExposureUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseKubernetes$inboundSchema: z.ZodType< + DeploymentDetailResponseKubernetes, + unknown +> = z.object({ + cluster: z.nullable( + z.union([ + z.lazy(() => DeploymentDetailResponseCluster$inboundSchema), + z.any(), + ]), + ).optional(), + exposure: z.nullable( + z.union([ + z.lazy(() => DeploymentDetailResponseExposureCustom$inboundSchema), + z.lazy(() => DeploymentDetailResponseExposureGenerated$inboundSchema), + z.lazy(() => DeploymentDetailResponseExposureDisabled$inboundSchema), + z.any(), + ]), + ).optional(), +}); + +export function deploymentDetailResponseKubernetesFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseKubernetes$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseKubernetes' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseKubernetesUnion$inboundSchema: z.ZodType< + DeploymentDetailResponseKubernetesUnion, + unknown +> = z.union([ + z.lazy(() => DeploymentDetailResponseKubernetes$inboundSchema), + z.any(), +]); + +export function deploymentDetailResponseKubernetesUnionFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseKubernetesUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseKubernetesUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseKubernetesUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseTypeByoVnetAzure$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponseTypeByoVnetAzure +> = z.enum(DeploymentDetailResponseTypeByoVnetAzure); + +/** @internal */ +export const DeploymentDetailResponseNetworkByoVnetAzure$inboundSchema: + z.ZodType = z.object({ + application_gateway_subnet_name: z.nullable(z.string()).optional(), + private_endpoint_subnet_name: z.nullable(z.string()).optional(), + private_subnet_name: z.string(), + public_subnet_name: z.string(), + type: DeploymentDetailResponseTypeByoVnetAzure$inboundSchema, + vnet_resource_id: z.string(), + }).transform((v) => { + return remap$(v, { + "application_gateway_subnet_name": "applicationGatewaySubnetName", + "private_endpoint_subnet_name": "privateEndpointSubnetName", + "private_subnet_name": "privateSubnetName", + "public_subnet_name": "publicSubnetName", + "vnet_resource_id": "vnetResourceId", + }); + }); + +export function deploymentDetailResponseNetworkByoVnetAzureFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseNetworkByoVnetAzure, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseNetworkByoVnetAzure$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseNetworkByoVnetAzure' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseTypeByoVpcGcp$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponseTypeByoVpcGcp +> = z.enum(DeploymentDetailResponseTypeByoVpcGcp); + +/** @internal */ +export const DeploymentDetailResponseNetworkByoVpcGcp$inboundSchema: z.ZodType< + DeploymentDetailResponseNetworkByoVpcGcp, + unknown +> = z.object({ + network_name: z.string(), + region: z.string(), + subnet_name: z.string(), + type: DeploymentDetailResponseTypeByoVpcGcp$inboundSchema, +}).transform((v) => { + return remap$(v, { + "network_name": "networkName", + "subnet_name": "subnetName", + }); +}); + +export function deploymentDetailResponseNetworkByoVpcGcpFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseNetworkByoVpcGcp, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseNetworkByoVpcGcp$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseNetworkByoVpcGcp' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseTypeByoVpcAws$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponseTypeByoVpcAws +> = z.enum(DeploymentDetailResponseTypeByoVpcAws); + +/** @internal */ +export const DeploymentDetailResponseNetworkByoVpcAws$inboundSchema: z.ZodType< + DeploymentDetailResponseNetworkByoVpcAws, + unknown +> = z.object({ + private_subnet_ids: z.array(z.string()), + public_subnet_ids: z.array(z.string()), + security_group_ids: z.array(z.string()).optional(), + type: DeploymentDetailResponseTypeByoVpcAws$inboundSchema, + vpc_id: z.string(), +}).transform((v) => { + return remap$(v, { + "private_subnet_ids": "privateSubnetIds", + "public_subnet_ids": "publicSubnetIds", + "security_group_ids": "securityGroupIds", + "vpc_id": "vpcId", + }); +}); + +export function deploymentDetailResponseNetworkByoVpcAwsFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseNetworkByoVpcAws, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseNetworkByoVpcAws$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseNetworkByoVpcAws' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseTypeCreate$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponseTypeCreate +> = z.enum(DeploymentDetailResponseTypeCreate); + +/** @internal */ +export const DeploymentDetailResponseNetworkCreate$inboundSchema: z.ZodType< + DeploymentDetailResponseNetworkCreate, + unknown +> = z.object({ + availability_zones: z.int().optional(), + cidr: z.nullable(z.string()).optional(), + type: DeploymentDetailResponseTypeCreate$inboundSchema, +}).transform((v) => { + return remap$(v, { + "availability_zones": "availabilityZones", + }); +}); + +export function deploymentDetailResponseNetworkCreateFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseNetworkCreate$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseNetworkCreate' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseTypeUseDefault$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponseTypeUseDefault +> = z.enum(DeploymentDetailResponseTypeUseDefault); + +/** @internal */ +export const DeploymentDetailResponseNetworkUseDefault$inboundSchema: z.ZodType< + DeploymentDetailResponseNetworkUseDefault, + unknown +> = z.object({ + type: DeploymentDetailResponseTypeUseDefault$inboundSchema, +}); + +export function deploymentDetailResponseNetworkUseDefaultFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseNetworkUseDefault, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseNetworkUseDefault$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseNetworkUseDefault' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseNetworkUnion$inboundSchema: z.ZodType< + DeploymentDetailResponseNetworkUnion, + unknown +> = z.union([ + z.lazy(() => DeploymentDetailResponseNetworkByoVpcAws$inboundSchema), + z.lazy(() => DeploymentDetailResponseNetworkByoVpcGcp$inboundSchema), + z.lazy(() => DeploymentDetailResponseNetworkByoVnetAzure$inboundSchema), + z.lazy(() => DeploymentDetailResponseNetworkUseDefault$inboundSchema), + z.lazy(() => DeploymentDetailResponseNetworkCreate$inboundSchema), + z.any(), +]); + +export function deploymentDetailResponseNetworkUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseNetworkUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseNetworkUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseTelemetry$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponseTelemetry +> = z.enum(DeploymentDetailResponseTelemetry); + +/** @internal */ +export const DeploymentDetailResponseUpdates$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponseUpdates +> = z.enum(DeploymentDetailResponseUpdates); + +/** @internal */ +export const DeploymentDetailResponseStackSettings$inboundSchema: z.ZodType< + DeploymentDetailResponseStackSettings, + unknown +> = z.object({ + compute: z.nullable( + z.union([ + z.lazy(() => DeploymentDetailResponseCompute$inboundSchema), + z.any(), + ]), + ).optional(), + deploymentModel: DeploymentDetailResponseDeploymentModel$inboundSchema + .optional(), + domains: z.nullable( + z.union([ + z.lazy(() => DeploymentDetailResponseDomains$inboundSchema), + z.any(), + ]), + ).optional(), + externalBindings: z.nullable( + z.lazy(() => DeploymentDetailResponseExternalBindings$inboundSchema), + ).optional(), + heartbeats: DeploymentDetailResponseHeartbeats$inboundSchema.optional(), + kubernetes: z.nullable( + z.union([ + z.lazy(() => DeploymentDetailResponseKubernetes$inboundSchema), + z.any(), + ]), + ).optional(), + network: z.nullable( + z.union([ + z.lazy(() => DeploymentDetailResponseNetworkByoVpcAws$inboundSchema), + z.lazy(() => DeploymentDetailResponseNetworkByoVpcGcp$inboundSchema), + z.lazy(() => DeploymentDetailResponseNetworkByoVnetAzure$inboundSchema), + z.lazy(() => DeploymentDetailResponseNetworkUseDefault$inboundSchema), + z.lazy(() => DeploymentDetailResponseNetworkCreate$inboundSchema), + z.any(), + ]), + ).optional(), + telemetry: DeploymentDetailResponseTelemetry$inboundSchema.optional(), + updates: DeploymentDetailResponseUpdates$inboundSchema.optional(), +}); + +export function deploymentDetailResponseStackSettingsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseStackSettings$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseStackSettings' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseStackStatePlatform$inboundSchema: + z.ZodEnum = z.enum( + DeploymentDetailResponseStackStatePlatform, + ); + +/** @internal */ +export const DeploymentDetailResponseStackStateConfig$inboundSchema: z.ZodType< + DeploymentDetailResponseStackStateConfig, + unknown +> = collectExtraKeys$( + z.object({ + id: z.string(), + type: z.string(), + }).catchall(z.any()), + "additionalProperties", + true, +); + +export function deploymentDetailResponseStackStateConfigFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseStackStateConfig, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseStackStateConfig$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseStackStateConfig' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseControllerPlatformEnum$inboundSchema: + z.ZodEnum = z.enum( + DeploymentDetailResponseControllerPlatformEnum, + ); + +/** @internal */ +export const DeploymentDetailResponseControllerPlatformUnion$inboundSchema: + z.ZodType = z.union( + [DeploymentDetailResponseControllerPlatformEnum$inboundSchema, z.any()], + ); + +export function deploymentDetailResponseControllerPlatformUnionFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseControllerPlatformUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseControllerPlatformUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseControllerPlatformUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseStackStateDependency$inboundSchema: + z.ZodType = z.object({ + id: z.string(), + type: z.string(), + }); + +export function deploymentDetailResponseStackStateDependencyFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseStackStateDependency, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseStackStateDependency$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseStackStateDependency' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseErrorStackState$inboundSchema: z.ZodType< + DeploymentDetailResponseErrorStackState, + unknown +> = z.object({ + code: z.string(), + context: z.nullable(z.any()).optional(), + hint: z.nullable(z.string()).optional(), + httpStatusCode: z.nullable(z.int()).optional(), + internal: z.boolean(), + message: z.string(), + retryable: z.boolean().default(false), + source: z.nullable(z.any()).optional(), +}); + +export function deploymentDetailResponseErrorStackStateFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseErrorStackState, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseErrorStackState$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseErrorStackState' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseErrorUnion$inboundSchema: z.ZodType< + DeploymentDetailResponseErrorUnion, + unknown +> = z.union([ + z.lazy(() => DeploymentDetailResponseErrorStackState$inboundSchema), + z.any(), +]); + +export function deploymentDetailResponseErrorUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseErrorUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseErrorUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseLifecycleStackStateEnum$inboundSchema: + z.ZodEnum = z.enum( + DeploymentDetailResponseLifecycleStackStateEnum, + ); + +/** @internal */ +export const DeploymentDetailResponseLifecycleUnion$inboundSchema: z.ZodType< + DeploymentDetailResponseLifecycleUnion, + unknown +> = z.union([ + DeploymentDetailResponseLifecycleStackStateEnum$inboundSchema, + z.any(), +]); + +export function deploymentDetailResponseLifecycleUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseLifecycleUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseLifecycleUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseOutputs$inboundSchema: z.ZodType< + DeploymentDetailResponseOutputs, + unknown +> = collectExtraKeys$( + z.object({ + type: z.string(), + }).catchall(z.any()), + "additionalProperties", + true, +); + +export function deploymentDetailResponseOutputsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentDetailResponseOutputs$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseOutputs' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseOutputsUnion$inboundSchema: z.ZodType< + DeploymentDetailResponseOutputsUnion, + unknown +> = z.union([ + z.lazy(() => DeploymentDetailResponseOutputs$inboundSchema), + z.any(), +]); + +export function deploymentDetailResponseOutputsUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseOutputsUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseOutputsUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponsePreviousConfig$inboundSchema: z.ZodType< + DeploymentDetailResponsePreviousConfig, + unknown +> = collectExtraKeys$( + z.object({ + id: z.string(), + type: z.string(), + }).catchall(z.any()), + "additionalProperties", + true, +); + +export function deploymentDetailResponsePreviousConfigFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponsePreviousConfig$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePreviousConfig' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponsePreviousConfigUnion$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => DeploymentDetailResponsePreviousConfig$inboundSchema), + z.any(), + ]); + +export function deploymentDetailResponsePreviousConfigUnionFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponsePreviousConfigUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponsePreviousConfigUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponsePreviousConfigUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseStackStateStatus$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponseStackStateStatus +> = z.enum(DeploymentDetailResponseStackStateStatus); + +/** @internal */ +export const DeploymentDetailResponseStackStateResources$inboundSchema: + z.ZodType = z.object({ + _internal: z.nullable(z.any()).optional(), + config: z.lazy(() => + DeploymentDetailResponseStackStateConfig$inboundSchema + ), + controllerPlatform: z.nullable( + z.union([ + DeploymentDetailResponseControllerPlatformEnum$inboundSchema, + z.any(), + ]), + ).optional(), + dependencies: z.array( + z.lazy(() => DeploymentDetailResponseStackStateDependency$inboundSchema), + ).optional(), + error: z.nullable( + z.union([ + z.lazy(() => DeploymentDetailResponseErrorStackState$inboundSchema), + z.any(), + ]), + ).optional(), + lastFailedState: z.nullable(z.any()).optional(), + lifecycle: z.nullable( + z.union([ + DeploymentDetailResponseLifecycleStackStateEnum$inboundSchema, + z.any(), + ]), + ).optional(), + outputs: z.nullable( + z.union([ + z.lazy(() => DeploymentDetailResponseOutputs$inboundSchema), + z.any(), + ]), + ).optional(), + previousConfig: z.nullable( + z.union([ + z.lazy(() => DeploymentDetailResponsePreviousConfig$inboundSchema), + z.any(), + ]), + ).optional(), + remoteBindingParams: z.nullable(z.any()).optional(), + retryAttempt: z.int().optional(), + status: DeploymentDetailResponseStackStateStatus$inboundSchema, + type: z.string(), + }).transform((v) => { + return remap$(v, { + "_internal": "internal", + }); }); -export function deploymentDetailResponseEnvironmentInfoTestFromJSON( +export function deploymentDetailResponseStackStateResourcesFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseEnvironmentInfoTest, + DeploymentDetailResponseStackStateResources, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseEnvironmentInfoTest$inboundSchema.parse( + DeploymentDetailResponseStackStateResources$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'DeploymentDetailResponseEnvironmentInfoTest' from JSON`, + `Failed to parse 'DeploymentDetailResponseStackStateResources' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponsePlatformLocal$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponsePlatformLocal -> = z.enum(DeploymentDetailResponsePlatformLocal); - -/** @internal */ -export const DeploymentDetailResponseEnvironmentInfoLocal$inboundSchema: - z.ZodType = z.object({ - arch: z.string(), - hostname: z.string(), - os: z.string(), - platform: DeploymentDetailResponsePlatformLocal$inboundSchema, - }); +export const DeploymentDetailResponseStackState$inboundSchema: z.ZodType< + DeploymentDetailResponseStackState, + unknown +> = z.object({ + platform: DeploymentDetailResponseStackStatePlatform$inboundSchema, + resourcePrefix: z.string(), + resources: z.record( + z.string(), + z.lazy(() => DeploymentDetailResponseStackStateResources$inboundSchema), + ), +}); -export function deploymentDetailResponseEnvironmentInfoLocalFromJSON( +export function deploymentDetailResponseStackStateFromJSON( jsonString: string, -): SafeParseResult< - DeploymentDetailResponseEnvironmentInfoLocal, - SDKValidationError -> { +): SafeParseResult { return safeParse( jsonString, (x) => - DeploymentDetailResponseEnvironmentInfoLocal$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseEnvironmentInfoLocal' from JSON`, + DeploymentDetailResponseStackState$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseStackState' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponsePlatformAzure$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponsePlatformAzure -> = z.enum(DeploymentDetailResponsePlatformAzure); +export const DeploymentDetailResponseInitialSetupAuthority$inboundSchema: + z.ZodEnum = z.enum( + DeploymentDetailResponseInitialSetupAuthority, + ); /** @internal */ -export const DeploymentDetailResponseEnvironmentInfoAzure$inboundSchema: - z.ZodType = z.object({ - location: z.string(), - subscriptionId: z.string(), - tenantId: z.string(), - platform: DeploymentDetailResponsePlatformAzure$inboundSchema, +export const DeploymentDetailResponsePendingPreparedStackTypeStringList$inboundSchema: + z.ZodEnum = + z.enum(DeploymentDetailResponsePendingPreparedStackTypeStringList); + +/** @internal */ +export const DeploymentDetailResponsePendingPreparedStackDefaultStringList$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackDefaultStringList, + unknown + > = z.object({ + type: + DeploymentDetailResponsePendingPreparedStackTypeStringList$inboundSchema, + value: z.array(z.string()), }); -export function deploymentDetailResponseEnvironmentInfoAzureFromJSON( +export function deploymentDetailResponsePendingPreparedStackDefaultStringListFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseEnvironmentInfoAzure, + DeploymentDetailResponsePendingPreparedStackDefaultStringList, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseEnvironmentInfoAzure$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseEnvironmentInfoAzure' from JSON`, + DeploymentDetailResponsePendingPreparedStackDefaultStringList$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackDefaultStringList' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponsePlatformGcp$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponsePlatformGcp -> = z.enum(DeploymentDetailResponsePlatformGcp); +export const DeploymentDetailResponsePendingPreparedStackTypeBoolean$inboundSchema: + z.ZodEnum = z + .enum(DeploymentDetailResponsePendingPreparedStackTypeBoolean); /** @internal */ -export const DeploymentDetailResponseEnvironmentInfoGcp$inboundSchema: - z.ZodType = z.object({ - projectId: z.string(), - projectNumber: z.string(), - region: z.string(), - platform: DeploymentDetailResponsePlatformGcp$inboundSchema, +export const DeploymentDetailResponsePendingPreparedStackDefaultBoolean$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackDefaultBoolean, + unknown + > = z.object({ + type: DeploymentDetailResponsePendingPreparedStackTypeBoolean$inboundSchema, + value: z.boolean(), }); -export function deploymentDetailResponseEnvironmentInfoGcpFromJSON( +export function deploymentDetailResponsePendingPreparedStackDefaultBooleanFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseEnvironmentInfoGcp, + DeploymentDetailResponsePendingPreparedStackDefaultBoolean, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseEnvironmentInfoGcp$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseEnvironmentInfoGcp' from JSON`, + DeploymentDetailResponsePendingPreparedStackDefaultBoolean$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackDefaultBoolean' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponsePlatformAws$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponsePlatformAws -> = z.enum(DeploymentDetailResponsePlatformAws); +export const DeploymentDetailResponsePendingPreparedStackTypeNumber$inboundSchema: + z.ZodEnum = z + .enum(DeploymentDetailResponsePendingPreparedStackTypeNumber); /** @internal */ -export const DeploymentDetailResponseEnvironmentInfoAws$inboundSchema: - z.ZodType = z.object({ - accountId: z.string(), - region: z.string(), - platform: DeploymentDetailResponsePlatformAws$inboundSchema, +export const DeploymentDetailResponsePendingPreparedStackDefaultNumber$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackDefaultNumber, + unknown + > = z.object({ + type: DeploymentDetailResponsePendingPreparedStackTypeNumber$inboundSchema, + value: z.string(), }); -export function deploymentDetailResponseEnvironmentInfoAwsFromJSON( +export function deploymentDetailResponsePendingPreparedStackDefaultNumberFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseEnvironmentInfoAws, + DeploymentDetailResponsePendingPreparedStackDefaultNumber, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseEnvironmentInfoAws$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseEnvironmentInfoAws' from JSON`, + DeploymentDetailResponsePendingPreparedStackDefaultNumber$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackDefaultNumber' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseEnvironmentInfoUnion$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => DeploymentDetailResponseEnvironmentInfoGcp$inboundSchema), - z.lazy(() => DeploymentDetailResponseEnvironmentInfoAzure$inboundSchema), - z.lazy(() => DeploymentDetailResponseEnvironmentInfoLocal$inboundSchema), - z.lazy(() => DeploymentDetailResponseEnvironmentInfoAws$inboundSchema), - z.lazy(() => DeploymentDetailResponseEnvironmentInfoTest$inboundSchema), - z.any(), - ]); +export const DeploymentDetailResponsePendingPreparedStackTypeString$inboundSchema: + z.ZodEnum = z + .enum(DeploymentDetailResponsePendingPreparedStackTypeString); -export function deploymentDetailResponseEnvironmentInfoUnionFromJSON( +/** @internal */ +export const DeploymentDetailResponsePendingPreparedStackDefaultString$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackDefaultString, + unknown + > = z.object({ + type: DeploymentDetailResponsePendingPreparedStackTypeString$inboundSchema, + value: z.string(), + }); + +export function deploymentDetailResponsePendingPreparedStackDefaultStringFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseEnvironmentInfoUnion, + DeploymentDetailResponsePendingPreparedStackDefaultString, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseEnvironmentInfoUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseEnvironmentInfoUnion' from JSON`, + DeploymentDetailResponsePendingPreparedStackDefaultString$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackDefaultString' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponsePoolsAutoscale$inboundSchema: z.ZodType< - DeploymentDetailResponsePoolsAutoscale, - unknown -> = z.object({ - machine: z.nullable(z.string()).optional(), - max: z.int(), - min: z.int(), - mode: z.literal("autoscale"), -}); +export const DeploymentDetailResponsePendingPreparedStackDefaultUnion$inboundSchema: + z.ZodType = + z.union([ + z.lazy(() => + DeploymentDetailResponsePendingPreparedStackDefaultString$inboundSchema + ), + z.lazy(() => + DeploymentDetailResponsePendingPreparedStackDefaultNumber$inboundSchema + ), + z.lazy(() => + DeploymentDetailResponsePendingPreparedStackDefaultBoolean$inboundSchema + ), + z.lazy(() => + DeploymentDetailResponsePendingPreparedStackDefaultStringList$inboundSchema + ), + z.any(), + ]); -export function deploymentDetailResponsePoolsAutoscaleFromJSON( +export function deploymentDetailResponsePendingPreparedStackDefaultUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePendingPreparedStackDefaultUnion, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponsePoolsAutoscale$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponsePoolsAutoscale' from JSON`, + DeploymentDetailResponsePendingPreparedStackDefaultUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackDefaultUnion' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponsePoolsFixed$inboundSchema: z.ZodType< - DeploymentDetailResponsePoolsFixed, - unknown -> = z.object({ - machine: z.nullable(z.string()).optional(), - machines: z.int(), - mode: z.literal("fixed"), -}); +export const DeploymentDetailResponsePendingPreparedStackTypeEnvEnum$inboundSchema: + z.ZodEnum = z + .enum(DeploymentDetailResponsePendingPreparedStackTypeEnvEnum); -export function deploymentDetailResponsePoolsFixedFromJSON( +/** @internal */ +export const DeploymentDetailResponsePendingPreparedStackTypeUnion$inboundSchema: + z.ZodType = z + .union([ + DeploymentDetailResponsePendingPreparedStackTypeEnvEnum$inboundSchema, + z.any(), + ]); + +export function deploymentDetailResponsePendingPreparedStackTypeUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePendingPreparedStackTypeUnion, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponsePoolsFixed$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponsePoolsFixed' from JSON`, + DeploymentDetailResponsePendingPreparedStackTypeUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackTypeUnion' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponsePoolsUnion$inboundSchema: z.ZodType< - DeploymentDetailResponsePoolsUnion, - unknown -> = z.union([ - z.lazy(() => DeploymentDetailResponsePoolsFixed$inboundSchema), - z.lazy(() => DeploymentDetailResponsePoolsAutoscale$inboundSchema), -]); +export const DeploymentDetailResponsePendingPreparedStackEnv$inboundSchema: + z.ZodType = z + .object({ + name: z.string(), + targetResources: z.nullable(z.array(z.string())).optional(), + type: z.nullable( + z.union([ + DeploymentDetailResponsePendingPreparedStackTypeEnvEnum$inboundSchema, + z.any(), + ]), + ).optional(), + }); -export function deploymentDetailResponsePoolsUnionFromJSON( +export function deploymentDetailResponsePendingPreparedStackEnvFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePendingPreparedStackEnv, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponsePoolsUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponsePoolsUnion' from JSON`, + DeploymentDetailResponsePendingPreparedStackEnv$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackEnv' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseCompute$inboundSchema: z.ZodType< - DeploymentDetailResponseCompute, - unknown -> = z.object({ - pools: z.record( - z.string(), - z.union([ - z.lazy(() => DeploymentDetailResponsePoolsFixed$inboundSchema), - z.lazy(() => DeploymentDetailResponsePoolsAutoscale$inboundSchema), - ]), - ).optional(), -}); - -export function deploymentDetailResponseComputeFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentDetailResponseCompute$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseCompute' from JSON`, +export const DeploymentDetailResponsePendingPreparedStackKind$inboundSchema: + z.ZodEnum = z.enum( + DeploymentDetailResponsePendingPreparedStackKind, ); -} /** @internal */ -export const DeploymentDetailResponseComputeUnion$inboundSchema: z.ZodType< - DeploymentDetailResponseComputeUnion, - unknown -> = z.union([ - z.lazy(() => DeploymentDetailResponseCompute$inboundSchema), - z.any(), -]); - -export function deploymentDetailResponseComputeUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseComputeUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseComputeUnion' from JSON`, - ); -} +export const DeploymentDetailResponsePendingPreparedStackPlatform$inboundSchema: + z.ZodEnum = z + .enum(DeploymentDetailResponsePendingPreparedStackPlatform); /** @internal */ -export const DeploymentDetailResponseDeploymentModel$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseDeploymentModel -> = z.enum(DeploymentDetailResponseDeploymentModel); +export const DeploymentDetailResponsePendingPreparedStackProvidedBy$inboundSchema: + z.ZodEnum = z + .enum(DeploymentDetailResponsePendingPreparedStackProvidedBy); /** @internal */ -export const DeploymentDetailResponseAws$inboundSchema: z.ZodType< - DeploymentDetailResponseAws, - unknown -> = z.object({ - certificateArn: z.string(), -}); +export const DeploymentDetailResponsePendingPreparedStackValidation$inboundSchema: + z.ZodType = z + .object({ + format: z.nullable(z.string()).optional(), + max: z.nullable(z.string()).optional(), + maxItems: z.nullable(z.int()).optional(), + maxLength: z.nullable(z.int()).optional(), + min: z.nullable(z.string()).optional(), + minItems: z.nullable(z.int()).optional(), + minLength: z.nullable(z.int()).optional(), + pattern: z.nullable(z.string()).optional(), + values: z.nullable(z.array(z.string())).optional(), + }); -export function deploymentDetailResponseAwsFromJSON( +export function deploymentDetailResponsePendingPreparedStackValidationFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePendingPreparedStackValidation, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentDetailResponseAws$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseAws' from JSON`, + (x) => + DeploymentDetailResponsePendingPreparedStackValidation$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackValidation' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseAwsUnion$inboundSchema: z.ZodType< - DeploymentDetailResponseAwsUnion, - unknown -> = z.union([z.lazy(() => DeploymentDetailResponseAws$inboundSchema), z.any()]); +export const DeploymentDetailResponsePendingPreparedStackValidationUnion$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackValidationUnion, + unknown + > = z.union([ + z.lazy(() => + DeploymentDetailResponsePendingPreparedStackValidation$inboundSchema + ), + z.any(), + ]); -export function deploymentDetailResponseAwsUnionFromJSON( +export function deploymentDetailResponsePendingPreparedStackValidationUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePendingPreparedStackValidationUnion, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentDetailResponseAwsUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseAwsUnion' from JSON`, + (x) => + DeploymentDetailResponsePendingPreparedStackValidationUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackValidationUnion' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseAzureStackSettings$inboundSchema: - z.ZodType = z.object({ - keyVaultCertificateId: z.string(), - keyVaultResourceId: z.nullable(z.string()).optional(), - }); +export const DeploymentDetailResponsePendingPreparedStackInput$inboundSchema: + z.ZodType = z + .object({ + default: z.nullable( + z.union([ + z.lazy(() => + DeploymentDetailResponsePendingPreparedStackDefaultString$inboundSchema + ), + z.lazy(() => + DeploymentDetailResponsePendingPreparedStackDefaultNumber$inboundSchema + ), + z.lazy(() => + DeploymentDetailResponsePendingPreparedStackDefaultBoolean$inboundSchema + ), + z.lazy(() => + DeploymentDetailResponsePendingPreparedStackDefaultStringList$inboundSchema + ), + z.any(), + ]), + ).optional(), + description: z.string(), + env: z.array( + z.lazy(() => + DeploymentDetailResponsePendingPreparedStackEnv$inboundSchema + ), + ).optional(), + id: z.string(), + kind: DeploymentDetailResponsePendingPreparedStackKind$inboundSchema, + label: z.string(), + placeholder: z.nullable(z.string()).optional(), + platforms: z.nullable( + z.array( + DeploymentDetailResponsePendingPreparedStackPlatform$inboundSchema, + ), + ).optional(), + providedBy: z.array( + DeploymentDetailResponsePendingPreparedStackProvidedBy$inboundSchema, + ), + required: z.boolean(), + validation: z.nullable( + z.union([ + z.lazy(() => + DeploymentDetailResponsePendingPreparedStackValidation$inboundSchema + ), + z.any(), + ]), + ).optional(), + }); -export function deploymentDetailResponseAzureStackSettingsFromJSON( +export function deploymentDetailResponsePendingPreparedStackInputFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseAzureStackSettings, + DeploymentDetailResponsePendingPreparedStackInput, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseAzureStackSettings$inboundSchema.parse( + DeploymentDetailResponsePendingPreparedStackInput$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'DeploymentDetailResponseAzureStackSettings' from JSON`, + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackInput' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseAzureUnion$inboundSchema: z.ZodType< - DeploymentDetailResponseAzureUnion, - unknown -> = z.union([ - z.lazy(() => DeploymentDetailResponseAzureStackSettings$inboundSchema), - z.any(), -]); +export const DeploymentDetailResponsePendingPreparedStackManagementEnum$inboundSchema: + z.ZodEnum = + z.enum(DeploymentDetailResponsePendingPreparedStackManagementEnum); -export function deploymentDetailResponseAzureUnionFromJSON( +/** @internal */ +export const DeploymentDetailResponsePendingPreparedStackOverrideAwResource$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackOverrideAwResource, + unknown + > = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function deploymentDetailResponsePendingPreparedStackOverrideAwResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePendingPreparedStackOverrideAwResource, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponseAzureUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseAzureUnion' from JSON`, + DeploymentDetailResponsePendingPreparedStackOverrideAwResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackOverrideAwResource' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseGcpStackSettings$inboundSchema: z.ZodType< - DeploymentDetailResponseGcpStackSettings, - unknown -> = z.object({ - certificateName: z.string(), -}); +export const DeploymentDetailResponsePendingPreparedStackOverrideAwStack$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackOverrideAwStack, + unknown + > = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); -export function deploymentDetailResponseGcpStackSettingsFromJSON( +export function deploymentDetailResponsePendingPreparedStackOverrideAwStackFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseGcpStackSettings, + DeploymentDetailResponsePendingPreparedStackOverrideAwStack, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseGcpStackSettings$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseGcpStackSettings' from JSON`, + DeploymentDetailResponsePendingPreparedStackOverrideAwStack$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackOverrideAwStack' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseGcpUnion$inboundSchema: z.ZodType< - DeploymentDetailResponseGcpUnion, - unknown -> = z.union([ - z.lazy(() => DeploymentDetailResponseGcpStackSettings$inboundSchema), - z.any(), -]); +export const DeploymentDetailResponsePendingPreparedStackOverrideAwBinding$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackOverrideAwBinding, + unknown + > = z.object({ + resource: z.lazy(() => + DeploymentDetailResponsePendingPreparedStackOverrideAwResource$inboundSchema + ).optional(), + stack: z.lazy(() => + DeploymentDetailResponsePendingPreparedStackOverrideAwStack$inboundSchema + ).optional(), + }); -export function deploymentDetailResponseGcpUnionFromJSON( +export function deploymentDetailResponsePendingPreparedStackOverrideAwBindingFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePendingPreparedStackOverrideAwBinding, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentDetailResponseGcpUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseGcpUnion' from JSON`, + (x) => + DeploymentDetailResponsePendingPreparedStackOverrideAwBinding$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackOverrideAwBinding' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseTlsSecretRef$inboundSchema: z.ZodType< - DeploymentDetailResponseTlsSecretRef, - unknown -> = z.object({ - namespace: z.nullable(z.string()).optional(), - secretName: z.string(), -}); +export const DeploymentDetailResponsePendingPreparedStackOverrideEffect$inboundSchema: + z.ZodEnum = + z.enum(DeploymentDetailResponsePendingPreparedStackOverrideEffect); -export function deploymentDetailResponseTlsSecretRefFromJSON( +/** @internal */ +export const DeploymentDetailResponsePendingPreparedStackOverrideAwGrant$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackOverrideAwGrant, + unknown + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function deploymentDetailResponsePendingPreparedStackOverrideAwGrantFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePendingPreparedStackOverrideAwGrant, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponseTlsSecretRef$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseTlsSecretRef' from JSON`, + DeploymentDetailResponsePendingPreparedStackOverrideAwGrant$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackOverrideAwGrant' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseDomainsKubernetes$inboundSchema: z.ZodType< - DeploymentDetailResponseDomainsKubernetes, - unknown -> = z.object({ - tlsSecretRef: z.lazy(() => - DeploymentDetailResponseTlsSecretRef$inboundSchema - ), -}); +export const DeploymentDetailResponsePendingPreparedStackOverrideAw$inboundSchema: + z.ZodType = z + .object({ + binding: z.lazy(() => + DeploymentDetailResponsePendingPreparedStackOverrideAwBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: + DeploymentDetailResponsePendingPreparedStackOverrideEffect$inboundSchema + .optional(), + grant: z.lazy(() => + DeploymentDetailResponsePendingPreparedStackOverrideAwGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); -export function deploymentDetailResponseDomainsKubernetesFromJSON( +export function deploymentDetailResponsePendingPreparedStackOverrideAwFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseDomainsKubernetes, + DeploymentDetailResponsePendingPreparedStackOverrideAw, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseDomainsKubernetes$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseDomainsKubernetes' from JSON`, + DeploymentDetailResponsePendingPreparedStackOverrideAw$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackOverrideAw' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseDomainsKubernetesUnion$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => DeploymentDetailResponseDomainsKubernetes$inboundSchema), - z.any(), - ]); +export const DeploymentDetailResponsePendingPreparedStackOverrideAzureResource$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackOverrideAzureResource, + unknown + > = z.object({ + scope: z.string(), + }); -export function deploymentDetailResponseDomainsKubernetesUnionFromJSON( +export function deploymentDetailResponsePendingPreparedStackOverrideAzureResourceFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseDomainsKubernetesUnion, + DeploymentDetailResponsePendingPreparedStackOverrideAzureResource, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseDomainsKubernetesUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseDomainsKubernetesUnion' from JSON`, + DeploymentDetailResponsePendingPreparedStackOverrideAzureResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackOverrideAzureResource' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseDomainsCertificate$inboundSchema: - z.ZodType = z.object({ - aws: z.nullable( - z.union([ - z.lazy(() => DeploymentDetailResponseAws$inboundSchema), - z.any(), - ]), - ).optional(), - azure: z.nullable( - z.union([ - z.lazy(() => DeploymentDetailResponseAzureStackSettings$inboundSchema), - z.any(), - ]), - ).optional(), - gcp: z.nullable( - z.union([ - z.lazy(() => DeploymentDetailResponseGcpStackSettings$inboundSchema), - z.any(), - ]), - ).optional(), - kubernetes: z.nullable( - z.union([ - z.lazy(() => DeploymentDetailResponseDomainsKubernetes$inboundSchema), - z.any(), - ]), - ).optional(), +export const DeploymentDetailResponsePendingPreparedStackOverrideAzureStack$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackOverrideAzureStack, + unknown + > = z.object({ + scope: z.string(), }); -export function deploymentDetailResponseDomainsCertificateFromJSON( +export function deploymentDetailResponsePendingPreparedStackOverrideAzureStackFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseDomainsCertificate, + DeploymentDetailResponsePendingPreparedStackOverrideAzureStack, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseDomainsCertificate$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseDomainsCertificate' from JSON`, + DeploymentDetailResponsePendingPreparedStackOverrideAzureStack$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackOverrideAzureStack' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseCustomDomains$inboundSchema: z.ZodType< - DeploymentDetailResponseCustomDomains, - unknown -> = z.object({ - certificate: z.lazy(() => - DeploymentDetailResponseDomainsCertificate$inboundSchema - ), - domain: z.string(), -}); +export const DeploymentDetailResponsePendingPreparedStackOverrideAzureBinding$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackOverrideAzureBinding, + unknown + > = z.object({ + resource: z.lazy(() => + DeploymentDetailResponsePendingPreparedStackOverrideAzureResource$inboundSchema + ).optional(), + stack: z.lazy(() => + DeploymentDetailResponsePendingPreparedStackOverrideAzureStack$inboundSchema + ).optional(), + }); -export function deploymentDetailResponseCustomDomainsFromJSON( +export function deploymentDetailResponsePendingPreparedStackOverrideAzureBindingFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePendingPreparedStackOverrideAzureBinding, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponseCustomDomains$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseCustomDomains' from JSON`, + DeploymentDetailResponsePendingPreparedStackOverrideAzureBinding$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackOverrideAzureBinding' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseModeLoadBalancer$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseModeLoadBalancer -> = z.enum(DeploymentDetailResponseModeLoadBalancer); - -/** @internal */ -export const DeploymentDetailResponsePublicEndpointTargetLoadBalancer$inboundSchema: - z.ZodType = - z.object({ - cnameTarget: z.string(), - mode: DeploymentDetailResponseModeLoadBalancer$inboundSchema, - }); +export const DeploymentDetailResponsePendingPreparedStackOverrideAzureGrant$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackOverrideAzureGrant, + unknown + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); -export function deploymentDetailResponsePublicEndpointTargetLoadBalancerFromJSON( +export function deploymentDetailResponsePendingPreparedStackOverrideAzureGrantFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponsePublicEndpointTargetLoadBalancer, + DeploymentDetailResponsePendingPreparedStackOverrideAzureGrant, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponsePublicEndpointTargetLoadBalancer$inboundSchema + DeploymentDetailResponsePendingPreparedStackOverrideAzureGrant$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponsePublicEndpointTargetLoadBalancer' from JSON`, + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackOverrideAzureGrant' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseModeMachineAddresses$inboundSchema: - z.ZodEnum = z.enum( - DeploymentDetailResponseModeMachineAddresses, - ); - -/** @internal */ -export const DeploymentDetailResponsePublicEndpointTargetMachineAddresses$inboundSchema: +export const DeploymentDetailResponsePendingPreparedStackOverrideAzure$inboundSchema: z.ZodType< - DeploymentDetailResponsePublicEndpointTargetMachineAddresses, + DeploymentDetailResponsePendingPreparedStackOverrideAzure, unknown > = z.object({ - mode: DeploymentDetailResponseModeMachineAddresses$inboundSchema, + binding: z.lazy(() => + DeploymentDetailResponsePendingPreparedStackOverrideAzureBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + DeploymentDetailResponsePendingPreparedStackOverrideAzureGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), }); -export function deploymentDetailResponsePublicEndpointTargetMachineAddressesFromJSON( +export function deploymentDetailResponsePendingPreparedStackOverrideAzureFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponsePublicEndpointTargetMachineAddresses, + DeploymentDetailResponsePendingPreparedStackOverrideAzure, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponsePublicEndpointTargetMachineAddresses$inboundSchema + DeploymentDetailResponsePendingPreparedStackOverrideAzure$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponsePublicEndpointTargetMachineAddresses' from JSON`, + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackOverrideAzure' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponsePublicEndpointTargetUnion$inboundSchema: - z.ZodType = z - .union([ - z.lazy(() => - DeploymentDetailResponsePublicEndpointTargetLoadBalancer$inboundSchema - ), - z.lazy(() => - DeploymentDetailResponsePublicEndpointTargetMachineAddresses$inboundSchema - ), - z.any(), - ]); +export const DeploymentDetailResponsePendingPreparedStackOverrideConditionResource$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackOverrideConditionResource, + unknown + > = z.object({ + expression: z.string(), + title: z.string(), + }); -export function deploymentDetailResponsePublicEndpointTargetUnionFromJSON( +export function deploymentDetailResponsePendingPreparedStackOverrideConditionResourceFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponsePublicEndpointTargetUnion, + DeploymentDetailResponsePendingPreparedStackOverrideConditionResource, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponsePublicEndpointTargetUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponsePublicEndpointTargetUnion' from JSON`, + DeploymentDetailResponsePendingPreparedStackOverrideConditionResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackOverrideConditionResource' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseDomains$inboundSchema: z.ZodType< - DeploymentDetailResponseDomains, - unknown -> = z.object({ - customDomains: z.nullable( - z.record( - z.string(), - z.lazy(() => DeploymentDetailResponseCustomDomains$inboundSchema), +export const DeploymentDetailResponsePendingPreparedStackOverrideResourceConditionUnion$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackOverrideResourceConditionUnion, + unknown + > = z.union([ + z.lazy(() => + DeploymentDetailResponsePendingPreparedStackOverrideConditionResource$inboundSchema ), - ).optional(), - publicEndpointTarget: z.nullable( - z.union([ - z.lazy(() => - DeploymentDetailResponsePublicEndpointTargetLoadBalancer$inboundSchema - ), - z.lazy(() => - DeploymentDetailResponsePublicEndpointTargetMachineAddresses$inboundSchema - ), - z.any(), - ]), - ).optional(), -}); - -export function deploymentDetailResponseDomainsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentDetailResponseDomains$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseDomains' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseDomainsUnion$inboundSchema: z.ZodType< - DeploymentDetailResponseDomainsUnion, - unknown -> = z.union([ - z.lazy(() => DeploymentDetailResponseDomains$inboundSchema), - z.any(), -]); + z.any(), + ]); -export function deploymentDetailResponseDomainsUnionFromJSON( +export function deploymentDetailResponsePendingPreparedStackOverrideResourceConditionUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePendingPreparedStackOverrideResourceConditionUnion, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponseDomainsUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseDomainsUnion' from JSON`, + DeploymentDetailResponsePendingPreparedStackOverrideResourceConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackOverrideResourceConditionUnion' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseExternalBindings$inboundSchema: z.ZodType< - DeploymentDetailResponseExternalBindings, - unknown -> = z.object({}); +export const DeploymentDetailResponsePendingPreparedStackOverrideGcpResource$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackOverrideGcpResource, + unknown + > = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => + DeploymentDetailResponsePendingPreparedStackOverrideConditionResource$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); -export function deploymentDetailResponseExternalBindingsFromJSON( +export function deploymentDetailResponsePendingPreparedStackOverrideGcpResourceFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseExternalBindings, + DeploymentDetailResponsePendingPreparedStackOverrideGcpResource, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseExternalBindings$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseExternalBindings' from JSON`, + DeploymentDetailResponsePendingPreparedStackOverrideGcpResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackOverrideGcpResource' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseHeartbeats$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseHeartbeats -> = z.enum(DeploymentDetailResponseHeartbeats); - -/** @internal */ -export const DeploymentDetailResponseCloud$inboundSchema: z.ZodType< - DeploymentDetailResponseCloud, - unknown -> = z.object({ - accountId: z.nullable(z.string()).optional(), - clusterId: z.nullable(z.string()).optional(), - clusterName: z.nullable(z.string()).optional(), - projectId: z.nullable(z.string()).optional(), - region: z.nullable(z.string()).optional(), - resourceGroup: z.nullable(z.string()).optional(), - subscriptionId: z.nullable(z.string()).optional(), -}); +export const DeploymentDetailResponsePendingPreparedStackOverrideConditionStack$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackOverrideConditionStack, + unknown + > = z.object({ + expression: z.string(), + title: z.string(), + }); -export function deploymentDetailResponseCloudFromJSON( +export function deploymentDetailResponsePendingPreparedStackOverrideConditionStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePendingPreparedStackOverrideConditionStack, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentDetailResponseCloud$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseCloud' from JSON`, + (x) => + DeploymentDetailResponsePendingPreparedStackOverrideConditionStack$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackOverrideConditionStack' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseCloudUnion$inboundSchema: z.ZodType< - DeploymentDetailResponseCloudUnion, - unknown -> = z.union([ - z.lazy(() => DeploymentDetailResponseCloud$inboundSchema), - z.any(), -]); +export const DeploymentDetailResponsePendingPreparedStackOverrideStackConditionUnion$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackOverrideStackConditionUnion, + unknown + > = z.union([ + z.lazy(() => + DeploymentDetailResponsePendingPreparedStackOverrideConditionStack$inboundSchema + ), + z.any(), + ]); -export function deploymentDetailResponseCloudUnionFromJSON( +export function deploymentDetailResponsePendingPreparedStackOverrideStackConditionUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePendingPreparedStackOverrideStackConditionUnion, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponseCloudUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseCloudUnion' from JSON`, + DeploymentDetailResponsePendingPreparedStackOverrideStackConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackOverrideStackConditionUnion' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseOwnership$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseOwnership -> = z.enum(DeploymentDetailResponseOwnership); - -/** @internal */ -export const DeploymentDetailResponseCluster$inboundSchema: z.ZodType< - DeploymentDetailResponseCluster, - unknown -> = z.object({ - cloud: z.nullable( - z.union([ - z.lazy(() => DeploymentDetailResponseCloud$inboundSchema), - z.any(), - ]), - ).optional(), - namespace: z.nullable(z.string()).optional(), - ownership: DeploymentDetailResponseOwnership$inboundSchema, -}); +export const DeploymentDetailResponsePendingPreparedStackOverrideGcpStack$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackOverrideGcpStack, + unknown + > = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => + DeploymentDetailResponsePendingPreparedStackOverrideConditionStack$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); -export function deploymentDetailResponseClusterFromJSON( +export function deploymentDetailResponsePendingPreparedStackOverrideGcpStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePendingPreparedStackOverrideGcpStack, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentDetailResponseCluster$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseCluster' from JSON`, + (x) => + DeploymentDetailResponsePendingPreparedStackOverrideGcpStack$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackOverrideGcpStack' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseClusterUnion$inboundSchema: z.ZodType< - DeploymentDetailResponseClusterUnion, - unknown -> = z.union([ - z.lazy(() => DeploymentDetailResponseCluster$inboundSchema), - z.any(), -]); +export const DeploymentDetailResponsePendingPreparedStackOverrideGcpBinding$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackOverrideGcpBinding, + unknown + > = z.object({ + resource: z.lazy(() => + DeploymentDetailResponsePendingPreparedStackOverrideGcpResource$inboundSchema + ).optional(), + stack: z.lazy(() => + DeploymentDetailResponsePendingPreparedStackOverrideGcpStack$inboundSchema + ).optional(), + }); -export function deploymentDetailResponseClusterUnionFromJSON( +export function deploymentDetailResponsePendingPreparedStackOverrideGcpBindingFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePendingPreparedStackOverrideGcpBinding, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponseClusterUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseClusterUnion' from JSON`, + DeploymentDetailResponsePendingPreparedStackOverrideGcpBinding$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackOverrideGcpBinding' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseCertificateNone2$inboundSchema: z.ZodType< - DeploymentDetailResponseCertificateNone2, - unknown -> = z.object({ - mode: z.literal("none"), -}); +export const DeploymentDetailResponsePendingPreparedStackOverrideGcpGrant$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackOverrideGcpGrant, + unknown + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); -export function deploymentDetailResponseCertificateNone2FromJSON( +export function deploymentDetailResponsePendingPreparedStackOverrideGcpGrantFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseCertificateNone2, + DeploymentDetailResponsePendingPreparedStackOverrideGcpGrant, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseCertificateNone2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseCertificateNone2' from JSON`, + DeploymentDetailResponsePendingPreparedStackOverrideGcpGrant$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackOverrideGcpGrant' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseCertificateManagedTLSSecret2$inboundSchema: - z.ZodType = z - .object({ - mode: z.literal("managedTlsSecret"), - secretNameTemplate: z.string(), +export const DeploymentDetailResponsePendingPreparedStackOverrideGcp$inboundSchema: + z.ZodType = + z.object({ + binding: z.lazy(() => + DeploymentDetailResponsePendingPreparedStackOverrideGcpBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + DeploymentDetailResponsePendingPreparedStackOverrideGcpGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), }); -export function deploymentDetailResponseCertificateManagedTLSSecret2FromJSON( +export function deploymentDetailResponsePendingPreparedStackOverrideGcpFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseCertificateManagedTLSSecret2, + DeploymentDetailResponsePendingPreparedStackOverrideGcp, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseCertificateManagedTLSSecret2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseCertificateManagedTLSSecret2' from JSON`, + DeploymentDetailResponsePendingPreparedStackOverrideGcp$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackOverrideGcp' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseCertificateAwsAcmArn2$inboundSchema: - z.ZodType = z.object({ - certificateArn: z.string(), - mode: z.literal("awsAcmArn"), +export const DeploymentDetailResponsePendingPreparedStackOverridePlatforms$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackOverridePlatforms, + unknown + > = z.object({ + aws: z.nullable( + z.array(z.lazy(() => + DeploymentDetailResponsePendingPreparedStackOverrideAw$inboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + DeploymentDetailResponsePendingPreparedStackOverrideAzure$inboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + DeploymentDetailResponsePendingPreparedStackOverrideGcp$inboundSchema + )), + ).optional(), }); -export function deploymentDetailResponseCertificateAwsAcmArn2FromJSON( +export function deploymentDetailResponsePendingPreparedStackOverridePlatformsFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseCertificateAwsAcmArn2, + DeploymentDetailResponsePendingPreparedStackOverridePlatforms, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseCertificateAwsAcmArn2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseCertificateAwsAcmArn2' from JSON`, + DeploymentDetailResponsePendingPreparedStackOverridePlatforms$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackOverridePlatforms' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseCertificateManagedAcmImport2$inboundSchema: - z.ZodType = z +export const DeploymentDetailResponsePendingPreparedStackOverride$inboundSchema: + z.ZodType = z .object({ - mode: z.literal("managedAcmImport"), - region: z.nullable(z.string()).optional(), - tags: z.record(z.string(), z.string()).optional(), + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + DeploymentDetailResponsePendingPreparedStackOverridePlatforms$inboundSchema + ), }); -export function deploymentDetailResponseCertificateManagedAcmImport2FromJSON( +export function deploymentDetailResponsePendingPreparedStackOverrideFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseCertificateManagedAcmImport2, + DeploymentDetailResponsePendingPreparedStackOverride, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseCertificateManagedAcmImport2$inboundSchema.parse( + DeploymentDetailResponsePendingPreparedStackOverride$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'DeploymentDetailResponseCertificateManagedAcmImport2' from JSON`, + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackOverride' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseCertificateTLSSecretRef2$inboundSchema: - z.ZodType = z - .object({ - namespace: z.nullable(z.string()).optional(), - secretName: z.string(), - mode: z.literal("tlsSecretRef"), - }); +export const DeploymentDetailResponsePendingPreparedStackOverrideUnion$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackOverrideUnion, + unknown + > = z.union([ + z.lazy(() => + DeploymentDetailResponsePendingPreparedStackOverride$inboundSchema + ), + z.string(), + ]); -export function deploymentDetailResponseCertificateTLSSecretRef2FromJSON( +export function deploymentDetailResponsePendingPreparedStackOverrideUnionFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseCertificateTLSSecretRef2, + DeploymentDetailResponsePendingPreparedStackOverrideUnion, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseCertificateTLSSecretRef2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseCertificateTLSSecretRef2' from JSON`, + DeploymentDetailResponsePendingPreparedStackOverrideUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackOverrideUnion' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseCertificateUnion2$inboundSchema: z.ZodType< - DeploymentDetailResponseCertificateUnion2, - unknown -> = z.union([ - z.lazy(() => DeploymentDetailResponseCertificateTLSSecretRef2$inboundSchema), - z.lazy(() => - DeploymentDetailResponseCertificateManagedAcmImport2$inboundSchema - ), - z.lazy(() => DeploymentDetailResponseCertificateAwsAcmArn2$inboundSchema), - z.lazy(() => - DeploymentDetailResponseCertificateManagedTLSSecret2$inboundSchema - ), - z.lazy(() => DeploymentDetailResponseCertificateNone2$inboundSchema), -]); +export const DeploymentDetailResponsePendingPreparedStackManagement2$inboundSchema: + z.ZodType = + z.object({ + override: z.record( + z.string(), + z.array(z.union([ + z.lazy(() => + DeploymentDetailResponsePendingPreparedStackOverride$inboundSchema + ), + z.string(), + ])), + ), + }); -export function deploymentDetailResponseCertificateUnion2FromJSON( +export function deploymentDetailResponsePendingPreparedStackManagement2FromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseCertificateUnion2, + DeploymentDetailResponsePendingPreparedStackManagement2, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseCertificateUnion2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseCertificateUnion2' from JSON`, + DeploymentDetailResponsePendingPreparedStackManagement2$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackManagement2' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseModeCustom$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseModeCustom -> = z.enum(DeploymentDetailResponseModeCustom); - -/** @internal */ -export const DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum4$inboundSchema: - z.ZodEnum< - typeof DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum4 - > = z.enum( - DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum4, - ); - -/** @internal */ -export const DeploymentDetailResponseProviderAzureApplicationGatewayForContainers4$inboundSchema: +export const DeploymentDetailResponsePendingPreparedStackExtendAwResource$inboundSchema: z.ZodType< - DeploymentDetailResponseProviderAzureApplicationGatewayForContainers4, + DeploymentDetailResponsePendingPreparedStackExtendAwResource, unknown > = z.object({ - albName: z.nullable(z.string()).optional(), - albNamespace: z.nullable(z.string()).optional(), - frontend: z.string(), - provider: - DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum4$inboundSchema, + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), }); -export function deploymentDetailResponseProviderAzureApplicationGatewayForContainers4FromJSON( +export function deploymentDetailResponsePendingPreparedStackExtendAwResourceFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseProviderAzureApplicationGatewayForContainers4, + DeploymentDetailResponsePendingPreparedStackExtendAwResource, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseProviderAzureApplicationGatewayForContainers4$inboundSchema + DeploymentDetailResponsePendingPreparedStackExtendAwResource$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseProviderAzureApplicationGatewayForContainers4' from JSON`, + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackExtendAwResource' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseProviderGkeGatewayEnum4$inboundSchema: - z.ZodEnum = z.enum( - DeploymentDetailResponseProviderGkeGatewayEnum4, - ); - -/** @internal */ -export const DeploymentDetailResponseProviderGkeGateway4$inboundSchema: - z.ZodType = z.object({ - provider: DeploymentDetailResponseProviderGkeGatewayEnum4$inboundSchema, - staticAddressName: z.nullable(z.string()).optional(), +export const DeploymentDetailResponsePendingPreparedStackExtendAwStack$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackExtendAwStack, + unknown + > = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), }); -export function deploymentDetailResponseProviderGkeGateway4FromJSON( +export function deploymentDetailResponsePendingPreparedStackExtendAwStackFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseProviderGkeGateway4, + DeploymentDetailResponsePendingPreparedStackExtendAwStack, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseProviderGkeGateway4$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseProviderGkeGateway4' from JSON`, + DeploymentDetailResponsePendingPreparedStackExtendAwStack$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackExtendAwStack' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseProviderAwsAlbEnum4$inboundSchema: - z.ZodEnum = z.enum( - DeploymentDetailResponseProviderAwsAlbEnum4, - ); - -/** @internal */ -export const DeploymentDetailResponseProviderAwsAlb4$inboundSchema: z.ZodType< - DeploymentDetailResponseProviderAwsAlb4, - unknown -> = z.object({ - ipAddressType: z.nullable(z.string()).optional(), - provider: DeploymentDetailResponseProviderAwsAlbEnum4$inboundSchema, - scheme: z.string(), - subnetIds: z.array(z.string()).optional(), - targetType: z.string(), -}); +export const DeploymentDetailResponsePendingPreparedStackExtendAwBinding$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackExtendAwBinding, + unknown + > = z.object({ + resource: z.lazy(() => + DeploymentDetailResponsePendingPreparedStackExtendAwResource$inboundSchema + ).optional(), + stack: z.lazy(() => + DeploymentDetailResponsePendingPreparedStackExtendAwStack$inboundSchema + ).optional(), + }); -export function deploymentDetailResponseProviderAwsAlb4FromJSON( +export function deploymentDetailResponsePendingPreparedStackExtendAwBindingFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseProviderAwsAlb4, + DeploymentDetailResponsePendingPreparedStackExtendAwBinding, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseProviderAwsAlb4$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseProviderAwsAlb4' from JSON`, + DeploymentDetailResponsePendingPreparedStackExtendAwBinding$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackExtendAwBinding' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseProviderUnion4$inboundSchema: z.ZodType< - DeploymentDetailResponseProviderUnion4, - unknown -> = z.union([ - z.lazy(() => DeploymentDetailResponseProviderAwsAlb4$inboundSchema), - z.lazy(() => - DeploymentDetailResponseProviderAzureApplicationGatewayForContainers4$inboundSchema - ), - z.lazy(() => DeploymentDetailResponseProviderGkeGateway4$inboundSchema), - z.any(), -]); +export const DeploymentDetailResponsePendingPreparedStackExtendEffect$inboundSchema: + z.ZodEnum = z + .enum(DeploymentDetailResponsePendingPreparedStackExtendEffect); -export function deploymentDetailResponseProviderUnion4FromJSON( +/** @internal */ +export const DeploymentDetailResponsePendingPreparedStackExtendAwGrant$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackExtendAwGrant, + unknown + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function deploymentDetailResponsePendingPreparedStackExtendAwGrantFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePendingPreparedStackExtendAwGrant, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponseProviderUnion4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseProviderUnion4' from JSON`, + DeploymentDetailResponsePendingPreparedStackExtendAwGrant$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackExtendAwGrant' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseRouteGateway2$inboundSchema: z.ZodType< - DeploymentDetailResponseRouteGateway2, - unknown -> = z.object({ - annotations: z.record(z.string(), z.string()).optional(), - controller: z.nullable(z.string()).optional(), - gatewayClassName: z.string(), - labels: z.record(z.string(), z.string()).optional(), - listenerPort: z.int(), - provider: z.nullable( - z.union([ - z.lazy(() => DeploymentDetailResponseProviderAwsAlb4$inboundSchema), - z.lazy(() => - DeploymentDetailResponseProviderAzureApplicationGatewayForContainers4$inboundSchema +export const DeploymentDetailResponsePendingPreparedStackExtendAw$inboundSchema: + z.ZodType = z + .object({ + binding: z.lazy(() => + DeploymentDetailResponsePendingPreparedStackExtendAwBinding$inboundSchema ), - z.lazy(() => DeploymentDetailResponseProviderGkeGateway4$inboundSchema), - z.any(), - ]), - ).optional(), - routeApi: z.literal("gateway"), -}); + description: z.nullable(z.string()).optional(), + effect: + DeploymentDetailResponsePendingPreparedStackExtendEffect$inboundSchema + .optional(), + grant: z.lazy(() => + DeploymentDetailResponsePendingPreparedStackExtendAwGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); -export function deploymentDetailResponseRouteGateway2FromJSON( +export function deploymentDetailResponsePendingPreparedStackExtendAwFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePendingPreparedStackExtendAw, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponseRouteGateway2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseRouteGateway2' from JSON`, + DeploymentDetailResponsePendingPreparedStackExtendAw$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackExtendAw' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum3$inboundSchema: - z.ZodEnum< - typeof DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum3 - > = z.enum( - DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum3, - ); - -/** @internal */ -export const DeploymentDetailResponseProviderAzureApplicationGatewayForContainers3$inboundSchema: +export const DeploymentDetailResponsePendingPreparedStackExtendAzureResource$inboundSchema: z.ZodType< - DeploymentDetailResponseProviderAzureApplicationGatewayForContainers3, + DeploymentDetailResponsePendingPreparedStackExtendAzureResource, unknown > = z.object({ - albName: z.nullable(z.string()).optional(), - albNamespace: z.nullable(z.string()).optional(), - frontend: z.string(), - provider: - DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum3$inboundSchema, + scope: z.string(), }); -export function deploymentDetailResponseProviderAzureApplicationGatewayForContainers3FromJSON( +export function deploymentDetailResponsePendingPreparedStackExtendAzureResourceFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseProviderAzureApplicationGatewayForContainers3, + DeploymentDetailResponsePendingPreparedStackExtendAzureResource, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseProviderAzureApplicationGatewayForContainers3$inboundSchema + DeploymentDetailResponsePendingPreparedStackExtendAzureResource$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseProviderAzureApplicationGatewayForContainers3' from JSON`, + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackExtendAzureResource' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseProviderGkeGatewayEnum3$inboundSchema: - z.ZodEnum = z.enum( - DeploymentDetailResponseProviderGkeGatewayEnum3, - ); - -/** @internal */ -export const DeploymentDetailResponseProviderGkeGateway3$inboundSchema: - z.ZodType = z.object({ - provider: DeploymentDetailResponseProviderGkeGatewayEnum3$inboundSchema, - staticAddressName: z.nullable(z.string()).optional(), +export const DeploymentDetailResponsePendingPreparedStackExtendAzureStack$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackExtendAzureStack, + unknown + > = z.object({ + scope: z.string(), }); -export function deploymentDetailResponseProviderGkeGateway3FromJSON( +export function deploymentDetailResponsePendingPreparedStackExtendAzureStackFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseProviderGkeGateway3, + DeploymentDetailResponsePendingPreparedStackExtendAzureStack, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseProviderGkeGateway3$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseProviderGkeGateway3' from JSON`, + DeploymentDetailResponsePendingPreparedStackExtendAzureStack$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackExtendAzureStack' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseProviderAwsAlbEnum3$inboundSchema: - z.ZodEnum = z.enum( - DeploymentDetailResponseProviderAwsAlbEnum3, - ); - -/** @internal */ -export const DeploymentDetailResponseProviderAwsAlb3$inboundSchema: z.ZodType< - DeploymentDetailResponseProviderAwsAlb3, - unknown -> = z.object({ - ipAddressType: z.nullable(z.string()).optional(), - provider: DeploymentDetailResponseProviderAwsAlbEnum3$inboundSchema, - scheme: z.string(), - subnetIds: z.array(z.string()).optional(), - targetType: z.string(), -}); +export const DeploymentDetailResponsePendingPreparedStackExtendAzureBinding$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackExtendAzureBinding, + unknown + > = z.object({ + resource: z.lazy(() => + DeploymentDetailResponsePendingPreparedStackExtendAzureResource$inboundSchema + ).optional(), + stack: z.lazy(() => + DeploymentDetailResponsePendingPreparedStackExtendAzureStack$inboundSchema + ).optional(), + }); -export function deploymentDetailResponseProviderAwsAlb3FromJSON( +export function deploymentDetailResponsePendingPreparedStackExtendAzureBindingFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseProviderAwsAlb3, + DeploymentDetailResponsePendingPreparedStackExtendAzureBinding, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseProviderAwsAlb3$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseProviderAwsAlb3' from JSON`, + DeploymentDetailResponsePendingPreparedStackExtendAzureBinding$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackExtendAzureBinding' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseProviderUnion3$inboundSchema: z.ZodType< - DeploymentDetailResponseProviderUnion3, - unknown -> = z.union([ - z.lazy(() => DeploymentDetailResponseProviderAwsAlb3$inboundSchema), - z.lazy(() => - DeploymentDetailResponseProviderAzureApplicationGatewayForContainers3$inboundSchema - ), - z.lazy(() => DeploymentDetailResponseProviderGkeGateway3$inboundSchema), - z.any(), -]); +export const DeploymentDetailResponsePendingPreparedStackExtendAzureGrant$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackExtendAzureGrant, + unknown + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); -export function deploymentDetailResponseProviderUnion3FromJSON( +export function deploymentDetailResponsePendingPreparedStackExtendAzureGrantFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePendingPreparedStackExtendAzureGrant, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponseProviderUnion3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseProviderUnion3' from JSON`, + DeploymentDetailResponsePendingPreparedStackExtendAzureGrant$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackExtendAzureGrant' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseRouteIngress2$inboundSchema: z.ZodType< - DeploymentDetailResponseRouteIngress2, - unknown -> = z.object({ - annotations: z.record(z.string(), z.string()).optional(), - controller: z.nullable(z.string()).optional(), - ingressClassName: z.string(), - labels: z.record(z.string(), z.string()).optional(), - provider: z.nullable( - z.union([ - z.lazy(() => DeploymentDetailResponseProviderAwsAlb3$inboundSchema), - z.lazy(() => - DeploymentDetailResponseProviderAzureApplicationGatewayForContainers3$inboundSchema +export const DeploymentDetailResponsePendingPreparedStackExtendAzure$inboundSchema: + z.ZodType = + z.object({ + binding: z.lazy(() => + DeploymentDetailResponsePendingPreparedStackExtendAzureBinding$inboundSchema ), - z.lazy(() => DeploymentDetailResponseProviderGkeGateway3$inboundSchema), - z.any(), - ]), - ).optional(), - routeApi: z.literal("ingress"), -}); + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + DeploymentDetailResponsePendingPreparedStackExtendAzureGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); -export function deploymentDetailResponseRouteIngress2FromJSON( +export function deploymentDetailResponsePendingPreparedStackExtendAzureFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePendingPreparedStackExtendAzure, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponseRouteIngress2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseRouteIngress2' from JSON`, + DeploymentDetailResponsePendingPreparedStackExtendAzure$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackExtendAzure' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseRouteUnion2$inboundSchema: z.ZodType< - DeploymentDetailResponseRouteUnion2, - unknown -> = z.union([ - z.lazy(() => DeploymentDetailResponseRouteIngress2$inboundSchema), - z.lazy(() => DeploymentDetailResponseRouteGateway2$inboundSchema), -]); +export const DeploymentDetailResponsePendingPreparedStackExtendConditionResource$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackExtendConditionResource, + unknown + > = z.object({ + expression: z.string(), + title: z.string(), + }); -export function deploymentDetailResponseRouteUnion2FromJSON( +export function deploymentDetailResponsePendingPreparedStackExtendConditionResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePendingPreparedStackExtendConditionResource, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponseRouteUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseRouteUnion2' from JSON`, + DeploymentDetailResponsePendingPreparedStackExtendConditionResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackExtendConditionResource' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseExposureCustom$inboundSchema: z.ZodType< - DeploymentDetailResponseExposureCustom, - unknown -> = z.object({ - certificate: z.union([ - z.lazy(() => - DeploymentDetailResponseCertificateTLSSecretRef2$inboundSchema - ), - z.lazy(() => - DeploymentDetailResponseCertificateManagedAcmImport2$inboundSchema - ), - z.lazy(() => DeploymentDetailResponseCertificateAwsAcmArn2$inboundSchema), +export const DeploymentDetailResponsePendingPreparedStackExtendResourceConditionUnion$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackExtendResourceConditionUnion, + unknown + > = z.union([ z.lazy(() => - DeploymentDetailResponseCertificateManagedTLSSecret2$inboundSchema + DeploymentDetailResponsePendingPreparedStackExtendConditionResource$inboundSchema ), - z.lazy(() => DeploymentDetailResponseCertificateNone2$inboundSchema), - ]), - domain: z.string(), - mode: DeploymentDetailResponseModeCustom$inboundSchema, - route: z.union([ - z.lazy(() => DeploymentDetailResponseRouteIngress2$inboundSchema), - z.lazy(() => DeploymentDetailResponseRouteGateway2$inboundSchema), - ]), -}); - -export function deploymentDetailResponseExposureCustomFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseExposureCustom$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseExposureCustom' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseCertificateNone1$inboundSchema: z.ZodType< - DeploymentDetailResponseCertificateNone1, - unknown -> = z.object({ - mode: z.literal("none"), -}); + z.any(), + ]); -export function deploymentDetailResponseCertificateNone1FromJSON( +export function deploymentDetailResponsePendingPreparedStackExtendResourceConditionUnionFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseCertificateNone1, + DeploymentDetailResponsePendingPreparedStackExtendResourceConditionUnion, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseCertificateNone1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseCertificateNone1' from JSON`, + DeploymentDetailResponsePendingPreparedStackExtendResourceConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackExtendResourceConditionUnion' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseCertificateManagedTLSSecret1$inboundSchema: - z.ZodType = z - .object({ - mode: z.literal("managedTlsSecret"), - secretNameTemplate: z.string(), - }); +export const DeploymentDetailResponsePendingPreparedStackExtendGcpResource$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackExtendGcpResource, + unknown + > = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => + DeploymentDetailResponsePendingPreparedStackExtendConditionResource$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); -export function deploymentDetailResponseCertificateManagedTLSSecret1FromJSON( +export function deploymentDetailResponsePendingPreparedStackExtendGcpResourceFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseCertificateManagedTLSSecret1, + DeploymentDetailResponsePendingPreparedStackExtendGcpResource, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseCertificateManagedTLSSecret1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseCertificateManagedTLSSecret1' from JSON`, + DeploymentDetailResponsePendingPreparedStackExtendGcpResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackExtendGcpResource' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseCertificateAwsAcmArn1$inboundSchema: - z.ZodType = z.object({ - certificateArn: z.string(), - mode: z.literal("awsAcmArn"), +export const DeploymentDetailResponsePendingPreparedStackExtendConditionStack$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackExtendConditionStack, + unknown + > = z.object({ + expression: z.string(), + title: z.string(), }); -export function deploymentDetailResponseCertificateAwsAcmArn1FromJSON( +export function deploymentDetailResponsePendingPreparedStackExtendConditionStackFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseCertificateAwsAcmArn1, + DeploymentDetailResponsePendingPreparedStackExtendConditionStack, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseCertificateAwsAcmArn1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseCertificateAwsAcmArn1' from JSON`, + DeploymentDetailResponsePendingPreparedStackExtendConditionStack$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackExtendConditionStack' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseCertificateManagedAcmImport1$inboundSchema: - z.ZodType = z - .object({ - mode: z.literal("managedAcmImport"), - region: z.nullable(z.string()).optional(), - tags: z.record(z.string(), z.string()).optional(), - }); +export const DeploymentDetailResponsePendingPreparedStackExtendStackConditionUnion$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackExtendStackConditionUnion, + unknown + > = z.union([ + z.lazy(() => + DeploymentDetailResponsePendingPreparedStackExtendConditionStack$inboundSchema + ), + z.any(), + ]); -export function deploymentDetailResponseCertificateManagedAcmImport1FromJSON( +export function deploymentDetailResponsePendingPreparedStackExtendStackConditionUnionFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseCertificateManagedAcmImport1, + DeploymentDetailResponsePendingPreparedStackExtendStackConditionUnion, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseCertificateManagedAcmImport1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseCertificateManagedAcmImport1' from JSON`, + DeploymentDetailResponsePendingPreparedStackExtendStackConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackExtendStackConditionUnion' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseCertificateTLSSecretRef1$inboundSchema: - z.ZodType = z - .object({ - namespace: z.nullable(z.string()).optional(), - secretName: z.string(), - mode: z.literal("tlsSecretRef"), - }); +export const DeploymentDetailResponsePendingPreparedStackExtendGcpStack$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackExtendGcpStack, + unknown + > = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => + DeploymentDetailResponsePendingPreparedStackExtendConditionStack$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); -export function deploymentDetailResponseCertificateTLSSecretRef1FromJSON( +export function deploymentDetailResponsePendingPreparedStackExtendGcpStackFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseCertificateTLSSecretRef1, + DeploymentDetailResponsePendingPreparedStackExtendGcpStack, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseCertificateTLSSecretRef1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseCertificateTLSSecretRef1' from JSON`, + DeploymentDetailResponsePendingPreparedStackExtendGcpStack$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackExtendGcpStack' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseCertificateUnion1$inboundSchema: z.ZodType< - DeploymentDetailResponseCertificateUnion1, - unknown -> = z.union([ - z.lazy(() => DeploymentDetailResponseCertificateTLSSecretRef1$inboundSchema), - z.lazy(() => - DeploymentDetailResponseCertificateManagedAcmImport1$inboundSchema - ), - z.lazy(() => DeploymentDetailResponseCertificateAwsAcmArn1$inboundSchema), - z.lazy(() => - DeploymentDetailResponseCertificateManagedTLSSecret1$inboundSchema - ), - z.lazy(() => DeploymentDetailResponseCertificateNone1$inboundSchema), -]); +export const DeploymentDetailResponsePendingPreparedStackExtendGcpBinding$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackExtendGcpBinding, + unknown + > = z.object({ + resource: z.lazy(() => + DeploymentDetailResponsePendingPreparedStackExtendGcpResource$inboundSchema + ).optional(), + stack: z.lazy(() => + DeploymentDetailResponsePendingPreparedStackExtendGcpStack$inboundSchema + ).optional(), + }); -export function deploymentDetailResponseCertificateUnion1FromJSON( +export function deploymentDetailResponsePendingPreparedStackExtendGcpBindingFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseCertificateUnion1, + DeploymentDetailResponsePendingPreparedStackExtendGcpBinding, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseCertificateUnion1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseCertificateUnion1' from JSON`, + DeploymentDetailResponsePendingPreparedStackExtendGcpBinding$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackExtendGcpBinding' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseModeGenerated$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseModeGenerated -> = z.enum(DeploymentDetailResponseModeGenerated); - -/** @internal */ -export const DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum2$inboundSchema: - z.ZodEnum< - typeof DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum2 - > = z.enum( - DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum2, - ); - -/** @internal */ -export const DeploymentDetailResponseProviderAzureApplicationGatewayForContainers2$inboundSchema: +export const DeploymentDetailResponsePendingPreparedStackExtendGcpGrant$inboundSchema: z.ZodType< - DeploymentDetailResponseProviderAzureApplicationGatewayForContainers2, + DeploymentDetailResponsePendingPreparedStackExtendGcpGrant, unknown > = z.object({ - albName: z.nullable(z.string()).optional(), - albNamespace: z.nullable(z.string()).optional(), - frontend: z.string(), - provider: - DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum2$inboundSchema, + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function deploymentDetailResponseProviderAzureApplicationGatewayForContainers2FromJSON( +export function deploymentDetailResponsePendingPreparedStackExtendGcpGrantFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseProviderAzureApplicationGatewayForContainers2, + DeploymentDetailResponsePendingPreparedStackExtendGcpGrant, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseProviderAzureApplicationGatewayForContainers2$inboundSchema + DeploymentDetailResponsePendingPreparedStackExtendGcpGrant$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseProviderAzureApplicationGatewayForContainers2' from JSON`, + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackExtendGcpGrant' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseProviderGkeGatewayEnum2$inboundSchema: - z.ZodEnum = z.enum( - DeploymentDetailResponseProviderGkeGatewayEnum2, - ); - -/** @internal */ -export const DeploymentDetailResponseProviderGkeGateway2$inboundSchema: - z.ZodType = z.object({ - provider: DeploymentDetailResponseProviderGkeGatewayEnum2$inboundSchema, - staticAddressName: z.nullable(z.string()).optional(), - }); +export const DeploymentDetailResponsePendingPreparedStackExtendGcp$inboundSchema: + z.ZodType = z + .object({ + binding: z.lazy(() => + DeploymentDetailResponsePendingPreparedStackExtendGcpBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + DeploymentDetailResponsePendingPreparedStackExtendGcpGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); -export function deploymentDetailResponseProviderGkeGateway2FromJSON( +export function deploymentDetailResponsePendingPreparedStackExtendGcpFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseProviderGkeGateway2, + DeploymentDetailResponsePendingPreparedStackExtendGcp, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseProviderGkeGateway2$inboundSchema.parse( + DeploymentDetailResponsePendingPreparedStackExtendGcp$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'DeploymentDetailResponseProviderGkeGateway2' from JSON`, + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackExtendGcp' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseProviderAwsAlbEnum2$inboundSchema: - z.ZodEnum = z.enum( - DeploymentDetailResponseProviderAwsAlbEnum2, - ); - -/** @internal */ -export const DeploymentDetailResponseProviderAwsAlb2$inboundSchema: z.ZodType< - DeploymentDetailResponseProviderAwsAlb2, - unknown -> = z.object({ - ipAddressType: z.nullable(z.string()).optional(), - provider: DeploymentDetailResponseProviderAwsAlbEnum2$inboundSchema, - scheme: z.string(), - subnetIds: z.array(z.string()).optional(), - targetType: z.string(), -}); +export const DeploymentDetailResponsePendingPreparedStackExtendPlatforms$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackExtendPlatforms, + unknown + > = z.object({ + aws: z.nullable( + z.array(z.lazy(() => + DeploymentDetailResponsePendingPreparedStackExtendAw$inboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + DeploymentDetailResponsePendingPreparedStackExtendAzure$inboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + DeploymentDetailResponsePendingPreparedStackExtendGcp$inboundSchema + )), + ).optional(), + }); -export function deploymentDetailResponseProviderAwsAlb2FromJSON( +export function deploymentDetailResponsePendingPreparedStackExtendPlatformsFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseProviderAwsAlb2, + DeploymentDetailResponsePendingPreparedStackExtendPlatforms, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseProviderAwsAlb2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseProviderAwsAlb2' from JSON`, + DeploymentDetailResponsePendingPreparedStackExtendPlatforms$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackExtendPlatforms' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseProviderUnion2$inboundSchema: z.ZodType< - DeploymentDetailResponseProviderUnion2, - unknown -> = z.union([ - z.lazy(() => DeploymentDetailResponseProviderAwsAlb2$inboundSchema), - z.lazy(() => - DeploymentDetailResponseProviderAzureApplicationGatewayForContainers2$inboundSchema - ), - z.lazy(() => DeploymentDetailResponseProviderGkeGateway2$inboundSchema), - z.any(), -]); +export const DeploymentDetailResponsePendingPreparedStackExtend$inboundSchema: + z.ZodType = z + .object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + DeploymentDetailResponsePendingPreparedStackExtendPlatforms$inboundSchema + ), + }); -export function deploymentDetailResponseProviderUnion2FromJSON( +export function deploymentDetailResponsePendingPreparedStackExtendFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePendingPreparedStackExtend, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponseProviderUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseProviderUnion2' from JSON`, + DeploymentDetailResponsePendingPreparedStackExtend$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackExtend' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseRouteGateway1$inboundSchema: z.ZodType< - DeploymentDetailResponseRouteGateway1, - unknown -> = z.object({ - annotations: z.record(z.string(), z.string()).optional(), - controller: z.nullable(z.string()).optional(), - gatewayClassName: z.string(), - labels: z.record(z.string(), z.string()).optional(), - listenerPort: z.int(), - provider: z.nullable( +export const DeploymentDetailResponsePendingPreparedStackExtendUnion$inboundSchema: + z.ZodType = z.union([ - z.lazy(() => DeploymentDetailResponseProviderAwsAlb2$inboundSchema), z.lazy(() => - DeploymentDetailResponseProviderAzureApplicationGatewayForContainers2$inboundSchema + DeploymentDetailResponsePendingPreparedStackExtend$inboundSchema ), - z.lazy(() => DeploymentDetailResponseProviderGkeGateway2$inboundSchema), - z.any(), - ]), - ).optional(), - routeApi: z.literal("gateway"), -}); + z.string(), + ]); -export function deploymentDetailResponseRouteGateway1FromJSON( +export function deploymentDetailResponsePendingPreparedStackExtendUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePendingPreparedStackExtendUnion, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponseRouteGateway1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseRouteGateway1' from JSON`, + DeploymentDetailResponsePendingPreparedStackExtendUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackExtendUnion' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum1$inboundSchema: - z.ZodEnum< - typeof DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum1 - > = z.enum( - DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum1, - ); - -/** @internal */ -export const DeploymentDetailResponseProviderAzureApplicationGatewayForContainers1$inboundSchema: - z.ZodType< - DeploymentDetailResponseProviderAzureApplicationGatewayForContainers1, - unknown - > = z.object({ - albName: z.nullable(z.string()).optional(), - albNamespace: z.nullable(z.string()).optional(), - frontend: z.string(), - provider: - DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum1$inboundSchema, - }); +export const DeploymentDetailResponsePendingPreparedStackManagement1$inboundSchema: + z.ZodType = + z.object({ + extend: z.record( + z.string(), + z.array(z.union([ + z.lazy(() => + DeploymentDetailResponsePendingPreparedStackExtend$inboundSchema + ), + z.string(), + ])), + ), + }); -export function deploymentDetailResponseProviderAzureApplicationGatewayForContainers1FromJSON( +export function deploymentDetailResponsePendingPreparedStackManagement1FromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseProviderAzureApplicationGatewayForContainers1, + DeploymentDetailResponsePendingPreparedStackManagement1, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseProviderAzureApplicationGatewayForContainers1$inboundSchema + DeploymentDetailResponsePendingPreparedStackManagement1$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseProviderAzureApplicationGatewayForContainers1' from JSON`, + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackManagement1' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseProviderGkeGatewayEnum1$inboundSchema: - z.ZodEnum = z.enum( - DeploymentDetailResponseProviderGkeGatewayEnum1, - ); - -/** @internal */ -export const DeploymentDetailResponseProviderGkeGateway1$inboundSchema: - z.ZodType = z.object({ - provider: DeploymentDetailResponseProviderGkeGatewayEnum1$inboundSchema, - staticAddressName: z.nullable(z.string()).optional(), - }); +export const DeploymentDetailResponsePendingPreparedStackManagementUnion$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackManagementUnion, + unknown + > = z.union([ + z.lazy(() => + DeploymentDetailResponsePendingPreparedStackManagement1$inboundSchema + ), + z.lazy(() => + DeploymentDetailResponsePendingPreparedStackManagement2$inboundSchema + ), + DeploymentDetailResponsePendingPreparedStackManagementEnum$inboundSchema, + ]); -export function deploymentDetailResponseProviderGkeGateway1FromJSON( +export function deploymentDetailResponsePendingPreparedStackManagementUnionFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseProviderGkeGateway1, + DeploymentDetailResponsePendingPreparedStackManagementUnion, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseProviderGkeGateway1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseProviderGkeGateway1' from JSON`, + DeploymentDetailResponsePendingPreparedStackManagementUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackManagementUnion' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseProviderAwsAlbEnum1$inboundSchema: - z.ZodEnum = z.enum( - DeploymentDetailResponseProviderAwsAlbEnum1, - ); - -/** @internal */ -export const DeploymentDetailResponseProviderAwsAlb1$inboundSchema: z.ZodType< - DeploymentDetailResponseProviderAwsAlb1, - unknown -> = z.object({ - ipAddressType: z.nullable(z.string()).optional(), - provider: DeploymentDetailResponseProviderAwsAlbEnum1$inboundSchema, - scheme: z.string(), - subnetIds: z.array(z.string()).optional(), - targetType: z.string(), -}); +export const DeploymentDetailResponsePendingPreparedStackProfileAwResource$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackProfileAwResource, + unknown + > = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); -export function deploymentDetailResponseProviderAwsAlb1FromJSON( +export function deploymentDetailResponsePendingPreparedStackProfileAwResourceFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseProviderAwsAlb1, + DeploymentDetailResponsePendingPreparedStackProfileAwResource, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseProviderAwsAlb1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseProviderAwsAlb1' from JSON`, + DeploymentDetailResponsePendingPreparedStackProfileAwResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackProfileAwResource' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseProviderUnion1$inboundSchema: z.ZodType< - DeploymentDetailResponseProviderUnion1, - unknown -> = z.union([ - z.lazy(() => DeploymentDetailResponseProviderAwsAlb1$inboundSchema), - z.lazy(() => - DeploymentDetailResponseProviderAzureApplicationGatewayForContainers1$inboundSchema - ), - z.lazy(() => DeploymentDetailResponseProviderGkeGateway1$inboundSchema), - z.any(), -]); +export const DeploymentDetailResponsePendingPreparedStackProfileAwStack$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackProfileAwStack, + unknown + > = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); -export function deploymentDetailResponseProviderUnion1FromJSON( +export function deploymentDetailResponsePendingPreparedStackProfileAwStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePendingPreparedStackProfileAwStack, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponseProviderUnion1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseProviderUnion1' from JSON`, + DeploymentDetailResponsePendingPreparedStackProfileAwStack$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackProfileAwStack' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseRouteIngress1$inboundSchema: z.ZodType< - DeploymentDetailResponseRouteIngress1, - unknown -> = z.object({ - annotations: z.record(z.string(), z.string()).optional(), - controller: z.nullable(z.string()).optional(), - ingressClassName: z.string(), - labels: z.record(z.string(), z.string()).optional(), - provider: z.nullable( - z.union([ - z.lazy(() => DeploymentDetailResponseProviderAwsAlb1$inboundSchema), - z.lazy(() => - DeploymentDetailResponseProviderAzureApplicationGatewayForContainers1$inboundSchema - ), - z.lazy(() => DeploymentDetailResponseProviderGkeGateway1$inboundSchema), - z.any(), - ]), - ).optional(), - routeApi: z.literal("ingress"), -}); +export const DeploymentDetailResponsePendingPreparedStackProfileAwBinding$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackProfileAwBinding, + unknown + > = z.object({ + resource: z.lazy(() => + DeploymentDetailResponsePendingPreparedStackProfileAwResource$inboundSchema + ).optional(), + stack: z.lazy(() => + DeploymentDetailResponsePendingPreparedStackProfileAwStack$inboundSchema + ).optional(), + }); -export function deploymentDetailResponseRouteIngress1FromJSON( +export function deploymentDetailResponsePendingPreparedStackProfileAwBindingFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePendingPreparedStackProfileAwBinding, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponseRouteIngress1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseRouteIngress1' from JSON`, + DeploymentDetailResponsePendingPreparedStackProfileAwBinding$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackProfileAwBinding' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseRouteUnion1$inboundSchema: z.ZodType< - DeploymentDetailResponseRouteUnion1, - unknown -> = z.union([ - z.lazy(() => DeploymentDetailResponseRouteIngress1$inboundSchema), - z.lazy(() => DeploymentDetailResponseRouteGateway1$inboundSchema), -]); +export const DeploymentDetailResponsePendingPreparedStackProfileEffect$inboundSchema: + z.ZodEnum = + z.enum(DeploymentDetailResponsePendingPreparedStackProfileEffect); -export function deploymentDetailResponseRouteUnion1FromJSON( +/** @internal */ +export const DeploymentDetailResponsePendingPreparedStackProfileAwGrant$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackProfileAwGrant, + unknown + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function deploymentDetailResponsePendingPreparedStackProfileAwGrantFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePendingPreparedStackProfileAwGrant, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponseRouteUnion1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseRouteUnion1' from JSON`, + DeploymentDetailResponsePendingPreparedStackProfileAwGrant$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackProfileAwGrant' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseExposureGenerated$inboundSchema: z.ZodType< - DeploymentDetailResponseExposureGenerated, - unknown -> = z.object({ - certificate: z.union([ - z.lazy(() => - DeploymentDetailResponseCertificateTLSSecretRef1$inboundSchema - ), - z.lazy(() => - DeploymentDetailResponseCertificateManagedAcmImport1$inboundSchema - ), - z.lazy(() => DeploymentDetailResponseCertificateAwsAcmArn1$inboundSchema), - z.lazy(() => - DeploymentDetailResponseCertificateManagedTLSSecret1$inboundSchema - ), - z.lazy(() => DeploymentDetailResponseCertificateNone1$inboundSchema), - ]), - mode: DeploymentDetailResponseModeGenerated$inboundSchema, - route: z.union([ - z.lazy(() => DeploymentDetailResponseRouteIngress1$inboundSchema), - z.lazy(() => DeploymentDetailResponseRouteGateway1$inboundSchema), - ]), -}); +export const DeploymentDetailResponsePendingPreparedStackProfileAw$inboundSchema: + z.ZodType = z + .object({ + binding: z.lazy(() => + DeploymentDetailResponsePendingPreparedStackProfileAwBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: + DeploymentDetailResponsePendingPreparedStackProfileEffect$inboundSchema + .optional(), + grant: z.lazy(() => + DeploymentDetailResponsePendingPreparedStackProfileAwGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); -export function deploymentDetailResponseExposureGeneratedFromJSON( +export function deploymentDetailResponsePendingPreparedStackProfileAwFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseExposureGenerated, + DeploymentDetailResponsePendingPreparedStackProfileAw, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseExposureGenerated$inboundSchema.parse( + DeploymentDetailResponsePendingPreparedStackProfileAw$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'DeploymentDetailResponseExposureGenerated' from JSON`, + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackProfileAw' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseModeDisabled$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseModeDisabled -> = z.enum(DeploymentDetailResponseModeDisabled); - -/** @internal */ -export const DeploymentDetailResponseExposureDisabled$inboundSchema: z.ZodType< - DeploymentDetailResponseExposureDisabled, - unknown -> = z.object({ - mode: DeploymentDetailResponseModeDisabled$inboundSchema, -}); +export const DeploymentDetailResponsePendingPreparedStackProfileAzureResource$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackProfileAzureResource, + unknown + > = z.object({ + scope: z.string(), + }); -export function deploymentDetailResponseExposureDisabledFromJSON( +export function deploymentDetailResponsePendingPreparedStackProfileAzureResourceFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseExposureDisabled, + DeploymentDetailResponsePendingPreparedStackProfileAzureResource, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseExposureDisabled$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseExposureDisabled' from JSON`, + DeploymentDetailResponsePendingPreparedStackProfileAzureResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackProfileAzureResource' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseExposureUnion$inboundSchema: z.ZodType< - DeploymentDetailResponseExposureUnion, - unknown -> = z.union([ - z.lazy(() => DeploymentDetailResponseExposureCustom$inboundSchema), - z.lazy(() => DeploymentDetailResponseExposureGenerated$inboundSchema), - z.lazy(() => DeploymentDetailResponseExposureDisabled$inboundSchema), - z.any(), -]); +export const DeploymentDetailResponsePendingPreparedStackProfileAzureStack$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackProfileAzureStack, + unknown + > = z.object({ + scope: z.string(), + }); -export function deploymentDetailResponseExposureUnionFromJSON( +export function deploymentDetailResponsePendingPreparedStackProfileAzureStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePendingPreparedStackProfileAzureStack, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponseExposureUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseExposureUnion' from JSON`, + DeploymentDetailResponsePendingPreparedStackProfileAzureStack$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackProfileAzureStack' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseKubernetes$inboundSchema: z.ZodType< - DeploymentDetailResponseKubernetes, - unknown -> = z.object({ - cluster: z.nullable( - z.union([ - z.lazy(() => DeploymentDetailResponseCluster$inboundSchema), - z.any(), - ]), - ).optional(), - exposure: z.nullable( - z.union([ - z.lazy(() => DeploymentDetailResponseExposureCustom$inboundSchema), - z.lazy(() => DeploymentDetailResponseExposureGenerated$inboundSchema), - z.lazy(() => DeploymentDetailResponseExposureDisabled$inboundSchema), - z.any(), - ]), - ).optional(), -}); +export const DeploymentDetailResponsePendingPreparedStackProfileAzureBinding$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackProfileAzureBinding, + unknown + > = z.object({ + resource: z.lazy(() => + DeploymentDetailResponsePendingPreparedStackProfileAzureResource$inboundSchema + ).optional(), + stack: z.lazy(() => + DeploymentDetailResponsePendingPreparedStackProfileAzureStack$inboundSchema + ).optional(), + }); -export function deploymentDetailResponseKubernetesFromJSON( +export function deploymentDetailResponsePendingPreparedStackProfileAzureBindingFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePendingPreparedStackProfileAzureBinding, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponseKubernetes$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseKubernetes' from JSON`, + DeploymentDetailResponsePendingPreparedStackProfileAzureBinding$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackProfileAzureBinding' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseKubernetesUnion$inboundSchema: z.ZodType< - DeploymentDetailResponseKubernetesUnion, - unknown -> = z.union([ - z.lazy(() => DeploymentDetailResponseKubernetes$inboundSchema), - z.any(), -]); +export const DeploymentDetailResponsePendingPreparedStackProfileAzureGrant$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackProfileAzureGrant, + unknown + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); -export function deploymentDetailResponseKubernetesUnionFromJSON( +export function deploymentDetailResponsePendingPreparedStackProfileAzureGrantFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseKubernetesUnion, + DeploymentDetailResponsePendingPreparedStackProfileAzureGrant, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseKubernetesUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseKubernetesUnion' from JSON`, + DeploymentDetailResponsePendingPreparedStackProfileAzureGrant$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackProfileAzureGrant' from JSON`, ); -} - -/** @internal */ -export const DeploymentDetailResponseTypeByoVnetAzure$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseTypeByoVnetAzure -> = z.enum(DeploymentDetailResponseTypeByoVnetAzure); - -/** @internal */ -export const DeploymentDetailResponseNetworkByoVnetAzure$inboundSchema: - z.ZodType = z.object({ - application_gateway_subnet_name: z.nullable(z.string()).optional(), - private_endpoint_subnet_name: z.nullable(z.string()).optional(), - private_subnet_name: z.string(), - public_subnet_name: z.string(), - type: DeploymentDetailResponseTypeByoVnetAzure$inboundSchema, - vnet_resource_id: z.string(), - }).transform((v) => { - return remap$(v, { - "application_gateway_subnet_name": "applicationGatewaySubnetName", - "private_endpoint_subnet_name": "privateEndpointSubnetName", - "private_subnet_name": "privateSubnetName", - "public_subnet_name": "publicSubnetName", - "vnet_resource_id": "vnetResourceId", +} + +/** @internal */ +export const DeploymentDetailResponsePendingPreparedStackProfileAzure$inboundSchema: + z.ZodType = + z.object({ + binding: z.lazy(() => + DeploymentDetailResponsePendingPreparedStackProfileAzureBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + DeploymentDetailResponsePendingPreparedStackProfileAzureGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), }); - }); -export function deploymentDetailResponseNetworkByoVnetAzureFromJSON( +export function deploymentDetailResponsePendingPreparedStackProfileAzureFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseNetworkByoVnetAzure, + DeploymentDetailResponsePendingPreparedStackProfileAzure, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseNetworkByoVnetAzure$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseNetworkByoVnetAzure' from JSON`, + DeploymentDetailResponsePendingPreparedStackProfileAzure$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackProfileAzure' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseTypeByoVpcGcp$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseTypeByoVpcGcp -> = z.enum(DeploymentDetailResponseTypeByoVpcGcp); - -/** @internal */ -export const DeploymentDetailResponseNetworkByoVpcGcp$inboundSchema: z.ZodType< - DeploymentDetailResponseNetworkByoVpcGcp, - unknown -> = z.object({ - network_name: z.string(), - region: z.string(), - subnet_name: z.string(), - type: DeploymentDetailResponseTypeByoVpcGcp$inboundSchema, -}).transform((v) => { - return remap$(v, { - "network_name": "networkName", - "subnet_name": "subnetName", +export const DeploymentDetailResponsePendingPreparedStackProfileConditionResource$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackProfileConditionResource, + unknown + > = z.object({ + expression: z.string(), + title: z.string(), }); -}); -export function deploymentDetailResponseNetworkByoVpcGcpFromJSON( +export function deploymentDetailResponsePendingPreparedStackProfileConditionResourceFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseNetworkByoVpcGcp, + DeploymentDetailResponsePendingPreparedStackProfileConditionResource, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseNetworkByoVpcGcp$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseNetworkByoVpcGcp' from JSON`, + DeploymentDetailResponsePendingPreparedStackProfileConditionResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackProfileConditionResource' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseTypeByoVpcAws$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseTypeByoVpcAws -> = z.enum(DeploymentDetailResponseTypeByoVpcAws); - -/** @internal */ -export const DeploymentDetailResponseNetworkByoVpcAws$inboundSchema: z.ZodType< - DeploymentDetailResponseNetworkByoVpcAws, - unknown -> = z.object({ - private_subnet_ids: z.array(z.string()), - public_subnet_ids: z.array(z.string()), - security_group_ids: z.array(z.string()).optional(), - type: DeploymentDetailResponseTypeByoVpcAws$inboundSchema, - vpc_id: z.string(), -}).transform((v) => { - return remap$(v, { - "private_subnet_ids": "privateSubnetIds", - "public_subnet_ids": "publicSubnetIds", - "security_group_ids": "securityGroupIds", - "vpc_id": "vpcId", - }); -}); +export const DeploymentDetailResponsePendingPreparedStackProfileResourceConditionUnion$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackProfileResourceConditionUnion, + unknown + > = z.union([ + z.lazy(() => + DeploymentDetailResponsePendingPreparedStackProfileConditionResource$inboundSchema + ), + z.any(), + ]); -export function deploymentDetailResponseNetworkByoVpcAwsFromJSON( +export function deploymentDetailResponsePendingPreparedStackProfileResourceConditionUnionFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseNetworkByoVpcAws, + DeploymentDetailResponsePendingPreparedStackProfileResourceConditionUnion, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseNetworkByoVpcAws$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseNetworkByoVpcAws' from JSON`, + DeploymentDetailResponsePendingPreparedStackProfileResourceConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackProfileResourceConditionUnion' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseTypeCreate$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseTypeCreate -> = z.enum(DeploymentDetailResponseTypeCreate); - -/** @internal */ -export const DeploymentDetailResponseNetworkCreate$inboundSchema: z.ZodType< - DeploymentDetailResponseNetworkCreate, - unknown -> = z.object({ - availability_zones: z.int().optional(), - cidr: z.nullable(z.string()).optional(), - type: DeploymentDetailResponseTypeCreate$inboundSchema, -}).transform((v) => { - return remap$(v, { - "availability_zones": "availabilityZones", +export const DeploymentDetailResponsePendingPreparedStackProfileGcpResource$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackProfileGcpResource, + unknown + > = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => + DeploymentDetailResponsePendingPreparedStackProfileConditionResource$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), }); -}); -export function deploymentDetailResponseNetworkCreateFromJSON( +export function deploymentDetailResponsePendingPreparedStackProfileGcpResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePendingPreparedStackProfileGcpResource, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponseNetworkCreate$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseNetworkCreate' from JSON`, + DeploymentDetailResponsePendingPreparedStackProfileGcpResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackProfileGcpResource' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseTypeUseDefault$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseTypeUseDefault -> = z.enum(DeploymentDetailResponseTypeUseDefault); - -/** @internal */ -export const DeploymentDetailResponseNetworkUseDefault$inboundSchema: z.ZodType< - DeploymentDetailResponseNetworkUseDefault, - unknown -> = z.object({ - type: DeploymentDetailResponseTypeUseDefault$inboundSchema, -}); +export const DeploymentDetailResponsePendingPreparedStackProfileConditionStack$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackProfileConditionStack, + unknown + > = z.object({ + expression: z.string(), + title: z.string(), + }); -export function deploymentDetailResponseNetworkUseDefaultFromJSON( +export function deploymentDetailResponsePendingPreparedStackProfileConditionStackFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseNetworkUseDefault, + DeploymentDetailResponsePendingPreparedStackProfileConditionStack, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseNetworkUseDefault$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseNetworkUseDefault' from JSON`, + DeploymentDetailResponsePendingPreparedStackProfileConditionStack$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackProfileConditionStack' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseNetworkUnion$inboundSchema: z.ZodType< - DeploymentDetailResponseNetworkUnion, - unknown -> = z.union([ - z.lazy(() => DeploymentDetailResponseNetworkByoVpcAws$inboundSchema), - z.lazy(() => DeploymentDetailResponseNetworkByoVpcGcp$inboundSchema), - z.lazy(() => DeploymentDetailResponseNetworkByoVnetAzure$inboundSchema), - z.lazy(() => DeploymentDetailResponseNetworkUseDefault$inboundSchema), - z.lazy(() => DeploymentDetailResponseNetworkCreate$inboundSchema), - z.any(), -]); +export const DeploymentDetailResponsePendingPreparedStackProfileStackConditionUnion$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackProfileStackConditionUnion, + unknown + > = z.union([ + z.lazy(() => + DeploymentDetailResponsePendingPreparedStackProfileConditionStack$inboundSchema + ), + z.any(), + ]); -export function deploymentDetailResponseNetworkUnionFromJSON( +export function deploymentDetailResponsePendingPreparedStackProfileStackConditionUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePendingPreparedStackProfileStackConditionUnion, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponseNetworkUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseNetworkUnion' from JSON`, + DeploymentDetailResponsePendingPreparedStackProfileStackConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackProfileStackConditionUnion' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseTelemetry$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseTelemetry -> = z.enum(DeploymentDetailResponseTelemetry); - -/** @internal */ -export const DeploymentDetailResponseUpdates$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseUpdates -> = z.enum(DeploymentDetailResponseUpdates); - -/** @internal */ -export const DeploymentDetailResponseStackSettings$inboundSchema: z.ZodType< - DeploymentDetailResponseStackSettings, - unknown -> = z.object({ - compute: z.nullable( - z.union([ - z.lazy(() => DeploymentDetailResponseCompute$inboundSchema), - z.any(), - ]), - ).optional(), - deploymentModel: DeploymentDetailResponseDeploymentModel$inboundSchema - .optional(), - domains: z.nullable( - z.union([ - z.lazy(() => DeploymentDetailResponseDomains$inboundSchema), - z.any(), - ]), - ).optional(), - externalBindings: z.nullable( - z.lazy(() => DeploymentDetailResponseExternalBindings$inboundSchema), - ).optional(), - heartbeats: DeploymentDetailResponseHeartbeats$inboundSchema.optional(), - kubernetes: z.nullable( - z.union([ - z.lazy(() => DeploymentDetailResponseKubernetes$inboundSchema), - z.any(), - ]), - ).optional(), - network: z.nullable( - z.union([ - z.lazy(() => DeploymentDetailResponseNetworkByoVpcAws$inboundSchema), - z.lazy(() => DeploymentDetailResponseNetworkByoVpcGcp$inboundSchema), - z.lazy(() => DeploymentDetailResponseNetworkByoVnetAzure$inboundSchema), - z.lazy(() => DeploymentDetailResponseNetworkUseDefault$inboundSchema), - z.lazy(() => DeploymentDetailResponseNetworkCreate$inboundSchema), - z.any(), - ]), - ).optional(), - telemetry: DeploymentDetailResponseTelemetry$inboundSchema.optional(), - updates: DeploymentDetailResponseUpdates$inboundSchema.optional(), -}); +export const DeploymentDetailResponsePendingPreparedStackProfileGcpStack$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackProfileGcpStack, + unknown + > = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => + DeploymentDetailResponsePendingPreparedStackProfileConditionStack$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); -export function deploymentDetailResponseStackSettingsFromJSON( +export function deploymentDetailResponsePendingPreparedStackProfileGcpStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePendingPreparedStackProfileGcpStack, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponseStackSettings$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseStackSettings' from JSON`, + DeploymentDetailResponsePendingPreparedStackProfileGcpStack$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackProfileGcpStack' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseStackStatePlatform$inboundSchema: - z.ZodEnum = z.enum( - DeploymentDetailResponseStackStatePlatform, - ); - -/** @internal */ -export const DeploymentDetailResponseStackStateConfig$inboundSchema: z.ZodType< - DeploymentDetailResponseStackStateConfig, - unknown -> = collectExtraKeys$( - z.object({ - id: z.string(), - type: z.string(), - }).catchall(z.any()), - "additionalProperties", - true, -); +export const DeploymentDetailResponsePendingPreparedStackProfileGcpBinding$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackProfileGcpBinding, + unknown + > = z.object({ + resource: z.lazy(() => + DeploymentDetailResponsePendingPreparedStackProfileGcpResource$inboundSchema + ).optional(), + stack: z.lazy(() => + DeploymentDetailResponsePendingPreparedStackProfileGcpStack$inboundSchema + ).optional(), + }); -export function deploymentDetailResponseStackStateConfigFromJSON( +export function deploymentDetailResponsePendingPreparedStackProfileGcpBindingFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseStackStateConfig, + DeploymentDetailResponsePendingPreparedStackProfileGcpBinding, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseStackStateConfig$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseStackStateConfig' from JSON`, + DeploymentDetailResponsePendingPreparedStackProfileGcpBinding$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackProfileGcpBinding' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseControllerPlatformEnum$inboundSchema: - z.ZodEnum = z.enum( - DeploymentDetailResponseControllerPlatformEnum, - ); - -/** @internal */ -export const DeploymentDetailResponseControllerPlatformUnion$inboundSchema: - z.ZodType = z.union( - [DeploymentDetailResponseControllerPlatformEnum$inboundSchema, z.any()], - ); +export const DeploymentDetailResponsePendingPreparedStackProfileGcpGrant$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackProfileGcpGrant, + unknown + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); -export function deploymentDetailResponseControllerPlatformUnionFromJSON( +export function deploymentDetailResponsePendingPreparedStackProfileGcpGrantFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseControllerPlatformUnion, + DeploymentDetailResponsePendingPreparedStackProfileGcpGrant, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseControllerPlatformUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseControllerPlatformUnion' from JSON`, + DeploymentDetailResponsePendingPreparedStackProfileGcpGrant$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackProfileGcpGrant' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseStackStateDependency$inboundSchema: - z.ZodType = z.object({ - id: z.string(), - type: z.string(), - }); +export const DeploymentDetailResponsePendingPreparedStackProfileGcp$inboundSchema: + z.ZodType = z + .object({ + binding: z.lazy(() => + DeploymentDetailResponsePendingPreparedStackProfileGcpBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + DeploymentDetailResponsePendingPreparedStackProfileGcpGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); -export function deploymentDetailResponseStackStateDependencyFromJSON( +export function deploymentDetailResponsePendingPreparedStackProfileGcpFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseStackStateDependency, + DeploymentDetailResponsePendingPreparedStackProfileGcp, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseStackStateDependency$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseStackStateDependency' from JSON`, + DeploymentDetailResponsePendingPreparedStackProfileGcp$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackProfileGcp' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseErrorStackState$inboundSchema: z.ZodType< - DeploymentDetailResponseErrorStackState, - unknown -> = z.object({ - code: z.string(), - context: z.nullable(z.any()).optional(), - hint: z.nullable(z.string()).optional(), - httpStatusCode: z.nullable(z.int()).optional(), - internal: z.boolean(), - message: z.string(), - retryable: z.boolean().default(false), - source: z.nullable(z.any()).optional(), -}); +export const DeploymentDetailResponsePendingPreparedStackProfilePlatforms$inboundSchema: + z.ZodType< + DeploymentDetailResponsePendingPreparedStackProfilePlatforms, + unknown + > = z.object({ + aws: z.nullable( + z.array(z.lazy(() => + DeploymentDetailResponsePendingPreparedStackProfileAw$inboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + DeploymentDetailResponsePendingPreparedStackProfileAzure$inboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + DeploymentDetailResponsePendingPreparedStackProfileGcp$inboundSchema + )), + ).optional(), + }); -export function deploymentDetailResponseErrorStackStateFromJSON( +export function deploymentDetailResponsePendingPreparedStackProfilePlatformsFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseErrorStackState, + DeploymentDetailResponsePendingPreparedStackProfilePlatforms, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseErrorStackState$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseErrorStackState' from JSON`, + DeploymentDetailResponsePendingPreparedStackProfilePlatforms$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackProfilePlatforms' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseErrorUnion$inboundSchema: z.ZodType< - DeploymentDetailResponseErrorUnion, - unknown -> = z.union([ - z.lazy(() => DeploymentDetailResponseErrorStackState$inboundSchema), - z.any(), -]); +export const DeploymentDetailResponsePendingPreparedStackProfile$inboundSchema: + z.ZodType = z + .object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + DeploymentDetailResponsePendingPreparedStackProfilePlatforms$inboundSchema + ), + }); -export function deploymentDetailResponseErrorUnionFromJSON( +export function deploymentDetailResponsePendingPreparedStackProfileFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePendingPreparedStackProfile, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponseErrorUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseErrorUnion' from JSON`, + DeploymentDetailResponsePendingPreparedStackProfile$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackProfile' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseLifecycleStackStateEnum$inboundSchema: - z.ZodEnum = z.enum( - DeploymentDetailResponseLifecycleStackStateEnum, - ); - -/** @internal */ -export const DeploymentDetailResponseLifecycleUnion$inboundSchema: z.ZodType< - DeploymentDetailResponseLifecycleUnion, - unknown -> = z.union([ - DeploymentDetailResponseLifecycleStackStateEnum$inboundSchema, - z.any(), -]); +export const DeploymentDetailResponsePendingPreparedStackProfileUnion$inboundSchema: + z.ZodType = + z.union([ + z.lazy(() => + DeploymentDetailResponsePendingPreparedStackProfile$inboundSchema + ), + z.string(), + ]); -export function deploymentDetailResponseLifecycleUnionFromJSON( +export function deploymentDetailResponsePendingPreparedStackProfileUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePendingPreparedStackProfileUnion, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponseLifecycleUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseLifecycleUnion' from JSON`, + DeploymentDetailResponsePendingPreparedStackProfileUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackProfileUnion' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseOutputs$inboundSchema: z.ZodType< - DeploymentDetailResponseOutputs, - unknown -> = collectExtraKeys$( - z.object({ - type: z.string(), - }).catchall(z.any()), - "additionalProperties", - true, -); +export const DeploymentDetailResponsePendingPreparedStackPermissions$inboundSchema: + z.ZodType = + z.object({ + management: z.union([ + z.lazy(() => + DeploymentDetailResponsePendingPreparedStackManagement1$inboundSchema + ), + z.lazy(() => + DeploymentDetailResponsePendingPreparedStackManagement2$inboundSchema + ), + DeploymentDetailResponsePendingPreparedStackManagementEnum$inboundSchema, + ]).optional(), + profiles: z.record( + z.string(), + z.record( + z.string(), + z.array( + z.union([ + z.lazy(() => + DeploymentDetailResponsePendingPreparedStackProfile$inboundSchema + ), + z.string(), + ]), + ), + ), + ), + }); -export function deploymentDetailResponseOutputsFromJSON( +export function deploymentDetailResponsePendingPreparedStackPermissionsFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePendingPreparedStackPermissions, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentDetailResponseOutputs$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseOutputs' from JSON`, + (x) => + DeploymentDetailResponsePendingPreparedStackPermissions$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackPermissions' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseOutputsUnion$inboundSchema: z.ZodType< - DeploymentDetailResponseOutputsUnion, - unknown -> = z.union([ - z.lazy(() => DeploymentDetailResponseOutputs$inboundSchema), - z.any(), -]); +export const DeploymentDetailResponsePendingPreparedStackConfig$inboundSchema: + z.ZodType = + collectExtraKeys$( + z.object({ + id: z.string(), + type: z.string(), + }).catchall(z.any()), + "additionalProperties", + true, + ); -export function deploymentDetailResponseOutputsUnionFromJSON( +export function deploymentDetailResponsePendingPreparedStackConfigFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePendingPreparedStackConfig, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponseOutputsUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseOutputsUnion' from JSON`, + DeploymentDetailResponsePendingPreparedStackConfig$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackConfig' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponsePreviousConfig$inboundSchema: z.ZodType< - DeploymentDetailResponsePreviousConfig, - unknown -> = collectExtraKeys$( - z.object({ - id: z.string(), - type: z.string(), - }).catchall(z.any()), - "additionalProperties", - true, -); +export const DeploymentDetailResponsePendingPreparedStackDependency$inboundSchema: + z.ZodType = z + .object({ + id: z.string(), + type: z.string(), + }); -export function deploymentDetailResponsePreviousConfigFromJSON( +export function deploymentDetailResponsePendingPreparedStackDependencyFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePendingPreparedStackDependency, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponsePreviousConfig$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponsePreviousConfig' from JSON`, + DeploymentDetailResponsePendingPreparedStackDependency$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackDependency' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponsePreviousConfigUnion$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => DeploymentDetailResponsePreviousConfig$inboundSchema), - z.any(), - ]); +export const DeploymentDetailResponsePendingPreparedStackLifecycle$inboundSchema: + z.ZodEnum = z + .enum(DeploymentDetailResponsePendingPreparedStackLifecycle); -export function deploymentDetailResponsePreviousConfigUnionFromJSON( +/** @internal */ +export const DeploymentDetailResponsePendingPreparedStackResources$inboundSchema: + z.ZodType = z + .object({ + config: z.lazy(() => + DeploymentDetailResponsePendingPreparedStackConfig$inboundSchema + ), + dependencies: z.array( + z.lazy(() => + DeploymentDetailResponsePendingPreparedStackDependency$inboundSchema + ), + ), + enabledWhen: z.nullable(z.string()).optional(), + lifecycle: + DeploymentDetailResponsePendingPreparedStackLifecycle$inboundSchema, + remoteAccess: z.boolean().optional(), + }); + +export function deploymentDetailResponsePendingPreparedStackResourcesFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponsePreviousConfigUnion, + DeploymentDetailResponsePendingPreparedStackResources, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponsePreviousConfigUnion$inboundSchema.parse( + DeploymentDetailResponsePendingPreparedStackResources$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'DeploymentDetailResponsePreviousConfigUnion' from JSON`, + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackResources' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseStackStateStatus$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseStackStateStatus -> = z.enum(DeploymentDetailResponseStackStateStatus); +export const DeploymentDetailResponsePendingPreparedStackSupportedPlatform$inboundSchema: + z.ZodEnum< + typeof DeploymentDetailResponsePendingPreparedStackSupportedPlatform + > = z.enum(DeploymentDetailResponsePendingPreparedStackSupportedPlatform); /** @internal */ -export const DeploymentDetailResponseStackStateResources$inboundSchema: - z.ZodType = z.object({ - _internal: z.nullable(z.any()).optional(), - config: z.lazy(() => - DeploymentDetailResponseStackStateConfig$inboundSchema - ), - controllerPlatform: z.nullable( - z.union([ - DeploymentDetailResponseControllerPlatformEnum$inboundSchema, - z.any(), - ]), - ).optional(), - dependencies: z.array( - z.lazy(() => DeploymentDetailResponseStackStateDependency$inboundSchema), - ).optional(), - error: z.nullable( - z.union([ - z.lazy(() => DeploymentDetailResponseErrorStackState$inboundSchema), - z.any(), - ]), - ).optional(), - lastFailedState: z.nullable(z.any()).optional(), - lifecycle: z.nullable( - z.union([ - DeploymentDetailResponseLifecycleStackStateEnum$inboundSchema, - z.any(), - ]), +export const DeploymentDetailResponsePendingPreparedStack$inboundSchema: + z.ZodType = z.object({ + id: z.string(), + inputs: z.array( + z.lazy(() => + DeploymentDetailResponsePendingPreparedStackInput$inboundSchema + ), ).optional(), - outputs: z.nullable( - z.union([ - z.lazy(() => DeploymentDetailResponseOutputs$inboundSchema), - z.any(), - ]), + permissions: z.lazy(() => + DeploymentDetailResponsePendingPreparedStackPermissions$inboundSchema ).optional(), - previousConfig: z.nullable( - z.union([ - z.lazy(() => DeploymentDetailResponsePreviousConfig$inboundSchema), - z.any(), - ]), + resources: z.record( + z.string(), + z.lazy(() => + DeploymentDetailResponsePendingPreparedStackResources$inboundSchema + ), + ), + supportedPlatforms: z.nullable( + z.array( + DeploymentDetailResponsePendingPreparedStackSupportedPlatform$inboundSchema, + ), ).optional(), - remoteBindingParams: z.nullable(z.any()).optional(), - retryAttempt: z.int().optional(), - status: DeploymentDetailResponseStackStateStatus$inboundSchema, - type: z.string(), - }).transform((v) => { - return remap$(v, { - "_internal": "internal", - }); }); -export function deploymentDetailResponseStackStateResourcesFromJSON( +export function deploymentDetailResponsePendingPreparedStackFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseStackStateResources, + DeploymentDetailResponsePendingPreparedStack, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseStackStateResources$inboundSchema.parse( + DeploymentDetailResponsePendingPreparedStack$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'DeploymentDetailResponseStackStateResources' from JSON`, + `Failed to parse 'DeploymentDetailResponsePendingPreparedStack' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseStackState$inboundSchema: z.ZodType< - DeploymentDetailResponseStackState, - unknown -> = z.object({ - platform: DeploymentDetailResponseStackStatePlatform$inboundSchema, - resourcePrefix: z.string(), - resources: z.record( - z.string(), - z.lazy(() => DeploymentDetailResponseStackStateResources$inboundSchema), - ), -}); +export const DeploymentDetailResponsePendingPreparedStackUnion$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => DeploymentDetailResponsePendingPreparedStack$inboundSchema), + z.any(), + ]); -export function deploymentDetailResponseStackStateFromJSON( +export function deploymentDetailResponsePendingPreparedStackUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePendingPreparedStackUnion, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponseStackState$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseStackState' from JSON`, + DeploymentDetailResponsePendingPreparedStackUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponsePendingPreparedStackUnion' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseTypeStringList$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseTypeStringList -> = z.enum(DeploymentDetailResponseTypeStringList); +export const DeploymentDetailResponsePreparedStackTypeStringList$inboundSchema: + z.ZodEnum = z + .enum(DeploymentDetailResponsePreparedStackTypeStringList); /** @internal */ -export const DeploymentDetailResponseDefaultStringList$inboundSchema: z.ZodType< - DeploymentDetailResponseDefaultStringList, - unknown -> = z.object({ - type: DeploymentDetailResponseTypeStringList$inboundSchema, - value: z.array(z.string()), -}); +export const DeploymentDetailResponsePreparedStackDefaultStringList$inboundSchema: + z.ZodType = z + .object({ + type: DeploymentDetailResponsePreparedStackTypeStringList$inboundSchema, + value: z.array(z.string()), + }); -export function deploymentDetailResponseDefaultStringListFromJSON( +export function deploymentDetailResponsePreparedStackDefaultStringListFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseDefaultStringList, + DeploymentDetailResponsePreparedStackDefaultStringList, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseDefaultStringList$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseDefaultStringList' from JSON`, + DeploymentDetailResponsePreparedStackDefaultStringList$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePreparedStackDefaultStringList' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseTypeBoolean$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseTypeBoolean -> = z.enum(DeploymentDetailResponseTypeBoolean); +export const DeploymentDetailResponsePreparedStackTypeBoolean$inboundSchema: + z.ZodEnum = z.enum( + DeploymentDetailResponsePreparedStackTypeBoolean, + ); /** @internal */ -export const DeploymentDetailResponseDefaultBoolean$inboundSchema: z.ZodType< - DeploymentDetailResponseDefaultBoolean, - unknown -> = z.object({ - type: DeploymentDetailResponseTypeBoolean$inboundSchema, - value: z.boolean(), -}); +export const DeploymentDetailResponsePreparedStackDefaultBoolean$inboundSchema: + z.ZodType = z + .object({ + type: DeploymentDetailResponsePreparedStackTypeBoolean$inboundSchema, + value: z.boolean(), + }); -export function deploymentDetailResponseDefaultBooleanFromJSON( +export function deploymentDetailResponsePreparedStackDefaultBooleanFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePreparedStackDefaultBoolean, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponseDefaultBoolean$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseDefaultBoolean' from JSON`, + DeploymentDetailResponsePreparedStackDefaultBoolean$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponsePreparedStackDefaultBoolean' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseTypeNumber$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseTypeNumber -> = z.enum(DeploymentDetailResponseTypeNumber); +export const DeploymentDetailResponsePreparedStackTypeNumber$inboundSchema: + z.ZodEnum = z.enum( + DeploymentDetailResponsePreparedStackTypeNumber, + ); /** @internal */ -export const DeploymentDetailResponseDefaultNumber$inboundSchema: z.ZodType< - DeploymentDetailResponseDefaultNumber, - unknown -> = z.object({ - type: DeploymentDetailResponseTypeNumber$inboundSchema, - value: z.string(), -}); +export const DeploymentDetailResponsePreparedStackDefaultNumber$inboundSchema: + z.ZodType = z + .object({ + type: DeploymentDetailResponsePreparedStackTypeNumber$inboundSchema, + value: z.string(), + }); -export function deploymentDetailResponseDefaultNumberFromJSON( +export function deploymentDetailResponsePreparedStackDefaultNumberFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePreparedStackDefaultNumber, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponseDefaultNumber$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseDefaultNumber' from JSON`, + DeploymentDetailResponsePreparedStackDefaultNumber$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponsePreparedStackDefaultNumber' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseTypeString$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseTypeString -> = z.enum(DeploymentDetailResponseTypeString); +export const DeploymentDetailResponsePreparedStackTypeString$inboundSchema: + z.ZodEnum = z.enum( + DeploymentDetailResponsePreparedStackTypeString, + ); /** @internal */ -export const DeploymentDetailResponseDefaultString$inboundSchema: z.ZodType< - DeploymentDetailResponseDefaultString, - unknown -> = z.object({ - type: DeploymentDetailResponseTypeString$inboundSchema, - value: z.string(), -}); +export const DeploymentDetailResponsePreparedStackDefaultString$inboundSchema: + z.ZodType = z + .object({ + type: DeploymentDetailResponsePreparedStackTypeString$inboundSchema, + value: z.string(), + }); -export function deploymentDetailResponseDefaultStringFromJSON( +export function deploymentDetailResponsePreparedStackDefaultStringFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePreparedStackDefaultString, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponseDefaultString$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseDefaultString' from JSON`, + DeploymentDetailResponsePreparedStackDefaultString$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponsePreparedStackDefaultString' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseDefaultUnion$inboundSchema: z.ZodType< - DeploymentDetailResponseDefaultUnion, - unknown -> = z.union([ - z.lazy(() => DeploymentDetailResponseDefaultString$inboundSchema), - z.lazy(() => DeploymentDetailResponseDefaultNumber$inboundSchema), - z.lazy(() => DeploymentDetailResponseDefaultBoolean$inboundSchema), - z.lazy(() => DeploymentDetailResponseDefaultStringList$inboundSchema), - z.any(), -]); +export const DeploymentDetailResponsePreparedStackDefaultUnion$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => + DeploymentDetailResponsePreparedStackDefaultString$inboundSchema + ), + z.lazy(() => + DeploymentDetailResponsePreparedStackDefaultNumber$inboundSchema + ), + z.lazy(() => + DeploymentDetailResponsePreparedStackDefaultBoolean$inboundSchema + ), + z.lazy(() => + DeploymentDetailResponsePreparedStackDefaultStringList$inboundSchema + ), + z.any(), + ]); -export function deploymentDetailResponseDefaultUnionFromJSON( +export function deploymentDetailResponsePreparedStackDefaultUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePreparedStackDefaultUnion, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponseDefaultUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseDefaultUnion' from JSON`, + DeploymentDetailResponsePreparedStackDefaultUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponsePreparedStackDefaultUnion' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseTypeEnvEnum$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseTypeEnvEnum -> = z.enum(DeploymentDetailResponseTypeEnvEnum); +export const DeploymentDetailResponsePreparedStackTypeEnvEnum$inboundSchema: + z.ZodEnum = z.enum( + DeploymentDetailResponsePreparedStackTypeEnvEnum, + ); /** @internal */ -export const DeploymentDetailResponseTypeUnion$inboundSchema: z.ZodType< - DeploymentDetailResponseTypeUnion, - unknown -> = z.union([DeploymentDetailResponseTypeEnvEnum$inboundSchema, z.any()]); +export const DeploymentDetailResponsePreparedStackTypeUnion$inboundSchema: + z.ZodType = z.union([ + DeploymentDetailResponsePreparedStackTypeEnvEnum$inboundSchema, + z.any(), + ]); -export function deploymentDetailResponseTypeUnionFromJSON( +export function deploymentDetailResponsePreparedStackTypeUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePreparedStackTypeUnion, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentDetailResponseTypeUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseTypeUnion' from JSON`, + (x) => + DeploymentDetailResponsePreparedStackTypeUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponsePreparedStackTypeUnion' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseEnv$inboundSchema: z.ZodType< - DeploymentDetailResponseEnv, +export const DeploymentDetailResponsePreparedStackEnv$inboundSchema: z.ZodType< + DeploymentDetailResponsePreparedStackEnv, unknown > = z.object({ name: z.string(), targetResources: z.nullable(z.array(z.string())).optional(), type: z.nullable( - z.union([DeploymentDetailResponseTypeEnvEnum$inboundSchema, z.any()]), + z.union([ + DeploymentDetailResponsePreparedStackTypeEnvEnum$inboundSchema, + z.any(), + ]), ).optional(), }); -export function deploymentDetailResponseEnvFromJSON( +export function deploymentDetailResponsePreparedStackEnvFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePreparedStackEnv, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentDetailResponseEnv$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseEnv' from JSON`, + (x) => + DeploymentDetailResponsePreparedStackEnv$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponsePreparedStackEnv' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseKind$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseKind -> = z.enum(DeploymentDetailResponseKind); +export const DeploymentDetailResponsePreparedStackKind$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponsePreparedStackKind +> = z.enum(DeploymentDetailResponsePreparedStackKind); /** @internal */ export const DeploymentDetailResponsePreparedStackPlatform$inboundSchema: @@ -6322,1899 +10808,2096 @@ export const DeploymentDetailResponsePreparedStackPlatform$inboundSchema: ); /** @internal */ -export const DeploymentDetailResponseProvidedBy$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseProvidedBy -> = z.enum(DeploymentDetailResponseProvidedBy); +export const DeploymentDetailResponsePreparedStackProvidedBy$inboundSchema: + z.ZodEnum = z.enum( + DeploymentDetailResponsePreparedStackProvidedBy, + ); /** @internal */ -export const DeploymentDetailResponseValidation$inboundSchema: z.ZodType< - DeploymentDetailResponseValidation, - unknown -> = z.object({ - format: z.nullable(z.string()).optional(), - max: z.nullable(z.string()).optional(), - maxItems: z.nullable(z.int()).optional(), - maxLength: z.nullable(z.int()).optional(), - min: z.nullable(z.string()).optional(), - minItems: z.nullable(z.int()).optional(), - minLength: z.nullable(z.int()).optional(), - pattern: z.nullable(z.string()).optional(), - values: z.nullable(z.array(z.string())).optional(), -}); +export const DeploymentDetailResponsePreparedStackValidation$inboundSchema: + z.ZodType = z + .object({ + format: z.nullable(z.string()).optional(), + max: z.nullable(z.string()).optional(), + maxItems: z.nullable(z.int()).optional(), + maxLength: z.nullable(z.int()).optional(), + min: z.nullable(z.string()).optional(), + minItems: z.nullable(z.int()).optional(), + minLength: z.nullable(z.int()).optional(), + pattern: z.nullable(z.string()).optional(), + values: z.nullable(z.array(z.string())).optional(), + }); -export function deploymentDetailResponseValidationFromJSON( +export function deploymentDetailResponsePreparedStackValidationFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePreparedStackValidation, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponseValidation$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseValidation' from JSON`, + DeploymentDetailResponsePreparedStackValidation$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponsePreparedStackValidation' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseValidationUnion$inboundSchema: z.ZodType< - DeploymentDetailResponseValidationUnion, - unknown -> = z.union([ - z.lazy(() => DeploymentDetailResponseValidation$inboundSchema), - z.any(), -]); +export const DeploymentDetailResponsePreparedStackValidationUnion$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => + DeploymentDetailResponsePreparedStackValidation$inboundSchema + ), + z.any(), + ]); -export function deploymentDetailResponseValidationUnionFromJSON( +export function deploymentDetailResponsePreparedStackValidationUnionFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseValidationUnion, + DeploymentDetailResponsePreparedStackValidationUnion, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseValidationUnion$inboundSchema.parse( + DeploymentDetailResponsePreparedStackValidationUnion$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'DeploymentDetailResponseValidationUnion' from JSON`, + `Failed to parse 'DeploymentDetailResponsePreparedStackValidationUnion' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseInput$inboundSchema: z.ZodType< - DeploymentDetailResponseInput, - unknown -> = z.object({ - default: z.nullable( - z.union([ - z.lazy(() => DeploymentDetailResponseDefaultString$inboundSchema), - z.lazy(() => DeploymentDetailResponseDefaultNumber$inboundSchema), - z.lazy(() => DeploymentDetailResponseDefaultBoolean$inboundSchema), - z.lazy(() => DeploymentDetailResponseDefaultStringList$inboundSchema), - z.any(), - ]), - ).optional(), - description: z.string(), - env: z.array(z.lazy(() => DeploymentDetailResponseEnv$inboundSchema)) - .optional(), - id: z.string(), - kind: DeploymentDetailResponseKind$inboundSchema, - label: z.string(), - placeholder: z.nullable(z.string()).optional(), - platforms: z.nullable( - z.array(DeploymentDetailResponsePreparedStackPlatform$inboundSchema), - ).optional(), - providedBy: z.array(DeploymentDetailResponseProvidedBy$inboundSchema), - required: z.boolean(), - validation: z.nullable( - z.union([ - z.lazy(() => DeploymentDetailResponseValidation$inboundSchema), - z.any(), - ]), - ).optional(), -}); +export const DeploymentDetailResponsePreparedStackInput$inboundSchema: + z.ZodType = z.object({ + default: z.nullable( + z.union([ + z.lazy(() => + DeploymentDetailResponsePreparedStackDefaultString$inboundSchema + ), + z.lazy(() => + DeploymentDetailResponsePreparedStackDefaultNumber$inboundSchema + ), + z.lazy(() => + DeploymentDetailResponsePreparedStackDefaultBoolean$inboundSchema + ), + z.lazy(() => + DeploymentDetailResponsePreparedStackDefaultStringList$inboundSchema + ), + z.any(), + ]), + ).optional(), + description: z.string(), + env: z.array( + z.lazy(() => DeploymentDetailResponsePreparedStackEnv$inboundSchema), + ).optional(), + id: z.string(), + kind: DeploymentDetailResponsePreparedStackKind$inboundSchema, + label: z.string(), + placeholder: z.nullable(z.string()).optional(), + platforms: z.nullable( + z.array(DeploymentDetailResponsePreparedStackPlatform$inboundSchema), + ).optional(), + providedBy: z.array( + DeploymentDetailResponsePreparedStackProvidedBy$inboundSchema, + ), + required: z.boolean(), + validation: z.nullable( + z.union([ + z.lazy(() => + DeploymentDetailResponsePreparedStackValidation$inboundSchema + ), + z.any(), + ]), + ).optional(), + }); -export function deploymentDetailResponseInputFromJSON( +export function deploymentDetailResponsePreparedStackInputFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePreparedStackInput, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentDetailResponseInput$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseInput' from JSON`, + (x) => + DeploymentDetailResponsePreparedStackInput$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponsePreparedStackInput' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseManagementEnum$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseManagementEnum -> = z.enum(DeploymentDetailResponseManagementEnum); +export const DeploymentDetailResponsePreparedStackManagementEnum$inboundSchema: + z.ZodEnum = z + .enum(DeploymentDetailResponsePreparedStackManagementEnum); /** @internal */ -export const DeploymentDetailResponseOverrideAwResource$inboundSchema: - z.ZodType = z.object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); +export const DeploymentDetailResponsePreparedStackOverrideAwResource$inboundSchema: + z.ZodType = + z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); -export function deploymentDetailResponseOverrideAwResourceFromJSON( +export function deploymentDetailResponsePreparedStackOverrideAwResourceFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseOverrideAwResource, + DeploymentDetailResponsePreparedStackOverrideAwResource, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseOverrideAwResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseOverrideAwResource' from JSON`, + DeploymentDetailResponsePreparedStackOverrideAwResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePreparedStackOverrideAwResource' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseOverrideAwStack$inboundSchema: z.ZodType< - DeploymentDetailResponseOverrideAwStack, - unknown -> = z.object({ - condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) - .optional(), - resources: z.array(z.string()), -}); +export const DeploymentDetailResponsePreparedStackOverrideAwStack$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); -export function deploymentDetailResponseOverrideAwStackFromJSON( +export function deploymentDetailResponsePreparedStackOverrideAwStackFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseOverrideAwStack, + DeploymentDetailResponsePreparedStackOverrideAwStack, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseOverrideAwStack$inboundSchema.parse( + DeploymentDetailResponsePreparedStackOverrideAwStack$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'DeploymentDetailResponseOverrideAwStack' from JSON`, + `Failed to parse 'DeploymentDetailResponsePreparedStackOverrideAwStack' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseOverrideAwBinding$inboundSchema: z.ZodType< - DeploymentDetailResponseOverrideAwBinding, - unknown -> = z.object({ - resource: z.lazy(() => - DeploymentDetailResponseOverrideAwResource$inboundSchema - ).optional(), - stack: z.lazy(() => DeploymentDetailResponseOverrideAwStack$inboundSchema) - .optional(), -}); +export const DeploymentDetailResponsePreparedStackOverrideAwBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + DeploymentDetailResponsePreparedStackOverrideAwResource$inboundSchema + ).optional(), + stack: z.lazy(() => + DeploymentDetailResponsePreparedStackOverrideAwStack$inboundSchema + ).optional(), + }); + +export function deploymentDetailResponsePreparedStackOverrideAwBindingFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponsePreparedStackOverrideAwBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponsePreparedStackOverrideAwBinding$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePreparedStackOverrideAwBinding' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponsePreparedStackOverrideEffect$inboundSchema: + z.ZodEnum = z + .enum(DeploymentDetailResponsePreparedStackOverrideEffect); + +/** @internal */ +export const DeploymentDetailResponsePreparedStackOverrideAwGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); -export function deploymentDetailResponseOverrideAwBindingFromJSON( +export function deploymentDetailResponsePreparedStackOverrideAwGrantFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseOverrideAwBinding, + DeploymentDetailResponsePreparedStackOverrideAwGrant, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseOverrideAwBinding$inboundSchema.parse( + DeploymentDetailResponsePreparedStackOverrideAwGrant$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'DeploymentDetailResponseOverrideAwBinding' from JSON`, + `Failed to parse 'DeploymentDetailResponsePreparedStackOverrideAwGrant' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseOverrideEffect$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseOverrideEffect -> = z.enum(DeploymentDetailResponseOverrideEffect); +export const DeploymentDetailResponsePreparedStackOverrideAw$inboundSchema: + z.ZodType = z + .object({ + binding: z.lazy(() => + DeploymentDetailResponsePreparedStackOverrideAwBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: DeploymentDetailResponsePreparedStackOverrideEffect$inboundSchema + .optional(), + grant: z.lazy(() => + DeploymentDetailResponsePreparedStackOverrideAwGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function deploymentDetailResponsePreparedStackOverrideAwFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponsePreparedStackOverrideAw, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponsePreparedStackOverrideAw$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponsePreparedStackOverrideAw' from JSON`, + ); +} /** @internal */ -export const DeploymentDetailResponseOverrideAwGrant$inboundSchema: z.ZodType< - DeploymentDetailResponseOverrideAwGrant, - unknown -> = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), -}); +export const DeploymentDetailResponsePreparedStackOverrideAzureResource$inboundSchema: + z.ZodType< + DeploymentDetailResponsePreparedStackOverrideAzureResource, + unknown + > = z.object({ + scope: z.string(), + }); -export function deploymentDetailResponseOverrideAwGrantFromJSON( +export function deploymentDetailResponsePreparedStackOverrideAzureResourceFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseOverrideAwGrant, + DeploymentDetailResponsePreparedStackOverrideAzureResource, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseOverrideAwGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseOverrideAwGrant' from JSON`, + DeploymentDetailResponsePreparedStackOverrideAzureResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePreparedStackOverrideAzureResource' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseOverrideAw$inboundSchema: z.ZodType< - DeploymentDetailResponseOverrideAw, - unknown -> = z.object({ - binding: z.lazy(() => - DeploymentDetailResponseOverrideAwBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - effect: DeploymentDetailResponseOverrideEffect$inboundSchema.optional(), - grant: z.lazy(() => DeploymentDetailResponseOverrideAwGrant$inboundSchema), - label: z.nullable(z.string()).optional(), -}); +export const DeploymentDetailResponsePreparedStackOverrideAzureStack$inboundSchema: + z.ZodType = + z.object({ + scope: z.string(), + }); -export function deploymentDetailResponseOverrideAwFromJSON( +export function deploymentDetailResponsePreparedStackOverrideAzureStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePreparedStackOverrideAzureStack, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponseOverrideAw$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseOverrideAw' from JSON`, + DeploymentDetailResponsePreparedStackOverrideAzureStack$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePreparedStackOverrideAzureStack' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseOverrideAzureResource$inboundSchema: - z.ZodType = z.object({ - scope: z.string(), +export const DeploymentDetailResponsePreparedStackOverrideAzureBinding$inboundSchema: + z.ZodType< + DeploymentDetailResponsePreparedStackOverrideAzureBinding, + unknown + > = z.object({ + resource: z.lazy(() => + DeploymentDetailResponsePreparedStackOverrideAzureResource$inboundSchema + ).optional(), + stack: z.lazy(() => + DeploymentDetailResponsePreparedStackOverrideAzureStack$inboundSchema + ).optional(), }); -export function deploymentDetailResponseOverrideAzureResourceFromJSON( +export function deploymentDetailResponsePreparedStackOverrideAzureBindingFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseOverrideAzureResource, + DeploymentDetailResponsePreparedStackOverrideAzureBinding, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseOverrideAzureResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseOverrideAzureResource' from JSON`, + DeploymentDetailResponsePreparedStackOverrideAzureBinding$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePreparedStackOverrideAzureBinding' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseOverrideAzureStack$inboundSchema: - z.ZodType = z.object({ - scope: z.string(), - }); +export const DeploymentDetailResponsePreparedStackOverrideAzureGrant$inboundSchema: + z.ZodType = + z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); -export function deploymentDetailResponseOverrideAzureStackFromJSON( +export function deploymentDetailResponsePreparedStackOverrideAzureGrantFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseOverrideAzureStack, + DeploymentDetailResponsePreparedStackOverrideAzureGrant, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseOverrideAzureStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseOverrideAzureStack' from JSON`, + DeploymentDetailResponsePreparedStackOverrideAzureGrant$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePreparedStackOverrideAzureGrant' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseOverrideAzureBinding$inboundSchema: - z.ZodType = z.object({ - resource: z.lazy(() => - DeploymentDetailResponseOverrideAzureResource$inboundSchema - ).optional(), - stack: z.lazy(() => - DeploymentDetailResponseOverrideAzureStack$inboundSchema - ).optional(), - }); +export const DeploymentDetailResponsePreparedStackOverrideAzure$inboundSchema: + z.ZodType = z + .object({ + binding: z.lazy(() => + DeploymentDetailResponsePreparedStackOverrideAzureBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + DeploymentDetailResponsePreparedStackOverrideAzureGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); -export function deploymentDetailResponseOverrideAzureBindingFromJSON( +export function deploymentDetailResponsePreparedStackOverrideAzureFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseOverrideAzureBinding, + DeploymentDetailResponsePreparedStackOverrideAzure, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseOverrideAzureBinding$inboundSchema.parse( + DeploymentDetailResponsePreparedStackOverrideAzure$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'DeploymentDetailResponseOverrideAzureBinding' from JSON`, + `Failed to parse 'DeploymentDetailResponsePreparedStackOverrideAzure' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseOverrideAzureGrant$inboundSchema: - z.ZodType = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), +export const DeploymentDetailResponsePreparedStackOverrideConditionResource$inboundSchema: + z.ZodType< + DeploymentDetailResponsePreparedStackOverrideConditionResource, + unknown + > = z.object({ + expression: z.string(), + title: z.string(), }); -export function deploymentDetailResponseOverrideAzureGrantFromJSON( +export function deploymentDetailResponsePreparedStackOverrideConditionResourceFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseOverrideAzureGrant, + DeploymentDetailResponsePreparedStackOverrideConditionResource, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseOverrideAzureGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseOverrideAzureGrant' from JSON`, + DeploymentDetailResponsePreparedStackOverrideConditionResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePreparedStackOverrideConditionResource' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseOverrideAzure$inboundSchema: z.ZodType< - DeploymentDetailResponseOverrideAzure, - unknown -> = z.object({ - binding: z.lazy(() => - DeploymentDetailResponseOverrideAzureBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => DeploymentDetailResponseOverrideAzureGrant$inboundSchema), - label: z.nullable(z.string()).optional(), -}); +export const DeploymentDetailResponsePreparedStackOverrideResourceConditionUnion$inboundSchema: + z.ZodType< + DeploymentDetailResponsePreparedStackOverrideResourceConditionUnion, + unknown + > = z.union([ + z.lazy(() => + DeploymentDetailResponsePreparedStackOverrideConditionResource$inboundSchema + ), + z.any(), + ]); -export function deploymentDetailResponseOverrideAzureFromJSON( +export function deploymentDetailResponsePreparedStackOverrideResourceConditionUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePreparedStackOverrideResourceConditionUnion, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponseOverrideAzure$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseOverrideAzure' from JSON`, + DeploymentDetailResponsePreparedStackOverrideResourceConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePreparedStackOverrideResourceConditionUnion' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseOverrideConditionResource$inboundSchema: - z.ZodType = z - .object({ - expression: z.string(), - title: z.string(), +export const DeploymentDetailResponsePreparedStackOverrideGcpResource$inboundSchema: + z.ZodType = + z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => + DeploymentDetailResponsePreparedStackOverrideConditionResource$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), }); -export function deploymentDetailResponseOverrideConditionResourceFromJSON( +export function deploymentDetailResponsePreparedStackOverrideGcpResourceFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseOverrideConditionResource, + DeploymentDetailResponsePreparedStackOverrideGcpResource, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseOverrideConditionResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseOverrideConditionResource' from JSON`, + DeploymentDetailResponsePreparedStackOverrideGcpResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePreparedStackOverrideGcpResource' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseOverrideResourceConditionUnion$inboundSchema: - z.ZodType = z - .union([ - z.lazy(() => - DeploymentDetailResponseOverrideConditionResource$inboundSchema - ), - z.any(), - ]); +export const DeploymentDetailResponsePreparedStackOverrideConditionStack$inboundSchema: + z.ZodType< + DeploymentDetailResponsePreparedStackOverrideConditionStack, + unknown + > = z.object({ + expression: z.string(), + title: z.string(), + }); -export function deploymentDetailResponseOverrideResourceConditionUnionFromJSON( +export function deploymentDetailResponsePreparedStackOverrideConditionStackFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseOverrideResourceConditionUnion, + DeploymentDetailResponsePreparedStackOverrideConditionStack, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseOverrideResourceConditionUnion$inboundSchema + DeploymentDetailResponsePreparedStackOverrideConditionStack$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseOverrideResourceConditionUnion' from JSON`, + `Failed to parse 'DeploymentDetailResponsePreparedStackOverrideConditionStack' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseOverrideGcpResource$inboundSchema: - z.ZodType = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => - DeploymentDetailResponseOverrideConditionResource$inboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); +export const DeploymentDetailResponsePreparedStackOverrideStackConditionUnion$inboundSchema: + z.ZodType< + DeploymentDetailResponsePreparedStackOverrideStackConditionUnion, + unknown + > = z.union([ + z.lazy(() => + DeploymentDetailResponsePreparedStackOverrideConditionStack$inboundSchema + ), + z.any(), + ]); -export function deploymentDetailResponseOverrideGcpResourceFromJSON( +export function deploymentDetailResponsePreparedStackOverrideStackConditionUnionFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseOverrideGcpResource, + DeploymentDetailResponsePreparedStackOverrideStackConditionUnion, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseOverrideGcpResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseOverrideGcpResource' from JSON`, + DeploymentDetailResponsePreparedStackOverrideStackConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePreparedStackOverrideStackConditionUnion' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseOverrideConditionStack$inboundSchema: - z.ZodType = z.object( - { - expression: z.string(), - title: z.string(), - }, - ); +export const DeploymentDetailResponsePreparedStackOverrideGcpStack$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + DeploymentDetailResponsePreparedStackOverrideConditionStack$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); -export function deploymentDetailResponseOverrideConditionStackFromJSON( +export function deploymentDetailResponsePreparedStackOverrideGcpStackFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseOverrideConditionStack, + DeploymentDetailResponsePreparedStackOverrideGcpStack, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseOverrideConditionStack$inboundSchema.parse( + DeploymentDetailResponsePreparedStackOverrideGcpStack$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'DeploymentDetailResponseOverrideConditionStack' from JSON`, + `Failed to parse 'DeploymentDetailResponsePreparedStackOverrideGcpStack' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseOverrideStackConditionUnion$inboundSchema: - z.ZodType = z - .union([ - z.lazy(() => - DeploymentDetailResponseOverrideConditionStack$inboundSchema - ), - z.any(), - ]); +export const DeploymentDetailResponsePreparedStackOverrideGcpBinding$inboundSchema: + z.ZodType = + z.object({ + resource: z.lazy(() => + DeploymentDetailResponsePreparedStackOverrideGcpResource$inboundSchema + ).optional(), + stack: z.lazy(() => + DeploymentDetailResponsePreparedStackOverrideGcpStack$inboundSchema + ).optional(), + }); -export function deploymentDetailResponseOverrideStackConditionUnionFromJSON( +export function deploymentDetailResponsePreparedStackOverrideGcpBindingFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseOverrideStackConditionUnion, + DeploymentDetailResponsePreparedStackOverrideGcpBinding, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseOverrideStackConditionUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseOverrideStackConditionUnion' from JSON`, + DeploymentDetailResponsePreparedStackOverrideGcpBinding$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePreparedStackOverrideGcpBinding' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseOverrideGcpStack$inboundSchema: z.ZodType< - DeploymentDetailResponseOverrideGcpStack, - unknown -> = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => - DeploymentDetailResponseOverrideConditionStack$inboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), -}); +export const DeploymentDetailResponsePreparedStackOverrideGcpGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); -export function deploymentDetailResponseOverrideGcpStackFromJSON( +export function deploymentDetailResponsePreparedStackOverrideGcpGrantFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseOverrideGcpStack, + DeploymentDetailResponsePreparedStackOverrideGcpGrant, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseOverrideGcpStack$inboundSchema.parse( + DeploymentDetailResponsePreparedStackOverrideGcpGrant$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'DeploymentDetailResponseOverrideGcpStack' from JSON`, + `Failed to parse 'DeploymentDetailResponsePreparedStackOverrideGcpGrant' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseOverrideGcpBinding$inboundSchema: - z.ZodType = z.object({ - resource: z.lazy(() => - DeploymentDetailResponseOverrideGcpResource$inboundSchema - ).optional(), - stack: z.lazy(() => DeploymentDetailResponseOverrideGcpStack$inboundSchema) - .optional(), - }); +export const DeploymentDetailResponsePreparedStackOverrideGcp$inboundSchema: + z.ZodType = z + .object({ + binding: z.lazy(() => + DeploymentDetailResponsePreparedStackOverrideGcpBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + DeploymentDetailResponsePreparedStackOverrideGcpGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); -export function deploymentDetailResponseOverrideGcpBindingFromJSON( +export function deploymentDetailResponsePreparedStackOverrideGcpFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseOverrideGcpBinding, + DeploymentDetailResponsePreparedStackOverrideGcp, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseOverrideGcpBinding$inboundSchema.parse( + DeploymentDetailResponsePreparedStackOverrideGcp$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'DeploymentDetailResponseOverrideGcpBinding' from JSON`, + `Failed to parse 'DeploymentDetailResponsePreparedStackOverrideGcp' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseOverrideGcpGrant$inboundSchema: z.ZodType< - DeploymentDetailResponseOverrideGcpGrant, - unknown -> = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), -}); +export const DeploymentDetailResponsePreparedStackOverridePlatforms$inboundSchema: + z.ZodType = z + .object({ + aws: z.nullable( + z.array(z.lazy(() => + DeploymentDetailResponsePreparedStackOverrideAw$inboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + DeploymentDetailResponsePreparedStackOverrideAzure$inboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + DeploymentDetailResponsePreparedStackOverrideGcp$inboundSchema + )), + ).optional(), + }); -export function deploymentDetailResponseOverrideGcpGrantFromJSON( +export function deploymentDetailResponsePreparedStackOverridePlatformsFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseOverrideGcpGrant, + DeploymentDetailResponsePreparedStackOverridePlatforms, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseOverrideGcpGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseOverrideGcpGrant' from JSON`, + DeploymentDetailResponsePreparedStackOverridePlatforms$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePreparedStackOverridePlatforms' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseOverrideGcp$inboundSchema: z.ZodType< - DeploymentDetailResponseOverrideGcp, - unknown -> = z.object({ - binding: z.lazy(() => - DeploymentDetailResponseOverrideGcpBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => DeploymentDetailResponseOverrideGcpGrant$inboundSchema), - label: z.nullable(z.string()).optional(), -}); +export const DeploymentDetailResponsePreparedStackOverride$inboundSchema: + z.ZodType = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + DeploymentDetailResponsePreparedStackOverridePlatforms$inboundSchema + ), + }); -export function deploymentDetailResponseOverrideGcpFromJSON( +export function deploymentDetailResponsePreparedStackOverrideFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePreparedStackOverride, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponseOverrideGcp$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseOverrideGcp' from JSON`, + DeploymentDetailResponsePreparedStackOverride$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponsePreparedStackOverride' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseOverridePlatforms$inboundSchema: z.ZodType< - DeploymentDetailResponseOverridePlatforms, - unknown -> = z.object({ - aws: z.nullable( - z.array(z.lazy(() => DeploymentDetailResponseOverrideAw$inboundSchema)), - ).optional(), - azure: z.nullable( - z.array(z.lazy(() => DeploymentDetailResponseOverrideAzure$inboundSchema)), - ).optional(), - gcp: z.nullable( - z.array(z.lazy(() => DeploymentDetailResponseOverrideGcp$inboundSchema)), - ).optional(), -}); +export const DeploymentDetailResponsePreparedStackOverrideUnion$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => DeploymentDetailResponsePreparedStackOverride$inboundSchema), + z.string(), + ]); -export function deploymentDetailResponseOverridePlatformsFromJSON( +export function deploymentDetailResponsePreparedStackOverrideUnionFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseOverridePlatforms, + DeploymentDetailResponsePreparedStackOverrideUnion, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseOverridePlatforms$inboundSchema.parse( + DeploymentDetailResponsePreparedStackOverrideUnion$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'DeploymentDetailResponseOverridePlatforms' from JSON`, + `Failed to parse 'DeploymentDetailResponsePreparedStackOverrideUnion' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseOverride$inboundSchema: z.ZodType< - DeploymentDetailResponseOverride, - unknown -> = z.object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => - DeploymentDetailResponseOverridePlatforms$inboundSchema - ), -}); +export const DeploymentDetailResponsePreparedStackManagement2$inboundSchema: + z.ZodType = z + .object({ + override: z.record( + z.string(), + z.array(z.union([ + z.lazy(() => + DeploymentDetailResponsePreparedStackOverride$inboundSchema + ), + z.string(), + ])), + ), + }); -export function deploymentDetailResponseOverrideFromJSON( +export function deploymentDetailResponsePreparedStackManagement2FromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePreparedStackManagement2, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentDetailResponseOverride$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseOverride' from JSON`, + (x) => + DeploymentDetailResponsePreparedStackManagement2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponsePreparedStackManagement2' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseOverrideUnion$inboundSchema: z.ZodType< - DeploymentDetailResponseOverrideUnion, - unknown -> = z.union([ - z.lazy(() => DeploymentDetailResponseOverride$inboundSchema), - z.string(), -]); +export const DeploymentDetailResponsePreparedStackExtendAwResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); -export function deploymentDetailResponseOverrideUnionFromJSON( +export function deploymentDetailResponsePreparedStackExtendAwResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePreparedStackExtendAwResource, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponseOverrideUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseOverrideUnion' from JSON`, + DeploymentDetailResponsePreparedStackExtendAwResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponsePreparedStackExtendAwResource' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseManagement2$inboundSchema: z.ZodType< - DeploymentDetailResponseManagement2, - unknown -> = z.object({ - override: z.record( - z.string(), - z.array(z.union([ - z.lazy(() => DeploymentDetailResponseOverride$inboundSchema), - z.string(), - ])), - ), -}); +export const DeploymentDetailResponsePreparedStackExtendAwStack$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); -export function deploymentDetailResponseManagement2FromJSON( +export function deploymentDetailResponsePreparedStackExtendAwStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePreparedStackExtendAwStack, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponseManagement2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseManagement2' from JSON`, + DeploymentDetailResponsePreparedStackExtendAwStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponsePreparedStackExtendAwStack' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseExtendAwResource$inboundSchema: z.ZodType< - DeploymentDetailResponseExtendAwResource, - unknown -> = z.object({ - condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) - .optional(), - resources: z.array(z.string()), -}); +export const DeploymentDetailResponsePreparedStackExtendAwBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + DeploymentDetailResponsePreparedStackExtendAwResource$inboundSchema + ).optional(), + stack: z.lazy(() => + DeploymentDetailResponsePreparedStackExtendAwStack$inboundSchema + ).optional(), + }); -export function deploymentDetailResponseExtendAwResourceFromJSON( +export function deploymentDetailResponsePreparedStackExtendAwBindingFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseExtendAwResource, + DeploymentDetailResponsePreparedStackExtendAwBinding, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseExtendAwResource$inboundSchema.parse( + DeploymentDetailResponsePreparedStackExtendAwBinding$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'DeploymentDetailResponseExtendAwResource' from JSON`, + `Failed to parse 'DeploymentDetailResponsePreparedStackExtendAwBinding' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseExtendAwStack$inboundSchema: z.ZodType< - DeploymentDetailResponseExtendAwStack, - unknown -> = z.object({ - condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) - .optional(), - resources: z.array(z.string()), -}); +export const DeploymentDetailResponsePreparedStackExtendEffect$inboundSchema: + z.ZodEnum = z.enum( + DeploymentDetailResponsePreparedStackExtendEffect, + ); + +/** @internal */ +export const DeploymentDetailResponsePreparedStackExtendAwGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); -export function deploymentDetailResponseExtendAwStackFromJSON( +export function deploymentDetailResponsePreparedStackExtendAwGrantFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePreparedStackExtendAwGrant, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponseExtendAwStack$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseExtendAwStack' from JSON`, + DeploymentDetailResponsePreparedStackExtendAwGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponsePreparedStackExtendAwGrant' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseExtendAwBinding$inboundSchema: z.ZodType< - DeploymentDetailResponseExtendAwBinding, - unknown -> = z.object({ - resource: z.lazy(() => DeploymentDetailResponseExtendAwResource$inboundSchema) - .optional(), - stack: z.lazy(() => DeploymentDetailResponseExtendAwStack$inboundSchema) - .optional(), -}); +export const DeploymentDetailResponsePreparedStackExtendAw$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + DeploymentDetailResponsePreparedStackExtendAwBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: DeploymentDetailResponsePreparedStackExtendEffect$inboundSchema + .optional(), + grant: z.lazy(() => + DeploymentDetailResponsePreparedStackExtendAwGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); -export function deploymentDetailResponseExtendAwBindingFromJSON( +export function deploymentDetailResponsePreparedStackExtendAwFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseExtendAwBinding, + DeploymentDetailResponsePreparedStackExtendAw, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseExtendAwBinding$inboundSchema.parse( + DeploymentDetailResponsePreparedStackExtendAw$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'DeploymentDetailResponseExtendAwBinding' from JSON`, + `Failed to parse 'DeploymentDetailResponsePreparedStackExtendAw' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseExtendEffect$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseExtendEffect -> = z.enum(DeploymentDetailResponseExtendEffect); - -/** @internal */ -export const DeploymentDetailResponseExtendAwGrant$inboundSchema: z.ZodType< - DeploymentDetailResponseExtendAwGrant, - unknown -> = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), -}); +export const DeploymentDetailResponsePreparedStackExtendAzureResource$inboundSchema: + z.ZodType = + z.object({ + scope: z.string(), + }); -export function deploymentDetailResponseExtendAwGrantFromJSON( +export function deploymentDetailResponsePreparedStackExtendAzureResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePreparedStackExtendAzureResource, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponseExtendAwGrant$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseExtendAwGrant' from JSON`, + DeploymentDetailResponsePreparedStackExtendAzureResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePreparedStackExtendAzureResource' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseExtendAw$inboundSchema: z.ZodType< - DeploymentDetailResponseExtendAw, - unknown -> = z.object({ - binding: z.lazy(() => DeploymentDetailResponseExtendAwBinding$inboundSchema), - description: z.nullable(z.string()).optional(), - effect: DeploymentDetailResponseExtendEffect$inboundSchema.optional(), - grant: z.lazy(() => DeploymentDetailResponseExtendAwGrant$inboundSchema), - label: z.nullable(z.string()).optional(), -}); +export const DeploymentDetailResponsePreparedStackExtendAzureStack$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); -export function deploymentDetailResponseExtendAwFromJSON( +export function deploymentDetailResponsePreparedStackExtendAzureStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePreparedStackExtendAzureStack, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentDetailResponseExtendAw$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseExtendAw' from JSON`, + (x) => + DeploymentDetailResponsePreparedStackExtendAzureStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponsePreparedStackExtendAzureStack' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseExtendAzureResource$inboundSchema: - z.ZodType = z.object({ - scope: z.string(), - }); +export const DeploymentDetailResponsePreparedStackExtendAzureBinding$inboundSchema: + z.ZodType = + z.object({ + resource: z.lazy(() => + DeploymentDetailResponsePreparedStackExtendAzureResource$inboundSchema + ).optional(), + stack: z.lazy(() => + DeploymentDetailResponsePreparedStackExtendAzureStack$inboundSchema + ).optional(), + }); -export function deploymentDetailResponseExtendAzureResourceFromJSON( +export function deploymentDetailResponsePreparedStackExtendAzureBindingFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseExtendAzureResource, + DeploymentDetailResponsePreparedStackExtendAzureBinding, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseExtendAzureResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseExtendAzureResource' from JSON`, + DeploymentDetailResponsePreparedStackExtendAzureBinding$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePreparedStackExtendAzureBinding' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseExtendAzureStack$inboundSchema: z.ZodType< - DeploymentDetailResponseExtendAzureStack, - unknown -> = z.object({ - scope: z.string(), -}); +export const DeploymentDetailResponsePreparedStackExtendAzureGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); -export function deploymentDetailResponseExtendAzureStackFromJSON( +export function deploymentDetailResponsePreparedStackExtendAzureGrantFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseExtendAzureStack, + DeploymentDetailResponsePreparedStackExtendAzureGrant, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseExtendAzureStack$inboundSchema.parse( + DeploymentDetailResponsePreparedStackExtendAzureGrant$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'DeploymentDetailResponseExtendAzureStack' from JSON`, + `Failed to parse 'DeploymentDetailResponsePreparedStackExtendAzureGrant' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseExtendAzureBinding$inboundSchema: - z.ZodType = z.object({ - resource: z.lazy(() => - DeploymentDetailResponseExtendAzureResource$inboundSchema - ).optional(), - stack: z.lazy(() => DeploymentDetailResponseExtendAzureStack$inboundSchema) - .optional(), - }); +export const DeploymentDetailResponsePreparedStackExtendAzure$inboundSchema: + z.ZodType = z + .object({ + binding: z.lazy(() => + DeploymentDetailResponsePreparedStackExtendAzureBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + DeploymentDetailResponsePreparedStackExtendAzureGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); -export function deploymentDetailResponseExtendAzureBindingFromJSON( +export function deploymentDetailResponsePreparedStackExtendAzureFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseExtendAzureBinding, + DeploymentDetailResponsePreparedStackExtendAzure, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseExtendAzureBinding$inboundSchema.parse( + DeploymentDetailResponsePreparedStackExtendAzure$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'DeploymentDetailResponseExtendAzureBinding' from JSON`, + `Failed to parse 'DeploymentDetailResponsePreparedStackExtendAzure' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseExtendAzureGrant$inboundSchema: z.ZodType< - DeploymentDetailResponseExtendAzureGrant, - unknown -> = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), -}); +export const DeploymentDetailResponsePreparedStackExtendConditionResource$inboundSchema: + z.ZodType< + DeploymentDetailResponsePreparedStackExtendConditionResource, + unknown + > = z.object({ + expression: z.string(), + title: z.string(), + }); -export function deploymentDetailResponseExtendAzureGrantFromJSON( +export function deploymentDetailResponsePreparedStackExtendConditionResourceFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseExtendAzureGrant, + DeploymentDetailResponsePreparedStackExtendConditionResource, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseExtendAzureGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseExtendAzureGrant' from JSON`, + DeploymentDetailResponsePreparedStackExtendConditionResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePreparedStackExtendConditionResource' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseExtendAzure$inboundSchema: z.ZodType< - DeploymentDetailResponseExtendAzure, - unknown -> = z.object({ - binding: z.lazy(() => - DeploymentDetailResponseExtendAzureBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => DeploymentDetailResponseExtendAzureGrant$inboundSchema), - label: z.nullable(z.string()).optional(), -}); +export const DeploymentDetailResponsePreparedStackExtendResourceConditionUnion$inboundSchema: + z.ZodType< + DeploymentDetailResponsePreparedStackExtendResourceConditionUnion, + unknown + > = z.union([ + z.lazy(() => + DeploymentDetailResponsePreparedStackExtendConditionResource$inboundSchema + ), + z.any(), + ]); -export function deploymentDetailResponseExtendAzureFromJSON( +export function deploymentDetailResponsePreparedStackExtendResourceConditionUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePreparedStackExtendResourceConditionUnion, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponseExtendAzure$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseExtendAzure' from JSON`, + DeploymentDetailResponsePreparedStackExtendResourceConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePreparedStackExtendResourceConditionUnion' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseExtendConditionResource$inboundSchema: - z.ZodType = z +export const DeploymentDetailResponsePreparedStackExtendGcpResource$inboundSchema: + z.ZodType = z .object({ - expression: z.string(), - title: z.string(), + condition: z.nullable( + z.union([ + z.lazy(() => + DeploymentDetailResponsePreparedStackExtendConditionResource$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), }); -export function deploymentDetailResponseExtendConditionResourceFromJSON( +export function deploymentDetailResponsePreparedStackExtendGcpResourceFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseExtendConditionResource, + DeploymentDetailResponsePreparedStackExtendGcpResource, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseExtendConditionResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseExtendConditionResource' from JSON`, + DeploymentDetailResponsePreparedStackExtendGcpResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePreparedStackExtendGcpResource' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseExtendResourceConditionUnion$inboundSchema: - z.ZodType = z - .union([ - z.lazy(() => - DeploymentDetailResponseExtendConditionResource$inboundSchema - ), - z.any(), - ]); +export const DeploymentDetailResponsePreparedStackExtendConditionStack$inboundSchema: + z.ZodType< + DeploymentDetailResponsePreparedStackExtendConditionStack, + unknown + > = z.object({ + expression: z.string(), + title: z.string(), + }); -export function deploymentDetailResponseExtendResourceConditionUnionFromJSON( +export function deploymentDetailResponsePreparedStackExtendConditionStackFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseExtendResourceConditionUnion, + DeploymentDetailResponsePreparedStackExtendConditionStack, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseExtendResourceConditionUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseExtendResourceConditionUnion' from JSON`, + DeploymentDetailResponsePreparedStackExtendConditionStack$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePreparedStackExtendConditionStack' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseExtendGcpResource$inboundSchema: z.ZodType< - DeploymentDetailResponseExtendGcpResource, - unknown -> = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => - DeploymentDetailResponseExtendConditionResource$inboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), -}); +export const DeploymentDetailResponsePreparedStackExtendStackConditionUnion$inboundSchema: + z.ZodType< + DeploymentDetailResponsePreparedStackExtendStackConditionUnion, + unknown + > = z.union([ + z.lazy(() => + DeploymentDetailResponsePreparedStackExtendConditionStack$inboundSchema + ), + z.any(), + ]); -export function deploymentDetailResponseExtendGcpResourceFromJSON( +export function deploymentDetailResponsePreparedStackExtendStackConditionUnionFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseExtendGcpResource, + DeploymentDetailResponsePreparedStackExtendStackConditionUnion, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseExtendGcpResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseExtendGcpResource' from JSON`, + DeploymentDetailResponsePreparedStackExtendStackConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePreparedStackExtendStackConditionUnion' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseExtendConditionStack$inboundSchema: - z.ZodType = z.object({ - expression: z.string(), - title: z.string(), - }); +export const DeploymentDetailResponsePreparedStackExtendGcpStack$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + DeploymentDetailResponsePreparedStackExtendConditionStack$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); -export function deploymentDetailResponseExtendConditionStackFromJSON( +export function deploymentDetailResponsePreparedStackExtendGcpStackFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseExtendConditionStack, + DeploymentDetailResponsePreparedStackExtendGcpStack, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseExtendConditionStack$inboundSchema.parse( + DeploymentDetailResponsePreparedStackExtendGcpStack$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'DeploymentDetailResponseExtendConditionStack' from JSON`, + `Failed to parse 'DeploymentDetailResponsePreparedStackExtendGcpStack' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseExtendStackConditionUnion$inboundSchema: - z.ZodType = z - .union([ - z.lazy(() => DeploymentDetailResponseExtendConditionStack$inboundSchema), - z.any(), - ]); +export const DeploymentDetailResponsePreparedStackExtendGcpBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + DeploymentDetailResponsePreparedStackExtendGcpResource$inboundSchema + ).optional(), + stack: z.lazy(() => + DeploymentDetailResponsePreparedStackExtendGcpStack$inboundSchema + ).optional(), + }); -export function deploymentDetailResponseExtendStackConditionUnionFromJSON( +export function deploymentDetailResponsePreparedStackExtendGcpBindingFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseExtendStackConditionUnion, + DeploymentDetailResponsePreparedStackExtendGcpBinding, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseExtendStackConditionUnion$inboundSchema.parse( + DeploymentDetailResponsePreparedStackExtendGcpBinding$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'DeploymentDetailResponseExtendStackConditionUnion' from JSON`, + `Failed to parse 'DeploymentDetailResponsePreparedStackExtendGcpBinding' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseExtendGcpStack$inboundSchema: z.ZodType< - DeploymentDetailResponseExtendGcpStack, - unknown -> = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => DeploymentDetailResponseExtendConditionStack$inboundSchema), - z.any(), - ]), - ).optional(), - scope: z.string(), -}); +export const DeploymentDetailResponsePreparedStackExtendGcpGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); -export function deploymentDetailResponseExtendGcpStackFromJSON( +export function deploymentDetailResponsePreparedStackExtendGcpGrantFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePreparedStackExtendGcpGrant, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponseExtendGcpStack$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseExtendGcpStack' from JSON`, + DeploymentDetailResponsePreparedStackExtendGcpGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponsePreparedStackExtendGcpGrant' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseExtendGcpBinding$inboundSchema: z.ZodType< - DeploymentDetailResponseExtendGcpBinding, - unknown -> = z.object({ - resource: z.lazy(() => - DeploymentDetailResponseExtendGcpResource$inboundSchema - ).optional(), - stack: z.lazy(() => DeploymentDetailResponseExtendGcpStack$inboundSchema) - .optional(), -}); +export const DeploymentDetailResponsePreparedStackExtendGcp$inboundSchema: + z.ZodType = z.object( + { + binding: z.lazy(() => + DeploymentDetailResponsePreparedStackExtendGcpBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + DeploymentDetailResponsePreparedStackExtendGcpGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }, + ); -export function deploymentDetailResponseExtendGcpBindingFromJSON( +export function deploymentDetailResponsePreparedStackExtendGcpFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseExtendGcpBinding, + DeploymentDetailResponsePreparedStackExtendGcp, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseExtendGcpBinding$inboundSchema.parse( + DeploymentDetailResponsePreparedStackExtendGcp$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'DeploymentDetailResponseExtendGcpBinding' from JSON`, + `Failed to parse 'DeploymentDetailResponsePreparedStackExtendGcp' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseExtendGcpGrant$inboundSchema: z.ZodType< - DeploymentDetailResponseExtendGcpGrant, - unknown -> = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), -}); +export const DeploymentDetailResponsePreparedStackExtendPlatforms$inboundSchema: + z.ZodType = z + .object({ + aws: z.nullable( + z.array(z.lazy(() => + DeploymentDetailResponsePreparedStackExtendAw$inboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + DeploymentDetailResponsePreparedStackExtendAzure$inboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + DeploymentDetailResponsePreparedStackExtendGcp$inboundSchema + )), + ).optional(), + }); -export function deploymentDetailResponseExtendGcpGrantFromJSON( +export function deploymentDetailResponsePreparedStackExtendPlatformsFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePreparedStackExtendPlatforms, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponseExtendGcpGrant$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseExtendGcpGrant' from JSON`, + DeploymentDetailResponsePreparedStackExtendPlatforms$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponsePreparedStackExtendPlatforms' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseExtendGcp$inboundSchema: z.ZodType< - DeploymentDetailResponseExtendGcp, - unknown -> = z.object({ - binding: z.lazy(() => DeploymentDetailResponseExtendGcpBinding$inboundSchema), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => DeploymentDetailResponseExtendGcpGrant$inboundSchema), - label: z.nullable(z.string()).optional(), -}); +export const DeploymentDetailResponsePreparedStackExtend$inboundSchema: + z.ZodType = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + DeploymentDetailResponsePreparedStackExtendPlatforms$inboundSchema + ), + }); -export function deploymentDetailResponseExtendGcpFromJSON( +export function deploymentDetailResponsePreparedStackExtendFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePreparedStackExtend, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentDetailResponseExtendGcp$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseExtendGcp' from JSON`, + (x) => + DeploymentDetailResponsePreparedStackExtend$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponsePreparedStackExtend' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseExtendPlatforms$inboundSchema: z.ZodType< - DeploymentDetailResponseExtendPlatforms, - unknown -> = z.object({ - aws: z.nullable( - z.array(z.lazy(() => DeploymentDetailResponseExtendAw$inboundSchema)), - ).optional(), - azure: z.nullable( - z.array(z.lazy(() => DeploymentDetailResponseExtendAzure$inboundSchema)), - ).optional(), - gcp: z.nullable( - z.array(z.lazy(() => DeploymentDetailResponseExtendGcp$inboundSchema)), - ).optional(), -}); +export const DeploymentDetailResponsePreparedStackExtendUnion$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => DeploymentDetailResponsePreparedStackExtend$inboundSchema), + z.string(), + ]); -export function deploymentDetailResponseExtendPlatformsFromJSON( +export function deploymentDetailResponsePreparedStackExtendUnionFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseExtendPlatforms, + DeploymentDetailResponsePreparedStackExtendUnion, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseExtendPlatforms$inboundSchema.parse( + DeploymentDetailResponsePreparedStackExtendUnion$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'DeploymentDetailResponseExtendPlatforms' from JSON`, + `Failed to parse 'DeploymentDetailResponsePreparedStackExtendUnion' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseExtend$inboundSchema: z.ZodType< - DeploymentDetailResponseExtend, - unknown -> = z.object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => - DeploymentDetailResponseExtendPlatforms$inboundSchema - ), -}); +export const DeploymentDetailResponsePreparedStackManagement1$inboundSchema: + z.ZodType = z + .object({ + extend: z.record( + z.string(), + z.array(z.union([ + z.lazy(() => + DeploymentDetailResponsePreparedStackExtend$inboundSchema + ), + z.string(), + ])), + ), + }); -export function deploymentDetailResponseExtendFromJSON( +export function deploymentDetailResponsePreparedStackManagement1FromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePreparedStackManagement1, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentDetailResponseExtend$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseExtend' from JSON`, + (x) => + DeploymentDetailResponsePreparedStackManagement1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponsePreparedStackManagement1' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseExtendUnion$inboundSchema: z.ZodType< - DeploymentDetailResponseExtendUnion, - unknown -> = z.union([ - z.lazy(() => DeploymentDetailResponseExtend$inboundSchema), - z.string(), -]); +export const DeploymentDetailResponsePreparedStackManagementUnion$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => + DeploymentDetailResponsePreparedStackManagement1$inboundSchema + ), + z.lazy(() => + DeploymentDetailResponsePreparedStackManagement2$inboundSchema + ), + DeploymentDetailResponsePreparedStackManagementEnum$inboundSchema, + ]); -export function deploymentDetailResponseExtendUnionFromJSON( +export function deploymentDetailResponsePreparedStackManagementUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePreparedStackManagementUnion, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponseExtendUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseExtendUnion' from JSON`, + DeploymentDetailResponsePreparedStackManagementUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponsePreparedStackManagementUnion' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseManagement1$inboundSchema: z.ZodType< - DeploymentDetailResponseManagement1, - unknown -> = z.object({ - extend: z.record( - z.string(), - z.array(z.union([ - z.lazy(() => DeploymentDetailResponseExtend$inboundSchema), - z.string(), - ])), - ), -}); +export const DeploymentDetailResponsePreparedStackProfileAwResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); -export function deploymentDetailResponseManagement1FromJSON( +export function deploymentDetailResponsePreparedStackProfileAwResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePreparedStackProfileAwResource, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponseManagement1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseManagement1' from JSON`, + DeploymentDetailResponsePreparedStackProfileAwResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePreparedStackProfileAwResource' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseManagementUnion$inboundSchema: z.ZodType< - DeploymentDetailResponseManagementUnion, - unknown -> = z.union([ - z.lazy(() => DeploymentDetailResponseManagement1$inboundSchema), - z.lazy(() => DeploymentDetailResponseManagement2$inboundSchema), - DeploymentDetailResponseManagementEnum$inboundSchema, -]); +export const DeploymentDetailResponsePreparedStackProfileAwStack$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); -export function deploymentDetailResponseManagementUnionFromJSON( +export function deploymentDetailResponsePreparedStackProfileAwStackFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseManagementUnion, + DeploymentDetailResponsePreparedStackProfileAwStack, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseManagementUnion$inboundSchema.parse( + DeploymentDetailResponsePreparedStackProfileAwStack$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'DeploymentDetailResponseManagementUnion' from JSON`, + `Failed to parse 'DeploymentDetailResponsePreparedStackProfileAwStack' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseProfileAwResource$inboundSchema: z.ZodType< - DeploymentDetailResponseProfileAwResource, - unknown -> = z.object({ - condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) - .optional(), - resources: z.array(z.string()), -}); +export const DeploymentDetailResponsePreparedStackProfileAwBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + DeploymentDetailResponsePreparedStackProfileAwResource$inboundSchema + ).optional(), + stack: z.lazy(() => + DeploymentDetailResponsePreparedStackProfileAwStack$inboundSchema + ).optional(), + }); -export function deploymentDetailResponseProfileAwResourceFromJSON( +export function deploymentDetailResponsePreparedStackProfileAwBindingFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseProfileAwResource, + DeploymentDetailResponsePreparedStackProfileAwBinding, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseProfileAwResource$inboundSchema.parse( + DeploymentDetailResponsePreparedStackProfileAwBinding$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'DeploymentDetailResponseProfileAwResource' from JSON`, + `Failed to parse 'DeploymentDetailResponsePreparedStackProfileAwBinding' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseProfileAwStack$inboundSchema: z.ZodType< - DeploymentDetailResponseProfileAwStack, - unknown -> = z.object({ - condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) - .optional(), - resources: z.array(z.string()), -}); - -export function deploymentDetailResponseProfileAwStackFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseProfileAwStack$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseProfileAwStack' from JSON`, +export const DeploymentDetailResponsePreparedStackProfileEffect$inboundSchema: + z.ZodEnum = z.enum( + DeploymentDetailResponsePreparedStackProfileEffect, ); -} /** @internal */ -export const DeploymentDetailResponseProfileAwBinding$inboundSchema: z.ZodType< - DeploymentDetailResponseProfileAwBinding, - unknown -> = z.object({ - resource: z.lazy(() => - DeploymentDetailResponseProfileAwResource$inboundSchema - ).optional(), - stack: z.lazy(() => DeploymentDetailResponseProfileAwStack$inboundSchema) - .optional(), -}); +export const DeploymentDetailResponsePreparedStackProfileAwGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); -export function deploymentDetailResponseProfileAwBindingFromJSON( +export function deploymentDetailResponsePreparedStackProfileAwGrantFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseProfileAwBinding, + DeploymentDetailResponsePreparedStackProfileAwGrant, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseProfileAwBinding$inboundSchema.parse( + DeploymentDetailResponsePreparedStackProfileAwGrant$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'DeploymentDetailResponseProfileAwBinding' from JSON`, + `Failed to parse 'DeploymentDetailResponsePreparedStackProfileAwGrant' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseProfileEffect$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseProfileEffect -> = z.enum(DeploymentDetailResponseProfileEffect); - -/** @internal */ -export const DeploymentDetailResponseProfileAwGrant$inboundSchema: z.ZodType< - DeploymentDetailResponseProfileAwGrant, - unknown -> = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), -}); +export const DeploymentDetailResponsePreparedStackProfileAw$inboundSchema: + z.ZodType = z.object( + { + binding: z.lazy(() => + DeploymentDetailResponsePreparedStackProfileAwBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: DeploymentDetailResponsePreparedStackProfileEffect$inboundSchema + .optional(), + grant: z.lazy(() => + DeploymentDetailResponsePreparedStackProfileAwGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }, + ); -export function deploymentDetailResponseProfileAwGrantFromJSON( +export function deploymentDetailResponsePreparedStackProfileAwFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePreparedStackProfileAw, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponseProfileAwGrant$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseProfileAwGrant' from JSON`, + DeploymentDetailResponsePreparedStackProfileAw$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponsePreparedStackProfileAw' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseProfileAw$inboundSchema: z.ZodType< - DeploymentDetailResponseProfileAw, - unknown -> = z.object({ - binding: z.lazy(() => DeploymentDetailResponseProfileAwBinding$inboundSchema), - description: z.nullable(z.string()).optional(), - effect: DeploymentDetailResponseProfileEffect$inboundSchema.optional(), - grant: z.lazy(() => DeploymentDetailResponseProfileAwGrant$inboundSchema), - label: z.nullable(z.string()).optional(), -}); +export const DeploymentDetailResponsePreparedStackProfileAzureResource$inboundSchema: + z.ZodType< + DeploymentDetailResponsePreparedStackProfileAzureResource, + unknown + > = z.object({ + scope: z.string(), + }); -export function deploymentDetailResponseProfileAwFromJSON( +export function deploymentDetailResponsePreparedStackProfileAzureResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePreparedStackProfileAzureResource, + SDKValidationError +> { return safeParse( jsonString, - (x) => DeploymentDetailResponseProfileAw$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseProfileAw' from JSON`, + (x) => + DeploymentDetailResponsePreparedStackProfileAzureResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePreparedStackProfileAzureResource' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseProfileAzureResource$inboundSchema: - z.ZodType = z.object({ - scope: z.string(), - }); +export const DeploymentDetailResponsePreparedStackProfileAzureStack$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); -export function deploymentDetailResponseProfileAzureResourceFromJSON( +export function deploymentDetailResponsePreparedStackProfileAzureStackFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseProfileAzureResource, + DeploymentDetailResponsePreparedStackProfileAzureStack, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseProfileAzureResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseProfileAzureResource' from JSON`, + DeploymentDetailResponsePreparedStackProfileAzureStack$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePreparedStackProfileAzureStack' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseProfileAzureStack$inboundSchema: z.ZodType< - DeploymentDetailResponseProfileAzureStack, - unknown -> = z.object({ - scope: z.string(), -}); +export const DeploymentDetailResponsePreparedStackProfileAzureBinding$inboundSchema: + z.ZodType = + z.object({ + resource: z.lazy(() => + DeploymentDetailResponsePreparedStackProfileAzureResource$inboundSchema + ).optional(), + stack: z.lazy(() => + DeploymentDetailResponsePreparedStackProfileAzureStack$inboundSchema + ).optional(), + }); -export function deploymentDetailResponseProfileAzureStackFromJSON( +export function deploymentDetailResponsePreparedStackProfileAzureBindingFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseProfileAzureStack, + DeploymentDetailResponsePreparedStackProfileAzureBinding, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseProfileAzureStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseProfileAzureStack' from JSON`, + DeploymentDetailResponsePreparedStackProfileAzureBinding$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePreparedStackProfileAzureBinding' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseProfileAzureBinding$inboundSchema: - z.ZodType = z.object({ - resource: z.lazy(() => - DeploymentDetailResponseProfileAzureResource$inboundSchema - ).optional(), - stack: z.lazy(() => DeploymentDetailResponseProfileAzureStack$inboundSchema) - .optional(), - }); +export const DeploymentDetailResponsePreparedStackProfileAzureGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); -export function deploymentDetailResponseProfileAzureBindingFromJSON( +export function deploymentDetailResponsePreparedStackProfileAzureGrantFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseProfileAzureBinding, + DeploymentDetailResponsePreparedStackProfileAzureGrant, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseProfileAzureBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseProfileAzureBinding' from JSON`, + DeploymentDetailResponsePreparedStackProfileAzureGrant$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePreparedStackProfileAzureGrant' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseProfileAzureGrant$inboundSchema: z.ZodType< - DeploymentDetailResponseProfileAzureGrant, - unknown -> = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), -}); +export const DeploymentDetailResponsePreparedStackProfileAzure$inboundSchema: + z.ZodType = z + .object({ + binding: z.lazy(() => + DeploymentDetailResponsePreparedStackProfileAzureBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + DeploymentDetailResponsePreparedStackProfileAzureGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); -export function deploymentDetailResponseProfileAzureGrantFromJSON( +export function deploymentDetailResponsePreparedStackProfileAzureFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseProfileAzureGrant, + DeploymentDetailResponsePreparedStackProfileAzure, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseProfileAzureGrant$inboundSchema.parse( + DeploymentDetailResponsePreparedStackProfileAzure$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'DeploymentDetailResponseProfileAzureGrant' from JSON`, + `Failed to parse 'DeploymentDetailResponsePreparedStackProfileAzure' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseProfileAzure$inboundSchema: z.ZodType< - DeploymentDetailResponseProfileAzure, - unknown -> = z.object({ - binding: z.lazy(() => - DeploymentDetailResponseProfileAzureBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => DeploymentDetailResponseProfileAzureGrant$inboundSchema), - label: z.nullable(z.string()).optional(), -}); +export const DeploymentDetailResponsePreparedStackProfileConditionResource$inboundSchema: + z.ZodType< + DeploymentDetailResponsePreparedStackProfileConditionResource, + unknown + > = z.object({ + expression: z.string(), + title: z.string(), + }); -export function deploymentDetailResponseProfileAzureFromJSON( +export function deploymentDetailResponsePreparedStackProfileConditionResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePreparedStackProfileConditionResource, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponseProfileAzure$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseProfileAzure' from JSON`, + DeploymentDetailResponsePreparedStackProfileConditionResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePreparedStackProfileConditionResource' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseProfileConditionResource$inboundSchema: - z.ZodType = z - .object({ - expression: z.string(), - title: z.string(), - }); +export const DeploymentDetailResponsePreparedStackProfileResourceConditionUnion$inboundSchema: + z.ZodType< + DeploymentDetailResponsePreparedStackProfileResourceConditionUnion, + unknown + > = z.union([ + z.lazy(() => + DeploymentDetailResponsePreparedStackProfileConditionResource$inboundSchema + ), + z.any(), + ]); -export function deploymentDetailResponseProfileConditionResourceFromJSON( +export function deploymentDetailResponsePreparedStackProfileResourceConditionUnionFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseProfileConditionResource, + DeploymentDetailResponsePreparedStackProfileResourceConditionUnion, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseProfileConditionResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseProfileConditionResource' from JSON`, + DeploymentDetailResponsePreparedStackProfileResourceConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePreparedStackProfileResourceConditionUnion' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseProfileResourceConditionUnion$inboundSchema: - z.ZodType = z - .union([ - z.lazy(() => - DeploymentDetailResponseProfileConditionResource$inboundSchema - ), - z.any(), - ]); +export const DeploymentDetailResponsePreparedStackProfileGcpResource$inboundSchema: + z.ZodType = + z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => + DeploymentDetailResponsePreparedStackProfileConditionResource$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); -export function deploymentDetailResponseProfileResourceConditionUnionFromJSON( +export function deploymentDetailResponsePreparedStackProfileGcpResourceFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseProfileResourceConditionUnion, + DeploymentDetailResponsePreparedStackProfileGcpResource, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseProfileResourceConditionUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseProfileResourceConditionUnion' from JSON`, + DeploymentDetailResponsePreparedStackProfileGcpResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePreparedStackProfileGcpResource' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseProfileGcpResource$inboundSchema: - z.ZodType = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => - DeploymentDetailResponseProfileConditionResource$inboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), +export const DeploymentDetailResponsePreparedStackProfileConditionStack$inboundSchema: + z.ZodType< + DeploymentDetailResponsePreparedStackProfileConditionStack, + unknown + > = z.object({ + expression: z.string(), + title: z.string(), }); -export function deploymentDetailResponseProfileGcpResourceFromJSON( +export function deploymentDetailResponsePreparedStackProfileConditionStackFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseProfileGcpResource, + DeploymentDetailResponsePreparedStackProfileConditionStack, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseProfileGcpResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseProfileGcpResource' from JSON`, + DeploymentDetailResponsePreparedStackProfileConditionStack$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePreparedStackProfileConditionStack' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseProfileConditionStack$inboundSchema: - z.ZodType = z.object({ - expression: z.string(), - title: z.string(), - }); +export const DeploymentDetailResponsePreparedStackProfileStackConditionUnion$inboundSchema: + z.ZodType< + DeploymentDetailResponsePreparedStackProfileStackConditionUnion, + unknown + > = z.union([ + z.lazy(() => + DeploymentDetailResponsePreparedStackProfileConditionStack$inboundSchema + ), + z.any(), + ]); -export function deploymentDetailResponseProfileConditionStackFromJSON( +export function deploymentDetailResponsePreparedStackProfileStackConditionUnionFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseProfileConditionStack, + DeploymentDetailResponsePreparedStackProfileStackConditionUnion, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseProfileConditionStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseProfileConditionStack' from JSON`, + DeploymentDetailResponsePreparedStackProfileStackConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePreparedStackProfileStackConditionUnion' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseProfileStackConditionUnion$inboundSchema: - z.ZodType = z - .union([ - z.lazy(() => DeploymentDetailResponseProfileConditionStack$inboundSchema), - z.any(), - ]); +export const DeploymentDetailResponsePreparedStackProfileGcpStack$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + DeploymentDetailResponsePreparedStackProfileConditionStack$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); -export function deploymentDetailResponseProfileStackConditionUnionFromJSON( +export function deploymentDetailResponsePreparedStackProfileGcpStackFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseProfileStackConditionUnion, + DeploymentDetailResponsePreparedStackProfileGcpStack, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseProfileStackConditionUnion$inboundSchema.parse( + DeploymentDetailResponsePreparedStackProfileGcpStack$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'DeploymentDetailResponseProfileStackConditionUnion' from JSON`, + `Failed to parse 'DeploymentDetailResponsePreparedStackProfileGcpStack' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseProfileGcpStack$inboundSchema: z.ZodType< - DeploymentDetailResponseProfileGcpStack, - unknown -> = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => DeploymentDetailResponseProfileConditionStack$inboundSchema), - z.any(), - ]), - ).optional(), - scope: z.string(), -}); +export const DeploymentDetailResponsePreparedStackProfileGcpBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + DeploymentDetailResponsePreparedStackProfileGcpResource$inboundSchema + ).optional(), + stack: z.lazy(() => + DeploymentDetailResponsePreparedStackProfileGcpStack$inboundSchema + ).optional(), + }); -export function deploymentDetailResponseProfileGcpStackFromJSON( +export function deploymentDetailResponsePreparedStackProfileGcpBindingFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseProfileGcpStack, + DeploymentDetailResponsePreparedStackProfileGcpBinding, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseProfileGcpStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseProfileGcpStack' from JSON`, + DeploymentDetailResponsePreparedStackProfileGcpBinding$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePreparedStackProfileGcpBinding' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseProfileGcpBinding$inboundSchema: z.ZodType< - DeploymentDetailResponseProfileGcpBinding, - unknown -> = z.object({ - resource: z.lazy(() => - DeploymentDetailResponseProfileGcpResource$inboundSchema - ).optional(), - stack: z.lazy(() => DeploymentDetailResponseProfileGcpStack$inboundSchema) - .optional(), -}); +export const DeploymentDetailResponsePreparedStackProfileGcpGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); -export function deploymentDetailResponseProfileGcpBindingFromJSON( +export function deploymentDetailResponsePreparedStackProfileGcpGrantFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseProfileGcpBinding, + DeploymentDetailResponsePreparedStackProfileGcpGrant, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseProfileGcpBinding$inboundSchema.parse( + DeploymentDetailResponsePreparedStackProfileGcpGrant$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'DeploymentDetailResponseProfileGcpBinding' from JSON`, + `Failed to parse 'DeploymentDetailResponsePreparedStackProfileGcpGrant' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseProfileGcpGrant$inboundSchema: z.ZodType< - DeploymentDetailResponseProfileGcpGrant, - unknown -> = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), -}); +export const DeploymentDetailResponsePreparedStackProfileGcp$inboundSchema: + z.ZodType = z + .object({ + binding: z.lazy(() => + DeploymentDetailResponsePreparedStackProfileGcpBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + DeploymentDetailResponsePreparedStackProfileGcpGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); -export function deploymentDetailResponseProfileGcpGrantFromJSON( +export function deploymentDetailResponsePreparedStackProfileGcpFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseProfileGcpGrant, + DeploymentDetailResponsePreparedStackProfileGcp, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseProfileGcpGrant$inboundSchema.parse( + DeploymentDetailResponsePreparedStackProfileGcp$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'DeploymentDetailResponseProfileGcpGrant' from JSON`, + `Failed to parse 'DeploymentDetailResponsePreparedStackProfileGcp' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseProfileGcp$inboundSchema: z.ZodType< - DeploymentDetailResponseProfileGcp, - unknown -> = z.object({ - binding: z.lazy(() => - DeploymentDetailResponseProfileGcpBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => DeploymentDetailResponseProfileGcpGrant$inboundSchema), - label: z.nullable(z.string()).optional(), -}); +export const DeploymentDetailResponsePreparedStackProfilePlatforms$inboundSchema: + z.ZodType = z + .object({ + aws: z.nullable( + z.array(z.lazy(() => + DeploymentDetailResponsePreparedStackProfileAw$inboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + DeploymentDetailResponsePreparedStackProfileAzure$inboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + DeploymentDetailResponsePreparedStackProfileGcp$inboundSchema + )), + ).optional(), + }); -export function deploymentDetailResponseProfileGcpFromJSON( +export function deploymentDetailResponsePreparedStackProfilePlatformsFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePreparedStackProfilePlatforms, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponseProfileGcp$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseProfileGcp' from JSON`, + DeploymentDetailResponsePreparedStackProfilePlatforms$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponsePreparedStackProfilePlatforms' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseProfilePlatforms$inboundSchema: z.ZodType< - DeploymentDetailResponseProfilePlatforms, - unknown -> = z.object({ - aws: z.nullable( - z.array(z.lazy(() => DeploymentDetailResponseProfileAw$inboundSchema)), - ).optional(), - azure: z.nullable( - z.array(z.lazy(() => DeploymentDetailResponseProfileAzure$inboundSchema)), - ).optional(), - gcp: z.nullable( - z.array(z.lazy(() => DeploymentDetailResponseProfileGcp$inboundSchema)), - ).optional(), -}); +export const DeploymentDetailResponsePreparedStackProfile$inboundSchema: + z.ZodType = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + DeploymentDetailResponsePreparedStackProfilePlatforms$inboundSchema + ), + }); -export function deploymentDetailResponseProfilePlatformsFromJSON( +export function deploymentDetailResponsePreparedStackProfileFromJSON( jsonString: string, ): SafeParseResult< - DeploymentDetailResponseProfilePlatforms, + DeploymentDetailResponsePreparedStackProfile, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentDetailResponseProfilePlatforms$inboundSchema.parse( + DeploymentDetailResponsePreparedStackProfile$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'DeploymentDetailResponseProfilePlatforms' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseProfile$inboundSchema: z.ZodType< - DeploymentDetailResponseProfile, - unknown -> = z.object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => - DeploymentDetailResponseProfilePlatforms$inboundSchema - ), -}); - -export function deploymentDetailResponseProfileFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentDetailResponseProfile$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseProfile' from JSON`, + `Failed to parse 'DeploymentDetailResponsePreparedStackProfile' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponseProfileUnion$inboundSchema: z.ZodType< - DeploymentDetailResponseProfileUnion, - unknown -> = z.union([ - z.lazy(() => DeploymentDetailResponseProfile$inboundSchema), - z.string(), -]); +export const DeploymentDetailResponsePreparedStackProfileUnion$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => DeploymentDetailResponsePreparedStackProfile$inboundSchema), + z.string(), + ]); -export function deploymentDetailResponseProfileUnionFromJSON( +export function deploymentDetailResponsePreparedStackProfileUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePreparedStackProfileUnion, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponseProfileUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseProfileUnion' from JSON`, + DeploymentDetailResponsePreparedStackProfileUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponsePreparedStackProfileUnion' from JSON`, ); } /** @internal */ -export const DeploymentDetailResponsePermissions$inboundSchema: z.ZodType< - DeploymentDetailResponsePermissions, - unknown -> = z.object({ - management: z.union([ - z.lazy(() => DeploymentDetailResponseManagement1$inboundSchema), - z.lazy(() => DeploymentDetailResponseManagement2$inboundSchema), - DeploymentDetailResponseManagementEnum$inboundSchema, - ]).optional(), - profiles: z.record( - z.string(), - z.record( - z.string(), - z.array( - z.union([ - z.lazy(() => DeploymentDetailResponseProfile$inboundSchema), +export const DeploymentDetailResponsePreparedStackPermissions$inboundSchema: + z.ZodType = z + .object({ + management: z.union([ + z.lazy(() => + DeploymentDetailResponsePreparedStackManagement1$inboundSchema + ), + z.lazy(() => + DeploymentDetailResponsePreparedStackManagement2$inboundSchema + ), + DeploymentDetailResponsePreparedStackManagementEnum$inboundSchema, + ]).optional(), + profiles: z.record( + z.string(), + z.record( z.string(), - ]), + z.array( + z.union([ + z.lazy(() => + DeploymentDetailResponsePreparedStackProfile$inboundSchema + ), + z.string(), + ]), + ), + ), ), - ), - ), -}); + }); -export function deploymentDetailResponsePermissionsFromJSON( +export function deploymentDetailResponsePreparedStackPermissionsFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + DeploymentDetailResponsePreparedStackPermissions, + SDKValidationError +> { return safeParse( jsonString, (x) => - DeploymentDetailResponsePermissions$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponsePermissions' from JSON`, + DeploymentDetailResponsePreparedStackPermissions$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponsePreparedStackPermissions' from JSON`, ); } @@ -8286,6 +12969,7 @@ export const DeploymentDetailResponsePreparedStackResources$inboundSchema: dependencies: z.array(z.lazy(() => DeploymentDetailResponsePreparedStackDependency$inboundSchema )), + enabledWhen: z.nullable(z.string()).optional(), lifecycle: DeploymentDetailResponsePreparedStackLifecycle$inboundSchema, remoteAccess: z.boolean().optional(), }, @@ -8308,9 +12992,9 @@ export function deploymentDetailResponsePreparedStackResourcesFromJSON( } /** @internal */ -export const DeploymentDetailResponseSupportedPlatform$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseSupportedPlatform -> = z.enum(DeploymentDetailResponseSupportedPlatform); +export const DeploymentDetailResponsePreparedStackSupportedPlatform$inboundSchema: + z.ZodEnum = z + .enum(DeploymentDetailResponsePreparedStackSupportedPlatform); /** @internal */ export const DeploymentDetailResponsePreparedStack$inboundSchema: z.ZodType< @@ -8318,16 +13002,20 @@ export const DeploymentDetailResponsePreparedStack$inboundSchema: z.ZodType< unknown > = z.object({ id: z.string(), - inputs: z.array(z.lazy(() => DeploymentDetailResponseInput$inboundSchema)) - .optional(), - permissions: z.lazy(() => DeploymentDetailResponsePermissions$inboundSchema) - .optional(), + inputs: z.array( + z.lazy(() => DeploymentDetailResponsePreparedStackInput$inboundSchema), + ).optional(), + permissions: z.lazy(() => + DeploymentDetailResponsePreparedStackPermissions$inboundSchema + ).optional(), resources: z.record( z.string(), z.lazy(() => DeploymentDetailResponsePreparedStackResources$inboundSchema), ), supportedPlatforms: z.nullable( - z.array(DeploymentDetailResponseSupportedPlatform$inboundSchema), + z.array( + DeploymentDetailResponsePreparedStackSupportedPlatform$inboundSchema, + ), ).optional(), }); @@ -8365,13 +13053,77 @@ export function deploymentDetailResponsePreparedStackUnionFromJSON( ); } +/** @internal */ +export const DeploymentDetailResponseSetupUpdateAuthorization$inboundSchema: + z.ZodType = z + .object({ + baselineFrozenDigest: z.string(), + nonce: z.string(), + releaseId: z.string(), + setupFingerprint: z.string(), + setupFingerprintVersion: z.int(), + setupTarget: z.string(), + targetFrozenDigest: z.string(), + }); + +export function deploymentDetailResponseSetupUpdateAuthorizationFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseSetupUpdateAuthorization, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseSetupUpdateAuthorization$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseSetupUpdateAuthorization' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseSetupUpdateAuthorizationUnion$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => + DeploymentDetailResponseSetupUpdateAuthorization$inboundSchema + ), + z.any(), + ]); + +export function deploymentDetailResponseSetupUpdateAuthorizationUnionFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseSetupUpdateAuthorizationUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseSetupUpdateAuthorizationUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseSetupUpdateAuthorizationUnion' from JSON`, + ); +} + /** @internal */ export const DeploymentDetailResponseRuntimeMetadata$inboundSchema: z.ZodType< DeploymentDetailResponseRuntimeMetadata, unknown > = z.object({ + initialSetupAuthority: + DeploymentDetailResponseInitialSetupAuthority$inboundSchema.optional(), lastSyncedEnvVarsHash: z.nullable(z.string()).optional(), lastSyncedSecretNames: z.array(z.string()).optional(), + pendingPreparedStack: z.nullable( + z.union([ + z.lazy(() => DeploymentDetailResponsePendingPreparedStack$inboundSchema), + z.any(), + ]), + ).optional(), + persistedGateAnswers: z.record(z.string(), z.boolean()).optional(), preparedStack: z.nullable( z.union([ z.lazy(() => DeploymentDetailResponsePreparedStack$inboundSchema), @@ -8379,6 +13131,14 @@ export const DeploymentDetailResponseRuntimeMetadata$inboundSchema: z.ZodType< ]), ).optional(), registryAccessGranted: z.boolean().optional(), + setupUpdateAuthorization: z.nullable( + z.union([ + z.lazy(() => + DeploymentDetailResponseSetupUpdateAuthorization$inboundSchema + ), + z.any(), + ]), + ).optional(), }); export function deploymentDetailResponseRuntimeMetadataFromJSON( @@ -8482,6 +13242,27 @@ export function deploymentDetailResponseCurrentEnvironmentVariablesFromJSON( ); } +/** @internal */ +export const DeploymentDetailResponseUpdateState$inboundSchema: z.ZodType< + DeploymentDetailResponseUpdateState, + unknown +> = z.object({ + active: z.nullable(DeploymentUpdateOperationSummary$inboundSchema), + next: z.nullable(DeploymentUpdateOperationSummary$inboundSchema), + latest: z.nullable(DeploymentUpdateOperationSummary$inboundSchema), +}); + +export function deploymentDetailResponseUpdateStateFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseUpdateState$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseUpdateState' from JSON`, + ); +} + /** @internal */ export const DeploymentDetailResponse$inboundSchema: z.ZodType< DeploymentDetailResponse, @@ -8521,6 +13302,7 @@ export const DeploymentDetailResponse$inboundSchema: z.ZodType< currentReleaseId: z.nullable(z.string()).optional(), desiredReleaseId: z.nullable(z.string()).optional(), pinnedReleaseId: z.nullable(z.string()).optional(), + releaseChannel: z.string(), importSource: z.nullable(DeploymentDetailResponseImportSource$inboundSchema) .optional(), setupMethod: z.nullable(DeploymentDetailResponseSetupMethod$inboundSchema) @@ -8554,6 +13336,8 @@ export const DeploymentDetailResponse$inboundSchema: z.ZodType< DeploymentDetailResponseCurrentEnvironmentVariables$inboundSchema ), ).optional(), + updateState: z.lazy(() => DeploymentDetailResponseUpdateState$inboundSchema) + .optional(), createdAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), updatedAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), managerId: z.string(), diff --git a/client-sdks/platform/typescript/src/models/deploymentgroupinfo.ts b/client-sdks/platform/typescript/src/models/deploymentgroupinfo.ts index fa3c66b13..eb975f04e 100644 --- a/client-sdks/platform/typescript/src/models/deploymentgroupinfo.ts +++ b/client-sdks/platform/typescript/src/models/deploymentgroupinfo.ts @@ -16,6 +16,10 @@ export type DeploymentGroupInfo = { * Deployment group name. */ name: string; + /** + * Case-sensitive, URL- and header-safe identifier from the integrating application. + */ + externalId: string | null; }; /** @internal */ @@ -25,6 +29,7 @@ export const DeploymentGroupInfo$inboundSchema: z.ZodType< > = z.object({ id: z.string(), name: z.string(), + externalId: z.nullable(z.string()), }); export function deploymentGroupInfoFromJSON( diff --git a/client-sdks/platform/typescript/src/models/deploymentinfo.ts b/client-sdks/platform/typescript/src/models/deploymentinfo.ts index 53fc57aa8..0ccbadf87 100644 --- a/client-sdks/platform/typescript/src/models/deploymentinfo.ts +++ b/client-sdks/platform/typescript/src/models/deploymentinfo.ts @@ -15,6 +15,10 @@ import { DeploymentPortalAppearance$inboundSchema, } from "./deploymentportalappearance.js"; import { SDKValidationError } from "./errors/sdkvalidationerror.js"; +import { + SetupItemStatus, + SetupItemStatus$inboundSchema, +} from "./setupitemstatus.js"; import { SupportedCloudRegions, SupportedCloudRegions$inboundSchema, @@ -106,6 +110,10 @@ export type StackSummaryPlatform = ClosedEnum; export type ResourceCounts = { workers: number; containers: number; + /** + * Daemon resources that run on managed runtime machines + */ + daemons?: number | undefined; /** * Resources that declare managed public HTTPS endpoint setup */ @@ -690,6 +698,111 @@ export type DeploymentInfoInstallContext = { targets: { [k: string]: InstallContextTargets }; }; +export const ModelAvailabilitySourceStatus = { + Current: "current", + Stale: "stale", + Invalid: "invalid", +} as const; +export type ModelAvailabilitySourceStatus = ClosedEnum< + typeof ModelAvailabilitySourceStatus +>; + +export const DeploymentInfoAccessTest = { + Verified: "verified", + Failed: "failed", + NotChecked: "not-checked", +} as const; +export type DeploymentInfoAccessTest = ClosedEnum< + typeof DeploymentInfoAccessTest +>; + +export const DeploymentInfoModelAvailability = { + Available: "available", + Blocked: "blocked", + Unknown: "unknown", +} as const; +export type DeploymentInfoModelAvailability = ClosedEnum< + typeof DeploymentInfoModelAvailability +>; + +export const DeploymentInfoBlocker = { + AgreementRequired: "agreement-required", + EntitlementRequired: "entitlement-required", + ModelActivationRequired: "model-activation-required", + DeploymentRequired: "deployment-required", + QuotaConfigurationRequired: "quota-configuration-required", + RegionUnavailable: "region-unavailable", + AccessDenied: "access-denied", + ObservationFailed: "observation-failed", +} as const; +export type DeploymentInfoBlocker = ClosedEnum; + +/** + * A public API accepted from an application client. + */ +export const DeploymentInfoClientApi = { + OpenAiChatCompletions: "open-ai-chat-completions", + OpenAiResponses: "open-ai-responses", + AnthropicMessages: "anthropic-messages", +} as const; +/** + * A public API accepted from an application client. + */ +export type DeploymentInfoClientApi = ClosedEnum< + typeof DeploymentInfoClientApi +>; + +export type DeploymentInfoModel = { + accessTest: DeploymentInfoAccessTest; + availability: DeploymentInfoModelAvailability; + blockers: Array; + clientApis: Array; + errorCode?: string | null | undefined; + publicModelId: string; + testedAt?: Date | null | undefined; +}; + +/** + * Provider control plane used to observe model availability without invoking + * + * @remarks + * a model, spending customer quota, or accepting provider terms. + */ +export const DeploymentInfoSource = { + AwsBedrock: "aws-bedrock", + GcpVertex: "gcp-vertex", + AzureFoundry: "azure-foundry", + Anthropic: "anthropic", +} as const; +/** + * Provider control plane used to observe model availability without invoking + * + * @remarks + * a model, spending customer quota, or accepting provider terms. + */ +export type DeploymentInfoSource = ClosedEnum; + +export type DeploymentInfoAvailability = { + catalogRevision: string; + location?: string | null | undefined; + models: Array; + /** + * Provider control plane used to observe model availability without invoking + * + * @remarks + * a model, spending customer quota, or accepting provider terms. + */ + source: DeploymentInfoSource; +}; + +export type ModelAvailabilitySource = { + deploymentId: string; + resourceId: string; + observedAt: Date; + status: ModelAvailabilitySourceStatus; + availability?: DeploymentInfoAvailability | undefined; +}; + export const ReadinessStatus = { Ready: "ready", NotReady: "notReady", @@ -735,6 +848,8 @@ export type DeploymentInfo = { packages: Packages; installContext: DeploymentInfoInstallContext; supportedRegions: SupportedCloudRegions; + modelAvailabilitySources: Array; + setupItems?: Array | undefined; setupConfig?: DeploymentInfoSetupConfig | undefined; readiness?: Readiness | undefined; }; @@ -833,6 +948,7 @@ export const ResourceCounts$inboundSchema: z.ZodType = z.object({ workers: z.int(), containers: z.int(), + daemons: z.int().optional(), publicHttpsEndpoints: z.int(), externalInfra: z.int(), total: z.int(), @@ -1502,6 +1618,106 @@ export function deploymentInfoInstallContextFromJSON( ); } +/** @internal */ +export const ModelAvailabilitySourceStatus$inboundSchema: z.ZodEnum< + typeof ModelAvailabilitySourceStatus +> = z.enum(ModelAvailabilitySourceStatus); + +/** @internal */ +export const DeploymentInfoAccessTest$inboundSchema: z.ZodEnum< + typeof DeploymentInfoAccessTest +> = z.enum(DeploymentInfoAccessTest); + +/** @internal */ +export const DeploymentInfoModelAvailability$inboundSchema: z.ZodEnum< + typeof DeploymentInfoModelAvailability +> = z.enum(DeploymentInfoModelAvailability); + +/** @internal */ +export const DeploymentInfoBlocker$inboundSchema: z.ZodEnum< + typeof DeploymentInfoBlocker +> = z.enum(DeploymentInfoBlocker); + +/** @internal */ +export const DeploymentInfoClientApi$inboundSchema: z.ZodEnum< + typeof DeploymentInfoClientApi +> = z.enum(DeploymentInfoClientApi); + +/** @internal */ +export const DeploymentInfoModel$inboundSchema: z.ZodType< + DeploymentInfoModel, + unknown +> = z.object({ + accessTest: DeploymentInfoAccessTest$inboundSchema, + availability: DeploymentInfoModelAvailability$inboundSchema, + blockers: z.array(DeploymentInfoBlocker$inboundSchema), + clientApis: z.array(DeploymentInfoClientApi$inboundSchema), + errorCode: z.nullable(z.string()).optional(), + publicModelId: z.string(), + testedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ).optional(), +}); + +export function deploymentInfoModelFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentInfoModel$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentInfoModel' from JSON`, + ); +} + +/** @internal */ +export const DeploymentInfoSource$inboundSchema: z.ZodEnum< + typeof DeploymentInfoSource +> = z.enum(DeploymentInfoSource); + +/** @internal */ +export const DeploymentInfoAvailability$inboundSchema: z.ZodType< + DeploymentInfoAvailability, + unknown +> = z.object({ + catalogRevision: z.string(), + location: z.nullable(z.string()).optional(), + models: z.array(z.lazy(() => DeploymentInfoModel$inboundSchema)), + source: DeploymentInfoSource$inboundSchema, +}); + +export function deploymentInfoAvailabilityFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentInfoAvailability$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentInfoAvailability' from JSON`, + ); +} + +/** @internal */ +export const ModelAvailabilitySource$inboundSchema: z.ZodType< + ModelAvailabilitySource, + unknown +> = z.object({ + deploymentId: z.string(), + resourceId: z.string(), + observedAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), + status: ModelAvailabilitySourceStatus$inboundSchema, + availability: z.lazy(() => DeploymentInfoAvailability$inboundSchema) + .optional(), +}); + +export function modelAvailabilitySourceFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ModelAvailabilitySource$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ModelAvailabilitySource' from JSON`, + ); +} + /** @internal */ export const ReadinessStatus$inboundSchema: z.ZodEnum = z.enum(ReadinessStatus); @@ -1557,6 +1773,10 @@ export const DeploymentInfo$inboundSchema: z.ZodType = packages: z.lazy(() => Packages$inboundSchema), installContext: z.lazy(() => DeploymentInfoInstallContext$inboundSchema), supportedRegions: SupportedCloudRegions$inboundSchema, + modelAvailabilitySources: z.array( + z.lazy(() => ModelAvailabilitySource$inboundSchema), + ), + setupItems: z.array(SetupItemStatus$inboundSchema).optional(), setupConfig: DeploymentInfoSetupConfig$inboundSchema.optional(), readiness: z.lazy(() => Readiness$inboundSchema).optional(), }); diff --git a/client-sdks/platform/typescript/src/models/deploymentinfosetupconfig.ts b/client-sdks/platform/typescript/src/models/deploymentinfosetupconfig.ts index d7f0a5c0d..5f4bc0212 100644 --- a/client-sdks/platform/typescript/src/models/deploymentinfosetupconfig.ts +++ b/client-sdks/platform/typescript/src/models/deploymentinfosetupconfig.ts @@ -36,9 +36,11 @@ export type DeploymentInfoSetupConfigEnvironmentVariable = { }; export const DeploymentInfoSetupConfigItemEnum = { - AlienStack: "alien-stack", + Deployment: "deployment", Models: "models", Keys: "keys", + Bucket: "bucket", + Registry: "registry", } as const; export type DeploymentInfoSetupConfigItemEnum = ClosedEnum< typeof DeploymentInfoSetupConfigItemEnum @@ -47,6 +49,8 @@ export type DeploymentInfoSetupConfigItemEnum = ClosedEnum< export const DeploymentInfoSetupConfigDefinitionId = { CustomerAi: "customer-ai", CustomerKey: "customer-key", + CustomerStorage: "customer-storage", + CustomerRegistry: "customer-registry", } as const; export type DeploymentInfoSetupConfigDefinitionId = ClosedEnum< typeof DeploymentInfoSetupConfigDefinitionId @@ -62,8 +66,8 @@ export type DeploymentInfoSetupConfigSourceBuiltIn = { sourceReleaseId: string; }; -export type DeploymentInfoSetupConfigSourceApplicationRelease = { - type: "application-release"; +export type DeploymentInfoSetupConfigSourceProjectRelease = { + type: "project-release"; releaseChannel: string; /** * Unique identifier for the release. @@ -73,7 +77,7 @@ export type DeploymentInfoSetupConfigSourceApplicationRelease = { }; export type DeploymentInfoSetupConfigSourceUnion = - | DeploymentInfoSetupConfigSourceApplicationRelease + | DeploymentInfoSetupConfigSourceProjectRelease | DeploymentInfoSetupConfigSourceBuiltIn; export const DeploymentInfoSetupConfigAllowedProvider = { @@ -81,6 +85,8 @@ export const DeploymentInfoSetupConfigAllowedProvider = { GcpVertex: "gcp-vertex", AzureFoundry: "azure-foundry", Anthropic: "anthropic", + Databricks: "databricks", + Openai: "openai", } as const; export type DeploymentInfoSetupConfigAllowedProvider = ClosedEnum< typeof DeploymentInfoSetupConfigAllowedProvider @@ -113,7 +119,7 @@ export type DeploymentInfoSetupConfigConfiguration = { export type DeploymentInfoSetupConfigItem = { item: DeploymentInfoSetupConfigItemEnum; source: - | DeploymentInfoSetupConfigSourceApplicationRelease + | DeploymentInfoSetupConfigSourceProjectRelease | DeploymentInfoSetupConfigSourceBuiltIn; required: boolean; configuration?: DeploymentInfoSetupConfigConfiguration | undefined; @@ -434,28 +440,27 @@ export function deploymentInfoSetupConfigSourceBuiltInFromJSON( } /** @internal */ -export const DeploymentInfoSetupConfigSourceApplicationRelease$inboundSchema: - z.ZodType = z - .object({ - type: z.literal("application-release"), - releaseChannel: z.string(), - releaseId: z.string(), - resourceId: z.string().optional(), - }); - -export function deploymentInfoSetupConfigSourceApplicationReleaseFromJSON( +export const DeploymentInfoSetupConfigSourceProjectRelease$inboundSchema: + z.ZodType = z.object({ + type: z.literal("project-release"), + releaseChannel: z.string(), + releaseId: z.string(), + resourceId: z.string().optional(), + }); + +export function deploymentInfoSetupConfigSourceProjectReleaseFromJSON( jsonString: string, ): SafeParseResult< - DeploymentInfoSetupConfigSourceApplicationRelease, + DeploymentInfoSetupConfigSourceProjectRelease, SDKValidationError > { return safeParse( jsonString, (x) => - DeploymentInfoSetupConfigSourceApplicationRelease$inboundSchema.parse( + DeploymentInfoSetupConfigSourceProjectRelease$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'DeploymentInfoSetupConfigSourceApplicationRelease' from JSON`, + `Failed to parse 'DeploymentInfoSetupConfigSourceProjectRelease' from JSON`, ); } @@ -464,7 +469,7 @@ export const DeploymentInfoSetupConfigSourceUnion$inboundSchema: z.ZodType< DeploymentInfoSetupConfigSourceUnion, unknown > = z.union([ - z.lazy(() => DeploymentInfoSetupConfigSourceApplicationRelease$inboundSchema), + z.lazy(() => DeploymentInfoSetupConfigSourceProjectRelease$inboundSchema), z.lazy(() => DeploymentInfoSetupConfigSourceBuiltIn$inboundSchema), ]); @@ -546,9 +551,7 @@ export const DeploymentInfoSetupConfigItem$inboundSchema: z.ZodType< > = z.object({ item: DeploymentInfoSetupConfigItemEnum$inboundSchema, source: z.union([ - z.lazy(() => - DeploymentInfoSetupConfigSourceApplicationRelease$inboundSchema - ), + z.lazy(() => DeploymentInfoSetupConfigSourceProjectRelease$inboundSchema), z.lazy(() => DeploymentInfoSetupConfigSourceBuiltIn$inboundSchema), ]), required: z.boolean(), diff --git a/client-sdks/platform/typescript/src/models/deploymentlinksetupresponse.ts b/client-sdks/platform/typescript/src/models/deploymentlinksetupresponse.ts index 1fa701943..6c946d913 100644 --- a/client-sdks/platform/typescript/src/models/deploymentlinksetupresponse.ts +++ b/client-sdks/platform/typescript/src/models/deploymentlinksetupresponse.ts @@ -11,10 +11,16 @@ import { DeploymentSetupMethod$inboundSchema, } from "./deploymentsetupmethod.js"; import { SDKValidationError } from "./errors/sdkvalidationerror.js"; -import { - StackByPlatform, - StackByPlatform$inboundSchema, -} from "./stackbyplatform.js"; + +export type DeploymentLinkSetupResponseStack = { + aws?: any | null | undefined; + gcp?: any | null | undefined; + azure?: any | null | undefined; + kubernetes?: any | null | undefined; + machines?: any | null | undefined; + local?: any | null | undefined; + test?: any | null | undefined; +}; export type ActiveRelease = { /** @@ -22,7 +28,7 @@ export type ActiveRelease = { */ id: string; version: string | null; - stack: StackByPlatform | null; + stack: DeploymentLinkSetupResponseStack | null; }; /** @@ -45,9 +51,11 @@ export type DeploymentLinkSetupResponseSupportedPlatform = ClosedEnum< >; export const DeploymentLinkSetupResponseSetupItem = { - AlienStack: "alien-stack", + Deployment: "deployment", Models: "models", Keys: "keys", + Bucket: "bucket", + Registry: "registry", } as const; export type DeploymentLinkSetupResponseSetupItem = ClosedEnum< typeof DeploymentLinkSetupResponseSetupItem @@ -68,20 +76,63 @@ export const VisiblePackageType = { */ export type VisiblePackageType = ClosedEnum; +/** + * Whether at least one complete automated setup package is ready across all selected setup items. + */ +export const SetupPackagesStatus = { + Preparing: "preparing", + Ready: "ready", + Failed: "failed", +} as const; +/** + * Whether at least one complete automated setup package is ready across all selected setup items. + */ +export type SetupPackagesStatus = ClosedEnum; + export type DeploymentLinkSetupResponse = { activeRelease: ActiveRelease | null; supportedPlatforms: Array; setupItems: Array; visiblePackageTypes: Array; visibleSetupMethods: Array; + /** + * Whether at least one complete automated setup package is ready across all selected setup items. + */ + setupPackagesStatus: SetupPackagesStatus; }; +/** @internal */ +export const DeploymentLinkSetupResponseStack$inboundSchema: z.ZodType< + DeploymentLinkSetupResponseStack, + unknown +> = z.object({ + aws: z.nullable(z.any()).optional(), + gcp: z.nullable(z.any()).optional(), + azure: z.nullable(z.any()).optional(), + kubernetes: z.nullable(z.any()).optional(), + machines: z.nullable(z.any()).optional(), + local: z.nullable(z.any()).optional(), + test: z.nullable(z.any()).optional(), +}); + +export function deploymentLinkSetupResponseStackFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentLinkSetupResponseStack$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentLinkSetupResponseStack' from JSON`, + ); +} + /** @internal */ export const ActiveRelease$inboundSchema: z.ZodType = z .object({ id: z.string(), version: z.nullable(z.string()), - stack: z.nullable(StackByPlatform$inboundSchema), + stack: z.nullable( + z.lazy(() => DeploymentLinkSetupResponseStack$inboundSchema), + ), }); export function activeReleaseFromJSON( @@ -110,6 +161,11 @@ export const VisiblePackageType$inboundSchema: z.ZodEnum< typeof VisiblePackageType > = z.enum(VisiblePackageType); +/** @internal */ +export const SetupPackagesStatus$inboundSchema: z.ZodEnum< + typeof SetupPackagesStatus +> = z.enum(SetupPackagesStatus); + /** @internal */ export const DeploymentLinkSetupResponse$inboundSchema: z.ZodType< DeploymentLinkSetupResponse, @@ -122,6 +178,7 @@ export const DeploymentLinkSetupResponse$inboundSchema: z.ZodType< setupItems: z.array(DeploymentLinkSetupResponseSetupItem$inboundSchema), visiblePackageTypes: z.array(VisiblePackageType$inboundSchema), visibleSetupMethods: z.array(DeploymentSetupMethod$inboundSchema), + setupPackagesStatus: SetupPackagesStatus$inboundSchema, }); export function deploymentLinkSetupResponseFromJSON( diff --git a/client-sdks/platform/typescript/src/models/deploymentlistitemresponse.ts b/client-sdks/platform/typescript/src/models/deploymentlistitemresponse.ts index a741f7983..059c8b1f7 100644 --- a/client-sdks/platform/typescript/src/models/deploymentlistitemresponse.ts +++ b/client-sdks/platform/typescript/src/models/deploymentlistitemresponse.ts @@ -14,6 +14,10 @@ import { DeploymentProjectInfo, DeploymentProjectInfo$inboundSchema, } from "./deploymentprojectinfo.js"; +import { + DeploymentPurpose, + DeploymentPurpose$inboundSchema, +} from "./deploymentpurpose.js"; import { DeploymentReleaseInfo, DeploymentReleaseInfo$inboundSchema, @@ -358,6 +362,10 @@ export type DeploymentListItemResponse = { * ID of deployment group this deployment belongs to */ deploymentGroupId: string; + /** + * Operational purpose of this deployment within its customer environment. + */ + purpose: DeploymentPurpose; /** * Cloud environment information */ @@ -382,6 +390,7 @@ export type DeploymentListItemResponse = { * ID of the pinned release */ pinnedReleaseId?: string | null | undefined; + releaseChannel: string; /** * Setup source that imported this deployment */ @@ -684,6 +693,7 @@ export const DeploymentListItemResponse$inboundSchema: z.ZodType< platform: DeploymentListItemResponsePlatform$inboundSchema, deploymentProtocolVersion: z.int(), deploymentGroupId: z.string(), + purpose: DeploymentPurpose$inboundSchema, environmentInfo: z.nullable( z.union([ z.lazy(() => DeploymentListItemResponseEnvironmentInfoGcp$inboundSchema), @@ -703,6 +713,7 @@ export const DeploymentListItemResponse$inboundSchema: z.ZodType< currentReleaseId: z.nullable(z.string()).optional(), desiredReleaseId: z.nullable(z.string()).optional(), pinnedReleaseId: z.nullable(z.string()).optional(), + releaseChannel: z.string(), importSource: z.nullable(DeploymentListItemResponseImportSource$inboundSchema) .optional(), setupMethod: z.nullable(DeploymentListItemResponseSetupMethod$inboundSchema) diff --git a/client-sdks/platform/typescript/src/models/deploymentpurpose.ts b/client-sdks/platform/typescript/src/models/deploymentpurpose.ts index bbb6fa0a8..dd3c858b5 100644 --- a/client-sdks/platform/typescript/src/models/deploymentpurpose.ts +++ b/client-sdks/platform/typescript/src/models/deploymentpurpose.ts @@ -6,7 +6,7 @@ import * as z from "zod/v4"; import { ClosedEnum } from "../types/enums.js"; /** - * Operational purpose of this deployment within its customer environment. + * Filter by deployment purpose */ export const DeploymentPurpose = { Application: "application", @@ -16,7 +16,7 @@ export const DeploymentPurpose = { ContainerRegistry: "container-registry", } as const; /** - * Operational purpose of this deployment within its customer environment. + * Filter by deployment purpose */ export type DeploymentPurpose = ClosedEnum; @@ -24,3 +24,7 @@ export type DeploymentPurpose = ClosedEnum; export const DeploymentPurpose$inboundSchema: z.ZodEnum< typeof DeploymentPurpose > = z.enum(DeploymentPurpose); +/** @internal */ +export const DeploymentPurpose$outboundSchema: z.ZodEnum< + typeof DeploymentPurpose +> = DeploymentPurpose$inboundSchema; diff --git a/client-sdks/platform/typescript/src/models/deploymentsetupitemselection.ts b/client-sdks/platform/typescript/src/models/deploymentsetupitemselection.ts index d3f217706..692e82b01 100644 --- a/client-sdks/platform/typescript/src/models/deploymentsetupitemselection.ts +++ b/client-sdks/platform/typescript/src/models/deploymentsetupitemselection.ts @@ -6,9 +6,11 @@ import * as z from "zod/v4"; import { ClosedEnum } from "../types/enums.js"; export const DeploymentSetupItemSelectionItem = { - AlienStack: "alien-stack", + Deployment: "deployment", Models: "models", Keys: "keys", + Bucket: "bucket", + Registry: "registry", } as const; export type DeploymentSetupItemSelectionItem = ClosedEnum< typeof DeploymentSetupItemSelectionItem diff --git a/client-sdks/platform/typescript/src/models/deploymentsetupstacksettingspolicy.ts b/client-sdks/platform/typescript/src/models/deploymentsetupstacksettingspolicy.ts index 8eca47b0e..5a7ee31f0 100644 --- a/client-sdks/platform/typescript/src/models/deploymentsetupstacksettingspolicy.ts +++ b/client-sdks/platform/typescript/src/models/deploymentsetupstacksettingspolicy.ts @@ -9,7 +9,33 @@ import { ClosedEnum } from "../types/enums.js"; import { Result as SafeParseResult } from "../types/fp.js"; import { SDKValidationError } from "./errors/sdkvalidationerror.js"; +/** + * Failure-domain policy selected for a compute pool. + */ +export type DeploymentSetupStackSettingsPolicyFailureDomains2 = { + /** + * Concrete provider domains selected during setup. + * + * @remarks + * Empty delegates deterministic selection to the provider setup implementation. + */ + selectedFailureDomains?: Array | undefined; + /** + * Number of distinct failure domains across which new stateful replicas may be spread. + */ + spread: number; +}; + +export type DeploymentSetupStackSettingsPolicyFailureDomainsUnion2 = + | DeploymentSetupStackSettingsPolicyFailureDomains2 + | any; + export type DeploymentSetupStackSettingsPolicyPoolsAutoscale = { + failureDomains?: + | DeploymentSetupStackSettingsPolicyFailureDomains2 + | any + | null + | undefined; /** * Provider machine type selected for this deployment. */ @@ -25,7 +51,33 @@ export type DeploymentSetupStackSettingsPolicyPoolsAutoscale = { mode: "autoscale"; }; +/** + * Failure-domain policy selected for a compute pool. + */ +export type DeploymentSetupStackSettingsPolicyFailureDomains1 = { + /** + * Concrete provider domains selected during setup. + * + * @remarks + * Empty delegates deterministic selection to the provider setup implementation. + */ + selectedFailureDomains?: Array | undefined; + /** + * Number of distinct failure domains across which new stateful replicas may be spread. + */ + spread: number; +}; + +export type DeploymentSetupStackSettingsPolicyFailureDomainsUnion1 = + | DeploymentSetupStackSettingsPolicyFailureDomains1 + | any; + export type DeploymentSetupStackSettingsPolicyPoolsFixed = { + failureDomains?: + | DeploymentSetupStackSettingsPolicyFailureDomains1 + | any + | null + | undefined; /** * Provider machine type selected for this deployment. */ @@ -1225,17 +1277,134 @@ export type DeploymentSetupStackSettingsPolicy = { allowCustomRegistry?: boolean | undefined; }; +/** @internal */ +export const DeploymentSetupStackSettingsPolicyFailureDomains2$inboundSchema: + z.ZodType = z + .object({ + selectedFailureDomains: z.array(z.string()).optional(), + spread: z.int(), + }); +/** @internal */ +export type DeploymentSetupStackSettingsPolicyFailureDomains2$Outbound = { + selectedFailureDomains?: Array | undefined; + spread: number; +}; + +/** @internal */ +export const DeploymentSetupStackSettingsPolicyFailureDomains2$outboundSchema: + z.ZodType< + DeploymentSetupStackSettingsPolicyFailureDomains2$Outbound, + DeploymentSetupStackSettingsPolicyFailureDomains2 + > = z.object({ + selectedFailureDomains: z.array(z.string()).optional(), + spread: z.int(), + }); + +export function deploymentSetupStackSettingsPolicyFailureDomains2ToJSON( + deploymentSetupStackSettingsPolicyFailureDomains2: + DeploymentSetupStackSettingsPolicyFailureDomains2, +): string { + return JSON.stringify( + DeploymentSetupStackSettingsPolicyFailureDomains2$outboundSchema.parse( + deploymentSetupStackSettingsPolicyFailureDomains2, + ), + ); +} +export function deploymentSetupStackSettingsPolicyFailureDomains2FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentSetupStackSettingsPolicyFailureDomains2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentSetupStackSettingsPolicyFailureDomains2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentSetupStackSettingsPolicyFailureDomains2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentSetupStackSettingsPolicyFailureDomainsUnion2$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => + DeploymentSetupStackSettingsPolicyFailureDomains2$inboundSchema + ), + z.any(), + ]); +/** @internal */ +export type DeploymentSetupStackSettingsPolicyFailureDomainsUnion2$Outbound = + | DeploymentSetupStackSettingsPolicyFailureDomains2$Outbound + | any; + +/** @internal */ +export const DeploymentSetupStackSettingsPolicyFailureDomainsUnion2$outboundSchema: + z.ZodType< + DeploymentSetupStackSettingsPolicyFailureDomainsUnion2$Outbound, + DeploymentSetupStackSettingsPolicyFailureDomainsUnion2 + > = z.union([ + z.lazy(() => + DeploymentSetupStackSettingsPolicyFailureDomains2$outboundSchema + ), + z.any(), + ]); + +export function deploymentSetupStackSettingsPolicyFailureDomainsUnion2ToJSON( + deploymentSetupStackSettingsPolicyFailureDomainsUnion2: + DeploymentSetupStackSettingsPolicyFailureDomainsUnion2, +): string { + return JSON.stringify( + DeploymentSetupStackSettingsPolicyFailureDomainsUnion2$outboundSchema.parse( + deploymentSetupStackSettingsPolicyFailureDomainsUnion2, + ), + ); +} +export function deploymentSetupStackSettingsPolicyFailureDomainsUnion2FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentSetupStackSettingsPolicyFailureDomainsUnion2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentSetupStackSettingsPolicyFailureDomainsUnion2$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentSetupStackSettingsPolicyFailureDomainsUnion2' from JSON`, + ); +} + /** @internal */ export const DeploymentSetupStackSettingsPolicyPoolsAutoscale$inboundSchema: z.ZodType = z .object({ + failure_domains: z.nullable( + z.union([ + z.lazy(() => + DeploymentSetupStackSettingsPolicyFailureDomains2$inboundSchema + ), + z.any(), + ]), + ).optional(), machine: z.nullable(z.string()).optional(), max: z.int(), min: z.int(), mode: z.literal("autoscale"), + }).transform((v) => { + return remap$(v, { + "failure_domains": "failureDomains", + }); }); /** @internal */ export type DeploymentSetupStackSettingsPolicyPoolsAutoscale$Outbound = { + failure_domains?: + | DeploymentSetupStackSettingsPolicyFailureDomains2$Outbound + | any + | null + | undefined; machine?: string | null | undefined; max: number; min: number; @@ -1248,10 +1417,22 @@ export const DeploymentSetupStackSettingsPolicyPoolsAutoscale$outboundSchema: DeploymentSetupStackSettingsPolicyPoolsAutoscale$Outbound, DeploymentSetupStackSettingsPolicyPoolsAutoscale > = z.object({ + failureDomains: z.nullable( + z.union([ + z.lazy(() => + DeploymentSetupStackSettingsPolicyFailureDomains2$outboundSchema + ), + z.any(), + ]), + ).optional(), machine: z.nullable(z.string()).optional(), max: z.int(), min: z.int(), mode: z.literal("autoscale"), + }).transform((v) => { + return remap$(v, { + failureDomains: "failure_domains", + }); }); export function deploymentSetupStackSettingsPolicyPoolsAutoscaleToJSON( @@ -1280,15 +1461,132 @@ export function deploymentSetupStackSettingsPolicyPoolsAutoscaleFromJSON( ); } +/** @internal */ +export const DeploymentSetupStackSettingsPolicyFailureDomains1$inboundSchema: + z.ZodType = z + .object({ + selectedFailureDomains: z.array(z.string()).optional(), + spread: z.int(), + }); +/** @internal */ +export type DeploymentSetupStackSettingsPolicyFailureDomains1$Outbound = { + selectedFailureDomains?: Array | undefined; + spread: number; +}; + +/** @internal */ +export const DeploymentSetupStackSettingsPolicyFailureDomains1$outboundSchema: + z.ZodType< + DeploymentSetupStackSettingsPolicyFailureDomains1$Outbound, + DeploymentSetupStackSettingsPolicyFailureDomains1 + > = z.object({ + selectedFailureDomains: z.array(z.string()).optional(), + spread: z.int(), + }); + +export function deploymentSetupStackSettingsPolicyFailureDomains1ToJSON( + deploymentSetupStackSettingsPolicyFailureDomains1: + DeploymentSetupStackSettingsPolicyFailureDomains1, +): string { + return JSON.stringify( + DeploymentSetupStackSettingsPolicyFailureDomains1$outboundSchema.parse( + deploymentSetupStackSettingsPolicyFailureDomains1, + ), + ); +} +export function deploymentSetupStackSettingsPolicyFailureDomains1FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentSetupStackSettingsPolicyFailureDomains1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentSetupStackSettingsPolicyFailureDomains1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentSetupStackSettingsPolicyFailureDomains1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentSetupStackSettingsPolicyFailureDomainsUnion1$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => + DeploymentSetupStackSettingsPolicyFailureDomains1$inboundSchema + ), + z.any(), + ]); +/** @internal */ +export type DeploymentSetupStackSettingsPolicyFailureDomainsUnion1$Outbound = + | DeploymentSetupStackSettingsPolicyFailureDomains1$Outbound + | any; + +/** @internal */ +export const DeploymentSetupStackSettingsPolicyFailureDomainsUnion1$outboundSchema: + z.ZodType< + DeploymentSetupStackSettingsPolicyFailureDomainsUnion1$Outbound, + DeploymentSetupStackSettingsPolicyFailureDomainsUnion1 + > = z.union([ + z.lazy(() => + DeploymentSetupStackSettingsPolicyFailureDomains1$outboundSchema + ), + z.any(), + ]); + +export function deploymentSetupStackSettingsPolicyFailureDomainsUnion1ToJSON( + deploymentSetupStackSettingsPolicyFailureDomainsUnion1: + DeploymentSetupStackSettingsPolicyFailureDomainsUnion1, +): string { + return JSON.stringify( + DeploymentSetupStackSettingsPolicyFailureDomainsUnion1$outboundSchema.parse( + deploymentSetupStackSettingsPolicyFailureDomainsUnion1, + ), + ); +} +export function deploymentSetupStackSettingsPolicyFailureDomainsUnion1FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentSetupStackSettingsPolicyFailureDomainsUnion1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentSetupStackSettingsPolicyFailureDomainsUnion1$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentSetupStackSettingsPolicyFailureDomainsUnion1' from JSON`, + ); +} + /** @internal */ export const DeploymentSetupStackSettingsPolicyPoolsFixed$inboundSchema: z.ZodType = z.object({ + failure_domains: z.nullable( + z.union([ + z.lazy(() => + DeploymentSetupStackSettingsPolicyFailureDomains1$inboundSchema + ), + z.any(), + ]), + ).optional(), machine: z.nullable(z.string()).optional(), machines: z.int(), mode: z.literal("fixed"), + }).transform((v) => { + return remap$(v, { + "failure_domains": "failureDomains", + }); }); /** @internal */ export type DeploymentSetupStackSettingsPolicyPoolsFixed$Outbound = { + failure_domains?: + | DeploymentSetupStackSettingsPolicyFailureDomains1$Outbound + | any + | null + | undefined; machine?: string | null | undefined; machines: number; mode: "fixed"; @@ -1300,9 +1598,21 @@ export const DeploymentSetupStackSettingsPolicyPoolsFixed$outboundSchema: DeploymentSetupStackSettingsPolicyPoolsFixed$Outbound, DeploymentSetupStackSettingsPolicyPoolsFixed > = z.object({ + failureDomains: z.nullable( + z.union([ + z.lazy(() => + DeploymentSetupStackSettingsPolicyFailureDomains1$outboundSchema + ), + z.any(), + ]), + ).optional(), machine: z.nullable(z.string()).optional(), machines: z.int(), mode: z.literal("fixed"), + }).transform((v) => { + return remap$(v, { + failureDomains: "failure_domains", + }); }); export function deploymentSetupStackSettingsPolicyPoolsFixedToJSON( diff --git a/client-sdks/platform/typescript/src/models/deploymentstats.ts b/client-sdks/platform/typescript/src/models/deploymentstats.ts index 3316c2cf1..173522814 100644 --- a/client-sdks/platform/typescript/src/models/deploymentstats.ts +++ b/client-sdks/platform/typescript/src/models/deploymentstats.ts @@ -7,6 +7,14 @@ import { safeParse } from "../lib/schemas.js"; import { Result as SafeParseResult } from "../types/fp.js"; import { SDKValidationError } from "./errors/sdkvalidationerror.js"; +/** + * Count of deployments introduced through each deployment path. + */ +export type ByOrigin = { + framework?: number | undefined; + remoteOperator?: number | undefined; +}; + export type DeploymentStats = { /** * Total number of deployments matching filters @@ -28,8 +36,28 @@ export type DeploymentStats = { * Count of deployments by pinnedReleaseId among deployments that are pinned. Excludes unpinned deployments. */ byPinnedRelease: { [k: string]: number }; + /** + * Count of deployments introduced through each deployment path. + */ + byOrigin: ByOrigin; }; +/** @internal */ +export const ByOrigin$inboundSchema: z.ZodType = z.object({ + framework: z.number().optional(), + remoteOperator: z.number().optional(), +}); + +export function byOriginFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ByOrigin$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ByOrigin' from JSON`, + ); +} + /** @internal */ export const DeploymentStats$inboundSchema: z.ZodType< DeploymentStats, @@ -40,6 +68,7 @@ export const DeploymentStats$inboundSchema: z.ZodType< byPlatform: z.record(z.string(), z.number()), byCurrentRelease: z.record(z.string(), z.number()), byPinnedRelease: z.record(z.string(), z.number()), + byOrigin: z.lazy(() => ByOrigin$inboundSchema), }); export function deploymentStatsFromJSON( diff --git a/client-sdks/platform/typescript/src/models/deploymentupdateoperationstatus.ts b/client-sdks/platform/typescript/src/models/deploymentupdateoperationstatus.ts new file mode 100644 index 000000000..2b8e1b05c --- /dev/null +++ b/client-sdks/platform/typescript/src/models/deploymentupdateoperationstatus.ts @@ -0,0 +1,22 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { ClosedEnum } from "../types/enums.js"; + +export const DeploymentUpdateOperationStatus = { + Queued: "queued", + Applying: "applying", + Succeeded: "succeeded", + Failed: "failed", + Superseded: "superseded", +} as const; +export type DeploymentUpdateOperationStatus = ClosedEnum< + typeof DeploymentUpdateOperationStatus +>; + +/** @internal */ +export const DeploymentUpdateOperationStatus$inboundSchema: z.ZodEnum< + typeof DeploymentUpdateOperationStatus +> = z.enum(DeploymentUpdateOperationStatus); diff --git a/client-sdks/platform/typescript/src/models/deploymentupdateoperationsummary.ts b/client-sdks/platform/typescript/src/models/deploymentupdateoperationsummary.ts new file mode 100644 index 000000000..de10ad724 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/deploymentupdateoperationsummary.ts @@ -0,0 +1,62 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { + DeploymentUpdateOperationStatus, + DeploymentUpdateOperationStatus$inboundSchema, +} from "./deploymentupdateoperationstatus.js"; +import { + DeploymentUpdateReason, + DeploymentUpdateReason$inboundSchema, +} from "./deploymentupdatereason.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +export type DeploymentUpdateOperationSummary = { + /** + * Unique identifier for the deployment update operation. + */ + id: string; + status: DeploymentUpdateOperationStatus; + reasons: Array; + /** + * Unique identifier for the release. + */ + targetReleaseId: string; + changedKeys: Array; + requestedAt: Date; + startedAt?: Date | null | undefined; + completedAt?: Date | null | undefined; +}; + +/** @internal */ +export const DeploymentUpdateOperationSummary$inboundSchema: z.ZodType< + DeploymentUpdateOperationSummary, + unknown +> = z.object({ + id: z.string(), + status: DeploymentUpdateOperationStatus$inboundSchema, + reasons: z.array(DeploymentUpdateReason$inboundSchema), + targetReleaseId: z.string(), + changedKeys: z.array(z.string()), + requestedAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), + startedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ).optional(), + completedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ).optional(), +}); + +export function deploymentUpdateOperationSummaryFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentUpdateOperationSummary$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentUpdateOperationSummary' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/deploymentupdatereason.ts b/client-sdks/platform/typescript/src/models/deploymentupdatereason.ts new file mode 100644 index 000000000..5ff8c9fc1 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/deploymentupdatereason.ts @@ -0,0 +1,18 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { ClosedEnum } from "../types/enums.js"; + +export const DeploymentUpdateReason = { + Configuration: "configuration", + Redeploy: "redeploy", + Release: "release", +} as const; +export type DeploymentUpdateReason = ClosedEnum; + +/** @internal */ +export const DeploymentUpdateReason$inboundSchema: z.ZodEnum< + typeof DeploymentUpdateReason +> = z.enum(DeploymentUpdateReason); diff --git a/client-sdks/platform/typescript/src/models/directanthropicbinding.ts b/client-sdks/platform/typescript/src/models/directanthropicbinding.ts deleted file mode 100644 index c579b7a3a..000000000 --- a/client-sdks/platform/typescript/src/models/directanthropicbinding.ts +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - */ - -import * as z from "zod/v4"; -import { safeParse } from "../lib/schemas.js"; -import { ClosedEnum } from "../types/enums.js"; -import { Result as SafeParseResult } from "../types/fp.js"; -import { SDKValidationError } from "./errors/sdkvalidationerror.js"; - -export const DirectAnthropicBindingProvider = { - Anthropic: "anthropic", -} as const; -export type DirectAnthropicBindingProvider = ClosedEnum< - typeof DirectAnthropicBindingProvider ->; - -export type DirectAnthropicBinding = { - id: string; - provider: DirectAnthropicBindingProvider; - keyFingerprint: string; - availableProviderModelIds: Array; - verifiedAt: Date; - updatedAt: Date; -}; - -/** @internal */ -export const DirectAnthropicBindingProvider$inboundSchema: z.ZodEnum< - typeof DirectAnthropicBindingProvider -> = z.enum(DirectAnthropicBindingProvider); - -/** @internal */ -export const DirectAnthropicBinding$inboundSchema: z.ZodType< - DirectAnthropicBinding, - unknown -> = z.object({ - id: z.string(), - provider: DirectAnthropicBindingProvider$inboundSchema, - keyFingerprint: z.string(), - availableProviderModelIds: z.array(z.string()), - verifiedAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), - updatedAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), -}); - -export function directAnthropicBindingFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DirectAnthropicBinding$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DirectAnthropicBinding' from JSON`, - ); -} diff --git a/client-sdks/platform/typescript/src/models/directanthropicbindingstate.ts b/client-sdks/platform/typescript/src/models/directanthropicbindingstate.ts deleted file mode 100644 index fa3eb85ce..000000000 --- a/client-sdks/platform/typescript/src/models/directanthropicbindingstate.ts +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - */ - -import * as z from "zod/v4"; -import { safeParse } from "../lib/schemas.js"; -import { Result as SafeParseResult } from "../types/fp.js"; -import { - DirectAnthropicBinding, - DirectAnthropicBinding$inboundSchema, -} from "./directanthropicbinding.js"; -import { SDKValidationError } from "./errors/sdkvalidationerror.js"; - -export type DirectAnthropicBindingState = { - binding: DirectAnthropicBinding | null; -}; - -/** @internal */ -export const DirectAnthropicBindingState$inboundSchema: z.ZodType< - DirectAnthropicBindingState, - unknown -> = z.object({ - binding: z.nullable(DirectAnthropicBinding$inboundSchema), -}); - -export function directAnthropicBindingStateFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DirectAnthropicBindingState$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DirectAnthropicBindingState' from JSON`, - ); -} diff --git a/client-sdks/platform/typescript/src/models/event.ts b/client-sdks/platform/typescript/src/models/event.ts index 856e8086b..4cf075193 100644 --- a/client-sdks/platform/typescript/src/models/event.ts +++ b/client-sdks/platform/typescript/src/models/event.ts @@ -12,7 +12,7 @@ import { ClosedEnum } from "../types/enums.js"; import { Result as SafeParseResult } from "../types/fp.js"; import { SDKValidationError } from "./errors/sdkvalidationerror.js"; -export type DataDeploymentDeletionRequested = { +export type EventDataDeploymentDeletionRequested = { /** * ID of the deployment */ @@ -23,19 +23,19 @@ export type DataDeploymentDeletionRequested = { /** * Type of authenticated principal that requested an event. */ -export const EventKind2 = { +export const EventKind4 = { User: "user", ServiceAccount: "serviceAccount", } as const; /** * Type of authenticated principal that requested an event. */ -export type EventKind2 = ClosedEnum; +export type EventKind4 = ClosedEnum; /** * Authenticated principal that requested a deployment intent event. */ -export type Actor2 = { +export type EventActor4 = { /** * User email when the principal is a user. */ @@ -47,13 +47,13 @@ export type Actor2 = { /** * Type of authenticated principal that requested an event. */ - kind: EventKind2; + kind: EventKind4; }; -export type ActorUnion2 = Actor2 | any; +export type EventActorUnion4 = EventActor4 | any; -export type DataDeploymentEnvironmentUpdated = { - actor?: Actor2 | any | null | undefined; +export type EventDataDeploymentEnvironmentUpdated = { + actor?: EventActor4 | any | null | undefined; /** * Names of the environment variables that changed (added, removed, or modified) */ @@ -65,7 +65,7 @@ export type DataDeploymentEnvironmentUpdated = { type: "DeploymentEnvironmentUpdated"; }; -export type DataDeploymentReleaseUnpinned = { +export type EventDataDeploymentReleaseUnpinned = { /** * ID of the deployment */ @@ -77,7 +77,7 @@ export type DataDeploymentReleaseUnpinned = { type: "DeploymentReleaseUnpinned"; }; -export type DataDeploymentReleasePinned = { +export type EventDataDeploymentReleasePinned = { /** * ID of the deployment */ @@ -93,7 +93,7 @@ export type DataDeploymentReleasePinned = { type: "DeploymentReleasePinned"; }; -export type DataDeploymentRedeployRequested = { +export type EventDataDeploymentRedeployRequested = { /** * ID of the deployment */ @@ -108,19 +108,19 @@ export type DataDeploymentRedeployRequested = { /** * Type of authenticated principal that requested an event. */ -export const EventKind1 = { +export const EventKind3 = { User: "user", ServiceAccount: "serviceAccount", } as const; /** * Type of authenticated principal that requested an event. */ -export type EventKind1 = ClosedEnum; +export type EventKind3 = ClosedEnum; /** * Authenticated principal that requested a deployment intent event. */ -export type Actor1 = { +export type EventActor3 = { /** * User email when the principal is a user. */ @@ -132,10 +132,10 @@ export type Actor1 = { /** * Type of authenticated principal that requested an event. */ - kind: EventKind1; + kind: EventKind3; }; -export type ActorUnion1 = Actor1 | any; +export type EventActorUnion3 = EventActor3 | any; /** * Canonical error container that provides a structured way to represent errors @@ -148,7 +148,7 @@ export type ActorUnion1 = Actor1 | any; * supporting serialization for API responses and detailed error reporting * in distributed systems. */ -export type PreviousError = { +export type EventPreviousError = { /** * A unique identifier for the type of error. * @@ -223,10 +223,10 @@ export type PreviousError = { source?: any | null | undefined; }; -export type PreviousErrorUnion = PreviousError | any; +export type EventPreviousErrorUnion = EventPreviousError | any; -export type DataDeploymentRetryRequested = { - actor?: Actor1 | any | null | undefined; +export type EventDataDeploymentRetryRequested = { + actor?: EventActor3 | any | null | undefined; /** * ID of the release that the failed attempt was targeting, if known */ @@ -235,11 +235,109 @@ export type DataDeploymentRetryRequested = { * ID of the deployment */ deploymentId: string; - previousError?: PreviousError | any | null | undefined; + previousError?: EventPreviousError | any | null | undefined; type: "DeploymentRetryRequested"; }; -export type DataDeploymentDeleted = { +/** + * Type of authenticated principal that requested an event. + */ +export const EventKind2 = { + User: "user", + ServiceAccount: "serviceAccount", +} as const; +/** + * Type of authenticated principal that requested an event. + */ +export type EventKind2 = ClosedEnum; + +/** + * Authenticated principal that requested a deployment intent event. + */ +export type EventActor2 = { + /** + * User email when the principal is a user. + */ + email?: string | null | undefined; + /** + * Stable user or service-account identifier. + */ + id: string; + /** + * Type of authenticated principal that requested an event. + */ + kind: EventKind2; +}; + +export type EventActorUnion2 = EventActor2 | any; + +export type EventDataDeploymentReleaseChannelChanged = { + actor?: EventActor2 | any | null | undefined; + /** + * Newly followed channel + */ + channel: string; + /** + * ID of the deployment + */ + deploymentId: string; + /** + * Previously followed channel + */ + previousChannel: string; + type: "DeploymentReleaseChannelChanged"; +}; + +/** + * Type of authenticated principal that requested an event. + */ +export const EventKind1 = { + User: "user", + ServiceAccount: "serviceAccount", +} as const; +/** + * Type of authenticated principal that requested an event. + */ +export type EventKind1 = ClosedEnum; + +/** + * Authenticated principal that requested a deployment intent event. + */ +export type EventActor1 = { + /** + * User email when the principal is a user. + */ + email?: string | null | undefined; + /** + * Stable user or service-account identifier. + */ + id: string; + /** + * Type of authenticated principal that requested an event. + */ + kind: EventKind1; +}; + +export type EventActorUnion1 = EventActor1 | any; + +export type EventDataReleaseChannelUpdated = { + actor?: EventActor1 | any | null | undefined; + /** + * Name of the channel that moved + */ + channel: string; + /** + * ID of the release that was previously current, if any + */ + previousReleaseId?: string | null | undefined; + /** + * ID of the release that is now current + */ + releaseId: string; + type: "ReleaseChannelUpdated"; +}; + +export type EventDataDeploymentDeleted = { /** * ID of the deployment that was deleted */ @@ -247,7 +345,7 @@ export type DataDeploymentDeleted = { type: "DeploymentDeleted"; }; -export type DataDeploymentRecovered = { +export type EventDataDeploymentRecovered = { /** * ID of the deployment */ @@ -270,7 +368,7 @@ export type DataDeploymentRecovered = { * supporting serialization for API responses and detailed error reporting * in distributed systems. */ -export type DataError2 = { +export type EventDataError2 = { /** * A unique identifier for the type of error. * @@ -345,7 +443,7 @@ export type DataError2 = { source?: any | null | undefined; }; -export type DataDeploymentDegraded = { +export type EventDataDeploymentDegraded = { /** * ID of the deployment */ @@ -361,7 +459,7 @@ export type DataDeploymentDegraded = { * supporting serialization for API responses and detailed error reporting * in distributed systems. */ - error: DataError2; + error: EventDataError2; type: "DeploymentDegraded"; }; @@ -376,7 +474,7 @@ export type DataDeploymentDegraded = { * supporting serialization for API responses and detailed error reporting * in distributed systems. */ -export type DataError1 = { +export type EventDataError1 = { /** * A unique identifier for the type of error. * @@ -461,7 +559,7 @@ export type DataError1 = { * `Updating`, `delete-failed` → `Deleting`. * `refresh-failed` is modelled separately via `DeploymentDegraded`. */ -export const Phase = { +export const EventPhase = { Preflights: "preflights", Provisioning: "provisioning", Updating: "updating", @@ -477,9 +575,9 @@ export const Phase = { * `Updating`, `delete-failed` → `Deleting`. * `refresh-failed` is modelled separately via `DeploymentDegraded`. */ -export type Phase = ClosedEnum; +export type EventPhase = ClosedEnum; -export type DataDeploymentFailed = { +export type EventDataDeploymentFailed = { /** * ID of the release the platform was trying to deploy, if known */ @@ -499,7 +597,7 @@ export type DataDeploymentFailed = { * supporting serialization for API responses and detailed error reporting * in distributed systems. */ - error: DataError1; + error: EventDataError1; /** * Phase of a deployment at which a failure occurred. * @@ -510,11 +608,11 @@ export type DataDeploymentFailed = { * `Updating`, `delete-failed` → `Deleting`. * `refresh-failed` is modelled separately via `DeploymentDegraded`. */ - phase: Phase; + phase: EventPhase; type: "DeploymentFailed"; }; -export type DataDeploymentReleased = { +export type EventDataDeploymentReleased = { /** * ID of the deployment */ @@ -530,7 +628,7 @@ export type DataDeploymentReleased = { type: "DeploymentReleased"; }; -export type DataDeploymentCreated = { +export type EventDataDeploymentCreated = { /** * ID of the deployment group this slot belongs to */ @@ -546,7 +644,7 @@ export type DataDeploymentCreated = { type: "DeploymentCreated"; }; -export type DataEmptyingBuckets = { +export type EventDataEmptyingBuckets = { /** * Names of the S3 buckets being emptied */ @@ -554,7 +652,7 @@ export type DataEmptyingBuckets = { type: "EmptyingBuckets"; }; -export type DataDeletingCloudFormationStack = { +export type EventDataDeletingCloudFormationStack = { /** * Name of the CloudFormation stack */ @@ -566,7 +664,7 @@ export type DataDeletingCloudFormationStack = { type: "DeletingCloudFormationStack"; }; -export type DataImportingStackStateFromCloudFormation = { +export type EventDataImportingStackStateFromCloudFormation = { /** * Name of the CloudFormation stack */ @@ -574,7 +672,7 @@ export type DataImportingStackStateFromCloudFormation = { type: "ImportingStackStateFromCloudFormation"; }; -export type DataAssumingRole = { +export type EventDataAssumingRole = { /** * ARN of the role to assume */ @@ -582,7 +680,7 @@ export type DataAssumingRole = { type: "AssumingRole"; }; -export type DataDeployingCloudFormationStack = { +export type EventDataDeployingCloudFormationStack = { /** * Name of the CloudFormation stack */ @@ -594,7 +692,7 @@ export type DataDeployingCloudFormationStack = { type: "DeployingCloudFormationStack"; }; -export type DataEnsuringDockerRepository = { +export type EventDataEnsuringDockerRepository = { /** * Name of the docker repository */ @@ -602,7 +700,7 @@ export type DataEnsuringDockerRepository = { type: "EnsuringDockerRepository"; }; -export type DataSettingUpPlatformContext = { +export type EventDataSettingUpPlatformContext = { /** * Name of the platform (e.g., "AWS", "GCP") */ @@ -610,7 +708,7 @@ export type DataSettingUpPlatformContext = { type: "SettingUpPlatformContext"; }; -export type DataCleaningUpEnvironment = { +export type EventDataCleaningUpEnvironment = { /** * Name of the stack being cleaned up */ @@ -622,7 +720,7 @@ export type DataCleaningUpEnvironment = { type: "CleaningUpEnvironment"; }; -export type DataCleaningUpStack = { +export type EventDataCleaningUpStack = { /** * Name of the stack being cleaned up */ @@ -634,7 +732,7 @@ export type DataCleaningUpStack = { type: "CleaningUpStack"; }; -export type DataRunningTestWorker = { +export type EventDataRunningTestWorker = { /** * Name of the stack being tested */ @@ -642,7 +740,7 @@ export type DataRunningTestWorker = { type: "RunningTestWorker"; }; -export type DataDeployingStack = { +export type EventDataDeployingStack = { /** * Name of the stack being deployed */ @@ -650,7 +748,7 @@ export type DataDeployingStack = { type: "DeployingStack"; }; -export type DataPreparingEnvironment = { +export type EventDataPreparingEnvironment = { /** * Name of the deployment strategy being used */ @@ -658,7 +756,7 @@ export type DataPreparingEnvironment = { type: "PreparingEnvironment"; }; -export type DataDebuggingAgent = { +export type EventDataDebuggingAgent = { /** * ID of the agent being debugged */ @@ -670,7 +768,7 @@ export type DataDebuggingAgent = { type: "DebuggingAgent"; }; -export type DataDeletingAgent = { +export type EventDataDeletingAgent = { /** * ID of the agent being deleted */ @@ -682,7 +780,7 @@ export type DataDeletingAgent = { type: "DeletingAgent"; }; -export type DataUpdatingAgent = { +export type EventDataUpdatingAgent = { /** * ID of the agent being updated */ @@ -694,7 +792,7 @@ export type DataUpdatingAgent = { type: "UpdatingAgent"; }; -export type DataProvisioningAgent = { +export type EventDataProvisioningAgent = { /** * ID of the agent being provisioned */ @@ -706,7 +804,7 @@ export type DataProvisioningAgent = { type: "ProvisioningAgent"; }; -export type DataGeneratingTemplate = { +export type EventDataGeneratingTemplate = { /** * Platform for which the template is being generated */ @@ -714,7 +812,7 @@ export type DataGeneratingTemplate = { type: "GeneratingTemplate"; }; -export type DataGeneratingCloudFormationTemplate = { +export type EventDataGeneratingCloudFormationTemplate = { type: "GeneratingCloudFormationTemplate"; }; @@ -793,7 +891,7 @@ export type EventDependency = { * supporting serialization for API responses and detailed error reporting * in distributed systems. */ -export type ErrorNextState = { +export type EventErrorNextState = { /** * A unique identifier for the type of error. * @@ -868,7 +966,7 @@ export type ErrorNextState = { source?: any | null | undefined; }; -export type NextStateErrorUnion = ErrorNextState | any; +export type EventNextStateErrorUnion = EventErrorNextState | any; /** * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. @@ -959,7 +1057,7 @@ export type EventResources = { * This preserves the full dependency information from the stack definition. */ dependencies?: Array | undefined; - error?: ErrorNextState | any | null | undefined; + error?: EventErrorNextState | any | null | undefined; /** * Stores the controller state that failed, used for manual retry operations. * @@ -997,7 +1095,7 @@ export type EventResources = { /** * Represents the collective state of all resources in a stack, including platform and pending actions. */ -export type NextState = { +export type EventNextState = { /** * Represents the target cloud platform. */ @@ -1012,11 +1110,11 @@ export type NextState = { resources: { [k: string]: EventResources }; }; -export type DataStackStep = { +export type EventDataStackStep = { /** * Represents the collective state of all resources in a stack, including platform and pending actions. */ - nextState: NextState; + nextState: EventNextState; /** * An suggested duration to wait before executing the next step. */ @@ -1024,7 +1122,7 @@ export type DataStackStep = { type: "StackStep"; }; -export type DataCompilingCode = { +export type EventDataCompilingCode = { /** * Language being compiled (rust, typescript, etc.) */ @@ -1036,7 +1134,7 @@ export type DataCompilingCode = { type: "CompilingCode"; }; -export type DataCreatingRelease = { +export type EventDataCreatingRelease = { /** * Project name */ @@ -1044,7 +1142,7 @@ export type DataCreatingRelease = { type: "CreatingRelease"; }; -export type DataPushingResource = { +export type EventDataPushingResource = { /** * Name of the resource being pushed */ @@ -1056,7 +1154,7 @@ export type DataPushingResource = { type: "PushingResource"; }; -export type DataPushingStack = { +export type EventDataPushingStack = { /** * Human-readable destination for pushed images */ @@ -1075,7 +1173,7 @@ export type DataPushingStack = { /** * Progress information for image push operations */ -export type Progress = { +export type EventProgress = { /** * Bytes uploaded so far */ @@ -1098,18 +1196,18 @@ export type Progress = { totalLayers: number; }; -export type ProgressUnion = Progress | any; +export type EventProgressUnion = EventProgress | any; -export type DataPushingImage = { +export type EventDataPushingImage = { /** * Name of the image being pushed */ image: string; - progress?: Progress | any | null | undefined; + progress?: EventProgress | any | null | undefined; type: "PushingImage"; }; -export type DataBuildingImage = { +export type EventDataBuildingImage = { /** * Name of the image being built */ @@ -1117,7 +1215,7 @@ export type DataBuildingImage = { type: "BuildingImage"; }; -export type DataBuildingResource = { +export type EventDataBuildingResource = { /** * All resource names sharing this build (for deduped container groups) */ @@ -1133,7 +1231,7 @@ export type DataBuildingResource = { type: "BuildingResource"; }; -export type DataDownloadingAlienRuntime = { +export type EventDataDownloadingAlienRuntime = { /** * Target triple for the runtime */ @@ -1145,7 +1243,7 @@ export type DataDownloadingAlienRuntime = { url: string; }; -export type DataRunningPreflights = { +export type EventDataRunningPreflights = { /** * Platform being targeted */ @@ -1157,7 +1255,7 @@ export type DataRunningPreflights = { type: "RunningPreflights"; }; -export type DataBuildingStack = { +export type EventDataBuildingStack = { /** * Name of the stack being built */ @@ -1165,73 +1263,75 @@ export type DataBuildingStack = { type: "BuildingStack"; }; -export type DataFinished = { +export type EventDataFinished = { type: "Finished"; }; -export type DataLoadingConfiguration = { +export type EventDataLoadingConfiguration = { type: "LoadingConfiguration"; }; export type EventDataUnion = - | DataLoadingConfiguration - | DataFinished - | DataBuildingStack - | DataRunningPreflights - | DataDownloadingAlienRuntime - | DataBuildingResource - | DataBuildingImage - | DataPushingImage - | DataPushingStack - | DataPushingResource - | DataCreatingRelease - | DataCompilingCode - | DataStackStep - | DataGeneratingCloudFormationTemplate - | DataGeneratingTemplate - | DataProvisioningAgent - | DataUpdatingAgent - | DataDeletingAgent - | DataDebuggingAgent - | DataPreparingEnvironment - | DataDeployingStack - | DataRunningTestWorker - | DataCleaningUpStack - | DataCleaningUpEnvironment - | DataSettingUpPlatformContext - | DataEnsuringDockerRepository - | DataDeployingCloudFormationStack - | DataAssumingRole - | DataImportingStackStateFromCloudFormation - | DataDeletingCloudFormationStack - | DataEmptyingBuckets - | DataDeploymentCreated - | DataDeploymentReleased - | DataDeploymentFailed - | DataDeploymentDegraded - | DataDeploymentRecovered - | DataDeploymentDeleted - | DataDeploymentRetryRequested - | DataDeploymentRedeployRequested - | DataDeploymentReleasePinned - | DataDeploymentReleaseUnpinned - | DataDeploymentEnvironmentUpdated - | DataDeploymentDeletionRequested; - -export const StateSuccess = { + | EventDataLoadingConfiguration + | EventDataFinished + | EventDataBuildingStack + | EventDataRunningPreflights + | EventDataDownloadingAlienRuntime + | EventDataBuildingResource + | EventDataBuildingImage + | EventDataPushingImage + | EventDataPushingStack + | EventDataPushingResource + | EventDataCreatingRelease + | EventDataCompilingCode + | EventDataStackStep + | EventDataGeneratingCloudFormationTemplate + | EventDataGeneratingTemplate + | EventDataProvisioningAgent + | EventDataUpdatingAgent + | EventDataDeletingAgent + | EventDataDebuggingAgent + | EventDataPreparingEnvironment + | EventDataDeployingStack + | EventDataRunningTestWorker + | EventDataCleaningUpStack + | EventDataCleaningUpEnvironment + | EventDataSettingUpPlatformContext + | EventDataEnsuringDockerRepository + | EventDataDeployingCloudFormationStack + | EventDataAssumingRole + | EventDataImportingStackStateFromCloudFormation + | EventDataDeletingCloudFormationStack + | EventDataEmptyingBuckets + | EventDataDeploymentCreated + | EventDataDeploymentReleased + | EventDataDeploymentFailed + | EventDataDeploymentDegraded + | EventDataDeploymentRecovered + | EventDataDeploymentDeleted + | EventDataReleaseChannelUpdated + | EventDataDeploymentReleaseChannelChanged + | EventDataDeploymentRetryRequested + | EventDataDeploymentRedeployRequested + | EventDataDeploymentReleasePinned + | EventDataDeploymentReleaseUnpinned + | EventDataDeploymentEnvironmentUpdated + | EventDataDeploymentDeletionRequested; + +export const EventStateSuccess = { Success: "success", } as const; -export type StateSuccess = ClosedEnum; +export type EventStateSuccess = ClosedEnum; -export const StateStarted = { +export const EventStateStarted = { Started: "started", } as const; -export type StateStarted = ClosedEnum; +export type EventStateStarted = ClosedEnum; -export const StateNone = { +export const EventStateNone = { None: "none", } as const; -export type StateNone = ClosedEnum; +export type EventStateNone = ClosedEnum; /** * Canonical error container that provides a structured way to represent errors @@ -1244,7 +1344,7 @@ export type StateNone = ClosedEnum; * supporting serialization for API responses and detailed error reporting * in distributed systems. */ -export type ErrorFailed = { +export type EventErrorFailed = { /** * A unique identifier for the type of error. * @@ -1319,26 +1419,30 @@ export type ErrorFailed = { source?: any | null | undefined; }; -export type FailedErrorUnion = ErrorFailed | any; +export type EventFailedErrorUnion = EventErrorFailed | any; /** * Event failed with an error */ -export type Failed = { - error?: ErrorFailed | any | null | undefined; +export type EventFailed = { + error?: EventErrorFailed | any | null | undefined; }; export type EventState = { /** * Event failed with an error */ - failed: Failed; + failed: EventFailed; }; /** * Represents the state of an event */ -export type State = EventState | StateNone | StateStarted | StateSuccess; +export type EventStateUnion = + | EventState + | EventStateNone + | EventStateStarted + | EventStateSuccess; export type Event = { /** @@ -1358,53 +1462,55 @@ export type Event = { */ debugSessionId?: string | null | undefined; data: - | DataLoadingConfiguration - | DataFinished - | DataBuildingStack - | DataRunningPreflights - | DataDownloadingAlienRuntime - | DataBuildingResource - | DataBuildingImage - | DataPushingImage - | DataPushingStack - | DataPushingResource - | DataCreatingRelease - | DataCompilingCode - | DataStackStep - | DataGeneratingCloudFormationTemplate - | DataGeneratingTemplate - | DataProvisioningAgent - | DataUpdatingAgent - | DataDeletingAgent - | DataDebuggingAgent - | DataPreparingEnvironment - | DataDeployingStack - | DataRunningTestWorker - | DataCleaningUpStack - | DataCleaningUpEnvironment - | DataSettingUpPlatformContext - | DataEnsuringDockerRepository - | DataDeployingCloudFormationStack - | DataAssumingRole - | DataImportingStackStateFromCloudFormation - | DataDeletingCloudFormationStack - | DataEmptyingBuckets - | DataDeploymentCreated - | DataDeploymentReleased - | DataDeploymentFailed - | DataDeploymentDegraded - | DataDeploymentRecovered - | DataDeploymentDeleted - | DataDeploymentRetryRequested - | DataDeploymentRedeployRequested - | DataDeploymentReleasePinned - | DataDeploymentReleaseUnpinned - | DataDeploymentEnvironmentUpdated - | DataDeploymentDeletionRequested; + | EventDataLoadingConfiguration + | EventDataFinished + | EventDataBuildingStack + | EventDataRunningPreflights + | EventDataDownloadingAlienRuntime + | EventDataBuildingResource + | EventDataBuildingImage + | EventDataPushingImage + | EventDataPushingStack + | EventDataPushingResource + | EventDataCreatingRelease + | EventDataCompilingCode + | EventDataStackStep + | EventDataGeneratingCloudFormationTemplate + | EventDataGeneratingTemplate + | EventDataProvisioningAgent + | EventDataUpdatingAgent + | EventDataDeletingAgent + | EventDataDebuggingAgent + | EventDataPreparingEnvironment + | EventDataDeployingStack + | EventDataRunningTestWorker + | EventDataCleaningUpStack + | EventDataCleaningUpEnvironment + | EventDataSettingUpPlatformContext + | EventDataEnsuringDockerRepository + | EventDataDeployingCloudFormationStack + | EventDataAssumingRole + | EventDataImportingStackStateFromCloudFormation + | EventDataDeletingCloudFormationStack + | EventDataEmptyingBuckets + | EventDataDeploymentCreated + | EventDataDeploymentReleased + | EventDataDeploymentFailed + | EventDataDeploymentDegraded + | EventDataDeploymentRecovered + | EventDataDeploymentDeleted + | EventDataReleaseChannelUpdated + | EventDataDeploymentReleaseChannelChanged + | EventDataDeploymentRetryRequested + | EventDataDeploymentRedeployRequested + | EventDataDeploymentReleasePinned + | EventDataDeploymentReleaseUnpinned + | EventDataDeploymentEnvironmentUpdated + | EventDataDeploymentDeletionRequested; /** * Represents the state of an event */ - state: EventState | StateNone | StateStarted | StateSuccess; + state: EventState | EventStateNone | EventStateStarted | EventStateSuccess; /** * Unique identifier for the project. */ @@ -1417,85 +1523,90 @@ export type Event = { }; /** @internal */ -export const DataDeploymentDeletionRequested$inboundSchema: z.ZodType< - DataDeploymentDeletionRequested, +export const EventDataDeploymentDeletionRequested$inboundSchema: z.ZodType< + EventDataDeploymentDeletionRequested, unknown > = z.object({ deploymentId: z.string(), type: z.literal("DeploymentDeletionRequested"), }); -export function dataDeploymentDeletionRequestedFromJSON( +export function eventDataDeploymentDeletionRequestedFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DataDeploymentDeletionRequested$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataDeploymentDeletionRequested' from JSON`, + (x) => + EventDataDeploymentDeletionRequested$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventDataDeploymentDeletionRequested' from JSON`, ); } /** @internal */ -export const EventKind2$inboundSchema: z.ZodEnum = z.enum( - EventKind2, +export const EventKind4$inboundSchema: z.ZodEnum = z.enum( + EventKind4, ); /** @internal */ -export const Actor2$inboundSchema: z.ZodType = z.object({ - email: z.nullable(z.string()).optional(), - id: z.string(), - kind: EventKind2$inboundSchema, -}); +export const EventActor4$inboundSchema: z.ZodType = z + .object({ + email: z.nullable(z.string()).optional(), + id: z.string(), + kind: EventKind4$inboundSchema, + }); -export function actor2FromJSON( +export function eventActor4FromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => Actor2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Actor2' from JSON`, + (x) => EventActor4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventActor4' from JSON`, ); } /** @internal */ -export const ActorUnion2$inboundSchema: z.ZodType = z - .union([z.lazy(() => Actor2$inboundSchema), z.any()]); +export const EventActorUnion4$inboundSchema: z.ZodType< + EventActorUnion4, + unknown +> = z.union([z.lazy(() => EventActor4$inboundSchema), z.any()]); -export function actorUnion2FromJSON( +export function eventActorUnion4FromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => ActorUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ActorUnion2' from JSON`, + (x) => EventActorUnion4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventActorUnion4' from JSON`, ); } /** @internal */ -export const DataDeploymentEnvironmentUpdated$inboundSchema: z.ZodType< - DataDeploymentEnvironmentUpdated, +export const EventDataDeploymentEnvironmentUpdated$inboundSchema: z.ZodType< + EventDataDeploymentEnvironmentUpdated, unknown > = z.object({ - actor: z.nullable(z.union([z.lazy(() => Actor2$inboundSchema), z.any()])) + actor: z.nullable(z.union([z.lazy(() => EventActor4$inboundSchema), z.any()])) .optional(), changedKeys: z.array(z.string()), deploymentId: z.string(), type: z.literal("DeploymentEnvironmentUpdated"), }); -export function dataDeploymentEnvironmentUpdatedFromJSON( +export function eventDataDeploymentEnvironmentUpdatedFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DataDeploymentEnvironmentUpdated$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataDeploymentEnvironmentUpdated' from JSON`, + (x) => + EventDataDeploymentEnvironmentUpdated$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventDataDeploymentEnvironmentUpdated' from JSON`, ); } /** @internal */ -export const DataDeploymentReleaseUnpinned$inboundSchema: z.ZodType< - DataDeploymentReleaseUnpinned, +export const EventDataDeploymentReleaseUnpinned$inboundSchema: z.ZodType< + EventDataDeploymentReleaseUnpinned, unknown > = z.object({ deploymentId: z.string(), @@ -1503,19 +1614,20 @@ export const DataDeploymentReleaseUnpinned$inboundSchema: z.ZodType< type: z.literal("DeploymentReleaseUnpinned"), }); -export function dataDeploymentReleaseUnpinnedFromJSON( +export function eventDataDeploymentReleaseUnpinnedFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DataDeploymentReleaseUnpinned$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataDeploymentReleaseUnpinned' from JSON`, + (x) => + EventDataDeploymentReleaseUnpinned$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventDataDeploymentReleaseUnpinned' from JSON`, ); } /** @internal */ -export const DataDeploymentReleasePinned$inboundSchema: z.ZodType< - DataDeploymentReleasePinned, +export const EventDataDeploymentReleasePinned$inboundSchema: z.ZodType< + EventDataDeploymentReleasePinned, unknown > = z.object({ deploymentId: z.string(), @@ -1524,19 +1636,19 @@ export const DataDeploymentReleasePinned$inboundSchema: z.ZodType< type: z.literal("DeploymentReleasePinned"), }); -export function dataDeploymentReleasePinnedFromJSON( +export function eventDataDeploymentReleasePinnedFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DataDeploymentReleasePinned$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataDeploymentReleasePinned' from JSON`, + (x) => EventDataDeploymentReleasePinned$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventDataDeploymentReleasePinned' from JSON`, ); } /** @internal */ -export const DataDeploymentRedeployRequested$inboundSchema: z.ZodType< - DataDeploymentRedeployRequested, +export const EventDataDeploymentRedeployRequested$inboundSchema: z.ZodType< + EventDataDeploymentRedeployRequested, unknown > = z.object({ deploymentId: z.string(), @@ -1544,138 +1656,274 @@ export const DataDeploymentRedeployRequested$inboundSchema: z.ZodType< type: z.literal("DeploymentRedeployRequested"), }); -export function dataDeploymentRedeployRequestedFromJSON( +export function eventDataDeploymentRedeployRequestedFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DataDeploymentRedeployRequested$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataDeploymentRedeployRequested' from JSON`, + (x) => + EventDataDeploymentRedeployRequested$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventDataDeploymentRedeployRequested' from JSON`, ); } /** @internal */ -export const EventKind1$inboundSchema: z.ZodEnum = z.enum( - EventKind1, +export const EventKind3$inboundSchema: z.ZodEnum = z.enum( + EventKind3, ); /** @internal */ -export const Actor1$inboundSchema: z.ZodType = z.object({ - email: z.nullable(z.string()).optional(), - id: z.string(), - kind: EventKind1$inboundSchema, -}); +export const EventActor3$inboundSchema: z.ZodType = z + .object({ + email: z.nullable(z.string()).optional(), + id: z.string(), + kind: EventKind3$inboundSchema, + }); -export function actor1FromJSON( +export function eventActor3FromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => Actor1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Actor1' from JSON`, + (x) => EventActor3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventActor3' from JSON`, ); } /** @internal */ -export const ActorUnion1$inboundSchema: z.ZodType = z - .union([z.lazy(() => Actor1$inboundSchema), z.any()]); +export const EventActorUnion3$inboundSchema: z.ZodType< + EventActorUnion3, + unknown +> = z.union([z.lazy(() => EventActor3$inboundSchema), z.any()]); -export function actorUnion1FromJSON( +export function eventActorUnion3FromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => ActorUnion1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ActorUnion1' from JSON`, + (x) => EventActorUnion3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventActorUnion3' from JSON`, ); } /** @internal */ -export const PreviousError$inboundSchema: z.ZodType = z - .object({ - code: z.string(), - context: z.nullable(z.any()).optional(), - hint: z.nullable(z.string()).optional(), - httpStatusCode: z.nullable(z.int()).optional(), - internal: z.boolean(), - message: z.string(), - retryable: z.boolean().default(false), - source: z.nullable(z.any()).optional(), - }); +export const EventPreviousError$inboundSchema: z.ZodType< + EventPreviousError, + unknown +> = z.object({ + code: z.string(), + context: z.nullable(z.any()).optional(), + hint: z.nullable(z.string()).optional(), + httpStatusCode: z.nullable(z.int()).optional(), + internal: z.boolean(), + message: z.string(), + retryable: z.boolean().default(false), + source: z.nullable(z.any()).optional(), +}); -export function previousErrorFromJSON( +export function eventPreviousErrorFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => PreviousError$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'PreviousError' from JSON`, + (x) => EventPreviousError$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventPreviousError' from JSON`, ); } /** @internal */ -export const PreviousErrorUnion$inboundSchema: z.ZodType< - PreviousErrorUnion, +export const EventPreviousErrorUnion$inboundSchema: z.ZodType< + EventPreviousErrorUnion, unknown -> = z.union([z.lazy(() => PreviousError$inboundSchema), z.any()]); +> = z.union([z.lazy(() => EventPreviousError$inboundSchema), z.any()]); -export function previousErrorUnionFromJSON( +export function eventPreviousErrorUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => PreviousErrorUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'PreviousErrorUnion' from JSON`, + (x) => EventPreviousErrorUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventPreviousErrorUnion' from JSON`, ); } /** @internal */ -export const DataDeploymentRetryRequested$inboundSchema: z.ZodType< - DataDeploymentRetryRequested, +export const EventDataDeploymentRetryRequested$inboundSchema: z.ZodType< + EventDataDeploymentRetryRequested, unknown > = z.object({ - actor: z.nullable(z.union([z.lazy(() => Actor1$inboundSchema), z.any()])) + actor: z.nullable(z.union([z.lazy(() => EventActor3$inboundSchema), z.any()])) .optional(), attemptedReleaseId: z.nullable(z.string()).optional(), deploymentId: z.string(), previousError: z.nullable( - z.union([z.lazy(() => PreviousError$inboundSchema), z.any()]), + z.union([z.lazy(() => EventPreviousError$inboundSchema), z.any()]), ).optional(), type: z.literal("DeploymentRetryRequested"), }); -export function dataDeploymentRetryRequestedFromJSON( +export function eventDataDeploymentRetryRequestedFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => EventDataDeploymentRetryRequested$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventDataDeploymentRetryRequested' from JSON`, + ); +} + +/** @internal */ +export const EventKind2$inboundSchema: z.ZodEnum = z.enum( + EventKind2, +); + +/** @internal */ +export const EventActor2$inboundSchema: z.ZodType = z + .object({ + email: z.nullable(z.string()).optional(), + id: z.string(), + kind: EventKind2$inboundSchema, + }); + +export function eventActor2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => EventActor2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventActor2' from JSON`, + ); +} + +/** @internal */ +export const EventActorUnion2$inboundSchema: z.ZodType< + EventActorUnion2, + unknown +> = z.union([z.lazy(() => EventActor2$inboundSchema), z.any()]); + +export function eventActorUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => EventActorUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventActorUnion2' from JSON`, + ); +} + +/** @internal */ +export const EventDataDeploymentReleaseChannelChanged$inboundSchema: z.ZodType< + EventDataDeploymentReleaseChannelChanged, + unknown +> = z.object({ + actor: z.nullable(z.union([z.lazy(() => EventActor2$inboundSchema), z.any()])) + .optional(), + channel: z.string(), + deploymentId: z.string(), + previousChannel: z.string(), + type: z.literal("DeploymentReleaseChannelChanged"), +}); + +export function eventDataDeploymentReleaseChannelChangedFromJSON( + jsonString: string, +): SafeParseResult< + EventDataDeploymentReleaseChannelChanged, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + EventDataDeploymentReleaseChannelChanged$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'EventDataDeploymentReleaseChannelChanged' from JSON`, + ); +} + +/** @internal */ +export const EventKind1$inboundSchema: z.ZodEnum = z.enum( + EventKind1, +); + +/** @internal */ +export const EventActor1$inboundSchema: z.ZodType = z + .object({ + email: z.nullable(z.string()).optional(), + id: z.string(), + kind: EventKind1$inboundSchema, + }); + +export function eventActor1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => EventActor1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventActor1' from JSON`, + ); +} + +/** @internal */ +export const EventActorUnion1$inboundSchema: z.ZodType< + EventActorUnion1, + unknown +> = z.union([z.lazy(() => EventActor1$inboundSchema), z.any()]); + +export function eventActorUnion1FromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DataDeploymentRetryRequested$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataDeploymentRetryRequested' from JSON`, + (x) => EventActorUnion1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventActorUnion1' from JSON`, ); } /** @internal */ -export const DataDeploymentDeleted$inboundSchema: z.ZodType< - DataDeploymentDeleted, +export const EventDataReleaseChannelUpdated$inboundSchema: z.ZodType< + EventDataReleaseChannelUpdated, + unknown +> = z.object({ + actor: z.nullable(z.union([z.lazy(() => EventActor1$inboundSchema), z.any()])) + .optional(), + channel: z.string(), + previousReleaseId: z.nullable(z.string()).optional(), + releaseId: z.string(), + type: z.literal("ReleaseChannelUpdated"), +}); + +export function eventDataReleaseChannelUpdatedFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => EventDataReleaseChannelUpdated$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventDataReleaseChannelUpdated' from JSON`, + ); +} + +/** @internal */ +export const EventDataDeploymentDeleted$inboundSchema: z.ZodType< + EventDataDeploymentDeleted, unknown > = z.object({ deploymentId: z.string(), type: z.literal("DeploymentDeleted"), }); -export function dataDeploymentDeletedFromJSON( +export function eventDataDeploymentDeletedFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DataDeploymentDeleted$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataDeploymentDeleted' from JSON`, + (x) => EventDataDeploymentDeleted$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventDataDeploymentDeleted' from JSON`, ); } /** @internal */ -export const DataDeploymentRecovered$inboundSchema: z.ZodType< - DataDeploymentRecovered, +export const EventDataDeploymentRecovered$inboundSchema: z.ZodType< + EventDataDeploymentRecovered, unknown > = z.object({ deploymentId: z.string(), @@ -1683,110 +1931,116 @@ export const DataDeploymentRecovered$inboundSchema: z.ZodType< type: z.literal("DeploymentRecovered"), }); -export function dataDeploymentRecoveredFromJSON( +export function eventDataDeploymentRecoveredFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DataDeploymentRecovered$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataDeploymentRecovered' from JSON`, + (x) => EventDataDeploymentRecovered$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventDataDeploymentRecovered' from JSON`, ); } /** @internal */ -export const DataError2$inboundSchema: z.ZodType = z - .object({ - code: z.string(), - context: z.nullable(z.any()).optional(), - hint: z.nullable(z.string()).optional(), - httpStatusCode: z.nullable(z.int()).optional(), - internal: z.boolean(), - message: z.string(), - retryable: z.boolean().default(false), - source: z.nullable(z.any()).optional(), - }); +export const EventDataError2$inboundSchema: z.ZodType< + EventDataError2, + unknown +> = z.object({ + code: z.string(), + context: z.nullable(z.any()).optional(), + hint: z.nullable(z.string()).optional(), + httpStatusCode: z.nullable(z.int()).optional(), + internal: z.boolean(), + message: z.string(), + retryable: z.boolean().default(false), + source: z.nullable(z.any()).optional(), +}); -export function dataError2FromJSON( +export function eventDataError2FromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DataError2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataError2' from JSON`, + (x) => EventDataError2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventDataError2' from JSON`, ); } /** @internal */ -export const DataDeploymentDegraded$inboundSchema: z.ZodType< - DataDeploymentDegraded, +export const EventDataDeploymentDegraded$inboundSchema: z.ZodType< + EventDataDeploymentDegraded, unknown > = z.object({ deploymentId: z.string(), - error: z.lazy(() => DataError2$inboundSchema), + error: z.lazy(() => EventDataError2$inboundSchema), type: z.literal("DeploymentDegraded"), }); -export function dataDeploymentDegradedFromJSON( +export function eventDataDeploymentDegradedFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DataDeploymentDegraded$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataDeploymentDegraded' from JSON`, + (x) => EventDataDeploymentDegraded$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventDataDeploymentDegraded' from JSON`, ); } /** @internal */ -export const DataError1$inboundSchema: z.ZodType = z - .object({ - code: z.string(), - context: z.nullable(z.any()).optional(), - hint: z.nullable(z.string()).optional(), - httpStatusCode: z.nullable(z.int()).optional(), - internal: z.boolean(), - message: z.string(), - retryable: z.boolean().default(false), - source: z.nullable(z.any()).optional(), - }); +export const EventDataError1$inboundSchema: z.ZodType< + EventDataError1, + unknown +> = z.object({ + code: z.string(), + context: z.nullable(z.any()).optional(), + hint: z.nullable(z.string()).optional(), + httpStatusCode: z.nullable(z.int()).optional(), + internal: z.boolean(), + message: z.string(), + retryable: z.boolean().default(false), + source: z.nullable(z.any()).optional(), +}); -export function dataError1FromJSON( +export function eventDataError1FromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DataError1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataError1' from JSON`, + (x) => EventDataError1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventDataError1' from JSON`, ); } /** @internal */ -export const Phase$inboundSchema: z.ZodEnum = z.enum(Phase); +export const EventPhase$inboundSchema: z.ZodEnum = z.enum( + EventPhase, +); /** @internal */ -export const DataDeploymentFailed$inboundSchema: z.ZodType< - DataDeploymentFailed, +export const EventDataDeploymentFailed$inboundSchema: z.ZodType< + EventDataDeploymentFailed, unknown > = z.object({ attemptedReleaseId: z.nullable(z.string()).optional(), deploymentId: z.string(), - error: z.lazy(() => DataError1$inboundSchema), - phase: Phase$inboundSchema, + error: z.lazy(() => EventDataError1$inboundSchema), + phase: EventPhase$inboundSchema, type: z.literal("DeploymentFailed"), }); -export function dataDeploymentFailedFromJSON( +export function eventDataDeploymentFailedFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DataDeploymentFailed$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataDeploymentFailed' from JSON`, + (x) => EventDataDeploymentFailed$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventDataDeploymentFailed' from JSON`, ); } /** @internal */ -export const DataDeploymentReleased$inboundSchema: z.ZodType< - DataDeploymentReleased, +export const EventDataDeploymentReleased$inboundSchema: z.ZodType< + EventDataDeploymentReleased, unknown > = z.object({ deploymentId: z.string(), @@ -1795,19 +2049,19 @@ export const DataDeploymentReleased$inboundSchema: z.ZodType< type: z.literal("DeploymentReleased"), }); -export function dataDeploymentReleasedFromJSON( +export function eventDataDeploymentReleasedFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DataDeploymentReleased$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataDeploymentReleased' from JSON`, + (x) => EventDataDeploymentReleased$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventDataDeploymentReleased' from JSON`, ); } /** @internal */ -export const DataDeploymentCreated$inboundSchema: z.ZodType< - DataDeploymentCreated, +export const EventDataDeploymentCreated$inboundSchema: z.ZodType< + EventDataDeploymentCreated, unknown > = z.object({ deploymentGroupId: z.string(), @@ -1816,38 +2070,38 @@ export const DataDeploymentCreated$inboundSchema: z.ZodType< type: z.literal("DeploymentCreated"), }); -export function dataDeploymentCreatedFromJSON( +export function eventDataDeploymentCreatedFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DataDeploymentCreated$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataDeploymentCreated' from JSON`, + (x) => EventDataDeploymentCreated$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventDataDeploymentCreated' from JSON`, ); } /** @internal */ -export const DataEmptyingBuckets$inboundSchema: z.ZodType< - DataEmptyingBuckets, +export const EventDataEmptyingBuckets$inboundSchema: z.ZodType< + EventDataEmptyingBuckets, unknown > = z.object({ bucketNames: z.array(z.string()), type: z.literal("EmptyingBuckets"), }); -export function dataEmptyingBucketsFromJSON( +export function eventDataEmptyingBucketsFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DataEmptyingBuckets$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataEmptyingBuckets' from JSON`, + (x) => EventDataEmptyingBuckets$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventDataEmptyingBuckets' from JSON`, ); } /** @internal */ -export const DataDeletingCloudFormationStack$inboundSchema: z.ZodType< - DataDeletingCloudFormationStack, +export const EventDataDeletingCloudFormationStack$inboundSchema: z.ZodType< + EventDataDeletingCloudFormationStack, unknown > = z.object({ cfnStackName: z.string(), @@ -1855,63 +2109,64 @@ export const DataDeletingCloudFormationStack$inboundSchema: z.ZodType< type: z.literal("DeletingCloudFormationStack"), }); -export function dataDeletingCloudFormationStackFromJSON( +export function eventDataDeletingCloudFormationStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DataDeletingCloudFormationStack$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataDeletingCloudFormationStack' from JSON`, + (x) => + EventDataDeletingCloudFormationStack$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventDataDeletingCloudFormationStack' from JSON`, ); } /** @internal */ -export const DataImportingStackStateFromCloudFormation$inboundSchema: z.ZodType< - DataImportingStackStateFromCloudFormation, - unknown -> = z.object({ - cfnStackName: z.string(), - type: z.literal("ImportingStackStateFromCloudFormation"), -}); +export const EventDataImportingStackStateFromCloudFormation$inboundSchema: + z.ZodType = z.object( + { + cfnStackName: z.string(), + type: z.literal("ImportingStackStateFromCloudFormation"), + }, + ); -export function dataImportingStackStateFromCloudFormationFromJSON( +export function eventDataImportingStackStateFromCloudFormationFromJSON( jsonString: string, ): SafeParseResult< - DataImportingStackStateFromCloudFormation, + EventDataImportingStackStateFromCloudFormation, SDKValidationError > { return safeParse( jsonString, (x) => - DataImportingStackStateFromCloudFormation$inboundSchema.parse( + EventDataImportingStackStateFromCloudFormation$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'DataImportingStackStateFromCloudFormation' from JSON`, + `Failed to parse 'EventDataImportingStackStateFromCloudFormation' from JSON`, ); } /** @internal */ -export const DataAssumingRole$inboundSchema: z.ZodType< - DataAssumingRole, +export const EventDataAssumingRole$inboundSchema: z.ZodType< + EventDataAssumingRole, unknown > = z.object({ roleArn: z.string(), type: z.literal("AssumingRole"), }); -export function dataAssumingRoleFromJSON( +export function eventDataAssumingRoleFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DataAssumingRole$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataAssumingRole' from JSON`, + (x) => EventDataAssumingRole$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventDataAssumingRole' from JSON`, ); } /** @internal */ -export const DataDeployingCloudFormationStack$inboundSchema: z.ZodType< - DataDeployingCloudFormationStack, +export const EventDataDeployingCloudFormationStack$inboundSchema: z.ZodType< + EventDataDeployingCloudFormationStack, unknown > = z.object({ cfnStackName: z.string(), @@ -1919,57 +2174,58 @@ export const DataDeployingCloudFormationStack$inboundSchema: z.ZodType< type: z.literal("DeployingCloudFormationStack"), }); -export function dataDeployingCloudFormationStackFromJSON( +export function eventDataDeployingCloudFormationStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DataDeployingCloudFormationStack$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataDeployingCloudFormationStack' from JSON`, + (x) => + EventDataDeployingCloudFormationStack$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventDataDeployingCloudFormationStack' from JSON`, ); } /** @internal */ -export const DataEnsuringDockerRepository$inboundSchema: z.ZodType< - DataEnsuringDockerRepository, +export const EventDataEnsuringDockerRepository$inboundSchema: z.ZodType< + EventDataEnsuringDockerRepository, unknown > = z.object({ repositoryName: z.string(), type: z.literal("EnsuringDockerRepository"), }); -export function dataEnsuringDockerRepositoryFromJSON( +export function eventDataEnsuringDockerRepositoryFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DataEnsuringDockerRepository$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataEnsuringDockerRepository' from JSON`, + (x) => EventDataEnsuringDockerRepository$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventDataEnsuringDockerRepository' from JSON`, ); } /** @internal */ -export const DataSettingUpPlatformContext$inboundSchema: z.ZodType< - DataSettingUpPlatformContext, +export const EventDataSettingUpPlatformContext$inboundSchema: z.ZodType< + EventDataSettingUpPlatformContext, unknown > = z.object({ platformName: z.string(), type: z.literal("SettingUpPlatformContext"), }); -export function dataSettingUpPlatformContextFromJSON( +export function eventDataSettingUpPlatformContextFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DataSettingUpPlatformContext$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataSettingUpPlatformContext' from JSON`, + (x) => EventDataSettingUpPlatformContext$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventDataSettingUpPlatformContext' from JSON`, ); } /** @internal */ -export const DataCleaningUpEnvironment$inboundSchema: z.ZodType< - DataCleaningUpEnvironment, +export const EventDataCleaningUpEnvironment$inboundSchema: z.ZodType< + EventDataCleaningUpEnvironment, unknown > = z.object({ stackName: z.string(), @@ -1977,19 +2233,19 @@ export const DataCleaningUpEnvironment$inboundSchema: z.ZodType< type: z.literal("CleaningUpEnvironment"), }); -export function dataCleaningUpEnvironmentFromJSON( +export function eventDataCleaningUpEnvironmentFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DataCleaningUpEnvironment$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataCleaningUpEnvironment' from JSON`, + (x) => EventDataCleaningUpEnvironment$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventDataCleaningUpEnvironment' from JSON`, ); } /** @internal */ -export const DataCleaningUpStack$inboundSchema: z.ZodType< - DataCleaningUpStack, +export const EventDataCleaningUpStack$inboundSchema: z.ZodType< + EventDataCleaningUpStack, unknown > = z.object({ stackName: z.string(), @@ -1997,76 +2253,76 @@ export const DataCleaningUpStack$inboundSchema: z.ZodType< type: z.literal("CleaningUpStack"), }); -export function dataCleaningUpStackFromJSON( +export function eventDataCleaningUpStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DataCleaningUpStack$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataCleaningUpStack' from JSON`, + (x) => EventDataCleaningUpStack$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventDataCleaningUpStack' from JSON`, ); } /** @internal */ -export const DataRunningTestWorker$inboundSchema: z.ZodType< - DataRunningTestWorker, +export const EventDataRunningTestWorker$inboundSchema: z.ZodType< + EventDataRunningTestWorker, unknown > = z.object({ stackName: z.string(), type: z.literal("RunningTestWorker"), }); -export function dataRunningTestWorkerFromJSON( +export function eventDataRunningTestWorkerFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DataRunningTestWorker$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataRunningTestWorker' from JSON`, + (x) => EventDataRunningTestWorker$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventDataRunningTestWorker' from JSON`, ); } /** @internal */ -export const DataDeployingStack$inboundSchema: z.ZodType< - DataDeployingStack, +export const EventDataDeployingStack$inboundSchema: z.ZodType< + EventDataDeployingStack, unknown > = z.object({ stackName: z.string(), type: z.literal("DeployingStack"), }); -export function dataDeployingStackFromJSON( +export function eventDataDeployingStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DataDeployingStack$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataDeployingStack' from JSON`, + (x) => EventDataDeployingStack$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventDataDeployingStack' from JSON`, ); } /** @internal */ -export const DataPreparingEnvironment$inboundSchema: z.ZodType< - DataPreparingEnvironment, +export const EventDataPreparingEnvironment$inboundSchema: z.ZodType< + EventDataPreparingEnvironment, unknown > = z.object({ strategyName: z.string(), type: z.literal("PreparingEnvironment"), }); -export function dataPreparingEnvironmentFromJSON( +export function eventDataPreparingEnvironmentFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DataPreparingEnvironment$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataPreparingEnvironment' from JSON`, + (x) => EventDataPreparingEnvironment$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventDataPreparingEnvironment' from JSON`, ); } /** @internal */ -export const DataDebuggingAgent$inboundSchema: z.ZodType< - DataDebuggingAgent, +export const EventDataDebuggingAgent$inboundSchema: z.ZodType< + EventDataDebuggingAgent, unknown > = z.object({ agentId: z.string(), @@ -2074,19 +2330,19 @@ export const DataDebuggingAgent$inboundSchema: z.ZodType< type: z.literal("DebuggingAgent"), }); -export function dataDebuggingAgentFromJSON( +export function eventDataDebuggingAgentFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DataDebuggingAgent$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataDebuggingAgent' from JSON`, + (x) => EventDataDebuggingAgent$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventDataDebuggingAgent' from JSON`, ); } /** @internal */ -export const DataDeletingAgent$inboundSchema: z.ZodType< - DataDeletingAgent, +export const EventDataDeletingAgent$inboundSchema: z.ZodType< + EventDataDeletingAgent, unknown > = z.object({ agentId: z.string(), @@ -2094,19 +2350,19 @@ export const DataDeletingAgent$inboundSchema: z.ZodType< type: z.literal("DeletingAgent"), }); -export function dataDeletingAgentFromJSON( +export function eventDataDeletingAgentFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DataDeletingAgent$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataDeletingAgent' from JSON`, + (x) => EventDataDeletingAgent$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventDataDeletingAgent' from JSON`, ); } /** @internal */ -export const DataUpdatingAgent$inboundSchema: z.ZodType< - DataUpdatingAgent, +export const EventDataUpdatingAgent$inboundSchema: z.ZodType< + EventDataUpdatingAgent, unknown > = z.object({ agentId: z.string(), @@ -2114,19 +2370,19 @@ export const DataUpdatingAgent$inboundSchema: z.ZodType< type: z.literal("UpdatingAgent"), }); -export function dataUpdatingAgentFromJSON( +export function eventDataUpdatingAgentFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DataUpdatingAgent$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataUpdatingAgent' from JSON`, + (x) => EventDataUpdatingAgent$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventDataUpdatingAgent' from JSON`, ); } /** @internal */ -export const DataProvisioningAgent$inboundSchema: z.ZodType< - DataProvisioningAgent, +export const EventDataProvisioningAgent$inboundSchema: z.ZodType< + EventDataProvisioningAgent, unknown > = z.object({ agentId: z.string(), @@ -2134,51 +2390,56 @@ export const DataProvisioningAgent$inboundSchema: z.ZodType< type: z.literal("ProvisioningAgent"), }); -export function dataProvisioningAgentFromJSON( +export function eventDataProvisioningAgentFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DataProvisioningAgent$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataProvisioningAgent' from JSON`, + (x) => EventDataProvisioningAgent$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventDataProvisioningAgent' from JSON`, ); } /** @internal */ -export const DataGeneratingTemplate$inboundSchema: z.ZodType< - DataGeneratingTemplate, +export const EventDataGeneratingTemplate$inboundSchema: z.ZodType< + EventDataGeneratingTemplate, unknown > = z.object({ platform: z.string(), type: z.literal("GeneratingTemplate"), }); -export function dataGeneratingTemplateFromJSON( +export function eventDataGeneratingTemplateFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DataGeneratingTemplate$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataGeneratingTemplate' from JSON`, + (x) => EventDataGeneratingTemplate$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventDataGeneratingTemplate' from JSON`, ); } /** @internal */ -export const DataGeneratingCloudFormationTemplate$inboundSchema: z.ZodType< - DataGeneratingCloudFormationTemplate, +export const EventDataGeneratingCloudFormationTemplate$inboundSchema: z.ZodType< + EventDataGeneratingCloudFormationTemplate, unknown > = z.object({ type: z.literal("GeneratingCloudFormationTemplate"), }); -export function dataGeneratingCloudFormationTemplateFromJSON( +export function eventDataGeneratingCloudFormationTemplateFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + EventDataGeneratingCloudFormationTemplate, + SDKValidationError +> { return safeParse( jsonString, (x) => - DataGeneratingCloudFormationTemplate$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataGeneratingCloudFormationTemplate' from JSON`, + EventDataGeneratingCloudFormationTemplate$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'EventDataGeneratingCloudFormationTemplate' from JSON`, ); } @@ -2248,41 +2509,43 @@ export function eventDependencyFromJSON( } /** @internal */ -export const ErrorNextState$inboundSchema: z.ZodType = - z.object({ - code: z.string(), - context: z.nullable(z.any()).optional(), - hint: z.nullable(z.string()).optional(), - httpStatusCode: z.nullable(z.int()).optional(), - internal: z.boolean(), - message: z.string(), - retryable: z.boolean().default(false), - source: z.nullable(z.any()).optional(), - }); +export const EventErrorNextState$inboundSchema: z.ZodType< + EventErrorNextState, + unknown +> = z.object({ + code: z.string(), + context: z.nullable(z.any()).optional(), + hint: z.nullable(z.string()).optional(), + httpStatusCode: z.nullable(z.int()).optional(), + internal: z.boolean(), + message: z.string(), + retryable: z.boolean().default(false), + source: z.nullable(z.any()).optional(), +}); -export function errorNextStateFromJSON( +export function eventErrorNextStateFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => ErrorNextState$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ErrorNextState' from JSON`, + (x) => EventErrorNextState$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventErrorNextState' from JSON`, ); } /** @internal */ -export const NextStateErrorUnion$inboundSchema: z.ZodType< - NextStateErrorUnion, +export const EventNextStateErrorUnion$inboundSchema: z.ZodType< + EventNextStateErrorUnion, unknown -> = z.union([z.lazy(() => ErrorNextState$inboundSchema), z.any()]); +> = z.union([z.lazy(() => EventErrorNextState$inboundSchema), z.any()]); -export function nextStateErrorUnionFromJSON( +export function eventNextStateErrorUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => NextStateErrorUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'NextStateErrorUnion' from JSON`, + (x) => EventNextStateErrorUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventNextStateErrorUnion' from JSON`, ); } @@ -2398,7 +2661,7 @@ export const EventResources$inboundSchema: z.ZodType = dependencies: z.array(z.lazy(() => EventDependency$inboundSchema)) .optional(), error: z.nullable( - z.union([z.lazy(() => ErrorNextState$inboundSchema), z.any()]), + z.union([z.lazy(() => EventErrorNextState$inboundSchema), z.any()]), ).optional(), lastFailedState: z.nullable(z.any()).optional(), lifecycle: z.nullable(z.union([EventLifecycleEnum$inboundSchema, z.any()])) @@ -2430,43 +2693,46 @@ export function eventResourcesFromJSON( } /** @internal */ -export const NextState$inboundSchema: z.ZodType = z.object({ - platform: EventPlatform$inboundSchema, - resourcePrefix: z.string(), - resources: z.record(z.string(), z.lazy(() => EventResources$inboundSchema)), -}); +export const EventNextState$inboundSchema: z.ZodType = + z.object({ + platform: EventPlatform$inboundSchema, + resourcePrefix: z.string(), + resources: z.record(z.string(), z.lazy(() => EventResources$inboundSchema)), + }); -export function nextStateFromJSON( +export function eventNextStateFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => NextState$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'NextState' from JSON`, + (x) => EventNextState$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventNextState' from JSON`, ); } /** @internal */ -export const DataStackStep$inboundSchema: z.ZodType = z - .object({ - nextState: z.lazy(() => NextState$inboundSchema), - suggestedDelayMs: z.nullable(z.int()).optional(), - type: z.literal("StackStep"), - }); +export const EventDataStackStep$inboundSchema: z.ZodType< + EventDataStackStep, + unknown +> = z.object({ + nextState: z.lazy(() => EventNextState$inboundSchema), + suggestedDelayMs: z.nullable(z.int()).optional(), + type: z.literal("StackStep"), +}); -export function dataStackStepFromJSON( +export function eventDataStackStepFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DataStackStep$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStackStep' from JSON`, + (x) => EventDataStackStep$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventDataStackStep' from JSON`, ); } /** @internal */ -export const DataCompilingCode$inboundSchema: z.ZodType< - DataCompilingCode, +export const EventDataCompilingCode$inboundSchema: z.ZodType< + EventDataCompilingCode, unknown > = z.object({ language: z.string(), @@ -2474,38 +2740,38 @@ export const DataCompilingCode$inboundSchema: z.ZodType< type: z.literal("CompilingCode"), }); -export function dataCompilingCodeFromJSON( +export function eventDataCompilingCodeFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DataCompilingCode$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataCompilingCode' from JSON`, + (x) => EventDataCompilingCode$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventDataCompilingCode' from JSON`, ); } /** @internal */ -export const DataCreatingRelease$inboundSchema: z.ZodType< - DataCreatingRelease, +export const EventDataCreatingRelease$inboundSchema: z.ZodType< + EventDataCreatingRelease, unknown > = z.object({ project: z.string(), type: z.literal("CreatingRelease"), }); -export function dataCreatingReleaseFromJSON( +export function eventDataCreatingReleaseFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DataCreatingRelease$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataCreatingRelease' from JSON`, + (x) => EventDataCreatingRelease$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventDataCreatingRelease' from JSON`, ); } /** @internal */ -export const DataPushingResource$inboundSchema: z.ZodType< - DataPushingResource, +export const EventDataPushingResource$inboundSchema: z.ZodType< + EventDataPushingResource, unknown > = z.object({ resourceName: z.string(), @@ -2513,19 +2779,19 @@ export const DataPushingResource$inboundSchema: z.ZodType< type: z.literal("PushingResource"), }); -export function dataPushingResourceFromJSON( +export function eventDataPushingResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DataPushingResource$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataPushingResource' from JSON`, + (x) => EventDataPushingResource$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventDataPushingResource' from JSON`, ); } /** @internal */ -export const DataPushingStack$inboundSchema: z.ZodType< - DataPushingStack, +export const EventDataPushingStack$inboundSchema: z.ZodType< + EventDataPushingStack, unknown > = z.object({ destination: z.nullable(z.string()).optional(), @@ -2534,92 +2800,96 @@ export const DataPushingStack$inboundSchema: z.ZodType< type: z.literal("PushingStack"), }); -export function dataPushingStackFromJSON( +export function eventDataPushingStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DataPushingStack$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataPushingStack' from JSON`, + (x) => EventDataPushingStack$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventDataPushingStack' from JSON`, ); } /** @internal */ -export const Progress$inboundSchema: z.ZodType = z.object({ - bytesUploaded: z.int(), - layersUploaded: z.int(), - operation: z.string(), - totalBytes: z.int(), - totalLayers: z.int(), -}); +export const EventProgress$inboundSchema: z.ZodType = z + .object({ + bytesUploaded: z.int(), + layersUploaded: z.int(), + operation: z.string(), + totalBytes: z.int(), + totalLayers: z.int(), + }); -export function progressFromJSON( +export function eventProgressFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => Progress$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Progress' from JSON`, + (x) => EventProgress$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventProgress' from JSON`, ); } /** @internal */ -export const ProgressUnion$inboundSchema: z.ZodType = z - .union([z.lazy(() => Progress$inboundSchema), z.any()]); +export const EventProgressUnion$inboundSchema: z.ZodType< + EventProgressUnion, + unknown +> = z.union([z.lazy(() => EventProgress$inboundSchema), z.any()]); -export function progressUnionFromJSON( +export function eventProgressUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => ProgressUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ProgressUnion' from JSON`, + (x) => EventProgressUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventProgressUnion' from JSON`, ); } /** @internal */ -export const DataPushingImage$inboundSchema: z.ZodType< - DataPushingImage, +export const EventDataPushingImage$inboundSchema: z.ZodType< + EventDataPushingImage, unknown > = z.object({ image: z.string(), - progress: z.nullable(z.union([z.lazy(() => Progress$inboundSchema), z.any()])) - .optional(), + progress: z.nullable( + z.union([z.lazy(() => EventProgress$inboundSchema), z.any()]), + ).optional(), type: z.literal("PushingImage"), }); -export function dataPushingImageFromJSON( +export function eventDataPushingImageFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DataPushingImage$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataPushingImage' from JSON`, + (x) => EventDataPushingImage$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventDataPushingImage' from JSON`, ); } /** @internal */ -export const DataBuildingImage$inboundSchema: z.ZodType< - DataBuildingImage, +export const EventDataBuildingImage$inboundSchema: z.ZodType< + EventDataBuildingImage, unknown > = z.object({ image: z.string(), type: z.literal("BuildingImage"), }); -export function dataBuildingImageFromJSON( +export function eventDataBuildingImageFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DataBuildingImage$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataBuildingImage' from JSON`, + (x) => EventDataBuildingImage$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventDataBuildingImage' from JSON`, ); } /** @internal */ -export const DataBuildingResource$inboundSchema: z.ZodType< - DataBuildingResource, +export const EventDataBuildingResource$inboundSchema: z.ZodType< + EventDataBuildingResource, unknown > = z.object({ relatedResources: z.array(z.string()).optional(), @@ -2628,19 +2898,19 @@ export const DataBuildingResource$inboundSchema: z.ZodType< type: z.literal("BuildingResource"), }); -export function dataBuildingResourceFromJSON( +export function eventDataBuildingResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DataBuildingResource$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataBuildingResource' from JSON`, + (x) => EventDataBuildingResource$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventDataBuildingResource' from JSON`, ); } /** @internal */ -export const DataDownloadingAlienRuntime$inboundSchema: z.ZodType< - DataDownloadingAlienRuntime, +export const EventDataDownloadingAlienRuntime$inboundSchema: z.ZodType< + EventDataDownloadingAlienRuntime, unknown > = z.object({ targetTriple: z.string(), @@ -2648,19 +2918,19 @@ export const DataDownloadingAlienRuntime$inboundSchema: z.ZodType< url: z.string(), }); -export function dataDownloadingAlienRuntimeFromJSON( +export function eventDataDownloadingAlienRuntimeFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DataDownloadingAlienRuntime$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataDownloadingAlienRuntime' from JSON`, + (x) => EventDataDownloadingAlienRuntime$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventDataDownloadingAlienRuntime' from JSON`, ); } /** @internal */ -export const DataRunningPreflights$inboundSchema: z.ZodType< - DataRunningPreflights, +export const EventDataRunningPreflights$inboundSchema: z.ZodType< + EventDataRunningPreflights, unknown > = z.object({ platform: z.string(), @@ -2668,115 +2938,119 @@ export const DataRunningPreflights$inboundSchema: z.ZodType< type: z.literal("RunningPreflights"), }); -export function dataRunningPreflightsFromJSON( +export function eventDataRunningPreflightsFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DataRunningPreflights$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataRunningPreflights' from JSON`, + (x) => EventDataRunningPreflights$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventDataRunningPreflights' from JSON`, ); } /** @internal */ -export const DataBuildingStack$inboundSchema: z.ZodType< - DataBuildingStack, +export const EventDataBuildingStack$inboundSchema: z.ZodType< + EventDataBuildingStack, unknown > = z.object({ stack: z.string(), type: z.literal("BuildingStack"), }); -export function dataBuildingStackFromJSON( +export function eventDataBuildingStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DataBuildingStack$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataBuildingStack' from JSON`, + (x) => EventDataBuildingStack$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventDataBuildingStack' from JSON`, ); } /** @internal */ -export const DataFinished$inboundSchema: z.ZodType = z - .object({ - type: z.literal("Finished"), - }); +export const EventDataFinished$inboundSchema: z.ZodType< + EventDataFinished, + unknown +> = z.object({ + type: z.literal("Finished"), +}); -export function dataFinishedFromJSON( +export function eventDataFinishedFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DataFinished$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataFinished' from JSON`, + (x) => EventDataFinished$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventDataFinished' from JSON`, ); } /** @internal */ -export const DataLoadingConfiguration$inboundSchema: z.ZodType< - DataLoadingConfiguration, +export const EventDataLoadingConfiguration$inboundSchema: z.ZodType< + EventDataLoadingConfiguration, unknown > = z.object({ type: z.literal("LoadingConfiguration"), }); -export function dataLoadingConfigurationFromJSON( +export function eventDataLoadingConfigurationFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DataLoadingConfiguration$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataLoadingConfiguration' from JSON`, + (x) => EventDataLoadingConfiguration$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventDataLoadingConfiguration' from JSON`, ); } /** @internal */ export const EventDataUnion$inboundSchema: z.ZodType = z.union([ - z.lazy(() => DataLoadingConfiguration$inboundSchema), - z.lazy(() => DataFinished$inboundSchema), - z.lazy(() => DataBuildingStack$inboundSchema), - z.lazy(() => DataRunningPreflights$inboundSchema), - z.lazy(() => DataDownloadingAlienRuntime$inboundSchema), - z.lazy(() => DataBuildingResource$inboundSchema), - z.lazy(() => DataBuildingImage$inboundSchema), - z.lazy(() => DataPushingImage$inboundSchema), - z.lazy(() => DataPushingStack$inboundSchema), - z.lazy(() => DataPushingResource$inboundSchema), - z.lazy(() => DataCreatingRelease$inboundSchema), - z.lazy(() => DataCompilingCode$inboundSchema), - z.lazy(() => DataStackStep$inboundSchema), - z.lazy(() => DataGeneratingCloudFormationTemplate$inboundSchema), - z.lazy(() => DataGeneratingTemplate$inboundSchema), - z.lazy(() => DataProvisioningAgent$inboundSchema), - z.lazy(() => DataUpdatingAgent$inboundSchema), - z.lazy(() => DataDeletingAgent$inboundSchema), - z.lazy(() => DataDebuggingAgent$inboundSchema), - z.lazy(() => DataPreparingEnvironment$inboundSchema), - z.lazy(() => DataDeployingStack$inboundSchema), - z.lazy(() => DataRunningTestWorker$inboundSchema), - z.lazy(() => DataCleaningUpStack$inboundSchema), - z.lazy(() => DataCleaningUpEnvironment$inboundSchema), - z.lazy(() => DataSettingUpPlatformContext$inboundSchema), - z.lazy(() => DataEnsuringDockerRepository$inboundSchema), - z.lazy(() => DataDeployingCloudFormationStack$inboundSchema), - z.lazy(() => DataAssumingRole$inboundSchema), - z.lazy(() => DataImportingStackStateFromCloudFormation$inboundSchema), - z.lazy(() => DataDeletingCloudFormationStack$inboundSchema), - z.lazy(() => DataEmptyingBuckets$inboundSchema), - z.lazy(() => DataDeploymentCreated$inboundSchema), - z.lazy(() => DataDeploymentReleased$inboundSchema), - z.lazy(() => DataDeploymentFailed$inboundSchema), - z.lazy(() => DataDeploymentDegraded$inboundSchema), - z.lazy(() => DataDeploymentRecovered$inboundSchema), - z.lazy(() => DataDeploymentDeleted$inboundSchema), - z.lazy(() => DataDeploymentRetryRequested$inboundSchema), - z.lazy(() => DataDeploymentRedeployRequested$inboundSchema), - z.lazy(() => DataDeploymentReleasePinned$inboundSchema), - z.lazy(() => DataDeploymentReleaseUnpinned$inboundSchema), - z.lazy(() => DataDeploymentEnvironmentUpdated$inboundSchema), - z.lazy(() => DataDeploymentDeletionRequested$inboundSchema), + z.lazy(() => EventDataLoadingConfiguration$inboundSchema), + z.lazy(() => EventDataFinished$inboundSchema), + z.lazy(() => EventDataBuildingStack$inboundSchema), + z.lazy(() => EventDataRunningPreflights$inboundSchema), + z.lazy(() => EventDataDownloadingAlienRuntime$inboundSchema), + z.lazy(() => EventDataBuildingResource$inboundSchema), + z.lazy(() => EventDataBuildingImage$inboundSchema), + z.lazy(() => EventDataPushingImage$inboundSchema), + z.lazy(() => EventDataPushingStack$inboundSchema), + z.lazy(() => EventDataPushingResource$inboundSchema), + z.lazy(() => EventDataCreatingRelease$inboundSchema), + z.lazy(() => EventDataCompilingCode$inboundSchema), + z.lazy(() => EventDataStackStep$inboundSchema), + z.lazy(() => EventDataGeneratingCloudFormationTemplate$inboundSchema), + z.lazy(() => EventDataGeneratingTemplate$inboundSchema), + z.lazy(() => EventDataProvisioningAgent$inboundSchema), + z.lazy(() => EventDataUpdatingAgent$inboundSchema), + z.lazy(() => EventDataDeletingAgent$inboundSchema), + z.lazy(() => EventDataDebuggingAgent$inboundSchema), + z.lazy(() => EventDataPreparingEnvironment$inboundSchema), + z.lazy(() => EventDataDeployingStack$inboundSchema), + z.lazy(() => EventDataRunningTestWorker$inboundSchema), + z.lazy(() => EventDataCleaningUpStack$inboundSchema), + z.lazy(() => EventDataCleaningUpEnvironment$inboundSchema), + z.lazy(() => EventDataSettingUpPlatformContext$inboundSchema), + z.lazy(() => EventDataEnsuringDockerRepository$inboundSchema), + z.lazy(() => EventDataDeployingCloudFormationStack$inboundSchema), + z.lazy(() => EventDataAssumingRole$inboundSchema), + z.lazy(() => EventDataImportingStackStateFromCloudFormation$inboundSchema), + z.lazy(() => EventDataDeletingCloudFormationStack$inboundSchema), + z.lazy(() => EventDataEmptyingBuckets$inboundSchema), + z.lazy(() => EventDataDeploymentCreated$inboundSchema), + z.lazy(() => EventDataDeploymentReleased$inboundSchema), + z.lazy(() => EventDataDeploymentFailed$inboundSchema), + z.lazy(() => EventDataDeploymentDegraded$inboundSchema), + z.lazy(() => EventDataDeploymentRecovered$inboundSchema), + z.lazy(() => EventDataDeploymentDeleted$inboundSchema), + z.lazy(() => EventDataReleaseChannelUpdated$inboundSchema), + z.lazy(() => EventDataDeploymentReleaseChannelChanged$inboundSchema), + z.lazy(() => EventDataDeploymentRetryRequested$inboundSchema), + z.lazy(() => EventDataDeploymentRedeployRequested$inboundSchema), + z.lazy(() => EventDataDeploymentReleasePinned$inboundSchema), + z.lazy(() => EventDataDeploymentReleaseUnpinned$inboundSchema), + z.lazy(() => EventDataDeploymentEnvironmentUpdated$inboundSchema), + z.lazy(() => EventDataDeploymentDeletionRequested$inboundSchema), ]); export function eventDataUnionFromJSON( @@ -2790,77 +3064,82 @@ export function eventDataUnionFromJSON( } /** @internal */ -export const StateSuccess$inboundSchema: z.ZodEnum = z - .enum(StateSuccess); +export const EventStateSuccess$inboundSchema: z.ZodEnum< + typeof EventStateSuccess +> = z.enum(EventStateSuccess); /** @internal */ -export const StateStarted$inboundSchema: z.ZodEnum = z - .enum(StateStarted); +export const EventStateStarted$inboundSchema: z.ZodEnum< + typeof EventStateStarted +> = z.enum(EventStateStarted); /** @internal */ -export const StateNone$inboundSchema: z.ZodEnum = z.enum( - StateNone, -); +export const EventStateNone$inboundSchema: z.ZodEnum = z + .enum(EventStateNone); /** @internal */ -export const ErrorFailed$inboundSchema: z.ZodType = z - .object({ - code: z.string(), - context: z.nullable(z.any()).optional(), - hint: z.nullable(z.string()).optional(), - httpStatusCode: z.nullable(z.int()).optional(), - internal: z.boolean(), - message: z.string(), - retryable: z.boolean().default(false), - source: z.nullable(z.any()).optional(), - }); +export const EventErrorFailed$inboundSchema: z.ZodType< + EventErrorFailed, + unknown +> = z.object({ + code: z.string(), + context: z.nullable(z.any()).optional(), + hint: z.nullable(z.string()).optional(), + httpStatusCode: z.nullable(z.int()).optional(), + internal: z.boolean(), + message: z.string(), + retryable: z.boolean().default(false), + source: z.nullable(z.any()).optional(), +}); -export function errorFailedFromJSON( +export function eventErrorFailedFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => ErrorFailed$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ErrorFailed' from JSON`, + (x) => EventErrorFailed$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventErrorFailed' from JSON`, ); } /** @internal */ -export const FailedErrorUnion$inboundSchema: z.ZodType< - FailedErrorUnion, +export const EventFailedErrorUnion$inboundSchema: z.ZodType< + EventFailedErrorUnion, unknown -> = z.union([z.lazy(() => ErrorFailed$inboundSchema), z.any()]); +> = z.union([z.lazy(() => EventErrorFailed$inboundSchema), z.any()]); -export function failedErrorUnionFromJSON( +export function eventFailedErrorUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => FailedErrorUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'FailedErrorUnion' from JSON`, + (x) => EventFailedErrorUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventFailedErrorUnion' from JSON`, ); } /** @internal */ -export const Failed$inboundSchema: z.ZodType = z.object({ - error: z.nullable(z.union([z.lazy(() => ErrorFailed$inboundSchema), z.any()])) - .optional(), -}); +export const EventFailed$inboundSchema: z.ZodType = z + .object({ + error: z.nullable( + z.union([z.lazy(() => EventErrorFailed$inboundSchema), z.any()]), + ).optional(), + }); -export function failedFromJSON( +export function eventFailedFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => Failed$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Failed' from JSON`, + (x) => EventFailed$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventFailed' from JSON`, ); } /** @internal */ export const EventState$inboundSchema: z.ZodType = z .object({ - failed: z.lazy(() => Failed$inboundSchema), + failed: z.lazy(() => EventFailed$inboundSchema), }); export function eventStateFromJSON( @@ -2874,20 +3153,23 @@ export function eventStateFromJSON( } /** @internal */ -export const State$inboundSchema: z.ZodType = z.union([ +export const EventStateUnion$inboundSchema: z.ZodType< + EventStateUnion, + unknown +> = z.union([ z.lazy(() => EventState$inboundSchema), - StateNone$inboundSchema, - StateStarted$inboundSchema, - StateSuccess$inboundSchema, + EventStateNone$inboundSchema, + EventStateStarted$inboundSchema, + EventStateSuccess$inboundSchema, ]); -export function stateFromJSON( +export function eventStateUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => State$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'State' from JSON`, + (x) => EventStateUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventStateUnion' from JSON`, ); } @@ -2898,55 +3180,57 @@ export const Event$inboundSchema: z.ZodType = z.object({ releaseId: z.nullable(z.string()).optional(), debugSessionId: z.nullable(z.string()).optional(), data: z.union([ - z.lazy(() => DataLoadingConfiguration$inboundSchema), - z.lazy(() => DataFinished$inboundSchema), - z.lazy(() => DataBuildingStack$inboundSchema), - z.lazy(() => DataRunningPreflights$inboundSchema), - z.lazy(() => DataDownloadingAlienRuntime$inboundSchema), - z.lazy(() => DataBuildingResource$inboundSchema), - z.lazy(() => DataBuildingImage$inboundSchema), - z.lazy(() => DataPushingImage$inboundSchema), - z.lazy(() => DataPushingStack$inboundSchema), - z.lazy(() => DataPushingResource$inboundSchema), - z.lazy(() => DataCreatingRelease$inboundSchema), - z.lazy(() => DataCompilingCode$inboundSchema), - z.lazy(() => DataStackStep$inboundSchema), - z.lazy(() => DataGeneratingCloudFormationTemplate$inboundSchema), - z.lazy(() => DataGeneratingTemplate$inboundSchema), - z.lazy(() => DataProvisioningAgent$inboundSchema), - z.lazy(() => DataUpdatingAgent$inboundSchema), - z.lazy(() => DataDeletingAgent$inboundSchema), - z.lazy(() => DataDebuggingAgent$inboundSchema), - z.lazy(() => DataPreparingEnvironment$inboundSchema), - z.lazy(() => DataDeployingStack$inboundSchema), - z.lazy(() => DataRunningTestWorker$inboundSchema), - z.lazy(() => DataCleaningUpStack$inboundSchema), - z.lazy(() => DataCleaningUpEnvironment$inboundSchema), - z.lazy(() => DataSettingUpPlatformContext$inboundSchema), - z.lazy(() => DataEnsuringDockerRepository$inboundSchema), - z.lazy(() => DataDeployingCloudFormationStack$inboundSchema), - z.lazy(() => DataAssumingRole$inboundSchema), - z.lazy(() => DataImportingStackStateFromCloudFormation$inboundSchema), - z.lazy(() => DataDeletingCloudFormationStack$inboundSchema), - z.lazy(() => DataEmptyingBuckets$inboundSchema), - z.lazy(() => DataDeploymentCreated$inboundSchema), - z.lazy(() => DataDeploymentReleased$inboundSchema), - z.lazy(() => DataDeploymentFailed$inboundSchema), - z.lazy(() => DataDeploymentDegraded$inboundSchema), - z.lazy(() => DataDeploymentRecovered$inboundSchema), - z.lazy(() => DataDeploymentDeleted$inboundSchema), - z.lazy(() => DataDeploymentRetryRequested$inboundSchema), - z.lazy(() => DataDeploymentRedeployRequested$inboundSchema), - z.lazy(() => DataDeploymentReleasePinned$inboundSchema), - z.lazy(() => DataDeploymentReleaseUnpinned$inboundSchema), - z.lazy(() => DataDeploymentEnvironmentUpdated$inboundSchema), - z.lazy(() => DataDeploymentDeletionRequested$inboundSchema), + z.lazy(() => EventDataLoadingConfiguration$inboundSchema), + z.lazy(() => EventDataFinished$inboundSchema), + z.lazy(() => EventDataBuildingStack$inboundSchema), + z.lazy(() => EventDataRunningPreflights$inboundSchema), + z.lazy(() => EventDataDownloadingAlienRuntime$inboundSchema), + z.lazy(() => EventDataBuildingResource$inboundSchema), + z.lazy(() => EventDataBuildingImage$inboundSchema), + z.lazy(() => EventDataPushingImage$inboundSchema), + z.lazy(() => EventDataPushingStack$inboundSchema), + z.lazy(() => EventDataPushingResource$inboundSchema), + z.lazy(() => EventDataCreatingRelease$inboundSchema), + z.lazy(() => EventDataCompilingCode$inboundSchema), + z.lazy(() => EventDataStackStep$inboundSchema), + z.lazy(() => EventDataGeneratingCloudFormationTemplate$inboundSchema), + z.lazy(() => EventDataGeneratingTemplate$inboundSchema), + z.lazy(() => EventDataProvisioningAgent$inboundSchema), + z.lazy(() => EventDataUpdatingAgent$inboundSchema), + z.lazy(() => EventDataDeletingAgent$inboundSchema), + z.lazy(() => EventDataDebuggingAgent$inboundSchema), + z.lazy(() => EventDataPreparingEnvironment$inboundSchema), + z.lazy(() => EventDataDeployingStack$inboundSchema), + z.lazy(() => EventDataRunningTestWorker$inboundSchema), + z.lazy(() => EventDataCleaningUpStack$inboundSchema), + z.lazy(() => EventDataCleaningUpEnvironment$inboundSchema), + z.lazy(() => EventDataSettingUpPlatformContext$inboundSchema), + z.lazy(() => EventDataEnsuringDockerRepository$inboundSchema), + z.lazy(() => EventDataDeployingCloudFormationStack$inboundSchema), + z.lazy(() => EventDataAssumingRole$inboundSchema), + z.lazy(() => EventDataImportingStackStateFromCloudFormation$inboundSchema), + z.lazy(() => EventDataDeletingCloudFormationStack$inboundSchema), + z.lazy(() => EventDataEmptyingBuckets$inboundSchema), + z.lazy(() => EventDataDeploymentCreated$inboundSchema), + z.lazy(() => EventDataDeploymentReleased$inboundSchema), + z.lazy(() => EventDataDeploymentFailed$inboundSchema), + z.lazy(() => EventDataDeploymentDegraded$inboundSchema), + z.lazy(() => EventDataDeploymentRecovered$inboundSchema), + z.lazy(() => EventDataDeploymentDeleted$inboundSchema), + z.lazy(() => EventDataReleaseChannelUpdated$inboundSchema), + z.lazy(() => EventDataDeploymentReleaseChannelChanged$inboundSchema), + z.lazy(() => EventDataDeploymentRetryRequested$inboundSchema), + z.lazy(() => EventDataDeploymentRedeployRequested$inboundSchema), + z.lazy(() => EventDataDeploymentReleasePinned$inboundSchema), + z.lazy(() => EventDataDeploymentReleaseUnpinned$inboundSchema), + z.lazy(() => EventDataDeploymentEnvironmentUpdated$inboundSchema), + z.lazy(() => EventDataDeploymentDeletionRequested$inboundSchema), ]), state: z.union([ z.lazy(() => EventState$inboundSchema), - StateNone$inboundSchema, - StateStarted$inboundSchema, - StateSuccess$inboundSchema, + EventStateNone$inboundSchema, + EventStateStarted$inboundSchema, + EventStateSuccess$inboundSchema, ]), projectId: z.string(), createdAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), diff --git a/client-sdks/platform/typescript/src/models/eventlistitemresponse.ts b/client-sdks/platform/typescript/src/models/eventlistitemresponse.ts new file mode 100644 index 000000000..7236bd17e --- /dev/null +++ b/client-sdks/platform/typescript/src/models/eventlistitemresponse.ts @@ -0,0 +1,3634 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../lib/primitives.js"; +import { + collectExtraKeys as collectExtraKeys$, + safeParse, +} from "../lib/schemas.js"; +import { ClosedEnum } from "../types/enums.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +export type EventListItemResponseDataDeploymentDeletionRequested = { + /** + * ID of the deployment + */ + deploymentId: string; + type: "DeploymentDeletionRequested"; +}; + +/** + * Type of authenticated principal that requested an event. + */ +export const EventListItemResponseKind4 = { + User: "user", + ServiceAccount: "serviceAccount", +} as const; +/** + * Type of authenticated principal that requested an event. + */ +export type EventListItemResponseKind4 = ClosedEnum< + typeof EventListItemResponseKind4 +>; + +/** + * Authenticated principal that requested a deployment intent event. + */ +export type EventListItemResponseActor4 = { + /** + * User email when the principal is a user. + */ + email?: string | null | undefined; + /** + * Stable user or service-account identifier. + */ + id: string; + /** + * Type of authenticated principal that requested an event. + */ + kind: EventListItemResponseKind4; +}; + +export type EventListItemResponseActorUnion4 = + | EventListItemResponseActor4 + | any; + +export type EventListItemResponseDataDeploymentEnvironmentUpdated = { + actor?: EventListItemResponseActor4 | any | null | undefined; + /** + * Names of the environment variables that changed (added, removed, or modified) + */ + changedKeys: Array; + /** + * ID of the deployment + */ + deploymentId: string; + type: "DeploymentEnvironmentUpdated"; +}; + +export type EventListItemResponseDataDeploymentReleaseUnpinned = { + /** + * ID of the deployment + */ + deploymentId: string; + /** + * ID of the release that was previously pinned + */ + previousPinnedReleaseId: string; + type: "DeploymentReleaseUnpinned"; +}; + +export type EventListItemResponseDataDeploymentReleasePinned = { + /** + * ID of the deployment + */ + deploymentId: string; + /** + * ID of the release that is now pinned + */ + pinnedReleaseId: string; + /** + * ID of the previously pinned release, if any + */ + previousPinnedReleaseId?: string | null | undefined; + type: "DeploymentReleasePinned"; +}; + +export type EventListItemResponseDataDeploymentRedeployRequested = { + /** + * ID of the deployment + */ + deploymentId: string; + /** + * ID of the release being redeployed + */ + releaseId: string; + type: "DeploymentRedeployRequested"; +}; + +/** + * Type of authenticated principal that requested an event. + */ +export const EventListItemResponseKind3 = { + User: "user", + ServiceAccount: "serviceAccount", +} as const; +/** + * Type of authenticated principal that requested an event. + */ +export type EventListItemResponseKind3 = ClosedEnum< + typeof EventListItemResponseKind3 +>; + +/** + * Authenticated principal that requested a deployment intent event. + */ +export type EventListItemResponseActor3 = { + /** + * User email when the principal is a user. + */ + email?: string | null | undefined; + /** + * Stable user or service-account identifier. + */ + id: string; + /** + * Type of authenticated principal that requested an event. + */ + kind: EventListItemResponseKind3; +}; + +export type EventListItemResponseActorUnion3 = + | EventListItemResponseActor3 + | any; + +/** + * Canonical error container that provides a structured way to represent errors + * + * @remarks + * with rich metadata including error codes, human-readable messages, context, + * and chaining capabilities for error propagation. + * + * This struct is designed to be both machine-readable and user-friendly, + * supporting serialization for API responses and detailed error reporting + * in distributed systems. + */ +export type EventListItemResponsePreviousError = { + /** + * A unique identifier for the type of error. + * + * @remarks + * + * This should be a short, machine-readable string that can be used + * by clients to programmatically handle different error types. + * Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" + */ + code: string; + /** + * Additional diagnostic information about the error context. + * + * @remarks + * + * This optional field can contain structured data providing more details + * about the error, such as validation errors, request parameters that + * caused the issue, or other relevant context information. + */ + context?: any | null | undefined; + /** + * Optional human-facing remediation hint. + */ + hint?: string | null | undefined; + /** + * HTTP status code for this error. + * + * @remarks + * + * Used when converting the error to an HTTP response. If None, falls back to + * the error type's default status code or 500. + */ + httpStatusCode?: number | null | undefined; + /** + * Indicates if this is an internal error that should not be exposed to users. + * + * @remarks + * + * When `true`, this error contains sensitive information or implementation + * details that should not be shown to end-users. Such errors should be + * logged for debugging but replaced with generic error messages in responses. + */ + internal: boolean; + /** + * Human-readable error message. + * + * @remarks + * + * This message should be clear and actionable for developers or end-users, + * providing context about what went wrong and potentially how to fix it. + */ + message: string; + /** + * Indicates whether the operation that caused the error should be retried. + * + * @remarks + * + * When `true`, the error is transient and the operation might succeed + * if attempted again. When `false`, retrying the same operation is + * unlikely to succeed without changes. + */ + retryable: boolean; + /** + * The underlying error that caused this error, creating an error chain. + * + * @remarks + * + * This allows for proper error propagation and debugging by maintaining + * the full context of how an error occurred through multiple layers + * of an application. + */ + source?: any | null | undefined; +}; + +export type EventListItemResponsePreviousErrorUnion = + | EventListItemResponsePreviousError + | any; + +export type EventListItemResponseDataDeploymentRetryRequested = { + actor?: EventListItemResponseActor3 | any | null | undefined; + /** + * ID of the release that the failed attempt was targeting, if known + */ + attemptedReleaseId?: string | null | undefined; + /** + * ID of the deployment + */ + deploymentId: string; + previousError?: EventListItemResponsePreviousError | any | null | undefined; + type: "DeploymentRetryRequested"; +}; + +/** + * Type of authenticated principal that requested an event. + */ +export const EventListItemResponseKind2 = { + User: "user", + ServiceAccount: "serviceAccount", +} as const; +/** + * Type of authenticated principal that requested an event. + */ +export type EventListItemResponseKind2 = ClosedEnum< + typeof EventListItemResponseKind2 +>; + +/** + * Authenticated principal that requested a deployment intent event. + */ +export type EventListItemResponseActor2 = { + /** + * User email when the principal is a user. + */ + email?: string | null | undefined; + /** + * Stable user or service-account identifier. + */ + id: string; + /** + * Type of authenticated principal that requested an event. + */ + kind: EventListItemResponseKind2; +}; + +export type EventListItemResponseActorUnion2 = + | EventListItemResponseActor2 + | any; + +export type EventListItemResponseDataDeploymentReleaseChannelChanged = { + actor?: EventListItemResponseActor2 | any | null | undefined; + /** + * Newly followed channel + */ + channel: string; + /** + * ID of the deployment + */ + deploymentId: string; + /** + * Previously followed channel + */ + previousChannel: string; + type: "DeploymentReleaseChannelChanged"; +}; + +/** + * Type of authenticated principal that requested an event. + */ +export const EventListItemResponseKind1 = { + User: "user", + ServiceAccount: "serviceAccount", +} as const; +/** + * Type of authenticated principal that requested an event. + */ +export type EventListItemResponseKind1 = ClosedEnum< + typeof EventListItemResponseKind1 +>; + +/** + * Authenticated principal that requested a deployment intent event. + */ +export type EventListItemResponseActor1 = { + /** + * User email when the principal is a user. + */ + email?: string | null | undefined; + /** + * Stable user or service-account identifier. + */ + id: string; + /** + * Type of authenticated principal that requested an event. + */ + kind: EventListItemResponseKind1; +}; + +export type EventListItemResponseActorUnion1 = + | EventListItemResponseActor1 + | any; + +export type EventListItemResponseDataReleaseChannelUpdated = { + actor?: EventListItemResponseActor1 | any | null | undefined; + /** + * Name of the channel that moved + */ + channel: string; + /** + * ID of the release that was previously current, if any + */ + previousReleaseId?: string | null | undefined; + /** + * ID of the release that is now current + */ + releaseId: string; + type: "ReleaseChannelUpdated"; +}; + +export type EventListItemResponseDataDeploymentDeleted = { + /** + * ID of the deployment that was deleted + */ + deploymentId: string; + type: "DeploymentDeleted"; +}; + +export type EventListItemResponseDataDeploymentRecovered = { + /** + * ID of the deployment + */ + deploymentId: string; + /** + * ID of the release that is now live + */ + releaseId: string; + type: "DeploymentRecovered"; +}; + +/** + * Canonical error container that provides a structured way to represent errors + * + * @remarks + * with rich metadata including error codes, human-readable messages, context, + * and chaining capabilities for error propagation. + * + * This struct is designed to be both machine-readable and user-friendly, + * supporting serialization for API responses and detailed error reporting + * in distributed systems. + */ +export type EventListItemResponseDataError2 = { + /** + * A unique identifier for the type of error. + * + * @remarks + * + * This should be a short, machine-readable string that can be used + * by clients to programmatically handle different error types. + * Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" + */ + code: string; + /** + * Additional diagnostic information about the error context. + * + * @remarks + * + * This optional field can contain structured data providing more details + * about the error, such as validation errors, request parameters that + * caused the issue, or other relevant context information. + */ + context?: any | null | undefined; + /** + * Optional human-facing remediation hint. + */ + hint?: string | null | undefined; + /** + * HTTP status code for this error. + * + * @remarks + * + * Used when converting the error to an HTTP response. If None, falls back to + * the error type's default status code or 500. + */ + httpStatusCode?: number | null | undefined; + /** + * Indicates if this is an internal error that should not be exposed to users. + * + * @remarks + * + * When `true`, this error contains sensitive information or implementation + * details that should not be shown to end-users. Such errors should be + * logged for debugging but replaced with generic error messages in responses. + */ + internal: boolean; + /** + * Human-readable error message. + * + * @remarks + * + * This message should be clear and actionable for developers or end-users, + * providing context about what went wrong and potentially how to fix it. + */ + message: string; + /** + * Indicates whether the operation that caused the error should be retried. + * + * @remarks + * + * When `true`, the error is transient and the operation might succeed + * if attempted again. When `false`, retrying the same operation is + * unlikely to succeed without changes. + */ + retryable: boolean; + /** + * The underlying error that caused this error, creating an error chain. + * + * @remarks + * + * This allows for proper error propagation and debugging by maintaining + * the full context of how an error occurred through multiple layers + * of an application. + */ + source?: any | null | undefined; +}; + +export type EventListItemResponseDataDeploymentDegraded = { + /** + * ID of the deployment + */ + deploymentId: string; + /** + * Canonical error container that provides a structured way to represent errors + * + * @remarks + * with rich metadata including error codes, human-readable messages, context, + * and chaining capabilities for error propagation. + * + * This struct is designed to be both machine-readable and user-friendly, + * supporting serialization for API responses and detailed error reporting + * in distributed systems. + */ + error: EventListItemResponseDataError2; + type: "DeploymentDegraded"; +}; + +/** + * Canonical error container that provides a structured way to represent errors + * + * @remarks + * with rich metadata including error codes, human-readable messages, context, + * and chaining capabilities for error propagation. + * + * This struct is designed to be both machine-readable and user-friendly, + * supporting serialization for API responses and detailed error reporting + * in distributed systems. + */ +export type EventListItemResponseDataError1 = { + /** + * A unique identifier for the type of error. + * + * @remarks + * + * This should be a short, machine-readable string that can be used + * by clients to programmatically handle different error types. + * Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" + */ + code: string; + /** + * Additional diagnostic information about the error context. + * + * @remarks + * + * This optional field can contain structured data providing more details + * about the error, such as validation errors, request parameters that + * caused the issue, or other relevant context information. + */ + context?: any | null | undefined; + /** + * Optional human-facing remediation hint. + */ + hint?: string | null | undefined; + /** + * HTTP status code for this error. + * + * @remarks + * + * Used when converting the error to an HTTP response. If None, falls back to + * the error type's default status code or 500. + */ + httpStatusCode?: number | null | undefined; + /** + * Indicates if this is an internal error that should not be exposed to users. + * + * @remarks + * + * When `true`, this error contains sensitive information or implementation + * details that should not be shown to end-users. Such errors should be + * logged for debugging but replaced with generic error messages in responses. + */ + internal: boolean; + /** + * Human-readable error message. + * + * @remarks + * + * This message should be clear and actionable for developers or end-users, + * providing context about what went wrong and potentially how to fix it. + */ + message: string; + /** + * Indicates whether the operation that caused the error should be retried. + * + * @remarks + * + * When `true`, the error is transient and the operation might succeed + * if attempted again. When `false`, retrying the same operation is + * unlikely to succeed without changes. + */ + retryable: boolean; + /** + * The underlying error that caused this error, creating an error chain. + * + * @remarks + * + * This allows for proper error propagation and debugging by maintaining + * the full context of how an error occurred through multiple layers + * of an application. + */ + source?: any | null | undefined; +}; + +/** + * Phase of a deployment at which a failure occurred. + * + * @remarks + * + * Derived from the source deployment status: `preflights-failed` → + * `Preflights`, `provisioning-failed` → `Provisioning`, `update-failed` → + * `Updating`, `delete-failed` → `Deleting`. + * `refresh-failed` is modelled separately via `DeploymentDegraded`. + */ +export const EventListItemResponsePhase = { + Preflights: "preflights", + Provisioning: "provisioning", + Updating: "updating", + Deleting: "deleting", +} as const; +/** + * Phase of a deployment at which a failure occurred. + * + * @remarks + * + * Derived from the source deployment status: `preflights-failed` → + * `Preflights`, `provisioning-failed` → `Provisioning`, `update-failed` → + * `Updating`, `delete-failed` → `Deleting`. + * `refresh-failed` is modelled separately via `DeploymentDegraded`. + */ +export type EventListItemResponsePhase = ClosedEnum< + typeof EventListItemResponsePhase +>; + +export type EventListItemResponseDataDeploymentFailed = { + /** + * ID of the release the platform was trying to deploy, if known + */ + attemptedReleaseId?: string | null | undefined; + /** + * ID of the deployment + */ + deploymentId: string; + /** + * Canonical error container that provides a structured way to represent errors + * + * @remarks + * with rich metadata including error codes, human-readable messages, context, + * and chaining capabilities for error propagation. + * + * This struct is designed to be both machine-readable and user-friendly, + * supporting serialization for API responses and detailed error reporting + * in distributed systems. + */ + error: EventListItemResponseDataError1; + /** + * Phase of a deployment at which a failure occurred. + * + * @remarks + * + * Derived from the source deployment status: `preflights-failed` → + * `Preflights`, `provisioning-failed` → `Provisioning`, `update-failed` → + * `Updating`, `delete-failed` → `Deleting`. + * `refresh-failed` is modelled separately via `DeploymentDegraded`. + */ + phase: EventListItemResponsePhase; + type: "DeploymentFailed"; +}; + +export type EventListItemResponseDataDeploymentReleased = { + /** + * ID of the deployment + */ + deploymentId: string; + /** + * ID of the release that was previously live, if any + */ + previousReleaseId?: string | null | undefined; + /** + * ID of the release that is now live + */ + releaseId: string; + type: "DeploymentReleased"; +}; + +export type EventListItemResponseDataDeploymentCreated = { + /** + * ID of the deployment group this slot belongs to + */ + deploymentGroupId: string; + /** + * ID of the deployment that was created + */ + deploymentId: string; + /** + * Initial release the slot was created with, if any + */ + releaseId?: string | null | undefined; + type: "DeploymentCreated"; +}; + +export type EventListItemResponseDataEmptyingBuckets = { + /** + * Names of the S3 buckets being emptied + */ + bucketNames: Array; + type: "EmptyingBuckets"; +}; + +export type EventListItemResponseDataDeletingCloudFormationStack = { + /** + * Name of the CloudFormation stack + */ + cfnStackName: string; + /** + * Current stack status + */ + currentStatus: string; + type: "DeletingCloudFormationStack"; +}; + +export type EventListItemResponseDataImportingStackStateFromCloudFormation = { + /** + * Name of the CloudFormation stack + */ + cfnStackName: string; + type: "ImportingStackStateFromCloudFormation"; +}; + +export type EventListItemResponseDataAssumingRole = { + /** + * ARN of the role to assume + */ + roleArn: string; + type: "AssumingRole"; +}; + +export type EventListItemResponseDataDeployingCloudFormationStack = { + /** + * Name of the CloudFormation stack + */ + cfnStackName: string; + /** + * Current stack status + */ + currentStatus: string; + type: "DeployingCloudFormationStack"; +}; + +export type EventListItemResponseDataEnsuringDockerRepository = { + /** + * Name of the docker repository + */ + repositoryName: string; + type: "EnsuringDockerRepository"; +}; + +export type EventListItemResponseDataSettingUpPlatformContext = { + /** + * Name of the platform (e.g., "AWS", "GCP") + */ + platformName: string; + type: "SettingUpPlatformContext"; +}; + +export type EventListItemResponseDataCleaningUpEnvironment = { + /** + * Name of the stack being cleaned up + */ + stackName: string; + /** + * Name of the deployment strategy being used for cleanup + */ + strategyName: string; + type: "CleaningUpEnvironment"; +}; + +export type EventListItemResponseDataCleaningUpStack = { + /** + * Name of the stack being cleaned up + */ + stackName: string; + /** + * Name of the deployment strategy being used for cleanup + */ + strategyName: string; + type: "CleaningUpStack"; +}; + +export type EventListItemResponseDataRunningTestWorker = { + /** + * Name of the stack being tested + */ + stackName: string; + type: "RunningTestWorker"; +}; + +export type EventListItemResponseDataDeployingStack = { + /** + * Name of the stack being deployed + */ + stackName: string; + type: "DeployingStack"; +}; + +export type EventListItemResponseDataPreparingEnvironment = { + /** + * Name of the deployment strategy being used + */ + strategyName: string; + type: "PreparingEnvironment"; +}; + +export type EventListItemResponseDataDebuggingAgent = { + /** + * ID of the agent being debugged + */ + agentId: string; + /** + * ID of the debug session + */ + debugSessionId: string; + type: "DebuggingAgent"; +}; + +export type EventListItemResponseDataDeletingAgent = { + /** + * ID of the agent being deleted + */ + agentId: string; + /** + * ID of the release that was running on the agent + */ + releaseId: string; + type: "DeletingAgent"; +}; + +export type EventListItemResponseDataUpdatingAgent = { + /** + * ID of the agent being updated + */ + agentId: string; + /** + * ID of the new release being deployed to the agent + */ + releaseId: string; + type: "UpdatingAgent"; +}; + +export type EventListItemResponseDataProvisioningAgent = { + /** + * ID of the agent being provisioned + */ + agentId: string; + /** + * ID of the release being deployed to the agent + */ + releaseId: string; + type: "ProvisioningAgent"; +}; + +export type EventListItemResponseDataGeneratingTemplate = { + /** + * Platform for which the template is being generated + */ + platform: string; + type: "GeneratingTemplate"; +}; + +export type EventListItemResponseDataGeneratingCloudFormationTemplate = { + type: "GeneratingCloudFormationTemplate"; +}; + +/** + * Represents the target cloud platform. + */ +export const EventListItemResponsePlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Machines: "machines", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type EventListItemResponsePlatform = ClosedEnum< + typeof EventListItemResponsePlatform +>; + +/** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ +export type EventListItemResponseConfig = { + /** + * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. + */ + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; +}; + +/** + * Represents the target cloud platform. + */ +export const EventListItemResponseControllerPlatformEnum = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Machines: "machines", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type EventListItemResponseControllerPlatformEnum = ClosedEnum< + typeof EventListItemResponseControllerPlatformEnum +>; + +export type EventListItemResponseControllerPlatformUnion = + | EventListItemResponseControllerPlatformEnum + | any; + +/** + * Reference to a resource by its stable id and resource type. + */ +export type EventListItemResponseDependency = { + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; +}; + +/** + * Canonical error container that provides a structured way to represent errors + * + * @remarks + * with rich metadata including error codes, human-readable messages, context, + * and chaining capabilities for error propagation. + * + * This struct is designed to be both machine-readable and user-friendly, + * supporting serialization for API responses and detailed error reporting + * in distributed systems. + */ +export type EventListItemResponseErrorNextState = { + /** + * A unique identifier for the type of error. + * + * @remarks + * + * This should be a short, machine-readable string that can be used + * by clients to programmatically handle different error types. + * Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" + */ + code: string; + /** + * Additional diagnostic information about the error context. + * + * @remarks + * + * This optional field can contain structured data providing more details + * about the error, such as validation errors, request parameters that + * caused the issue, or other relevant context information. + */ + context?: any | null | undefined; + /** + * Optional human-facing remediation hint. + */ + hint?: string | null | undefined; + /** + * HTTP status code for this error. + * + * @remarks + * + * Used when converting the error to an HTTP response. If None, falls back to + * the error type's default status code or 500. + */ + httpStatusCode?: number | null | undefined; + /** + * Indicates if this is an internal error that should not be exposed to users. + * + * @remarks + * + * When `true`, this error contains sensitive information or implementation + * details that should not be shown to end-users. Such errors should be + * logged for debugging but replaced with generic error messages in responses. + */ + internal: boolean; + /** + * Human-readable error message. + * + * @remarks + * + * This message should be clear and actionable for developers or end-users, + * providing context about what went wrong and potentially how to fix it. + */ + message: string; + /** + * Indicates whether the operation that caused the error should be retried. + * + * @remarks + * + * When `true`, the error is transient and the operation might succeed + * if attempted again. When `false`, retrying the same operation is + * unlikely to succeed without changes. + */ + retryable: boolean; + /** + * The underlying error that caused this error, creating an error chain. + * + * @remarks + * + * This allows for proper error propagation and debugging by maintaining + * the full context of how an error occurred through multiple layers + * of an application. + */ + source?: any | null | undefined; +}; + +export type EventListItemResponseNextStateErrorUnion = + | EventListItemResponseErrorNextState + | any; + +/** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ +export const EventListItemResponseLifecycleEnum = { + Frozen: "frozen", + Live: "live", +} as const; +/** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ +export type EventListItemResponseLifecycleEnum = ClosedEnum< + typeof EventListItemResponseLifecycleEnum +>; + +export type EventListItemResponseLifecycleUnion = + | EventListItemResponseLifecycleEnum + | any; + +/** + * Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties. + */ +export type EventListItemResponseOutputs = { + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; +}; + +export type EventListItemResponseOutputsUnion = + | EventListItemResponseOutputs + | any; + +/** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ +export type EventListItemResponsePreviousConfig = { + /** + * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. + */ + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; +}; + +export type EventListItemResponsePreviousConfigUnion = + | EventListItemResponsePreviousConfig + | any; + +/** + * Represents the high-level status of a resource during its lifecycle. + */ +export const EventListItemResponseStatus = { + Pending: "pending", + Provisioning: "provisioning", + ProvisionFailed: "provision-failed", + Running: "running", + Updating: "updating", + UpdateFailed: "update-failed", + Deleting: "deleting", + DeleteFailed: "delete-failed", + TeardownRequired: "teardown-required", + Deleted: "deleted", + RefreshFailed: "refresh-failed", +} as const; +/** + * Represents the high-level status of a resource during its lifecycle. + */ +export type EventListItemResponseStatus = ClosedEnum< + typeof EventListItemResponseStatus +>; + +/** + * Represents the state of a single resource within the stack for a specific platform. + */ +export type EventListItemResponseResources = { + /** + * The platform-specific resource controller that manages this resource's lifecycle. + * + * @remarks + * This is None when the resource status is Pending. + * Stored as JSON to make the struct serializable and movable to alien-core. + */ + internal?: any | null | undefined; + /** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ + config: EventListItemResponseConfig; + controllerPlatform?: + | EventListItemResponseControllerPlatformEnum + | any + | null + | undefined; + /** + * Complete list of dependencies for this resource, including infrastructure dependencies. + * + * @remarks + * This preserves the full dependency information from the stack definition. + */ + dependencies?: Array | undefined; + error?: EventListItemResponseErrorNextState | any | null | undefined; + /** + * Stores the controller state that failed, used for manual retry operations. + * + * @remarks + * This allows resuming from the exact point where the failure occurred. + * Stored as JSON to make the struct serializable and movable to alien-core. + */ + lastFailedState?: any | null | undefined; + lifecycle?: EventListItemResponseLifecycleEnum | any | null | undefined; + outputs?: EventListItemResponseOutputs | any | null | undefined; + previousConfig?: EventListItemResponsePreviousConfig | any | null | undefined; + /** + * Binding parameters for remote access. + * + * @remarks + * Only populated when the resource has `remote_access: true` in its ResourceEntry. + * This is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding). + * Populated by controllers during provisioning using get_binding_params(). + */ + remoteBindingParams?: any | null | undefined; + /** + * Tracks consecutive retry attempts for the current state transition. + */ + retryAttempt?: number | undefined; + /** + * Represents the high-level status of a resource during its lifecycle. + */ + status: EventListItemResponseStatus; + /** + * The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE). + */ + type: string; +}; + +/** + * Represents the collective state of all resources in a stack, including platform and pending actions. + */ +export type EventListItemResponseNextState = { + /** + * Represents the target cloud platform. + */ + platform: EventListItemResponsePlatform; + /** + * A prefix used for resource naming to ensure uniqueness across deployments. + */ + resourcePrefix: string; + /** + * The state of individual resources, keyed by resource ID. + */ + resources: { [k: string]: EventListItemResponseResources }; +}; + +export type EventListItemResponseDataStackStep = { + /** + * Represents the collective state of all resources in a stack, including platform and pending actions. + */ + nextState: EventListItemResponseNextState; + /** + * An suggested duration to wait before executing the next step. + */ + suggestedDelayMs?: number | null | undefined; + type: "StackStep"; +}; + +export type EventListItemResponseDataCompilingCode = { + /** + * Language being compiled (rust, typescript, etc.) + */ + language: string; + /** + * Current progress/status line from the build output + */ + progress?: string | null | undefined; + type: "CompilingCode"; +}; + +export type EventListItemResponseDataCreatingRelease = { + /** + * Project name + */ + project: string; + type: "CreatingRelease"; +}; + +export type EventListItemResponseDataPushingResource = { + /** + * Name of the resource being pushed + */ + resourceName: string; + /** + * Type of the resource: "worker", "container" + */ + resourceType: string; + type: "PushingResource"; +}; + +export type EventListItemResponseDataPushingStack = { + /** + * Human-readable destination for pushed images + */ + destination?: string | null | undefined; + /** + * Target platform + */ + platform: string; + /** + * Name of the stack being pushed + */ + stack: string; + type: "PushingStack"; +}; + +/** + * Progress information for image push operations + */ +export type EventListItemResponseProgress = { + /** + * Bytes uploaded so far + */ + bytesUploaded: number; + /** + * Number of layers uploaded so far + */ + layersUploaded: number; + /** + * Current operation being performed + */ + operation: string; + /** + * Total bytes to upload + */ + totalBytes: number; + /** + * Total number of layers to upload + */ + totalLayers: number; +}; + +export type EventListItemResponseProgressUnion = + | EventListItemResponseProgress + | any; + +export type EventListItemResponseDataPushingImage = { + /** + * Name of the image being pushed + */ + image: string; + progress?: EventListItemResponseProgress | any | null | undefined; + type: "PushingImage"; +}; + +export type EventListItemResponseDataBuildingImage = { + /** + * Name of the image being built + */ + image: string; + type: "BuildingImage"; +}; + +export type EventListItemResponseDataBuildingResource = { + /** + * All resource names sharing this build (for deduped container groups) + */ + relatedResources?: Array | undefined; + /** + * Name of the resource being built + */ + resourceName: string; + /** + * Type of the resource: "worker", "container" + */ + resourceType: string; + type: "BuildingResource"; +}; + +export type EventListItemResponseDataDownloadingAlienRuntime = { + /** + * Target triple for the runtime + */ + targetTriple: string; + type: "DownloadingAlienRuntime"; + /** + * URL being downloaded from + */ + url: string; +}; + +export type EventListItemResponseDataRunningPreflights = { + /** + * Platform being targeted + */ + platform: string; + /** + * Name of the stack being checked + */ + stack: string; + type: "RunningPreflights"; +}; + +export type EventListItemResponseDataBuildingStack = { + /** + * Name of the stack being built + */ + stack: string; + type: "BuildingStack"; +}; + +export type EventListItemResponseDataFinished = { + type: "Finished"; +}; + +export type EventListItemResponseDataLoadingConfiguration = { + type: "LoadingConfiguration"; +}; + +export type EventListItemResponseDataUnion = + | EventListItemResponseDataLoadingConfiguration + | EventListItemResponseDataFinished + | EventListItemResponseDataBuildingStack + | EventListItemResponseDataRunningPreflights + | EventListItemResponseDataDownloadingAlienRuntime + | EventListItemResponseDataBuildingResource + | EventListItemResponseDataBuildingImage + | EventListItemResponseDataPushingImage + | EventListItemResponseDataPushingStack + | EventListItemResponseDataPushingResource + | EventListItemResponseDataCreatingRelease + | EventListItemResponseDataCompilingCode + | EventListItemResponseDataStackStep + | EventListItemResponseDataGeneratingCloudFormationTemplate + | EventListItemResponseDataGeneratingTemplate + | EventListItemResponseDataProvisioningAgent + | EventListItemResponseDataUpdatingAgent + | EventListItemResponseDataDeletingAgent + | EventListItemResponseDataDebuggingAgent + | EventListItemResponseDataPreparingEnvironment + | EventListItemResponseDataDeployingStack + | EventListItemResponseDataRunningTestWorker + | EventListItemResponseDataCleaningUpStack + | EventListItemResponseDataCleaningUpEnvironment + | EventListItemResponseDataSettingUpPlatformContext + | EventListItemResponseDataEnsuringDockerRepository + | EventListItemResponseDataDeployingCloudFormationStack + | EventListItemResponseDataAssumingRole + | EventListItemResponseDataImportingStackStateFromCloudFormation + | EventListItemResponseDataDeletingCloudFormationStack + | EventListItemResponseDataEmptyingBuckets + | EventListItemResponseDataDeploymentCreated + | EventListItemResponseDataDeploymentReleased + | EventListItemResponseDataDeploymentFailed + | EventListItemResponseDataDeploymentDegraded + | EventListItemResponseDataDeploymentRecovered + | EventListItemResponseDataDeploymentDeleted + | EventListItemResponseDataReleaseChannelUpdated + | EventListItemResponseDataDeploymentReleaseChannelChanged + | EventListItemResponseDataDeploymentRetryRequested + | EventListItemResponseDataDeploymentRedeployRequested + | EventListItemResponseDataDeploymentReleasePinned + | EventListItemResponseDataDeploymentReleaseUnpinned + | EventListItemResponseDataDeploymentEnvironmentUpdated + | EventListItemResponseDataDeploymentDeletionRequested; + +export const EventListItemResponseStateSuccess = { + Success: "success", +} as const; +export type EventListItemResponseStateSuccess = ClosedEnum< + typeof EventListItemResponseStateSuccess +>; + +export const EventListItemResponseStateStarted = { + Started: "started", +} as const; +export type EventListItemResponseStateStarted = ClosedEnum< + typeof EventListItemResponseStateStarted +>; + +export const EventListItemResponseStateNone = { + None: "none", +} as const; +export type EventListItemResponseStateNone = ClosedEnum< + typeof EventListItemResponseStateNone +>; + +/** + * Canonical error container that provides a structured way to represent errors + * + * @remarks + * with rich metadata including error codes, human-readable messages, context, + * and chaining capabilities for error propagation. + * + * This struct is designed to be both machine-readable and user-friendly, + * supporting serialization for API responses and detailed error reporting + * in distributed systems. + */ +export type EventListItemResponseErrorFailed = { + /** + * A unique identifier for the type of error. + * + * @remarks + * + * This should be a short, machine-readable string that can be used + * by clients to programmatically handle different error types. + * Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" + */ + code: string; + /** + * Additional diagnostic information about the error context. + * + * @remarks + * + * This optional field can contain structured data providing more details + * about the error, such as validation errors, request parameters that + * caused the issue, or other relevant context information. + */ + context?: any | null | undefined; + /** + * Optional human-facing remediation hint. + */ + hint?: string | null | undefined; + /** + * HTTP status code for this error. + * + * @remarks + * + * Used when converting the error to an HTTP response. If None, falls back to + * the error type's default status code or 500. + */ + httpStatusCode?: number | null | undefined; + /** + * Indicates if this is an internal error that should not be exposed to users. + * + * @remarks + * + * When `true`, this error contains sensitive information or implementation + * details that should not be shown to end-users. Such errors should be + * logged for debugging but replaced with generic error messages in responses. + */ + internal: boolean; + /** + * Human-readable error message. + * + * @remarks + * + * This message should be clear and actionable for developers or end-users, + * providing context about what went wrong and potentially how to fix it. + */ + message: string; + /** + * Indicates whether the operation that caused the error should be retried. + * + * @remarks + * + * When `true`, the error is transient and the operation might succeed + * if attempted again. When `false`, retrying the same operation is + * unlikely to succeed without changes. + */ + retryable: boolean; + /** + * The underlying error that caused this error, creating an error chain. + * + * @remarks + * + * This allows for proper error propagation and debugging by maintaining + * the full context of how an error occurred through multiple layers + * of an application. + */ + source?: any | null | undefined; +}; + +export type EventListItemResponseFailedErrorUnion = + | EventListItemResponseErrorFailed + | any; + +/** + * Event failed with an error + */ +export type EventListItemResponseFailed = { + error?: EventListItemResponseErrorFailed | any | null | undefined; +}; + +export type EventListItemResponseState = { + /** + * Event failed with an error + */ + failed: EventListItemResponseFailed; +}; + +/** + * Represents the state of an event + */ +export type EventListItemResponseStateUnion = + | EventListItemResponseState + | EventListItemResponseStateNone + | EventListItemResponseStateStarted + | EventListItemResponseStateSuccess; + +export type EventListItemResponse = { + /** + * Unique identifier for the event. + */ + id: string; + /** + * Unique identifier for the deployment. + */ + deploymentId?: string | null | undefined; + /** + * Unique identifier for the release. + */ + releaseId?: string | null | undefined; + /** + * Unique identifier for the debug session. + */ + debugSessionId?: string | null | undefined; + data: + | EventListItemResponseDataLoadingConfiguration + | EventListItemResponseDataFinished + | EventListItemResponseDataBuildingStack + | EventListItemResponseDataRunningPreflights + | EventListItemResponseDataDownloadingAlienRuntime + | EventListItemResponseDataBuildingResource + | EventListItemResponseDataBuildingImage + | EventListItemResponseDataPushingImage + | EventListItemResponseDataPushingStack + | EventListItemResponseDataPushingResource + | EventListItemResponseDataCreatingRelease + | EventListItemResponseDataCompilingCode + | EventListItemResponseDataStackStep + | EventListItemResponseDataGeneratingCloudFormationTemplate + | EventListItemResponseDataGeneratingTemplate + | EventListItemResponseDataProvisioningAgent + | EventListItemResponseDataUpdatingAgent + | EventListItemResponseDataDeletingAgent + | EventListItemResponseDataDebuggingAgent + | EventListItemResponseDataPreparingEnvironment + | EventListItemResponseDataDeployingStack + | EventListItemResponseDataRunningTestWorker + | EventListItemResponseDataCleaningUpStack + | EventListItemResponseDataCleaningUpEnvironment + | EventListItemResponseDataSettingUpPlatformContext + | EventListItemResponseDataEnsuringDockerRepository + | EventListItemResponseDataDeployingCloudFormationStack + | EventListItemResponseDataAssumingRole + | EventListItemResponseDataImportingStackStateFromCloudFormation + | EventListItemResponseDataDeletingCloudFormationStack + | EventListItemResponseDataEmptyingBuckets + | EventListItemResponseDataDeploymentCreated + | EventListItemResponseDataDeploymentReleased + | EventListItemResponseDataDeploymentFailed + | EventListItemResponseDataDeploymentDegraded + | EventListItemResponseDataDeploymentRecovered + | EventListItemResponseDataDeploymentDeleted + | EventListItemResponseDataReleaseChannelUpdated + | EventListItemResponseDataDeploymentReleaseChannelChanged + | EventListItemResponseDataDeploymentRetryRequested + | EventListItemResponseDataDeploymentRedeployRequested + | EventListItemResponseDataDeploymentReleasePinned + | EventListItemResponseDataDeploymentReleaseUnpinned + | EventListItemResponseDataDeploymentEnvironmentUpdated + | EventListItemResponseDataDeploymentDeletionRequested; + /** + * Represents the state of an event + */ + state: + | EventListItemResponseState + | EventListItemResponseStateNone + | EventListItemResponseStateStarted + | EventListItemResponseStateSuccess; + /** + * Unique identifier for the project. + */ + projectId: string; + createdAt: Date; + /** + * Unique identifier for the workspace. + */ + workspaceId: string; + /** + * createdAt of the event's referenced release, included when ?include=releaseCreatedAt is used + */ + releaseCreatedAt?: Date | null | undefined; +}; + +/** @internal */ +export const EventListItemResponseDataDeploymentDeletionRequested$inboundSchema: + z.ZodType = z + .object({ + deploymentId: z.string(), + type: z.literal("DeploymentDeletionRequested"), + }); + +export function eventListItemResponseDataDeploymentDeletionRequestedFromJSON( + jsonString: string, +): SafeParseResult< + EventListItemResponseDataDeploymentDeletionRequested, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + EventListItemResponseDataDeploymentDeletionRequested$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'EventListItemResponseDataDeploymentDeletionRequested' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseKind4$inboundSchema: z.ZodEnum< + typeof EventListItemResponseKind4 +> = z.enum(EventListItemResponseKind4); + +/** @internal */ +export const EventListItemResponseActor4$inboundSchema: z.ZodType< + EventListItemResponseActor4, + unknown +> = z.object({ + email: z.nullable(z.string()).optional(), + id: z.string(), + kind: EventListItemResponseKind4$inboundSchema, +}); + +export function eventListItemResponseActor4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => EventListItemResponseActor4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventListItemResponseActor4' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseActorUnion4$inboundSchema: z.ZodType< + EventListItemResponseActorUnion4, + unknown +> = z.union([z.lazy(() => EventListItemResponseActor4$inboundSchema), z.any()]); + +export function eventListItemResponseActorUnion4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => EventListItemResponseActorUnion4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventListItemResponseActorUnion4' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseDataDeploymentEnvironmentUpdated$inboundSchema: + z.ZodType = z + .object({ + actor: z.nullable( + z.union([ + z.lazy(() => EventListItemResponseActor4$inboundSchema), + z.any(), + ]), + ).optional(), + changedKeys: z.array(z.string()), + deploymentId: z.string(), + type: z.literal("DeploymentEnvironmentUpdated"), + }); + +export function eventListItemResponseDataDeploymentEnvironmentUpdatedFromJSON( + jsonString: string, +): SafeParseResult< + EventListItemResponseDataDeploymentEnvironmentUpdated, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + EventListItemResponseDataDeploymentEnvironmentUpdated$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'EventListItemResponseDataDeploymentEnvironmentUpdated' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseDataDeploymentReleaseUnpinned$inboundSchema: + z.ZodType = z + .object({ + deploymentId: z.string(), + previousPinnedReleaseId: z.string(), + type: z.literal("DeploymentReleaseUnpinned"), + }); + +export function eventListItemResponseDataDeploymentReleaseUnpinnedFromJSON( + jsonString: string, +): SafeParseResult< + EventListItemResponseDataDeploymentReleaseUnpinned, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + EventListItemResponseDataDeploymentReleaseUnpinned$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'EventListItemResponseDataDeploymentReleaseUnpinned' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseDataDeploymentReleasePinned$inboundSchema: + z.ZodType = z + .object({ + deploymentId: z.string(), + pinnedReleaseId: z.string(), + previousPinnedReleaseId: z.nullable(z.string()).optional(), + type: z.literal("DeploymentReleasePinned"), + }); + +export function eventListItemResponseDataDeploymentReleasePinnedFromJSON( + jsonString: string, +): SafeParseResult< + EventListItemResponseDataDeploymentReleasePinned, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + EventListItemResponseDataDeploymentReleasePinned$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'EventListItemResponseDataDeploymentReleasePinned' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseDataDeploymentRedeployRequested$inboundSchema: + z.ZodType = z + .object({ + deploymentId: z.string(), + releaseId: z.string(), + type: z.literal("DeploymentRedeployRequested"), + }); + +export function eventListItemResponseDataDeploymentRedeployRequestedFromJSON( + jsonString: string, +): SafeParseResult< + EventListItemResponseDataDeploymentRedeployRequested, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + EventListItemResponseDataDeploymentRedeployRequested$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'EventListItemResponseDataDeploymentRedeployRequested' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseKind3$inboundSchema: z.ZodEnum< + typeof EventListItemResponseKind3 +> = z.enum(EventListItemResponseKind3); + +/** @internal */ +export const EventListItemResponseActor3$inboundSchema: z.ZodType< + EventListItemResponseActor3, + unknown +> = z.object({ + email: z.nullable(z.string()).optional(), + id: z.string(), + kind: EventListItemResponseKind3$inboundSchema, +}); + +export function eventListItemResponseActor3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => EventListItemResponseActor3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventListItemResponseActor3' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseActorUnion3$inboundSchema: z.ZodType< + EventListItemResponseActorUnion3, + unknown +> = z.union([z.lazy(() => EventListItemResponseActor3$inboundSchema), z.any()]); + +export function eventListItemResponseActorUnion3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => EventListItemResponseActorUnion3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventListItemResponseActorUnion3' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponsePreviousError$inboundSchema: z.ZodType< + EventListItemResponsePreviousError, + unknown +> = z.object({ + code: z.string(), + context: z.nullable(z.any()).optional(), + hint: z.nullable(z.string()).optional(), + httpStatusCode: z.nullable(z.int()).optional(), + internal: z.boolean(), + message: z.string(), + retryable: z.boolean().default(false), + source: z.nullable(z.any()).optional(), +}); + +export function eventListItemResponsePreviousErrorFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + EventListItemResponsePreviousError$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventListItemResponsePreviousError' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponsePreviousErrorUnion$inboundSchema: z.ZodType< + EventListItemResponsePreviousErrorUnion, + unknown +> = z.union([ + z.lazy(() => EventListItemResponsePreviousError$inboundSchema), + z.any(), +]); + +export function eventListItemResponsePreviousErrorUnionFromJSON( + jsonString: string, +): SafeParseResult< + EventListItemResponsePreviousErrorUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + EventListItemResponsePreviousErrorUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'EventListItemResponsePreviousErrorUnion' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseDataDeploymentRetryRequested$inboundSchema: + z.ZodType = z + .object({ + actor: z.nullable( + z.union([ + z.lazy(() => EventListItemResponseActor3$inboundSchema), + z.any(), + ]), + ).optional(), + attemptedReleaseId: z.nullable(z.string()).optional(), + deploymentId: z.string(), + previousError: z.nullable( + z.union([ + z.lazy(() => EventListItemResponsePreviousError$inboundSchema), + z.any(), + ]), + ).optional(), + type: z.literal("DeploymentRetryRequested"), + }); + +export function eventListItemResponseDataDeploymentRetryRequestedFromJSON( + jsonString: string, +): SafeParseResult< + EventListItemResponseDataDeploymentRetryRequested, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + EventListItemResponseDataDeploymentRetryRequested$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'EventListItemResponseDataDeploymentRetryRequested' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseKind2$inboundSchema: z.ZodEnum< + typeof EventListItemResponseKind2 +> = z.enum(EventListItemResponseKind2); + +/** @internal */ +export const EventListItemResponseActor2$inboundSchema: z.ZodType< + EventListItemResponseActor2, + unknown +> = z.object({ + email: z.nullable(z.string()).optional(), + id: z.string(), + kind: EventListItemResponseKind2$inboundSchema, +}); + +export function eventListItemResponseActor2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => EventListItemResponseActor2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventListItemResponseActor2' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseActorUnion2$inboundSchema: z.ZodType< + EventListItemResponseActorUnion2, + unknown +> = z.union([z.lazy(() => EventListItemResponseActor2$inboundSchema), z.any()]); + +export function eventListItemResponseActorUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => EventListItemResponseActorUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventListItemResponseActorUnion2' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseDataDeploymentReleaseChannelChanged$inboundSchema: + z.ZodType = + z.object({ + actor: z.nullable( + z.union([ + z.lazy(() => EventListItemResponseActor2$inboundSchema), + z.any(), + ]), + ).optional(), + channel: z.string(), + deploymentId: z.string(), + previousChannel: z.string(), + type: z.literal("DeploymentReleaseChannelChanged"), + }); + +export function eventListItemResponseDataDeploymentReleaseChannelChangedFromJSON( + jsonString: string, +): SafeParseResult< + EventListItemResponseDataDeploymentReleaseChannelChanged, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + EventListItemResponseDataDeploymentReleaseChannelChanged$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'EventListItemResponseDataDeploymentReleaseChannelChanged' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseKind1$inboundSchema: z.ZodEnum< + typeof EventListItemResponseKind1 +> = z.enum(EventListItemResponseKind1); + +/** @internal */ +export const EventListItemResponseActor1$inboundSchema: z.ZodType< + EventListItemResponseActor1, + unknown +> = z.object({ + email: z.nullable(z.string()).optional(), + id: z.string(), + kind: EventListItemResponseKind1$inboundSchema, +}); + +export function eventListItemResponseActor1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => EventListItemResponseActor1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventListItemResponseActor1' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseActorUnion1$inboundSchema: z.ZodType< + EventListItemResponseActorUnion1, + unknown +> = z.union([z.lazy(() => EventListItemResponseActor1$inboundSchema), z.any()]); + +export function eventListItemResponseActorUnion1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => EventListItemResponseActorUnion1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventListItemResponseActorUnion1' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseDataReleaseChannelUpdated$inboundSchema: + z.ZodType = z.object( + { + actor: z.nullable(z.union([ + z.lazy(() => EventListItemResponseActor1$inboundSchema), + z.any(), + ])).optional(), + channel: z.string(), + previousReleaseId: z.nullable(z.string()).optional(), + releaseId: z.string(), + type: z.literal("ReleaseChannelUpdated"), + }, + ); + +export function eventListItemResponseDataReleaseChannelUpdatedFromJSON( + jsonString: string, +): SafeParseResult< + EventListItemResponseDataReleaseChannelUpdated, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + EventListItemResponseDataReleaseChannelUpdated$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'EventListItemResponseDataReleaseChannelUpdated' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseDataDeploymentDeleted$inboundSchema: + z.ZodType = z.object({ + deploymentId: z.string(), + type: z.literal("DeploymentDeleted"), + }); + +export function eventListItemResponseDataDeploymentDeletedFromJSON( + jsonString: string, +): SafeParseResult< + EventListItemResponseDataDeploymentDeleted, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + EventListItemResponseDataDeploymentDeleted$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'EventListItemResponseDataDeploymentDeleted' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseDataDeploymentRecovered$inboundSchema: + z.ZodType = z.object({ + deploymentId: z.string(), + releaseId: z.string(), + type: z.literal("DeploymentRecovered"), + }); + +export function eventListItemResponseDataDeploymentRecoveredFromJSON( + jsonString: string, +): SafeParseResult< + EventListItemResponseDataDeploymentRecovered, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + EventListItemResponseDataDeploymentRecovered$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'EventListItemResponseDataDeploymentRecovered' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseDataError2$inboundSchema: z.ZodType< + EventListItemResponseDataError2, + unknown +> = z.object({ + code: z.string(), + context: z.nullable(z.any()).optional(), + hint: z.nullable(z.string()).optional(), + httpStatusCode: z.nullable(z.int()).optional(), + internal: z.boolean(), + message: z.string(), + retryable: z.boolean().default(false), + source: z.nullable(z.any()).optional(), +}); + +export function eventListItemResponseDataError2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => EventListItemResponseDataError2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventListItemResponseDataError2' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseDataDeploymentDegraded$inboundSchema: + z.ZodType = z.object({ + deploymentId: z.string(), + error: z.lazy(() => EventListItemResponseDataError2$inboundSchema), + type: z.literal("DeploymentDegraded"), + }); + +export function eventListItemResponseDataDeploymentDegradedFromJSON( + jsonString: string, +): SafeParseResult< + EventListItemResponseDataDeploymentDegraded, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + EventListItemResponseDataDeploymentDegraded$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'EventListItemResponseDataDeploymentDegraded' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseDataError1$inboundSchema: z.ZodType< + EventListItemResponseDataError1, + unknown +> = z.object({ + code: z.string(), + context: z.nullable(z.any()).optional(), + hint: z.nullable(z.string()).optional(), + httpStatusCode: z.nullable(z.int()).optional(), + internal: z.boolean(), + message: z.string(), + retryable: z.boolean().default(false), + source: z.nullable(z.any()).optional(), +}); + +export function eventListItemResponseDataError1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => EventListItemResponseDataError1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventListItemResponseDataError1' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponsePhase$inboundSchema: z.ZodEnum< + typeof EventListItemResponsePhase +> = z.enum(EventListItemResponsePhase); + +/** @internal */ +export const EventListItemResponseDataDeploymentFailed$inboundSchema: z.ZodType< + EventListItemResponseDataDeploymentFailed, + unknown +> = z.object({ + attemptedReleaseId: z.nullable(z.string()).optional(), + deploymentId: z.string(), + error: z.lazy(() => EventListItemResponseDataError1$inboundSchema), + phase: EventListItemResponsePhase$inboundSchema, + type: z.literal("DeploymentFailed"), +}); + +export function eventListItemResponseDataDeploymentFailedFromJSON( + jsonString: string, +): SafeParseResult< + EventListItemResponseDataDeploymentFailed, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + EventListItemResponseDataDeploymentFailed$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'EventListItemResponseDataDeploymentFailed' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseDataDeploymentReleased$inboundSchema: + z.ZodType = z.object({ + deploymentId: z.string(), + previousReleaseId: z.nullable(z.string()).optional(), + releaseId: z.string(), + type: z.literal("DeploymentReleased"), + }); + +export function eventListItemResponseDataDeploymentReleasedFromJSON( + jsonString: string, +): SafeParseResult< + EventListItemResponseDataDeploymentReleased, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + EventListItemResponseDataDeploymentReleased$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'EventListItemResponseDataDeploymentReleased' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseDataDeploymentCreated$inboundSchema: + z.ZodType = z.object({ + deploymentGroupId: z.string(), + deploymentId: z.string(), + releaseId: z.nullable(z.string()).optional(), + type: z.literal("DeploymentCreated"), + }); + +export function eventListItemResponseDataDeploymentCreatedFromJSON( + jsonString: string, +): SafeParseResult< + EventListItemResponseDataDeploymentCreated, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + EventListItemResponseDataDeploymentCreated$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'EventListItemResponseDataDeploymentCreated' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseDataEmptyingBuckets$inboundSchema: z.ZodType< + EventListItemResponseDataEmptyingBuckets, + unknown +> = z.object({ + bucketNames: z.array(z.string()), + type: z.literal("EmptyingBuckets"), +}); + +export function eventListItemResponseDataEmptyingBucketsFromJSON( + jsonString: string, +): SafeParseResult< + EventListItemResponseDataEmptyingBuckets, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + EventListItemResponseDataEmptyingBuckets$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'EventListItemResponseDataEmptyingBuckets' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseDataDeletingCloudFormationStack$inboundSchema: + z.ZodType = z + .object({ + cfnStackName: z.string(), + currentStatus: z.string(), + type: z.literal("DeletingCloudFormationStack"), + }); + +export function eventListItemResponseDataDeletingCloudFormationStackFromJSON( + jsonString: string, +): SafeParseResult< + EventListItemResponseDataDeletingCloudFormationStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + EventListItemResponseDataDeletingCloudFormationStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'EventListItemResponseDataDeletingCloudFormationStack' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseDataImportingStackStateFromCloudFormation$inboundSchema: + z.ZodType< + EventListItemResponseDataImportingStackStateFromCloudFormation, + unknown + > = z.object({ + cfnStackName: z.string(), + type: z.literal("ImportingStackStateFromCloudFormation"), + }); + +export function eventListItemResponseDataImportingStackStateFromCloudFormationFromJSON( + jsonString: string, +): SafeParseResult< + EventListItemResponseDataImportingStackStateFromCloudFormation, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + EventListItemResponseDataImportingStackStateFromCloudFormation$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'EventListItemResponseDataImportingStackStateFromCloudFormation' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseDataAssumingRole$inboundSchema: z.ZodType< + EventListItemResponseDataAssumingRole, + unknown +> = z.object({ + roleArn: z.string(), + type: z.literal("AssumingRole"), +}); + +export function eventListItemResponseDataAssumingRoleFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + EventListItemResponseDataAssumingRole$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventListItemResponseDataAssumingRole' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseDataDeployingCloudFormationStack$inboundSchema: + z.ZodType = z + .object({ + cfnStackName: z.string(), + currentStatus: z.string(), + type: z.literal("DeployingCloudFormationStack"), + }); + +export function eventListItemResponseDataDeployingCloudFormationStackFromJSON( + jsonString: string, +): SafeParseResult< + EventListItemResponseDataDeployingCloudFormationStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + EventListItemResponseDataDeployingCloudFormationStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'EventListItemResponseDataDeployingCloudFormationStack' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseDataEnsuringDockerRepository$inboundSchema: + z.ZodType = z + .object({ + repositoryName: z.string(), + type: z.literal("EnsuringDockerRepository"), + }); + +export function eventListItemResponseDataEnsuringDockerRepositoryFromJSON( + jsonString: string, +): SafeParseResult< + EventListItemResponseDataEnsuringDockerRepository, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + EventListItemResponseDataEnsuringDockerRepository$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'EventListItemResponseDataEnsuringDockerRepository' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseDataSettingUpPlatformContext$inboundSchema: + z.ZodType = z + .object({ + platformName: z.string(), + type: z.literal("SettingUpPlatformContext"), + }); + +export function eventListItemResponseDataSettingUpPlatformContextFromJSON( + jsonString: string, +): SafeParseResult< + EventListItemResponseDataSettingUpPlatformContext, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + EventListItemResponseDataSettingUpPlatformContext$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'EventListItemResponseDataSettingUpPlatformContext' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseDataCleaningUpEnvironment$inboundSchema: + z.ZodType = z.object( + { + stackName: z.string(), + strategyName: z.string(), + type: z.literal("CleaningUpEnvironment"), + }, + ); + +export function eventListItemResponseDataCleaningUpEnvironmentFromJSON( + jsonString: string, +): SafeParseResult< + EventListItemResponseDataCleaningUpEnvironment, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + EventListItemResponseDataCleaningUpEnvironment$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'EventListItemResponseDataCleaningUpEnvironment' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseDataCleaningUpStack$inboundSchema: z.ZodType< + EventListItemResponseDataCleaningUpStack, + unknown +> = z.object({ + stackName: z.string(), + strategyName: z.string(), + type: z.literal("CleaningUpStack"), +}); + +export function eventListItemResponseDataCleaningUpStackFromJSON( + jsonString: string, +): SafeParseResult< + EventListItemResponseDataCleaningUpStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + EventListItemResponseDataCleaningUpStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'EventListItemResponseDataCleaningUpStack' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseDataRunningTestWorker$inboundSchema: + z.ZodType = z.object({ + stackName: z.string(), + type: z.literal("RunningTestWorker"), + }); + +export function eventListItemResponseDataRunningTestWorkerFromJSON( + jsonString: string, +): SafeParseResult< + EventListItemResponseDataRunningTestWorker, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + EventListItemResponseDataRunningTestWorker$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'EventListItemResponseDataRunningTestWorker' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseDataDeployingStack$inboundSchema: z.ZodType< + EventListItemResponseDataDeployingStack, + unknown +> = z.object({ + stackName: z.string(), + type: z.literal("DeployingStack"), +}); + +export function eventListItemResponseDataDeployingStackFromJSON( + jsonString: string, +): SafeParseResult< + EventListItemResponseDataDeployingStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + EventListItemResponseDataDeployingStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'EventListItemResponseDataDeployingStack' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseDataPreparingEnvironment$inboundSchema: + z.ZodType = z.object({ + strategyName: z.string(), + type: z.literal("PreparingEnvironment"), + }); + +export function eventListItemResponseDataPreparingEnvironmentFromJSON( + jsonString: string, +): SafeParseResult< + EventListItemResponseDataPreparingEnvironment, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + EventListItemResponseDataPreparingEnvironment$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'EventListItemResponseDataPreparingEnvironment' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseDataDebuggingAgent$inboundSchema: z.ZodType< + EventListItemResponseDataDebuggingAgent, + unknown +> = z.object({ + agentId: z.string(), + debugSessionId: z.string(), + type: z.literal("DebuggingAgent"), +}); + +export function eventListItemResponseDataDebuggingAgentFromJSON( + jsonString: string, +): SafeParseResult< + EventListItemResponseDataDebuggingAgent, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + EventListItemResponseDataDebuggingAgent$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'EventListItemResponseDataDebuggingAgent' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseDataDeletingAgent$inboundSchema: z.ZodType< + EventListItemResponseDataDeletingAgent, + unknown +> = z.object({ + agentId: z.string(), + releaseId: z.string(), + type: z.literal("DeletingAgent"), +}); + +export function eventListItemResponseDataDeletingAgentFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + EventListItemResponseDataDeletingAgent$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventListItemResponseDataDeletingAgent' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseDataUpdatingAgent$inboundSchema: z.ZodType< + EventListItemResponseDataUpdatingAgent, + unknown +> = z.object({ + agentId: z.string(), + releaseId: z.string(), + type: z.literal("UpdatingAgent"), +}); + +export function eventListItemResponseDataUpdatingAgentFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + EventListItemResponseDataUpdatingAgent$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventListItemResponseDataUpdatingAgent' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseDataProvisioningAgent$inboundSchema: + z.ZodType = z.object({ + agentId: z.string(), + releaseId: z.string(), + type: z.literal("ProvisioningAgent"), + }); + +export function eventListItemResponseDataProvisioningAgentFromJSON( + jsonString: string, +): SafeParseResult< + EventListItemResponseDataProvisioningAgent, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + EventListItemResponseDataProvisioningAgent$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'EventListItemResponseDataProvisioningAgent' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseDataGeneratingTemplate$inboundSchema: + z.ZodType = z.object({ + platform: z.string(), + type: z.literal("GeneratingTemplate"), + }); + +export function eventListItemResponseDataGeneratingTemplateFromJSON( + jsonString: string, +): SafeParseResult< + EventListItemResponseDataGeneratingTemplate, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + EventListItemResponseDataGeneratingTemplate$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'EventListItemResponseDataGeneratingTemplate' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseDataGeneratingCloudFormationTemplate$inboundSchema: + z.ZodType< + EventListItemResponseDataGeneratingCloudFormationTemplate, + unknown + > = z.object({ + type: z.literal("GeneratingCloudFormationTemplate"), + }); + +export function eventListItemResponseDataGeneratingCloudFormationTemplateFromJSON( + jsonString: string, +): SafeParseResult< + EventListItemResponseDataGeneratingCloudFormationTemplate, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + EventListItemResponseDataGeneratingCloudFormationTemplate$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'EventListItemResponseDataGeneratingCloudFormationTemplate' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponsePlatform$inboundSchema: z.ZodEnum< + typeof EventListItemResponsePlatform +> = z.enum(EventListItemResponsePlatform); + +/** @internal */ +export const EventListItemResponseConfig$inboundSchema: z.ZodType< + EventListItemResponseConfig, + unknown +> = collectExtraKeys$( + z.object({ + id: z.string(), + type: z.string(), + }).catchall(z.any()), + "additionalProperties", + true, +); + +export function eventListItemResponseConfigFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => EventListItemResponseConfig$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventListItemResponseConfig' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseControllerPlatformEnum$inboundSchema: + z.ZodEnum = z.enum( + EventListItemResponseControllerPlatformEnum, + ); + +/** @internal */ +export const EventListItemResponseControllerPlatformUnion$inboundSchema: + z.ZodType = z.union([ + EventListItemResponseControllerPlatformEnum$inboundSchema, + z.any(), + ]); + +export function eventListItemResponseControllerPlatformUnionFromJSON( + jsonString: string, +): SafeParseResult< + EventListItemResponseControllerPlatformUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + EventListItemResponseControllerPlatformUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'EventListItemResponseControllerPlatformUnion' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseDependency$inboundSchema: z.ZodType< + EventListItemResponseDependency, + unknown +> = z.object({ + id: z.string(), + type: z.string(), +}); + +export function eventListItemResponseDependencyFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => EventListItemResponseDependency$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventListItemResponseDependency' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseErrorNextState$inboundSchema: z.ZodType< + EventListItemResponseErrorNextState, + unknown +> = z.object({ + code: z.string(), + context: z.nullable(z.any()).optional(), + hint: z.nullable(z.string()).optional(), + httpStatusCode: z.nullable(z.int()).optional(), + internal: z.boolean(), + message: z.string(), + retryable: z.boolean().default(false), + source: z.nullable(z.any()).optional(), +}); + +export function eventListItemResponseErrorNextStateFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + EventListItemResponseErrorNextState$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventListItemResponseErrorNextState' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseNextStateErrorUnion$inboundSchema: z.ZodType< + EventListItemResponseNextStateErrorUnion, + unknown +> = z.union([ + z.lazy(() => EventListItemResponseErrorNextState$inboundSchema), + z.any(), +]); + +export function eventListItemResponseNextStateErrorUnionFromJSON( + jsonString: string, +): SafeParseResult< + EventListItemResponseNextStateErrorUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + EventListItemResponseNextStateErrorUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'EventListItemResponseNextStateErrorUnion' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseLifecycleEnum$inboundSchema: z.ZodEnum< + typeof EventListItemResponseLifecycleEnum +> = z.enum(EventListItemResponseLifecycleEnum); + +/** @internal */ +export const EventListItemResponseLifecycleUnion$inboundSchema: z.ZodType< + EventListItemResponseLifecycleUnion, + unknown +> = z.union([EventListItemResponseLifecycleEnum$inboundSchema, z.any()]); + +export function eventListItemResponseLifecycleUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + EventListItemResponseLifecycleUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventListItemResponseLifecycleUnion' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseOutputs$inboundSchema: z.ZodType< + EventListItemResponseOutputs, + unknown +> = collectExtraKeys$( + z.object({ + type: z.string(), + }).catchall(z.any()), + "additionalProperties", + true, +); + +export function eventListItemResponseOutputsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => EventListItemResponseOutputs$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventListItemResponseOutputs' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseOutputsUnion$inboundSchema: z.ZodType< + EventListItemResponseOutputsUnion, + unknown +> = z.union([ + z.lazy(() => EventListItemResponseOutputs$inboundSchema), + z.any(), +]); + +export function eventListItemResponseOutputsUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => EventListItemResponseOutputsUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventListItemResponseOutputsUnion' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponsePreviousConfig$inboundSchema: z.ZodType< + EventListItemResponsePreviousConfig, + unknown +> = collectExtraKeys$( + z.object({ + id: z.string(), + type: z.string(), + }).catchall(z.any()), + "additionalProperties", + true, +); + +export function eventListItemResponsePreviousConfigFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + EventListItemResponsePreviousConfig$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventListItemResponsePreviousConfig' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponsePreviousConfigUnion$inboundSchema: z.ZodType< + EventListItemResponsePreviousConfigUnion, + unknown +> = z.union([ + z.lazy(() => EventListItemResponsePreviousConfig$inboundSchema), + z.any(), +]); + +export function eventListItemResponsePreviousConfigUnionFromJSON( + jsonString: string, +): SafeParseResult< + EventListItemResponsePreviousConfigUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + EventListItemResponsePreviousConfigUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'EventListItemResponsePreviousConfigUnion' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseStatus$inboundSchema: z.ZodEnum< + typeof EventListItemResponseStatus +> = z.enum(EventListItemResponseStatus); + +/** @internal */ +export const EventListItemResponseResources$inboundSchema: z.ZodType< + EventListItemResponseResources, + unknown +> = z.object({ + _internal: z.nullable(z.any()).optional(), + config: z.lazy(() => EventListItemResponseConfig$inboundSchema), + controllerPlatform: z.nullable( + z.union([ + EventListItemResponseControllerPlatformEnum$inboundSchema, + z.any(), + ]), + ).optional(), + dependencies: z.array( + z.lazy(() => EventListItemResponseDependency$inboundSchema), + ).optional(), + error: z.nullable( + z.union([ + z.lazy(() => EventListItemResponseErrorNextState$inboundSchema), + z.any(), + ]), + ).optional(), + lastFailedState: z.nullable(z.any()).optional(), + lifecycle: z.nullable( + z.union([EventListItemResponseLifecycleEnum$inboundSchema, z.any()]), + ).optional(), + outputs: z.nullable( + z.union([ + z.lazy(() => EventListItemResponseOutputs$inboundSchema), + z.any(), + ]), + ).optional(), + previousConfig: z.nullable( + z.union([ + z.lazy(() => EventListItemResponsePreviousConfig$inboundSchema), + z.any(), + ]), + ).optional(), + remoteBindingParams: z.nullable(z.any()).optional(), + retryAttempt: z.int().optional(), + status: EventListItemResponseStatus$inboundSchema, + type: z.string(), +}).transform((v) => { + return remap$(v, { + "_internal": "internal", + }); +}); + +export function eventListItemResponseResourcesFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => EventListItemResponseResources$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventListItemResponseResources' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseNextState$inboundSchema: z.ZodType< + EventListItemResponseNextState, + unknown +> = z.object({ + platform: EventListItemResponsePlatform$inboundSchema, + resourcePrefix: z.string(), + resources: z.record( + z.string(), + z.lazy(() => EventListItemResponseResources$inboundSchema), + ), +}); + +export function eventListItemResponseNextStateFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => EventListItemResponseNextState$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventListItemResponseNextState' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseDataStackStep$inboundSchema: z.ZodType< + EventListItemResponseDataStackStep, + unknown +> = z.object({ + nextState: z.lazy(() => EventListItemResponseNextState$inboundSchema), + suggestedDelayMs: z.nullable(z.int()).optional(), + type: z.literal("StackStep"), +}); + +export function eventListItemResponseDataStackStepFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + EventListItemResponseDataStackStep$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventListItemResponseDataStackStep' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseDataCompilingCode$inboundSchema: z.ZodType< + EventListItemResponseDataCompilingCode, + unknown +> = z.object({ + language: z.string(), + progress: z.nullable(z.string()).optional(), + type: z.literal("CompilingCode"), +}); + +export function eventListItemResponseDataCompilingCodeFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + EventListItemResponseDataCompilingCode$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventListItemResponseDataCompilingCode' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseDataCreatingRelease$inboundSchema: z.ZodType< + EventListItemResponseDataCreatingRelease, + unknown +> = z.object({ + project: z.string(), + type: z.literal("CreatingRelease"), +}); + +export function eventListItemResponseDataCreatingReleaseFromJSON( + jsonString: string, +): SafeParseResult< + EventListItemResponseDataCreatingRelease, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + EventListItemResponseDataCreatingRelease$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'EventListItemResponseDataCreatingRelease' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseDataPushingResource$inboundSchema: z.ZodType< + EventListItemResponseDataPushingResource, + unknown +> = z.object({ + resourceName: z.string(), + resourceType: z.string(), + type: z.literal("PushingResource"), +}); + +export function eventListItemResponseDataPushingResourceFromJSON( + jsonString: string, +): SafeParseResult< + EventListItemResponseDataPushingResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + EventListItemResponseDataPushingResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'EventListItemResponseDataPushingResource' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseDataPushingStack$inboundSchema: z.ZodType< + EventListItemResponseDataPushingStack, + unknown +> = z.object({ + destination: z.nullable(z.string()).optional(), + platform: z.string(), + stack: z.string(), + type: z.literal("PushingStack"), +}); + +export function eventListItemResponseDataPushingStackFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + EventListItemResponseDataPushingStack$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventListItemResponseDataPushingStack' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseProgress$inboundSchema: z.ZodType< + EventListItemResponseProgress, + unknown +> = z.object({ + bytesUploaded: z.int(), + layersUploaded: z.int(), + operation: z.string(), + totalBytes: z.int(), + totalLayers: z.int(), +}); + +export function eventListItemResponseProgressFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => EventListItemResponseProgress$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventListItemResponseProgress' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseProgressUnion$inboundSchema: z.ZodType< + EventListItemResponseProgressUnion, + unknown +> = z.union([ + z.lazy(() => EventListItemResponseProgress$inboundSchema), + z.any(), +]); + +export function eventListItemResponseProgressUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + EventListItemResponseProgressUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventListItemResponseProgressUnion' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseDataPushingImage$inboundSchema: z.ZodType< + EventListItemResponseDataPushingImage, + unknown +> = z.object({ + image: z.string(), + progress: z.nullable( + z.union([ + z.lazy(() => EventListItemResponseProgress$inboundSchema), + z.any(), + ]), + ).optional(), + type: z.literal("PushingImage"), +}); + +export function eventListItemResponseDataPushingImageFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + EventListItemResponseDataPushingImage$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventListItemResponseDataPushingImage' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseDataBuildingImage$inboundSchema: z.ZodType< + EventListItemResponseDataBuildingImage, + unknown +> = z.object({ + image: z.string(), + type: z.literal("BuildingImage"), +}); + +export function eventListItemResponseDataBuildingImageFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + EventListItemResponseDataBuildingImage$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventListItemResponseDataBuildingImage' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseDataBuildingResource$inboundSchema: z.ZodType< + EventListItemResponseDataBuildingResource, + unknown +> = z.object({ + relatedResources: z.array(z.string()).optional(), + resourceName: z.string(), + resourceType: z.string(), + type: z.literal("BuildingResource"), +}); + +export function eventListItemResponseDataBuildingResourceFromJSON( + jsonString: string, +): SafeParseResult< + EventListItemResponseDataBuildingResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + EventListItemResponseDataBuildingResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'EventListItemResponseDataBuildingResource' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseDataDownloadingAlienRuntime$inboundSchema: + z.ZodType = z + .object({ + targetTriple: z.string(), + type: z.literal("DownloadingAlienRuntime"), + url: z.string(), + }); + +export function eventListItemResponseDataDownloadingAlienRuntimeFromJSON( + jsonString: string, +): SafeParseResult< + EventListItemResponseDataDownloadingAlienRuntime, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + EventListItemResponseDataDownloadingAlienRuntime$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'EventListItemResponseDataDownloadingAlienRuntime' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseDataRunningPreflights$inboundSchema: + z.ZodType = z.object({ + platform: z.string(), + stack: z.string(), + type: z.literal("RunningPreflights"), + }); + +export function eventListItemResponseDataRunningPreflightsFromJSON( + jsonString: string, +): SafeParseResult< + EventListItemResponseDataRunningPreflights, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + EventListItemResponseDataRunningPreflights$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'EventListItemResponseDataRunningPreflights' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseDataBuildingStack$inboundSchema: z.ZodType< + EventListItemResponseDataBuildingStack, + unknown +> = z.object({ + stack: z.string(), + type: z.literal("BuildingStack"), +}); + +export function eventListItemResponseDataBuildingStackFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + EventListItemResponseDataBuildingStack$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventListItemResponseDataBuildingStack' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseDataFinished$inboundSchema: z.ZodType< + EventListItemResponseDataFinished, + unknown +> = z.object({ + type: z.literal("Finished"), +}); + +export function eventListItemResponseDataFinishedFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => EventListItemResponseDataFinished$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventListItemResponseDataFinished' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseDataLoadingConfiguration$inboundSchema: + z.ZodType = z.object({ + type: z.literal("LoadingConfiguration"), + }); + +export function eventListItemResponseDataLoadingConfigurationFromJSON( + jsonString: string, +): SafeParseResult< + EventListItemResponseDataLoadingConfiguration, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + EventListItemResponseDataLoadingConfiguration$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'EventListItemResponseDataLoadingConfiguration' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseDataUnion$inboundSchema: z.ZodType< + EventListItemResponseDataUnion, + unknown +> = z.union([ + z.lazy(() => EventListItemResponseDataLoadingConfiguration$inboundSchema), + z.lazy(() => EventListItemResponseDataFinished$inboundSchema), + z.lazy(() => EventListItemResponseDataBuildingStack$inboundSchema), + z.lazy(() => EventListItemResponseDataRunningPreflights$inboundSchema), + z.lazy(() => EventListItemResponseDataDownloadingAlienRuntime$inboundSchema), + z.lazy(() => EventListItemResponseDataBuildingResource$inboundSchema), + z.lazy(() => EventListItemResponseDataBuildingImage$inboundSchema), + z.lazy(() => EventListItemResponseDataPushingImage$inboundSchema), + z.lazy(() => EventListItemResponseDataPushingStack$inboundSchema), + z.lazy(() => EventListItemResponseDataPushingResource$inboundSchema), + z.lazy(() => EventListItemResponseDataCreatingRelease$inboundSchema), + z.lazy(() => EventListItemResponseDataCompilingCode$inboundSchema), + z.lazy(() => EventListItemResponseDataStackStep$inboundSchema), + z.lazy(() => + EventListItemResponseDataGeneratingCloudFormationTemplate$inboundSchema + ), + z.lazy(() => EventListItemResponseDataGeneratingTemplate$inboundSchema), + z.lazy(() => EventListItemResponseDataProvisioningAgent$inboundSchema), + z.lazy(() => EventListItemResponseDataUpdatingAgent$inboundSchema), + z.lazy(() => EventListItemResponseDataDeletingAgent$inboundSchema), + z.lazy(() => EventListItemResponseDataDebuggingAgent$inboundSchema), + z.lazy(() => EventListItemResponseDataPreparingEnvironment$inboundSchema), + z.lazy(() => EventListItemResponseDataDeployingStack$inboundSchema), + z.lazy(() => EventListItemResponseDataRunningTestWorker$inboundSchema), + z.lazy(() => EventListItemResponseDataCleaningUpStack$inboundSchema), + z.lazy(() => EventListItemResponseDataCleaningUpEnvironment$inboundSchema), + z.lazy(() => EventListItemResponseDataSettingUpPlatformContext$inboundSchema), + z.lazy(() => EventListItemResponseDataEnsuringDockerRepository$inboundSchema), + z.lazy(() => + EventListItemResponseDataDeployingCloudFormationStack$inboundSchema + ), + z.lazy(() => EventListItemResponseDataAssumingRole$inboundSchema), + z.lazy(() => + EventListItemResponseDataImportingStackStateFromCloudFormation$inboundSchema + ), + z.lazy(() => + EventListItemResponseDataDeletingCloudFormationStack$inboundSchema + ), + z.lazy(() => EventListItemResponseDataEmptyingBuckets$inboundSchema), + z.lazy(() => EventListItemResponseDataDeploymentCreated$inboundSchema), + z.lazy(() => EventListItemResponseDataDeploymentReleased$inboundSchema), + z.lazy(() => EventListItemResponseDataDeploymentFailed$inboundSchema), + z.lazy(() => EventListItemResponseDataDeploymentDegraded$inboundSchema), + z.lazy(() => EventListItemResponseDataDeploymentRecovered$inboundSchema), + z.lazy(() => EventListItemResponseDataDeploymentDeleted$inboundSchema), + z.lazy(() => EventListItemResponseDataReleaseChannelUpdated$inboundSchema), + z.lazy(() => + EventListItemResponseDataDeploymentReleaseChannelChanged$inboundSchema + ), + z.lazy(() => EventListItemResponseDataDeploymentRetryRequested$inboundSchema), + z.lazy(() => + EventListItemResponseDataDeploymentRedeployRequested$inboundSchema + ), + z.lazy(() => EventListItemResponseDataDeploymentReleasePinned$inboundSchema), + z.lazy(() => + EventListItemResponseDataDeploymentReleaseUnpinned$inboundSchema + ), + z.lazy(() => + EventListItemResponseDataDeploymentEnvironmentUpdated$inboundSchema + ), + z.lazy(() => + EventListItemResponseDataDeploymentDeletionRequested$inboundSchema + ), +]); + +export function eventListItemResponseDataUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => EventListItemResponseDataUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventListItemResponseDataUnion' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseStateSuccess$inboundSchema: z.ZodEnum< + typeof EventListItemResponseStateSuccess +> = z.enum(EventListItemResponseStateSuccess); + +/** @internal */ +export const EventListItemResponseStateStarted$inboundSchema: z.ZodEnum< + typeof EventListItemResponseStateStarted +> = z.enum(EventListItemResponseStateStarted); + +/** @internal */ +export const EventListItemResponseStateNone$inboundSchema: z.ZodEnum< + typeof EventListItemResponseStateNone +> = z.enum(EventListItemResponseStateNone); + +/** @internal */ +export const EventListItemResponseErrorFailed$inboundSchema: z.ZodType< + EventListItemResponseErrorFailed, + unknown +> = z.object({ + code: z.string(), + context: z.nullable(z.any()).optional(), + hint: z.nullable(z.string()).optional(), + httpStatusCode: z.nullable(z.int()).optional(), + internal: z.boolean(), + message: z.string(), + retryable: z.boolean().default(false), + source: z.nullable(z.any()).optional(), +}); + +export function eventListItemResponseErrorFailedFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => EventListItemResponseErrorFailed$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventListItemResponseErrorFailed' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseFailedErrorUnion$inboundSchema: z.ZodType< + EventListItemResponseFailedErrorUnion, + unknown +> = z.union([ + z.lazy(() => EventListItemResponseErrorFailed$inboundSchema), + z.any(), +]); + +export function eventListItemResponseFailedErrorUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + EventListItemResponseFailedErrorUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventListItemResponseFailedErrorUnion' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseFailed$inboundSchema: z.ZodType< + EventListItemResponseFailed, + unknown +> = z.object({ + error: z.nullable( + z.union([ + z.lazy(() => EventListItemResponseErrorFailed$inboundSchema), + z.any(), + ]), + ).optional(), +}); + +export function eventListItemResponseFailedFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => EventListItemResponseFailed$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventListItemResponseFailed' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseState$inboundSchema: z.ZodType< + EventListItemResponseState, + unknown +> = z.object({ + failed: z.lazy(() => EventListItemResponseFailed$inboundSchema), +}); + +export function eventListItemResponseStateFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => EventListItemResponseState$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventListItemResponseState' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponseStateUnion$inboundSchema: z.ZodType< + EventListItemResponseStateUnion, + unknown +> = z.union([ + z.lazy(() => EventListItemResponseState$inboundSchema), + EventListItemResponseStateNone$inboundSchema, + EventListItemResponseStateStarted$inboundSchema, + EventListItemResponseStateSuccess$inboundSchema, +]); + +export function eventListItemResponseStateUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => EventListItemResponseStateUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventListItemResponseStateUnion' from JSON`, + ); +} + +/** @internal */ +export const EventListItemResponse$inboundSchema: z.ZodType< + EventListItemResponse, + unknown +> = z.object({ + id: z.string(), + deploymentId: z.nullable(z.string()).optional(), + releaseId: z.nullable(z.string()).optional(), + debugSessionId: z.nullable(z.string()).optional(), + data: z.union([ + z.lazy(() => EventListItemResponseDataLoadingConfiguration$inboundSchema), + z.lazy(() => EventListItemResponseDataFinished$inboundSchema), + z.lazy(() => EventListItemResponseDataBuildingStack$inboundSchema), + z.lazy(() => EventListItemResponseDataRunningPreflights$inboundSchema), + z.lazy(() => + EventListItemResponseDataDownloadingAlienRuntime$inboundSchema + ), + z.lazy(() => EventListItemResponseDataBuildingResource$inboundSchema), + z.lazy(() => EventListItemResponseDataBuildingImage$inboundSchema), + z.lazy(() => EventListItemResponseDataPushingImage$inboundSchema), + z.lazy(() => EventListItemResponseDataPushingStack$inboundSchema), + z.lazy(() => EventListItemResponseDataPushingResource$inboundSchema), + z.lazy(() => EventListItemResponseDataCreatingRelease$inboundSchema), + z.lazy(() => EventListItemResponseDataCompilingCode$inboundSchema), + z.lazy(() => EventListItemResponseDataStackStep$inboundSchema), + z.lazy(() => + EventListItemResponseDataGeneratingCloudFormationTemplate$inboundSchema + ), + z.lazy(() => EventListItemResponseDataGeneratingTemplate$inboundSchema), + z.lazy(() => EventListItemResponseDataProvisioningAgent$inboundSchema), + z.lazy(() => EventListItemResponseDataUpdatingAgent$inboundSchema), + z.lazy(() => EventListItemResponseDataDeletingAgent$inboundSchema), + z.lazy(() => EventListItemResponseDataDebuggingAgent$inboundSchema), + z.lazy(() => EventListItemResponseDataPreparingEnvironment$inboundSchema), + z.lazy(() => EventListItemResponseDataDeployingStack$inboundSchema), + z.lazy(() => EventListItemResponseDataRunningTestWorker$inboundSchema), + z.lazy(() => EventListItemResponseDataCleaningUpStack$inboundSchema), + z.lazy(() => EventListItemResponseDataCleaningUpEnvironment$inboundSchema), + z.lazy(() => + EventListItemResponseDataSettingUpPlatformContext$inboundSchema + ), + z.lazy(() => + EventListItemResponseDataEnsuringDockerRepository$inboundSchema + ), + z.lazy(() => + EventListItemResponseDataDeployingCloudFormationStack$inboundSchema + ), + z.lazy(() => EventListItemResponseDataAssumingRole$inboundSchema), + z.lazy(() => + EventListItemResponseDataImportingStackStateFromCloudFormation$inboundSchema + ), + z.lazy(() => + EventListItemResponseDataDeletingCloudFormationStack$inboundSchema + ), + z.lazy(() => EventListItemResponseDataEmptyingBuckets$inboundSchema), + z.lazy(() => EventListItemResponseDataDeploymentCreated$inboundSchema), + z.lazy(() => EventListItemResponseDataDeploymentReleased$inboundSchema), + z.lazy(() => EventListItemResponseDataDeploymentFailed$inboundSchema), + z.lazy(() => EventListItemResponseDataDeploymentDegraded$inboundSchema), + z.lazy(() => EventListItemResponseDataDeploymentRecovered$inboundSchema), + z.lazy(() => EventListItemResponseDataDeploymentDeleted$inboundSchema), + z.lazy(() => EventListItemResponseDataReleaseChannelUpdated$inboundSchema), + z.lazy(() => + EventListItemResponseDataDeploymentReleaseChannelChanged$inboundSchema + ), + z.lazy(() => + EventListItemResponseDataDeploymentRetryRequested$inboundSchema + ), + z.lazy(() => + EventListItemResponseDataDeploymentRedeployRequested$inboundSchema + ), + z.lazy(() => + EventListItemResponseDataDeploymentReleasePinned$inboundSchema + ), + z.lazy(() => + EventListItemResponseDataDeploymentReleaseUnpinned$inboundSchema + ), + z.lazy(() => + EventListItemResponseDataDeploymentEnvironmentUpdated$inboundSchema + ), + z.lazy(() => + EventListItemResponseDataDeploymentDeletionRequested$inboundSchema + ), + ]), + state: z.union([ + z.lazy(() => EventListItemResponseState$inboundSchema), + EventListItemResponseStateNone$inboundSchema, + EventListItemResponseStateStarted$inboundSchema, + EventListItemResponseStateSuccess$inboundSchema, + ]), + projectId: z.string(), + createdAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), + workspaceId: z.string(), + releaseCreatedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ).optional(), +}); + +export function eventListItemResponseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => EventListItemResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'EventListItemResponse' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/externalaibinding.ts b/client-sdks/platform/typescript/src/models/externalaibinding.ts new file mode 100644 index 000000000..c758fb7fe --- /dev/null +++ b/client-sdks/platform/typescript/src/models/externalaibinding.ts @@ -0,0 +1,87 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { ClosedEnum } from "../types/enums.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +export const ExternalAIBindingProvider = { + Anthropic: "anthropic", + Databricks: "databricks", + Openai: "openai", +} as const; +export type ExternalAIBindingProvider = ClosedEnum< + typeof ExternalAIBindingProvider +>; + +export type RequiredModelCoverage = { + publicModelId: string; + available: boolean; +}; + +export type ExternalAIBinding = { + id: string; + provider: ExternalAIBindingProvider; + providerEndpoint: string | null; + providerClientId: string | null; + keyFingerprint: string; + availableProviderModelIds: Array; + requiredModelCoverage: Array; + verifiedAt: Date; + updatedAt: Date; +}; + +/** @internal */ +export const ExternalAIBindingProvider$inboundSchema: z.ZodEnum< + typeof ExternalAIBindingProvider +> = z.enum(ExternalAIBindingProvider); + +/** @internal */ +export const RequiredModelCoverage$inboundSchema: z.ZodType< + RequiredModelCoverage, + unknown +> = z.object({ + publicModelId: z.string(), + available: z.boolean(), +}); + +export function requiredModelCoverageFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => RequiredModelCoverage$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'RequiredModelCoverage' from JSON`, + ); +} + +/** @internal */ +export const ExternalAIBinding$inboundSchema: z.ZodType< + ExternalAIBinding, + unknown +> = z.object({ + id: z.string(), + provider: ExternalAIBindingProvider$inboundSchema, + providerEndpoint: z.nullable(z.string()), + providerClientId: z.nullable(z.string()), + keyFingerprint: z.string(), + availableProviderModelIds: z.array(z.string()), + requiredModelCoverage: z.array( + z.lazy(() => RequiredModelCoverage$inboundSchema), + ), + verifiedAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), + updatedAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), +}); + +export function externalAIBindingFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ExternalAIBinding$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ExternalAIBinding' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/externalaibindingstate.ts b/client-sdks/platform/typescript/src/models/externalaibindingstate.ts new file mode 100644 index 000000000..f4931d2c1 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/externalaibindingstate.ts @@ -0,0 +1,34 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; +import { + ExternalAIBinding, + ExternalAIBinding$inboundSchema, +} from "./externalaibinding.js"; + +export type ExternalAIBindingState = { + binding: ExternalAIBinding | null; +}; + +/** @internal */ +export const ExternalAIBindingState$inboundSchema: z.ZodType< + ExternalAIBindingState, + unknown +> = z.object({ + binding: z.nullable(ExternalAIBinding$inboundSchema), +}); + +export function externalAIBindingStateFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ExternalAIBindingState$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ExternalAIBindingState' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/forwardimportrequest.ts b/client-sdks/platform/typescript/src/models/forwardimportrequest.ts index d95b8bfe5..c5789df87 100644 --- a/client-sdks/platform/typescript/src/models/forwardimportrequest.ts +++ b/client-sdks/platform/typescript/src/models/forwardimportrequest.ts @@ -26,9 +26,11 @@ export type ForwardImportRequestMode = ClosedEnum< * Exact item selected from a tailored customer setup link. */ export const ForwardImportRequestSetupItem = { - AlienStack: "alien-stack", + Deployment: "deployment", Models: "models", Keys: "keys", + Bucket: "bucket", + Registry: "registry", } as const; /** * Exact item selected from a tailored customer setup link. diff --git a/client-sdks/platform/typescript/src/models/generatemanagerbindingtokenrequest.ts b/client-sdks/platform/typescript/src/models/generatemanagerbindingtokenrequest.ts new file mode 100644 index 000000000..e105be593 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/generatemanagerbindingtokenrequest.ts @@ -0,0 +1,35 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; + +export type GenerateManagerBindingTokenRequest = { + /** + * Unique identifier for the deployment. + */ + deploymentId: string; +}; + +/** @internal */ +export type GenerateManagerBindingTokenRequest$Outbound = { + deploymentId: string; +}; + +/** @internal */ +export const GenerateManagerBindingTokenRequest$outboundSchema: z.ZodType< + GenerateManagerBindingTokenRequest$Outbound, + GenerateManagerBindingTokenRequest +> = z.object({ + deploymentId: z.string(), +}); + +export function generateManagerBindingTokenRequestToJSON( + generateManagerBindingTokenRequest: GenerateManagerBindingTokenRequest, +): string { + return JSON.stringify( + GenerateManagerBindingTokenRequest$outboundSchema.parse( + generateManagerBindingTokenRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/generatemanagerbindingtokenresponse.ts b/client-sdks/platform/typescript/src/models/generatemanagerbindingtokenresponse.ts new file mode 100644 index 000000000..b975aad84 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/generatemanagerbindingtokenresponse.ts @@ -0,0 +1,51 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { ClosedEnum } from "../types/enums.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +export const GenerateManagerBindingTokenResponseTokenType = { + Bearer: "Bearer", +} as const; +export type GenerateManagerBindingTokenResponseTokenType = ClosedEnum< + typeof GenerateManagerBindingTokenResponseTokenType +>; + +export type GenerateManagerBindingTokenResponse = { + accessToken: string; + expiresIn: number | null; + tokenType: GenerateManagerBindingTokenResponseTokenType; + managerUrl: string; +}; + +/** @internal */ +export const GenerateManagerBindingTokenResponseTokenType$inboundSchema: + z.ZodEnum = z.enum( + GenerateManagerBindingTokenResponseTokenType, + ); + +/** @internal */ +export const GenerateManagerBindingTokenResponse$inboundSchema: z.ZodType< + GenerateManagerBindingTokenResponse, + unknown +> = z.object({ + accessToken: z.string(), + expiresIn: z.nullable(z.number()), + tokenType: GenerateManagerBindingTokenResponseTokenType$inboundSchema, + managerUrl: z.string(), +}); + +export function generateManagerBindingTokenResponseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + GenerateManagerBindingTokenResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GenerateManagerBindingTokenResponse' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/gitmetadata.ts b/client-sdks/platform/typescript/src/models/gitmetadata.ts index 2f7e5b96f..1d8aace61 100644 --- a/client-sdks/platform/typescript/src/models/gitmetadata.ts +++ b/client-sdks/platform/typescript/src/models/gitmetadata.ts @@ -43,7 +43,7 @@ export type GitMetadata = { */ commitAuthorName?: string | null | undefined; /** - * The email of the author of the commit (from git config) + * The author identity recorded by Git. This is not guaranteed to be an RFC-valid email address. */ commitAuthorEmail?: string | null | undefined; /** diff --git a/client-sdks/platform/typescript/src/models/importsource.ts b/client-sdks/platform/typescript/src/models/importsource.ts index 296afaf1c..bfa7668d8 100644 --- a/client-sdks/platform/typescript/src/models/importsource.ts +++ b/client-sdks/platform/typescript/src/models/importsource.ts @@ -36,7 +36,29 @@ export const ImportSourcePlatform = { */ export type ImportSourcePlatform = ClosedEnum; +/** + * Failure-domain policy selected for a compute pool. + */ +export type ImportSourceFailureDomains2 = { + /** + * Concrete provider domains selected during setup. + * + * @remarks + * Empty delegates deterministic selection to the provider setup implementation. + */ + selectedFailureDomains?: Array | undefined; + /** + * Number of distinct failure domains across which new stateful replicas may be spread. + */ + spread: number; +}; + +export type ImportSourceFailureDomainsUnion2 = + | ImportSourceFailureDomains2 + | any; + export type ImportSourcePoolsAutoscale = { + failureDomains?: ImportSourceFailureDomains2 | any | null | undefined; /** * Provider machine type selected for this deployment. */ @@ -52,7 +74,29 @@ export type ImportSourcePoolsAutoscale = { mode: "autoscale"; }; +/** + * Failure-domain policy selected for a compute pool. + */ +export type ImportSourceFailureDomains1 = { + /** + * Concrete provider domains selected during setup. + * + * @remarks + * Empty delegates deterministic selection to the provider setup implementation. + */ + selectedFailureDomains?: Array | undefined; + /** + * Number of distinct failure domains across which new stateful replicas may be spread. + */ + spread: number; +}; + +export type ImportSourceFailureDomainsUnion1 = + | ImportSourceFailureDomains1 + | any; + export type ImportSourcePoolsFixed = { + failureDomains?: ImportSourceFailureDomains1 | any | null | undefined; /** * Provider machine type selected for this deployment. */ @@ -1293,8 +1337,62 @@ export const ImportSourcePlatform$outboundSchema: z.ZodEnum< typeof ImportSourcePlatform > = z.enum(ImportSourcePlatform); +/** @internal */ +export type ImportSourceFailureDomains2$Outbound = { + selectedFailureDomains?: Array | undefined; + spread: number; +}; + +/** @internal */ +export const ImportSourceFailureDomains2$outboundSchema: z.ZodType< + ImportSourceFailureDomains2$Outbound, + ImportSourceFailureDomains2 +> = z.object({ + selectedFailureDomains: z.array(z.string()).optional(), + spread: z.int(), +}); + +export function importSourceFailureDomains2ToJSON( + importSourceFailureDomains2: ImportSourceFailureDomains2, +): string { + return JSON.stringify( + ImportSourceFailureDomains2$outboundSchema.parse( + importSourceFailureDomains2, + ), + ); +} + +/** @internal */ +export type ImportSourceFailureDomainsUnion2$Outbound = + | ImportSourceFailureDomains2$Outbound + | any; + +/** @internal */ +export const ImportSourceFailureDomainsUnion2$outboundSchema: z.ZodType< + ImportSourceFailureDomainsUnion2$Outbound, + ImportSourceFailureDomainsUnion2 +> = z.union([ + z.lazy(() => ImportSourceFailureDomains2$outboundSchema), + z.any(), +]); + +export function importSourceFailureDomainsUnion2ToJSON( + importSourceFailureDomainsUnion2: ImportSourceFailureDomainsUnion2, +): string { + return JSON.stringify( + ImportSourceFailureDomainsUnion2$outboundSchema.parse( + importSourceFailureDomainsUnion2, + ), + ); +} + /** @internal */ export type ImportSourcePoolsAutoscale$Outbound = { + failure_domains?: + | ImportSourceFailureDomains2$Outbound + | any + | null + | undefined; machine?: string | null | undefined; max: number; min: number; @@ -1306,10 +1404,20 @@ export const ImportSourcePoolsAutoscale$outboundSchema: z.ZodType< ImportSourcePoolsAutoscale$Outbound, ImportSourcePoolsAutoscale > = z.object({ + failureDomains: z.nullable( + z.union([ + z.lazy(() => ImportSourceFailureDomains2$outboundSchema), + z.any(), + ]), + ).optional(), machine: z.nullable(z.string()).optional(), max: z.int(), min: z.int(), mode: z.literal("autoscale"), +}).transform((v) => { + return remap$(v, { + failureDomains: "failure_domains", + }); }); export function importSourcePoolsAutoscaleToJSON( @@ -1320,8 +1428,62 @@ export function importSourcePoolsAutoscaleToJSON( ); } +/** @internal */ +export type ImportSourceFailureDomains1$Outbound = { + selectedFailureDomains?: Array | undefined; + spread: number; +}; + +/** @internal */ +export const ImportSourceFailureDomains1$outboundSchema: z.ZodType< + ImportSourceFailureDomains1$Outbound, + ImportSourceFailureDomains1 +> = z.object({ + selectedFailureDomains: z.array(z.string()).optional(), + spread: z.int(), +}); + +export function importSourceFailureDomains1ToJSON( + importSourceFailureDomains1: ImportSourceFailureDomains1, +): string { + return JSON.stringify( + ImportSourceFailureDomains1$outboundSchema.parse( + importSourceFailureDomains1, + ), + ); +} + +/** @internal */ +export type ImportSourceFailureDomainsUnion1$Outbound = + | ImportSourceFailureDomains1$Outbound + | any; + +/** @internal */ +export const ImportSourceFailureDomainsUnion1$outboundSchema: z.ZodType< + ImportSourceFailureDomainsUnion1$Outbound, + ImportSourceFailureDomainsUnion1 +> = z.union([ + z.lazy(() => ImportSourceFailureDomains1$outboundSchema), + z.any(), +]); + +export function importSourceFailureDomainsUnion1ToJSON( + importSourceFailureDomainsUnion1: ImportSourceFailureDomainsUnion1, +): string { + return JSON.stringify( + ImportSourceFailureDomainsUnion1$outboundSchema.parse( + importSourceFailureDomainsUnion1, + ), + ); +} + /** @internal */ export type ImportSourcePoolsFixed$Outbound = { + failure_domains?: + | ImportSourceFailureDomains1$Outbound + | any + | null + | undefined; machine?: string | null | undefined; machines: number; mode: "fixed"; @@ -1332,9 +1494,19 @@ export const ImportSourcePoolsFixed$outboundSchema: z.ZodType< ImportSourcePoolsFixed$Outbound, ImportSourcePoolsFixed > = z.object({ + failureDomains: z.nullable( + z.union([ + z.lazy(() => ImportSourceFailureDomains1$outboundSchema), + z.any(), + ]), + ).optional(), machine: z.nullable(z.string()).optional(), machines: z.int(), mode: z.literal("fixed"), +}).transform((v) => { + return remap$(v, { + failureDomains: "failure_domains", + }); }); export function importSourcePoolsFixedToJSON( diff --git a/client-sdks/platform/typescript/src/models/index.ts b/client-sdks/platform/typescript/src/models/index.ts index 30ec1b1ec..5c59b8bc0 100644 --- a/client-sdks/platform/typescript/src/models/index.ts +++ b/client-sdks/platform/typescript/src/models/index.ts @@ -2,28 +2,55 @@ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. */ +export * from "./acceptworkspaceinvitationresponse.js"; +export * from "./agentsessionapprovalgrantedevent.js"; +export * from "./agentsessionapprovalrequestedevent.js"; +export * from "./agentsessionapproveresponse.js"; +export * from "./agentsessiondetail.js"; +export * from "./agentsessionevent.js"; +export * from "./agentsessioneventsresponse.js"; +export * from "./agentsessioneventstruncatedevent.js"; +export * from "./agentsessionlistitem.js"; +export * from "./agentsessionlistresponse.js"; +export * from "./agentsessionmarkdownevent.js"; +export * from "./agentsessionrestartedevent.js"; +export * from "./agentsessionstatusevent.js"; +export * from "./agentsessionstepevent.js"; +export * from "./agentsessionstopresponse.js"; +export * from "./agentsessionsubject.js"; +export * from "./agentsessiontoolcallevent.js"; +export * from "./agentsessiontoolresultevent.js"; +export * from "./agentsettings.js"; export * from "./apierror.js"; export * from "./apikey.js"; export * from "./apikeydeploymentsetupconfig.js"; export * from "./apikeydeploymentsetupenvironmentvariable.js"; +export * from "./applycontainerregistrysnapshotresponse.js"; export * from "./billingauditlogrow.js"; export * from "./billingfeatureflags.js"; export * from "./billinglimits.js"; export * from "./billingplanstatus.js"; export * from "./cancelmachinesmachinedrainresponse.js"; +export * from "./capabilitymaterialization.js"; export * from "./cloudregionsresponse.js"; export * from "./command.js"; +export * from "./commandbootstraprequest.js"; +export * from "./commandbootstrapresponse.js"; export * from "./commanddeploymentgroupinfo.js"; export * from "./commanddeploymentinfo.js"; export * from "./commandlistitemresponse.js"; export * from "./commandprojectinfo.js"; +export * from "./commandreceiverbootstraptarget.js"; export * from "./completecommandrequest.js"; export * from "./completecommandresponse.js"; -export * from "./configurecustomermodelsrequest.js"; +export * from "./configuremodelsrequest.js"; +export * from "./containerregistrymanagersnapshot.js"; +export * from "./containerregistrystate.js"; export * from "./createapikeyrequest.js"; export * from "./createapikeyresponse.js"; export * from "./createcommandrequest.js"; export * from "./createcommandresponse.js"; +export * from "./createcontainerregistrycredentialresponse.js"; export * from "./createdebugsessionrequest.js"; export * from "./createdeploymentgrouprequest.js"; export * from "./createdeploymentgrouptokenrequest.js"; @@ -38,8 +65,6 @@ export * from "./createreleaserequest.js"; export * from "./createsetuplinkrequest.js"; export * from "./createsetuplinkresponse.js"; export * from "./createsetupregistrationoperationrequest.js"; -export * from "./customerconnectionmaterialization.js"; -export * from "./customerconnections.js"; export * from "./debugpackagepresignedurls.js"; export * from "./debugsession.js"; export * from "./debugsessionlistresponse.js"; @@ -77,8 +102,9 @@ export * from "./deploymentsetupmethod.js"; export * from "./deploymentsetuppolicy.js"; export * from "./deploymentsetupstacksettingspolicy.js"; export * from "./deploymentstats.js"; -export * from "./directanthropicbinding.js"; -export * from "./directanthropicbindingstate.js"; +export * from "./deploymentupdateoperationstatus.js"; +export * from "./deploymentupdateoperationsummary.js"; +export * from "./deploymentupdatereason.js"; export * from "./dispatchcommandrequest.js"; export * from "./dispatchcommandresponse.js"; export * from "./domainendpoint.js"; @@ -95,7 +121,12 @@ export * from "./ensuredeploymentgroupbynamerequest.js"; export * from "./environmentvariableconfig.js"; export * from "./environmentvariabletype.js"; export * from "./event.js"; +export * from "./eventlistitemresponse.js"; +export * from "./externalaibinding.js"; +export * from "./externalaibindingstate.js"; export * from "./forwardimportrequest.js"; +export * from "./generatemanagerbindingtokenrequest.js"; +export * from "./generatemanagerbindingtokenresponse.js"; export * from "./generatemanagertokenrequest.js"; export * from "./generatemanagertokenresponse.js"; export * from "./githubprovider.js"; @@ -109,12 +140,15 @@ export * from "./importedresource.js"; export * from "./importsource.js"; export * from "./importsourcekind.js"; export * from "./incrementcommandattemptresponse.js"; +export * from "./invokeoperationrequest.js"; +export * from "./invokeoperationresponse.js"; export * from "./kubernetesbaseplatform.js"; export * from "./kubernetesclustersource.js"; export * from "./listcommanddeploymentsresponse.js"; export * from "./listcommandnamesresponse.js"; export * from "./listmachinesinventoryresponse.js"; export * from "./listmachinesjointokensresponse.js"; +export * from "./listoperationspluginsresponse.js"; export * from "./machinescapacitymetric.js"; export * from "./machinesdrainblocker.js"; export * from "./machinesinventoryitem.js"; @@ -134,6 +168,12 @@ export * from "./managerstatus.js"; export * from "./membership.js"; export * from "./newdeploymentrequest.js"; export * from "./newmanagerrequest.js"; +export * from "./operationsbundleuploadurlrequest.js"; +export * from "./operationsbundleuploadurlresponse.js"; +export * from "./operationsplugin.js"; +export * from "./operationspluginoperation.js"; +export * from "./operationspolicyresponse.js"; +export * from "./operationspolicyrule.js"; export * from "./operatorcapabilityreport.js"; export * from "./operatorcapabilitystate.js"; export * from "./package.js"; @@ -146,15 +186,26 @@ export * from "./prepareoperatormanifestpackageresponse.js"; export * from "./privatemanagercloud.js"; export * from "./privatemanagersetupmethod.js"; export * from "./project.js"; +export * from "./projectcapabilities.js"; +export * from "./projectcapabilityoverview.js"; export * from "./projectgcpoauthprovider.js"; export * from "./projectlistitemresponse.js"; export * from "./projectreleaseinfo.js"; export * from "./projectrole.js"; export * from "./projectscope.js"; -export * from "./putdirectanthropicbindingrequest.js"; +export * from "./publishoperationspluginrequest.js"; +export * from "./publishoperationspluginresponse.js"; +export * from "./putexternalaibindingrequestunion.js"; export * from "./release.js"; export * from "./releaseauthorfilteritem.js"; +export * from "./releasechannel.js"; +export * from "./releasedeploymentitem.js"; +export * from "./releasedeploymentsresponse.js"; export * from "./releaselistitemresponse.js"; +export * from "./releaserolloutstate.js"; +export * from "./releaserolloutstatecounts.js"; +export * from "./remotebindingsexternalaccessrequest.js"; +export * from "./remotebindingsexternalaccessresponse.js"; export * from "./removemachinesmachineresponse.js"; export * from "./renderoperatormanifestrequest.js"; export * from "./renderoperatormanifestresponse.js"; @@ -172,6 +223,8 @@ export * from "./serviceaccountsubject.js"; export * from "./setdeploymentgroupexternalidrequest.js"; export * from "./setfirstpartydeploymentinputsrequest.js"; export * from "./setfirstpartydeploymentinputsresponse.js"; +export * from "./setoperationspluginenabledrequest.js"; +export * from "./setoperationspluginenabledresponse.js"; export * from "./setupfingerprintinfo.js"; export * from "./setupitemstatus.js"; export * from "./setupregistrationaction.js"; @@ -179,6 +232,12 @@ export * from "./setupregistrationcloudformationtarget.js"; export * from "./setupregistrationoperationresponse.js"; export * from "./setupregistrationoperationresult.js"; export * from "./setupregistrationoperationstatus.js"; +export * from "./slackchannel.js"; +export * from "./slackchannelsresponse.js"; +export * from "./slackinstallurlresponse.js"; +export * from "./slackintegrationstatus.js"; +export * from "./slacknotificationchannelrequest.js"; +export * from "./slacknotificationchannelresponse.js"; export * from "./stackbyplatform.js"; export * from "./stackinputvaluerequest.js"; export * from "./subject.js"; @@ -193,6 +252,7 @@ export * from "./synclistresponse.js"; export * from "./syncreconcilerequest.js"; export * from "./syncreconcileresponse.js"; export * from "./syncreleaserequest.js"; +export * from "./syncrenewrequest.js"; export * from "./updateapikeyrequest.js"; export * from "./updatecommandrequest.js"; export * from "./updatedebugsessionrequest.js"; @@ -203,14 +263,19 @@ export * from "./updatedeploymentinputsresponse.js"; export * from "./updatedeploymentsetuppolicy.js"; export * from "./updatemanagerdomainbinding.js"; export * from "./updatemanagerrequest.js"; +export * from "./updateoperationspolicyrequest.js"; export * from "./updateproject.js"; export * from "./updateprojectgcpoauthprovider.js"; +export * from "./updateworkspacesettingsrequest.js"; export * from "./userprofile.js"; export * from "./userprofilesetuprequest.js"; export * from "./userrole.js"; export * from "./usersubject.js"; export * from "./workspace.js"; export * from "./workspacebillingentitlements.js"; +export * from "./workspaceinvitation.js"; +export * from "./workspaceinvitationpreview.js"; +export * from "./workspaceinvitelink.js"; export * from "./workspacemember.js"; export * from "./workspacerole.js"; export * from "./workspacescope.js"; diff --git a/client-sdks/platform/typescript/src/models/invokeoperationrequest.ts b/client-sdks/platform/typescript/src/models/invokeoperationrequest.ts new file mode 100644 index 000000000..91f29e05c --- /dev/null +++ b/client-sdks/platform/typescript/src/models/invokeoperationrequest.ts @@ -0,0 +1,51 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; + +export type InvokeOperationRequest = { + /** + * Deployment to run the operation against. + */ + deploymentId: string; + /** + * Plugin name. + */ + plugin: string; + /** + * Operation name exposed by the plugin. + */ + operation: string; + /** + * JSON params passed to the operation. + */ + params?: any | null | undefined; +}; + +/** @internal */ +export type InvokeOperationRequest$Outbound = { + deploymentId: string; + plugin: string; + operation: string; + params?: any | null | undefined; +}; + +/** @internal */ +export const InvokeOperationRequest$outboundSchema: z.ZodType< + InvokeOperationRequest$Outbound, + InvokeOperationRequest +> = z.object({ + deploymentId: z.string(), + plugin: z.string(), + operation: z.string(), + params: z.nullable(z.any()).optional(), +}); + +export function invokeOperationRequestToJSON( + invokeOperationRequest: InvokeOperationRequest, +): string { + return JSON.stringify( + InvokeOperationRequest$outboundSchema.parse(invokeOperationRequest), + ); +} diff --git a/client-sdks/platform/typescript/src/models/invokeoperationresponse.ts b/client-sdks/platform/typescript/src/models/invokeoperationresponse.ts new file mode 100644 index 000000000..b3725904e --- /dev/null +++ b/client-sdks/platform/typescript/src/models/invokeoperationresponse.ts @@ -0,0 +1,111 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { ClosedEnum } from "../types/enums.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +/** + * The operation's declared risk tier (informational). + */ +export const InvokeOperationResponseTier = { + ReadOnly: "read-only", + Mutating: "mutating", + Destructive: "destructive", +} as const; +/** + * The operation's declared risk tier (informational). + */ +export type InvokeOperationResponseTier = ClosedEnum< + typeof InvokeOperationResponseTier +>; + +/** + * The approval decision the policy resolved to. + */ +export const InvokeOperationResponseDecision = { + Auto: "auto", + Manual: "manual", +} as const; +/** + * The approval decision the policy resolved to. + */ +export type InvokeOperationResponseDecision = ClosedEnum< + typeof InvokeOperationResponseDecision +>; + +/** + * dispatched: auto-approved and running. pending-approval: needs customer sign-off. + */ +export const InvokeOperationResponseStatus = { + Dispatched: "dispatched", + PendingApproval: "pending-approval", +} as const; +/** + * dispatched: auto-approved and running. pending-approval: needs customer sign-off. + */ +export type InvokeOperationResponseStatus = ClosedEnum< + typeof InvokeOperationResponseStatus +>; + +export type InvokeOperationResponse = { + plugin: string; + operation: string; + /** + * The operation's declared risk tier (informational). + */ + tier: InvokeOperationResponseTier; + /** + * The approval decision the policy resolved to. + */ + decision: InvokeOperationResponseDecision; + /** + * dispatched: auto-approved and running. pending-approval: needs customer sign-off. + */ + status: InvokeOperationResponseStatus; + /** + * The created operation-command id when dispatched (absent when pending). + */ + commandId?: string | undefined; +}; + +/** @internal */ +export const InvokeOperationResponseTier$inboundSchema: z.ZodEnum< + typeof InvokeOperationResponseTier +> = z.enum(InvokeOperationResponseTier); + +/** @internal */ +export const InvokeOperationResponseDecision$inboundSchema: z.ZodEnum< + typeof InvokeOperationResponseDecision +> = z.enum(InvokeOperationResponseDecision); + +/** @internal */ +export const InvokeOperationResponseStatus$inboundSchema: z.ZodEnum< + typeof InvokeOperationResponseStatus +> = z.enum(InvokeOperationResponseStatus); + +/** @internal */ +export const InvokeOperationResponse$inboundSchema: z.ZodType< + InvokeOperationResponse, + unknown +> = z.object({ + plugin: z.string(), + operation: z.string(), + tier: InvokeOperationResponseTier$inboundSchema, + decision: InvokeOperationResponseDecision$inboundSchema, + status: InvokeOperationResponseStatus$inboundSchema, + commandId: z.string().optional(), +}); + +export function invokeOperationResponseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => InvokeOperationResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'InvokeOperationResponse' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/listoperationspluginsresponse.ts b/client-sdks/platform/typescript/src/models/listoperationspluginsresponse.ts new file mode 100644 index 000000000..908a038d3 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/listoperationspluginsresponse.ts @@ -0,0 +1,34 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; +import { + OperationsPlugin, + OperationsPlugin$inboundSchema, +} from "./operationsplugin.js"; + +export type ListOperationsPluginsResponse = { + plugins: Array; +}; + +/** @internal */ +export const ListOperationsPluginsResponse$inboundSchema: z.ZodType< + ListOperationsPluginsResponse, + unknown +> = z.object({ + plugins: z.array(OperationsPlugin$inboundSchema), +}); + +export function listOperationsPluginsResponseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ListOperationsPluginsResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ListOperationsPluginsResponse' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/managerretryresponse.ts b/client-sdks/platform/typescript/src/models/managerretryresponse.ts index 9416364c2..6f7a1bd94 100644 --- a/client-sdks/platform/typescript/src/models/managerretryresponse.ts +++ b/client-sdks/platform/typescript/src/models/managerretryresponse.ts @@ -22,9 +22,11 @@ import { } from "./managerretrydeploymentresponse.js"; export const ManagerRetryResponseItemEnum = { - AlienStack: "alien-stack", + Deployment: "deployment", Models: "models", Keys: "keys", + Bucket: "bucket", + Registry: "registry", } as const; export type ManagerRetryResponseItemEnum = ClosedEnum< typeof ManagerRetryResponseItemEnum @@ -33,6 +35,8 @@ export type ManagerRetryResponseItemEnum = ClosedEnum< export const ManagerRetryResponseDefinitionId = { CustomerAi: "customer-ai", CustomerKey: "customer-key", + CustomerStorage: "customer-storage", + CustomerRegistry: "customer-registry", } as const; export type ManagerRetryResponseDefinitionId = ClosedEnum< typeof ManagerRetryResponseDefinitionId @@ -48,8 +52,8 @@ export type ManagerRetryResponseSourceBuiltIn = { sourceReleaseId: string; }; -export type ManagerRetryResponseSourceApplicationRelease = { - type: "application-release"; +export type ManagerRetryResponseSourceProjectRelease = { + type: "project-release"; releaseChannel: string; /** * Unique identifier for the release. @@ -59,7 +63,7 @@ export type ManagerRetryResponseSourceApplicationRelease = { }; export type ManagerRetryResponseSourceUnion = - | ManagerRetryResponseSourceApplicationRelease + | ManagerRetryResponseSourceProjectRelease | ManagerRetryResponseSourceBuiltIn; export const ManagerRetryResponseAllowedProvider = { @@ -67,6 +71,8 @@ export const ManagerRetryResponseAllowedProvider = { GcpVertex: "gcp-vertex", AzureFoundry: "azure-foundry", Anthropic: "anthropic", + Databricks: "databricks", + Openai: "openai", } as const; export type ManagerRetryResponseAllowedProvider = ClosedEnum< typeof ManagerRetryResponseAllowedProvider @@ -95,7 +101,7 @@ export type ManagerRetryResponseConfiguration = { export type ManagerRetryResponseItem = { item: ManagerRetryResponseItemEnum; source: - | ManagerRetryResponseSourceApplicationRelease + | ManagerRetryResponseSourceProjectRelease | ManagerRetryResponseSourceBuiltIn; required: boolean; configuration?: ManagerRetryResponseConfiguration | undefined; @@ -130,7 +136,29 @@ export type ManagerRetryResponseSetupConfig = { environmentVariables: Array; }; +/** + * Failure-domain policy selected for a compute pool. + */ +export type ManagerRetryResponseFailureDomains6 = { + /** + * Concrete provider domains selected during setup. + * + * @remarks + * Empty delegates deterministic selection to the provider setup implementation. + */ + selectedFailureDomains?: Array | undefined; + /** + * Number of distinct failure domains across which new stateful replicas may be spread. + */ + spread: number; +}; + +export type ManagerRetryResponseFailureDomainsUnion6 = + | ManagerRetryResponseFailureDomains6 + | any; + export type ManagerRetryResponsePoolsAutoscale3 = { + failureDomains?: ManagerRetryResponseFailureDomains6 | any | null | undefined; /** * Provider machine type selected for this deployment. */ @@ -146,7 +174,29 @@ export type ManagerRetryResponsePoolsAutoscale3 = { mode: "autoscale"; }; +/** + * Failure-domain policy selected for a compute pool. + */ +export type ManagerRetryResponseFailureDomains5 = { + /** + * Concrete provider domains selected during setup. + * + * @remarks + * Empty delegates deterministic selection to the provider setup implementation. + */ + selectedFailureDomains?: Array | undefined; + /** + * Number of distinct failure domains across which new stateful replicas may be spread. + */ + spread: number; +}; + +export type ManagerRetryResponseFailureDomainsUnion5 = + | ManagerRetryResponseFailureDomains5 + | any; + export type ManagerRetryResponsePoolsFixed3 = { + failureDomains?: ManagerRetryResponseFailureDomains5 | any | null | undefined; /** * Provider machine type selected for this deployment. */ @@ -1292,7 +1342,29 @@ export type ManagerRetryResponseSetupTerraform = { stackSettings: ManagerRetryResponseStackSettings3; }; +/** + * Failure-domain policy selected for a compute pool. + */ +export type ManagerRetryResponseFailureDomains4 = { + /** + * Concrete provider domains selected during setup. + * + * @remarks + * Empty delegates deterministic selection to the provider setup implementation. + */ + selectedFailureDomains?: Array | undefined; + /** + * Number of distinct failure domains across which new stateful replicas may be spread. + */ + spread: number; +}; + +export type ManagerRetryResponseFailureDomainsUnion4 = + | ManagerRetryResponseFailureDomains4 + | any; + export type ManagerRetryResponsePoolsAutoscale2 = { + failureDomains?: ManagerRetryResponseFailureDomains4 | any | null | undefined; /** * Provider machine type selected for this deployment. */ @@ -1308,7 +1380,29 @@ export type ManagerRetryResponsePoolsAutoscale2 = { mode: "autoscale"; }; +/** + * Failure-domain policy selected for a compute pool. + */ +export type ManagerRetryResponseFailureDomains3 = { + /** + * Concrete provider domains selected during setup. + * + * @remarks + * Empty delegates deterministic selection to the provider setup implementation. + */ + selectedFailureDomains?: Array | undefined; + /** + * Number of distinct failure domains across which new stateful replicas may be spread. + */ + spread: number; +}; + +export type ManagerRetryResponseFailureDomainsUnion3 = + | ManagerRetryResponseFailureDomains3 + | any; + export type ManagerRetryResponsePoolsFixed2 = { + failureDomains?: ManagerRetryResponseFailureDomains3 | any | null | undefined; /** * Provider machine type selected for this deployment. */ @@ -2449,7 +2543,29 @@ export type ManagerRetryResponseSetupGoogleOauth = { stackSettings: ManagerRetryResponseStackSettings2; }; +/** + * Failure-domain policy selected for a compute pool. + */ +export type ManagerRetryResponseFailureDomains2 = { + /** + * Concrete provider domains selected during setup. + * + * @remarks + * Empty delegates deterministic selection to the provider setup implementation. + */ + selectedFailureDomains?: Array | undefined; + /** + * Number of distinct failure domains across which new stateful replicas may be spread. + */ + spread: number; +}; + +export type ManagerRetryResponseFailureDomainsUnion2 = + | ManagerRetryResponseFailureDomains2 + | any; + export type ManagerRetryResponsePoolsAutoscale1 = { + failureDomains?: ManagerRetryResponseFailureDomains2 | any | null | undefined; /** * Provider machine type selected for this deployment. */ @@ -2465,7 +2581,29 @@ export type ManagerRetryResponsePoolsAutoscale1 = { mode: "autoscale"; }; +/** + * Failure-domain policy selected for a compute pool. + */ +export type ManagerRetryResponseFailureDomains1 = { + /** + * Concrete provider domains selected during setup. + * + * @remarks + * Empty delegates deterministic selection to the provider setup implementation. + */ + selectedFailureDomains?: Array | undefined; + /** + * Number of distinct failure domains across which new stateful replicas may be spread. + */ + spread: number; +}; + +export type ManagerRetryResponseFailureDomainsUnion1 = + | ManagerRetryResponseFailureDomains1 + | any; + export type ManagerRetryResponsePoolsFixed1 = { + failureDomains?: ManagerRetryResponseFailureDomains1 | any | null | undefined; /** * Provider machine type selected for this deployment. */ @@ -3667,27 +3805,29 @@ export function managerRetryResponseSourceBuiltInFromJSON( } /** @internal */ -export const ManagerRetryResponseSourceApplicationRelease$inboundSchema: - z.ZodType = z.object({ - type: z.literal("application-release"), - releaseChannel: z.string(), - releaseId: z.string(), - resourceId: z.string().optional(), - }); +export const ManagerRetryResponseSourceProjectRelease$inboundSchema: z.ZodType< + ManagerRetryResponseSourceProjectRelease, + unknown +> = z.object({ + type: z.literal("project-release"), + releaseChannel: z.string(), + releaseId: z.string(), + resourceId: z.string().optional(), +}); -export function managerRetryResponseSourceApplicationReleaseFromJSON( +export function managerRetryResponseSourceProjectReleaseFromJSON( jsonString: string, ): SafeParseResult< - ManagerRetryResponseSourceApplicationRelease, + ManagerRetryResponseSourceProjectRelease, SDKValidationError > { return safeParse( jsonString, (x) => - ManagerRetryResponseSourceApplicationRelease$inboundSchema.parse( + ManagerRetryResponseSourceProjectRelease$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'ManagerRetryResponseSourceApplicationRelease' from JSON`, + `Failed to parse 'ManagerRetryResponseSourceProjectRelease' from JSON`, ); } @@ -3696,7 +3836,7 @@ export const ManagerRetryResponseSourceUnion$inboundSchema: z.ZodType< ManagerRetryResponseSourceUnion, unknown > = z.union([ - z.lazy(() => ManagerRetryResponseSourceApplicationRelease$inboundSchema), + z.lazy(() => ManagerRetryResponseSourceProjectRelease$inboundSchema), z.lazy(() => ManagerRetryResponseSourceBuiltIn$inboundSchema), ]); @@ -3770,7 +3910,7 @@ export const ManagerRetryResponseItem$inboundSchema: z.ZodType< > = z.object({ item: ManagerRetryResponseItemEnum$inboundSchema, source: z.union([ - z.lazy(() => ManagerRetryResponseSourceApplicationRelease$inboundSchema), + z.lazy(() => ManagerRetryResponseSourceProjectRelease$inboundSchema), z.lazy(() => ManagerRetryResponseSourceBuiltIn$inboundSchema), ]), required: z.boolean(), @@ -3847,15 +3987,70 @@ export function managerRetryResponseSetupConfigFromJSON( ); } +/** @internal */ +export const ManagerRetryResponseFailureDomains6$inboundSchema: z.ZodType< + ManagerRetryResponseFailureDomains6, + unknown +> = z.object({ + selectedFailureDomains: z.array(z.string()).optional(), + spread: z.int(), +}); + +export function managerRetryResponseFailureDomains6FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseFailureDomains6$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseFailureDomains6' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseFailureDomainsUnion6$inboundSchema: z.ZodType< + ManagerRetryResponseFailureDomainsUnion6, + unknown +> = z.union([ + z.lazy(() => ManagerRetryResponseFailureDomains6$inboundSchema), + z.any(), +]); + +export function managerRetryResponseFailureDomainsUnion6FromJSON( + jsonString: string, +): SafeParseResult< + ManagerRetryResponseFailureDomainsUnion6, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseFailureDomainsUnion6$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'ManagerRetryResponseFailureDomainsUnion6' from JSON`, + ); +} + /** @internal */ export const ManagerRetryResponsePoolsAutoscale3$inboundSchema: z.ZodType< ManagerRetryResponsePoolsAutoscale3, unknown > = z.object({ + failure_domains: z.nullable( + z.union([ + z.lazy(() => ManagerRetryResponseFailureDomains6$inboundSchema), + z.any(), + ]), + ).optional(), machine: z.nullable(z.string()).optional(), max: z.int(), min: z.int(), mode: z.literal("autoscale"), +}).transform((v) => { + return remap$(v, { + "failure_domains": "failureDomains", + }); }); export function managerRetryResponsePoolsAutoscale3FromJSON( @@ -3869,14 +4064,69 @@ export function managerRetryResponsePoolsAutoscale3FromJSON( ); } +/** @internal */ +export const ManagerRetryResponseFailureDomains5$inboundSchema: z.ZodType< + ManagerRetryResponseFailureDomains5, + unknown +> = z.object({ + selectedFailureDomains: z.array(z.string()).optional(), + spread: z.int(), +}); + +export function managerRetryResponseFailureDomains5FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseFailureDomains5$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseFailureDomains5' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseFailureDomainsUnion5$inboundSchema: z.ZodType< + ManagerRetryResponseFailureDomainsUnion5, + unknown +> = z.union([ + z.lazy(() => ManagerRetryResponseFailureDomains5$inboundSchema), + z.any(), +]); + +export function managerRetryResponseFailureDomainsUnion5FromJSON( + jsonString: string, +): SafeParseResult< + ManagerRetryResponseFailureDomainsUnion5, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseFailureDomainsUnion5$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'ManagerRetryResponseFailureDomainsUnion5' from JSON`, + ); +} + /** @internal */ export const ManagerRetryResponsePoolsFixed3$inboundSchema: z.ZodType< ManagerRetryResponsePoolsFixed3, unknown > = z.object({ + failure_domains: z.nullable( + z.union([ + z.lazy(() => ManagerRetryResponseFailureDomains5$inboundSchema), + z.any(), + ]), + ).optional(), machine: z.nullable(z.string()).optional(), machines: z.int(), mode: z.literal("fixed"), +}).transform((v) => { + return remap$(v, { + "failure_domains": "failureDomains", + }); }); export function managerRetryResponsePoolsFixed3FromJSON( @@ -5806,15 +6056,70 @@ export function managerRetryResponseSetupTerraformFromJSON( ); } +/** @internal */ +export const ManagerRetryResponseFailureDomains4$inboundSchema: z.ZodType< + ManagerRetryResponseFailureDomains4, + unknown +> = z.object({ + selectedFailureDomains: z.array(z.string()).optional(), + spread: z.int(), +}); + +export function managerRetryResponseFailureDomains4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseFailureDomains4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseFailureDomains4' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseFailureDomainsUnion4$inboundSchema: z.ZodType< + ManagerRetryResponseFailureDomainsUnion4, + unknown +> = z.union([ + z.lazy(() => ManagerRetryResponseFailureDomains4$inboundSchema), + z.any(), +]); + +export function managerRetryResponseFailureDomainsUnion4FromJSON( + jsonString: string, +): SafeParseResult< + ManagerRetryResponseFailureDomainsUnion4, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseFailureDomainsUnion4$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'ManagerRetryResponseFailureDomainsUnion4' from JSON`, + ); +} + /** @internal */ export const ManagerRetryResponsePoolsAutoscale2$inboundSchema: z.ZodType< ManagerRetryResponsePoolsAutoscale2, unknown > = z.object({ + failure_domains: z.nullable( + z.union([ + z.lazy(() => ManagerRetryResponseFailureDomains4$inboundSchema), + z.any(), + ]), + ).optional(), machine: z.nullable(z.string()).optional(), max: z.int(), min: z.int(), mode: z.literal("autoscale"), +}).transform((v) => { + return remap$(v, { + "failure_domains": "failureDomains", + }); }); export function managerRetryResponsePoolsAutoscale2FromJSON( @@ -5828,14 +6133,69 @@ export function managerRetryResponsePoolsAutoscale2FromJSON( ); } +/** @internal */ +export const ManagerRetryResponseFailureDomains3$inboundSchema: z.ZodType< + ManagerRetryResponseFailureDomains3, + unknown +> = z.object({ + selectedFailureDomains: z.array(z.string()).optional(), + spread: z.int(), +}); + +export function managerRetryResponseFailureDomains3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseFailureDomains3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseFailureDomains3' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseFailureDomainsUnion3$inboundSchema: z.ZodType< + ManagerRetryResponseFailureDomainsUnion3, + unknown +> = z.union([ + z.lazy(() => ManagerRetryResponseFailureDomains3$inboundSchema), + z.any(), +]); + +export function managerRetryResponseFailureDomainsUnion3FromJSON( + jsonString: string, +): SafeParseResult< + ManagerRetryResponseFailureDomainsUnion3, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseFailureDomainsUnion3$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'ManagerRetryResponseFailureDomainsUnion3' from JSON`, + ); +} + /** @internal */ export const ManagerRetryResponsePoolsFixed2$inboundSchema: z.ZodType< ManagerRetryResponsePoolsFixed2, unknown > = z.object({ + failure_domains: z.nullable( + z.union([ + z.lazy(() => ManagerRetryResponseFailureDomains3$inboundSchema), + z.any(), + ]), + ).optional(), machine: z.nullable(z.string()).optional(), machines: z.int(), mode: z.literal("fixed"), +}).transform((v) => { + return remap$(v, { + "failure_domains": "failureDomains", + }); }); export function managerRetryResponsePoolsFixed2FromJSON( @@ -7760,15 +8120,70 @@ export function managerRetryResponseSetupGoogleOauthFromJSON( ); } +/** @internal */ +export const ManagerRetryResponseFailureDomains2$inboundSchema: z.ZodType< + ManagerRetryResponseFailureDomains2, + unknown +> = z.object({ + selectedFailureDomains: z.array(z.string()).optional(), + spread: z.int(), +}); + +export function managerRetryResponseFailureDomains2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseFailureDomains2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseFailureDomains2' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseFailureDomainsUnion2$inboundSchema: z.ZodType< + ManagerRetryResponseFailureDomainsUnion2, + unknown +> = z.union([ + z.lazy(() => ManagerRetryResponseFailureDomains2$inboundSchema), + z.any(), +]); + +export function managerRetryResponseFailureDomainsUnion2FromJSON( + jsonString: string, +): SafeParseResult< + ManagerRetryResponseFailureDomainsUnion2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseFailureDomainsUnion2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'ManagerRetryResponseFailureDomainsUnion2' from JSON`, + ); +} + /** @internal */ export const ManagerRetryResponsePoolsAutoscale1$inboundSchema: z.ZodType< ManagerRetryResponsePoolsAutoscale1, unknown > = z.object({ + failure_domains: z.nullable( + z.union([ + z.lazy(() => ManagerRetryResponseFailureDomains2$inboundSchema), + z.any(), + ]), + ).optional(), machine: z.nullable(z.string()).optional(), max: z.int(), min: z.int(), mode: z.literal("autoscale"), +}).transform((v) => { + return remap$(v, { + "failure_domains": "failureDomains", + }); }); export function managerRetryResponsePoolsAutoscale1FromJSON( @@ -7782,14 +8197,69 @@ export function managerRetryResponsePoolsAutoscale1FromJSON( ); } +/** @internal */ +export const ManagerRetryResponseFailureDomains1$inboundSchema: z.ZodType< + ManagerRetryResponseFailureDomains1, + unknown +> = z.object({ + selectedFailureDomains: z.array(z.string()).optional(), + spread: z.int(), +}); + +export function managerRetryResponseFailureDomains1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseFailureDomains1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseFailureDomains1' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseFailureDomainsUnion1$inboundSchema: z.ZodType< + ManagerRetryResponseFailureDomainsUnion1, + unknown +> = z.union([ + z.lazy(() => ManagerRetryResponseFailureDomains1$inboundSchema), + z.any(), +]); + +export function managerRetryResponseFailureDomainsUnion1FromJSON( + jsonString: string, +): SafeParseResult< + ManagerRetryResponseFailureDomainsUnion1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseFailureDomainsUnion1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'ManagerRetryResponseFailureDomainsUnion1' from JSON`, + ); +} + /** @internal */ export const ManagerRetryResponsePoolsFixed1$inboundSchema: z.ZodType< ManagerRetryResponsePoolsFixed1, unknown > = z.object({ + failure_domains: z.nullable( + z.union([ + z.lazy(() => ManagerRetryResponseFailureDomains1$inboundSchema), + z.any(), + ]), + ).optional(), machine: z.nullable(z.string()).optional(), machines: z.int(), mode: z.literal("fixed"), +}).transform((v) => { + return remap$(v, { + "failure_domains": "failureDomains", + }); }); export function managerRetryResponsePoolsFixed1FromJSON( diff --git a/client-sdks/platform/typescript/src/models/newdeploymentrequest.ts b/client-sdks/platform/typescript/src/models/newdeploymentrequest.ts index e3ac6e076..29c450d3a 100644 --- a/client-sdks/platform/typescript/src/models/newdeploymentrequest.ts +++ b/client-sdks/platform/typescript/src/models/newdeploymentrequest.ts @@ -168,7 +168,29 @@ export type NewDeploymentRequestEnvironmentInfoUnion = | NewDeploymentRequestEnvironmentInfoTest | any; +/** + * Failure-domain policy selected for a compute pool. + */ +export type NewDeploymentRequestFailureDomains2 = { + /** + * Concrete provider domains selected during setup. + * + * @remarks + * Empty delegates deterministic selection to the provider setup implementation. + */ + selectedFailureDomains?: Array | undefined; + /** + * Number of distinct failure domains across which new stateful replicas may be spread. + */ + spread: number; +}; + +export type NewDeploymentRequestFailureDomainsUnion2 = + | NewDeploymentRequestFailureDomains2 + | any; + export type NewDeploymentRequestPoolsAutoscale = { + failureDomains?: NewDeploymentRequestFailureDomains2 | any | null | undefined; /** * Provider machine type selected for this deployment. */ @@ -184,7 +206,29 @@ export type NewDeploymentRequestPoolsAutoscale = { mode: "autoscale"; }; +/** + * Failure-domain policy selected for a compute pool. + */ +export type NewDeploymentRequestFailureDomains1 = { + /** + * Concrete provider domains selected during setup. + * + * @remarks + * Empty delegates deterministic selection to the provider setup implementation. + */ + selectedFailureDomains?: Array | undefined; + /** + * Number of distinct failure domains across which new stateful replicas may be spread. + */ + spread: number; +}; + +export type NewDeploymentRequestFailureDomainsUnion1 = + | NewDeploymentRequestFailureDomains1 + | any; + export type NewDeploymentRequestPoolsFixed = { + failureDomains?: NewDeploymentRequestFailureDomains1 | any | null | undefined; /** * Provider machine type selected for this deployment. */ @@ -1307,6 +1351,23 @@ export const InitialDesiredRelease = { */ export type InitialDesiredRelease = ClosedEnum; +/** + * Customer setup item selected from this deployment-group token. + */ +export const NewDeploymentRequestSetupItem = { + Deployment: "deployment", + Models: "models", + Keys: "keys", + Bucket: "bucket", + Registry: "registry", +} as const; +/** + * Customer setup item selected from this deployment-group token. + */ +export type NewDeploymentRequestSetupItem = ClosedEnum< + typeof NewDeploymentRequestSetupItem +>; + /** * Request schema for creating a new deployment */ @@ -1378,6 +1439,14 @@ export type NewDeploymentRequest = { * Desired-release selection for a new deployment. Use none to register an environment without initially requesting a release; later updates can assign one. */ initialDesiredRelease?: InitialDesiredRelease | undefined; + /** + * Release channel followed while this deployment is not pinned. + */ + releaseChannel?: string | undefined; + /** + * Customer setup item selected from this deployment-group token. + */ + setupItem?: NewDeploymentRequestSetupItem | undefined; }; /** @internal */ @@ -1587,8 +1656,63 @@ export function newDeploymentRequestEnvironmentInfoUnionToJSON( ); } +/** @internal */ +export type NewDeploymentRequestFailureDomains2$Outbound = { + selectedFailureDomains?: Array | undefined; + spread: number; +}; + +/** @internal */ +export const NewDeploymentRequestFailureDomains2$outboundSchema: z.ZodType< + NewDeploymentRequestFailureDomains2$Outbound, + NewDeploymentRequestFailureDomains2 +> = z.object({ + selectedFailureDomains: z.array(z.string()).optional(), + spread: z.int(), +}); + +export function newDeploymentRequestFailureDomains2ToJSON( + newDeploymentRequestFailureDomains2: NewDeploymentRequestFailureDomains2, +): string { + return JSON.stringify( + NewDeploymentRequestFailureDomains2$outboundSchema.parse( + newDeploymentRequestFailureDomains2, + ), + ); +} + +/** @internal */ +export type NewDeploymentRequestFailureDomainsUnion2$Outbound = + | NewDeploymentRequestFailureDomains2$Outbound + | any; + +/** @internal */ +export const NewDeploymentRequestFailureDomainsUnion2$outboundSchema: z.ZodType< + NewDeploymentRequestFailureDomainsUnion2$Outbound, + NewDeploymentRequestFailureDomainsUnion2 +> = z.union([ + z.lazy(() => NewDeploymentRequestFailureDomains2$outboundSchema), + z.any(), +]); + +export function newDeploymentRequestFailureDomainsUnion2ToJSON( + newDeploymentRequestFailureDomainsUnion2: + NewDeploymentRequestFailureDomainsUnion2, +): string { + return JSON.stringify( + NewDeploymentRequestFailureDomainsUnion2$outboundSchema.parse( + newDeploymentRequestFailureDomainsUnion2, + ), + ); +} + /** @internal */ export type NewDeploymentRequestPoolsAutoscale$Outbound = { + failure_domains?: + | NewDeploymentRequestFailureDomains2$Outbound + | any + | null + | undefined; machine?: string | null | undefined; max: number; min: number; @@ -1600,10 +1724,20 @@ export const NewDeploymentRequestPoolsAutoscale$outboundSchema: z.ZodType< NewDeploymentRequestPoolsAutoscale$Outbound, NewDeploymentRequestPoolsAutoscale > = z.object({ + failureDomains: z.nullable( + z.union([ + z.lazy(() => NewDeploymentRequestFailureDomains2$outboundSchema), + z.any(), + ]), + ).optional(), machine: z.nullable(z.string()).optional(), max: z.int(), min: z.int(), mode: z.literal("autoscale"), +}).transform((v) => { + return remap$(v, { + failureDomains: "failure_domains", + }); }); export function newDeploymentRequestPoolsAutoscaleToJSON( @@ -1616,8 +1750,63 @@ export function newDeploymentRequestPoolsAutoscaleToJSON( ); } +/** @internal */ +export type NewDeploymentRequestFailureDomains1$Outbound = { + selectedFailureDomains?: Array | undefined; + spread: number; +}; + +/** @internal */ +export const NewDeploymentRequestFailureDomains1$outboundSchema: z.ZodType< + NewDeploymentRequestFailureDomains1$Outbound, + NewDeploymentRequestFailureDomains1 +> = z.object({ + selectedFailureDomains: z.array(z.string()).optional(), + spread: z.int(), +}); + +export function newDeploymentRequestFailureDomains1ToJSON( + newDeploymentRequestFailureDomains1: NewDeploymentRequestFailureDomains1, +): string { + return JSON.stringify( + NewDeploymentRequestFailureDomains1$outboundSchema.parse( + newDeploymentRequestFailureDomains1, + ), + ); +} + +/** @internal */ +export type NewDeploymentRequestFailureDomainsUnion1$Outbound = + | NewDeploymentRequestFailureDomains1$Outbound + | any; + +/** @internal */ +export const NewDeploymentRequestFailureDomainsUnion1$outboundSchema: z.ZodType< + NewDeploymentRequestFailureDomainsUnion1$Outbound, + NewDeploymentRequestFailureDomainsUnion1 +> = z.union([ + z.lazy(() => NewDeploymentRequestFailureDomains1$outboundSchema), + z.any(), +]); + +export function newDeploymentRequestFailureDomainsUnion1ToJSON( + newDeploymentRequestFailureDomainsUnion1: + NewDeploymentRequestFailureDomainsUnion1, +): string { + return JSON.stringify( + NewDeploymentRequestFailureDomainsUnion1$outboundSchema.parse( + newDeploymentRequestFailureDomainsUnion1, + ), + ); +} + /** @internal */ export type NewDeploymentRequestPoolsFixed$Outbound = { + failure_domains?: + | NewDeploymentRequestFailureDomains1$Outbound + | any + | null + | undefined; machine?: string | null | undefined; machines: number; mode: "fixed"; @@ -1628,9 +1817,19 @@ export const NewDeploymentRequestPoolsFixed$outboundSchema: z.ZodType< NewDeploymentRequestPoolsFixed$Outbound, NewDeploymentRequestPoolsFixed > = z.object({ + failureDomains: z.nullable( + z.union([ + z.lazy(() => NewDeploymentRequestFailureDomains1$outboundSchema), + z.any(), + ]), + ).optional(), machine: z.nullable(z.string()).optional(), machines: z.int(), mode: z.literal("fixed"), +}).transform((v) => { + return remap$(v, { + failureDomains: "failure_domains", + }); }); export function newDeploymentRequestPoolsFixedToJSON( @@ -3977,6 +4176,11 @@ export const InitialDesiredRelease$outboundSchema: z.ZodEnum< typeof InitialDesiredRelease > = z.enum(InitialDesiredRelease); +/** @internal */ +export const NewDeploymentRequestSetupItem$outboundSchema: z.ZodEnum< + typeof NewDeploymentRequestSetupItem +> = z.enum(NewDeploymentRequestSetupItem); + /** @internal */ export type NewDeploymentRequest$Outbound = { name: string; @@ -4007,6 +4211,8 @@ export type NewDeploymentRequest$Outbound = { operatorScope?: string | undefined; operatorPermission?: string | undefined; initialDesiredRelease: string; + releaseChannel: string; + setupItem?: string | undefined; }; /** @internal */ @@ -4044,6 +4250,8 @@ export const NewDeploymentRequest$outboundSchema: z.ZodType< operatorScope: z.string().optional(), operatorPermission: z.string().optional(), initialDesiredRelease: InitialDesiredRelease$outboundSchema.default("active"), + releaseChannel: z.string().default("production"), + setupItem: NewDeploymentRequestSetupItem$outboundSchema.optional(), }); export function newDeploymentRequestToJSON( diff --git a/client-sdks/platform/typescript/src/models/operations/acceptworkspaceinvitation.ts b/client-sdks/platform/typescript/src/models/operations/acceptworkspaceinvitation.ts new file mode 100644 index 000000000..dc1d35fd7 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/acceptworkspaceinvitation.ts @@ -0,0 +1,32 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; + +export type AcceptWorkspaceInvitationRequest = { + token: string; +}; + +/** @internal */ +export type AcceptWorkspaceInvitationRequest$Outbound = { + token: string; +}; + +/** @internal */ +export const AcceptWorkspaceInvitationRequest$outboundSchema: z.ZodType< + AcceptWorkspaceInvitationRequest$Outbound, + AcceptWorkspaceInvitationRequest +> = z.object({ + token: z.string(), +}); + +export function acceptWorkspaceInvitationRequestToJSON( + acceptWorkspaceInvitationRequest: AcceptWorkspaceInvitationRequest, +): string { + return JSON.stringify( + AcceptWorkspaceInvitationRequest$outboundSchema.parse( + acceptWorkspaceInvitationRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/applycontainerregistrymanagersnapshot.ts b/client-sdks/platform/typescript/src/models/operations/applycontainerregistrymanagersnapshot.ts new file mode 100644 index 000000000..2d95182ce --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/applycontainerregistrymanagersnapshot.ts @@ -0,0 +1,175 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../../lib/primitives.js"; +import { ClosedEnum } from "../../types/enums.js"; + +export const ApplyContainerRegistryManagerSnapshotStatus = { + Ready: "ready", + Deleted: "deleted", + Failed: "failed", +} as const; +export type ApplyContainerRegistryManagerSnapshotStatus = ClosedEnum< + typeof ApplyContainerRegistryManagerSnapshotStatus +>; + +export type ApplyContainerRegistryManagerSnapshotRepository = { + /** + * Unique identifier for the container registry repository. + */ + id: string; + status: ApplyContainerRegistryManagerSnapshotStatus; + routableUpstreamName: string | null; + error: string | null; +}; + +export type Verification = { + succeeded: boolean; + observedAt: Date; + error: string | null; +}; + +export type ApplyContainerRegistryManagerSnapshotRequestBody = { + /** + * Unique identifier for the container registry route. + */ + routeId: string; + desiredRevision: number; + repositories: Array; + verification: Verification | null; +}; + +export type ApplyContainerRegistryManagerSnapshotRequest = { + id: string; + requestBody?: ApplyContainerRegistryManagerSnapshotRequestBody | undefined; +}; + +/** @internal */ +export const ApplyContainerRegistryManagerSnapshotStatus$outboundSchema: + z.ZodEnum = z.enum( + ApplyContainerRegistryManagerSnapshotStatus, + ); + +/** @internal */ +export type ApplyContainerRegistryManagerSnapshotRepository$Outbound = { + id: string; + status: string; + routableUpstreamName: string | null; + error: string | null; +}; + +/** @internal */ +export const ApplyContainerRegistryManagerSnapshotRepository$outboundSchema: + z.ZodType< + ApplyContainerRegistryManagerSnapshotRepository$Outbound, + ApplyContainerRegistryManagerSnapshotRepository + > = z.object({ + id: z.string(), + status: ApplyContainerRegistryManagerSnapshotStatus$outboundSchema, + routableUpstreamName: z.nullable(z.string()), + error: z.nullable(z.string()), + }); + +export function applyContainerRegistryManagerSnapshotRepositoryToJSON( + applyContainerRegistryManagerSnapshotRepository: + ApplyContainerRegistryManagerSnapshotRepository, +): string { + return JSON.stringify( + ApplyContainerRegistryManagerSnapshotRepository$outboundSchema.parse( + applyContainerRegistryManagerSnapshotRepository, + ), + ); +} + +/** @internal */ +export type Verification$Outbound = { + succeeded: boolean; + observedAt: string; + error: string | null; +}; + +/** @internal */ +export const Verification$outboundSchema: z.ZodType< + Verification$Outbound, + Verification +> = z.object({ + succeeded: z.boolean(), + observedAt: z.date().transform(v => v.toISOString()), + error: z.nullable(z.string()), +}); + +export function verificationToJSON(verification: Verification): string { + return JSON.stringify(Verification$outboundSchema.parse(verification)); +} + +/** @internal */ +export type ApplyContainerRegistryManagerSnapshotRequestBody$Outbound = { + routeId: string; + desiredRevision: number; + repositories: Array; + verification: Verification$Outbound | null; +}; + +/** @internal */ +export const ApplyContainerRegistryManagerSnapshotRequestBody$outboundSchema: + z.ZodType< + ApplyContainerRegistryManagerSnapshotRequestBody$Outbound, + ApplyContainerRegistryManagerSnapshotRequestBody + > = z.object({ + routeId: z.string(), + desiredRevision: z.int(), + repositories: z.array( + z.lazy(() => + ApplyContainerRegistryManagerSnapshotRepository$outboundSchema + ), + ), + verification: z.nullable(z.lazy(() => Verification$outboundSchema)), + }); + +export function applyContainerRegistryManagerSnapshotRequestBodyToJSON( + applyContainerRegistryManagerSnapshotRequestBody: + ApplyContainerRegistryManagerSnapshotRequestBody, +): string { + return JSON.stringify( + ApplyContainerRegistryManagerSnapshotRequestBody$outboundSchema.parse( + applyContainerRegistryManagerSnapshotRequestBody, + ), + ); +} + +/** @internal */ +export type ApplyContainerRegistryManagerSnapshotRequest$Outbound = { + id: string; + RequestBody?: + | ApplyContainerRegistryManagerSnapshotRequestBody$Outbound + | undefined; +}; + +/** @internal */ +export const ApplyContainerRegistryManagerSnapshotRequest$outboundSchema: + z.ZodType< + ApplyContainerRegistryManagerSnapshotRequest$Outbound, + ApplyContainerRegistryManagerSnapshotRequest + > = z.object({ + id: z.string(), + requestBody: z.lazy(() => + ApplyContainerRegistryManagerSnapshotRequestBody$outboundSchema + ).optional(), + }).transform((v) => { + return remap$(v, { + requestBody: "RequestBody", + }); + }); + +export function applyContainerRegistryManagerSnapshotRequestToJSON( + applyContainerRegistryManagerSnapshotRequest: + ApplyContainerRegistryManagerSnapshotRequest, +): string { + return JSON.stringify( + ApplyContainerRegistryManagerSnapshotRequest$outboundSchema.parse( + applyContainerRegistryManagerSnapshotRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/approveagentsession.ts b/client-sdks/platform/typescript/src/models/operations/approveagentsession.ts new file mode 100644 index 000000000..7e82a03d2 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/approveagentsession.ts @@ -0,0 +1,36 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; + +export type ApproveAgentSessionRequest = { + id: string; + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; +}; + +/** @internal */ +export type ApproveAgentSessionRequest$Outbound = { + id: string; + workspace?: string | undefined; +}; + +/** @internal */ +export const ApproveAgentSessionRequest$outboundSchema: z.ZodType< + ApproveAgentSessionRequest$Outbound, + ApproveAgentSessionRequest +> = z.object({ + id: z.string(), + workspace: z.string().optional(), +}); + +export function approveAgentSessionRequestToJSON( + approveAgentSessionRequest: ApproveAgentSessionRequest, +): string { + return JSON.stringify( + ApproveAgentSessionRequest$outboundSchema.parse(approveAgentSessionRequest), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/configureprojectbuckets.ts b/client-sdks/platform/typescript/src/models/operations/configureprojectbuckets.ts new file mode 100644 index 000000000..1b123977c --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/configureprojectbuckets.ts @@ -0,0 +1,90 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../../lib/primitives.js"; +import { ClosedEnum } from "../../types/enums.js"; + +export const ConfigureProjectBucketsAccess = { + ReadWrite: "read-write", +} as const; +export type ConfigureProjectBucketsAccess = ClosedEnum< + typeof ConfigureProjectBucketsAccess +>; + +export type ConfigureProjectBucketsRequestBody = { + access: ConfigureProjectBucketsAccess; +}; + +export type ConfigureProjectBucketsRequest = { + /** + * Project ID or name. + */ + idOrName: string; + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; + requestBody?: ConfigureProjectBucketsRequestBody | undefined; +}; + +/** @internal */ +export const ConfigureProjectBucketsAccess$outboundSchema: z.ZodEnum< + typeof ConfigureProjectBucketsAccess +> = z.enum(ConfigureProjectBucketsAccess); + +/** @internal */ +export type ConfigureProjectBucketsRequestBody$Outbound = { + access: string; +}; + +/** @internal */ +export const ConfigureProjectBucketsRequestBody$outboundSchema: z.ZodType< + ConfigureProjectBucketsRequestBody$Outbound, + ConfigureProjectBucketsRequestBody +> = z.object({ + access: ConfigureProjectBucketsAccess$outboundSchema, +}); + +export function configureProjectBucketsRequestBodyToJSON( + configureProjectBucketsRequestBody: ConfigureProjectBucketsRequestBody, +): string { + return JSON.stringify( + ConfigureProjectBucketsRequestBody$outboundSchema.parse( + configureProjectBucketsRequestBody, + ), + ); +} + +/** @internal */ +export type ConfigureProjectBucketsRequest$Outbound = { + idOrName: string; + workspace?: string | undefined; + RequestBody?: ConfigureProjectBucketsRequestBody$Outbound | undefined; +}; + +/** @internal */ +export const ConfigureProjectBucketsRequest$outboundSchema: z.ZodType< + ConfigureProjectBucketsRequest$Outbound, + ConfigureProjectBucketsRequest +> = z.object({ + idOrName: z.string(), + workspace: z.string().optional(), + requestBody: z.lazy(() => ConfigureProjectBucketsRequestBody$outboundSchema) + .optional(), +}).transform((v) => { + return remap$(v, { + requestBody: "RequestBody", + }); +}); + +export function configureProjectBucketsRequestToJSON( + configureProjectBucketsRequest: ConfigureProjectBucketsRequest, +): string { + return JSON.stringify( + ConfigureProjectBucketsRequest$outboundSchema.parse( + configureProjectBucketsRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/configureprojectcustomerkey.ts b/client-sdks/platform/typescript/src/models/operations/configureprojectcustomerkey.ts deleted file mode 100644 index 7e3eb8a59..000000000 --- a/client-sdks/platform/typescript/src/models/operations/configureprojectcustomerkey.ts +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - */ - -import * as z from "zod/v4"; -import { remap as remap$ } from "../../lib/primitives.js"; - -export type ConfigureProjectCustomerKeyRequestBody = { - applicationEncryption: boolean; -}; - -export type ConfigureProjectCustomerKeyRequest = { - /** - * Project ID or name. - */ - idOrName: string; - /** - * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. - */ - workspace?: string | undefined; - requestBody?: ConfigureProjectCustomerKeyRequestBody | undefined; -}; - -/** @internal */ -export type ConfigureProjectCustomerKeyRequestBody$Outbound = { - applicationEncryption: boolean; -}; - -/** @internal */ -export const ConfigureProjectCustomerKeyRequestBody$outboundSchema: z.ZodType< - ConfigureProjectCustomerKeyRequestBody$Outbound, - ConfigureProjectCustomerKeyRequestBody -> = z.object({ - applicationEncryption: z.boolean(), -}); - -export function configureProjectCustomerKeyRequestBodyToJSON( - configureProjectCustomerKeyRequestBody: - ConfigureProjectCustomerKeyRequestBody, -): string { - return JSON.stringify( - ConfigureProjectCustomerKeyRequestBody$outboundSchema.parse( - configureProjectCustomerKeyRequestBody, - ), - ); -} - -/** @internal */ -export type ConfigureProjectCustomerKeyRequest$Outbound = { - idOrName: string; - workspace?: string | undefined; - RequestBody?: ConfigureProjectCustomerKeyRequestBody$Outbound | undefined; -}; - -/** @internal */ -export const ConfigureProjectCustomerKeyRequest$outboundSchema: z.ZodType< - ConfigureProjectCustomerKeyRequest$Outbound, - ConfigureProjectCustomerKeyRequest -> = z.object({ - idOrName: z.string(), - workspace: z.string().optional(), - requestBody: z.lazy(() => - ConfigureProjectCustomerKeyRequestBody$outboundSchema - ).optional(), -}).transform((v) => { - return remap$(v, { - requestBody: "RequestBody", - }); -}); - -export function configureProjectCustomerKeyRequestToJSON( - configureProjectCustomerKeyRequest: ConfigureProjectCustomerKeyRequest, -): string { - return JSON.stringify( - ConfigureProjectCustomerKeyRequest$outboundSchema.parse( - configureProjectCustomerKeyRequest, - ), - ); -} diff --git a/client-sdks/platform/typescript/src/models/operations/configureprojectcustomermodels.ts b/client-sdks/platform/typescript/src/models/operations/configureprojectcustomermodels.ts deleted file mode 100644 index 35dcd144f..000000000 --- a/client-sdks/platform/typescript/src/models/operations/configureprojectcustomermodels.ts +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - */ - -import * as z from "zod/v4"; -import { remap as remap$ } from "../../lib/primitives.js"; -import * as models from "../index.js"; - -export type ConfigureProjectCustomerModelsRequest = { - /** - * Project ID or name. - */ - idOrName: string; - /** - * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. - */ - workspace?: string | undefined; - configureCustomerModelsRequest?: - | models.ConfigureCustomerModelsRequest - | undefined; -}; - -/** @internal */ -export type ConfigureProjectCustomerModelsRequest$Outbound = { - idOrName: string; - workspace?: string | undefined; - ConfigureCustomerModelsRequest?: - | models.ConfigureCustomerModelsRequest$Outbound - | undefined; -}; - -/** @internal */ -export const ConfigureProjectCustomerModelsRequest$outboundSchema: z.ZodType< - ConfigureProjectCustomerModelsRequest$Outbound, - ConfigureProjectCustomerModelsRequest -> = z.object({ - idOrName: z.string(), - workspace: z.string().optional(), - configureCustomerModelsRequest: models - .ConfigureCustomerModelsRequest$outboundSchema.optional(), -}).transform((v) => { - return remap$(v, { - configureCustomerModelsRequest: "ConfigureCustomerModelsRequest", - }); -}); - -export function configureProjectCustomerModelsRequestToJSON( - configureProjectCustomerModelsRequest: ConfigureProjectCustomerModelsRequest, -): string { - return JSON.stringify( - ConfigureProjectCustomerModelsRequest$outboundSchema.parse( - configureProjectCustomerModelsRequest, - ), - ); -} diff --git a/client-sdks/platform/typescript/src/models/operations/configureprojectdeployments.ts b/client-sdks/platform/typescript/src/models/operations/configureprojectdeployments.ts new file mode 100644 index 000000000..0a87b8eb6 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/configureprojectdeployments.ts @@ -0,0 +1,79 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../../lib/primitives.js"; + +export type ConfigureProjectDeploymentsRequestBody = { + enabled: boolean; +}; + +export type ConfigureProjectDeploymentsRequest = { + /** + * Project ID or name. + */ + idOrName: string; + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; + requestBody?: ConfigureProjectDeploymentsRequestBody | undefined; +}; + +/** @internal */ +export type ConfigureProjectDeploymentsRequestBody$Outbound = { + enabled: boolean; +}; + +/** @internal */ +export const ConfigureProjectDeploymentsRequestBody$outboundSchema: z.ZodType< + ConfigureProjectDeploymentsRequestBody$Outbound, + ConfigureProjectDeploymentsRequestBody +> = z.object({ + enabled: z.boolean(), +}); + +export function configureProjectDeploymentsRequestBodyToJSON( + configureProjectDeploymentsRequestBody: + ConfigureProjectDeploymentsRequestBody, +): string { + return JSON.stringify( + ConfigureProjectDeploymentsRequestBody$outboundSchema.parse( + configureProjectDeploymentsRequestBody, + ), + ); +} + +/** @internal */ +export type ConfigureProjectDeploymentsRequest$Outbound = { + idOrName: string; + workspace?: string | undefined; + RequestBody?: ConfigureProjectDeploymentsRequestBody$Outbound | undefined; +}; + +/** @internal */ +export const ConfigureProjectDeploymentsRequest$outboundSchema: z.ZodType< + ConfigureProjectDeploymentsRequest$Outbound, + ConfigureProjectDeploymentsRequest +> = z.object({ + idOrName: z.string(), + workspace: z.string().optional(), + requestBody: z.lazy(() => + ConfigureProjectDeploymentsRequestBody$outboundSchema + ).optional(), +}).transform((v) => { + return remap$(v, { + requestBody: "RequestBody", + }); +}); + +export function configureProjectDeploymentsRequestToJSON( + configureProjectDeploymentsRequest: ConfigureProjectDeploymentsRequest, +): string { + return JSON.stringify( + ConfigureProjectDeploymentsRequest$outboundSchema.parse( + configureProjectDeploymentsRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/configureprojectkeys.ts b/client-sdks/platform/typescript/src/models/operations/configureprojectkeys.ts new file mode 100644 index 000000000..fe2b0154c --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/configureprojectkeys.ts @@ -0,0 +1,77 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../../lib/primitives.js"; + +export type ConfigureProjectKeysRequestBody = { + applicationEncryption: boolean; +}; + +export type ConfigureProjectKeysRequest = { + /** + * Project ID or name. + */ + idOrName: string; + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; + requestBody?: ConfigureProjectKeysRequestBody | undefined; +}; + +/** @internal */ +export type ConfigureProjectKeysRequestBody$Outbound = { + applicationEncryption: boolean; +}; + +/** @internal */ +export const ConfigureProjectKeysRequestBody$outboundSchema: z.ZodType< + ConfigureProjectKeysRequestBody$Outbound, + ConfigureProjectKeysRequestBody +> = z.object({ + applicationEncryption: z.boolean(), +}); + +export function configureProjectKeysRequestBodyToJSON( + configureProjectKeysRequestBody: ConfigureProjectKeysRequestBody, +): string { + return JSON.stringify( + ConfigureProjectKeysRequestBody$outboundSchema.parse( + configureProjectKeysRequestBody, + ), + ); +} + +/** @internal */ +export type ConfigureProjectKeysRequest$Outbound = { + idOrName: string; + workspace?: string | undefined; + RequestBody?: ConfigureProjectKeysRequestBody$Outbound | undefined; +}; + +/** @internal */ +export const ConfigureProjectKeysRequest$outboundSchema: z.ZodType< + ConfigureProjectKeysRequest$Outbound, + ConfigureProjectKeysRequest +> = z.object({ + idOrName: z.string(), + workspace: z.string().optional(), + requestBody: z.lazy(() => ConfigureProjectKeysRequestBody$outboundSchema) + .optional(), +}).transform((v) => { + return remap$(v, { + requestBody: "RequestBody", + }); +}); + +export function configureProjectKeysRequestToJSON( + configureProjectKeysRequest: ConfigureProjectKeysRequest, +): string { + return JSON.stringify( + ConfigureProjectKeysRequest$outboundSchema.parse( + configureProjectKeysRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/configureprojectmodels.ts b/client-sdks/platform/typescript/src/models/operations/configureprojectmodels.ts new file mode 100644 index 000000000..7974f0bef --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/configureprojectmodels.ts @@ -0,0 +1,51 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../../lib/primitives.js"; +import * as models from "../index.js"; + +export type ConfigureProjectModelsRequest = { + /** + * Project ID or name. + */ + idOrName: string; + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; + configureModelsRequest?: models.ConfigureModelsRequest | undefined; +}; + +/** @internal */ +export type ConfigureProjectModelsRequest$Outbound = { + idOrName: string; + workspace?: string | undefined; + ConfigureModelsRequest?: models.ConfigureModelsRequest$Outbound | undefined; +}; + +/** @internal */ +export const ConfigureProjectModelsRequest$outboundSchema: z.ZodType< + ConfigureProjectModelsRequest$Outbound, + ConfigureProjectModelsRequest +> = z.object({ + idOrName: z.string(), + workspace: z.string().optional(), + configureModelsRequest: models.ConfigureModelsRequest$outboundSchema + .optional(), +}).transform((v) => { + return remap$(v, { + configureModelsRequest: "ConfigureModelsRequest", + }); +}); + +export function configureProjectModelsRequestToJSON( + configureProjectModelsRequest: ConfigureProjectModelsRequest, +): string { + return JSON.stringify( + ConfigureProjectModelsRequest$outboundSchema.parse( + configureProjectModelsRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/configureprojectregistry.ts b/client-sdks/platform/typescript/src/models/operations/configureprojectregistry.ts new file mode 100644 index 000000000..903c4dc00 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/configureprojectregistry.ts @@ -0,0 +1,94 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../../lib/primitives.js"; +import { ClosedEnum } from "../../types/enums.js"; + +export const ConfigureProjectRegistryCredentialPolicy = { + PullOnly: "pull-only", + PushAndPull: "push-and-pull", +} as const; +export type ConfigureProjectRegistryCredentialPolicy = ClosedEnum< + typeof ConfigureProjectRegistryCredentialPolicy +>; + +export type ConfigureProjectRegistryRequestBody = { + repositories: Array; + credentialPolicy: ConfigureProjectRegistryCredentialPolicy; +}; + +export type ConfigureProjectRegistryRequest = { + /** + * Project ID or name. + */ + idOrName: string; + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; + requestBody?: ConfigureProjectRegistryRequestBody | undefined; +}; + +/** @internal */ +export const ConfigureProjectRegistryCredentialPolicy$outboundSchema: z.ZodEnum< + typeof ConfigureProjectRegistryCredentialPolicy +> = z.enum(ConfigureProjectRegistryCredentialPolicy); + +/** @internal */ +export type ConfigureProjectRegistryRequestBody$Outbound = { + repositories: Array; + credentialPolicy: string; +}; + +/** @internal */ +export const ConfigureProjectRegistryRequestBody$outboundSchema: z.ZodType< + ConfigureProjectRegistryRequestBody$Outbound, + ConfigureProjectRegistryRequestBody +> = z.object({ + repositories: z.array(z.string()), + credentialPolicy: ConfigureProjectRegistryCredentialPolicy$outboundSchema, +}); + +export function configureProjectRegistryRequestBodyToJSON( + configureProjectRegistryRequestBody: ConfigureProjectRegistryRequestBody, +): string { + return JSON.stringify( + ConfigureProjectRegistryRequestBody$outboundSchema.parse( + configureProjectRegistryRequestBody, + ), + ); +} + +/** @internal */ +export type ConfigureProjectRegistryRequest$Outbound = { + idOrName: string; + workspace?: string | undefined; + RequestBody?: ConfigureProjectRegistryRequestBody$Outbound | undefined; +}; + +/** @internal */ +export const ConfigureProjectRegistryRequest$outboundSchema: z.ZodType< + ConfigureProjectRegistryRequest$Outbound, + ConfigureProjectRegistryRequest +> = z.object({ + idOrName: z.string(), + workspace: z.string().optional(), + requestBody: z.lazy(() => ConfigureProjectRegistryRequestBody$outboundSchema) + .optional(), +}).transform((v) => { + return remap$(v, { + requestBody: "RequestBody", + }); +}); + +export function configureProjectRegistryRequestToJSON( + configureProjectRegistryRequest: ConfigureProjectRegistryRequest, +): string { + return JSON.stringify( + ConfigureProjectRegistryRequest$outboundSchema.parse( + configureProjectRegistryRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/configureprojectsource.ts b/client-sdks/platform/typescript/src/models/operations/configureprojectsource.ts new file mode 100644 index 000000000..f556ca04f --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/configureprojectsource.ts @@ -0,0 +1,1202 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../../lib/primitives.js"; +import { safeParse } from "../../lib/schemas.js"; +import { ClosedEnum } from "../../types/enums.js"; +import { Result as SafeParseResult } from "../../types/fp.js"; +import { SDKValidationError } from "../errors/sdkvalidationerror.js"; +import * as models from "../index.js"; + +/** + * Template root directory inside alienplatform/alien + */ +export const ConfigureProjectSourceTemplatePathRequest = { + ExamplesCustomerModelsTs: "examples/customer-models-ts", + ExamplesRemoteWorkerTs: "examples/remote-worker-ts", + ExamplesGithubAgentPackagesRemoteAgent: + "examples/github-agent/packages/remote-agent", + ExamplesEndpointAgent: "examples/endpoint-agent", + ExamplesByocDatabase: "examples/byoc-database", +} as const; +/** + * Template root directory inside alienplatform/alien + */ +export type ConfigureProjectSourceTemplatePathRequest = ClosedEnum< + typeof ConfigureProjectSourceTemplatePathRequest +>; + +export type TemplateRequest = { + mode: "template"; + targetNamespace: string; + /** + * Template root directory inside alienplatform/alien + */ + templatePath: ConfigureProjectSourceTemplatePathRequest; + /** + * 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 + */ + rootDirectory?: string | null | undefined; +}; + +/** + * The Git Provider of the repository + */ +export const ConfigureProjectSourceTypeRequest = { + Github: "github", +} as const; +/** + * The Git Provider of the repository + */ +export type ConfigureProjectSourceTypeRequest = ClosedEnum< + typeof ConfigureProjectSourceTypeRequest +>; + +export type ConfigureProjectSourceGitRepositoryRequest = { + /** + * The Git Provider of the repository + */ + type: ConfigureProjectSourceTypeRequest; + /** + * The name of the git repository + */ + repo: string; +}; + +export type ConfigureProjectSourceRepository = { + mode: "repository"; + gitRepository: ConfigureProjectSourceGitRepositoryRequest; + /** + * 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 + */ + rootDirectory?: string | null | undefined; +}; + +export type ConfigureProjectSourceRequestBody = + | ConfigureProjectSourceRepository + | TemplateRequest; + +export type ConfigureProjectSourceRequest = { + /** + * Project ID or name. + */ + idOrName: string; + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; + requestBody?: ConfigureProjectSourceRepository | TemplateRequest | undefined; +}; + +/** + * The Git Provider of the repository + */ +export const ConfigureProjectSourceTypeResponse = { + Github: "github", +} as const; +/** + * The Git Provider of the repository + */ +export type ConfigureProjectSourceTypeResponse = ClosedEnum< + typeof ConfigureProjectSourceTypeResponse +>; + +/** + * 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`. + */ +export type ConfigureProjectSourceGitRepositoryResponse = { + /** + * The Git Provider of the repository + */ + type: ConfigureProjectSourceTypeResponse; + /** + * The name of the git repository + */ + repo: string; +}; + +/** + * Customer-facing deployment portal appearance settings. + */ +export type ConfigureProjectSourceDeploymentPortalAppearance = { + /** + * Optional project-specific avatar override for the deployment portal. + */ + avatarUrl?: string | null | undefined; + /** + * Curated visual style for the deployment portal. + */ + preset: models.DeploymentPortalAppearancePreset; + /** + * Accent color used for highlights and primary actions. + */ + accentColor: models.DeploymentPortalAccentColor; + /** + * Optional portal title. Defaults to the project name. + */ + title?: string | null | undefined; + /** + * Optional customer-facing subtitle. + */ + subtitle?: string | null | undefined; + /** + * Optional support or contact URL. + */ + supportUrl?: string | null | undefined; + /** + * Optional documentation URL. + */ + docsUrl?: string | null | undefined; + /** + * Layout density for portal content. + */ + density: models.DeploymentPortalDensity; +}; + +/** + * Target OS and architecture for compiled binaries. + * + * @remarks + * + * Used as keys in package output maps (CLI binaries, Terraform providers, etc.) + * and for cross-compilation target selection during builds. + */ +export const ConfigureProjectSourceBinaryTarget = { + WindowsX64: "windows-x64", + LinuxX64: "linux-x64", + LinuxArm64: "linux-arm64", + DarwinArm64: "darwin-arm64", +} as const; +/** + * Target OS and architecture for compiled binaries. + * + * @remarks + * + * Used as keys in package output maps (CLI binaries, Terraform providers, etc.) + * and for cross-compilation target selection during builds. + */ +export type ConfigureProjectSourceBinaryTarget = ClosedEnum< + typeof ConfigureProjectSourceBinaryTarget +>; + +/** + * CLI package configuration. If null, CLI packages will not be generated. + */ +export type ConfigureProjectSourceCli = { + /** + * Binary targets required by this package's setup consumer. + * + * @remarks + * + * Older package rows omit this field and retain the historical all-target + * behavior. Callers creating new packages should state their target set. + */ + binaryTargets?: Array | undefined; + /** + * Human-friendly display name for help banners and about text + */ + displayName: string; + /** + * Binary name displayed in help and usage (e.g., "acmectl") + */ + name: string; + /** + * Whether CLI package generation is enabled + */ + enabled: boolean; +}; + +/** + * CloudFormation package configuration. If null, CloudFormation packages will not be generated. + */ +export type ConfigureProjectSourceCloudformation = { + /** + * Whether CloudFormation package generation is enabled + */ + enabled: boolean; + /** + * Human-friendly application name shown in generated install artifacts + */ + displayName?: string | null | undefined; +}; + +/** + * Operator image package configuration. Required when Helm is enabled. If null, Operator image packages will not be generated. + */ +export type ConfigureProjectSourceOperatorImage = { + /** + * Short brand slug used for generated resource names. + */ + brand?: string | null | undefined; + /** + * Human-friendly display name for logs and startup messages + */ + displayName: string; + /** + * Branded environment variable prefix (e.g., "ACME"). + */ + envPrefix?: string | null | undefined; + /** + * Branded Kubernetes/cloud label domain (e.g., "acme.dev"). + */ + labelDomain?: string | null | undefined; + /** + * Image name (e.g., "acme-operator") + */ + name: string; + /** + * Whether Operator image package generation is enabled + */ + enabled: boolean; +}; + +/** + * Helm chart package configuration. If null, Helm packages will not be generated. + */ +export type ConfigureProjectSourceHelm = { + /** + * Chart name (e.g., "acme-operator") + */ + chartName: string; + /** + * Human-friendly description of the chart + */ + description: string; + /** + * Whether Helm chart package generation is enabled + */ + enabled: boolean; +}; + +/** + * Terraform package configuration. If null, Terraform packages will not be generated. + */ +export type ConfigureProjectSourceTerraform = { + /** + * Whether Terraform package generation is enabled + */ + enabled: boolean; + /** + * Human-friendly application name shown in generated install artifacts + */ + displayName?: string | null | undefined; +}; + +/** + * Configuration for embedded packages (CLI, CloudFormation, Helm, Terraform) + */ +export type ConfigureProjectSourcePackagesConfig = { + /** + * CLI package configuration. If null, CLI packages will not be generated. + */ + cli?: ConfigureProjectSourceCli | null | undefined; + /** + * CloudFormation package configuration. If null, CloudFormation packages will not be generated. + */ + cloudformation?: ConfigureProjectSourceCloudformation | null | undefined; + /** + * Operator image package configuration. Required when Helm is enabled. If null, Operator image packages will not be generated. + */ + operatorImage?: ConfigureProjectSourceOperatorImage | null | undefined; + /** + * Helm chart package configuration. If null, Helm packages will not be generated. + */ + helm?: ConfigureProjectSourceHelm | null | undefined; + /** + * Terraform package configuration. If null, Terraform packages will not be generated. + */ + terraform?: ConfigureProjectSourceTerraform | null | undefined; +}; + +/** + * Project default private managers for new push deployments. + */ +export type ConfigureProjectSourceDefaultManagers = { + /** + * Unique identifier for a default private manager. + */ + aws?: string | null | undefined; + /** + * Unique identifier for a default private manager. + */ + gcp?: string | null | undefined; + /** + * Unique identifier for a default private manager. + */ + azure?: string | null | undefined; + /** + * Unique identifier for a default private manager. + */ + kubernetes?: string | null | undefined; + /** + * Unique identifier for a default private manager. + */ + machines?: string | null | undefined; + /** + * Unique identifier for a default private manager. + */ + local?: string | null | undefined; +}; + +export type ConfigureProjectSourceDeployments = { + enabled: boolean; +}; + +export type ConfigureProjectSourceKeys = { + enabled: boolean; + applicationEncryption: boolean; +}; + +export const ConfigureProjectSourceAllowedProvider = { + AwsBedrock: "aws-bedrock", + GcpVertex: "gcp-vertex", + AzureFoundry: "azure-foundry", + Anthropic: "anthropic", + Databricks: "databricks", + Openai: "openai", +} as const; +export type ConfigureProjectSourceAllowedProvider = ClosedEnum< + typeof ConfigureProjectSourceAllowedProvider +>; + +export const ConfigureProjectSourceClientApi = { + OpenaiChat: "openai-chat", + OpenaiResponses: "openai-responses", + AnthropicMessages: "anthropic-messages", +} as const; +export type ConfigureProjectSourceClientApi = ClosedEnum< + typeof ConfigureProjectSourceClientApi +>; + +export type ConfigureProjectSourceRequirement = { + publicModelId: string; + clientApis: Array; + required: boolean; +}; + +export type ConfigureProjectSourceModels = { + enabled: boolean; + allowedProviders: Array; + requirements: Array; +}; + +export const ConfigureProjectSourceAccess = { + ReadWrite: "read-write", +} as const; +export type ConfigureProjectSourceAccess = ClosedEnum< + typeof ConfigureProjectSourceAccess +>; + +export type ConfigureProjectSourceBuckets = { + enabled: boolean; + access: ConfigureProjectSourceAccess; +}; + +export const ConfigureProjectSourceCredentialPolicy = { + PullOnly: "pull-only", + PushAndPull: "push-and-pull", +} as const; +export type ConfigureProjectSourceCredentialPolicy = ClosedEnum< + typeof ConfigureProjectSourceCredentialPolicy +>; + +export type ConfigureProjectSourceRegistry = { + enabled: boolean; + repositories: Array; + credentialPolicy: ConfigureProjectSourceCredentialPolicy; +}; + +export type ConfigureProjectSourceCapabilities = { + deployments?: ConfigureProjectSourceDeployments | undefined; + keys?: ConfigureProjectSourceKeys | undefined; + models?: ConfigureProjectSourceModels | undefined; + buckets?: ConfigureProjectSourceBuckets | undefined; + registry?: ConfigureProjectSourceRegistry | undefined; +}; + +/** + * Capabilities this Project may offer through setup links. + */ +export type ConfigureProjectSourceProjectCapabilities = { + schemaVersion: number; + capabilities: ConfigureProjectSourceCapabilities; +}; + +export type ConfigureProjectSourceGithubSetup = { + /** + * URL to the pull request with the Alien build workflow + */ + pullRequestUrl: string; + /** + * URL to the GitHub Actions workflow + */ + workflowUrl: string; +}; + +export const ConfigureProjectSourceSourceRepository = { + AlienplatformAlien: "alienplatform/alien", +} as const; +export type ConfigureProjectSourceSourceRepository = ClosedEnum< + typeof ConfigureProjectSourceSourceRepository +>; + +/** + * Template root directory inside alienplatform/alien + */ +export const ConfigureProjectSourceTemplatePathResponse = { + ExamplesCustomerModelsTs: "examples/customer-models-ts", + ExamplesRemoteWorkerTs: "examples/remote-worker-ts", + ExamplesGithubAgentPackagesRemoteAgent: + "examples/github-agent/packages/remote-agent", + ExamplesEndpointAgent: "examples/endpoint-agent", + ExamplesByocDatabase: "examples/byoc-database", +} as const; +/** + * Template root directory inside alienplatform/alien + */ +export type ConfigureProjectSourceTemplatePathResponse = ClosedEnum< + typeof ConfigureProjectSourceTemplatePathResponse +>; + +export type ConfigureProjectSourceTemplateResponse = { + sourceRepository: ConfigureProjectSourceSourceRepository; + /** + * Fork repository in / format + */ + forkRepository: string; + /** + * Template root directory inside alienplatform/alien + */ + templatePath: ConfigureProjectSourceTemplatePathResponse; + resolvedRootDirectory: string; +}; + +/** + * Project source connected and GitHub Actions configured. + */ +export type ConfigureProjectSourceResponse = { + /** + * Unique identifier for the project. + */ + id: string; + /** + * Project name. + */ + name: string; + /** + * 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`. + */ + gitRepository?: + | ConfigureProjectSourceGitRepositoryResponse + | null + | undefined; + /** + * 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 + */ + rootDirectory?: string | null | undefined; + /** + * Customer-facing deployment portal appearance settings. + */ + deploymentPortalAppearance?: + | ConfigureProjectSourceDeploymentPortalAppearance + | null + | undefined; + /** + * Configuration for embedded packages (CLI, CloudFormation, Helm, Terraform) + */ + packagesConfig?: ConfigureProjectSourcePackagesConfig | null | undefined; + /** + * Selected domain for this project (null = default system domain) + */ + domainId?: string | null | undefined; + /** + * Project default private managers for new push deployments. + */ + defaultManagers?: ConfigureProjectSourceDefaultManagers | null | undefined; + /** + * Capabilities this Project may offer through setup links. + */ + projectCapabilities?: + | ConfigureProjectSourceProjectCapabilities + | null + | undefined; + createdAt: Date; + /** + * Unique identifier for the workspace. + */ + workspaceId: string; + githubSetup?: ConfigureProjectSourceGithubSetup | undefined; + gitRepositoryWarning?: models.APIError | undefined; + template?: ConfigureProjectSourceTemplateResponse | undefined; +}; + +/** @internal */ +export const ConfigureProjectSourceTemplatePathRequest$outboundSchema: + z.ZodEnum = z.enum( + ConfigureProjectSourceTemplatePathRequest, + ); + +/** @internal */ +export type TemplateRequest$Outbound = { + mode: "template"; + targetNamespace: string; + templatePath: string; + rootDirectory?: string | null | undefined; +}; + +/** @internal */ +export const TemplateRequest$outboundSchema: z.ZodType< + TemplateRequest$Outbound, + TemplateRequest +> = z.object({ + mode: z.literal("template"), + targetNamespace: z.string(), + templatePath: ConfigureProjectSourceTemplatePathRequest$outboundSchema, + rootDirectory: z.nullable(z.string()).optional(), +}); + +export function templateRequestToJSON( + templateRequest: TemplateRequest, +): string { + return JSON.stringify(TemplateRequest$outboundSchema.parse(templateRequest)); +} + +/** @internal */ +export const ConfigureProjectSourceTypeRequest$outboundSchema: z.ZodEnum< + typeof ConfigureProjectSourceTypeRequest +> = z.enum(ConfigureProjectSourceTypeRequest); + +/** @internal */ +export type ConfigureProjectSourceGitRepositoryRequest$Outbound = { + type: string; + repo: string; +}; + +/** @internal */ +export const ConfigureProjectSourceGitRepositoryRequest$outboundSchema: + z.ZodType< + ConfigureProjectSourceGitRepositoryRequest$Outbound, + ConfigureProjectSourceGitRepositoryRequest + > = z.object({ + type: ConfigureProjectSourceTypeRequest$outboundSchema, + repo: z.string(), + }); + +export function configureProjectSourceGitRepositoryRequestToJSON( + configureProjectSourceGitRepositoryRequest: + ConfigureProjectSourceGitRepositoryRequest, +): string { + return JSON.stringify( + ConfigureProjectSourceGitRepositoryRequest$outboundSchema.parse( + configureProjectSourceGitRepositoryRequest, + ), + ); +} + +/** @internal */ +export type ConfigureProjectSourceRepository$Outbound = { + mode: "repository"; + gitRepository: ConfigureProjectSourceGitRepositoryRequest$Outbound; + rootDirectory?: string | null | undefined; +}; + +/** @internal */ +export const ConfigureProjectSourceRepository$outboundSchema: z.ZodType< + ConfigureProjectSourceRepository$Outbound, + ConfigureProjectSourceRepository +> = z.object({ + mode: z.literal("repository"), + gitRepository: z.lazy(() => + ConfigureProjectSourceGitRepositoryRequest$outboundSchema + ), + rootDirectory: z.nullable(z.string()).optional(), +}); + +export function configureProjectSourceRepositoryToJSON( + configureProjectSourceRepository: ConfigureProjectSourceRepository, +): string { + return JSON.stringify( + ConfigureProjectSourceRepository$outboundSchema.parse( + configureProjectSourceRepository, + ), + ); +} + +/** @internal */ +export type ConfigureProjectSourceRequestBody$Outbound = + | ConfigureProjectSourceRepository$Outbound + | TemplateRequest$Outbound; + +/** @internal */ +export const ConfigureProjectSourceRequestBody$outboundSchema: z.ZodType< + ConfigureProjectSourceRequestBody$Outbound, + ConfigureProjectSourceRequestBody +> = z.union([ + z.lazy(() => ConfigureProjectSourceRepository$outboundSchema), + z.lazy(() => TemplateRequest$outboundSchema), +]); + +export function configureProjectSourceRequestBodyToJSON( + configureProjectSourceRequestBody: ConfigureProjectSourceRequestBody, +): string { + return JSON.stringify( + ConfigureProjectSourceRequestBody$outboundSchema.parse( + configureProjectSourceRequestBody, + ), + ); +} + +/** @internal */ +export type ConfigureProjectSourceRequest$Outbound = { + idOrName: string; + workspace?: string | undefined; + RequestBody?: + | ConfigureProjectSourceRepository$Outbound + | TemplateRequest$Outbound + | undefined; +}; + +/** @internal */ +export const ConfigureProjectSourceRequest$outboundSchema: z.ZodType< + ConfigureProjectSourceRequest$Outbound, + ConfigureProjectSourceRequest +> = z.object({ + idOrName: z.string(), + workspace: z.string().optional(), + requestBody: z.union([ + z.lazy(() => ConfigureProjectSourceRepository$outboundSchema), + z.lazy(() => TemplateRequest$outboundSchema), + ]).optional(), +}).transform((v) => { + return remap$(v, { + requestBody: "RequestBody", + }); +}); + +export function configureProjectSourceRequestToJSON( + configureProjectSourceRequest: ConfigureProjectSourceRequest, +): string { + return JSON.stringify( + ConfigureProjectSourceRequest$outboundSchema.parse( + configureProjectSourceRequest, + ), + ); +} + +/** @internal */ +export const ConfigureProjectSourceTypeResponse$inboundSchema: z.ZodEnum< + typeof ConfigureProjectSourceTypeResponse +> = z.enum(ConfigureProjectSourceTypeResponse); + +/** @internal */ +export const ConfigureProjectSourceGitRepositoryResponse$inboundSchema: + z.ZodType = z.object({ + type: ConfigureProjectSourceTypeResponse$inboundSchema, + repo: z.string(), + }); + +export function configureProjectSourceGitRepositoryResponseFromJSON( + jsonString: string, +): SafeParseResult< + ConfigureProjectSourceGitRepositoryResponse, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + ConfigureProjectSourceGitRepositoryResponse$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'ConfigureProjectSourceGitRepositoryResponse' from JSON`, + ); +} + +/** @internal */ +export const ConfigureProjectSourceDeploymentPortalAppearance$inboundSchema: + z.ZodType = z + .object({ + avatarUrl: z.nullable(z.string()).optional(), + preset: models.DeploymentPortalAppearancePreset$inboundSchema.default( + "clean", + ), + accentColor: models.DeploymentPortalAccentColor$inboundSchema.default( + "blue", + ), + title: z.nullable(z.string()).optional(), + subtitle: z.nullable(z.string()).optional(), + supportUrl: z.nullable(z.string()).optional(), + docsUrl: z.nullable(z.string()).optional(), + density: models.DeploymentPortalDensity$inboundSchema.default( + "comfortable", + ), + }); + +export function configureProjectSourceDeploymentPortalAppearanceFromJSON( + jsonString: string, +): SafeParseResult< + ConfigureProjectSourceDeploymentPortalAppearance, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + ConfigureProjectSourceDeploymentPortalAppearance$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'ConfigureProjectSourceDeploymentPortalAppearance' from JSON`, + ); +} + +/** @internal */ +export const ConfigureProjectSourceBinaryTarget$inboundSchema: z.ZodEnum< + typeof ConfigureProjectSourceBinaryTarget +> = z.enum(ConfigureProjectSourceBinaryTarget); + +/** @internal */ +export const ConfigureProjectSourceCli$inboundSchema: z.ZodType< + ConfigureProjectSourceCli, + unknown +> = z.object({ + binaryTargets: z.array(ConfigureProjectSourceBinaryTarget$inboundSchema) + .optional(), + displayName: z.string(), + name: z.string(), + enabled: z.boolean(), +}); + +export function configureProjectSourceCliFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ConfigureProjectSourceCli$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ConfigureProjectSourceCli' from JSON`, + ); +} + +/** @internal */ +export const ConfigureProjectSourceCloudformation$inboundSchema: z.ZodType< + ConfigureProjectSourceCloudformation, + unknown +> = z.object({ + enabled: z.boolean(), + displayName: z.nullable(z.string()).optional(), +}); + +export function configureProjectSourceCloudformationFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ConfigureProjectSourceCloudformation$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ConfigureProjectSourceCloudformation' from JSON`, + ); +} + +/** @internal */ +export const ConfigureProjectSourceOperatorImage$inboundSchema: z.ZodType< + ConfigureProjectSourceOperatorImage, + unknown +> = z.object({ + brand: z.nullable(z.string()).optional(), + displayName: z.string(), + envPrefix: z.nullable(z.string()).optional(), + labelDomain: z.nullable(z.string()).optional(), + name: z.string(), + enabled: z.boolean(), +}); + +export function configureProjectSourceOperatorImageFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ConfigureProjectSourceOperatorImage$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ConfigureProjectSourceOperatorImage' from JSON`, + ); +} + +/** @internal */ +export const ConfigureProjectSourceHelm$inboundSchema: z.ZodType< + ConfigureProjectSourceHelm, + unknown +> = z.object({ + chartName: z.string(), + description: z.string(), + enabled: z.boolean(), +}); + +export function configureProjectSourceHelmFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ConfigureProjectSourceHelm$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ConfigureProjectSourceHelm' from JSON`, + ); +} + +/** @internal */ +export const ConfigureProjectSourceTerraform$inboundSchema: z.ZodType< + ConfigureProjectSourceTerraform, + unknown +> = z.object({ + enabled: z.boolean(), + displayName: z.nullable(z.string()).optional(), +}); + +export function configureProjectSourceTerraformFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ConfigureProjectSourceTerraform$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ConfigureProjectSourceTerraform' from JSON`, + ); +} + +/** @internal */ +export const ConfigureProjectSourcePackagesConfig$inboundSchema: z.ZodType< + ConfigureProjectSourcePackagesConfig, + unknown +> = z.object({ + cli: z.nullable(z.lazy(() => ConfigureProjectSourceCli$inboundSchema)) + .optional(), + cloudformation: z.nullable( + z.lazy(() => ConfigureProjectSourceCloudformation$inboundSchema), + ).optional(), + operatorImage: z.nullable( + z.lazy(() => ConfigureProjectSourceOperatorImage$inboundSchema), + ).optional(), + helm: z.nullable(z.lazy(() => ConfigureProjectSourceHelm$inboundSchema)) + .optional(), + terraform: z.nullable( + z.lazy(() => ConfigureProjectSourceTerraform$inboundSchema), + ).optional(), +}); + +export function configureProjectSourcePackagesConfigFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ConfigureProjectSourcePackagesConfig$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ConfigureProjectSourcePackagesConfig' from JSON`, + ); +} + +/** @internal */ +export const ConfigureProjectSourceDefaultManagers$inboundSchema: z.ZodType< + ConfigureProjectSourceDefaultManagers, + unknown +> = z.object({ + aws: z.nullable(z.string()).optional(), + gcp: z.nullable(z.string()).optional(), + azure: z.nullable(z.string()).optional(), + kubernetes: z.nullable(z.string()).optional(), + machines: z.nullable(z.string()).optional(), + local: z.nullable(z.string()).optional(), +}); + +export function configureProjectSourceDefaultManagersFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ConfigureProjectSourceDefaultManagers$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ConfigureProjectSourceDefaultManagers' from JSON`, + ); +} + +/** @internal */ +export const ConfigureProjectSourceDeployments$inboundSchema: z.ZodType< + ConfigureProjectSourceDeployments, + unknown +> = z.object({ + enabled: z.boolean(), +}); + +export function configureProjectSourceDeploymentsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ConfigureProjectSourceDeployments$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ConfigureProjectSourceDeployments' from JSON`, + ); +} + +/** @internal */ +export const ConfigureProjectSourceKeys$inboundSchema: z.ZodType< + ConfigureProjectSourceKeys, + unknown +> = z.object({ + enabled: z.boolean(), + applicationEncryption: z.boolean(), +}); + +export function configureProjectSourceKeysFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ConfigureProjectSourceKeys$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ConfigureProjectSourceKeys' from JSON`, + ); +} + +/** @internal */ +export const ConfigureProjectSourceAllowedProvider$inboundSchema: z.ZodEnum< + typeof ConfigureProjectSourceAllowedProvider +> = z.enum(ConfigureProjectSourceAllowedProvider); + +/** @internal */ +export const ConfigureProjectSourceClientApi$inboundSchema: z.ZodEnum< + typeof ConfigureProjectSourceClientApi +> = z.enum(ConfigureProjectSourceClientApi); + +/** @internal */ +export const ConfigureProjectSourceRequirement$inboundSchema: z.ZodType< + ConfigureProjectSourceRequirement, + unknown +> = z.object({ + publicModelId: z.string(), + clientApis: z.array(ConfigureProjectSourceClientApi$inboundSchema), + required: z.boolean(), +}); + +export function configureProjectSourceRequirementFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ConfigureProjectSourceRequirement$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ConfigureProjectSourceRequirement' from JSON`, + ); +} + +/** @internal */ +export const ConfigureProjectSourceModels$inboundSchema: z.ZodType< + ConfigureProjectSourceModels, + unknown +> = z.object({ + enabled: z.boolean(), + allowedProviders: z.array( + ConfigureProjectSourceAllowedProvider$inboundSchema, + ), + requirements: z.array( + z.lazy(() => ConfigureProjectSourceRequirement$inboundSchema), + ), +}); + +export function configureProjectSourceModelsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ConfigureProjectSourceModels$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ConfigureProjectSourceModels' from JSON`, + ); +} + +/** @internal */ +export const ConfigureProjectSourceAccess$inboundSchema: z.ZodEnum< + typeof ConfigureProjectSourceAccess +> = z.enum(ConfigureProjectSourceAccess); + +/** @internal */ +export const ConfigureProjectSourceBuckets$inboundSchema: z.ZodType< + ConfigureProjectSourceBuckets, + unknown +> = z.object({ + enabled: z.boolean(), + access: ConfigureProjectSourceAccess$inboundSchema, +}); + +export function configureProjectSourceBucketsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ConfigureProjectSourceBuckets$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ConfigureProjectSourceBuckets' from JSON`, + ); +} + +/** @internal */ +export const ConfigureProjectSourceCredentialPolicy$inboundSchema: z.ZodEnum< + typeof ConfigureProjectSourceCredentialPolicy +> = z.enum(ConfigureProjectSourceCredentialPolicy); + +/** @internal */ +export const ConfigureProjectSourceRegistry$inboundSchema: z.ZodType< + ConfigureProjectSourceRegistry, + unknown +> = z.object({ + enabled: z.boolean(), + repositories: z.array(z.string()), + credentialPolicy: ConfigureProjectSourceCredentialPolicy$inboundSchema, +}); + +export function configureProjectSourceRegistryFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ConfigureProjectSourceRegistry$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ConfigureProjectSourceRegistry' from JSON`, + ); +} + +/** @internal */ +export const ConfigureProjectSourceCapabilities$inboundSchema: z.ZodType< + ConfigureProjectSourceCapabilities, + unknown +> = z.object({ + deployments: z.lazy(() => ConfigureProjectSourceDeployments$inboundSchema) + .optional(), + keys: z.lazy(() => ConfigureProjectSourceKeys$inboundSchema).optional(), + models: z.lazy(() => ConfigureProjectSourceModels$inboundSchema).optional(), + buckets: z.lazy(() => ConfigureProjectSourceBuckets$inboundSchema).optional(), + registry: z.lazy(() => ConfigureProjectSourceRegistry$inboundSchema) + .optional(), +}); + +export function configureProjectSourceCapabilitiesFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ConfigureProjectSourceCapabilities$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ConfigureProjectSourceCapabilities' from JSON`, + ); +} + +/** @internal */ +export const ConfigureProjectSourceProjectCapabilities$inboundSchema: z.ZodType< + ConfigureProjectSourceProjectCapabilities, + unknown +> = z.object({ + schemaVersion: z.number(), + capabilities: z.lazy(() => ConfigureProjectSourceCapabilities$inboundSchema), +}); + +export function configureProjectSourceProjectCapabilitiesFromJSON( + jsonString: string, +): SafeParseResult< + ConfigureProjectSourceProjectCapabilities, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + ConfigureProjectSourceProjectCapabilities$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'ConfigureProjectSourceProjectCapabilities' from JSON`, + ); +} + +/** @internal */ +export const ConfigureProjectSourceGithubSetup$inboundSchema: z.ZodType< + ConfigureProjectSourceGithubSetup, + unknown +> = z.object({ + pullRequestUrl: z.string(), + workflowUrl: z.string(), +}); + +export function configureProjectSourceGithubSetupFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ConfigureProjectSourceGithubSetup$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ConfigureProjectSourceGithubSetup' from JSON`, + ); +} + +/** @internal */ +export const ConfigureProjectSourceSourceRepository$inboundSchema: z.ZodEnum< + typeof ConfigureProjectSourceSourceRepository +> = z.enum(ConfigureProjectSourceSourceRepository); + +/** @internal */ +export const ConfigureProjectSourceTemplatePathResponse$inboundSchema: + z.ZodEnum = z.enum( + ConfigureProjectSourceTemplatePathResponse, + ); + +/** @internal */ +export const ConfigureProjectSourceTemplateResponse$inboundSchema: z.ZodType< + ConfigureProjectSourceTemplateResponse, + unknown +> = z.object({ + sourceRepository: ConfigureProjectSourceSourceRepository$inboundSchema, + forkRepository: z.string(), + templatePath: ConfigureProjectSourceTemplatePathResponse$inboundSchema, + resolvedRootDirectory: z.string(), +}); + +export function configureProjectSourceTemplateResponseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ConfigureProjectSourceTemplateResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ConfigureProjectSourceTemplateResponse' from JSON`, + ); +} + +/** @internal */ +export const ConfigureProjectSourceResponse$inboundSchema: z.ZodType< + ConfigureProjectSourceResponse, + unknown +> = z.object({ + id: z.string(), + name: z.string(), + gitRepository: z.nullable( + z.lazy(() => ConfigureProjectSourceGitRepositoryResponse$inboundSchema), + ).optional(), + rootDirectory: z.nullable(z.string()).optional(), + deploymentPortalAppearance: z.nullable( + z.lazy(() => + ConfigureProjectSourceDeploymentPortalAppearance$inboundSchema + ), + ).optional(), + packagesConfig: z.nullable( + z.lazy(() => ConfigureProjectSourcePackagesConfig$inboundSchema), + ).optional(), + domainId: z.nullable(z.string()).optional(), + defaultManagers: z.nullable( + z.lazy(() => ConfigureProjectSourceDefaultManagers$inboundSchema), + ).optional(), + projectCapabilities: z.nullable( + z.lazy(() => ConfigureProjectSourceProjectCapabilities$inboundSchema), + ).optional(), + createdAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), + workspaceId: z.string(), + githubSetup: z.lazy(() => ConfigureProjectSourceGithubSetup$inboundSchema) + .optional(), + gitRepositoryWarning: models.APIError$inboundSchema.optional(), + template: z.lazy(() => ConfigureProjectSourceTemplateResponse$inboundSchema) + .optional(), +}); + +export function configureProjectSourceResponseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ConfigureProjectSourceResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ConfigureProjectSourceResponse' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/continueawsvirtualkey.ts b/client-sdks/platform/typescript/src/models/operations/continueawsvirtualkey.ts new file mode 100644 index 000000000..00fa91426 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/continueawsvirtualkey.ts @@ -0,0 +1,166 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../../lib/primitives.js"; +import { safeParse } from "../../lib/schemas.js"; +import { ClosedEnum } from "../../types/enums.js"; +import { Result as SafeParseResult } from "../../types/fp.js"; +import { SDKValidationError } from "../errors/sdkvalidationerror.js"; + +export type ContinueAwsVirtualKeyRequestBody = { + customKeyStoreId: string; + kmsKeyArn: string; +}; + +export type ContinueAwsVirtualKeyRequest = { + /** + * Unique identifier for the aws virtual key. + */ + id: string; + requestBody?: ContinueAwsVirtualKeyRequestBody | undefined; +}; + +export const ContinueAwsVirtualKeyStatus = { + Provisioning: "provisioning", + Ready: "ready", + ActionRequired: "action-required", + Decommissioning: "decommissioning", + DeletionPending: "deletion-pending", + Deleted: "deleted", + Failed: "failed", +} as const; +export type ContinueAwsVirtualKeyStatus = ClosedEnum< + typeof ContinueAwsVirtualKeyStatus +>; + +/** + * Updated AWS setup facts + */ +export type ContinueAwsVirtualKeyResponse = { + /** + * Unique identifier for the aws virtual key. + */ + id: string; + projectId: string; + status: ContinueAwsVirtualKeyStatus; + externalKeyId: string; + awsAccountId: string; + awsRegion: string; + customKeyStoreId: string | null; + kmsKeyArn: string | null; + alias: string | null; + description: string | null; + deletionWindowDays: number; + tags: { [k: string]: string }; + observedAt: Date | null; + canaryPassedAt: Date | null; + deletionScheduledAt: Date | null; + finalDeletionObservedAt: Date | null; + createdAt: Date; + updatedAt: Date; +}; + +/** @internal */ +export type ContinueAwsVirtualKeyRequestBody$Outbound = { + customKeyStoreId: string; + kmsKeyArn: string; +}; + +/** @internal */ +export const ContinueAwsVirtualKeyRequestBody$outboundSchema: z.ZodType< + ContinueAwsVirtualKeyRequestBody$Outbound, + ContinueAwsVirtualKeyRequestBody +> = z.object({ + customKeyStoreId: z.string(), + kmsKeyArn: z.string(), +}); + +export function continueAwsVirtualKeyRequestBodyToJSON( + continueAwsVirtualKeyRequestBody: ContinueAwsVirtualKeyRequestBody, +): string { + return JSON.stringify( + ContinueAwsVirtualKeyRequestBody$outboundSchema.parse( + continueAwsVirtualKeyRequestBody, + ), + ); +} + +/** @internal */ +export type ContinueAwsVirtualKeyRequest$Outbound = { + id: string; + RequestBody?: ContinueAwsVirtualKeyRequestBody$Outbound | undefined; +}; + +/** @internal */ +export const ContinueAwsVirtualKeyRequest$outboundSchema: z.ZodType< + ContinueAwsVirtualKeyRequest$Outbound, + ContinueAwsVirtualKeyRequest +> = z.object({ + id: z.string(), + requestBody: z.lazy(() => ContinueAwsVirtualKeyRequestBody$outboundSchema) + .optional(), +}).transform((v) => { + return remap$(v, { + requestBody: "RequestBody", + }); +}); + +export function continueAwsVirtualKeyRequestToJSON( + continueAwsVirtualKeyRequest: ContinueAwsVirtualKeyRequest, +): string { + return JSON.stringify( + ContinueAwsVirtualKeyRequest$outboundSchema.parse( + continueAwsVirtualKeyRequest, + ), + ); +} + +/** @internal */ +export const ContinueAwsVirtualKeyStatus$inboundSchema: z.ZodEnum< + typeof ContinueAwsVirtualKeyStatus +> = z.enum(ContinueAwsVirtualKeyStatus); + +/** @internal */ +export const ContinueAwsVirtualKeyResponse$inboundSchema: z.ZodType< + ContinueAwsVirtualKeyResponse, + unknown +> = z.object({ + id: z.string(), + projectId: z.string(), + status: ContinueAwsVirtualKeyStatus$inboundSchema, + externalKeyId: z.string(), + awsAccountId: z.string(), + awsRegion: z.string(), + customKeyStoreId: z.nullable(z.string()), + kmsKeyArn: z.nullable(z.string()), + alias: z.nullable(z.string()), + description: z.nullable(z.string()), + deletionWindowDays: z.int(), + tags: z.record(z.string(), z.string()), + observedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + canaryPassedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + deletionScheduledAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + finalDeletionObservedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + createdAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), + updatedAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), +}); + +export function continueAwsVirtualKeyResponseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ContinueAwsVirtualKeyResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ContinueAwsVirtualKeyResponse' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/createaccessrequest.ts b/client-sdks/platform/typescript/src/models/operations/createaccessrequest.ts new file mode 100644 index 000000000..aa4058405 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/createaccessrequest.ts @@ -0,0 +1,191 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../../lib/primitives.js"; +import { safeParse } from "../../lib/schemas.js"; +import { ClosedEnum } from "../../types/enums.js"; +import { Result as SafeParseResult } from "../../types/fp.js"; +import { SDKValidationError } from "../errors/sdkvalidationerror.js"; + +export type CommandRequest = { + command: string; + summary: string; +}; + +export type CreateAccessRequestRequestBody = { + deploymentId: string; + remediationPlanId: string; + title: string; + reason?: string | undefined; + commands: Array; +}; + +export type CreateAccessRequestRequest = { + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; + requestBody?: CreateAccessRequestRequestBody | undefined; +}; + +export type CreateAccessRequestCommandResponse = { + command: string; + summary: string; +}; + +export const CreateAccessRequestStatus = { + PendingApproval: "pending-approval", + Queued: "queued", + CustomerApproved: "customer-approved", + Expired: "expired", + Rejected: "rejected", +} as const; +export type CreateAccessRequestStatus = ClosedEnum< + typeof CreateAccessRequestStatus +>; + +/** + * The created access request. + */ +export type CreateAccessRequestResponse = { + id: string; + deploymentId: string; + remediationPlanId: string; + title: string; + reason: string | null; + commands: Array; + status: CreateAccessRequestStatus; + approvedUntil: string | null; +}; + +/** @internal */ +export type CommandRequest$Outbound = { + command: string; + summary: string; +}; + +/** @internal */ +export const CommandRequest$outboundSchema: z.ZodType< + CommandRequest$Outbound, + CommandRequest +> = z.object({ + command: z.string(), + summary: z.string(), +}); + +export function commandRequestToJSON(commandRequest: CommandRequest): string { + return JSON.stringify(CommandRequest$outboundSchema.parse(commandRequest)); +} + +/** @internal */ +export type CreateAccessRequestRequestBody$Outbound = { + deploymentId: string; + remediationPlanId: string; + title: string; + reason?: string | undefined; + commands: Array; +}; + +/** @internal */ +export const CreateAccessRequestRequestBody$outboundSchema: z.ZodType< + CreateAccessRequestRequestBody$Outbound, + CreateAccessRequestRequestBody +> = z.object({ + deploymentId: z.string(), + remediationPlanId: z.string(), + title: z.string(), + reason: z.string().optional(), + commands: z.array(z.lazy(() => CommandRequest$outboundSchema)), +}); + +export function createAccessRequestRequestBodyToJSON( + createAccessRequestRequestBody: CreateAccessRequestRequestBody, +): string { + return JSON.stringify( + CreateAccessRequestRequestBody$outboundSchema.parse( + createAccessRequestRequestBody, + ), + ); +} + +/** @internal */ +export type CreateAccessRequestRequest$Outbound = { + workspace?: string | undefined; + RequestBody?: CreateAccessRequestRequestBody$Outbound | undefined; +}; + +/** @internal */ +export const CreateAccessRequestRequest$outboundSchema: z.ZodType< + CreateAccessRequestRequest$Outbound, + CreateAccessRequestRequest +> = z.object({ + workspace: z.string().optional(), + requestBody: z.lazy(() => CreateAccessRequestRequestBody$outboundSchema) + .optional(), +}).transform((v) => { + return remap$(v, { + requestBody: "RequestBody", + }); +}); + +export function createAccessRequestRequestToJSON( + createAccessRequestRequest: CreateAccessRequestRequest, +): string { + return JSON.stringify( + CreateAccessRequestRequest$outboundSchema.parse(createAccessRequestRequest), + ); +} + +/** @internal */ +export const CreateAccessRequestCommandResponse$inboundSchema: z.ZodType< + CreateAccessRequestCommandResponse, + unknown +> = z.object({ + command: z.string(), + summary: z.string(), +}); + +export function createAccessRequestCommandResponseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateAccessRequestCommandResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateAccessRequestCommandResponse' from JSON`, + ); +} + +/** @internal */ +export const CreateAccessRequestStatus$inboundSchema: z.ZodEnum< + typeof CreateAccessRequestStatus +> = z.enum(CreateAccessRequestStatus); + +/** @internal */ +export const CreateAccessRequestResponse$inboundSchema: z.ZodType< + CreateAccessRequestResponse, + unknown +> = z.object({ + id: z.string(), + deploymentId: z.string(), + remediationPlanId: z.string(), + title: z.string(), + reason: z.nullable(z.string()), + commands: z.array( + z.lazy(() => CreateAccessRequestCommandResponse$inboundSchema), + ), + status: CreateAccessRequestStatus$inboundSchema, + approvedUntil: z.nullable(z.string()), +}); + +export function createAccessRequestResponseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CreateAccessRequestResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateAccessRequestResponse' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/createawsvirtualkey.ts b/client-sdks/platform/typescript/src/models/operations/createawsvirtualkey.ts new file mode 100644 index 000000000..60a257fbe --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/createawsvirtualkey.ts @@ -0,0 +1,272 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../../lib/schemas.js"; +import { ClosedEnum } from "../../types/enums.js"; +import { Result as SafeParseResult } from "../../types/fp.js"; +import { SDKValidationError } from "../errors/sdkvalidationerror.js"; + +export type Selector2 = { + /** + * Unique identifier for the deployment. + */ + deploymentId: string; +}; + +export type Selector1 = { + /** + * Case-sensitive, URL- and header-safe identifier from the integrating application. + */ + externalId: string; +}; + +export type SelectorUnion = Selector1 | Selector2; + +export type CreateAwsVirtualKeyRequest = { + /** + * Filter by project ID or name. + */ + project?: string | undefined; + selector: Selector1 | Selector2; + awsAccountId: string; + awsRegion: string; + idempotencyKey: string; + alias?: string | null | undefined; + description?: string | null | undefined; + deletionWindowDays?: number | undefined; + tags?: { [k: string]: string } | undefined; +}; + +export const CreateAwsVirtualKeyStatus = { + Provisioning: "provisioning", + Ready: "ready", + ActionRequired: "action-required", + Decommissioning: "decommissioning", + DeletionPending: "deletion-pending", + Deleted: "deleted", + Failed: "failed", +} as const; +export type CreateAwsVirtualKeyStatus = ClosedEnum< + typeof CreateAwsVirtualKeyStatus +>; + +export type CreateAwsVirtualKeyVirtualKey = { + /** + * Unique identifier for the aws virtual key. + */ + id: string; + projectId: string; + status: CreateAwsVirtualKeyStatus; + externalKeyId: string; + awsAccountId: string; + awsRegion: string; + customKeyStoreId: string | null; + kmsKeyArn: string | null; + alias: string | null; + description: string | null; + deletionWindowDays: number; + tags: { [k: string]: string }; + observedAt: Date | null; + canaryPassedAt: Date | null; + deletionScheduledAt: Date | null; + finalDeletionObservedAt: Date | null; + createdAt: Date; + updatedAt: Date; +}; + +export type CreateAwsVirtualKeySetup = { + proxyUriEndpoint: string; + proxyUriPath: string; + accessKeyId: string; + secretAccessKey: string; + externalKeyId: string; +}; + +/** + * Created or resumed Virtual Key + */ +export type CreateAwsVirtualKeyResponse = { + virtualKey: CreateAwsVirtualKeyVirtualKey; + setup: CreateAwsVirtualKeySetup; +}; + +/** @internal */ +export type Selector2$Outbound = { + deploymentId: string; +}; + +/** @internal */ +export const Selector2$outboundSchema: z.ZodType< + Selector2$Outbound, + Selector2 +> = z.object({ + deploymentId: z.string(), +}); + +export function selector2ToJSON(selector2: Selector2): string { + return JSON.stringify(Selector2$outboundSchema.parse(selector2)); +} + +/** @internal */ +export type Selector1$Outbound = { + externalId: string; +}; + +/** @internal */ +export const Selector1$outboundSchema: z.ZodType< + Selector1$Outbound, + Selector1 +> = z.object({ + externalId: z.string(), +}); + +export function selector1ToJSON(selector1: Selector1): string { + return JSON.stringify(Selector1$outboundSchema.parse(selector1)); +} + +/** @internal */ +export type SelectorUnion$Outbound = Selector1$Outbound | Selector2$Outbound; + +/** @internal */ +export const SelectorUnion$outboundSchema: z.ZodType< + SelectorUnion$Outbound, + SelectorUnion +> = z.union([ + z.lazy(() => Selector1$outboundSchema), + z.lazy(() => Selector2$outboundSchema), +]); + +export function selectorUnionToJSON(selectorUnion: SelectorUnion): string { + return JSON.stringify(SelectorUnion$outboundSchema.parse(selectorUnion)); +} + +/** @internal */ +export type CreateAwsVirtualKeyRequest$Outbound = { + project?: string | undefined; + selector: Selector1$Outbound | Selector2$Outbound; + awsAccountId: string; + awsRegion: string; + idempotencyKey: string; + alias?: string | null | undefined; + description?: string | null | undefined; + deletionWindowDays: number; + tags?: { [k: string]: string } | undefined; +}; + +/** @internal */ +export const CreateAwsVirtualKeyRequest$outboundSchema: z.ZodType< + CreateAwsVirtualKeyRequest$Outbound, + CreateAwsVirtualKeyRequest +> = z.object({ + project: z.string().optional(), + selector: z.union([ + z.lazy(() => Selector1$outboundSchema), + z.lazy(() => Selector2$outboundSchema), + ]), + awsAccountId: z.string(), + awsRegion: z.string(), + idempotencyKey: z.string(), + alias: z.nullable(z.string()).optional(), + description: z.nullable(z.string()).optional(), + deletionWindowDays: z.int().default(30), + tags: z.record(z.string(), z.string()).optional(), +}); + +export function createAwsVirtualKeyRequestToJSON( + createAwsVirtualKeyRequest: CreateAwsVirtualKeyRequest, +): string { + return JSON.stringify( + CreateAwsVirtualKeyRequest$outboundSchema.parse(createAwsVirtualKeyRequest), + ); +} + +/** @internal */ +export const CreateAwsVirtualKeyStatus$inboundSchema: z.ZodEnum< + typeof CreateAwsVirtualKeyStatus +> = z.enum(CreateAwsVirtualKeyStatus); + +/** @internal */ +export const CreateAwsVirtualKeyVirtualKey$inboundSchema: z.ZodType< + CreateAwsVirtualKeyVirtualKey, + unknown +> = z.object({ + id: z.string(), + projectId: z.string(), + status: CreateAwsVirtualKeyStatus$inboundSchema, + externalKeyId: z.string(), + awsAccountId: z.string(), + awsRegion: z.string(), + customKeyStoreId: z.nullable(z.string()), + kmsKeyArn: z.nullable(z.string()), + alias: z.nullable(z.string()), + description: z.nullable(z.string()), + deletionWindowDays: z.int(), + tags: z.record(z.string(), z.string()), + observedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + canaryPassedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + deletionScheduledAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + finalDeletionObservedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + createdAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), + updatedAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), +}); + +export function createAwsVirtualKeyVirtualKeyFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CreateAwsVirtualKeyVirtualKey$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateAwsVirtualKeyVirtualKey' from JSON`, + ); +} + +/** @internal */ +export const CreateAwsVirtualKeySetup$inboundSchema: z.ZodType< + CreateAwsVirtualKeySetup, + unknown +> = z.object({ + proxyUriEndpoint: z.string(), + proxyUriPath: z.string(), + accessKeyId: z.string(), + secretAccessKey: z.string(), + externalKeyId: z.string(), +}); + +export function createAwsVirtualKeySetupFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CreateAwsVirtualKeySetup$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateAwsVirtualKeySetup' from JSON`, + ); +} + +/** @internal */ +export const CreateAwsVirtualKeyResponse$inboundSchema: z.ZodType< + CreateAwsVirtualKeyResponse, + unknown +> = z.object({ + virtualKey: z.lazy(() => CreateAwsVirtualKeyVirtualKey$inboundSchema), + setup: z.lazy(() => CreateAwsVirtualKeySetup$inboundSchema), +}); + +export function createAwsVirtualKeyResponseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CreateAwsVirtualKeyResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateAwsVirtualKeyResponse' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/createcontainerregistrycredential.ts b/client-sdks/platform/typescript/src/models/operations/createcontainerregistrycredential.ts new file mode 100644 index 000000000..1e1b209c7 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/createcontainerregistrycredential.ts @@ -0,0 +1,102 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../../lib/primitives.js"; +import { ClosedEnum } from "../../types/enums.js"; + +export const Scope = { + Pull: "pull", + PushPull: "pushPull", +} as const; +export type Scope = ClosedEnum; + +export type CreateContainerRegistryCredentialRequestBody = { + label: string; + scope: Scope; + repositorySubset?: Array | null | undefined; + expiresAt?: Date | null | undefined; +}; + +export type CreateContainerRegistryCredentialRequest = { + /** + * Unique identifier for the deployment group. + */ + id: string; + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; + requestBody?: CreateContainerRegistryCredentialRequestBody | undefined; +}; + +/** @internal */ +export const Scope$outboundSchema: z.ZodEnum = z.enum(Scope); + +/** @internal */ +export type CreateContainerRegistryCredentialRequestBody$Outbound = { + label: string; + scope: string; + repositorySubset?: Array | null | undefined; + expiresAt?: string | null | undefined; +}; + +/** @internal */ +export const CreateContainerRegistryCredentialRequestBody$outboundSchema: + z.ZodType< + CreateContainerRegistryCredentialRequestBody$Outbound, + CreateContainerRegistryCredentialRequestBody + > = z.object({ + label: z.string(), + scope: Scope$outboundSchema, + repositorySubset: z.nullable(z.array(z.string())).optional(), + expiresAt: z.nullable(z.date().transform(v => v.toISOString())).optional(), + }); + +export function createContainerRegistryCredentialRequestBodyToJSON( + createContainerRegistryCredentialRequestBody: + CreateContainerRegistryCredentialRequestBody, +): string { + return JSON.stringify( + CreateContainerRegistryCredentialRequestBody$outboundSchema.parse( + createContainerRegistryCredentialRequestBody, + ), + ); +} + +/** @internal */ +export type CreateContainerRegistryCredentialRequest$Outbound = { + id: string; + workspace?: string | undefined; + RequestBody?: + | CreateContainerRegistryCredentialRequestBody$Outbound + | undefined; +}; + +/** @internal */ +export const CreateContainerRegistryCredentialRequest$outboundSchema: z.ZodType< + CreateContainerRegistryCredentialRequest$Outbound, + CreateContainerRegistryCredentialRequest +> = z.object({ + id: z.string(), + workspace: z.string().optional(), + requestBody: z.lazy(() => + CreateContainerRegistryCredentialRequestBody$outboundSchema + ).optional(), +}).transform((v) => { + return remap$(v, { + requestBody: "RequestBody", + }); +}); + +export function createContainerRegistryCredentialRequestToJSON( + createContainerRegistryCredentialRequest: + CreateContainerRegistryCredentialRequest, +): string { + return JSON.stringify( + CreateContainerRegistryCredentialRequest$outboundSchema.parse( + createContainerRegistryCredentialRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/createcontainerregistryrepository.ts b/client-sdks/platform/typescript/src/models/operations/createcontainerregistryrepository.ts new file mode 100644 index 000000000..5bda459f2 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/createcontainerregistryrepository.ts @@ -0,0 +1,163 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../../lib/primitives.js"; +import { safeParse } from "../../lib/schemas.js"; +import { ClosedEnum } from "../../types/enums.js"; +import { Result as SafeParseResult } from "../../types/fp.js"; +import { SDKValidationError } from "../errors/sdkvalidationerror.js"; + +export type CreateContainerRegistryRepositoryRequestBody = { + name: string; +}; + +export type CreateContainerRegistryRepositoryRequest = { + /** + * Unique identifier for the deployment group. + */ + id: string; + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; + requestBody?: CreateContainerRegistryRepositoryRequestBody | undefined; +}; + +export const CreateContainerRegistryRepositoryDesiredState = { + Present: "present", + DeleteRequested: "deleteRequested", + Deleted: "deleted", +} as const; +export type CreateContainerRegistryRepositoryDesiredState = ClosedEnum< + typeof CreateContainerRegistryRepositoryDesiredState +>; + +export const CreateContainerRegistryRepositoryStatus = { + Pending: "pending", + Creating: "creating", + Ready: "ready", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type CreateContainerRegistryRepositoryStatus = ClosedEnum< + typeof CreateContainerRegistryRepositoryStatus +>; + +/** + * Repository requested + */ +export type CreateContainerRegistryRepositoryResponse = { + /** + * Unique identifier for the container registry repository. + */ + id: string; + logicalName: string; + desiredState: CreateContainerRegistryRepositoryDesiredState; + status: CreateContainerRegistryRepositoryStatus; + verifiedAt: Date | null; +}; + +/** @internal */ +export type CreateContainerRegistryRepositoryRequestBody$Outbound = { + name: string; +}; + +/** @internal */ +export const CreateContainerRegistryRepositoryRequestBody$outboundSchema: + z.ZodType< + CreateContainerRegistryRepositoryRequestBody$Outbound, + CreateContainerRegistryRepositoryRequestBody + > = z.object({ + name: z.string(), + }); + +export function createContainerRegistryRepositoryRequestBodyToJSON( + createContainerRegistryRepositoryRequestBody: + CreateContainerRegistryRepositoryRequestBody, +): string { + return JSON.stringify( + CreateContainerRegistryRepositoryRequestBody$outboundSchema.parse( + createContainerRegistryRepositoryRequestBody, + ), + ); +} + +/** @internal */ +export type CreateContainerRegistryRepositoryRequest$Outbound = { + id: string; + workspace?: string | undefined; + RequestBody?: + | CreateContainerRegistryRepositoryRequestBody$Outbound + | undefined; +}; + +/** @internal */ +export const CreateContainerRegistryRepositoryRequest$outboundSchema: z.ZodType< + CreateContainerRegistryRepositoryRequest$Outbound, + CreateContainerRegistryRepositoryRequest +> = z.object({ + id: z.string(), + workspace: z.string().optional(), + requestBody: z.lazy(() => + CreateContainerRegistryRepositoryRequestBody$outboundSchema + ).optional(), +}).transform((v) => { + return remap$(v, { + requestBody: "RequestBody", + }); +}); + +export function createContainerRegistryRepositoryRequestToJSON( + createContainerRegistryRepositoryRequest: + CreateContainerRegistryRepositoryRequest, +): string { + return JSON.stringify( + CreateContainerRegistryRepositoryRequest$outboundSchema.parse( + createContainerRegistryRepositoryRequest, + ), + ); +} + +/** @internal */ +export const CreateContainerRegistryRepositoryDesiredState$inboundSchema: + z.ZodEnum = z.enum( + CreateContainerRegistryRepositoryDesiredState, + ); + +/** @internal */ +export const CreateContainerRegistryRepositoryStatus$inboundSchema: z.ZodEnum< + typeof CreateContainerRegistryRepositoryStatus +> = z.enum(CreateContainerRegistryRepositoryStatus); + +/** @internal */ +export const CreateContainerRegistryRepositoryResponse$inboundSchema: z.ZodType< + CreateContainerRegistryRepositoryResponse, + unknown +> = z.object({ + id: z.string(), + logicalName: z.string(), + desiredState: CreateContainerRegistryRepositoryDesiredState$inboundSchema, + status: CreateContainerRegistryRepositoryStatus$inboundSchema, + verifiedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), +}); + +export function createContainerRegistryRepositoryResponseFromJSON( + jsonString: string, +): SafeParseResult< + CreateContainerRegistryRepositoryResponse, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + CreateContainerRegistryRepositoryResponse$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'CreateContainerRegistryRepositoryResponse' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/createdomain.ts b/client-sdks/platform/typescript/src/models/operations/createdomain.ts index c0490eaaf..000357f2f 100644 --- a/client-sdks/platform/typescript/src/models/operations/createdomain.ts +++ b/client-sdks/platform/typescript/src/models/operations/createdomain.ts @@ -5,7 +5,7 @@ import * as z from "zod/v4"; import { remap as remap$ } from "../../lib/primitives.js"; -export type Setup = { +export type CreateDomainSetup = { deploymentPortal?: boolean | undefined; packages?: boolean | undefined; /** @@ -17,7 +17,7 @@ export type Setup = { export type CreateDomainRequestBody = { domain: string; - setup?: Setup | undefined; + setup?: CreateDomainSetup | undefined; }; export type CreateDomainRequest = { @@ -29,7 +29,7 @@ export type CreateDomainRequest = { }; /** @internal */ -export type Setup$Outbound = { +export type CreateDomainSetup$Outbound = { deploymentPortal?: boolean | undefined; packages?: boolean | undefined; deploymentUrlProjectId?: string | null | undefined; @@ -37,21 +37,28 @@ export type Setup$Outbound = { }; /** @internal */ -export const Setup$outboundSchema: z.ZodType = z.object({ +export const CreateDomainSetup$outboundSchema: z.ZodType< + CreateDomainSetup$Outbound, + CreateDomainSetup +> = z.object({ deploymentPortal: z.boolean().optional(), packages: z.boolean().optional(), deploymentUrlProjectId: z.nullable(z.string()).optional(), managerIds: z.array(z.string()).optional(), }); -export function setupToJSON(setup: Setup): string { - return JSON.stringify(Setup$outboundSchema.parse(setup)); +export function createDomainSetupToJSON( + createDomainSetup: CreateDomainSetup, +): string { + return JSON.stringify( + CreateDomainSetup$outboundSchema.parse(createDomainSetup), + ); } /** @internal */ export type CreateDomainRequestBody$Outbound = { domain: string; - setup?: Setup$Outbound | undefined; + setup?: CreateDomainSetup$Outbound | undefined; }; /** @internal */ @@ -60,7 +67,7 @@ export const CreateDomainRequestBody$outboundSchema: z.ZodType< CreateDomainRequestBody > = z.object({ domain: z.string(), - setup: z.lazy(() => Setup$outboundSchema).optional(), + setup: z.lazy(() => CreateDomainSetup$outboundSchema).optional(), }); export function createDomainRequestBodyToJSON( diff --git a/client-sdks/platform/typescript/src/models/operations/createoperationsbundleuploadurl.ts b/client-sdks/platform/typescript/src/models/operations/createoperationsbundleuploadurl.ts new file mode 100644 index 000000000..b598db8be --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/createoperationsbundleuploadurl.ts @@ -0,0 +1,56 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../../lib/primitives.js"; +import * as models from "../index.js"; + +export type CreateOperationsBundleUploadUrlRequest = { + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; + /** + * Filter by project ID or name. + */ + project: string; + operationsBundleUploadUrlRequest?: + | models.OperationsBundleUploadUrlRequest + | undefined; +}; + +/** @internal */ +export type CreateOperationsBundleUploadUrlRequest$Outbound = { + workspace?: string | undefined; + project: string; + OperationsBundleUploadUrlRequest?: + | models.OperationsBundleUploadUrlRequest$Outbound + | undefined; +}; + +/** @internal */ +export const CreateOperationsBundleUploadUrlRequest$outboundSchema: z.ZodType< + CreateOperationsBundleUploadUrlRequest$Outbound, + CreateOperationsBundleUploadUrlRequest +> = z.object({ + workspace: z.string().optional(), + project: z.string(), + operationsBundleUploadUrlRequest: models + .OperationsBundleUploadUrlRequest$outboundSchema.optional(), +}).transform((v) => { + return remap$(v, { + operationsBundleUploadUrlRequest: "OperationsBundleUploadUrlRequest", + }); +}); + +export function createOperationsBundleUploadUrlRequestToJSON( + createOperationsBundleUploadUrlRequest: + CreateOperationsBundleUploadUrlRequest, +): string { + return JSON.stringify( + CreateOperationsBundleUploadUrlRequest$outboundSchema.parse( + createOperationsBundleUploadUrlRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/createproject.ts b/client-sdks/platform/typescript/src/models/operations/createproject.ts index 5f761a95f..e7939c966 100644 --- a/client-sdks/platform/typescript/src/models/operations/createproject.ts +++ b/client-sdks/platform/typescript/src/models/operations/createproject.ts @@ -26,7 +26,7 @@ export type CreateProjectTypeRequest = ClosedEnum< /** * 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`. */ -export type GitRepositoryRequest = { +export type CreateProjectGitRepositoryRequest = { /** * The Git Provider of the repository */ @@ -200,7 +200,7 @@ export type CreateProjectRequestBody = { /** * 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`. */ - gitRepository?: GitRepositoryRequest | null | undefined; + gitRepository?: CreateProjectGitRepositoryRequest | null | undefined; /** * 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 */ @@ -469,6 +469,10 @@ export type CreateProjectDefaultManagers = { local?: string | null | undefined; }; +export type CreateProjectDeployments = { + enabled: boolean; +}; + export type CreateProjectKeys = { enabled: boolean; applicationEncryption: boolean; @@ -479,6 +483,8 @@ export const CreateProjectAllowedProvider = { GcpVertex: "gcp-vertex", AzureFoundry: "azure-foundry", Anthropic: "anthropic", + Databricks: "databricks", + Openai: "openai", } as const; export type CreateProjectAllowedProvider = ClosedEnum< typeof CreateProjectAllowedProvider @@ -503,17 +509,44 @@ export type CreateProjectModels = { requirements: Array; }; -export type CreateProjectConnections = { +export const CreateProjectAccess = { + ReadWrite: "read-write", +} as const; +export type CreateProjectAccess = ClosedEnum; + +export type CreateProjectBuckets = { + enabled: boolean; + access: CreateProjectAccess; +}; + +export const CreateProjectCredentialPolicy = { + PullOnly: "pull-only", + PushAndPull: "push-and-pull", +} as const; +export type CreateProjectCredentialPolicy = ClosedEnum< + typeof CreateProjectCredentialPolicy +>; + +export type CreateProjectRegistry = { + enabled: boolean; + repositories: Array; + credentialPolicy: CreateProjectCredentialPolicy; +}; + +export type CreateProjectCapabilities = { + deployments?: CreateProjectDeployments | undefined; keys?: CreateProjectKeys | undefined; models?: CreateProjectModels | undefined; + buckets?: CreateProjectBuckets | undefined; + registry?: CreateProjectRegistry | undefined; }; /** - * Customer infrastructure offered by this Project through exact built-in or application-authored sources. + * Capabilities this Project may offer through setup links. */ -export type CreateProjectCustomerConnections = { +export type CreateProjectProjectCapabilities = { schemaVersion: number; - connections: CreateProjectConnections; + capabilities: CreateProjectCapabilities; }; export type CreateProjectGithubSetup = { @@ -567,9 +600,9 @@ export type CreateProjectResponse = { */ defaultManagers?: CreateProjectDefaultManagers | null | undefined; /** - * Customer infrastructure offered by this Project through exact built-in or application-authored sources. + * Capabilities this Project may offer through setup links. */ - customerConnections?: CreateProjectCustomerConnections | null | undefined; + projectCapabilities?: CreateProjectProjectCapabilities | null | undefined; createdAt: Date; /** * Unique identifier for the workspace. @@ -585,25 +618,27 @@ export const CreateProjectTypeRequest$outboundSchema: z.ZodEnum< > = z.enum(CreateProjectTypeRequest); /** @internal */ -export type GitRepositoryRequest$Outbound = { +export type CreateProjectGitRepositoryRequest$Outbound = { type: string; repo: string; }; /** @internal */ -export const GitRepositoryRequest$outboundSchema: z.ZodType< - GitRepositoryRequest$Outbound, - GitRepositoryRequest +export const CreateProjectGitRepositoryRequest$outboundSchema: z.ZodType< + CreateProjectGitRepositoryRequest$Outbound, + CreateProjectGitRepositoryRequest > = z.object({ type: CreateProjectTypeRequest$outboundSchema, repo: z.string(), }); -export function gitRepositoryRequestToJSON( - gitRepositoryRequest: GitRepositoryRequest, +export function createProjectGitRepositoryRequestToJSON( + createProjectGitRepositoryRequest: CreateProjectGitRepositoryRequest, ): string { return JSON.stringify( - GitRepositoryRequest$outboundSchema.parse(gitRepositoryRequest), + CreateProjectGitRepositoryRequest$outboundSchema.parse( + createProjectGitRepositoryRequest, + ), ); } @@ -793,7 +828,7 @@ export function createProjectPackagesConfigRequestToJSON( /** @internal */ export type CreateProjectRequestBody$Outbound = { name: string; - gitRepository?: GitRepositoryRequest$Outbound | null | undefined; + gitRepository?: CreateProjectGitRepositoryRequest$Outbound | null | undefined; rootDirectory?: string | null | undefined; packagesConfig?: | CreateProjectPackagesConfigRequest$Outbound @@ -807,8 +842,9 @@ export const CreateProjectRequestBody$outboundSchema: z.ZodType< CreateProjectRequestBody > = z.object({ name: z.string(), - gitRepository: z.nullable(z.lazy(() => GitRepositoryRequest$outboundSchema)) - .optional(), + gitRepository: z.nullable( + z.lazy(() => CreateProjectGitRepositoryRequest$outboundSchema), + ).optional(), rootDirectory: z.nullable(z.string()).optional(), packagesConfig: z.nullable( z.lazy(() => CreateProjectPackagesConfigRequest$outboundSchema), @@ -1072,6 +1108,24 @@ export function createProjectDefaultManagersFromJSON( ); } +/** @internal */ +export const CreateProjectDeployments$inboundSchema: z.ZodType< + CreateProjectDeployments, + unknown +> = z.object({ + enabled: z.boolean(), +}); + +export function createProjectDeploymentsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CreateProjectDeployments$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateProjectDeployments' from JSON`, + ); +} + /** @internal */ export const CreateProjectKeys$inboundSchema: z.ZodType< CreateProjectKeys, @@ -1142,40 +1196,92 @@ export function createProjectModelsFromJSON( } /** @internal */ -export const CreateProjectConnections$inboundSchema: z.ZodType< - CreateProjectConnections, +export const CreateProjectAccess$inboundSchema: z.ZodEnum< + typeof CreateProjectAccess +> = z.enum(CreateProjectAccess); + +/** @internal */ +export const CreateProjectBuckets$inboundSchema: z.ZodType< + CreateProjectBuckets, + unknown +> = z.object({ + enabled: z.boolean(), + access: CreateProjectAccess$inboundSchema, +}); + +export function createProjectBucketsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CreateProjectBuckets$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateProjectBuckets' from JSON`, + ); +} + +/** @internal */ +export const CreateProjectCredentialPolicy$inboundSchema: z.ZodEnum< + typeof CreateProjectCredentialPolicy +> = z.enum(CreateProjectCredentialPolicy); + +/** @internal */ +export const CreateProjectRegistry$inboundSchema: z.ZodType< + CreateProjectRegistry, + unknown +> = z.object({ + enabled: z.boolean(), + repositories: z.array(z.string()), + credentialPolicy: CreateProjectCredentialPolicy$inboundSchema, +}); + +export function createProjectRegistryFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CreateProjectRegistry$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateProjectRegistry' from JSON`, + ); +} + +/** @internal */ +export const CreateProjectCapabilities$inboundSchema: z.ZodType< + CreateProjectCapabilities, unknown > = z.object({ + deployments: z.lazy(() => CreateProjectDeployments$inboundSchema).optional(), keys: z.lazy(() => CreateProjectKeys$inboundSchema).optional(), models: z.lazy(() => CreateProjectModels$inboundSchema).optional(), + buckets: z.lazy(() => CreateProjectBuckets$inboundSchema).optional(), + registry: z.lazy(() => CreateProjectRegistry$inboundSchema).optional(), }); -export function createProjectConnectionsFromJSON( +export function createProjectCapabilitiesFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => CreateProjectConnections$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateProjectConnections' from JSON`, + (x) => CreateProjectCapabilities$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateProjectCapabilities' from JSON`, ); } /** @internal */ -export const CreateProjectCustomerConnections$inboundSchema: z.ZodType< - CreateProjectCustomerConnections, +export const CreateProjectProjectCapabilities$inboundSchema: z.ZodType< + CreateProjectProjectCapabilities, unknown > = z.object({ schemaVersion: z.number(), - connections: z.lazy(() => CreateProjectConnections$inboundSchema), + capabilities: z.lazy(() => CreateProjectCapabilities$inboundSchema), }); -export function createProjectCustomerConnectionsFromJSON( +export function createProjectProjectCapabilitiesFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => CreateProjectCustomerConnections$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateProjectCustomerConnections' from JSON`, + (x) => CreateProjectProjectCapabilities$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateProjectProjectCapabilities' from JSON`, ); } @@ -1219,8 +1325,8 @@ export const CreateProjectResponse$inboundSchema: z.ZodType< defaultManagers: z.nullable( z.lazy(() => CreateProjectDefaultManagers$inboundSchema), ).optional(), - customerConnections: z.nullable( - z.lazy(() => CreateProjectCustomerConnections$inboundSchema), + projectCapabilities: z.nullable( + z.lazy(() => CreateProjectProjectCapabilities$inboundSchema), ).optional(), createdAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), workspaceId: z.string(), diff --git a/client-sdks/platform/typescript/src/models/operations/createprojectfromtemplate.ts b/client-sdks/platform/typescript/src/models/operations/createprojectfromtemplate.ts index 5ab673fdf..a617ab284 100644 --- a/client-sdks/platform/typescript/src/models/operations/createprojectfromtemplate.ts +++ b/client-sdks/platform/typescript/src/models/operations/createprojectfromtemplate.ts @@ -13,7 +13,7 @@ import * as models from "../index.js"; /** * Template root directory inside alienplatform/alien */ -export const TemplatePathRequest = { +export const CreateProjectFromTemplateTemplatePathRequest = { ExamplesCustomerModelsTs: "examples/customer-models-ts", ExamplesRemoteWorkerTs: "examples/remote-worker-ts", ExamplesGithubAgentPackagesRemoteAgent: @@ -24,7 +24,9 @@ export const TemplatePathRequest = { /** * Template root directory inside alienplatform/alien */ -export type TemplatePathRequest = ClosedEnum; +export type CreateProjectFromTemplateTemplatePathRequest = ClosedEnum< + typeof CreateProjectFromTemplateTemplatePathRequest +>; /** * Target OS and architecture for compiled binaries. @@ -201,7 +203,7 @@ export type CreateProjectFromTemplateRequestBody = { /** * Template root directory inside alienplatform/alien */ - templatePath: TemplatePathRequest; + templatePath: CreateProjectFromTemplateTemplatePathRequest; /** * 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 */ @@ -481,6 +483,10 @@ export type CreateProjectFromTemplateDefaultManagers = { local?: string | null | undefined; }; +export type CreateProjectFromTemplateDeployments = { + enabled: boolean; +}; + export type CreateProjectFromTemplateKeys = { enabled: boolean; applicationEncryption: boolean; @@ -491,6 +497,8 @@ export const CreateProjectFromTemplateAllowedProvider = { GcpVertex: "gcp-vertex", AzureFoundry: "azure-foundry", Anthropic: "anthropic", + Databricks: "databricks", + Openai: "openai", } as const; export type CreateProjectFromTemplateAllowedProvider = ClosedEnum< typeof CreateProjectFromTemplateAllowedProvider @@ -517,17 +525,46 @@ export type CreateProjectFromTemplateModels = { requirements: Array; }; -export type CreateProjectFromTemplateConnections = { +export const CreateProjectFromTemplateAccess = { + ReadWrite: "read-write", +} as const; +export type CreateProjectFromTemplateAccess = ClosedEnum< + typeof CreateProjectFromTemplateAccess +>; + +export type CreateProjectFromTemplateBuckets = { + enabled: boolean; + access: CreateProjectFromTemplateAccess; +}; + +export const CreateProjectFromTemplateCredentialPolicy = { + PullOnly: "pull-only", + PushAndPull: "push-and-pull", +} as const; +export type CreateProjectFromTemplateCredentialPolicy = ClosedEnum< + typeof CreateProjectFromTemplateCredentialPolicy +>; + +export type CreateProjectFromTemplateRegistry = { + enabled: boolean; + repositories: Array; + credentialPolicy: CreateProjectFromTemplateCredentialPolicy; +}; + +export type CreateProjectFromTemplateCapabilities = { + deployments?: CreateProjectFromTemplateDeployments | undefined; keys?: CreateProjectFromTemplateKeys | undefined; models?: CreateProjectFromTemplateModels | undefined; + buckets?: CreateProjectFromTemplateBuckets | undefined; + registry?: CreateProjectFromTemplateRegistry | undefined; }; /** - * Customer infrastructure offered by this Project through exact built-in or application-authored sources. + * Capabilities this Project may offer through setup links. */ -export type CreateProjectFromTemplateCustomerConnections = { +export type CreateProjectFromTemplateProjectCapabilities = { schemaVersion: number; - connections: CreateProjectFromTemplateConnections; + capabilities: CreateProjectFromTemplateCapabilities; }; export type CreateProjectFromTemplateGithubSetup = { @@ -541,15 +578,17 @@ export type CreateProjectFromTemplateGithubSetup = { workflowUrl: string; }; -export const SourceRepository = { +export const CreateProjectFromTemplateSourceRepository = { AlienplatformAlien: "alienplatform/alien", } as const; -export type SourceRepository = ClosedEnum; +export type CreateProjectFromTemplateSourceRepository = ClosedEnum< + typeof CreateProjectFromTemplateSourceRepository +>; /** * Template root directory inside alienplatform/alien */ -export const TemplatePathResponse = { +export const CreateProjectFromTemplateTemplatePathResponse = { ExamplesCustomerModelsTs: "examples/customer-models-ts", ExamplesRemoteWorkerTs: "examples/remote-worker-ts", ExamplesGithubAgentPackagesRemoteAgent: @@ -560,10 +599,12 @@ export const TemplatePathResponse = { /** * Template root directory inside alienplatform/alien */ -export type TemplatePathResponse = ClosedEnum; +export type CreateProjectFromTemplateTemplatePathResponse = ClosedEnum< + typeof CreateProjectFromTemplateTemplatePathResponse +>; -export type Template = { - sourceRepository: SourceRepository; +export type CreateProjectFromTemplateTemplate = { + sourceRepository: CreateProjectFromTemplateSourceRepository; /** * Fork repository in / format */ @@ -571,7 +612,7 @@ export type Template = { /** * Template root directory inside alienplatform/alien */ - templatePath: TemplatePathResponse; + templatePath: CreateProjectFromTemplateTemplatePathResponse; resolvedRootDirectory: string; }; @@ -618,10 +659,10 @@ export type CreateProjectFromTemplateResponse = { */ defaultManagers?: CreateProjectFromTemplateDefaultManagers | null | undefined; /** - * Customer infrastructure offered by this Project through exact built-in or application-authored sources. + * Capabilities this Project may offer through setup links. */ - customerConnections?: - | CreateProjectFromTemplateCustomerConnections + projectCapabilities?: + | CreateProjectFromTemplateProjectCapabilities | null | undefined; createdAt: Date; @@ -631,13 +672,14 @@ export type CreateProjectFromTemplateResponse = { workspaceId: string; githubSetup?: CreateProjectFromTemplateGithubSetup | undefined; gitRepositoryWarning?: models.APIError | undefined; - template: Template; + template: CreateProjectFromTemplateTemplate; }; /** @internal */ -export const TemplatePathRequest$outboundSchema: z.ZodEnum< - typeof TemplatePathRequest -> = z.enum(TemplatePathRequest); +export const CreateProjectFromTemplateTemplatePathRequest$outboundSchema: + z.ZodEnum = z.enum( + CreateProjectFromTemplateTemplatePathRequest, + ); /** @internal */ export const CreateProjectFromTemplateBinaryTargetRequest$outboundSchema: @@ -867,7 +909,7 @@ export const CreateProjectFromTemplateRequestBody$outboundSchema: z.ZodType< > = z.object({ name: z.string(), targetNamespace: z.string(), - templatePath: TemplatePathRequest$outboundSchema, + templatePath: CreateProjectFromTemplateTemplatePathRequest$outboundSchema, rootDirectory: z.nullable(z.string()).optional(), packagesConfig: z.nullable( z.lazy(() => CreateProjectFromTemplatePackagesConfigRequest$outboundSchema), @@ -1172,6 +1214,25 @@ export function createProjectFromTemplateDefaultManagersFromJSON( ); } +/** @internal */ +export const CreateProjectFromTemplateDeployments$inboundSchema: z.ZodType< + CreateProjectFromTemplateDeployments, + unknown +> = z.object({ + enabled: z.boolean(), +}); + +export function createProjectFromTemplateDeploymentsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateProjectFromTemplateDeployments$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateProjectFromTemplateDeployments' from JSON`, + ); +} + /** @internal */ export const CreateProjectFromTemplateKeys$inboundSchema: z.ZodType< CreateProjectFromTemplateKeys, @@ -1247,48 +1308,103 @@ export function createProjectFromTemplateModelsFromJSON( } /** @internal */ -export const CreateProjectFromTemplateConnections$inboundSchema: z.ZodType< - CreateProjectFromTemplateConnections, +export const CreateProjectFromTemplateAccess$inboundSchema: z.ZodEnum< + typeof CreateProjectFromTemplateAccess +> = z.enum(CreateProjectFromTemplateAccess); + +/** @internal */ +export const CreateProjectFromTemplateBuckets$inboundSchema: z.ZodType< + CreateProjectFromTemplateBuckets, + unknown +> = z.object({ + enabled: z.boolean(), + access: CreateProjectFromTemplateAccess$inboundSchema, +}); + +export function createProjectFromTemplateBucketsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CreateProjectFromTemplateBuckets$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateProjectFromTemplateBuckets' from JSON`, + ); +} + +/** @internal */ +export const CreateProjectFromTemplateCredentialPolicy$inboundSchema: z.ZodEnum< + typeof CreateProjectFromTemplateCredentialPolicy +> = z.enum(CreateProjectFromTemplateCredentialPolicy); + +/** @internal */ +export const CreateProjectFromTemplateRegistry$inboundSchema: z.ZodType< + CreateProjectFromTemplateRegistry, unknown > = z.object({ + enabled: z.boolean(), + repositories: z.array(z.string()), + credentialPolicy: CreateProjectFromTemplateCredentialPolicy$inboundSchema, +}); + +export function createProjectFromTemplateRegistryFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CreateProjectFromTemplateRegistry$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateProjectFromTemplateRegistry' from JSON`, + ); +} + +/** @internal */ +export const CreateProjectFromTemplateCapabilities$inboundSchema: z.ZodType< + CreateProjectFromTemplateCapabilities, + unknown +> = z.object({ + deployments: z.lazy(() => CreateProjectFromTemplateDeployments$inboundSchema) + .optional(), keys: z.lazy(() => CreateProjectFromTemplateKeys$inboundSchema).optional(), models: z.lazy(() => CreateProjectFromTemplateModels$inboundSchema) .optional(), + buckets: z.lazy(() => CreateProjectFromTemplateBuckets$inboundSchema) + .optional(), + registry: z.lazy(() => CreateProjectFromTemplateRegistry$inboundSchema) + .optional(), }); -export function createProjectFromTemplateConnectionsFromJSON( +export function createProjectFromTemplateCapabilitiesFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, (x) => - CreateProjectFromTemplateConnections$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateProjectFromTemplateConnections' from JSON`, + CreateProjectFromTemplateCapabilities$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateProjectFromTemplateCapabilities' from JSON`, ); } /** @internal */ -export const CreateProjectFromTemplateCustomerConnections$inboundSchema: - z.ZodType = z.object({ +export const CreateProjectFromTemplateProjectCapabilities$inboundSchema: + z.ZodType = z.object({ schemaVersion: z.number(), - connections: z.lazy(() => - CreateProjectFromTemplateConnections$inboundSchema + capabilities: z.lazy(() => + CreateProjectFromTemplateCapabilities$inboundSchema ), }); -export function createProjectFromTemplateCustomerConnectionsFromJSON( +export function createProjectFromTemplateProjectCapabilitiesFromJSON( jsonString: string, ): SafeParseResult< - CreateProjectFromTemplateCustomerConnections, + CreateProjectFromTemplateProjectCapabilities, SDKValidationError > { return safeParse( jsonString, (x) => - CreateProjectFromTemplateCustomerConnections$inboundSchema.parse( + CreateProjectFromTemplateProjectCapabilities$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'CreateProjectFromTemplateCustomerConnections' from JSON`, + `Failed to parse 'CreateProjectFromTemplateProjectCapabilities' from JSON`, ); } @@ -1313,30 +1429,34 @@ export function createProjectFromTemplateGithubSetupFromJSON( } /** @internal */ -export const SourceRepository$inboundSchema: z.ZodEnum< - typeof SourceRepository -> = z.enum(SourceRepository); +export const CreateProjectFromTemplateSourceRepository$inboundSchema: z.ZodEnum< + typeof CreateProjectFromTemplateSourceRepository +> = z.enum(CreateProjectFromTemplateSourceRepository); /** @internal */ -export const TemplatePathResponse$inboundSchema: z.ZodEnum< - typeof TemplatePathResponse -> = z.enum(TemplatePathResponse); +export const CreateProjectFromTemplateTemplatePathResponse$inboundSchema: + z.ZodEnum = z.enum( + CreateProjectFromTemplateTemplatePathResponse, + ); /** @internal */ -export const Template$inboundSchema: z.ZodType = z.object({ - sourceRepository: SourceRepository$inboundSchema, +export const CreateProjectFromTemplateTemplate$inboundSchema: z.ZodType< + CreateProjectFromTemplateTemplate, + unknown +> = z.object({ + sourceRepository: CreateProjectFromTemplateSourceRepository$inboundSchema, forkRepository: z.string(), - templatePath: TemplatePathResponse$inboundSchema, + templatePath: CreateProjectFromTemplateTemplatePathResponse$inboundSchema, resolvedRootDirectory: z.string(), }); -export function templateFromJSON( +export function createProjectFromTemplateTemplateFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => Template$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Template' from JSON`, + (x) => CreateProjectFromTemplateTemplate$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateProjectFromTemplateTemplate' from JSON`, ); } @@ -1363,15 +1483,15 @@ export const CreateProjectFromTemplateResponse$inboundSchema: z.ZodType< defaultManagers: z.nullable( z.lazy(() => CreateProjectFromTemplateDefaultManagers$inboundSchema), ).optional(), - customerConnections: z.nullable( - z.lazy(() => CreateProjectFromTemplateCustomerConnections$inboundSchema), + projectCapabilities: z.nullable( + z.lazy(() => CreateProjectFromTemplateProjectCapabilities$inboundSchema), ).optional(), createdAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), workspaceId: z.string(), githubSetup: z.lazy(() => CreateProjectFromTemplateGithubSetup$inboundSchema) .optional(), gitRepositoryWarning: models.APIError$inboundSchema.optional(), - template: z.lazy(() => Template$inboundSchema), + template: z.lazy(() => CreateProjectFromTemplateTemplate$inboundSchema), }); export function createProjectFromTemplateResponseFromJSON( diff --git a/client-sdks/platform/typescript/src/models/operations/createreleasechannel.ts b/client-sdks/platform/typescript/src/models/operations/createreleasechannel.ts new file mode 100644 index 000000000..7eca0eec3 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/createreleasechannel.ts @@ -0,0 +1,83 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../../lib/primitives.js"; + +export type CreateReleaseChannelRequestBody = { + name: string; + /** + * Unique identifier for the release. + */ + releaseId?: string | undefined; +}; + +export type CreateReleaseChannelRequest = { + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; + /** + * Filter by project ID or name. + */ + project: string; + requestBody?: CreateReleaseChannelRequestBody | undefined; +}; + +/** @internal */ +export type CreateReleaseChannelRequestBody$Outbound = { + name: string; + releaseId?: string | undefined; +}; + +/** @internal */ +export const CreateReleaseChannelRequestBody$outboundSchema: z.ZodType< + CreateReleaseChannelRequestBody$Outbound, + CreateReleaseChannelRequestBody +> = z.object({ + name: z.string(), + releaseId: z.string().optional(), +}); + +export function createReleaseChannelRequestBodyToJSON( + createReleaseChannelRequestBody: CreateReleaseChannelRequestBody, +): string { + return JSON.stringify( + CreateReleaseChannelRequestBody$outboundSchema.parse( + createReleaseChannelRequestBody, + ), + ); +} + +/** @internal */ +export type CreateReleaseChannelRequest$Outbound = { + workspace?: string | undefined; + project: string; + RequestBody?: CreateReleaseChannelRequestBody$Outbound | undefined; +}; + +/** @internal */ +export const CreateReleaseChannelRequest$outboundSchema: z.ZodType< + CreateReleaseChannelRequest$Outbound, + CreateReleaseChannelRequest +> = z.object({ + workspace: z.string().optional(), + project: z.string(), + requestBody: z.lazy(() => CreateReleaseChannelRequestBody$outboundSchema) + .optional(), +}).transform((v) => { + return remap$(v, { + requestBody: "RequestBody", + }); +}); + +export function createReleaseChannelRequestToJSON( + createReleaseChannelRequest: CreateReleaseChannelRequest, +): string { + return JSON.stringify( + CreateReleaseChannelRequest$outboundSchema.parse( + createReleaseChannelRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/createremotebindingsexternalaccess.ts b/client-sdks/platform/typescript/src/models/operations/createremotebindingsexternalaccess.ts new file mode 100644 index 000000000..8c2c35609 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/createremotebindingsexternalaccess.ts @@ -0,0 +1,56 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../../lib/primitives.js"; +import * as models from "../index.js"; + +export type CreateRemoteBindingsExternalAccessRequest = { + /** + * Project ID or name. + */ + idOrName: string; + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; + remoteBindingsExternalAccessRequest: + models.RemoteBindingsExternalAccessRequest; +}; + +/** @internal */ +export type CreateRemoteBindingsExternalAccessRequest$Outbound = { + idOrName: string; + workspace?: string | undefined; + RemoteBindingsExternalAccessRequest: + models.RemoteBindingsExternalAccessRequest$Outbound; +}; + +/** @internal */ +export const CreateRemoteBindingsExternalAccessRequest$outboundSchema: + z.ZodType< + CreateRemoteBindingsExternalAccessRequest$Outbound, + CreateRemoteBindingsExternalAccessRequest + > = z.object({ + idOrName: z.string(), + workspace: z.string().optional(), + remoteBindingsExternalAccessRequest: + models.RemoteBindingsExternalAccessRequest$outboundSchema, + }).transform((v) => { + return remap$(v, { + remoteBindingsExternalAccessRequest: + "RemoteBindingsExternalAccessRequest", + }); + }); + +export function createRemoteBindingsExternalAccessRequestToJSON( + createRemoteBindingsExternalAccessRequest: + CreateRemoteBindingsExternalAccessRequest, +): string { + return JSON.stringify( + CreateRemoteBindingsExternalAccessRequest$outboundSchema.parse( + createRemoteBindingsExternalAccessRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/createworkspaceinvitation.ts b/client-sdks/platform/typescript/src/models/operations/createworkspaceinvitation.ts new file mode 100644 index 000000000..1aff892b1 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/createworkspaceinvitation.ts @@ -0,0 +1,84 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../../lib/primitives.js"; +import * as models from "../index.js"; + +export type CreateWorkspaceInvitationRequestBody = { + email: string; + /** + * Role for workspace-scoped service accounts + */ + role: models.WorkspaceRole; +}; + +export type CreateWorkspaceInvitationRequest = { + /** + * Unique identifier for the workspace. + */ + id: string; + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; + requestBody?: CreateWorkspaceInvitationRequestBody | undefined; +}; + +/** @internal */ +export type CreateWorkspaceInvitationRequestBody$Outbound = { + email: string; + role: string; +}; + +/** @internal */ +export const CreateWorkspaceInvitationRequestBody$outboundSchema: z.ZodType< + CreateWorkspaceInvitationRequestBody$Outbound, + CreateWorkspaceInvitationRequestBody +> = z.object({ + email: z.string(), + role: models.WorkspaceRole$outboundSchema, +}); + +export function createWorkspaceInvitationRequestBodyToJSON( + createWorkspaceInvitationRequestBody: CreateWorkspaceInvitationRequestBody, +): string { + return JSON.stringify( + CreateWorkspaceInvitationRequestBody$outboundSchema.parse( + createWorkspaceInvitationRequestBody, + ), + ); +} + +/** @internal */ +export type CreateWorkspaceInvitationRequest$Outbound = { + id: string; + workspace?: string | undefined; + RequestBody?: CreateWorkspaceInvitationRequestBody$Outbound | undefined; +}; + +/** @internal */ +export const CreateWorkspaceInvitationRequest$outboundSchema: z.ZodType< + CreateWorkspaceInvitationRequest$Outbound, + CreateWorkspaceInvitationRequest +> = z.object({ + id: z.string(), + workspace: z.string().optional(), + requestBody: z.lazy(() => CreateWorkspaceInvitationRequestBody$outboundSchema) + .optional(), +}).transform((v) => { + return remap$(v, { + requestBody: "RequestBody", + }); +}); + +export function createWorkspaceInvitationRequestToJSON( + createWorkspaceInvitationRequest: CreateWorkspaceInvitationRequest, +): string { + return JSON.stringify( + CreateWorkspaceInvitationRequest$outboundSchema.parse( + createWorkspaceInvitationRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/createworkspaceinvitelink.ts b/client-sdks/platform/typescript/src/models/operations/createworkspaceinvitelink.ts new file mode 100644 index 000000000..18dab5428 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/createworkspaceinvitelink.ts @@ -0,0 +1,81 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../../lib/primitives.js"; +import * as models from "../index.js"; + +export type CreateWorkspaceInviteLinkRequestBody = { + /** + * Role for workspace-scoped service accounts + */ + role: models.WorkspaceRole; +}; + +export type CreateWorkspaceInviteLinkRequest = { + /** + * Unique identifier for the workspace. + */ + id: string; + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; + requestBody?: CreateWorkspaceInviteLinkRequestBody | undefined; +}; + +/** @internal */ +export type CreateWorkspaceInviteLinkRequestBody$Outbound = { + role: string; +}; + +/** @internal */ +export const CreateWorkspaceInviteLinkRequestBody$outboundSchema: z.ZodType< + CreateWorkspaceInviteLinkRequestBody$Outbound, + CreateWorkspaceInviteLinkRequestBody +> = z.object({ + role: models.WorkspaceRole$outboundSchema, +}); + +export function createWorkspaceInviteLinkRequestBodyToJSON( + createWorkspaceInviteLinkRequestBody: CreateWorkspaceInviteLinkRequestBody, +): string { + return JSON.stringify( + CreateWorkspaceInviteLinkRequestBody$outboundSchema.parse( + createWorkspaceInviteLinkRequestBody, + ), + ); +} + +/** @internal */ +export type CreateWorkspaceInviteLinkRequest$Outbound = { + id: string; + workspace?: string | undefined; + RequestBody?: CreateWorkspaceInviteLinkRequestBody$Outbound | undefined; +}; + +/** @internal */ +export const CreateWorkspaceInviteLinkRequest$outboundSchema: z.ZodType< + CreateWorkspaceInviteLinkRequest$Outbound, + CreateWorkspaceInviteLinkRequest +> = z.object({ + id: z.string(), + workspace: z.string().optional(), + requestBody: z.lazy(() => CreateWorkspaceInviteLinkRequestBody$outboundSchema) + .optional(), +}).transform((v) => { + return remap$(v, { + requestBody: "RequestBody", + }); +}); + +export function createWorkspaceInviteLinkRequestToJSON( + createWorkspaceInviteLinkRequest: CreateWorkspaceInviteLinkRequest, +): string { + return JSON.stringify( + CreateWorkspaceInviteLinkRequest$outboundSchema.parse( + createWorkspaceInviteLinkRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/decommissionawsvirtualkey.ts b/client-sdks/platform/typescript/src/models/operations/decommissionawsvirtualkey.ts new file mode 100644 index 000000000..09a5fb145 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/decommissionawsvirtualkey.ts @@ -0,0 +1,166 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../../lib/primitives.js"; +import { safeParse } from "../../lib/schemas.js"; +import { ClosedEnum } from "../../types/enums.js"; +import { Result as SafeParseResult } from "../../types/fp.js"; +import { SDKValidationError } from "../errors/sdkvalidationerror.js"; + +export type DecommissionAwsVirtualKeyRequestBody = { + kmsKeyArn: string; + deletionScheduledAt: Date; +}; + +export type DecommissionAwsVirtualKeyRequest = { + /** + * Unique identifier for the aws virtual key. + */ + id: string; + requestBody?: DecommissionAwsVirtualKeyRequestBody | undefined; +}; + +export const DecommissionAwsVirtualKeyStatus = { + Provisioning: "provisioning", + Ready: "ready", + ActionRequired: "action-required", + Decommissioning: "decommissioning", + DeletionPending: "deletion-pending", + Deleted: "deleted", + Failed: "failed", +} as const; +export type DecommissionAwsVirtualKeyStatus = ClosedEnum< + typeof DecommissionAwsVirtualKeyStatus +>; + +/** + * Virtual Key with AWS deletion scheduled + */ +export type DecommissionAwsVirtualKeyResponse = { + /** + * Unique identifier for the aws virtual key. + */ + id: string; + projectId: string; + status: DecommissionAwsVirtualKeyStatus; + externalKeyId: string; + awsAccountId: string; + awsRegion: string; + customKeyStoreId: string | null; + kmsKeyArn: string | null; + alias: string | null; + description: string | null; + deletionWindowDays: number; + tags: { [k: string]: string }; + observedAt: Date | null; + canaryPassedAt: Date | null; + deletionScheduledAt: Date | null; + finalDeletionObservedAt: Date | null; + createdAt: Date; + updatedAt: Date; +}; + +/** @internal */ +export type DecommissionAwsVirtualKeyRequestBody$Outbound = { + kmsKeyArn: string; + deletionScheduledAt: string; +}; + +/** @internal */ +export const DecommissionAwsVirtualKeyRequestBody$outboundSchema: z.ZodType< + DecommissionAwsVirtualKeyRequestBody$Outbound, + DecommissionAwsVirtualKeyRequestBody +> = z.object({ + kmsKeyArn: z.string(), + deletionScheduledAt: z.date().transform(v => v.toISOString()), +}); + +export function decommissionAwsVirtualKeyRequestBodyToJSON( + decommissionAwsVirtualKeyRequestBody: DecommissionAwsVirtualKeyRequestBody, +): string { + return JSON.stringify( + DecommissionAwsVirtualKeyRequestBody$outboundSchema.parse( + decommissionAwsVirtualKeyRequestBody, + ), + ); +} + +/** @internal */ +export type DecommissionAwsVirtualKeyRequest$Outbound = { + id: string; + RequestBody?: DecommissionAwsVirtualKeyRequestBody$Outbound | undefined; +}; + +/** @internal */ +export const DecommissionAwsVirtualKeyRequest$outboundSchema: z.ZodType< + DecommissionAwsVirtualKeyRequest$Outbound, + DecommissionAwsVirtualKeyRequest +> = z.object({ + id: z.string(), + requestBody: z.lazy(() => DecommissionAwsVirtualKeyRequestBody$outboundSchema) + .optional(), +}).transform((v) => { + return remap$(v, { + requestBody: "RequestBody", + }); +}); + +export function decommissionAwsVirtualKeyRequestToJSON( + decommissionAwsVirtualKeyRequest: DecommissionAwsVirtualKeyRequest, +): string { + return JSON.stringify( + DecommissionAwsVirtualKeyRequest$outboundSchema.parse( + decommissionAwsVirtualKeyRequest, + ), + ); +} + +/** @internal */ +export const DecommissionAwsVirtualKeyStatus$inboundSchema: z.ZodEnum< + typeof DecommissionAwsVirtualKeyStatus +> = z.enum(DecommissionAwsVirtualKeyStatus); + +/** @internal */ +export const DecommissionAwsVirtualKeyResponse$inboundSchema: z.ZodType< + DecommissionAwsVirtualKeyResponse, + unknown +> = z.object({ + id: z.string(), + projectId: z.string(), + status: DecommissionAwsVirtualKeyStatus$inboundSchema, + externalKeyId: z.string(), + awsAccountId: z.string(), + awsRegion: z.string(), + customKeyStoreId: z.nullable(z.string()), + kmsKeyArn: z.nullable(z.string()), + alias: z.nullable(z.string()), + description: z.nullable(z.string()), + deletionWindowDays: z.int(), + tags: z.record(z.string(), z.string()), + observedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + canaryPassedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + deletionScheduledAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + finalDeletionObservedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + createdAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), + updatedAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), +}); + +export function decommissionAwsVirtualKeyResponseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DecommissionAwsVirtualKeyResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DecommissionAwsVirtualKeyResponse' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/deletecontainerregistryrepository.ts b/client-sdks/platform/typescript/src/models/operations/deletecontainerregistryrepository.ts new file mode 100644 index 000000000..ab92e4dff --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/deletecontainerregistryrepository.ts @@ -0,0 +1,183 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../../lib/primitives.js"; +import { safeParse } from "../../lib/schemas.js"; +import { ClosedEnum } from "../../types/enums.js"; +import { Result as SafeParseResult } from "../../types/fp.js"; +import { SDKValidationError } from "../errors/sdkvalidationerror.js"; + +export const Disposition = { + Preserve: "preserve", + DeleteContents: "deleteContents", +} as const; +export type Disposition = ClosedEnum; + +export type DeleteContainerRegistryRepositoryRequestBody = { + confirmName: string; + disposition: Disposition; +}; + +export type DeleteContainerRegistryRepositoryRequest = { + /** + * Unique identifier for the deployment group. + */ + id: string; + /** + * Unique identifier for the container registry repository. + */ + repositoryId: string; + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; + requestBody?: DeleteContainerRegistryRepositoryRequestBody | undefined; +}; + +export const DeleteContainerRegistryRepositoryDesiredState = { + Present: "present", + DeleteRequested: "deleteRequested", + Deleted: "deleted", +} as const; +export type DeleteContainerRegistryRepositoryDesiredState = ClosedEnum< + typeof DeleteContainerRegistryRepositoryDesiredState +>; + +export const DeleteContainerRegistryRepositoryStatus = { + Pending: "pending", + Creating: "creating", + Ready: "ready", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type DeleteContainerRegistryRepositoryStatus = ClosedEnum< + typeof DeleteContainerRegistryRepositoryStatus +>; + +/** + * Repository deletion requested + */ +export type DeleteContainerRegistryRepositoryResponse = { + /** + * Unique identifier for the container registry repository. + */ + id: string; + logicalName: string; + desiredState: DeleteContainerRegistryRepositoryDesiredState; + status: DeleteContainerRegistryRepositoryStatus; + verifiedAt: Date | null; +}; + +/** @internal */ +export const Disposition$outboundSchema: z.ZodEnum = z.enum( + Disposition, +); + +/** @internal */ +export type DeleteContainerRegistryRepositoryRequestBody$Outbound = { + confirmName: string; + disposition: string; +}; + +/** @internal */ +export const DeleteContainerRegistryRepositoryRequestBody$outboundSchema: + z.ZodType< + DeleteContainerRegistryRepositoryRequestBody$Outbound, + DeleteContainerRegistryRepositoryRequestBody + > = z.object({ + confirmName: z.string(), + disposition: Disposition$outboundSchema, + }); + +export function deleteContainerRegistryRepositoryRequestBodyToJSON( + deleteContainerRegistryRepositoryRequestBody: + DeleteContainerRegistryRepositoryRequestBody, +): string { + return JSON.stringify( + DeleteContainerRegistryRepositoryRequestBody$outboundSchema.parse( + deleteContainerRegistryRepositoryRequestBody, + ), + ); +} + +/** @internal */ +export type DeleteContainerRegistryRepositoryRequest$Outbound = { + id: string; + repositoryId: string; + workspace?: string | undefined; + RequestBody?: + | DeleteContainerRegistryRepositoryRequestBody$Outbound + | undefined; +}; + +/** @internal */ +export const DeleteContainerRegistryRepositoryRequest$outboundSchema: z.ZodType< + DeleteContainerRegistryRepositoryRequest$Outbound, + DeleteContainerRegistryRepositoryRequest +> = z.object({ + id: z.string(), + repositoryId: z.string(), + workspace: z.string().optional(), + requestBody: z.lazy(() => + DeleteContainerRegistryRepositoryRequestBody$outboundSchema + ).optional(), +}).transform((v) => { + return remap$(v, { + requestBody: "RequestBody", + }); +}); + +export function deleteContainerRegistryRepositoryRequestToJSON( + deleteContainerRegistryRepositoryRequest: + DeleteContainerRegistryRepositoryRequest, +): string { + return JSON.stringify( + DeleteContainerRegistryRepositoryRequest$outboundSchema.parse( + deleteContainerRegistryRepositoryRequest, + ), + ); +} + +/** @internal */ +export const DeleteContainerRegistryRepositoryDesiredState$inboundSchema: + z.ZodEnum = z.enum( + DeleteContainerRegistryRepositoryDesiredState, + ); + +/** @internal */ +export const DeleteContainerRegistryRepositoryStatus$inboundSchema: z.ZodEnum< + typeof DeleteContainerRegistryRepositoryStatus +> = z.enum(DeleteContainerRegistryRepositoryStatus); + +/** @internal */ +export const DeleteContainerRegistryRepositoryResponse$inboundSchema: z.ZodType< + DeleteContainerRegistryRepositoryResponse, + unknown +> = z.object({ + id: z.string(), + logicalName: z.string(), + desiredState: DeleteContainerRegistryRepositoryDesiredState$inboundSchema, + status: DeleteContainerRegistryRepositoryStatus$inboundSchema, + verifiedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), +}); + +export function deleteContainerRegistryRepositoryResponseFromJSON( + jsonString: string, +): SafeParseResult< + DeleteContainerRegistryRepositoryResponse, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeleteContainerRegistryRepositoryResponse$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeleteContainerRegistryRepositoryResponse' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/deletedirectanthropicbinding.ts b/client-sdks/platform/typescript/src/models/operations/deletedirectanthropicbinding.ts deleted file mode 100644 index 5dff82ab3..000000000 --- a/client-sdks/platform/typescript/src/models/operations/deletedirectanthropicbinding.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - */ - -import * as z from "zod/v4"; - -export type DeleteDirectAnthropicBindingRequest = { - /** - * Unique identifier for the deployment group. - */ - id: string; - /** - * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. - */ - workspace?: string | undefined; -}; - -/** @internal */ -export type DeleteDirectAnthropicBindingRequest$Outbound = { - id: string; - workspace?: string | undefined; -}; - -/** @internal */ -export const DeleteDirectAnthropicBindingRequest$outboundSchema: z.ZodType< - DeleteDirectAnthropicBindingRequest$Outbound, - DeleteDirectAnthropicBindingRequest -> = z.object({ - id: z.string(), - workspace: z.string().optional(), -}); - -export function deleteDirectAnthropicBindingRequestToJSON( - deleteDirectAnthropicBindingRequest: DeleteDirectAnthropicBindingRequest, -): string { - return JSON.stringify( - DeleteDirectAnthropicBindingRequest$outboundSchema.parse( - deleteDirectAnthropicBindingRequest, - ), - ); -} diff --git a/client-sdks/platform/typescript/src/models/operations/deleteexternalaibinding.ts b/client-sdks/platform/typescript/src/models/operations/deleteexternalaibinding.ts new file mode 100644 index 000000000..47bd93c5e --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/deleteexternalaibinding.ts @@ -0,0 +1,41 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; + +export type DeleteExternalAIBindingRequest = { + /** + * Unique identifier for the deployment group. + */ + id: string; + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; +}; + +/** @internal */ +export type DeleteExternalAIBindingRequest$Outbound = { + id: string; + workspace?: string | undefined; +}; + +/** @internal */ +export const DeleteExternalAIBindingRequest$outboundSchema: z.ZodType< + DeleteExternalAIBindingRequest$Outbound, + DeleteExternalAIBindingRequest +> = z.object({ + id: z.string(), + workspace: z.string().optional(), +}); + +export function deleteExternalAIBindingRequestToJSON( + deleteExternalAIBindingRequest: DeleteExternalAIBindingRequest, +): string { + return JSON.stringify( + DeleteExternalAIBindingRequest$outboundSchema.parse( + deleteExternalAIBindingRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/deletereleasechannel.ts b/client-sdks/platform/typescript/src/models/operations/deletereleasechannel.ts new file mode 100644 index 000000000..5ba96cd7a --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/deletereleasechannel.ts @@ -0,0 +1,44 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; + +export type DeleteReleaseChannelRequest = { + name: string; + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; + /** + * Filter by project ID or name. + */ + project: string; +}; + +/** @internal */ +export type DeleteReleaseChannelRequest$Outbound = { + name: string; + workspace?: string | undefined; + project: string; +}; + +/** @internal */ +export const DeleteReleaseChannelRequest$outboundSchema: z.ZodType< + DeleteReleaseChannelRequest$Outbound, + DeleteReleaseChannelRequest +> = z.object({ + name: z.string(), + workspace: z.string().optional(), + project: z.string(), +}); + +export function deleteReleaseChannelRequestToJSON( + deleteReleaseChannelRequest: DeleteReleaseChannelRequest, +): string { + return JSON.stringify( + DeleteReleaseChannelRequest$outboundSchema.parse( + deleteReleaseChannelRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/finalizeawsvirtualkeydeletion.ts b/client-sdks/platform/typescript/src/models/operations/finalizeawsvirtualkeydeletion.ts new file mode 100644 index 000000000..6bcaa7b0d --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/finalizeawsvirtualkeydeletion.ts @@ -0,0 +1,166 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../../lib/primitives.js"; +import { safeParse } from "../../lib/schemas.js"; +import { ClosedEnum } from "../../types/enums.js"; +import { Result as SafeParseResult } from "../../types/fp.js"; +import { SDKValidationError } from "../errors/sdkvalidationerror.js"; + +export type FinalizeAwsVirtualKeyDeletionRequestBody = { + kmsKeyArn: string; +}; + +export type FinalizeAwsVirtualKeyDeletionRequest = { + /** + * Unique identifier for the aws virtual key. + */ + id: string; + requestBody?: FinalizeAwsVirtualKeyDeletionRequestBody | undefined; +}; + +export const FinalizeAwsVirtualKeyDeletionStatus = { + Provisioning: "provisioning", + Ready: "ready", + ActionRequired: "action-required", + Decommissioning: "decommissioning", + DeletionPending: "deletion-pending", + Deleted: "deleted", + Failed: "failed", +} as const; +export type FinalizeAwsVirtualKeyDeletionStatus = ClosedEnum< + typeof FinalizeAwsVirtualKeyDeletionStatus +>; + +/** + * Virtual Key whose final AWS KMS deletion was observed + */ +export type FinalizeAwsVirtualKeyDeletionResponse = { + /** + * Unique identifier for the aws virtual key. + */ + id: string; + projectId: string; + status: FinalizeAwsVirtualKeyDeletionStatus; + externalKeyId: string; + awsAccountId: string; + awsRegion: string; + customKeyStoreId: string | null; + kmsKeyArn: string | null; + alias: string | null; + description: string | null; + deletionWindowDays: number; + tags: { [k: string]: string }; + observedAt: Date | null; + canaryPassedAt: Date | null; + deletionScheduledAt: Date | null; + finalDeletionObservedAt: Date | null; + createdAt: Date; + updatedAt: Date; +}; + +/** @internal */ +export type FinalizeAwsVirtualKeyDeletionRequestBody$Outbound = { + kmsKeyArn: string; +}; + +/** @internal */ +export const FinalizeAwsVirtualKeyDeletionRequestBody$outboundSchema: z.ZodType< + FinalizeAwsVirtualKeyDeletionRequestBody$Outbound, + FinalizeAwsVirtualKeyDeletionRequestBody +> = z.object({ + kmsKeyArn: z.string(), +}); + +export function finalizeAwsVirtualKeyDeletionRequestBodyToJSON( + finalizeAwsVirtualKeyDeletionRequestBody: + FinalizeAwsVirtualKeyDeletionRequestBody, +): string { + return JSON.stringify( + FinalizeAwsVirtualKeyDeletionRequestBody$outboundSchema.parse( + finalizeAwsVirtualKeyDeletionRequestBody, + ), + ); +} + +/** @internal */ +export type FinalizeAwsVirtualKeyDeletionRequest$Outbound = { + id: string; + RequestBody?: FinalizeAwsVirtualKeyDeletionRequestBody$Outbound | undefined; +}; + +/** @internal */ +export const FinalizeAwsVirtualKeyDeletionRequest$outboundSchema: z.ZodType< + FinalizeAwsVirtualKeyDeletionRequest$Outbound, + FinalizeAwsVirtualKeyDeletionRequest +> = z.object({ + id: z.string(), + requestBody: z.lazy(() => + FinalizeAwsVirtualKeyDeletionRequestBody$outboundSchema + ).optional(), +}).transform((v) => { + return remap$(v, { + requestBody: "RequestBody", + }); +}); + +export function finalizeAwsVirtualKeyDeletionRequestToJSON( + finalizeAwsVirtualKeyDeletionRequest: FinalizeAwsVirtualKeyDeletionRequest, +): string { + return JSON.stringify( + FinalizeAwsVirtualKeyDeletionRequest$outboundSchema.parse( + finalizeAwsVirtualKeyDeletionRequest, + ), + ); +} + +/** @internal */ +export const FinalizeAwsVirtualKeyDeletionStatus$inboundSchema: z.ZodEnum< + typeof FinalizeAwsVirtualKeyDeletionStatus +> = z.enum(FinalizeAwsVirtualKeyDeletionStatus); + +/** @internal */ +export const FinalizeAwsVirtualKeyDeletionResponse$inboundSchema: z.ZodType< + FinalizeAwsVirtualKeyDeletionResponse, + unknown +> = z.object({ + id: z.string(), + projectId: z.string(), + status: FinalizeAwsVirtualKeyDeletionStatus$inboundSchema, + externalKeyId: z.string(), + awsAccountId: z.string(), + awsRegion: z.string(), + customKeyStoreId: z.nullable(z.string()), + kmsKeyArn: z.nullable(z.string()), + alias: z.nullable(z.string()), + description: z.nullable(z.string()), + deletionWindowDays: z.int(), + tags: z.record(z.string(), z.string()), + observedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + canaryPassedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + deletionScheduledAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + finalDeletionObservedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + createdAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), + updatedAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), +}); + +export function finalizeAwsVirtualKeyDeletionResponseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + FinalizeAwsVirtualKeyDeletionResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'FinalizeAwsVirtualKeyDeletionResponse' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/generatemanagerbindingtoken.ts b/client-sdks/platform/typescript/src/models/operations/generatemanagerbindingtoken.ts new file mode 100644 index 000000000..926182b93 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/generatemanagerbindingtoken.ts @@ -0,0 +1,52 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../../lib/primitives.js"; +import * as models from "../index.js"; + +export type GenerateManagerBindingTokenRequest = { + /** + * Unique identifier for a manager. + */ + id: string; + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; + generateManagerBindingTokenRequest: models.GenerateManagerBindingTokenRequest; +}; + +/** @internal */ +export type GenerateManagerBindingTokenRequest$Outbound = { + id: string; + workspace?: string | undefined; + GenerateManagerBindingTokenRequest: + models.GenerateManagerBindingTokenRequest$Outbound; +}; + +/** @internal */ +export const GenerateManagerBindingTokenRequest$outboundSchema: z.ZodType< + GenerateManagerBindingTokenRequest$Outbound, + GenerateManagerBindingTokenRequest +> = z.object({ + id: z.string(), + workspace: z.string().optional(), + generateManagerBindingTokenRequest: + models.GenerateManagerBindingTokenRequest$outboundSchema, +}).transform((v) => { + return remap$(v, { + generateManagerBindingTokenRequest: "GenerateManagerBindingTokenRequest", + }); +}); + +export function generateManagerBindingTokenRequestToJSON( + generateManagerBindingTokenRequest: GenerateManagerBindingTokenRequest, +): string { + return JSON.stringify( + GenerateManagerBindingTokenRequest$outboundSchema.parse( + generateManagerBindingTokenRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/getaccessrequestcoordinates.ts b/client-sdks/platform/typescript/src/models/operations/getaccessrequestcoordinates.ts new file mode 100644 index 000000000..e6f96240d --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/getaccessrequestcoordinates.ts @@ -0,0 +1,86 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../../lib/schemas.js"; +import { ClosedEnum } from "../../types/enums.js"; +import { Result as SafeParseResult } from "../../types/fp.js"; +import { SDKValidationError } from "../errors/sdkvalidationerror.js"; + +export type GetAccessRequestCoordinatesRequest = { + id: string; + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; +}; + +export const GetAccessRequestCoordinatesStatus = { + PendingApproval: "pending-approval", + Queued: "queued", + CustomerApproved: "customer-approved", + Expired: "expired", + Rejected: "rejected", +} as const; +export type GetAccessRequestCoordinatesStatus = ClosedEnum< + typeof GetAccessRequestCoordinatesStatus +>; + +/** + * The approve command (or null) and current status. + */ +export type GetAccessRequestCoordinatesResponse = { + status: GetAccessRequestCoordinatesStatus; + kubectlApprove: string | null; +}; + +/** @internal */ +export type GetAccessRequestCoordinatesRequest$Outbound = { + id: string; + workspace?: string | undefined; +}; + +/** @internal */ +export const GetAccessRequestCoordinatesRequest$outboundSchema: z.ZodType< + GetAccessRequestCoordinatesRequest$Outbound, + GetAccessRequestCoordinatesRequest +> = z.object({ + id: z.string(), + workspace: z.string().optional(), +}); + +export function getAccessRequestCoordinatesRequestToJSON( + getAccessRequestCoordinatesRequest: GetAccessRequestCoordinatesRequest, +): string { + return JSON.stringify( + GetAccessRequestCoordinatesRequest$outboundSchema.parse( + getAccessRequestCoordinatesRequest, + ), + ); +} + +/** @internal */ +export const GetAccessRequestCoordinatesStatus$inboundSchema: z.ZodEnum< + typeof GetAccessRequestCoordinatesStatus +> = z.enum(GetAccessRequestCoordinatesStatus); + +/** @internal */ +export const GetAccessRequestCoordinatesResponse$inboundSchema: z.ZodType< + GetAccessRequestCoordinatesResponse, + unknown +> = z.object({ + status: GetAccessRequestCoordinatesStatus$inboundSchema, + kubectlApprove: z.nullable(z.string()), +}); + +export function getAccessRequestCoordinatesResponseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + GetAccessRequestCoordinatesResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetAccessRequestCoordinatesResponse' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/getagentsession.ts b/client-sdks/platform/typescript/src/models/operations/getagentsession.ts new file mode 100644 index 000000000..e59752a58 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/getagentsession.ts @@ -0,0 +1,36 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; + +export type GetAgentSessionRequest = { + id: string; + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; +}; + +/** @internal */ +export type GetAgentSessionRequest$Outbound = { + id: string; + workspace?: string | undefined; +}; + +/** @internal */ +export const GetAgentSessionRequest$outboundSchema: z.ZodType< + GetAgentSessionRequest$Outbound, + GetAgentSessionRequest +> = z.object({ + id: z.string(), + workspace: z.string().optional(), +}); + +export function getAgentSessionRequestToJSON( + getAgentSessionRequest: GetAgentSessionRequest, +): string { + return JSON.stringify( + GetAgentSessionRequest$outboundSchema.parse(getAgentSessionRequest), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/getawsvirtualkey.ts b/client-sdks/platform/typescript/src/models/operations/getawsvirtualkey.ts new file mode 100644 index 000000000..9225398a1 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/getawsvirtualkey.ts @@ -0,0 +1,123 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../../lib/schemas.js"; +import { ClosedEnum } from "../../types/enums.js"; +import { Result as SafeParseResult } from "../../types/fp.js"; +import { SDKValidationError } from "../errors/sdkvalidationerror.js"; + +export type GetAwsVirtualKeyRequest = { + /** + * Unique identifier for the aws virtual key. + */ + id: string; +}; + +export const GetAwsVirtualKeyStatus = { + Provisioning: "provisioning", + Ready: "ready", + ActionRequired: "action-required", + Decommissioning: "decommissioning", + DeletionPending: "deletion-pending", + Deleted: "deleted", + Failed: "failed", +} as const; +export type GetAwsVirtualKeyStatus = ClosedEnum; + +/** + * AWS Virtual Key + */ +export type GetAwsVirtualKeyResponse = { + /** + * Unique identifier for the aws virtual key. + */ + id: string; + projectId: string; + status: GetAwsVirtualKeyStatus; + externalKeyId: string; + awsAccountId: string; + awsRegion: string; + customKeyStoreId: string | null; + kmsKeyArn: string | null; + alias: string | null; + description: string | null; + deletionWindowDays: number; + tags: { [k: string]: string }; + observedAt: Date | null; + canaryPassedAt: Date | null; + deletionScheduledAt: Date | null; + finalDeletionObservedAt: Date | null; + createdAt: Date; + updatedAt: Date; +}; + +/** @internal */ +export type GetAwsVirtualKeyRequest$Outbound = { + id: string; +}; + +/** @internal */ +export const GetAwsVirtualKeyRequest$outboundSchema: z.ZodType< + GetAwsVirtualKeyRequest$Outbound, + GetAwsVirtualKeyRequest +> = z.object({ + id: z.string(), +}); + +export function getAwsVirtualKeyRequestToJSON( + getAwsVirtualKeyRequest: GetAwsVirtualKeyRequest, +): string { + return JSON.stringify( + GetAwsVirtualKeyRequest$outboundSchema.parse(getAwsVirtualKeyRequest), + ); +} + +/** @internal */ +export const GetAwsVirtualKeyStatus$inboundSchema: z.ZodEnum< + typeof GetAwsVirtualKeyStatus +> = z.enum(GetAwsVirtualKeyStatus); + +/** @internal */ +export const GetAwsVirtualKeyResponse$inboundSchema: z.ZodType< + GetAwsVirtualKeyResponse, + unknown +> = z.object({ + id: z.string(), + projectId: z.string(), + status: GetAwsVirtualKeyStatus$inboundSchema, + externalKeyId: z.string(), + awsAccountId: z.string(), + awsRegion: z.string(), + customKeyStoreId: z.nullable(z.string()), + kmsKeyArn: z.nullable(z.string()), + alias: z.nullable(z.string()), + description: z.nullable(z.string()), + deletionWindowDays: z.int(), + tags: z.record(z.string(), z.string()), + observedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + canaryPassedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + deletionScheduledAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + finalDeletionObservedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + createdAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), + updatedAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), +}); + +export function getAwsVirtualKeyResponseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetAwsVirtualKeyResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetAwsVirtualKeyResponse' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/getcontainerregistry.ts b/client-sdks/platform/typescript/src/models/operations/getcontainerregistry.ts new file mode 100644 index 000000000..f6fb01f76 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/getcontainerregistry.ts @@ -0,0 +1,41 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; + +export type GetContainerRegistryRequest = { + /** + * Unique identifier for the deployment group. + */ + id: string; + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; +}; + +/** @internal */ +export type GetContainerRegistryRequest$Outbound = { + id: string; + workspace?: string | undefined; +}; + +/** @internal */ +export const GetContainerRegistryRequest$outboundSchema: z.ZodType< + GetContainerRegistryRequest$Outbound, + GetContainerRegistryRequest +> = z.object({ + id: z.string(), + workspace: z.string().optional(), +}); + +export function getContainerRegistryRequestToJSON( + getContainerRegistryRequest: GetContainerRegistryRequest, +): string { + return JSON.stringify( + GetContainerRegistryRequest$outboundSchema.parse( + getContainerRegistryRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/getcontainerregistrymanagersnapshot.ts b/client-sdks/platform/typescript/src/models/operations/getcontainerregistrymanagersnapshot.ts new file mode 100644 index 000000000..5cdfad1f1 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/getcontainerregistrymanagersnapshot.ts @@ -0,0 +1,34 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; + +export type GetContainerRegistryManagerSnapshotRequest = { + id: string; +}; + +/** @internal */ +export type GetContainerRegistryManagerSnapshotRequest$Outbound = { + id: string; +}; + +/** @internal */ +export const GetContainerRegistryManagerSnapshotRequest$outboundSchema: + z.ZodType< + GetContainerRegistryManagerSnapshotRequest$Outbound, + GetContainerRegistryManagerSnapshotRequest + > = z.object({ + id: z.string(), + }); + +export function getContainerRegistryManagerSnapshotRequestToJSON( + getContainerRegistryManagerSnapshotRequest: + GetContainerRegistryManagerSnapshotRequest, +): string { + return JSON.stringify( + GetContainerRegistryManagerSnapshotRequest$outboundSchema.parse( + getContainerRegistryManagerSnapshotRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/getdeploymentinfo.ts b/client-sdks/platform/typescript/src/models/operations/getdeploymentinfo.ts index 1d1872007..2b3ebaea8 100644 --- a/client-sdks/platform/typescript/src/models/operations/getdeploymentinfo.ts +++ b/client-sdks/platform/typescript/src/models/operations/getdeploymentinfo.ts @@ -25,9 +25,11 @@ export type GetDeploymentInfoPlatform = ClosedEnum< >; export const GetDeploymentInfoSetupItem = { - AlienStack: "alien-stack", + Deployment: "deployment", Models: "models", Keys: "keys", + Bucket: "bucket", + Registry: "registry", } as const; export type GetDeploymentInfoSetupItem = ClosedEnum< typeof GetDeploymentInfoSetupItem diff --git a/client-sdks/platform/typescript/src/models/operations/getdeploymentstats.ts b/client-sdks/platform/typescript/src/models/operations/getdeploymentstats.ts index 37e9c5544..d6a8ba91f 100644 --- a/client-sdks/platform/typescript/src/models/operations/getdeploymentstats.ts +++ b/client-sdks/platform/typescript/src/models/operations/getdeploymentstats.ts @@ -4,6 +4,7 @@ import * as z from "zod/v4"; import { ClosedEnum } from "../../types/enums.js"; +import * as models from "../index.js"; /** * Represents the target cloud platform. @@ -84,6 +85,10 @@ export type GetDeploymentStatsRequest = { * Filter by manager ID */ managerId?: string | undefined; + /** + * Filter by deployment purpose + */ + purpose?: models.DeploymentPurpose | undefined; /** * Filter deployments by effective environment */ @@ -114,6 +119,7 @@ export type GetDeploymentStatsRequest$Outbound = { project?: string | undefined; deploymentGroup?: string | undefined; managerId?: string | undefined; + purpose?: string | undefined; environment?: Array | undefined; status?: Array | undefined; search?: string | undefined; @@ -128,6 +134,7 @@ export const GetDeploymentStatsRequest$outboundSchema: z.ZodType< project: z.string().optional(), deploymentGroup: z.string().optional(), managerId: z.string().optional(), + purpose: models.DeploymentPurpose$outboundSchema.optional(), environment: z.array(GetDeploymentStatsEnvironment$outboundSchema).optional(), status: z.array(GetDeploymentStatsStatus$outboundSchema).optional(), search: z.string().optional(), diff --git a/client-sdks/platform/typescript/src/models/operations/getdirectanthropicbinding.ts b/client-sdks/platform/typescript/src/models/operations/getdirectanthropicbinding.ts deleted file mode 100644 index 8a10e808b..000000000 --- a/client-sdks/platform/typescript/src/models/operations/getdirectanthropicbinding.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - */ - -import * as z from "zod/v4"; - -export type GetDirectAnthropicBindingRequest = { - /** - * Unique identifier for the deployment group. - */ - id: string; - /** - * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. - */ - workspace?: string | undefined; -}; - -/** @internal */ -export type GetDirectAnthropicBindingRequest$Outbound = { - id: string; - workspace?: string | undefined; -}; - -/** @internal */ -export const GetDirectAnthropicBindingRequest$outboundSchema: z.ZodType< - GetDirectAnthropicBindingRequest$Outbound, - GetDirectAnthropicBindingRequest -> = z.object({ - id: z.string(), - workspace: z.string().optional(), -}); - -export function getDirectAnthropicBindingRequestToJSON( - getDirectAnthropicBindingRequest: GetDirectAnthropicBindingRequest, -): string { - return JSON.stringify( - GetDirectAnthropicBindingRequest$outboundSchema.parse( - getDirectAnthropicBindingRequest, - ), - ); -} diff --git a/client-sdks/platform/typescript/src/models/operations/getexternalaibinding.ts b/client-sdks/platform/typescript/src/models/operations/getexternalaibinding.ts new file mode 100644 index 000000000..4dfb593d5 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/getexternalaibinding.ts @@ -0,0 +1,41 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; + +export type GetExternalAIBindingRequest = { + /** + * Unique identifier for the deployment group. + */ + id: string; + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; +}; + +/** @internal */ +export type GetExternalAIBindingRequest$Outbound = { + id: string; + workspace?: string | undefined; +}; + +/** @internal */ +export const GetExternalAIBindingRequest$outboundSchema: z.ZodType< + GetExternalAIBindingRequest$Outbound, + GetExternalAIBindingRequest +> = z.object({ + id: z.string(), + workspace: z.string().optional(), +}); + +export function getExternalAIBindingRequestToJSON( + getExternalAIBindingRequest: GetExternalAIBindingRequest, +): string { + return JSON.stringify( + GetExternalAIBindingRequest$outboundSchema.parse( + getExternalAIBindingRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/getoperationspolicy.ts b/client-sdks/platform/typescript/src/models/operations/getoperationspolicy.ts new file mode 100644 index 000000000..6a9051df3 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/getoperationspolicy.ts @@ -0,0 +1,39 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; + +export type GetOperationsPolicyRequest = { + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; + /** + * Filter by project ID or name. + */ + project: string; +}; + +/** @internal */ +export type GetOperationsPolicyRequest$Outbound = { + workspace?: string | undefined; + project: string; +}; + +/** @internal */ +export const GetOperationsPolicyRequest$outboundSchema: z.ZodType< + GetOperationsPolicyRequest$Outbound, + GetOperationsPolicyRequest +> = z.object({ + workspace: z.string().optional(), + project: z.string(), +}); + +export function getOperationsPolicyRequestToJSON( + getOperationsPolicyRequest: GetOperationsPolicyRequest, +): string { + return JSON.stringify( + GetOperationsPolicyRequest$outboundSchema.parse(getOperationsPolicyRequest), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/getprojectaiusage.ts b/client-sdks/platform/typescript/src/models/operations/getprojectaiusage.ts new file mode 100644 index 000000000..1b5f0d585 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/getprojectaiusage.ts @@ -0,0 +1,344 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../../lib/schemas.js"; +import { ClosedEnum } from "../../types/enums.js"; +import { Result as SafeParseResult } from "../../types/fp.js"; +import { SDKValidationError } from "../errors/sdkvalidationerror.js"; + +export const QueryParamRange = { + TwentyFourh: "24h", + Sevend: "7d", + Thirtyd: "30d", +} as const; +export type QueryParamRange = ClosedEnum; + +export type GetProjectAiUsageRequest = { + /** + * Project ID or name. + */ + idOrName: string; + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; + range?: QueryParamRange | undefined; +}; + +export const RangeResponse = { + TwentyFourh: "24h", + Sevend: "7d", + Thirtyd: "30d", +} as const; +export type RangeResponse = ClosedEnum; + +export const Label = { + EstimatedProviderCost: "Estimated provider cost", +} as const; +export type Label = ClosedEnum; + +export type Pricing = { + label: Label; + coverage: number; + revision: string | null; +}; + +export type Totals = { + requests: number; + successfulRequests: number; + errorRequests: number; + averageLatencyMs: number | null; + p95LatencyMs: number | null; + inputTokens: number | null; + outputTokens: number | null; + estimatedCostMicrousd: number | null; + pricedRequests: number; +}; + +export type TimeSery = { + requests: number; + successfulRequests: number; + errorRequests: number; + averageLatencyMs: number | null; + p95LatencyMs: number | null; + inputTokens: number | null; + outputTokens: number | null; + estimatedCostMicrousd: number | null; + pricedRequests: number; + bucket: Date; +}; + +export type Customer = { + requests: number; + successfulRequests: number; + errorRequests: number; + averageLatencyMs: number | null; + p95LatencyMs: number | null; + inputTokens: number | null; + outputTokens: number | null; + estimatedCostMicrousd: number | null; + pricedRequests: number; + deploymentGroupId: string; + name: string; + externalId: string | null; +}; + +export type GetProjectAiUsageModel = { + requests: number; + successfulRequests: number; + errorRequests: number; + averageLatencyMs: number | null; + p95LatencyMs: number | null; + inputTokens: number | null; + outputTokens: number | null; + estimatedCostMicrousd: number | null; + pricedRequests: number; + publicModel: string; + provider: string; +}; + +export type Available = { + status: "available"; + range: RangeResponse; + pricing: Pricing; + totals: Totals; + timeSeries: Array; + customers: Array; + models: Array; +}; + +export const GetProjectAiUsageReason = { + NotConfigured: "not-configured", + TemporarilyUnavailable: "temporarily-unavailable", +} as const; +export type GetProjectAiUsageReason = ClosedEnum< + typeof GetProjectAiUsageReason +>; + +export type Unavailable = { + status: "unavailable"; + reason: GetProjectAiUsageReason; +}; + +/** + * Privacy-safe AI Gateway usage aggregates. + */ +export type GetProjectAiUsageResponse = Unavailable | Available; + +/** @internal */ +export const QueryParamRange$outboundSchema: z.ZodEnum = + z.enum(QueryParamRange); + +/** @internal */ +export type GetProjectAiUsageRequest$Outbound = { + idOrName: string; + workspace?: string | undefined; + range: string; +}; + +/** @internal */ +export const GetProjectAiUsageRequest$outboundSchema: z.ZodType< + GetProjectAiUsageRequest$Outbound, + GetProjectAiUsageRequest +> = z.object({ + idOrName: z.string(), + workspace: z.string().optional(), + range: QueryParamRange$outboundSchema.default("24h"), +}); + +export function getProjectAiUsageRequestToJSON( + getProjectAiUsageRequest: GetProjectAiUsageRequest, +): string { + return JSON.stringify( + GetProjectAiUsageRequest$outboundSchema.parse(getProjectAiUsageRequest), + ); +} + +/** @internal */ +export const RangeResponse$inboundSchema: z.ZodEnum = z + .enum(RangeResponse); + +/** @internal */ +export const Label$inboundSchema: z.ZodEnum = z.enum(Label); + +/** @internal */ +export const Pricing$inboundSchema: z.ZodType = z.object({ + label: Label$inboundSchema, + coverage: z.number(), + revision: z.nullable(z.string()), +}); + +export function pricingFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Pricing$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Pricing' from JSON`, + ); +} + +/** @internal */ +export const Totals$inboundSchema: z.ZodType = z.object({ + requests: z.int(), + successfulRequests: z.int(), + errorRequests: z.int(), + averageLatencyMs: z.nullable(z.number()), + p95LatencyMs: z.nullable(z.number()), + inputTokens: z.nullable(z.int()), + outputTokens: z.nullable(z.int()), + estimatedCostMicrousd: z.nullable(z.int()), + pricedRequests: z.int(), +}); + +export function totalsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Totals$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Totals' from JSON`, + ); +} + +/** @internal */ +export const TimeSery$inboundSchema: z.ZodType = z.object({ + requests: z.int(), + successfulRequests: z.int(), + errorRequests: z.int(), + averageLatencyMs: z.nullable(z.number()), + p95LatencyMs: z.nullable(z.number()), + inputTokens: z.nullable(z.int()), + outputTokens: z.nullable(z.int()), + estimatedCostMicrousd: z.nullable(z.int()), + pricedRequests: z.int(), + bucket: z.iso.datetime({ offset: true }).transform(v => new Date(v)), +}); + +export function timeSeryFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => TimeSery$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'TimeSery' from JSON`, + ); +} + +/** @internal */ +export const Customer$inboundSchema: z.ZodType = z.object({ + requests: z.int(), + successfulRequests: z.int(), + errorRequests: z.int(), + averageLatencyMs: z.nullable(z.number()), + p95LatencyMs: z.nullable(z.number()), + inputTokens: z.nullable(z.int()), + outputTokens: z.nullable(z.int()), + estimatedCostMicrousd: z.nullable(z.int()), + pricedRequests: z.int(), + deploymentGroupId: z.string(), + name: z.string(), + externalId: z.nullable(z.string()), +}); + +export function customerFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Customer$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Customer' from JSON`, + ); +} + +/** @internal */ +export const GetProjectAiUsageModel$inboundSchema: z.ZodType< + GetProjectAiUsageModel, + unknown +> = z.object({ + requests: z.int(), + successfulRequests: z.int(), + errorRequests: z.int(), + averageLatencyMs: z.nullable(z.number()), + p95LatencyMs: z.nullable(z.number()), + inputTokens: z.nullable(z.int()), + outputTokens: z.nullable(z.int()), + estimatedCostMicrousd: z.nullable(z.int()), + pricedRequests: z.int(), + publicModel: z.string(), + provider: z.string(), +}); + +export function getProjectAiUsageModelFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetProjectAiUsageModel$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetProjectAiUsageModel' from JSON`, + ); +} + +/** @internal */ +export const Available$inboundSchema: z.ZodType = z.object({ + status: z.literal("available"), + range: RangeResponse$inboundSchema, + pricing: z.lazy(() => Pricing$inboundSchema), + totals: z.lazy(() => Totals$inboundSchema), + timeSeries: z.array(z.lazy(() => TimeSery$inboundSchema)), + customers: z.array(z.lazy(() => Customer$inboundSchema)), + models: z.array(z.lazy(() => GetProjectAiUsageModel$inboundSchema)), +}); + +export function availableFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Available$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Available' from JSON`, + ); +} + +/** @internal */ +export const GetProjectAiUsageReason$inboundSchema: z.ZodEnum< + typeof GetProjectAiUsageReason +> = z.enum(GetProjectAiUsageReason); + +/** @internal */ +export const Unavailable$inboundSchema: z.ZodType = z + .object({ + status: z.literal("unavailable"), + reason: GetProjectAiUsageReason$inboundSchema, + }); + +export function unavailableFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Unavailable$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Unavailable' from JSON`, + ); +} + +/** @internal */ +export const GetProjectAiUsageResponse$inboundSchema: z.ZodType< + GetProjectAiUsageResponse, + unknown +> = z.union([ + z.lazy(() => Unavailable$inboundSchema), + z.lazy(() => Available$inboundSchema), +]); + +export function getProjectAiUsageResponseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetProjectAiUsageResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetProjectAiUsageResponse' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/getprojectcapabilityoverview.ts b/client-sdks/platform/typescript/src/models/operations/getprojectcapabilityoverview.ts new file mode 100644 index 000000000..e6f73f121 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/getprojectcapabilityoverview.ts @@ -0,0 +1,41 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; + +export type GetProjectCapabilityOverviewRequest = { + /** + * Project ID or name. + */ + idOrName: string; + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; +}; + +/** @internal */ +export type GetProjectCapabilityOverviewRequest$Outbound = { + idOrName: string; + workspace?: string | undefined; +}; + +/** @internal */ +export const GetProjectCapabilityOverviewRequest$outboundSchema: z.ZodType< + GetProjectCapabilityOverviewRequest$Outbound, + GetProjectCapabilityOverviewRequest +> = z.object({ + idOrName: z.string(), + workspace: z.string().optional(), +}); + +export function getProjectCapabilityOverviewRequestToJSON( + getProjectCapabilityOverviewRequest: GetProjectCapabilityOverviewRequest, +): string { + return JSON.stringify( + GetProjectCapabilityOverviewRequest$outboundSchema.parse( + getProjectCapabilityOverviewRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/getrelease.ts b/client-sdks/platform/typescript/src/models/operations/getrelease.ts index 4f2edd99c..0354c4d7a 100644 --- a/client-sdks/platform/typescript/src/models/operations/getrelease.ts +++ b/client-sdks/platform/typescript/src/models/operations/getrelease.ts @@ -7,6 +7,8 @@ import { ClosedEnum } from "../../types/enums.js"; export const GetReleaseInclude = { Project: "project", + Rollout: "rollout", + CreatedBy: "createdBy", } as const; export type GetReleaseInclude = ClosedEnum; @@ -20,7 +22,7 @@ export type GetReleaseRequest = { */ workspace?: string | undefined; /** - * Optional fields to include: project + * Optional fields to include: project, rollout */ include?: Array | undefined; }; diff --git a/client-sdks/platform/typescript/src/models/operations/getresourcedeploymentdetail.ts b/client-sdks/platform/typescript/src/models/operations/getresourcedeploymentdetail.ts index fe30cfdc6..d40b74efa 100644 --- a/client-sdks/platform/typescript/src/models/operations/getresourcedeploymentdetail.ts +++ b/client-sdks/platform/typescript/src/models/operations/getresourcedeploymentdetail.ts @@ -12,6 +12,7 @@ export const GetResourceDeploymentDetailArea = { Container: "container", Worker: "worker", Daemon: "daemon", + Ai: "ai", } as const; export type GetResourceDeploymentDetailArea = ClosedEnum< typeof GetResourceDeploymentDetailArea @@ -89,40 +90,15 @@ export const ControllerPlatform = { */ export type ControllerPlatform = ClosedEnum; -export const Reason65 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason65 = ClosedEnum; - -export const CollectionIssueSeverity65 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity65 = ClosedEnum< - typeof CollectionIssueSeverity65 ->; - -export type CollectionIssue65 = { - message: string; - reason: Reason65; - severity: CollectionIssueSeverity65; - source: string; -}; - -export const Health65 = { +export const Health72 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health65 = ClosedEnum; +export type Health72 = ClosedEnum; -export const Lifecycle65 = { +export const Lifecycle72 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -134,79 +110,79 @@ export const Lifecycle65 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle65 = ClosedEnum; +export type Lifecycle72 = ClosedEnum; -export type DataStatus65 = { - collectionIssues: Array; - health: Health65; - lifecycle: Lifecycle65; +export type DataStatus72 = { + health: Health72; + lifecycle: Lifecycle72; message?: string | null | undefined; - partial: boolean; - stale: boolean; }; -export type Data5 = { - createdAt?: string | null | undefined; - disableLocalAuth?: boolean | null | undefined; - location?: string | null | undefined; - metricId?: string | null | undefined; - minimumTlsVersion?: string | null | undefined; - name: string; - namespaceStatus?: string | null | undefined; - premiumMessagingPartitions?: number | null | undefined; - privateEndpointConnectionCount: number; - provisioningState?: string | null | undefined; - publicNetworkAccess?: string | null | undefined; - resourceGroup?: string | null | undefined; - resourceId?: string | null | undefined; - serviceBusEndpoint?: string | null | undefined; - skuCapacity?: number | null | undefined; - skuName?: string | null | undefined; - skuTier?: string | null | undefined; - status: DataStatus65; - updatedAt?: string | null | undefined; - zoneRedundant?: boolean | null | undefined; +export type Data8 = { + enabled?: boolean | null | undefined; + keyId: string; + keyOperations: Array; + keyType: string; + recoveryLevel?: string | null | undefined; + status: DataStatus72; }; -export type DataAzureServiceBusNamespace = { - data: Data5; - resourceType: "azure_service_bus_namespace"; +export type DataAzureKeyVault2 = { + data: Data8; + provider: "azure-key-vault"; }; -export const Reason64 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", +export const Health71 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", } as const; -export type Reason64 = ClosedEnum; +export type Health71 = ClosedEnum; -export const CollectionIssueSeverity64 = { - Info: "info", - Warning: "warning", - Error: "error", +export const Lifecycle71 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", } as const; -export type CollectionIssueSeverity64 = ClosedEnum< - typeof CollectionIssueSeverity64 ->; +export type Lifecycle71 = ClosedEnum; -export type CollectionIssue64 = { - message: string; - reason: Reason64; - severity: CollectionIssueSeverity64; - source: string; +export type DataStatus71 = { + health: Health71; + lifecycle: Lifecycle71; + message?: string | null | undefined; }; -export const Health64 = { +export type Data7 = { + algorithm?: string | null | undefined; + cryptoKeyName: string; + primaryState?: string | null | undefined; + primaryVersion?: string | null | undefined; + purpose: string; + status: DataStatus71; +}; + +export type DataGcpCloudKms = { + data: Data7; + provider: "gcp-cloud-kms"; +}; + +export const Health70 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health64 = ClosedEnum; +export type Health70 = ClosedEnum; -export const Lifecycle64 = { +export const Lifecycle70 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -218,99 +194,157 @@ export const Lifecycle64 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle64 = ClosedEnum; +export type Lifecycle70 = ClosedEnum; -export type DataStatus64 = { - collectionIssues: Array; - health: Health64; - lifecycle: Lifecycle64; +export type DataStatus70 = { + health: Health70; + lifecycle: Lifecycle70; message?: string | null | undefined; - partial: boolean; - stale: boolean; }; -export type WorkloadProfile = { - maximumCount?: number | null | undefined; - minimumCount?: number | null | undefined; - name: string; - workloadProfileType: string; +export type Data6 = { + enabled: boolean; + keyArn: string; + keySpec: string; + keyState: string; + keyUsage: string; + status: DataStatus70; }; -export type Data4 = { - customDomainVerificationId?: string | null | undefined; - defaultDomain?: string | null | undefined; - eventStreamEndpoint?: string | null | undefined; - infrastructureResourceGroup?: string | null | undefined; - kind?: string | null | undefined; - location?: string | null | undefined; - name: string; - provisioningState?: string | null | undefined; - resourceGroup?: string | null | undefined; - resourceId?: string | null | undefined; - staticIp?: string | null | undefined; - status: DataStatus64; - workloadProfileCount: number; - workloadProfiles: Array; - zoneRedundant?: boolean | null | undefined; +export type DataAwsKms = { + data: Data6; + provider: "aws-kms"; }; -export type DataAzureContainerAppsEnvironment = { - data: Data4; - resourceType: "azure_container_apps_environment"; +export type DataUnion17 = DataAwsKms | DataGcpCloudKms | DataAzureKeyVault2; + +export type DataKey = { + data: DataAwsKms | DataGcpCloudKms | DataAzureKeyVault2; + resourceType: "key"; }; -export type PrimaryEndpoints = { - blob?: string | null | undefined; - dfs?: string | null | undefined; - file?: string | null | undefined; - queue?: string | null | undefined; - table?: string | null | undefined; - web?: string | null | undefined; +export const AccessTest4 = { + Verified: "verified", + Failed: "failed", + NotChecked: "not-checked", +} as const; +export type AccessTest4 = ClosedEnum; + +export const AvailabilityEnum4 = { + Available: "available", + Blocked: "blocked", + Unknown: "unknown", +} as const; +export type AvailabilityEnum4 = ClosedEnum; + +export const BlockerEnum4 = { + AgreementRequired: "agreement-required", + EntitlementRequired: "entitlement-required", + ModelActivationRequired: "model-activation-required", + DeploymentRequired: "deployment-required", + QuotaConfigurationRequired: "quota-configuration-required", + RegionUnavailable: "region-unavailable", + AccessDenied: "access-denied", + ObservationFailed: "observation-failed", +} as const; +export type BlockerEnum4 = ClosedEnum; + +/** + * A public API accepted from an application client. + */ +export const GetResourceDeploymentDetailClientApi4 = { + OpenAiChatCompletions: "open-ai-chat-completions", + OpenAiResponses: "open-ai-responses", + AnthropicMessages: "anthropic-messages", +} as const; +/** + * A public API accepted from an application client. + */ +export type GetResourceDeploymentDetailClientApi4 = ClosedEnum< + typeof GetResourceDeploymentDetailClientApi4 +>; + +export type GetResourceDeploymentDetailModel4 = { + accessTest: AccessTest4; + availability: AvailabilityEnum4; + blockers: Array; + clientApis: Array; + errorCode?: string | null | undefined; + publicModelId: string; + testedAt?: Date | null | undefined; }; -export type SecondaryEndpoints = { - blob?: string | null | undefined; - dfs?: string | null | undefined; - file?: string | null | undefined; - queue?: string | null | undefined; - table?: string | null | undefined; - web?: string | null | undefined; +/** + * Provider control plane used to observe model availability without invoking + * + * @remarks + * a model, spending customer quota, or accepting provider terms. + */ +export const SourceEnum4 = { + AwsBedrock: "aws-bedrock", + GcpVertex: "gcp-vertex", + AzureFoundry: "azure-foundry", + Anthropic: "anthropic", +} as const; +/** + * Provider control plane used to observe model availability without invoking + * + * @remarks + * a model, spending customer quota, or accepting provider terms. + */ +export type SourceEnum4 = ClosedEnum; + +export type Availability4 = { + catalogRevision: string; + location?: string | null | undefined; + models: Array; + /** + * Provider control plane used to observe model availability without invoking + * + * @remarks + * a model, spending customer quota, or accepting provider terms. + */ + source: SourceEnum4; }; -export const Reason63 = { +export type AvailabilityUnion = Availability4 | any; + +export const GetResourceDeploymentDetailReason69 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason63 = ClosedEnum; +export type GetResourceDeploymentDetailReason69 = ClosedEnum< + typeof GetResourceDeploymentDetailReason69 +>; -export const CollectionIssueSeverity63 = { +export const CollectionIssueSeverity69 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity63 = ClosedEnum< - typeof CollectionIssueSeverity63 +export type CollectionIssueSeverity69 = ClosedEnum< + typeof CollectionIssueSeverity69 >; -export type CollectionIssue63 = { +export type CollectionIssue69 = { message: string; - reason: Reason63; - severity: CollectionIssueSeverity63; + reason: GetResourceDeploymentDetailReason69; + severity: CollectionIssueSeverity69; source: string; }; -export const Health63 = { +export const Health69 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health63 = ClosedEnum; +export type Health69 = ClosedEnum; -export const Lifecycle63 = { +export const Lifecycle69 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -322,82 +356,150 @@ export const Lifecycle63 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle63 = ClosedEnum; +export type Lifecycle69 = ClosedEnum; -export type DataStatus63 = { - collectionIssues: Array; - health: Health63; - lifecycle: Lifecycle63; +export type DataStatus69 = { + collectionIssues: Array; + health: Health69; + lifecycle: Lifecycle69; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type Data3 = { - allowBlobPublicAccess?: boolean | null | undefined; - allowSharedKeyAccess?: boolean | null | undefined; - encryptionKeySource?: string | null | undefined; - kind?: string | null | undefined; - location?: string | null | undefined; - minimumTlsVersion?: string | null | undefined; - name: string; - networkBypass?: string | null | undefined; - networkDefaultAction?: string | null | undefined; - networkIpRuleCount?: number | null | undefined; - networkResourceAccessRuleCount?: number | null | undefined; - networkVirtualNetworkRuleCount?: number | null | undefined; - primaryEndpoints: PrimaryEndpoints; - provisioningState?: string | null | undefined; - publicNetworkAccess?: string | null | undefined; - requireInfrastructureEncryption?: boolean | null | undefined; - resourceGroup?: string | null | undefined; - resourceId?: string | null | undefined; - secondaryEndpoints: SecondaryEndpoints; - skuName?: string | null | undefined; - skuTier?: string | null | undefined; - status: DataStatus63; - supportsHttpsTrafficOnly?: boolean | null | undefined; +export type DataExternal = { + availability?: Availability4 | any | null | undefined; + /** + * The BYO-key provider serving this binding (e.g. "openai"). Used on the Local + * + * @remarks + * platform, where the app brings its own provider key instead of an ambient cloud. + */ + provider: string; + status: DataStatus69; + backend: "external"; }; -export type DataAzureStorageAccount = { - data: Data3; - resourceType: "azure_storage_account"; +export const AccessTest3 = { + Verified: "verified", + Failed: "failed", + NotChecked: "not-checked", +} as const; +export type AccessTest3 = ClosedEnum; + +export const AvailabilityEnum3 = { + Available: "available", + Blocked: "blocked", + Unknown: "unknown", +} as const; +export type AvailabilityEnum3 = ClosedEnum; + +export const BlockerEnum3 = { + AgreementRequired: "agreement-required", + EntitlementRequired: "entitlement-required", + ModelActivationRequired: "model-activation-required", + DeploymentRequired: "deployment-required", + QuotaConfigurationRequired: "quota-configuration-required", + RegionUnavailable: "region-unavailable", + AccessDenied: "access-denied", + ObservationFailed: "observation-failed", +} as const; +export type BlockerEnum3 = ClosedEnum; + +/** + * A public API accepted from an application client. + */ +export const GetResourceDeploymentDetailClientApi3 = { + OpenAiChatCompletions: "open-ai-chat-completions", + OpenAiResponses: "open-ai-responses", + AnthropicMessages: "anthropic-messages", +} as const; +/** + * A public API accepted from an application client. + */ +export type GetResourceDeploymentDetailClientApi3 = ClosedEnum< + typeof GetResourceDeploymentDetailClientApi3 +>; + +export type GetResourceDeploymentDetailModel3 = { + accessTest: AccessTest3; + availability: AvailabilityEnum3; + blockers: Array; + clientApis: Array; + errorCode?: string | null | undefined; + publicModelId: string; + testedAt?: Date | null | undefined; +}; + +/** + * Provider control plane used to observe model availability without invoking + * + * @remarks + * a model, spending customer quota, or accepting provider terms. + */ +export const SourceEnum3 = { + AwsBedrock: "aws-bedrock", + GcpVertex: "gcp-vertex", + AzureFoundry: "azure-foundry", + Anthropic: "anthropic", +} as const; +/** + * Provider control plane used to observe model availability without invoking + * + * @remarks + * a model, spending customer quota, or accepting provider terms. + */ +export type SourceEnum3 = ClosedEnum; + +export type Availability3 = { + catalogRevision: string; + location?: string | null | undefined; + models: Array; + /** + * Provider control plane used to observe model availability without invoking + * + * @remarks + * a model, spending customer quota, or accepting provider terms. + */ + source: SourceEnum3; }; -export const Reason62 = { +export const GetResourceDeploymentDetailReason68 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason62 = ClosedEnum; +export type GetResourceDeploymentDetailReason68 = ClosedEnum< + typeof GetResourceDeploymentDetailReason68 +>; -export const CollectionIssueSeverity62 = { +export const CollectionIssueSeverity68 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity62 = ClosedEnum< - typeof CollectionIssueSeverity62 +export type CollectionIssueSeverity68 = ClosedEnum< + typeof CollectionIssueSeverity68 >; -export type CollectionIssue62 = { +export type CollectionIssue68 = { message: string; - reason: Reason62; - severity: CollectionIssueSeverity62; + reason: GetResourceDeploymentDetailReason68; + severity: CollectionIssueSeverity68; source: string; }; -export const Health62 = { +export const Health68 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health62 = ClosedEnum; +export type Health68 = ClosedEnum; -export const Lifecycle62 = { +export const Lifecycle68 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -409,65 +511,147 @@ export const Lifecycle62 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle62 = ClosedEnum; +export type Lifecycle68 = ClosedEnum; -export type DataStatus62 = { - collectionIssues: Array; - health: Health62; - lifecycle: Lifecycle62; +export type DataStatus68 = { + collectionIssues: Array; + health: Health68; + lifecycle: Lifecycle68; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type Data2 = { +export type DataAzureFoundry = { + accountName: string; + availability: Availability3; + endpoint?: string | null | undefined; location?: string | null | undefined; - managedTags: { [k: string]: string }; - name: string; - provisioningState?: string | null | undefined; - resourceId?: string | null | undefined; - status: DataStatus62; + resourceGroup?: string | null | undefined; + status: DataStatus68; + backend: "azureFoundry"; }; -export type DataAzureResourceGroup = { - data: Data2; - resourceType: "azure_resource_group"; +export const AccessTest2 = { + Verified: "verified", + Failed: "failed", + NotChecked: "not-checked", +} as const; +export type AccessTest2 = ClosedEnum; + +export const AvailabilityEnum2 = { + Available: "available", + Blocked: "blocked", + Unknown: "unknown", +} as const; +export type AvailabilityEnum2 = ClosedEnum; + +export const BlockerEnum2 = { + AgreementRequired: "agreement-required", + EntitlementRequired: "entitlement-required", + ModelActivationRequired: "model-activation-required", + DeploymentRequired: "deployment-required", + QuotaConfigurationRequired: "quota-configuration-required", + RegionUnavailable: "region-unavailable", + AccessDenied: "access-denied", + ObservationFailed: "observation-failed", +} as const; +export type BlockerEnum2 = ClosedEnum; + +/** + * A public API accepted from an application client. + */ +export const GetResourceDeploymentDetailClientApi2 = { + OpenAiChatCompletions: "open-ai-chat-completions", + OpenAiResponses: "open-ai-responses", + AnthropicMessages: "anthropic-messages", +} as const; +/** + * A public API accepted from an application client. + */ +export type GetResourceDeploymentDetailClientApi2 = ClosedEnum< + typeof GetResourceDeploymentDetailClientApi2 +>; + +export type GetResourceDeploymentDetailModel2 = { + accessTest: AccessTest2; + availability: AvailabilityEnum2; + blockers: Array; + clientApis: Array; + errorCode?: string | null | undefined; + publicModelId: string; + testedAt?: Date | null | undefined; +}; + +/** + * Provider control plane used to observe model availability without invoking + * + * @remarks + * a model, spending customer quota, or accepting provider terms. + */ +export const SourceEnum2 = { + AwsBedrock: "aws-bedrock", + GcpVertex: "gcp-vertex", + AzureFoundry: "azure-foundry", + Anthropic: "anthropic", +} as const; +/** + * Provider control plane used to observe model availability without invoking + * + * @remarks + * a model, spending customer quota, or accepting provider terms. + */ +export type SourceEnum2 = ClosedEnum; + +export type Availability2 = { + catalogRevision: string; + location?: string | null | undefined; + models: Array; + /** + * Provider control plane used to observe model availability without invoking + * + * @remarks + * a model, spending customer quota, or accepting provider terms. + */ + source: SourceEnum2; }; -export const Reason61 = { +export const GetResourceDeploymentDetailReason67 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason61 = ClosedEnum; +export type GetResourceDeploymentDetailReason67 = ClosedEnum< + typeof GetResourceDeploymentDetailReason67 +>; -export const CollectionIssueSeverity61 = { +export const CollectionIssueSeverity67 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity61 = ClosedEnum< - typeof CollectionIssueSeverity61 +export type CollectionIssueSeverity67 = ClosedEnum< + typeof CollectionIssueSeverity67 >; -export type CollectionIssue61 = { +export type CollectionIssue67 = { message: string; - reason: Reason61; - severity: CollectionIssueSeverity61; + reason: GetResourceDeploymentDetailReason67; + severity: CollectionIssueSeverity67; source: string; }; -export const Health61 = { +export const Health67 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health61 = ClosedEnum; +export type Health67 = ClosedEnum; -export const Lifecycle61 = { +export const Lifecycle67 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -479,62 +663,145 @@ export const Lifecycle61 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle61 = ClosedEnum; +export type Lifecycle67 = ClosedEnum; -export type DataStatus61 = { - collectionIssues: Array; - health: Health61; - lifecycle: Lifecycle61; +export type DataStatus67 = { + collectionIssues: Array; + health: Health67; + lifecycle: Lifecycle67; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataAzureResourceProvider = { - namespace: string; - providerId?: string | null | undefined; - registered: boolean; - registrationPolicy?: string | null | undefined; - registrationState?: string | null | undefined; - resourceTypeCount: number; - status: DataStatus61; - backend: "azureResourceProvider"; +export type DataGcpVertex = { + availability: Availability2; + location: string; + project: string; + status: DataStatus67; + backend: "gcpVertex"; }; -export const Reason60 = { +export const AccessTest1 = { + Verified: "verified", + Failed: "failed", + NotChecked: "not-checked", +} as const; +export type AccessTest1 = ClosedEnum; + +export const AvailabilityEnum1 = { + Available: "available", + Blocked: "blocked", + Unknown: "unknown", +} as const; +export type AvailabilityEnum1 = ClosedEnum; + +export const BlockerEnum1 = { + AgreementRequired: "agreement-required", + EntitlementRequired: "entitlement-required", + ModelActivationRequired: "model-activation-required", + DeploymentRequired: "deployment-required", + QuotaConfigurationRequired: "quota-configuration-required", + RegionUnavailable: "region-unavailable", + AccessDenied: "access-denied", + ObservationFailed: "observation-failed", +} as const; +export type BlockerEnum1 = ClosedEnum; + +/** + * A public API accepted from an application client. + */ +export const GetResourceDeploymentDetailClientApi1 = { + OpenAiChatCompletions: "open-ai-chat-completions", + OpenAiResponses: "open-ai-responses", + AnthropicMessages: "anthropic-messages", +} as const; +/** + * A public API accepted from an application client. + */ +export type GetResourceDeploymentDetailClientApi1 = ClosedEnum< + typeof GetResourceDeploymentDetailClientApi1 +>; + +export type GetResourceDeploymentDetailModel1 = { + accessTest: AccessTest1; + availability: AvailabilityEnum1; + blockers: Array; + clientApis: Array; + errorCode?: string | null | undefined; + publicModelId: string; + testedAt?: Date | null | undefined; +}; + +/** + * Provider control plane used to observe model availability without invoking + * + * @remarks + * a model, spending customer quota, or accepting provider terms. + */ +export const SourceEnum1 = { + AwsBedrock: "aws-bedrock", + GcpVertex: "gcp-vertex", + AzureFoundry: "azure-foundry", + Anthropic: "anthropic", +} as const; +/** + * Provider control plane used to observe model availability without invoking + * + * @remarks + * a model, spending customer quota, or accepting provider terms. + */ +export type SourceEnum1 = ClosedEnum; + +export type Availability1 = { + catalogRevision: string; + location?: string | null | undefined; + models: Array; + /** + * Provider control plane used to observe model availability without invoking + * + * @remarks + * a model, spending customer quota, or accepting provider terms. + */ + source: SourceEnum1; +}; + +export const GetResourceDeploymentDetailReason66 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason60 = ClosedEnum; +export type GetResourceDeploymentDetailReason66 = ClosedEnum< + typeof GetResourceDeploymentDetailReason66 +>; -export const CollectionIssueSeverity60 = { +export const CollectionIssueSeverity66 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity60 = ClosedEnum< - typeof CollectionIssueSeverity60 +export type CollectionIssueSeverity66 = ClosedEnum< + typeof CollectionIssueSeverity66 >; -export type CollectionIssue60 = { +export type CollectionIssue66 = { message: string; - reason: Reason60; - severity: CollectionIssueSeverity60; + reason: GetResourceDeploymentDetailReason66; + severity: CollectionIssueSeverity66; source: string; }; -export const Health60 = { +export const Health66 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health60 = ClosedEnum; +export type Health66 = ClosedEnum; -export const Lifecycle60 = { +export const Lifecycle66 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -546,102 +813,71 @@ export const Lifecycle60 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle60 = ClosedEnum; +export type Lifecycle66 = ClosedEnum; -export type DataStatus60 = { - collectionIssues: Array; - health: Health60; - lifecycle: Lifecycle60; +export type DataStatus66 = { + collectionIssues: Array; + health: Health66; + lifecycle: Lifecycle66; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataGcpServiceUsage = { - enabled: boolean; - lastOperationName?: string | null | undefined; - projectId: string; - serviceName: string; - serviceResourceName?: string | null | undefined; - state?: string | null | undefined; - status: DataStatus60; - title?: string | null | undefined; - backend: "gcpServiceUsage"; -}; - -export type DataUnion15 = DataGcpServiceUsage | DataAzureResourceProvider; - -export type DataServiceActivation = { - data: DataGcpServiceUsage | DataAzureResourceProvider; - resourceType: "service_activation"; -}; - -export type InvolvedObject10 = { - apiVersion?: string | null | undefined; - fieldPath?: string | null | undefined; - kind?: string | null | undefined; - name?: string | null | undefined; - namespace?: string | null | undefined; - resourceVersion?: string | null | undefined; - uid?: string | null | undefined; -}; - -export type InvolvedObjectUnion10 = InvolvedObject10 | any; - -export type GetResourceDeploymentDetailSource10 = { - component?: string | null | undefined; - host?: string | null | undefined; +export type DataAwsBedrock = { + availability: Availability1; + region: string; + status: DataStatus66; + backend: "awsBedrock"; }; -export type SourceUnion10 = GetResourceDeploymentDetailSource10 | any; +export type DataUnion16 = + | DataAwsBedrock + | DataGcpVertex + | DataAzureFoundry + | DataExternal; -export type Event13 = { - count?: number | null | undefined; - eventTime?: Date | null | undefined; - firstTimestamp?: Date | null | undefined; - involvedObject?: InvolvedObject10 | any | null | undefined; - lastTimestamp?: Date | null | undefined; - message: string; - raw?: any | null | undefined; - reason: string; - source?: GetResourceDeploymentDetailSource10 | any | null | undefined; - type?: string | null | undefined; +export type DataAi = { + data: DataAwsBedrock | DataGcpVertex | DataAzureFoundry | DataExternal; + resourceType: "ai"; }; -export const Reason59 = { +export const GetResourceDeploymentDetailReason65 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason59 = ClosedEnum; +export type GetResourceDeploymentDetailReason65 = ClosedEnum< + typeof GetResourceDeploymentDetailReason65 +>; -export const CollectionIssueSeverity59 = { +export const CollectionIssueSeverity65 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity59 = ClosedEnum< - typeof CollectionIssueSeverity59 +export type CollectionIssueSeverity65 = ClosedEnum< + typeof CollectionIssueSeverity65 >; -export type CollectionIssue59 = { +export type CollectionIssue65 = { message: string; - reason: Reason59; - severity: CollectionIssueSeverity59; + reason: GetResourceDeploymentDetailReason65; + severity: CollectionIssueSeverity65; source: string; }; -export const Health59 = { +export const Health65 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health59 = ClosedEnum; +export type Health65 = ClosedEnum; -export const Lifecycle59 = { +export const Lifecycle65 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -653,66 +889,81 @@ export const Lifecycle59 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle59 = ClosedEnum; +export type Lifecycle65 = ClosedEnum; -export type DataStatus59 = { - collectionIssues: Array; - health: Health59; - lifecycle: Lifecycle59; +export type DataStatus65 = { + collectionIssues: Array; + health: Health65; + lifecycle: Lifecycle65; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataKubernetesJob = { - active?: number | null | undefined; - completionTime?: Date | null | undefined; - conditionCount: number; - events: Array; - failed?: number | null | undefined; - imageDigest?: string | null | undefined; - jobName: string; - namespace: string; - startTime?: Date | null | undefined; - status: DataStatus59; - succeeded?: number | null | undefined; - backend: "kubernetesJob"; +export type Data5 = { + createdAt?: string | null | undefined; + disableLocalAuth?: boolean | null | undefined; + location?: string | null | undefined; + metricId?: string | null | undefined; + minimumTlsVersion?: string | null | undefined; + name: string; + namespaceStatus?: string | null | undefined; + premiumMessagingPartitions?: number | null | undefined; + privateEndpointConnectionCount: number; + provisioningState?: string | null | undefined; + publicNetworkAccess?: string | null | undefined; + resourceGroup?: string | null | undefined; + resourceId?: string | null | undefined; + serviceBusEndpoint?: string | null | undefined; + skuCapacity?: number | null | undefined; + skuName?: string | null | undefined; + skuTier?: string | null | undefined; + status: DataStatus65; + updatedAt?: string | null | undefined; + zoneRedundant?: boolean | null | undefined; +}; + +export type DataAzureServiceBusNamespace = { + data: Data5; + resourceType: "azure_service_bus_namespace"; }; -export const Reason58 = { +export const GetResourceDeploymentDetailReason64 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason58 = ClosedEnum; +export type GetResourceDeploymentDetailReason64 = ClosedEnum< + typeof GetResourceDeploymentDetailReason64 +>; -export const CollectionIssueSeverity58 = { +export const CollectionIssueSeverity64 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity58 = ClosedEnum< - typeof CollectionIssueSeverity58 +export type CollectionIssueSeverity64 = ClosedEnum< + typeof CollectionIssueSeverity64 >; -export type CollectionIssue58 = { +export type CollectionIssue64 = { message: string; - reason: Reason58; - severity: CollectionIssueSeverity58; + reason: GetResourceDeploymentDetailReason64; + severity: CollectionIssueSeverity64; source: string; }; -export const Health58 = { +export const Health64 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health58 = ClosedEnum; +export type Health64 = ClosedEnum; -export const Lifecycle58 = { +export const Lifecycle64 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -724,61 +975,101 @@ export const Lifecycle58 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle58 = ClosedEnum; +export type Lifecycle64 = ClosedEnum; -export type DataStatus58 = { - collectionIssues: Array; - health: Health58; - lifecycle: Lifecycle58; +export type DataStatus64 = { + collectionIssues: Array; + health: Health64; + lifecycle: Lifecycle64; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataAzureContainerApps2 = { - environmentVariableCount: number; - managedEnvironmentId: string; - managedIdentityId?: string | null | undefined; - resourceGroupName: string; - resourcePrefix?: string | null | undefined; - status: DataStatus58; - backend: "azureContainerApps"; -}; - -export const Reason57 = { +export type WorkloadProfile = { + maximumCount?: number | null | undefined; + minimumCount?: number | null | undefined; + name: string; + workloadProfileType: string; +}; + +export type Data4 = { + customDomainVerificationId?: string | null | undefined; + defaultDomain?: string | null | undefined; + eventStreamEndpoint?: string | null | undefined; + infrastructureResourceGroup?: string | null | undefined; + kind?: string | null | undefined; + location?: string | null | undefined; + name: string; + provisioningState?: string | null | undefined; + resourceGroup?: string | null | undefined; + resourceId?: string | null | undefined; + staticIp?: string | null | undefined; + status: DataStatus64; + workloadProfileCount: number; + workloadProfiles: Array; + zoneRedundant?: boolean | null | undefined; +}; + +export type DataAzureContainerAppsEnvironment = { + data: Data4; + resourceType: "azure_container_apps_environment"; +}; + +export type PrimaryEndpoints = { + blob?: string | null | undefined; + dfs?: string | null | undefined; + file?: string | null | undefined; + queue?: string | null | undefined; + table?: string | null | undefined; + web?: string | null | undefined; +}; + +export type SecondaryEndpoints = { + blob?: string | null | undefined; + dfs?: string | null | undefined; + file?: string | null | undefined; + queue?: string | null | undefined; + table?: string | null | undefined; + web?: string | null | undefined; +}; + +export const GetResourceDeploymentDetailReason63 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason57 = ClosedEnum; +export type GetResourceDeploymentDetailReason63 = ClosedEnum< + typeof GetResourceDeploymentDetailReason63 +>; -export const CollectionIssueSeverity57 = { +export const CollectionIssueSeverity63 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity57 = ClosedEnum< - typeof CollectionIssueSeverity57 +export type CollectionIssueSeverity63 = ClosedEnum< + typeof CollectionIssueSeverity63 >; -export type CollectionIssue57 = { +export type CollectionIssue63 = { message: string; - reason: Reason57; - severity: CollectionIssueSeverity57; + reason: GetResourceDeploymentDetailReason63; + severity: CollectionIssueSeverity63; source: string; }; -export const Health57 = { +export const Health63 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health57 = ClosedEnum; +export type Health63 = ClosedEnum; -export const Lifecycle57 = { +export const Lifecycle63 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -790,61 +1081,84 @@ export const Lifecycle57 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle57 = ClosedEnum; +export type Lifecycle63 = ClosedEnum; -export type DataStatus57 = { - collectionIssues: Array; - health: Health57; - lifecycle: Lifecycle57; +export type DataStatus63 = { + collectionIssues: Array; + health: Health63; + lifecycle: Lifecycle63; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataGcpCloudBuild = { - buildConfigId: string; - environmentVariableCount: number; - location: string; - projectId: string; - serviceAccount?: string | null | undefined; - status: DataStatus57; - backend: "gcpCloudBuild"; +export type Data3 = { + allowBlobPublicAccess?: boolean | null | undefined; + allowSharedKeyAccess?: boolean | null | undefined; + encryptionKeySource?: string | null | undefined; + kind?: string | null | undefined; + location?: string | null | undefined; + minimumTlsVersion?: string | null | undefined; + name: string; + networkBypass?: string | null | undefined; + networkDefaultAction?: string | null | undefined; + networkIpRuleCount?: number | null | undefined; + networkResourceAccessRuleCount?: number | null | undefined; + networkVirtualNetworkRuleCount?: number | null | undefined; + primaryEndpoints: PrimaryEndpoints; + provisioningState?: string | null | undefined; + publicNetworkAccess?: string | null | undefined; + requireInfrastructureEncryption?: boolean | null | undefined; + resourceGroup?: string | null | undefined; + resourceId?: string | null | undefined; + secondaryEndpoints: SecondaryEndpoints; + skuName?: string | null | undefined; + skuTier?: string | null | undefined; + status: DataStatus63; + supportsHttpsTrafficOnly?: boolean | null | undefined; +}; + +export type DataAzureStorageAccount = { + data: Data3; + resourceType: "azure_storage_account"; }; -export const Reason56 = { +export const GetResourceDeploymentDetailReason62 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason56 = ClosedEnum; +export type GetResourceDeploymentDetailReason62 = ClosedEnum< + typeof GetResourceDeploymentDetailReason62 +>; -export const CollectionIssueSeverity56 = { +export const CollectionIssueSeverity62 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity56 = ClosedEnum< - typeof CollectionIssueSeverity56 +export type CollectionIssueSeverity62 = ClosedEnum< + typeof CollectionIssueSeverity62 >; -export type CollectionIssue56 = { +export type CollectionIssue62 = { message: string; - reason: Reason56; - severity: CollectionIssueSeverity56; + reason: GetResourceDeploymentDetailReason62; + severity: CollectionIssueSeverity62; source: string; }; -export const Health56 = { +export const Health62 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health56 = ClosedEnum; +export type Health62 = ClosedEnum; -export const Lifecycle56 = { +export const Lifecycle62 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -856,91 +1170,67 @@ export const Lifecycle56 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle56 = ClosedEnum; +export type Lifecycle62 = ClosedEnum; -export type DataStatus56 = { - collectionIssues: Array; - health: Health56; - lifecycle: Lifecycle56; +export type DataStatus62 = { + collectionIssues: Array; + health: Health62; + lifecycle: Lifecycle62; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataAwsCodeBuild = { - artifactsEncryptionDisabled?: boolean | null | undefined; - artifactsType?: string | null | undefined; - cloudWatchLogsStatus?: string | null | undefined; - computeType?: string | null | undefined; - created?: number | null | undefined; - description?: string | null | undefined; - encryptionKeyPresent: boolean; - environmentImage?: string | null | undefined; - environmentType?: string | null | undefined; - environmentVariableCount: number; - imagePullCredentialsType?: string | null | undefined; - lastModified?: number | null | undefined; - privilegedMode?: boolean | null | undefined; - projectArn?: string | null | undefined; - projectName: string; - queuedTimeoutInMinutes?: number | null | undefined; - s3LogsStatus?: string | null | undefined; - serviceRolePresent: boolean; - sourceType?: string | null | undefined; - status: DataStatus56; - timeoutInMinutes?: number | null | undefined; - backend: "awsCodeBuild"; +export type Data2 = { + location?: string | null | undefined; + managedTags: { [k: string]: string }; + name: string; + provisioningState?: string | null | undefined; + resourceId?: string | null | undefined; + status: DataStatus62; }; -export type DataUnion14 = - | DataAwsCodeBuild - | DataGcpCloudBuild - | DataAzureContainerApps2 - | DataKubernetesJob; - -export type DataBuild = { - data: - | DataAwsCodeBuild - | DataGcpCloudBuild - | DataAzureContainerApps2 - | DataKubernetesJob; - resourceType: "build"; +export type DataAzureResourceGroup = { + data: Data2; + resourceType: "azure_resource_group"; }; -export const Reason55 = { +export const GetResourceDeploymentDetailReason61 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason55 = ClosedEnum; +export type GetResourceDeploymentDetailReason61 = ClosedEnum< + typeof GetResourceDeploymentDetailReason61 +>; -export const CollectionIssueSeverity55 = { +export const CollectionIssueSeverity61 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity55 = ClosedEnum< - typeof CollectionIssueSeverity55 +export type CollectionIssueSeverity61 = ClosedEnum< + typeof CollectionIssueSeverity61 >; -export type CollectionIssue55 = { +export type CollectionIssue61 = { message: string; - reason: Reason55; - severity: CollectionIssueSeverity55; + reason: GetResourceDeploymentDetailReason61; + severity: CollectionIssueSeverity61; source: string; }; -export const Health55 = { +export const Health61 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health55 = ClosedEnum; +export type Health61 = ClosedEnum; -export const Lifecycle55 = { +export const Lifecycle61 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -952,58 +1242,64 @@ export const Lifecycle55 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle55 = ClosedEnum; +export type Lifecycle61 = ClosedEnum; -export type DataStatus55 = { - collectionIssues: Array; - health: Health55; - lifecycle: Lifecycle55; +export type DataStatus61 = { + collectionIssues: Array; + health: Health61; + lifecycle: Lifecycle61; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataLocal11 = { - reachable: boolean; - registryUrl: string; - status: DataStatus55; - backend: "local"; +export type DataAzureResourceProvider = { + namespace: string; + providerId?: string | null | undefined; + registered: boolean; + registrationPolicy?: string | null | undefined; + registrationState?: string | null | undefined; + resourceTypeCount: number; + status: DataStatus61; + backend: "azureResourceProvider"; }; -export const Reason54 = { +export const GetResourceDeploymentDetailReason60 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason54 = ClosedEnum; +export type GetResourceDeploymentDetailReason60 = ClosedEnum< + typeof GetResourceDeploymentDetailReason60 +>; -export const CollectionIssueSeverity54 = { +export const CollectionIssueSeverity60 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity54 = ClosedEnum< - typeof CollectionIssueSeverity54 +export type CollectionIssueSeverity60 = ClosedEnum< + typeof CollectionIssueSeverity60 >; -export type CollectionIssue54 = { +export type CollectionIssue60 = { message: string; - reason: Reason54; - severity: CollectionIssueSeverity54; + reason: GetResourceDeploymentDetailReason60; + severity: CollectionIssueSeverity60; source: string; }; -export const Health54 = { +export const Health60 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health54 = ClosedEnum; +export type Health60 = ClosedEnum; -export const Lifecycle54 = { +export const Lifecycle60 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -1015,82 +1311,104 @@ export const Lifecycle54 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle54 = ClosedEnum; +export type Lifecycle60 = ClosedEnum; -export type DataStatus54 = { - collectionIssues: Array; - health: Health54; - lifecycle: Lifecycle54; +export type DataStatus60 = { + collectionIssues: Array; + health: Health60; + lifecycle: Lifecycle60; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataAzureContainerRegistry = { - adminUserEnabled: boolean; - anonymousPullEnabled: boolean; - creationDate?: string | null | undefined; - dataEndpointEnabled?: boolean | null | undefined; - dataEndpointHostNames: Array; - encryptionKeyIdentifierPresent: boolean; - encryptionKeyVaultUriPresent: boolean; - encryptionStatus?: string | null | undefined; - ipRuleCount: number; - location: string; - loginServer?: string | null | undefined; - managedTagCount: number; - name: string; - networkRuleBypassOptions: string; - networkRuleDefaultAction?: string | null | undefined; - policiesPresent: boolean; - policyCount: number; - privateEndpointConnectionCount: number; - provisioningState?: string | null | undefined; - publicNetworkAccess: string; - resourceGroup: string; - resourceId?: string | null | undefined; - skuName: string; - skuTier?: string | null | undefined; - status: DataStatus54; +export type DataGcpServiceUsage = { + enabled: boolean; + lastOperationName?: string | null | undefined; + projectId: string; + serviceName: string; + serviceResourceName?: string | null | undefined; + state?: string | null | undefined; + status: DataStatus60; + title?: string | null | undefined; + backend: "gcpServiceUsage"; +}; + +export type DataUnion15 = DataGcpServiceUsage | DataAzureResourceProvider; + +export type DataServiceActivation = { + data: DataGcpServiceUsage | DataAzureResourceProvider; + resourceType: "service_activation"; +}; + +export type InvolvedObject10 = { + apiVersion?: string | null | undefined; + fieldPath?: string | null | undefined; + kind?: string | null | undefined; + name?: string | null | undefined; + namespace?: string | null | undefined; + resourceVersion?: string | null | undefined; + uid?: string | null | undefined; +}; + +export type InvolvedObjectUnion10 = InvolvedObject10 | any; + +export type SourceEvent10 = { + component?: string | null | undefined; + host?: string | null | undefined; +}; + +export type SourceUnion10 = SourceEvent10 | any; + +export type Event13 = { + count?: number | null | undefined; + eventTime?: Date | null | undefined; + firstTimestamp?: Date | null | undefined; + involvedObject?: InvolvedObject10 | any | null | undefined; + lastTimestamp?: Date | null | undefined; + message: string; + raw?: any | null | undefined; + reason: string; + source?: SourceEvent10 | any | null | undefined; type?: string | null | undefined; - zoneRedundancy: string; - backend: "azureContainerRegistry"; }; -export const Reason53 = { +export const GetResourceDeploymentDetailReason59 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason53 = ClosedEnum; +export type GetResourceDeploymentDetailReason59 = ClosedEnum< + typeof GetResourceDeploymentDetailReason59 +>; -export const CollectionIssueSeverity53 = { +export const CollectionIssueSeverity59 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity53 = ClosedEnum< - typeof CollectionIssueSeverity53 +export type CollectionIssueSeverity59 = ClosedEnum< + typeof CollectionIssueSeverity59 >; -export type CollectionIssue53 = { +export type CollectionIssue59 = { message: string; - reason: Reason53; - severity: CollectionIssueSeverity53; + reason: GetResourceDeploymentDetailReason59; + severity: CollectionIssueSeverity59; source: string; }; -export const Health53 = { +export const Health59 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health53 = ClosedEnum; +export type Health59 = ClosedEnum; -export const Lifecycle53 = { +export const Lifecycle59 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -1102,88 +1420,68 @@ export const Lifecycle53 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle53 = ClosedEnum; +export type Lifecycle59 = ClosedEnum; -export type DataStatus53 = { - collectionIssues: Array; - health: Health53; - lifecycle: Lifecycle53; +export type DataStatus59 = { + collectionIssues: Array; + health: Health59; + lifecycle: Lifecycle59; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataGcpArtifactRegistry = { - cleanupPolicyCount: number; - cleanupPolicyDryRun?: boolean | null | undefined; - createTime?: string | null | undefined; - description?: string | null | undefined; - format?: string | null | undefined; - iamBindingCount: number; - iamPolicyEtagPresent: boolean; - iamRoles: Array; - kmsKeyNamePresent: boolean; - labelCount: number; - location: string; - mode?: string | null | undefined; - name?: string | null | undefined; - projectId: string; - pullServiceAccountEmail?: string | null | undefined; - pushServiceAccountEmail?: string | null | undefined; - repositoryId: string; - satisfiesPzs?: boolean | null | undefined; - sizeBytes?: string | null | undefined; - status: DataStatus53; - updateTime?: string | null | undefined; - backend: "gcpArtifactRegistry"; -}; - -export type Repository = { - createdAt: number; - encryptionType?: string | null | undefined; - imageTagMutability?: string | null | undefined; - kmsKeyPresent: boolean; - registryId: string; - repositoryArn: string; - repositoryName: string; - repositoryUri: string; - scanOnPush?: boolean | null | undefined; +export type DataKubernetesJob = { + active?: number | null | undefined; + completionTime?: Date | null | undefined; + conditionCount: number; + events: Array; + failed?: number | null | undefined; + imageDigest?: string | null | undefined; + jobName: string; + namespace: string; + startTime?: Date | null | undefined; + status: DataStatus59; + succeeded?: number | null | undefined; + backend: "kubernetesJob"; }; -export const Reason52 = { +export const GetResourceDeploymentDetailReason58 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason52 = ClosedEnum; +export type GetResourceDeploymentDetailReason58 = ClosedEnum< + typeof GetResourceDeploymentDetailReason58 +>; -export const CollectionIssueSeverity52 = { +export const CollectionIssueSeverity58 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity52 = ClosedEnum< - typeof CollectionIssueSeverity52 +export type CollectionIssueSeverity58 = ClosedEnum< + typeof CollectionIssueSeverity58 >; -export type CollectionIssue52 = { +export type CollectionIssue58 = { message: string; - reason: Reason52; - severity: CollectionIssueSeverity52; + reason: GetResourceDeploymentDetailReason58; + severity: CollectionIssueSeverity58; source: string; }; -export const Health52 = { +export const Health58 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health52 = ClosedEnum; +export type Health58 = ClosedEnum; -export const Lifecycle52 = { +export const Lifecycle58 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -1195,80 +1493,63 @@ export const Lifecycle52 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle52 = ClosedEnum; +export type Lifecycle58 = ClosedEnum; -export type DataStatus52 = { - collectionIssues: Array; - health: Health52; - lifecycle: Lifecycle52; +export type DataStatus58 = { + collectionIssues: Array; + health: Health58; + lifecycle: Lifecycle58; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataAwsEcr = { - pullRoleArn?: string | null | undefined; - pushRoleArn?: string | null | undefined; - region: string; - registryId: string; - registryUri: string; - repositories: Array; - repositoriesTruncated: boolean; - repositoryCount: number; - repositoryPrefix: string; - status: DataStatus52; - backend: "awsEcr"; -}; - -export type DataUnion13 = - | DataAwsEcr - | DataGcpArtifactRegistry - | DataAzureContainerRegistry - | DataLocal11; - -export type DataArtifactRegistry = { - data: - | DataAwsEcr - | DataGcpArtifactRegistry - | DataAzureContainerRegistry - | DataLocal11; - resourceType: "artifact-registry"; +export type DataAzureContainerApps2 = { + environmentVariableCount: number; + managedEnvironmentId: string; + managedIdentityId?: string | null | undefined; + resourceGroupName: string; + resourcePrefix?: string | null | undefined; + status: DataStatus58; + backend: "azureContainerApps"; }; -export const Reason51 = { +export const GetResourceDeploymentDetailReason57 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason51 = ClosedEnum; +export type GetResourceDeploymentDetailReason57 = ClosedEnum< + typeof GetResourceDeploymentDetailReason57 +>; -export const CollectionIssueSeverity51 = { +export const CollectionIssueSeverity57 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity51 = ClosedEnum< - typeof CollectionIssueSeverity51 +export type CollectionIssueSeverity57 = ClosedEnum< + typeof CollectionIssueSeverity57 >; -export type CollectionIssue51 = { +export type CollectionIssue57 = { message: string; - reason: Reason51; - severity: CollectionIssueSeverity51; + reason: GetResourceDeploymentDetailReason57; + severity: CollectionIssueSeverity57; source: string; }; -export const Health51 = { +export const Health57 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health51 = ClosedEnum; +export type Health57 = ClosedEnum; -export const Lifecycle51 = { +export const Lifecycle57 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -1280,63 +1561,63 @@ export const Lifecycle51 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle51 = ClosedEnum; +export type Lifecycle57 = ClosedEnum; -export type DataStatus51 = { - collectionIssues: Array; - health: Health51; - lifecycle: Lifecycle51; +export type DataStatus57 = { + collectionIssues: Array; + health: Health57; + lifecycle: Lifecycle57; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataAzureManagedIdentity2 = { - ficName?: string | null | undefined; - roleAssignmentIds: Array; - roleDefinitionId?: string | null | undefined; - status: DataStatus51; - tenantId?: string | null | undefined; - uamiClientId?: string | null | undefined; - uamiPrincipalId?: string | null | undefined; - uamiResourceId?: string | null | undefined; - backend: "azureManagedIdentity"; +export type DataGcpCloudBuild = { + buildConfigId: string; + environmentVariableCount: number; + location: string; + projectId: string; + serviceAccount?: string | null | undefined; + status: DataStatus57; + backend: "gcpCloudBuild"; }; -export const Reason50 = { +export const GetResourceDeploymentDetailReason56 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason50 = ClosedEnum; +export type GetResourceDeploymentDetailReason56 = ClosedEnum< + typeof GetResourceDeploymentDetailReason56 +>; -export const CollectionIssueSeverity50 = { +export const CollectionIssueSeverity56 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity50 = ClosedEnum< - typeof CollectionIssueSeverity50 ->; +export type CollectionIssueSeverity56 = ClosedEnum< + typeof CollectionIssueSeverity56 +>; -export type CollectionIssue50 = { +export type CollectionIssue56 = { message: string; - reason: Reason50; - severity: CollectionIssueSeverity50; + reason: GetResourceDeploymentDetailReason56; + severity: CollectionIssueSeverity56; source: string; }; -export const Health50 = { +export const Health56 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health50 = ClosedEnum; +export type Health56 = ClosedEnum; -export const Lifecycle50 = { +export const Lifecycle56 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -1348,60 +1629,93 @@ export const Lifecycle50 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle50 = ClosedEnum; +export type Lifecycle56 = ClosedEnum; -export type DataStatus50 = { - collectionIssues: Array; - health: Health50; - lifecycle: Lifecycle50; +export type DataStatus56 = { + collectionIssues: Array; + health: Health56; + lifecycle: Lifecycle56; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataGcpServiceAccount2 = { - impersonationGranted: boolean; - roleBound: boolean; - serviceAccountEmail?: string | null | undefined; - serviceAccountUniqueId?: string | null | undefined; - status: DataStatus50; - backend: "gcpServiceAccount"; +export type DataAwsCodeBuild = { + artifactsEncryptionDisabled?: boolean | null | undefined; + artifactsType?: string | null | undefined; + cloudWatchLogsStatus?: string | null | undefined; + computeType?: string | null | undefined; + created?: number | null | undefined; + description?: string | null | undefined; + encryptionKeyPresent: boolean; + environmentImage?: string | null | undefined; + environmentType?: string | null | undefined; + environmentVariableCount: number; + imagePullCredentialsType?: string | null | undefined; + lastModified?: number | null | undefined; + privilegedMode?: boolean | null | undefined; + projectArn?: string | null | undefined; + projectName: string; + queuedTimeoutInMinutes?: number | null | undefined; + s3LogsStatus?: string | null | undefined; + serviceRolePresent: boolean; + sourceType?: string | null | undefined; + status: DataStatus56; + timeoutInMinutes?: number | null | undefined; + backend: "awsCodeBuild"; +}; + +export type DataUnion14 = + | DataAwsCodeBuild + | DataGcpCloudBuild + | DataAzureContainerApps2 + | DataKubernetesJob; + +export type DataBuild = { + data: + | DataAwsCodeBuild + | DataGcpCloudBuild + | DataAzureContainerApps2 + | DataKubernetesJob; + resourceType: "build"; }; -export const Reason49 = { +export const GetResourceDeploymentDetailReason55 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason49 = ClosedEnum; +export type GetResourceDeploymentDetailReason55 = ClosedEnum< + typeof GetResourceDeploymentDetailReason55 +>; -export const CollectionIssueSeverity49 = { +export const CollectionIssueSeverity55 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity49 = ClosedEnum< - typeof CollectionIssueSeverity49 +export type CollectionIssueSeverity55 = ClosedEnum< + typeof CollectionIssueSeverity55 >; -export type CollectionIssue49 = { +export type CollectionIssue55 = { message: string; - reason: Reason49; - severity: CollectionIssueSeverity49; + reason: GetResourceDeploymentDetailReason55; + severity: CollectionIssueSeverity55; source: string; }; -export const Health49 = { +export const Health55 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health49 = ClosedEnum; +export type Health55 = ClosedEnum; -export const Lifecycle49 = { +export const Lifecycle55 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -1413,69 +1727,60 @@ export const Lifecycle49 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle49 = ClosedEnum; +export type Lifecycle55 = ClosedEnum; -export type DataStatus49 = { - collectionIssues: Array; - health: Health49; - lifecycle: Lifecycle49; +export type DataStatus55 = { + collectionIssues: Array; + health: Health55; + lifecycle: Lifecycle55; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataAwsIamRole2 = { - managementPermissionsApplied: boolean; - roleArn?: string | null | undefined; - roleName?: string | null | undefined; - status: DataStatus49; - backend: "awsIamRole"; -}; - -export type DataUnion12 = - | DataAwsIamRole2 - | DataGcpServiceAccount2 - | DataAzureManagedIdentity2; - -export type DataRemoteStackManagement = { - data: DataAwsIamRole2 | DataGcpServiceAccount2 | DataAzureManagedIdentity2; - resourceType: "remote-stack-management"; +export type DataLocal11 = { + reachable: boolean; + registryUrl: string; + status: DataStatus55; + backend: "local"; }; -export const Reason48 = { +export const GetResourceDeploymentDetailReason54 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason48 = ClosedEnum; +export type GetResourceDeploymentDetailReason54 = ClosedEnum< + typeof GetResourceDeploymentDetailReason54 +>; -export const CollectionIssueSeverity48 = { +export const CollectionIssueSeverity54 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity48 = ClosedEnum< - typeof CollectionIssueSeverity48 +export type CollectionIssueSeverity54 = ClosedEnum< + typeof CollectionIssueSeverity54 >; -export type CollectionIssue48 = { +export type CollectionIssue54 = { message: string; - reason: Reason48; - severity: CollectionIssueSeverity48; + reason: GetResourceDeploymentDetailReason54; + severity: CollectionIssueSeverity54; source: string; }; -export const Health48 = { +export const Health54 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health48 = ClosedEnum; +export type Health54 = ClosedEnum; -export const Lifecycle48 = { +export const Lifecycle54 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -1487,70 +1792,84 @@ export const Lifecycle48 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle48 = ClosedEnum; +export type Lifecycle54 = ClosedEnum; -export type DataStatus48 = { - collectionIssues: Array; - health: Health48; - lifecycle: Lifecycle48; +export type DataStatus54 = { + collectionIssues: Array; + health: Health54; + lifecycle: Lifecycle54; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataAzureVnet = { - applicationGatewaySubnetName?: string | null | undefined; - cidrBlock?: string | null | undefined; - isByoVnet: boolean; - lastByoVnetVerificationErrorCode?: string | null | undefined; - location?: string | null | undefined; - natGatewayId?: string | null | undefined; - nsgId?: string | null | undefined; - privateEndpointSubnetName?: string | null | undefined; - privateSubnetName?: string | null | undefined; - publicIpId?: string | null | undefined; - publicSubnetName?: string | null | undefined; - resourceGroup?: string | null | undefined; - status: DataStatus48; - vnetName?: string | null | undefined; - vnetResourceId?: string | null | undefined; - backend: "azureVnet"; +export type DataAzureContainerRegistry = { + adminUserEnabled: boolean; + anonymousPullEnabled: boolean; + creationDate?: string | null | undefined; + dataEndpointEnabled?: boolean | null | undefined; + dataEndpointHostNames: Array; + encryptionKeyIdentifierPresent: boolean; + encryptionKeyVaultUriPresent: boolean; + encryptionStatus?: string | null | undefined; + ipRuleCount: number; + location: string; + loginServer?: string | null | undefined; + managedTagCount: number; + name: string; + networkRuleBypassOptions: string; + networkRuleDefaultAction?: string | null | undefined; + policiesPresent: boolean; + policyCount: number; + privateEndpointConnectionCount: number; + provisioningState?: string | null | undefined; + publicNetworkAccess: string; + resourceGroup: string; + resourceId?: string | null | undefined; + skuName: string; + skuTier?: string | null | undefined; + status: DataStatus54; + type?: string | null | undefined; + zoneRedundancy: string; + backend: "azureContainerRegistry"; }; -export const Reason47 = { +export const GetResourceDeploymentDetailReason53 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason47 = ClosedEnum; +export type GetResourceDeploymentDetailReason53 = ClosedEnum< + typeof GetResourceDeploymentDetailReason53 +>; -export const CollectionIssueSeverity47 = { +export const CollectionIssueSeverity53 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity47 = ClosedEnum< - typeof CollectionIssueSeverity47 +export type CollectionIssueSeverity53 = ClosedEnum< + typeof CollectionIssueSeverity53 >; -export type CollectionIssue47 = { +export type CollectionIssue53 = { message: string; - reason: Reason47; - severity: CollectionIssueSeverity47; + reason: GetResourceDeploymentDetailReason53; + severity: CollectionIssueSeverity53; source: string; }; -export const Health47 = { +export const Health53 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health47 = ClosedEnum; +export type Health53 = ClosedEnum; -export const Lifecycle47 = { +export const Lifecycle53 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -1562,66 +1881,90 @@ export const Lifecycle47 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle47 = ClosedEnum; +export type Lifecycle53 = ClosedEnum; -export type DataStatus47 = { - collectionIssues: Array; - health: Health47; - lifecycle: Lifecycle47; +export type DataStatus53 = { + collectionIssues: Array; + health: Health53; + lifecycle: Lifecycle53; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataGcpVpc = { - cidrBlock?: string | null | undefined; - cloudNatName?: string | null | undefined; - firewallName?: string | null | undefined; - isByoVpc: boolean; - networkName?: string | null | undefined; - networkSelfLink?: string | null | undefined; - region?: string | null | undefined; - routerName?: string | null | undefined; - status: DataStatus47; - subnetworkName?: string | null | undefined; - subnetworkSelfLink?: string | null | undefined; - backend: "gcpVpc"; +export type DataGcpArtifactRegistry = { + cleanupPolicyCount: number; + cleanupPolicyDryRun?: boolean | null | undefined; + createTime?: string | null | undefined; + description?: string | null | undefined; + format?: string | null | undefined; + iamBindingCount: number; + iamPolicyEtagPresent: boolean; + iamRoles: Array; + kmsKeyNamePresent: boolean; + labelCount: number; + location: string; + mode?: string | null | undefined; + name?: string | null | undefined; + projectId: string; + pullServiceAccountEmail?: string | null | undefined; + pushServiceAccountEmail?: string | null | undefined; + repositoryId: string; + satisfiesPzs?: boolean | null | undefined; + sizeBytes?: string | null | undefined; + status: DataStatus53; + updateTime?: string | null | undefined; + backend: "gcpArtifactRegistry"; }; -export const Reason46 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", +export type GetResourceDeploymentDetailRepository = { + createdAt: number; + encryptionType?: string | null | undefined; + imageTagMutability?: string | null | undefined; + kmsKeyPresent: boolean; + registryId: string; + repositoryArn: string; + repositoryName: string; + repositoryUri: string; + scanOnPush?: boolean | null | undefined; +}; + +export const GetResourceDeploymentDetailReason52 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason46 = ClosedEnum; +export type GetResourceDeploymentDetailReason52 = ClosedEnum< + typeof GetResourceDeploymentDetailReason52 +>; -export const CollectionIssueSeverity46 = { +export const CollectionIssueSeverity52 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity46 = ClosedEnum< - typeof CollectionIssueSeverity46 +export type CollectionIssueSeverity52 = ClosedEnum< + typeof CollectionIssueSeverity52 >; -export type CollectionIssue46 = { +export type CollectionIssue52 = { message: string; - reason: Reason46; - severity: CollectionIssueSeverity46; + reason: GetResourceDeploymentDetailReason52; + severity: CollectionIssueSeverity52; source: string; }; -export const Health46 = { +export const Health52 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health46 = ClosedEnum; +export type Health52 = ClosedEnum; -export const Lifecycle46 = { +export const Lifecycle52 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -1633,74 +1976,82 @@ export const Lifecycle46 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle46 = ClosedEnum; +export type Lifecycle52 = ClosedEnum; -export type DataStatus46 = { - collectionIssues: Array; - health: Health46; - lifecycle: Lifecycle46; +export type DataStatus52 = { + collectionIssues: Array; + health: Health52; + lifecycle: Lifecycle52; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataAwsVpc = { - availabilityZones: Array; - cidrBlock?: string | null | undefined; - internetGatewayId?: string | null | undefined; - isByoVpc: boolean; - natGatewayId?: string | null | undefined; - privateSubnetIds: Array; - publicSubnetIds: Array; - routeTableCount: number; - securityGroupId?: string | null | undefined; - status: DataStatus46; - vpcId?: string | null | undefined; - vpcState?: string | null | undefined; - backend: "awsVpc"; +export type DataAwsEcr = { + pullRoleArn?: string | null | undefined; + pushRoleArn?: string | null | undefined; + region: string; + registryId: string; + registryUri: string; + repositories: Array; + repositoriesTruncated: boolean; + repositoryCount: number; + repositoryPrefix: string; + status: DataStatus52; + backend: "awsEcr"; }; -export type DataUnion11 = DataAwsVpc | DataGcpVpc | DataAzureVnet; +export type DataUnion13 = + | DataAwsEcr + | DataGcpArtifactRegistry + | DataAzureContainerRegistry + | DataLocal11; -export type DataNetwork = { - data: DataAwsVpc | DataGcpVpc | DataAzureVnet; - resourceType: "network"; +export type DataArtifactRegistry = { + data: + | DataAwsEcr + | DataGcpArtifactRegistry + | DataAzureContainerRegistry + | DataLocal11; + resourceType: "artifact-registry"; }; -export const Reason45 = { +export const GetResourceDeploymentDetailReason51 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason45 = ClosedEnum; +export type GetResourceDeploymentDetailReason51 = ClosedEnum< + typeof GetResourceDeploymentDetailReason51 +>; -export const CollectionIssueSeverity45 = { +export const CollectionIssueSeverity51 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity45 = ClosedEnum< - typeof CollectionIssueSeverity45 +export type CollectionIssueSeverity51 = ClosedEnum< + typeof CollectionIssueSeverity51 >; -export type CollectionIssue45 = { +export type CollectionIssue51 = { message: string; - reason: Reason45; - severity: CollectionIssueSeverity45; + reason: GetResourceDeploymentDetailReason51; + severity: CollectionIssueSeverity51; source: string; }; -export const Health45 = { +export const Health51 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health45 = ClosedEnum; +export type Health51 = ClosedEnum; -export const Lifecycle45 = { +export const Lifecycle51 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -1712,58 +2063,65 @@ export const Lifecycle45 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle45 = ClosedEnum; +export type Lifecycle51 = ClosedEnum; -export type DataStatus45 = { - collectionIssues: Array; - health: Health45; - lifecycle: Lifecycle45; +export type DataStatus51 = { + collectionIssues: Array; + health: Health51; + lifecycle: Lifecycle51; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataLocal10 = { - configured: boolean; - identity: string; - status: DataStatus45; - backend: "local"; +export type DataAzureManagedIdentity2 = { + ficName?: string | null | undefined; + roleAssignmentIds: Array; + roleDefinitionId?: string | null | undefined; + status: DataStatus51; + tenantId?: string | null | undefined; + uamiClientId?: string | null | undefined; + uamiPrincipalId?: string | null | undefined; + uamiResourceId?: string | null | undefined; + backend: "azureManagedIdentity"; }; -export const Reason44 = { +export const GetResourceDeploymentDetailReason50 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason44 = ClosedEnum; +export type GetResourceDeploymentDetailReason50 = ClosedEnum< + typeof GetResourceDeploymentDetailReason50 +>; -export const CollectionIssueSeverity44 = { +export const CollectionIssueSeverity50 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity44 = ClosedEnum< - typeof CollectionIssueSeverity44 +export type CollectionIssueSeverity50 = ClosedEnum< + typeof CollectionIssueSeverity50 >; -export type CollectionIssue44 = { +export type CollectionIssue50 = { message: string; - reason: Reason44; - severity: CollectionIssueSeverity44; + reason: GetResourceDeploymentDetailReason50; + severity: CollectionIssueSeverity50; source: string; }; -export const Health44 = { +export const Health50 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health44 = ClosedEnum; +export type Health50 = ClosedEnum; -export const Lifecycle44 = { +export const Lifecycle50 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -1775,71 +2133,62 @@ export const Lifecycle44 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle44 = ClosedEnum; +export type Lifecycle50 = ClosedEnum; -export type DataStatus44 = { - collectionIssues: Array; - health: Health44; - lifecycle: Lifecycle44; +export type DataStatus50 = { + collectionIssues: Array; + health: Health50; + lifecycle: Lifecycle50; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataAzureManagedIdentity1 = { - clientId?: string | null | undefined; - customRoleDefinitionCount: number; - customRoleDefinitionIds: Array; - isolationScope?: string | null | undefined; - location: string; - managedTagCount: number; - name: string; - principalId?: string | null | undefined; - resourceGroup: string; - resourceId: string; - roleAssignmentCount: number; - roleAssignmentIds: Array; - stackPermissionsApplied: boolean; - status: DataStatus44; - tenantId?: string | null | undefined; - type?: string | null | undefined; - backend: "azureManagedIdentity"; +export type DataGcpServiceAccount2 = { + impersonationGranted: boolean; + roleBound: boolean; + serviceAccountEmail?: string | null | undefined; + serviceAccountUniqueId?: string | null | undefined; + status: DataStatus50; + backend: "gcpServiceAccount"; }; -export const Reason43 = { +export const GetResourceDeploymentDetailReason49 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason43 = ClosedEnum; +export type GetResourceDeploymentDetailReason49 = ClosedEnum< + typeof GetResourceDeploymentDetailReason49 +>; -export const CollectionIssueSeverity43 = { +export const CollectionIssueSeverity49 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity43 = ClosedEnum< - typeof CollectionIssueSeverity43 +export type CollectionIssueSeverity49 = ClosedEnum< + typeof CollectionIssueSeverity49 >; -export type CollectionIssue43 = { +export type CollectionIssue49 = { message: string; - reason: Reason43; - severity: CollectionIssueSeverity43; + reason: GetResourceDeploymentDetailReason49; + severity: CollectionIssueSeverity49; source: string; }; -export const Health43 = { +export const Health49 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health43 = ClosedEnum; +export type Health49 = ClosedEnum; -export const Lifecycle43 = { +export const Lifecycle49 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -1851,69 +2200,71 @@ export const Lifecycle43 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle43 = ClosedEnum; +export type Lifecycle49 = ClosedEnum; -export type DataStatus43 = { - collectionIssues: Array; - health: Health43; - lifecycle: Lifecycle43; +export type DataStatus49 = { + collectionIssues: Array; + health: Health49; + lifecycle: Lifecycle49; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataGcpServiceAccount1 = { - description?: string | null | undefined; - disabled?: boolean | null | undefined; - displayName?: string | null | undefined; - email: string; - etag?: string | null | undefined; - name?: string | null | undefined; - oauth2ClientId?: string | null | undefined; - projectBindingCount: number; - projectId?: string | null | undefined; - projectRoles: Array; - serviceAccountBindingCount: number; - serviceAccountRoles: Array; - status: DataStatus43; - uniqueId?: string | null | undefined; - backend: "gcpServiceAccount"; +export type DataAwsIamRole2 = { + managementPermissionsApplied: boolean; + roleArn?: string | null | undefined; + roleName?: string | null | undefined; + status: DataStatus49; + backend: "awsIamRole"; +}; + +export type DataUnion12 = + | DataAwsIamRole2 + | DataGcpServiceAccount2 + | DataAzureManagedIdentity2; + +export type DataRemoteStackManagement = { + data: DataAwsIamRole2 | DataGcpServiceAccount2 | DataAzureManagedIdentity2; + resourceType: "remote-stack-management"; }; -export const Reason42 = { +export const GetResourceDeploymentDetailReason48 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason42 = ClosedEnum; +export type GetResourceDeploymentDetailReason48 = ClosedEnum< + typeof GetResourceDeploymentDetailReason48 +>; -export const CollectionIssueSeverity42 = { +export const CollectionIssueSeverity48 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity42 = ClosedEnum< - typeof CollectionIssueSeverity42 +export type CollectionIssueSeverity48 = ClosedEnum< + typeof CollectionIssueSeverity48 >; -export type CollectionIssue42 = { +export type CollectionIssue48 = { message: string; - reason: Reason42; - severity: CollectionIssueSeverity42; + reason: GetResourceDeploymentDetailReason48; + severity: CollectionIssueSeverity48; source: string; }; -export const Health42 = { +export const Health48 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health42 = ClosedEnum; +export type Health48 = ClosedEnum; -export const Lifecycle42 = { +export const Lifecycle48 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -1925,90 +2276,72 @@ export const Lifecycle42 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle42 = ClosedEnum; +export type Lifecycle48 = ClosedEnum; -export type DataStatus42 = { - collectionIssues: Array; - health: Health42; - lifecycle: Lifecycle42; +export type DataStatus48 = { + collectionIssues: Array; + health: Health48; + lifecycle: Lifecycle48; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataAwsIamRole1 = { - assumeRolePolicyPresent: boolean; - attachedPolicyCount: number; - attachedPolicyNames: Array; - createDate: string; - description?: string | null | undefined; - inlinePolicyCount: number; - inlinePolicyNames: Array; - lastUsedDate?: string | null | undefined; - lastUsedRegion?: string | null | undefined; - managedTagCount: number; - maxSessionDuration?: number | null | undefined; - path: string; - permissionsBoundaryArn?: string | null | undefined; - permissionsBoundaryType?: string | null | undefined; - roleArn: string; - roleId: string; - roleName: string; - stackPermissionsApplied: boolean; - status: DataStatus42; - tagCount: number; - backend: "awsIamRole"; -}; - -export type DataUnion10 = - | DataAwsIamRole1 - | DataGcpServiceAccount1 - | DataAzureManagedIdentity1 - | DataLocal10; - -export type DataServiceAccount = { - data: - | DataAwsIamRole1 - | DataGcpServiceAccount1 - | DataAzureManagedIdentity1 - | DataLocal10; - resourceType: "service-account"; +export type DataAzureVnet = { + applicationGatewaySubnetName?: string | null | undefined; + cidrBlock?: string | null | undefined; + isByoVnet: boolean; + lastByoVnetVerificationErrorCode?: string | null | undefined; + location?: string | null | undefined; + natGatewayId?: string | null | undefined; + nsgId?: string | null | undefined; + privateEndpointSubnetName?: string | null | undefined; + privateSubnetName?: string | null | undefined; + publicIpId?: string | null | undefined; + publicSubnetName?: string | null | undefined; + resourceGroup?: string | null | undefined; + status: DataStatus48; + vnetName?: string | null | undefined; + vnetResourceId?: string | null | undefined; + backend: "azureVnet"; }; -export const Reason41 = { +export const GetResourceDeploymentDetailReason47 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason41 = ClosedEnum; +export type GetResourceDeploymentDetailReason47 = ClosedEnum< + typeof GetResourceDeploymentDetailReason47 +>; -export const CollectionIssueSeverity41 = { +export const CollectionIssueSeverity47 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity41 = ClosedEnum< - typeof CollectionIssueSeverity41 +export type CollectionIssueSeverity47 = ClosedEnum< + typeof CollectionIssueSeverity47 >; -export type CollectionIssue41 = { +export type CollectionIssue47 = { message: string; - reason: Reason41; - severity: CollectionIssueSeverity41; + reason: GetResourceDeploymentDetailReason47; + severity: CollectionIssueSeverity47; source: string; }; -export const Health41 = { +export const Health47 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health41 = ClosedEnum; +export type Health47 = ClosedEnum; -export const Lifecycle41 = { +export const Lifecycle47 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -2020,62 +2353,68 @@ export const Lifecycle41 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle41 = ClosedEnum; +export type Lifecycle47 = ClosedEnum; -export type DataStatus41 = { - collectionIssues: Array; - health: Health41; - lifecycle: Lifecycle41; +export type DataStatus47 = { + collectionIssues: Array; + health: Health47; + lifecycle: Lifecycle47; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataLocal9 = { - isDirectory?: boolean | null | undefined; - modifiedAt?: Date | null | undefined; - path: string; - pathExists: boolean; - readonly?: boolean | null | undefined; - secretMetadataListed: boolean; - status: DataStatus41; - backend: "local"; +export type DataGcpVpc = { + cidrBlock?: string | null | undefined; + cloudNatName?: string | null | undefined; + firewallName?: string | null | undefined; + isByoVpc: boolean; + networkName?: string | null | undefined; + networkSelfLink?: string | null | undefined; + region?: string | null | undefined; + routerName?: string | null | undefined; + status: DataStatus47; + subnetworkName?: string | null | undefined; + subnetworkSelfLink?: string | null | undefined; + backend: "gcpVpc"; }; -export const Reason40 = { +export const GetResourceDeploymentDetailReason46 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason40 = ClosedEnum; +export type GetResourceDeploymentDetailReason46 = ClosedEnum< + typeof GetResourceDeploymentDetailReason46 +>; -export const CollectionIssueSeverity40 = { +export const CollectionIssueSeverity46 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity40 = ClosedEnum< - typeof CollectionIssueSeverity40 +export type CollectionIssueSeverity46 = ClosedEnum< + typeof CollectionIssueSeverity46 >; -export type CollectionIssue40 = { +export type CollectionIssue46 = { message: string; - reason: Reason40; - severity: CollectionIssueSeverity40; + reason: GetResourceDeploymentDetailReason46; + severity: CollectionIssueSeverity46; source: string; }; -export const Health40 = { +export const Health46 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health40 = ClosedEnum; +export type Health46 = ClosedEnum; -export const Lifecycle40 = { +export const Lifecycle46 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -2087,59 +2426,76 @@ export const Lifecycle40 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle40 = ClosedEnum; +export type Lifecycle46 = ClosedEnum; -export type DataStatus40 = { - collectionIssues: Array; - health: Health40; - lifecycle: Lifecycle40; +export type DataStatus46 = { + collectionIssues: Array; + health: Health46; + lifecycle: Lifecycle46; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataKubernetesSecret = { - namespace: string; - prefix: string; - secretMetadataListed: boolean; - status: DataStatus40; - backend: "kubernetesSecret"; +export type DataAwsVpc = { + availabilityZones: Array; + cidrBlock?: string | null | undefined; + internetGatewayId?: string | null | undefined; + isByoVpc: boolean; + natGatewayId?: string | null | undefined; + privateSubnetIds: Array; + publicSubnetIds: Array; + routeTableCount: number; + securityGroupId?: string | null | undefined; + status: DataStatus46; + vpcId?: string | null | undefined; + vpcState?: string | null | undefined; + backend: "awsVpc"; +}; + +export type DataUnion11 = DataAwsVpc | DataGcpVpc | DataAzureVnet; + +export type DataNetwork = { + data: DataAwsVpc | DataGcpVpc | DataAzureVnet; + resourceType: "network"; }; -export const Reason39 = { +export const GetResourceDeploymentDetailReason45 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason39 = ClosedEnum; +export type GetResourceDeploymentDetailReason45 = ClosedEnum< + typeof GetResourceDeploymentDetailReason45 +>; -export const CollectionIssueSeverity39 = { +export const CollectionIssueSeverity45 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity39 = ClosedEnum< - typeof CollectionIssueSeverity39 +export type CollectionIssueSeverity45 = ClosedEnum< + typeof CollectionIssueSeverity45 >; -export type CollectionIssue39 = { +export type CollectionIssue45 = { message: string; - reason: Reason39; - severity: CollectionIssueSeverity39; + reason: GetResourceDeploymentDetailReason45; + severity: CollectionIssueSeverity45; source: string; }; -export const Health39 = { +export const Health45 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health39 = ClosedEnum; +export type Health45 = ClosedEnum; -export const Lifecycle39 = { +export const Lifecycle45 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -2151,72 +2507,60 @@ export const Lifecycle39 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle39 = ClosedEnum; +export type Lifecycle45 = ClosedEnum; -export type DataStatus39 = { - collectionIssues: Array; - health: Health39; - lifecycle: Lifecycle39; +export type DataStatus45 = { + collectionIssues: Array; + health: Health45; + lifecycle: Lifecycle45; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataAzureKeyVault = { - accessPolicyCount: number; - location?: string | null | undefined; - name: string; - privateEndpointConnectionCount: number; - provisioningState?: string | null | undefined; - publicNetworkAccess: string; - purgeProtectionEnabled?: boolean | null | undefined; - rbacAuthorizationEnabled: boolean; - resourceGroup?: string | null | undefined; - resourceId?: string | null | undefined; - secretMetadataListed: boolean; - skuFamily?: string | null | undefined; - skuName?: string | null | undefined; - softDeleteEnabled: boolean; - softDeleteRetentionDays: number; - status: DataStatus39; - vaultUri?: string | null | undefined; - backend: "azureKeyVault"; +export type DataLocal10 = { + configured: boolean; + identity: string; + status: DataStatus45; + backend: "local"; }; -export const Reason38 = { +export const GetResourceDeploymentDetailReason44 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason38 = ClosedEnum; +export type GetResourceDeploymentDetailReason44 = ClosedEnum< + typeof GetResourceDeploymentDetailReason44 +>; -export const CollectionIssueSeverity38 = { +export const CollectionIssueSeverity44 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity38 = ClosedEnum< - typeof CollectionIssueSeverity38 +export type CollectionIssueSeverity44 = ClosedEnum< + typeof CollectionIssueSeverity44 >; -export type CollectionIssue38 = { +export type CollectionIssue44 = { message: string; - reason: Reason38; - severity: CollectionIssueSeverity38; + reason: GetResourceDeploymentDetailReason44; + severity: CollectionIssueSeverity44; source: string; }; -export const Health38 = { +export const Health44 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health38 = ClosedEnum; +export type Health44 = ClosedEnum; -export const Lifecycle38 = { +export const Lifecycle44 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -2228,60 +2572,73 @@ export const Lifecycle38 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle38 = ClosedEnum; +export type Lifecycle44 = ClosedEnum; -export type DataStatus38 = { - collectionIssues: Array; - health: Health38; - lifecycle: Lifecycle38; +export type DataStatus44 = { + collectionIssues: Array; + health: Health44; + lifecycle: Lifecycle44; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataGcpSecretManager = { +export type DataAzureManagedIdentity1 = { + clientId?: string | null | undefined; + customRoleDefinitionCount: number; + customRoleDefinitionIds: Array; + isolationScope?: string | null | undefined; location: string; - prefix: string; - projectId: string; - secretMetadataListed: boolean; - status: DataStatus38; - backend: "gcpSecretManager"; -}; - -export const Reason37 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", + managedTagCount: number; + name: string; + principalId?: string | null | undefined; + resourceGroup: string; + resourceId: string; + roleAssignmentCount: number; + roleAssignmentIds: Array; + stackPermissionsApplied: boolean; + status: DataStatus44; + tenantId?: string | null | undefined; + type?: string | null | undefined; + backend: "azureManagedIdentity"; +}; + +export const GetResourceDeploymentDetailReason43 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason37 = ClosedEnum; +export type GetResourceDeploymentDetailReason43 = ClosedEnum< + typeof GetResourceDeploymentDetailReason43 +>; -export const CollectionIssueSeverity37 = { +export const CollectionIssueSeverity43 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity37 = ClosedEnum< - typeof CollectionIssueSeverity37 +export type CollectionIssueSeverity43 = ClosedEnum< + typeof CollectionIssueSeverity43 >; -export type CollectionIssue37 = { +export type CollectionIssue43 = { message: string; - reason: Reason37; - severity: CollectionIssueSeverity37; + reason: GetResourceDeploymentDetailReason43; + severity: CollectionIssueSeverity43; source: string; }; -export const Health37 = { +export const Health43 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health37 = ClosedEnum; +export type Health43 = ClosedEnum; -export const Lifecycle37 = { +export const Lifecycle43 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -2293,85 +2650,71 @@ export const Lifecycle37 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle37 = ClosedEnum; +export type Lifecycle43 = ClosedEnum; -export type DataStatus37 = { - collectionIssues: Array; - health: Health37; - lifecycle: Lifecycle37; +export type DataStatus43 = { + collectionIssues: Array; + health: Health43; + lifecycle: Lifecycle43; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataAwsParameterStore = { - accountId: string; - hasMoreParameters?: boolean | null | undefined; - latestModifiedAt?: Date | null | undefined; - parameterMetadataSampled: boolean; - prefix: string; - region: string; - sampledAdvancedTierCount?: number | null | undefined; - sampledKmsKeyMetadataPresentCount?: number | null | undefined; - sampledParameterCount?: number | null | undefined; - sampledSecureStringCount?: number | null | undefined; - sampledStringCount?: number | null | undefined; - sampledStringListCount?: number | null | undefined; - status: DataStatus37; - backend: "awsParameterStore"; -}; - -export type DataUnion9 = - | DataAwsParameterStore - | DataGcpSecretManager - | DataAzureKeyVault - | DataKubernetesSecret - | DataLocal9; - -export type DataVault = { - data: - | DataAwsParameterStore - | DataGcpSecretManager - | DataAzureKeyVault - | DataKubernetesSecret - | DataLocal9; - resourceType: "vault"; +export type DataGcpServiceAccount1 = { + description?: string | null | undefined; + disabled?: boolean | null | undefined; + displayName?: string | null | undefined; + email: string; + etag?: string | null | undefined; + name?: string | null | undefined; + oauth2ClientId?: string | null | undefined; + projectBindingCount: number; + projectId?: string | null | undefined; + projectRoles: Array; + serviceAccountBindingCount: number; + serviceAccountRoles: Array; + status: DataStatus43; + uniqueId?: string | null | undefined; + backend: "gcpServiceAccount"; }; -export const Reason36 = { +export const GetResourceDeploymentDetailReason42 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason36 = ClosedEnum; +export type GetResourceDeploymentDetailReason42 = ClosedEnum< + typeof GetResourceDeploymentDetailReason42 +>; -export const CollectionIssueSeverity36 = { +export const CollectionIssueSeverity42 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity36 = ClosedEnum< - typeof CollectionIssueSeverity36 +export type CollectionIssueSeverity42 = ClosedEnum< + typeof CollectionIssueSeverity42 >; -export type CollectionIssue36 = { +export type CollectionIssue42 = { message: string; - reason: Reason36; - severity: CollectionIssueSeverity36; + reason: GetResourceDeploymentDetailReason42; + severity: CollectionIssueSeverity42; source: string; }; -export const Health36 = { +export const Health42 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health36 = ClosedEnum; +export type Health42 = ClosedEnum; -export const Lifecycle36 = { +export const Lifecycle42 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -2383,60 +2726,92 @@ export const Lifecycle36 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle36 = ClosedEnum; +export type Lifecycle42 = ClosedEnum; -export type DataStatus36 = { - collectionIssues: Array; - health: Health36; - lifecycle: Lifecycle36; +export type DataStatus42 = { + collectionIssues: Array; + health: Health42; + lifecycle: Lifecycle42; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataLocal8 = { - name: string; - port?: number | null | undefined; - processRunning: boolean; - status: DataStatus36; - version: string; - backend: "local"; +export type DataAwsIamRole1 = { + assumeRolePolicyPresent: boolean; + attachedPolicyCount: number; + attachedPolicyNames: Array; + createDate: string; + description?: string | null | undefined; + inlinePolicyCount: number; + inlinePolicyNames: Array; + lastUsedDate?: string | null | undefined; + lastUsedRegion?: string | null | undefined; + managedTagCount: number; + maxSessionDuration?: number | null | undefined; + path: string; + permissionsBoundaryArn?: string | null | undefined; + permissionsBoundaryType?: string | null | undefined; + roleArn: string; + roleId: string; + roleName: string; + stackPermissionsApplied: boolean; + status: DataStatus42; + tagCount: number; + backend: "awsIamRole"; +}; + +export type DataUnion10 = + | DataAwsIamRole1 + | DataGcpServiceAccount1 + | DataAzureManagedIdentity1 + | DataLocal10; + +export type DataServiceAccount = { + data: + | DataAwsIamRole1 + | DataGcpServiceAccount1 + | DataAzureManagedIdentity1 + | DataLocal10; + resourceType: "service-account"; }; -export const Reason35 = { +export const GetResourceDeploymentDetailReason41 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason35 = ClosedEnum; +export type GetResourceDeploymentDetailReason41 = ClosedEnum< + typeof GetResourceDeploymentDetailReason41 +>; -export const CollectionIssueSeverity35 = { +export const CollectionIssueSeverity41 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity35 = ClosedEnum< - typeof CollectionIssueSeverity35 +export type CollectionIssueSeverity41 = ClosedEnum< + typeof CollectionIssueSeverity41 >; -export type CollectionIssue35 = { +export type CollectionIssue41 = { message: string; - reason: Reason35; - severity: CollectionIssueSeverity35; + reason: GetResourceDeploymentDetailReason41; + severity: CollectionIssueSeverity41; source: string; }; -export const Health35 = { +export const Health41 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health35 = ClosedEnum; +export type Health41 = ClosedEnum; -export const Lifecycle35 = { +export const Lifecycle41 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -2448,59 +2823,64 @@ export const Lifecycle35 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle35 = ClosedEnum; +export type Lifecycle41 = ClosedEnum; -export type DataStatus35 = { - collectionIssues: Array; - health: Health35; - lifecycle: Lifecycle35; +export type DataStatus41 = { + collectionIssues: Array; + health: Health41; + lifecycle: Lifecycle41; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataFlexibleServer = { - serverName: string; - state?: string | null | undefined; - status: DataStatus35; - version?: string | null | undefined; - backend: "flexibleServer"; +export type DataLocal9 = { + isDirectory?: boolean | null | undefined; + modifiedAt?: Date | null | undefined; + path: string; + pathExists: boolean; + readonly?: boolean | null | undefined; + secretMetadataListed: boolean; + status: DataStatus41; + backend: "local"; }; -export const Reason34 = { +export const GetResourceDeploymentDetailReason40 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason34 = ClosedEnum; +export type GetResourceDeploymentDetailReason40 = ClosedEnum< + typeof GetResourceDeploymentDetailReason40 +>; -export const CollectionIssueSeverity34 = { +export const CollectionIssueSeverity40 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity34 = ClosedEnum< - typeof CollectionIssueSeverity34 +export type CollectionIssueSeverity40 = ClosedEnum< + typeof CollectionIssueSeverity40 >; -export type CollectionIssue34 = { +export type CollectionIssue40 = { message: string; - reason: Reason34; - severity: CollectionIssueSeverity34; + reason: GetResourceDeploymentDetailReason40; + severity: CollectionIssueSeverity40; source: string; }; -export const Health34 = { +export const Health40 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health34 = ClosedEnum; +export type Health40 = ClosedEnum; -export const Lifecycle34 = { +export const Lifecycle40 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -2512,59 +2892,61 @@ export const Lifecycle34 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle34 = ClosedEnum; +export type Lifecycle40 = ClosedEnum; -export type DataStatus34 = { - collectionIssues: Array; - health: Health34; - lifecycle: Lifecycle34; +export type DataStatus40 = { + collectionIssues: Array; + health: Health40; + lifecycle: Lifecycle40; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataCloudSQL = { - databaseVersion?: string | null | undefined; - instanceName: string; - state?: string | null | undefined; - status: DataStatus34; - backend: "cloudSql"; +export type DataKubernetesSecret = { + namespace: string; + prefix: string; + secretMetadataListed: boolean; + status: DataStatus40; + backend: "kubernetesSecret"; }; -export const Reason33 = { +export const GetResourceDeploymentDetailReason39 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason33 = ClosedEnum; +export type GetResourceDeploymentDetailReason39 = ClosedEnum< + typeof GetResourceDeploymentDetailReason39 +>; -export const CollectionIssueSeverity33 = { +export const CollectionIssueSeverity39 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity33 = ClosedEnum< - typeof CollectionIssueSeverity33 +export type CollectionIssueSeverity39 = ClosedEnum< + typeof CollectionIssueSeverity39 >; -export type CollectionIssue33 = { +export type CollectionIssue39 = { message: string; - reason: Reason33; - severity: CollectionIssueSeverity33; + reason: GetResourceDeploymentDetailReason39; + severity: CollectionIssueSeverity39; source: string; }; -export const Health33 = { +export const Health39 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health33 = ClosedEnum; +export type Health39 = ClosedEnum; -export const Lifecycle33 = { +export const Lifecycle39 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -2576,81 +2958,74 @@ export const Lifecycle33 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle33 = ClosedEnum; +export type Lifecycle39 = ClosedEnum; -export type DataStatus33 = { - collectionIssues: Array; - health: Health33; - lifecycle: Lifecycle33; +export type DataStatus39 = { + collectionIssues: Array; + health: Health39; + lifecycle: Lifecycle39; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataAurora = { - clusterIdentifier: string; - endpoint?: string | null | undefined; - engineVersion?: string | null | undefined; - /** - * True when a `minCapacity: 0` instance has not reached 0 ACU over the observation - * - * @remarks - * window — it is silently paying always-on prices (auto-pause verification). - */ - neverPauses: boolean; - /** - * Latest sampled `ServerlessDatabaseCapacity` (ACU). - */ - serverlessCapacity?: number | null | undefined; - status: DataStatus33; - backend: "aurora"; -}; - -export type DataUnion8 = - | DataAurora - | DataCloudSQL - | DataFlexibleServer - | DataLocal8; - -export type DataPostgres = { - data: DataAurora | DataCloudSQL | DataFlexibleServer | DataLocal8; - resourceType: "postgres"; +export type DataAzureKeyVault1 = { + accessPolicyCount: number; + location?: string | null | undefined; + name: string; + privateEndpointConnectionCount: number; + provisioningState?: string | null | undefined; + publicNetworkAccess: string; + purgeProtectionEnabled?: boolean | null | undefined; + rbacAuthorizationEnabled: boolean; + resourceGroup?: string | null | undefined; + resourceId?: string | null | undefined; + secretMetadataListed: boolean; + skuFamily?: string | null | undefined; + skuName?: string | null | undefined; + softDeleteEnabled: boolean; + softDeleteRetentionDays: number; + status: DataStatus39; + vaultUri?: string | null | undefined; + backend: "azureKeyVault"; }; -export const Reason32 = { +export const GetResourceDeploymentDetailReason38 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason32 = ClosedEnum; +export type GetResourceDeploymentDetailReason38 = ClosedEnum< + typeof GetResourceDeploymentDetailReason38 +>; -export const CollectionIssueSeverity32 = { +export const CollectionIssueSeverity38 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity32 = ClosedEnum< - typeof CollectionIssueSeverity32 +export type CollectionIssueSeverity38 = ClosedEnum< + typeof CollectionIssueSeverity38 >; -export type CollectionIssue32 = { +export type CollectionIssue38 = { message: string; - reason: Reason32; - severity: CollectionIssueSeverity32; + reason: GetResourceDeploymentDetailReason38; + severity: CollectionIssueSeverity38; source: string; }; -export const Health32 = { +export const Health38 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health32 = ClosedEnum; +export type Health38 = ClosedEnum; -export const Lifecycle32 = { +export const Lifecycle38 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -2662,61 +3037,62 @@ export const Lifecycle32 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle32 = ClosedEnum; +export type Lifecycle38 = ClosedEnum; -export type DataStatus32 = { - collectionIssues: Array; - health: Health32; - lifecycle: Lifecycle32; +export type DataStatus38 = { + collectionIssues: Array; + health: Health38; + lifecycle: Lifecycle38; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataLocal7 = { - cloudMetadataSupported: boolean; - isDirectory?: boolean | null | undefined; - name: string; - path: string; - pathExists: boolean; - status: DataStatus32; - backend: "local"; +export type DataGcpSecretManager = { + location: string; + prefix: string; + projectId: string; + secretMetadataListed: boolean; + status: DataStatus38; + backend: "gcpSecretManager"; }; -export const Reason31 = { +export const GetResourceDeploymentDetailReason37 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason31 = ClosedEnum; +export type GetResourceDeploymentDetailReason37 = ClosedEnum< + typeof GetResourceDeploymentDetailReason37 +>; -export const CollectionIssueSeverity31 = { +export const CollectionIssueSeverity37 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity31 = ClosedEnum< - typeof CollectionIssueSeverity31 +export type CollectionIssueSeverity37 = ClosedEnum< + typeof CollectionIssueSeverity37 >; -export type CollectionIssue31 = { +export type CollectionIssue37 = { message: string; - reason: Reason31; - severity: CollectionIssueSeverity31; + reason: GetResourceDeploymentDetailReason37; + severity: CollectionIssueSeverity37; source: string; }; -export const Health31 = { +export const Health37 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health31 = ClosedEnum; +export type Health37 = ClosedEnum; -export const Lifecycle31 = { +export const Lifecycle37 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -2728,67 +3104,87 @@ export const Lifecycle31 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle31 = ClosedEnum; +export type Lifecycle37 = ClosedEnum; -export type DataStatus31 = { - collectionIssues: Array; - health: Health31; - lifecycle: Lifecycle31; +export type DataStatus37 = { + collectionIssues: Array; + health: Health37; + lifecycle: Lifecycle37; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataAzureTable = { - endpoint?: string | null | undefined; - resourceGroup?: string | null | undefined; - signedIdentifierCount?: number | null | undefined; - status: DataStatus31; - storageAccountKind?: string | null | undefined; - storageAccountLocation?: string | null | undefined; - storageAccountName: string; - storageAccountPrimaryStatus?: string | null | undefined; - storageAccountProvisioningState?: string | null | undefined; - storageAccountResourceId?: string | null | undefined; - tableExists: boolean; - tableName: string; - backend: "azureTable"; +export type DataAwsParameterStore = { + accountId: string; + hasMoreParameters?: boolean | null | undefined; + latestModifiedAt?: Date | null | undefined; + parameterMetadataSampled: boolean; + prefix: string; + region: string; + sampledAdvancedTierCount?: number | null | undefined; + sampledKmsKeyMetadataPresentCount?: number | null | undefined; + sampledParameterCount?: number | null | undefined; + sampledSecureStringCount?: number | null | undefined; + sampledStringCount?: number | null | undefined; + sampledStringListCount?: number | null | undefined; + status: DataStatus37; + backend: "awsParameterStore"; +}; + +export type DataUnion9 = + | DataAwsParameterStore + | DataGcpSecretManager + | DataAzureKeyVault1 + | DataKubernetesSecret + | DataLocal9; + +export type DataVault = { + data: + | DataAwsParameterStore + | DataGcpSecretManager + | DataAzureKeyVault1 + | DataKubernetesSecret + | DataLocal9; + resourceType: "vault"; }; -export const Reason30 = { +export const GetResourceDeploymentDetailReason36 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason30 = ClosedEnum; +export type GetResourceDeploymentDetailReason36 = ClosedEnum< + typeof GetResourceDeploymentDetailReason36 +>; -export const CollectionIssueSeverity30 = { +export const CollectionIssueSeverity36 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity30 = ClosedEnum< - typeof CollectionIssueSeverity30 +export type CollectionIssueSeverity36 = ClosedEnum< + typeof CollectionIssueSeverity36 >; -export type CollectionIssue30 = { +export type CollectionIssue36 = { message: string; - reason: Reason30; - severity: CollectionIssueSeverity30; + reason: GetResourceDeploymentDetailReason36; + severity: CollectionIssueSeverity36; source: string; }; -export const Health30 = { +export const Health36 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health30 = ClosedEnum; +export type Health36 = ClosedEnum; -export const Lifecycle30 = { +export const Lifecycle36 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -2800,78 +3196,65 @@ export const Lifecycle30 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle30 = ClosedEnum; +export type Lifecycle36 = ClosedEnum; -export type DataStatus30 = { - collectionIssues: Array; - health: Health30; - lifecycle: Lifecycle30; +export type DataStatus36 = { + collectionIssues: Array; + health: Health36; + lifecycle: Lifecycle36; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataGcpFirestore = { - appEngineIntegrationMode?: string | null | undefined; - cmekEnabled: boolean; - concurrencyMode?: string | null | undefined; - createTime?: string | null | undefined; - databaseEdition?: string | null | undefined; - databaseName: string; - databaseType?: string | null | undefined; - deleteProtectionState?: string | null | undefined; - deleteTime?: string | null | undefined; - earliestVersionTime?: string | null | undefined; - endpoint?: string | null | undefined; - locationId?: string | null | undefined; - pointInTimeRecoveryEnablement?: string | null | undefined; - projectId?: string | null | undefined; - sourceInfoPresent: boolean; - status: DataStatus30; - updateTime?: string | null | undefined; - versionRetentionPeriod?: string | null | undefined; - backend: "gcpFirestore"; -}; - -export type KeySchema = { - attributeName: string; - keyType: string; +/** + * Local embedded Postgres backend. + */ +export type DataLocal8 = { + name: string; + port?: number | null | undefined; + processRunning: boolean; + status: DataStatus36; + version: string; + backend: "local"; }; -export const Reason29 = { +export const GetResourceDeploymentDetailReason35 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason29 = ClosedEnum; +export type GetResourceDeploymentDetailReason35 = ClosedEnum< + typeof GetResourceDeploymentDetailReason35 +>; -export const CollectionIssueSeverity29 = { +export const CollectionIssueSeverity35 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity29 = ClosedEnum< - typeof CollectionIssueSeverity29 +export type CollectionIssueSeverity35 = ClosedEnum< + typeof CollectionIssueSeverity35 >; -export type CollectionIssue29 = { +export type CollectionIssue35 = { message: string; - reason: Reason29; - severity: CollectionIssueSeverity29; + reason: GetResourceDeploymentDetailReason35; + severity: CollectionIssueSeverity35; source: string; }; -export const Health29 = { +export const Health35 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health29 = ClosedEnum; +export type Health35 = ClosedEnum; -export const Lifecycle29 = { +export const Lifecycle35 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -2883,87 +3266,64 @@ export const Lifecycle29 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle29 = ClosedEnum; +export type Lifecycle35 = ClosedEnum; -export type DataStatus29 = { - collectionIssues: Array; - health: Health29; - lifecycle: Lifecycle29; - message?: string | null | undefined; +export type DataStatus35 = { + collectionIssues: Array; + health: Health35; + lifecycle: Lifecycle35; + message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataAwsDynamoDb = { - billingMode?: string | null | undefined; - deletionProtectionEnabled?: boolean | null | undefined; - globalSecondaryIndexCount?: number | null | undefined; - itemCount?: number | null | undefined; - keySchema: Array; - localSecondaryIndexCount?: number | null | undefined; - name: string; - region?: string | null | undefined; - replicaCount?: number | null | undefined; - restoreInProgress?: boolean | null | undefined; - sseStatus?: string | null | undefined; - sseType?: string | null | undefined; - status: DataStatus29; - streamEnabled?: boolean | null | undefined; - streamViewType?: string | null | undefined; - tableArn?: string | null | undefined; - tableClass?: string | null | undefined; - tableSizeBytes?: number | null | undefined; - tableStatus?: string | null | undefined; - ttlAttributeName?: string | null | undefined; - ttlStatus?: string | null | undefined; - backend: "awsDynamoDb"; -}; - -export type DataUnion7 = - | DataAwsDynamoDb - | DataGcpFirestore - | DataAzureTable - | DataLocal7; - -export type DataKv = { - data: DataAwsDynamoDb | DataGcpFirestore | DataAzureTable | DataLocal7; - resourceType: "kv"; +/** + * Azure Flexible Server backend. + */ +export type DataFlexibleServer = { + serverName: string; + state?: string | null | undefined; + status: DataStatus35; + version?: string | null | undefined; + backend: "flexibleServer"; }; -export const Reason28 = { +export const GetResourceDeploymentDetailReason34 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason28 = ClosedEnum; +export type GetResourceDeploymentDetailReason34 = ClosedEnum< + typeof GetResourceDeploymentDetailReason34 +>; -export const CollectionIssueSeverity28 = { +export const CollectionIssueSeverity34 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity28 = ClosedEnum< - typeof CollectionIssueSeverity28 +export type CollectionIssueSeverity34 = ClosedEnum< + typeof CollectionIssueSeverity34 >; -export type CollectionIssue28 = { +export type CollectionIssue34 = { message: string; - reason: Reason28; - severity: CollectionIssueSeverity28; + reason: GetResourceDeploymentDetailReason34; + severity: CollectionIssueSeverity34; source: string; }; -export const Health28 = { +export const Health34 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health28 = ClosedEnum; +export type Health34 = ClosedEnum; -export const Lifecycle28 = { +export const Lifecycle34 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -2975,59 +3335,64 @@ export const Lifecycle28 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle28 = ClosedEnum; +export type Lifecycle34 = ClosedEnum; -export type DataStatus28 = { - collectionIssues: Array; - health: Health28; - lifecycle: Lifecycle28; +export type DataStatus34 = { + collectionIssues: Array; + health: Health34; + lifecycle: Lifecycle34; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataLocal6 = { - name: string; - path?: string | null | undefined; - serviceStatus?: string | null | undefined; - status: DataStatus28; - backend: "local"; +/** + * GCP Cloud SQL backend. + */ +export type DataCloudSQL = { + databaseVersion?: string | null | undefined; + instanceName: string; + state?: string | null | undefined; + status: DataStatus34; + backend: "cloudSql"; }; -export const Reason27 = { +export const GetResourceDeploymentDetailReason33 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason27 = ClosedEnum; +export type GetResourceDeploymentDetailReason33 = ClosedEnum< + typeof GetResourceDeploymentDetailReason33 +>; -export const CollectionIssueSeverity27 = { +export const CollectionIssueSeverity33 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity27 = ClosedEnum< - typeof CollectionIssueSeverity27 +export type CollectionIssueSeverity33 = ClosedEnum< + typeof CollectionIssueSeverity33 >; -export type CollectionIssue27 = { +export type CollectionIssue33 = { message: string; - reason: Reason27; - severity: CollectionIssueSeverity27; + reason: GetResourceDeploymentDetailReason33; + severity: CollectionIssueSeverity33; source: string; }; -export const Health27 = { +export const Health33 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health27 = ClosedEnum; +export type Health33 = ClosedEnum; -export const Lifecycle27 = { +export const Lifecycle33 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -3039,87 +3404,86 @@ export const Lifecycle27 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle27 = ClosedEnum; +export type Lifecycle33 = ClosedEnum; -export type DataStatus27 = { - collectionIssues: Array; - health: Health27; - lifecycle: Lifecycle27; +export type DataStatus33 = { + collectionIssues: Array; + health: Health33; + lifecycle: Lifecycle33; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataAzureServiceBus = { - accessedAt?: string | null | undefined; - activeMessageCount?: number | null | undefined; - autoDeleteOnIdle?: string | null | undefined; - createdAt?: string | null | undefined; - deadLetterMessageCount?: number | null | undefined; - deadLetteringOnMessageExpiration?: boolean | null | undefined; - defaultMessageTimeToLive?: string | null | undefined; - duplicateDetectionHistoryTimeWindow?: string | null | undefined; - enableBatchedOperations?: boolean | null | undefined; - enableExpress?: boolean | null | undefined; - enablePartitioning?: boolean | null | undefined; +/** + * AWS Aurora Serverless v2 backend. + */ +export type DataAurora = { + clusterIdentifier: string; endpoint?: string | null | undefined; - forwardDeadLetteredMessagesTo?: string | null | undefined; - forwardTo?: string | null | undefined; - lockDuration?: string | null | undefined; - maxDeliveryCount?: number | null | undefined; - maxMessageSizeInKilobytes?: number | null | undefined; - maxSizeInMegabytes?: number | null | undefined; - messageCount?: number | null | undefined; - name: string; - namespaceName: string; - queueStatus?: string | null | undefined; - requiresDuplicateDetection?: boolean | null | undefined; - requiresSession?: boolean | null | undefined; - resourceGroup?: string | null | undefined; - resourceId?: string | null | undefined; - scheduledMessageCount?: number | null | undefined; - sizeInBytes?: number | null | undefined; - status: DataStatus27; - transferDeadLetterMessageCount?: number | null | undefined; - transferMessageCount?: number | null | undefined; - updatedAt?: string | null | undefined; - backend: "azureServiceBus"; + engineVersion?: string | null | undefined; + /** + * True when a `minCapacity: 0` instance has not reached 0 ACU over the observation + * + * @remarks + * window — it is silently paying always-on prices (auto-pause verification). + */ + neverPauses: boolean; + /** + * Latest sampled `ServerlessDatabaseCapacity` (ACU). + */ + serverlessCapacity?: number | null | undefined; + status: DataStatus33; + backend: "aurora"; +}; + +export type DataUnion8 = + | DataAurora + | DataCloudSQL + | DataFlexibleServer + | DataLocal8; + +export type DataPostgres = { + data: DataAurora | DataCloudSQL | DataFlexibleServer | DataLocal8; + resourceType: "postgres"; }; -export const Reason26 = { +export const GetResourceDeploymentDetailReason32 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason26 = ClosedEnum; +export type GetResourceDeploymentDetailReason32 = ClosedEnum< + typeof GetResourceDeploymentDetailReason32 +>; -export const CollectionIssueSeverity26 = { +export const CollectionIssueSeverity32 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity26 = ClosedEnum< - typeof CollectionIssueSeverity26 +export type CollectionIssueSeverity32 = ClosedEnum< + typeof CollectionIssueSeverity32 >; -export type CollectionIssue26 = { +export type CollectionIssue32 = { message: string; - reason: Reason26; - severity: CollectionIssueSeverity26; + reason: GetResourceDeploymentDetailReason32; + severity: CollectionIssueSeverity32; source: string; }; -export const Health26 = { +export const Health32 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health26 = ClosedEnum; +export type Health32 = ClosedEnum; -export const Lifecycle26 = { +export const Lifecycle32 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -3131,89 +3495,63 @@ export const Lifecycle26 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle26 = ClosedEnum; +export type Lifecycle32 = ClosedEnum; -export type DataStatus26 = { - collectionIssues: Array; - health: Health26; - lifecycle: Lifecycle26; +export type DataStatus32 = { + collectionIssues: Array; + health: Health32; + lifecycle: Lifecycle32; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataGcpPubSub = { - endpoint?: string | null | undefined; - kmsKeyName?: string | null | undefined; - messageStorageAllowedPersistenceRegions: Array; - messageStorageEnforceInTransit?: boolean | null | undefined; - projectId?: string | null | undefined; - schemaEncoding?: string | null | undefined; - schemaFirstRevisionId?: string | null | undefined; - schemaLastRevisionId?: string | null | undefined; - schemaName?: string | null | undefined; - status: DataStatus26; - subscriptionAckDeadlineSeconds?: number | null | undefined; - subscriptionDeadLetterMaxDeliveryAttempts?: number | null | undefined; - subscriptionDeadLetterTopic?: string | null | undefined; - subscriptionDetached?: boolean | null | undefined; - subscriptionEnableMessageOrdering?: boolean | null | undefined; - subscriptionFilter?: string | null | undefined; - subscriptionFullName?: string | null | undefined; - subscriptionLabels: { [k: string]: string }; - subscriptionMessageRetentionDuration?: string | null | undefined; - subscriptionName?: string | null | undefined; - subscriptionPushAttributes: { [k: string]: string }; - subscriptionPushConfigPresent?: boolean | null | undefined; - subscriptionPushEndpoint?: string | null | undefined; - subscriptionPushNoWrapperWriteMetadata?: boolean | null | undefined; - subscriptionPushOidcAudience?: string | null | undefined; - subscriptionPushOidcServiceAccountEmail?: string | null | undefined; - subscriptionPushPubsubWrapperWriteMetadata?: boolean | null | undefined; - subscriptionRetainAckedMessages?: boolean | null | undefined; - subscriptionState?: string | null | undefined; - topicFullName?: string | null | undefined; - topicLabels: { [k: string]: string }; - topicMessageRetentionDuration?: string | null | undefined; - topicName: string; - topicState?: string | null | undefined; - backend: "gcpPubSub"; +export type DataLocal7 = { + cloudMetadataSupported: boolean; + isDirectory?: boolean | null | undefined; + name: string; + path: string; + pathExists: boolean; + status: DataStatus32; + backend: "local"; }; -export const Reason25 = { +export const GetResourceDeploymentDetailReason31 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason25 = ClosedEnum; +export type GetResourceDeploymentDetailReason31 = ClosedEnum< + typeof GetResourceDeploymentDetailReason31 +>; -export const CollectionIssueSeverity25 = { +export const CollectionIssueSeverity31 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity25 = ClosedEnum< - typeof CollectionIssueSeverity25 +export type CollectionIssueSeverity31 = ClosedEnum< + typeof CollectionIssueSeverity31 >; -export type CollectionIssue25 = { +export type CollectionIssue31 = { message: string; - reason: Reason25; - severity: CollectionIssueSeverity25; + reason: GetResourceDeploymentDetailReason31; + severity: CollectionIssueSeverity31; source: string; }; -export const Health25 = { +export const Health31 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health25 = ClosedEnum; +export type Health31 = ClosedEnum; -export const Lifecycle25 = { +export const Lifecycle31 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -3225,310 +3563,248 @@ export const Lifecycle25 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle25 = ClosedEnum; +export type Lifecycle31 = ClosedEnum; -export type DataStatus25 = { - collectionIssues: Array; - health: Health25; - lifecycle: Lifecycle25; +export type DataStatus31 = { + collectionIssues: Array; + health: Health31; + lifecycle: Lifecycle31; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataAwsSqs = { - approximateCounts: boolean; - approximateDelayedMessages?: number | null | undefined; - approximateInFlightMessages?: number | null | undefined; - approximateVisibleMessages?: number | null | undefined; - contentBasedDeduplication?: boolean | null | undefined; - deduplicationScope?: string | null | undefined; - delaySeconds?: number | null | undefined; - fifoQueue?: boolean | null | undefined; - fifoThroughputLimit?: string | null | undefined; - kmsDataKeyReusePeriodSeconds?: number | null | undefined; - kmsMasterKeyId?: string | null | undefined; - maximumMessageSize?: number | null | undefined; - messageRetentionPeriodSeconds?: number | null | undefined; - name: string; - queueArn?: string | null | undefined; - queueUrl?: string | null | undefined; - receiveMessageWaitTimeSeconds?: number | null | undefined; - redriveAllowPolicy?: string | null | undefined; - redrivePolicy?: string | null | undefined; - region?: string | null | undefined; - sqsManagedSseEnabled?: boolean | null | undefined; - sseEnabled?: boolean | null | undefined; - status: DataStatus25; - visibilityTimeoutSeconds?: number | null | undefined; - backend: "awsSqs"; +export type DataAzureTable = { + endpoint?: string | null | undefined; + resourceGroup?: string | null | undefined; + signedIdentifierCount?: number | null | undefined; + status: DataStatus31; + storageAccountKind?: string | null | undefined; + storageAccountLocation?: string | null | undefined; + storageAccountName: string; + storageAccountPrimaryStatus?: string | null | undefined; + storageAccountProvisioningState?: string | null | undefined; + storageAccountResourceId?: string | null | undefined; + tableExists: boolean; + tableName: string; + backend: "azureTable"; }; -export type DataUnion6 = - | DataAwsSqs - | DataGcpPubSub - | DataAzureServiceBus - | DataLocal6; - -export type DataQueue = { - data: DataAwsSqs | DataGcpPubSub | DataAzureServiceBus | DataLocal6; - resourceType: "queue"; -}; +export const GetResourceDeploymentDetailReason30 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type GetResourceDeploymentDetailReason30 = ClosedEnum< + typeof GetResourceDeploymentDetailReason30 +>; -export const CpuUnit11 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", +export const CollectionIssueSeverity30 = { + Info: "info", + Warning: "warning", + Error: "error", } as const; -export type CpuUnit11 = ClosedEnum; +export type CollectionIssueSeverity30 = ClosedEnum< + typeof CollectionIssueSeverity30 +>; -export type Cpu11 = { - unit: CpuUnit11; - value: number; +export type CollectionIssue30 = { + message: string; + reason: GetResourceDeploymentDetailReason30; + severity: CollectionIssueSeverity30; + source: string; }; -export type CpuUnion11 = Cpu11 | any; - -export type InvolvedObject9 = { - apiVersion?: string | null | undefined; - fieldPath?: string | null | undefined; - kind?: string | null | undefined; - name?: string | null | undefined; - namespace?: string | null | undefined; - resourceVersion?: string | null | undefined; - uid?: string | null | undefined; -}; +export const Health30 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health30 = ClosedEnum; -export type InvolvedObjectUnion9 = InvolvedObject9 | any; +export const Lifecycle30 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle30 = ClosedEnum; -export type GetResourceDeploymentDetailSource9 = { - component?: string | null | undefined; - host?: string | null | undefined; +export type DataStatus30 = { + collectionIssues: Array; + health: Health30; + lifecycle: Lifecycle30; + message?: string | null | undefined; + partial: boolean; + stale: boolean; }; -export type SourceUnion9 = GetResourceDeploymentDetailSource9 | any; - -export type Event12 = { - count?: number | null | undefined; - eventTime?: Date | null | undefined; - firstTimestamp?: Date | null | undefined; - involvedObject?: InvolvedObject9 | any | null | undefined; - lastTimestamp?: Date | null | undefined; - message: string; - raw?: any | null | undefined; - reason: string; - source?: GetResourceDeploymentDetailSource9 | any | null | undefined; - type?: string | null | undefined; +export type DataGcpFirestore = { + appEngineIntegrationMode?: string | null | undefined; + cmekEnabled: boolean; + concurrencyMode?: string | null | undefined; + createTime?: string | null | undefined; + databaseEdition?: string | null | undefined; + databaseName: string; + databaseType?: string | null | undefined; + deleteProtectionState?: string | null | undefined; + deleteTime?: string | null | undefined; + earliestVersionTime?: string | null | undefined; + endpoint?: string | null | undefined; + locationId?: string | null | undefined; + pointInTimeRecoveryEnablement?: string | null | undefined; + projectId?: string | null | undefined; + sourceInfoPresent: boolean; + status: DataStatus30; + updateTime?: string | null | undefined; + versionRetentionPeriod?: string | null | undefined; + backend: "gcpFirestore"; }; -export const MemoryUnit11 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryUnit11 = ClosedEnum; - -export type Memory11 = { - unit: MemoryUnit11; - value: number; +export type KeySchema = { + attributeName: string; + keyType: string; }; -export type MemoryUnion11 = Memory11 | any; - -export type NodeCounts = { - current?: number | null | undefined; - desired?: number | null | undefined; - ready?: number | null | undefined; -}; +export const GetResourceDeploymentDetailReason29 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type GetResourceDeploymentDetailReason29 = ClosedEnum< + typeof GetResourceDeploymentDetailReason29 +>; -export const CpuAllocatableUnit = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", +export const CollectionIssueSeverity29 = { + Info: "info", + Warning: "warning", + Error: "error", } as const; -export type CpuAllocatableUnit = ClosedEnum; +export type CollectionIssueSeverity29 = ClosedEnum< + typeof CollectionIssueSeverity29 +>; -export type CpuAllocatable = { - unit: CpuAllocatableUnit; - value: number; +export type CollectionIssue29 = { + message: string; + reason: GetResourceDeploymentDetailReason29; + severity: CollectionIssueSeverity29; + source: string; }; -export type AllocatableCpuUnion = CpuAllocatable | any; - -export const MemoryAllocatableUnit = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", +export const Health29 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", } as const; -export type MemoryAllocatableUnit = ClosedEnum; +export type Health29 = ClosedEnum; -export type MemoryAllocatable = { - unit: MemoryAllocatableUnit; - value: number; -}; +export const Lifecycle29 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle29 = ClosedEnum; -export type AllocatableMemoryUnion = MemoryAllocatable | any; - -export type Allocatable = { - cpu?: CpuAllocatable | any | null | undefined; - memory?: MemoryAllocatable | any | null | undefined; - pods?: number | null | undefined; -}; - -export const CpuCapacityUnit = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuCapacityUnit = ClosedEnum; - -export type CpuCapacity = { - unit: CpuCapacityUnit; - value: number; -}; - -export type CapacityCpuUnion = CpuCapacity | any; - -export const MemoryCapacityUnit = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryCapacityUnit = ClosedEnum; - -export type MemoryCapacity = { - unit: MemoryCapacityUnit; - value: number; -}; - -export type CapacityMemoryUnion = MemoryCapacity | any; - -export type Capacity = { - cpu?: CpuCapacity | any | null | undefined; - memory?: MemoryCapacity | any | null | undefined; - pods?: number | null | undefined; -}; - -export type NodeStatusCondition = { +export type DataStatus29 = { + collectionIssues: Array; + health: Health29; + lifecycle: Lifecycle29; message?: string | null | undefined; - reason?: string | null | undefined; - status: string; - type: string; -}; - -export const UsageCpuUnit = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type UsageCpuUnit = ClosedEnum; - -export type UsageCpu = { - unit: UsageCpuUnit; - value: number; -}; - -export type UsageCpuUnion = UsageCpu | any; - -export const UsageMemoryUnit = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type UsageMemoryUnit = ClosedEnum; - -export type UsageMemory = { - unit: UsageMemoryUnit; - value: number; -}; - -export type UsageMemoryUnion = UsageMemory | any; - -export type Usage = { - cpu?: UsageCpu | any | null | undefined; - memory?: UsageMemory | any | null | undefined; + partial: boolean; + stale: boolean; }; -export type UsageUnion = Usage | any; - -export type NodeStatus = { - allocatable: Allocatable; - capacity: Capacity; - conditions?: Array | undefined; - containerRuntimeVersion?: string | null | undefined; - kubeletVersion?: string | null | undefined; - labels: { [k: string]: string }; +export type DataAwsDynamoDb = { + billingMode?: string | null | undefined; + deletionProtectionEnabled?: boolean | null | undefined; + globalSecondaryIndexCount?: number | null | undefined; + itemCount?: number | null | undefined; + keySchema: Array; + localSecondaryIndexCount?: number | null | undefined; name: string; - ready: boolean; - roles: Array; - uid?: string | null | undefined; - usage?: Usage | any | null | undefined; + region?: string | null | undefined; + replicaCount?: number | null | undefined; + restoreInProgress?: boolean | null | undefined; + sseStatus?: string | null | undefined; + sseType?: string | null | undefined; + status: DataStatus29; + streamEnabled?: boolean | null | undefined; + streamViewType?: string | null | undefined; + tableArn?: string | null | undefined; + tableClass?: string | null | undefined; + tableSizeBytes?: number | null | undefined; + tableStatus?: string | null | undefined; + ttlAttributeName?: string | null | undefined; + ttlStatus?: string | null | undefined; + backend: "awsDynamoDb"; }; -export type PodCounts = { - current?: number | null | undefined; - desired?: number | null | undefined; - ready?: number | null | undefined; +export type DataUnion7 = + | DataAwsDynamoDb + | DataGcpFirestore + | DataAzureTable + | DataLocal7; + +export type DataKv = { + data: DataAwsDynamoDb | DataGcpFirestore | DataAzureTable | DataLocal7; + resourceType: "kv"; }; -export const Reason24 = { +export const GetResourceDeploymentDetailReason28 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason24 = ClosedEnum; +export type GetResourceDeploymentDetailReason28 = ClosedEnum< + typeof GetResourceDeploymentDetailReason28 +>; -export const CollectionIssueSeverity24 = { +export const CollectionIssueSeverity28 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity24 = ClosedEnum< - typeof CollectionIssueSeverity24 +export type CollectionIssueSeverity28 = ClosedEnum< + typeof CollectionIssueSeverity28 >; -export type CollectionIssue24 = { +export type CollectionIssue28 = { message: string; - reason: Reason24; - severity: CollectionIssueSeverity24; + reason: GetResourceDeploymentDetailReason28; + severity: CollectionIssueSeverity28; source: string; }; -export const Health24 = { +export const Health28 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health24 = ClosedEnum; +export type Health28 = ClosedEnum; -export const Lifecycle24 = { +export const Lifecycle28 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -3540,76 +3816,61 @@ export const Lifecycle24 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle24 = ClosedEnum; +export type Lifecycle28 = ClosedEnum; -export type DataStatus24 = { - collectionIssues: Array; - health: Health24; - lifecycle: Lifecycle24; +export type DataStatus28 = { + collectionIssues: Array; + health: Health28; + lifecycle: Lifecycle28; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type Data1 = { - cpu?: Cpu11 | any | null | undefined; - events: Array; - memory?: Memory11 | any | null | undefined; +export type DataLocal6 = { name: string; - namespace?: string | null | undefined; - nodeCounts: NodeCounts; - nodeStatuses?: Array | undefined; - podCounts: PodCounts; - region?: string | null | undefined; - status: DataStatus24; - version?: string | null | undefined; -}; - -export type DataKubernetesCluster = { - data: Data1; - resourceType: "kubernetes-cluster"; -}; - -export type Nodes5 = { - current?: number | null | undefined; - desired?: number | null | undefined; - ready?: number | null | undefined; + path?: string | null | undefined; + serviceStatus?: string | null | undefined; + status: DataStatus28; + backend: "local"; }; -export const Reason23 = { +export const GetResourceDeploymentDetailReason27 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason23 = ClosedEnum; +export type GetResourceDeploymentDetailReason27 = ClosedEnum< + typeof GetResourceDeploymentDetailReason27 +>; -export const CollectionIssueSeverity23 = { +export const CollectionIssueSeverity27 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity23 = ClosedEnum< - typeof CollectionIssueSeverity23 +export type CollectionIssueSeverity27 = ClosedEnum< + typeof CollectionIssueSeverity27 >; -export type CollectionIssue23 = { +export type CollectionIssue27 = { message: string; - reason: Reason23; - severity: CollectionIssueSeverity23; + reason: GetResourceDeploymentDetailReason27; + severity: CollectionIssueSeverity27; source: string; }; -export const Health23 = { +export const Health27 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health23 = ClosedEnum; +export type Health27 = ClosedEnum; -export const Lifecycle23 = { +export const Lifecycle27 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -3621,220 +3882,185 @@ export const Lifecycle23 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle23 = ClosedEnum; +export type Lifecycle27 = ClosedEnum; -export type DataStatus23 = { - collectionIssues: Array; - health: Health23; - lifecycle: Lifecycle23; +export type DataStatus27 = { + collectionIssues: Array; + health: Health27; + lifecycle: Lifecycle27; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataLocal5 = { - dockerApiVersion?: string | null | undefined; - dockerArch?: string | null | undefined; - dockerAvailable: boolean; - dockerOs?: string | null | undefined; - dockerVersion?: string | null | undefined; - hostIdentifier?: string | null | undefined; +export type DataAzureServiceBus = { + accessedAt?: string | null | undefined; + activeMessageCount?: number | null | undefined; + autoDeleteOnIdle?: string | null | undefined; + createdAt?: string | null | undefined; + deadLetterMessageCount?: number | null | undefined; + deadLetteringOnMessageExpiration?: boolean | null | undefined; + defaultMessageTimeToLive?: string | null | undefined; + duplicateDetectionHistoryTimeWindow?: string | null | undefined; + enableBatchedOperations?: boolean | null | undefined; + enableExpress?: boolean | null | undefined; + enablePartitioning?: boolean | null | undefined; + endpoint?: string | null | undefined; + forwardDeadLetteredMessagesTo?: string | null | undefined; + forwardTo?: string | null | undefined; + lockDuration?: string | null | undefined; + maxDeliveryCount?: number | null | undefined; + maxMessageSizeInKilobytes?: number | null | undefined; + maxSizeInMegabytes?: number | null | undefined; + messageCount?: number | null | undefined; name: string; - networkAvailable: boolean; - networkName?: string | null | undefined; - nodes: Nodes5; - runningContainers?: number | null | undefined; - status: DataStatus23; - trackedContainers?: number | null | undefined; - backend: "local"; -}; - -export const Category4 = { - Quota: "quota", - Capacity: "capacity", - Allocation: "allocation", - Other: "other", -} as const; -export type Category4 = ClosedEnum; - -export type CapacityBlocker4 = { - category: Category4; - message: string; - observedAt: Date; - providerCode?: string | null | undefined; - providerReference?: string | null | undefined; -}; - -export type CapacityBlockerUnion4 = CapacityBlocker4 | any; - -export type Blocker4 = { - reason: string; - replicaId: string; - schedulingMode: string; - state: string; - workloadName: string; + namespaceName: string; + queueStatus?: string | null | undefined; + requiresDuplicateDetection?: boolean | null | undefined; + requiresSession?: boolean | null | undefined; + resourceGroup?: string | null | undefined; + resourceId?: string | null | undefined; + scheduledMessageCount?: number | null | undefined; + sizeInBytes?: number | null | undefined; + status: DataStatus27; + transferDeadLetterMessageCount?: number | null | undefined; + transferMessageCount?: number | null | undefined; + updatedAt?: string | null | undefined; + backend: "azureServiceBus"; }; -export const DrainProgressStatus4 = { - Draining: "draining", - Drained: "drained", - Terminating: "terminating", +export const GetResourceDeploymentDetailReason26 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", } as const; -export type DrainProgressStatus4 = ClosedEnum; - -export type DrainProgress4 = { - blockers?: Array | undefined; - drainDeadlineAt?: string | null | undefined; - drainRequestedAt?: string | null | undefined; - drainedAt?: string | null | undefined; - force: boolean; - machineId: string; - replicaCount: number; - stalled: boolean; - status: DrainProgressStatus4; -}; - -export type DrainProgressUnion4 = DrainProgress4 | any; +export type GetResourceDeploymentDetailReason26 = ClosedEnum< + typeof GetResourceDeploymentDetailReason26 +>; -export const UtilizationUnit4 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", +export const CollectionIssueSeverity26 = { + Info: "info", + Warning: "warning", + Error: "error", } as const; -export type UtilizationUnit4 = ClosedEnum; - -export type Utilization4 = { - unit: UtilizationUnit4; - value: number; -}; - -export type UtilizationUnion4 = Utilization4 | any; - -export type Recommendation4 = { - desiredMachines: number; - reason?: string | null | undefined; - unschedulableReplicas?: number | null | undefined; - utilization?: Utilization4 | any | null | undefined; -}; - -export type RecommendationUnion4 = Recommendation4 | any; +export type CollectionIssueSeverity26 = ClosedEnum< + typeof CollectionIssueSeverity26 +>; -export type CapacityGroup4 = { - capacityBlocker?: CapacityBlocker4 | any | null | undefined; - currentMachines: number; - desiredMachines: number; - drainProgress?: DrainProgress4 | any | null | undefined; - groupId: string; - instanceType?: string | null | undefined; - maxMachines?: number | null | undefined; - minMachines?: number | null | undefined; - recommendation?: Recommendation4 | any | null | undefined; +export type CollectionIssue26 = { + message: string; + reason: GetResourceDeploymentDetailReason26; + severity: CollectionIssueSeverity26; + source: string; }; -export const CpuUnit10 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", +export const Health26 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", } as const; -export type CpuUnit10 = ClosedEnum; - -export type Cpu10 = { - unit: CpuUnit10; - value: number; -}; - -export type CpuUnion10 = Cpu10 | any; - -export type DrainBlocker = { - reason: string; - replicaId: string; - schedulingMode: string; - state: string; - workloadName: string; -}; - -export type Machine = { - capacityGroup: string; - cpuCores?: number | null | undefined; - drainBlockers?: Array | undefined; - drainDeadlineAt?: string | null | undefined; - drainForce: boolean; - drainRequestedAt?: string | null | undefined; - drainedAt?: string | null | undefined; - horizondVersion?: string | null | undefined; - lastHeartbeat: string; - machineId: string; - memoryBytes?: number | null | undefined; - overlayIp?: string | null | undefined; - publicIp?: string | null | undefined; - replicaCount: number; - status: string; - zone: string; -}; +export type Health26 = ClosedEnum; -export const MemoryUnit10 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", +export const Lifecycle26 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", } as const; -export type MemoryUnit10 = ClosedEnum; +export type Lifecycle26 = ClosedEnum; -export type Memory10 = { - unit: MemoryUnit10; - value: number; +export type DataStatus26 = { + collectionIssues: Array; + health: Health26; + lifecycle: Lifecycle26; + message?: string | null | undefined; + partial: boolean; + stale: boolean; }; -export type MemoryUnion10 = Memory10 | any; - -export type Nodes4 = { - current?: number | null | undefined; - desired?: number | null | undefined; - ready?: number | null | undefined; +export type DataGcpPubSub = { + endpoint?: string | null | undefined; + kmsKeyName?: string | null | undefined; + messageStorageAllowedPersistenceRegions: Array; + messageStorageEnforceInTransit?: boolean | null | undefined; + projectId?: string | null | undefined; + schemaEncoding?: string | null | undefined; + schemaFirstRevisionId?: string | null | undefined; + schemaLastRevisionId?: string | null | undefined; + schemaName?: string | null | undefined; + status: DataStatus26; + subscriptionAckDeadlineSeconds?: number | null | undefined; + subscriptionDeadLetterMaxDeliveryAttempts?: number | null | undefined; + subscriptionDeadLetterTopic?: string | null | undefined; + subscriptionDetached?: boolean | null | undefined; + subscriptionEnableMessageOrdering?: boolean | null | undefined; + subscriptionFilter?: string | null | undefined; + subscriptionFullName?: string | null | undefined; + subscriptionLabels: { [k: string]: string }; + subscriptionMessageRetentionDuration?: string | null | undefined; + subscriptionName?: string | null | undefined; + subscriptionPushAttributes: { [k: string]: string }; + subscriptionPushConfigPresent?: boolean | null | undefined; + subscriptionPushEndpoint?: string | null | undefined; + subscriptionPushNoWrapperWriteMetadata?: boolean | null | undefined; + subscriptionPushOidcAudience?: string | null | undefined; + subscriptionPushOidcServiceAccountEmail?: string | null | undefined; + subscriptionPushPubsubWrapperWriteMetadata?: boolean | null | undefined; + subscriptionRetainAckedMessages?: boolean | null | undefined; + subscriptionState?: string | null | undefined; + topicFullName?: string | null | undefined; + topicLabels: { [k: string]: string }; + topicMessageRetentionDuration?: string | null | undefined; + topicName: string; + topicState?: string | null | undefined; + backend: "gcpPubSub"; }; -export const Reason22 = { +export const GetResourceDeploymentDetailReason25 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason22 = ClosedEnum; +export type GetResourceDeploymentDetailReason25 = ClosedEnum< + typeof GetResourceDeploymentDetailReason25 +>; -export const CollectionIssueSeverity22 = { +export const CollectionIssueSeverity25 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity22 = ClosedEnum< - typeof CollectionIssueSeverity22 +export type CollectionIssueSeverity25 = ClosedEnum< + typeof CollectionIssueSeverity25 >; -export type CollectionIssue22 = { +export type CollectionIssue25 = { message: string; - reason: Reason22; - severity: CollectionIssueSeverity22; + reason: GetResourceDeploymentDetailReason25; + severity: CollectionIssueSeverity25; source: string; }; -export const Health22 = { +export const Health25 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health22 = ClosedEnum; +export type Health25 = ClosedEnum; -export const Lifecycle22 = { +export const Lifecycle25 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -3846,77 +4072,129 @@ export const Lifecycle22 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle22 = ClosedEnum; +export type Lifecycle25 = ClosedEnum; -export type DataStatus22 = { - collectionIssues: Array; - health: Health22; - lifecycle: Lifecycle22; - message?: string | null | undefined; - partial: boolean; - stale: boolean; +export type DataStatus25 = { + collectionIssues: Array; + health: Health25; + lifecycle: Lifecycle25; + message?: string | null | undefined; + partial: boolean; + stale: boolean; }; -export type DataMachines2 = { - backendClusterId?: string | null | undefined; - capacityGroups: Array; - cpu?: Cpu10 | any | null | undefined; - machines: Array; - memory?: Memory10 | any | null | undefined; +export type DataAwsSqs = { + approximateCounts: boolean; + approximateDelayedMessages?: number | null | undefined; + approximateInFlightMessages?: number | null | undefined; + approximateVisibleMessages?: number | null | undefined; + contentBasedDeduplication?: boolean | null | undefined; + deduplicationScope?: string | null | undefined; + delaySeconds?: number | null | undefined; + fifoQueue?: boolean | null | undefined; + fifoThroughputLimit?: string | null | undefined; + kmsDataKeyReusePeriodSeconds?: number | null | undefined; + kmsMasterKeyId?: string | null | undefined; + maximumMessageSize?: number | null | undefined; + messageRetentionPeriodSeconds?: number | null | undefined; name: string; - nodes: Nodes4; - status: DataStatus22; - backend: "machines"; + queueArn?: string | null | undefined; + queueUrl?: string | null | undefined; + receiveMessageWaitTimeSeconds?: number | null | undefined; + redriveAllowPolicy?: string | null | undefined; + redrivePolicy?: string | null | undefined; + region?: string | null | undefined; + sqsManagedSseEnabled?: boolean | null | undefined; + sseEnabled?: boolean | null | undefined; + status: DataStatus25; + visibilityTimeoutSeconds?: number | null | undefined; + backend: "awsSqs"; }; -export const Category3 = { - Quota: "quota", - Capacity: "capacity", - Allocation: "allocation", - Other: "other", +export type DataUnion6 = + | DataAwsSqs + | DataGcpPubSub + | DataAzureServiceBus + | DataLocal6; + +export type DataQueue = { + data: DataAwsSqs | DataGcpPubSub | DataAzureServiceBus | DataLocal6; + resourceType: "queue"; +}; + +export const CpuUnit11 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", } as const; -export type Category3 = ClosedEnum; +export type CpuUnit11 = ClosedEnum; -export type CapacityBlocker3 = { - category: Category3; - message: string; - observedAt: Date; - providerCode?: string | null | undefined; - providerReference?: string | null | undefined; +export type Cpu11 = { + unit: CpuUnit11; + value: number; }; -export type CapacityBlockerUnion3 = CapacityBlocker3 | any; +export type CpuUnion11 = Cpu11 | any; + +export type InvolvedObject9 = { + apiVersion?: string | null | undefined; + fieldPath?: string | null | undefined; + kind?: string | null | undefined; + name?: string | null | undefined; + namespace?: string | null | undefined; + resourceVersion?: string | null | undefined; + uid?: string | null | undefined; +}; + +export type InvolvedObjectUnion9 = InvolvedObject9 | any; + +export type SourceEvent9 = { + component?: string | null | undefined; + host?: string | null | undefined; +}; + +export type SourceUnion9 = SourceEvent9 | any; -export type Blocker3 = { +export type Event12 = { + count?: number | null | undefined; + eventTime?: Date | null | undefined; + firstTimestamp?: Date | null | undefined; + involvedObject?: InvolvedObject9 | any | null | undefined; + lastTimestamp?: Date | null | undefined; + message: string; + raw?: any | null | undefined; reason: string; - replicaId: string; - schedulingMode: string; - state: string; - workloadName: string; + source?: SourceEvent9 | any | null | undefined; + type?: string | null | undefined; }; -export const DrainProgressStatus3 = { - Draining: "draining", - Drained: "drained", - Terminating: "terminating", +export const MemoryUnit11 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", } as const; -export type DrainProgressStatus3 = ClosedEnum; +export type MemoryUnit11 = ClosedEnum; -export type DrainProgress3 = { - blockers?: Array | undefined; - drainDeadlineAt?: string | null | undefined; - drainRequestedAt?: string | null | undefined; - drainedAt?: string | null | undefined; - force: boolean; - machineId: string; - replicaCount: number; - stalled: boolean; - status: DrainProgressStatus3; +export type Memory11 = { + unit: MemoryUnit11; + value: number; }; -export type DrainProgressUnion3 = DrainProgress3 | any; +export type MemoryUnion11 = Memory11 | any; -export const UtilizationUnit3 = { +export type NodeCounts = { + current?: number | null | undefined; + desired?: number | null | undefined; + ready?: number | null | undefined; +}; + +export const CpuAllocatableUnit = { Count: "count", Percent: "percent", Bytes: "bytes", @@ -3924,37 +4202,39 @@ export const UtilizationUnit3 = { Milliseconds: "milliseconds", RequestsPerSecond: "requests-per-second", } as const; -export type UtilizationUnit3 = ClosedEnum; +export type CpuAllocatableUnit = ClosedEnum; -export type Utilization3 = { - unit: UtilizationUnit3; +export type CpuAllocatable = { + unit: CpuAllocatableUnit; value: number; }; -export type UtilizationUnion3 = Utilization3 | any; +export type AllocatableCpuUnion = CpuAllocatable | any; -export type Recommendation3 = { - desiredMachines: number; - reason?: string | null | undefined; - unschedulableReplicas?: number | null | undefined; - utilization?: Utilization3 | any | null | undefined; +export const MemoryAllocatableUnit = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryAllocatableUnit = ClosedEnum; + +export type MemoryAllocatable = { + unit: MemoryAllocatableUnit; + value: number; }; -export type RecommendationUnion3 = Recommendation3 | any; +export type AllocatableMemoryUnion = MemoryAllocatable | any; -export type CapacityGroup3 = { - capacityBlocker?: CapacityBlocker3 | any | null | undefined; - currentMachines: number; - desiredMachines: number; - drainProgress?: DrainProgress3 | any | null | undefined; - groupId: string; - instanceType?: string | null | undefined; - maxMachines?: number | null | undefined; - minMachines?: number | null | undefined; - recommendation?: Recommendation3 | any | null | undefined; +export type Allocatable = { + cpu?: CpuAllocatable | any | null | undefined; + memory?: MemoryAllocatable | any | null | undefined; + pods?: number | null | undefined; }; -export const CpuUnit9 = { +export const CpuCapacityUnit = { Count: "count", Percent: "percent", Bytes: "bytes", @@ -3962,16 +4242,16 @@ export const CpuUnit9 = { Milliseconds: "milliseconds", RequestsPerSecond: "requests-per-second", } as const; -export type CpuUnit9 = ClosedEnum; +export type CpuCapacityUnit = ClosedEnum; -export type Cpu9 = { - unit: CpuUnit9; +export type CpuCapacity = { + unit: CpuCapacityUnit; value: number; }; -export type CpuUnion9 = Cpu9 | any; +export type CapacityCpuUnion = CpuCapacity | any; -export const MemoryUnit9 = { +export const MemoryCapacityUnit = { Count: "count", Percent: "percent", Bytes: "bytes", @@ -3979,63 +4259,125 @@ export const MemoryUnit9 = { Milliseconds: "milliseconds", RequestsPerSecond: "requests-per-second", } as const; -export type MemoryUnit9 = ClosedEnum; +export type MemoryCapacityUnit = ClosedEnum; -export type Memory9 = { - unit: MemoryUnit9; +export type MemoryCapacity = { + unit: MemoryCapacityUnit; value: number; }; -export type MemoryUnion9 = Memory9 | any; +export type CapacityMemoryUnion = MemoryCapacity | any; -export type Nodes3 = { - current?: number | null | undefined; - desired?: number | null | undefined; - ready?: number | null | undefined; +export type Capacity = { + cpu?: CpuCapacity | any | null | undefined; + memory?: MemoryCapacity | any | null | undefined; + pods?: number | null | undefined; }; -export type ProviderFleet3 = { - currentMachines: number; - desiredMachines: number; - groupId: string; - location?: string | null | undefined; - providerId: string; +export type NodeStatusCondition = { + message?: string | null | undefined; + reason?: string | null | undefined; + status: string; + type: string; }; -export const Reason21 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason21 = ClosedEnum; - -export const CollectionIssueSeverity21 = { - Info: "info", - Warning: "warning", - Error: "error", +export const UsageCpuUnit = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", } as const; -export type CollectionIssueSeverity21 = ClosedEnum< - typeof CollectionIssueSeverity21 ->; +export type UsageCpuUnit = ClosedEnum; -export type CollectionIssue21 = { - message: string; - reason: Reason21; - severity: CollectionIssueSeverity21; - source: string; +export type UsageCpu = { + unit: UsageCpuUnit; + value: number; }; -export const Health21 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", +export type UsageCpuUnion = UsageCpu | any; + +export const UsageMemoryUnit = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type UsageMemoryUnit = ClosedEnum; + +export type UsageMemory = { + unit: UsageMemoryUnit; + value: number; +}; + +export type UsageMemoryUnion = UsageMemory | any; + +export type Usage = { + cpu?: UsageCpu | any | null | undefined; + memory?: UsageMemory | any | null | undefined; +}; + +export type UsageUnion = Usage | any; + +export type NodeStatus = { + allocatable: Allocatable; + capacity: Capacity; + conditions?: Array | undefined; + containerRuntimeVersion?: string | null | undefined; + kubeletVersion?: string | null | undefined; + labels: { [k: string]: string }; + name: string; + ready: boolean; + roles: Array; + uid?: string | null | undefined; + usage?: Usage | any | null | undefined; +}; + +export type PodCounts = { + current?: number | null | undefined; + desired?: number | null | undefined; + ready?: number | null | undefined; +}; + +export const GetResourceDeploymentDetailReason24 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type GetResourceDeploymentDetailReason24 = ClosedEnum< + typeof GetResourceDeploymentDetailReason24 +>; + +export const CollectionIssueSeverity24 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity24 = ClosedEnum< + typeof CollectionIssueSeverity24 +>; + +export type CollectionIssue24 = { + message: string; + reason: GetResourceDeploymentDetailReason24; + severity: CollectionIssueSeverity24; + source: string; +}; + +export const Health24 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health21 = ClosedEnum; +export type Health24 = ClosedEnum; -export const Lifecycle21 = { +export const Lifecycle24 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -4047,49 +4389,136 @@ export const Lifecycle21 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle21 = ClosedEnum; +export type Lifecycle24 = ClosedEnum; -export type DataStatus21 = { - collectionIssues: Array; - health: Health21; - lifecycle: Lifecycle21; +export type DataStatus24 = { + collectionIssues: Array; + health: Health24; + lifecycle: Lifecycle24; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataAzure2 = { - backendClusterId?: string | null | undefined; - capacityGroups: Array; - cpu?: Cpu9 | any | null | undefined; - memory?: Memory9 | any | null | undefined; +export type Data1 = { + cpu?: Cpu11 | any | null | undefined; + events: Array; + memory?: Memory11 | any | null | undefined; name: string; - nodes: Nodes3; - providerFleets: Array; + namespace?: string | null | undefined; + nodeCounts: NodeCounts; + nodeStatuses?: Array | undefined; + podCounts: PodCounts; region?: string | null | undefined; - status: DataStatus21; - backend: "azure"; + status: DataStatus24; + version?: string | null | undefined; }; -export const Category2 = { +export type DataKubernetesCluster = { + data: Data1; + resourceType: "kubernetes-cluster"; +}; + +export type Nodes5 = { + current?: number | null | undefined; + desired?: number | null | undefined; + ready?: number | null | undefined; +}; + +export const GetResourceDeploymentDetailReason23 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type GetResourceDeploymentDetailReason23 = ClosedEnum< + typeof GetResourceDeploymentDetailReason23 +>; + +export const CollectionIssueSeverity23 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity23 = ClosedEnum< + typeof CollectionIssueSeverity23 +>; + +export type CollectionIssue23 = { + message: string; + reason: GetResourceDeploymentDetailReason23; + severity: CollectionIssueSeverity23; + source: string; +}; + +export const Health23 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health23 = ClosedEnum; + +export const Lifecycle23 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle23 = ClosedEnum; + +export type DataStatus23 = { + collectionIssues: Array; + health: Health23; + lifecycle: Lifecycle23; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataLocal5 = { + dockerApiVersion?: string | null | undefined; + dockerArch?: string | null | undefined; + dockerAvailable: boolean; + dockerOs?: string | null | undefined; + dockerVersion?: string | null | undefined; + hostIdentifier?: string | null | undefined; + name: string; + networkAvailable: boolean; + networkName?: string | null | undefined; + nodes: Nodes5; + runningContainers?: number | null | undefined; + status: DataStatus23; + trackedContainers?: number | null | undefined; + backend: "local"; +}; + +export const Category4 = { Quota: "quota", Capacity: "capacity", Allocation: "allocation", Other: "other", } as const; -export type Category2 = ClosedEnum; +export type Category4 = ClosedEnum; -export type CapacityBlocker2 = { - category: Category2; +export type CapacityBlocker4 = { + category: Category4; message: string; observedAt: Date; providerCode?: string | null | undefined; providerReference?: string | null | undefined; }; -export type CapacityBlockerUnion2 = CapacityBlocker2 | any; +export type CapacityBlockerUnion4 = CapacityBlocker4 | any; -export type Blocker2 = { +export type DrainProgressBlocker4 = { reason: string; replicaId: string; schedulingMode: string; @@ -4097,15 +4526,15 @@ export type Blocker2 = { workloadName: string; }; -export const DrainProgressStatus2 = { +export const DrainProgressStatus4 = { Draining: "draining", Drained: "drained", Terminating: "terminating", } as const; -export type DrainProgressStatus2 = ClosedEnum; +export type DrainProgressStatus4 = ClosedEnum; -export type DrainProgress2 = { - blockers?: Array | undefined; +export type DrainProgress4 = { + blockers?: Array | undefined; drainDeadlineAt?: string | null | undefined; drainRequestedAt?: string | null | undefined; drainedAt?: string | null | undefined; @@ -4113,12 +4542,12 @@ export type DrainProgress2 = { machineId: string; replicaCount: number; stalled: boolean; - status: DrainProgressStatus2; + status: DrainProgressStatus4; }; -export type DrainProgressUnion2 = DrainProgress2 | any; +export type DrainProgressUnion4 = DrainProgress4 | any; -export const UtilizationUnit2 = { +export const UtilizationUnit4 = { Count: "count", Percent: "percent", Bytes: "bytes", @@ -4126,37 +4555,37 @@ export const UtilizationUnit2 = { Milliseconds: "milliseconds", RequestsPerSecond: "requests-per-second", } as const; -export type UtilizationUnit2 = ClosedEnum; +export type UtilizationUnit4 = ClosedEnum; -export type Utilization2 = { - unit: UtilizationUnit2; +export type Utilization4 = { + unit: UtilizationUnit4; value: number; }; -export type UtilizationUnion2 = Utilization2 | any; +export type UtilizationUnion4 = Utilization4 | any; -export type Recommendation2 = { +export type Recommendation4 = { desiredMachines: number; reason?: string | null | undefined; unschedulableReplicas?: number | null | undefined; - utilization?: Utilization2 | any | null | undefined; + utilization?: Utilization4 | any | null | undefined; }; -export type RecommendationUnion2 = Recommendation2 | any; +export type RecommendationUnion4 = Recommendation4 | any; -export type CapacityGroup2 = { - capacityBlocker?: CapacityBlocker2 | any | null | undefined; +export type CapacityGroup4 = { + capacityBlocker?: CapacityBlocker4 | any | null | undefined; currentMachines: number; desiredMachines: number; - drainProgress?: DrainProgress2 | any | null | undefined; + drainProgress?: DrainProgress4 | any | null | undefined; groupId: string; instanceType?: string | null | undefined; maxMachines?: number | null | undefined; minMachines?: number | null | undefined; - recommendation?: Recommendation2 | any | null | undefined; + recommendation?: Recommendation4 | any | null | undefined; }; -export const CpuUnit8 = { +export const CpuUnit10 = { Count: "count", Percent: "percent", Bytes: "bytes", @@ -4164,80 +4593,101 @@ export const CpuUnit8 = { Milliseconds: "milliseconds", RequestsPerSecond: "requests-per-second", } as const; -export type CpuUnit8 = ClosedEnum; +export type CpuUnit10 = ClosedEnum; -export type Cpu8 = { - unit: CpuUnit8; +export type Cpu10 = { + unit: CpuUnit10; value: number; }; -export type CpuUnion8 = Cpu8 | any; - -export const MemoryUnit8 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryUnit8 = ClosedEnum; +export type CpuUnion10 = Cpu10 | any; -export type Memory8 = { - unit: MemoryUnit8; - value: number; -}; +export type DrainBlocker = { + reason: string; + replicaId: string; + schedulingMode: string; + state: string; + workloadName: string; +}; -export type MemoryUnion8 = Memory8 | any; +export type Machine = { + capacityGroup: string; + cpuCores?: number | null | undefined; + drainBlockers?: Array | undefined; + drainDeadlineAt?: string | null | undefined; + drainForce: boolean; + drainRequestedAt?: string | null | undefined; + drainedAt?: string | null | undefined; + horizondVersion?: string | null | undefined; + lastHeartbeat: string; + machineId: string; + memoryBytes?: number | null | undefined; + overlayIp?: string | null | undefined; + publicIp?: string | null | undefined; + replicaCount: number; + status: string; + zone: string; +}; -export type Nodes2 = { +export const MemoryUnit10 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryUnit10 = ClosedEnum; + +export type Memory10 = { + unit: MemoryUnit10; + value: number; +}; + +export type MemoryUnion10 = Memory10 | any; + +export type Nodes4 = { current?: number | null | undefined; desired?: number | null | undefined; ready?: number | null | undefined; }; -export type ProviderFleet2 = { - currentMachines: number; - desiredMachines: number; - groupId: string; - location?: string | null | undefined; - providerId: string; -}; - -export const Reason20 = { +export const GetResourceDeploymentDetailReason22 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason20 = ClosedEnum; +export type GetResourceDeploymentDetailReason22 = ClosedEnum< + typeof GetResourceDeploymentDetailReason22 +>; -export const CollectionIssueSeverity20 = { +export const CollectionIssueSeverity22 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity20 = ClosedEnum< - typeof CollectionIssueSeverity20 +export type CollectionIssueSeverity22 = ClosedEnum< + typeof CollectionIssueSeverity22 >; -export type CollectionIssue20 = { +export type CollectionIssue22 = { message: string; - reason: Reason20; - severity: CollectionIssueSeverity20; + reason: GetResourceDeploymentDetailReason22; + severity: CollectionIssueSeverity22; source: string; }; -export const Health20 = { +export const Health22 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health20 = ClosedEnum; +export type Health22 = ClosedEnum; -export const Lifecycle20 = { +export const Lifecycle22 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -4249,49 +4699,48 @@ export const Lifecycle20 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle20 = ClosedEnum; +export type Lifecycle22 = ClosedEnum; -export type DataStatus20 = { - collectionIssues: Array; - health: Health20; - lifecycle: Lifecycle20; +export type DataStatus22 = { + collectionIssues: Array; + health: Health22; + lifecycle: Lifecycle22; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataGcp2 = { +export type DataMachines2 = { backendClusterId?: string | null | undefined; - capacityGroups: Array; - cpu?: Cpu8 | any | null | undefined; - memory?: Memory8 | any | null | undefined; + capacityGroups: Array; + cpu?: Cpu10 | any | null | undefined; + machines: Array; + memory?: Memory10 | any | null | undefined; name: string; - nodes: Nodes2; - providerFleets: Array; - region?: string | null | undefined; - status: DataStatus20; - backend: "gcp"; + nodes: Nodes4; + status: DataStatus22; + backend: "machines"; }; -export const Category1 = { +export const Category3 = { Quota: "quota", Capacity: "capacity", Allocation: "allocation", Other: "other", } as const; -export type Category1 = ClosedEnum; +export type Category3 = ClosedEnum; -export type CapacityBlocker1 = { - category: Category1; +export type CapacityBlocker3 = { + category: Category3; message: string; observedAt: Date; providerCode?: string | null | undefined; providerReference?: string | null | undefined; }; -export type CapacityBlockerUnion1 = CapacityBlocker1 | any; +export type CapacityBlockerUnion3 = CapacityBlocker3 | any; -export type Blocker1 = { +export type DrainProgressBlocker3 = { reason: string; replicaId: string; schedulingMode: string; @@ -4299,15 +4748,15 @@ export type Blocker1 = { workloadName: string; }; -export const DrainProgressStatus1 = { +export const DrainProgressStatus3 = { Draining: "draining", Drained: "drained", Terminating: "terminating", } as const; -export type DrainProgressStatus1 = ClosedEnum; +export type DrainProgressStatus3 = ClosedEnum; -export type DrainProgress1 = { - blockers?: Array | undefined; +export type DrainProgress3 = { + blockers?: Array | undefined; drainDeadlineAt?: string | null | undefined; drainRequestedAt?: string | null | undefined; drainedAt?: string | null | undefined; @@ -4315,12 +4764,12 @@ export type DrainProgress1 = { machineId: string; replicaCount: number; stalled: boolean; - status: DrainProgressStatus1; + status: DrainProgressStatus3; }; -export type DrainProgressUnion1 = DrainProgress1 | any; +export type DrainProgressUnion3 = DrainProgress3 | any; -export const UtilizationUnit1 = { +export const UtilizationUnit3 = { Count: "count", Percent: "percent", Bytes: "bytes", @@ -4328,37 +4777,37 @@ export const UtilizationUnit1 = { Milliseconds: "milliseconds", RequestsPerSecond: "requests-per-second", } as const; -export type UtilizationUnit1 = ClosedEnum; +export type UtilizationUnit3 = ClosedEnum; -export type Utilization1 = { - unit: UtilizationUnit1; +export type Utilization3 = { + unit: UtilizationUnit3; value: number; }; -export type UtilizationUnion1 = Utilization1 | any; +export type UtilizationUnion3 = Utilization3 | any; -export type Recommendation1 = { +export type Recommendation3 = { desiredMachines: number; reason?: string | null | undefined; unschedulableReplicas?: number | null | undefined; - utilization?: Utilization1 | any | null | undefined; + utilization?: Utilization3 | any | null | undefined; }; -export type RecommendationUnion1 = Recommendation1 | any; +export type RecommendationUnion3 = Recommendation3 | any; -export type CapacityGroup1 = { - capacityBlocker?: CapacityBlocker1 | any | null | undefined; +export type CapacityGroup3 = { + capacityBlocker?: CapacityBlocker3 | any | null | undefined; currentMachines: number; desiredMachines: number; - drainProgress?: DrainProgress1 | any | null | undefined; + drainProgress?: DrainProgress3 | any | null | undefined; groupId: string; instanceType?: string | null | undefined; maxMachines?: number | null | undefined; minMachines?: number | null | undefined; - recommendation?: Recommendation1 | any | null | undefined; + recommendation?: Recommendation3 | any | null | undefined; }; -export const CpuUnit7 = { +export const CpuUnit9 = { Count: "count", Percent: "percent", Bytes: "bytes", @@ -4366,16 +4815,16 @@ export const CpuUnit7 = { Milliseconds: "milliseconds", RequestsPerSecond: "requests-per-second", } as const; -export type CpuUnit7 = ClosedEnum; +export type CpuUnit9 = ClosedEnum; -export type Cpu7 = { - unit: CpuUnit7; +export type Cpu9 = { + unit: CpuUnit9; value: number; }; -export type CpuUnion7 = Cpu7 | any; +export type CpuUnion9 = Cpu9 | any; -export const MemoryUnit7 = { +export const MemoryUnit9 = { Count: "count", Percent: "percent", Bytes: "bytes", @@ -4383,22 +4832,22 @@ export const MemoryUnit7 = { Milliseconds: "milliseconds", RequestsPerSecond: "requests-per-second", } as const; -export type MemoryUnit7 = ClosedEnum; +export type MemoryUnit9 = ClosedEnum; -export type Memory7 = { - unit: MemoryUnit7; +export type Memory9 = { + unit: MemoryUnit9; value: number; }; -export type MemoryUnion7 = Memory7 | any; +export type MemoryUnion9 = Memory9 | any; -export type Nodes1 = { +export type Nodes3 = { current?: number | null | undefined; desired?: number | null | undefined; ready?: number | null | undefined; }; -export type ProviderFleet1 = { +export type ProviderFleet3 = { currentMachines: number; desiredMachines: number; groupId: string; @@ -4406,40 +4855,42 @@ export type ProviderFleet1 = { providerId: string; }; -export const Reason19 = { +export const GetResourceDeploymentDetailReason21 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason19 = ClosedEnum; +export type GetResourceDeploymentDetailReason21 = ClosedEnum< + typeof GetResourceDeploymentDetailReason21 +>; -export const CollectionIssueSeverity19 = { +export const CollectionIssueSeverity21 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity19 = ClosedEnum< - typeof CollectionIssueSeverity19 +export type CollectionIssueSeverity21 = ClosedEnum< + typeof CollectionIssueSeverity21 >; -export type CollectionIssue19 = { +export type CollectionIssue21 = { message: string; - reason: Reason19; - severity: CollectionIssueSeverity19; + reason: GetResourceDeploymentDetailReason21; + severity: CollectionIssueSeverity21; source: string; }; -export const Health19 = { +export const Health21 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health19 = ClosedEnum; +export type Health21 = ClosedEnum; -export const Lifecycle19 = { +export const Lifecycle21 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -4451,67 +4902,78 @@ export const Lifecycle19 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle19 = ClosedEnum; +export type Lifecycle21 = ClosedEnum; -export type DataStatus19 = { - collectionIssues: Array; - health: Health19; - lifecycle: Lifecycle19; +export type DataStatus21 = { + collectionIssues: Array; + health: Health21; + lifecycle: Lifecycle21; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataAws2 = { +export type DataAzure2 = { backendClusterId?: string | null | undefined; - capacityGroups: Array; - cpu?: Cpu7 | any | null | undefined; - memory?: Memory7 | any | null | undefined; + capacityGroups: Array; + cpu?: Cpu9 | any | null | undefined; + memory?: Memory9 | any | null | undefined; name: string; - nodes: Nodes1; - providerFleets: Array; + nodes: Nodes3; + providerFleets: Array; region?: string | null | undefined; - status: DataStatus19; - backend: "aws"; + status: DataStatus21; + backend: "azure"; }; -export type DataUnion5 = - | DataAws2 - | DataGcp2 - | DataAzure2 - | DataMachines2 - | DataLocal5; +export const Category2 = { + Quota: "quota", + Capacity: "capacity", + Allocation: "allocation", + Other: "other", +} as const; +export type Category2 = ClosedEnum; -export type DataComputeCluster = { - data: DataAws2 | DataGcp2 | DataAzure2 | DataMachines2 | DataLocal5; - resourceType: "compute-cluster"; +export type CapacityBlocker2 = { + category: Category2; + message: string; + observedAt: Date; + providerCode?: string | null | undefined; + providerReference?: string | null | undefined; }; -export const DaemonInstanceCpuUnit = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type DaemonInstanceCpuUnit = ClosedEnum; +export type CapacityBlockerUnion2 = CapacityBlocker2 | any; -export type DaemonInstanceCpu = { - unit: DaemonInstanceCpuUnit; - value: number; +export type DrainProgressBlocker2 = { + reason: string; + replicaId: string; + schedulingMode: string; + state: string; + workloadName: string; }; -export type DaemonInstanceCpuUnion5 = DaemonInstanceCpu | any; +export const DrainProgressStatus2 = { + Draining: "draining", + Drained: "drained", + Terminating: "terminating", +} as const; +export type DrainProgressStatus2 = ClosedEnum; -export const DaemonInstanceKind = { - Container: "container", - Process: "process", - Daemon: "daemon", -} as const; -export type DaemonInstanceKind = ClosedEnum; +export type DrainProgress2 = { + blockers?: Array | undefined; + drainDeadlineAt?: string | null | undefined; + drainRequestedAt?: string | null | undefined; + drainedAt?: string | null | undefined; + force: boolean; + machineId: string; + replicaCount: number; + stalled: boolean; + status: DrainProgressStatus2; +}; -export const DaemonInstanceMemoryUnit = { +export type DrainProgressUnion2 = DrainProgress2 | any; + +export const UtilizationUnit2 = { Count: "count", Percent: "percent", Bytes: "bytes", @@ -4519,89 +4981,120 @@ export const DaemonInstanceMemoryUnit = { Milliseconds: "milliseconds", RequestsPerSecond: "requests-per-second", } as const; -export type DaemonInstanceMemoryUnit = ClosedEnum< - typeof DaemonInstanceMemoryUnit ->; +export type UtilizationUnit2 = ClosedEnum; -export type DaemonInstanceMemory = { - unit: DaemonInstanceMemoryUnit; +export type Utilization2 = { + unit: UtilizationUnit2; value: number; }; -export type DaemonInstanceMemoryUnion5 = DaemonInstanceMemory | any; +export type UtilizationUnion2 = Utilization2 | any; -export type DaemonInstance5 = { - cpu?: DaemonInstanceCpu | any | null | undefined; - kind: DaemonInstanceKind; - memory?: DaemonInstanceMemory | any | null | undefined; - name: string; - phase?: string | null | undefined; - pid?: number | null | undefined; - ready: boolean; - restartCount?: number | null | undefined; - unitId: string; +export type Recommendation2 = { + desiredMachines: number; + reason?: string | null | undefined; + unschedulableReplicas?: number | null | undefined; + utilization?: Utilization2 | any | null | undefined; }; -export type DaemonInstanceUnion = DaemonInstance5 | any; +export type RecommendationUnion2 = Recommendation2 | any; -export const EventSeverity3 = { - Info: "info", - Warning: "warning", - Error: "error", +export type CapacityGroup2 = { + capacityBlocker?: CapacityBlocker2 | any | null | undefined; + currentMachines: number; + desiredMachines: number; + drainProgress?: DrainProgress2 | any | null | undefined; + groupId: string; + instanceType?: string | null | undefined; + maxMachines?: number | null | undefined; + minMachines?: number | null | undefined; + recommendation?: Recommendation2 | any | null | undefined; +}; + +export const CpuUnit8 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", } as const; -export type EventSeverity3 = ClosedEnum; +export type CpuUnit8 = ClosedEnum; -export type Subject3 = { - id?: string | null | undefined; - kind: string; - name?: string | null | undefined; +export type Cpu8 = { + unit: CpuUnit8; + value: number; }; -export type SubjectUnion3 = Subject3 | any; +export type CpuUnion8 = Cpu8 | any; -export type Event11 = { - kind: string; - message: string; - raw?: any | null | undefined; - severity: EventSeverity3; - subject?: Subject3 | any | null | undefined; - timestamp: Date; +export const MemoryUnit8 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryUnit8 = ClosedEnum; + +export type Memory8 = { + unit: MemoryUnit8; + value: number; +}; + +export type MemoryUnion8 = Memory8 | any; + +export type Nodes2 = { + current?: number | null | undefined; + desired?: number | null | undefined; + ready?: number | null | undefined; +}; + +export type ProviderFleet2 = { + currentMachines: number; + desiredMachines: number; + groupId: string; + location?: string | null | undefined; + providerId: string; }; -export const Reason18 = { +export const GetResourceDeploymentDetailReason20 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason18 = ClosedEnum; +export type GetResourceDeploymentDetailReason20 = ClosedEnum< + typeof GetResourceDeploymentDetailReason20 +>; -export const CollectionIssueSeverity18 = { +export const CollectionIssueSeverity20 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity18 = ClosedEnum< - typeof CollectionIssueSeverity18 +export type CollectionIssueSeverity20 = ClosedEnum< + typeof CollectionIssueSeverity20 >; -export type CollectionIssue18 = { +export type CollectionIssue20 = { message: string; - reason: Reason18; - severity: CollectionIssueSeverity18; + reason: GetResourceDeploymentDetailReason20; + severity: CollectionIssueSeverity20; source: string; }; -export const Health18 = { +export const Health20 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health18 = ClosedEnum; +export type Health20 = ClosedEnum; -export const Lifecycle18 = { +export const Lifecycle20 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -4613,98 +5106,78 @@ export const Lifecycle18 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle18 = ClosedEnum; +export type Lifecycle20 = ClosedEnum; -export type DataStatus18 = { - collectionIssues: Array; - health: Health18; - lifecycle: Lifecycle18; +export type DataStatus20 = { + collectionIssues: Array; + health: Health20; + lifecycle: Lifecycle20; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataLocal4 = { - commandSupported: boolean; - daemonInstance?: DaemonInstance5 | any | null | undefined; - daemonName?: string | undefined; - events: Array; - exitReason?: string | null | undefined; - imagePathPresent: boolean; - pid?: number | null | undefined; - restartCount?: number | null | undefined; - runtimeId: string; - status: DataStatus18; - backend: "local"; +export type DataGcp2 = { + backendClusterId?: string | null | undefined; + capacityGroups: Array; + cpu?: Cpu8 | any | null | undefined; + memory?: Memory8 | any | null | undefined; + name: string; + nodes: Nodes2; + providerFleets: Array; + region?: string | null | undefined; + status: DataStatus20; + backend: "gcp"; }; -export const CpuUnit6 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", +export const Category1 = { + Quota: "quota", + Capacity: "capacity", + Allocation: "allocation", + Other: "other", } as const; -export type CpuUnit6 = ClosedEnum; - -export type Cpu6 = { - unit: CpuUnit6; - value: number; -}; - -export type CpuUnion6 = Cpu6 | any; - -export type InvolvedObject8 = { - apiVersion?: string | null | undefined; - fieldPath?: string | null | undefined; - kind?: string | null | undefined; - name?: string | null | undefined; - namespace?: string | null | undefined; - resourceVersion?: string | null | undefined; - uid?: string | null | undefined; -}; - -export type InvolvedObjectUnion8 = InvolvedObject8 | any; +export type Category1 = ClosedEnum; -export type GetResourceDeploymentDetailSource8 = { - component?: string | null | undefined; - host?: string | null | undefined; +export type CapacityBlocker1 = { + category: Category1; + message: string; + observedAt: Date; + providerCode?: string | null | undefined; + providerReference?: string | null | undefined; }; -export type SourceUnion8 = GetResourceDeploymentDetailSource8 | any; +export type CapacityBlockerUnion1 = CapacityBlocker1 | any; -export type Event10 = { - count?: number | null | undefined; - eventTime?: Date | null | undefined; - firstTimestamp?: Date | null | undefined; - involvedObject?: InvolvedObject8 | any | null | undefined; - lastTimestamp?: Date | null | undefined; - message: string; - raw?: any | null | undefined; +export type DrainProgressBlocker1 = { reason: string; - source?: GetResourceDeploymentDetailSource8 | any | null | undefined; - type?: string | null | undefined; + replicaId: string; + schedulingMode: string; + state: string; + workloadName: string; }; -export const MemoryUnit6 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", +export const DrainProgressStatus1 = { + Draining: "draining", + Drained: "drained", + Terminating: "terminating", } as const; -export type MemoryUnit6 = ClosedEnum; +export type DrainProgressStatus1 = ClosedEnum; -export type Memory6 = { - unit: MemoryUnit6; - value: number; +export type DrainProgress1 = { + blockers?: Array | undefined; + drainDeadlineAt?: string | null | undefined; + drainRequestedAt?: string | null | undefined; + drainedAt?: string | null | undefined; + force: boolean; + machineId: string; + replicaCount: number; + stalled: boolean; + status: DrainProgressStatus1; }; -export type MemoryUnion6 = Memory6 | any; +export type DrainProgressUnion1 = DrainProgress1 | any; -export const CpuPodUnit3 = { +export const UtilizationUnit1 = { Count: "count", Percent: "percent", Bytes: "bytes", @@ -4712,16 +5185,37 @@ export const CpuPodUnit3 = { Milliseconds: "milliseconds", RequestsPerSecond: "requests-per-second", } as const; -export type CpuPodUnit3 = ClosedEnum; +export type UtilizationUnit1 = ClosedEnum; -export type CpuPod3 = { - unit: CpuPodUnit3; +export type Utilization1 = { + unit: UtilizationUnit1; value: number; }; -export type PodCpuUnion3 = CpuPod3 | any; +export type UtilizationUnion1 = Utilization1 | any; -export const MemoryPodUnit3 = { +export type Recommendation1 = { + desiredMachines: number; + reason?: string | null | undefined; + unschedulableReplicas?: number | null | undefined; + utilization?: Utilization1 | any | null | undefined; +}; + +export type RecommendationUnion1 = Recommendation1 | any; + +export type CapacityGroup1 = { + capacityBlocker?: CapacityBlocker1 | any | null | undefined; + currentMachines: number; + desiredMachines: number; + drainProgress?: DrainProgress1 | any | null | undefined; + groupId: string; + instanceType?: string | null | undefined; + maxMachines?: number | null | undefined; + minMachines?: number | null | undefined; + recommendation?: Recommendation1 | any | null | undefined; +}; + +export const CpuUnit7 = { Count: "count", Percent: "percent", Bytes: "bytes", @@ -4729,80 +5223,82 @@ export const MemoryPodUnit3 = { Milliseconds: "milliseconds", RequestsPerSecond: "requests-per-second", } as const; -export type MemoryPodUnit3 = ClosedEnum; +export type CpuUnit7 = ClosedEnum; -export type MemoryPod3 = { - unit: MemoryPodUnit3; +export type Cpu7 = { + unit: CpuUnit7; value: number; }; -export type PodMemoryUnion3 = MemoryPod3 | any; +export type CpuUnion7 = Cpu7 | any; -export type OwnerReference3 = { - controller: boolean; - kind: string; - name: string; - uid: string; -}; +export const MemoryUnit7 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryUnit7 = ClosedEnum; -export type Pod3 = { - cpu?: CpuPod3 | any | null | undefined; - memory?: MemoryPod3 | any | null | undefined; - name: string; - nodeName?: string | null | undefined; - ownerReferences: Array; - phase?: string | null | undefined; - podIp?: string | null | undefined; - ready: boolean; - restartCount: number; - terminatedReason?: string | null | undefined; - uid?: string | null | undefined; - waitingReason?: string | null | undefined; +export type Memory7 = { + unit: MemoryUnit7; + value: number; }; -export type Replicas4 = { - available?: number | null | undefined; +export type MemoryUnion7 = Memory7 | any; + +export type Nodes1 = { current?: number | null | undefined; desired?: number | null | undefined; - misscheduled?: number | null | undefined; ready?: number | null | undefined; - updated?: number | null | undefined; }; -export const Reason17 = { +export type ProviderFleet1 = { + currentMachines: number; + desiredMachines: number; + groupId: string; + location?: string | null | undefined; + providerId: string; +}; + +export const GetResourceDeploymentDetailReason19 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason17 = ClosedEnum; +export type GetResourceDeploymentDetailReason19 = ClosedEnum< + typeof GetResourceDeploymentDetailReason19 +>; -export const CollectionIssueSeverity17 = { +export const CollectionIssueSeverity19 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity17 = ClosedEnum< - typeof CollectionIssueSeverity17 +export type CollectionIssueSeverity19 = ClosedEnum< + typeof CollectionIssueSeverity19 >; -export type CollectionIssue17 = { +export type CollectionIssue19 = { message: string; - reason: Reason17; - severity: CollectionIssueSeverity17; + reason: GetResourceDeploymentDetailReason19; + severity: CollectionIssueSeverity19; source: string; }; -export const Health17 = { +export const Health19 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health17 = ClosedEnum; +export type Health19 = ClosedEnum; -export const Lifecycle17 = { +export const Lifecycle19 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -4814,54 +5310,43 @@ export const Lifecycle17 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle17 = ClosedEnum; +export type Lifecycle19 = ClosedEnum; -export type DataStatus17 = { - collectionIssues: Array; - health: Health17; - lifecycle: Lifecycle17; +export type DataStatus19 = { + collectionIssues: Array; + health: Health19; + lifecycle: Lifecycle19; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type WorkloadCondition3 = { - lastTransitionTime?: Date | null | undefined; - message?: string | null | undefined; - reason?: string | null | undefined; - status: string; - type: string; -}; - -export type Workload3 = { - availableReplicas?: number | null | undefined; - conditions: Array; - desiredGeneration?: number | null | undefined; - desiredReplicas?: number | null | undefined; - observedGeneration?: number | null | undefined; - readyReplicas?: number | null | undefined; - rolloutReason?: string | null | undefined; - updatedReplicas?: number | null | undefined; +export type DataAws2 = { + backendClusterId?: string | null | undefined; + capacityGroups: Array; + cpu?: Cpu7 | any | null | undefined; + memory?: Memory7 | any | null | undefined; + name: string; + nodes: Nodes1; + providerFleets: Array; + region?: string | null | undefined; + status: DataStatus19; + backend: "aws"; }; -export type WorkloadUnion3 = Workload3 | any; +export type DataUnion5 = + | DataAws2 + | DataGcp2 + | DataAzure2 + | DataMachines2 + | DataLocal5; -export type DataKubernetes3 = { - commandSupported: boolean; - cpu?: Cpu6 | any | null | undefined; - events: Array; - memory?: Memory6 | any | null | undefined; - name: string; - namespace: string; - pods: Array; - replicas: Replicas4; - restarts?: number | null | undefined; - status: DataStatus17; - workload?: Workload3 | any | null | undefined; - backend: "kubernetes"; +export type DataComputeCluster = { + data: DataAws2 | DataGcp2 | DataAzure2 | DataMachines2 | DataLocal5; + resourceType: "compute-cluster"; }; -export const CpuDaemonInstanceUnit4 = { +export const DaemonInstanceCpuUnit = { Count: "count", Percent: "percent", Bytes: "bytes", @@ -4869,16 +5354,23 @@ export const CpuDaemonInstanceUnit4 = { Milliseconds: "milliseconds", RequestsPerSecond: "requests-per-second", } as const; -export type CpuDaemonInstanceUnit4 = ClosedEnum; +export type DaemonInstanceCpuUnit = ClosedEnum; -export type CpuDaemonInstance4 = { - unit: CpuDaemonInstanceUnit4; +export type DaemonInstanceCpu = { + unit: DaemonInstanceCpuUnit; value: number; }; -export type DaemonInstanceCpuUnion4 = CpuDaemonInstance4 | any; +export type DaemonInstanceCpuUnion5 = DaemonInstanceCpu | any; -export const MemoryDaemonInstanceUnit4 = { +export const DaemonInstanceKind = { + Container: "container", + Process: "process", + Daemon: "daemon", +} as const; +export type DaemonInstanceKind = ClosedEnum; + +export const DaemonInstanceMemoryUnit = { Count: "count", Percent: "percent", Bytes: "bytes", @@ -4886,105 +5378,91 @@ export const MemoryDaemonInstanceUnit4 = { Milliseconds: "milliseconds", RequestsPerSecond: "requests-per-second", } as const; -export type MemoryDaemonInstanceUnit4 = ClosedEnum< - typeof MemoryDaemonInstanceUnit4 +export type DaemonInstanceMemoryUnit = ClosedEnum< + typeof DaemonInstanceMemoryUnit >; -export type MemoryDaemonInstance4 = { - unit: MemoryDaemonInstanceUnit4; +export type DaemonInstanceMemory = { + unit: DaemonInstanceMemoryUnit; value: number; }; -export type DaemonInstanceMemoryUnion4 = MemoryDaemonInstance4 | any; +export type DaemonInstanceMemoryUnion5 = DaemonInstanceMemory | any; -export type DaemonInstance4 = { - cpu?: CpuDaemonInstance4 | any | null | undefined; - ip?: string | null | undefined; - machineId?: string | null | undefined; - memory?: MemoryDaemonInstance4 | any | null | undefined; - message?: string | null | undefined; - metricsHealthy?: boolean | null | undefined; - metricsLastUpdated?: string | null | undefined; - metricsStatus?: string | null | undefined; +export type DaemonInstance5 = { + cpu?: DaemonInstanceCpu | any | null | undefined; + kind: DaemonInstanceKind; + memory?: DaemonInstanceMemory | any | null | undefined; name: string; - nodeName?: string | null | undefined; phase?: string | null | undefined; + pid?: number | null | undefined; ready: boolean; - reason?: string | null | undefined; - replicaId: string; restartCount?: number | null | undefined; - status?: string | null | undefined; - terminatedReason?: string | null | undefined; - waitingReason?: string | null | undefined; + unitId: string; }; -export type InvolvedObject7 = { - details?: any | null | undefined; - id?: string | null | undefined; - kind?: string | null | undefined; - machineId?: string | null | undefined; - name?: string | null | undefined; - replicaId?: string | null | undefined; -}; +export type DaemonInstanceUnion = DaemonInstance5 | any; -export type InvolvedObjectUnion7 = InvolvedObject7 | any; +export const EventSeverity3 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type EventSeverity3 = ClosedEnum; -export type GetResourceDeploymentDetailSource7 = { - component?: string | null | undefined; - host?: string | null | undefined; +export type Subject3 = { + id?: string | null | undefined; + kind: string; + name?: string | null | undefined; }; -export type SourceUnion7 = GetResourceDeploymentDetailSource7 | any; +export type SubjectUnion3 = Subject3 | any; -export type Event9 = { - count?: number | null | undefined; - details?: any | null | undefined; - eventId?: string | null | undefined; - eventTime?: Date | null | undefined; - firstTimestamp?: Date | null | undefined; - involvedObject?: InvolvedObject7 | any | null | undefined; - lastTimestamp?: Date | null | undefined; +export type Event11 = { + kind: string; message: string; raw?: any | null | undefined; - reason: string; - source?: GetResourceDeploymentDetailSource7 | any | null | undefined; - type?: string | null | undefined; + severity: EventSeverity3; + subject?: Subject3 | any | null | undefined; + timestamp: Date; }; -export const Reason16 = { +export const GetResourceDeploymentDetailReason18 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason16 = ClosedEnum; +export type GetResourceDeploymentDetailReason18 = ClosedEnum< + typeof GetResourceDeploymentDetailReason18 +>; -export const CollectionIssueSeverity16 = { +export const CollectionIssueSeverity18 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity16 = ClosedEnum< - typeof CollectionIssueSeverity16 +export type CollectionIssueSeverity18 = ClosedEnum< + typeof CollectionIssueSeverity18 >; -export type CollectionIssue16 = { +export type CollectionIssue18 = { message: string; - reason: Reason16; - severity: CollectionIssueSeverity16; + reason: GetResourceDeploymentDetailReason18; + severity: CollectionIssueSeverity18; source: string; }; -export const Health16 = { +export const Health18 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health16 = ClosedEnum; +export type Health18 = ClosedEnum; -export const Lifecycle16 = { +export const Lifecycle18 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -4996,37 +5474,32 @@ export const Lifecycle16 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle16 = ClosedEnum; +export type Lifecycle18 = ClosedEnum; -export type DataStatus16 = { - collectionIssues: Array; - health: Health16; - lifecycle: Lifecycle16; +export type DataStatus18 = { + collectionIssues: Array; + health: Health18; + lifecycle: Lifecycle18; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataMachines1 = { - assignedMachines: number; - capacityGroup: string; +export type DataLocal4 = { commandSupported: boolean; - daemonInstances: Array; + daemonInstance?: DaemonInstance5 | any | null | undefined; daemonName?: string | undefined; - desiredMachines: number; - events: Array; - healthyInstances: number; - horizonClusterId: string; - horizonStatus: string; - horizonStatusMessage?: string | null | undefined; - horizonStatusReason?: string | null | undefined; - latestUpdateTimestamp: string; - status: DataStatus16; - unavailableInstances: number; - backend: "machines"; + events: Array; + exitReason?: string | null | undefined; + imagePathPresent: boolean; + pid?: number | null | undefined; + restartCount?: number | null | undefined; + runtimeId: string; + status: DataStatus18; + backend: "local"; }; -export const CpuDaemonInstanceUnit3 = { +export const CpuUnit6 = { Count: "count", Percent: "percent", Bytes: "bytes", @@ -5034,16 +5507,48 @@ export const CpuDaemonInstanceUnit3 = { Milliseconds: "milliseconds", RequestsPerSecond: "requests-per-second", } as const; -export type CpuDaemonInstanceUnit3 = ClosedEnum; +export type CpuUnit6 = ClosedEnum; -export type CpuDaemonInstance3 = { - unit: CpuDaemonInstanceUnit3; +export type Cpu6 = { + unit: CpuUnit6; value: number; }; -export type DaemonInstanceCpuUnion3 = CpuDaemonInstance3 | any; +export type CpuUnion6 = Cpu6 | any; -export const MemoryDaemonInstanceUnit3 = { +export type InvolvedObject8 = { + apiVersion?: string | null | undefined; + fieldPath?: string | null | undefined; + kind?: string | null | undefined; + name?: string | null | undefined; + namespace?: string | null | undefined; + resourceVersion?: string | null | undefined; + uid?: string | null | undefined; +}; + +export type InvolvedObjectUnion8 = InvolvedObject8 | any; + +export type SourceEvent8 = { + component?: string | null | undefined; + host?: string | null | undefined; +}; + +export type SourceUnion8 = SourceEvent8 | any; + +export type Event10 = { + count?: number | null | undefined; + eventTime?: Date | null | undefined; + firstTimestamp?: Date | null | undefined; + involvedObject?: InvolvedObject8 | any | null | undefined; + lastTimestamp?: Date | null | undefined; + message: string; + raw?: any | null | undefined; + reason: string; + source?: SourceEvent8 | any | null | undefined; + type?: string | null | undefined; +}; + +export const MemoryUnit6 = { Count: "count", Percent: "percent", Bytes: "bytes", @@ -5051,105 +5556,116 @@ export const MemoryDaemonInstanceUnit3 = { Milliseconds: "milliseconds", RequestsPerSecond: "requests-per-second", } as const; -export type MemoryDaemonInstanceUnit3 = ClosedEnum< - typeof MemoryDaemonInstanceUnit3 ->; +export type MemoryUnit6 = ClosedEnum; -export type MemoryDaemonInstance3 = { - unit: MemoryDaemonInstanceUnit3; +export type Memory6 = { + unit: MemoryUnit6; value: number; }; -export type DaemonInstanceMemoryUnion3 = MemoryDaemonInstance3 | any; +export type MemoryUnion6 = Memory6 | any; -export type DaemonInstance3 = { - cpu?: CpuDaemonInstance3 | any | null | undefined; - ip?: string | null | undefined; - machineId?: string | null | undefined; - memory?: MemoryDaemonInstance3 | any | null | undefined; - message?: string | null | undefined; - metricsHealthy?: boolean | null | undefined; - metricsLastUpdated?: string | null | undefined; - metricsStatus?: string | null | undefined; - name: string; - nodeName?: string | null | undefined; - phase?: string | null | undefined; - ready: boolean; - reason?: string | null | undefined; - replicaId: string; - restartCount?: number | null | undefined; - status?: string | null | undefined; - terminatedReason?: string | null | undefined; - waitingReason?: string | null | undefined; +export const CpuPodUnit3 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuPodUnit3 = ClosedEnum; + +export type CpuPod3 = { + unit: CpuPodUnit3; + value: number; }; -export type InvolvedObject6 = { - details?: any | null | undefined; - id?: string | null | undefined; - kind?: string | null | undefined; - machineId?: string | null | undefined; - name?: string | null | undefined; - replicaId?: string | null | undefined; +export type PodCpuUnion3 = CpuPod3 | any; + +export const MemoryPodUnit3 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryPodUnit3 = ClosedEnum; + +export type MemoryPod3 = { + unit: MemoryPodUnit3; + value: number; }; -export type InvolvedObjectUnion6 = InvolvedObject6 | any; +export type PodMemoryUnion3 = MemoryPod3 | any; -export type GetResourceDeploymentDetailSource6 = { - component?: string | null | undefined; - host?: string | null | undefined; +export type OwnerReference3 = { + controller: boolean; + kind: string; + name: string; + uid: string; }; -export type SourceUnion6 = GetResourceDeploymentDetailSource6 | any; +export type Pod3 = { + cpu?: CpuPod3 | any | null | undefined; + memory?: MemoryPod3 | any | null | undefined; + name: string; + nodeName?: string | null | undefined; + ownerReferences: Array; + phase?: string | null | undefined; + podIp?: string | null | undefined; + ready: boolean; + restartCount: number; + terminatedReason?: string | null | undefined; + uid?: string | null | undefined; + waitingReason?: string | null | undefined; +}; -export type Event8 = { - count?: number | null | undefined; - details?: any | null | undefined; - eventId?: string | null | undefined; - eventTime?: Date | null | undefined; - firstTimestamp?: Date | null | undefined; - involvedObject?: InvolvedObject6 | any | null | undefined; - lastTimestamp?: Date | null | undefined; - message: string; - raw?: any | null | undefined; - reason: string; - source?: GetResourceDeploymentDetailSource6 | any | null | undefined; - type?: string | null | undefined; +export type Replicas4 = { + available?: number | null | undefined; + current?: number | null | undefined; + desired?: number | null | undefined; + misscheduled?: number | null | undefined; + ready?: number | null | undefined; + updated?: number | null | undefined; }; -export const Reason15 = { +export const GetResourceDeploymentDetailReason17 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason15 = ClosedEnum; +export type GetResourceDeploymentDetailReason17 = ClosedEnum< + typeof GetResourceDeploymentDetailReason17 +>; -export const CollectionIssueSeverity15 = { +export const CollectionIssueSeverity17 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity15 = ClosedEnum< - typeof CollectionIssueSeverity15 +export type CollectionIssueSeverity17 = ClosedEnum< + typeof CollectionIssueSeverity17 >; -export type CollectionIssue15 = { +export type CollectionIssue17 = { message: string; - reason: Reason15; - severity: CollectionIssueSeverity15; + reason: GetResourceDeploymentDetailReason17; + severity: CollectionIssueSeverity17; source: string; }; -export const Health15 = { +export const Health17 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health15 = ClosedEnum; +export type Health17 = ClosedEnum; -export const Lifecycle15 = { +export const Lifecycle17 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -5161,54 +5677,54 @@ export const Lifecycle15 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle15 = ClosedEnum; +export type Lifecycle17 = ClosedEnum; -export type DataStatus15 = { - collectionIssues: Array; - health: Health15; - lifecycle: Lifecycle15; +export type DataStatus17 = { + collectionIssues: Array; + health: Health17; + lifecycle: Lifecycle17; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataAzure1 = { - assignedMachines: number; - capacityGroup: string; - commandSupported: boolean; - daemonInstances: Array; - daemonName?: string | undefined; - desiredMachines: number; - events: Array; - healthyInstances: number; - horizonClusterId: string; - horizonStatus: string; - horizonStatusMessage?: string | null | undefined; - horizonStatusReason?: string | null | undefined; - latestUpdateTimestamp: string; - status: DataStatus15; - unavailableInstances: number; - backend: "azure"; -}; - -export const CpuDaemonInstanceUnit2 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuDaemonInstanceUnit2 = ClosedEnum; - -export type CpuDaemonInstance2 = { - unit: CpuDaemonInstanceUnit2; - value: number; +export type WorkloadCondition3 = { + lastTransitionTime?: Date | null | undefined; + message?: string | null | undefined; + reason?: string | null | undefined; + status: string; + type: string; }; -export type DaemonInstanceCpuUnion2 = CpuDaemonInstance2 | any; - -export const MemoryDaemonInstanceUnit2 = { +export type Workload3 = { + availableReplicas?: number | null | undefined; + conditions: Array; + desiredGeneration?: number | null | undefined; + desiredReplicas?: number | null | undefined; + observedGeneration?: number | null | undefined; + readyReplicas?: number | null | undefined; + rolloutReason?: string | null | undefined; + updatedReplicas?: number | null | undefined; +}; + +export type WorkloadUnion3 = Workload3 | any; + +export type DataKubernetes3 = { + commandSupported: boolean; + cpu?: Cpu6 | any | null | undefined; + events: Array; + memory?: Memory6 | any | null | undefined; + name: string; + namespace: string; + pods: Array; + replicas: Replicas4; + restarts?: number | null | undefined; + status: DataStatus17; + workload?: Workload3 | any | null | undefined; + backend: "kubernetes"; +}; + +export const CpuDaemonInstanceUnit4 = { Count: "count", Percent: "percent", Bytes: "bytes", @@ -5216,22 +5732,39 @@ export const MemoryDaemonInstanceUnit2 = { Milliseconds: "milliseconds", RequestsPerSecond: "requests-per-second", } as const; -export type MemoryDaemonInstanceUnit2 = ClosedEnum< - typeof MemoryDaemonInstanceUnit2 +export type CpuDaemonInstanceUnit4 = ClosedEnum; + +export type CpuDaemonInstance4 = { + unit: CpuDaemonInstanceUnit4; + value: number; +}; + +export type DaemonInstanceCpuUnion4 = CpuDaemonInstance4 | any; + +export const MemoryDaemonInstanceUnit4 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryDaemonInstanceUnit4 = ClosedEnum< + typeof MemoryDaemonInstanceUnit4 >; -export type MemoryDaemonInstance2 = { - unit: MemoryDaemonInstanceUnit2; +export type MemoryDaemonInstance4 = { + unit: MemoryDaemonInstanceUnit4; value: number; }; -export type DaemonInstanceMemoryUnion2 = MemoryDaemonInstance2 | any; +export type DaemonInstanceMemoryUnion4 = MemoryDaemonInstance4 | any; -export type DaemonInstance2 = { - cpu?: CpuDaemonInstance2 | any | null | undefined; +export type DaemonInstance4 = { + cpu?: CpuDaemonInstance4 | any | null | undefined; ip?: string | null | undefined; machineId?: string | null | undefined; - memory?: MemoryDaemonInstance2 | any | null | undefined; + memory?: MemoryDaemonInstance4 | any | null | undefined; message?: string | null | undefined; metricsHealthy?: boolean | null | undefined; metricsLastUpdated?: string | null | undefined; @@ -5248,7 +5781,7 @@ export type DaemonInstance2 = { waitingReason?: string | null | undefined; }; -export type InvolvedObject5 = { +export type InvolvedObject7 = { details?: any | null | undefined; id?: string | null | undefined; kind?: string | null | undefined; @@ -5257,64 +5790,66 @@ export type InvolvedObject5 = { replicaId?: string | null | undefined; }; -export type InvolvedObjectUnion5 = InvolvedObject5 | any; +export type InvolvedObjectUnion7 = InvolvedObject7 | any; -export type GetResourceDeploymentDetailSource5 = { +export type SourceEvent7 = { component?: string | null | undefined; host?: string | null | undefined; }; -export type SourceUnion5 = GetResourceDeploymentDetailSource5 | any; +export type SourceUnion7 = SourceEvent7 | any; -export type Event7 = { +export type Event9 = { count?: number | null | undefined; details?: any | null | undefined; eventId?: string | null | undefined; eventTime?: Date | null | undefined; firstTimestamp?: Date | null | undefined; - involvedObject?: InvolvedObject5 | any | null | undefined; + involvedObject?: InvolvedObject7 | any | null | undefined; lastTimestamp?: Date | null | undefined; message: string; raw?: any | null | undefined; reason: string; - source?: GetResourceDeploymentDetailSource5 | any | null | undefined; + source?: SourceEvent7 | any | null | undefined; type?: string | null | undefined; }; -export const Reason14 = { +export const GetResourceDeploymentDetailReason16 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason14 = ClosedEnum; +export type GetResourceDeploymentDetailReason16 = ClosedEnum< + typeof GetResourceDeploymentDetailReason16 +>; -export const CollectionIssueSeverity14 = { +export const CollectionIssueSeverity16 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity14 = ClosedEnum< - typeof CollectionIssueSeverity14 +export type CollectionIssueSeverity16 = ClosedEnum< + typeof CollectionIssueSeverity16 >; -export type CollectionIssue14 = { +export type CollectionIssue16 = { message: string; - reason: Reason14; - severity: CollectionIssueSeverity14; + reason: GetResourceDeploymentDetailReason16; + severity: CollectionIssueSeverity16; source: string; }; -export const Health14 = { +export const Health16 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health14 = ClosedEnum; +export type Health16 = ClosedEnum; -export const Lifecycle14 = { +export const Lifecycle16 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -5326,37 +5861,38 @@ export const Lifecycle14 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle14 = ClosedEnum; +export type Lifecycle16 = ClosedEnum; -export type DataStatus14 = { - collectionIssues: Array; - health: Health14; - lifecycle: Lifecycle14; +export type DataStatus16 = { + collectionIssues: Array; + health: Health16; + lifecycle: Lifecycle16; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataGcp1 = { +export type DataMachines1 = { assignedMachines: number; capacityGroup: string; commandSupported: boolean; - daemonInstances: Array; + daemonInstances: Array; daemonName?: string | undefined; desiredMachines: number; - events: Array; + events: Array; healthyInstances: number; horizonClusterId: string; horizonStatus: string; horizonStatusMessage?: string | null | undefined; horizonStatusReason?: string | null | undefined; latestUpdateTimestamp: string; - status: DataStatus14; + observedImage?: string | null | undefined; + status: DataStatus16; unavailableInstances: number; - backend: "gcp"; + backend: "machines"; }; -export const CpuDaemonInstanceUnit1 = { +export const CpuDaemonInstanceUnit3 = { Count: "count", Percent: "percent", Bytes: "bytes", @@ -5364,16 +5900,16 @@ export const CpuDaemonInstanceUnit1 = { Milliseconds: "milliseconds", RequestsPerSecond: "requests-per-second", } as const; -export type CpuDaemonInstanceUnit1 = ClosedEnum; +export type CpuDaemonInstanceUnit3 = ClosedEnum; -export type CpuDaemonInstance1 = { - unit: CpuDaemonInstanceUnit1; +export type CpuDaemonInstance3 = { + unit: CpuDaemonInstanceUnit3; value: number; }; -export type DaemonInstanceCpuUnion1 = CpuDaemonInstance1 | any; +export type DaemonInstanceCpuUnion3 = CpuDaemonInstance3 | any; -export const MemoryDaemonInstanceUnit1 = { +export const MemoryDaemonInstanceUnit3 = { Count: "count", Percent: "percent", Bytes: "bytes", @@ -5381,22 +5917,22 @@ export const MemoryDaemonInstanceUnit1 = { Milliseconds: "milliseconds", RequestsPerSecond: "requests-per-second", } as const; -export type MemoryDaemonInstanceUnit1 = ClosedEnum< - typeof MemoryDaemonInstanceUnit1 +export type MemoryDaemonInstanceUnit3 = ClosedEnum< + typeof MemoryDaemonInstanceUnit3 >; -export type MemoryDaemonInstance1 = { - unit: MemoryDaemonInstanceUnit1; +export type MemoryDaemonInstance3 = { + unit: MemoryDaemonInstanceUnit3; value: number; }; -export type DaemonInstanceMemoryUnion1 = MemoryDaemonInstance1 | any; +export type DaemonInstanceMemoryUnion3 = MemoryDaemonInstance3 | any; -export type DaemonInstance1 = { - cpu?: CpuDaemonInstance1 | any | null | undefined; +export type DaemonInstance3 = { + cpu?: CpuDaemonInstance3 | any | null | undefined; ip?: string | null | undefined; machineId?: string | null | undefined; - memory?: MemoryDaemonInstance1 | any | null | undefined; + memory?: MemoryDaemonInstance3 | any | null | undefined; message?: string | null | undefined; metricsHealthy?: boolean | null | undefined; metricsLastUpdated?: string | null | undefined; @@ -5413,7 +5949,7 @@ export type DaemonInstance1 = { waitingReason?: string | null | undefined; }; -export type InvolvedObject4 = { +export type InvolvedObject6 = { details?: any | null | undefined; id?: string | null | undefined; kind?: string | null | undefined; @@ -5422,64 +5958,66 @@ export type InvolvedObject4 = { replicaId?: string | null | undefined; }; -export type InvolvedObjectUnion4 = InvolvedObject4 | any; +export type InvolvedObjectUnion6 = InvolvedObject6 | any; -export type GetResourceDeploymentDetailSource4 = { +export type SourceEvent6 = { component?: string | null | undefined; host?: string | null | undefined; }; -export type SourceUnion4 = GetResourceDeploymentDetailSource4 | any; +export type SourceUnion6 = SourceEvent6 | any; -export type Event6 = { +export type Event8 = { count?: number | null | undefined; details?: any | null | undefined; eventId?: string | null | undefined; eventTime?: Date | null | undefined; firstTimestamp?: Date | null | undefined; - involvedObject?: InvolvedObject4 | any | null | undefined; + involvedObject?: InvolvedObject6 | any | null | undefined; lastTimestamp?: Date | null | undefined; message: string; raw?: any | null | undefined; reason: string; - source?: GetResourceDeploymentDetailSource4 | any | null | undefined; + source?: SourceEvent6 | any | null | undefined; type?: string | null | undefined; }; -export const Reason13 = { +export const GetResourceDeploymentDetailReason15 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason13 = ClosedEnum; +export type GetResourceDeploymentDetailReason15 = ClosedEnum< + typeof GetResourceDeploymentDetailReason15 +>; -export const CollectionIssueSeverity13 = { +export const CollectionIssueSeverity15 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity13 = ClosedEnum< - typeof CollectionIssueSeverity13 +export type CollectionIssueSeverity15 = ClosedEnum< + typeof CollectionIssueSeverity15 >; -export type CollectionIssue13 = { +export type CollectionIssue15 = { message: string; - reason: Reason13; - severity: CollectionIssueSeverity13; + reason: GetResourceDeploymentDetailReason15; + severity: CollectionIssueSeverity15; source: string; }; -export const Health13 = { +export const Health15 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health13 = ClosedEnum; +export type Health15 = ClosedEnum; -export const Lifecycle13 = { +export const Lifecycle15 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -5491,56 +6029,38 @@ export const Lifecycle13 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle13 = ClosedEnum; +export type Lifecycle15 = ClosedEnum; -export type DataStatus13 = { - collectionIssues: Array; - health: Health13; - lifecycle: Lifecycle13; +export type DataStatus15 = { + collectionIssues: Array; + health: Health15; + lifecycle: Lifecycle15; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataAws1 = { +export type DataAzure1 = { assignedMachines: number; capacityGroup: string; commandSupported: boolean; - daemonInstances: Array; + daemonInstances: Array; daemonName?: string | undefined; desiredMachines: number; - events: Array; + events: Array; healthyInstances: number; horizonClusterId: string; horizonStatus: string; horizonStatusMessage?: string | null | undefined; horizonStatusReason?: string | null | undefined; latestUpdateTimestamp: string; - status: DataStatus13; + observedImage?: string | null | undefined; + status: DataStatus15; unavailableInstances: number; - backend: "aws"; -}; - -export type DataUnion4 = - | DataAws1 - | DataGcp1 - | DataAzure1 - | DataMachines1 - | DataKubernetes3 - | DataLocal4; - -export type DataDaemon = { - data: - | DataAws1 - | DataGcp1 - | DataAzure1 - | DataMachines1 - | DataKubernetes3 - | DataLocal4; - resourceType: "daemon"; + backend: "azure"; }; -export const ContainerUnitCpuUnit = { +export const CpuDaemonInstanceUnit2 = { Count: "count", Percent: "percent", Bytes: "bytes", @@ -5548,23 +6068,16 @@ export const ContainerUnitCpuUnit = { Milliseconds: "milliseconds", RequestsPerSecond: "requests-per-second", } as const; -export type ContainerUnitCpuUnit = ClosedEnum; +export type CpuDaemonInstanceUnit2 = ClosedEnum; -export type ContainerUnitCpu = { - unit: ContainerUnitCpuUnit; +export type CpuDaemonInstance2 = { + unit: CpuDaemonInstanceUnit2; value: number; }; -export type ContainerUnitCpuUnion = ContainerUnitCpu | any; - -export const ContainerUnitKind = { - Container: "container", - Process: "process", - Daemon: "daemon", -} as const; -export type ContainerUnitKind = ClosedEnum; +export type DaemonInstanceCpuUnion2 = CpuDaemonInstance2 | any; -export const ContainerUnitMemoryUnit = { +export const MemoryDaemonInstanceUnit2 = { Count: "count", Percent: "percent", Bytes: "bytes", @@ -5572,123 +6085,107 @@ export const ContainerUnitMemoryUnit = { Milliseconds: "milliseconds", RequestsPerSecond: "requests-per-second", } as const; -export type ContainerUnitMemoryUnit = ClosedEnum< - typeof ContainerUnitMemoryUnit +export type MemoryDaemonInstanceUnit2 = ClosedEnum< + typeof MemoryDaemonInstanceUnit2 >; -export type ContainerUnitMemory = { - unit: ContainerUnitMemoryUnit; +export type MemoryDaemonInstance2 = { + unit: MemoryDaemonInstanceUnit2; value: number; }; -export type ContainerUnitMemoryUnion = ContainerUnitMemory | any; +export type DaemonInstanceMemoryUnion2 = MemoryDaemonInstance2 | any; -export type ContainerUnit = { - cpu?: ContainerUnitCpu | any | null | undefined; - kind: ContainerUnitKind; - memory?: ContainerUnitMemory | any | null | undefined; +export type DaemonInstance2 = { + cpu?: CpuDaemonInstance2 | any | null | undefined; + ip?: string | null | undefined; + machineId?: string | null | undefined; + memory?: MemoryDaemonInstance2 | any | null | undefined; + message?: string | null | undefined; + metricsHealthy?: boolean | null | undefined; + metricsLastUpdated?: string | null | undefined; + metricsStatus?: string | null | undefined; name: string; + nodeName?: string | null | undefined; phase?: string | null | undefined; - pid?: number | null | undefined; ready: boolean; + reason?: string | null | undefined; + replicaId: string; restartCount?: number | null | undefined; - unitId: string; + status?: string | null | undefined; + terminatedReason?: string | null | undefined; + waitingReason?: string | null | undefined; }; -export type ContainerUnitUnion = ContainerUnit | any; - -export const CpuUnit5 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuUnit5 = ClosedEnum; - -export type Cpu5 = { - unit: CpuUnit5; - value: number; -}; - -export type CpuUnion5 = Cpu5 | any; - -export const EventSeverity2 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type EventSeverity2 = ClosedEnum; - -export type Subject2 = { +export type InvolvedObject5 = { + details?: any | null | undefined; id?: string | null | undefined; - kind: string; + kind?: string | null | undefined; + machineId?: string | null | undefined; name?: string | null | undefined; + replicaId?: string | null | undefined; }; -export type SubjectUnion2 = Subject2 | any; +export type InvolvedObjectUnion5 = InvolvedObject5 | any; -export type Event5 = { - kind: string; - message: string; - raw?: any | null | undefined; - severity: EventSeverity2; - subject?: Subject2 | any | null | undefined; - timestamp: Date; +export type SourceEvent5 = { + component?: string | null | undefined; + host?: string | null | undefined; }; -export const MemoryUnit5 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryUnit5 = ClosedEnum; +export type SourceUnion5 = SourceEvent5 | any; -export type Memory5 = { - unit: MemoryUnit5; - value: number; +export type Event7 = { + count?: number | null | undefined; + details?: any | null | undefined; + eventId?: string | null | undefined; + eventTime?: Date | null | undefined; + firstTimestamp?: Date | null | undefined; + involvedObject?: InvolvedObject5 | any | null | undefined; + lastTimestamp?: Date | null | undefined; + message: string; + raw?: any | null | undefined; + reason: string; + source?: SourceEvent5 | any | null | undefined; + type?: string | null | undefined; }; -export type MemoryUnion5 = Memory5 | any; - -export const Reason12 = { +export const GetResourceDeploymentDetailReason14 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason12 = ClosedEnum; +export type GetResourceDeploymentDetailReason14 = ClosedEnum< + typeof GetResourceDeploymentDetailReason14 +>; -export const CollectionIssueSeverity12 = { +export const CollectionIssueSeverity14 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity12 = ClosedEnum< - typeof CollectionIssueSeverity12 +export type CollectionIssueSeverity14 = ClosedEnum< + typeof CollectionIssueSeverity14 >; -export type CollectionIssue12 = { +export type CollectionIssue14 = { message: string; - reason: Reason12; - severity: CollectionIssueSeverity12; + reason: GetResourceDeploymentDetailReason14; + severity: CollectionIssueSeverity14; source: string; }; -export const Health12 = { +export const Health14 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health12 = ClosedEnum; +export type Health14 = ClosedEnum; -export const Lifecycle12 = { +export const Lifecycle14 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -5700,36 +6197,38 @@ export const Lifecycle12 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle12 = ClosedEnum; +export type Lifecycle14 = ClosedEnum; -export type DataStatus12 = { - collectionIssues: Array; - health: Health12; - lifecycle: Lifecycle12; +export type DataStatus14 = { + collectionIssues: Array; + health: Health14; + lifecycle: Lifecycle14; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataLocal3 = { - bindMountCount: number; - containerId?: string | null | undefined; - containerUnit?: ContainerUnit | any | null | undefined; - cpu?: Cpu5 | any | null | undefined; - events: Array; - image?: string | null | undefined; - localUrl?: string | null | undefined; - memory?: Memory5 | any | null | undefined; - name?: string | null | undefined; - portCount: number; - restartCount?: number | null | undefined; - runtimeReachable: boolean; - runtimeStatus?: string | null | undefined; - status: DataStatus12; - backend: "local"; +export type DataGcp1 = { + assignedMachines: number; + capacityGroup: string; + commandSupported: boolean; + daemonInstances: Array; + daemonName?: string | undefined; + desiredMachines: number; + events: Array; + healthyInstances: number; + horizonClusterId: string; + horizonStatus: string; + horizonStatusMessage?: string | null | undefined; + horizonStatusReason?: string | null | undefined; + latestUpdateTimestamp: string; + observedImage?: string | null | undefined; + status: DataStatus14; + unavailableInstances: number; + backend: "gcp"; }; -export const CpuUnit4 = { +export const CpuDaemonInstanceUnit1 = { Count: "count", Percent: "percent", Bytes: "bytes", @@ -5737,163 +6236,124 @@ export const CpuUnit4 = { Milliseconds: "milliseconds", RequestsPerSecond: "requests-per-second", } as const; -export type CpuUnit4 = ClosedEnum; +export type CpuDaemonInstanceUnit1 = ClosedEnum; -export type Cpu4 = { - unit: CpuUnit4; +export type CpuDaemonInstance1 = { + unit: CpuDaemonInstanceUnit1; value: number; }; -export type CpuUnion4 = Cpu4 | any; +export type DaemonInstanceCpuUnion1 = CpuDaemonInstance1 | any; -export type InvolvedObject3 = { - apiVersion?: string | null | undefined; - fieldPath?: string | null | undefined; +export const MemoryDaemonInstanceUnit1 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryDaemonInstanceUnit1 = ClosedEnum< + typeof MemoryDaemonInstanceUnit1 +>; + +export type MemoryDaemonInstance1 = { + unit: MemoryDaemonInstanceUnit1; + value: number; +}; + +export type DaemonInstanceMemoryUnion1 = MemoryDaemonInstance1 | any; + +export type DaemonInstance1 = { + cpu?: CpuDaemonInstance1 | any | null | undefined; + ip?: string | null | undefined; + machineId?: string | null | undefined; + memory?: MemoryDaemonInstance1 | any | null | undefined; + message?: string | null | undefined; + metricsHealthy?: boolean | null | undefined; + metricsLastUpdated?: string | null | undefined; + metricsStatus?: string | null | undefined; + name: string; + nodeName?: string | null | undefined; + phase?: string | null | undefined; + ready: boolean; + reason?: string | null | undefined; + replicaId: string; + restartCount?: number | null | undefined; + status?: string | null | undefined; + terminatedReason?: string | null | undefined; + waitingReason?: string | null | undefined; +}; + +export type InvolvedObject4 = { + details?: any | null | undefined; + id?: string | null | undefined; kind?: string | null | undefined; + machineId?: string | null | undefined; name?: string | null | undefined; - namespace?: string | null | undefined; - resourceVersion?: string | null | undefined; - uid?: string | null | undefined; + replicaId?: string | null | undefined; }; -export type InvolvedObjectUnion3 = InvolvedObject3 | any; +export type InvolvedObjectUnion4 = InvolvedObject4 | any; -export type GetResourceDeploymentDetailSource3 = { +export type SourceEvent4 = { component?: string | null | undefined; host?: string | null | undefined; }; -export type SourceUnion3 = GetResourceDeploymentDetailSource3 | any; +export type SourceUnion4 = SourceEvent4 | any; -export type Event4 = { +export type Event6 = { count?: number | null | undefined; + details?: any | null | undefined; + eventId?: string | null | undefined; eventTime?: Date | null | undefined; firstTimestamp?: Date | null | undefined; - involvedObject?: InvolvedObject3 | any | null | undefined; + involvedObject?: InvolvedObject4 | any | null | undefined; lastTimestamp?: Date | null | undefined; message: string; raw?: any | null | undefined; reason: string; - source?: GetResourceDeploymentDetailSource3 | any | null | undefined; + source?: SourceEvent4 | any | null | undefined; type?: string | null | undefined; }; -export const MemoryUnit4 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", +export const GetResourceDeploymentDetailReason13 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", } as const; -export type MemoryUnit4 = ClosedEnum; - -export type Memory4 = { - unit: MemoryUnit4; - value: number; -}; - -export type MemoryUnion4 = Memory4 | any; +export type GetResourceDeploymentDetailReason13 = ClosedEnum< + typeof GetResourceDeploymentDetailReason13 +>; -export const CpuPodUnit2 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", +export const CollectionIssueSeverity13 = { + Info: "info", + Warning: "warning", + Error: "error", } as const; -export type CpuPodUnit2 = ClosedEnum; +export type CollectionIssueSeverity13 = ClosedEnum< + typeof CollectionIssueSeverity13 +>; -export type CpuPod2 = { - unit: CpuPodUnit2; - value: number; +export type CollectionIssue13 = { + message: string; + reason: GetResourceDeploymentDetailReason13; + severity: CollectionIssueSeverity13; + source: string; }; -export type PodCpuUnion2 = CpuPod2 | any; - -export const MemoryPodUnit2 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", +export const Health13 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", } as const; -export type MemoryPodUnit2 = ClosedEnum; - -export type MemoryPod2 = { - unit: MemoryPodUnit2; - value: number; -}; +export type Health13 = ClosedEnum; -export type PodMemoryUnion2 = MemoryPod2 | any; - -export type OwnerReference2 = { - controller: boolean; - kind: string; - name: string; - uid: string; -}; - -export type Pod2 = { - cpu?: CpuPod2 | any | null | undefined; - memory?: MemoryPod2 | any | null | undefined; - name: string; - nodeName?: string | null | undefined; - ownerReferences: Array; - phase?: string | null | undefined; - podIp?: string | null | undefined; - ready: boolean; - restartCount: number; - terminatedReason?: string | null | undefined; - uid?: string | null | undefined; - waitingReason?: string | null | undefined; -}; - -export type Replicas3 = { - available?: number | null | undefined; - current?: number | null | undefined; - desired?: number | null | undefined; - misscheduled?: number | null | undefined; - ready?: number | null | undefined; - updated?: number | null | undefined; -}; - -export const Reason11 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason11 = ClosedEnum; - -export const CollectionIssueSeverity11 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity11 = ClosedEnum< - typeof CollectionIssueSeverity11 ->; - -export type CollectionIssue11 = { - message: string; - reason: Reason11; - severity: CollectionIssueSeverity11; - source: string; -}; - -export const Health11 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health11 = ClosedEnum; - -export const Lifecycle11 = { +export const Lifecycle13 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -5905,63 +6365,57 @@ export const Lifecycle11 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle11 = ClosedEnum; +export type Lifecycle13 = ClosedEnum; -export type DataStatus11 = { - collectionIssues: Array; - health: Health11; - lifecycle: Lifecycle11; +export type DataStatus13 = { + collectionIssues: Array; + health: Health13; + lifecycle: Lifecycle13; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type WorkloadCondition2 = { - lastTransitionTime?: Date | null | undefined; - message?: string | null | undefined; - reason?: string | null | undefined; - status: string; - type: string; -}; - -export type Workload2 = { - availableReplicas?: number | null | undefined; - conditions: Array; - desiredGeneration?: number | null | undefined; - desiredReplicas?: number | null | undefined; - observedGeneration?: number | null | undefined; - readyReplicas?: number | null | undefined; - rolloutReason?: string | null | undefined; - updatedReplicas?: number | null | undefined; +export type DataAws1 = { + assignedMachines: number; + capacityGroup: string; + commandSupported: boolean; + daemonInstances: Array; + daemonName?: string | undefined; + desiredMachines: number; + events: Array; + healthyInstances: number; + horizonClusterId: string; + horizonStatus: string; + horizonStatusMessage?: string | null | undefined; + horizonStatusReason?: string | null | undefined; + latestUpdateTimestamp: string; + observedImage?: string | null | undefined; + status: DataStatus13; + unavailableInstances: number; + backend: "aws"; }; -export type WorkloadUnion2 = Workload2 | any; - -export const WorkloadKind2 = { - Deployment: "deployment", - StatefulSet: "statefulSet", - DaemonSet: "daemonSet", - ReplicaSet: "replicaSet", - Pod: "pod", -} as const; -export type WorkloadKind2 = ClosedEnum; +export type DataUnion4 = + | DataAws1 + | DataGcp1 + | DataAzure1 + | DataMachines1 + | DataKubernetes3 + | DataLocal4; -export type DataKubernetes2 = { - cpu?: Cpu4 | any | null | undefined; - events: Array; - memory?: Memory4 | any | null | undefined; - name: string; - namespace: string; - pods: Array; - replicas: Replicas3; - restarts?: number | null | undefined; - status: DataStatus11; - workload?: Workload2 | any | null | undefined; - workloadKind: WorkloadKind2; - backend: "kubernetes"; +export type DataDaemon = { + data: + | DataAws1 + | DataGcp1 + | DataAzure1 + | DataMachines1 + | DataKubernetes3 + | DataLocal4; + resourceType: "daemon"; }; -export const CpuUnit3 = { +export const ContainerUnitCpuUnit = { Count: "count", Percent: "percent", Bytes: "bytes", @@ -5969,49 +6423,23 @@ export const CpuUnit3 = { Milliseconds: "milliseconds", RequestsPerSecond: "requests-per-second", } as const; -export type CpuUnit3 = ClosedEnum; +export type ContainerUnitCpuUnit = ClosedEnum; -export type Cpu3 = { - unit: CpuUnit3; +export type ContainerUnitCpu = { + unit: ContainerUnitCpuUnit; value: number; }; -export type CpuUnion3 = Cpu3 | any; - -export type InvolvedObject2 = { - details?: any | null | undefined; - id?: string | null | undefined; - kind?: string | null | undefined; - machineId?: string | null | undefined; - name?: string | null | undefined; - replicaId?: string | null | undefined; -}; - -export type InvolvedObjectUnion2 = InvolvedObject2 | any; - -export type GetResourceDeploymentDetailSource2 = { - component?: string | null | undefined; - host?: string | null | undefined; -}; - -export type SourceUnion2 = GetResourceDeploymentDetailSource2 | any; +export type ContainerUnitCpuUnion = ContainerUnitCpu | any; -export type Event3 = { - count?: number | null | undefined; - details?: any | null | undefined; - eventId?: string | null | undefined; - eventTime?: Date | null | undefined; - firstTimestamp?: Date | null | undefined; - involvedObject?: InvolvedObject2 | any | null | undefined; - lastTimestamp?: Date | null | undefined; - message: string; - raw?: any | null | undefined; - reason: string; - source?: GetResourceDeploymentDetailSource2 | any | null | undefined; - type?: string | null | undefined; -}; +export const ContainerUnitKind = { + Container: "container", + Process: "process", + Daemon: "daemon", +} as const; +export type ContainerUnitKind = ClosedEnum; -export const MemoryUnit3 = { +export const ContainerUnitMemoryUnit = { Count: "count", Percent: "percent", Bytes: "bytes", @@ -6019,16 +6447,32 @@ export const MemoryUnit3 = { Milliseconds: "milliseconds", RequestsPerSecond: "requests-per-second", } as const; -export type MemoryUnit3 = ClosedEnum; +export type ContainerUnitMemoryUnit = ClosedEnum< + typeof ContainerUnitMemoryUnit +>; -export type Memory3 = { - unit: MemoryUnit3; +export type ContainerUnitMemory = { + unit: ContainerUnitMemoryUnit; value: number; }; -export type MemoryUnion3 = Memory3 | any; +export type ContainerUnitMemoryUnion = ContainerUnitMemory | any; -export const CpuReplicaUnitUnit = { +export type ContainerUnit = { + cpu?: ContainerUnitCpu | any | null | undefined; + kind: ContainerUnitKind; + memory?: ContainerUnitMemory | any | null | undefined; + name: string; + phase?: string | null | undefined; + pid?: number | null | undefined; + ready: boolean; + restartCount?: number | null | undefined; + unitId: string; +}; + +export type ContainerUnitUnion = ContainerUnit | any; + +export const CpuUnit5 = { Count: "count", Percent: "percent", Bytes: "bytes", @@ -6036,16 +6480,40 @@ export const CpuReplicaUnitUnit = { Milliseconds: "milliseconds", RequestsPerSecond: "requests-per-second", } as const; -export type CpuReplicaUnitUnit = ClosedEnum; +export type CpuUnit5 = ClosedEnum; -export type CpuReplicaUnit = { - unit: CpuReplicaUnitUnit; +export type Cpu5 = { + unit: CpuUnit5; value: number; }; -export type ReplicaUnitCpuUnion = CpuReplicaUnit | any; +export type CpuUnion5 = Cpu5 | any; -export const MemoryReplicaUnitUnit = { +export const EventSeverity2 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type EventSeverity2 = ClosedEnum; + +export type Subject2 = { + id?: string | null | undefined; + kind: string; + name?: string | null | undefined; +}; + +export type SubjectUnion2 = Subject2 | any; + +export type Event5 = { + kind: string; + message: string; + raw?: any | null | undefined; + severity: EventSeverity2; + subject?: Subject2 | any | null | undefined; + timestamp: Date; +}; + +export const MemoryUnit5 = { Count: "count", Percent: "percent", Bytes: "bytes", @@ -6053,86 +6521,51 @@ export const MemoryReplicaUnitUnit = { Milliseconds: "milliseconds", RequestsPerSecond: "requests-per-second", } as const; -export type MemoryReplicaUnitUnit = ClosedEnum; +export type MemoryUnit5 = ClosedEnum; -export type MemoryReplicaUnit = { - unit: MemoryReplicaUnitUnit; +export type Memory5 = { + unit: MemoryUnit5; value: number; }; -export type ReplicaUnitMemoryUnion = MemoryReplicaUnit | any; - -export type ReplicaUnit = { - cpu?: CpuReplicaUnit | any | null | undefined; - ip?: string | null | undefined; - machineId?: string | null | undefined; - memory?: MemoryReplicaUnit | any | null | undefined; - message?: string | null | undefined; - metricsHealthy?: boolean | null | undefined; - metricsLastUpdated?: string | null | undefined; - metricsStatus?: string | null | undefined; - name: string; - nodeName?: string | null | undefined; - phase?: string | null | undefined; - ready: boolean; - reason?: string | null | undefined; - replicaId: string; - restartCount?: number | null | undefined; - status?: string | null | undefined; - terminatedReason?: string | null | undefined; - waitingReason?: string | null | undefined; -}; - -export type Replicas2 = { - available?: number | null | undefined; - current?: number | null | undefined; - desired?: number | null | undefined; - misscheduled?: number | null | undefined; - ready?: number | null | undefined; - updated?: number | null | undefined; -}; - -export const SchedulingMode = { - Replicated: "replicated", - Stateful: "stateful", - Daemon: "daemon", -} as const; -export type SchedulingMode = ClosedEnum; +export type MemoryUnion5 = Memory5 | any; -export const Reason10 = { +export const GetResourceDeploymentDetailReason12 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason10 = ClosedEnum; +export type GetResourceDeploymentDetailReason12 = ClosedEnum< + typeof GetResourceDeploymentDetailReason12 +>; -export const CollectionIssueSeverity10 = { +export const CollectionIssueSeverity12 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity10 = ClosedEnum< - typeof CollectionIssueSeverity10 +export type CollectionIssueSeverity12 = ClosedEnum< + typeof CollectionIssueSeverity12 >; -export type CollectionIssue10 = { +export type CollectionIssue12 = { message: string; - reason: Reason10; - severity: CollectionIssueSeverity10; + reason: GetResourceDeploymentDetailReason12; + severity: CollectionIssueSeverity12; source: string; }; -export const Health10 = { +export const Health12 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health10 = ClosedEnum; +export type Health12 = ClosedEnum; -export const Lifecycle10 = { +export const Lifecycle12 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -6144,39 +6577,36 @@ export const Lifecycle10 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle10 = ClosedEnum; +export type Lifecycle12 = ClosedEnum; -export type DataStatus10 = { - collectionIssues: Array; - health: Health10; - lifecycle: Lifecycle10; +export type DataStatus12 = { + collectionIssues: Array; + health: Health12; + lifecycle: Lifecycle12; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataHorizonPlatform = { - attentionCount: number; - containerId: string; - cpu?: Cpu3 | any | null | undefined; - events: Array; +export type DataLocal3 = { + bindMountCount: number; + containerId?: string | null | undefined; + containerUnit?: ContainerUnit | any | null | undefined; + cpu?: Cpu5 | any | null | undefined; + events: Array; image?: string | null | undefined; - memory?: Memory3 | any | null | undefined; - replicaUnits: Array; - replicas: Replicas2; - schedulingMode: SchedulingMode; - status: DataStatus10; - backend: "horizonPlatform"; -}; - -export type DataUnion3 = DataHorizonPlatform | DataKubernetes2 | DataLocal3; - -export type DataContainer = { - data: DataHorizonPlatform | DataKubernetes2 | DataLocal3; - resourceType: "container"; + localUrl?: string | null | undefined; + memory?: Memory5 | any | null | undefined; + name?: string | null | undefined; + portCount: number; + restartCount?: number | null | undefined; + runtimeReachable: boolean; + runtimeStatus?: string | null | undefined; + status: DataStatus12; + backend: "local"; }; -export const CpuUnit2 = { +export const CpuUnit4 = { Count: "count", Percent: "percent", Bytes: "bytes", @@ -6184,40 +6614,48 @@ export const CpuUnit2 = { Milliseconds: "milliseconds", RequestsPerSecond: "requests-per-second", } as const; -export type CpuUnit2 = ClosedEnum; +export type CpuUnit4 = ClosedEnum; -export type Cpu2 = { - unit: CpuUnit2; +export type Cpu4 = { + unit: CpuUnit4; value: number; }; -export type CpuUnion2 = Cpu2 | any; - -export const EventSeverity1 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type EventSeverity1 = ClosedEnum; +export type CpuUnion4 = Cpu4 | any; -export type Subject1 = { - id?: string | null | undefined; - kind: string; +export type InvolvedObject3 = { + apiVersion?: string | null | undefined; + fieldPath?: string | null | undefined; + kind?: string | null | undefined; name?: string | null | undefined; + namespace?: string | null | undefined; + resourceVersion?: string | null | undefined; + uid?: string | null | undefined; }; -export type SubjectUnion1 = Subject1 | any; +export type InvolvedObjectUnion3 = InvolvedObject3 | any; -export type Event2 = { - kind: string; +export type SourceEvent3 = { + component?: string | null | undefined; + host?: string | null | undefined; +}; + +export type SourceUnion3 = SourceEvent3 | any; + +export type Event4 = { + count?: number | null | undefined; + eventTime?: Date | null | undefined; + firstTimestamp?: Date | null | undefined; + involvedObject?: InvolvedObject3 | any | null | undefined; + lastTimestamp?: Date | null | undefined; message: string; raw?: any | null | undefined; - severity: EventSeverity1; - subject?: Subject1 | any | null | undefined; - timestamp: Date; + reason: string; + source?: SourceEvent3 | any | null | undefined; + type?: string | null | undefined; }; -export const MemoryUnit2 = { +export const MemoryUnit4 = { Count: "count", Percent: "percent", Bytes: "bytes", @@ -6225,16 +6663,16 @@ export const MemoryUnit2 = { Milliseconds: "milliseconds", RequestsPerSecond: "requests-per-second", } as const; -export type MemoryUnit2 = ClosedEnum; +export type MemoryUnit4 = ClosedEnum; -export type Memory2 = { - unit: MemoryUnit2; +export type Memory4 = { + unit: MemoryUnit4; value: number; }; -export type MemoryUnion2 = Memory2 | any; +export type MemoryUnion4 = Memory4 | any; -export const ProcessCpuUnit = { +export const CpuPodUnit2 = { Count: "count", Percent: "percent", Bytes: "bytes", @@ -6242,23 +6680,16 @@ export const ProcessCpuUnit = { Milliseconds: "milliseconds", RequestsPerSecond: "requests-per-second", } as const; -export type ProcessCpuUnit = ClosedEnum; +export type CpuPodUnit2 = ClosedEnum; -export type ProcessCpu = { - unit: ProcessCpuUnit; +export type CpuPod2 = { + unit: CpuPodUnit2; value: number; }; -export type ProcessCpuUnion = ProcessCpu | any; - -export const ProcessKind = { - Container: "container", - Process: "process", - Daemon: "daemon", -} as const; -export type ProcessKind = ClosedEnum; +export type PodCpuUnion2 = CpuPod2 | any; -export const ProcessMemoryUnit = { +export const MemoryPodUnit2 = { Count: "count", Percent: "percent", Bytes: "bytes", @@ -6266,63 +6697,82 @@ export const ProcessMemoryUnit = { Milliseconds: "milliseconds", RequestsPerSecond: "requests-per-second", } as const; -export type ProcessMemoryUnit = ClosedEnum; +export type MemoryPodUnit2 = ClosedEnum; -export type ProcessMemory = { - unit: ProcessMemoryUnit; +export type MemoryPod2 = { + unit: MemoryPodUnit2; value: number; }; -export type ProcessMemoryUnion = ProcessMemory | any; +export type PodMemoryUnion2 = MemoryPod2 | any; -export type Process = { - cpu?: ProcessCpu | any | null | undefined; - kind: ProcessKind; - memory?: ProcessMemory | any | null | undefined; +export type OwnerReference2 = { + controller: boolean; + kind: string; + name: string; + uid: string; +}; + +export type Pod2 = { + cpu?: CpuPod2 | any | null | undefined; + memory?: MemoryPod2 | any | null | undefined; name: string; + nodeName?: string | null | undefined; + ownerReferences: Array; phase?: string | null | undefined; - pid?: number | null | undefined; + podIp?: string | null | undefined; ready: boolean; - restartCount?: number | null | undefined; - unitId: string; + restartCount: number; + terminatedReason?: string | null | undefined; + uid?: string | null | undefined; + waitingReason?: string | null | undefined; }; -export type ProcessUnion = Process | any; +export type Replicas3 = { + available?: number | null | undefined; + current?: number | null | undefined; + desired?: number | null | undefined; + misscheduled?: number | null | undefined; + ready?: number | null | undefined; + updated?: number | null | undefined; +}; -export const Reason9 = { +export const GetResourceDeploymentDetailReason11 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason9 = ClosedEnum; +export type GetResourceDeploymentDetailReason11 = ClosedEnum< + typeof GetResourceDeploymentDetailReason11 +>; -export const CollectionIssueSeverity9 = { +export const CollectionIssueSeverity11 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity9 = ClosedEnum< - typeof CollectionIssueSeverity9 +export type CollectionIssueSeverity11 = ClosedEnum< + typeof CollectionIssueSeverity11 >; -export type CollectionIssue9 = { +export type CollectionIssue11 = { message: string; - reason: Reason9; - severity: CollectionIssueSeverity9; + reason: GetResourceDeploymentDetailReason11; + severity: CollectionIssueSeverity11; source: string; }; -export const Health9 = { +export const Health11 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health9 = ClosedEnum; +export type Health11 = ClosedEnum; -export const Lifecycle9 = { +export const Lifecycle11 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -6334,32 +6784,63 @@ export const Lifecycle9 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle9 = ClosedEnum; +export type Lifecycle11 = ClosedEnum; -export type DataStatus9 = { - collectionIssues: Array; - health: Health9; - lifecycle: Lifecycle9; +export type DataStatus11 = { + collectionIssues: Array; + health: Health11; + lifecycle: Lifecycle11; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataLocal2 = { - commandSupported: boolean; - cpu?: Cpu2 | any | null | undefined; - events: Array; - imagePathPresent: boolean; - memory?: Memory2 | any | null | undefined; - pid?: number | null | undefined; - process?: Process | any | null | undefined; - readinessProbeOk?: boolean | null | undefined; - status: DataStatus9; - triggerCount: number; - backend: "local"; +export type WorkloadCondition2 = { + lastTransitionTime?: Date | null | undefined; + message?: string | null | undefined; + reason?: string | null | undefined; + status: string; + type: string; }; -export const CpuUnit1 = { +export type Workload2 = { + availableReplicas?: number | null | undefined; + conditions: Array; + desiredGeneration?: number | null | undefined; + desiredReplicas?: number | null | undefined; + observedGeneration?: number | null | undefined; + readyReplicas?: number | null | undefined; + rolloutReason?: string | null | undefined; + updatedReplicas?: number | null | undefined; +}; + +export type WorkloadUnion2 = Workload2 | any; + +export const WorkloadKind2 = { + Deployment: "deployment", + StatefulSet: "statefulSet", + DaemonSet: "daemonSet", + ReplicaSet: "replicaSet", + Pod: "pod", +} as const; +export type WorkloadKind2 = ClosedEnum; + +export type DataKubernetes2 = { + cpu?: Cpu4 | any | null | undefined; + events: Array; + memory?: Memory4 | any | null | undefined; + name: string; + namespace: string; + pods: Array; + replicas: Replicas3; + restarts?: number | null | undefined; + status: DataStatus11; + workload?: Workload2 | any | null | undefined; + workloadKind: WorkloadKind2; + backend: "kubernetes"; +}; + +export const CpuUnit3 = { Count: "count", Percent: "percent", Bytes: "bytes", @@ -6367,48 +6848,49 @@ export const CpuUnit1 = { Milliseconds: "milliseconds", RequestsPerSecond: "requests-per-second", } as const; -export type CpuUnit1 = ClosedEnum; +export type CpuUnit3 = ClosedEnum; -export type Cpu1 = { - unit: CpuUnit1; +export type Cpu3 = { + unit: CpuUnit3; value: number; }; -export type CpuUnion1 = Cpu1 | any; +export type CpuUnion3 = Cpu3 | any; -export type InvolvedObject1 = { - apiVersion?: string | null | undefined; - fieldPath?: string | null | undefined; +export type InvolvedObject2 = { + details?: any | null | undefined; + id?: string | null | undefined; kind?: string | null | undefined; + machineId?: string | null | undefined; name?: string | null | undefined; - namespace?: string | null | undefined; - resourceVersion?: string | null | undefined; - uid?: string | null | undefined; + replicaId?: string | null | undefined; }; -export type InvolvedObjectUnion1 = InvolvedObject1 | any; +export type InvolvedObjectUnion2 = InvolvedObject2 | any; -export type GetResourceDeploymentDetailSource1 = { +export type SourceEvent2 = { component?: string | null | undefined; host?: string | null | undefined; }; -export type SourceUnion1 = GetResourceDeploymentDetailSource1 | any; +export type SourceUnion2 = SourceEvent2 | any; -export type Event1 = { +export type Event3 = { count?: number | null | undefined; + details?: any | null | undefined; + eventId?: string | null | undefined; eventTime?: Date | null | undefined; firstTimestamp?: Date | null | undefined; - involvedObject?: InvolvedObject1 | any | null | undefined; + involvedObject?: InvolvedObject2 | any | null | undefined; lastTimestamp?: Date | null | undefined; message: string; raw?: any | null | undefined; reason: string; - source?: GetResourceDeploymentDetailSource1 | any | null | undefined; + source?: SourceEvent2 | any | null | undefined; type?: string | null | undefined; }; -export const MemoryUnit1 = { +export const MemoryUnit3 = { Count: "count", Percent: "percent", Bytes: "bytes", @@ -6416,16 +6898,16 @@ export const MemoryUnit1 = { Milliseconds: "milliseconds", RequestsPerSecond: "requests-per-second", } as const; -export type MemoryUnit1 = ClosedEnum; +export type MemoryUnit3 = ClosedEnum; -export type Memory1 = { - unit: MemoryUnit1; +export type Memory3 = { + unit: MemoryUnit3; value: number; }; -export type MemoryUnion1 = Memory1 | any; +export type MemoryUnion3 = Memory3 | any; -export const CpuPodUnit1 = { +export const CpuReplicaUnitUnit = { Count: "count", Percent: "percent", Bytes: "bytes", @@ -6433,16 +6915,16 @@ export const CpuPodUnit1 = { Milliseconds: "milliseconds", RequestsPerSecond: "requests-per-second", } as const; -export type CpuPodUnit1 = ClosedEnum; +export type CpuReplicaUnitUnit = ClosedEnum; -export type CpuPod1 = { - unit: CpuPodUnit1; +export type CpuReplicaUnit = { + unit: CpuReplicaUnitUnit; value: number; }; -export type PodCpuUnion1 = CpuPod1 | any; +export type ReplicaUnitCpuUnion = CpuReplicaUnit | any; -export const MemoryPodUnit1 = { +export const MemoryReplicaUnitUnit = { Count: "count", Percent: "percent", Bytes: "bytes", @@ -6450,38 +6932,37 @@ export const MemoryPodUnit1 = { Milliseconds: "milliseconds", RequestsPerSecond: "requests-per-second", } as const; -export type MemoryPodUnit1 = ClosedEnum; +export type MemoryReplicaUnitUnit = ClosedEnum; -export type MemoryPod1 = { - unit: MemoryPodUnit1; +export type MemoryReplicaUnit = { + unit: MemoryReplicaUnitUnit; value: number; }; -export type PodMemoryUnion1 = MemoryPod1 | any; - -export type OwnerReference1 = { - controller: boolean; - kind: string; - name: string; - uid: string; -}; +export type ReplicaUnitMemoryUnion = MemoryReplicaUnit | any; -export type Pod1 = { - cpu?: CpuPod1 | any | null | undefined; - memory?: MemoryPod1 | any | null | undefined; +export type ReplicaUnit = { + cpu?: CpuReplicaUnit | any | null | undefined; + ip?: string | null | undefined; + machineId?: string | null | undefined; + memory?: MemoryReplicaUnit | any | null | undefined; + message?: string | null | undefined; + metricsHealthy?: boolean | null | undefined; + metricsLastUpdated?: string | null | undefined; + metricsStatus?: string | null | undefined; name: string; nodeName?: string | null | undefined; - ownerReferences: Array; phase?: string | null | undefined; - podIp?: string | null | undefined; ready: boolean; - restartCount: number; + reason?: string | null | undefined; + replicaId: string; + restartCount?: number | null | undefined; + status?: string | null | undefined; terminatedReason?: string | null | undefined; - uid?: string | null | undefined; waitingReason?: string | null | undefined; }; -export type Replicas1 = { +export type Replicas2 = { available?: number | null | undefined; current?: number | null | undefined; desired?: number | null | undefined; @@ -6490,40 +6971,49 @@ export type Replicas1 = { updated?: number | null | undefined; }; -export const Reason8 = { +export const SchedulingMode = { + Replicated: "replicated", + Stateful: "stateful", + Daemon: "daemon", +} as const; +export type SchedulingMode = ClosedEnum; + +export const GetResourceDeploymentDetailReason10 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason8 = ClosedEnum; +export type GetResourceDeploymentDetailReason10 = ClosedEnum< + typeof GetResourceDeploymentDetailReason10 +>; -export const CollectionIssueSeverity8 = { +export const CollectionIssueSeverity10 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity8 = ClosedEnum< - typeof CollectionIssueSeverity8 +export type CollectionIssueSeverity10 = ClosedEnum< + typeof CollectionIssueSeverity10 >; -export type CollectionIssue8 = { +export type CollectionIssue10 = { message: string; - reason: Reason8; - severity: CollectionIssueSeverity8; + reason: GetResourceDeploymentDetailReason10; + severity: CollectionIssueSeverity10; source: string; }; -export const Health8 = { +export const Health10 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health8 = ClosedEnum; +export type Health10 = ClosedEnum; -export const Lifecycle8 = { +export const Lifecycle10 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -6535,243 +7025,189 @@ export const Lifecycle8 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle8 = ClosedEnum; +export type Lifecycle10 = ClosedEnum; -export type DataStatus8 = { - collectionIssues: Array; - health: Health8; - lifecycle: Lifecycle8; +export type DataStatus10 = { + collectionIssues: Array; + health: Health10; + lifecycle: Lifecycle10; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type WorkloadCondition1 = { - lastTransitionTime?: Date | null | undefined; - message?: string | null | undefined; - reason?: string | null | undefined; - status: string; - type: string; +export type DataHorizonPlatform = { + attentionCount: number; + containerId: string; + cpu?: Cpu3 | any | null | undefined; + events: Array; + image?: string | null | undefined; + latestUpdateTimestamp?: string | null | undefined; + memory?: Memory3 | any | null | undefined; + observedImage?: string | null | undefined; + replicaUnits: Array; + replicas: Replicas2; + schedulingMode: SchedulingMode; + status: DataStatus10; + backend: "horizonPlatform"; }; -export type Workload1 = { - availableReplicas?: number | null | undefined; - conditions: Array; - desiredGeneration?: number | null | undefined; - desiredReplicas?: number | null | undefined; - observedGeneration?: number | null | undefined; - readyReplicas?: number | null | undefined; - rolloutReason?: string | null | undefined; - updatedReplicas?: number | null | undefined; -}; +export type DataUnion3 = DataHorizonPlatform | DataKubernetes2 | DataLocal3; -export type WorkloadUnion1 = Workload1 | any; +export type DataContainer = { + data: DataHorizonPlatform | DataKubernetes2 | DataLocal3; + resourceType: "container"; +}; -export const WorkloadKind1 = { - Deployment: "deployment", - StatefulSet: "statefulSet", - DaemonSet: "daemonSet", - ReplicaSet: "replicaSet", - Pod: "pod", +export const CpuUnit2 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", } as const; -export type WorkloadKind1 = ClosedEnum; +export type CpuUnit2 = ClosedEnum; -export type DataKubernetes1 = { - cpu?: Cpu1 | any | null | undefined; - events: Array; - memory?: Memory1 | any | null | undefined; - name: string; - namespace: string; - pods: Array; - replicas: Replicas1; - restarts?: number | null | undefined; - status: DataStatus8; - triggerCount: number; - workload?: Workload1 | any | null | undefined; - workloadKind: WorkloadKind1; - backend: "kubernetes"; +export type Cpu2 = { + unit: CpuUnit2; + value: number; }; -export const Reason7 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason7 = ClosedEnum; +export type CpuUnion2 = Cpu2 | any; -export const CollectionIssueSeverity7 = { +export const EventSeverity1 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity7 = ClosedEnum< - typeof CollectionIssueSeverity7 ->; +export type EventSeverity1 = ClosedEnum; -export type CollectionIssue7 = { - message: string; - reason: Reason7; - severity: CollectionIssueSeverity7; - source: string; +export type Subject1 = { + id?: string | null | undefined; + kind: string; + name?: string | null | undefined; }; -export const Health7 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health7 = ClosedEnum; - -export const Lifecycle7 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle7 = ClosedEnum; +export type SubjectUnion1 = Subject1 | any; -export type DataStatus7 = { - collectionIssues: Array; - health: Health7; - lifecycle: Lifecycle7; - message?: string | null | undefined; - partial: boolean; - stale: boolean; +export type Event2 = { + kind: string; + message: string; + raw?: any | null | undefined; + severity: EventSeverity1; + subject?: Subject1 | any | null | undefined; + timestamp: Date; }; -export type DataAzureContainerApps1 = { - appName: string; - cpu?: number | null | undefined; - environmentName?: string | null | undefined; - ingressFqdn?: string | null | undefined; - maxReplicas?: number | null | undefined; - memory?: string | null | undefined; - minReplicas?: number | null | undefined; - provisioningState?: string | null | undefined; - revision?: string | null | undefined; - runningStatus?: string | null | undefined; - status: DataStatus7; - backend: "azureContainerApps"; +export const MemoryUnit2 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryUnit2 = ClosedEnum; + +export type Memory2 = { + unit: MemoryUnit2; + value: number; }; -export const Reason6 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason6 = ClosedEnum; +export type MemoryUnion2 = Memory2 | any; -export const CollectionIssueSeverity6 = { - Info: "info", - Warning: "warning", - Error: "error", +export const ProcessCpuUnit = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", } as const; -export type CollectionIssueSeverity6 = ClosedEnum< - typeof CollectionIssueSeverity6 ->; +export type ProcessCpuUnit = ClosedEnum; -export type CollectionIssue6 = { - message: string; - reason: Reason6; - severity: CollectionIssueSeverity6; - source: string; +export type ProcessCpu = { + unit: ProcessCpuUnit; + value: number; }; -export const Health6 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", +export type ProcessCpuUnion = ProcessCpu | any; + +export const ProcessKind = { + Container: "container", + Process: "process", + Daemon: "daemon", } as const; -export type Health6 = ClosedEnum; +export type ProcessKind = ClosedEnum; -export const Lifecycle6 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", +export const ProcessMemoryUnit = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", } as const; -export type Lifecycle6 = ClosedEnum; +export type ProcessMemoryUnit = ClosedEnum; -export type DataStatus6 = { - collectionIssues: Array; - health: Health6; - lifecycle: Lifecycle6; - message?: string | null | undefined; - partial: boolean; - stale: boolean; +export type ProcessMemory = { + unit: ProcessMemoryUnit; + value: number; }; -export type DataGcpCloudRun = { - containerImage?: string | null | undefined; - cpuLimit?: string | null | undefined; - generation?: number | null | undefined; - latestCreatedRevision?: string | null | undefined; - latestReadyRevision?: string | null | undefined; - maxInstanceCount?: number | null | undefined; - memoryLimit?: string | null | undefined; - minInstanceCount?: number | null | undefined; - observedGeneration?: number | null | undefined; - region?: string | null | undefined; - service: string; - status: DataStatus6; - trafficCount: number; - uri?: string | null | undefined; - urls: Array; - backend: "gcpCloudRun"; +export type ProcessMemoryUnion = ProcessMemory | any; + +export type Process = { + cpu?: ProcessCpu | any | null | undefined; + kind: ProcessKind; + memory?: ProcessMemory | any | null | undefined; + name: string; + phase?: string | null | undefined; + pid?: number | null | undefined; + ready: boolean; + restartCount?: number | null | undefined; + unitId: string; }; -export const Reason5 = { +export type ProcessUnion = Process | any; + +export const GetResourceDeploymentDetailReason9 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason5 = ClosedEnum; +export type GetResourceDeploymentDetailReason9 = ClosedEnum< + typeof GetResourceDeploymentDetailReason9 +>; -export const CollectionIssueSeverity5 = { +export const CollectionIssueSeverity9 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity5 = ClosedEnum< - typeof CollectionIssueSeverity5 +export type CollectionIssueSeverity9 = ClosedEnum< + typeof CollectionIssueSeverity9 >; -export type CollectionIssue5 = { +export type CollectionIssue9 = { message: string; - reason: Reason5; - severity: CollectionIssueSeverity5; + reason: GetResourceDeploymentDetailReason9; + severity: CollectionIssueSeverity9; source: string; }; -export const Health5 = { +export const Health9 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health5 = ClosedEnum; +export type Health9 = ClosedEnum; -export const Lifecycle5 = { +export const Lifecycle9 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -6783,92 +7219,198 @@ export const Lifecycle5 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle5 = ClosedEnum; +export type Lifecycle9 = ClosedEnum; -export type DataStatus5 = { - collectionIssues: Array; - health: Health5; - lifecycle: Lifecycle5; +export type DataStatus9 = { + collectionIssues: Array; + health: Health9; + lifecycle: Lifecycle9; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataAwsLambda = { - codeSha256?: string | null | undefined; - functionName: string; - functionUrlAuthType?: string | null | undefined; - functionUrlCorsPresent: boolean; - lastModified?: string | null | undefined; - lastUpdateStatus?: string | null | undefined; - lastUpdateStatusReason?: string | null | undefined; - lastUpdateStatusReasonCode?: string | null | undefined; - layerCount: number; - memorySizeMb?: number | null | undefined; - packageType?: string | null | undefined; - revisionId?: string | null | undefined; - runtime?: string | null | undefined; - state?: string | null | undefined; - stateReason?: string | null | undefined; - stateReasonCode?: string | null | undefined; - status: DataStatus5; - timeoutSeconds?: number | null | undefined; +export type DataLocal2 = { + commandSupported: boolean; + cpu?: Cpu2 | any | null | undefined; + events: Array; + imagePathPresent: boolean; + memory?: Memory2 | any | null | undefined; + pid?: number | null | undefined; + process?: Process | any | null | undefined; + readinessProbeOk?: boolean | null | undefined; + status: DataStatus9; triggerCount: number; - version?: string | null | undefined; - backend: "awsLambda"; + backend: "local"; }; -export type DataUnion2 = - | DataAwsLambda - | DataGcpCloudRun - | DataAzureContainerApps1 - | DataKubernetes1 - | DataLocal2; +export const CpuUnit1 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuUnit1 = ClosedEnum; -export type DataWorker = { - data: - | DataAwsLambda - | DataGcpCloudRun - | DataAzureContainerApps1 - | DataKubernetes1 - | DataLocal2; - resourceType: "worker"; +export type Cpu1 = { + unit: CpuUnit1; + value: number; }; -export const Reason4 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason4 = ClosedEnum; +export type CpuUnion1 = Cpu1 | any; -export const CollectionIssueSeverity4 = { +export type InvolvedObject1 = { + apiVersion?: string | null | undefined; + fieldPath?: string | null | undefined; + kind?: string | null | undefined; + name?: string | null | undefined; + namespace?: string | null | undefined; + resourceVersion?: string | null | undefined; + uid?: string | null | undefined; +}; + +export type InvolvedObjectUnion1 = InvolvedObject1 | any; + +export type SourceEvent1 = { + component?: string | null | undefined; + host?: string | null | undefined; +}; + +export type SourceUnion1 = SourceEvent1 | any; + +export type Event1 = { + count?: number | null | undefined; + eventTime?: Date | null | undefined; + firstTimestamp?: Date | null | undefined; + involvedObject?: InvolvedObject1 | any | null | undefined; + lastTimestamp?: Date | null | undefined; + message: string; + raw?: any | null | undefined; + reason: string; + source?: SourceEvent1 | any | null | undefined; + type?: string | null | undefined; +}; + +export const MemoryUnit1 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryUnit1 = ClosedEnum; + +export type Memory1 = { + unit: MemoryUnit1; + value: number; +}; + +export type MemoryUnion1 = Memory1 | any; + +export const CpuPodUnit1 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuPodUnit1 = ClosedEnum; + +export type CpuPod1 = { + unit: CpuPodUnit1; + value: number; +}; + +export type PodCpuUnion1 = CpuPod1 | any; + +export const MemoryPodUnit1 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryPodUnit1 = ClosedEnum; + +export type MemoryPod1 = { + unit: MemoryPodUnit1; + value: number; +}; + +export type PodMemoryUnion1 = MemoryPod1 | any; + +export type OwnerReference1 = { + controller: boolean; + kind: string; + name: string; + uid: string; +}; + +export type Pod1 = { + cpu?: CpuPod1 | any | null | undefined; + memory?: MemoryPod1 | any | null | undefined; + name: string; + nodeName?: string | null | undefined; + ownerReferences: Array; + phase?: string | null | undefined; + podIp?: string | null | undefined; + ready: boolean; + restartCount: number; + terminatedReason?: string | null | undefined; + uid?: string | null | undefined; + waitingReason?: string | null | undefined; +}; + +export type Replicas1 = { + available?: number | null | undefined; + current?: number | null | undefined; + desired?: number | null | undefined; + misscheduled?: number | null | undefined; + ready?: number | null | undefined; + updated?: number | null | undefined; +}; + +export const GetResourceDeploymentDetailReason8 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type GetResourceDeploymentDetailReason8 = ClosedEnum< + typeof GetResourceDeploymentDetailReason8 +>; + +export const CollectionIssueSeverity8 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity4 = ClosedEnum< - typeof CollectionIssueSeverity4 +export type CollectionIssueSeverity8 = ClosedEnum< + typeof CollectionIssueSeverity8 >; -export type CollectionIssue4 = { +export type CollectionIssue8 = { message: string; - reason: Reason4; - severity: CollectionIssueSeverity4; + reason: GetResourceDeploymentDetailReason8; + severity: CollectionIssueSeverity8; source: string; }; -export const Health4 = { +export const Health8 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health4 = ClosedEnum; +export type Health8 = ClosedEnum; -export const Lifecycle4 = { +export const Lifecycle8 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -6880,61 +7422,99 @@ export const Lifecycle4 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle4 = ClosedEnum; +export type Lifecycle8 = ClosedEnum; -export type DataStatus4 = { - collectionIssues: Array; - health: Health4; - lifecycle: Lifecycle4; +export type DataStatus8 = { + collectionIssues: Array; + health: Health8; + lifecycle: Lifecycle8; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataLocal1 = { - isDirectory?: boolean | null | undefined; - modifiedAt?: Date | null | undefined; - path: string; - pathExists: boolean; - readonly?: boolean | null | undefined; - status: DataStatus4; - backend: "local"; +export type WorkloadCondition1 = { + lastTransitionTime?: Date | null | undefined; + message?: string | null | undefined; + reason?: string | null | undefined; + status: string; + type: string; +}; + +export type Workload1 = { + availableReplicas?: number | null | undefined; + conditions: Array; + desiredGeneration?: number | null | undefined; + desiredReplicas?: number | null | undefined; + observedGeneration?: number | null | undefined; + readyReplicas?: number | null | undefined; + rolloutReason?: string | null | undefined; + updatedReplicas?: number | null | undefined; +}; + +export type WorkloadUnion1 = Workload1 | any; + +export const WorkloadKind1 = { + Deployment: "deployment", + StatefulSet: "statefulSet", + DaemonSet: "daemonSet", + ReplicaSet: "replicaSet", + Pod: "pod", +} as const; +export type WorkloadKind1 = ClosedEnum; + +export type DataKubernetes1 = { + cpu?: Cpu1 | any | null | undefined; + events: Array; + memory?: Memory1 | any | null | undefined; + name: string; + namespace: string; + pods: Array; + replicas: Replicas1; + restarts?: number | null | undefined; + status: DataStatus8; + triggerCount: number; + workload?: Workload1 | any | null | undefined; + workloadKind: WorkloadKind1; + backend: "kubernetes"; }; -export const Reason3 = { +export const GetResourceDeploymentDetailReason7 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason3 = ClosedEnum; +export type GetResourceDeploymentDetailReason7 = ClosedEnum< + typeof GetResourceDeploymentDetailReason7 +>; -export const CollectionIssueSeverity3 = { +export const CollectionIssueSeverity7 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity3 = ClosedEnum< - typeof CollectionIssueSeverity3 +export type CollectionIssueSeverity7 = ClosedEnum< + typeof CollectionIssueSeverity7 >; -export type CollectionIssue3 = { +export type CollectionIssue7 = { message: string; - reason: Reason3; - severity: CollectionIssueSeverity3; + reason: GetResourceDeploymentDetailReason7; + severity: CollectionIssueSeverity7; source: string; }; -export const Health3 = { +export const Health7 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health3 = ClosedEnum; +export type Health7 = ClosedEnum; -export const Lifecycle3 = { +export const Lifecycle7 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -6946,84 +7526,68 @@ export const Lifecycle3 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle3 = ClosedEnum; +export type Lifecycle7 = ClosedEnum; -export type DataStatus3 = { - collectionIssues: Array; - health: Health3; - lifecycle: Lifecycle3; +export type DataStatus7 = { + collectionIssues: Array; + health: Health7; + lifecycle: Lifecycle7; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataAzureBlob = { - accessTier?: string | null | undefined; - accountKind?: string | null | undefined; - allowBlobPublicAccess?: boolean | null | undefined; - blobDeleteRetentionDays?: number | null | undefined; - blobDeleteRetentionEnabled?: boolean | null | undefined; - blobEncryptionEnabled?: boolean | null | undefined; - blobVersioningEnabled?: boolean | null | undefined; - changeFeedEnabled?: boolean | null | undefined; - changeFeedRetentionDays?: number | null | undefined; - containerDeleteRetentionDays?: number | null | undefined; - containerDeleteRetentionEnabled?: boolean | null | undefined; - containerPublicAccess?: string | null | undefined; - encryptionKeySource?: string | null | undefined; - fileEncryptionEnabled?: boolean | null | undefined; - location?: string | null | undefined; - name: string; - primaryLocation?: string | null | undefined; +export type DataAzureContainerApps1 = { + appName: string; + cpu?: number | null | undefined; + environmentName?: string | null | undefined; + ingressFqdn?: string | null | undefined; + maxReplicas?: number | null | undefined; + memory?: string | null | undefined; + minReplicas?: number | null | undefined; provisioningState?: string | null | undefined; - publicNetworkAccess?: string | null | undefined; - queueEncryptionEnabled?: boolean | null | undefined; - resourceGroup?: string | null | undefined; - secondaryLocation?: string | null | undefined; - skuName?: string | null | undefined; - skuTier?: string | null | undefined; - status: DataStatus3; - statusOfPrimary?: string | null | undefined; - statusOfSecondary?: string | null | undefined; - storageAccountName?: string | null | undefined; - tableEncryptionEnabled?: boolean | null | undefined; - backend: "azureBlob"; + revision?: string | null | undefined; + runningStatus?: string | null | undefined; + status: DataStatus7; + backend: "azureContainerApps"; }; -export const Reason2 = { +export const GetResourceDeploymentDetailReason6 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason2 = ClosedEnum; +export type GetResourceDeploymentDetailReason6 = ClosedEnum< + typeof GetResourceDeploymentDetailReason6 +>; -export const CollectionIssueSeverity2 = { +export const CollectionIssueSeverity6 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity2 = ClosedEnum< - typeof CollectionIssueSeverity2 +export type CollectionIssueSeverity6 = ClosedEnum< + typeof CollectionIssueSeverity6 >; -export type CollectionIssue2 = { +export type CollectionIssue6 = { message: string; - reason: Reason2; - severity: CollectionIssueSeverity2; + reason: GetResourceDeploymentDetailReason6; + severity: CollectionIssueSeverity6; source: string; }; -export const Health2 = { +export const Health6 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health2 = ClosedEnum; +export type Health6 = ClosedEnum; -export const Lifecycle2 = { +export const Lifecycle6 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -7035,74 +7599,72 @@ export const Lifecycle2 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle2 = ClosedEnum; +export type Lifecycle6 = ClosedEnum; -export type DataStatus2 = { - collectionIssues: Array; - health: Health2; - lifecycle: Lifecycle2; +export type DataStatus6 = { + collectionIssues: Array; + health: Health6; + lifecycle: Lifecycle6; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataGcpCloudStorage = { - bucketId?: string | null | undefined; - defaultKmsKeyName?: string | null | undefined; - encryptionConfigPresent: boolean; - lifecyclePresent: boolean; - lifecycleRuleCount?: number | null | undefined; - location?: string | null | undefined; - locationType?: string | null | undefined; - name: string; - publicAccessPrevention?: string | null | undefined; - retentionPeriod?: string | null | undefined; - retentionPolicyEffectiveTime?: string | null | undefined; - retentionPolicyIsLocked?: boolean | null | undefined; - softDeleteEffectiveTime?: string | null | undefined; - softDeleteRetentionDurationSeconds?: string | null | undefined; - status: DataStatus2; - storageClass?: string | null | undefined; - uniformBucketLevelAccessEnabled?: boolean | null | undefined; - uniformBucketLevelAccessLockedTime?: string | null | undefined; - versioningEnabled?: boolean | null | undefined; - backend: "gcpCloudStorage"; +export type DataGcpCloudRun = { + containerImage?: string | null | undefined; + cpuLimit?: string | null | undefined; + generation?: number | null | undefined; + latestCreatedRevision?: string | null | undefined; + latestReadyRevision?: string | null | undefined; + maxInstanceCount?: number | null | undefined; + memoryLimit?: string | null | undefined; + minInstanceCount?: number | null | undefined; + observedGeneration?: number | null | undefined; + region?: string | null | undefined; + service: string; + status: DataStatus6; + trafficCount: number; + uri?: string | null | undefined; + urls: Array; + backend: "gcpCloudRun"; }; -export const Reason1 = { +export const GetResourceDeploymentDetailReason5 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type Reason1 = ClosedEnum; +export type GetResourceDeploymentDetailReason5 = ClosedEnum< + typeof GetResourceDeploymentDetailReason5 +>; -export const CollectionIssueSeverity1 = { +export const CollectionIssueSeverity5 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type CollectionIssueSeverity1 = ClosedEnum< - typeof CollectionIssueSeverity1 +export type CollectionIssueSeverity5 = ClosedEnum< + typeof CollectionIssueSeverity5 >; -export type CollectionIssue1 = { +export type CollectionIssue5 = { message: string; - reason: Reason1; - severity: CollectionIssueSeverity1; + reason: GetResourceDeploymentDetailReason5; + severity: CollectionIssueSeverity5; source: string; }; -export const Health1 = { +export const Health5 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type Health1 = ClosedEnum; +export type Health5 = ClosedEnum; -export const Lifecycle1 = { +export const Lifecycle5 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -7114,261 +7676,1513 @@ export const Lifecycle1 = { Deleted: "deleted", Failed: "failed", } as const; -export type Lifecycle1 = ClosedEnum; +export type Lifecycle5 = ClosedEnum; -export type DataStatus1 = { - collectionIssues: Array; - health: Health1; - lifecycle: Lifecycle1; +export type DataStatus5 = { + collectionIssues: Array; + health: Health5; + lifecycle: Lifecycle5; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataAwsS3 = { - blockPublicAcls?: boolean | null | undefined; - blockPublicPolicy?: boolean | null | undefined; - bucketAclPresent?: boolean | null | undefined; - bucketLocation?: string | null | undefined; - bucketPolicyPresent?: boolean | null | undefined; - encryptionConfigPresent: boolean; - encryptionEnabled?: boolean | null | undefined; - ignorePublicAcls?: boolean | null | undefined; - lifecyclePresent: boolean; - lifecycleRuleCount?: number | null | undefined; - name: string; - publicAccessBlockPresent: boolean; - region?: string | null | undefined; - restrictPublicBuckets?: boolean | null | undefined; - status: DataStatus1; - versioningEnabled?: boolean | null | undefined; - versioningStatus?: string | null | undefined; - backend: "awsS3"; +export type DataAwsLambda = { + codeSha256?: string | null | undefined; + functionName: string; + functionUrlAuthType?: string | null | undefined; + functionUrlCorsPresent: boolean; + lastModified?: string | null | undefined; + lastUpdateStatus?: string | null | undefined; + lastUpdateStatusReason?: string | null | undefined; + lastUpdateStatusReasonCode?: string | null | undefined; + layerCount: number; + memorySizeMb?: number | null | undefined; + packageType?: string | null | undefined; + revisionId?: string | null | undefined; + runtime?: string | null | undefined; + state?: string | null | undefined; + stateReason?: string | null | undefined; + stateReasonCode?: string | null | undefined; + status: DataStatus5; + timeoutSeconds?: number | null | undefined; + triggerCount: number; + version?: string | null | undefined; + backend: "awsLambda"; }; -export type DataUnion1 = - | DataAwsS3 - | DataGcpCloudStorage - | DataAzureBlob - | DataLocal1; +export type DataUnion2 = + | DataAwsLambda + | DataGcpCloudRun + | DataAzureContainerApps1 + | DataKubernetes1 + | DataLocal2; -export type DataStorage = { - data: DataAwsS3 | DataGcpCloudStorage | DataAzureBlob | DataLocal1; - resourceType: "storage"; +export type DataWorker = { + data: + | DataAwsLambda + | DataGcpCloudRun + | DataAzureContainerApps1 + | DataKubernetes1 + | DataLocal2; + resourceType: "worker"; }; -export type DataUnion16 = - | DataStorage - | DataWorker - | DataContainer - | DataDaemon - | DataComputeCluster - | DataKubernetesCluster - | DataQueue - | DataKv - | DataPostgres - | DataVault - | DataServiceAccount - | DataNetwork - | DataRemoteStackManagement - | DataArtifactRegistry - | DataBuild - | DataServiceActivation - | DataAzureResourceGroup - | DataAzureStorageAccount - | DataAzureContainerAppsEnvironment - | DataAzureServiceBusNamespace; +export const GetResourceDeploymentDetailReason4 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type GetResourceDeploymentDetailReason4 = ClosedEnum< + typeof GetResourceDeploymentDetailReason4 +>; -export const Format = { - Json: "json", - Yaml: "yaml", - Text: "text", +export const CollectionIssueSeverity4 = { + Info: "info", + Warning: "warning", + Error: "error", } as const; -export type Format = ClosedEnum; +export type CollectionIssueSeverity4 = ClosedEnum< + typeof CollectionIssueSeverity4 +>; -export type Raw = { - body: string; - collectedAt: Date; - format: Format; +export type CollectionIssue4 = { + message: string; + reason: GetResourceDeploymentDetailReason4; + severity: CollectionIssueSeverity4; source: string; - truncated: boolean; -}; - -export type Heartbeat = { - backend: BackendEnum; - /** - * Represents the target cloud platform. - */ - controllerPlatform: ControllerPlatform; - data: - | DataStorage - | DataWorker - | DataContainer - | DataDaemon - | DataComputeCluster - | DataKubernetesCluster - | DataQueue - | DataKv - | DataPostgres - | DataVault - | DataServiceAccount - | DataNetwork - | DataRemoteStackManagement - | DataArtifactRegistry - | DataBuild - | DataServiceActivation - | DataAzureResourceGroup - | DataAzureStorageAccount - | DataAzureContainerAppsEnvironment - | DataAzureServiceBusNamespace; - deploymentId?: string | null | undefined; - observedAt: Date; - raw: Array; - /** - * Alien resource id, such as the `alien.Container` or `alien.Storage` - * - * @remarks - * resource id from the stack. - */ - resourceId: string; - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - resourceType: string; }; -export type HeartbeatAvailable = { - status: "available"; - deploymentId: string; - resourceId: string; - resourceType: string; - backend: string; - controllerPlatform: string; - observedAt: Date; - staleAt: Date; - platformStale: boolean; - heartbeat: Heartbeat; - raw: Array; +export const Health4 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health4 = ClosedEnum; + +export const Lifecycle4 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle4 = ClosedEnum; + +export type DataStatus4 = { + collectionIssues: Array; + health: Health4; + lifecycle: Lifecycle4; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataLocal1 = { + isDirectory?: boolean | null | undefined; + modifiedAt?: Date | null | undefined; + path: string; + pathExists: boolean; + readonly?: boolean | null | undefined; + status: DataStatus4; + backend: "local"; +}; + +export const GetResourceDeploymentDetailReason3 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type GetResourceDeploymentDetailReason3 = ClosedEnum< + typeof GetResourceDeploymentDetailReason3 +>; + +export const CollectionIssueSeverity3 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity3 = ClosedEnum< + typeof CollectionIssueSeverity3 +>; + +export type CollectionIssue3 = { + message: string; + reason: GetResourceDeploymentDetailReason3; + severity: CollectionIssueSeverity3; + source: string; +}; + +export const Health3 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health3 = ClosedEnum; + +export const Lifecycle3 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle3 = ClosedEnum; + +export type DataStatus3 = { + collectionIssues: Array; + health: Health3; + lifecycle: Lifecycle3; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAzureBlob = { + accessTier?: string | null | undefined; + accountKind?: string | null | undefined; + allowBlobPublicAccess?: boolean | null | undefined; + blobDeleteRetentionDays?: number | null | undefined; + blobDeleteRetentionEnabled?: boolean | null | undefined; + blobEncryptionEnabled?: boolean | null | undefined; + blobVersioningEnabled?: boolean | null | undefined; + changeFeedEnabled?: boolean | null | undefined; + changeFeedRetentionDays?: number | null | undefined; + containerDeleteRetentionDays?: number | null | undefined; + containerDeleteRetentionEnabled?: boolean | null | undefined; + containerPublicAccess?: string | null | undefined; + encryptionKeySource?: string | null | undefined; + fileEncryptionEnabled?: boolean | null | undefined; + location?: string | null | undefined; + name: string; + primaryLocation?: string | null | undefined; + provisioningState?: string | null | undefined; + publicNetworkAccess?: string | null | undefined; + queueEncryptionEnabled?: boolean | null | undefined; + resourceGroup?: string | null | undefined; + secondaryLocation?: string | null | undefined; + skuName?: string | null | undefined; + skuTier?: string | null | undefined; + status: DataStatus3; + statusOfPrimary?: string | null | undefined; + statusOfSecondary?: string | null | undefined; + storageAccountName?: string | null | undefined; + tableEncryptionEnabled?: boolean | null | undefined; + backend: "azureBlob"; +}; + +export const GetResourceDeploymentDetailReason2 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type GetResourceDeploymentDetailReason2 = ClosedEnum< + typeof GetResourceDeploymentDetailReason2 +>; + +export const CollectionIssueSeverity2 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity2 = ClosedEnum< + typeof CollectionIssueSeverity2 +>; + +export type CollectionIssue2 = { + message: string; + reason: GetResourceDeploymentDetailReason2; + severity: CollectionIssueSeverity2; + source: string; +}; + +export const Health2 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health2 = ClosedEnum; + +export const Lifecycle2 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle2 = ClosedEnum; + +export type DataStatus2 = { + collectionIssues: Array; + health: Health2; + lifecycle: Lifecycle2; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataGcpCloudStorage = { + bucketId?: string | null | undefined; + defaultKmsKeyName?: string | null | undefined; + encryptionConfigPresent: boolean; + lifecyclePresent: boolean; + lifecycleRuleCount?: number | null | undefined; + location?: string | null | undefined; + locationType?: string | null | undefined; + name: string; + publicAccessPrevention?: string | null | undefined; + retentionPeriod?: string | null | undefined; + retentionPolicyEffectiveTime?: string | null | undefined; + retentionPolicyIsLocked?: boolean | null | undefined; + softDeleteEffectiveTime?: string | null | undefined; + softDeleteRetentionDurationSeconds?: string | null | undefined; + status: DataStatus2; + storageClass?: string | null | undefined; + uniformBucketLevelAccessEnabled?: boolean | null | undefined; + uniformBucketLevelAccessLockedTime?: string | null | undefined; + versioningEnabled?: boolean | null | undefined; + backend: "gcpCloudStorage"; +}; + +export const GetResourceDeploymentDetailReason1 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type GetResourceDeploymentDetailReason1 = ClosedEnum< + typeof GetResourceDeploymentDetailReason1 +>; + +export const CollectionIssueSeverity1 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity1 = ClosedEnum< + typeof CollectionIssueSeverity1 +>; + +export type CollectionIssue1 = { + message: string; + reason: GetResourceDeploymentDetailReason1; + severity: CollectionIssueSeverity1; + source: string; }; -export type HeartbeatUnion = HeartbeatAvailable | HeartbeatMissing; +export const Health1 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health1 = ClosedEnum; + +export const Lifecycle1 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle1 = ClosedEnum; + +export type DataStatus1 = { + collectionIssues: Array; + health: Health1; + lifecycle: Lifecycle1; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAwsS3 = { + blockPublicAcls?: boolean | null | undefined; + blockPublicPolicy?: boolean | null | undefined; + bucketAclPresent?: boolean | null | undefined; + bucketLocation?: string | null | undefined; + bucketPolicyPresent?: boolean | null | undefined; + encryptionConfigPresent: boolean; + encryptionEnabled?: boolean | null | undefined; + ignorePublicAcls?: boolean | null | undefined; + lifecyclePresent: boolean; + lifecycleRuleCount?: number | null | undefined; + name: string; + publicAccessBlockPresent: boolean; + region?: string | null | undefined; + restrictPublicBuckets?: boolean | null | undefined; + status: DataStatus1; + versioningEnabled?: boolean | null | undefined; + versioningStatus?: string | null | undefined; + backend: "awsS3"; +}; + +export type DataUnion1 = + | DataAwsS3 + | DataGcpCloudStorage + | DataAzureBlob + | DataLocal1; + +export type DataStorage = { + data: DataAwsS3 | DataGcpCloudStorage | DataAzureBlob | DataLocal1; + resourceType: "storage"; +}; + +export type DataUnion18 = + | DataStorage + | DataWorker + | DataContainer + | DataDaemon + | DataComputeCluster + | DataKubernetesCluster + | DataQueue + | DataKv + | DataPostgres + | DataVault + | DataServiceAccount + | DataNetwork + | DataRemoteStackManagement + | DataArtifactRegistry + | DataBuild + | DataServiceActivation + | DataAzureResourceGroup + | DataAzureStorageAccount + | DataAzureContainerAppsEnvironment + | DataAzureServiceBusNamespace + | DataAi + | DataKey; + +export const Format = { + Json: "json", + Yaml: "yaml", + Text: "text", +} as const; +export type Format = ClosedEnum; + +export type Raw = { + body: string; + collectedAt: Date; + format: Format; + source: string; + truncated: boolean; +}; + +export type Heartbeat = { + backend: BackendEnum; + /** + * Represents the target cloud platform. + */ + controllerPlatform: ControllerPlatform; + data: + | DataStorage + | DataWorker + | DataContainer + | DataDaemon + | DataComputeCluster + | DataKubernetesCluster + | DataQueue + | DataKv + | DataPostgres + | DataVault + | DataServiceAccount + | DataNetwork + | DataRemoteStackManagement + | DataArtifactRegistry + | DataBuild + | DataServiceActivation + | DataAzureResourceGroup + | DataAzureStorageAccount + | DataAzureContainerAppsEnvironment + | DataAzureServiceBusNamespace + | DataAi + | DataKey; + deploymentId?: string | null | undefined; + observedAt: Date; + raw: Array; + /** + * Alien resource id, such as the `alien.Container` or `alien.Storage` + * + * @remarks + * resource id from the stack. + */ + resourceId: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + resourceType: string; +}; + +export type HeartbeatAvailable = { + status: "available"; + deploymentId: string; + resourceId: string; + resourceType: string; + backend: string; + controllerPlatform: string; + observedAt: Date; + staleAt: Date; + platformStale: boolean; + heartbeat: Heartbeat; + raw: Array; +}; + +export type HeartbeatUnion = HeartbeatAvailable | HeartbeatMissing; + +/** + * Latest heartbeat detail for one resource deployment. + */ +export type GetResourceDeploymentDetailResponse = { + deployment: GetResourceDeploymentDetailDeployment; + heartbeat: HeartbeatAvailable | HeartbeatMissing; +}; + +/** @internal */ +export const GetResourceDeploymentDetailArea$outboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailArea +> = z.enum(GetResourceDeploymentDetailArea); + +/** @internal */ +export type GetResourceDeploymentDetailRequest$Outbound = { + area: string; + deploymentId: string; + resourceId: string; + workspace?: string | undefined; + project: string; +}; + +/** @internal */ +export const GetResourceDeploymentDetailRequest$outboundSchema: z.ZodType< + GetResourceDeploymentDetailRequest$Outbound, + GetResourceDeploymentDetailRequest +> = z.object({ + area: GetResourceDeploymentDetailArea$outboundSchema, + deploymentId: z.string(), + resourceId: z.string(), + workspace: z.string().optional(), + project: z.string(), +}); + +export function getResourceDeploymentDetailRequestToJSON( + getResourceDeploymentDetailRequest: GetResourceDeploymentDetailRequest, +): string { + return JSON.stringify( + GetResourceDeploymentDetailRequest$outboundSchema.parse( + getResourceDeploymentDetailRequest, + ), + ); +} + +/** @internal */ +export const GetResourceDeploymentDetailDeployment$inboundSchema: z.ZodType< + GetResourceDeploymentDetailDeployment, + unknown +> = z.object({ + deploymentId: z.string(), + deploymentName: z.string(), + deploymentGroupId: z.nullable(z.string()), + deploymentGroupName: z.nullable(z.string()), + resourceType: z.string(), + resourceId: z.string(), + backend: z.string(), + controllerPlatform: z.string(), + health: z.string(), + lifecycle: z.string(), + message: z.nullable(z.string()), + partial: z.boolean(), + providerStale: z.boolean(), + platformStale: z.boolean(), + desiredCount: z.nullable(z.int()), + currentCount: z.nullable(z.int()), + readyCount: z.nullable(z.int()), + observedAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), + desiredImage: z.nullable(z.string()), +}); + +export function getResourceDeploymentDetailDeploymentFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + GetResourceDeploymentDetailDeployment$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetResourceDeploymentDetailDeployment' from JSON`, + ); +} + +/** @internal */ +export const HeartbeatMissing$inboundSchema: z.ZodType< + HeartbeatMissing, + unknown +> = z.object({ + status: z.literal("missing"), + deploymentId: z.string(), + resourceId: z.string(), + resourceType: z.string(), +}); + +export function heartbeatMissingFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => HeartbeatMissing$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'HeartbeatMissing' from JSON`, + ); +} + +/** @internal */ +export const BackendEnum$inboundSchema: z.ZodEnum = z.enum( + BackendEnum, +); + +/** @internal */ +export const ControllerPlatform$inboundSchema: z.ZodEnum< + typeof ControllerPlatform +> = z.enum(ControllerPlatform); + +/** @internal */ +export const Health72$inboundSchema: z.ZodEnum = z.enum( + Health72, +); + +/** @internal */ +export const Lifecycle72$inboundSchema: z.ZodEnum = z.enum( + Lifecycle72, +); + +/** @internal */ +export const DataStatus72$inboundSchema: z.ZodType = z + .object({ + health: Health72$inboundSchema, + lifecycle: Lifecycle72$inboundSchema, + message: z.nullable(z.string()).optional(), + }); + +export function dataStatus72FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus72$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus72' from JSON`, + ); +} + +/** @internal */ +export const Data8$inboundSchema: z.ZodType = z.object({ + enabled: z.nullable(z.boolean()).optional(), + keyId: z.string(), + keyOperations: z.array(z.string()), + keyType: z.string(), + recoveryLevel: z.nullable(z.string()).optional(), + status: z.lazy(() => DataStatus72$inboundSchema), +}); + +export function data8FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Data8$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Data8' from JSON`, + ); +} + +/** @internal */ +export const DataAzureKeyVault2$inboundSchema: z.ZodType< + DataAzureKeyVault2, + unknown +> = z.object({ + data: z.lazy(() => Data8$inboundSchema), + provider: z.literal("azure-key-vault"), +}); + +export function dataAzureKeyVault2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataAzureKeyVault2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataAzureKeyVault2' from JSON`, + ); +} + +/** @internal */ +export const Health71$inboundSchema: z.ZodEnum = z.enum( + Health71, +); + +/** @internal */ +export const Lifecycle71$inboundSchema: z.ZodEnum = z.enum( + Lifecycle71, +); + +/** @internal */ +export const DataStatus71$inboundSchema: z.ZodType = z + .object({ + health: Health71$inboundSchema, + lifecycle: Lifecycle71$inboundSchema, + message: z.nullable(z.string()).optional(), + }); + +export function dataStatus71FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus71$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus71' from JSON`, + ); +} + +/** @internal */ +export const Data7$inboundSchema: z.ZodType = z.object({ + algorithm: z.nullable(z.string()).optional(), + cryptoKeyName: z.string(), + primaryState: z.nullable(z.string()).optional(), + primaryVersion: z.nullable(z.string()).optional(), + purpose: z.string(), + status: z.lazy(() => DataStatus71$inboundSchema), +}); + +export function data7FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Data7$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Data7' from JSON`, + ); +} + +/** @internal */ +export const DataGcpCloudKms$inboundSchema: z.ZodType< + DataGcpCloudKms, + unknown +> = z.object({ + data: z.lazy(() => Data7$inboundSchema), + provider: z.literal("gcp-cloud-kms"), +}); + +export function dataGcpCloudKmsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataGcpCloudKms$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataGcpCloudKms' from JSON`, + ); +} + +/** @internal */ +export const Health70$inboundSchema: z.ZodEnum = z.enum( + Health70, +); + +/** @internal */ +export const Lifecycle70$inboundSchema: z.ZodEnum = z.enum( + Lifecycle70, +); + +/** @internal */ +export const DataStatus70$inboundSchema: z.ZodType = z + .object({ + health: Health70$inboundSchema, + lifecycle: Lifecycle70$inboundSchema, + message: z.nullable(z.string()).optional(), + }); + +export function dataStatus70FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus70$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus70' from JSON`, + ); +} + +/** @internal */ +export const Data6$inboundSchema: z.ZodType = z.object({ + enabled: z.boolean(), + keyArn: z.string(), + keySpec: z.string(), + keyState: z.string(), + keyUsage: z.string(), + status: z.lazy(() => DataStatus70$inboundSchema), +}); + +export function data6FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Data6$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Data6' from JSON`, + ); +} + +/** @internal */ +export const DataAwsKms$inboundSchema: z.ZodType = z + .object({ + data: z.lazy(() => Data6$inboundSchema), + provider: z.literal("aws-kms"), + }); + +export function dataAwsKmsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataAwsKms$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataAwsKms' from JSON`, + ); +} + +/** @internal */ +export const DataUnion17$inboundSchema: z.ZodType = z + .union([ + z.lazy(() => DataAwsKms$inboundSchema), + z.lazy(() => DataGcpCloudKms$inboundSchema), + z.lazy(() => DataAzureKeyVault2$inboundSchema), + ]); + +export function dataUnion17FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataUnion17$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataUnion17' from JSON`, + ); +} + +/** @internal */ +export const DataKey$inboundSchema: z.ZodType = z.object({ + data: z.union([ + z.lazy(() => DataAwsKms$inboundSchema), + z.lazy(() => DataGcpCloudKms$inboundSchema), + z.lazy(() => DataAzureKeyVault2$inboundSchema), + ]), + resourceType: z.literal("key"), +}); + +export function dataKeyFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataKey$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataKey' from JSON`, + ); +} + +/** @internal */ +export const AccessTest4$inboundSchema: z.ZodEnum = z.enum( + AccessTest4, +); + +/** @internal */ +export const AvailabilityEnum4$inboundSchema: z.ZodEnum< + typeof AvailabilityEnum4 +> = z.enum(AvailabilityEnum4); + +/** @internal */ +export const BlockerEnum4$inboundSchema: z.ZodEnum = z + .enum(BlockerEnum4); + +/** @internal */ +export const GetResourceDeploymentDetailClientApi4$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailClientApi4 +> = z.enum(GetResourceDeploymentDetailClientApi4); + +/** @internal */ +export const GetResourceDeploymentDetailModel4$inboundSchema: z.ZodType< + GetResourceDeploymentDetailModel4, + unknown +> = z.object({ + accessTest: AccessTest4$inboundSchema, + availability: AvailabilityEnum4$inboundSchema, + blockers: z.array(BlockerEnum4$inboundSchema), + clientApis: z.array(GetResourceDeploymentDetailClientApi4$inboundSchema), + errorCode: z.nullable(z.string()).optional(), + publicModelId: z.string(), + testedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ).optional(), +}); + +export function getResourceDeploymentDetailModel4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetResourceDeploymentDetailModel4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetResourceDeploymentDetailModel4' from JSON`, + ); +} + +/** @internal */ +export const SourceEnum4$inboundSchema: z.ZodEnum = z.enum( + SourceEnum4, +); + +/** @internal */ +export const Availability4$inboundSchema: z.ZodType = z + .object({ + catalogRevision: z.string(), + location: z.nullable(z.string()).optional(), + models: z.array( + z.lazy(() => GetResourceDeploymentDetailModel4$inboundSchema), + ), + source: SourceEnum4$inboundSchema, + }); + +export function availability4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Availability4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Availability4' from JSON`, + ); +} + +/** @internal */ +export const AvailabilityUnion$inboundSchema: z.ZodType< + AvailabilityUnion, + unknown +> = z.union([z.lazy(() => Availability4$inboundSchema), z.any()]); + +export function availabilityUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => AvailabilityUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'AvailabilityUnion' from JSON`, + ); +} + +/** @internal */ +export const GetResourceDeploymentDetailReason69$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason69 +> = z.enum(GetResourceDeploymentDetailReason69); + +/** @internal */ +export const CollectionIssueSeverity69$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity69 +> = z.enum(CollectionIssueSeverity69); + +/** @internal */ +export const CollectionIssue69$inboundSchema: z.ZodType< + CollectionIssue69, + unknown +> = z.object({ + message: z.string(), + reason: GetResourceDeploymentDetailReason69$inboundSchema, + severity: CollectionIssueSeverity69$inboundSchema, + source: z.string(), +}); + +export function collectionIssue69FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue69$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue69' from JSON`, + ); +} + +/** @internal */ +export const Health69$inboundSchema: z.ZodEnum = z.enum( + Health69, +); -/** - * Latest heartbeat detail for one compute resource deployment. - */ -export type GetResourceDeploymentDetailResponse = { - deployment: GetResourceDeploymentDetailDeployment; - heartbeat: HeartbeatAvailable | HeartbeatMissing; -}; +/** @internal */ +export const Lifecycle69$inboundSchema: z.ZodEnum = z.enum( + Lifecycle69, +); /** @internal */ -export const GetResourceDeploymentDetailArea$outboundSchema: z.ZodEnum< - typeof GetResourceDeploymentDetailArea -> = z.enum(GetResourceDeploymentDetailArea); +export const DataStatus69$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue69$inboundSchema)), + health: Health69$inboundSchema, + lifecycle: Lifecycle69$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus69FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus69$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus69' from JSON`, + ); +} /** @internal */ -export type GetResourceDeploymentDetailRequest$Outbound = { - area: string; - deploymentId: string; - resourceId: string; - workspace?: string | undefined; - project: string; -}; +export const DataExternal$inboundSchema: z.ZodType = z + .object({ + availability: z.nullable( + z.union([z.lazy(() => Availability4$inboundSchema), z.any()]), + ).optional(), + provider: z.string(), + status: z.lazy(() => DataStatus69$inboundSchema), + backend: z.literal("external"), + }); + +export function dataExternalFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataExternal$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataExternal' from JSON`, + ); +} /** @internal */ -export const GetResourceDeploymentDetailRequest$outboundSchema: z.ZodType< - GetResourceDeploymentDetailRequest$Outbound, - GetResourceDeploymentDetailRequest +export const AccessTest3$inboundSchema: z.ZodEnum = z.enum( + AccessTest3, +); + +/** @internal */ +export const AvailabilityEnum3$inboundSchema: z.ZodEnum< + typeof AvailabilityEnum3 +> = z.enum(AvailabilityEnum3); + +/** @internal */ +export const BlockerEnum3$inboundSchema: z.ZodEnum = z + .enum(BlockerEnum3); + +/** @internal */ +export const GetResourceDeploymentDetailClientApi3$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailClientApi3 +> = z.enum(GetResourceDeploymentDetailClientApi3); + +/** @internal */ +export const GetResourceDeploymentDetailModel3$inboundSchema: z.ZodType< + GetResourceDeploymentDetailModel3, + unknown > = z.object({ - area: GetResourceDeploymentDetailArea$outboundSchema, - deploymentId: z.string(), - resourceId: z.string(), - workspace: z.string().optional(), - project: z.string(), + accessTest: AccessTest3$inboundSchema, + availability: AvailabilityEnum3$inboundSchema, + blockers: z.array(BlockerEnum3$inboundSchema), + clientApis: z.array(GetResourceDeploymentDetailClientApi3$inboundSchema), + errorCode: z.nullable(z.string()).optional(), + publicModelId: z.string(), + testedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ).optional(), }); -export function getResourceDeploymentDetailRequestToJSON( - getResourceDeploymentDetailRequest: GetResourceDeploymentDetailRequest, -): string { - return JSON.stringify( - GetResourceDeploymentDetailRequest$outboundSchema.parse( - getResourceDeploymentDetailRequest, +export function getResourceDeploymentDetailModel3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetResourceDeploymentDetailModel3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetResourceDeploymentDetailModel3' from JSON`, + ); +} + +/** @internal */ +export const SourceEnum3$inboundSchema: z.ZodEnum = z.enum( + SourceEnum3, +); + +/** @internal */ +export const Availability3$inboundSchema: z.ZodType = z + .object({ + catalogRevision: z.string(), + location: z.nullable(z.string()).optional(), + models: z.array( + z.lazy(() => GetResourceDeploymentDetailModel3$inboundSchema), ), + source: SourceEnum3$inboundSchema, + }); + +export function availability3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Availability3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Availability3' from JSON`, ); } /** @internal */ -export const GetResourceDeploymentDetailDeployment$inboundSchema: z.ZodType< - GetResourceDeploymentDetailDeployment, +export const GetResourceDeploymentDetailReason68$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason68 +> = z.enum(GetResourceDeploymentDetailReason68); + +/** @internal */ +export const CollectionIssueSeverity68$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity68 +> = z.enum(CollectionIssueSeverity68); + +/** @internal */ +export const CollectionIssue68$inboundSchema: z.ZodType< + CollectionIssue68, unknown > = z.object({ - deploymentId: z.string(), - deploymentName: z.string(), - deploymentGroupId: z.nullable(z.string()), - deploymentGroupName: z.nullable(z.string()), - resourceType: z.string(), - resourceId: z.string(), - backend: z.string(), - controllerPlatform: z.string(), - health: z.string(), - lifecycle: z.string(), - message: z.nullable(z.string()), - partial: z.boolean(), - providerStale: z.boolean(), - platformStale: z.boolean(), - desiredCount: z.nullable(z.int()), - currentCount: z.nullable(z.int()), - readyCount: z.nullable(z.int()), - observedAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), - desiredImage: z.nullable(z.string()), + message: z.string(), + reason: GetResourceDeploymentDetailReason68$inboundSchema, + severity: CollectionIssueSeverity68$inboundSchema, + source: z.string(), +}); + +export function collectionIssue68FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue68$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue68' from JSON`, + ); +} + +/** @internal */ +export const Health68$inboundSchema: z.ZodEnum = z.enum( + Health68, +); + +/** @internal */ +export const Lifecycle68$inboundSchema: z.ZodEnum = z.enum( + Lifecycle68, +); + +/** @internal */ +export const DataStatus68$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue68$inboundSchema)), + health: Health68$inboundSchema, + lifecycle: Lifecycle68$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus68FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus68$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus68' from JSON`, + ); +} + +/** @internal */ +export const DataAzureFoundry$inboundSchema: z.ZodType< + DataAzureFoundry, + unknown +> = z.object({ + accountName: z.string(), + availability: z.lazy(() => Availability3$inboundSchema), + endpoint: z.nullable(z.string()).optional(), + location: z.nullable(z.string()).optional(), + resourceGroup: z.nullable(z.string()).optional(), + status: z.lazy(() => DataStatus68$inboundSchema), + backend: z.literal("azureFoundry"), +}); + +export function dataAzureFoundryFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataAzureFoundry$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataAzureFoundry' from JSON`, + ); +} + +/** @internal */ +export const AccessTest2$inboundSchema: z.ZodEnum = z.enum( + AccessTest2, +); + +/** @internal */ +export const AvailabilityEnum2$inboundSchema: z.ZodEnum< + typeof AvailabilityEnum2 +> = z.enum(AvailabilityEnum2); + +/** @internal */ +export const BlockerEnum2$inboundSchema: z.ZodEnum = z + .enum(BlockerEnum2); + +/** @internal */ +export const GetResourceDeploymentDetailClientApi2$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailClientApi2 +> = z.enum(GetResourceDeploymentDetailClientApi2); + +/** @internal */ +export const GetResourceDeploymentDetailModel2$inboundSchema: z.ZodType< + GetResourceDeploymentDetailModel2, + unknown +> = z.object({ + accessTest: AccessTest2$inboundSchema, + availability: AvailabilityEnum2$inboundSchema, + blockers: z.array(BlockerEnum2$inboundSchema), + clientApis: z.array(GetResourceDeploymentDetailClientApi2$inboundSchema), + errorCode: z.nullable(z.string()).optional(), + publicModelId: z.string(), + testedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ).optional(), +}); + +export function getResourceDeploymentDetailModel2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetResourceDeploymentDetailModel2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetResourceDeploymentDetailModel2' from JSON`, + ); +} + +/** @internal */ +export const SourceEnum2$inboundSchema: z.ZodEnum = z.enum( + SourceEnum2, +); + +/** @internal */ +export const Availability2$inboundSchema: z.ZodType = z + .object({ + catalogRevision: z.string(), + location: z.nullable(z.string()).optional(), + models: z.array( + z.lazy(() => GetResourceDeploymentDetailModel2$inboundSchema), + ), + source: SourceEnum2$inboundSchema, + }); + +export function availability2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Availability2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Availability2' from JSON`, + ); +} + +/** @internal */ +export const GetResourceDeploymentDetailReason67$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason67 +> = z.enum(GetResourceDeploymentDetailReason67); + +/** @internal */ +export const CollectionIssueSeverity67$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity67 +> = z.enum(CollectionIssueSeverity67); + +/** @internal */ +export const CollectionIssue67$inboundSchema: z.ZodType< + CollectionIssue67, + unknown +> = z.object({ + message: z.string(), + reason: GetResourceDeploymentDetailReason67$inboundSchema, + severity: CollectionIssueSeverity67$inboundSchema, + source: z.string(), +}); + +export function collectionIssue67FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue67$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue67' from JSON`, + ); +} + +/** @internal */ +export const Health67$inboundSchema: z.ZodEnum = z.enum( + Health67, +); + +/** @internal */ +export const Lifecycle67$inboundSchema: z.ZodEnum = z.enum( + Lifecycle67, +); + +/** @internal */ +export const DataStatus67$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue67$inboundSchema)), + health: Health67$inboundSchema, + lifecycle: Lifecycle67$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus67FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus67$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus67' from JSON`, + ); +} + +/** @internal */ +export const DataGcpVertex$inboundSchema: z.ZodType = z + .object({ + availability: z.lazy(() => Availability2$inboundSchema), + location: z.string(), + project: z.string(), + status: z.lazy(() => DataStatus67$inboundSchema), + backend: z.literal("gcpVertex"), + }); + +export function dataGcpVertexFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataGcpVertex$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataGcpVertex' from JSON`, + ); +} + +/** @internal */ +export const AccessTest1$inboundSchema: z.ZodEnum = z.enum( + AccessTest1, +); + +/** @internal */ +export const AvailabilityEnum1$inboundSchema: z.ZodEnum< + typeof AvailabilityEnum1 +> = z.enum(AvailabilityEnum1); + +/** @internal */ +export const BlockerEnum1$inboundSchema: z.ZodEnum = z + .enum(BlockerEnum1); + +/** @internal */ +export const GetResourceDeploymentDetailClientApi1$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailClientApi1 +> = z.enum(GetResourceDeploymentDetailClientApi1); + +/** @internal */ +export const GetResourceDeploymentDetailModel1$inboundSchema: z.ZodType< + GetResourceDeploymentDetailModel1, + unknown +> = z.object({ + accessTest: AccessTest1$inboundSchema, + availability: AvailabilityEnum1$inboundSchema, + blockers: z.array(BlockerEnum1$inboundSchema), + clientApis: z.array(GetResourceDeploymentDetailClientApi1$inboundSchema), + errorCode: z.nullable(z.string()).optional(), + publicModelId: z.string(), + testedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ).optional(), }); -export function getResourceDeploymentDetailDeploymentFromJSON( +export function getResourceDeploymentDetailModel1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetResourceDeploymentDetailModel1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetResourceDeploymentDetailModel1' from JSON`, + ); +} + +/** @internal */ +export const SourceEnum1$inboundSchema: z.ZodEnum = z.enum( + SourceEnum1, +); + +/** @internal */ +export const Availability1$inboundSchema: z.ZodType = z + .object({ + catalogRevision: z.string(), + location: z.nullable(z.string()).optional(), + models: z.array( + z.lazy(() => GetResourceDeploymentDetailModel1$inboundSchema), + ), + source: SourceEnum1$inboundSchema, + }); + +export function availability1FromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => - GetResourceDeploymentDetailDeployment$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'GetResourceDeploymentDetailDeployment' from JSON`, + (x) => Availability1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Availability1' from JSON`, ); } /** @internal */ -export const HeartbeatMissing$inboundSchema: z.ZodType< - HeartbeatMissing, +export const GetResourceDeploymentDetailReason66$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason66 +> = z.enum(GetResourceDeploymentDetailReason66); + +/** @internal */ +export const CollectionIssueSeverity66$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity66 +> = z.enum(CollectionIssueSeverity66); + +/** @internal */ +export const CollectionIssue66$inboundSchema: z.ZodType< + CollectionIssue66, unknown > = z.object({ - status: z.literal("missing"), - deploymentId: z.string(), - resourceId: z.string(), - resourceType: z.string(), + message: z.string(), + reason: GetResourceDeploymentDetailReason66$inboundSchema, + severity: CollectionIssueSeverity66$inboundSchema, + source: z.string(), }); -export function heartbeatMissingFromJSON( +export function collectionIssue66FromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => HeartbeatMissing$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'HeartbeatMissing' from JSON`, + (x) => CollectionIssue66$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue66' from JSON`, ); } /** @internal */ -export const BackendEnum$inboundSchema: z.ZodEnum = z.enum( - BackendEnum, +export const Health66$inboundSchema: z.ZodEnum = z.enum( + Health66, ); /** @internal */ -export const ControllerPlatform$inboundSchema: z.ZodEnum< - typeof ControllerPlatform -> = z.enum(ControllerPlatform); +export const Lifecycle66$inboundSchema: z.ZodEnum = z.enum( + Lifecycle66, +); /** @internal */ -export const Reason65$inboundSchema: z.ZodEnum = z.enum( - Reason65, -); +export const DataStatus66$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue66$inboundSchema)), + health: Health66$inboundSchema, + lifecycle: Lifecycle66$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus66FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus66$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus66' from JSON`, + ); +} + +/** @internal */ +export const DataAwsBedrock$inboundSchema: z.ZodType = + z.object({ + availability: z.lazy(() => Availability1$inboundSchema), + region: z.string(), + status: z.lazy(() => DataStatus66$inboundSchema), + backend: z.literal("awsBedrock"), + }); + +export function dataAwsBedrockFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataAwsBedrock$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataAwsBedrock' from JSON`, + ); +} + +/** @internal */ +export const DataUnion16$inboundSchema: z.ZodType = z + .union([ + z.lazy(() => DataAwsBedrock$inboundSchema), + z.lazy(() => DataGcpVertex$inboundSchema), + z.lazy(() => DataAzureFoundry$inboundSchema), + z.lazy(() => DataExternal$inboundSchema), + ]); + +export function dataUnion16FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataUnion16$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataUnion16' from JSON`, + ); +} + +/** @internal */ +export const DataAi$inboundSchema: z.ZodType = z.object({ + data: z.union([ + z.lazy(() => DataAwsBedrock$inboundSchema), + z.lazy(() => DataGcpVertex$inboundSchema), + z.lazy(() => DataAzureFoundry$inboundSchema), + z.lazy(() => DataExternal$inboundSchema), + ]), + resourceType: z.literal("ai"), +}); + +export function dataAiFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataAi$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataAi' from JSON`, + ); +} + +/** @internal */ +export const GetResourceDeploymentDetailReason65$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason65 +> = z.enum(GetResourceDeploymentDetailReason65); /** @internal */ export const CollectionIssueSeverity65$inboundSchema: z.ZodEnum< @@ -7381,7 +9195,7 @@ export const CollectionIssue65$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason65$inboundSchema, + reason: GetResourceDeploymentDetailReason65$inboundSchema, severity: CollectionIssueSeverity65$inboundSchema, source: z.string(), }); @@ -7481,9 +9295,9 @@ export function dataAzureServiceBusNamespaceFromJSON( } /** @internal */ -export const Reason64$inboundSchema: z.ZodEnum = z.enum( - Reason64, -); +export const GetResourceDeploymentDetailReason64$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason64 +> = z.enum(GetResourceDeploymentDetailReason64); /** @internal */ export const CollectionIssueSeverity64$inboundSchema: z.ZodEnum< @@ -7496,7 +9310,7 @@ export const CollectionIssue64$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason64$inboundSchema, + reason: GetResourceDeploymentDetailReason64$inboundSchema, severity: CollectionIssueSeverity64$inboundSchema, source: z.string(), }); @@ -7658,9 +9472,9 @@ export function secondaryEndpointsFromJSON( } /** @internal */ -export const Reason63$inboundSchema: z.ZodEnum = z.enum( - Reason63, -); +export const GetResourceDeploymentDetailReason63$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason63 +> = z.enum(GetResourceDeploymentDetailReason63); /** @internal */ export const CollectionIssueSeverity63$inboundSchema: z.ZodEnum< @@ -7673,7 +9487,7 @@ export const CollectionIssue63$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason63$inboundSchema, + reason: GetResourceDeploymentDetailReason63$inboundSchema, severity: CollectionIssueSeverity63$inboundSchema, source: z.string(), }); @@ -7776,9 +9590,9 @@ export function dataAzureStorageAccountFromJSON( } /** @internal */ -export const Reason62$inboundSchema: z.ZodEnum = z.enum( - Reason62, -); +export const GetResourceDeploymentDetailReason62$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason62 +> = z.enum(GetResourceDeploymentDetailReason62); /** @internal */ export const CollectionIssueSeverity62$inboundSchema: z.ZodEnum< @@ -7791,7 +9605,7 @@ export const CollectionIssue62$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason62$inboundSchema, + reason: GetResourceDeploymentDetailReason62$inboundSchema, severity: CollectionIssueSeverity62$inboundSchema, source: z.string(), }); @@ -7877,9 +9691,9 @@ export function dataAzureResourceGroupFromJSON( } /** @internal */ -export const Reason61$inboundSchema: z.ZodEnum = z.enum( - Reason61, -); +export const GetResourceDeploymentDetailReason61$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason61 +> = z.enum(GetResourceDeploymentDetailReason61); /** @internal */ export const CollectionIssueSeverity61$inboundSchema: z.ZodEnum< @@ -7892,7 +9706,7 @@ export const CollectionIssue61$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason61$inboundSchema, + reason: GetResourceDeploymentDetailReason61$inboundSchema, severity: CollectionIssueSeverity61$inboundSchema, source: z.string(), }); @@ -7964,9 +9778,9 @@ export function dataAzureResourceProviderFromJSON( } /** @internal */ -export const Reason60$inboundSchema: z.ZodEnum = z.enum( - Reason60, -); +export const GetResourceDeploymentDetailReason60$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason60 +> = z.enum(GetResourceDeploymentDetailReason60); /** @internal */ export const CollectionIssueSeverity60$inboundSchema: z.ZodEnum< @@ -7979,7 +9793,7 @@ export const CollectionIssue60$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason60$inboundSchema, + reason: GetResourceDeploymentDetailReason60$inboundSchema, severity: CollectionIssueSeverity60$inboundSchema, source: z.string(), }); @@ -8131,31 +9945,25 @@ export function involvedObjectUnion10FromJSON( } /** @internal */ -export const GetResourceDeploymentDetailSource10$inboundSchema: z.ZodType< - GetResourceDeploymentDetailSource10, - unknown -> = z.object({ - component: z.nullable(z.string()).optional(), - host: z.nullable(z.string()).optional(), -}); +export const SourceEvent10$inboundSchema: z.ZodType = z + .object({ + component: z.nullable(z.string()).optional(), + host: z.nullable(z.string()).optional(), + }); -export function getResourceDeploymentDetailSource10FromJSON( +export function sourceEvent10FromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => - GetResourceDeploymentDetailSource10$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'GetResourceDeploymentDetailSource10' from JSON`, + (x) => SourceEvent10$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SourceEvent10' from JSON`, ); } /** @internal */ export const SourceUnion10$inboundSchema: z.ZodType = z - .union([ - z.lazy(() => GetResourceDeploymentDetailSource10$inboundSchema), - z.any(), - ]); + .union([z.lazy(() => SourceEvent10$inboundSchema), z.any()]); export function sourceUnion10FromJSON( jsonString: string, @@ -8186,10 +9994,7 @@ export const Event13$inboundSchema: z.ZodType = z.object({ raw: z.nullable(z.any()).optional(), reason: z.string(), source: z.nullable( - z.union([ - z.lazy(() => GetResourceDeploymentDetailSource10$inboundSchema), - z.any(), - ]), + z.union([z.lazy(() => SourceEvent10$inboundSchema), z.any()]), ).optional(), type: z.nullable(z.string()).optional(), }); @@ -8205,9 +10010,9 @@ export function event13FromJSON( } /** @internal */ -export const Reason59$inboundSchema: z.ZodEnum = z.enum( - Reason59, -); +export const GetResourceDeploymentDetailReason59$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason59 +> = z.enum(GetResourceDeploymentDetailReason59); /** @internal */ export const CollectionIssueSeverity59$inboundSchema: z.ZodEnum< @@ -8220,7 +10025,7 @@ export const CollectionIssue59$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason59$inboundSchema, + reason: GetResourceDeploymentDetailReason59$inboundSchema, severity: CollectionIssueSeverity59$inboundSchema, source: z.string(), }); @@ -8300,9 +10105,9 @@ export function dataKubernetesJobFromJSON( } /** @internal */ -export const Reason58$inboundSchema: z.ZodEnum = z.enum( - Reason58, -); +export const GetResourceDeploymentDetailReason58$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason58 +> = z.enum(GetResourceDeploymentDetailReason58); /** @internal */ export const CollectionIssueSeverity58$inboundSchema: z.ZodEnum< @@ -8315,7 +10120,7 @@ export const CollectionIssue58$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason58$inboundSchema, + reason: GetResourceDeploymentDetailReason58$inboundSchema, severity: CollectionIssueSeverity58$inboundSchema, source: z.string(), }); @@ -8386,9 +10191,9 @@ export function dataAzureContainerApps2FromJSON( } /** @internal */ -export const Reason57$inboundSchema: z.ZodEnum = z.enum( - Reason57, -); +export const GetResourceDeploymentDetailReason57$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason57 +> = z.enum(GetResourceDeploymentDetailReason57); /** @internal */ export const CollectionIssueSeverity57$inboundSchema: z.ZodEnum< @@ -8401,7 +10206,7 @@ export const CollectionIssue57$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason57$inboundSchema, + reason: GetResourceDeploymentDetailReason57$inboundSchema, severity: CollectionIssueSeverity57$inboundSchema, source: z.string(), }); @@ -8472,9 +10277,9 @@ export function dataGcpCloudBuildFromJSON( } /** @internal */ -export const Reason56$inboundSchema: z.ZodEnum = z.enum( - Reason56, -); +export const GetResourceDeploymentDetailReason56$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason56 +> = z.enum(GetResourceDeploymentDetailReason56); /** @internal */ export const CollectionIssueSeverity56$inboundSchema: z.ZodEnum< @@ -8487,7 +10292,7 @@ export const CollectionIssue56$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason56$inboundSchema, + reason: GetResourceDeploymentDetailReason56$inboundSchema, severity: CollectionIssueSeverity56$inboundSchema, source: z.string(), }); @@ -8613,9 +10418,9 @@ export function dataBuildFromJSON( } /** @internal */ -export const Reason55$inboundSchema: z.ZodEnum = z.enum( - Reason55, -); +export const GetResourceDeploymentDetailReason55$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason55 +> = z.enum(GetResourceDeploymentDetailReason55); /** @internal */ export const CollectionIssueSeverity55$inboundSchema: z.ZodEnum< @@ -8628,7 +10433,7 @@ export const CollectionIssue55$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason55$inboundSchema, + reason: GetResourceDeploymentDetailReason55$inboundSchema, severity: CollectionIssueSeverity55$inboundSchema, source: z.string(), }); @@ -8694,9 +10499,9 @@ export function dataLocal11FromJSON( } /** @internal */ -export const Reason54$inboundSchema: z.ZodEnum = z.enum( - Reason54, -); +export const GetResourceDeploymentDetailReason54$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason54 +> = z.enum(GetResourceDeploymentDetailReason54); /** @internal */ export const CollectionIssueSeverity54$inboundSchema: z.ZodEnum< @@ -8709,7 +10514,7 @@ export const CollectionIssue54$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason54$inboundSchema, + reason: GetResourceDeploymentDetailReason54$inboundSchema, severity: CollectionIssueSeverity54$inboundSchema, source: z.string(), }); @@ -8801,9 +10606,9 @@ export function dataAzureContainerRegistryFromJSON( } /** @internal */ -export const Reason53$inboundSchema: z.ZodEnum = z.enum( - Reason53, -); +export const GetResourceDeploymentDetailReason53$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason53 +> = z.enum(GetResourceDeploymentDetailReason53); /** @internal */ export const CollectionIssueSeverity53$inboundSchema: z.ZodEnum< @@ -8816,7 +10621,7 @@ export const CollectionIssue53$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason53$inboundSchema, + reason: GetResourceDeploymentDetailReason53$inboundSchema, severity: CollectionIssueSeverity53$inboundSchema, source: z.string(), }); @@ -8902,33 +10707,36 @@ export function dataGcpArtifactRegistryFromJSON( } /** @internal */ -export const Repository$inboundSchema: z.ZodType = z - .object({ - createdAt: z.number(), - encryptionType: z.nullable(z.string()).optional(), - imageTagMutability: z.nullable(z.string()).optional(), - kmsKeyPresent: z.boolean(), - registryId: z.string(), - repositoryArn: z.string(), - repositoryName: z.string(), - repositoryUri: z.string(), - scanOnPush: z.nullable(z.boolean()).optional(), - }); +export const GetResourceDeploymentDetailRepository$inboundSchema: z.ZodType< + GetResourceDeploymentDetailRepository, + unknown +> = z.object({ + createdAt: z.number(), + encryptionType: z.nullable(z.string()).optional(), + imageTagMutability: z.nullable(z.string()).optional(), + kmsKeyPresent: z.boolean(), + registryId: z.string(), + repositoryArn: z.string(), + repositoryName: z.string(), + repositoryUri: z.string(), + scanOnPush: z.nullable(z.boolean()).optional(), +}); -export function repositoryFromJSON( +export function getResourceDeploymentDetailRepositoryFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => Repository$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Repository' from JSON`, + (x) => + GetResourceDeploymentDetailRepository$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetResourceDeploymentDetailRepository' from JSON`, ); } /** @internal */ -export const Reason52$inboundSchema: z.ZodEnum = z.enum( - Reason52, -); +export const GetResourceDeploymentDetailReason52$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason52 +> = z.enum(GetResourceDeploymentDetailReason52); /** @internal */ export const CollectionIssueSeverity52$inboundSchema: z.ZodEnum< @@ -8941,7 +10749,7 @@ export const CollectionIssue52$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason52$inboundSchema, + reason: GetResourceDeploymentDetailReason52$inboundSchema, severity: CollectionIssueSeverity52$inboundSchema, source: z.string(), }); @@ -8995,7 +10803,9 @@ export const DataAwsEcr$inboundSchema: z.ZodType = z region: z.string(), registryId: z.string(), registryUri: z.string(), - repositories: z.array(z.lazy(() => Repository$inboundSchema)), + repositories: z.array( + z.lazy(() => GetResourceDeploymentDetailRepository$inboundSchema), + ), repositoriesTruncated: z.boolean(), repositoryCount: z.int(), repositoryPrefix: z.string(), @@ -9057,9 +10867,9 @@ export function dataArtifactRegistryFromJSON( } /** @internal */ -export const Reason51$inboundSchema: z.ZodEnum = z.enum( - Reason51, -); +export const GetResourceDeploymentDetailReason51$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason51 +> = z.enum(GetResourceDeploymentDetailReason51); /** @internal */ export const CollectionIssueSeverity51$inboundSchema: z.ZodEnum< @@ -9072,7 +10882,7 @@ export const CollectionIssue51$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason51$inboundSchema, + reason: GetResourceDeploymentDetailReason51$inboundSchema, severity: CollectionIssueSeverity51$inboundSchema, source: z.string(), }); @@ -9145,9 +10955,9 @@ export function dataAzureManagedIdentity2FromJSON( } /** @internal */ -export const Reason50$inboundSchema: z.ZodEnum = z.enum( - Reason50, -); +export const GetResourceDeploymentDetailReason50$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason50 +> = z.enum(GetResourceDeploymentDetailReason50); /** @internal */ export const CollectionIssueSeverity50$inboundSchema: z.ZodEnum< @@ -9160,7 +10970,7 @@ export const CollectionIssue50$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason50$inboundSchema, + reason: GetResourceDeploymentDetailReason50$inboundSchema, severity: CollectionIssueSeverity50$inboundSchema, source: z.string(), }); @@ -9230,9 +11040,9 @@ export function dataGcpServiceAccount2FromJSON( } /** @internal */ -export const Reason49$inboundSchema: z.ZodEnum = z.enum( - Reason49, -); +export const GetResourceDeploymentDetailReason49$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason49 +> = z.enum(GetResourceDeploymentDetailReason49); /** @internal */ export const CollectionIssueSeverity49$inboundSchema: z.ZodEnum< @@ -9245,7 +11055,7 @@ export const CollectionIssue49$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason49$inboundSchema, + reason: GetResourceDeploymentDetailReason49$inboundSchema, severity: CollectionIssueSeverity49$inboundSchema, source: z.string(), }); @@ -9355,9 +11165,9 @@ export function dataRemoteStackManagementFromJSON( } /** @internal */ -export const Reason48$inboundSchema: z.ZodEnum = z.enum( - Reason48, -); +export const GetResourceDeploymentDetailReason48$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason48 +> = z.enum(GetResourceDeploymentDetailReason48); /** @internal */ export const CollectionIssueSeverity48$inboundSchema: z.ZodEnum< @@ -9370,7 +11180,7 @@ export const CollectionIssue48$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason48$inboundSchema, + reason: GetResourceDeploymentDetailReason48$inboundSchema, severity: CollectionIssueSeverity48$inboundSchema, source: z.string(), }); @@ -9448,9 +11258,9 @@ export function dataAzureVnetFromJSON( } /** @internal */ -export const Reason47$inboundSchema: z.ZodEnum = z.enum( - Reason47, -); +export const GetResourceDeploymentDetailReason47$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason47 +> = z.enum(GetResourceDeploymentDetailReason47); /** @internal */ export const CollectionIssueSeverity47$inboundSchema: z.ZodEnum< @@ -9463,7 +11273,7 @@ export const CollectionIssue47$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason47$inboundSchema, + reason: GetResourceDeploymentDetailReason47$inboundSchema, severity: CollectionIssueSeverity47$inboundSchema, source: z.string(), }); @@ -9537,9 +11347,9 @@ export function dataGcpVpcFromJSON( } /** @internal */ -export const Reason46$inboundSchema: z.ZodEnum = z.enum( - Reason46, -); +export const GetResourceDeploymentDetailReason46$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason46 +> = z.enum(GetResourceDeploymentDetailReason46); /** @internal */ export const CollectionIssueSeverity46$inboundSchema: z.ZodEnum< @@ -9552,7 +11362,7 @@ export const CollectionIssue46$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason46$inboundSchema, + reason: GetResourceDeploymentDetailReason46$inboundSchema, severity: CollectionIssueSeverity46$inboundSchema, source: z.string(), }); @@ -9666,9 +11476,9 @@ export function dataNetworkFromJSON( } /** @internal */ -export const Reason45$inboundSchema: z.ZodEnum = z.enum( - Reason45, -); +export const GetResourceDeploymentDetailReason45$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason45 +> = z.enum(GetResourceDeploymentDetailReason45); /** @internal */ export const CollectionIssueSeverity45$inboundSchema: z.ZodEnum< @@ -9681,7 +11491,7 @@ export const CollectionIssue45$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason45$inboundSchema, + reason: GetResourceDeploymentDetailReason45$inboundSchema, severity: CollectionIssueSeverity45$inboundSchema, source: z.string(), }); @@ -9747,9 +11557,9 @@ export function dataLocal10FromJSON( } /** @internal */ -export const Reason44$inboundSchema: z.ZodEnum = z.enum( - Reason44, -); +export const GetResourceDeploymentDetailReason44$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason44 +> = z.enum(GetResourceDeploymentDetailReason44); /** @internal */ export const CollectionIssueSeverity44$inboundSchema: z.ZodEnum< @@ -9762,7 +11572,7 @@ export const CollectionIssue44$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason44$inboundSchema, + reason: GetResourceDeploymentDetailReason44$inboundSchema, severity: CollectionIssueSeverity44$inboundSchema, source: z.string(), }); @@ -9843,9 +11653,9 @@ export function dataAzureManagedIdentity1FromJSON( } /** @internal */ -export const Reason43$inboundSchema: z.ZodEnum = z.enum( - Reason43, -); +export const GetResourceDeploymentDetailReason43$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason43 +> = z.enum(GetResourceDeploymentDetailReason43); /** @internal */ export const CollectionIssueSeverity43$inboundSchema: z.ZodEnum< @@ -9858,7 +11668,7 @@ export const CollectionIssue43$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason43$inboundSchema, + reason: GetResourceDeploymentDetailReason43$inboundSchema, severity: CollectionIssueSeverity43$inboundSchema, source: z.string(), }); @@ -9937,9 +11747,9 @@ export function dataGcpServiceAccount1FromJSON( } /** @internal */ -export const Reason42$inboundSchema: z.ZodEnum = z.enum( - Reason42, -); +export const GetResourceDeploymentDetailReason42$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason42 +> = z.enum(GetResourceDeploymentDetailReason42); /** @internal */ export const CollectionIssueSeverity42$inboundSchema: z.ZodEnum< @@ -9952,7 +11762,7 @@ export const CollectionIssue42$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason42$inboundSchema, + reason: GetResourceDeploymentDetailReason42$inboundSchema, severity: CollectionIssueSeverity42$inboundSchema, source: z.string(), }); @@ -10080,9 +11890,9 @@ export function dataServiceAccountFromJSON( } /** @internal */ -export const Reason41$inboundSchema: z.ZodEnum = z.enum( - Reason41, -); +export const GetResourceDeploymentDetailReason41$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason41 +> = z.enum(GetResourceDeploymentDetailReason41); /** @internal */ export const CollectionIssueSeverity41$inboundSchema: z.ZodEnum< @@ -10095,7 +11905,7 @@ export const CollectionIssue41$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason41$inboundSchema, + reason: GetResourceDeploymentDetailReason41$inboundSchema, severity: CollectionIssueSeverity41$inboundSchema, source: z.string(), }); @@ -10167,9 +11977,9 @@ export function dataLocal9FromJSON( } /** @internal */ -export const Reason40$inboundSchema: z.ZodEnum = z.enum( - Reason40, -); +export const GetResourceDeploymentDetailReason40$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason40 +> = z.enum(GetResourceDeploymentDetailReason40); /** @internal */ export const CollectionIssueSeverity40$inboundSchema: z.ZodEnum< @@ -10182,7 +11992,7 @@ export const CollectionIssue40$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason40$inboundSchema, + reason: GetResourceDeploymentDetailReason40$inboundSchema, severity: CollectionIssueSeverity40$inboundSchema, source: z.string(), }); @@ -10251,9 +12061,9 @@ export function dataKubernetesSecretFromJSON( } /** @internal */ -export const Reason39$inboundSchema: z.ZodEnum = z.enum( - Reason39, -); +export const GetResourceDeploymentDetailReason39$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason39 +> = z.enum(GetResourceDeploymentDetailReason39); /** @internal */ export const CollectionIssueSeverity39$inboundSchema: z.ZodEnum< @@ -10266,7 +12076,7 @@ export const CollectionIssue39$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason39$inboundSchema, + reason: GetResourceDeploymentDetailReason39$inboundSchema, severity: CollectionIssueSeverity39$inboundSchema, source: z.string(), }); @@ -10313,8 +12123,8 @@ export function dataStatus39FromJSON( } /** @internal */ -export const DataAzureKeyVault$inboundSchema: z.ZodType< - DataAzureKeyVault, +export const DataAzureKeyVault1$inboundSchema: z.ZodType< + DataAzureKeyVault1, unknown > = z.object({ accessPolicyCount: z.int(), @@ -10337,20 +12147,20 @@ export const DataAzureKeyVault$inboundSchema: z.ZodType< backend: z.literal("azureKeyVault"), }); -export function dataAzureKeyVaultFromJSON( +export function dataAzureKeyVault1FromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DataAzureKeyVault$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataAzureKeyVault' from JSON`, + (x) => DataAzureKeyVault1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataAzureKeyVault1' from JSON`, ); } /** @internal */ -export const Reason38$inboundSchema: z.ZodEnum = z.enum( - Reason38, -); +export const GetResourceDeploymentDetailReason38$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason38 +> = z.enum(GetResourceDeploymentDetailReason38); /** @internal */ export const CollectionIssueSeverity38$inboundSchema: z.ZodEnum< @@ -10363,7 +12173,7 @@ export const CollectionIssue38$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason38$inboundSchema, + reason: GetResourceDeploymentDetailReason38$inboundSchema, severity: CollectionIssueSeverity38$inboundSchema, source: z.string(), }); @@ -10433,9 +12243,9 @@ export function dataGcpSecretManagerFromJSON( } /** @internal */ -export const Reason37$inboundSchema: z.ZodEnum = z.enum( - Reason37, -); +export const GetResourceDeploymentDetailReason37$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason37 +> = z.enum(GetResourceDeploymentDetailReason37); /** @internal */ export const CollectionIssueSeverity37$inboundSchema: z.ZodEnum< @@ -10448,7 +12258,7 @@ export const CollectionIssue37$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason37$inboundSchema, + reason: GetResourceDeploymentDetailReason37$inboundSchema, severity: CollectionIssueSeverity37$inboundSchema, source: z.string(), }); @@ -10532,7 +12342,7 @@ export const DataUnion9$inboundSchema: z.ZodType = z.union( [ z.lazy(() => DataAwsParameterStore$inboundSchema), z.lazy(() => DataGcpSecretManager$inboundSchema), - z.lazy(() => DataAzureKeyVault$inboundSchema), + z.lazy(() => DataAzureKeyVault1$inboundSchema), z.lazy(() => DataKubernetesSecret$inboundSchema), z.lazy(() => DataLocal9$inboundSchema), ], @@ -10553,7 +12363,7 @@ export const DataVault$inboundSchema: z.ZodType = z.object({ data: z.union([ z.lazy(() => DataAwsParameterStore$inboundSchema), z.lazy(() => DataGcpSecretManager$inboundSchema), - z.lazy(() => DataAzureKeyVault$inboundSchema), + z.lazy(() => DataAzureKeyVault1$inboundSchema), z.lazy(() => DataKubernetesSecret$inboundSchema), z.lazy(() => DataLocal9$inboundSchema), ]), @@ -10571,9 +12381,9 @@ export function dataVaultFromJSON( } /** @internal */ -export const Reason36$inboundSchema: z.ZodEnum = z.enum( - Reason36, -); +export const GetResourceDeploymentDetailReason36$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason36 +> = z.enum(GetResourceDeploymentDetailReason36); /** @internal */ export const CollectionIssueSeverity36$inboundSchema: z.ZodEnum< @@ -10586,7 +12396,7 @@ export const CollectionIssue36$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason36$inboundSchema, + reason: GetResourceDeploymentDetailReason36$inboundSchema, severity: CollectionIssueSeverity36$inboundSchema, source: z.string(), }); @@ -10654,9 +12464,9 @@ export function dataLocal8FromJSON( } /** @internal */ -export const Reason35$inboundSchema: z.ZodEnum = z.enum( - Reason35, -); +export const GetResourceDeploymentDetailReason35$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason35 +> = z.enum(GetResourceDeploymentDetailReason35); /** @internal */ export const CollectionIssueSeverity35$inboundSchema: z.ZodEnum< @@ -10669,7 +12479,7 @@ export const CollectionIssue35$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason35$inboundSchema, + reason: GetResourceDeploymentDetailReason35$inboundSchema, severity: CollectionIssueSeverity35$inboundSchema, source: z.string(), }); @@ -10738,9 +12548,9 @@ export function dataFlexibleServerFromJSON( } /** @internal */ -export const Reason34$inboundSchema: z.ZodEnum = z.enum( - Reason34, -); +export const GetResourceDeploymentDetailReason34$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason34 +> = z.enum(GetResourceDeploymentDetailReason34); /** @internal */ export const CollectionIssueSeverity34$inboundSchema: z.ZodEnum< @@ -10753,7 +12563,7 @@ export const CollectionIssue34$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason34$inboundSchema, + reason: GetResourceDeploymentDetailReason34$inboundSchema, severity: CollectionIssueSeverity34$inboundSchema, source: z.string(), }); @@ -10820,9 +12630,9 @@ export function dataCloudSQLFromJSON( } /** @internal */ -export const Reason33$inboundSchema: z.ZodEnum = z.enum( - Reason33, -); +export const GetResourceDeploymentDetailReason33$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason33 +> = z.enum(GetResourceDeploymentDetailReason33); /** @internal */ export const CollectionIssueSeverity33$inboundSchema: z.ZodEnum< @@ -10835,7 +12645,7 @@ export const CollectionIssue33$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason33$inboundSchema, + reason: GetResourceDeploymentDetailReason33$inboundSchema, severity: CollectionIssueSeverity33$inboundSchema, source: z.string(), }); @@ -10946,9 +12756,9 @@ export function dataPostgresFromJSON( } /** @internal */ -export const Reason32$inboundSchema: z.ZodEnum = z.enum( - Reason32, -); +export const GetResourceDeploymentDetailReason32$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason32 +> = z.enum(GetResourceDeploymentDetailReason32); /** @internal */ export const CollectionIssueSeverity32$inboundSchema: z.ZodEnum< @@ -10961,7 +12771,7 @@ export const CollectionIssue32$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason32$inboundSchema, + reason: GetResourceDeploymentDetailReason32$inboundSchema, severity: CollectionIssueSeverity32$inboundSchema, source: z.string(), }); @@ -11030,9 +12840,9 @@ export function dataLocal7FromJSON( } /** @internal */ -export const Reason31$inboundSchema: z.ZodEnum = z.enum( - Reason31, -); +export const GetResourceDeploymentDetailReason31$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason31 +> = z.enum(GetResourceDeploymentDetailReason31); /** @internal */ export const CollectionIssueSeverity31$inboundSchema: z.ZodEnum< @@ -11045,7 +12855,7 @@ export const CollectionIssue31$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason31$inboundSchema, + reason: GetResourceDeploymentDetailReason31$inboundSchema, severity: CollectionIssueSeverity31$inboundSchema, source: z.string(), }); @@ -11120,9 +12930,9 @@ export function dataAzureTableFromJSON( } /** @internal */ -export const Reason30$inboundSchema: z.ZodEnum = z.enum( - Reason30, -); +export const GetResourceDeploymentDetailReason30$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason30 +> = z.enum(GetResourceDeploymentDetailReason30); /** @internal */ export const CollectionIssueSeverity30$inboundSchema: z.ZodEnum< @@ -11135,7 +12945,7 @@ export const CollectionIssue30$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason30$inboundSchema, + reason: GetResourceDeploymentDetailReason30$inboundSchema, severity: CollectionIssueSeverity30$inboundSchema, source: z.string(), }); @@ -11234,9 +13044,9 @@ export function keySchemaFromJSON( } /** @internal */ -export const Reason29$inboundSchema: z.ZodEnum = z.enum( - Reason29, -); +export const GetResourceDeploymentDetailReason29$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason29 +> = z.enum(GetResourceDeploymentDetailReason29); /** @internal */ export const CollectionIssueSeverity29$inboundSchema: z.ZodEnum< @@ -11249,7 +13059,7 @@ export const CollectionIssue29$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason29$inboundSchema, + reason: GetResourceDeploymentDetailReason29$inboundSchema, severity: CollectionIssueSeverity29$inboundSchema, source: z.string(), }); @@ -11376,9 +13186,9 @@ export function dataKvFromJSON( } /** @internal */ -export const Reason28$inboundSchema: z.ZodEnum = z.enum( - Reason28, -); +export const GetResourceDeploymentDetailReason28$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason28 +> = z.enum(GetResourceDeploymentDetailReason28); /** @internal */ export const CollectionIssueSeverity28$inboundSchema: z.ZodEnum< @@ -11391,7 +13201,7 @@ export const CollectionIssue28$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason28$inboundSchema, + reason: GetResourceDeploymentDetailReason28$inboundSchema, severity: CollectionIssueSeverity28$inboundSchema, source: z.string(), }); @@ -11458,9 +13268,9 @@ export function dataLocal6FromJSON( } /** @internal */ -export const Reason27$inboundSchema: z.ZodEnum = z.enum( - Reason27, -); +export const GetResourceDeploymentDetailReason27$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason27 +> = z.enum(GetResourceDeploymentDetailReason27); /** @internal */ export const CollectionIssueSeverity27$inboundSchema: z.ZodEnum< @@ -11473,7 +13283,7 @@ export const CollectionIssue27$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason27$inboundSchema, + reason: GetResourceDeploymentDetailReason27$inboundSchema, severity: CollectionIssueSeverity27$inboundSchema, source: z.string(), }); @@ -11570,9 +13380,9 @@ export function dataAzureServiceBusFromJSON( } /** @internal */ -export const Reason26$inboundSchema: z.ZodEnum = z.enum( - Reason26, -); +export const GetResourceDeploymentDetailReason26$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason26 +> = z.enum(GetResourceDeploymentDetailReason26); /** @internal */ export const CollectionIssueSeverity26$inboundSchema: z.ZodEnum< @@ -11585,7 +13395,7 @@ export const CollectionIssue26$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason26$inboundSchema, + reason: GetResourceDeploymentDetailReason26$inboundSchema, severity: CollectionIssueSeverity26$inboundSchema, source: z.string(), }); @@ -11683,9 +13493,9 @@ export function dataGcpPubSubFromJSON( } /** @internal */ -export const Reason25$inboundSchema: z.ZodEnum = z.enum( - Reason25, -); +export const GetResourceDeploymentDetailReason25$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason25 +> = z.enum(GetResourceDeploymentDetailReason25); /** @internal */ export const CollectionIssueSeverity25$inboundSchema: z.ZodEnum< @@ -11698,7 +13508,7 @@ export const CollectionIssue25$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason25$inboundSchema, + reason: GetResourceDeploymentDetailReason25$inboundSchema, severity: CollectionIssueSeverity25$inboundSchema, source: z.string(), }); @@ -11902,31 +13712,25 @@ export function involvedObjectUnion9FromJSON( } /** @internal */ -export const GetResourceDeploymentDetailSource9$inboundSchema: z.ZodType< - GetResourceDeploymentDetailSource9, - unknown -> = z.object({ - component: z.nullable(z.string()).optional(), - host: z.nullable(z.string()).optional(), -}); +export const SourceEvent9$inboundSchema: z.ZodType = z + .object({ + component: z.nullable(z.string()).optional(), + host: z.nullable(z.string()).optional(), + }); -export function getResourceDeploymentDetailSource9FromJSON( +export function sourceEvent9FromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => - GetResourceDeploymentDetailSource9$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'GetResourceDeploymentDetailSource9' from JSON`, + (x) => SourceEvent9$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SourceEvent9' from JSON`, ); } /** @internal */ export const SourceUnion9$inboundSchema: z.ZodType = z - .union([ - z.lazy(() => GetResourceDeploymentDetailSource9$inboundSchema), - z.any(), - ]); + .union([z.lazy(() => SourceEvent9$inboundSchema), z.any()]); export function sourceUnion9FromJSON( jsonString: string, @@ -11957,10 +13761,7 @@ export const Event12$inboundSchema: z.ZodType = z.object({ raw: z.nullable(z.any()).optional(), reason: z.string(), source: z.nullable( - z.union([ - z.lazy(() => GetResourceDeploymentDetailSource9$inboundSchema), - z.any(), - ]), + z.union([z.lazy(() => SourceEvent9$inboundSchema), z.any()]), ).optional(), type: z.nullable(z.string()).optional(), }); @@ -12394,9 +14195,9 @@ export function podCountsFromJSON( } /** @internal */ -export const Reason24$inboundSchema: z.ZodEnum = z.enum( - Reason24, -); +export const GetResourceDeploymentDetailReason24$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason24 +> = z.enum(GetResourceDeploymentDetailReason24); /** @internal */ export const CollectionIssueSeverity24$inboundSchema: z.ZodEnum< @@ -12409,7 +14210,7 @@ export const CollectionIssue24$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason24$inboundSchema, + reason: GetResourceDeploymentDetailReason24$inboundSchema, severity: CollectionIssueSeverity24$inboundSchema, source: z.string(), }); @@ -12519,9 +14320,9 @@ export function nodes5FromJSON( } /** @internal */ -export const Reason23$inboundSchema: z.ZodEnum = z.enum( - Reason23, -); +export const GetResourceDeploymentDetailReason23$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason23 +> = z.enum(GetResourceDeploymentDetailReason23); /** @internal */ export const CollectionIssueSeverity23$inboundSchema: z.ZodEnum< @@ -12534,7 +14335,7 @@ export const CollectionIssue23$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason23$inboundSchema, + reason: GetResourceDeploymentDetailReason23$inboundSchema, severity: CollectionIssueSeverity23$inboundSchema, source: z.string(), }); @@ -12653,7 +14454,10 @@ export function capacityBlockerUnion4FromJSON( } /** @internal */ -export const Blocker4$inboundSchema: z.ZodType = z.object({ +export const DrainProgressBlocker4$inboundSchema: z.ZodType< + DrainProgressBlocker4, + unknown +> = z.object({ reason: z.string(), replicaId: z.string(), schedulingMode: z.string(), @@ -12661,13 +14465,13 @@ export const Blocker4$inboundSchema: z.ZodType = z.object({ workloadName: z.string(), }); -export function blocker4FromJSON( +export function drainProgressBlocker4FromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => Blocker4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Blocker4' from JSON`, + (x) => DrainProgressBlocker4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DrainProgressBlocker4' from JSON`, ); } @@ -12679,7 +14483,8 @@ export const DrainProgressStatus4$inboundSchema: z.ZodEnum< /** @internal */ export const DrainProgress4$inboundSchema: z.ZodType = z.object({ - blockers: z.array(z.lazy(() => Blocker4$inboundSchema)).optional(), + blockers: z.array(z.lazy(() => DrainProgressBlocker4$inboundSchema)) + .optional(), drainDeadlineAt: z.nullable(z.string()).optional(), drainRequestedAt: z.nullable(z.string()).optional(), drainedAt: z.nullable(z.string()).optional(), @@ -12961,9 +14766,9 @@ export function nodes4FromJSON( } /** @internal */ -export const Reason22$inboundSchema: z.ZodEnum = z.enum( - Reason22, -); +export const GetResourceDeploymentDetailReason22$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason22 +> = z.enum(GetResourceDeploymentDetailReason22); /** @internal */ export const CollectionIssueSeverity22$inboundSchema: z.ZodEnum< @@ -12976,7 +14781,7 @@ export const CollectionIssue22$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason22$inboundSchema, + reason: GetResourceDeploymentDetailReason22$inboundSchema, severity: CollectionIssueSeverity22$inboundSchema, source: z.string(), }); @@ -13092,7 +14897,10 @@ export function capacityBlockerUnion3FromJSON( } /** @internal */ -export const Blocker3$inboundSchema: z.ZodType = z.object({ +export const DrainProgressBlocker3$inboundSchema: z.ZodType< + DrainProgressBlocker3, + unknown +> = z.object({ reason: z.string(), replicaId: z.string(), schedulingMode: z.string(), @@ -13100,13 +14908,13 @@ export const Blocker3$inboundSchema: z.ZodType = z.object({ workloadName: z.string(), }); -export function blocker3FromJSON( +export function drainProgressBlocker3FromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => Blocker3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Blocker3' from JSON`, + (x) => DrainProgressBlocker3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DrainProgressBlocker3' from JSON`, ); } @@ -13118,7 +14926,8 @@ export const DrainProgressStatus3$inboundSchema: z.ZodEnum< /** @internal */ export const DrainProgress3$inboundSchema: z.ZodType = z.object({ - blockers: z.array(z.lazy(() => Blocker3$inboundSchema)).optional(), + blockers: z.array(z.lazy(() => DrainProgressBlocker3$inboundSchema)) + .optional(), drainDeadlineAt: z.nullable(z.string()).optional(), drainRequestedAt: z.nullable(z.string()).optional(), drainedAt: z.nullable(z.string()).optional(), @@ -13372,9 +15181,9 @@ export function providerFleet3FromJSON( } /** @internal */ -export const Reason21$inboundSchema: z.ZodEnum = z.enum( - Reason21, -); +export const GetResourceDeploymentDetailReason21$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason21 +> = z.enum(GetResourceDeploymentDetailReason21); /** @internal */ export const CollectionIssueSeverity21$inboundSchema: z.ZodEnum< @@ -13387,7 +15196,7 @@ export const CollectionIssue21$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason21$inboundSchema, + reason: GetResourceDeploymentDetailReason21$inboundSchema, severity: CollectionIssueSeverity21$inboundSchema, source: z.string(), }); @@ -13504,7 +15313,10 @@ export function capacityBlockerUnion2FromJSON( } /** @internal */ -export const Blocker2$inboundSchema: z.ZodType = z.object({ +export const DrainProgressBlocker2$inboundSchema: z.ZodType< + DrainProgressBlocker2, + unknown +> = z.object({ reason: z.string(), replicaId: z.string(), schedulingMode: z.string(), @@ -13512,13 +15324,13 @@ export const Blocker2$inboundSchema: z.ZodType = z.object({ workloadName: z.string(), }); -export function blocker2FromJSON( +export function drainProgressBlocker2FromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => Blocker2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Blocker2' from JSON`, + (x) => DrainProgressBlocker2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DrainProgressBlocker2' from JSON`, ); } @@ -13530,7 +15342,8 @@ export const DrainProgressStatus2$inboundSchema: z.ZodEnum< /** @internal */ export const DrainProgress2$inboundSchema: z.ZodType = z.object({ - blockers: z.array(z.lazy(() => Blocker2$inboundSchema)).optional(), + blockers: z.array(z.lazy(() => DrainProgressBlocker2$inboundSchema)) + .optional(), drainDeadlineAt: z.nullable(z.string()).optional(), drainRequestedAt: z.nullable(z.string()).optional(), drainedAt: z.nullable(z.string()).optional(), @@ -13784,9 +15597,9 @@ export function providerFleet2FromJSON( } /** @internal */ -export const Reason20$inboundSchema: z.ZodEnum = z.enum( - Reason20, -); +export const GetResourceDeploymentDetailReason20$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason20 +> = z.enum(GetResourceDeploymentDetailReason20); /** @internal */ export const CollectionIssueSeverity20$inboundSchema: z.ZodEnum< @@ -13799,7 +15612,7 @@ export const CollectionIssue20$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason20$inboundSchema, + reason: GetResourceDeploymentDetailReason20$inboundSchema, severity: CollectionIssueSeverity20$inboundSchema, source: z.string(), }); @@ -13915,7 +15728,10 @@ export function capacityBlockerUnion1FromJSON( } /** @internal */ -export const Blocker1$inboundSchema: z.ZodType = z.object({ +export const DrainProgressBlocker1$inboundSchema: z.ZodType< + DrainProgressBlocker1, + unknown +> = z.object({ reason: z.string(), replicaId: z.string(), schedulingMode: z.string(), @@ -13923,13 +15739,13 @@ export const Blocker1$inboundSchema: z.ZodType = z.object({ workloadName: z.string(), }); -export function blocker1FromJSON( +export function drainProgressBlocker1FromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => Blocker1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Blocker1' from JSON`, + (x) => DrainProgressBlocker1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DrainProgressBlocker1' from JSON`, ); } @@ -13941,7 +15757,8 @@ export const DrainProgressStatus1$inboundSchema: z.ZodEnum< /** @internal */ export const DrainProgress1$inboundSchema: z.ZodType = z.object({ - blockers: z.array(z.lazy(() => Blocker1$inboundSchema)).optional(), + blockers: z.array(z.lazy(() => DrainProgressBlocker1$inboundSchema)) + .optional(), drainDeadlineAt: z.nullable(z.string()).optional(), drainRequestedAt: z.nullable(z.string()).optional(), drainedAt: z.nullable(z.string()).optional(), @@ -14195,9 +16012,9 @@ export function providerFleet1FromJSON( } /** @internal */ -export const Reason19$inboundSchema: z.ZodEnum = z.enum( - Reason19, -); +export const GetResourceDeploymentDetailReason19$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason19 +> = z.enum(GetResourceDeploymentDetailReason19); /** @internal */ export const CollectionIssueSeverity19$inboundSchema: z.ZodEnum< @@ -14210,7 +16027,7 @@ export const CollectionIssue19$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason19$inboundSchema, + reason: GetResourceDeploymentDetailReason19$inboundSchema, severity: CollectionIssueSeverity19$inboundSchema, source: z.string(), }); @@ -14516,9 +16333,9 @@ export function event11FromJSON( } /** @internal */ -export const Reason18$inboundSchema: z.ZodEnum = z.enum( - Reason18, -); +export const GetResourceDeploymentDetailReason18$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason18 +> = z.enum(GetResourceDeploymentDetailReason18); /** @internal */ export const CollectionIssueSeverity18$inboundSchema: z.ZodEnum< @@ -14531,7 +16348,7 @@ export const CollectionIssue18$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason18$inboundSchema, + reason: GetResourceDeploymentDetailReason18$inboundSchema, severity: CollectionIssueSeverity18$inboundSchema, source: z.string(), }); @@ -14683,31 +16500,25 @@ export function involvedObjectUnion8FromJSON( } /** @internal */ -export const GetResourceDeploymentDetailSource8$inboundSchema: z.ZodType< - GetResourceDeploymentDetailSource8, - unknown -> = z.object({ - component: z.nullable(z.string()).optional(), - host: z.nullable(z.string()).optional(), -}); +export const SourceEvent8$inboundSchema: z.ZodType = z + .object({ + component: z.nullable(z.string()).optional(), + host: z.nullable(z.string()).optional(), + }); -export function getResourceDeploymentDetailSource8FromJSON( +export function sourceEvent8FromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => - GetResourceDeploymentDetailSource8$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'GetResourceDeploymentDetailSource8' from JSON`, + (x) => SourceEvent8$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SourceEvent8' from JSON`, ); } /** @internal */ export const SourceUnion8$inboundSchema: z.ZodType = z - .union([ - z.lazy(() => GetResourceDeploymentDetailSource8$inboundSchema), - z.any(), - ]); + .union([z.lazy(() => SourceEvent8$inboundSchema), z.any()]); export function sourceUnion8FromJSON( jsonString: string, @@ -14738,10 +16549,7 @@ export const Event10$inboundSchema: z.ZodType = z.object({ raw: z.nullable(z.any()).optional(), reason: z.string(), source: z.nullable( - z.union([ - z.lazy(() => GetResourceDeploymentDetailSource8$inboundSchema), - z.any(), - ]), + z.union([z.lazy(() => SourceEvent8$inboundSchema), z.any()]), ).optional(), type: z.nullable(z.string()).optional(), }); @@ -14933,9 +16741,9 @@ export function replicas4FromJSON( } /** @internal */ -export const Reason17$inboundSchema: z.ZodEnum = z.enum( - Reason17, -); +export const GetResourceDeploymentDetailReason17$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason17 +> = z.enum(GetResourceDeploymentDetailReason17); /** @internal */ export const CollectionIssueSeverity17$inboundSchema: z.ZodEnum< @@ -14948,7 +16756,7 @@ export const CollectionIssue17$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason17$inboundSchema, + reason: GetResourceDeploymentDetailReason17$inboundSchema, severity: CollectionIssueSeverity17$inboundSchema, source: z.string(), }); @@ -15246,31 +17054,25 @@ export function involvedObjectUnion7FromJSON( } /** @internal */ -export const GetResourceDeploymentDetailSource7$inboundSchema: z.ZodType< - GetResourceDeploymentDetailSource7, - unknown -> = z.object({ - component: z.nullable(z.string()).optional(), - host: z.nullable(z.string()).optional(), -}); +export const SourceEvent7$inboundSchema: z.ZodType = z + .object({ + component: z.nullable(z.string()).optional(), + host: z.nullable(z.string()).optional(), + }); -export function getResourceDeploymentDetailSource7FromJSON( +export function sourceEvent7FromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => - GetResourceDeploymentDetailSource7$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'GetResourceDeploymentDetailSource7' from JSON`, + (x) => SourceEvent7$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SourceEvent7' from JSON`, ); } /** @internal */ export const SourceUnion7$inboundSchema: z.ZodType = z - .union([ - z.lazy(() => GetResourceDeploymentDetailSource7$inboundSchema), - z.any(), - ]); + .union([z.lazy(() => SourceEvent7$inboundSchema), z.any()]); export function sourceUnion7FromJSON( jsonString: string, @@ -15303,10 +17105,7 @@ export const Event9$inboundSchema: z.ZodType = z.object({ raw: z.nullable(z.any()).optional(), reason: z.string(), source: z.nullable( - z.union([ - z.lazy(() => GetResourceDeploymentDetailSource7$inboundSchema), - z.any(), - ]), + z.union([z.lazy(() => SourceEvent7$inboundSchema), z.any()]), ).optional(), type: z.nullable(z.string()).optional(), }); @@ -15322,9 +17121,9 @@ export function event9FromJSON( } /** @internal */ -export const Reason16$inboundSchema: z.ZodEnum = z.enum( - Reason16, -); +export const GetResourceDeploymentDetailReason16$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason16 +> = z.enum(GetResourceDeploymentDetailReason16); /** @internal */ export const CollectionIssueSeverity16$inboundSchema: z.ZodEnum< @@ -15337,7 +17136,7 @@ export const CollectionIssue16$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason16$inboundSchema, + reason: GetResourceDeploymentDetailReason16$inboundSchema, severity: CollectionIssueSeverity16$inboundSchema, source: z.string(), }); @@ -15399,6 +17198,7 @@ export const DataMachines1$inboundSchema: z.ZodType = z horizonStatusMessage: z.nullable(z.string()).optional(), horizonStatusReason: z.nullable(z.string()).optional(), latestUpdateTimestamp: z.string(), + observedImage: z.nullable(z.string()).optional(), status: z.lazy(() => DataStatus16$inboundSchema), unavailableInstances: z.int(), backend: z.literal("machines"), @@ -15573,31 +17373,25 @@ export function involvedObjectUnion6FromJSON( } /** @internal */ -export const GetResourceDeploymentDetailSource6$inboundSchema: z.ZodType< - GetResourceDeploymentDetailSource6, - unknown -> = z.object({ - component: z.nullable(z.string()).optional(), - host: z.nullable(z.string()).optional(), -}); +export const SourceEvent6$inboundSchema: z.ZodType = z + .object({ + component: z.nullable(z.string()).optional(), + host: z.nullable(z.string()).optional(), + }); -export function getResourceDeploymentDetailSource6FromJSON( +export function sourceEvent6FromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => - GetResourceDeploymentDetailSource6$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'GetResourceDeploymentDetailSource6' from JSON`, + (x) => SourceEvent6$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SourceEvent6' from JSON`, ); } /** @internal */ export const SourceUnion6$inboundSchema: z.ZodType = z - .union([ - z.lazy(() => GetResourceDeploymentDetailSource6$inboundSchema), - z.any(), - ]); + .union([z.lazy(() => SourceEvent6$inboundSchema), z.any()]); export function sourceUnion6FromJSON( jsonString: string, @@ -15630,10 +17424,7 @@ export const Event8$inboundSchema: z.ZodType = z.object({ raw: z.nullable(z.any()).optional(), reason: z.string(), source: z.nullable( - z.union([ - z.lazy(() => GetResourceDeploymentDetailSource6$inboundSchema), - z.any(), - ]), + z.union([z.lazy(() => SourceEvent6$inboundSchema), z.any()]), ).optional(), type: z.nullable(z.string()).optional(), }); @@ -15649,9 +17440,9 @@ export function event8FromJSON( } /** @internal */ -export const Reason15$inboundSchema: z.ZodEnum = z.enum( - Reason15, -); +export const GetResourceDeploymentDetailReason15$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason15 +> = z.enum(GetResourceDeploymentDetailReason15); /** @internal */ export const CollectionIssueSeverity15$inboundSchema: z.ZodEnum< @@ -15664,7 +17455,7 @@ export const CollectionIssue15$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason15$inboundSchema, + reason: GetResourceDeploymentDetailReason15$inboundSchema, severity: CollectionIssueSeverity15$inboundSchema, source: z.string(), }); @@ -15726,6 +17517,7 @@ export const DataAzure1$inboundSchema: z.ZodType = z horizonStatusMessage: z.nullable(z.string()).optional(), horizonStatusReason: z.nullable(z.string()).optional(), latestUpdateTimestamp: z.string(), + observedImage: z.nullable(z.string()).optional(), status: z.lazy(() => DataStatus15$inboundSchema), unavailableInstances: z.int(), backend: z.literal("azure"), @@ -15900,31 +17692,25 @@ export function involvedObjectUnion5FromJSON( } /** @internal */ -export const GetResourceDeploymentDetailSource5$inboundSchema: z.ZodType< - GetResourceDeploymentDetailSource5, - unknown -> = z.object({ - component: z.nullable(z.string()).optional(), - host: z.nullable(z.string()).optional(), -}); +export const SourceEvent5$inboundSchema: z.ZodType = z + .object({ + component: z.nullable(z.string()).optional(), + host: z.nullable(z.string()).optional(), + }); -export function getResourceDeploymentDetailSource5FromJSON( +export function sourceEvent5FromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => - GetResourceDeploymentDetailSource5$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'GetResourceDeploymentDetailSource5' from JSON`, + (x) => SourceEvent5$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SourceEvent5' from JSON`, ); } /** @internal */ export const SourceUnion5$inboundSchema: z.ZodType = z - .union([ - z.lazy(() => GetResourceDeploymentDetailSource5$inboundSchema), - z.any(), - ]); + .union([z.lazy(() => SourceEvent5$inboundSchema), z.any()]); export function sourceUnion5FromJSON( jsonString: string, @@ -15957,10 +17743,7 @@ export const Event7$inboundSchema: z.ZodType = z.object({ raw: z.nullable(z.any()).optional(), reason: z.string(), source: z.nullable( - z.union([ - z.lazy(() => GetResourceDeploymentDetailSource5$inboundSchema), - z.any(), - ]), + z.union([z.lazy(() => SourceEvent5$inboundSchema), z.any()]), ).optional(), type: z.nullable(z.string()).optional(), }); @@ -15976,9 +17759,9 @@ export function event7FromJSON( } /** @internal */ -export const Reason14$inboundSchema: z.ZodEnum = z.enum( - Reason14, -); +export const GetResourceDeploymentDetailReason14$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason14 +> = z.enum(GetResourceDeploymentDetailReason14); /** @internal */ export const CollectionIssueSeverity14$inboundSchema: z.ZodEnum< @@ -15991,7 +17774,7 @@ export const CollectionIssue14$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason14$inboundSchema, + reason: GetResourceDeploymentDetailReason14$inboundSchema, severity: CollectionIssueSeverity14$inboundSchema, source: z.string(), }); @@ -16052,6 +17835,7 @@ export const DataGcp1$inboundSchema: z.ZodType = z.object({ horizonStatusMessage: z.nullable(z.string()).optional(), horizonStatusReason: z.nullable(z.string()).optional(), latestUpdateTimestamp: z.string(), + observedImage: z.nullable(z.string()).optional(), status: z.lazy(() => DataStatus14$inboundSchema), unavailableInstances: z.int(), backend: z.literal("gcp"), @@ -16226,31 +18010,25 @@ export function involvedObjectUnion4FromJSON( } /** @internal */ -export const GetResourceDeploymentDetailSource4$inboundSchema: z.ZodType< - GetResourceDeploymentDetailSource4, - unknown -> = z.object({ - component: z.nullable(z.string()).optional(), - host: z.nullable(z.string()).optional(), -}); +export const SourceEvent4$inboundSchema: z.ZodType = z + .object({ + component: z.nullable(z.string()).optional(), + host: z.nullable(z.string()).optional(), + }); -export function getResourceDeploymentDetailSource4FromJSON( +export function sourceEvent4FromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => - GetResourceDeploymentDetailSource4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'GetResourceDeploymentDetailSource4' from JSON`, + (x) => SourceEvent4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SourceEvent4' from JSON`, ); } /** @internal */ export const SourceUnion4$inboundSchema: z.ZodType = z - .union([ - z.lazy(() => GetResourceDeploymentDetailSource4$inboundSchema), - z.any(), - ]); + .union([z.lazy(() => SourceEvent4$inboundSchema), z.any()]); export function sourceUnion4FromJSON( jsonString: string, @@ -16283,10 +18061,7 @@ export const Event6$inboundSchema: z.ZodType = z.object({ raw: z.nullable(z.any()).optional(), reason: z.string(), source: z.nullable( - z.union([ - z.lazy(() => GetResourceDeploymentDetailSource4$inboundSchema), - z.any(), - ]), + z.union([z.lazy(() => SourceEvent4$inboundSchema), z.any()]), ).optional(), type: z.nullable(z.string()).optional(), }); @@ -16302,9 +18077,9 @@ export function event6FromJSON( } /** @internal */ -export const Reason13$inboundSchema: z.ZodEnum = z.enum( - Reason13, -); +export const GetResourceDeploymentDetailReason13$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason13 +> = z.enum(GetResourceDeploymentDetailReason13); /** @internal */ export const CollectionIssueSeverity13$inboundSchema: z.ZodEnum< @@ -16317,7 +18092,7 @@ export const CollectionIssue13$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason13$inboundSchema, + reason: GetResourceDeploymentDetailReason13$inboundSchema, severity: CollectionIssueSeverity13$inboundSchema, source: z.string(), }); @@ -16378,6 +18153,7 @@ export const DataAws1$inboundSchema: z.ZodType = z.object({ horizonStatusMessage: z.nullable(z.string()).optional(), horizonStatusReason: z.nullable(z.string()).optional(), latestUpdateTimestamp: z.string(), + observedImage: z.nullable(z.string()).optional(), status: z.lazy(() => DataStatus13$inboundSchema), unavailableInstances: z.int(), backend: z.literal("aws"), @@ -16697,9 +18473,9 @@ export function memoryUnion5FromJSON( } /** @internal */ -export const Reason12$inboundSchema: z.ZodEnum = z.enum( - Reason12, -); +export const GetResourceDeploymentDetailReason12$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason12 +> = z.enum(GetResourceDeploymentDetailReason12); /** @internal */ export const CollectionIssueSeverity12$inboundSchema: z.ZodEnum< @@ -16712,7 +18488,7 @@ export const CollectionIssue12$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason12$inboundSchema, + reason: GetResourceDeploymentDetailReason12$inboundSchema, severity: CollectionIssueSeverity12$inboundSchema, source: z.string(), }); @@ -16870,31 +18646,25 @@ export function involvedObjectUnion3FromJSON( } /** @internal */ -export const GetResourceDeploymentDetailSource3$inboundSchema: z.ZodType< - GetResourceDeploymentDetailSource3, - unknown -> = z.object({ - component: z.nullable(z.string()).optional(), - host: z.nullable(z.string()).optional(), -}); +export const SourceEvent3$inboundSchema: z.ZodType = z + .object({ + component: z.nullable(z.string()).optional(), + host: z.nullable(z.string()).optional(), + }); -export function getResourceDeploymentDetailSource3FromJSON( +export function sourceEvent3FromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => - GetResourceDeploymentDetailSource3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'GetResourceDeploymentDetailSource3' from JSON`, + (x) => SourceEvent3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SourceEvent3' from JSON`, ); } /** @internal */ export const SourceUnion3$inboundSchema: z.ZodType = z - .union([ - z.lazy(() => GetResourceDeploymentDetailSource3$inboundSchema), - z.any(), - ]); + .union([z.lazy(() => SourceEvent3$inboundSchema), z.any()]); export function sourceUnion3FromJSON( jsonString: string, @@ -16925,10 +18695,7 @@ export const Event4$inboundSchema: z.ZodType = z.object({ raw: z.nullable(z.any()).optional(), reason: z.string(), source: z.nullable( - z.union([ - z.lazy(() => GetResourceDeploymentDetailSource3$inboundSchema), - z.any(), - ]), + z.union([z.lazy(() => SourceEvent3$inboundSchema), z.any()]), ).optional(), type: z.nullable(z.string()).optional(), }); @@ -17120,9 +18887,9 @@ export function replicas3FromJSON( } /** @internal */ -export const Reason11$inboundSchema: z.ZodEnum = z.enum( - Reason11, -); +export const GetResourceDeploymentDetailReason11$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason11 +> = z.enum(GetResourceDeploymentDetailReason11); /** @internal */ export const CollectionIssueSeverity11$inboundSchema: z.ZodEnum< @@ -17135,7 +18902,7 @@ export const CollectionIssue11$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason11$inboundSchema, + reason: GetResourceDeploymentDetailReason11$inboundSchema, severity: CollectionIssueSeverity11$inboundSchema, source: z.string(), }); @@ -17355,31 +19122,25 @@ export function involvedObjectUnion2FromJSON( } /** @internal */ -export const GetResourceDeploymentDetailSource2$inboundSchema: z.ZodType< - GetResourceDeploymentDetailSource2, - unknown -> = z.object({ - component: z.nullable(z.string()).optional(), - host: z.nullable(z.string()).optional(), -}); +export const SourceEvent2$inboundSchema: z.ZodType = z + .object({ + component: z.nullable(z.string()).optional(), + host: z.nullable(z.string()).optional(), + }); -export function getResourceDeploymentDetailSource2FromJSON( +export function sourceEvent2FromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => - GetResourceDeploymentDetailSource2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'GetResourceDeploymentDetailSource2' from JSON`, + (x) => SourceEvent2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SourceEvent2' from JSON`, ); } /** @internal */ export const SourceUnion2$inboundSchema: z.ZodType = z - .union([ - z.lazy(() => GetResourceDeploymentDetailSource2$inboundSchema), - z.any(), - ]); + .union([z.lazy(() => SourceEvent2$inboundSchema), z.any()]); export function sourceUnion2FromJSON( jsonString: string, @@ -17412,10 +19173,7 @@ export const Event3$inboundSchema: z.ZodType = z.object({ raw: z.nullable(z.any()).optional(), reason: z.string(), source: z.nullable( - z.union([ - z.lazy(() => GetResourceDeploymentDetailSource2$inboundSchema), - z.any(), - ]), + z.union([z.lazy(() => SourceEvent2$inboundSchema), z.any()]), ).optional(), type: z.nullable(z.string()).optional(), }); @@ -17605,9 +19363,9 @@ export const SchedulingMode$inboundSchema: z.ZodEnum = z .enum(SchedulingMode); /** @internal */ -export const Reason10$inboundSchema: z.ZodEnum = z.enum( - Reason10, -); +export const GetResourceDeploymentDetailReason10$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason10 +> = z.enum(GetResourceDeploymentDetailReason10); /** @internal */ export const CollectionIssueSeverity10$inboundSchema: z.ZodEnum< @@ -17620,7 +19378,7 @@ export const CollectionIssue10$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason10$inboundSchema, + reason: GetResourceDeploymentDetailReason10$inboundSchema, severity: CollectionIssueSeverity10$inboundSchema, source: z.string(), }); @@ -17677,8 +19435,10 @@ export const DataHorizonPlatform$inboundSchema: z.ZodType< .optional(), events: z.array(z.lazy(() => Event3$inboundSchema)), image: z.nullable(z.string()).optional(), + latestUpdateTimestamp: z.nullable(z.string()).optional(), memory: z.nullable(z.union([z.lazy(() => Memory3$inboundSchema), z.any()])) .optional(), + observedImage: z.nullable(z.string()).optional(), replicaUnits: z.array(z.lazy(() => ReplicaUnit$inboundSchema)), replicas: z.lazy(() => Replicas2$inboundSchema), schedulingMode: SchedulingMode$inboundSchema, @@ -17985,7 +19745,9 @@ export function processUnionFromJSON( } /** @internal */ -export const Reason9$inboundSchema: z.ZodEnum = z.enum(Reason9); +export const GetResourceDeploymentDetailReason9$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason9 +> = z.enum(GetResourceDeploymentDetailReason9); /** @internal */ export const CollectionIssueSeverity9$inboundSchema: z.ZodEnum< @@ -17998,7 +19760,7 @@ export const CollectionIssue9$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason9$inboundSchema, + reason: GetResourceDeploymentDetailReason9$inboundSchema, severity: CollectionIssueSeverity9$inboundSchema, source: z.string(), }); @@ -18149,31 +19911,25 @@ export function involvedObjectUnion1FromJSON( } /** @internal */ -export const GetResourceDeploymentDetailSource1$inboundSchema: z.ZodType< - GetResourceDeploymentDetailSource1, - unknown -> = z.object({ - component: z.nullable(z.string()).optional(), - host: z.nullable(z.string()).optional(), -}); +export const SourceEvent1$inboundSchema: z.ZodType = z + .object({ + component: z.nullable(z.string()).optional(), + host: z.nullable(z.string()).optional(), + }); -export function getResourceDeploymentDetailSource1FromJSON( +export function sourceEvent1FromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => - GetResourceDeploymentDetailSource1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'GetResourceDeploymentDetailSource1' from JSON`, + (x) => SourceEvent1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SourceEvent1' from JSON`, ); } /** @internal */ export const SourceUnion1$inboundSchema: z.ZodType = z - .union([ - z.lazy(() => GetResourceDeploymentDetailSource1$inboundSchema), - z.any(), - ]); + .union([z.lazy(() => SourceEvent1$inboundSchema), z.any()]); export function sourceUnion1FromJSON( jsonString: string, @@ -18204,10 +19960,7 @@ export const Event1$inboundSchema: z.ZodType = z.object({ raw: z.nullable(z.any()).optional(), reason: z.string(), source: z.nullable( - z.union([ - z.lazy(() => GetResourceDeploymentDetailSource1$inboundSchema), - z.any(), - ]), + z.union([z.lazy(() => SourceEvent1$inboundSchema), z.any()]), ).optional(), type: z.nullable(z.string()).optional(), }); @@ -18399,7 +20152,9 @@ export function replicas1FromJSON( } /** @internal */ -export const Reason8$inboundSchema: z.ZodEnum = z.enum(Reason8); +export const GetResourceDeploymentDetailReason8$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason8 +> = z.enum(GetResourceDeploymentDetailReason8); /** @internal */ export const CollectionIssueSeverity8$inboundSchema: z.ZodEnum< @@ -18412,7 +20167,7 @@ export const CollectionIssue8$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason8$inboundSchema, + reason: GetResourceDeploymentDetailReason8$inboundSchema, severity: CollectionIssueSeverity8$inboundSchema, source: z.string(), }); @@ -18555,7 +20310,9 @@ export function dataKubernetes1FromJSON( } /** @internal */ -export const Reason7$inboundSchema: z.ZodEnum = z.enum(Reason7); +export const GetResourceDeploymentDetailReason7$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason7 +> = z.enum(GetResourceDeploymentDetailReason7); /** @internal */ export const CollectionIssueSeverity7$inboundSchema: z.ZodEnum< @@ -18568,7 +20325,7 @@ export const CollectionIssue7$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason7$inboundSchema, + reason: GetResourceDeploymentDetailReason7$inboundSchema, severity: CollectionIssueSeverity7$inboundSchema, source: z.string(), }); @@ -18642,7 +20399,9 @@ export function dataAzureContainerApps1FromJSON( } /** @internal */ -export const Reason6$inboundSchema: z.ZodEnum = z.enum(Reason6); +export const GetResourceDeploymentDetailReason6$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason6 +> = z.enum(GetResourceDeploymentDetailReason6); /** @internal */ export const CollectionIssueSeverity6$inboundSchema: z.ZodEnum< @@ -18655,7 +20414,7 @@ export const CollectionIssue6$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason6$inboundSchema, + reason: GetResourceDeploymentDetailReason6$inboundSchema, severity: CollectionIssueSeverity6$inboundSchema, source: z.string(), }); @@ -18733,7 +20492,9 @@ export function dataGcpCloudRunFromJSON( } /** @internal */ -export const Reason5$inboundSchema: z.ZodEnum = z.enum(Reason5); +export const GetResourceDeploymentDetailReason5$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason5 +> = z.enum(GetResourceDeploymentDetailReason5); /** @internal */ export const CollectionIssueSeverity5$inboundSchema: z.ZodEnum< @@ -18746,7 +20507,7 @@ export const CollectionIssue5$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason5$inboundSchema, + reason: GetResourceDeploymentDetailReason5$inboundSchema, severity: CollectionIssueSeverity5$inboundSchema, source: z.string(), }); @@ -18871,7 +20632,9 @@ export function dataWorkerFromJSON( } /** @internal */ -export const Reason4$inboundSchema: z.ZodEnum = z.enum(Reason4); +export const GetResourceDeploymentDetailReason4$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason4 +> = z.enum(GetResourceDeploymentDetailReason4); /** @internal */ export const CollectionIssueSeverity4$inboundSchema: z.ZodEnum< @@ -18884,7 +20647,7 @@ export const CollectionIssue4$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason4$inboundSchema, + reason: GetResourceDeploymentDetailReason4$inboundSchema, severity: CollectionIssueSeverity4$inboundSchema, source: z.string(), }); @@ -18953,7 +20716,9 @@ export function dataLocal1FromJSON( } /** @internal */ -export const Reason3$inboundSchema: z.ZodEnum = z.enum(Reason3); +export const GetResourceDeploymentDetailReason3$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason3 +> = z.enum(GetResourceDeploymentDetailReason3); /** @internal */ export const CollectionIssueSeverity3$inboundSchema: z.ZodEnum< @@ -18966,7 +20731,7 @@ export const CollectionIssue3$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason3$inboundSchema, + reason: GetResourceDeploymentDetailReason3$inboundSchema, severity: CollectionIssueSeverity3$inboundSchema, source: z.string(), }); @@ -19056,7 +20821,9 @@ export function dataAzureBlobFromJSON( } /** @internal */ -export const Reason2$inboundSchema: z.ZodEnum = z.enum(Reason2); +export const GetResourceDeploymentDetailReason2$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason2 +> = z.enum(GetResourceDeploymentDetailReason2); /** @internal */ export const CollectionIssueSeverity2$inboundSchema: z.ZodEnum< @@ -19069,7 +20836,7 @@ export const CollectionIssue2$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason2$inboundSchema, + reason: GetResourceDeploymentDetailReason2$inboundSchema, severity: CollectionIssueSeverity2$inboundSchema, source: z.string(), }); @@ -19151,7 +20918,9 @@ export function dataGcpCloudStorageFromJSON( } /** @internal */ -export const Reason1$inboundSchema: z.ZodEnum = z.enum(Reason1); +export const GetResourceDeploymentDetailReason1$inboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailReason1 +> = z.enum(GetResourceDeploymentDetailReason1); /** @internal */ export const CollectionIssueSeverity1$inboundSchema: z.ZodEnum< @@ -19164,7 +20933,7 @@ export const CollectionIssue1$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), - reason: Reason1$inboundSchema, + reason: GetResourceDeploymentDetailReason1$inboundSchema, severity: CollectionIssueSeverity1$inboundSchema, source: z.string(), }); @@ -19283,7 +21052,7 @@ export function dataStorageFromJSON( } /** @internal */ -export const DataUnion16$inboundSchema: z.ZodType = z +export const DataUnion18$inboundSchema: z.ZodType = z .union([ z.lazy(() => DataStorage$inboundSchema), z.lazy(() => DataWorker$inboundSchema), @@ -19305,15 +21074,17 @@ export const DataUnion16$inboundSchema: z.ZodType = z z.lazy(() => DataAzureStorageAccount$inboundSchema), z.lazy(() => DataAzureContainerAppsEnvironment$inboundSchema), z.lazy(() => DataAzureServiceBusNamespace$inboundSchema), + z.lazy(() => DataAi$inboundSchema), + z.lazy(() => DataKey$inboundSchema), ]); -export function dataUnion16FromJSON( +export function dataUnion18FromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => DataUnion16$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataUnion16' from JSON`, + (x) => DataUnion18$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataUnion18' from JSON`, ); } @@ -19364,6 +21135,8 @@ export const Heartbeat$inboundSchema: z.ZodType = z.object({ z.lazy(() => DataAzureStorageAccount$inboundSchema), z.lazy(() => DataAzureContainerAppsEnvironment$inboundSchema), z.lazy(() => DataAzureServiceBusNamespace$inboundSchema), + z.lazy(() => DataAi$inboundSchema), + z.lazy(() => DataKey$inboundSchema), ]), deploymentId: z.nullable(z.string()).optional(), observedAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), diff --git a/client-sdks/platform/typescript/src/models/operations/getworkspaceinvitationpreview.ts b/client-sdks/platform/typescript/src/models/operations/getworkspaceinvitationpreview.ts new file mode 100644 index 000000000..bce40bbf3 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/getworkspaceinvitationpreview.ts @@ -0,0 +1,32 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; + +export type GetWorkspaceInvitationPreviewRequest = { + token: string; +}; + +/** @internal */ +export type GetWorkspaceInvitationPreviewRequest$Outbound = { + token: string; +}; + +/** @internal */ +export const GetWorkspaceInvitationPreviewRequest$outboundSchema: z.ZodType< + GetWorkspaceInvitationPreviewRequest$Outbound, + GetWorkspaceInvitationPreviewRequest +> = z.object({ + token: z.string(), +}); + +export function getWorkspaceInvitationPreviewRequestToJSON( + getWorkspaceInvitationPreviewRequest: GetWorkspaceInvitationPreviewRequest, +): string { + return JSON.stringify( + GetWorkspaceInvitationPreviewRequest$outboundSchema.parse( + getWorkspaceInvitationPreviewRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/getworkspaceinvitelink.ts b/client-sdks/platform/typescript/src/models/operations/getworkspaceinvitelink.ts new file mode 100644 index 000000000..8c4a2fb77 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/getworkspaceinvitelink.ts @@ -0,0 +1,41 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; + +export type GetWorkspaceInviteLinkRequest = { + /** + * Unique identifier for the workspace. + */ + id: string; + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; +}; + +/** @internal */ +export type GetWorkspaceInviteLinkRequest$Outbound = { + id: string; + workspace?: string | undefined; +}; + +/** @internal */ +export const GetWorkspaceInviteLinkRequest$outboundSchema: z.ZodType< + GetWorkspaceInviteLinkRequest$Outbound, + GetWorkspaceInviteLinkRequest +> = z.object({ + id: z.string(), + workspace: z.string().optional(), +}); + +export function getWorkspaceInviteLinkRequestToJSON( + getWorkspaceInviteLinkRequest: GetWorkspaceInviteLinkRequest, +): string { + return JSON.stringify( + GetWorkspaceInviteLinkRequest$outboundSchema.parse( + getWorkspaceInviteLinkRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/getworkspacesettings.ts b/client-sdks/platform/typescript/src/models/operations/getworkspacesettings.ts new file mode 100644 index 000000000..dcb559b97 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/getworkspacesettings.ts @@ -0,0 +1,41 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; + +export type GetWorkspaceSettingsRequest = { + /** + * Unique identifier for the workspace. + */ + id: string; + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; +}; + +/** @internal */ +export type GetWorkspaceSettingsRequest$Outbound = { + id: string; + workspace?: string | undefined; +}; + +/** @internal */ +export const GetWorkspaceSettingsRequest$outboundSchema: z.ZodType< + GetWorkspaceSettingsRequest$Outbound, + GetWorkspaceSettingsRequest +> = z.object({ + id: z.string(), + workspace: z.string().optional(), +}); + +export function getWorkspaceSettingsRequestToJSON( + getWorkspaceSettingsRequest: GetWorkspaceSettingsRequest, +): string { + return JSON.stringify( + GetWorkspaceSettingsRequest$outboundSchema.parse( + getWorkspaceSettingsRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/index.ts b/client-sdks/platform/typescript/src/models/operations/index.ts index ef6b0e2fe..7c42c1ca3 100644 --- a/client-sdks/platform/typescript/src/models/operations/index.ts +++ b/client-sdks/platform/typescript/src/models/operations/index.ts @@ -2,15 +2,27 @@ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. */ +export * from "./acceptworkspaceinvitation.js"; export * from "./addworkspacemember.js"; +export * from "./applycontainerregistrymanagersnapshot.js"; +export * from "./approveagentsession.js"; export * from "./cancelmachinesmachinedrain.js"; export * from "./cancelmanagersetup.js"; export * from "./cancelpackage.js"; export * from "./completecommand.js"; -export * from "./configureprojectcustomerkey.js"; -export * from "./configureprojectcustomermodels.js"; +export * from "./configureprojectbuckets.js"; +export * from "./configureprojectdeployments.js"; +export * from "./configureprojectkeys.js"; +export * from "./configureprojectmodels.js"; +export * from "./configureprojectregistry.js"; +export * from "./configureprojectsource.js"; +export * from "./continueawsvirtualkey.js"; +export * from "./createaccessrequest.js"; export * from "./createapikey.js"; +export * from "./createawsvirtualkey.js"; export * from "./createcommand.js"; +export * from "./createcontainerregistrycredential.js"; +export * from "./createcontainerregistryrepository.js"; export * from "./createdebugsession.js"; export * from "./createdeployment.js"; export * from "./createdeploymentgroup.js"; @@ -21,29 +33,44 @@ export * from "./createdomainendpoint.js"; export * from "./createfirstpartydeploymentsession.js"; export * from "./createmachinesjointoken.js"; export * from "./createmanager.js"; +export * from "./createoperationsbundleuploadurl.js"; export * from "./createproject.js"; export * from "./createprojectfromtemplate.js"; export * from "./createrelease.js"; +export * from "./createreleasechannel.js"; +export * from "./createremotebindingsexternalaccess.js"; export * from "./createsetuplink.js"; export * from "./createsetupregistrationoperation.js"; export * from "./createworkspace.js"; +export * from "./createworkspaceinvitation.js"; +export * from "./createworkspaceinvitelink.js"; +export * from "./decommissionawsvirtualkey.js"; export * from "./deleteapikeys.js"; +export * from "./deletecontainerregistryrepository.js"; export * from "./deletedeployment.js"; export * from "./deletedeploymentgroup.js"; -export * from "./deletedirectanthropicbinding.js"; export * from "./deletedomain.js"; +export * from "./deleteexternalaibinding.js"; export * from "./deletemanager.js"; export * from "./deleteproject.js"; +export * from "./deletereleasechannel.js"; export * from "./deleteworkspace.js"; export * from "./dismissworkspaceonboarding.js"; export * from "./dispatchcommand.js"; export * from "./drainmachinesmachine.js"; export * from "./ensuredeploymentgroupbyexternalid.js"; export * from "./ensuredeploymentgroupbyname.js"; +export * from "./finalizeawsvirtualkeydeletion.js"; +export * from "./generatemanagerbindingtoken.js"; export * from "./generatemanagertoken.js"; +export * from "./getaccessrequestcoordinates.js"; +export * from "./getagentsession.js"; export * from "./getapikey.js"; +export * from "./getawsvirtualkey.js"; export * from "./getcloudregions.js"; export * from "./getcommand.js"; +export * from "./getcontainerregistry.js"; +export * from "./getcontainerregistrymanagersnapshot.js"; export * from "./getdebugsession.js"; export * from "./getdeployment.js"; export * from "./getdeploymentconnectioninfo.js"; @@ -52,16 +79,19 @@ export * from "./getdeploymentgroupbyexternalid.js"; export * from "./getdeploymentinfo.js"; export * from "./getdeploymentinputs.js"; export * from "./getdeploymentstats.js"; -export * from "./getdirectanthropicbinding.js"; export * from "./getdomain.js"; export * from "./getevent.js"; +export * from "./getexternalaibinding.js"; export * from "./getmanager.js"; export * from "./getmanagerdeployment.js"; export * from "./getmanagerdomainbinding.js"; export * from "./getmanagermanagementconfig.js"; +export * from "./getoperationspolicy.js"; export * from "./getpackage.js"; export * from "./getproject.js"; export * from "./getprojectactiverelease.js"; +export * from "./getprojectaiusage.js"; +export * from "./getprojectcapabilityoverview.js"; export * from "./getprojectdeploymentlinksetup.js"; export * from "./getprojectdeploymentportaldomain.js"; export * from "./getprojectgcpoauthprovider.js"; @@ -71,9 +101,16 @@ export * from "./getresourcedeploymentdetail.js"; export * from "./getsetupregistrationoperation.js"; export * from "./getworkspace.js"; export * from "./getworkspacebillingentitlements.js"; +export * from "./getworkspaceinvitationpreview.js"; +export * from "./getworkspaceinvitelink.js"; +export * from "./getworkspacesettings.js"; export * from "./importdeployment.js"; export * from "./incrementcommandattempt.js"; +export * from "./invokeoperation.js"; +export * from "./listagentsessionevents.js"; +export * from "./listagentsessions.js"; export * from "./listapikeys.js"; +export * from "./listawsvirtualkeys.js"; export * from "./listbillingauditlog.js"; export * from "./listcommanddeployments.js"; export * from "./listcommandnames.js"; @@ -93,21 +130,29 @@ export * from "./listmachinesjointokens.js"; export * from "./listmanagerevents.js"; export * from "./listmanagers.js"; export * from "./listmemberships.js"; +export * from "./listoperationsplugins.js"; export * from "./listpackages.js"; export * from "./listprojects.js"; export * from "./listreleaseauthors.js"; export * from "./listreleasebranches.js"; +export * from "./listreleasechannels.js"; +export * from "./listreleasedeployments.js"; export * from "./listreleases.js"; export * from "./listresourcedeployments.js"; export * from "./listresourceoverview.js"; +export * from "./listworkspaceinvitations.js"; export * from "./listworkspacemembers.js"; export * from "./listworkspaces.js"; export * from "./pindeploymentrelease.js"; export * from "./plandeploymentcompute.js"; export * from "./preparedeploymentstack.js"; export * from "./prepareoperatormanifestpackage.js"; +export * from "./promoterelease.js"; export * from "./provisionmanager.js"; -export * from "./putdirectanthropicbinding.js"; +export * from "./publishoperationsplugin.js"; +export * from "./putcontainerregistry.js"; +export * from "./putexternalaibinding.js"; +export * from "./queueaccessrequest.js"; export * from "./rebuildpackages.js"; export * from "./redeploydeployment.js"; export * from "./refreshdomain.js"; @@ -115,22 +160,39 @@ export * from "./removemachinesmachine.js"; export * from "./removeworkspacemember.js"; export * from "./renderoperatormanifest.js"; export * from "./reportmanagerheartbeat.js"; +export * from "./resendworkspaceinvitation.js"; export * from "./resolve.js"; export * from "./resolvecommandtarget.js"; export * from "./resolvemanagergcpoauthprovider.js"; +export * from "./restoreawsvirtualkey.js"; export * from "./retrydeployment.js"; export * from "./retrymanager.js"; export * from "./retrymanagersetup.js"; export * from "./revokeapikey.js"; +export * from "./revokecontainerregistry.js"; +export * from "./revokecontainerregistrycredential.js"; export * from "./revokemachinesjointoken.js"; +export * from "./revokeworkspaceinvitation.js"; +export * from "./revokeworkspaceinvitelink.js"; +export * from "./rotateawsvirtualkeycredential.js"; export * from "./rotatemachinesjointoken.js"; export * from "./setdeploymentgroupexternalid.js"; +export * from "./setdeploymentreleasechannel.js"; +export * from "./setoperationspluginenabled.js"; +export * from "./setprojectcapabilities.js"; +export * from "./slackintegrationchannels.js"; +export * from "./slackintegrationinstallurl.js"; +export * from "./slackintegrationsetnotificationchannel.js"; +export * from "./slackintegrationstatus.js"; +export * from "./slackintegrationuninstall.js"; +export * from "./stopagentsession.js"; export * from "./syncacquire.js"; export * from "./synccontext.js"; export * from "./syncgitnamespaces.js"; export * from "./synclist.js"; export * from "./syncreconcile.js"; export * from "./syncrelease.js"; +export * from "./syncrenew.js"; export * from "./updateapikey.js"; export * from "./updatecommand.js"; export * from "./updatedebugsession.js"; @@ -139,9 +201,12 @@ export * from "./updatedeploymentgroup.js"; export * from "./updatedeploymentinputs.js"; export * from "./updatemanager.js"; export * from "./updatemanagerdomainbinding.js"; +export * from "./updateoperationspolicy.js"; export * from "./updateproject.js"; export * from "./updateprojectgcpoauthprovider.js"; export * from "./updateuserprofile.js"; export * from "./updateworkspace.js"; export * from "./updateworkspacemember.js"; +export * from "./updateworkspacesettings.js"; +export * from "./verifycontainerregistry.js"; export * from "./whoami.js"; diff --git a/client-sdks/platform/typescript/src/models/operations/invokeoperation.ts b/client-sdks/platform/typescript/src/models/operations/invokeoperation.ts new file mode 100644 index 000000000..e5a0d2486 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/invokeoperation.ts @@ -0,0 +1,49 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../../lib/primitives.js"; +import * as models from "../index.js"; + +export type InvokeOperationRequest = { + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; + /** + * Filter by project ID or name. + */ + project: string; + invokeOperationRequest?: models.InvokeOperationRequest | undefined; +}; + +/** @internal */ +export type InvokeOperationRequest$Outbound = { + workspace?: string | undefined; + project: string; + InvokeOperationRequest?: models.InvokeOperationRequest$Outbound | undefined; +}; + +/** @internal */ +export const InvokeOperationRequest$outboundSchema: z.ZodType< + InvokeOperationRequest$Outbound, + InvokeOperationRequest +> = z.object({ + workspace: z.string().optional(), + project: z.string(), + invokeOperationRequest: models.InvokeOperationRequest$outboundSchema + .optional(), +}).transform((v) => { + return remap$(v, { + invokeOperationRequest: "InvokeOperationRequest", + }); +}); + +export function invokeOperationRequestToJSON( + invokeOperationRequest: InvokeOperationRequest, +): string { + return JSON.stringify( + InvokeOperationRequest$outboundSchema.parse(invokeOperationRequest), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/listagentsessionevents.ts b/client-sdks/platform/typescript/src/models/operations/listagentsessionevents.ts new file mode 100644 index 000000000..356ffeb6a --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/listagentsessionevents.ts @@ -0,0 +1,44 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; + +export type ListAgentSessionEventsRequest = { + id: string; + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; + after?: number | null | undefined; + limit?: number | undefined; +}; + +/** @internal */ +export type ListAgentSessionEventsRequest$Outbound = { + id: string; + workspace?: string | undefined; + after: number | null; + limit: number; +}; + +/** @internal */ +export const ListAgentSessionEventsRequest$outboundSchema: z.ZodType< + ListAgentSessionEventsRequest$Outbound, + ListAgentSessionEventsRequest +> = z.object({ + id: z.string(), + workspace: z.string().optional(), + after: z.nullable(z.int().default(0)), + limit: z.int().default(200), +}); + +export function listAgentSessionEventsRequestToJSON( + listAgentSessionEventsRequest: ListAgentSessionEventsRequest, +): string { + return JSON.stringify( + ListAgentSessionEventsRequest$outboundSchema.parse( + listAgentSessionEventsRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/listagentsessions.ts b/client-sdks/platform/typescript/src/models/operations/listagentsessions.ts new file mode 100644 index 000000000..54005b43d --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/listagentsessions.ts @@ -0,0 +1,33 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; + +export type ListAgentSessionsRequest = { + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; +}; + +/** @internal */ +export type ListAgentSessionsRequest$Outbound = { + workspace?: string | undefined; +}; + +/** @internal */ +export const ListAgentSessionsRequest$outboundSchema: z.ZodType< + ListAgentSessionsRequest$Outbound, + ListAgentSessionsRequest +> = z.object({ + workspace: z.string().optional(), +}); + +export function listAgentSessionsRequestToJSON( + listAgentSessionsRequest: ListAgentSessionsRequest, +): string { + return JSON.stringify( + ListAgentSessionsRequest$outboundSchema.parse(listAgentSessionsRequest), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/listawsvirtualkeys.ts b/client-sdks/platform/typescript/src/models/operations/listawsvirtualkeys.ts new file mode 100644 index 000000000..aecb1c2f7 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/listawsvirtualkeys.ts @@ -0,0 +1,149 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../../lib/schemas.js"; +import { ClosedEnum } from "../../types/enums.js"; +import { Result as SafeParseResult } from "../../types/fp.js"; +import { SDKValidationError } from "../errors/sdkvalidationerror.js"; + +export type ListAwsVirtualKeysRequest = { + /** + * Filter by project ID or name. + */ + project: string; +}; + +export const ListAwsVirtualKeysStatus = { + Provisioning: "provisioning", + Ready: "ready", + ActionRequired: "action-required", + Decommissioning: "decommissioning", + DeletionPending: "deletion-pending", + Deleted: "deleted", + Failed: "failed", +} as const; +export type ListAwsVirtualKeysStatus = ClosedEnum< + typeof ListAwsVirtualKeysStatus +>; + +export type ListAwsVirtualKeysVirtualKey = { + /** + * Unique identifier for the aws virtual key. + */ + id: string; + projectId: string; + status: ListAwsVirtualKeysStatus; + externalKeyId: string; + awsAccountId: string; + awsRegion: string; + customKeyStoreId: string | null; + kmsKeyArn: string | null; + alias: string | null; + description: string | null; + deletionWindowDays: number; + tags: { [k: string]: string }; + observedAt: Date | null; + canaryPassedAt: Date | null; + deletionScheduledAt: Date | null; + finalDeletionObservedAt: Date | null; + createdAt: Date; + updatedAt: Date; +}; + +/** + * AWS Virtual Keys in a project + */ +export type ListAwsVirtualKeysResponse = { + virtualKeys: Array; +}; + +/** @internal */ +export type ListAwsVirtualKeysRequest$Outbound = { + project: string; +}; + +/** @internal */ +export const ListAwsVirtualKeysRequest$outboundSchema: z.ZodType< + ListAwsVirtualKeysRequest$Outbound, + ListAwsVirtualKeysRequest +> = z.object({ + project: z.string(), +}); + +export function listAwsVirtualKeysRequestToJSON( + listAwsVirtualKeysRequest: ListAwsVirtualKeysRequest, +): string { + return JSON.stringify( + ListAwsVirtualKeysRequest$outboundSchema.parse(listAwsVirtualKeysRequest), + ); +} + +/** @internal */ +export const ListAwsVirtualKeysStatus$inboundSchema: z.ZodEnum< + typeof ListAwsVirtualKeysStatus +> = z.enum(ListAwsVirtualKeysStatus); + +/** @internal */ +export const ListAwsVirtualKeysVirtualKey$inboundSchema: z.ZodType< + ListAwsVirtualKeysVirtualKey, + unknown +> = z.object({ + id: z.string(), + projectId: z.string(), + status: ListAwsVirtualKeysStatus$inboundSchema, + externalKeyId: z.string(), + awsAccountId: z.string(), + awsRegion: z.string(), + customKeyStoreId: z.nullable(z.string()), + kmsKeyArn: z.nullable(z.string()), + alias: z.nullable(z.string()), + description: z.nullable(z.string()), + deletionWindowDays: z.int(), + tags: z.record(z.string(), z.string()), + observedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + canaryPassedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + deletionScheduledAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + finalDeletionObservedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + createdAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), + updatedAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), +}); + +export function listAwsVirtualKeysVirtualKeyFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ListAwsVirtualKeysVirtualKey$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ListAwsVirtualKeysVirtualKey' from JSON`, + ); +} + +/** @internal */ +export const ListAwsVirtualKeysResponse$inboundSchema: z.ZodType< + ListAwsVirtualKeysResponse, + unknown +> = z.object({ + virtualKeys: z.array( + z.lazy(() => ListAwsVirtualKeysVirtualKey$inboundSchema), + ), +}); + +export function listAwsVirtualKeysResponseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ListAwsVirtualKeysResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ListAwsVirtualKeysResponse' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/listdeployments.ts b/client-sdks/platform/typescript/src/models/operations/listdeployments.ts index 1b4df7493..7e81f372e 100644 --- a/client-sdks/platform/typescript/src/models/operations/listdeployments.ts +++ b/client-sdks/platform/typescript/src/models/operations/listdeployments.ts @@ -93,6 +93,10 @@ export type ListDeploymentsRequest = { * Filter by manager ID */ managerId?: string | undefined; + /** + * Filter by deployment purpose + */ + purpose?: models.DeploymentPurpose | undefined; /** * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. */ @@ -158,6 +162,7 @@ export type ListDeploymentsRequest$Outbound = { deploymentGroup?: string | undefined; name?: string | undefined; managerId?: string | undefined; + purpose?: string | undefined; workspace?: string | undefined; search?: string | undefined; status?: Array | undefined; @@ -176,6 +181,7 @@ export const ListDeploymentsRequest$outboundSchema: z.ZodType< deploymentGroup: z.string().optional(), name: z.string().optional(), managerId: z.string().optional(), + purpose: models.DeploymentPurpose$outboundSchema.optional(), workspace: z.string().optional(), search: z.string().optional(), status: z.array(ListDeploymentsStatus$outboundSchema).optional(), diff --git a/client-sdks/platform/typescript/src/models/operations/listevents.ts b/client-sdks/platform/typescript/src/models/operations/listevents.ts index 7b5a0a39c..bdb930ce9 100644 --- a/client-sdks/platform/typescript/src/models/operations/listevents.ts +++ b/client-sdks/platform/typescript/src/models/operations/listevents.ts @@ -4,10 +4,16 @@ import * as z from "zod/v4"; import { safeParse } from "../../lib/schemas.js"; +import { ClosedEnum } from "../../types/enums.js"; import { Result as SafeParseResult } from "../../types/fp.js"; import { SDKValidationError } from "../errors/sdkvalidationerror.js"; import * as models from "../index.js"; +export const ListEventsInclude = { + ReleaseCreatedAt: "releaseCreatedAt", +} as const; +export type ListEventsInclude = ClosedEnum; + export type ListEventsRequest = { /** * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. @@ -21,6 +27,14 @@ export type ListEventsRequest = { * Filter events to a single deployment. */ deploymentId?: string | undefined; + /** + * Filter events to a single release. + */ + releaseId?: string | undefined; + /** + * Optional fields to include: releaseCreatedAt + */ + include?: Array | undefined; /** * Maximum number of items to return per page */ @@ -38,18 +52,25 @@ export type ListEventsResponse = { /** * Items in this page */ - items: Array; + items: Array; /** * Cursor for the next page, null if last page */ nextCursor: string | null; }; +/** @internal */ +export const ListEventsInclude$outboundSchema: z.ZodEnum< + typeof ListEventsInclude +> = z.enum(ListEventsInclude); + /** @internal */ export type ListEventsRequest$Outbound = { workspace?: string | undefined; project?: string | undefined; deploymentId?: string | undefined; + releaseId?: string | undefined; + include?: Array | undefined; limit: number; cursor?: string | undefined; }; @@ -62,6 +83,8 @@ export const ListEventsRequest$outboundSchema: z.ZodType< workspace: z.string().optional(), project: z.string().optional(), deploymentId: z.string().optional(), + releaseId: z.string().optional(), + include: z.array(ListEventsInclude$outboundSchema).optional(), limit: z.int().default(20), cursor: z.string().optional(), }); @@ -79,7 +102,7 @@ export const ListEventsResponse$inboundSchema: z.ZodType< ListEventsResponse, unknown > = z.object({ - items: z.array(models.Event$inboundSchema), + items: z.array(models.EventListItemResponse$inboundSchema), nextCursor: z.nullable(z.string()), }); diff --git a/client-sdks/platform/typescript/src/models/operations/listoperationsplugins.ts b/client-sdks/platform/typescript/src/models/operations/listoperationsplugins.ts new file mode 100644 index 000000000..c6a0649f5 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/listoperationsplugins.ts @@ -0,0 +1,41 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; + +export type ListOperationsPluginsRequest = { + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; + /** + * Filter by project ID or name. + */ + project: string; +}; + +/** @internal */ +export type ListOperationsPluginsRequest$Outbound = { + workspace?: string | undefined; + project: string; +}; + +/** @internal */ +export const ListOperationsPluginsRequest$outboundSchema: z.ZodType< + ListOperationsPluginsRequest$Outbound, + ListOperationsPluginsRequest +> = z.object({ + workspace: z.string().optional(), + project: z.string(), +}); + +export function listOperationsPluginsRequestToJSON( + listOperationsPluginsRequest: ListOperationsPluginsRequest, +): string { + return JSON.stringify( + ListOperationsPluginsRequest$outboundSchema.parse( + listOperationsPluginsRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/listreleasechannels.ts b/client-sdks/platform/typescript/src/models/operations/listreleasechannels.ts new file mode 100644 index 000000000..567cd0021 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/listreleasechannels.ts @@ -0,0 +1,68 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../../lib/schemas.js"; +import { Result as SafeParseResult } from "../../types/fp.js"; +import { SDKValidationError } from "../errors/sdkvalidationerror.js"; +import * as models from "../index.js"; + +export type ListReleaseChannelsRequest = { + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; + /** + * Filter by project ID or name. + */ + project: string; +}; + +/** + * Project release channels. + */ +export type ListReleaseChannelsResponse = { + items: Array; +}; + +/** @internal */ +export type ListReleaseChannelsRequest$Outbound = { + workspace?: string | undefined; + project: string; +}; + +/** @internal */ +export const ListReleaseChannelsRequest$outboundSchema: z.ZodType< + ListReleaseChannelsRequest$Outbound, + ListReleaseChannelsRequest +> = z.object({ + workspace: z.string().optional(), + project: z.string(), +}); + +export function listReleaseChannelsRequestToJSON( + listReleaseChannelsRequest: ListReleaseChannelsRequest, +): string { + return JSON.stringify( + ListReleaseChannelsRequest$outboundSchema.parse(listReleaseChannelsRequest), + ); +} + +/** @internal */ +export const ListReleaseChannelsResponse$inboundSchema: z.ZodType< + ListReleaseChannelsResponse, + unknown +> = z.object({ + items: z.array(models.ReleaseChannel$inboundSchema), +}); + +export function listReleaseChannelsResponseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ListReleaseChannelsResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ListReleaseChannelsResponse' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/listreleasedeployments.ts b/client-sdks/platform/typescript/src/models/operations/listreleasedeployments.ts new file mode 100644 index 000000000..9e8cbb9d1 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/listreleasedeployments.ts @@ -0,0 +1,66 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import * as models from "../index.js"; + +export type ListReleaseDeploymentsRequest = { + /** + * Unique identifier for the release. + */ + id: string; + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; + /** + * Filter deployments by rollout state + */ + state?: Array | undefined; + /** + * Filter by deployment group ID or name + */ + deploymentGroup?: string | undefined; + /** + * Maximum number of items to return per page + */ + limit?: number | undefined; + /** + * Cursor for pagination - omit for first page + */ + cursor?: string | undefined; +}; + +/** @internal */ +export type ListReleaseDeploymentsRequest$Outbound = { + id: string; + workspace?: string | undefined; + state?: Array | undefined; + deploymentGroup?: string | undefined; + limit: number; + cursor?: string | undefined; +}; + +/** @internal */ +export const ListReleaseDeploymentsRequest$outboundSchema: z.ZodType< + ListReleaseDeploymentsRequest$Outbound, + ListReleaseDeploymentsRequest +> = z.object({ + id: z.string(), + workspace: z.string().optional(), + state: z.array(models.ReleaseRolloutState$outboundSchema).optional(), + deploymentGroup: z.string().optional(), + limit: z.int().default(20), + cursor: z.string().optional(), +}); + +export function listReleaseDeploymentsRequestToJSON( + listReleaseDeploymentsRequest: ListReleaseDeploymentsRequest, +): string { + return JSON.stringify( + ListReleaseDeploymentsRequest$outboundSchema.parse( + listReleaseDeploymentsRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/listreleases.ts b/client-sdks/platform/typescript/src/models/operations/listreleases.ts index e2040f83f..aea70ecb8 100644 --- a/client-sdks/platform/typescript/src/models/operations/listreleases.ts +++ b/client-sdks/platform/typescript/src/models/operations/listreleases.ts @@ -9,8 +9,16 @@ import { Result as SafeParseResult } from "../../types/fp.js"; import { SDKValidationError } from "../errors/sdkvalidationerror.js"; import * as models from "../index.js"; +export const AllChannels = { + True: "true", + False: "false", +} as const; +export type AllChannels = ClosedEnum; + export const ListReleasesInclude = { Project: "project", + Rollout: "rollout", + CreatedBy: "createdBy", } as const; export type ListReleasesInclude = ClosedEnum; @@ -19,12 +27,17 @@ export type ListReleasesRequest = { * Filter by project ID or name. */ project?: string | null | undefined; + /** + * Filter to releases promoted to this channel. Defaults to production. + */ + channel?: string | null | undefined; + allChannels?: AllChannels | undefined; /** * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. */ workspace?: string | undefined; /** - * Optional fields to include: project + * Optional fields to include: project, rollout */ include?: Array | undefined; /** @@ -71,6 +84,11 @@ export type ListReleasesResponse = { nextCursor: string | null; }; +/** @internal */ +export const AllChannels$outboundSchema: z.ZodEnum = z.enum( + AllChannels, +); + /** @internal */ export const ListReleasesInclude$outboundSchema: z.ZodEnum< typeof ListReleasesInclude @@ -79,6 +97,8 @@ export const ListReleasesInclude$outboundSchema: z.ZodEnum< /** @internal */ export type ListReleasesRequest$Outbound = { project?: string | null | undefined; + channel?: string | null | undefined; + allChannels: string; workspace?: string | undefined; include?: Array | undefined; search?: string | null | undefined; @@ -96,6 +116,8 @@ export const ListReleasesRequest$outboundSchema: z.ZodType< ListReleasesRequest > = z.object({ project: z.nullable(z.string()).optional(), + channel: z.nullable(z.string()).optional(), + allChannels: AllChannels$outboundSchema.default("false"), workspace: z.string().optional(), include: z.array(ListReleasesInclude$outboundSchema).optional(), search: z.nullable(z.string()).optional(), diff --git a/client-sdks/platform/typescript/src/models/operations/listresourcedeployments.ts b/client-sdks/platform/typescript/src/models/operations/listresourcedeployments.ts index 41d158b55..77faf3a60 100644 --- a/client-sdks/platform/typescript/src/models/operations/listresourcedeployments.ts +++ b/client-sdks/platform/typescript/src/models/operations/listresourcedeployments.ts @@ -12,6 +12,7 @@ export const ListResourceDeploymentsArea = { Container: "container", Worker: "worker", Daemon: "daemon", + Ai: "ai", } as const; export type ListResourceDeploymentsArea = ClosedEnum< typeof ListResourceDeploymentsArea diff --git a/client-sdks/platform/typescript/src/models/operations/listresourceoverview.ts b/client-sdks/platform/typescript/src/models/operations/listresourceoverview.ts index 99fc4030a..74681c99a 100644 --- a/client-sdks/platform/typescript/src/models/operations/listresourceoverview.ts +++ b/client-sdks/platform/typescript/src/models/operations/listresourceoverview.ts @@ -12,6 +12,7 @@ export const ListResourceOverviewArea = { Container: "container", Worker: "worker", Daemon: "daemon", + Ai: "ai", } as const; export type ListResourceOverviewArea = ClosedEnum< typeof ListResourceOverviewArea diff --git a/client-sdks/platform/typescript/src/models/operations/listworkspaceinvitations.ts b/client-sdks/platform/typescript/src/models/operations/listworkspaceinvitations.ts new file mode 100644 index 000000000..9ff549c33 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/listworkspaceinvitations.ts @@ -0,0 +1,70 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../../lib/schemas.js"; +import { Result as SafeParseResult } from "../../types/fp.js"; +import { SDKValidationError } from "../errors/sdkvalidationerror.js"; +import * as models from "../index.js"; + +export type ListWorkspaceInvitationsRequest = { + /** + * Unique identifier for the workspace. + */ + id: string; + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; +}; + +/** + * Pending invitations. + */ +export type ListWorkspaceInvitationsResponse = { + items: Array; +}; + +/** @internal */ +export type ListWorkspaceInvitationsRequest$Outbound = { + id: string; + workspace?: string | undefined; +}; + +/** @internal */ +export const ListWorkspaceInvitationsRequest$outboundSchema: z.ZodType< + ListWorkspaceInvitationsRequest$Outbound, + ListWorkspaceInvitationsRequest +> = z.object({ + id: z.string(), + workspace: z.string().optional(), +}); + +export function listWorkspaceInvitationsRequestToJSON( + listWorkspaceInvitationsRequest: ListWorkspaceInvitationsRequest, +): string { + return JSON.stringify( + ListWorkspaceInvitationsRequest$outboundSchema.parse( + listWorkspaceInvitationsRequest, + ), + ); +} + +/** @internal */ +export const ListWorkspaceInvitationsResponse$inboundSchema: z.ZodType< + ListWorkspaceInvitationsResponse, + unknown +> = z.object({ + items: z.array(models.WorkspaceInvitation$inboundSchema), +}); + +export function listWorkspaceInvitationsResponseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ListWorkspaceInvitationsResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ListWorkspaceInvitationsResponse' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/plandeploymentcompute.ts b/client-sdks/platform/typescript/src/models/operations/plandeploymentcompute.ts index d75fb3c39..5416d33c1 100644 --- a/client-sdks/platform/typescript/src/models/operations/plandeploymentcompute.ts +++ b/client-sdks/platform/typescript/src/models/operations/plandeploymentcompute.ts @@ -8,9 +8,11 @@ import { ClosedEnum } from "../../types/enums.js"; import * as models from "../index.js"; export const PlanDeploymentComputeSetupItem = { - AlienStack: "alien-stack", + Deployment: "deployment", Models: "models", Keys: "keys", + Bucket: "bucket", + Registry: "registry", } as const; export type PlanDeploymentComputeSetupItem = ClosedEnum< typeof PlanDeploymentComputeSetupItem diff --git a/client-sdks/platform/typescript/src/models/operations/preparedeploymentstack.ts b/client-sdks/platform/typescript/src/models/operations/preparedeploymentstack.ts index 3bfbc307b..3c315b60f 100644 --- a/client-sdks/platform/typescript/src/models/operations/preparedeploymentstack.ts +++ b/client-sdks/platform/typescript/src/models/operations/preparedeploymentstack.ts @@ -8,9 +8,11 @@ import { ClosedEnum } from "../../types/enums.js"; import * as models from "../index.js"; export const PrepareDeploymentStackSetupItem = { - AlienStack: "alien-stack", + Deployment: "deployment", Models: "models", Keys: "keys", + Bucket: "bucket", + Registry: "registry", } as const; export type PrepareDeploymentStackSetupItem = ClosedEnum< typeof PrepareDeploymentStackSetupItem diff --git a/client-sdks/platform/typescript/src/models/operations/promoterelease.ts b/client-sdks/platform/typescript/src/models/operations/promoterelease.ts new file mode 100644 index 000000000..fab97ef61 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/promoterelease.ts @@ -0,0 +1,85 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../../lib/primitives.js"; + +export type PromoteReleaseRequestBody = { + /** + * Unique identifier for the release. + */ + releaseId: string; + /** + * Unique identifier for the release. + */ + expectedReleaseId?: string | null | undefined; +}; + +export type PromoteReleaseRequest = { + name: string; + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; + /** + * Filter by project ID or name. + */ + project: string; + requestBody?: PromoteReleaseRequestBody | undefined; +}; + +/** @internal */ +export type PromoteReleaseRequestBody$Outbound = { + releaseId: string; + expectedReleaseId?: string | null | undefined; +}; + +/** @internal */ +export const PromoteReleaseRequestBody$outboundSchema: z.ZodType< + PromoteReleaseRequestBody$Outbound, + PromoteReleaseRequestBody +> = z.object({ + releaseId: z.string(), + expectedReleaseId: z.nullable(z.string()).optional(), +}); + +export function promoteReleaseRequestBodyToJSON( + promoteReleaseRequestBody: PromoteReleaseRequestBody, +): string { + return JSON.stringify( + PromoteReleaseRequestBody$outboundSchema.parse(promoteReleaseRequestBody), + ); +} + +/** @internal */ +export type PromoteReleaseRequest$Outbound = { + name: string; + workspace?: string | undefined; + project: string; + RequestBody?: PromoteReleaseRequestBody$Outbound | undefined; +}; + +/** @internal */ +export const PromoteReleaseRequest$outboundSchema: z.ZodType< + PromoteReleaseRequest$Outbound, + PromoteReleaseRequest +> = z.object({ + name: z.string(), + workspace: z.string().optional(), + project: z.string(), + requestBody: z.lazy(() => PromoteReleaseRequestBody$outboundSchema) + .optional(), +}).transform((v) => { + return remap$(v, { + requestBody: "RequestBody", + }); +}); + +export function promoteReleaseRequestToJSON( + promoteReleaseRequest: PromoteReleaseRequest, +): string { + return JSON.stringify( + PromoteReleaseRequest$outboundSchema.parse(promoteReleaseRequest), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/publishoperationsplugin.ts b/client-sdks/platform/typescript/src/models/operations/publishoperationsplugin.ts new file mode 100644 index 000000000..452a6efb4 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/publishoperationsplugin.ts @@ -0,0 +1,55 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../../lib/primitives.js"; +import * as models from "../index.js"; + +export type PublishOperationsPluginRequest = { + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; + /** + * Filter by project ID or name. + */ + project: string; + publishOperationsPluginRequest?: + | models.PublishOperationsPluginRequest + | undefined; +}; + +/** @internal */ +export type PublishOperationsPluginRequest$Outbound = { + workspace?: string | undefined; + project: string; + PublishOperationsPluginRequest?: + | models.PublishOperationsPluginRequest$Outbound + | undefined; +}; + +/** @internal */ +export const PublishOperationsPluginRequest$outboundSchema: z.ZodType< + PublishOperationsPluginRequest$Outbound, + PublishOperationsPluginRequest +> = z.object({ + workspace: z.string().optional(), + project: z.string(), + publishOperationsPluginRequest: models + .PublishOperationsPluginRequest$outboundSchema.optional(), +}).transform((v) => { + return remap$(v, { + publishOperationsPluginRequest: "PublishOperationsPluginRequest", + }); +}); + +export function publishOperationsPluginRequestToJSON( + publishOperationsPluginRequest: PublishOperationsPluginRequest, +): string { + return JSON.stringify( + PublishOperationsPluginRequest$outboundSchema.parse( + publishOperationsPluginRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/putcontainerregistry.ts b/client-sdks/platform/typescript/src/models/operations/putcontainerregistry.ts new file mode 100644 index 000000000..4fc00f26d --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/putcontainerregistry.ts @@ -0,0 +1,155 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../../lib/primitives.js"; +import { safeParse } from "../../lib/schemas.js"; +import { ClosedEnum } from "../../types/enums.js"; +import { Result as SafeParseResult } from "../../types/fp.js"; +import { SDKValidationError } from "../errors/sdkvalidationerror.js"; + +export type PutContainerRegistryRequestBody = { + /** + * Unique identifier for the deployment. + */ + deploymentId: string; + resourceId: string; +}; + +export type PutContainerRegistryRequest = { + /** + * Unique identifier for the deployment group. + */ + id: string; + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; + requestBody?: PutContainerRegistryRequestBody | undefined; +}; + +export const PutContainerRegistryStatus = { + Resolving: "resolving", + Applying: "applying", + Connected: "connected", + Degraded: "degraded", + Revoking: "revoking", + Revoked: "revoked", +} as const; +export type PutContainerRegistryStatus = ClosedEnum< + typeof PutContainerRegistryStatus +>; + +/** + * Registry route + */ +export type PutContainerRegistryResponse = { + /** + * Unique identifier for the container registry route. + */ + id: string; + /** + * Unique identifier for the deployment. + */ + deploymentId: string; + managerId: string; + resourceId: string; + resourceRevision: string; + desiredRevision: number; + appliedRevision: number; + status: PutContainerRegistryStatus; + lastVerifiedAt: Date | null; + lastError: string | null; +}; + +/** @internal */ +export type PutContainerRegistryRequestBody$Outbound = { + deploymentId: string; + resourceId: string; +}; + +/** @internal */ +export const PutContainerRegistryRequestBody$outboundSchema: z.ZodType< + PutContainerRegistryRequestBody$Outbound, + PutContainerRegistryRequestBody +> = z.object({ + deploymentId: z.string(), + resourceId: z.string(), +}); + +export function putContainerRegistryRequestBodyToJSON( + putContainerRegistryRequestBody: PutContainerRegistryRequestBody, +): string { + return JSON.stringify( + PutContainerRegistryRequestBody$outboundSchema.parse( + putContainerRegistryRequestBody, + ), + ); +} + +/** @internal */ +export type PutContainerRegistryRequest$Outbound = { + id: string; + workspace?: string | undefined; + RequestBody?: PutContainerRegistryRequestBody$Outbound | undefined; +}; + +/** @internal */ +export const PutContainerRegistryRequest$outboundSchema: z.ZodType< + PutContainerRegistryRequest$Outbound, + PutContainerRegistryRequest +> = z.object({ + id: z.string(), + workspace: z.string().optional(), + requestBody: z.lazy(() => PutContainerRegistryRequestBody$outboundSchema) + .optional(), +}).transform((v) => { + return remap$(v, { + requestBody: "RequestBody", + }); +}); + +export function putContainerRegistryRequestToJSON( + putContainerRegistryRequest: PutContainerRegistryRequest, +): string { + return JSON.stringify( + PutContainerRegistryRequest$outboundSchema.parse( + putContainerRegistryRequest, + ), + ); +} + +/** @internal */ +export const PutContainerRegistryStatus$inboundSchema: z.ZodEnum< + typeof PutContainerRegistryStatus +> = z.enum(PutContainerRegistryStatus); + +/** @internal */ +export const PutContainerRegistryResponse$inboundSchema: z.ZodType< + PutContainerRegistryResponse, + unknown +> = z.object({ + id: z.string(), + deploymentId: z.string(), + managerId: z.string(), + resourceId: z.string(), + resourceRevision: z.string(), + desiredRevision: z.int(), + appliedRevision: z.int(), + status: PutContainerRegistryStatus$inboundSchema, + lastVerifiedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + lastError: z.nullable(z.string()), +}); + +export function putContainerRegistryResponseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => PutContainerRegistryResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'PutContainerRegistryResponse' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/putdirectanthropicbinding.ts b/client-sdks/platform/typescript/src/models/operations/putdirectanthropicbinding.ts deleted file mode 100644 index dbf1f49e0..000000000 --- a/client-sdks/platform/typescript/src/models/operations/putdirectanthropicbinding.ts +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - */ - -import * as z from "zod/v4"; -import { remap as remap$ } from "../../lib/primitives.js"; -import * as models from "../index.js"; - -export type PutDirectAnthropicBindingRequest = { - /** - * Unique identifier for the deployment group. - */ - id: string; - /** - * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. - */ - workspace?: string | undefined; - putDirectAnthropicBindingRequest: models.PutDirectAnthropicBindingRequest; -}; - -/** @internal */ -export type PutDirectAnthropicBindingRequest$Outbound = { - id: string; - workspace?: string | undefined; - PutDirectAnthropicBindingRequest: - models.PutDirectAnthropicBindingRequest$Outbound; -}; - -/** @internal */ -export const PutDirectAnthropicBindingRequest$outboundSchema: z.ZodType< - PutDirectAnthropicBindingRequest$Outbound, - PutDirectAnthropicBindingRequest -> = z.object({ - id: z.string(), - workspace: z.string().optional(), - putDirectAnthropicBindingRequest: - models.PutDirectAnthropicBindingRequest$outboundSchema, -}).transform((v) => { - return remap$(v, { - putDirectAnthropicBindingRequest: "PutDirectAnthropicBindingRequest", - }); -}); - -export function putDirectAnthropicBindingRequestToJSON( - putDirectAnthropicBindingRequest: PutDirectAnthropicBindingRequest, -): string { - return JSON.stringify( - PutDirectAnthropicBindingRequest$outboundSchema.parse( - putDirectAnthropicBindingRequest, - ), - ); -} diff --git a/client-sdks/platform/typescript/src/models/operations/putexternalaibinding.ts b/client-sdks/platform/typescript/src/models/operations/putexternalaibinding.ts new file mode 100644 index 000000000..a72bb4600 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/putexternalaibinding.ts @@ -0,0 +1,51 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../../lib/primitives.js"; +import * as models from "../index.js"; + +export type PutExternalAIBindingRequest = { + /** + * Unique identifier for the deployment group. + */ + id: string; + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; + putExternalAIBindingRequest: models.PutExternalAIBindingRequestUnion; +}; + +/** @internal */ +export type PutExternalAIBindingRequest$Outbound = { + id: string; + workspace?: string | undefined; + PutExternalAIBindingRequest: models.PutExternalAIBindingRequestUnion$Outbound; +}; + +/** @internal */ +export const PutExternalAIBindingRequest$outboundSchema: z.ZodType< + PutExternalAIBindingRequest$Outbound, + PutExternalAIBindingRequest +> = z.object({ + id: z.string(), + workspace: z.string().optional(), + putExternalAIBindingRequest: + models.PutExternalAIBindingRequestUnion$outboundSchema, +}).transform((v) => { + return remap$(v, { + putExternalAIBindingRequest: "PutExternalAIBindingRequest", + }); +}); + +export function putExternalAIBindingRequestToJSON( + putExternalAIBindingRequest: PutExternalAIBindingRequest, +): string { + return JSON.stringify( + PutExternalAIBindingRequest$outboundSchema.parse( + putExternalAIBindingRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/queueaccessrequest.ts b/client-sdks/platform/typescript/src/models/operations/queueaccessrequest.ts new file mode 100644 index 000000000..927876481 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/queueaccessrequest.ts @@ -0,0 +1,121 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../../lib/schemas.js"; +import { ClosedEnum } from "../../types/enums.js"; +import { Result as SafeParseResult } from "../../types/fp.js"; +import { SDKValidationError } from "../errors/sdkvalidationerror.js"; + +export type QueueAccessRequestRequest = { + id: string; + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; +}; + +export type QueueAccessRequestCommand = { + command: string; + summary: string; +}; + +export const QueueAccessRequestStatus = { + PendingApproval: "pending-approval", + Queued: "queued", + CustomerApproved: "customer-approved", + Expired: "expired", + Rejected: "rejected", +} as const; +export type QueueAccessRequestStatus = ClosedEnum< + typeof QueueAccessRequestStatus +>; + +/** + * The queued access request, with the customer approve command. + */ +export type QueueAccessRequestResponse = { + id: string; + deploymentId: string; + remediationPlanId: string; + title: string; + reason: string | null; + commands: Array; + status: QueueAccessRequestStatus; + approvedUntil: string | null; + kubectlApprove: string | null; +}; + +/** @internal */ +export type QueueAccessRequestRequest$Outbound = { + id: string; + workspace?: string | undefined; +}; + +/** @internal */ +export const QueueAccessRequestRequest$outboundSchema: z.ZodType< + QueueAccessRequestRequest$Outbound, + QueueAccessRequestRequest +> = z.object({ + id: z.string(), + workspace: z.string().optional(), +}); + +export function queueAccessRequestRequestToJSON( + queueAccessRequestRequest: QueueAccessRequestRequest, +): string { + return JSON.stringify( + QueueAccessRequestRequest$outboundSchema.parse(queueAccessRequestRequest), + ); +} + +/** @internal */ +export const QueueAccessRequestCommand$inboundSchema: z.ZodType< + QueueAccessRequestCommand, + unknown +> = z.object({ + command: z.string(), + summary: z.string(), +}); + +export function queueAccessRequestCommandFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => QueueAccessRequestCommand$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'QueueAccessRequestCommand' from JSON`, + ); +} + +/** @internal */ +export const QueueAccessRequestStatus$inboundSchema: z.ZodEnum< + typeof QueueAccessRequestStatus +> = z.enum(QueueAccessRequestStatus); + +/** @internal */ +export const QueueAccessRequestResponse$inboundSchema: z.ZodType< + QueueAccessRequestResponse, + unknown +> = z.object({ + id: z.string(), + deploymentId: z.string(), + remediationPlanId: z.string(), + title: z.string(), + reason: z.nullable(z.string()), + commands: z.array(z.lazy(() => QueueAccessRequestCommand$inboundSchema)), + status: QueueAccessRequestStatus$inboundSchema, + approvedUntil: z.nullable(z.string()), + kubectlApprove: z.nullable(z.string()), +}); + +export function queueAccessRequestResponseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => QueueAccessRequestResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'QueueAccessRequestResponse' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/redeploydeployment.ts b/client-sdks/platform/typescript/src/models/operations/redeploydeployment.ts index 2b4886239..eca65d6cf 100644 --- a/client-sdks/platform/typescript/src/models/operations/redeploydeployment.ts +++ b/client-sdks/platform/typescript/src/models/operations/redeploydeployment.ts @@ -6,6 +6,7 @@ import * as z from "zod/v4"; import { safeParse } from "../../lib/schemas.js"; import { Result as SafeParseResult } from "../../types/fp.js"; import { SDKValidationError } from "../errors/sdkvalidationerror.js"; +import * as models from "../index.js"; export type RedeployDeploymentRequest = { /** @@ -23,6 +24,7 @@ export type RedeployDeploymentRequest = { */ export type RedeployDeploymentResponse = { message: string; + operation: models.DeploymentUpdateOperationSummary | null; }; /** @internal */ @@ -54,6 +56,7 @@ export const RedeployDeploymentResponse$inboundSchema: z.ZodType< unknown > = z.object({ message: z.string(), + operation: z.nullable(models.DeploymentUpdateOperationSummary$inboundSchema), }); export function redeployDeploymentResponseFromJSON( diff --git a/client-sdks/platform/typescript/src/models/operations/resendworkspaceinvitation.ts b/client-sdks/platform/typescript/src/models/operations/resendworkspaceinvitation.ts new file mode 100644 index 000000000..3948c657e --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/resendworkspaceinvitation.ts @@ -0,0 +1,44 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; + +export type ResendWorkspaceInvitationRequest = { + /** + * Unique identifier for the workspace. + */ + id: string; + invitationId: string; + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; +}; + +/** @internal */ +export type ResendWorkspaceInvitationRequest$Outbound = { + id: string; + invitationId: string; + workspace?: string | undefined; +}; + +/** @internal */ +export const ResendWorkspaceInvitationRequest$outboundSchema: z.ZodType< + ResendWorkspaceInvitationRequest$Outbound, + ResendWorkspaceInvitationRequest +> = z.object({ + id: z.string(), + invitationId: z.string(), + workspace: z.string().optional(), +}); + +export function resendWorkspaceInvitationRequestToJSON( + resendWorkspaceInvitationRequest: ResendWorkspaceInvitationRequest, +): string { + return JSON.stringify( + ResendWorkspaceInvitationRequest$outboundSchema.parse( + resendWorkspaceInvitationRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/restoreawsvirtualkey.ts b/client-sdks/platform/typescript/src/models/operations/restoreawsvirtualkey.ts new file mode 100644 index 000000000..30e58131c --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/restoreawsvirtualkey.ts @@ -0,0 +1,163 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../../lib/primitives.js"; +import { safeParse } from "../../lib/schemas.js"; +import { ClosedEnum } from "../../types/enums.js"; +import { Result as SafeParseResult } from "../../types/fp.js"; +import { SDKValidationError } from "../errors/sdkvalidationerror.js"; + +export type RestoreAwsVirtualKeyRequestBody = { + kmsKeyArn: string; +}; + +export type RestoreAwsVirtualKeyRequest = { + /** + * Unique identifier for the aws virtual key. + */ + id: string; + requestBody?: RestoreAwsVirtualKeyRequestBody | undefined; +}; + +export const RestoreAwsVirtualKeyStatus = { + Provisioning: "provisioning", + Ready: "ready", + ActionRequired: "action-required", + Decommissioning: "decommissioning", + DeletionPending: "deletion-pending", + Deleted: "deleted", + Failed: "failed", +} as const; +export type RestoreAwsVirtualKeyStatus = ClosedEnum< + typeof RestoreAwsVirtualKeyStatus +>; + +/** + * Virtual Key awaiting a successful AWS XKS canary after restore + */ +export type RestoreAwsVirtualKeyResponse = { + /** + * Unique identifier for the aws virtual key. + */ + id: string; + projectId: string; + status: RestoreAwsVirtualKeyStatus; + externalKeyId: string; + awsAccountId: string; + awsRegion: string; + customKeyStoreId: string | null; + kmsKeyArn: string | null; + alias: string | null; + description: string | null; + deletionWindowDays: number; + tags: { [k: string]: string }; + observedAt: Date | null; + canaryPassedAt: Date | null; + deletionScheduledAt: Date | null; + finalDeletionObservedAt: Date | null; + createdAt: Date; + updatedAt: Date; +}; + +/** @internal */ +export type RestoreAwsVirtualKeyRequestBody$Outbound = { + kmsKeyArn: string; +}; + +/** @internal */ +export const RestoreAwsVirtualKeyRequestBody$outboundSchema: z.ZodType< + RestoreAwsVirtualKeyRequestBody$Outbound, + RestoreAwsVirtualKeyRequestBody +> = z.object({ + kmsKeyArn: z.string(), +}); + +export function restoreAwsVirtualKeyRequestBodyToJSON( + restoreAwsVirtualKeyRequestBody: RestoreAwsVirtualKeyRequestBody, +): string { + return JSON.stringify( + RestoreAwsVirtualKeyRequestBody$outboundSchema.parse( + restoreAwsVirtualKeyRequestBody, + ), + ); +} + +/** @internal */ +export type RestoreAwsVirtualKeyRequest$Outbound = { + id: string; + RequestBody?: RestoreAwsVirtualKeyRequestBody$Outbound | undefined; +}; + +/** @internal */ +export const RestoreAwsVirtualKeyRequest$outboundSchema: z.ZodType< + RestoreAwsVirtualKeyRequest$Outbound, + RestoreAwsVirtualKeyRequest +> = z.object({ + id: z.string(), + requestBody: z.lazy(() => RestoreAwsVirtualKeyRequestBody$outboundSchema) + .optional(), +}).transform((v) => { + return remap$(v, { + requestBody: "RequestBody", + }); +}); + +export function restoreAwsVirtualKeyRequestToJSON( + restoreAwsVirtualKeyRequest: RestoreAwsVirtualKeyRequest, +): string { + return JSON.stringify( + RestoreAwsVirtualKeyRequest$outboundSchema.parse( + restoreAwsVirtualKeyRequest, + ), + ); +} + +/** @internal */ +export const RestoreAwsVirtualKeyStatus$inboundSchema: z.ZodEnum< + typeof RestoreAwsVirtualKeyStatus +> = z.enum(RestoreAwsVirtualKeyStatus); + +/** @internal */ +export const RestoreAwsVirtualKeyResponse$inboundSchema: z.ZodType< + RestoreAwsVirtualKeyResponse, + unknown +> = z.object({ + id: z.string(), + projectId: z.string(), + status: RestoreAwsVirtualKeyStatus$inboundSchema, + externalKeyId: z.string(), + awsAccountId: z.string(), + awsRegion: z.string(), + customKeyStoreId: z.nullable(z.string()), + kmsKeyArn: z.nullable(z.string()), + alias: z.nullable(z.string()), + description: z.nullable(z.string()), + deletionWindowDays: z.int(), + tags: z.record(z.string(), z.string()), + observedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + canaryPassedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + deletionScheduledAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + finalDeletionObservedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + createdAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), + updatedAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), +}); + +export function restoreAwsVirtualKeyResponseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => RestoreAwsVirtualKeyResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'RestoreAwsVirtualKeyResponse' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/revokecontainerregistry.ts b/client-sdks/platform/typescript/src/models/operations/revokecontainerregistry.ts new file mode 100644 index 000000000..7192d53c7 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/revokecontainerregistry.ts @@ -0,0 +1,113 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../../lib/schemas.js"; +import { ClosedEnum } from "../../types/enums.js"; +import { Result as SafeParseResult } from "../../types/fp.js"; +import { SDKValidationError } from "../errors/sdkvalidationerror.js"; + +export type RevokeContainerRegistryRequest = { + /** + * Unique identifier for the deployment group. + */ + id: string; + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; +}; + +export const RevokeContainerRegistryStatus = { + Resolving: "resolving", + Applying: "applying", + Connected: "connected", + Degraded: "degraded", + Revoking: "revoking", + Revoked: "revoked", +} as const; +export type RevokeContainerRegistryStatus = ClosedEnum< + typeof RevokeContainerRegistryStatus +>; + +/** + * Registry revocation requested + */ +export type RevokeContainerRegistryResponse = { + /** + * Unique identifier for the container registry route. + */ + id: string; + /** + * Unique identifier for the deployment. + */ + deploymentId: string; + managerId: string; + resourceId: string; + resourceRevision: string; + desiredRevision: number; + appliedRevision: number; + status: RevokeContainerRegistryStatus; + lastVerifiedAt: Date | null; + lastError: string | null; +}; + +/** @internal */ +export type RevokeContainerRegistryRequest$Outbound = { + id: string; + workspace?: string | undefined; +}; + +/** @internal */ +export const RevokeContainerRegistryRequest$outboundSchema: z.ZodType< + RevokeContainerRegistryRequest$Outbound, + RevokeContainerRegistryRequest +> = z.object({ + id: z.string(), + workspace: z.string().optional(), +}); + +export function revokeContainerRegistryRequestToJSON( + revokeContainerRegistryRequest: RevokeContainerRegistryRequest, +): string { + return JSON.stringify( + RevokeContainerRegistryRequest$outboundSchema.parse( + revokeContainerRegistryRequest, + ), + ); +} + +/** @internal */ +export const RevokeContainerRegistryStatus$inboundSchema: z.ZodEnum< + typeof RevokeContainerRegistryStatus +> = z.enum(RevokeContainerRegistryStatus); + +/** @internal */ +export const RevokeContainerRegistryResponse$inboundSchema: z.ZodType< + RevokeContainerRegistryResponse, + unknown +> = z.object({ + id: z.string(), + deploymentId: z.string(), + managerId: z.string(), + resourceId: z.string(), + resourceRevision: z.string(), + desiredRevision: z.int(), + appliedRevision: z.int(), + status: RevokeContainerRegistryStatus$inboundSchema, + lastVerifiedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + lastError: z.nullable(z.string()), +}); + +export function revokeContainerRegistryResponseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => RevokeContainerRegistryResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'RevokeContainerRegistryResponse' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/revokecontainerregistrycredential.ts b/client-sdks/platform/typescript/src/models/operations/revokecontainerregistrycredential.ts new file mode 100644 index 000000000..a1a3f00d9 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/revokecontainerregistrycredential.ts @@ -0,0 +1,48 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; + +export type RevokeContainerRegistryCredentialRequest = { + /** + * Unique identifier for the deployment group. + */ + id: string; + /** + * Unique identifier for the container registry credential. + */ + credentialId: string; + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; +}; + +/** @internal */ +export type RevokeContainerRegistryCredentialRequest$Outbound = { + id: string; + credentialId: string; + workspace?: string | undefined; +}; + +/** @internal */ +export const RevokeContainerRegistryCredentialRequest$outboundSchema: z.ZodType< + RevokeContainerRegistryCredentialRequest$Outbound, + RevokeContainerRegistryCredentialRequest +> = z.object({ + id: z.string(), + credentialId: z.string(), + workspace: z.string().optional(), +}); + +export function revokeContainerRegistryCredentialRequestToJSON( + revokeContainerRegistryCredentialRequest: + RevokeContainerRegistryCredentialRequest, +): string { + return JSON.stringify( + RevokeContainerRegistryCredentialRequest$outboundSchema.parse( + revokeContainerRegistryCredentialRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/revokeworkspaceinvitation.ts b/client-sdks/platform/typescript/src/models/operations/revokeworkspaceinvitation.ts new file mode 100644 index 000000000..6d59366a6 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/revokeworkspaceinvitation.ts @@ -0,0 +1,44 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; + +export type RevokeWorkspaceInvitationRequest = { + /** + * Unique identifier for the workspace. + */ + id: string; + invitationId: string; + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; +}; + +/** @internal */ +export type RevokeWorkspaceInvitationRequest$Outbound = { + id: string; + invitationId: string; + workspace?: string | undefined; +}; + +/** @internal */ +export const RevokeWorkspaceInvitationRequest$outboundSchema: z.ZodType< + RevokeWorkspaceInvitationRequest$Outbound, + RevokeWorkspaceInvitationRequest +> = z.object({ + id: z.string(), + invitationId: z.string(), + workspace: z.string().optional(), +}); + +export function revokeWorkspaceInvitationRequestToJSON( + revokeWorkspaceInvitationRequest: RevokeWorkspaceInvitationRequest, +): string { + return JSON.stringify( + RevokeWorkspaceInvitationRequest$outboundSchema.parse( + revokeWorkspaceInvitationRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/revokeworkspaceinvitelink.ts b/client-sdks/platform/typescript/src/models/operations/revokeworkspaceinvitelink.ts new file mode 100644 index 000000000..9627c742b --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/revokeworkspaceinvitelink.ts @@ -0,0 +1,41 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; + +export type RevokeWorkspaceInviteLinkRequest = { + /** + * Unique identifier for the workspace. + */ + id: string; + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; +}; + +/** @internal */ +export type RevokeWorkspaceInviteLinkRequest$Outbound = { + id: string; + workspace?: string | undefined; +}; + +/** @internal */ +export const RevokeWorkspaceInviteLinkRequest$outboundSchema: z.ZodType< + RevokeWorkspaceInviteLinkRequest$Outbound, + RevokeWorkspaceInviteLinkRequest +> = z.object({ + id: z.string(), + workspace: z.string().optional(), +}); + +export function revokeWorkspaceInviteLinkRequestToJSON( + revokeWorkspaceInviteLinkRequest: RevokeWorkspaceInviteLinkRequest, +): string { + return JSON.stringify( + RevokeWorkspaceInviteLinkRequest$outboundSchema.parse( + revokeWorkspaceInviteLinkRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/rotateawsvirtualkeycredential.ts b/client-sdks/platform/typescript/src/models/operations/rotateawsvirtualkeycredential.ts new file mode 100644 index 000000000..5291e660b --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/rotateawsvirtualkeycredential.ts @@ -0,0 +1,229 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../../lib/primitives.js"; +import { safeParse } from "../../lib/schemas.js"; +import { ClosedEnum } from "../../types/enums.js"; +import { Result as SafeParseResult } from "../../types/fp.js"; +import { SDKValidationError } from "../errors/sdkvalidationerror.js"; + +export type RotateAwsVirtualKeyCredentialRequestBody = { + generation: number; +}; + +export type RotateAwsVirtualKeyCredentialRequest = { + /** + * Unique identifier for the aws virtual key. + */ + id: string; + requestBody?: RotateAwsVirtualKeyCredentialRequestBody | undefined; +}; + +export const RotateAwsVirtualKeyCredentialStatus = { + Provisioning: "provisioning", + Ready: "ready", + ActionRequired: "action-required", + Decommissioning: "decommissioning", + DeletionPending: "deletion-pending", + Deleted: "deleted", + Failed: "failed", +} as const; +export type RotateAwsVirtualKeyCredentialStatus = ClosedEnum< + typeof RotateAwsVirtualKeyCredentialStatus +>; + +export type RotateAwsVirtualKeyCredentialVirtualKey = { + /** + * Unique identifier for the aws virtual key. + */ + id: string; + projectId: string; + status: RotateAwsVirtualKeyCredentialStatus; + externalKeyId: string; + awsAccountId: string; + awsRegion: string; + customKeyStoreId: string | null; + kmsKeyArn: string | null; + alias: string | null; + description: string | null; + deletionWindowDays: number; + tags: { [k: string]: string }; + observedAt: Date | null; + canaryPassedAt: Date | null; + deletionScheduledAt: Date | null; + finalDeletionObservedAt: Date | null; + createdAt: Date; + updatedAt: Date; +}; + +export type RotateAwsVirtualKeyCredentialSetup = { + proxyUriEndpoint: string; + proxyUriPath: string; + accessKeyId: string; + secretAccessKey: string; + externalKeyId: string; +}; + +/** + * The resumable XKS proxy credential rotation bundle + */ +export type RotateAwsVirtualKeyCredentialResponse = { + virtualKey: RotateAwsVirtualKeyCredentialVirtualKey; + setup: RotateAwsVirtualKeyCredentialSetup; +}; + +/** @internal */ +export type RotateAwsVirtualKeyCredentialRequestBody$Outbound = { + generation: number; +}; + +/** @internal */ +export const RotateAwsVirtualKeyCredentialRequestBody$outboundSchema: z.ZodType< + RotateAwsVirtualKeyCredentialRequestBody$Outbound, + RotateAwsVirtualKeyCredentialRequestBody +> = z.object({ + generation: z.int(), +}); + +export function rotateAwsVirtualKeyCredentialRequestBodyToJSON( + rotateAwsVirtualKeyCredentialRequestBody: + RotateAwsVirtualKeyCredentialRequestBody, +): string { + return JSON.stringify( + RotateAwsVirtualKeyCredentialRequestBody$outboundSchema.parse( + rotateAwsVirtualKeyCredentialRequestBody, + ), + ); +} + +/** @internal */ +export type RotateAwsVirtualKeyCredentialRequest$Outbound = { + id: string; + RequestBody?: RotateAwsVirtualKeyCredentialRequestBody$Outbound | undefined; +}; + +/** @internal */ +export const RotateAwsVirtualKeyCredentialRequest$outboundSchema: z.ZodType< + RotateAwsVirtualKeyCredentialRequest$Outbound, + RotateAwsVirtualKeyCredentialRequest +> = z.object({ + id: z.string(), + requestBody: z.lazy(() => + RotateAwsVirtualKeyCredentialRequestBody$outboundSchema + ).optional(), +}).transform((v) => { + return remap$(v, { + requestBody: "RequestBody", + }); +}); + +export function rotateAwsVirtualKeyCredentialRequestToJSON( + rotateAwsVirtualKeyCredentialRequest: RotateAwsVirtualKeyCredentialRequest, +): string { + return JSON.stringify( + RotateAwsVirtualKeyCredentialRequest$outboundSchema.parse( + rotateAwsVirtualKeyCredentialRequest, + ), + ); +} + +/** @internal */ +export const RotateAwsVirtualKeyCredentialStatus$inboundSchema: z.ZodEnum< + typeof RotateAwsVirtualKeyCredentialStatus +> = z.enum(RotateAwsVirtualKeyCredentialStatus); + +/** @internal */ +export const RotateAwsVirtualKeyCredentialVirtualKey$inboundSchema: z.ZodType< + RotateAwsVirtualKeyCredentialVirtualKey, + unknown +> = z.object({ + id: z.string(), + projectId: z.string(), + status: RotateAwsVirtualKeyCredentialStatus$inboundSchema, + externalKeyId: z.string(), + awsAccountId: z.string(), + awsRegion: z.string(), + customKeyStoreId: z.nullable(z.string()), + kmsKeyArn: z.nullable(z.string()), + alias: z.nullable(z.string()), + description: z.nullable(z.string()), + deletionWindowDays: z.int(), + tags: z.record(z.string(), z.string()), + observedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + canaryPassedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + deletionScheduledAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + finalDeletionObservedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + createdAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), + updatedAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), +}); + +export function rotateAwsVirtualKeyCredentialVirtualKeyFromJSON( + jsonString: string, +): SafeParseResult< + RotateAwsVirtualKeyCredentialVirtualKey, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + RotateAwsVirtualKeyCredentialVirtualKey$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'RotateAwsVirtualKeyCredentialVirtualKey' from JSON`, + ); +} + +/** @internal */ +export const RotateAwsVirtualKeyCredentialSetup$inboundSchema: z.ZodType< + RotateAwsVirtualKeyCredentialSetup, + unknown +> = z.object({ + proxyUriEndpoint: z.string(), + proxyUriPath: z.string(), + accessKeyId: z.string(), + secretAccessKey: z.string(), + externalKeyId: z.string(), +}); + +export function rotateAwsVirtualKeyCredentialSetupFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + RotateAwsVirtualKeyCredentialSetup$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'RotateAwsVirtualKeyCredentialSetup' from JSON`, + ); +} + +/** @internal */ +export const RotateAwsVirtualKeyCredentialResponse$inboundSchema: z.ZodType< + RotateAwsVirtualKeyCredentialResponse, + unknown +> = z.object({ + virtualKey: z.lazy(() => + RotateAwsVirtualKeyCredentialVirtualKey$inboundSchema + ), + setup: z.lazy(() => RotateAwsVirtualKeyCredentialSetup$inboundSchema), +}); + +export function rotateAwsVirtualKeyCredentialResponseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + RotateAwsVirtualKeyCredentialResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'RotateAwsVirtualKeyCredentialResponse' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/setdeploymentreleasechannel.ts b/client-sdks/platform/typescript/src/models/operations/setdeploymentreleasechannel.ts new file mode 100644 index 000000000..30b8bc5e9 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/setdeploymentreleasechannel.ts @@ -0,0 +1,79 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../../lib/primitives.js"; + +export type SetDeploymentReleaseChannelRequestBody = { + channel: string; +}; + +export type SetDeploymentReleaseChannelRequest = { + /** + * Unique identifier for the deployment. + */ + id: string; + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; + requestBody?: SetDeploymentReleaseChannelRequestBody | undefined; +}; + +/** @internal */ +export type SetDeploymentReleaseChannelRequestBody$Outbound = { + channel: string; +}; + +/** @internal */ +export const SetDeploymentReleaseChannelRequestBody$outboundSchema: z.ZodType< + SetDeploymentReleaseChannelRequestBody$Outbound, + SetDeploymentReleaseChannelRequestBody +> = z.object({ + channel: z.string(), +}); + +export function setDeploymentReleaseChannelRequestBodyToJSON( + setDeploymentReleaseChannelRequestBody: + SetDeploymentReleaseChannelRequestBody, +): string { + return JSON.stringify( + SetDeploymentReleaseChannelRequestBody$outboundSchema.parse( + setDeploymentReleaseChannelRequestBody, + ), + ); +} + +/** @internal */ +export type SetDeploymentReleaseChannelRequest$Outbound = { + id: string; + workspace?: string | undefined; + RequestBody?: SetDeploymentReleaseChannelRequestBody$Outbound | undefined; +}; + +/** @internal */ +export const SetDeploymentReleaseChannelRequest$outboundSchema: z.ZodType< + SetDeploymentReleaseChannelRequest$Outbound, + SetDeploymentReleaseChannelRequest +> = z.object({ + id: z.string(), + workspace: z.string().optional(), + requestBody: z.lazy(() => + SetDeploymentReleaseChannelRequestBody$outboundSchema + ).optional(), +}).transform((v) => { + return remap$(v, { + requestBody: "RequestBody", + }); +}); + +export function setDeploymentReleaseChannelRequestToJSON( + setDeploymentReleaseChannelRequest: SetDeploymentReleaseChannelRequest, +): string { + return JSON.stringify( + SetDeploymentReleaseChannelRequest$outboundSchema.parse( + setDeploymentReleaseChannelRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/setoperationspluginenabled.ts b/client-sdks/platform/typescript/src/models/operations/setoperationspluginenabled.ts new file mode 100644 index 000000000..cc86be08d --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/setoperationspluginenabled.ts @@ -0,0 +1,61 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../../lib/primitives.js"; +import * as models from "../index.js"; + +export type SetOperationsPluginEnabledRequest = { + /** + * Plugin name. + */ + name: string; + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; + /** + * Filter by project ID or name. + */ + project: string; + setOperationsPluginEnabledRequest?: + | models.SetOperationsPluginEnabledRequest + | undefined; +}; + +/** @internal */ +export type SetOperationsPluginEnabledRequest$Outbound = { + name: string; + workspace?: string | undefined; + project: string; + SetOperationsPluginEnabledRequest?: + | models.SetOperationsPluginEnabledRequest$Outbound + | undefined; +}; + +/** @internal */ +export const SetOperationsPluginEnabledRequest$outboundSchema: z.ZodType< + SetOperationsPluginEnabledRequest$Outbound, + SetOperationsPluginEnabledRequest +> = z.object({ + name: z.string(), + workspace: z.string().optional(), + project: z.string(), + setOperationsPluginEnabledRequest: models + .SetOperationsPluginEnabledRequest$outboundSchema.optional(), +}).transform((v) => { + return remap$(v, { + setOperationsPluginEnabledRequest: "SetOperationsPluginEnabledRequest", + }); +}); + +export function setOperationsPluginEnabledRequestToJSON( + setOperationsPluginEnabledRequest: SetOperationsPluginEnabledRequest, +): string { + return JSON.stringify( + SetOperationsPluginEnabledRequest$outboundSchema.parse( + setOperationsPluginEnabledRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/setprojectcapabilities.ts b/client-sdks/platform/typescript/src/models/operations/setprojectcapabilities.ts new file mode 100644 index 000000000..19e6a7be8 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/setprojectcapabilities.ts @@ -0,0 +1,92 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../../lib/primitives.js"; +import { ClosedEnum } from "../../types/enums.js"; + +export const Enabled = { + Deployments: "deployments", + Models: "models", + Keys: "keys", + Buckets: "buckets", + Registry: "registry", +} as const; +export type Enabled = ClosedEnum; + +export type SetProjectCapabilitiesRequestBody = { + enabled: Array; +}; + +export type SetProjectCapabilitiesRequest = { + /** + * Project ID or name. + */ + idOrName: string; + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; + requestBody?: SetProjectCapabilitiesRequestBody | undefined; +}; + +/** @internal */ +export const Enabled$outboundSchema: z.ZodEnum = z.enum( + Enabled, +); + +/** @internal */ +export type SetProjectCapabilitiesRequestBody$Outbound = { + enabled: Array; +}; + +/** @internal */ +export const SetProjectCapabilitiesRequestBody$outboundSchema: z.ZodType< + SetProjectCapabilitiesRequestBody$Outbound, + SetProjectCapabilitiesRequestBody +> = z.object({ + enabled: z.array(Enabled$outboundSchema), +}); + +export function setProjectCapabilitiesRequestBodyToJSON( + setProjectCapabilitiesRequestBody: SetProjectCapabilitiesRequestBody, +): string { + return JSON.stringify( + SetProjectCapabilitiesRequestBody$outboundSchema.parse( + setProjectCapabilitiesRequestBody, + ), + ); +} + +/** @internal */ +export type SetProjectCapabilitiesRequest$Outbound = { + idOrName: string; + workspace?: string | undefined; + RequestBody?: SetProjectCapabilitiesRequestBody$Outbound | undefined; +}; + +/** @internal */ +export const SetProjectCapabilitiesRequest$outboundSchema: z.ZodType< + SetProjectCapabilitiesRequest$Outbound, + SetProjectCapabilitiesRequest +> = z.object({ + idOrName: z.string(), + workspace: z.string().optional(), + requestBody: z.lazy(() => SetProjectCapabilitiesRequestBody$outboundSchema) + .optional(), +}).transform((v) => { + return remap$(v, { + requestBody: "RequestBody", + }); +}); + +export function setProjectCapabilitiesRequestToJSON( + setProjectCapabilitiesRequest: SetProjectCapabilitiesRequest, +): string { + return JSON.stringify( + SetProjectCapabilitiesRequest$outboundSchema.parse( + setProjectCapabilitiesRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/slackintegrationchannels.ts b/client-sdks/platform/typescript/src/models/operations/slackintegrationchannels.ts new file mode 100644 index 000000000..da4ff22ae --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/slackintegrationchannels.ts @@ -0,0 +1,35 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; + +export type SlackIntegrationChannelsRequest = { + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; +}; + +/** @internal */ +export type SlackIntegrationChannelsRequest$Outbound = { + workspace?: string | undefined; +}; + +/** @internal */ +export const SlackIntegrationChannelsRequest$outboundSchema: z.ZodType< + SlackIntegrationChannelsRequest$Outbound, + SlackIntegrationChannelsRequest +> = z.object({ + workspace: z.string().optional(), +}); + +export function slackIntegrationChannelsRequestToJSON( + slackIntegrationChannelsRequest: SlackIntegrationChannelsRequest, +): string { + return JSON.stringify( + SlackIntegrationChannelsRequest$outboundSchema.parse( + slackIntegrationChannelsRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/slackintegrationinstallurl.ts b/client-sdks/platform/typescript/src/models/operations/slackintegrationinstallurl.ts new file mode 100644 index 000000000..1c95f45da --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/slackintegrationinstallurl.ts @@ -0,0 +1,35 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; + +export type SlackIntegrationInstallUrlRequest = { + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; +}; + +/** @internal */ +export type SlackIntegrationInstallUrlRequest$Outbound = { + workspace?: string | undefined; +}; + +/** @internal */ +export const SlackIntegrationInstallUrlRequest$outboundSchema: z.ZodType< + SlackIntegrationInstallUrlRequest$Outbound, + SlackIntegrationInstallUrlRequest +> = z.object({ + workspace: z.string().optional(), +}); + +export function slackIntegrationInstallUrlRequestToJSON( + slackIntegrationInstallUrlRequest: SlackIntegrationInstallUrlRequest, +): string { + return JSON.stringify( + SlackIntegrationInstallUrlRequest$outboundSchema.parse( + slackIntegrationInstallUrlRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/slackintegrationsetnotificationchannel.ts b/client-sdks/platform/typescript/src/models/operations/slackintegrationsetnotificationchannel.ts new file mode 100644 index 000000000..ef7e48066 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/slackintegrationsetnotificationchannel.ts @@ -0,0 +1,51 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../../lib/primitives.js"; +import * as models from "../index.js"; + +export type SlackIntegrationSetNotificationChannelRequest = { + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; + slackNotificationChannelRequest?: + | models.SlackNotificationChannelRequest + | undefined; +}; + +/** @internal */ +export type SlackIntegrationSetNotificationChannelRequest$Outbound = { + workspace?: string | undefined; + SlackNotificationChannelRequest?: + | models.SlackNotificationChannelRequest$Outbound + | undefined; +}; + +/** @internal */ +export const SlackIntegrationSetNotificationChannelRequest$outboundSchema: + z.ZodType< + SlackIntegrationSetNotificationChannelRequest$Outbound, + SlackIntegrationSetNotificationChannelRequest + > = z.object({ + workspace: z.string().optional(), + slackNotificationChannelRequest: models + .SlackNotificationChannelRequest$outboundSchema.optional(), + }).transform((v) => { + return remap$(v, { + slackNotificationChannelRequest: "SlackNotificationChannelRequest", + }); + }); + +export function slackIntegrationSetNotificationChannelRequestToJSON( + slackIntegrationSetNotificationChannelRequest: + SlackIntegrationSetNotificationChannelRequest, +): string { + return JSON.stringify( + SlackIntegrationSetNotificationChannelRequest$outboundSchema.parse( + slackIntegrationSetNotificationChannelRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/slackintegrationstatus.ts b/client-sdks/platform/typescript/src/models/operations/slackintegrationstatus.ts new file mode 100644 index 000000000..a38984abf --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/slackintegrationstatus.ts @@ -0,0 +1,35 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; + +export type SlackIntegrationStatusRequest = { + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; +}; + +/** @internal */ +export type SlackIntegrationStatusRequest$Outbound = { + workspace?: string | undefined; +}; + +/** @internal */ +export const SlackIntegrationStatusRequest$outboundSchema: z.ZodType< + SlackIntegrationStatusRequest$Outbound, + SlackIntegrationStatusRequest +> = z.object({ + workspace: z.string().optional(), +}); + +export function slackIntegrationStatusRequestToJSON( + slackIntegrationStatusRequest: SlackIntegrationStatusRequest, +): string { + return JSON.stringify( + SlackIntegrationStatusRequest$outboundSchema.parse( + slackIntegrationStatusRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/slackintegrationuninstall.ts b/client-sdks/platform/typescript/src/models/operations/slackintegrationuninstall.ts new file mode 100644 index 000000000..190f0d14c --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/slackintegrationuninstall.ts @@ -0,0 +1,35 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; + +export type SlackIntegrationUninstallRequest = { + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; +}; + +/** @internal */ +export type SlackIntegrationUninstallRequest$Outbound = { + workspace?: string | undefined; +}; + +/** @internal */ +export const SlackIntegrationUninstallRequest$outboundSchema: z.ZodType< + SlackIntegrationUninstallRequest$Outbound, + SlackIntegrationUninstallRequest +> = z.object({ + workspace: z.string().optional(), +}); + +export function slackIntegrationUninstallRequestToJSON( + slackIntegrationUninstallRequest: SlackIntegrationUninstallRequest, +): string { + return JSON.stringify( + SlackIntegrationUninstallRequest$outboundSchema.parse( + slackIntegrationUninstallRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/stopagentsession.ts b/client-sdks/platform/typescript/src/models/operations/stopagentsession.ts new file mode 100644 index 000000000..a0ba6d4b1 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/stopagentsession.ts @@ -0,0 +1,36 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; + +export type StopAgentSessionRequest = { + id: string; + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; +}; + +/** @internal */ +export type StopAgentSessionRequest$Outbound = { + id: string; + workspace?: string | undefined; +}; + +/** @internal */ +export const StopAgentSessionRequest$outboundSchema: z.ZodType< + StopAgentSessionRequest$Outbound, + StopAgentSessionRequest +> = z.object({ + id: z.string(), + workspace: z.string().optional(), +}); + +export function stopAgentSessionRequestToJSON( + stopAgentSessionRequest: StopAgentSessionRequest, +): string { + return JSON.stringify( + StopAgentSessionRequest$outboundSchema.parse(stopAgentSessionRequest), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/syncrenew.ts b/client-sdks/platform/typescript/src/models/operations/syncrenew.ts new file mode 100644 index 000000000..11cb233a0 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/syncrenew.ts @@ -0,0 +1,109 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../../lib/primitives.js"; +import { safeParse } from "../../lib/schemas.js"; +import { Result as SafeParseResult } from "../../types/fp.js"; +import { SDKValidationError } from "../errors/sdkvalidationerror.js"; +import * as models from "../index.js"; + +export type SyncRenewRequest = { + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; + syncRenewRequest: models.SyncRenewRequest; +}; + +export type Lease = { + /** + * Unique identifier for the deployment. + */ + deploymentId: string; + /** + * False when this session no longer holds a live lease. + */ + renewed: boolean; + leaseExpiresAt: Date | null; +}; + +/** + * Renewal processed. Inspect `leases` for per-deployment outcomes; a lost lease is reported there rather than failing the whole batch. + */ +export type SyncRenewResponse = { + /** + * True when every requested deployment was renewed. + */ + success: boolean; + /** + * Per-deployment renewal outcome. + */ + leases: Array; +}; + +/** @internal */ +export type SyncRenewRequest$Outbound = { + workspace?: string | undefined; + SyncRenewRequest: models.SyncRenewRequest$Outbound; +}; + +/** @internal */ +export const SyncRenewRequest$outboundSchema: z.ZodType< + SyncRenewRequest$Outbound, + SyncRenewRequest +> = z.object({ + workspace: z.string().optional(), + syncRenewRequest: models.SyncRenewRequest$outboundSchema, +}).transform((v) => { + return remap$(v, { + syncRenewRequest: "SyncRenewRequest", + }); +}); + +export function syncRenewRequestToJSON( + syncRenewRequest: SyncRenewRequest, +): string { + return JSON.stringify( + SyncRenewRequest$outboundSchema.parse(syncRenewRequest), + ); +} + +/** @internal */ +export const Lease$inboundSchema: z.ZodType = z.object({ + deploymentId: z.string(), + renewed: z.boolean(), + leaseExpiresAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), +}); + +export function leaseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Lease$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Lease' from JSON`, + ); +} + +/** @internal */ +export const SyncRenewResponse$inboundSchema: z.ZodType< + SyncRenewResponse, + unknown +> = z.object({ + success: z.boolean(), + leases: z.array(z.lazy(() => Lease$inboundSchema)), +}); + +export function syncRenewResponseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncRenewResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncRenewResponse' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/updateoperationspolicy.ts b/client-sdks/platform/typescript/src/models/operations/updateoperationspolicy.ts new file mode 100644 index 000000000..7830f3286 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/updateoperationspolicy.ts @@ -0,0 +1,55 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../../lib/primitives.js"; +import * as models from "../index.js"; + +export type UpdateOperationsPolicyRequest = { + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; + /** + * Filter by project ID or name. + */ + project: string; + updateOperationsPolicyRequest?: + | models.UpdateOperationsPolicyRequest + | undefined; +}; + +/** @internal */ +export type UpdateOperationsPolicyRequest$Outbound = { + workspace?: string | undefined; + project: string; + UpdateOperationsPolicyRequest?: + | models.UpdateOperationsPolicyRequest$Outbound + | undefined; +}; + +/** @internal */ +export const UpdateOperationsPolicyRequest$outboundSchema: z.ZodType< + UpdateOperationsPolicyRequest$Outbound, + UpdateOperationsPolicyRequest +> = z.object({ + workspace: z.string().optional(), + project: z.string(), + updateOperationsPolicyRequest: models + .UpdateOperationsPolicyRequest$outboundSchema.optional(), +}).transform((v) => { + return remap$(v, { + updateOperationsPolicyRequest: "UpdateOperationsPolicyRequest", + }); +}); + +export function updateOperationsPolicyRequestToJSON( + updateOperationsPolicyRequest: UpdateOperationsPolicyRequest, +): string { + return JSON.stringify( + UpdateOperationsPolicyRequest$outboundSchema.parse( + updateOperationsPolicyRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/updateworkspacesettings.ts b/client-sdks/platform/typescript/src/models/operations/updateworkspacesettings.ts new file mode 100644 index 000000000..45ae5bb2a --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/updateworkspacesettings.ts @@ -0,0 +1,55 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../../lib/primitives.js"; +import * as models from "../index.js"; + +export type UpdateWorkspaceSettingsRequest = { + /** + * Unique identifier for the workspace. + */ + id: string; + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; + updateWorkspaceSettingsRequest?: + | models.UpdateWorkspaceSettingsRequest + | undefined; +}; + +/** @internal */ +export type UpdateWorkspaceSettingsRequest$Outbound = { + id: string; + workspace?: string | undefined; + UpdateWorkspaceSettingsRequest?: + | models.UpdateWorkspaceSettingsRequest$Outbound + | undefined; +}; + +/** @internal */ +export const UpdateWorkspaceSettingsRequest$outboundSchema: z.ZodType< + UpdateWorkspaceSettingsRequest$Outbound, + UpdateWorkspaceSettingsRequest +> = z.object({ + id: z.string(), + workspace: z.string().optional(), + updateWorkspaceSettingsRequest: models + .UpdateWorkspaceSettingsRequest$outboundSchema.optional(), +}).transform((v) => { + return remap$(v, { + updateWorkspaceSettingsRequest: "UpdateWorkspaceSettingsRequest", + }); +}); + +export function updateWorkspaceSettingsRequestToJSON( + updateWorkspaceSettingsRequest: UpdateWorkspaceSettingsRequest, +): string { + return JSON.stringify( + UpdateWorkspaceSettingsRequest$outboundSchema.parse( + updateWorkspaceSettingsRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/verifycontainerregistry.ts b/client-sdks/platform/typescript/src/models/operations/verifycontainerregistry.ts new file mode 100644 index 000000000..85076fce5 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/verifycontainerregistry.ts @@ -0,0 +1,113 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../../lib/schemas.js"; +import { ClosedEnum } from "../../types/enums.js"; +import { Result as SafeParseResult } from "../../types/fp.js"; +import { SDKValidationError } from "../errors/sdkvalidationerror.js"; + +export type VerifyContainerRegistryRequest = { + /** + * Unique identifier for the deployment group. + */ + id: string; + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; +}; + +export const VerifyContainerRegistryStatus = { + Resolving: "resolving", + Applying: "applying", + Connected: "connected", + Degraded: "degraded", + Revoking: "revoking", + Revoked: "revoked", +} as const; +export type VerifyContainerRegistryStatus = ClosedEnum< + typeof VerifyContainerRegistryStatus +>; + +/** + * Verification requested + */ +export type VerifyContainerRegistryResponse = { + /** + * Unique identifier for the container registry route. + */ + id: string; + /** + * Unique identifier for the deployment. + */ + deploymentId: string; + managerId: string; + resourceId: string; + resourceRevision: string; + desiredRevision: number; + appliedRevision: number; + status: VerifyContainerRegistryStatus; + lastVerifiedAt: Date | null; + lastError: string | null; +}; + +/** @internal */ +export type VerifyContainerRegistryRequest$Outbound = { + id: string; + workspace?: string | undefined; +}; + +/** @internal */ +export const VerifyContainerRegistryRequest$outboundSchema: z.ZodType< + VerifyContainerRegistryRequest$Outbound, + VerifyContainerRegistryRequest +> = z.object({ + id: z.string(), + workspace: z.string().optional(), +}); + +export function verifyContainerRegistryRequestToJSON( + verifyContainerRegistryRequest: VerifyContainerRegistryRequest, +): string { + return JSON.stringify( + VerifyContainerRegistryRequest$outboundSchema.parse( + verifyContainerRegistryRequest, + ), + ); +} + +/** @internal */ +export const VerifyContainerRegistryStatus$inboundSchema: z.ZodEnum< + typeof VerifyContainerRegistryStatus +> = z.enum(VerifyContainerRegistryStatus); + +/** @internal */ +export const VerifyContainerRegistryResponse$inboundSchema: z.ZodType< + VerifyContainerRegistryResponse, + unknown +> = z.object({ + id: z.string(), + deploymentId: z.string(), + managerId: z.string(), + resourceId: z.string(), + resourceRevision: z.string(), + desiredRevision: z.int(), + appliedRevision: z.int(), + status: VerifyContainerRegistryStatus$inboundSchema, + lastVerifiedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + lastError: z.nullable(z.string()), +}); + +export function verifyContainerRegistryResponseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => VerifyContainerRegistryResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'VerifyContainerRegistryResponse' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/operationsbundleuploadurlrequest.ts b/client-sdks/platform/typescript/src/models/operationsbundleuploadurlrequest.ts new file mode 100644 index 000000000..d87db7aae --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operationsbundleuploadurlrequest.ts @@ -0,0 +1,35 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; + +export type OperationsBundleUploadUrlRequest = { + /** + * Plugin name (from the bundle's metadata.json). + */ + name: string; +}; + +/** @internal */ +export type OperationsBundleUploadUrlRequest$Outbound = { + name: string; +}; + +/** @internal */ +export const OperationsBundleUploadUrlRequest$outboundSchema: z.ZodType< + OperationsBundleUploadUrlRequest$Outbound, + OperationsBundleUploadUrlRequest +> = z.object({ + name: z.string(), +}); + +export function operationsBundleUploadUrlRequestToJSON( + operationsBundleUploadUrlRequest: OperationsBundleUploadUrlRequest, +): string { + return JSON.stringify( + OperationsBundleUploadUrlRequest$outboundSchema.parse( + operationsBundleUploadUrlRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operationsbundleuploadurlresponse.ts b/client-sdks/platform/typescript/src/models/operationsbundleuploadurlresponse.ts new file mode 100644 index 000000000..1aa23e43b --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operationsbundleuploadurlresponse.ts @@ -0,0 +1,38 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +export type OperationsBundleUploadUrlResponse = { + /** + * Presigned S3 PUT URL to upload the bundle ZIP to. + */ + uploadUrl: string; + /** + * Content-Type header the PUT must send (must match the signature). + */ + contentType: string; +}; + +/** @internal */ +export const OperationsBundleUploadUrlResponse$inboundSchema: z.ZodType< + OperationsBundleUploadUrlResponse, + unknown +> = z.object({ + uploadUrl: z.string(), + contentType: z.string(), +}); + +export function operationsBundleUploadUrlResponseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => OperationsBundleUploadUrlResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'OperationsBundleUploadUrlResponse' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/operationsplugin.ts b/client-sdks/platform/typescript/src/models/operationsplugin.ts new file mode 100644 index 000000000..1a5cc2984 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operationsplugin.ts @@ -0,0 +1,69 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { ClosedEnum } from "../types/enums.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; +import { + OperationsPluginOperation, + OperationsPluginOperation$inboundSchema, +} from "./operationspluginoperation.js"; + +/** + * Plugin-level default tier. + */ +export const OperationsPluginTier = { + ReadOnly: "read-only", + Mutating: "mutating", + Destructive: "destructive", +} as const; +/** + * Plugin-level default tier. + */ +export type OperationsPluginTier = ClosedEnum; + +export type OperationsPlugin = { + name: string; + version: string; + /** + * Plugin-level default tier. + */ + tier: OperationsPluginTier; + /** + * True for compiled-in plugins, false for custom bundles. + */ + builtin: boolean; + enabled: boolean; + operations: Array; +}; + +/** @internal */ +export const OperationsPluginTier$inboundSchema: z.ZodEnum< + typeof OperationsPluginTier +> = z.enum(OperationsPluginTier); + +/** @internal */ +export const OperationsPlugin$inboundSchema: z.ZodType< + OperationsPlugin, + unknown +> = z.object({ + name: z.string(), + version: z.string(), + tier: OperationsPluginTier$inboundSchema, + builtin: z.boolean(), + enabled: z.boolean(), + operations: z.array(OperationsPluginOperation$inboundSchema), +}); + +export function operationsPluginFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => OperationsPlugin$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'OperationsPlugin' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/operationspluginoperation.ts b/client-sdks/platform/typescript/src/models/operationspluginoperation.ts new file mode 100644 index 000000000..335d1c226 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operationspluginoperation.ts @@ -0,0 +1,64 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { ClosedEnum } from "../types/enums.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +/** + * Effective risk tier for this operation. + */ +export const OperationsPluginOperationTier = { + ReadOnly: "read-only", + Mutating: "mutating", + Destructive: "destructive", +} as const; +/** + * Effective risk tier for this operation. + */ +export type OperationsPluginOperationTier = ClosedEnum< + typeof OperationsPluginOperationTier +>; + +export type OperationsPluginOperation = { + /** + * Operation name, unique within the plugin. + */ + name: string; + /** + * Effective risk tier for this operation. + */ + tier: OperationsPluginOperationTier; + /** + * Human-readable description. + */ + description: string | null; +}; + +/** @internal */ +export const OperationsPluginOperationTier$inboundSchema: z.ZodEnum< + typeof OperationsPluginOperationTier +> = z.enum(OperationsPluginOperationTier); + +/** @internal */ +export const OperationsPluginOperation$inboundSchema: z.ZodType< + OperationsPluginOperation, + unknown +> = z.object({ + name: z.string(), + tier: OperationsPluginOperationTier$inboundSchema, + description: z.nullable(z.string()), +}); + +export function operationsPluginOperationFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => OperationsPluginOperation$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'OperationsPluginOperation' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/operationspolicyresponse.ts b/client-sdks/platform/typescript/src/models/operationspolicyresponse.ts new file mode 100644 index 000000000..c116785e0 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operationspolicyresponse.ts @@ -0,0 +1,57 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { ClosedEnum } from "../types/enums.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; +import { + OperationsPolicyRule, + OperationsPolicyRule$inboundSchema, +} from "./operationspolicyrule.js"; + +/** + * Decision for commands no rule matches. + */ +export const DefaultEnum = { + Auto: "auto", + Manual: "manual", +} as const; +/** + * Decision for commands no rule matches. + */ +export type DefaultEnum = ClosedEnum; + +export type OperationsPolicyResponse = { + rules: Array; + /** + * Decision for commands no rule matches. + */ + default: DefaultEnum; +}; + +/** @internal */ +export const DefaultEnum$inboundSchema: z.ZodEnum = z.enum( + DefaultEnum, +); + +/** @internal */ +export const OperationsPolicyResponse$inboundSchema: z.ZodType< + OperationsPolicyResponse, + unknown +> = z.object({ + rules: z.array(OperationsPolicyRule$inboundSchema), + default: DefaultEnum$inboundSchema, +}); + +export function operationsPolicyResponseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => OperationsPolicyResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'OperationsPolicyResponse' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/operationspolicyrule.ts b/client-sdks/platform/typescript/src/models/operationspolicyrule.ts new file mode 100644 index 000000000..f85ce7505 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operationspolicyrule.ts @@ -0,0 +1,83 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { ClosedEnum } from "../types/enums.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +/** + * auto: run immediately. manual: needs customer approval before running. + */ +export const OperationsPolicyRuleDecision = { + Auto: "auto", + Manual: "manual", +} as const; +/** + * auto: run immediately. manual: needs customer approval before running. + */ +export type OperationsPolicyRuleDecision = ClosedEnum< + typeof OperationsPolicyRuleDecision +>; + +export type OperationsPolicyRule = { + /** + * `plugin/operation`, `plugin/*`, or `*`. + */ + pattern: string; + /** + * auto: run immediately. manual: needs customer approval before running. + */ + decision: OperationsPolicyRuleDecision; +}; + +/** @internal */ +export const OperationsPolicyRuleDecision$inboundSchema: z.ZodEnum< + typeof OperationsPolicyRuleDecision +> = z.enum(OperationsPolicyRuleDecision); +/** @internal */ +export const OperationsPolicyRuleDecision$outboundSchema: z.ZodEnum< + typeof OperationsPolicyRuleDecision +> = OperationsPolicyRuleDecision$inboundSchema; + +/** @internal */ +export const OperationsPolicyRule$inboundSchema: z.ZodType< + OperationsPolicyRule, + unknown +> = z.object({ + pattern: z.string(), + decision: OperationsPolicyRuleDecision$inboundSchema, +}); +/** @internal */ +export type OperationsPolicyRule$Outbound = { + pattern: string; + decision: string; +}; + +/** @internal */ +export const OperationsPolicyRule$outboundSchema: z.ZodType< + OperationsPolicyRule$Outbound, + OperationsPolicyRule +> = z.object({ + pattern: z.string(), + decision: OperationsPolicyRuleDecision$outboundSchema, +}); + +export function operationsPolicyRuleToJSON( + operationsPolicyRule: OperationsPolicyRule, +): string { + return JSON.stringify( + OperationsPolicyRule$outboundSchema.parse(operationsPolicyRule), + ); +} +export function operationsPolicyRuleFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => OperationsPolicyRule$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'OperationsPolicyRule' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/persistimporteddeploymentrequest.ts b/client-sdks/platform/typescript/src/models/persistimporteddeploymentrequest.ts index 62bb91cac..a2471bc8f 100644 --- a/client-sdks/platform/typescript/src/models/persistimporteddeploymentrequest.ts +++ b/client-sdks/platform/typescript/src/models/persistimporteddeploymentrequest.ts @@ -43,7 +43,33 @@ export type PersistImportedDeploymentRequestPlatformEnum = ClosedEnum< typeof PersistImportedDeploymentRequestPlatformEnum >; +/** + * Failure-domain policy selected for a compute pool. + */ +export type PersistImportedDeploymentRequestFailureDomains2 = { + /** + * Concrete provider domains selected during setup. + * + * @remarks + * Empty delegates deterministic selection to the provider setup implementation. + */ + selectedFailureDomains?: Array | undefined; + /** + * Number of distinct failure domains across which new stateful replicas may be spread. + */ + spread: number; +}; + +export type PersistImportedDeploymentRequestFailureDomainsUnion2 = + | PersistImportedDeploymentRequestFailureDomains2 + | any; + export type PersistImportedDeploymentRequestPoolsAutoscale = { + failureDomains?: + | PersistImportedDeploymentRequestFailureDomains2 + | any + | null + | undefined; /** * Provider machine type selected for this deployment. */ @@ -59,7 +85,33 @@ export type PersistImportedDeploymentRequestPoolsAutoscale = { mode: "autoscale"; }; +/** + * Failure-domain policy selected for a compute pool. + */ +export type PersistImportedDeploymentRequestFailureDomains1 = { + /** + * Concrete provider domains selected during setup. + * + * @remarks + * Empty delegates deterministic selection to the provider setup implementation. + */ + selectedFailureDomains?: Array | undefined; + /** + * Number of distinct failure domains across which new stateful replicas may be spread. + */ + spread: number; +}; + +export type PersistImportedDeploymentRequestFailureDomainsUnion1 = + | PersistImportedDeploymentRequestFailureDomains1 + | any; + export type PersistImportedDeploymentRequestPoolsFixed = { + failureDomains?: + | PersistImportedDeploymentRequestFailureDomains1 + | any + | null + | undefined; /** * Provider machine type selected for this deployment. */ @@ -1335,95 +1387,119 @@ export type PersistImportedDeploymentRequestEnvironmentInfoUnion = | PersistImportedDeploymentRequestEnvironmentInfoTest | any; -export const PersistImportedDeploymentRequestTypeStringList = { - StringList: "stringList", +/** + * Actor that owns structural work during the initial setup phase. + */ +export const PersistImportedDeploymentRequestInitialSetupAuthority = { + ImportedHandoff: "importedHandoff", + DirectSetup: "directSetup", } as const; -export type PersistImportedDeploymentRequestTypeStringList = ClosedEnum< - typeof PersistImportedDeploymentRequestTypeStringList +/** + * Actor that owns structural work during the initial setup phase. + */ +export type PersistImportedDeploymentRequestInitialSetupAuthority = ClosedEnum< + typeof PersistImportedDeploymentRequestInitialSetupAuthority >; -export type PersistImportedDeploymentRequestDefaultStringList = { - type: PersistImportedDeploymentRequestTypeStringList; - /** - * String list default. - */ - value: Array; -}; +export const PersistImportedDeploymentRequestPendingPreparedStackTypeStringList = + { + StringList: "stringList", + } as const; +export type PersistImportedDeploymentRequestPendingPreparedStackTypeStringList = + ClosedEnum< + typeof PersistImportedDeploymentRequestPendingPreparedStackTypeStringList + >; + +export type PersistImportedDeploymentRequestPendingPreparedStackDefaultStringList = + { + type: PersistImportedDeploymentRequestPendingPreparedStackTypeStringList; + /** + * String list default. + */ + value: Array; + }; -export const PersistImportedDeploymentRequestTypeBoolean = { +export const PersistImportedDeploymentRequestPendingPreparedStackTypeBoolean = { Boolean: "boolean", } as const; -export type PersistImportedDeploymentRequestTypeBoolean = ClosedEnum< - typeof PersistImportedDeploymentRequestTypeBoolean ->; +export type PersistImportedDeploymentRequestPendingPreparedStackTypeBoolean = + ClosedEnum< + typeof PersistImportedDeploymentRequestPendingPreparedStackTypeBoolean + >; -export type PersistImportedDeploymentRequestDefaultBoolean = { - type: PersistImportedDeploymentRequestTypeBoolean; - /** - * Boolean default. - */ - value: boolean; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackDefaultBoolean = + { + type: PersistImportedDeploymentRequestPendingPreparedStackTypeBoolean; + /** + * Boolean default. + */ + value: boolean; + }; -export const PersistImportedDeploymentRequestTypeNumber = { +export const PersistImportedDeploymentRequestPendingPreparedStackTypeNumber = { Number: "number", } as const; -export type PersistImportedDeploymentRequestTypeNumber = ClosedEnum< - typeof PersistImportedDeploymentRequestTypeNumber ->; +export type PersistImportedDeploymentRequestPendingPreparedStackTypeNumber = + ClosedEnum< + typeof PersistImportedDeploymentRequestPendingPreparedStackTypeNumber + >; -export type PersistImportedDeploymentRequestDefaultNumber = { - type: PersistImportedDeploymentRequestTypeNumber; - /** - * Number default. - */ - value: string; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackDefaultNumber = + { + type: PersistImportedDeploymentRequestPendingPreparedStackTypeNumber; + /** + * Number default. + */ + value: string; + }; -export const PersistImportedDeploymentRequestTypeString = { +export const PersistImportedDeploymentRequestPendingPreparedStackTypeString = { String: "string", } as const; -export type PersistImportedDeploymentRequestTypeString = ClosedEnum< - typeof PersistImportedDeploymentRequestTypeString ->; +export type PersistImportedDeploymentRequestPendingPreparedStackTypeString = + ClosedEnum< + typeof PersistImportedDeploymentRequestPendingPreparedStackTypeString + >; -export type PersistImportedDeploymentRequestDefaultString = { - type: PersistImportedDeploymentRequestTypeString; - /** - * String default. - */ - value: string; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackDefaultString = + { + type: PersistImportedDeploymentRequestPendingPreparedStackTypeString; + /** + * String default. + */ + value: string; + }; -export type PersistImportedDeploymentRequestDefaultUnion = - | PersistImportedDeploymentRequestDefaultString - | PersistImportedDeploymentRequestDefaultNumber - | PersistImportedDeploymentRequestDefaultBoolean - | PersistImportedDeploymentRequestDefaultStringList +export type PersistImportedDeploymentRequestPendingPreparedStackDefaultUnion = + | PersistImportedDeploymentRequestPendingPreparedStackDefaultString + | PersistImportedDeploymentRequestPendingPreparedStackDefaultNumber + | PersistImportedDeploymentRequestPendingPreparedStackDefaultBoolean + | PersistImportedDeploymentRequestPendingPreparedStackDefaultStringList | any; /** * Environment variable handling for a stack input mapping. */ -export const PersistImportedDeploymentRequestTypeEnvEnum = { +export const PersistImportedDeploymentRequestPendingPreparedStackTypeEnvEnum = { Plain: "plain", Secret: "secret", } as const; /** * Environment variable handling for a stack input mapping. */ -export type PersistImportedDeploymentRequestTypeEnvEnum = ClosedEnum< - typeof PersistImportedDeploymentRequestTypeEnvEnum ->; +export type PersistImportedDeploymentRequestPendingPreparedStackTypeEnvEnum = + ClosedEnum< + typeof PersistImportedDeploymentRequestPendingPreparedStackTypeEnvEnum + >; -export type PersistImportedDeploymentRequestTypeUnion = - | PersistImportedDeploymentRequestTypeEnvEnum +export type PersistImportedDeploymentRequestPendingPreparedStackTypeUnion = + | PersistImportedDeploymentRequestPendingPreparedStackTypeEnvEnum | any; /** * How a resolved stack input is injected into runtime environment variables. */ -export type PersistImportedDeploymentRequestEnv = { +export type PersistImportedDeploymentRequestPendingPreparedStackEnv = { /** * Environment variable name. */ @@ -1432,13 +1508,17 @@ export type PersistImportedDeploymentRequestEnv = { * Target resource IDs or patterns. None means every env-capable resource. */ targetResources?: Array | null | undefined; - type?: PersistImportedDeploymentRequestTypeEnvEnum | any | null | undefined; + type?: + | PersistImportedDeploymentRequestPendingPreparedStackTypeEnvEnum + | any + | null + | undefined; }; /** * Primitive stack input kind. */ -export const PersistImportedDeploymentRequestKind = { +export const PersistImportedDeploymentRequestPendingPreparedStackKind = { String: "string", Secret: "secret", Number: "number", @@ -1450,14 +1530,13 @@ export const PersistImportedDeploymentRequestKind = { /** * Primitive stack input kind. */ -export type PersistImportedDeploymentRequestKind = ClosedEnum< - typeof PersistImportedDeploymentRequestKind ->; +export type PersistImportedDeploymentRequestPendingPreparedStackKind = + ClosedEnum; /** * Represents the target cloud platform. */ -export const PersistImportedDeploymentRequestPreparedStackPlatform = { +export const PersistImportedDeploymentRequestPendingPreparedStackPlatform = { Aws: "aws", Gcp: "gcp", Azure: "azure", @@ -1469,28 +1548,30 @@ export const PersistImportedDeploymentRequestPreparedStackPlatform = { /** * Represents the target cloud platform. */ -export type PersistImportedDeploymentRequestPreparedStackPlatform = ClosedEnum< - typeof PersistImportedDeploymentRequestPreparedStackPlatform ->; +export type PersistImportedDeploymentRequestPendingPreparedStackPlatform = + ClosedEnum< + typeof PersistImportedDeploymentRequestPendingPreparedStackPlatform + >; /** * Who can provide a stack input value. */ -export const PersistImportedDeploymentRequestProvidedBy = { +export const PersistImportedDeploymentRequestPendingPreparedStackProvidedBy = { Developer: "developer", Deployer: "deployer", } as const; /** * Who can provide a stack input value. */ -export type PersistImportedDeploymentRequestProvidedBy = ClosedEnum< - typeof PersistImportedDeploymentRequestProvidedBy ->; +export type PersistImportedDeploymentRequestPendingPreparedStackProvidedBy = + ClosedEnum< + typeof PersistImportedDeploymentRequestPendingPreparedStackProvidedBy + >; /** * Portable stack input validation constraints. */ -export type PersistImportedDeploymentRequestValidation = { +export type PersistImportedDeploymentRequestPendingPreparedStackValidation = { /** * Semantic format hint such as url. */ @@ -1529,19 +1610,19 @@ export type PersistImportedDeploymentRequestValidation = { values?: Array | null | undefined; }; -export type PersistImportedDeploymentRequestValidationUnion = - | PersistImportedDeploymentRequestValidation +export type PersistImportedDeploymentRequestPendingPreparedStackValidationUnion = + | PersistImportedDeploymentRequestPendingPreparedStackValidation | any; /** * Stack input definition serialized into a release stack. */ -export type PersistImportedDeploymentRequestInput = { +export type PersistImportedDeploymentRequestPendingPreparedStackInput = { default?: - | PersistImportedDeploymentRequestDefaultString - | PersistImportedDeploymentRequestDefaultNumber - | PersistImportedDeploymentRequestDefaultBoolean - | PersistImportedDeploymentRequestDefaultStringList + | PersistImportedDeploymentRequestPendingPreparedStackDefaultString + | PersistImportedDeploymentRequestPendingPreparedStackDefaultNumber + | PersistImportedDeploymentRequestPendingPreparedStackDefaultBoolean + | PersistImportedDeploymentRequestPendingPreparedStackDefaultStringList | any | null | undefined; @@ -1552,7 +1633,9 @@ export type PersistImportedDeploymentRequestInput = { /** * Runtime env-var mappings for v1 input resolution. */ - env?: Array | undefined; + env?: + | Array + | undefined; /** * Stable input ID used by CLI/API calls. */ @@ -1560,7 +1643,7 @@ export type PersistImportedDeploymentRequestInput = { /** * Primitive stack input kind. */ - kind: PersistImportedDeploymentRequestKind; + kind: PersistImportedDeploymentRequestPendingPreparedStackKind; /** * Human-facing field label. */ @@ -1573,121 +1656,136 @@ export type PersistImportedDeploymentRequestInput = { * Platforms where this input applies. */ platforms?: - | Array + | Array | null | undefined; /** * Who can provide this value. */ - providedBy: Array; + providedBy: Array< + PersistImportedDeploymentRequestPendingPreparedStackProvidedBy + >; /** * Whether a resolved value is required before deployment can proceed. */ required: boolean; validation?: - | PersistImportedDeploymentRequestValidation + | PersistImportedDeploymentRequestPendingPreparedStackValidation | any | null | undefined; }; -export const PersistImportedDeploymentRequestManagementEnum = { - Auto: "auto", -} as const; -export type PersistImportedDeploymentRequestManagementEnum = ClosedEnum< - typeof PersistImportedDeploymentRequestManagementEnum ->; +export const PersistImportedDeploymentRequestPendingPreparedStackManagementEnum = + { + Auto: "auto", + } as const; +export type PersistImportedDeploymentRequestPendingPreparedStackManagementEnum = + ClosedEnum< + typeof PersistImportedDeploymentRequestPendingPreparedStackManagementEnum + >; /** * AWS-specific binding specification */ -export type PersistImportedDeploymentRequestOverrideAwResource = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackOverrideAwResource = + { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; + }; /** * AWS-specific binding specification */ -export type PersistImportedDeploymentRequestOverrideAwStack = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackOverrideAwStack = + { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; + }; /** * Generic binding configuration for permissions */ -export type PersistImportedDeploymentRequestOverrideAwBinding = { - /** - * AWS-specific binding specification - */ - resource?: PersistImportedDeploymentRequestOverrideAwResource | undefined; - /** - * AWS-specific binding specification - */ - stack?: PersistImportedDeploymentRequestOverrideAwStack | undefined; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackOverrideAwBinding = + { + /** + * AWS-specific binding specification + */ + resource?: + | PersistImportedDeploymentRequestPendingPreparedStackOverrideAwResource + | undefined; + /** + * AWS-specific binding specification + */ + stack?: + | PersistImportedDeploymentRequestPendingPreparedStackOverrideAwStack + | undefined; + }; /** * IAM effect. Defaults to Allow. */ -export const PersistImportedDeploymentRequestOverrideEffect = { - Allow: "Allow", - Deny: "Deny", -} as const; +export const PersistImportedDeploymentRequestPendingPreparedStackOverrideEffect = + { + Allow: "Allow", + Deny: "Deny", + } as const; /** * IAM effect. Defaults to Allow. */ -export type PersistImportedDeploymentRequestOverrideEffect = ClosedEnum< - typeof PersistImportedDeploymentRequestOverrideEffect ->; +export type PersistImportedDeploymentRequestPendingPreparedStackOverrideEffect = + ClosedEnum< + typeof PersistImportedDeploymentRequestPendingPreparedStackOverrideEffect + >; /** * Grant permissions for a specific cloud platform */ -export type PersistImportedDeploymentRequestOverrideAwGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackOverrideAwGrant = + { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; + }; /** * AWS-specific platform permission configuration */ -export type PersistImportedDeploymentRequestOverrideAw = { +export type PersistImportedDeploymentRequestPendingPreparedStackOverrideAw = { /** * Generic binding configuration for permissions */ - binding: PersistImportedDeploymentRequestOverrideAwBinding; + binding: + PersistImportedDeploymentRequestPendingPreparedStackOverrideAwBinding; /** * Short admin-facing description of why this entry exists. */ @@ -1695,11 +1793,13 @@ export type PersistImportedDeploymentRequestOverrideAw = { /** * IAM effect. Defaults to Allow. */ - effect?: PersistImportedDeploymentRequestOverrideEffect | undefined; + effect?: + | PersistImportedDeploymentRequestPendingPreparedStackOverrideEffect + | undefined; /** * Grant permissions for a specific cloud platform */ - grant: PersistImportedDeploymentRequestOverrideAwGrant; + grant: PersistImportedDeploymentRequestPendingPreparedStackOverrideAwGrant; /** * Stable admin-facing label for this permission entry. */ @@ -1709,187 +1809,209 @@ export type PersistImportedDeploymentRequestOverrideAw = { /** * Azure-specific binding specification */ -export type PersistImportedDeploymentRequestOverrideAzureResource = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureResource = + { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; + }; /** * Azure-specific binding specification */ -export type PersistImportedDeploymentRequestOverrideAzureStack = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureStack = + { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; + }; /** * Generic binding configuration for permissions */ -export type PersistImportedDeploymentRequestOverrideAzureBinding = { - /** - * Azure-specific binding specification - */ - resource?: PersistImportedDeploymentRequestOverrideAzureResource | undefined; - /** - * Azure-specific binding specification - */ - stack?: PersistImportedDeploymentRequestOverrideAzureStack | undefined; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureBinding = + { + /** + * Azure-specific binding specification + */ + resource?: + | PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureResource + | undefined; + /** + * Azure-specific binding specification + */ + stack?: + | PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureStack + | undefined; + }; /** * Grant permissions for a specific cloud platform */ -export type PersistImportedDeploymentRequestOverrideAzureGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * Azure-specific platform permission configuration - */ -export type PersistImportedDeploymentRequestOverrideAzure = { - /** - * Generic binding configuration for permissions - */ - binding: PersistImportedDeploymentRequestOverrideAzureBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: PersistImportedDeploymentRequestOverrideAzureGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureGrant = + { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; + }; + +/** + * Azure-specific platform permission configuration + */ +export type PersistImportedDeploymentRequestPendingPreparedStackOverrideAzure = + { + /** + * Generic binding configuration for permissions + */ + binding: + PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: + PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; + }; /** * GCP IAM condition */ -export type PersistImportedDeploymentRequestOverrideConditionResource = { - expression: string; - title: string; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackOverrideConditionResource = + { + expression: string; + title: string; + }; -export type PersistImportedDeploymentRequestOverrideResourceConditionUnion = - | PersistImportedDeploymentRequestOverrideConditionResource +export type PersistImportedDeploymentRequestPendingPreparedStackOverrideResourceConditionUnion = + | PersistImportedDeploymentRequestPendingPreparedStackOverrideConditionResource | any; /** * GCP-specific binding specification */ -export type PersistImportedDeploymentRequestOverrideGcpResource = { - condition?: - | PersistImportedDeploymentRequestOverrideConditionResource - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpResource = + { + condition?: + | PersistImportedDeploymentRequestPendingPreparedStackOverrideConditionResource + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; + }; /** * GCP IAM condition */ -export type PersistImportedDeploymentRequestOverrideConditionStack = { - expression: string; - title: string; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackOverrideConditionStack = + { + expression: string; + title: string; + }; -export type PersistImportedDeploymentRequestOverrideStackConditionUnion = - | PersistImportedDeploymentRequestOverrideConditionStack +export type PersistImportedDeploymentRequestPendingPreparedStackOverrideStackConditionUnion = + | PersistImportedDeploymentRequestPendingPreparedStackOverrideConditionStack | any; /** * GCP-specific binding specification */ -export type PersistImportedDeploymentRequestOverrideGcpStack = { - condition?: - | PersistImportedDeploymentRequestOverrideConditionStack - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpStack = + { + condition?: + | PersistImportedDeploymentRequestPendingPreparedStackOverrideConditionStack + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; + }; /** * Generic binding configuration for permissions */ -export type PersistImportedDeploymentRequestOverrideGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: PersistImportedDeploymentRequestOverrideGcpResource | undefined; - /** - * GCP-specific binding specification - */ - stack?: PersistImportedDeploymentRequestOverrideGcpStack | undefined; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpBinding = + { + /** + * GCP-specific binding specification + */ + resource?: + | PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpResource + | undefined; + /** + * GCP-specific binding specification + */ + stack?: + | PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpStack + | undefined; + }; /** * Grant permissions for a specific cloud platform */ -export type PersistImportedDeploymentRequestOverrideGcpGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpGrant = + { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; + }; /** * GCP-specific platform permission configuration */ -export type PersistImportedDeploymentRequestOverrideGcp = { +export type PersistImportedDeploymentRequestPendingPreparedStackOverrideGcp = { /** * Generic binding configuration for permissions */ - binding: PersistImportedDeploymentRequestOverrideGcpBinding; + binding: + PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpBinding; /** * Short admin-facing description of why this entry exists. */ @@ -1897,7 +2019,7 @@ export type PersistImportedDeploymentRequestOverrideGcp = { /** * Grant permissions for a specific cloud platform */ - grant: PersistImportedDeploymentRequestOverrideGcpGrant; + grant: PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpGrant; /** * Stable admin-facing label for this permission entry. */ @@ -1907,28 +2029,35 @@ export type PersistImportedDeploymentRequestOverrideGcp = { /** * Platform-specific permission configurations */ -export type PersistImportedDeploymentRequestOverridePlatforms = { - /** - * AWS permission configurations - */ - aws?: Array | null | undefined; - /** - * Azure permission configurations - */ - azure?: - | Array - | null - | undefined; - /** - * GCP permission configurations - */ - gcp?: Array | null | undefined; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackOverridePlatforms = + { + /** + * AWS permission configurations + */ + aws?: + | Array + | null + | undefined; + /** + * Azure permission configurations + */ + azure?: + | Array + | null + | undefined; + /** + * GCP permission configurations + */ + gcp?: + | Array + | null + | undefined; + }; /** * A permission set that can be applied across different cloud platforms */ -export type PersistImportedDeploymentRequestOverride = { +export type PersistImportedDeploymentRequestPendingPreparedStackOverride = { /** * Human-readable description of what this permission set allows */ @@ -1940,17 +2069,18 @@ export type PersistImportedDeploymentRequestOverride = { /** * Platform-specific permission configurations */ - platforms: PersistImportedDeploymentRequestOverridePlatforms; + platforms: + PersistImportedDeploymentRequestPendingPreparedStackOverridePlatforms; }; /** * Reference to a permission set - either by name or inline definition */ -export type PersistImportedDeploymentRequestOverrideUnion = - | PersistImportedDeploymentRequestOverride +export type PersistImportedDeploymentRequestPendingPreparedStackOverrideUnion = + | PersistImportedDeploymentRequestPendingPreparedStackOverride | string; -export type PersistImportedDeploymentRequestManagement2 = { +export type PersistImportedDeploymentRequestPendingPreparedStackManagement2 = { /** * Permission profile that maps resources to permission sets * @@ -1958,100 +2088,112 @@ export type PersistImportedDeploymentRequestManagement2 = { * Key can be "*" for all resources or resource name for specific resource */ override: { - [k: string]: Array; + [k: string]: Array< + PersistImportedDeploymentRequestPendingPreparedStackOverride | string + >; }; }; /** * AWS-specific binding specification */ -export type PersistImportedDeploymentRequestExtendAwResource = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackExtendAwResource = + { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; + }; /** * AWS-specific binding specification */ -export type PersistImportedDeploymentRequestExtendAwStack = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackExtendAwStack = + { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; + }; /** * Generic binding configuration for permissions */ -export type PersistImportedDeploymentRequestExtendAwBinding = { - /** - * AWS-specific binding specification - */ - resource?: PersistImportedDeploymentRequestExtendAwResource | undefined; - /** - * AWS-specific binding specification - */ - stack?: PersistImportedDeploymentRequestExtendAwStack | undefined; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackExtendAwBinding = + { + /** + * AWS-specific binding specification + */ + resource?: + | PersistImportedDeploymentRequestPendingPreparedStackExtendAwResource + | undefined; + /** + * AWS-specific binding specification + */ + stack?: + | PersistImportedDeploymentRequestPendingPreparedStackExtendAwStack + | undefined; + }; /** * IAM effect. Defaults to Allow. */ -export const PersistImportedDeploymentRequestExtendEffect = { - Allow: "Allow", - Deny: "Deny", -} as const; +export const PersistImportedDeploymentRequestPendingPreparedStackExtendEffect = + { + Allow: "Allow", + Deny: "Deny", + } as const; /** * IAM effect. Defaults to Allow. */ -export type PersistImportedDeploymentRequestExtendEffect = ClosedEnum< - typeof PersistImportedDeploymentRequestExtendEffect ->; +export type PersistImportedDeploymentRequestPendingPreparedStackExtendEffect = + ClosedEnum< + typeof PersistImportedDeploymentRequestPendingPreparedStackExtendEffect + >; /** * Grant permissions for a specific cloud platform */ -export type PersistImportedDeploymentRequestExtendAwGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackExtendAwGrant = + { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; + }; /** * AWS-specific platform permission configuration */ -export type PersistImportedDeploymentRequestExtendAw = { +export type PersistImportedDeploymentRequestPendingPreparedStackExtendAw = { /** * Generic binding configuration for permissions */ - binding: PersistImportedDeploymentRequestExtendAwBinding; + binding: PersistImportedDeploymentRequestPendingPreparedStackExtendAwBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2059,11 +2201,13 @@ export type PersistImportedDeploymentRequestExtendAw = { /** * IAM effect. Defaults to Allow. */ - effect?: PersistImportedDeploymentRequestExtendEffect | undefined; + effect?: + | PersistImportedDeploymentRequestPendingPreparedStackExtendEffect + | undefined; /** * Grant permissions for a specific cloud platform */ - grant: PersistImportedDeploymentRequestExtendAwGrant; + grant: PersistImportedDeploymentRequestPendingPreparedStackExtendAwGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2073,71 +2217,80 @@ export type PersistImportedDeploymentRequestExtendAw = { /** * Azure-specific binding specification */ -export type PersistImportedDeploymentRequestExtendAzureResource = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackExtendAzureResource = + { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; + }; /** * Azure-specific binding specification */ -export type PersistImportedDeploymentRequestExtendAzureStack = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackExtendAzureStack = + { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; + }; /** * Generic binding configuration for permissions */ -export type PersistImportedDeploymentRequestExtendAzureBinding = { - /** - * Azure-specific binding specification - */ - resource?: PersistImportedDeploymentRequestExtendAzureResource | undefined; - /** - * Azure-specific binding specification - */ - stack?: PersistImportedDeploymentRequestExtendAzureStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type PersistImportedDeploymentRequestExtendAzureGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackExtendAzureBinding = + { + /** + * Azure-specific binding specification + */ + resource?: + | PersistImportedDeploymentRequestPendingPreparedStackExtendAzureResource + | undefined; + /** + * Azure-specific binding specification + */ + stack?: + | PersistImportedDeploymentRequestPendingPreparedStackExtendAzureStack + | undefined; + }; + +/** + * Grant permissions for a specific cloud platform + */ +export type PersistImportedDeploymentRequestPendingPreparedStackExtendAzureGrant = + { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; + }; /** * Azure-specific platform permission configuration */ -export type PersistImportedDeploymentRequestExtendAzure = { +export type PersistImportedDeploymentRequestPendingPreparedStackExtendAzure = { /** * Generic binding configuration for permissions */ - binding: PersistImportedDeploymentRequestExtendAzureBinding; + binding: + PersistImportedDeploymentRequestPendingPreparedStackExtendAzureBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2145,7 +2298,7 @@ export type PersistImportedDeploymentRequestExtendAzure = { /** * Grant permissions for a specific cloud platform */ - grant: PersistImportedDeploymentRequestExtendAzureGrant; + grant: PersistImportedDeploymentRequestPendingPreparedStackExtendAzureGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2155,105 +2308,115 @@ export type PersistImportedDeploymentRequestExtendAzure = { /** * GCP IAM condition */ -export type PersistImportedDeploymentRequestExtendConditionResource = { - expression: string; - title: string; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackExtendConditionResource = + { + expression: string; + title: string; + }; -export type PersistImportedDeploymentRequestExtendResourceConditionUnion = - | PersistImportedDeploymentRequestExtendConditionResource +export type PersistImportedDeploymentRequestPendingPreparedStackExtendResourceConditionUnion = + | PersistImportedDeploymentRequestPendingPreparedStackExtendConditionResource | any; /** * GCP-specific binding specification */ -export type PersistImportedDeploymentRequestExtendGcpResource = { - condition?: - | PersistImportedDeploymentRequestExtendConditionResource - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackExtendGcpResource = + { + condition?: + | PersistImportedDeploymentRequestPendingPreparedStackExtendConditionResource + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; + }; /** * GCP IAM condition */ -export type PersistImportedDeploymentRequestExtendConditionStack = { - expression: string; - title: string; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackExtendConditionStack = + { + expression: string; + title: string; + }; -export type PersistImportedDeploymentRequestExtendStackConditionUnion = - | PersistImportedDeploymentRequestExtendConditionStack +export type PersistImportedDeploymentRequestPendingPreparedStackExtendStackConditionUnion = + | PersistImportedDeploymentRequestPendingPreparedStackExtendConditionStack | any; /** * GCP-specific binding specification */ -export type PersistImportedDeploymentRequestExtendGcpStack = { - condition?: - | PersistImportedDeploymentRequestExtendConditionStack - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackExtendGcpStack = + { + condition?: + | PersistImportedDeploymentRequestPendingPreparedStackExtendConditionStack + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; + }; /** * Generic binding configuration for permissions */ -export type PersistImportedDeploymentRequestExtendGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: PersistImportedDeploymentRequestExtendGcpResource | undefined; - /** - * GCP-specific binding specification - */ - stack?: PersistImportedDeploymentRequestExtendGcpStack | undefined; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackExtendGcpBinding = + { + /** + * GCP-specific binding specification + */ + resource?: + | PersistImportedDeploymentRequestPendingPreparedStackExtendGcpResource + | undefined; + /** + * GCP-specific binding specification + */ + stack?: + | PersistImportedDeploymentRequestPendingPreparedStackExtendGcpStack + | undefined; + }; /** * Grant permissions for a specific cloud platform */ -export type PersistImportedDeploymentRequestExtendGcpGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackExtendGcpGrant = + { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; + }; /** * GCP-specific platform permission configuration */ -export type PersistImportedDeploymentRequestExtendGcp = { +export type PersistImportedDeploymentRequestPendingPreparedStackExtendGcp = { /** * Generic binding configuration for permissions */ - binding: PersistImportedDeploymentRequestExtendGcpBinding; + binding: PersistImportedDeploymentRequestPendingPreparedStackExtendGcpBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2261,7 +2424,7 @@ export type PersistImportedDeploymentRequestExtendGcp = { /** * Grant permissions for a specific cloud platform */ - grant: PersistImportedDeploymentRequestExtendGcpGrant; + grant: PersistImportedDeploymentRequestPendingPreparedStackExtendGcpGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2271,25 +2434,35 @@ export type PersistImportedDeploymentRequestExtendGcp = { /** * Platform-specific permission configurations */ -export type PersistImportedDeploymentRequestExtendPlatforms = { - /** - * AWS permission configurations - */ - aws?: Array | null | undefined; - /** - * Azure permission configurations - */ - azure?: Array | null | undefined; - /** - * GCP permission configurations - */ - gcp?: Array | null | undefined; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackExtendPlatforms = + { + /** + * AWS permission configurations + */ + aws?: + | Array + | null + | undefined; + /** + * Azure permission configurations + */ + azure?: + | Array + | null + | undefined; + /** + * GCP permission configurations + */ + gcp?: + | Array + | null + | undefined; + }; /** * A permission set that can be applied across different cloud platforms */ -export type PersistImportedDeploymentRequestExtend = { +export type PersistImportedDeploymentRequestPendingPreparedStackExtend = { /** * Human-readable description of what this permission set allows */ @@ -2301,17 +2474,18 @@ export type PersistImportedDeploymentRequestExtend = { /** * Platform-specific permission configurations */ - platforms: PersistImportedDeploymentRequestExtendPlatforms; + platforms: + PersistImportedDeploymentRequestPendingPreparedStackExtendPlatforms; }; /** * Reference to a permission set - either by name or inline definition */ -export type PersistImportedDeploymentRequestExtendUnion = - | PersistImportedDeploymentRequestExtend +export type PersistImportedDeploymentRequestPendingPreparedStackExtendUnion = + | PersistImportedDeploymentRequestPendingPreparedStackExtend | string; -export type PersistImportedDeploymentRequestManagement1 = { +export type PersistImportedDeploymentRequestPendingPreparedStackManagement1 = { /** * Permission profile that maps resources to permission sets * @@ -2319,108 +2493,120 @@ export type PersistImportedDeploymentRequestManagement1 = { * Key can be "*" for all resources or resource name for specific resource */ extend: { - [k: string]: Array; + [k: string]: Array< + PersistImportedDeploymentRequestPendingPreparedStackExtend | string + >; }; }; /** * Management permissions configuration for stack management access */ -export type PersistImportedDeploymentRequestManagementUnion = - | PersistImportedDeploymentRequestManagement1 - | PersistImportedDeploymentRequestManagement2 - | PersistImportedDeploymentRequestManagementEnum; +export type PersistImportedDeploymentRequestPendingPreparedStackManagementUnion = + | PersistImportedDeploymentRequestPendingPreparedStackManagement1 + | PersistImportedDeploymentRequestPendingPreparedStackManagement2 + | PersistImportedDeploymentRequestPendingPreparedStackManagementEnum; /** * AWS-specific binding specification */ -export type PersistImportedDeploymentRequestProfileAwResource = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackProfileAwResource = + { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; + }; /** * AWS-specific binding specification */ -export type PersistImportedDeploymentRequestProfileAwStack = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackProfileAwStack = + { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; + }; /** * Generic binding configuration for permissions */ -export type PersistImportedDeploymentRequestProfileAwBinding = { - /** - * AWS-specific binding specification - */ - resource?: PersistImportedDeploymentRequestProfileAwResource | undefined; - /** - * AWS-specific binding specification - */ - stack?: PersistImportedDeploymentRequestProfileAwStack | undefined; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackProfileAwBinding = + { + /** + * AWS-specific binding specification + */ + resource?: + | PersistImportedDeploymentRequestPendingPreparedStackProfileAwResource + | undefined; + /** + * AWS-specific binding specification + */ + stack?: + | PersistImportedDeploymentRequestPendingPreparedStackProfileAwStack + | undefined; + }; /** * IAM effect. Defaults to Allow. */ -export const PersistImportedDeploymentRequestProfileEffect = { - Allow: "Allow", - Deny: "Deny", -} as const; +export const PersistImportedDeploymentRequestPendingPreparedStackProfileEffect = + { + Allow: "Allow", + Deny: "Deny", + } as const; /** * IAM effect. Defaults to Allow. */ -export type PersistImportedDeploymentRequestProfileEffect = ClosedEnum< - typeof PersistImportedDeploymentRequestProfileEffect ->; +export type PersistImportedDeploymentRequestPendingPreparedStackProfileEffect = + ClosedEnum< + typeof PersistImportedDeploymentRequestPendingPreparedStackProfileEffect + >; /** * Grant permissions for a specific cloud platform */ -export type PersistImportedDeploymentRequestProfileAwGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackProfileAwGrant = + { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; + }; /** * AWS-specific platform permission configuration */ -export type PersistImportedDeploymentRequestProfileAw = { +export type PersistImportedDeploymentRequestPendingPreparedStackProfileAw = { /** * Generic binding configuration for permissions */ - binding: PersistImportedDeploymentRequestProfileAwBinding; + binding: PersistImportedDeploymentRequestPendingPreparedStackProfileAwBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2428,11 +2614,13 @@ export type PersistImportedDeploymentRequestProfileAw = { /** * IAM effect. Defaults to Allow. */ - effect?: PersistImportedDeploymentRequestProfileEffect | undefined; + effect?: + | PersistImportedDeploymentRequestPendingPreparedStackProfileEffect + | undefined; /** * Grant permissions for a specific cloud platform */ - grant: PersistImportedDeploymentRequestProfileAwGrant; + grant: PersistImportedDeploymentRequestPendingPreparedStackProfileAwGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2442,71 +2630,80 @@ export type PersistImportedDeploymentRequestProfileAw = { /** * Azure-specific binding specification */ -export type PersistImportedDeploymentRequestProfileAzureResource = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackProfileAzureResource = + { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; + }; /** * Azure-specific binding specification */ -export type PersistImportedDeploymentRequestProfileAzureStack = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackProfileAzureStack = + { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; + }; /** * Generic binding configuration for permissions */ -export type PersistImportedDeploymentRequestProfileAzureBinding = { - /** - * Azure-specific binding specification - */ - resource?: PersistImportedDeploymentRequestProfileAzureResource | undefined; - /** - * Azure-specific binding specification - */ - stack?: PersistImportedDeploymentRequestProfileAzureStack | undefined; -}; - +export type PersistImportedDeploymentRequestPendingPreparedStackProfileAzureBinding = + { + /** + * Azure-specific binding specification + */ + resource?: + | PersistImportedDeploymentRequestPendingPreparedStackProfileAzureResource + | undefined; + /** + * Azure-specific binding specification + */ + stack?: + | PersistImportedDeploymentRequestPendingPreparedStackProfileAzureStack + | undefined; + }; + /** * Grant permissions for a specific cloud platform */ -export type PersistImportedDeploymentRequestProfileAzureGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackProfileAzureGrant = + { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; + }; /** * Azure-specific platform permission configuration */ -export type PersistImportedDeploymentRequestProfileAzure = { +export type PersistImportedDeploymentRequestPendingPreparedStackProfileAzure = { /** * Generic binding configuration for permissions */ - binding: PersistImportedDeploymentRequestProfileAzureBinding; + binding: + PersistImportedDeploymentRequestPendingPreparedStackProfileAzureBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2514,7 +2711,7 @@ export type PersistImportedDeploymentRequestProfileAzure = { /** * Grant permissions for a specific cloud platform */ - grant: PersistImportedDeploymentRequestProfileAzureGrant; + grant: PersistImportedDeploymentRequestPendingPreparedStackProfileAzureGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2524,105 +2721,116 @@ export type PersistImportedDeploymentRequestProfileAzure = { /** * GCP IAM condition */ -export type PersistImportedDeploymentRequestProfileConditionResource = { - expression: string; - title: string; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackProfileConditionResource = + { + expression: string; + title: string; + }; -export type PersistImportedDeploymentRequestProfileResourceConditionUnion = - | PersistImportedDeploymentRequestProfileConditionResource +export type PersistImportedDeploymentRequestPendingPreparedStackProfileResourceConditionUnion = + | PersistImportedDeploymentRequestPendingPreparedStackProfileConditionResource | any; /** * GCP-specific binding specification */ -export type PersistImportedDeploymentRequestProfileGcpResource = { - condition?: - | PersistImportedDeploymentRequestProfileConditionResource - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackProfileGcpResource = + { + condition?: + | PersistImportedDeploymentRequestPendingPreparedStackProfileConditionResource + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; + }; /** * GCP IAM condition */ -export type PersistImportedDeploymentRequestProfileConditionStack = { - expression: string; - title: string; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackProfileConditionStack = + { + expression: string; + title: string; + }; -export type PersistImportedDeploymentRequestProfileStackConditionUnion = - | PersistImportedDeploymentRequestProfileConditionStack +export type PersistImportedDeploymentRequestPendingPreparedStackProfileStackConditionUnion = + | PersistImportedDeploymentRequestPendingPreparedStackProfileConditionStack | any; /** * GCP-specific binding specification */ -export type PersistImportedDeploymentRequestProfileGcpStack = { - condition?: - | PersistImportedDeploymentRequestProfileConditionStack - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackProfileGcpStack = + { + condition?: + | PersistImportedDeploymentRequestPendingPreparedStackProfileConditionStack + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; + }; /** * Generic binding configuration for permissions */ -export type PersistImportedDeploymentRequestProfileGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: PersistImportedDeploymentRequestProfileGcpResource | undefined; - /** - * GCP-specific binding specification - */ - stack?: PersistImportedDeploymentRequestProfileGcpStack | undefined; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackProfileGcpBinding = + { + /** + * GCP-specific binding specification + */ + resource?: + | PersistImportedDeploymentRequestPendingPreparedStackProfileGcpResource + | undefined; + /** + * GCP-specific binding specification + */ + stack?: + | PersistImportedDeploymentRequestPendingPreparedStackProfileGcpStack + | undefined; + }; /** * Grant permissions for a specific cloud platform */ -export type PersistImportedDeploymentRequestProfileGcpGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackProfileGcpGrant = + { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; + }; /** * GCP-specific platform permission configuration */ -export type PersistImportedDeploymentRequestProfileGcp = { +export type PersistImportedDeploymentRequestPendingPreparedStackProfileGcp = { /** * Generic binding configuration for permissions */ - binding: PersistImportedDeploymentRequestProfileGcpBinding; + binding: + PersistImportedDeploymentRequestPendingPreparedStackProfileGcpBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2630,7 +2838,7 @@ export type PersistImportedDeploymentRequestProfileGcp = { /** * Grant permissions for a specific cloud platform */ - grant: PersistImportedDeploymentRequestProfileGcpGrant; + grant: PersistImportedDeploymentRequestPendingPreparedStackProfileGcpGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2640,28 +2848,35 @@ export type PersistImportedDeploymentRequestProfileGcp = { /** * Platform-specific permission configurations */ -export type PersistImportedDeploymentRequestProfilePlatforms = { - /** - * AWS permission configurations - */ - aws?: Array | null | undefined; - /** - * Azure permission configurations - */ - azure?: - | Array - | null - | undefined; - /** - * GCP permission configurations - */ - gcp?: Array | null | undefined; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackProfilePlatforms = + { + /** + * AWS permission configurations + */ + aws?: + | Array + | null + | undefined; + /** + * Azure permission configurations + */ + azure?: + | Array + | null + | undefined; + /** + * GCP permission configurations + */ + gcp?: + | Array + | null + | undefined; + }; /** * A permission set that can be applied across different cloud platforms */ -export type PersistImportedDeploymentRequestProfile = { +export type PersistImportedDeploymentRequestPendingPreparedStackProfile = { /** * Human-readable description of what this permission set allows */ @@ -2673,27 +2888,28 @@ export type PersistImportedDeploymentRequestProfile = { /** * Platform-specific permission configurations */ - platforms: PersistImportedDeploymentRequestProfilePlatforms; + platforms: + PersistImportedDeploymentRequestPendingPreparedStackProfilePlatforms; }; /** * Reference to a permission set - either by name or inline definition */ -export type PersistImportedDeploymentRequestProfileUnion = - | PersistImportedDeploymentRequestProfile +export type PersistImportedDeploymentRequestPendingPreparedStackProfileUnion = + | PersistImportedDeploymentRequestPendingPreparedStackProfile | string; /** * Combined permissions configuration that contains both profiles and management */ -export type PersistImportedDeploymentRequestPermissions = { +export type PersistImportedDeploymentRequestPendingPreparedStackPermissions = { /** * Management permissions configuration for stack management access */ management?: - | PersistImportedDeploymentRequestManagement1 - | PersistImportedDeploymentRequestManagement2 - | PersistImportedDeploymentRequestManagementEnum + | PersistImportedDeploymentRequestPendingPreparedStackManagement1 + | PersistImportedDeploymentRequestPendingPreparedStackManagement2 + | PersistImportedDeploymentRequestPendingPreparedStackManagementEnum | undefined; /** * Permission profiles that define access control for compute services @@ -2703,7 +2919,9 @@ export type PersistImportedDeploymentRequestPermissions = { */ profiles: { [k: string]: { - [k: string]: Array; + [k: string]: Array< + PersistImportedDeploymentRequestPendingPreparedStackProfile | string + >; }; }; }; @@ -2711,7 +2929,7 @@ export type PersistImportedDeploymentRequestPermissions = { /** * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. */ -export type PersistImportedDeploymentRequestConfig = { +export type PersistImportedDeploymentRequestPendingPreparedStackConfig = { /** * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. */ @@ -2726,7 +2944,7 @@ export type PersistImportedDeploymentRequestConfig = { /** * Reference to a resource by its stable id and resource type. */ -export type PersistImportedDeploymentRequestDependency = { +export type PersistImportedDeploymentRequestPendingPreparedStackDependency = { id: string; /** * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. @@ -2737,33 +2955,47 @@ export type PersistImportedDeploymentRequestDependency = { /** * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ -export const PersistImportedDeploymentRequestLifecycle = { +export const PersistImportedDeploymentRequestPendingPreparedStackLifecycle = { Frozen: "frozen", Live: "live", } as const; /** * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ -export type PersistImportedDeploymentRequestLifecycle = ClosedEnum< - typeof PersistImportedDeploymentRequestLifecycle ->; +export type PersistImportedDeploymentRequestPendingPreparedStackLifecycle = + ClosedEnum< + typeof PersistImportedDeploymentRequestPendingPreparedStackLifecycle + >; -export type PersistImportedDeploymentRequestResources = { +export type PersistImportedDeploymentRequestPendingPreparedStackResources = { /** * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. */ - config: PersistImportedDeploymentRequestConfig; + config: PersistImportedDeploymentRequestPendingPreparedStackConfig; /** * Additional dependencies for this resource beyond those defined in the resource itself. * * @remarks * The total dependencies are: resource.get_dependencies() + this list */ - dependencies: Array; + dependencies: Array< + PersistImportedDeploymentRequestPendingPreparedStackDependency + >; + /** + * Id of the boolean stack input that decides whether this resource is + * + * @remarks + * 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. + */ + enabledWhen?: string | null | undefined; /** * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ - lifecycle: PersistImportedDeploymentRequestLifecycle; + lifecycle: PersistImportedDeploymentRequestPendingPreparedStackLifecycle; /** * Enable remote bindings for this resource (BYOB use case). * @@ -2777,26 +3009,28 @@ export type PersistImportedDeploymentRequestResources = { /** * Represents the target cloud platform. */ -export const PersistImportedDeploymentRequestSupportedPlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Machines: "machines", - Local: "local", - Test: "test", -} as const; +export const PersistImportedDeploymentRequestPendingPreparedStackSupportedPlatform = + { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Machines: "machines", + Local: "local", + Test: "test", + } as const; /** * Represents the target cloud platform. */ -export type PersistImportedDeploymentRequestSupportedPlatform = ClosedEnum< - typeof PersistImportedDeploymentRequestSupportedPlatform ->; +export type PersistImportedDeploymentRequestPendingPreparedStackSupportedPlatform = + ClosedEnum< + typeof PersistImportedDeploymentRequestPendingPreparedStackSupportedPlatform + >; /** * A bag of resources, unaware of any cloud. */ -export type PersistImportedDeploymentRequestPreparedStack = { +export type PersistImportedDeploymentRequestPendingPreparedStack = { /** * Unique identifier for the stack */ @@ -2804,3437 +3038,8355 @@ export type PersistImportedDeploymentRequestPreparedStack = { /** * Input definitions required before setup or deployment can proceed. */ - inputs?: Array | undefined; + inputs?: + | Array + | undefined; /** * Combined permissions configuration that contains both profiles and management */ - permissions?: PersistImportedDeploymentRequestPermissions | undefined; + permissions?: + | PersistImportedDeploymentRequestPendingPreparedStackPermissions + | undefined; /** * Map of resource IDs to their configurations and lifecycle settings */ - resources: { [k: string]: PersistImportedDeploymentRequestResources }; + resources: { + [k: string]: PersistImportedDeploymentRequestPendingPreparedStackResources; + }; /** * Which platforms this stack supports. When None, all platforms are supported. */ supportedPlatforms?: - | Array + | Array< + PersistImportedDeploymentRequestPendingPreparedStackSupportedPlatform + > | null | undefined; }; -export type PersistImportedDeploymentRequestPreparedStackUnion = - | PersistImportedDeploymentRequestPreparedStack +export type PersistImportedDeploymentRequestPendingPreparedStackUnion = + | PersistImportedDeploymentRequestPendingPreparedStack | any; -/** - * Runtime metadata for deployment - * - * @remarks - * - * Stores deployment state that needs to persist across step calls. - */ -export type PersistImportedDeploymentRequestRuntimeMetadata = { +export const PersistImportedDeploymentRequestPreparedStackTypeStringList = { + StringList: "stringList", +} as const; +export type PersistImportedDeploymentRequestPreparedStackTypeStringList = + ClosedEnum< + typeof PersistImportedDeploymentRequestPreparedStackTypeStringList + >; + +export type PersistImportedDeploymentRequestPreparedStackDefaultStringList = { + type: PersistImportedDeploymentRequestPreparedStackTypeStringList; /** - * Hash of the environment variables snapshot that was last synced to the vault - * - * @remarks - * Used to avoid redundant sync operations during incremental deployment + * String list default. */ - lastSyncedEnvVarsHash?: string | null | undefined; + value: Array; +}; + +export const PersistImportedDeploymentRequestPreparedStackTypeBoolean = { + Boolean: "boolean", +} as const; +export type PersistImportedDeploymentRequestPreparedStackTypeBoolean = + ClosedEnum; + +export type PersistImportedDeploymentRequestPreparedStackDefaultBoolean = { + type: PersistImportedDeploymentRequestPreparedStackTypeBoolean; /** - * Exact vault keys owned by the deployment secret synchronizer. This - * - * @remarks - * inventory lets a later snapshot delete removed keys without listing or - * touching unrelated values in the same vault. + * Boolean default. */ - lastSyncedSecretNames?: Array | undefined; - preparedStack?: - | PersistImportedDeploymentRequestPreparedStack - | any - | null - | undefined; + value: boolean; +}; + +export const PersistImportedDeploymentRequestPreparedStackTypeNumber = { + Number: "number", +} as const; +export type PersistImportedDeploymentRequestPreparedStackTypeNumber = + ClosedEnum; + +export type PersistImportedDeploymentRequestPreparedStackDefaultNumber = { + type: PersistImportedDeploymentRequestPreparedStackTypeNumber; /** - * Whether cross-account registry access has been successfully granted. - * - * @remarks - * Set to true after the manager successfully sets the ECR/GAR repo policy - * for this deployment's target account. Prevents redundant API calls on - * every reconcile tick. + * Number default. */ - registryAccessGranted?: boolean | undefined; + value: string; +}; + +export const PersistImportedDeploymentRequestPreparedStackTypeString = { + String: "string", +} as const; +export type PersistImportedDeploymentRequestPreparedStackTypeString = + ClosedEnum; + +export type PersistImportedDeploymentRequestPreparedStackDefaultString = { + type: PersistImportedDeploymentRequestPreparedStackTypeString; + /** + * String default. + */ + value: string; }; +export type PersistImportedDeploymentRequestPreparedStackDefaultUnion = + | PersistImportedDeploymentRequestPreparedStackDefaultString + | PersistImportedDeploymentRequestPreparedStackDefaultNumber + | PersistImportedDeploymentRequestPreparedStackDefaultBoolean + | PersistImportedDeploymentRequestPreparedStackDefaultStringList + | any; + /** - * Deployment status in the deployment lifecycle. - * - * @remarks - * - * For observe-only deployments with no release or stack state, `Running` - * means the Operator is attached. Connectivity comes from `lastHeartbeatAt`; - * resource health comes from inventory and resource heartbeat data. + * Environment variable handling for a stack input mapping. */ -export const PersistImportedDeploymentRequestStatus = { - Pending: "pending", - PreflightsFailed: "preflights-failed", - InitialSetup: "initial-setup", - InitialSetupFailed: "initial-setup-failed", - Provisioning: "provisioning", - WaitingForMachines: "waiting-for-machines", - ProvisioningFailed: "provisioning-failed", - Running: "running", - RefreshFailed: "refresh-failed", - UpdatePending: "update-pending", - Updating: "updating", - UpdateFailed: "update-failed", - DeletePending: "delete-pending", - Deleting: "deleting", - DeleteFailed: "delete-failed", - TeardownRequired: "teardown-required", - TeardownFailed: "teardown-failed", - Deleted: "deleted", - Error: "error", +export const PersistImportedDeploymentRequestPreparedStackTypeEnvEnum = { + Plain: "plain", + Secret: "secret", } as const; /** - * Deployment status in the deployment lifecycle. - * - * @remarks - * - * For observe-only deployments with no release or stack state, `Running` - * means the Operator is attached. Connectivity comes from `lastHeartbeatAt`; - * resource health comes from inventory and resource heartbeat data. + * Environment variable handling for a stack input mapping. */ -export type PersistImportedDeploymentRequestStatus = ClosedEnum< - typeof PersistImportedDeploymentRequestStatus ->; +export type PersistImportedDeploymentRequestPreparedStackTypeEnvEnum = + ClosedEnum; -export type PersistImportedDeploymentRequestManagementConfigKubernetes = { - platform: "kubernetes"; -}; +export type PersistImportedDeploymentRequestPreparedStackTypeUnion = + | PersistImportedDeploymentRequestPreparedStackTypeEnvEnum + | any; /** - * Azure management configuration extracted from stack settings + * How a resolved stack input is injected into runtime environment variables. */ -export type PersistImportedDeploymentRequestManagementConfigAzure = { - /** - * The managing Azure Tenant ID for cross-tenant access - */ - managingTenantId: string; +export type PersistImportedDeploymentRequestPreparedStackEnv = { /** - * OIDC issuer URL trusted by the target-side managed identity. + * Environment variable name. */ - oidcIssuer: string; + name: string; /** - * OIDC subject claim trusted by the target-side managed identity. + * Target resource IDs or patterns. None means every env-capable resource. */ - oidcSubject: string; - platform: "azure"; + targetResources?: Array | null | undefined; + type?: + | PersistImportedDeploymentRequestPreparedStackTypeEnvEnum + | any + | null + | undefined; }; /** - * GCP management configuration extracted from stack settings + * Primitive stack input kind. */ -export type PersistImportedDeploymentRequestManagementConfigGcp = { - /** - * Service account email for management roles - */ - serviceAccountEmail: string; - platform: "gcp"; -}; +export const PersistImportedDeploymentRequestPreparedStackKind = { + String: "string", + Secret: "secret", + Number: "number", + Integer: "integer", + Boolean: "boolean", + Enum: "enum", + StringList: "stringList", +} as const; +/** + * Primitive stack input kind. + */ +export type PersistImportedDeploymentRequestPreparedStackKind = ClosedEnum< + typeof PersistImportedDeploymentRequestPreparedStackKind +>; /** - * AWS management configuration extracted from stack settings + * Represents the target cloud platform. */ -export type PersistImportedDeploymentRequestManagementConfigAws = { - /** - * The managing AWS IAM role ARN that can assume cross-account roles - */ - managingRoleArn: string; - platform: "aws"; -}; +export const PersistImportedDeploymentRequestPreparedStackPlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Machines: "machines", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type PersistImportedDeploymentRequestPreparedStackPlatform = ClosedEnum< + typeof PersistImportedDeploymentRequestPreparedStackPlatform +>; /** - * Management configuration for different cloud platforms. - * - * @remarks - * - * Platform-derived configuration for cross-account/cross-tenant access. - * This is NOT user-specified - it's derived from the Manager's ServiceAccount. + * Who can provide a stack input value. */ -export type PersistImportedDeploymentRequestManagementConfigUnion = - | PersistImportedDeploymentRequestManagementConfigAws - | PersistImportedDeploymentRequestManagementConfigGcp - | PersistImportedDeploymentRequestManagementConfigAzure - | PersistImportedDeploymentRequestManagementConfigKubernetes; +export const PersistImportedDeploymentRequestPreparedStackProvidedBy = { + Developer: "developer", + Deployer: "deployer", +} as const; +/** + * Who can provide a stack input value. + */ +export type PersistImportedDeploymentRequestPreparedStackProvidedBy = + ClosedEnum; -export type PersistImportedDeploymentRequest = { - mode: ModePersist; +/** + * Portable stack input validation constraints. + */ +export type PersistImportedDeploymentRequestPreparedStackValidation = { /** - * Deployment name. Must be unique within the deployment group. + * Semantic format hint such as url. */ - name: string; + format?: string | null | undefined; /** - * Unique identifier for the deployment group. + * Maximum number. */ - deploymentGroupId: string; - managerId: string; + max?: string | null | undefined; /** - * 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. + * Maximum string-list items. */ - publicSubdomain?: string | undefined; + maxItems?: number | null | undefined; /** - * Represents the target cloud platform. + * Maximum string length. */ - platform: PersistImportedDeploymentRequestPlatformEnum; + maxLength?: number | null | undefined; /** - * Base cloud platform for cloud-backed Kubernetes imports. + * Minimum number. */ - basePlatform?: KubernetesBasePlatform | undefined; + min?: string | null | undefined; /** - * User-customizable deployment settings specified at deploy time. - * - * @remarks - * - * These settings are provided by the customer via CloudFormation parameters, - * Terraform attributes, CLI flags, or Helm values. They customize how the - * deployment runs and what capabilities are enabled. - * - * **Key distinction**: StackSettings is user-customizable, while ManagementConfig - * is platform-derived (from the Manager's ServiceAccount). + * Minimum string-list items. */ - stackSettings: PersistImportedDeploymentRequestStackSettings; - stackState?: any | null | undefined; + minItems?: number | null | undefined; /** - * Platform-specific environment information + * Minimum string length. */ - environmentInfo?: - | PersistImportedDeploymentRequestEnvironmentInfoGcp - | PersistImportedDeploymentRequestEnvironmentInfoAzure - | PersistImportedDeploymentRequestEnvironmentInfoLocal - | PersistImportedDeploymentRequestEnvironmentInfoAws - | PersistImportedDeploymentRequestEnvironmentInfoTest + minLength?: number | null | undefined; + /** + * Portable whole-value regex pattern. + */ + pattern?: string | null | undefined; + /** + * Allowed string enum values. + */ + values?: Array | null | undefined; +}; + +export type PersistImportedDeploymentRequestPreparedStackValidationUnion = + | PersistImportedDeploymentRequestPreparedStackValidation + | any; + +/** + * Stack input definition serialized into a release stack. + */ +export type PersistImportedDeploymentRequestPreparedStackInput = { + default?: + | PersistImportedDeploymentRequestPreparedStackDefaultString + | PersistImportedDeploymentRequestPreparedStackDefaultNumber + | PersistImportedDeploymentRequestPreparedStackDefaultBoolean + | PersistImportedDeploymentRequestPreparedStackDefaultStringList | any | null | undefined; /** - * Runtime metadata for deployment - * - * @remarks - * - * Stores deployment state that needs to persist across step calls. + * Human-facing helper text. */ - runtimeMetadata: PersistImportedDeploymentRequestRuntimeMetadata; + description: string; /** - * DeploymentState protocol version owned by the runtime/manager + * Runtime env-var mappings for v1 input resolution. */ - deploymentProtocolVersion: number; + env?: Array | undefined; /** - * Deployment status in the deployment lifecycle. - * - * @remarks - * - * For observe-only deployments with no release or stack state, `Running` - * means the Operator is attached. Connectivity comes from `lastHeartbeatAt`; - * resource health comes from inventory and resource heartbeat data. + * Stable input ID used by CLI/API calls. */ - status?: PersistImportedDeploymentRequestStatus | undefined; + id: string; /** - * Unique identifier for the release. + * Primitive stack input kind. */ - currentReleaseId?: string | undefined; + kind: PersistImportedDeploymentRequestPreparedStackKind; /** - * Unique identifier for the release. + * Human-facing field label. */ - desiredReleaseId?: string | undefined; - importSource?: ImportSourceKind | undefined; - setupMetadata?: { [k: string]: any | null } | undefined; + label: string; /** - * Stable target key for the setup contract, e.g. aws/us-east-1 + * Example placeholder shown in UI. */ - setupTarget: string; + placeholder?: string | null | undefined; /** - * Deterministic setup contract fingerprint for one setup target + * Platforms where this input applies. */ - setupFingerprint: string; + platforms?: + | Array + | null + | undefined; /** - * Setup fingerprint algorithm version + * Who can provide this value. */ - setupFingerprintVersion: number; - deploymentToken?: string | undefined; + providedBy: Array; /** - * Management configuration for different cloud platforms. - * - * @remarks - * - * Platform-derived configuration for cross-account/cross-tenant access. - * This is NOT user-specified - it's derived from the Manager's ServiceAccount. + * Whether a resolved value is required before deployment can proceed. */ - managementConfig?: - | PersistImportedDeploymentRequestManagementConfigAws - | PersistImportedDeploymentRequestManagementConfigGcp - | PersistImportedDeploymentRequestManagementConfigAzure - | PersistImportedDeploymentRequestManagementConfigKubernetes + required: boolean; + validation?: + | PersistImportedDeploymentRequestPreparedStackValidation + | any + | null | undefined; - inputValues?: { [k: string]: StackInputValueRequest } | undefined; }; -/** @internal */ -export const ModePersist$outboundSchema: z.ZodEnum = z.enum( - ModePersist, -); - -/** @internal */ -export const PersistImportedDeploymentRequestPlatformEnum$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestPlatformEnum, - ); +export const PersistImportedDeploymentRequestPreparedStackManagementEnum = { + Auto: "auto", +} as const; +export type PersistImportedDeploymentRequestPreparedStackManagementEnum = + ClosedEnum< + typeof PersistImportedDeploymentRequestPreparedStackManagementEnum + >; -/** @internal */ -export type PersistImportedDeploymentRequestPoolsAutoscale$Outbound = { - machine?: string | null | undefined; - max: number; - min: number; - mode: "autoscale"; +/** + * AWS-specific binding specification + */ +export type PersistImportedDeploymentRequestPreparedStackOverrideAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type PersistImportedDeploymentRequestPreparedStackOverrideAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * Generic binding configuration for permissions + */ +export type PersistImportedDeploymentRequestPreparedStackOverrideAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: + | PersistImportedDeploymentRequestPreparedStackOverrideAwResource + | undefined; + /** + * AWS-specific binding specification + */ + stack?: + | PersistImportedDeploymentRequestPreparedStackOverrideAwStack + | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const PersistImportedDeploymentRequestPreparedStackOverrideEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type PersistImportedDeploymentRequestPreparedStackOverrideEffect = + ClosedEnum< + typeof PersistImportedDeploymentRequestPreparedStackOverrideEffect + >; + +/** + * Grant permissions for a specific cloud platform + */ +export type PersistImportedDeploymentRequestPreparedStackOverrideAwGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type PersistImportedDeploymentRequestPreparedStackOverrideAw = { + /** + * Generic binding configuration for permissions + */ + binding: PersistImportedDeploymentRequestPreparedStackOverrideAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: + | PersistImportedDeploymentRequestPreparedStackOverrideEffect + | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: PersistImportedDeploymentRequestPreparedStackOverrideAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Azure-specific binding specification + */ +export type PersistImportedDeploymentRequestPreparedStackOverrideAzureResource = + { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; + }; + +/** + * Azure-specific binding specification + */ +export type PersistImportedDeploymentRequestPreparedStackOverrideAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type PersistImportedDeploymentRequestPreparedStackOverrideAzureBinding = + { + /** + * Azure-specific binding specification + */ + resource?: + | PersistImportedDeploymentRequestPreparedStackOverrideAzureResource + | undefined; + /** + * Azure-specific binding specification + */ + stack?: + | PersistImportedDeploymentRequestPreparedStackOverrideAzureStack + | undefined; + }; + +/** + * Grant permissions for a specific cloud platform + */ +export type PersistImportedDeploymentRequestPreparedStackOverrideAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * Azure-specific platform permission configuration + */ +export type PersistImportedDeploymentRequestPreparedStackOverrideAzure = { + /** + * Generic binding configuration for permissions + */ + binding: PersistImportedDeploymentRequestPreparedStackOverrideAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: PersistImportedDeploymentRequestPreparedStackOverrideAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * GCP IAM condition + */ +export type PersistImportedDeploymentRequestPreparedStackOverrideConditionResource = + { + expression: string; + title: string; + }; + +export type PersistImportedDeploymentRequestPreparedStackOverrideResourceConditionUnion = + | PersistImportedDeploymentRequestPreparedStackOverrideConditionResource + | any; + +/** + * GCP-specific binding specification + */ +export type PersistImportedDeploymentRequestPreparedStackOverrideGcpResource = { + condition?: + | PersistImportedDeploymentRequestPreparedStackOverrideConditionResource + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * GCP IAM condition + */ +export type PersistImportedDeploymentRequestPreparedStackOverrideConditionStack = + { + expression: string; + title: string; + }; + +export type PersistImportedDeploymentRequestPreparedStackOverrideStackConditionUnion = + | PersistImportedDeploymentRequestPreparedStackOverrideConditionStack + | any; + +/** + * GCP-specific binding specification + */ +export type PersistImportedDeploymentRequestPreparedStackOverrideGcpStack = { + condition?: + | PersistImportedDeploymentRequestPreparedStackOverrideConditionStack + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type PersistImportedDeploymentRequestPreparedStackOverrideGcpBinding = { + /** + * GCP-specific binding specification + */ + resource?: + | PersistImportedDeploymentRequestPreparedStackOverrideGcpResource + | undefined; + /** + * GCP-specific binding specification + */ + stack?: + | PersistImportedDeploymentRequestPreparedStackOverrideGcpStack + | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type PersistImportedDeploymentRequestPreparedStackOverrideGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * GCP-specific platform permission configuration + */ +export type PersistImportedDeploymentRequestPreparedStackOverrideGcp = { + /** + * Generic binding configuration for permissions + */ + binding: PersistImportedDeploymentRequestPreparedStackOverrideGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: PersistImportedDeploymentRequestPreparedStackOverrideGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Platform-specific permission configurations + */ +export type PersistImportedDeploymentRequestPreparedStackOverridePlatforms = { + /** + * AWS permission configurations + */ + aws?: + | Array + | null + | undefined; + /** + * Azure permission configurations + */ + azure?: + | Array + | null + | undefined; + /** + * GCP permission configurations + */ + gcp?: + | Array + | null + | undefined; +}; + +/** + * A permission set that can be applied across different cloud platforms + */ +export type PersistImportedDeploymentRequestPreparedStackOverride = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: PersistImportedDeploymentRequestPreparedStackOverridePlatforms; +}; + +/** + * Reference to a permission set - either by name or inline definition + */ +export type PersistImportedDeploymentRequestPreparedStackOverrideUnion = + | PersistImportedDeploymentRequestPreparedStackOverride + | string; + +export type PersistImportedDeploymentRequestPreparedStackManagement2 = { + /** + * Permission profile that maps resources to permission sets + * + * @remarks + * Key can be "*" for all resources or resource name for specific resource + */ + override: { + [k: string]: Array< + PersistImportedDeploymentRequestPreparedStackOverride | string + >; + }; +}; + +/** + * AWS-specific binding specification + */ +export type PersistImportedDeploymentRequestPreparedStackExtendAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type PersistImportedDeploymentRequestPreparedStackExtendAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * Generic binding configuration for permissions + */ +export type PersistImportedDeploymentRequestPreparedStackExtendAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: + | PersistImportedDeploymentRequestPreparedStackExtendAwResource + | undefined; + /** + * AWS-specific binding specification + */ + stack?: + | PersistImportedDeploymentRequestPreparedStackExtendAwStack + | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const PersistImportedDeploymentRequestPreparedStackExtendEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type PersistImportedDeploymentRequestPreparedStackExtendEffect = + ClosedEnum; + +/** + * Grant permissions for a specific cloud platform + */ +export type PersistImportedDeploymentRequestPreparedStackExtendAwGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type PersistImportedDeploymentRequestPreparedStackExtendAw = { + /** + * Generic binding configuration for permissions + */ + binding: PersistImportedDeploymentRequestPreparedStackExtendAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: + | PersistImportedDeploymentRequestPreparedStackExtendEffect + | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: PersistImportedDeploymentRequestPreparedStackExtendAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Azure-specific binding specification + */ +export type PersistImportedDeploymentRequestPreparedStackExtendAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Azure-specific binding specification + */ +export type PersistImportedDeploymentRequestPreparedStackExtendAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type PersistImportedDeploymentRequestPreparedStackExtendAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: + | PersistImportedDeploymentRequestPreparedStackExtendAzureResource + | undefined; + /** + * Azure-specific binding specification + */ + stack?: + | PersistImportedDeploymentRequestPreparedStackExtendAzureStack + | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type PersistImportedDeploymentRequestPreparedStackExtendAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * Azure-specific platform permission configuration + */ +export type PersistImportedDeploymentRequestPreparedStackExtendAzure = { + /** + * Generic binding configuration for permissions + */ + binding: PersistImportedDeploymentRequestPreparedStackExtendAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: PersistImportedDeploymentRequestPreparedStackExtendAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * GCP IAM condition + */ +export type PersistImportedDeploymentRequestPreparedStackExtendConditionResource = + { + expression: string; + title: string; + }; + +export type PersistImportedDeploymentRequestPreparedStackExtendResourceConditionUnion = + | PersistImportedDeploymentRequestPreparedStackExtendConditionResource + | any; + +/** + * GCP-specific binding specification + */ +export type PersistImportedDeploymentRequestPreparedStackExtendGcpResource = { + condition?: + | PersistImportedDeploymentRequestPreparedStackExtendConditionResource + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * GCP IAM condition + */ +export type PersistImportedDeploymentRequestPreparedStackExtendConditionStack = + { + expression: string; + title: string; + }; + +export type PersistImportedDeploymentRequestPreparedStackExtendStackConditionUnion = + | PersistImportedDeploymentRequestPreparedStackExtendConditionStack + | any; + +/** + * GCP-specific binding specification + */ +export type PersistImportedDeploymentRequestPreparedStackExtendGcpStack = { + condition?: + | PersistImportedDeploymentRequestPreparedStackExtendConditionStack + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type PersistImportedDeploymentRequestPreparedStackExtendGcpBinding = { + /** + * GCP-specific binding specification + */ + resource?: + | PersistImportedDeploymentRequestPreparedStackExtendGcpResource + | undefined; + /** + * GCP-specific binding specification + */ + stack?: + | PersistImportedDeploymentRequestPreparedStackExtendGcpStack + | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type PersistImportedDeploymentRequestPreparedStackExtendGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * GCP-specific platform permission configuration + */ +export type PersistImportedDeploymentRequestPreparedStackExtendGcp = { + /** + * Generic binding configuration for permissions + */ + binding: PersistImportedDeploymentRequestPreparedStackExtendGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: PersistImportedDeploymentRequestPreparedStackExtendGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Platform-specific permission configurations + */ +export type PersistImportedDeploymentRequestPreparedStackExtendPlatforms = { + /** + * AWS permission configurations + */ + aws?: + | Array + | null + | undefined; + /** + * Azure permission configurations + */ + azure?: + | Array + | null + | undefined; + /** + * GCP permission configurations + */ + gcp?: + | Array + | null + | undefined; +}; + +/** + * A permission set that can be applied across different cloud platforms + */ +export type PersistImportedDeploymentRequestPreparedStackExtend = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: PersistImportedDeploymentRequestPreparedStackExtendPlatforms; +}; + +/** + * Reference to a permission set - either by name or inline definition + */ +export type PersistImportedDeploymentRequestPreparedStackExtendUnion = + | PersistImportedDeploymentRequestPreparedStackExtend + | string; + +export type PersistImportedDeploymentRequestPreparedStackManagement1 = { + /** + * Permission profile that maps resources to permission sets + * + * @remarks + * Key can be "*" for all resources or resource name for specific resource + */ + extend: { + [k: string]: Array< + PersistImportedDeploymentRequestPreparedStackExtend | string + >; + }; +}; + +/** + * Management permissions configuration for stack management access + */ +export type PersistImportedDeploymentRequestPreparedStackManagementUnion = + | PersistImportedDeploymentRequestPreparedStackManagement1 + | PersistImportedDeploymentRequestPreparedStackManagement2 + | PersistImportedDeploymentRequestPreparedStackManagementEnum; + +/** + * AWS-specific binding specification + */ +export type PersistImportedDeploymentRequestPreparedStackProfileAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type PersistImportedDeploymentRequestPreparedStackProfileAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * Generic binding configuration for permissions + */ +export type PersistImportedDeploymentRequestPreparedStackProfileAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: + | PersistImportedDeploymentRequestPreparedStackProfileAwResource + | undefined; + /** + * AWS-specific binding specification + */ + stack?: + | PersistImportedDeploymentRequestPreparedStackProfileAwStack + | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const PersistImportedDeploymentRequestPreparedStackProfileEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type PersistImportedDeploymentRequestPreparedStackProfileEffect = + ClosedEnum; + +/** + * Grant permissions for a specific cloud platform + */ +export type PersistImportedDeploymentRequestPreparedStackProfileAwGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type PersistImportedDeploymentRequestPreparedStackProfileAw = { + /** + * Generic binding configuration for permissions + */ + binding: PersistImportedDeploymentRequestPreparedStackProfileAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: + | PersistImportedDeploymentRequestPreparedStackProfileEffect + | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: PersistImportedDeploymentRequestPreparedStackProfileAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Azure-specific binding specification + */ +export type PersistImportedDeploymentRequestPreparedStackProfileAzureResource = + { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; + }; + +/** + * Azure-specific binding specification + */ +export type PersistImportedDeploymentRequestPreparedStackProfileAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type PersistImportedDeploymentRequestPreparedStackProfileAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: + | PersistImportedDeploymentRequestPreparedStackProfileAzureResource + | undefined; + /** + * Azure-specific binding specification + */ + stack?: + | PersistImportedDeploymentRequestPreparedStackProfileAzureStack + | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type PersistImportedDeploymentRequestPreparedStackProfileAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * Azure-specific platform permission configuration + */ +export type PersistImportedDeploymentRequestPreparedStackProfileAzure = { + /** + * Generic binding configuration for permissions + */ + binding: PersistImportedDeploymentRequestPreparedStackProfileAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: PersistImportedDeploymentRequestPreparedStackProfileAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * GCP IAM condition + */ +export type PersistImportedDeploymentRequestPreparedStackProfileConditionResource = + { + expression: string; + title: string; + }; + +export type PersistImportedDeploymentRequestPreparedStackProfileResourceConditionUnion = + | PersistImportedDeploymentRequestPreparedStackProfileConditionResource + | any; + +/** + * GCP-specific binding specification + */ +export type PersistImportedDeploymentRequestPreparedStackProfileGcpResource = { + condition?: + | PersistImportedDeploymentRequestPreparedStackProfileConditionResource + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * GCP IAM condition + */ +export type PersistImportedDeploymentRequestPreparedStackProfileConditionStack = + { + expression: string; + title: string; + }; + +export type PersistImportedDeploymentRequestPreparedStackProfileStackConditionUnion = + | PersistImportedDeploymentRequestPreparedStackProfileConditionStack + | any; + +/** + * GCP-specific binding specification + */ +export type PersistImportedDeploymentRequestPreparedStackProfileGcpStack = { + condition?: + | PersistImportedDeploymentRequestPreparedStackProfileConditionStack + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type PersistImportedDeploymentRequestPreparedStackProfileGcpBinding = { + /** + * GCP-specific binding specification + */ + resource?: + | PersistImportedDeploymentRequestPreparedStackProfileGcpResource + | undefined; + /** + * GCP-specific binding specification + */ + stack?: + | PersistImportedDeploymentRequestPreparedStackProfileGcpStack + | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type PersistImportedDeploymentRequestPreparedStackProfileGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * GCP-specific platform permission configuration + */ +export type PersistImportedDeploymentRequestPreparedStackProfileGcp = { + /** + * Generic binding configuration for permissions + */ + binding: PersistImportedDeploymentRequestPreparedStackProfileGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: PersistImportedDeploymentRequestPreparedStackProfileGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Platform-specific permission configurations + */ +export type PersistImportedDeploymentRequestPreparedStackProfilePlatforms = { + /** + * AWS permission configurations + */ + aws?: + | Array + | null + | undefined; + /** + * Azure permission configurations + */ + azure?: + | Array + | null + | undefined; + /** + * GCP permission configurations + */ + gcp?: + | Array + | null + | undefined; +}; + +/** + * A permission set that can be applied across different cloud platforms + */ +export type PersistImportedDeploymentRequestPreparedStackProfile = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: PersistImportedDeploymentRequestPreparedStackProfilePlatforms; +}; + +/** + * Reference to a permission set - either by name or inline definition + */ +export type PersistImportedDeploymentRequestPreparedStackProfileUnion = + | PersistImportedDeploymentRequestPreparedStackProfile + | string; + +/** + * Combined permissions configuration that contains both profiles and management + */ +export type PersistImportedDeploymentRequestPreparedStackPermissions = { + /** + * Management permissions configuration for stack management access + */ + management?: + | PersistImportedDeploymentRequestPreparedStackManagement1 + | PersistImportedDeploymentRequestPreparedStackManagement2 + | PersistImportedDeploymentRequestPreparedStackManagementEnum + | undefined; + /** + * Permission profiles that define access control for compute services + * + * @remarks + * Key is the profile name, value is the permission configuration + */ + profiles: { + [k: string]: { + [k: string]: Array< + PersistImportedDeploymentRequestPreparedStackProfile | string + >; + }; + }; +}; + +/** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ +export type PersistImportedDeploymentRequestPreparedStackConfig = { + /** + * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. + */ + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; +}; + +/** + * Reference to a resource by its stable id and resource type. + */ +export type PersistImportedDeploymentRequestPreparedStackDependency = { + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; +}; + +/** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ +export const PersistImportedDeploymentRequestPreparedStackLifecycle = { + Frozen: "frozen", + Live: "live", +} as const; +/** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ +export type PersistImportedDeploymentRequestPreparedStackLifecycle = ClosedEnum< + typeof PersistImportedDeploymentRequestPreparedStackLifecycle +>; + +export type PersistImportedDeploymentRequestPreparedStackResources = { + /** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ + config: PersistImportedDeploymentRequestPreparedStackConfig; + /** + * Additional dependencies for this resource beyond those defined in the resource itself. + * + * @remarks + * The total dependencies are: resource.get_dependencies() + this list + */ + dependencies: Array; + /** + * Id of the boolean stack input that decides whether this resource is + * + * @remarks + * 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. + */ + enabledWhen?: string | null | undefined; + /** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ + lifecycle: PersistImportedDeploymentRequestPreparedStackLifecycle; + /** + * Enable remote bindings for this resource (BYOB use case). + * + * @remarks + * When true, binding params are synced to StackState's `remote_binding_params`. + * Default: false (prevents sensitive data in synced state). + */ + remoteAccess?: boolean | undefined; +}; + +/** + * Represents the target cloud platform. + */ +export const PersistImportedDeploymentRequestPreparedStackSupportedPlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Machines: "machines", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type PersistImportedDeploymentRequestPreparedStackSupportedPlatform = + ClosedEnum< + typeof PersistImportedDeploymentRequestPreparedStackSupportedPlatform + >; + +/** + * A bag of resources, unaware of any cloud. + */ +export type PersistImportedDeploymentRequestPreparedStack = { + /** + * Unique identifier for the stack + */ + id: string; + /** + * Input definitions required before setup or deployment can proceed. + */ + inputs?: + | Array + | undefined; + /** + * Combined permissions configuration that contains both profiles and management + */ + permissions?: + | PersistImportedDeploymentRequestPreparedStackPermissions + | undefined; + /** + * Map of resource IDs to their configurations and lifecycle settings + */ + resources: { + [k: string]: PersistImportedDeploymentRequestPreparedStackResources; + }; + /** + * Which platforms this stack supports. When None, all platforms are supported. + */ + supportedPlatforms?: + | Array + | null + | undefined; +}; + +export type PersistImportedDeploymentRequestPreparedStackUnion = + | PersistImportedDeploymentRequestPreparedStack + | any; + +/** + * One-shot authority for a setup re-import to replace setup-owned resources. + */ +export type PersistImportedDeploymentRequestSetupUpdateAuthorization = { + /** + * Frozen resource projection from the last successful deployment. + */ + baselineFrozenDigest: string; + /** + * Unique revision used by persistence layers for compare-and-swap updates. + */ + nonce: string; + /** + * Release whose stack was prepared by setup. + */ + releaseId: string; + /** + * Exact setup artifact revision that authored this authority. + */ + setupFingerprint: string; + /** + * Setup fingerprint contract version. + */ + setupFingerprintVersion: number; + /** + * Stable setup target recorded on the imported deployment. + */ + setupTarget: string; + /** + * Frozen resource projection prepared by the setup re-import. + */ + targetFrozenDigest: string; +}; + +export type PersistImportedDeploymentRequestSetupUpdateAuthorizationUnion = + | PersistImportedDeploymentRequestSetupUpdateAuthorization + | any; + +/** + * Runtime metadata for deployment + * + * @remarks + * + * Stores deployment state that needs to persist across step calls. + */ +export type PersistImportedDeploymentRequestRuntimeMetadata = { + /** + * Actor that owns structural work during the initial setup phase. + */ + initialSetupAuthority?: + | PersistImportedDeploymentRequestInitialSetupAuthority + | undefined; + /** + * Hash of the environment variables snapshot that was last synced to the vault + * + * @remarks + * Used to avoid redundant sync operations during incremental deployment + */ + lastSyncedEnvVarsHash?: string | null | undefined; + /** + * Exact vault keys owned by the deployment secret synchronizer. This + * + * @remarks + * inventory lets a later snapshot delete removed keys without listing or + * touching unrelated values in the same vault. + */ + lastSyncedSecretNames?: Array | undefined; + pendingPreparedStack?: + | PersistImportedDeploymentRequestPendingPreparedStack + | any + | null + | undefined; + /** + * Canonical resolved answers for inputs that gate Frozen resources, + * + * @remarks + * keyed by input id, recorded when the deployment is created or its + * setup import registers. + * + * A frozen gate's answer is fixed for the deployment's lifetime: the + * update path refuses input values that conflict with these, and a Live + * resource sharing such an input resolves the persisted answer forever. + */ + persistedGateAnswers?: { [k: string]: boolean } | undefined; + preparedStack?: + | PersistImportedDeploymentRequestPreparedStack + | any + | null + | undefined; + /** + * Whether cross-account registry access has been successfully granted. + * + * @remarks + * Set to true after the manager successfully sets the ECR/GAR repo policy + * for this deployment's target account. Prevents redundant API calls on + * every reconcile tick. + */ + registryAccessGranted?: boolean | undefined; + setupUpdateAuthorization?: + | PersistImportedDeploymentRequestSetupUpdateAuthorization + | any + | null + | undefined; +}; + +/** + * Deployment status in the deployment lifecycle. + * + * @remarks + * + * For observe-only deployments with no release or stack state, `Running` + * means the Operator is attached. Connectivity comes from `lastHeartbeatAt`; + * resource health comes from inventory and resource heartbeat data. + */ +export const PersistImportedDeploymentRequestStatus = { + Pending: "pending", + PreflightsFailed: "preflights-failed", + InitialSetup: "initial-setup", + InitialSetupFailed: "initial-setup-failed", + Provisioning: "provisioning", + WaitingForMachines: "waiting-for-machines", + ProvisioningFailed: "provisioning-failed", + Running: "running", + RefreshFailed: "refresh-failed", + UpdatePending: "update-pending", + Updating: "updating", + UpdateFailed: "update-failed", + DeletePending: "delete-pending", + Deleting: "deleting", + DeleteFailed: "delete-failed", + TeardownRequired: "teardown-required", + TeardownFailed: "teardown-failed", + Deleted: "deleted", + Error: "error", +} as const; +/** + * Deployment status in the deployment lifecycle. + * + * @remarks + * + * For observe-only deployments with no release or stack state, `Running` + * means the Operator is attached. Connectivity comes from `lastHeartbeatAt`; + * resource health comes from inventory and resource heartbeat data. + */ +export type PersistImportedDeploymentRequestStatus = ClosedEnum< + typeof PersistImportedDeploymentRequestStatus +>; + +export type PersistImportedDeploymentRequestManagementConfigKubernetes = { + platform: "kubernetes"; +}; + +/** + * Azure management configuration extracted from stack settings + */ +export type PersistImportedDeploymentRequestManagementConfigAzure = { + /** + * The managing Azure Tenant ID for cross-tenant access + */ + managingTenantId: string; + /** + * OIDC issuer URL trusted by the target-side managed identity. + */ + oidcIssuer: string; + /** + * OIDC subject claim trusted by the target-side managed identity. + */ + oidcSubject: string; + platform: "azure"; +}; + +/** + * GCP management configuration extracted from stack settings + */ +export type PersistImportedDeploymentRequestManagementConfigGcp = { + /** + * Service account email for management roles + */ + serviceAccountEmail: string; + platform: "gcp"; +}; + +/** + * AWS management configuration extracted from stack settings + */ +export type PersistImportedDeploymentRequestManagementConfigAws = { + /** + * The managing AWS IAM role ARN that can assume cross-account roles + */ + managingRoleArn: string; + platform: "aws"; +}; + +/** + * Management configuration for different cloud platforms. + * + * @remarks + * + * Platform-derived configuration for cross-account/cross-tenant access. + * This is NOT user-specified - it's derived from the Manager's ServiceAccount. + */ +export type PersistImportedDeploymentRequestManagementConfigUnion = + | PersistImportedDeploymentRequestManagementConfigAws + | PersistImportedDeploymentRequestManagementConfigGcp + | PersistImportedDeploymentRequestManagementConfigAzure + | PersistImportedDeploymentRequestManagementConfigKubernetes; + +export type PersistImportedDeploymentRequest = { + mode: ModePersist; + /** + * Deployment name. Must be unique within the deployment group. + */ + name: string; + /** + * Unique identifier for the deployment group. + */ + deploymentGroupId: string; + managerId: string; + /** + * 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. + */ + publicSubdomain?: string | undefined; + /** + * Represents the target cloud platform. + */ + platform: PersistImportedDeploymentRequestPlatformEnum; + /** + * Base cloud platform for cloud-backed Kubernetes imports. + */ + basePlatform?: KubernetesBasePlatform | undefined; + /** + * User-customizable deployment settings specified at deploy time. + * + * @remarks + * + * These settings are provided by the customer via CloudFormation parameters, + * Terraform attributes, CLI flags, or Helm values. They customize how the + * deployment runs and what capabilities are enabled. + * + * **Key distinction**: StackSettings is user-customizable, while ManagementConfig + * is platform-derived (from the Manager's ServiceAccount). + */ + stackSettings: PersistImportedDeploymentRequestStackSettings; + stackState?: any | null | undefined; + /** + * Platform-specific environment information + */ + environmentInfo?: + | PersistImportedDeploymentRequestEnvironmentInfoGcp + | PersistImportedDeploymentRequestEnvironmentInfoAzure + | PersistImportedDeploymentRequestEnvironmentInfoLocal + | PersistImportedDeploymentRequestEnvironmentInfoAws + | PersistImportedDeploymentRequestEnvironmentInfoTest + | any + | null + | undefined; + /** + * Runtime metadata for deployment + * + * @remarks + * + * Stores deployment state that needs to persist across step calls. + */ + runtimeMetadata: PersistImportedDeploymentRequestRuntimeMetadata; + scheduleReconciliation?: boolean | undefined; + /** + * DeploymentState protocol version owned by the runtime/manager + */ + deploymentProtocolVersion: number; + /** + * Deployment status in the deployment lifecycle. + * + * @remarks + * + * For observe-only deployments with no release or stack state, `Running` + * means the Operator is attached. Connectivity comes from `lastHeartbeatAt`; + * resource health comes from inventory and resource heartbeat data. + */ + status?: PersistImportedDeploymentRequestStatus | undefined; + /** + * Unique identifier for the release. + */ + currentReleaseId?: string | undefined; + /** + * Unique identifier for the release. + */ + desiredReleaseId?: string | undefined; + importSource?: ImportSourceKind | undefined; + setupMetadata?: { [k: string]: any | null } | undefined; + /** + * Stable target key for the setup contract, e.g. aws/us-east-1 + */ + setupTarget: string; + /** + * Deterministic setup contract fingerprint for one setup target + */ + setupFingerprint: string; + /** + * Setup fingerprint algorithm version + */ + setupFingerprintVersion: number; + deploymentToken?: string | undefined; + /** + * Management configuration for different cloud platforms. + * + * @remarks + * + * Platform-derived configuration for cross-account/cross-tenant access. + * This is NOT user-specified - it's derived from the Manager's ServiceAccount. + */ + managementConfig?: + | PersistImportedDeploymentRequestManagementConfigAws + | PersistImportedDeploymentRequestManagementConfigGcp + | PersistImportedDeploymentRequestManagementConfigAzure + | PersistImportedDeploymentRequestManagementConfigKubernetes + | undefined; + inputValues?: { [k: string]: StackInputValueRequest } | undefined; +}; + +/** @internal */ +export const ModePersist$outboundSchema: z.ZodEnum = z.enum( + ModePersist, +); + +/** @internal */ +export const PersistImportedDeploymentRequestPlatformEnum$outboundSchema: + z.ZodEnum = z.enum( + PersistImportedDeploymentRequestPlatformEnum, + ); + +/** @internal */ +export type PersistImportedDeploymentRequestFailureDomains2$Outbound = { + selectedFailureDomains?: Array | undefined; + spread: number; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestFailureDomains2$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestFailureDomains2$Outbound, + PersistImportedDeploymentRequestFailureDomains2 + > = z.object({ + selectedFailureDomains: z.array(z.string()).optional(), + spread: z.int(), + }); + +export function persistImportedDeploymentRequestFailureDomains2ToJSON( + persistImportedDeploymentRequestFailureDomains2: + PersistImportedDeploymentRequestFailureDomains2, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestFailureDomains2$outboundSchema.parse( + persistImportedDeploymentRequestFailureDomains2, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestFailureDomainsUnion2$Outbound = + | PersistImportedDeploymentRequestFailureDomains2$Outbound + | any; + +/** @internal */ +export const PersistImportedDeploymentRequestFailureDomainsUnion2$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestFailureDomainsUnion2$Outbound, + PersistImportedDeploymentRequestFailureDomainsUnion2 + > = z.union([ + z.lazy(() => + PersistImportedDeploymentRequestFailureDomains2$outboundSchema + ), + z.any(), + ]); + +export function persistImportedDeploymentRequestFailureDomainsUnion2ToJSON( + persistImportedDeploymentRequestFailureDomainsUnion2: + PersistImportedDeploymentRequestFailureDomainsUnion2, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestFailureDomainsUnion2$outboundSchema.parse( + persistImportedDeploymentRequestFailureDomainsUnion2, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestPoolsAutoscale$Outbound = { + failure_domains?: + | PersistImportedDeploymentRequestFailureDomains2$Outbound + | any + | null + | undefined; + machine?: string | null | undefined; + max: number; + min: number; + mode: "autoscale"; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestPoolsAutoscale$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestPoolsAutoscale$Outbound, + PersistImportedDeploymentRequestPoolsAutoscale + > = z.object({ + failureDomains: z.nullable( + z.union([ + z.lazy(() => + PersistImportedDeploymentRequestFailureDomains2$outboundSchema + ), + z.any(), + ]), + ).optional(), + machine: z.nullable(z.string()).optional(), + max: z.int(), + min: z.int(), + mode: z.literal("autoscale"), + }).transform((v) => { + return remap$(v, { + failureDomains: "failure_domains", + }); + }); + +export function persistImportedDeploymentRequestPoolsAutoscaleToJSON( + persistImportedDeploymentRequestPoolsAutoscale: + PersistImportedDeploymentRequestPoolsAutoscale, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestPoolsAutoscale$outboundSchema.parse( + persistImportedDeploymentRequestPoolsAutoscale, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestFailureDomains1$Outbound = { + selectedFailureDomains?: Array | undefined; + spread: number; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestFailureDomains1$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestFailureDomains1$Outbound, + PersistImportedDeploymentRequestFailureDomains1 + > = z.object({ + selectedFailureDomains: z.array(z.string()).optional(), + spread: z.int(), + }); + +export function persistImportedDeploymentRequestFailureDomains1ToJSON( + persistImportedDeploymentRequestFailureDomains1: + PersistImportedDeploymentRequestFailureDomains1, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestFailureDomains1$outboundSchema.parse( + persistImportedDeploymentRequestFailureDomains1, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestFailureDomainsUnion1$Outbound = + | PersistImportedDeploymentRequestFailureDomains1$Outbound + | any; + +/** @internal */ +export const PersistImportedDeploymentRequestFailureDomainsUnion1$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestFailureDomainsUnion1$Outbound, + PersistImportedDeploymentRequestFailureDomainsUnion1 + > = z.union([ + z.lazy(() => + PersistImportedDeploymentRequestFailureDomains1$outboundSchema + ), + z.any(), + ]); + +export function persistImportedDeploymentRequestFailureDomainsUnion1ToJSON( + persistImportedDeploymentRequestFailureDomainsUnion1: + PersistImportedDeploymentRequestFailureDomainsUnion1, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestFailureDomainsUnion1$outboundSchema.parse( + persistImportedDeploymentRequestFailureDomainsUnion1, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestPoolsFixed$Outbound = { + failure_domains?: + | PersistImportedDeploymentRequestFailureDomains1$Outbound + | any + | null + | undefined; + machine?: string | null | undefined; + machines: number; + mode: "fixed"; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestPoolsFixed$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestPoolsFixed$Outbound, + PersistImportedDeploymentRequestPoolsFixed + > = z.object({ + failureDomains: z.nullable( + z.union([ + z.lazy(() => + PersistImportedDeploymentRequestFailureDomains1$outboundSchema + ), + z.any(), + ]), + ).optional(), + machine: z.nullable(z.string()).optional(), + machines: z.int(), + mode: z.literal("fixed"), + }).transform((v) => { + return remap$(v, { + failureDomains: "failure_domains", + }); + }); + +export function persistImportedDeploymentRequestPoolsFixedToJSON( + persistImportedDeploymentRequestPoolsFixed: + PersistImportedDeploymentRequestPoolsFixed, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestPoolsFixed$outboundSchema.parse( + persistImportedDeploymentRequestPoolsFixed, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestPoolsUnion$Outbound = + | PersistImportedDeploymentRequestPoolsFixed$Outbound + | PersistImportedDeploymentRequestPoolsAutoscale$Outbound; + +/** @internal */ +export const PersistImportedDeploymentRequestPoolsUnion$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestPoolsUnion$Outbound, + PersistImportedDeploymentRequestPoolsUnion + > = z.union([ + z.lazy(() => PersistImportedDeploymentRequestPoolsFixed$outboundSchema), + z.lazy(() => PersistImportedDeploymentRequestPoolsAutoscale$outboundSchema), + ]); + +export function persistImportedDeploymentRequestPoolsUnionToJSON( + persistImportedDeploymentRequestPoolsUnion: + PersistImportedDeploymentRequestPoolsUnion, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestPoolsUnion$outboundSchema.parse( + persistImportedDeploymentRequestPoolsUnion, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestCompute$Outbound = { + pools?: { + [k: string]: + | PersistImportedDeploymentRequestPoolsFixed$Outbound + | PersistImportedDeploymentRequestPoolsAutoscale$Outbound; + } | undefined; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestCompute$outboundSchema: z.ZodType< + PersistImportedDeploymentRequestCompute$Outbound, + PersistImportedDeploymentRequestCompute +> = z.object({ + pools: z.record( + z.string(), + z.union([ + z.lazy(() => PersistImportedDeploymentRequestPoolsFixed$outboundSchema), + z.lazy(() => + PersistImportedDeploymentRequestPoolsAutoscale$outboundSchema + ), + ]), + ).optional(), +}); + +export function persistImportedDeploymentRequestComputeToJSON( + persistImportedDeploymentRequestCompute: + PersistImportedDeploymentRequestCompute, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestCompute$outboundSchema.parse( + persistImportedDeploymentRequestCompute, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestComputeUnion$Outbound = + | PersistImportedDeploymentRequestCompute$Outbound + | any; + +/** @internal */ +export const PersistImportedDeploymentRequestComputeUnion$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestComputeUnion$Outbound, + PersistImportedDeploymentRequestComputeUnion + > = z.union([ + z.lazy(() => PersistImportedDeploymentRequestCompute$outboundSchema), + z.any(), + ]); + +export function persistImportedDeploymentRequestComputeUnionToJSON( + persistImportedDeploymentRequestComputeUnion: + PersistImportedDeploymentRequestComputeUnion, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestComputeUnion$outboundSchema.parse( + persistImportedDeploymentRequestComputeUnion, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestDeploymentModel$outboundSchema: + z.ZodEnum = z.enum( + PersistImportedDeploymentRequestDeploymentModel, + ); + +/** @internal */ +export type PersistImportedDeploymentRequestAws$Outbound = { + certificateArn: string; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestAws$outboundSchema: z.ZodType< + PersistImportedDeploymentRequestAws$Outbound, + PersistImportedDeploymentRequestAws +> = z.object({ + certificateArn: z.string(), +}); + +export function persistImportedDeploymentRequestAwsToJSON( + persistImportedDeploymentRequestAws: PersistImportedDeploymentRequestAws, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestAws$outboundSchema.parse( + persistImportedDeploymentRequestAws, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestAwsUnion$Outbound = + | PersistImportedDeploymentRequestAws$Outbound + | any; + +/** @internal */ +export const PersistImportedDeploymentRequestAwsUnion$outboundSchema: z.ZodType< + PersistImportedDeploymentRequestAwsUnion$Outbound, + PersistImportedDeploymentRequestAwsUnion +> = z.union([ + z.lazy(() => PersistImportedDeploymentRequestAws$outboundSchema), + z.any(), +]); + +export function persistImportedDeploymentRequestAwsUnionToJSON( + persistImportedDeploymentRequestAwsUnion: + PersistImportedDeploymentRequestAwsUnion, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestAwsUnion$outboundSchema.parse( + persistImportedDeploymentRequestAwsUnion, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestAzureStackSettings$Outbound = { + keyVaultCertificateId: string; + keyVaultResourceId?: string | null | undefined; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestAzureStackSettings$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestAzureStackSettings$Outbound, + PersistImportedDeploymentRequestAzureStackSettings + > = z.object({ + keyVaultCertificateId: z.string(), + keyVaultResourceId: z.nullable(z.string()).optional(), + }); + +export function persistImportedDeploymentRequestAzureStackSettingsToJSON( + persistImportedDeploymentRequestAzureStackSettings: + PersistImportedDeploymentRequestAzureStackSettings, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestAzureStackSettings$outboundSchema.parse( + persistImportedDeploymentRequestAzureStackSettings, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestAzureUnion$Outbound = + | PersistImportedDeploymentRequestAzureStackSettings$Outbound + | any; + +/** @internal */ +export const PersistImportedDeploymentRequestAzureUnion$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestAzureUnion$Outbound, + PersistImportedDeploymentRequestAzureUnion + > = z.union([ + z.lazy(() => + PersistImportedDeploymentRequestAzureStackSettings$outboundSchema + ), + z.any(), + ]); + +export function persistImportedDeploymentRequestAzureUnionToJSON( + persistImportedDeploymentRequestAzureUnion: + PersistImportedDeploymentRequestAzureUnion, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestAzureUnion$outboundSchema.parse( + persistImportedDeploymentRequestAzureUnion, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestGcpStackSettings$Outbound = { + certificateName: string; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestGcpStackSettings$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestGcpStackSettings$Outbound, + PersistImportedDeploymentRequestGcpStackSettings + > = z.object({ + certificateName: z.string(), + }); + +export function persistImportedDeploymentRequestGcpStackSettingsToJSON( + persistImportedDeploymentRequestGcpStackSettings: + PersistImportedDeploymentRequestGcpStackSettings, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestGcpStackSettings$outboundSchema.parse( + persistImportedDeploymentRequestGcpStackSettings, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestGcpUnion$Outbound = + | PersistImportedDeploymentRequestGcpStackSettings$Outbound + | any; + +/** @internal */ +export const PersistImportedDeploymentRequestGcpUnion$outboundSchema: z.ZodType< + PersistImportedDeploymentRequestGcpUnion$Outbound, + PersistImportedDeploymentRequestGcpUnion +> = z.union([ + z.lazy(() => PersistImportedDeploymentRequestGcpStackSettings$outboundSchema), + z.any(), +]); + +export function persistImportedDeploymentRequestGcpUnionToJSON( + persistImportedDeploymentRequestGcpUnion: + PersistImportedDeploymentRequestGcpUnion, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestGcpUnion$outboundSchema.parse( + persistImportedDeploymentRequestGcpUnion, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestTlsSecretRef$Outbound = { + namespace?: string | null | undefined; + secretName: string; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestTlsSecretRef$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestTlsSecretRef$Outbound, + PersistImportedDeploymentRequestTlsSecretRef + > = z.object({ + namespace: z.nullable(z.string()).optional(), + secretName: z.string(), + }); + +export function persistImportedDeploymentRequestTlsSecretRefToJSON( + persistImportedDeploymentRequestTlsSecretRef: + PersistImportedDeploymentRequestTlsSecretRef, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestTlsSecretRef$outboundSchema.parse( + persistImportedDeploymentRequestTlsSecretRef, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestDomainsKubernetes$Outbound = { + tlsSecretRef: PersistImportedDeploymentRequestTlsSecretRef$Outbound; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestDomainsKubernetes$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestDomainsKubernetes$Outbound, + PersistImportedDeploymentRequestDomainsKubernetes + > = z.object({ + tlsSecretRef: z.lazy(() => + PersistImportedDeploymentRequestTlsSecretRef$outboundSchema + ), + }); + +export function persistImportedDeploymentRequestDomainsKubernetesToJSON( + persistImportedDeploymentRequestDomainsKubernetes: + PersistImportedDeploymentRequestDomainsKubernetes, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestDomainsKubernetes$outboundSchema.parse( + persistImportedDeploymentRequestDomainsKubernetes, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestDomainsKubernetesUnion$Outbound = + | PersistImportedDeploymentRequestDomainsKubernetes$Outbound + | any; + +/** @internal */ +export const PersistImportedDeploymentRequestDomainsKubernetesUnion$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestDomainsKubernetesUnion$Outbound, + PersistImportedDeploymentRequestDomainsKubernetesUnion + > = z.union([ + z.lazy(() => + PersistImportedDeploymentRequestDomainsKubernetes$outboundSchema + ), + z.any(), + ]); + +export function persistImportedDeploymentRequestDomainsKubernetesUnionToJSON( + persistImportedDeploymentRequestDomainsKubernetesUnion: + PersistImportedDeploymentRequestDomainsKubernetesUnion, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestDomainsKubernetesUnion$outboundSchema.parse( + persistImportedDeploymentRequestDomainsKubernetesUnion, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestDomainsCertificate$Outbound = { + aws?: PersistImportedDeploymentRequestAws$Outbound | any | null | undefined; + azure?: + | PersistImportedDeploymentRequestAzureStackSettings$Outbound + | any + | null + | undefined; + gcp?: + | PersistImportedDeploymentRequestGcpStackSettings$Outbound + | any + | null + | undefined; + kubernetes?: + | PersistImportedDeploymentRequestDomainsKubernetes$Outbound + | any + | null + | undefined; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestDomainsCertificate$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestDomainsCertificate$Outbound, + PersistImportedDeploymentRequestDomainsCertificate + > = z.object({ + aws: z.nullable( + z.union([ + z.lazy(() => PersistImportedDeploymentRequestAws$outboundSchema), + z.any(), + ]), + ).optional(), + azure: z.nullable( + z.union([ + z.lazy(() => + PersistImportedDeploymentRequestAzureStackSettings$outboundSchema + ), + z.any(), + ]), + ).optional(), + gcp: z.nullable( + z.union([ + z.lazy(() => + PersistImportedDeploymentRequestGcpStackSettings$outboundSchema + ), + z.any(), + ]), + ).optional(), + kubernetes: z.nullable( + z.union([ + z.lazy(() => + PersistImportedDeploymentRequestDomainsKubernetes$outboundSchema + ), + z.any(), + ]), + ).optional(), + }); + +export function persistImportedDeploymentRequestDomainsCertificateToJSON( + persistImportedDeploymentRequestDomainsCertificate: + PersistImportedDeploymentRequestDomainsCertificate, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestDomainsCertificate$outboundSchema.parse( + persistImportedDeploymentRequestDomainsCertificate, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestCustomDomains$Outbound = { + certificate: PersistImportedDeploymentRequestDomainsCertificate$Outbound; + domain: string; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestCustomDomains$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestCustomDomains$Outbound, + PersistImportedDeploymentRequestCustomDomains + > = z.object({ + certificate: z.lazy(() => + PersistImportedDeploymentRequestDomainsCertificate$outboundSchema + ), + domain: z.string(), + }); + +export function persistImportedDeploymentRequestCustomDomainsToJSON( + persistImportedDeploymentRequestCustomDomains: + PersistImportedDeploymentRequestCustomDomains, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestCustomDomains$outboundSchema.parse( + persistImportedDeploymentRequestCustomDomains, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestModeLoadBalancer$outboundSchema: + z.ZodEnum = z.enum( + PersistImportedDeploymentRequestModeLoadBalancer, + ); + +/** @internal */ +export type PersistImportedDeploymentRequestPublicEndpointTargetLoadBalancer$Outbound = + { + cnameTarget: string; + mode: string; + }; + +/** @internal */ +export const PersistImportedDeploymentRequestPublicEndpointTargetLoadBalancer$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestPublicEndpointTargetLoadBalancer$Outbound, + PersistImportedDeploymentRequestPublicEndpointTargetLoadBalancer + > = z.object({ + cnameTarget: z.string(), + mode: PersistImportedDeploymentRequestModeLoadBalancer$outboundSchema, + }); + +export function persistImportedDeploymentRequestPublicEndpointTargetLoadBalancerToJSON( + persistImportedDeploymentRequestPublicEndpointTargetLoadBalancer: + PersistImportedDeploymentRequestPublicEndpointTargetLoadBalancer, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestPublicEndpointTargetLoadBalancer$outboundSchema + .parse(persistImportedDeploymentRequestPublicEndpointTargetLoadBalancer), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestModeMachineAddresses$outboundSchema: + z.ZodEnum = z + .enum(PersistImportedDeploymentRequestModeMachineAddresses); + +/** @internal */ +export type PersistImportedDeploymentRequestPublicEndpointTargetMachineAddresses$Outbound = + { + mode: string; + }; + +/** @internal */ +export const PersistImportedDeploymentRequestPublicEndpointTargetMachineAddresses$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestPublicEndpointTargetMachineAddresses$Outbound, + PersistImportedDeploymentRequestPublicEndpointTargetMachineAddresses + > = z.object({ + mode: PersistImportedDeploymentRequestModeMachineAddresses$outboundSchema, + }); + +export function persistImportedDeploymentRequestPublicEndpointTargetMachineAddressesToJSON( + persistImportedDeploymentRequestPublicEndpointTargetMachineAddresses: + PersistImportedDeploymentRequestPublicEndpointTargetMachineAddresses, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestPublicEndpointTargetMachineAddresses$outboundSchema + .parse( + persistImportedDeploymentRequestPublicEndpointTargetMachineAddresses, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestPublicEndpointTargetUnion$Outbound = + | PersistImportedDeploymentRequestPublicEndpointTargetLoadBalancer$Outbound + | PersistImportedDeploymentRequestPublicEndpointTargetMachineAddresses$Outbound + | any; + +/** @internal */ +export const PersistImportedDeploymentRequestPublicEndpointTargetUnion$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestPublicEndpointTargetUnion$Outbound, + PersistImportedDeploymentRequestPublicEndpointTargetUnion + > = z.union([ + z.lazy(() => + PersistImportedDeploymentRequestPublicEndpointTargetLoadBalancer$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestPublicEndpointTargetMachineAddresses$outboundSchema + ), + z.any(), + ]); + +export function persistImportedDeploymentRequestPublicEndpointTargetUnionToJSON( + persistImportedDeploymentRequestPublicEndpointTargetUnion: + PersistImportedDeploymentRequestPublicEndpointTargetUnion, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestPublicEndpointTargetUnion$outboundSchema + .parse(persistImportedDeploymentRequestPublicEndpointTargetUnion), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestDomains$Outbound = { + customDomains?: + | { [k: string]: PersistImportedDeploymentRequestCustomDomains$Outbound } + | null + | undefined; + publicEndpointTarget?: + | PersistImportedDeploymentRequestPublicEndpointTargetLoadBalancer$Outbound + | PersistImportedDeploymentRequestPublicEndpointTargetMachineAddresses$Outbound + | any + | null + | undefined; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestDomains$outboundSchema: z.ZodType< + PersistImportedDeploymentRequestDomains$Outbound, + PersistImportedDeploymentRequestDomains +> = z.object({ + customDomains: z.nullable( + z.record( + z.string(), + z.lazy(() => + PersistImportedDeploymentRequestCustomDomains$outboundSchema + ), + ), + ).optional(), + publicEndpointTarget: z.nullable( + z.union([ + z.lazy(() => + PersistImportedDeploymentRequestPublicEndpointTargetLoadBalancer$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestPublicEndpointTargetMachineAddresses$outboundSchema + ), + z.any(), + ]), + ).optional(), +}); + +export function persistImportedDeploymentRequestDomainsToJSON( + persistImportedDeploymentRequestDomains: + PersistImportedDeploymentRequestDomains, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestDomains$outboundSchema.parse( + persistImportedDeploymentRequestDomains, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestDomainsUnion$Outbound = + | PersistImportedDeploymentRequestDomains$Outbound + | any; + +/** @internal */ +export const PersistImportedDeploymentRequestDomainsUnion$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestDomainsUnion$Outbound, + PersistImportedDeploymentRequestDomainsUnion + > = z.union([ + z.lazy(() => PersistImportedDeploymentRequestDomains$outboundSchema), + z.any(), + ]); + +export function persistImportedDeploymentRequestDomainsUnionToJSON( + persistImportedDeploymentRequestDomainsUnion: + PersistImportedDeploymentRequestDomainsUnion, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestDomainsUnion$outboundSchema.parse( + persistImportedDeploymentRequestDomainsUnion, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestExternalBindings$Outbound = {}; + +/** @internal */ +export const PersistImportedDeploymentRequestExternalBindings$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestExternalBindings$Outbound, + PersistImportedDeploymentRequestExternalBindings + > = z.object({}); + +export function persistImportedDeploymentRequestExternalBindingsToJSON( + persistImportedDeploymentRequestExternalBindings: + PersistImportedDeploymentRequestExternalBindings, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestExternalBindings$outboundSchema.parse( + persistImportedDeploymentRequestExternalBindings, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestHeartbeats$outboundSchema: + z.ZodEnum = z.enum( + PersistImportedDeploymentRequestHeartbeats, + ); + +/** @internal */ +export type PersistImportedDeploymentRequestCloud$Outbound = { + accountId?: string | null | undefined; + clusterId?: string | null | undefined; + clusterName?: string | null | undefined; + projectId?: string | null | undefined; + region?: string | null | undefined; + resourceGroup?: string | null | undefined; + subscriptionId?: string | null | undefined; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestCloud$outboundSchema: z.ZodType< + PersistImportedDeploymentRequestCloud$Outbound, + PersistImportedDeploymentRequestCloud +> = z.object({ + accountId: z.nullable(z.string()).optional(), + clusterId: z.nullable(z.string()).optional(), + clusterName: z.nullable(z.string()).optional(), + projectId: z.nullable(z.string()).optional(), + region: z.nullable(z.string()).optional(), + resourceGroup: z.nullable(z.string()).optional(), + subscriptionId: z.nullable(z.string()).optional(), +}); + +export function persistImportedDeploymentRequestCloudToJSON( + persistImportedDeploymentRequestCloud: PersistImportedDeploymentRequestCloud, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestCloud$outboundSchema.parse( + persistImportedDeploymentRequestCloud, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestCloudUnion$Outbound = + | PersistImportedDeploymentRequestCloud$Outbound + | any; + +/** @internal */ +export const PersistImportedDeploymentRequestCloudUnion$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestCloudUnion$Outbound, + PersistImportedDeploymentRequestCloudUnion + > = z.union([ + z.lazy(() => PersistImportedDeploymentRequestCloud$outboundSchema), + z.any(), + ]); + +export function persistImportedDeploymentRequestCloudUnionToJSON( + persistImportedDeploymentRequestCloudUnion: + PersistImportedDeploymentRequestCloudUnion, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestCloudUnion$outboundSchema.parse( + persistImportedDeploymentRequestCloudUnion, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestOwnership$outboundSchema: + z.ZodEnum = z.enum( + PersistImportedDeploymentRequestOwnership, + ); + +/** @internal */ +export type PersistImportedDeploymentRequestCluster$Outbound = { + cloud?: + | PersistImportedDeploymentRequestCloud$Outbound + | any + | null + | undefined; + namespace?: string | null | undefined; + ownership: string; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestCluster$outboundSchema: z.ZodType< + PersistImportedDeploymentRequestCluster$Outbound, + PersistImportedDeploymentRequestCluster +> = z.object({ + cloud: z.nullable( + z.union([ + z.lazy(() => PersistImportedDeploymentRequestCloud$outboundSchema), + z.any(), + ]), + ).optional(), + namespace: z.nullable(z.string()).optional(), + ownership: PersistImportedDeploymentRequestOwnership$outboundSchema, +}); + +export function persistImportedDeploymentRequestClusterToJSON( + persistImportedDeploymentRequestCluster: + PersistImportedDeploymentRequestCluster, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestCluster$outboundSchema.parse( + persistImportedDeploymentRequestCluster, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestClusterUnion$Outbound = + | PersistImportedDeploymentRequestCluster$Outbound + | any; + +/** @internal */ +export const PersistImportedDeploymentRequestClusterUnion$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestClusterUnion$Outbound, + PersistImportedDeploymentRequestClusterUnion + > = z.union([ + z.lazy(() => PersistImportedDeploymentRequestCluster$outboundSchema), + z.any(), + ]); + +export function persistImportedDeploymentRequestClusterUnionToJSON( + persistImportedDeploymentRequestClusterUnion: + PersistImportedDeploymentRequestClusterUnion, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestClusterUnion$outboundSchema.parse( + persistImportedDeploymentRequestClusterUnion, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestCertificateNone2$Outbound = { + mode: "none"; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestCertificateNone2$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestCertificateNone2$Outbound, + PersistImportedDeploymentRequestCertificateNone2 + > = z.object({ + mode: z.literal("none"), + }); + +export function persistImportedDeploymentRequestCertificateNone2ToJSON( + persistImportedDeploymentRequestCertificateNone2: + PersistImportedDeploymentRequestCertificateNone2, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestCertificateNone2$outboundSchema.parse( + persistImportedDeploymentRequestCertificateNone2, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestCertificateManagedTLSSecret2$Outbound = + { + mode: "managedTlsSecret"; + secretNameTemplate: string; + }; + +/** @internal */ +export const PersistImportedDeploymentRequestCertificateManagedTLSSecret2$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestCertificateManagedTLSSecret2$Outbound, + PersistImportedDeploymentRequestCertificateManagedTLSSecret2 + > = z.object({ + mode: z.literal("managedTlsSecret"), + secretNameTemplate: z.string(), + }); + +export function persistImportedDeploymentRequestCertificateManagedTLSSecret2ToJSON( + persistImportedDeploymentRequestCertificateManagedTLSSecret2: + PersistImportedDeploymentRequestCertificateManagedTLSSecret2, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestCertificateManagedTLSSecret2$outboundSchema + .parse(persistImportedDeploymentRequestCertificateManagedTLSSecret2), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestCertificateAwsAcmArn2$Outbound = { + certificateArn: string; + mode: "awsAcmArn"; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestCertificateAwsAcmArn2$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestCertificateAwsAcmArn2$Outbound, + PersistImportedDeploymentRequestCertificateAwsAcmArn2 + > = z.object({ + certificateArn: z.string(), + mode: z.literal("awsAcmArn"), + }); + +export function persistImportedDeploymentRequestCertificateAwsAcmArn2ToJSON( + persistImportedDeploymentRequestCertificateAwsAcmArn2: + PersistImportedDeploymentRequestCertificateAwsAcmArn2, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestCertificateAwsAcmArn2$outboundSchema.parse( + persistImportedDeploymentRequestCertificateAwsAcmArn2, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestCertificateManagedAcmImport2$Outbound = + { + mode: "managedAcmImport"; + region?: string | null | undefined; + tags?: { [k: string]: string } | undefined; + }; + +/** @internal */ +export const PersistImportedDeploymentRequestCertificateManagedAcmImport2$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestCertificateManagedAcmImport2$Outbound, + PersistImportedDeploymentRequestCertificateManagedAcmImport2 + > = z.object({ + mode: z.literal("managedAcmImport"), + region: z.nullable(z.string()).optional(), + tags: z.record(z.string(), z.string()).optional(), + }); + +export function persistImportedDeploymentRequestCertificateManagedAcmImport2ToJSON( + persistImportedDeploymentRequestCertificateManagedAcmImport2: + PersistImportedDeploymentRequestCertificateManagedAcmImport2, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestCertificateManagedAcmImport2$outboundSchema + .parse(persistImportedDeploymentRequestCertificateManagedAcmImport2), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestCertificateTLSSecretRef2$Outbound = + { + namespace?: string | null | undefined; + secretName: string; + mode: "tlsSecretRef"; + }; + +/** @internal */ +export const PersistImportedDeploymentRequestCertificateTLSSecretRef2$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestCertificateTLSSecretRef2$Outbound, + PersistImportedDeploymentRequestCertificateTLSSecretRef2 + > = z.object({ + namespace: z.nullable(z.string()).optional(), + secretName: z.string(), + mode: z.literal("tlsSecretRef"), + }); + +export function persistImportedDeploymentRequestCertificateTLSSecretRef2ToJSON( + persistImportedDeploymentRequestCertificateTLSSecretRef2: + PersistImportedDeploymentRequestCertificateTLSSecretRef2, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestCertificateTLSSecretRef2$outboundSchema + .parse(persistImportedDeploymentRequestCertificateTLSSecretRef2), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestCertificateUnion2$Outbound = + | PersistImportedDeploymentRequestCertificateTLSSecretRef2$Outbound + | PersistImportedDeploymentRequestCertificateManagedAcmImport2$Outbound + | PersistImportedDeploymentRequestCertificateAwsAcmArn2$Outbound + | PersistImportedDeploymentRequestCertificateManagedTLSSecret2$Outbound + | PersistImportedDeploymentRequestCertificateNone2$Outbound; + +/** @internal */ +export const PersistImportedDeploymentRequestCertificateUnion2$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestCertificateUnion2$Outbound, + PersistImportedDeploymentRequestCertificateUnion2 + > = z.union([ + z.lazy(() => + PersistImportedDeploymentRequestCertificateTLSSecretRef2$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestCertificateManagedAcmImport2$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestCertificateAwsAcmArn2$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestCertificateManagedTLSSecret2$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestCertificateNone2$outboundSchema + ), + ]); + +export function persistImportedDeploymentRequestCertificateUnion2ToJSON( + persistImportedDeploymentRequestCertificateUnion2: + PersistImportedDeploymentRequestCertificateUnion2, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestCertificateUnion2$outboundSchema.parse( + persistImportedDeploymentRequestCertificateUnion2, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestModeCustom$outboundSchema: + z.ZodEnum = z.enum( + PersistImportedDeploymentRequestModeCustom, + ); + +/** @internal */ +export const PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum4$outboundSchema: + z.ZodEnum< + typeof PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum4 + > = z.enum( + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum4, + ); + +/** @internal */ +export type PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4$Outbound = + { + albName?: string | null | undefined; + albNamespace?: string | null | undefined; + frontend: string; + provider: string; + }; + +/** @internal */ +export const PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4$Outbound, + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4 + > = z.object({ + albName: z.nullable(z.string()).optional(), + albNamespace: z.nullable(z.string()).optional(), + frontend: z.string(), + provider: + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum4$outboundSchema, + }); + +export function persistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4ToJSON( + persistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4: + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4$outboundSchema + .parse( + persistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestProviderGkeGatewayEnum4$outboundSchema: + z.ZodEnum = z + .enum(PersistImportedDeploymentRequestProviderGkeGatewayEnum4); + +/** @internal */ +export type PersistImportedDeploymentRequestProviderGkeGateway4$Outbound = { + provider: string; + staticAddressName?: string | null | undefined; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestProviderGkeGateway4$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestProviderGkeGateway4$Outbound, + PersistImportedDeploymentRequestProviderGkeGateway4 + > = z.object({ + provider: + PersistImportedDeploymentRequestProviderGkeGatewayEnum4$outboundSchema, + staticAddressName: z.nullable(z.string()).optional(), + }); + +export function persistImportedDeploymentRequestProviderGkeGateway4ToJSON( + persistImportedDeploymentRequestProviderGkeGateway4: + PersistImportedDeploymentRequestProviderGkeGateway4, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestProviderGkeGateway4$outboundSchema.parse( + persistImportedDeploymentRequestProviderGkeGateway4, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestProviderAwsAlbEnum4$outboundSchema: + z.ZodEnum = z + .enum(PersistImportedDeploymentRequestProviderAwsAlbEnum4); + +/** @internal */ +export type PersistImportedDeploymentRequestProviderAwsAlb4$Outbound = { + ipAddressType?: string | null | undefined; + provider: string; + scheme: string; + subnetIds?: Array | undefined; + targetType: string; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestProviderAwsAlb4$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestProviderAwsAlb4$Outbound, + PersistImportedDeploymentRequestProviderAwsAlb4 + > = z.object({ + ipAddressType: z.nullable(z.string()).optional(), + provider: + PersistImportedDeploymentRequestProviderAwsAlbEnum4$outboundSchema, + scheme: z.string(), + subnetIds: z.array(z.string()).optional(), + targetType: z.string(), + }); + +export function persistImportedDeploymentRequestProviderAwsAlb4ToJSON( + persistImportedDeploymentRequestProviderAwsAlb4: + PersistImportedDeploymentRequestProviderAwsAlb4, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestProviderAwsAlb4$outboundSchema.parse( + persistImportedDeploymentRequestProviderAwsAlb4, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestProviderUnion4$Outbound = + | PersistImportedDeploymentRequestProviderAwsAlb4$Outbound + | PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4$Outbound + | PersistImportedDeploymentRequestProviderGkeGateway4$Outbound + | any; + +/** @internal */ +export const PersistImportedDeploymentRequestProviderUnion4$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestProviderUnion4$Outbound, + PersistImportedDeploymentRequestProviderUnion4 + > = z.union([ + z.lazy(() => + PersistImportedDeploymentRequestProviderAwsAlb4$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestProviderGkeGateway4$outboundSchema + ), + z.any(), + ]); + +export function persistImportedDeploymentRequestProviderUnion4ToJSON( + persistImportedDeploymentRequestProviderUnion4: + PersistImportedDeploymentRequestProviderUnion4, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestProviderUnion4$outboundSchema.parse( + persistImportedDeploymentRequestProviderUnion4, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestRouteGateway2$Outbound = { + annotations?: { [k: string]: string } | undefined; + controller?: string | null | undefined; + gatewayClassName: string; + labels?: { [k: string]: string } | undefined; + listenerPort: number; + provider?: + | PersistImportedDeploymentRequestProviderAwsAlb4$Outbound + | PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4$Outbound + | PersistImportedDeploymentRequestProviderGkeGateway4$Outbound + | any + | null + | undefined; + routeApi: "gateway"; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestRouteGateway2$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestRouteGateway2$Outbound, + PersistImportedDeploymentRequestRouteGateway2 + > = z.object({ + annotations: z.record(z.string(), z.string()).optional(), + controller: z.nullable(z.string()).optional(), + gatewayClassName: z.string(), + labels: z.record(z.string(), z.string()).optional(), + listenerPort: z.int(), + provider: z.nullable( + z.union([ + z.lazy(() => + PersistImportedDeploymentRequestProviderAwsAlb4$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestProviderGkeGateway4$outboundSchema + ), + z.any(), + ]), + ).optional(), + routeApi: z.literal("gateway"), + }); + +export function persistImportedDeploymentRequestRouteGateway2ToJSON( + persistImportedDeploymentRequestRouteGateway2: + PersistImportedDeploymentRequestRouteGateway2, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestRouteGateway2$outboundSchema.parse( + persistImportedDeploymentRequestRouteGateway2, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum3$outboundSchema: + z.ZodEnum< + typeof PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum3 + > = z.enum( + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum3, + ); + +/** @internal */ +export type PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3$Outbound = + { + albName?: string | null | undefined; + albNamespace?: string | null | undefined; + frontend: string; + provider: string; + }; + +/** @internal */ +export const PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3$Outbound, + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3 + > = z.object({ + albName: z.nullable(z.string()).optional(), + albNamespace: z.nullable(z.string()).optional(), + frontend: z.string(), + provider: + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum3$outboundSchema, + }); + +export function persistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3ToJSON( + persistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3: + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3$outboundSchema + .parse( + persistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestProviderGkeGatewayEnum3$outboundSchema: + z.ZodEnum = z + .enum(PersistImportedDeploymentRequestProviderGkeGatewayEnum3); + +/** @internal */ +export type PersistImportedDeploymentRequestProviderGkeGateway3$Outbound = { + provider: string; + staticAddressName?: string | null | undefined; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestProviderGkeGateway3$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestProviderGkeGateway3$Outbound, + PersistImportedDeploymentRequestProviderGkeGateway3 + > = z.object({ + provider: + PersistImportedDeploymentRequestProviderGkeGatewayEnum3$outboundSchema, + staticAddressName: z.nullable(z.string()).optional(), + }); + +export function persistImportedDeploymentRequestProviderGkeGateway3ToJSON( + persistImportedDeploymentRequestProviderGkeGateway3: + PersistImportedDeploymentRequestProviderGkeGateway3, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestProviderGkeGateway3$outboundSchema.parse( + persistImportedDeploymentRequestProviderGkeGateway3, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestProviderAwsAlbEnum3$outboundSchema: + z.ZodEnum = z + .enum(PersistImportedDeploymentRequestProviderAwsAlbEnum3); + +/** @internal */ +export type PersistImportedDeploymentRequestProviderAwsAlb3$Outbound = { + ipAddressType?: string | null | undefined; + provider: string; + scheme: string; + subnetIds?: Array | undefined; + targetType: string; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestProviderAwsAlb3$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestProviderAwsAlb3$Outbound, + PersistImportedDeploymentRequestProviderAwsAlb3 + > = z.object({ + ipAddressType: z.nullable(z.string()).optional(), + provider: + PersistImportedDeploymentRequestProviderAwsAlbEnum3$outboundSchema, + scheme: z.string(), + subnetIds: z.array(z.string()).optional(), + targetType: z.string(), + }); + +export function persistImportedDeploymentRequestProviderAwsAlb3ToJSON( + persistImportedDeploymentRequestProviderAwsAlb3: + PersistImportedDeploymentRequestProviderAwsAlb3, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestProviderAwsAlb3$outboundSchema.parse( + persistImportedDeploymentRequestProviderAwsAlb3, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestProviderUnion3$Outbound = + | PersistImportedDeploymentRequestProviderAwsAlb3$Outbound + | PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3$Outbound + | PersistImportedDeploymentRequestProviderGkeGateway3$Outbound + | any; + +/** @internal */ +export const PersistImportedDeploymentRequestProviderUnion3$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestProviderUnion3$Outbound, + PersistImportedDeploymentRequestProviderUnion3 + > = z.union([ + z.lazy(() => + PersistImportedDeploymentRequestProviderAwsAlb3$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestProviderGkeGateway3$outboundSchema + ), + z.any(), + ]); + +export function persistImportedDeploymentRequestProviderUnion3ToJSON( + persistImportedDeploymentRequestProviderUnion3: + PersistImportedDeploymentRequestProviderUnion3, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestProviderUnion3$outboundSchema.parse( + persistImportedDeploymentRequestProviderUnion3, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestRouteIngress2$Outbound = { + annotations?: { [k: string]: string } | undefined; + controller?: string | null | undefined; + ingressClassName: string; + labels?: { [k: string]: string } | undefined; + provider?: + | PersistImportedDeploymentRequestProviderAwsAlb3$Outbound + | PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3$Outbound + | PersistImportedDeploymentRequestProviderGkeGateway3$Outbound + | any + | null + | undefined; + routeApi: "ingress"; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestRouteIngress2$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestRouteIngress2$Outbound, + PersistImportedDeploymentRequestRouteIngress2 + > = z.object({ + annotations: z.record(z.string(), z.string()).optional(), + controller: z.nullable(z.string()).optional(), + ingressClassName: z.string(), + labels: z.record(z.string(), z.string()).optional(), + provider: z.nullable( + z.union([ + z.lazy(() => + PersistImportedDeploymentRequestProviderAwsAlb3$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestProviderGkeGateway3$outboundSchema + ), + z.any(), + ]), + ).optional(), + routeApi: z.literal("ingress"), + }); + +export function persistImportedDeploymentRequestRouteIngress2ToJSON( + persistImportedDeploymentRequestRouteIngress2: + PersistImportedDeploymentRequestRouteIngress2, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestRouteIngress2$outboundSchema.parse( + persistImportedDeploymentRequestRouteIngress2, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestRouteUnion2$Outbound = + | PersistImportedDeploymentRequestRouteIngress2$Outbound + | PersistImportedDeploymentRequestRouteGateway2$Outbound; + +/** @internal */ +export const PersistImportedDeploymentRequestRouteUnion2$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestRouteUnion2$Outbound, + PersistImportedDeploymentRequestRouteUnion2 + > = z.union([ + z.lazy(() => PersistImportedDeploymentRequestRouteIngress2$outboundSchema), + z.lazy(() => PersistImportedDeploymentRequestRouteGateway2$outboundSchema), + ]); + +export function persistImportedDeploymentRequestRouteUnion2ToJSON( + persistImportedDeploymentRequestRouteUnion2: + PersistImportedDeploymentRequestRouteUnion2, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestRouteUnion2$outboundSchema.parse( + persistImportedDeploymentRequestRouteUnion2, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestExposureCustom$Outbound = { + certificate: + | PersistImportedDeploymentRequestCertificateTLSSecretRef2$Outbound + | PersistImportedDeploymentRequestCertificateManagedAcmImport2$Outbound + | PersistImportedDeploymentRequestCertificateAwsAcmArn2$Outbound + | PersistImportedDeploymentRequestCertificateManagedTLSSecret2$Outbound + | PersistImportedDeploymentRequestCertificateNone2$Outbound; + domain: string; + mode: string; + route: + | PersistImportedDeploymentRequestRouteIngress2$Outbound + | PersistImportedDeploymentRequestRouteGateway2$Outbound; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestExposureCustom$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestExposureCustom$Outbound, + PersistImportedDeploymentRequestExposureCustom + > = z.object({ + certificate: z.union([ + z.lazy(() => + PersistImportedDeploymentRequestCertificateTLSSecretRef2$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestCertificateManagedAcmImport2$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestCertificateAwsAcmArn2$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestCertificateManagedTLSSecret2$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestCertificateNone2$outboundSchema + ), + ]), + domain: z.string(), + mode: PersistImportedDeploymentRequestModeCustom$outboundSchema, + route: z.union([ + z.lazy(() => + PersistImportedDeploymentRequestRouteIngress2$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestRouteGateway2$outboundSchema + ), + ]), + }); + +export function persistImportedDeploymentRequestExposureCustomToJSON( + persistImportedDeploymentRequestExposureCustom: + PersistImportedDeploymentRequestExposureCustom, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestExposureCustom$outboundSchema.parse( + persistImportedDeploymentRequestExposureCustom, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestCertificateNone1$Outbound = { + mode: "none"; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestCertificateNone1$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestCertificateNone1$Outbound, + PersistImportedDeploymentRequestCertificateNone1 + > = z.object({ + mode: z.literal("none"), + }); + +export function persistImportedDeploymentRequestCertificateNone1ToJSON( + persistImportedDeploymentRequestCertificateNone1: + PersistImportedDeploymentRequestCertificateNone1, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestCertificateNone1$outboundSchema.parse( + persistImportedDeploymentRequestCertificateNone1, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestCertificateManagedTLSSecret1$Outbound = + { + mode: "managedTlsSecret"; + secretNameTemplate: string; + }; + +/** @internal */ +export const PersistImportedDeploymentRequestCertificateManagedTLSSecret1$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestCertificateManagedTLSSecret1$Outbound, + PersistImportedDeploymentRequestCertificateManagedTLSSecret1 + > = z.object({ + mode: z.literal("managedTlsSecret"), + secretNameTemplate: z.string(), + }); + +export function persistImportedDeploymentRequestCertificateManagedTLSSecret1ToJSON( + persistImportedDeploymentRequestCertificateManagedTLSSecret1: + PersistImportedDeploymentRequestCertificateManagedTLSSecret1, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestCertificateManagedTLSSecret1$outboundSchema + .parse(persistImportedDeploymentRequestCertificateManagedTLSSecret1), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestCertificateAwsAcmArn1$Outbound = { + certificateArn: string; + mode: "awsAcmArn"; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestCertificateAwsAcmArn1$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestCertificateAwsAcmArn1$Outbound, + PersistImportedDeploymentRequestCertificateAwsAcmArn1 + > = z.object({ + certificateArn: z.string(), + mode: z.literal("awsAcmArn"), + }); + +export function persistImportedDeploymentRequestCertificateAwsAcmArn1ToJSON( + persistImportedDeploymentRequestCertificateAwsAcmArn1: + PersistImportedDeploymentRequestCertificateAwsAcmArn1, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestCertificateAwsAcmArn1$outboundSchema.parse( + persistImportedDeploymentRequestCertificateAwsAcmArn1, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestCertificateManagedAcmImport1$Outbound = + { + mode: "managedAcmImport"; + region?: string | null | undefined; + tags?: { [k: string]: string } | undefined; + }; + +/** @internal */ +export const PersistImportedDeploymentRequestCertificateManagedAcmImport1$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestCertificateManagedAcmImport1$Outbound, + PersistImportedDeploymentRequestCertificateManagedAcmImport1 + > = z.object({ + mode: z.literal("managedAcmImport"), + region: z.nullable(z.string()).optional(), + tags: z.record(z.string(), z.string()).optional(), + }); + +export function persistImportedDeploymentRequestCertificateManagedAcmImport1ToJSON( + persistImportedDeploymentRequestCertificateManagedAcmImport1: + PersistImportedDeploymentRequestCertificateManagedAcmImport1, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestCertificateManagedAcmImport1$outboundSchema + .parse(persistImportedDeploymentRequestCertificateManagedAcmImport1), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestCertificateTLSSecretRef1$Outbound = + { + namespace?: string | null | undefined; + secretName: string; + mode: "tlsSecretRef"; + }; + +/** @internal */ +export const PersistImportedDeploymentRequestCertificateTLSSecretRef1$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestCertificateTLSSecretRef1$Outbound, + PersistImportedDeploymentRequestCertificateTLSSecretRef1 + > = z.object({ + namespace: z.nullable(z.string()).optional(), + secretName: z.string(), + mode: z.literal("tlsSecretRef"), + }); + +export function persistImportedDeploymentRequestCertificateTLSSecretRef1ToJSON( + persistImportedDeploymentRequestCertificateTLSSecretRef1: + PersistImportedDeploymentRequestCertificateTLSSecretRef1, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestCertificateTLSSecretRef1$outboundSchema + .parse(persistImportedDeploymentRequestCertificateTLSSecretRef1), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestCertificateUnion1$Outbound = + | PersistImportedDeploymentRequestCertificateTLSSecretRef1$Outbound + | PersistImportedDeploymentRequestCertificateManagedAcmImport1$Outbound + | PersistImportedDeploymentRequestCertificateAwsAcmArn1$Outbound + | PersistImportedDeploymentRequestCertificateManagedTLSSecret1$Outbound + | PersistImportedDeploymentRequestCertificateNone1$Outbound; + +/** @internal */ +export const PersistImportedDeploymentRequestCertificateUnion1$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestCertificateUnion1$Outbound, + PersistImportedDeploymentRequestCertificateUnion1 + > = z.union([ + z.lazy(() => + PersistImportedDeploymentRequestCertificateTLSSecretRef1$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestCertificateManagedAcmImport1$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestCertificateAwsAcmArn1$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestCertificateManagedTLSSecret1$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestCertificateNone1$outboundSchema + ), + ]); + +export function persistImportedDeploymentRequestCertificateUnion1ToJSON( + persistImportedDeploymentRequestCertificateUnion1: + PersistImportedDeploymentRequestCertificateUnion1, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestCertificateUnion1$outboundSchema.parse( + persistImportedDeploymentRequestCertificateUnion1, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestModeGenerated$outboundSchema: + z.ZodEnum = z.enum( + PersistImportedDeploymentRequestModeGenerated, + ); + +/** @internal */ +export const PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum2$outboundSchema: + z.ZodEnum< + typeof PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum2 + > = z.enum( + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum2, + ); + +/** @internal */ +export type PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2$Outbound = + { + albName?: string | null | undefined; + albNamespace?: string | null | undefined; + frontend: string; + provider: string; + }; + +/** @internal */ +export const PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2$Outbound, + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2 + > = z.object({ + albName: z.nullable(z.string()).optional(), + albNamespace: z.nullable(z.string()).optional(), + frontend: z.string(), + provider: + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum2$outboundSchema, + }); + +export function persistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2ToJSON( + persistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2: + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2$outboundSchema + .parse( + persistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestProviderGkeGatewayEnum2$outboundSchema: + z.ZodEnum = z + .enum(PersistImportedDeploymentRequestProviderGkeGatewayEnum2); + +/** @internal */ +export type PersistImportedDeploymentRequestProviderGkeGateway2$Outbound = { + provider: string; + staticAddressName?: string | null | undefined; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestProviderGkeGateway2$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestProviderGkeGateway2$Outbound, + PersistImportedDeploymentRequestProviderGkeGateway2 + > = z.object({ + provider: + PersistImportedDeploymentRequestProviderGkeGatewayEnum2$outboundSchema, + staticAddressName: z.nullable(z.string()).optional(), + }); + +export function persistImportedDeploymentRequestProviderGkeGateway2ToJSON( + persistImportedDeploymentRequestProviderGkeGateway2: + PersistImportedDeploymentRequestProviderGkeGateway2, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestProviderGkeGateway2$outboundSchema.parse( + persistImportedDeploymentRequestProviderGkeGateway2, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestProviderAwsAlbEnum2$outboundSchema: + z.ZodEnum = z + .enum(PersistImportedDeploymentRequestProviderAwsAlbEnum2); + +/** @internal */ +export type PersistImportedDeploymentRequestProviderAwsAlb2$Outbound = { + ipAddressType?: string | null | undefined; + provider: string; + scheme: string; + subnetIds?: Array | undefined; + targetType: string; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestProviderAwsAlb2$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestProviderAwsAlb2$Outbound, + PersistImportedDeploymentRequestProviderAwsAlb2 + > = z.object({ + ipAddressType: z.nullable(z.string()).optional(), + provider: + PersistImportedDeploymentRequestProviderAwsAlbEnum2$outboundSchema, + scheme: z.string(), + subnetIds: z.array(z.string()).optional(), + targetType: z.string(), + }); + +export function persistImportedDeploymentRequestProviderAwsAlb2ToJSON( + persistImportedDeploymentRequestProviderAwsAlb2: + PersistImportedDeploymentRequestProviderAwsAlb2, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestProviderAwsAlb2$outboundSchema.parse( + persistImportedDeploymentRequestProviderAwsAlb2, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestProviderUnion2$Outbound = + | PersistImportedDeploymentRequestProviderAwsAlb2$Outbound + | PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2$Outbound + | PersistImportedDeploymentRequestProviderGkeGateway2$Outbound + | any; + +/** @internal */ +export const PersistImportedDeploymentRequestProviderUnion2$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestProviderUnion2$Outbound, + PersistImportedDeploymentRequestProviderUnion2 + > = z.union([ + z.lazy(() => + PersistImportedDeploymentRequestProviderAwsAlb2$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestProviderGkeGateway2$outboundSchema + ), + z.any(), + ]); + +export function persistImportedDeploymentRequestProviderUnion2ToJSON( + persistImportedDeploymentRequestProviderUnion2: + PersistImportedDeploymentRequestProviderUnion2, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestProviderUnion2$outboundSchema.parse( + persistImportedDeploymentRequestProviderUnion2, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestRouteGateway1$Outbound = { + annotations?: { [k: string]: string } | undefined; + controller?: string | null | undefined; + gatewayClassName: string; + labels?: { [k: string]: string } | undefined; + listenerPort: number; + provider?: + | PersistImportedDeploymentRequestProviderAwsAlb2$Outbound + | PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2$Outbound + | PersistImportedDeploymentRequestProviderGkeGateway2$Outbound + | any + | null + | undefined; + routeApi: "gateway"; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestRouteGateway1$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestRouteGateway1$Outbound, + PersistImportedDeploymentRequestRouteGateway1 + > = z.object({ + annotations: z.record(z.string(), z.string()).optional(), + controller: z.nullable(z.string()).optional(), + gatewayClassName: z.string(), + labels: z.record(z.string(), z.string()).optional(), + listenerPort: z.int(), + provider: z.nullable( + z.union([ + z.lazy(() => + PersistImportedDeploymentRequestProviderAwsAlb2$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestProviderGkeGateway2$outboundSchema + ), + z.any(), + ]), + ).optional(), + routeApi: z.literal("gateway"), + }); + +export function persistImportedDeploymentRequestRouteGateway1ToJSON( + persistImportedDeploymentRequestRouteGateway1: + PersistImportedDeploymentRequestRouteGateway1, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestRouteGateway1$outboundSchema.parse( + persistImportedDeploymentRequestRouteGateway1, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum1$outboundSchema: + z.ZodEnum< + typeof PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum1 + > = z.enum( + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum1, + ); + +/** @internal */ +export type PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1$Outbound = + { + albName?: string | null | undefined; + albNamespace?: string | null | undefined; + frontend: string; + provider: string; + }; + +/** @internal */ +export const PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1$Outbound, + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1 + > = z.object({ + albName: z.nullable(z.string()).optional(), + albNamespace: z.nullable(z.string()).optional(), + frontend: z.string(), + provider: + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum1$outboundSchema, + }); + +export function persistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1ToJSON( + persistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1: + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1$outboundSchema + .parse( + persistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestProviderGkeGatewayEnum1$outboundSchema: + z.ZodEnum = z + .enum(PersistImportedDeploymentRequestProviderGkeGatewayEnum1); + +/** @internal */ +export type PersistImportedDeploymentRequestProviderGkeGateway1$Outbound = { + provider: string; + staticAddressName?: string | null | undefined; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestProviderGkeGateway1$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestProviderGkeGateway1$Outbound, + PersistImportedDeploymentRequestProviderGkeGateway1 + > = z.object({ + provider: + PersistImportedDeploymentRequestProviderGkeGatewayEnum1$outboundSchema, + staticAddressName: z.nullable(z.string()).optional(), + }); + +export function persistImportedDeploymentRequestProviderGkeGateway1ToJSON( + persistImportedDeploymentRequestProviderGkeGateway1: + PersistImportedDeploymentRequestProviderGkeGateway1, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestProviderGkeGateway1$outboundSchema.parse( + persistImportedDeploymentRequestProviderGkeGateway1, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestProviderAwsAlbEnum1$outboundSchema: + z.ZodEnum = z + .enum(PersistImportedDeploymentRequestProviderAwsAlbEnum1); + +/** @internal */ +export type PersistImportedDeploymentRequestProviderAwsAlb1$Outbound = { + ipAddressType?: string | null | undefined; + provider: string; + scheme: string; + subnetIds?: Array | undefined; + targetType: string; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestProviderAwsAlb1$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestProviderAwsAlb1$Outbound, + PersistImportedDeploymentRequestProviderAwsAlb1 + > = z.object({ + ipAddressType: z.nullable(z.string()).optional(), + provider: + PersistImportedDeploymentRequestProviderAwsAlbEnum1$outboundSchema, + scheme: z.string(), + subnetIds: z.array(z.string()).optional(), + targetType: z.string(), + }); + +export function persistImportedDeploymentRequestProviderAwsAlb1ToJSON( + persistImportedDeploymentRequestProviderAwsAlb1: + PersistImportedDeploymentRequestProviderAwsAlb1, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestProviderAwsAlb1$outboundSchema.parse( + persistImportedDeploymentRequestProviderAwsAlb1, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestProviderUnion1$Outbound = + | PersistImportedDeploymentRequestProviderAwsAlb1$Outbound + | PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1$Outbound + | PersistImportedDeploymentRequestProviderGkeGateway1$Outbound + | any; + +/** @internal */ +export const PersistImportedDeploymentRequestProviderUnion1$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestProviderUnion1$Outbound, + PersistImportedDeploymentRequestProviderUnion1 + > = z.union([ + z.lazy(() => + PersistImportedDeploymentRequestProviderAwsAlb1$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestProviderGkeGateway1$outboundSchema + ), + z.any(), + ]); + +export function persistImportedDeploymentRequestProviderUnion1ToJSON( + persistImportedDeploymentRequestProviderUnion1: + PersistImportedDeploymentRequestProviderUnion1, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestProviderUnion1$outboundSchema.parse( + persistImportedDeploymentRequestProviderUnion1, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestRouteIngress1$Outbound = { + annotations?: { [k: string]: string } | undefined; + controller?: string | null | undefined; + ingressClassName: string; + labels?: { [k: string]: string } | undefined; + provider?: + | PersistImportedDeploymentRequestProviderAwsAlb1$Outbound + | PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1$Outbound + | PersistImportedDeploymentRequestProviderGkeGateway1$Outbound + | any + | null + | undefined; + routeApi: "ingress"; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestRouteIngress1$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestRouteIngress1$Outbound, + PersistImportedDeploymentRequestRouteIngress1 + > = z.object({ + annotations: z.record(z.string(), z.string()).optional(), + controller: z.nullable(z.string()).optional(), + ingressClassName: z.string(), + labels: z.record(z.string(), z.string()).optional(), + provider: z.nullable( + z.union([ + z.lazy(() => + PersistImportedDeploymentRequestProviderAwsAlb1$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestProviderGkeGateway1$outboundSchema + ), + z.any(), + ]), + ).optional(), + routeApi: z.literal("ingress"), + }); + +export function persistImportedDeploymentRequestRouteIngress1ToJSON( + persistImportedDeploymentRequestRouteIngress1: + PersistImportedDeploymentRequestRouteIngress1, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestRouteIngress1$outboundSchema.parse( + persistImportedDeploymentRequestRouteIngress1, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestRouteUnion1$Outbound = + | PersistImportedDeploymentRequestRouteIngress1$Outbound + | PersistImportedDeploymentRequestRouteGateway1$Outbound; + +/** @internal */ +export const PersistImportedDeploymentRequestRouteUnion1$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestRouteUnion1$Outbound, + PersistImportedDeploymentRequestRouteUnion1 + > = z.union([ + z.lazy(() => PersistImportedDeploymentRequestRouteIngress1$outboundSchema), + z.lazy(() => PersistImportedDeploymentRequestRouteGateway1$outboundSchema), + ]); + +export function persistImportedDeploymentRequestRouteUnion1ToJSON( + persistImportedDeploymentRequestRouteUnion1: + PersistImportedDeploymentRequestRouteUnion1, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestRouteUnion1$outboundSchema.parse( + persistImportedDeploymentRequestRouteUnion1, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestExposureGenerated$Outbound = { + certificate: + | PersistImportedDeploymentRequestCertificateTLSSecretRef1$Outbound + | PersistImportedDeploymentRequestCertificateManagedAcmImport1$Outbound + | PersistImportedDeploymentRequestCertificateAwsAcmArn1$Outbound + | PersistImportedDeploymentRequestCertificateManagedTLSSecret1$Outbound + | PersistImportedDeploymentRequestCertificateNone1$Outbound; + mode: string; + route: + | PersistImportedDeploymentRequestRouteIngress1$Outbound + | PersistImportedDeploymentRequestRouteGateway1$Outbound; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestExposureGenerated$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestExposureGenerated$Outbound, + PersistImportedDeploymentRequestExposureGenerated + > = z.object({ + certificate: z.union([ + z.lazy(() => + PersistImportedDeploymentRequestCertificateTLSSecretRef1$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestCertificateManagedAcmImport1$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestCertificateAwsAcmArn1$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestCertificateManagedTLSSecret1$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestCertificateNone1$outboundSchema + ), + ]), + mode: PersistImportedDeploymentRequestModeGenerated$outboundSchema, + route: z.union([ + z.lazy(() => + PersistImportedDeploymentRequestRouteIngress1$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestRouteGateway1$outboundSchema + ), + ]), + }); + +export function persistImportedDeploymentRequestExposureGeneratedToJSON( + persistImportedDeploymentRequestExposureGenerated: + PersistImportedDeploymentRequestExposureGenerated, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestExposureGenerated$outboundSchema.parse( + persistImportedDeploymentRequestExposureGenerated, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestModeDisabled$outboundSchema: + z.ZodEnum = z.enum( + PersistImportedDeploymentRequestModeDisabled, + ); + +/** @internal */ +export type PersistImportedDeploymentRequestExposureDisabled$Outbound = { + mode: string; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestExposureDisabled$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestExposureDisabled$Outbound, + PersistImportedDeploymentRequestExposureDisabled + > = z.object({ + mode: PersistImportedDeploymentRequestModeDisabled$outboundSchema, + }); + +export function persistImportedDeploymentRequestExposureDisabledToJSON( + persistImportedDeploymentRequestExposureDisabled: + PersistImportedDeploymentRequestExposureDisabled, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestExposureDisabled$outboundSchema.parse( + persistImportedDeploymentRequestExposureDisabled, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestExposureUnion$Outbound = + | PersistImportedDeploymentRequestExposureCustom$Outbound + | PersistImportedDeploymentRequestExposureGenerated$Outbound + | PersistImportedDeploymentRequestExposureDisabled$Outbound + | any; + +/** @internal */ +export const PersistImportedDeploymentRequestExposureUnion$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestExposureUnion$Outbound, + PersistImportedDeploymentRequestExposureUnion + > = z.union([ + z.lazy(() => PersistImportedDeploymentRequestExposureCustom$outboundSchema), + z.lazy(() => + PersistImportedDeploymentRequestExposureGenerated$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestExposureDisabled$outboundSchema + ), + z.any(), + ]); + +export function persistImportedDeploymentRequestExposureUnionToJSON( + persistImportedDeploymentRequestExposureUnion: + PersistImportedDeploymentRequestExposureUnion, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestExposureUnion$outboundSchema.parse( + persistImportedDeploymentRequestExposureUnion, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestKubernetes$Outbound = { + cluster?: + | PersistImportedDeploymentRequestCluster$Outbound + | any + | null + | undefined; + exposure?: + | PersistImportedDeploymentRequestExposureCustom$Outbound + | PersistImportedDeploymentRequestExposureGenerated$Outbound + | PersistImportedDeploymentRequestExposureDisabled$Outbound + | any + | null + | undefined; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestKubernetes$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestKubernetes$Outbound, + PersistImportedDeploymentRequestKubernetes + > = z.object({ + cluster: z.nullable( + z.union([ + z.lazy(() => PersistImportedDeploymentRequestCluster$outboundSchema), + z.any(), + ]), + ).optional(), + exposure: z.nullable( + z.union([ + z.lazy(() => + PersistImportedDeploymentRequestExposureCustom$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestExposureGenerated$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestExposureDisabled$outboundSchema + ), + z.any(), + ]), + ).optional(), + }); + +export function persistImportedDeploymentRequestKubernetesToJSON( + persistImportedDeploymentRequestKubernetes: + PersistImportedDeploymentRequestKubernetes, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestKubernetes$outboundSchema.parse( + persistImportedDeploymentRequestKubernetes, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestKubernetesUnion$Outbound = + | PersistImportedDeploymentRequestKubernetes$Outbound + | any; + +/** @internal */ +export const PersistImportedDeploymentRequestKubernetesUnion$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestKubernetesUnion$Outbound, + PersistImportedDeploymentRequestKubernetesUnion + > = z.union([ + z.lazy(() => PersistImportedDeploymentRequestKubernetes$outboundSchema), + z.any(), + ]); + +export function persistImportedDeploymentRequestKubernetesUnionToJSON( + persistImportedDeploymentRequestKubernetesUnion: + PersistImportedDeploymentRequestKubernetesUnion, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestKubernetesUnion$outboundSchema.parse( + persistImportedDeploymentRequestKubernetesUnion, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestTypeByoVnetAzure$outboundSchema: + z.ZodEnum = z.enum( + PersistImportedDeploymentRequestTypeByoVnetAzure, + ); + +/** @internal */ +export type PersistImportedDeploymentRequestNetworkByoVnetAzure$Outbound = { + application_gateway_subnet_name?: string | null | undefined; + private_endpoint_subnet_name?: string | null | undefined; + private_subnet_name: string; + public_subnet_name: string; + type: string; + vnet_resource_id: string; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestNetworkByoVnetAzure$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestNetworkByoVnetAzure$Outbound, + PersistImportedDeploymentRequestNetworkByoVnetAzure + > = z.object({ + applicationGatewaySubnetName: z.nullable(z.string()).optional(), + privateEndpointSubnetName: z.nullable(z.string()).optional(), + privateSubnetName: z.string(), + publicSubnetName: z.string(), + type: PersistImportedDeploymentRequestTypeByoVnetAzure$outboundSchema, + vnetResourceId: z.string(), + }).transform((v) => { + return remap$(v, { + applicationGatewaySubnetName: "application_gateway_subnet_name", + privateEndpointSubnetName: "private_endpoint_subnet_name", + privateSubnetName: "private_subnet_name", + publicSubnetName: "public_subnet_name", + vnetResourceId: "vnet_resource_id", + }); + }); + +export function persistImportedDeploymentRequestNetworkByoVnetAzureToJSON( + persistImportedDeploymentRequestNetworkByoVnetAzure: + PersistImportedDeploymentRequestNetworkByoVnetAzure, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestNetworkByoVnetAzure$outboundSchema.parse( + persistImportedDeploymentRequestNetworkByoVnetAzure, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestTypeByoVpcGcp$outboundSchema: + z.ZodEnum = z.enum( + PersistImportedDeploymentRequestTypeByoVpcGcp, + ); + +/** @internal */ +export type PersistImportedDeploymentRequestNetworkByoVpcGcp$Outbound = { + network_name: string; + region: string; + subnet_name: string; + type: string; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestNetworkByoVpcGcp$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestNetworkByoVpcGcp$Outbound, + PersistImportedDeploymentRequestNetworkByoVpcGcp + > = z.object({ + networkName: z.string(), + region: z.string(), + subnetName: z.string(), + type: PersistImportedDeploymentRequestTypeByoVpcGcp$outboundSchema, + }).transform((v) => { + return remap$(v, { + networkName: "network_name", + subnetName: "subnet_name", + }); + }); + +export function persistImportedDeploymentRequestNetworkByoVpcGcpToJSON( + persistImportedDeploymentRequestNetworkByoVpcGcp: + PersistImportedDeploymentRequestNetworkByoVpcGcp, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestNetworkByoVpcGcp$outboundSchema.parse( + persistImportedDeploymentRequestNetworkByoVpcGcp, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestTypeByoVpcAws$outboundSchema: + z.ZodEnum = z.enum( + PersistImportedDeploymentRequestTypeByoVpcAws, + ); + +/** @internal */ +export type PersistImportedDeploymentRequestNetworkByoVpcAws$Outbound = { + private_subnet_ids: Array; + public_subnet_ids: Array; + security_group_ids?: Array | undefined; + type: string; + vpc_id: string; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestNetworkByoVpcAws$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestNetworkByoVpcAws$Outbound, + PersistImportedDeploymentRequestNetworkByoVpcAws + > = z.object({ + privateSubnetIds: z.array(z.string()), + publicSubnetIds: z.array(z.string()), + securityGroupIds: z.array(z.string()).optional(), + type: PersistImportedDeploymentRequestTypeByoVpcAws$outboundSchema, + vpcId: z.string(), + }).transform((v) => { + return remap$(v, { + privateSubnetIds: "private_subnet_ids", + publicSubnetIds: "public_subnet_ids", + securityGroupIds: "security_group_ids", + vpcId: "vpc_id", + }); + }); + +export function persistImportedDeploymentRequestNetworkByoVpcAwsToJSON( + persistImportedDeploymentRequestNetworkByoVpcAws: + PersistImportedDeploymentRequestNetworkByoVpcAws, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestNetworkByoVpcAws$outboundSchema.parse( + persistImportedDeploymentRequestNetworkByoVpcAws, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestTypeCreate$outboundSchema: + z.ZodEnum = z.enum( + PersistImportedDeploymentRequestTypeCreate, + ); + +/** @internal */ +export type PersistImportedDeploymentRequestNetworkCreate$Outbound = { + availability_zones?: number | undefined; + cidr?: string | null | undefined; + type: string; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestNetworkCreate$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestNetworkCreate$Outbound, + PersistImportedDeploymentRequestNetworkCreate + > = z.object({ + availabilityZones: z.int().optional(), + cidr: z.nullable(z.string()).optional(), + type: PersistImportedDeploymentRequestTypeCreate$outboundSchema, + }).transform((v) => { + return remap$(v, { + availabilityZones: "availability_zones", + }); + }); + +export function persistImportedDeploymentRequestNetworkCreateToJSON( + persistImportedDeploymentRequestNetworkCreate: + PersistImportedDeploymentRequestNetworkCreate, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestNetworkCreate$outboundSchema.parse( + persistImportedDeploymentRequestNetworkCreate, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestTypeUseDefault$outboundSchema: + z.ZodEnum = z.enum( + PersistImportedDeploymentRequestTypeUseDefault, + ); + +/** @internal */ +export type PersistImportedDeploymentRequestNetworkUseDefault$Outbound = { + type: string; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestNetworkUseDefault$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestNetworkUseDefault$Outbound, + PersistImportedDeploymentRequestNetworkUseDefault + > = z.object({ + type: PersistImportedDeploymentRequestTypeUseDefault$outboundSchema, + }); + +export function persistImportedDeploymentRequestNetworkUseDefaultToJSON( + persistImportedDeploymentRequestNetworkUseDefault: + PersistImportedDeploymentRequestNetworkUseDefault, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestNetworkUseDefault$outboundSchema.parse( + persistImportedDeploymentRequestNetworkUseDefault, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestNetworkUnion$Outbound = + | PersistImportedDeploymentRequestNetworkByoVpcAws$Outbound + | PersistImportedDeploymentRequestNetworkByoVpcGcp$Outbound + | PersistImportedDeploymentRequestNetworkByoVnetAzure$Outbound + | PersistImportedDeploymentRequestNetworkUseDefault$Outbound + | PersistImportedDeploymentRequestNetworkCreate$Outbound + | any; + +/** @internal */ +export const PersistImportedDeploymentRequestNetworkUnion$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestNetworkUnion$Outbound, + PersistImportedDeploymentRequestNetworkUnion + > = z.union([ + z.lazy(() => + PersistImportedDeploymentRequestNetworkByoVpcAws$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestNetworkByoVpcGcp$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestNetworkByoVnetAzure$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestNetworkUseDefault$outboundSchema + ), + z.lazy(() => PersistImportedDeploymentRequestNetworkCreate$outboundSchema), + z.any(), + ]); + +export function persistImportedDeploymentRequestNetworkUnionToJSON( + persistImportedDeploymentRequestNetworkUnion: + PersistImportedDeploymentRequestNetworkUnion, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestNetworkUnion$outboundSchema.parse( + persistImportedDeploymentRequestNetworkUnion, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestTelemetry$outboundSchema: + z.ZodEnum = z.enum( + PersistImportedDeploymentRequestTelemetry, + ); + +/** @internal */ +export const PersistImportedDeploymentRequestUpdates$outboundSchema: z.ZodEnum< + typeof PersistImportedDeploymentRequestUpdates +> = z.enum(PersistImportedDeploymentRequestUpdates); + +/** @internal */ +export type PersistImportedDeploymentRequestStackSettings$Outbound = { + compute?: + | PersistImportedDeploymentRequestCompute$Outbound + | any + | null + | undefined; + deploymentModel?: string | undefined; + domains?: + | PersistImportedDeploymentRequestDomains$Outbound + | any + | null + | undefined; + externalBindings?: + | PersistImportedDeploymentRequestExternalBindings$Outbound + | null + | undefined; + heartbeats?: string | undefined; + kubernetes?: + | PersistImportedDeploymentRequestKubernetes$Outbound + | any + | null + | undefined; + network?: + | PersistImportedDeploymentRequestNetworkByoVpcAws$Outbound + | PersistImportedDeploymentRequestNetworkByoVpcGcp$Outbound + | PersistImportedDeploymentRequestNetworkByoVnetAzure$Outbound + | PersistImportedDeploymentRequestNetworkUseDefault$Outbound + | PersistImportedDeploymentRequestNetworkCreate$Outbound + | any + | null + | undefined; + telemetry?: string | undefined; + updates?: string | undefined; }; /** @internal */ -export const PersistImportedDeploymentRequestPoolsAutoscale$outboundSchema: +export const PersistImportedDeploymentRequestStackSettings$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestPoolsAutoscale$Outbound, - PersistImportedDeploymentRequestPoolsAutoscale + PersistImportedDeploymentRequestStackSettings$Outbound, + PersistImportedDeploymentRequestStackSettings > = z.object({ - machine: z.nullable(z.string()).optional(), - max: z.int(), - min: z.int(), - mode: z.literal("autoscale"), + compute: z.nullable( + z.union([ + z.lazy(() => PersistImportedDeploymentRequestCompute$outboundSchema), + z.any(), + ]), + ).optional(), + deploymentModel: + PersistImportedDeploymentRequestDeploymentModel$outboundSchema.optional(), + domains: z.nullable( + z.union([ + z.lazy(() => PersistImportedDeploymentRequestDomains$outboundSchema), + z.any(), + ]), + ).optional(), + externalBindings: z.nullable( + z.lazy(() => + PersistImportedDeploymentRequestExternalBindings$outboundSchema + ), + ).optional(), + heartbeats: PersistImportedDeploymentRequestHeartbeats$outboundSchema + .optional(), + kubernetes: z.nullable( + z.union([ + z.lazy(() => PersistImportedDeploymentRequestKubernetes$outboundSchema), + z.any(), + ]), + ).optional(), + network: z.nullable( + z.union([ + z.lazy(() => + PersistImportedDeploymentRequestNetworkByoVpcAws$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestNetworkByoVpcGcp$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestNetworkByoVnetAzure$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestNetworkUseDefault$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestNetworkCreate$outboundSchema + ), + z.any(), + ]), + ).optional(), + telemetry: PersistImportedDeploymentRequestTelemetry$outboundSchema + .optional(), + updates: PersistImportedDeploymentRequestUpdates$outboundSchema.optional(), }); -export function persistImportedDeploymentRequestPoolsAutoscaleToJSON( - persistImportedDeploymentRequestPoolsAutoscale: - PersistImportedDeploymentRequestPoolsAutoscale, +export function persistImportedDeploymentRequestStackSettingsToJSON( + persistImportedDeploymentRequestStackSettings: + PersistImportedDeploymentRequestStackSettings, ): string { return JSON.stringify( - PersistImportedDeploymentRequestPoolsAutoscale$outboundSchema.parse( - persistImportedDeploymentRequestPoolsAutoscale, + PersistImportedDeploymentRequestStackSettings$outboundSchema.parse( + persistImportedDeploymentRequestStackSettings, ), ); } /** @internal */ -export type PersistImportedDeploymentRequestPoolsFixed$Outbound = { - machine?: string | null | undefined; - machines: number; - mode: "fixed"; +export const PersistImportedDeploymentRequestPlatformTest$outboundSchema: + z.ZodEnum = z.enum( + PersistImportedDeploymentRequestPlatformTest, + ); + +/** @internal */ +export type PersistImportedDeploymentRequestEnvironmentInfoTest$Outbound = { + testId: string; + platform: string; }; /** @internal */ -export const PersistImportedDeploymentRequestPoolsFixed$outboundSchema: +export const PersistImportedDeploymentRequestEnvironmentInfoTest$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestPoolsFixed$Outbound, - PersistImportedDeploymentRequestPoolsFixed + PersistImportedDeploymentRequestEnvironmentInfoTest$Outbound, + PersistImportedDeploymentRequestEnvironmentInfoTest > = z.object({ - machine: z.nullable(z.string()).optional(), - machines: z.int(), - mode: z.literal("fixed"), + testId: z.string(), + platform: PersistImportedDeploymentRequestPlatformTest$outboundSchema, }); -export function persistImportedDeploymentRequestPoolsFixedToJSON( - persistImportedDeploymentRequestPoolsFixed: - PersistImportedDeploymentRequestPoolsFixed, +export function persistImportedDeploymentRequestEnvironmentInfoTestToJSON( + persistImportedDeploymentRequestEnvironmentInfoTest: + PersistImportedDeploymentRequestEnvironmentInfoTest, ): string { return JSON.stringify( - PersistImportedDeploymentRequestPoolsFixed$outboundSchema.parse( - persistImportedDeploymentRequestPoolsFixed, + PersistImportedDeploymentRequestEnvironmentInfoTest$outboundSchema.parse( + persistImportedDeploymentRequestEnvironmentInfoTest, ), ); } /** @internal */ -export type PersistImportedDeploymentRequestPoolsUnion$Outbound = - | PersistImportedDeploymentRequestPoolsFixed$Outbound - | PersistImportedDeploymentRequestPoolsAutoscale$Outbound; +export const PersistImportedDeploymentRequestPlatformLocal$outboundSchema: + z.ZodEnum = z.enum( + PersistImportedDeploymentRequestPlatformLocal, + ); /** @internal */ -export const PersistImportedDeploymentRequestPoolsUnion$outboundSchema: +export type PersistImportedDeploymentRequestEnvironmentInfoLocal$Outbound = { + arch: string; + hostname: string; + os: string; + platform: string; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestEnvironmentInfoLocal$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestPoolsUnion$Outbound, - PersistImportedDeploymentRequestPoolsUnion - > = z.union([ - z.lazy(() => PersistImportedDeploymentRequestPoolsFixed$outboundSchema), - z.lazy(() => PersistImportedDeploymentRequestPoolsAutoscale$outboundSchema), - ]); + PersistImportedDeploymentRequestEnvironmentInfoLocal$Outbound, + PersistImportedDeploymentRequestEnvironmentInfoLocal + > = z.object({ + arch: z.string(), + hostname: z.string(), + os: z.string(), + platform: PersistImportedDeploymentRequestPlatformLocal$outboundSchema, + }); -export function persistImportedDeploymentRequestPoolsUnionToJSON( - persistImportedDeploymentRequestPoolsUnion: - PersistImportedDeploymentRequestPoolsUnion, +export function persistImportedDeploymentRequestEnvironmentInfoLocalToJSON( + persistImportedDeploymentRequestEnvironmentInfoLocal: + PersistImportedDeploymentRequestEnvironmentInfoLocal, ): string { return JSON.stringify( - PersistImportedDeploymentRequestPoolsUnion$outboundSchema.parse( - persistImportedDeploymentRequestPoolsUnion, + PersistImportedDeploymentRequestEnvironmentInfoLocal$outboundSchema.parse( + persistImportedDeploymentRequestEnvironmentInfoLocal, ), ); } /** @internal */ -export type PersistImportedDeploymentRequestCompute$Outbound = { - pools?: { - [k: string]: - | PersistImportedDeploymentRequestPoolsFixed$Outbound - | PersistImportedDeploymentRequestPoolsAutoscale$Outbound; - } | undefined; +export const PersistImportedDeploymentRequestEnvironmentInfoPlatformAzure$outboundSchema: + z.ZodEnum< + typeof PersistImportedDeploymentRequestEnvironmentInfoPlatformAzure + > = z.enum(PersistImportedDeploymentRequestEnvironmentInfoPlatformAzure); + +/** @internal */ +export type PersistImportedDeploymentRequestEnvironmentInfoAzure$Outbound = { + location: string; + subscriptionId: string; + tenantId: string; + platform: string; }; /** @internal */ -export const PersistImportedDeploymentRequestCompute$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestCompute$Outbound, - PersistImportedDeploymentRequestCompute -> = z.object({ - pools: z.record( - z.string(), - z.union([ - z.lazy(() => PersistImportedDeploymentRequestPoolsFixed$outboundSchema), - z.lazy(() => - PersistImportedDeploymentRequestPoolsAutoscale$outboundSchema - ), - ]), - ).optional(), -}); +export const PersistImportedDeploymentRequestEnvironmentInfoAzure$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestEnvironmentInfoAzure$Outbound, + PersistImportedDeploymentRequestEnvironmentInfoAzure + > = z.object({ + location: z.string(), + subscriptionId: z.string(), + tenantId: z.string(), + platform: + PersistImportedDeploymentRequestEnvironmentInfoPlatformAzure$outboundSchema, + }); + +export function persistImportedDeploymentRequestEnvironmentInfoAzureToJSON( + persistImportedDeploymentRequestEnvironmentInfoAzure: + PersistImportedDeploymentRequestEnvironmentInfoAzure, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestEnvironmentInfoAzure$outboundSchema.parse( + persistImportedDeploymentRequestEnvironmentInfoAzure, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestEnvironmentInfoPlatformGcp$outboundSchema: + z.ZodEnum = + z.enum(PersistImportedDeploymentRequestEnvironmentInfoPlatformGcp); + +/** @internal */ +export type PersistImportedDeploymentRequestEnvironmentInfoGcp$Outbound = { + projectId: string; + projectNumber: string; + region: string; + platform: string; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestEnvironmentInfoGcp$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestEnvironmentInfoGcp$Outbound, + PersistImportedDeploymentRequestEnvironmentInfoGcp + > = z.object({ + projectId: z.string(), + projectNumber: z.string(), + region: z.string(), + platform: + PersistImportedDeploymentRequestEnvironmentInfoPlatformGcp$outboundSchema, + }); + +export function persistImportedDeploymentRequestEnvironmentInfoGcpToJSON( + persistImportedDeploymentRequestEnvironmentInfoGcp: + PersistImportedDeploymentRequestEnvironmentInfoGcp, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestEnvironmentInfoGcp$outboundSchema.parse( + persistImportedDeploymentRequestEnvironmentInfoGcp, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestEnvironmentInfoPlatformAws$outboundSchema: + z.ZodEnum = + z.enum(PersistImportedDeploymentRequestEnvironmentInfoPlatformAws); + +/** @internal */ +export type PersistImportedDeploymentRequestEnvironmentInfoAws$Outbound = { + accountId: string; + region: string; + platform: string; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestEnvironmentInfoAws$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestEnvironmentInfoAws$Outbound, + PersistImportedDeploymentRequestEnvironmentInfoAws + > = z.object({ + accountId: z.string(), + region: z.string(), + platform: + PersistImportedDeploymentRequestEnvironmentInfoPlatformAws$outboundSchema, + }); -export function persistImportedDeploymentRequestComputeToJSON( - persistImportedDeploymentRequestCompute: - PersistImportedDeploymentRequestCompute, +export function persistImportedDeploymentRequestEnvironmentInfoAwsToJSON( + persistImportedDeploymentRequestEnvironmentInfoAws: + PersistImportedDeploymentRequestEnvironmentInfoAws, ): string { return JSON.stringify( - PersistImportedDeploymentRequestCompute$outboundSchema.parse( - persistImportedDeploymentRequestCompute, + PersistImportedDeploymentRequestEnvironmentInfoAws$outboundSchema.parse( + persistImportedDeploymentRequestEnvironmentInfoAws, ), ); } /** @internal */ -export type PersistImportedDeploymentRequestComputeUnion$Outbound = - | PersistImportedDeploymentRequestCompute$Outbound +export type PersistImportedDeploymentRequestEnvironmentInfoUnion$Outbound = + | PersistImportedDeploymentRequestEnvironmentInfoGcp$Outbound + | PersistImportedDeploymentRequestEnvironmentInfoAzure$Outbound + | PersistImportedDeploymentRequestEnvironmentInfoLocal$Outbound + | PersistImportedDeploymentRequestEnvironmentInfoAws$Outbound + | PersistImportedDeploymentRequestEnvironmentInfoTest$Outbound | any; /** @internal */ -export const PersistImportedDeploymentRequestComputeUnion$outboundSchema: +export const PersistImportedDeploymentRequestEnvironmentInfoUnion$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestComputeUnion$Outbound, - PersistImportedDeploymentRequestComputeUnion + PersistImportedDeploymentRequestEnvironmentInfoUnion$Outbound, + PersistImportedDeploymentRequestEnvironmentInfoUnion > = z.union([ - z.lazy(() => PersistImportedDeploymentRequestCompute$outboundSchema), + z.lazy(() => + PersistImportedDeploymentRequestEnvironmentInfoGcp$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestEnvironmentInfoAzure$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestEnvironmentInfoLocal$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestEnvironmentInfoAws$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestEnvironmentInfoTest$outboundSchema + ), z.any(), ]); -export function persistImportedDeploymentRequestComputeUnionToJSON( - persistImportedDeploymentRequestComputeUnion: - PersistImportedDeploymentRequestComputeUnion, +export function persistImportedDeploymentRequestEnvironmentInfoUnionToJSON( + persistImportedDeploymentRequestEnvironmentInfoUnion: + PersistImportedDeploymentRequestEnvironmentInfoUnion, ): string { return JSON.stringify( - PersistImportedDeploymentRequestComputeUnion$outboundSchema.parse( - persistImportedDeploymentRequestComputeUnion, + PersistImportedDeploymentRequestEnvironmentInfoUnion$outboundSchema.parse( + persistImportedDeploymentRequestEnvironmentInfoUnion, ), ); } /** @internal */ -export const PersistImportedDeploymentRequestDeploymentModel$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestDeploymentModel, +export const PersistImportedDeploymentRequestInitialSetupAuthority$outboundSchema: + z.ZodEnum = z + .enum(PersistImportedDeploymentRequestInitialSetupAuthority); + +/** @internal */ +export const PersistImportedDeploymentRequestPendingPreparedStackTypeStringList$outboundSchema: + z.ZodEnum< + typeof PersistImportedDeploymentRequestPendingPreparedStackTypeStringList + > = z.enum( + PersistImportedDeploymentRequestPendingPreparedStackTypeStringList, ); /** @internal */ -export type PersistImportedDeploymentRequestAws$Outbound = { - certificateArn: string; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackDefaultStringList$Outbound = + { + type: string; + value: Array; + }; /** @internal */ -export const PersistImportedDeploymentRequestAws$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestAws$Outbound, - PersistImportedDeploymentRequestAws -> = z.object({ - certificateArn: z.string(), -}); +export const PersistImportedDeploymentRequestPendingPreparedStackDefaultStringList$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestPendingPreparedStackDefaultStringList$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackDefaultStringList + > = z.object({ + type: + PersistImportedDeploymentRequestPendingPreparedStackTypeStringList$outboundSchema, + value: z.array(z.string()), + }); -export function persistImportedDeploymentRequestAwsToJSON( - persistImportedDeploymentRequestAws: PersistImportedDeploymentRequestAws, +export function persistImportedDeploymentRequestPendingPreparedStackDefaultStringListToJSON( + persistImportedDeploymentRequestPendingPreparedStackDefaultStringList: + PersistImportedDeploymentRequestPendingPreparedStackDefaultStringList, ): string { return JSON.stringify( - PersistImportedDeploymentRequestAws$outboundSchema.parse( - persistImportedDeploymentRequestAws, - ), + PersistImportedDeploymentRequestPendingPreparedStackDefaultStringList$outboundSchema + .parse( + persistImportedDeploymentRequestPendingPreparedStackDefaultStringList, + ), ); } /** @internal */ -export type PersistImportedDeploymentRequestAwsUnion$Outbound = - | PersistImportedDeploymentRequestAws$Outbound - | any; +export const PersistImportedDeploymentRequestPendingPreparedStackTypeBoolean$outboundSchema: + z.ZodEnum< + typeof PersistImportedDeploymentRequestPendingPreparedStackTypeBoolean + > = z.enum(PersistImportedDeploymentRequestPendingPreparedStackTypeBoolean); /** @internal */ -export const PersistImportedDeploymentRequestAwsUnion$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestAwsUnion$Outbound, - PersistImportedDeploymentRequestAwsUnion -> = z.union([ - z.lazy(() => PersistImportedDeploymentRequestAws$outboundSchema), - z.any(), -]); +export type PersistImportedDeploymentRequestPendingPreparedStackDefaultBoolean$Outbound = + { + type: string; + value: boolean; + }; -export function persistImportedDeploymentRequestAwsUnionToJSON( - persistImportedDeploymentRequestAwsUnion: - PersistImportedDeploymentRequestAwsUnion, +/** @internal */ +export const PersistImportedDeploymentRequestPendingPreparedStackDefaultBoolean$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestPendingPreparedStackDefaultBoolean$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackDefaultBoolean + > = z.object({ + type: + PersistImportedDeploymentRequestPendingPreparedStackTypeBoolean$outboundSchema, + value: z.boolean(), + }); + +export function persistImportedDeploymentRequestPendingPreparedStackDefaultBooleanToJSON( + persistImportedDeploymentRequestPendingPreparedStackDefaultBoolean: + PersistImportedDeploymentRequestPendingPreparedStackDefaultBoolean, ): string { return JSON.stringify( - PersistImportedDeploymentRequestAwsUnion$outboundSchema.parse( - persistImportedDeploymentRequestAwsUnion, - ), + PersistImportedDeploymentRequestPendingPreparedStackDefaultBoolean$outboundSchema + .parse( + persistImportedDeploymentRequestPendingPreparedStackDefaultBoolean, + ), ); } /** @internal */ -export type PersistImportedDeploymentRequestAzureStackSettings$Outbound = { - keyVaultCertificateId: string; - keyVaultResourceId?: string | null | undefined; -}; +export const PersistImportedDeploymentRequestPendingPreparedStackTypeNumber$outboundSchema: + z.ZodEnum< + typeof PersistImportedDeploymentRequestPendingPreparedStackTypeNumber + > = z.enum(PersistImportedDeploymentRequestPendingPreparedStackTypeNumber); /** @internal */ -export const PersistImportedDeploymentRequestAzureStackSettings$outboundSchema: +export type PersistImportedDeploymentRequestPendingPreparedStackDefaultNumber$Outbound = + { + type: string; + value: string; + }; + +/** @internal */ +export const PersistImportedDeploymentRequestPendingPreparedStackDefaultNumber$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestAzureStackSettings$Outbound, - PersistImportedDeploymentRequestAzureStackSettings + PersistImportedDeploymentRequestPendingPreparedStackDefaultNumber$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackDefaultNumber > = z.object({ - keyVaultCertificateId: z.string(), - keyVaultResourceId: z.nullable(z.string()).optional(), + type: + PersistImportedDeploymentRequestPendingPreparedStackTypeNumber$outboundSchema, + value: z.string(), }); -export function persistImportedDeploymentRequestAzureStackSettingsToJSON( - persistImportedDeploymentRequestAzureStackSettings: - PersistImportedDeploymentRequestAzureStackSettings, +export function persistImportedDeploymentRequestPendingPreparedStackDefaultNumberToJSON( + persistImportedDeploymentRequestPendingPreparedStackDefaultNumber: + PersistImportedDeploymentRequestPendingPreparedStackDefaultNumber, ): string { return JSON.stringify( - PersistImportedDeploymentRequestAzureStackSettings$outboundSchema.parse( - persistImportedDeploymentRequestAzureStackSettings, - ), + PersistImportedDeploymentRequestPendingPreparedStackDefaultNumber$outboundSchema + .parse(persistImportedDeploymentRequestPendingPreparedStackDefaultNumber), ); } /** @internal */ -export type PersistImportedDeploymentRequestAzureUnion$Outbound = - | PersistImportedDeploymentRequestAzureStackSettings$Outbound - | any; +export const PersistImportedDeploymentRequestPendingPreparedStackTypeString$outboundSchema: + z.ZodEnum< + typeof PersistImportedDeploymentRequestPendingPreparedStackTypeString + > = z.enum(PersistImportedDeploymentRequestPendingPreparedStackTypeString); /** @internal */ -export const PersistImportedDeploymentRequestAzureUnion$outboundSchema: +export type PersistImportedDeploymentRequestPendingPreparedStackDefaultString$Outbound = + { + type: string; + value: string; + }; + +/** @internal */ +export const PersistImportedDeploymentRequestPendingPreparedStackDefaultString$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestAzureUnion$Outbound, - PersistImportedDeploymentRequestAzureUnion - > = z.union([ - z.lazy(() => - PersistImportedDeploymentRequestAzureStackSettings$outboundSchema - ), - z.any(), - ]); + PersistImportedDeploymentRequestPendingPreparedStackDefaultString$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackDefaultString + > = z.object({ + type: + PersistImportedDeploymentRequestPendingPreparedStackTypeString$outboundSchema, + value: z.string(), + }); -export function persistImportedDeploymentRequestAzureUnionToJSON( - persistImportedDeploymentRequestAzureUnion: - PersistImportedDeploymentRequestAzureUnion, +export function persistImportedDeploymentRequestPendingPreparedStackDefaultStringToJSON( + persistImportedDeploymentRequestPendingPreparedStackDefaultString: + PersistImportedDeploymentRequestPendingPreparedStackDefaultString, ): string { return JSON.stringify( - PersistImportedDeploymentRequestAzureUnion$outboundSchema.parse( - persistImportedDeploymentRequestAzureUnion, - ), + PersistImportedDeploymentRequestPendingPreparedStackDefaultString$outboundSchema + .parse(persistImportedDeploymentRequestPendingPreparedStackDefaultString), ); } /** @internal */ -export type PersistImportedDeploymentRequestGcpStackSettings$Outbound = { - certificateName: string; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackDefaultUnion$Outbound = + | PersistImportedDeploymentRequestPendingPreparedStackDefaultString$Outbound + | PersistImportedDeploymentRequestPendingPreparedStackDefaultNumber$Outbound + | PersistImportedDeploymentRequestPendingPreparedStackDefaultBoolean$Outbound + | PersistImportedDeploymentRequestPendingPreparedStackDefaultStringList$Outbound + | any; /** @internal */ -export const PersistImportedDeploymentRequestGcpStackSettings$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackDefaultUnion$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestGcpStackSettings$Outbound, - PersistImportedDeploymentRequestGcpStackSettings - > = z.object({ - certificateName: z.string(), - }); + PersistImportedDeploymentRequestPendingPreparedStackDefaultUnion$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackDefaultUnion + > = z.union([ + z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackDefaultString$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackDefaultNumber$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackDefaultBoolean$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackDefaultStringList$outboundSchema + ), + z.any(), + ]); -export function persistImportedDeploymentRequestGcpStackSettingsToJSON( - persistImportedDeploymentRequestGcpStackSettings: - PersistImportedDeploymentRequestGcpStackSettings, +export function persistImportedDeploymentRequestPendingPreparedStackDefaultUnionToJSON( + persistImportedDeploymentRequestPendingPreparedStackDefaultUnion: + PersistImportedDeploymentRequestPendingPreparedStackDefaultUnion, ): string { return JSON.stringify( - PersistImportedDeploymentRequestGcpStackSettings$outboundSchema.parse( - persistImportedDeploymentRequestGcpStackSettings, - ), + PersistImportedDeploymentRequestPendingPreparedStackDefaultUnion$outboundSchema + .parse(persistImportedDeploymentRequestPendingPreparedStackDefaultUnion), ); } /** @internal */ -export type PersistImportedDeploymentRequestGcpUnion$Outbound = - | PersistImportedDeploymentRequestGcpStackSettings$Outbound +export const PersistImportedDeploymentRequestPendingPreparedStackTypeEnvEnum$outboundSchema: + z.ZodEnum< + typeof PersistImportedDeploymentRequestPendingPreparedStackTypeEnvEnum + > = z.enum(PersistImportedDeploymentRequestPendingPreparedStackTypeEnvEnum); + +/** @internal */ +export type PersistImportedDeploymentRequestPendingPreparedStackTypeUnion$Outbound = + | string | any; /** @internal */ -export const PersistImportedDeploymentRequestGcpUnion$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestGcpUnion$Outbound, - PersistImportedDeploymentRequestGcpUnion -> = z.union([ - z.lazy(() => PersistImportedDeploymentRequestGcpStackSettings$outboundSchema), - z.any(), -]); +export const PersistImportedDeploymentRequestPendingPreparedStackTypeUnion$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestPendingPreparedStackTypeUnion$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackTypeUnion + > = z.union([ + PersistImportedDeploymentRequestPendingPreparedStackTypeEnvEnum$outboundSchema, + z.any(), + ]); -export function persistImportedDeploymentRequestGcpUnionToJSON( - persistImportedDeploymentRequestGcpUnion: - PersistImportedDeploymentRequestGcpUnion, +export function persistImportedDeploymentRequestPendingPreparedStackTypeUnionToJSON( + persistImportedDeploymentRequestPendingPreparedStackTypeUnion: + PersistImportedDeploymentRequestPendingPreparedStackTypeUnion, ): string { return JSON.stringify( - PersistImportedDeploymentRequestGcpUnion$outboundSchema.parse( - persistImportedDeploymentRequestGcpUnion, - ), + PersistImportedDeploymentRequestPendingPreparedStackTypeUnion$outboundSchema + .parse(persistImportedDeploymentRequestPendingPreparedStackTypeUnion), ); } /** @internal */ -export type PersistImportedDeploymentRequestTlsSecretRef$Outbound = { - namespace?: string | null | undefined; - secretName: string; +export type PersistImportedDeploymentRequestPendingPreparedStackEnv$Outbound = { + name: string; + targetResources?: Array | null | undefined; + type?: string | any | null | undefined; }; /** @internal */ -export const PersistImportedDeploymentRequestTlsSecretRef$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackEnv$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestTlsSecretRef$Outbound, - PersistImportedDeploymentRequestTlsSecretRef + PersistImportedDeploymentRequestPendingPreparedStackEnv$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackEnv > = z.object({ - namespace: z.nullable(z.string()).optional(), - secretName: z.string(), + name: z.string(), + targetResources: z.nullable(z.array(z.string())).optional(), + type: z.nullable( + z.union([ + PersistImportedDeploymentRequestPendingPreparedStackTypeEnvEnum$outboundSchema, + z.any(), + ]), + ).optional(), }); -export function persistImportedDeploymentRequestTlsSecretRefToJSON( - persistImportedDeploymentRequestTlsSecretRef: - PersistImportedDeploymentRequestTlsSecretRef, +export function persistImportedDeploymentRequestPendingPreparedStackEnvToJSON( + persistImportedDeploymentRequestPendingPreparedStackEnv: + PersistImportedDeploymentRequestPendingPreparedStackEnv, ): string { return JSON.stringify( - PersistImportedDeploymentRequestTlsSecretRef$outboundSchema.parse( - persistImportedDeploymentRequestTlsSecretRef, - ), + PersistImportedDeploymentRequestPendingPreparedStackEnv$outboundSchema + .parse(persistImportedDeploymentRequestPendingPreparedStackEnv), ); } /** @internal */ -export type PersistImportedDeploymentRequestDomainsKubernetes$Outbound = { - tlsSecretRef: PersistImportedDeploymentRequestTlsSecretRef$Outbound; -}; +export const PersistImportedDeploymentRequestPendingPreparedStackKind$outboundSchema: + z.ZodEnum = z + .enum(PersistImportedDeploymentRequestPendingPreparedStackKind); /** @internal */ -export const PersistImportedDeploymentRequestDomainsKubernetes$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackPlatform$outboundSchema: + z.ZodEnum< + typeof PersistImportedDeploymentRequestPendingPreparedStackPlatform + > = z.enum(PersistImportedDeploymentRequestPendingPreparedStackPlatform); + +/** @internal */ +export const PersistImportedDeploymentRequestPendingPreparedStackProvidedBy$outboundSchema: + z.ZodEnum< + typeof PersistImportedDeploymentRequestPendingPreparedStackProvidedBy + > = z.enum(PersistImportedDeploymentRequestPendingPreparedStackProvidedBy); + +/** @internal */ +export type PersistImportedDeploymentRequestPendingPreparedStackValidation$Outbound = + { + format?: string | null | undefined; + max?: string | null | undefined; + maxItems?: number | null | undefined; + maxLength?: number | null | undefined; + min?: string | null | undefined; + minItems?: number | null | undefined; + minLength?: number | null | undefined; + pattern?: string | null | undefined; + values?: Array | null | undefined; + }; + +/** @internal */ +export const PersistImportedDeploymentRequestPendingPreparedStackValidation$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestDomainsKubernetes$Outbound, - PersistImportedDeploymentRequestDomainsKubernetes + PersistImportedDeploymentRequestPendingPreparedStackValidation$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackValidation > = z.object({ - tlsSecretRef: z.lazy(() => - PersistImportedDeploymentRequestTlsSecretRef$outboundSchema - ), + format: z.nullable(z.string()).optional(), + max: z.nullable(z.string()).optional(), + maxItems: z.nullable(z.int()).optional(), + maxLength: z.nullable(z.int()).optional(), + min: z.nullable(z.string()).optional(), + minItems: z.nullable(z.int()).optional(), + minLength: z.nullable(z.int()).optional(), + pattern: z.nullable(z.string()).optional(), + values: z.nullable(z.array(z.string())).optional(), }); -export function persistImportedDeploymentRequestDomainsKubernetesToJSON( - persistImportedDeploymentRequestDomainsKubernetes: - PersistImportedDeploymentRequestDomainsKubernetes, +export function persistImportedDeploymentRequestPendingPreparedStackValidationToJSON( + persistImportedDeploymentRequestPendingPreparedStackValidation: + PersistImportedDeploymentRequestPendingPreparedStackValidation, ): string { return JSON.stringify( - PersistImportedDeploymentRequestDomainsKubernetes$outboundSchema.parse( - persistImportedDeploymentRequestDomainsKubernetes, - ), + PersistImportedDeploymentRequestPendingPreparedStackValidation$outboundSchema + .parse(persistImportedDeploymentRequestPendingPreparedStackValidation), ); } /** @internal */ -export type PersistImportedDeploymentRequestDomainsKubernetesUnion$Outbound = - | PersistImportedDeploymentRequestDomainsKubernetes$Outbound +export type PersistImportedDeploymentRequestPendingPreparedStackValidationUnion$Outbound = + | PersistImportedDeploymentRequestPendingPreparedStackValidation$Outbound | any; /** @internal */ -export const PersistImportedDeploymentRequestDomainsKubernetesUnion$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackValidationUnion$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestDomainsKubernetesUnion$Outbound, - PersistImportedDeploymentRequestDomainsKubernetesUnion + PersistImportedDeploymentRequestPendingPreparedStackValidationUnion$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackValidationUnion > = z.union([ z.lazy(() => - PersistImportedDeploymentRequestDomainsKubernetes$outboundSchema + PersistImportedDeploymentRequestPendingPreparedStackValidation$outboundSchema ), z.any(), ]); -export function persistImportedDeploymentRequestDomainsKubernetesUnionToJSON( - persistImportedDeploymentRequestDomainsKubernetesUnion: - PersistImportedDeploymentRequestDomainsKubernetesUnion, +export function persistImportedDeploymentRequestPendingPreparedStackValidationUnionToJSON( + persistImportedDeploymentRequestPendingPreparedStackValidationUnion: + PersistImportedDeploymentRequestPendingPreparedStackValidationUnion, ): string { return JSON.stringify( - PersistImportedDeploymentRequestDomainsKubernetesUnion$outboundSchema.parse( - persistImportedDeploymentRequestDomainsKubernetesUnion, - ), + PersistImportedDeploymentRequestPendingPreparedStackValidationUnion$outboundSchema + .parse( + persistImportedDeploymentRequestPendingPreparedStackValidationUnion, + ), ); } /** @internal */ -export type PersistImportedDeploymentRequestDomainsCertificate$Outbound = { - aws?: PersistImportedDeploymentRequestAws$Outbound | any | null | undefined; - azure?: - | PersistImportedDeploymentRequestAzureStackSettings$Outbound - | any - | null - | undefined; - gcp?: - | PersistImportedDeploymentRequestGcpStackSettings$Outbound - | any - | null - | undefined; - kubernetes?: - | PersistImportedDeploymentRequestDomainsKubernetes$Outbound - | any - | null - | undefined; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackInput$Outbound = + { + default?: + | PersistImportedDeploymentRequestPendingPreparedStackDefaultString$Outbound + | PersistImportedDeploymentRequestPendingPreparedStackDefaultNumber$Outbound + | PersistImportedDeploymentRequestPendingPreparedStackDefaultBoolean$Outbound + | PersistImportedDeploymentRequestPendingPreparedStackDefaultStringList$Outbound + | any + | null + | undefined; + description: string; + env?: + | Array + | undefined; + id: string; + kind: string; + label: string; + placeholder?: string | null | undefined; + platforms?: Array | null | undefined; + providedBy: Array; + required: boolean; + validation?: + | PersistImportedDeploymentRequestPendingPreparedStackValidation$Outbound + | any + | null + | undefined; + }; /** @internal */ -export const PersistImportedDeploymentRequestDomainsCertificate$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackInput$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestDomainsCertificate$Outbound, - PersistImportedDeploymentRequestDomainsCertificate + PersistImportedDeploymentRequestPendingPreparedStackInput$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackInput > = z.object({ - aws: z.nullable( - z.union([ - z.lazy(() => PersistImportedDeploymentRequestAws$outboundSchema), - z.any(), - ]), - ).optional(), - azure: z.nullable( + default: z.nullable( z.union([ z.lazy(() => - PersistImportedDeploymentRequestAzureStackSettings$outboundSchema + PersistImportedDeploymentRequestPendingPreparedStackDefaultString$outboundSchema ), - z.any(), - ]), - ).optional(), - gcp: z.nullable( - z.union([ z.lazy(() => - PersistImportedDeploymentRequestGcpStackSettings$outboundSchema + PersistImportedDeploymentRequestPendingPreparedStackDefaultNumber$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackDefaultBoolean$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackDefaultStringList$outboundSchema ), z.any(), ]), ).optional(), - kubernetes: z.nullable( + description: z.string(), + env: z.array( + z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackEnv$outboundSchema + ), + ).optional(), + id: z.string(), + kind: + PersistImportedDeploymentRequestPendingPreparedStackKind$outboundSchema, + label: z.string(), + placeholder: z.nullable(z.string()).optional(), + platforms: z.nullable( + z.array( + PersistImportedDeploymentRequestPendingPreparedStackPlatform$outboundSchema, + ), + ).optional(), + providedBy: z.array( + PersistImportedDeploymentRequestPendingPreparedStackProvidedBy$outboundSchema, + ), + required: z.boolean(), + validation: z.nullable( z.union([ z.lazy(() => - PersistImportedDeploymentRequestDomainsKubernetes$outboundSchema + PersistImportedDeploymentRequestPendingPreparedStackValidation$outboundSchema ), z.any(), ]), ).optional(), }); -export function persistImportedDeploymentRequestDomainsCertificateToJSON( - persistImportedDeploymentRequestDomainsCertificate: - PersistImportedDeploymentRequestDomainsCertificate, +export function persistImportedDeploymentRequestPendingPreparedStackInputToJSON( + persistImportedDeploymentRequestPendingPreparedStackInput: + PersistImportedDeploymentRequestPendingPreparedStackInput, ): string { return JSON.stringify( - PersistImportedDeploymentRequestDomainsCertificate$outboundSchema.parse( - persistImportedDeploymentRequestDomainsCertificate, - ), + PersistImportedDeploymentRequestPendingPreparedStackInput$outboundSchema + .parse(persistImportedDeploymentRequestPendingPreparedStackInput), ); } /** @internal */ -export type PersistImportedDeploymentRequestCustomDomains$Outbound = { - certificate: PersistImportedDeploymentRequestDomainsCertificate$Outbound; - domain: string; -}; +export const PersistImportedDeploymentRequestPendingPreparedStackManagementEnum$outboundSchema: + z.ZodEnum< + typeof PersistImportedDeploymentRequestPendingPreparedStackManagementEnum + > = z.enum( + PersistImportedDeploymentRequestPendingPreparedStackManagementEnum, + ); /** @internal */ -export const PersistImportedDeploymentRequestCustomDomains$outboundSchema: +export type PersistImportedDeploymentRequestPendingPreparedStackOverrideAwResource$Outbound = + { + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + resources: Array; + }; + +/** @internal */ +export const PersistImportedDeploymentRequestPendingPreparedStackOverrideAwResource$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestCustomDomains$Outbound, - PersistImportedDeploymentRequestCustomDomains + PersistImportedDeploymentRequestPendingPreparedStackOverrideAwResource$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackOverrideAwResource > = z.object({ - certificate: z.lazy(() => - PersistImportedDeploymentRequestDomainsCertificate$outboundSchema - ), - domain: z.string(), + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), }); -export function persistImportedDeploymentRequestCustomDomainsToJSON( - persistImportedDeploymentRequestCustomDomains: - PersistImportedDeploymentRequestCustomDomains, +export function persistImportedDeploymentRequestPendingPreparedStackOverrideAwResourceToJSON( + persistImportedDeploymentRequestPendingPreparedStackOverrideAwResource: + PersistImportedDeploymentRequestPendingPreparedStackOverrideAwResource, ): string { return JSON.stringify( - PersistImportedDeploymentRequestCustomDomains$outboundSchema.parse( - persistImportedDeploymentRequestCustomDomains, - ), + PersistImportedDeploymentRequestPendingPreparedStackOverrideAwResource$outboundSchema + .parse( + persistImportedDeploymentRequestPendingPreparedStackOverrideAwResource, + ), ); } /** @internal */ -export const PersistImportedDeploymentRequestModeLoadBalancer$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestModeLoadBalancer, +export type PersistImportedDeploymentRequestPendingPreparedStackOverrideAwStack$Outbound = + { + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + resources: Array; + }; + +/** @internal */ +export const PersistImportedDeploymentRequestPendingPreparedStackOverrideAwStack$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestPendingPreparedStackOverrideAwStack$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackOverrideAwStack + > = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function persistImportedDeploymentRequestPendingPreparedStackOverrideAwStackToJSON( + persistImportedDeploymentRequestPendingPreparedStackOverrideAwStack: + PersistImportedDeploymentRequestPendingPreparedStackOverrideAwStack, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestPendingPreparedStackOverrideAwStack$outboundSchema + .parse( + persistImportedDeploymentRequestPendingPreparedStackOverrideAwStack, + ), ); +} /** @internal */ -export type PersistImportedDeploymentRequestPublicEndpointTargetLoadBalancer$Outbound = +export type PersistImportedDeploymentRequestPendingPreparedStackOverrideAwBinding$Outbound = { - cnameTarget: string; - mode: string; + resource?: + | PersistImportedDeploymentRequestPendingPreparedStackOverrideAwResource$Outbound + | undefined; + stack?: + | PersistImportedDeploymentRequestPendingPreparedStackOverrideAwStack$Outbound + | undefined; }; /** @internal */ -export const PersistImportedDeploymentRequestPublicEndpointTargetLoadBalancer$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackOverrideAwBinding$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestPublicEndpointTargetLoadBalancer$Outbound, - PersistImportedDeploymentRequestPublicEndpointTargetLoadBalancer + PersistImportedDeploymentRequestPendingPreparedStackOverrideAwBinding$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackOverrideAwBinding > = z.object({ - cnameTarget: z.string(), - mode: PersistImportedDeploymentRequestModeLoadBalancer$outboundSchema, + resource: z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackOverrideAwResource$outboundSchema + ).optional(), + stack: z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackOverrideAwStack$outboundSchema + ).optional(), }); -export function persistImportedDeploymentRequestPublicEndpointTargetLoadBalancerToJSON( - persistImportedDeploymentRequestPublicEndpointTargetLoadBalancer: - PersistImportedDeploymentRequestPublicEndpointTargetLoadBalancer, +export function persistImportedDeploymentRequestPendingPreparedStackOverrideAwBindingToJSON( + persistImportedDeploymentRequestPendingPreparedStackOverrideAwBinding: + PersistImportedDeploymentRequestPendingPreparedStackOverrideAwBinding, ): string { return JSON.stringify( - PersistImportedDeploymentRequestPublicEndpointTargetLoadBalancer$outboundSchema - .parse(persistImportedDeploymentRequestPublicEndpointTargetLoadBalancer), + PersistImportedDeploymentRequestPendingPreparedStackOverrideAwBinding$outboundSchema + .parse( + persistImportedDeploymentRequestPendingPreparedStackOverrideAwBinding, + ), ); } /** @internal */ -export const PersistImportedDeploymentRequestModeMachineAddresses$outboundSchema: - z.ZodEnum = z - .enum(PersistImportedDeploymentRequestModeMachineAddresses); +export const PersistImportedDeploymentRequestPendingPreparedStackOverrideEffect$outboundSchema: + z.ZodEnum< + typeof PersistImportedDeploymentRequestPendingPreparedStackOverrideEffect + > = z.enum( + PersistImportedDeploymentRequestPendingPreparedStackOverrideEffect, + ); /** @internal */ -export type PersistImportedDeploymentRequestPublicEndpointTargetMachineAddresses$Outbound = +export type PersistImportedDeploymentRequestPendingPreparedStackOverrideAwGrant$Outbound = { - mode: string; + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; }; /** @internal */ -export const PersistImportedDeploymentRequestPublicEndpointTargetMachineAddresses$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackOverrideAwGrant$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestPublicEndpointTargetMachineAddresses$Outbound, - PersistImportedDeploymentRequestPublicEndpointTargetMachineAddresses + PersistImportedDeploymentRequestPendingPreparedStackOverrideAwGrant$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackOverrideAwGrant > = z.object({ - mode: PersistImportedDeploymentRequestModeMachineAddresses$outboundSchema, + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function persistImportedDeploymentRequestPublicEndpointTargetMachineAddressesToJSON( - persistImportedDeploymentRequestPublicEndpointTargetMachineAddresses: - PersistImportedDeploymentRequestPublicEndpointTargetMachineAddresses, +export function persistImportedDeploymentRequestPendingPreparedStackOverrideAwGrantToJSON( + persistImportedDeploymentRequestPendingPreparedStackOverrideAwGrant: + PersistImportedDeploymentRequestPendingPreparedStackOverrideAwGrant, ): string { return JSON.stringify( - PersistImportedDeploymentRequestPublicEndpointTargetMachineAddresses$outboundSchema + PersistImportedDeploymentRequestPendingPreparedStackOverrideAwGrant$outboundSchema .parse( - persistImportedDeploymentRequestPublicEndpointTargetMachineAddresses, + persistImportedDeploymentRequestPendingPreparedStackOverrideAwGrant, ), ); } /** @internal */ -export type PersistImportedDeploymentRequestPublicEndpointTargetUnion$Outbound = - | PersistImportedDeploymentRequestPublicEndpointTargetLoadBalancer$Outbound - | PersistImportedDeploymentRequestPublicEndpointTargetMachineAddresses$Outbound - | any; +export type PersistImportedDeploymentRequestPendingPreparedStackOverrideAw$Outbound = + { + binding: + PersistImportedDeploymentRequestPendingPreparedStackOverrideAwBinding$Outbound; + description?: string | null | undefined; + effect?: string | undefined; + grant: + PersistImportedDeploymentRequestPendingPreparedStackOverrideAwGrant$Outbound; + label?: string | null | undefined; + }; /** @internal */ -export const PersistImportedDeploymentRequestPublicEndpointTargetUnion$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackOverrideAw$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestPublicEndpointTargetUnion$Outbound, - PersistImportedDeploymentRequestPublicEndpointTargetUnion - > = z.union([ - z.lazy(() => - PersistImportedDeploymentRequestPublicEndpointTargetLoadBalancer$outboundSchema + PersistImportedDeploymentRequestPendingPreparedStackOverrideAw$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackOverrideAw + > = z.object({ + binding: z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackOverrideAwBinding$outboundSchema ), - z.lazy(() => - PersistImportedDeploymentRequestPublicEndpointTargetMachineAddresses$outboundSchema + description: z.nullable(z.string()).optional(), + effect: + PersistImportedDeploymentRequestPendingPreparedStackOverrideEffect$outboundSchema + .optional(), + grant: z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackOverrideAwGrant$outboundSchema ), - z.any(), - ]); + label: z.nullable(z.string()).optional(), + }); -export function persistImportedDeploymentRequestPublicEndpointTargetUnionToJSON( - persistImportedDeploymentRequestPublicEndpointTargetUnion: - PersistImportedDeploymentRequestPublicEndpointTargetUnion, +export function persistImportedDeploymentRequestPendingPreparedStackOverrideAwToJSON( + persistImportedDeploymentRequestPendingPreparedStackOverrideAw: + PersistImportedDeploymentRequestPendingPreparedStackOverrideAw, ): string { return JSON.stringify( - PersistImportedDeploymentRequestPublicEndpointTargetUnion$outboundSchema - .parse(persistImportedDeploymentRequestPublicEndpointTargetUnion), + PersistImportedDeploymentRequestPendingPreparedStackOverrideAw$outboundSchema + .parse(persistImportedDeploymentRequestPendingPreparedStackOverrideAw), ); } /** @internal */ -export type PersistImportedDeploymentRequestDomains$Outbound = { - customDomains?: - | { [k: string]: PersistImportedDeploymentRequestCustomDomains$Outbound } - | null - | undefined; - publicEndpointTarget?: - | PersistImportedDeploymentRequestPublicEndpointTargetLoadBalancer$Outbound - | PersistImportedDeploymentRequestPublicEndpointTargetMachineAddresses$Outbound - | any - | null - | undefined; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureResource$Outbound = + { + scope: string; + }; /** @internal */ -export const PersistImportedDeploymentRequestDomains$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestDomains$Outbound, - PersistImportedDeploymentRequestDomains -> = z.object({ - customDomains: z.nullable( - z.record( - z.string(), - z.lazy(() => - PersistImportedDeploymentRequestCustomDomains$outboundSchema - ), - ), - ).optional(), - publicEndpointTarget: z.nullable( - z.union([ - z.lazy(() => - PersistImportedDeploymentRequestPublicEndpointTargetLoadBalancer$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestPublicEndpointTargetMachineAddresses$outboundSchema +export const PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureResource$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureResource$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureResource + > = z.object({ + scope: z.string(), + }); + +export function persistImportedDeploymentRequestPendingPreparedStackOverrideAzureResourceToJSON( + persistImportedDeploymentRequestPendingPreparedStackOverrideAzureResource: + PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureResource, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureResource$outboundSchema + .parse( + persistImportedDeploymentRequestPendingPreparedStackOverrideAzureResource, ), - z.any(), - ]), - ).optional(), -}); + ); +} -export function persistImportedDeploymentRequestDomainsToJSON( - persistImportedDeploymentRequestDomains: - PersistImportedDeploymentRequestDomains, +/** @internal */ +export type PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureStack$Outbound = + { + scope: string; + }; + +/** @internal */ +export const PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureStack$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureStack$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureStack + > = z.object({ + scope: z.string(), + }); + +export function persistImportedDeploymentRequestPendingPreparedStackOverrideAzureStackToJSON( + persistImportedDeploymentRequestPendingPreparedStackOverrideAzureStack: + PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureStack, ): string { return JSON.stringify( - PersistImportedDeploymentRequestDomains$outboundSchema.parse( - persistImportedDeploymentRequestDomains, - ), + PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureStack$outboundSchema + .parse( + persistImportedDeploymentRequestPendingPreparedStackOverrideAzureStack, + ), ); } /** @internal */ -export type PersistImportedDeploymentRequestDomainsUnion$Outbound = - | PersistImportedDeploymentRequestDomains$Outbound - | any; +export type PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureBinding$Outbound = + { + resource?: + | PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureResource$Outbound + | undefined; + stack?: + | PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureStack$Outbound + | undefined; + }; /** @internal */ -export const PersistImportedDeploymentRequestDomainsUnion$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureBinding$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestDomainsUnion$Outbound, - PersistImportedDeploymentRequestDomainsUnion - > = z.union([ - z.lazy(() => PersistImportedDeploymentRequestDomains$outboundSchema), - z.any(), - ]); + PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureBinding$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureBinding + > = z.object({ + resource: z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureResource$outboundSchema + ).optional(), + stack: z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureStack$outboundSchema + ).optional(), + }); -export function persistImportedDeploymentRequestDomainsUnionToJSON( - persistImportedDeploymentRequestDomainsUnion: - PersistImportedDeploymentRequestDomainsUnion, +export function persistImportedDeploymentRequestPendingPreparedStackOverrideAzureBindingToJSON( + persistImportedDeploymentRequestPendingPreparedStackOverrideAzureBinding: + PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureBinding, ): string { return JSON.stringify( - PersistImportedDeploymentRequestDomainsUnion$outboundSchema.parse( - persistImportedDeploymentRequestDomainsUnion, - ), + PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureBinding$outboundSchema + .parse( + persistImportedDeploymentRequestPendingPreparedStackOverrideAzureBinding, + ), ); } /** @internal */ -export type PersistImportedDeploymentRequestExternalBindings$Outbound = {}; +export type PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureGrant$Outbound = + { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; + }; /** @internal */ -export const PersistImportedDeploymentRequestExternalBindings$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureGrant$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestExternalBindings$Outbound, - PersistImportedDeploymentRequestExternalBindings - > = z.object({}); + PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureGrant$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureGrant + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); -export function persistImportedDeploymentRequestExternalBindingsToJSON( - persistImportedDeploymentRequestExternalBindings: - PersistImportedDeploymentRequestExternalBindings, +export function persistImportedDeploymentRequestPendingPreparedStackOverrideAzureGrantToJSON( + persistImportedDeploymentRequestPendingPreparedStackOverrideAzureGrant: + PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureGrant, ): string { return JSON.stringify( - PersistImportedDeploymentRequestExternalBindings$outboundSchema.parse( - persistImportedDeploymentRequestExternalBindings, - ), + PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureGrant$outboundSchema + .parse( + persistImportedDeploymentRequestPendingPreparedStackOverrideAzureGrant, + ), ); } /** @internal */ -export const PersistImportedDeploymentRequestHeartbeats$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestHeartbeats, +export type PersistImportedDeploymentRequestPendingPreparedStackOverrideAzure$Outbound = + { + binding: + PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureBinding$Outbound; + description?: string | null | undefined; + grant: + PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureGrant$Outbound; + label?: string | null | undefined; + }; + +/** @internal */ +export const PersistImportedDeploymentRequestPendingPreparedStackOverrideAzure$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestPendingPreparedStackOverrideAzure$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackOverrideAzure + > = z.object({ + binding: z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackOverrideAzureGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function persistImportedDeploymentRequestPendingPreparedStackOverrideAzureToJSON( + persistImportedDeploymentRequestPendingPreparedStackOverrideAzure: + PersistImportedDeploymentRequestPendingPreparedStackOverrideAzure, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestPendingPreparedStackOverrideAzure$outboundSchema + .parse(persistImportedDeploymentRequestPendingPreparedStackOverrideAzure), ); +} /** @internal */ -export type PersistImportedDeploymentRequestCloud$Outbound = { - accountId?: string | null | undefined; - clusterId?: string | null | undefined; - clusterName?: string | null | undefined; - projectId?: string | null | undefined; - region?: string | null | undefined; - resourceGroup?: string | null | undefined; - subscriptionId?: string | null | undefined; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackOverrideConditionResource$Outbound = + { + expression: string; + title: string; + }; /** @internal */ -export const PersistImportedDeploymentRequestCloud$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestCloud$Outbound, - PersistImportedDeploymentRequestCloud -> = z.object({ - accountId: z.nullable(z.string()).optional(), - clusterId: z.nullable(z.string()).optional(), - clusterName: z.nullable(z.string()).optional(), - projectId: z.nullable(z.string()).optional(), - region: z.nullable(z.string()).optional(), - resourceGroup: z.nullable(z.string()).optional(), - subscriptionId: z.nullable(z.string()).optional(), -}); +export const PersistImportedDeploymentRequestPendingPreparedStackOverrideConditionResource$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestPendingPreparedStackOverrideConditionResource$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackOverrideConditionResource + > = z.object({ + expression: z.string(), + title: z.string(), + }); -export function persistImportedDeploymentRequestCloudToJSON( - persistImportedDeploymentRequestCloud: PersistImportedDeploymentRequestCloud, +export function persistImportedDeploymentRequestPendingPreparedStackOverrideConditionResourceToJSON( + persistImportedDeploymentRequestPendingPreparedStackOverrideConditionResource: + PersistImportedDeploymentRequestPendingPreparedStackOverrideConditionResource, ): string { return JSON.stringify( - PersistImportedDeploymentRequestCloud$outboundSchema.parse( - persistImportedDeploymentRequestCloud, - ), + PersistImportedDeploymentRequestPendingPreparedStackOverrideConditionResource$outboundSchema + .parse( + persistImportedDeploymentRequestPendingPreparedStackOverrideConditionResource, + ), ); } /** @internal */ -export type PersistImportedDeploymentRequestCloudUnion$Outbound = - | PersistImportedDeploymentRequestCloud$Outbound +export type PersistImportedDeploymentRequestPendingPreparedStackOverrideResourceConditionUnion$Outbound = + | PersistImportedDeploymentRequestPendingPreparedStackOverrideConditionResource$Outbound | any; /** @internal */ -export const PersistImportedDeploymentRequestCloudUnion$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackOverrideResourceConditionUnion$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestCloudUnion$Outbound, - PersistImportedDeploymentRequestCloudUnion + PersistImportedDeploymentRequestPendingPreparedStackOverrideResourceConditionUnion$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackOverrideResourceConditionUnion > = z.union([ - z.lazy(() => PersistImportedDeploymentRequestCloud$outboundSchema), + z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackOverrideConditionResource$outboundSchema + ), z.any(), ]); -export function persistImportedDeploymentRequestCloudUnionToJSON( - persistImportedDeploymentRequestCloudUnion: - PersistImportedDeploymentRequestCloudUnion, +export function persistImportedDeploymentRequestPendingPreparedStackOverrideResourceConditionUnionToJSON( + persistImportedDeploymentRequestPendingPreparedStackOverrideResourceConditionUnion: + PersistImportedDeploymentRequestPendingPreparedStackOverrideResourceConditionUnion, ): string { return JSON.stringify( - PersistImportedDeploymentRequestCloudUnion$outboundSchema.parse( - persistImportedDeploymentRequestCloudUnion, - ), + PersistImportedDeploymentRequestPendingPreparedStackOverrideResourceConditionUnion$outboundSchema + .parse( + persistImportedDeploymentRequestPendingPreparedStackOverrideResourceConditionUnion, + ), ); } /** @internal */ -export const PersistImportedDeploymentRequestOwnership$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestOwnership, +export type PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpResource$Outbound = + { + condition?: + | PersistImportedDeploymentRequestPendingPreparedStackOverrideConditionResource$Outbound + | any + | null + | undefined; + scope: string; + }; + +/** @internal */ +export const PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpResource$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpResource$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpResource + > = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackOverrideConditionResource$outboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function persistImportedDeploymentRequestPendingPreparedStackOverrideGcpResourceToJSON( + persistImportedDeploymentRequestPendingPreparedStackOverrideGcpResource: + PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpResource, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpResource$outboundSchema + .parse( + persistImportedDeploymentRequestPendingPreparedStackOverrideGcpResource, + ), ); +} /** @internal */ -export type PersistImportedDeploymentRequestCluster$Outbound = { - cloud?: - | PersistImportedDeploymentRequestCloud$Outbound - | any - | null - | undefined; - namespace?: string | null | undefined; - ownership: string; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackOverrideConditionStack$Outbound = + { + expression: string; + title: string; + }; /** @internal */ -export const PersistImportedDeploymentRequestCluster$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestCluster$Outbound, - PersistImportedDeploymentRequestCluster -> = z.object({ - cloud: z.nullable( - z.union([ - z.lazy(() => PersistImportedDeploymentRequestCloud$outboundSchema), - z.any(), - ]), - ).optional(), - namespace: z.nullable(z.string()).optional(), - ownership: PersistImportedDeploymentRequestOwnership$outboundSchema, -}); +export const PersistImportedDeploymentRequestPendingPreparedStackOverrideConditionStack$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestPendingPreparedStackOverrideConditionStack$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackOverrideConditionStack + > = z.object({ + expression: z.string(), + title: z.string(), + }); -export function persistImportedDeploymentRequestClusterToJSON( - persistImportedDeploymentRequestCluster: - PersistImportedDeploymentRequestCluster, +export function persistImportedDeploymentRequestPendingPreparedStackOverrideConditionStackToJSON( + persistImportedDeploymentRequestPendingPreparedStackOverrideConditionStack: + PersistImportedDeploymentRequestPendingPreparedStackOverrideConditionStack, ): string { return JSON.stringify( - PersistImportedDeploymentRequestCluster$outboundSchema.parse( - persistImportedDeploymentRequestCluster, - ), + PersistImportedDeploymentRequestPendingPreparedStackOverrideConditionStack$outboundSchema + .parse( + persistImportedDeploymentRequestPendingPreparedStackOverrideConditionStack, + ), ); } /** @internal */ -export type PersistImportedDeploymentRequestClusterUnion$Outbound = - | PersistImportedDeploymentRequestCluster$Outbound +export type PersistImportedDeploymentRequestPendingPreparedStackOverrideStackConditionUnion$Outbound = + | PersistImportedDeploymentRequestPendingPreparedStackOverrideConditionStack$Outbound | any; /** @internal */ -export const PersistImportedDeploymentRequestClusterUnion$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackOverrideStackConditionUnion$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestClusterUnion$Outbound, - PersistImportedDeploymentRequestClusterUnion + PersistImportedDeploymentRequestPendingPreparedStackOverrideStackConditionUnion$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackOverrideStackConditionUnion > = z.union([ - z.lazy(() => PersistImportedDeploymentRequestCluster$outboundSchema), + z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackOverrideConditionStack$outboundSchema + ), z.any(), ]); -export function persistImportedDeploymentRequestClusterUnionToJSON( - persistImportedDeploymentRequestClusterUnion: - PersistImportedDeploymentRequestClusterUnion, +export function persistImportedDeploymentRequestPendingPreparedStackOverrideStackConditionUnionToJSON( + persistImportedDeploymentRequestPendingPreparedStackOverrideStackConditionUnion: + PersistImportedDeploymentRequestPendingPreparedStackOverrideStackConditionUnion, ): string { return JSON.stringify( - PersistImportedDeploymentRequestClusterUnion$outboundSchema.parse( - persistImportedDeploymentRequestClusterUnion, - ), + PersistImportedDeploymentRequestPendingPreparedStackOverrideStackConditionUnion$outboundSchema + .parse( + persistImportedDeploymentRequestPendingPreparedStackOverrideStackConditionUnion, + ), ); } /** @internal */ -export type PersistImportedDeploymentRequestCertificateNone2$Outbound = { - mode: "none"; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpStack$Outbound = + { + condition?: + | PersistImportedDeploymentRequestPendingPreparedStackOverrideConditionStack$Outbound + | any + | null + | undefined; + scope: string; + }; /** @internal */ -export const PersistImportedDeploymentRequestCertificateNone2$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpStack$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestCertificateNone2$Outbound, - PersistImportedDeploymentRequestCertificateNone2 + PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpStack$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpStack > = z.object({ - mode: z.literal("none"), + condition: z.nullable( + z.union([ + z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackOverrideConditionStack$outboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), }); -export function persistImportedDeploymentRequestCertificateNone2ToJSON( - persistImportedDeploymentRequestCertificateNone2: - PersistImportedDeploymentRequestCertificateNone2, +export function persistImportedDeploymentRequestPendingPreparedStackOverrideGcpStackToJSON( + persistImportedDeploymentRequestPendingPreparedStackOverrideGcpStack: + PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpStack, ): string { return JSON.stringify( - PersistImportedDeploymentRequestCertificateNone2$outboundSchema.parse( - persistImportedDeploymentRequestCertificateNone2, - ), + PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpStack$outboundSchema + .parse( + persistImportedDeploymentRequestPendingPreparedStackOverrideGcpStack, + ), ); } /** @internal */ -export type PersistImportedDeploymentRequestCertificateManagedTLSSecret2$Outbound = +export type PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpBinding$Outbound = { - mode: "managedTlsSecret"; - secretNameTemplate: string; + resource?: + | PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpResource$Outbound + | undefined; + stack?: + | PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpStack$Outbound + | undefined; }; /** @internal */ -export const PersistImportedDeploymentRequestCertificateManagedTLSSecret2$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpBinding$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpBinding$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpBinding + > = z.object({ + resource: z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpResource$outboundSchema + ).optional(), + stack: z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpStack$outboundSchema + ).optional(), + }); + +export function persistImportedDeploymentRequestPendingPreparedStackOverrideGcpBindingToJSON( + persistImportedDeploymentRequestPendingPreparedStackOverrideGcpBinding: + PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpBinding, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpBinding$outboundSchema + .parse( + persistImportedDeploymentRequestPendingPreparedStackOverrideGcpBinding, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpGrant$Outbound = + { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; + }; + +/** @internal */ +export const PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpGrant$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestCertificateManagedTLSSecret2$Outbound, - PersistImportedDeploymentRequestCertificateManagedTLSSecret2 + PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpGrant$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpGrant > = z.object({ - mode: z.literal("managedTlsSecret"), - secretNameTemplate: z.string(), + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function persistImportedDeploymentRequestCertificateManagedTLSSecret2ToJSON( - persistImportedDeploymentRequestCertificateManagedTLSSecret2: - PersistImportedDeploymentRequestCertificateManagedTLSSecret2, +export function persistImportedDeploymentRequestPendingPreparedStackOverrideGcpGrantToJSON( + persistImportedDeploymentRequestPendingPreparedStackOverrideGcpGrant: + PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpGrant, ): string { return JSON.stringify( - PersistImportedDeploymentRequestCertificateManagedTLSSecret2$outboundSchema - .parse(persistImportedDeploymentRequestCertificateManagedTLSSecret2), + PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpGrant$outboundSchema + .parse( + persistImportedDeploymentRequestPendingPreparedStackOverrideGcpGrant, + ), ); } /** @internal */ -export type PersistImportedDeploymentRequestCertificateAwsAcmArn2$Outbound = { - certificateArn: string; - mode: "awsAcmArn"; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackOverrideGcp$Outbound = + { + binding: + PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpBinding$Outbound; + description?: string | null | undefined; + grant: + PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpGrant$Outbound; + label?: string | null | undefined; + }; /** @internal */ -export const PersistImportedDeploymentRequestCertificateAwsAcmArn2$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackOverrideGcp$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestCertificateAwsAcmArn2$Outbound, - PersistImportedDeploymentRequestCertificateAwsAcmArn2 + PersistImportedDeploymentRequestPendingPreparedStackOverrideGcp$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackOverrideGcp > = z.object({ - certificateArn: z.string(), - mode: z.literal("awsAcmArn"), + binding: z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackOverrideGcpGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), }); -export function persistImportedDeploymentRequestCertificateAwsAcmArn2ToJSON( - persistImportedDeploymentRequestCertificateAwsAcmArn2: - PersistImportedDeploymentRequestCertificateAwsAcmArn2, +export function persistImportedDeploymentRequestPendingPreparedStackOverrideGcpToJSON( + persistImportedDeploymentRequestPendingPreparedStackOverrideGcp: + PersistImportedDeploymentRequestPendingPreparedStackOverrideGcp, ): string { return JSON.stringify( - PersistImportedDeploymentRequestCertificateAwsAcmArn2$outboundSchema.parse( - persistImportedDeploymentRequestCertificateAwsAcmArn2, - ), + PersistImportedDeploymentRequestPendingPreparedStackOverrideGcp$outboundSchema + .parse(persistImportedDeploymentRequestPendingPreparedStackOverrideGcp), ); } /** @internal */ -export type PersistImportedDeploymentRequestCertificateManagedAcmImport2$Outbound = +export type PersistImportedDeploymentRequestPendingPreparedStackOverridePlatforms$Outbound = { - mode: "managedAcmImport"; - region?: string | null | undefined; - tags?: { [k: string]: string } | undefined; + aws?: + | Array< + PersistImportedDeploymentRequestPendingPreparedStackOverrideAw$Outbound + > + | null + | undefined; + azure?: + | Array< + PersistImportedDeploymentRequestPendingPreparedStackOverrideAzure$Outbound + > + | null + | undefined; + gcp?: + | Array< + PersistImportedDeploymentRequestPendingPreparedStackOverrideGcp$Outbound + > + | null + | undefined; }; /** @internal */ -export const PersistImportedDeploymentRequestCertificateManagedAcmImport2$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackOverridePlatforms$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestCertificateManagedAcmImport2$Outbound, - PersistImportedDeploymentRequestCertificateManagedAcmImport2 + PersistImportedDeploymentRequestPendingPreparedStackOverridePlatforms$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackOverridePlatforms > = z.object({ - mode: z.literal("managedAcmImport"), - region: z.nullable(z.string()).optional(), - tags: z.record(z.string(), z.string()).optional(), + aws: z.nullable( + z.array(z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackOverrideAw$outboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackOverrideAzure$outboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackOverrideGcp$outboundSchema + )), + ).optional(), }); -export function persistImportedDeploymentRequestCertificateManagedAcmImport2ToJSON( - persistImportedDeploymentRequestCertificateManagedAcmImport2: - PersistImportedDeploymentRequestCertificateManagedAcmImport2, +export function persistImportedDeploymentRequestPendingPreparedStackOverridePlatformsToJSON( + persistImportedDeploymentRequestPendingPreparedStackOverridePlatforms: + PersistImportedDeploymentRequestPendingPreparedStackOverridePlatforms, ): string { return JSON.stringify( - PersistImportedDeploymentRequestCertificateManagedAcmImport2$outboundSchema - .parse(persistImportedDeploymentRequestCertificateManagedAcmImport2), + PersistImportedDeploymentRequestPendingPreparedStackOverridePlatforms$outboundSchema + .parse( + persistImportedDeploymentRequestPendingPreparedStackOverridePlatforms, + ), ); } /** @internal */ -export type PersistImportedDeploymentRequestCertificateTLSSecretRef2$Outbound = +export type PersistImportedDeploymentRequestPendingPreparedStackOverride$Outbound = { - namespace?: string | null | undefined; - secretName: string; - mode: "tlsSecretRef"; + description: string; + id: string; + platforms: + PersistImportedDeploymentRequestPendingPreparedStackOverridePlatforms$Outbound; }; /** @internal */ -export const PersistImportedDeploymentRequestCertificateTLSSecretRef2$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackOverride$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestCertificateTLSSecretRef2$Outbound, - PersistImportedDeploymentRequestCertificateTLSSecretRef2 + PersistImportedDeploymentRequestPendingPreparedStackOverride$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackOverride > = z.object({ - namespace: z.nullable(z.string()).optional(), - secretName: z.string(), - mode: z.literal("tlsSecretRef"), + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackOverridePlatforms$outboundSchema + ), }); -export function persistImportedDeploymentRequestCertificateTLSSecretRef2ToJSON( - persistImportedDeploymentRequestCertificateTLSSecretRef2: - PersistImportedDeploymentRequestCertificateTLSSecretRef2, +export function persistImportedDeploymentRequestPendingPreparedStackOverrideToJSON( + persistImportedDeploymentRequestPendingPreparedStackOverride: + PersistImportedDeploymentRequestPendingPreparedStackOverride, ): string { return JSON.stringify( - PersistImportedDeploymentRequestCertificateTLSSecretRef2$outboundSchema - .parse(persistImportedDeploymentRequestCertificateTLSSecretRef2), + PersistImportedDeploymentRequestPendingPreparedStackOverride$outboundSchema + .parse(persistImportedDeploymentRequestPendingPreparedStackOverride), ); } /** @internal */ -export type PersistImportedDeploymentRequestCertificateUnion2$Outbound = - | PersistImportedDeploymentRequestCertificateTLSSecretRef2$Outbound - | PersistImportedDeploymentRequestCertificateManagedAcmImport2$Outbound - | PersistImportedDeploymentRequestCertificateAwsAcmArn2$Outbound - | PersistImportedDeploymentRequestCertificateManagedTLSSecret2$Outbound - | PersistImportedDeploymentRequestCertificateNone2$Outbound; +export type PersistImportedDeploymentRequestPendingPreparedStackOverrideUnion$Outbound = + | PersistImportedDeploymentRequestPendingPreparedStackOverride$Outbound + | string; /** @internal */ -export const PersistImportedDeploymentRequestCertificateUnion2$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackOverrideUnion$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestCertificateUnion2$Outbound, - PersistImportedDeploymentRequestCertificateUnion2 + PersistImportedDeploymentRequestPendingPreparedStackOverrideUnion$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackOverrideUnion > = z.union([ z.lazy(() => - PersistImportedDeploymentRequestCertificateTLSSecretRef2$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestCertificateManagedAcmImport2$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestCertificateAwsAcmArn2$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestCertificateManagedTLSSecret2$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestCertificateNone2$outboundSchema + PersistImportedDeploymentRequestPendingPreparedStackOverride$outboundSchema ), + z.string(), ]); -export function persistImportedDeploymentRequestCertificateUnion2ToJSON( - persistImportedDeploymentRequestCertificateUnion2: - PersistImportedDeploymentRequestCertificateUnion2, +export function persistImportedDeploymentRequestPendingPreparedStackOverrideUnionToJSON( + persistImportedDeploymentRequestPendingPreparedStackOverrideUnion: + PersistImportedDeploymentRequestPendingPreparedStackOverrideUnion, ): string { return JSON.stringify( - PersistImportedDeploymentRequestCertificateUnion2$outboundSchema.parse( - persistImportedDeploymentRequestCertificateUnion2, - ), + PersistImportedDeploymentRequestPendingPreparedStackOverrideUnion$outboundSchema + .parse(persistImportedDeploymentRequestPendingPreparedStackOverrideUnion), ); } /** @internal */ -export const PersistImportedDeploymentRequestModeCustom$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestModeCustom, - ); +export type PersistImportedDeploymentRequestPendingPreparedStackManagement2$Outbound = + { + override: { + [k: string]: Array< + | PersistImportedDeploymentRequestPendingPreparedStackOverride$Outbound + | string + >; + }; + }; /** @internal */ -export const PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum4$outboundSchema: - z.ZodEnum< - typeof PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum4 - > = z.enum( - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum4, +export const PersistImportedDeploymentRequestPendingPreparedStackManagement2$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestPendingPreparedStackManagement2$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackManagement2 + > = z.object({ + override: z.record( + z.string(), + z.array(z.union([ + z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackOverride$outboundSchema + ), + z.string(), + ])), + ), + }); + +export function persistImportedDeploymentRequestPendingPreparedStackManagement2ToJSON( + persistImportedDeploymentRequestPendingPreparedStackManagement2: + PersistImportedDeploymentRequestPendingPreparedStackManagement2, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestPendingPreparedStackManagement2$outboundSchema + .parse(persistImportedDeploymentRequestPendingPreparedStackManagement2), ); +} /** @internal */ -export type PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4$Outbound = +export type PersistImportedDeploymentRequestPendingPreparedStackExtendAwResource$Outbound = { - albName?: string | null | undefined; - albNamespace?: string | null | undefined; - frontend: string; - provider: string; + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + resources: Array; }; /** @internal */ -export const PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackExtendAwResource$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4$Outbound, - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4 + PersistImportedDeploymentRequestPendingPreparedStackExtendAwResource$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackExtendAwResource > = z.object({ - albName: z.nullable(z.string()).optional(), - albNamespace: z.nullable(z.string()).optional(), - frontend: z.string(), - provider: - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum4$outboundSchema, + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), }); -export function persistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4ToJSON( - persistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4: - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4, +export function persistImportedDeploymentRequestPendingPreparedStackExtendAwResourceToJSON( + persistImportedDeploymentRequestPendingPreparedStackExtendAwResource: + PersistImportedDeploymentRequestPendingPreparedStackExtendAwResource, ): string { return JSON.stringify( - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4$outboundSchema + PersistImportedDeploymentRequestPendingPreparedStackExtendAwResource$outboundSchema .parse( - persistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4, + persistImportedDeploymentRequestPendingPreparedStackExtendAwResource, ), ); } /** @internal */ -export const PersistImportedDeploymentRequestProviderGkeGatewayEnum4$outboundSchema: - z.ZodEnum = z - .enum(PersistImportedDeploymentRequestProviderGkeGatewayEnum4); - -/** @internal */ -export type PersistImportedDeploymentRequestProviderGkeGateway4$Outbound = { - provider: string; - staticAddressName?: string | null | undefined; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackExtendAwStack$Outbound = + { + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + resources: Array; + }; /** @internal */ -export const PersistImportedDeploymentRequestProviderGkeGateway4$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackExtendAwStack$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestProviderGkeGateway4$Outbound, - PersistImportedDeploymentRequestProviderGkeGateway4 + PersistImportedDeploymentRequestPendingPreparedStackExtendAwStack$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackExtendAwStack > = z.object({ - provider: - PersistImportedDeploymentRequestProviderGkeGatewayEnum4$outboundSchema, - staticAddressName: z.nullable(z.string()).optional(), + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), }); -export function persistImportedDeploymentRequestProviderGkeGateway4ToJSON( - persistImportedDeploymentRequestProviderGkeGateway4: - PersistImportedDeploymentRequestProviderGkeGateway4, +export function persistImportedDeploymentRequestPendingPreparedStackExtendAwStackToJSON( + persistImportedDeploymentRequestPendingPreparedStackExtendAwStack: + PersistImportedDeploymentRequestPendingPreparedStackExtendAwStack, ): string { return JSON.stringify( - PersistImportedDeploymentRequestProviderGkeGateway4$outboundSchema.parse( - persistImportedDeploymentRequestProviderGkeGateway4, - ), + PersistImportedDeploymentRequestPendingPreparedStackExtendAwStack$outboundSchema + .parse(persistImportedDeploymentRequestPendingPreparedStackExtendAwStack), ); } /** @internal */ -export const PersistImportedDeploymentRequestProviderAwsAlbEnum4$outboundSchema: - z.ZodEnum = z - .enum(PersistImportedDeploymentRequestProviderAwsAlbEnum4); - -/** @internal */ -export type PersistImportedDeploymentRequestProviderAwsAlb4$Outbound = { - ipAddressType?: string | null | undefined; - provider: string; - scheme: string; - subnetIds?: Array | undefined; - targetType: string; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackExtendAwBinding$Outbound = + { + resource?: + | PersistImportedDeploymentRequestPendingPreparedStackExtendAwResource$Outbound + | undefined; + stack?: + | PersistImportedDeploymentRequestPendingPreparedStackExtendAwStack$Outbound + | undefined; + }; /** @internal */ -export const PersistImportedDeploymentRequestProviderAwsAlb4$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackExtendAwBinding$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestProviderAwsAlb4$Outbound, - PersistImportedDeploymentRequestProviderAwsAlb4 + PersistImportedDeploymentRequestPendingPreparedStackExtendAwBinding$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackExtendAwBinding > = z.object({ - ipAddressType: z.nullable(z.string()).optional(), - provider: - PersistImportedDeploymentRequestProviderAwsAlbEnum4$outboundSchema, - scheme: z.string(), - subnetIds: z.array(z.string()).optional(), - targetType: z.string(), + resource: z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackExtendAwResource$outboundSchema + ).optional(), + stack: z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackExtendAwStack$outboundSchema + ).optional(), }); -export function persistImportedDeploymentRequestProviderAwsAlb4ToJSON( - persistImportedDeploymentRequestProviderAwsAlb4: - PersistImportedDeploymentRequestProviderAwsAlb4, +export function persistImportedDeploymentRequestPendingPreparedStackExtendAwBindingToJSON( + persistImportedDeploymentRequestPendingPreparedStackExtendAwBinding: + PersistImportedDeploymentRequestPendingPreparedStackExtendAwBinding, ): string { return JSON.stringify( - PersistImportedDeploymentRequestProviderAwsAlb4$outboundSchema.parse( - persistImportedDeploymentRequestProviderAwsAlb4, - ), + PersistImportedDeploymentRequestPendingPreparedStackExtendAwBinding$outboundSchema + .parse( + persistImportedDeploymentRequestPendingPreparedStackExtendAwBinding, + ), ); } /** @internal */ -export type PersistImportedDeploymentRequestProviderUnion4$Outbound = - | PersistImportedDeploymentRequestProviderAwsAlb4$Outbound - | PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4$Outbound - | PersistImportedDeploymentRequestProviderGkeGateway4$Outbound - | any; +export const PersistImportedDeploymentRequestPendingPreparedStackExtendEffect$outboundSchema: + z.ZodEnum< + typeof PersistImportedDeploymentRequestPendingPreparedStackExtendEffect + > = z.enum(PersistImportedDeploymentRequestPendingPreparedStackExtendEffect); /** @internal */ -export const PersistImportedDeploymentRequestProviderUnion4$outboundSchema: +export type PersistImportedDeploymentRequestPendingPreparedStackExtendAwGrant$Outbound = + { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; + }; + +/** @internal */ +export const PersistImportedDeploymentRequestPendingPreparedStackExtendAwGrant$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestProviderUnion4$Outbound, - PersistImportedDeploymentRequestProviderUnion4 - > = z.union([ - z.lazy(() => - PersistImportedDeploymentRequestProviderAwsAlb4$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestProviderGkeGateway4$outboundSchema - ), - z.any(), - ]); + PersistImportedDeploymentRequestPendingPreparedStackExtendAwGrant$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackExtendAwGrant + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); -export function persistImportedDeploymentRequestProviderUnion4ToJSON( - persistImportedDeploymentRequestProviderUnion4: - PersistImportedDeploymentRequestProviderUnion4, +export function persistImportedDeploymentRequestPendingPreparedStackExtendAwGrantToJSON( + persistImportedDeploymentRequestPendingPreparedStackExtendAwGrant: + PersistImportedDeploymentRequestPendingPreparedStackExtendAwGrant, ): string { return JSON.stringify( - PersistImportedDeploymentRequestProviderUnion4$outboundSchema.parse( - persistImportedDeploymentRequestProviderUnion4, - ), + PersistImportedDeploymentRequestPendingPreparedStackExtendAwGrant$outboundSchema + .parse(persistImportedDeploymentRequestPendingPreparedStackExtendAwGrant), ); } /** @internal */ -export type PersistImportedDeploymentRequestRouteGateway2$Outbound = { - annotations?: { [k: string]: string } | undefined; - controller?: string | null | undefined; - gatewayClassName: string; - labels?: { [k: string]: string } | undefined; - listenerPort: number; - provider?: - | PersistImportedDeploymentRequestProviderAwsAlb4$Outbound - | PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4$Outbound - | PersistImportedDeploymentRequestProviderGkeGateway4$Outbound - | any - | null - | undefined; - routeApi: "gateway"; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackExtendAw$Outbound = + { + binding: + PersistImportedDeploymentRequestPendingPreparedStackExtendAwBinding$Outbound; + description?: string | null | undefined; + effect?: string | undefined; + grant: + PersistImportedDeploymentRequestPendingPreparedStackExtendAwGrant$Outbound; + label?: string | null | undefined; + }; /** @internal */ -export const PersistImportedDeploymentRequestRouteGateway2$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackExtendAw$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestRouteGateway2$Outbound, - PersistImportedDeploymentRequestRouteGateway2 + PersistImportedDeploymentRequestPendingPreparedStackExtendAw$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackExtendAw > = z.object({ - annotations: z.record(z.string(), z.string()).optional(), - controller: z.nullable(z.string()).optional(), - gatewayClassName: z.string(), - labels: z.record(z.string(), z.string()).optional(), - listenerPort: z.int(), - provider: z.nullable( - z.union([ - z.lazy(() => - PersistImportedDeploymentRequestProviderAwsAlb4$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestProviderGkeGateway4$outboundSchema - ), - z.any(), - ]), - ).optional(), - routeApi: z.literal("gateway"), + binding: z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackExtendAwBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: + PersistImportedDeploymentRequestPendingPreparedStackExtendEffect$outboundSchema + .optional(), + grant: z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackExtendAwGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), }); -export function persistImportedDeploymentRequestRouteGateway2ToJSON( - persistImportedDeploymentRequestRouteGateway2: - PersistImportedDeploymentRequestRouteGateway2, +export function persistImportedDeploymentRequestPendingPreparedStackExtendAwToJSON( + persistImportedDeploymentRequestPendingPreparedStackExtendAw: + PersistImportedDeploymentRequestPendingPreparedStackExtendAw, ): string { return JSON.stringify( - PersistImportedDeploymentRequestRouteGateway2$outboundSchema.parse( - persistImportedDeploymentRequestRouteGateway2, - ), + PersistImportedDeploymentRequestPendingPreparedStackExtendAw$outboundSchema + .parse(persistImportedDeploymentRequestPendingPreparedStackExtendAw), ); } /** @internal */ -export const PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum3$outboundSchema: - z.ZodEnum< - typeof PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum3 - > = z.enum( - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum3, +export type PersistImportedDeploymentRequestPendingPreparedStackExtendAzureResource$Outbound = + { + scope: string; + }; + +/** @internal */ +export const PersistImportedDeploymentRequestPendingPreparedStackExtendAzureResource$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestPendingPreparedStackExtendAzureResource$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackExtendAzureResource + > = z.object({ + scope: z.string(), + }); + +export function persistImportedDeploymentRequestPendingPreparedStackExtendAzureResourceToJSON( + persistImportedDeploymentRequestPendingPreparedStackExtendAzureResource: + PersistImportedDeploymentRequestPendingPreparedStackExtendAzureResource, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestPendingPreparedStackExtendAzureResource$outboundSchema + .parse( + persistImportedDeploymentRequestPendingPreparedStackExtendAzureResource, + ), ); +} /** @internal */ -export type PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3$Outbound = +export type PersistImportedDeploymentRequestPendingPreparedStackExtendAzureStack$Outbound = { - albName?: string | null | undefined; - albNamespace?: string | null | undefined; - frontend: string; - provider: string; + scope: string; }; /** @internal */ -export const PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackExtendAzureStack$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3$Outbound, - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3 + PersistImportedDeploymentRequestPendingPreparedStackExtendAzureStack$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackExtendAzureStack > = z.object({ - albName: z.nullable(z.string()).optional(), - albNamespace: z.nullable(z.string()).optional(), - frontend: z.string(), - provider: - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum3$outboundSchema, + scope: z.string(), }); -export function persistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3ToJSON( - persistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3: - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3, +export function persistImportedDeploymentRequestPendingPreparedStackExtendAzureStackToJSON( + persistImportedDeploymentRequestPendingPreparedStackExtendAzureStack: + PersistImportedDeploymentRequestPendingPreparedStackExtendAzureStack, ): string { return JSON.stringify( - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3$outboundSchema + PersistImportedDeploymentRequestPendingPreparedStackExtendAzureStack$outboundSchema .parse( - persistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3, + persistImportedDeploymentRequestPendingPreparedStackExtendAzureStack, ), ); } /** @internal */ -export const PersistImportedDeploymentRequestProviderGkeGatewayEnum3$outboundSchema: - z.ZodEnum = z - .enum(PersistImportedDeploymentRequestProviderGkeGatewayEnum3); - -/** @internal */ -export type PersistImportedDeploymentRequestProviderGkeGateway3$Outbound = { - provider: string; - staticAddressName?: string | null | undefined; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackExtendAzureBinding$Outbound = + { + resource?: + | PersistImportedDeploymentRequestPendingPreparedStackExtendAzureResource$Outbound + | undefined; + stack?: + | PersistImportedDeploymentRequestPendingPreparedStackExtendAzureStack$Outbound + | undefined; + }; /** @internal */ -export const PersistImportedDeploymentRequestProviderGkeGateway3$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackExtendAzureBinding$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestProviderGkeGateway3$Outbound, - PersistImportedDeploymentRequestProviderGkeGateway3 + PersistImportedDeploymentRequestPendingPreparedStackExtendAzureBinding$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackExtendAzureBinding > = z.object({ - provider: - PersistImportedDeploymentRequestProviderGkeGatewayEnum3$outboundSchema, - staticAddressName: z.nullable(z.string()).optional(), + resource: z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackExtendAzureResource$outboundSchema + ).optional(), + stack: z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackExtendAzureStack$outboundSchema + ).optional(), }); -export function persistImportedDeploymentRequestProviderGkeGateway3ToJSON( - persistImportedDeploymentRequestProviderGkeGateway3: - PersistImportedDeploymentRequestProviderGkeGateway3, +export function persistImportedDeploymentRequestPendingPreparedStackExtendAzureBindingToJSON( + persistImportedDeploymentRequestPendingPreparedStackExtendAzureBinding: + PersistImportedDeploymentRequestPendingPreparedStackExtendAzureBinding, ): string { return JSON.stringify( - PersistImportedDeploymentRequestProviderGkeGateway3$outboundSchema.parse( - persistImportedDeploymentRequestProviderGkeGateway3, - ), + PersistImportedDeploymentRequestPendingPreparedStackExtendAzureBinding$outboundSchema + .parse( + persistImportedDeploymentRequestPendingPreparedStackExtendAzureBinding, + ), ); } /** @internal */ -export const PersistImportedDeploymentRequestProviderAwsAlbEnum3$outboundSchema: - z.ZodEnum = z - .enum(PersistImportedDeploymentRequestProviderAwsAlbEnum3); - -/** @internal */ -export type PersistImportedDeploymentRequestProviderAwsAlb3$Outbound = { - ipAddressType?: string | null | undefined; - provider: string; - scheme: string; - subnetIds?: Array | undefined; - targetType: string; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackExtendAzureGrant$Outbound = + { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; + }; /** @internal */ -export const PersistImportedDeploymentRequestProviderAwsAlb3$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackExtendAzureGrant$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestProviderAwsAlb3$Outbound, - PersistImportedDeploymentRequestProviderAwsAlb3 + PersistImportedDeploymentRequestPendingPreparedStackExtendAzureGrant$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackExtendAzureGrant > = z.object({ - ipAddressType: z.nullable(z.string()).optional(), - provider: - PersistImportedDeploymentRequestProviderAwsAlbEnum3$outboundSchema, - scheme: z.string(), - subnetIds: z.array(z.string()).optional(), - targetType: z.string(), + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function persistImportedDeploymentRequestProviderAwsAlb3ToJSON( - persistImportedDeploymentRequestProviderAwsAlb3: - PersistImportedDeploymentRequestProviderAwsAlb3, +export function persistImportedDeploymentRequestPendingPreparedStackExtendAzureGrantToJSON( + persistImportedDeploymentRequestPendingPreparedStackExtendAzureGrant: + PersistImportedDeploymentRequestPendingPreparedStackExtendAzureGrant, ): string { return JSON.stringify( - PersistImportedDeploymentRequestProviderAwsAlb3$outboundSchema.parse( - persistImportedDeploymentRequestProviderAwsAlb3, - ), + PersistImportedDeploymentRequestPendingPreparedStackExtendAzureGrant$outboundSchema + .parse( + persistImportedDeploymentRequestPendingPreparedStackExtendAzureGrant, + ), ); } /** @internal */ -export type PersistImportedDeploymentRequestProviderUnion3$Outbound = - | PersistImportedDeploymentRequestProviderAwsAlb3$Outbound - | PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3$Outbound - | PersistImportedDeploymentRequestProviderGkeGateway3$Outbound - | any; +export type PersistImportedDeploymentRequestPendingPreparedStackExtendAzure$Outbound = + { + binding: + PersistImportedDeploymentRequestPendingPreparedStackExtendAzureBinding$Outbound; + description?: string | null | undefined; + grant: + PersistImportedDeploymentRequestPendingPreparedStackExtendAzureGrant$Outbound; + label?: string | null | undefined; + }; /** @internal */ -export const PersistImportedDeploymentRequestProviderUnion3$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackExtendAzure$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestProviderUnion3$Outbound, - PersistImportedDeploymentRequestProviderUnion3 - > = z.union([ - z.lazy(() => - PersistImportedDeploymentRequestProviderAwsAlb3$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3$outboundSchema + PersistImportedDeploymentRequestPendingPreparedStackExtendAzure$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackExtendAzure + > = z.object({ + binding: z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackExtendAzureBinding$outboundSchema ), - z.lazy(() => - PersistImportedDeploymentRequestProviderGkeGateway3$outboundSchema + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackExtendAzureGrant$outboundSchema ), - z.any(), - ]); + label: z.nullable(z.string()).optional(), + }); -export function persistImportedDeploymentRequestProviderUnion3ToJSON( - persistImportedDeploymentRequestProviderUnion3: - PersistImportedDeploymentRequestProviderUnion3, +export function persistImportedDeploymentRequestPendingPreparedStackExtendAzureToJSON( + persistImportedDeploymentRequestPendingPreparedStackExtendAzure: + PersistImportedDeploymentRequestPendingPreparedStackExtendAzure, ): string { return JSON.stringify( - PersistImportedDeploymentRequestProviderUnion3$outboundSchema.parse( - persistImportedDeploymentRequestProviderUnion3, - ), + PersistImportedDeploymentRequestPendingPreparedStackExtendAzure$outboundSchema + .parse(persistImportedDeploymentRequestPendingPreparedStackExtendAzure), ); } /** @internal */ -export type PersistImportedDeploymentRequestRouteIngress2$Outbound = { - annotations?: { [k: string]: string } | undefined; - controller?: string | null | undefined; - ingressClassName: string; - labels?: { [k: string]: string } | undefined; - provider?: - | PersistImportedDeploymentRequestProviderAwsAlb3$Outbound - | PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3$Outbound - | PersistImportedDeploymentRequestProviderGkeGateway3$Outbound - | any - | null - | undefined; - routeApi: "ingress"; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackExtendConditionResource$Outbound = + { + expression: string; + title: string; + }; /** @internal */ -export const PersistImportedDeploymentRequestRouteIngress2$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackExtendConditionResource$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestRouteIngress2$Outbound, - PersistImportedDeploymentRequestRouteIngress2 + PersistImportedDeploymentRequestPendingPreparedStackExtendConditionResource$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackExtendConditionResource > = z.object({ - annotations: z.record(z.string(), z.string()).optional(), - controller: z.nullable(z.string()).optional(), - ingressClassName: z.string(), - labels: z.record(z.string(), z.string()).optional(), - provider: z.nullable( - z.union([ - z.lazy(() => - PersistImportedDeploymentRequestProviderAwsAlb3$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestProviderGkeGateway3$outboundSchema - ), - z.any(), - ]), - ).optional(), - routeApi: z.literal("ingress"), + expression: z.string(), + title: z.string(), }); -export function persistImportedDeploymentRequestRouteIngress2ToJSON( - persistImportedDeploymentRequestRouteIngress2: - PersistImportedDeploymentRequestRouteIngress2, +export function persistImportedDeploymentRequestPendingPreparedStackExtendConditionResourceToJSON( + persistImportedDeploymentRequestPendingPreparedStackExtendConditionResource: + PersistImportedDeploymentRequestPendingPreparedStackExtendConditionResource, ): string { return JSON.stringify( - PersistImportedDeploymentRequestRouteIngress2$outboundSchema.parse( - persistImportedDeploymentRequestRouteIngress2, - ), + PersistImportedDeploymentRequestPendingPreparedStackExtendConditionResource$outboundSchema + .parse( + persistImportedDeploymentRequestPendingPreparedStackExtendConditionResource, + ), ); } /** @internal */ -export type PersistImportedDeploymentRequestRouteUnion2$Outbound = - | PersistImportedDeploymentRequestRouteIngress2$Outbound - | PersistImportedDeploymentRequestRouteGateway2$Outbound; +export type PersistImportedDeploymentRequestPendingPreparedStackExtendResourceConditionUnion$Outbound = + | PersistImportedDeploymentRequestPendingPreparedStackExtendConditionResource$Outbound + | any; /** @internal */ -export const PersistImportedDeploymentRequestRouteUnion2$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackExtendResourceConditionUnion$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestRouteUnion2$Outbound, - PersistImportedDeploymentRequestRouteUnion2 + PersistImportedDeploymentRequestPendingPreparedStackExtendResourceConditionUnion$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackExtendResourceConditionUnion > = z.union([ - z.lazy(() => PersistImportedDeploymentRequestRouteIngress2$outboundSchema), - z.lazy(() => PersistImportedDeploymentRequestRouteGateway2$outboundSchema), + z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackExtendConditionResource$outboundSchema + ), + z.any(), ]); -export function persistImportedDeploymentRequestRouteUnion2ToJSON( - persistImportedDeploymentRequestRouteUnion2: - PersistImportedDeploymentRequestRouteUnion2, +export function persistImportedDeploymentRequestPendingPreparedStackExtendResourceConditionUnionToJSON( + persistImportedDeploymentRequestPendingPreparedStackExtendResourceConditionUnion: + PersistImportedDeploymentRequestPendingPreparedStackExtendResourceConditionUnion, ): string { return JSON.stringify( - PersistImportedDeploymentRequestRouteUnion2$outboundSchema.parse( - persistImportedDeploymentRequestRouteUnion2, - ), + PersistImportedDeploymentRequestPendingPreparedStackExtendResourceConditionUnion$outboundSchema + .parse( + persistImportedDeploymentRequestPendingPreparedStackExtendResourceConditionUnion, + ), ); } /** @internal */ -export type PersistImportedDeploymentRequestExposureCustom$Outbound = { - certificate: - | PersistImportedDeploymentRequestCertificateTLSSecretRef2$Outbound - | PersistImportedDeploymentRequestCertificateManagedAcmImport2$Outbound - | PersistImportedDeploymentRequestCertificateAwsAcmArn2$Outbound - | PersistImportedDeploymentRequestCertificateManagedTLSSecret2$Outbound - | PersistImportedDeploymentRequestCertificateNone2$Outbound; - domain: string; - mode: string; - route: - | PersistImportedDeploymentRequestRouteIngress2$Outbound - | PersistImportedDeploymentRequestRouteGateway2$Outbound; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackExtendGcpResource$Outbound = + { + condition?: + | PersistImportedDeploymentRequestPendingPreparedStackExtendConditionResource$Outbound + | any + | null + | undefined; + scope: string; + }; /** @internal */ -export const PersistImportedDeploymentRequestExposureCustom$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackExtendGcpResource$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestExposureCustom$Outbound, - PersistImportedDeploymentRequestExposureCustom + PersistImportedDeploymentRequestPendingPreparedStackExtendGcpResource$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackExtendGcpResource > = z.object({ - certificate: z.union([ - z.lazy(() => - PersistImportedDeploymentRequestCertificateTLSSecretRef2$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestCertificateManagedAcmImport2$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestCertificateAwsAcmArn2$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestCertificateManagedTLSSecret2$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestCertificateNone2$outboundSchema - ), - ]), - domain: z.string(), - mode: PersistImportedDeploymentRequestModeCustom$outboundSchema, - route: z.union([ - z.lazy(() => - PersistImportedDeploymentRequestRouteIngress2$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestRouteGateway2$outboundSchema - ), - ]), + condition: z.nullable( + z.union([ + z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackExtendConditionResource$outboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), }); -export function persistImportedDeploymentRequestExposureCustomToJSON( - persistImportedDeploymentRequestExposureCustom: - PersistImportedDeploymentRequestExposureCustom, +export function persistImportedDeploymentRequestPendingPreparedStackExtendGcpResourceToJSON( + persistImportedDeploymentRequestPendingPreparedStackExtendGcpResource: + PersistImportedDeploymentRequestPendingPreparedStackExtendGcpResource, ): string { return JSON.stringify( - PersistImportedDeploymentRequestExposureCustom$outboundSchema.parse( - persistImportedDeploymentRequestExposureCustom, - ), + PersistImportedDeploymentRequestPendingPreparedStackExtendGcpResource$outboundSchema + .parse( + persistImportedDeploymentRequestPendingPreparedStackExtendGcpResource, + ), ); } /** @internal */ -export type PersistImportedDeploymentRequestCertificateNone1$Outbound = { - mode: "none"; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackExtendConditionStack$Outbound = + { + expression: string; + title: string; + }; /** @internal */ -export const PersistImportedDeploymentRequestCertificateNone1$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackExtendConditionStack$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestCertificateNone1$Outbound, - PersistImportedDeploymentRequestCertificateNone1 + PersistImportedDeploymentRequestPendingPreparedStackExtendConditionStack$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackExtendConditionStack > = z.object({ - mode: z.literal("none"), + expression: z.string(), + title: z.string(), }); -export function persistImportedDeploymentRequestCertificateNone1ToJSON( - persistImportedDeploymentRequestCertificateNone1: - PersistImportedDeploymentRequestCertificateNone1, +export function persistImportedDeploymentRequestPendingPreparedStackExtendConditionStackToJSON( + persistImportedDeploymentRequestPendingPreparedStackExtendConditionStack: + PersistImportedDeploymentRequestPendingPreparedStackExtendConditionStack, ): string { return JSON.stringify( - PersistImportedDeploymentRequestCertificateNone1$outboundSchema.parse( - persistImportedDeploymentRequestCertificateNone1, - ), + PersistImportedDeploymentRequestPendingPreparedStackExtendConditionStack$outboundSchema + .parse( + persistImportedDeploymentRequestPendingPreparedStackExtendConditionStack, + ), ); } /** @internal */ -export type PersistImportedDeploymentRequestCertificateManagedTLSSecret1$Outbound = - { - mode: "managedTlsSecret"; - secretNameTemplate: string; - }; +export type PersistImportedDeploymentRequestPendingPreparedStackExtendStackConditionUnion$Outbound = + | PersistImportedDeploymentRequestPendingPreparedStackExtendConditionStack$Outbound + | any; /** @internal */ -export const PersistImportedDeploymentRequestCertificateManagedTLSSecret1$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackExtendStackConditionUnion$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestCertificateManagedTLSSecret1$Outbound, - PersistImportedDeploymentRequestCertificateManagedTLSSecret1 - > = z.object({ - mode: z.literal("managedTlsSecret"), - secretNameTemplate: z.string(), - }); + PersistImportedDeploymentRequestPendingPreparedStackExtendStackConditionUnion$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackExtendStackConditionUnion + > = z.union([ + z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackExtendConditionStack$outboundSchema + ), + z.any(), + ]); -export function persistImportedDeploymentRequestCertificateManagedTLSSecret1ToJSON( - persistImportedDeploymentRequestCertificateManagedTLSSecret1: - PersistImportedDeploymentRequestCertificateManagedTLSSecret1, +export function persistImportedDeploymentRequestPendingPreparedStackExtendStackConditionUnionToJSON( + persistImportedDeploymentRequestPendingPreparedStackExtendStackConditionUnion: + PersistImportedDeploymentRequestPendingPreparedStackExtendStackConditionUnion, ): string { return JSON.stringify( - PersistImportedDeploymentRequestCertificateManagedTLSSecret1$outboundSchema - .parse(persistImportedDeploymentRequestCertificateManagedTLSSecret1), + PersistImportedDeploymentRequestPendingPreparedStackExtendStackConditionUnion$outboundSchema + .parse( + persistImportedDeploymentRequestPendingPreparedStackExtendStackConditionUnion, + ), ); } /** @internal */ -export type PersistImportedDeploymentRequestCertificateAwsAcmArn1$Outbound = { - certificateArn: string; - mode: "awsAcmArn"; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackExtendGcpStack$Outbound = + { + condition?: + | PersistImportedDeploymentRequestPendingPreparedStackExtendConditionStack$Outbound + | any + | null + | undefined; + scope: string; + }; /** @internal */ -export const PersistImportedDeploymentRequestCertificateAwsAcmArn1$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackExtendGcpStack$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestCertificateAwsAcmArn1$Outbound, - PersistImportedDeploymentRequestCertificateAwsAcmArn1 + PersistImportedDeploymentRequestPendingPreparedStackExtendGcpStack$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackExtendGcpStack > = z.object({ - certificateArn: z.string(), - mode: z.literal("awsAcmArn"), + condition: z.nullable( + z.union([ + z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackExtendConditionStack$outboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), }); -export function persistImportedDeploymentRequestCertificateAwsAcmArn1ToJSON( - persistImportedDeploymentRequestCertificateAwsAcmArn1: - PersistImportedDeploymentRequestCertificateAwsAcmArn1, +export function persistImportedDeploymentRequestPendingPreparedStackExtendGcpStackToJSON( + persistImportedDeploymentRequestPendingPreparedStackExtendGcpStack: + PersistImportedDeploymentRequestPendingPreparedStackExtendGcpStack, ): string { return JSON.stringify( - PersistImportedDeploymentRequestCertificateAwsAcmArn1$outboundSchema.parse( - persistImportedDeploymentRequestCertificateAwsAcmArn1, - ), + PersistImportedDeploymentRequestPendingPreparedStackExtendGcpStack$outboundSchema + .parse( + persistImportedDeploymentRequestPendingPreparedStackExtendGcpStack, + ), ); } /** @internal */ -export type PersistImportedDeploymentRequestCertificateManagedAcmImport1$Outbound = +export type PersistImportedDeploymentRequestPendingPreparedStackExtendGcpBinding$Outbound = { - mode: "managedAcmImport"; - region?: string | null | undefined; - tags?: { [k: string]: string } | undefined; + resource?: + | PersistImportedDeploymentRequestPendingPreparedStackExtendGcpResource$Outbound + | undefined; + stack?: + | PersistImportedDeploymentRequestPendingPreparedStackExtendGcpStack$Outbound + | undefined; }; /** @internal */ -export const PersistImportedDeploymentRequestCertificateManagedAcmImport1$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackExtendGcpBinding$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestCertificateManagedAcmImport1$Outbound, - PersistImportedDeploymentRequestCertificateManagedAcmImport1 + PersistImportedDeploymentRequestPendingPreparedStackExtendGcpBinding$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackExtendGcpBinding > = z.object({ - mode: z.literal("managedAcmImport"), - region: z.nullable(z.string()).optional(), - tags: z.record(z.string(), z.string()).optional(), + resource: z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackExtendGcpResource$outboundSchema + ).optional(), + stack: z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackExtendGcpStack$outboundSchema + ).optional(), }); -export function persistImportedDeploymentRequestCertificateManagedAcmImport1ToJSON( - persistImportedDeploymentRequestCertificateManagedAcmImport1: - PersistImportedDeploymentRequestCertificateManagedAcmImport1, +export function persistImportedDeploymentRequestPendingPreparedStackExtendGcpBindingToJSON( + persistImportedDeploymentRequestPendingPreparedStackExtendGcpBinding: + PersistImportedDeploymentRequestPendingPreparedStackExtendGcpBinding, ): string { return JSON.stringify( - PersistImportedDeploymentRequestCertificateManagedAcmImport1$outboundSchema - .parse(persistImportedDeploymentRequestCertificateManagedAcmImport1), + PersistImportedDeploymentRequestPendingPreparedStackExtendGcpBinding$outboundSchema + .parse( + persistImportedDeploymentRequestPendingPreparedStackExtendGcpBinding, + ), ); } /** @internal */ -export type PersistImportedDeploymentRequestCertificateTLSSecretRef1$Outbound = +export type PersistImportedDeploymentRequestPendingPreparedStackExtendGcpGrant$Outbound = { - namespace?: string | null | undefined; - secretName: string; - mode: "tlsSecretRef"; + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; }; /** @internal */ -export const PersistImportedDeploymentRequestCertificateTLSSecretRef1$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackExtendGcpGrant$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestCertificateTLSSecretRef1$Outbound, - PersistImportedDeploymentRequestCertificateTLSSecretRef1 + PersistImportedDeploymentRequestPendingPreparedStackExtendGcpGrant$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackExtendGcpGrant > = z.object({ - namespace: z.nullable(z.string()).optional(), - secretName: z.string(), - mode: z.literal("tlsSecretRef"), + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function persistImportedDeploymentRequestCertificateTLSSecretRef1ToJSON( - persistImportedDeploymentRequestCertificateTLSSecretRef1: - PersistImportedDeploymentRequestCertificateTLSSecretRef1, +export function persistImportedDeploymentRequestPendingPreparedStackExtendGcpGrantToJSON( + persistImportedDeploymentRequestPendingPreparedStackExtendGcpGrant: + PersistImportedDeploymentRequestPendingPreparedStackExtendGcpGrant, ): string { return JSON.stringify( - PersistImportedDeploymentRequestCertificateTLSSecretRef1$outboundSchema - .parse(persistImportedDeploymentRequestCertificateTLSSecretRef1), + PersistImportedDeploymentRequestPendingPreparedStackExtendGcpGrant$outboundSchema + .parse( + persistImportedDeploymentRequestPendingPreparedStackExtendGcpGrant, + ), ); } /** @internal */ -export type PersistImportedDeploymentRequestCertificateUnion1$Outbound = - | PersistImportedDeploymentRequestCertificateTLSSecretRef1$Outbound - | PersistImportedDeploymentRequestCertificateManagedAcmImport1$Outbound - | PersistImportedDeploymentRequestCertificateAwsAcmArn1$Outbound - | PersistImportedDeploymentRequestCertificateManagedTLSSecret1$Outbound - | PersistImportedDeploymentRequestCertificateNone1$Outbound; +export type PersistImportedDeploymentRequestPendingPreparedStackExtendGcp$Outbound = + { + binding: + PersistImportedDeploymentRequestPendingPreparedStackExtendGcpBinding$Outbound; + description?: string | null | undefined; + grant: + PersistImportedDeploymentRequestPendingPreparedStackExtendGcpGrant$Outbound; + label?: string | null | undefined; + }; /** @internal */ -export const PersistImportedDeploymentRequestCertificateUnion1$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackExtendGcp$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestCertificateUnion1$Outbound, - PersistImportedDeploymentRequestCertificateUnion1 - > = z.union([ - z.lazy(() => - PersistImportedDeploymentRequestCertificateTLSSecretRef1$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestCertificateManagedAcmImport1$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestCertificateAwsAcmArn1$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestCertificateManagedTLSSecret1$outboundSchema + PersistImportedDeploymentRequestPendingPreparedStackExtendGcp$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackExtendGcp + > = z.object({ + binding: z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackExtendGcpBinding$outboundSchema ), - z.lazy(() => - PersistImportedDeploymentRequestCertificateNone1$outboundSchema + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackExtendGcpGrant$outboundSchema ), - ]); + label: z.nullable(z.string()).optional(), + }); -export function persistImportedDeploymentRequestCertificateUnion1ToJSON( - persistImportedDeploymentRequestCertificateUnion1: - PersistImportedDeploymentRequestCertificateUnion1, +export function persistImportedDeploymentRequestPendingPreparedStackExtendGcpToJSON( + persistImportedDeploymentRequestPendingPreparedStackExtendGcp: + PersistImportedDeploymentRequestPendingPreparedStackExtendGcp, ): string { return JSON.stringify( - PersistImportedDeploymentRequestCertificateUnion1$outboundSchema.parse( - persistImportedDeploymentRequestCertificateUnion1, - ), + PersistImportedDeploymentRequestPendingPreparedStackExtendGcp$outboundSchema + .parse(persistImportedDeploymentRequestPendingPreparedStackExtendGcp), ); } /** @internal */ -export const PersistImportedDeploymentRequestModeGenerated$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestModeGenerated, - ); +export type PersistImportedDeploymentRequestPendingPreparedStackExtendPlatforms$Outbound = + { + aws?: + | Array< + PersistImportedDeploymentRequestPendingPreparedStackExtendAw$Outbound + > + | null + | undefined; + azure?: + | Array< + PersistImportedDeploymentRequestPendingPreparedStackExtendAzure$Outbound + > + | null + | undefined; + gcp?: + | Array< + PersistImportedDeploymentRequestPendingPreparedStackExtendGcp$Outbound + > + | null + | undefined; + }; /** @internal */ -export const PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum2$outboundSchema: - z.ZodEnum< - typeof PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum2 - > = z.enum( - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum2, +export const PersistImportedDeploymentRequestPendingPreparedStackExtendPlatforms$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestPendingPreparedStackExtendPlatforms$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackExtendPlatforms + > = z.object({ + aws: z.nullable( + z.array(z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackExtendAw$outboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackExtendAzure$outboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackExtendGcp$outboundSchema + )), + ).optional(), + }); + +export function persistImportedDeploymentRequestPendingPreparedStackExtendPlatformsToJSON( + persistImportedDeploymentRequestPendingPreparedStackExtendPlatforms: + PersistImportedDeploymentRequestPendingPreparedStackExtendPlatforms, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestPendingPreparedStackExtendPlatforms$outboundSchema + .parse( + persistImportedDeploymentRequestPendingPreparedStackExtendPlatforms, + ), ); +} /** @internal */ -export type PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2$Outbound = +export type PersistImportedDeploymentRequestPendingPreparedStackExtend$Outbound = { - albName?: string | null | undefined; - albNamespace?: string | null | undefined; - frontend: string; - provider: string; + description: string; + id: string; + platforms: + PersistImportedDeploymentRequestPendingPreparedStackExtendPlatforms$Outbound; }; /** @internal */ -export const PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackExtend$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2$Outbound, - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2 + PersistImportedDeploymentRequestPendingPreparedStackExtend$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackExtend > = z.object({ - albName: z.nullable(z.string()).optional(), - albNamespace: z.nullable(z.string()).optional(), - frontend: z.string(), - provider: - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum2$outboundSchema, + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackExtendPlatforms$outboundSchema + ), }); -export function persistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2ToJSON( - persistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2: - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2, +export function persistImportedDeploymentRequestPendingPreparedStackExtendToJSON( + persistImportedDeploymentRequestPendingPreparedStackExtend: + PersistImportedDeploymentRequestPendingPreparedStackExtend, ): string { return JSON.stringify( - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2$outboundSchema - .parse( - persistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2, - ), + PersistImportedDeploymentRequestPendingPreparedStackExtend$outboundSchema + .parse(persistImportedDeploymentRequestPendingPreparedStackExtend), ); } /** @internal */ -export const PersistImportedDeploymentRequestProviderGkeGatewayEnum2$outboundSchema: - z.ZodEnum = z - .enum(PersistImportedDeploymentRequestProviderGkeGatewayEnum2); - -/** @internal */ -export type PersistImportedDeploymentRequestProviderGkeGateway2$Outbound = { - provider: string; - staticAddressName?: string | null | undefined; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackExtendUnion$Outbound = + | PersistImportedDeploymentRequestPendingPreparedStackExtend$Outbound + | string; /** @internal */ -export const PersistImportedDeploymentRequestProviderGkeGateway2$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackExtendUnion$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestProviderGkeGateway2$Outbound, - PersistImportedDeploymentRequestProviderGkeGateway2 - > = z.object({ - provider: - PersistImportedDeploymentRequestProviderGkeGatewayEnum2$outboundSchema, - staticAddressName: z.nullable(z.string()).optional(), - }); + PersistImportedDeploymentRequestPendingPreparedStackExtendUnion$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackExtendUnion + > = z.union([ + z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackExtend$outboundSchema + ), + z.string(), + ]); -export function persistImportedDeploymentRequestProviderGkeGateway2ToJSON( - persistImportedDeploymentRequestProviderGkeGateway2: - PersistImportedDeploymentRequestProviderGkeGateway2, +export function persistImportedDeploymentRequestPendingPreparedStackExtendUnionToJSON( + persistImportedDeploymentRequestPendingPreparedStackExtendUnion: + PersistImportedDeploymentRequestPendingPreparedStackExtendUnion, ): string { return JSON.stringify( - PersistImportedDeploymentRequestProviderGkeGateway2$outboundSchema.parse( - persistImportedDeploymentRequestProviderGkeGateway2, - ), + PersistImportedDeploymentRequestPendingPreparedStackExtendUnion$outboundSchema + .parse(persistImportedDeploymentRequestPendingPreparedStackExtendUnion), ); } /** @internal */ -export const PersistImportedDeploymentRequestProviderAwsAlbEnum2$outboundSchema: - z.ZodEnum = z - .enum(PersistImportedDeploymentRequestProviderAwsAlbEnum2); - -/** @internal */ -export type PersistImportedDeploymentRequestProviderAwsAlb2$Outbound = { - ipAddressType?: string | null | undefined; - provider: string; - scheme: string; - subnetIds?: Array | undefined; - targetType: string; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackManagement1$Outbound = + { + extend: { + [k: string]: Array< + | PersistImportedDeploymentRequestPendingPreparedStackExtend$Outbound + | string + >; + }; + }; /** @internal */ -export const PersistImportedDeploymentRequestProviderAwsAlb2$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackManagement1$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestProviderAwsAlb2$Outbound, - PersistImportedDeploymentRequestProviderAwsAlb2 + PersistImportedDeploymentRequestPendingPreparedStackManagement1$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackManagement1 > = z.object({ - ipAddressType: z.nullable(z.string()).optional(), - provider: - PersistImportedDeploymentRequestProviderAwsAlbEnum2$outboundSchema, - scheme: z.string(), - subnetIds: z.array(z.string()).optional(), - targetType: z.string(), + extend: z.record( + z.string(), + z.array(z.union([ + z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackExtend$outboundSchema + ), + z.string(), + ])), + ), }); -export function persistImportedDeploymentRequestProviderAwsAlb2ToJSON( - persistImportedDeploymentRequestProviderAwsAlb2: - PersistImportedDeploymentRequestProviderAwsAlb2, +export function persistImportedDeploymentRequestPendingPreparedStackManagement1ToJSON( + persistImportedDeploymentRequestPendingPreparedStackManagement1: + PersistImportedDeploymentRequestPendingPreparedStackManagement1, ): string { return JSON.stringify( - PersistImportedDeploymentRequestProviderAwsAlb2$outboundSchema.parse( - persistImportedDeploymentRequestProviderAwsAlb2, - ), + PersistImportedDeploymentRequestPendingPreparedStackManagement1$outboundSchema + .parse(persistImportedDeploymentRequestPendingPreparedStackManagement1), ); } /** @internal */ -export type PersistImportedDeploymentRequestProviderUnion2$Outbound = - | PersistImportedDeploymentRequestProviderAwsAlb2$Outbound - | PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2$Outbound - | PersistImportedDeploymentRequestProviderGkeGateway2$Outbound - | any; +export type PersistImportedDeploymentRequestPendingPreparedStackManagementUnion$Outbound = + | PersistImportedDeploymentRequestPendingPreparedStackManagement1$Outbound + | PersistImportedDeploymentRequestPendingPreparedStackManagement2$Outbound + | string; /** @internal */ -export const PersistImportedDeploymentRequestProviderUnion2$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackManagementUnion$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestProviderUnion2$Outbound, - PersistImportedDeploymentRequestProviderUnion2 + PersistImportedDeploymentRequestPendingPreparedStackManagementUnion$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackManagementUnion > = z.union([ z.lazy(() => - PersistImportedDeploymentRequestProviderAwsAlb2$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2$outboundSchema + PersistImportedDeploymentRequestPendingPreparedStackManagement1$outboundSchema ), z.lazy(() => - PersistImportedDeploymentRequestProviderGkeGateway2$outboundSchema + PersistImportedDeploymentRequestPendingPreparedStackManagement2$outboundSchema ), - z.any(), + PersistImportedDeploymentRequestPendingPreparedStackManagementEnum$outboundSchema, ]); -export function persistImportedDeploymentRequestProviderUnion2ToJSON( - persistImportedDeploymentRequestProviderUnion2: - PersistImportedDeploymentRequestProviderUnion2, +export function persistImportedDeploymentRequestPendingPreparedStackManagementUnionToJSON( + persistImportedDeploymentRequestPendingPreparedStackManagementUnion: + PersistImportedDeploymentRequestPendingPreparedStackManagementUnion, ): string { return JSON.stringify( - PersistImportedDeploymentRequestProviderUnion2$outboundSchema.parse( - persistImportedDeploymentRequestProviderUnion2, - ), + PersistImportedDeploymentRequestPendingPreparedStackManagementUnion$outboundSchema + .parse( + persistImportedDeploymentRequestPendingPreparedStackManagementUnion, + ), ); } /** @internal */ -export type PersistImportedDeploymentRequestRouteGateway1$Outbound = { - annotations?: { [k: string]: string } | undefined; - controller?: string | null | undefined; - gatewayClassName: string; - labels?: { [k: string]: string } | undefined; - listenerPort: number; - provider?: - | PersistImportedDeploymentRequestProviderAwsAlb2$Outbound - | PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2$Outbound - | PersistImportedDeploymentRequestProviderGkeGateway2$Outbound - | any - | null - | undefined; - routeApi: "gateway"; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackProfileAwResource$Outbound = + { + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + resources: Array; + }; /** @internal */ -export const PersistImportedDeploymentRequestRouteGateway1$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackProfileAwResource$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestRouteGateway1$Outbound, - PersistImportedDeploymentRequestRouteGateway1 + PersistImportedDeploymentRequestPendingPreparedStackProfileAwResource$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackProfileAwResource > = z.object({ - annotations: z.record(z.string(), z.string()).optional(), - controller: z.nullable(z.string()).optional(), - gatewayClassName: z.string(), - labels: z.record(z.string(), z.string()).optional(), - listenerPort: z.int(), - provider: z.nullable( - z.union([ - z.lazy(() => - PersistImportedDeploymentRequestProviderAwsAlb2$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestProviderGkeGateway2$outboundSchema - ), - z.any(), - ]), + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), ).optional(), - routeApi: z.literal("gateway"), + resources: z.array(z.string()), }); -export function persistImportedDeploymentRequestRouteGateway1ToJSON( - persistImportedDeploymentRequestRouteGateway1: - PersistImportedDeploymentRequestRouteGateway1, +export function persistImportedDeploymentRequestPendingPreparedStackProfileAwResourceToJSON( + persistImportedDeploymentRequestPendingPreparedStackProfileAwResource: + PersistImportedDeploymentRequestPendingPreparedStackProfileAwResource, ): string { return JSON.stringify( - PersistImportedDeploymentRequestRouteGateway1$outboundSchema.parse( - persistImportedDeploymentRequestRouteGateway1, - ), + PersistImportedDeploymentRequestPendingPreparedStackProfileAwResource$outboundSchema + .parse( + persistImportedDeploymentRequestPendingPreparedStackProfileAwResource, + ), ); } /** @internal */ -export const PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum1$outboundSchema: - z.ZodEnum< - typeof PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum1 - > = z.enum( - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum1, +export type PersistImportedDeploymentRequestPendingPreparedStackProfileAwStack$Outbound = + { + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + resources: Array; + }; + +/** @internal */ +export const PersistImportedDeploymentRequestPendingPreparedStackProfileAwStack$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestPendingPreparedStackProfileAwStack$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackProfileAwStack + > = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function persistImportedDeploymentRequestPendingPreparedStackProfileAwStackToJSON( + persistImportedDeploymentRequestPendingPreparedStackProfileAwStack: + PersistImportedDeploymentRequestPendingPreparedStackProfileAwStack, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestPendingPreparedStackProfileAwStack$outboundSchema + .parse( + persistImportedDeploymentRequestPendingPreparedStackProfileAwStack, + ), ); +} /** @internal */ -export type PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1$Outbound = +export type PersistImportedDeploymentRequestPendingPreparedStackProfileAwBinding$Outbound = { - albName?: string | null | undefined; - albNamespace?: string | null | undefined; - frontend: string; - provider: string; + resource?: + | PersistImportedDeploymentRequestPendingPreparedStackProfileAwResource$Outbound + | undefined; + stack?: + | PersistImportedDeploymentRequestPendingPreparedStackProfileAwStack$Outbound + | undefined; }; /** @internal */ -export const PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackProfileAwBinding$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1$Outbound, - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1 + PersistImportedDeploymentRequestPendingPreparedStackProfileAwBinding$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackProfileAwBinding > = z.object({ - albName: z.nullable(z.string()).optional(), - albNamespace: z.nullable(z.string()).optional(), - frontend: z.string(), - provider: - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum1$outboundSchema, + resource: z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackProfileAwResource$outboundSchema + ).optional(), + stack: z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackProfileAwStack$outboundSchema + ).optional(), }); -export function persistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1ToJSON( - persistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1: - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1, +export function persistImportedDeploymentRequestPendingPreparedStackProfileAwBindingToJSON( + persistImportedDeploymentRequestPendingPreparedStackProfileAwBinding: + PersistImportedDeploymentRequestPendingPreparedStackProfileAwBinding, ): string { return JSON.stringify( - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1$outboundSchema + PersistImportedDeploymentRequestPendingPreparedStackProfileAwBinding$outboundSchema .parse( - persistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1, + persistImportedDeploymentRequestPendingPreparedStackProfileAwBinding, ), ); } /** @internal */ -export const PersistImportedDeploymentRequestProviderGkeGatewayEnum1$outboundSchema: - z.ZodEnum = z - .enum(PersistImportedDeploymentRequestProviderGkeGatewayEnum1); +export const PersistImportedDeploymentRequestPendingPreparedStackProfileEffect$outboundSchema: + z.ZodEnum< + typeof PersistImportedDeploymentRequestPendingPreparedStackProfileEffect + > = z.enum(PersistImportedDeploymentRequestPendingPreparedStackProfileEffect); /** @internal */ -export type PersistImportedDeploymentRequestProviderGkeGateway1$Outbound = { - provider: string; - staticAddressName?: string | null | undefined; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackProfileAwGrant$Outbound = + { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; + }; /** @internal */ -export const PersistImportedDeploymentRequestProviderGkeGateway1$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackProfileAwGrant$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestProviderGkeGateway1$Outbound, - PersistImportedDeploymentRequestProviderGkeGateway1 + PersistImportedDeploymentRequestPendingPreparedStackProfileAwGrant$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackProfileAwGrant > = z.object({ - provider: - PersistImportedDeploymentRequestProviderGkeGatewayEnum1$outboundSchema, - staticAddressName: z.nullable(z.string()).optional(), + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function persistImportedDeploymentRequestProviderGkeGateway1ToJSON( - persistImportedDeploymentRequestProviderGkeGateway1: - PersistImportedDeploymentRequestProviderGkeGateway1, +export function persistImportedDeploymentRequestPendingPreparedStackProfileAwGrantToJSON( + persistImportedDeploymentRequestPendingPreparedStackProfileAwGrant: + PersistImportedDeploymentRequestPendingPreparedStackProfileAwGrant, ): string { return JSON.stringify( - PersistImportedDeploymentRequestProviderGkeGateway1$outboundSchema.parse( - persistImportedDeploymentRequestProviderGkeGateway1, - ), + PersistImportedDeploymentRequestPendingPreparedStackProfileAwGrant$outboundSchema + .parse( + persistImportedDeploymentRequestPendingPreparedStackProfileAwGrant, + ), ); } /** @internal */ -export const PersistImportedDeploymentRequestProviderAwsAlbEnum1$outboundSchema: - z.ZodEnum = z - .enum(PersistImportedDeploymentRequestProviderAwsAlbEnum1); +export type PersistImportedDeploymentRequestPendingPreparedStackProfileAw$Outbound = + { + binding: + PersistImportedDeploymentRequestPendingPreparedStackProfileAwBinding$Outbound; + description?: string | null | undefined; + effect?: string | undefined; + grant: + PersistImportedDeploymentRequestPendingPreparedStackProfileAwGrant$Outbound; + label?: string | null | undefined; + }; + +/** @internal */ +export const PersistImportedDeploymentRequestPendingPreparedStackProfileAw$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestPendingPreparedStackProfileAw$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackProfileAw + > = z.object({ + binding: z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackProfileAwBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: + PersistImportedDeploymentRequestPendingPreparedStackProfileEffect$outboundSchema + .optional(), + grant: z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackProfileAwGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function persistImportedDeploymentRequestPendingPreparedStackProfileAwToJSON( + persistImportedDeploymentRequestPendingPreparedStackProfileAw: + PersistImportedDeploymentRequestPendingPreparedStackProfileAw, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestPendingPreparedStackProfileAw$outboundSchema + .parse(persistImportedDeploymentRequestPendingPreparedStackProfileAw), + ); +} /** @internal */ -export type PersistImportedDeploymentRequestProviderAwsAlb1$Outbound = { - ipAddressType?: string | null | undefined; - provider: string; - scheme: string; - subnetIds?: Array | undefined; - targetType: string; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackProfileAzureResource$Outbound = + { + scope: string; + }; /** @internal */ -export const PersistImportedDeploymentRequestProviderAwsAlb1$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackProfileAzureResource$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestProviderAwsAlb1$Outbound, - PersistImportedDeploymentRequestProviderAwsAlb1 + PersistImportedDeploymentRequestPendingPreparedStackProfileAzureResource$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackProfileAzureResource > = z.object({ - ipAddressType: z.nullable(z.string()).optional(), - provider: - PersistImportedDeploymentRequestProviderAwsAlbEnum1$outboundSchema, - scheme: z.string(), - subnetIds: z.array(z.string()).optional(), - targetType: z.string(), + scope: z.string(), }); -export function persistImportedDeploymentRequestProviderAwsAlb1ToJSON( - persistImportedDeploymentRequestProviderAwsAlb1: - PersistImportedDeploymentRequestProviderAwsAlb1, +export function persistImportedDeploymentRequestPendingPreparedStackProfileAzureResourceToJSON( + persistImportedDeploymentRequestPendingPreparedStackProfileAzureResource: + PersistImportedDeploymentRequestPendingPreparedStackProfileAzureResource, ): string { return JSON.stringify( - PersistImportedDeploymentRequestProviderAwsAlb1$outboundSchema.parse( - persistImportedDeploymentRequestProviderAwsAlb1, - ), + PersistImportedDeploymentRequestPendingPreparedStackProfileAzureResource$outboundSchema + .parse( + persistImportedDeploymentRequestPendingPreparedStackProfileAzureResource, + ), ); } /** @internal */ -export type PersistImportedDeploymentRequestProviderUnion1$Outbound = - | PersistImportedDeploymentRequestProviderAwsAlb1$Outbound - | PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1$Outbound - | PersistImportedDeploymentRequestProviderGkeGateway1$Outbound - | any; +export type PersistImportedDeploymentRequestPendingPreparedStackProfileAzureStack$Outbound = + { + scope: string; + }; /** @internal */ -export const PersistImportedDeploymentRequestProviderUnion1$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackProfileAzureStack$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestProviderUnion1$Outbound, - PersistImportedDeploymentRequestProviderUnion1 - > = z.union([ - z.lazy(() => - PersistImportedDeploymentRequestProviderAwsAlb1$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestProviderGkeGateway1$outboundSchema - ), - z.any(), - ]); + PersistImportedDeploymentRequestPendingPreparedStackProfileAzureStack$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackProfileAzureStack + > = z.object({ + scope: z.string(), + }); -export function persistImportedDeploymentRequestProviderUnion1ToJSON( - persistImportedDeploymentRequestProviderUnion1: - PersistImportedDeploymentRequestProviderUnion1, +export function persistImportedDeploymentRequestPendingPreparedStackProfileAzureStackToJSON( + persistImportedDeploymentRequestPendingPreparedStackProfileAzureStack: + PersistImportedDeploymentRequestPendingPreparedStackProfileAzureStack, ): string { return JSON.stringify( - PersistImportedDeploymentRequestProviderUnion1$outboundSchema.parse( - persistImportedDeploymentRequestProviderUnion1, - ), + PersistImportedDeploymentRequestPendingPreparedStackProfileAzureStack$outboundSchema + .parse( + persistImportedDeploymentRequestPendingPreparedStackProfileAzureStack, + ), ); } /** @internal */ -export type PersistImportedDeploymentRequestRouteIngress1$Outbound = { - annotations?: { [k: string]: string } | undefined; - controller?: string | null | undefined; - ingressClassName: string; - labels?: { [k: string]: string } | undefined; - provider?: - | PersistImportedDeploymentRequestProviderAwsAlb1$Outbound - | PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1$Outbound - | PersistImportedDeploymentRequestProviderGkeGateway1$Outbound - | any - | null - | undefined; - routeApi: "ingress"; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackProfileAzureBinding$Outbound = + { + resource?: + | PersistImportedDeploymentRequestPendingPreparedStackProfileAzureResource$Outbound + | undefined; + stack?: + | PersistImportedDeploymentRequestPendingPreparedStackProfileAzureStack$Outbound + | undefined; + }; /** @internal */ -export const PersistImportedDeploymentRequestRouteIngress1$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackProfileAzureBinding$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestRouteIngress1$Outbound, - PersistImportedDeploymentRequestRouteIngress1 + PersistImportedDeploymentRequestPendingPreparedStackProfileAzureBinding$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackProfileAzureBinding > = z.object({ - annotations: z.record(z.string(), z.string()).optional(), - controller: z.nullable(z.string()).optional(), - ingressClassName: z.string(), - labels: z.record(z.string(), z.string()).optional(), - provider: z.nullable( - z.union([ - z.lazy(() => - PersistImportedDeploymentRequestProviderAwsAlb1$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestProviderGkeGateway1$outboundSchema - ), - z.any(), - ]), + resource: z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackProfileAzureResource$outboundSchema + ).optional(), + stack: z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackProfileAzureStack$outboundSchema ).optional(), - routeApi: z.literal("ingress"), }); -export function persistImportedDeploymentRequestRouteIngress1ToJSON( - persistImportedDeploymentRequestRouteIngress1: - PersistImportedDeploymentRequestRouteIngress1, +export function persistImportedDeploymentRequestPendingPreparedStackProfileAzureBindingToJSON( + persistImportedDeploymentRequestPendingPreparedStackProfileAzureBinding: + PersistImportedDeploymentRequestPendingPreparedStackProfileAzureBinding, ): string { return JSON.stringify( - PersistImportedDeploymentRequestRouteIngress1$outboundSchema.parse( - persistImportedDeploymentRequestRouteIngress1, - ), + PersistImportedDeploymentRequestPendingPreparedStackProfileAzureBinding$outboundSchema + .parse( + persistImportedDeploymentRequestPendingPreparedStackProfileAzureBinding, + ), ); } /** @internal */ -export type PersistImportedDeploymentRequestRouteUnion1$Outbound = - | PersistImportedDeploymentRequestRouteIngress1$Outbound - | PersistImportedDeploymentRequestRouteGateway1$Outbound; +export type PersistImportedDeploymentRequestPendingPreparedStackProfileAzureGrant$Outbound = + { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; + }; /** @internal */ -export const PersistImportedDeploymentRequestRouteUnion1$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackProfileAzureGrant$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestRouteUnion1$Outbound, - PersistImportedDeploymentRequestRouteUnion1 - > = z.union([ - z.lazy(() => PersistImportedDeploymentRequestRouteIngress1$outboundSchema), - z.lazy(() => PersistImportedDeploymentRequestRouteGateway1$outboundSchema), - ]); + PersistImportedDeploymentRequestPendingPreparedStackProfileAzureGrant$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackProfileAzureGrant + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); -export function persistImportedDeploymentRequestRouteUnion1ToJSON( - persistImportedDeploymentRequestRouteUnion1: - PersistImportedDeploymentRequestRouteUnion1, +export function persistImportedDeploymentRequestPendingPreparedStackProfileAzureGrantToJSON( + persistImportedDeploymentRequestPendingPreparedStackProfileAzureGrant: + PersistImportedDeploymentRequestPendingPreparedStackProfileAzureGrant, ): string { return JSON.stringify( - PersistImportedDeploymentRequestRouteUnion1$outboundSchema.parse( - persistImportedDeploymentRequestRouteUnion1, - ), + PersistImportedDeploymentRequestPendingPreparedStackProfileAzureGrant$outboundSchema + .parse( + persistImportedDeploymentRequestPendingPreparedStackProfileAzureGrant, + ), ); } /** @internal */ -export type PersistImportedDeploymentRequestExposureGenerated$Outbound = { - certificate: - | PersistImportedDeploymentRequestCertificateTLSSecretRef1$Outbound - | PersistImportedDeploymentRequestCertificateManagedAcmImport1$Outbound - | PersistImportedDeploymentRequestCertificateAwsAcmArn1$Outbound - | PersistImportedDeploymentRequestCertificateManagedTLSSecret1$Outbound - | PersistImportedDeploymentRequestCertificateNone1$Outbound; - mode: string; - route: - | PersistImportedDeploymentRequestRouteIngress1$Outbound - | PersistImportedDeploymentRequestRouteGateway1$Outbound; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackProfileAzure$Outbound = + { + binding: + PersistImportedDeploymentRequestPendingPreparedStackProfileAzureBinding$Outbound; + description?: string | null | undefined; + grant: + PersistImportedDeploymentRequestPendingPreparedStackProfileAzureGrant$Outbound; + label?: string | null | undefined; + }; /** @internal */ -export const PersistImportedDeploymentRequestExposureGenerated$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackProfileAzure$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestExposureGenerated$Outbound, - PersistImportedDeploymentRequestExposureGenerated + PersistImportedDeploymentRequestPendingPreparedStackProfileAzure$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackProfileAzure > = z.object({ - certificate: z.union([ - z.lazy(() => - PersistImportedDeploymentRequestCertificateTLSSecretRef1$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestCertificateManagedAcmImport1$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestCertificateAwsAcmArn1$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestCertificateManagedTLSSecret1$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestCertificateNone1$outboundSchema - ), - ]), - mode: PersistImportedDeploymentRequestModeGenerated$outboundSchema, - route: z.union([ - z.lazy(() => - PersistImportedDeploymentRequestRouteIngress1$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestRouteGateway1$outboundSchema - ), - ]), + binding: z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackProfileAzureBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackProfileAzureGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), }); -export function persistImportedDeploymentRequestExposureGeneratedToJSON( - persistImportedDeploymentRequestExposureGenerated: - PersistImportedDeploymentRequestExposureGenerated, +export function persistImportedDeploymentRequestPendingPreparedStackProfileAzureToJSON( + persistImportedDeploymentRequestPendingPreparedStackProfileAzure: + PersistImportedDeploymentRequestPendingPreparedStackProfileAzure, ): string { return JSON.stringify( - PersistImportedDeploymentRequestExposureGenerated$outboundSchema.parse( - persistImportedDeploymentRequestExposureGenerated, - ), + PersistImportedDeploymentRequestPendingPreparedStackProfileAzure$outboundSchema + .parse(persistImportedDeploymentRequestPendingPreparedStackProfileAzure), ); } /** @internal */ -export const PersistImportedDeploymentRequestModeDisabled$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestModeDisabled, - ); - -/** @internal */ -export type PersistImportedDeploymentRequestExposureDisabled$Outbound = { - mode: string; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackProfileConditionResource$Outbound = + { + expression: string; + title: string; + }; /** @internal */ -export const PersistImportedDeploymentRequestExposureDisabled$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackProfileConditionResource$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestExposureDisabled$Outbound, - PersistImportedDeploymentRequestExposureDisabled + PersistImportedDeploymentRequestPendingPreparedStackProfileConditionResource$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackProfileConditionResource > = z.object({ - mode: PersistImportedDeploymentRequestModeDisabled$outboundSchema, + expression: z.string(), + title: z.string(), }); -export function persistImportedDeploymentRequestExposureDisabledToJSON( - persistImportedDeploymentRequestExposureDisabled: - PersistImportedDeploymentRequestExposureDisabled, +export function persistImportedDeploymentRequestPendingPreparedStackProfileConditionResourceToJSON( + persistImportedDeploymentRequestPendingPreparedStackProfileConditionResource: + PersistImportedDeploymentRequestPendingPreparedStackProfileConditionResource, ): string { return JSON.stringify( - PersistImportedDeploymentRequestExposureDisabled$outboundSchema.parse( - persistImportedDeploymentRequestExposureDisabled, - ), + PersistImportedDeploymentRequestPendingPreparedStackProfileConditionResource$outboundSchema + .parse( + persistImportedDeploymentRequestPendingPreparedStackProfileConditionResource, + ), ); } /** @internal */ -export type PersistImportedDeploymentRequestExposureUnion$Outbound = - | PersistImportedDeploymentRequestExposureCustom$Outbound - | PersistImportedDeploymentRequestExposureGenerated$Outbound - | PersistImportedDeploymentRequestExposureDisabled$Outbound +export type PersistImportedDeploymentRequestPendingPreparedStackProfileResourceConditionUnion$Outbound = + | PersistImportedDeploymentRequestPendingPreparedStackProfileConditionResource$Outbound | any; /** @internal */ -export const PersistImportedDeploymentRequestExposureUnion$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackProfileResourceConditionUnion$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestExposureUnion$Outbound, - PersistImportedDeploymentRequestExposureUnion + PersistImportedDeploymentRequestPendingPreparedStackProfileResourceConditionUnion$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackProfileResourceConditionUnion > = z.union([ - z.lazy(() => PersistImportedDeploymentRequestExposureCustom$outboundSchema), - z.lazy(() => - PersistImportedDeploymentRequestExposureGenerated$outboundSchema - ), z.lazy(() => - PersistImportedDeploymentRequestExposureDisabled$outboundSchema + PersistImportedDeploymentRequestPendingPreparedStackProfileConditionResource$outboundSchema ), z.any(), ]); -export function persistImportedDeploymentRequestExposureUnionToJSON( - persistImportedDeploymentRequestExposureUnion: - PersistImportedDeploymentRequestExposureUnion, +export function persistImportedDeploymentRequestPendingPreparedStackProfileResourceConditionUnionToJSON( + persistImportedDeploymentRequestPendingPreparedStackProfileResourceConditionUnion: + PersistImportedDeploymentRequestPendingPreparedStackProfileResourceConditionUnion, ): string { return JSON.stringify( - PersistImportedDeploymentRequestExposureUnion$outboundSchema.parse( - persistImportedDeploymentRequestExposureUnion, - ), + PersistImportedDeploymentRequestPendingPreparedStackProfileResourceConditionUnion$outboundSchema + .parse( + persistImportedDeploymentRequestPendingPreparedStackProfileResourceConditionUnion, + ), ); } -/** @internal */ -export type PersistImportedDeploymentRequestKubernetes$Outbound = { - cluster?: - | PersistImportedDeploymentRequestCluster$Outbound - | any - | null - | undefined; - exposure?: - | PersistImportedDeploymentRequestExposureCustom$Outbound - | PersistImportedDeploymentRequestExposureGenerated$Outbound - | PersistImportedDeploymentRequestExposureDisabled$Outbound - | any - | null - | undefined; -}; +/** @internal */ +export type PersistImportedDeploymentRequestPendingPreparedStackProfileGcpResource$Outbound = + { + condition?: + | PersistImportedDeploymentRequestPendingPreparedStackProfileConditionResource$Outbound + | any + | null + | undefined; + scope: string; + }; /** @internal */ -export const PersistImportedDeploymentRequestKubernetes$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackProfileGcpResource$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestKubernetes$Outbound, - PersistImportedDeploymentRequestKubernetes + PersistImportedDeploymentRequestPendingPreparedStackProfileGcpResource$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackProfileGcpResource > = z.object({ - cluster: z.nullable( - z.union([ - z.lazy(() => PersistImportedDeploymentRequestCluster$outboundSchema), - z.any(), - ]), - ).optional(), - exposure: z.nullable( + condition: z.nullable( z.union([ z.lazy(() => - PersistImportedDeploymentRequestExposureCustom$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestExposureGenerated$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestExposureDisabled$outboundSchema + PersistImportedDeploymentRequestPendingPreparedStackProfileConditionResource$outboundSchema ), z.any(), ]), ).optional(), + scope: z.string(), }); -export function persistImportedDeploymentRequestKubernetesToJSON( - persistImportedDeploymentRequestKubernetes: - PersistImportedDeploymentRequestKubernetes, +export function persistImportedDeploymentRequestPendingPreparedStackProfileGcpResourceToJSON( + persistImportedDeploymentRequestPendingPreparedStackProfileGcpResource: + PersistImportedDeploymentRequestPendingPreparedStackProfileGcpResource, ): string { return JSON.stringify( - PersistImportedDeploymentRequestKubernetes$outboundSchema.parse( - persistImportedDeploymentRequestKubernetes, - ), + PersistImportedDeploymentRequestPendingPreparedStackProfileGcpResource$outboundSchema + .parse( + persistImportedDeploymentRequestPendingPreparedStackProfileGcpResource, + ), ); } /** @internal */ -export type PersistImportedDeploymentRequestKubernetesUnion$Outbound = - | PersistImportedDeploymentRequestKubernetes$Outbound +export type PersistImportedDeploymentRequestPendingPreparedStackProfileConditionStack$Outbound = + { + expression: string; + title: string; + }; + +/** @internal */ +export const PersistImportedDeploymentRequestPendingPreparedStackProfileConditionStack$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestPendingPreparedStackProfileConditionStack$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackProfileConditionStack + > = z.object({ + expression: z.string(), + title: z.string(), + }); + +export function persistImportedDeploymentRequestPendingPreparedStackProfileConditionStackToJSON( + persistImportedDeploymentRequestPendingPreparedStackProfileConditionStack: + PersistImportedDeploymentRequestPendingPreparedStackProfileConditionStack, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestPendingPreparedStackProfileConditionStack$outboundSchema + .parse( + persistImportedDeploymentRequestPendingPreparedStackProfileConditionStack, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestPendingPreparedStackProfileStackConditionUnion$Outbound = + | PersistImportedDeploymentRequestPendingPreparedStackProfileConditionStack$Outbound | any; /** @internal */ -export const PersistImportedDeploymentRequestKubernetesUnion$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackProfileStackConditionUnion$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestKubernetesUnion$Outbound, - PersistImportedDeploymentRequestKubernetesUnion + PersistImportedDeploymentRequestPendingPreparedStackProfileStackConditionUnion$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackProfileStackConditionUnion > = z.union([ - z.lazy(() => PersistImportedDeploymentRequestKubernetes$outboundSchema), + z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackProfileConditionStack$outboundSchema + ), z.any(), ]); -export function persistImportedDeploymentRequestKubernetesUnionToJSON( - persistImportedDeploymentRequestKubernetesUnion: - PersistImportedDeploymentRequestKubernetesUnion, +export function persistImportedDeploymentRequestPendingPreparedStackProfileStackConditionUnionToJSON( + persistImportedDeploymentRequestPendingPreparedStackProfileStackConditionUnion: + PersistImportedDeploymentRequestPendingPreparedStackProfileStackConditionUnion, ): string { return JSON.stringify( - PersistImportedDeploymentRequestKubernetesUnion$outboundSchema.parse( - persistImportedDeploymentRequestKubernetesUnion, - ), + PersistImportedDeploymentRequestPendingPreparedStackProfileStackConditionUnion$outboundSchema + .parse( + persistImportedDeploymentRequestPendingPreparedStackProfileStackConditionUnion, + ), ); } /** @internal */ -export const PersistImportedDeploymentRequestTypeByoVnetAzure$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestTypeByoVnetAzure, - ); - -/** @internal */ -export type PersistImportedDeploymentRequestNetworkByoVnetAzure$Outbound = { - application_gateway_subnet_name?: string | null | undefined; - private_endpoint_subnet_name?: string | null | undefined; - private_subnet_name: string; - public_subnet_name: string; - type: string; - vnet_resource_id: string; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackProfileGcpStack$Outbound = + { + condition?: + | PersistImportedDeploymentRequestPendingPreparedStackProfileConditionStack$Outbound + | any + | null + | undefined; + scope: string; + }; /** @internal */ -export const PersistImportedDeploymentRequestNetworkByoVnetAzure$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackProfileGcpStack$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestNetworkByoVnetAzure$Outbound, - PersistImportedDeploymentRequestNetworkByoVnetAzure + PersistImportedDeploymentRequestPendingPreparedStackProfileGcpStack$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackProfileGcpStack > = z.object({ - applicationGatewaySubnetName: z.nullable(z.string()).optional(), - privateEndpointSubnetName: z.nullable(z.string()).optional(), - privateSubnetName: z.string(), - publicSubnetName: z.string(), - type: PersistImportedDeploymentRequestTypeByoVnetAzure$outboundSchema, - vnetResourceId: z.string(), - }).transform((v) => { - return remap$(v, { - applicationGatewaySubnetName: "application_gateway_subnet_name", - privateEndpointSubnetName: "private_endpoint_subnet_name", - privateSubnetName: "private_subnet_name", - publicSubnetName: "public_subnet_name", - vnetResourceId: "vnet_resource_id", - }); + condition: z.nullable( + z.union([ + z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackProfileConditionStack$outboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), }); -export function persistImportedDeploymentRequestNetworkByoVnetAzureToJSON( - persistImportedDeploymentRequestNetworkByoVnetAzure: - PersistImportedDeploymentRequestNetworkByoVnetAzure, +export function persistImportedDeploymentRequestPendingPreparedStackProfileGcpStackToJSON( + persistImportedDeploymentRequestPendingPreparedStackProfileGcpStack: + PersistImportedDeploymentRequestPendingPreparedStackProfileGcpStack, ): string { return JSON.stringify( - PersistImportedDeploymentRequestNetworkByoVnetAzure$outboundSchema.parse( - persistImportedDeploymentRequestNetworkByoVnetAzure, - ), + PersistImportedDeploymentRequestPendingPreparedStackProfileGcpStack$outboundSchema + .parse( + persistImportedDeploymentRequestPendingPreparedStackProfileGcpStack, + ), ); } /** @internal */ -export const PersistImportedDeploymentRequestTypeByoVpcGcp$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestTypeByoVpcGcp, - ); - -/** @internal */ -export type PersistImportedDeploymentRequestNetworkByoVpcGcp$Outbound = { - network_name: string; - region: string; - subnet_name: string; - type: string; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackProfileGcpBinding$Outbound = + { + resource?: + | PersistImportedDeploymentRequestPendingPreparedStackProfileGcpResource$Outbound + | undefined; + stack?: + | PersistImportedDeploymentRequestPendingPreparedStackProfileGcpStack$Outbound + | undefined; + }; /** @internal */ -export const PersistImportedDeploymentRequestNetworkByoVpcGcp$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackProfileGcpBinding$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestNetworkByoVpcGcp$Outbound, - PersistImportedDeploymentRequestNetworkByoVpcGcp + PersistImportedDeploymentRequestPendingPreparedStackProfileGcpBinding$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackProfileGcpBinding > = z.object({ - networkName: z.string(), - region: z.string(), - subnetName: z.string(), - type: PersistImportedDeploymentRequestTypeByoVpcGcp$outboundSchema, - }).transform((v) => { - return remap$(v, { - networkName: "network_name", - subnetName: "subnet_name", - }); + resource: z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackProfileGcpResource$outboundSchema + ).optional(), + stack: z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackProfileGcpStack$outboundSchema + ).optional(), }); -export function persistImportedDeploymentRequestNetworkByoVpcGcpToJSON( - persistImportedDeploymentRequestNetworkByoVpcGcp: - PersistImportedDeploymentRequestNetworkByoVpcGcp, +export function persistImportedDeploymentRequestPendingPreparedStackProfileGcpBindingToJSON( + persistImportedDeploymentRequestPendingPreparedStackProfileGcpBinding: + PersistImportedDeploymentRequestPendingPreparedStackProfileGcpBinding, ): string { return JSON.stringify( - PersistImportedDeploymentRequestNetworkByoVpcGcp$outboundSchema.parse( - persistImportedDeploymentRequestNetworkByoVpcGcp, - ), + PersistImportedDeploymentRequestPendingPreparedStackProfileGcpBinding$outboundSchema + .parse( + persistImportedDeploymentRequestPendingPreparedStackProfileGcpBinding, + ), ); } /** @internal */ -export const PersistImportedDeploymentRequestTypeByoVpcAws$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestTypeByoVpcAws, - ); - -/** @internal */ -export type PersistImportedDeploymentRequestNetworkByoVpcAws$Outbound = { - private_subnet_ids: Array; - public_subnet_ids: Array; - security_group_ids?: Array | undefined; - type: string; - vpc_id: string; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackProfileGcpGrant$Outbound = + { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; + }; /** @internal */ -export const PersistImportedDeploymentRequestNetworkByoVpcAws$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackProfileGcpGrant$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestNetworkByoVpcAws$Outbound, - PersistImportedDeploymentRequestNetworkByoVpcAws + PersistImportedDeploymentRequestPendingPreparedStackProfileGcpGrant$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackProfileGcpGrant > = z.object({ - privateSubnetIds: z.array(z.string()), - publicSubnetIds: z.array(z.string()), - securityGroupIds: z.array(z.string()).optional(), - type: PersistImportedDeploymentRequestTypeByoVpcAws$outboundSchema, - vpcId: z.string(), - }).transform((v) => { - return remap$(v, { - privateSubnetIds: "private_subnet_ids", - publicSubnetIds: "public_subnet_ids", - securityGroupIds: "security_group_ids", - vpcId: "vpc_id", - }); + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function persistImportedDeploymentRequestNetworkByoVpcAwsToJSON( - persistImportedDeploymentRequestNetworkByoVpcAws: - PersistImportedDeploymentRequestNetworkByoVpcAws, +export function persistImportedDeploymentRequestPendingPreparedStackProfileGcpGrantToJSON( + persistImportedDeploymentRequestPendingPreparedStackProfileGcpGrant: + PersistImportedDeploymentRequestPendingPreparedStackProfileGcpGrant, ): string { return JSON.stringify( - PersistImportedDeploymentRequestNetworkByoVpcAws$outboundSchema.parse( - persistImportedDeploymentRequestNetworkByoVpcAws, - ), + PersistImportedDeploymentRequestPendingPreparedStackProfileGcpGrant$outboundSchema + .parse( + persistImportedDeploymentRequestPendingPreparedStackProfileGcpGrant, + ), ); } /** @internal */ -export const PersistImportedDeploymentRequestTypeCreate$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestTypeCreate, - ); - -/** @internal */ -export type PersistImportedDeploymentRequestNetworkCreate$Outbound = { - availability_zones?: number | undefined; - cidr?: string | null | undefined; - type: string; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackProfileGcp$Outbound = + { + binding: + PersistImportedDeploymentRequestPendingPreparedStackProfileGcpBinding$Outbound; + description?: string | null | undefined; + grant: + PersistImportedDeploymentRequestPendingPreparedStackProfileGcpGrant$Outbound; + label?: string | null | undefined; + }; /** @internal */ -export const PersistImportedDeploymentRequestNetworkCreate$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackProfileGcp$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestNetworkCreate$Outbound, - PersistImportedDeploymentRequestNetworkCreate + PersistImportedDeploymentRequestPendingPreparedStackProfileGcp$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackProfileGcp > = z.object({ - availabilityZones: z.int().optional(), - cidr: z.nullable(z.string()).optional(), - type: PersistImportedDeploymentRequestTypeCreate$outboundSchema, - }).transform((v) => { - return remap$(v, { - availabilityZones: "availability_zones", - }); + binding: z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackProfileGcpBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackProfileGcpGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), }); -export function persistImportedDeploymentRequestNetworkCreateToJSON( - persistImportedDeploymentRequestNetworkCreate: - PersistImportedDeploymentRequestNetworkCreate, +export function persistImportedDeploymentRequestPendingPreparedStackProfileGcpToJSON( + persistImportedDeploymentRequestPendingPreparedStackProfileGcp: + PersistImportedDeploymentRequestPendingPreparedStackProfileGcp, ): string { return JSON.stringify( - PersistImportedDeploymentRequestNetworkCreate$outboundSchema.parse( - persistImportedDeploymentRequestNetworkCreate, - ), + PersistImportedDeploymentRequestPendingPreparedStackProfileGcp$outboundSchema + .parse(persistImportedDeploymentRequestPendingPreparedStackProfileGcp), ); } /** @internal */ -export const PersistImportedDeploymentRequestTypeUseDefault$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestTypeUseDefault, +export type PersistImportedDeploymentRequestPendingPreparedStackProfilePlatforms$Outbound = + { + aws?: + | Array< + PersistImportedDeploymentRequestPendingPreparedStackProfileAw$Outbound + > + | null + | undefined; + azure?: + | Array< + PersistImportedDeploymentRequestPendingPreparedStackProfileAzure$Outbound + > + | null + | undefined; + gcp?: + | Array< + PersistImportedDeploymentRequestPendingPreparedStackProfileGcp$Outbound + > + | null + | undefined; + }; + +/** @internal */ +export const PersistImportedDeploymentRequestPendingPreparedStackProfilePlatforms$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestPendingPreparedStackProfilePlatforms$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackProfilePlatforms + > = z.object({ + aws: z.nullable( + z.array(z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackProfileAw$outboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackProfileAzure$outboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackProfileGcp$outboundSchema + )), + ).optional(), + }); + +export function persistImportedDeploymentRequestPendingPreparedStackProfilePlatformsToJSON( + persistImportedDeploymentRequestPendingPreparedStackProfilePlatforms: + PersistImportedDeploymentRequestPendingPreparedStackProfilePlatforms, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestPendingPreparedStackProfilePlatforms$outboundSchema + .parse( + persistImportedDeploymentRequestPendingPreparedStackProfilePlatforms, + ), ); +} /** @internal */ -export type PersistImportedDeploymentRequestNetworkUseDefault$Outbound = { - type: string; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackProfile$Outbound = + { + description: string; + id: string; + platforms: + PersistImportedDeploymentRequestPendingPreparedStackProfilePlatforms$Outbound; + }; /** @internal */ -export const PersistImportedDeploymentRequestNetworkUseDefault$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackProfile$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestNetworkUseDefault$Outbound, - PersistImportedDeploymentRequestNetworkUseDefault + PersistImportedDeploymentRequestPendingPreparedStackProfile$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackProfile > = z.object({ - type: PersistImportedDeploymentRequestTypeUseDefault$outboundSchema, + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackProfilePlatforms$outboundSchema + ), }); -export function persistImportedDeploymentRequestNetworkUseDefaultToJSON( - persistImportedDeploymentRequestNetworkUseDefault: - PersistImportedDeploymentRequestNetworkUseDefault, +export function persistImportedDeploymentRequestPendingPreparedStackProfileToJSON( + persistImportedDeploymentRequestPendingPreparedStackProfile: + PersistImportedDeploymentRequestPendingPreparedStackProfile, ): string { return JSON.stringify( - PersistImportedDeploymentRequestNetworkUseDefault$outboundSchema.parse( - persistImportedDeploymentRequestNetworkUseDefault, - ), + PersistImportedDeploymentRequestPendingPreparedStackProfile$outboundSchema + .parse(persistImportedDeploymentRequestPendingPreparedStackProfile), ); } /** @internal */ -export type PersistImportedDeploymentRequestNetworkUnion$Outbound = - | PersistImportedDeploymentRequestNetworkByoVpcAws$Outbound - | PersistImportedDeploymentRequestNetworkByoVpcGcp$Outbound - | PersistImportedDeploymentRequestNetworkByoVnetAzure$Outbound - | PersistImportedDeploymentRequestNetworkUseDefault$Outbound - | PersistImportedDeploymentRequestNetworkCreate$Outbound - | any; +export type PersistImportedDeploymentRequestPendingPreparedStackProfileUnion$Outbound = + | PersistImportedDeploymentRequestPendingPreparedStackProfile$Outbound + | string; /** @internal */ -export const PersistImportedDeploymentRequestNetworkUnion$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackProfileUnion$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestNetworkUnion$Outbound, - PersistImportedDeploymentRequestNetworkUnion + PersistImportedDeploymentRequestPendingPreparedStackProfileUnion$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackProfileUnion > = z.union([ z.lazy(() => - PersistImportedDeploymentRequestNetworkByoVpcAws$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestNetworkByoVpcGcp$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestNetworkByoVnetAzure$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestNetworkUseDefault$outboundSchema + PersistImportedDeploymentRequestPendingPreparedStackProfile$outboundSchema ), - z.lazy(() => PersistImportedDeploymentRequestNetworkCreate$outboundSchema), - z.any(), + z.string(), ]); -export function persistImportedDeploymentRequestNetworkUnionToJSON( - persistImportedDeploymentRequestNetworkUnion: - PersistImportedDeploymentRequestNetworkUnion, +export function persistImportedDeploymentRequestPendingPreparedStackProfileUnionToJSON( + persistImportedDeploymentRequestPendingPreparedStackProfileUnion: + PersistImportedDeploymentRequestPendingPreparedStackProfileUnion, ): string { return JSON.stringify( - PersistImportedDeploymentRequestNetworkUnion$outboundSchema.parse( - persistImportedDeploymentRequestNetworkUnion, - ), + PersistImportedDeploymentRequestPendingPreparedStackProfileUnion$outboundSchema + .parse(persistImportedDeploymentRequestPendingPreparedStackProfileUnion), ); } /** @internal */ -export const PersistImportedDeploymentRequestTelemetry$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestTelemetry, - ); - -/** @internal */ -export const PersistImportedDeploymentRequestUpdates$outboundSchema: z.ZodEnum< - typeof PersistImportedDeploymentRequestUpdates -> = z.enum(PersistImportedDeploymentRequestUpdates); - -/** @internal */ -export type PersistImportedDeploymentRequestStackSettings$Outbound = { - compute?: - | PersistImportedDeploymentRequestCompute$Outbound - | any - | null - | undefined; - deploymentModel?: string | undefined; - domains?: - | PersistImportedDeploymentRequestDomains$Outbound - | any - | null - | undefined; - externalBindings?: - | PersistImportedDeploymentRequestExternalBindings$Outbound - | null - | undefined; - heartbeats?: string | undefined; - kubernetes?: - | PersistImportedDeploymentRequestKubernetes$Outbound - | any - | null - | undefined; - network?: - | PersistImportedDeploymentRequestNetworkByoVpcAws$Outbound - | PersistImportedDeploymentRequestNetworkByoVpcGcp$Outbound - | PersistImportedDeploymentRequestNetworkByoVnetAzure$Outbound - | PersistImportedDeploymentRequestNetworkUseDefault$Outbound - | PersistImportedDeploymentRequestNetworkCreate$Outbound - | any - | null - | undefined; - telemetry?: string | undefined; - updates?: string | undefined; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackPermissions$Outbound = + { + management?: + | PersistImportedDeploymentRequestPendingPreparedStackManagement1$Outbound + | PersistImportedDeploymentRequestPendingPreparedStackManagement2$Outbound + | string + | undefined; + profiles: { + [k: string]: { + [k: string]: Array< + | PersistImportedDeploymentRequestPendingPreparedStackProfile$Outbound + | string + >; + }; + }; + }; /** @internal */ -export const PersistImportedDeploymentRequestStackSettings$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackPermissions$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestStackSettings$Outbound, - PersistImportedDeploymentRequestStackSettings + PersistImportedDeploymentRequestPendingPreparedStackPermissions$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackPermissions > = z.object({ - compute: z.nullable( - z.union([ - z.lazy(() => PersistImportedDeploymentRequestCompute$outboundSchema), - z.any(), - ]), - ).optional(), - deploymentModel: - PersistImportedDeploymentRequestDeploymentModel$outboundSchema.optional(), - domains: z.nullable( - z.union([ - z.lazy(() => PersistImportedDeploymentRequestDomains$outboundSchema), - z.any(), - ]), - ).optional(), - externalBindings: z.nullable( + management: z.union([ z.lazy(() => - PersistImportedDeploymentRequestExternalBindings$outboundSchema + PersistImportedDeploymentRequestPendingPreparedStackManagement1$outboundSchema ), - ).optional(), - heartbeats: PersistImportedDeploymentRequestHeartbeats$outboundSchema - .optional(), - kubernetes: z.nullable( - z.union([ - z.lazy(() => PersistImportedDeploymentRequestKubernetes$outboundSchema), - z.any(), - ]), - ).optional(), - network: z.nullable( - z.union([ - z.lazy(() => - PersistImportedDeploymentRequestNetworkByoVpcAws$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestNetworkByoVpcGcp$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestNetworkByoVnetAzure$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestNetworkUseDefault$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestNetworkCreate$outboundSchema + z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackManagement2$outboundSchema + ), + PersistImportedDeploymentRequestPendingPreparedStackManagementEnum$outboundSchema, + ]).optional(), + profiles: z.record( + z.string(), + z.record( + z.string(), + z.array( + z.union([ + z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackProfile$outboundSchema + ), + z.string(), + ]), ), - z.any(), - ]), - ).optional(), - telemetry: PersistImportedDeploymentRequestTelemetry$outboundSchema - .optional(), - updates: PersistImportedDeploymentRequestUpdates$outboundSchema.optional(), - }); - -export function persistImportedDeploymentRequestStackSettingsToJSON( - persistImportedDeploymentRequestStackSettings: - PersistImportedDeploymentRequestStackSettings, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestStackSettings$outboundSchema.parse( - persistImportedDeploymentRequestStackSettings, + ), ), - ); -} - -/** @internal */ -export const PersistImportedDeploymentRequestPlatformTest$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestPlatformTest, - ); - -/** @internal */ -export type PersistImportedDeploymentRequestEnvironmentInfoTest$Outbound = { - testId: string; - platform: string; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestEnvironmentInfoTest$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestEnvironmentInfoTest$Outbound, - PersistImportedDeploymentRequestEnvironmentInfoTest - > = z.object({ - testId: z.string(), - platform: PersistImportedDeploymentRequestPlatformTest$outboundSchema, }); -export function persistImportedDeploymentRequestEnvironmentInfoTestToJSON( - persistImportedDeploymentRequestEnvironmentInfoTest: - PersistImportedDeploymentRequestEnvironmentInfoTest, +export function persistImportedDeploymentRequestPendingPreparedStackPermissionsToJSON( + persistImportedDeploymentRequestPendingPreparedStackPermissions: + PersistImportedDeploymentRequestPendingPreparedStackPermissions, ): string { return JSON.stringify( - PersistImportedDeploymentRequestEnvironmentInfoTest$outboundSchema.parse( - persistImportedDeploymentRequestEnvironmentInfoTest, - ), + PersistImportedDeploymentRequestPendingPreparedStackPermissions$outboundSchema + .parse(persistImportedDeploymentRequestPendingPreparedStackPermissions), ); } /** @internal */ -export const PersistImportedDeploymentRequestPlatformLocal$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestPlatformLocal, - ); - -/** @internal */ -export type PersistImportedDeploymentRequestEnvironmentInfoLocal$Outbound = { - arch: string; - hostname: string; - os: string; - platform: string; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackConfig$Outbound = + { + id: string; + type: string; + [additionalProperties: string]: unknown; + }; /** @internal */ -export const PersistImportedDeploymentRequestEnvironmentInfoLocal$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackConfig$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestEnvironmentInfoLocal$Outbound, - PersistImportedDeploymentRequestEnvironmentInfoLocal + PersistImportedDeploymentRequestPendingPreparedStackConfig$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackConfig > = z.object({ - arch: z.string(), - hostname: z.string(), - os: z.string(), - platform: PersistImportedDeploymentRequestPlatformLocal$outboundSchema, + id: z.string(), + type: z.string(), + additionalProperties: z.record(z.string(), z.nullable(z.any())).optional(), + }).transform((v) => { + return { + ...v.additionalProperties, + ...remap$(v, { + additionalProperties: null, + }), + }; }); -export function persistImportedDeploymentRequestEnvironmentInfoLocalToJSON( - persistImportedDeploymentRequestEnvironmentInfoLocal: - PersistImportedDeploymentRequestEnvironmentInfoLocal, +export function persistImportedDeploymentRequestPendingPreparedStackConfigToJSON( + persistImportedDeploymentRequestPendingPreparedStackConfig: + PersistImportedDeploymentRequestPendingPreparedStackConfig, ): string { return JSON.stringify( - PersistImportedDeploymentRequestEnvironmentInfoLocal$outboundSchema.parse( - persistImportedDeploymentRequestEnvironmentInfoLocal, - ), + PersistImportedDeploymentRequestPendingPreparedStackConfig$outboundSchema + .parse(persistImportedDeploymentRequestPendingPreparedStackConfig), ); } /** @internal */ -export const PersistImportedDeploymentRequestEnvironmentInfoPlatformAzure$outboundSchema: - z.ZodEnum< - typeof PersistImportedDeploymentRequestEnvironmentInfoPlatformAzure - > = z.enum(PersistImportedDeploymentRequestEnvironmentInfoPlatformAzure); - -/** @internal */ -export type PersistImportedDeploymentRequestEnvironmentInfoAzure$Outbound = { - location: string; - subscriptionId: string; - tenantId: string; - platform: string; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackDependency$Outbound = + { + id: string; + type: string; + }; /** @internal */ -export const PersistImportedDeploymentRequestEnvironmentInfoAzure$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestEnvironmentInfoAzure$Outbound, - PersistImportedDeploymentRequestEnvironmentInfoAzure - > = z.object({ - location: z.string(), - subscriptionId: z.string(), - tenantId: z.string(), - platform: - PersistImportedDeploymentRequestEnvironmentInfoPlatformAzure$outboundSchema, +export const PersistImportedDeploymentRequestPendingPreparedStackDependency$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestPendingPreparedStackDependency$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackDependency + > = z.object({ + id: z.string(), + type: z.string(), }); -export function persistImportedDeploymentRequestEnvironmentInfoAzureToJSON( - persistImportedDeploymentRequestEnvironmentInfoAzure: - PersistImportedDeploymentRequestEnvironmentInfoAzure, +export function persistImportedDeploymentRequestPendingPreparedStackDependencyToJSON( + persistImportedDeploymentRequestPendingPreparedStackDependency: + PersistImportedDeploymentRequestPendingPreparedStackDependency, ): string { return JSON.stringify( - PersistImportedDeploymentRequestEnvironmentInfoAzure$outboundSchema.parse( - persistImportedDeploymentRequestEnvironmentInfoAzure, - ), + PersistImportedDeploymentRequestPendingPreparedStackDependency$outboundSchema + .parse(persistImportedDeploymentRequestPendingPreparedStackDependency), ); } /** @internal */ -export const PersistImportedDeploymentRequestEnvironmentInfoPlatformGcp$outboundSchema: - z.ZodEnum = - z.enum(PersistImportedDeploymentRequestEnvironmentInfoPlatformGcp); +export const PersistImportedDeploymentRequestPendingPreparedStackLifecycle$outboundSchema: + z.ZodEnum< + typeof PersistImportedDeploymentRequestPendingPreparedStackLifecycle + > = z.enum(PersistImportedDeploymentRequestPendingPreparedStackLifecycle); /** @internal */ -export type PersistImportedDeploymentRequestEnvironmentInfoGcp$Outbound = { - projectId: string; - projectNumber: string; - region: string; - platform: string; -}; +export type PersistImportedDeploymentRequestPendingPreparedStackResources$Outbound = + { + config: PersistImportedDeploymentRequestPendingPreparedStackConfig$Outbound; + dependencies: Array< + PersistImportedDeploymentRequestPendingPreparedStackDependency$Outbound + >; + enabledWhen?: string | null | undefined; + lifecycle: string; + remoteAccess?: boolean | undefined; + }; /** @internal */ -export const PersistImportedDeploymentRequestEnvironmentInfoGcp$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackResources$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestEnvironmentInfoGcp$Outbound, - PersistImportedDeploymentRequestEnvironmentInfoGcp + PersistImportedDeploymentRequestPendingPreparedStackResources$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackResources > = z.object({ - projectId: z.string(), - projectNumber: z.string(), - region: z.string(), - platform: - PersistImportedDeploymentRequestEnvironmentInfoPlatformGcp$outboundSchema, + config: z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackConfig$outboundSchema + ), + dependencies: z.array( + z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackDependency$outboundSchema + ), + ), + enabledWhen: z.nullable(z.string()).optional(), + lifecycle: + PersistImportedDeploymentRequestPendingPreparedStackLifecycle$outboundSchema, + remoteAccess: z.boolean().optional(), }); -export function persistImportedDeploymentRequestEnvironmentInfoGcpToJSON( - persistImportedDeploymentRequestEnvironmentInfoGcp: - PersistImportedDeploymentRequestEnvironmentInfoGcp, +export function persistImportedDeploymentRequestPendingPreparedStackResourcesToJSON( + persistImportedDeploymentRequestPendingPreparedStackResources: + PersistImportedDeploymentRequestPendingPreparedStackResources, ): string { return JSON.stringify( - PersistImportedDeploymentRequestEnvironmentInfoGcp$outboundSchema.parse( - persistImportedDeploymentRequestEnvironmentInfoGcp, - ), + PersistImportedDeploymentRequestPendingPreparedStackResources$outboundSchema + .parse(persistImportedDeploymentRequestPendingPreparedStackResources), ); } /** @internal */ -export const PersistImportedDeploymentRequestEnvironmentInfoPlatformAws$outboundSchema: - z.ZodEnum = - z.enum(PersistImportedDeploymentRequestEnvironmentInfoPlatformAws); +export const PersistImportedDeploymentRequestPendingPreparedStackSupportedPlatform$outboundSchema: + z.ZodEnum< + typeof PersistImportedDeploymentRequestPendingPreparedStackSupportedPlatform + > = z.enum( + PersistImportedDeploymentRequestPendingPreparedStackSupportedPlatform, + ); /** @internal */ -export type PersistImportedDeploymentRequestEnvironmentInfoAws$Outbound = { - accountId: string; - region: string; - platform: string; +export type PersistImportedDeploymentRequestPendingPreparedStack$Outbound = { + id: string; + inputs?: + | Array + | undefined; + permissions?: + | PersistImportedDeploymentRequestPendingPreparedStackPermissions$Outbound + | undefined; + resources: { + [k: string]: + PersistImportedDeploymentRequestPendingPreparedStackResources$Outbound; + }; + supportedPlatforms?: Array | null | undefined; }; /** @internal */ -export const PersistImportedDeploymentRequestEnvironmentInfoAws$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStack$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestEnvironmentInfoAws$Outbound, - PersistImportedDeploymentRequestEnvironmentInfoAws + PersistImportedDeploymentRequestPendingPreparedStack$Outbound, + PersistImportedDeploymentRequestPendingPreparedStack > = z.object({ - accountId: z.string(), - region: z.string(), - platform: - PersistImportedDeploymentRequestEnvironmentInfoPlatformAws$outboundSchema, + id: z.string(), + inputs: z.array( + z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackInput$outboundSchema + ), + ).optional(), + permissions: z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackPermissions$outboundSchema + ).optional(), + resources: z.record( + z.string(), + z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStackResources$outboundSchema + ), + ), + supportedPlatforms: z.nullable( + z.array( + PersistImportedDeploymentRequestPendingPreparedStackSupportedPlatform$outboundSchema, + ), + ).optional(), }); -export function persistImportedDeploymentRequestEnvironmentInfoAwsToJSON( - persistImportedDeploymentRequestEnvironmentInfoAws: - PersistImportedDeploymentRequestEnvironmentInfoAws, +export function persistImportedDeploymentRequestPendingPreparedStackToJSON( + persistImportedDeploymentRequestPendingPreparedStack: + PersistImportedDeploymentRequestPendingPreparedStack, ): string { return JSON.stringify( - PersistImportedDeploymentRequestEnvironmentInfoAws$outboundSchema.parse( - persistImportedDeploymentRequestEnvironmentInfoAws, + PersistImportedDeploymentRequestPendingPreparedStack$outboundSchema.parse( + persistImportedDeploymentRequestPendingPreparedStack, ), ); } /** @internal */ -export type PersistImportedDeploymentRequestEnvironmentInfoUnion$Outbound = - | PersistImportedDeploymentRequestEnvironmentInfoGcp$Outbound - | PersistImportedDeploymentRequestEnvironmentInfoAzure$Outbound - | PersistImportedDeploymentRequestEnvironmentInfoLocal$Outbound - | PersistImportedDeploymentRequestEnvironmentInfoAws$Outbound - | PersistImportedDeploymentRequestEnvironmentInfoTest$Outbound +export type PersistImportedDeploymentRequestPendingPreparedStackUnion$Outbound = + | PersistImportedDeploymentRequestPendingPreparedStack$Outbound | any; /** @internal */ -export const PersistImportedDeploymentRequestEnvironmentInfoUnion$outboundSchema: +export const PersistImportedDeploymentRequestPendingPreparedStackUnion$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestEnvironmentInfoUnion$Outbound, - PersistImportedDeploymentRequestEnvironmentInfoUnion + PersistImportedDeploymentRequestPendingPreparedStackUnion$Outbound, + PersistImportedDeploymentRequestPendingPreparedStackUnion > = z.union([ z.lazy(() => - PersistImportedDeploymentRequestEnvironmentInfoGcp$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestEnvironmentInfoAzure$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestEnvironmentInfoLocal$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestEnvironmentInfoAws$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestEnvironmentInfoTest$outboundSchema + PersistImportedDeploymentRequestPendingPreparedStack$outboundSchema ), z.any(), ]); -export function persistImportedDeploymentRequestEnvironmentInfoUnionToJSON( - persistImportedDeploymentRequestEnvironmentInfoUnion: - PersistImportedDeploymentRequestEnvironmentInfoUnion, +export function persistImportedDeploymentRequestPendingPreparedStackUnionToJSON( + persistImportedDeploymentRequestPendingPreparedStackUnion: + PersistImportedDeploymentRequestPendingPreparedStackUnion, ): string { return JSON.stringify( - PersistImportedDeploymentRequestEnvironmentInfoUnion$outboundSchema.parse( - persistImportedDeploymentRequestEnvironmentInfoUnion, - ), + PersistImportedDeploymentRequestPendingPreparedStackUnion$outboundSchema + .parse(persistImportedDeploymentRequestPendingPreparedStackUnion), ); } /** @internal */ -export const PersistImportedDeploymentRequestTypeStringList$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestTypeStringList, - ); +export const PersistImportedDeploymentRequestPreparedStackTypeStringList$outboundSchema: + z.ZodEnum< + typeof PersistImportedDeploymentRequestPreparedStackTypeStringList + > = z.enum(PersistImportedDeploymentRequestPreparedStackTypeStringList); /** @internal */ -export type PersistImportedDeploymentRequestDefaultStringList$Outbound = { - type: string; - value: Array; -}; +export type PersistImportedDeploymentRequestPreparedStackDefaultStringList$Outbound = + { + type: string; + value: Array; + }; /** @internal */ -export const PersistImportedDeploymentRequestDefaultStringList$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackDefaultStringList$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestDefaultStringList$Outbound, - PersistImportedDeploymentRequestDefaultStringList + PersistImportedDeploymentRequestPreparedStackDefaultStringList$Outbound, + PersistImportedDeploymentRequestPreparedStackDefaultStringList > = z.object({ - type: PersistImportedDeploymentRequestTypeStringList$outboundSchema, + type: + PersistImportedDeploymentRequestPreparedStackTypeStringList$outboundSchema, value: z.array(z.string()), }); -export function persistImportedDeploymentRequestDefaultStringListToJSON( - persistImportedDeploymentRequestDefaultStringList: - PersistImportedDeploymentRequestDefaultStringList, +export function persistImportedDeploymentRequestPreparedStackDefaultStringListToJSON( + persistImportedDeploymentRequestPreparedStackDefaultStringList: + PersistImportedDeploymentRequestPreparedStackDefaultStringList, ): string { return JSON.stringify( - PersistImportedDeploymentRequestDefaultStringList$outboundSchema.parse( - persistImportedDeploymentRequestDefaultStringList, - ), + PersistImportedDeploymentRequestPreparedStackDefaultStringList$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackDefaultStringList), ); } /** @internal */ -export const PersistImportedDeploymentRequestTypeBoolean$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestTypeBoolean, - ); +export const PersistImportedDeploymentRequestPreparedStackTypeBoolean$outboundSchema: + z.ZodEnum = z + .enum(PersistImportedDeploymentRequestPreparedStackTypeBoolean); /** @internal */ -export type PersistImportedDeploymentRequestDefaultBoolean$Outbound = { - type: string; - value: boolean; -}; +export type PersistImportedDeploymentRequestPreparedStackDefaultBoolean$Outbound = + { + type: string; + value: boolean; + }; /** @internal */ -export const PersistImportedDeploymentRequestDefaultBoolean$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackDefaultBoolean$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestDefaultBoolean$Outbound, - PersistImportedDeploymentRequestDefaultBoolean + PersistImportedDeploymentRequestPreparedStackDefaultBoolean$Outbound, + PersistImportedDeploymentRequestPreparedStackDefaultBoolean > = z.object({ - type: PersistImportedDeploymentRequestTypeBoolean$outboundSchema, + type: + PersistImportedDeploymentRequestPreparedStackTypeBoolean$outboundSchema, value: z.boolean(), }); -export function persistImportedDeploymentRequestDefaultBooleanToJSON( - persistImportedDeploymentRequestDefaultBoolean: - PersistImportedDeploymentRequestDefaultBoolean, +export function persistImportedDeploymentRequestPreparedStackDefaultBooleanToJSON( + persistImportedDeploymentRequestPreparedStackDefaultBoolean: + PersistImportedDeploymentRequestPreparedStackDefaultBoolean, ): string { return JSON.stringify( - PersistImportedDeploymentRequestDefaultBoolean$outboundSchema.parse( - persistImportedDeploymentRequestDefaultBoolean, - ), + PersistImportedDeploymentRequestPreparedStackDefaultBoolean$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackDefaultBoolean), ); } /** @internal */ -export const PersistImportedDeploymentRequestTypeNumber$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestTypeNumber, - ); +export const PersistImportedDeploymentRequestPreparedStackTypeNumber$outboundSchema: + z.ZodEnum = z + .enum(PersistImportedDeploymentRequestPreparedStackTypeNumber); /** @internal */ -export type PersistImportedDeploymentRequestDefaultNumber$Outbound = { - type: string; - value: string; -}; +export type PersistImportedDeploymentRequestPreparedStackDefaultNumber$Outbound = + { + type: string; + value: string; + }; /** @internal */ -export const PersistImportedDeploymentRequestDefaultNumber$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackDefaultNumber$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestDefaultNumber$Outbound, - PersistImportedDeploymentRequestDefaultNumber + PersistImportedDeploymentRequestPreparedStackDefaultNumber$Outbound, + PersistImportedDeploymentRequestPreparedStackDefaultNumber > = z.object({ - type: PersistImportedDeploymentRequestTypeNumber$outboundSchema, + type: + PersistImportedDeploymentRequestPreparedStackTypeNumber$outboundSchema, value: z.string(), }); -export function persistImportedDeploymentRequestDefaultNumberToJSON( - persistImportedDeploymentRequestDefaultNumber: - PersistImportedDeploymentRequestDefaultNumber, +export function persistImportedDeploymentRequestPreparedStackDefaultNumberToJSON( + persistImportedDeploymentRequestPreparedStackDefaultNumber: + PersistImportedDeploymentRequestPreparedStackDefaultNumber, ): string { return JSON.stringify( - PersistImportedDeploymentRequestDefaultNumber$outboundSchema.parse( - persistImportedDeploymentRequestDefaultNumber, - ), + PersistImportedDeploymentRequestPreparedStackDefaultNumber$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackDefaultNumber), ); } /** @internal */ -export const PersistImportedDeploymentRequestTypeString$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestTypeString, - ); +export const PersistImportedDeploymentRequestPreparedStackTypeString$outboundSchema: + z.ZodEnum = z + .enum(PersistImportedDeploymentRequestPreparedStackTypeString); /** @internal */ -export type PersistImportedDeploymentRequestDefaultString$Outbound = { - type: string; - value: string; -}; +export type PersistImportedDeploymentRequestPreparedStackDefaultString$Outbound = + { + type: string; + value: string; + }; /** @internal */ -export const PersistImportedDeploymentRequestDefaultString$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackDefaultString$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestDefaultString$Outbound, - PersistImportedDeploymentRequestDefaultString + PersistImportedDeploymentRequestPreparedStackDefaultString$Outbound, + PersistImportedDeploymentRequestPreparedStackDefaultString > = z.object({ - type: PersistImportedDeploymentRequestTypeString$outboundSchema, + type: + PersistImportedDeploymentRequestPreparedStackTypeString$outboundSchema, value: z.string(), }); -export function persistImportedDeploymentRequestDefaultStringToJSON( - persistImportedDeploymentRequestDefaultString: - PersistImportedDeploymentRequestDefaultString, +export function persistImportedDeploymentRequestPreparedStackDefaultStringToJSON( + persistImportedDeploymentRequestPreparedStackDefaultString: + PersistImportedDeploymentRequestPreparedStackDefaultString, ): string { return JSON.stringify( - PersistImportedDeploymentRequestDefaultString$outboundSchema.parse( - persistImportedDeploymentRequestDefaultString, - ), + PersistImportedDeploymentRequestPreparedStackDefaultString$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackDefaultString), ); } /** @internal */ -export type PersistImportedDeploymentRequestDefaultUnion$Outbound = - | PersistImportedDeploymentRequestDefaultString$Outbound - | PersistImportedDeploymentRequestDefaultNumber$Outbound - | PersistImportedDeploymentRequestDefaultBoolean$Outbound - | PersistImportedDeploymentRequestDefaultStringList$Outbound +export type PersistImportedDeploymentRequestPreparedStackDefaultUnion$Outbound = + | PersistImportedDeploymentRequestPreparedStackDefaultString$Outbound + | PersistImportedDeploymentRequestPreparedStackDefaultNumber$Outbound + | PersistImportedDeploymentRequestPreparedStackDefaultBoolean$Outbound + | PersistImportedDeploymentRequestPreparedStackDefaultStringList$Outbound | any; /** @internal */ -export const PersistImportedDeploymentRequestDefaultUnion$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackDefaultUnion$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestDefaultUnion$Outbound, - PersistImportedDeploymentRequestDefaultUnion + PersistImportedDeploymentRequestPreparedStackDefaultUnion$Outbound, + PersistImportedDeploymentRequestPreparedStackDefaultUnion > = z.union([ - z.lazy(() => PersistImportedDeploymentRequestDefaultString$outboundSchema), - z.lazy(() => PersistImportedDeploymentRequestDefaultNumber$outboundSchema), - z.lazy(() => PersistImportedDeploymentRequestDefaultBoolean$outboundSchema), z.lazy(() => - PersistImportedDeploymentRequestDefaultStringList$outboundSchema + PersistImportedDeploymentRequestPreparedStackDefaultString$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestPreparedStackDefaultNumber$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestPreparedStackDefaultBoolean$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestPreparedStackDefaultStringList$outboundSchema ), z.any(), ]); -export function persistImportedDeploymentRequestDefaultUnionToJSON( - persistImportedDeploymentRequestDefaultUnion: - PersistImportedDeploymentRequestDefaultUnion, +export function persistImportedDeploymentRequestPreparedStackDefaultUnionToJSON( + persistImportedDeploymentRequestPreparedStackDefaultUnion: + PersistImportedDeploymentRequestPreparedStackDefaultUnion, ): string { return JSON.stringify( - PersistImportedDeploymentRequestDefaultUnion$outboundSchema.parse( - persistImportedDeploymentRequestDefaultUnion, - ), + PersistImportedDeploymentRequestPreparedStackDefaultUnion$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackDefaultUnion), ); } /** @internal */ -export const PersistImportedDeploymentRequestTypeEnvEnum$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestTypeEnvEnum, - ); +export const PersistImportedDeploymentRequestPreparedStackTypeEnvEnum$outboundSchema: + z.ZodEnum = z + .enum(PersistImportedDeploymentRequestPreparedStackTypeEnvEnum); /** @internal */ -export type PersistImportedDeploymentRequestTypeUnion$Outbound = string | any; +export type PersistImportedDeploymentRequestPreparedStackTypeUnion$Outbound = + | string + | any; /** @internal */ -export const PersistImportedDeploymentRequestTypeUnion$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackTypeUnion$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestTypeUnion$Outbound, - PersistImportedDeploymentRequestTypeUnion + PersistImportedDeploymentRequestPreparedStackTypeUnion$Outbound, + PersistImportedDeploymentRequestPreparedStackTypeUnion > = z.union([ - PersistImportedDeploymentRequestTypeEnvEnum$outboundSchema, + PersistImportedDeploymentRequestPreparedStackTypeEnvEnum$outboundSchema, z.any(), ]); -export function persistImportedDeploymentRequestTypeUnionToJSON( - persistImportedDeploymentRequestTypeUnion: - PersistImportedDeploymentRequestTypeUnion, +export function persistImportedDeploymentRequestPreparedStackTypeUnionToJSON( + persistImportedDeploymentRequestPreparedStackTypeUnion: + PersistImportedDeploymentRequestPreparedStackTypeUnion, ): string { return JSON.stringify( - PersistImportedDeploymentRequestTypeUnion$outboundSchema.parse( - persistImportedDeploymentRequestTypeUnion, + PersistImportedDeploymentRequestPreparedStackTypeUnion$outboundSchema.parse( + persistImportedDeploymentRequestPreparedStackTypeUnion, ), ); } /** @internal */ -export type PersistImportedDeploymentRequestEnv$Outbound = { +export type PersistImportedDeploymentRequestPreparedStackEnv$Outbound = { name: string; targetResources?: Array | null | undefined; type?: string | any | null | undefined; }; /** @internal */ -export const PersistImportedDeploymentRequestEnv$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestEnv$Outbound, - PersistImportedDeploymentRequestEnv -> = z.object({ - name: z.string(), - targetResources: z.nullable(z.array(z.string())).optional(), - type: z.nullable( - z.union([ - PersistImportedDeploymentRequestTypeEnvEnum$outboundSchema, - z.any(), - ]), - ).optional(), -}); +export const PersistImportedDeploymentRequestPreparedStackEnv$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestPreparedStackEnv$Outbound, + PersistImportedDeploymentRequestPreparedStackEnv + > = z.object({ + name: z.string(), + targetResources: z.nullable(z.array(z.string())).optional(), + type: z.nullable( + z.union([ + PersistImportedDeploymentRequestPreparedStackTypeEnvEnum$outboundSchema, + z.any(), + ]), + ).optional(), + }); -export function persistImportedDeploymentRequestEnvToJSON( - persistImportedDeploymentRequestEnv: PersistImportedDeploymentRequestEnv, +export function persistImportedDeploymentRequestPreparedStackEnvToJSON( + persistImportedDeploymentRequestPreparedStackEnv: + PersistImportedDeploymentRequestPreparedStackEnv, ): string { return JSON.stringify( - PersistImportedDeploymentRequestEnv$outboundSchema.parse( - persistImportedDeploymentRequestEnv, + PersistImportedDeploymentRequestPreparedStackEnv$outboundSchema.parse( + persistImportedDeploymentRequestPreparedStackEnv, ), ); } /** @internal */ -export const PersistImportedDeploymentRequestKind$outboundSchema: z.ZodEnum< - typeof PersistImportedDeploymentRequestKind -> = z.enum(PersistImportedDeploymentRequestKind); +export const PersistImportedDeploymentRequestPreparedStackKind$outboundSchema: + z.ZodEnum = z.enum( + PersistImportedDeploymentRequestPreparedStackKind, + ); /** @internal */ export const PersistImportedDeploymentRequestPreparedStackPlatform$outboundSchema: @@ -6242,13 +11394,12 @@ export const PersistImportedDeploymentRequestPreparedStackPlatform$outboundSchem .enum(PersistImportedDeploymentRequestPreparedStackPlatform); /** @internal */ -export const PersistImportedDeploymentRequestProvidedBy$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestProvidedBy, - ); +export const PersistImportedDeploymentRequestPreparedStackProvidedBy$outboundSchema: + z.ZodEnum = z + .enum(PersistImportedDeploymentRequestPreparedStackProvidedBy); /** @internal */ -export type PersistImportedDeploymentRequestValidation$Outbound = { +export type PersistImportedDeploymentRequestPreparedStackValidation$Outbound = { format?: string | null | undefined; max?: string | null | undefined; maxItems?: number | null | undefined; @@ -6261,10 +11412,10 @@ export type PersistImportedDeploymentRequestValidation$Outbound = { }; /** @internal */ -export const PersistImportedDeploymentRequestValidation$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackValidation$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestValidation$Outbound, - PersistImportedDeploymentRequestValidation + PersistImportedDeploymentRequestPreparedStackValidation$Outbound, + PersistImportedDeploymentRequestPreparedStackValidation > = z.object({ format: z.nullable(z.string()).optional(), max: z.nullable(z.string()).optional(), @@ -6277,55 +11428,57 @@ export const PersistImportedDeploymentRequestValidation$outboundSchema: values: z.nullable(z.array(z.string())).optional(), }); -export function persistImportedDeploymentRequestValidationToJSON( - persistImportedDeploymentRequestValidation: - PersistImportedDeploymentRequestValidation, +export function persistImportedDeploymentRequestPreparedStackValidationToJSON( + persistImportedDeploymentRequestPreparedStackValidation: + PersistImportedDeploymentRequestPreparedStackValidation, ): string { return JSON.stringify( - PersistImportedDeploymentRequestValidation$outboundSchema.parse( - persistImportedDeploymentRequestValidation, - ), + PersistImportedDeploymentRequestPreparedStackValidation$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackValidation), ); } /** @internal */ -export type PersistImportedDeploymentRequestValidationUnion$Outbound = - | PersistImportedDeploymentRequestValidation$Outbound +export type PersistImportedDeploymentRequestPreparedStackValidationUnion$Outbound = + | PersistImportedDeploymentRequestPreparedStackValidation$Outbound | any; /** @internal */ -export const PersistImportedDeploymentRequestValidationUnion$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackValidationUnion$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestValidationUnion$Outbound, - PersistImportedDeploymentRequestValidationUnion + PersistImportedDeploymentRequestPreparedStackValidationUnion$Outbound, + PersistImportedDeploymentRequestPreparedStackValidationUnion > = z.union([ - z.lazy(() => PersistImportedDeploymentRequestValidation$outboundSchema), + z.lazy(() => + PersistImportedDeploymentRequestPreparedStackValidation$outboundSchema + ), z.any(), ]); -export function persistImportedDeploymentRequestValidationUnionToJSON( - persistImportedDeploymentRequestValidationUnion: - PersistImportedDeploymentRequestValidationUnion, +export function persistImportedDeploymentRequestPreparedStackValidationUnionToJSON( + persistImportedDeploymentRequestPreparedStackValidationUnion: + PersistImportedDeploymentRequestPreparedStackValidationUnion, ): string { return JSON.stringify( - PersistImportedDeploymentRequestValidationUnion$outboundSchema.parse( - persistImportedDeploymentRequestValidationUnion, - ), + PersistImportedDeploymentRequestPreparedStackValidationUnion$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackValidationUnion), ); } /** @internal */ -export type PersistImportedDeploymentRequestInput$Outbound = { +export type PersistImportedDeploymentRequestPreparedStackInput$Outbound = { default?: - | PersistImportedDeploymentRequestDefaultString$Outbound - | PersistImportedDeploymentRequestDefaultNumber$Outbound - | PersistImportedDeploymentRequestDefaultBoolean$Outbound - | PersistImportedDeploymentRequestDefaultStringList$Outbound + | PersistImportedDeploymentRequestPreparedStackDefaultString$Outbound + | PersistImportedDeploymentRequestPreparedStackDefaultNumber$Outbound + | PersistImportedDeploymentRequestPreparedStackDefaultBoolean$Outbound + | PersistImportedDeploymentRequestPreparedStackDefaultStringList$Outbound | any | null | undefined; description: string; - env?: Array | undefined; + env?: + | Array + | undefined; id: string; kind: string; label: string; @@ -6334,85 +11487,93 @@ export type PersistImportedDeploymentRequestInput$Outbound = { providedBy: Array; required: boolean; validation?: - | PersistImportedDeploymentRequestValidation$Outbound + | PersistImportedDeploymentRequestPreparedStackValidation$Outbound | any | null | undefined; }; /** @internal */ -export const PersistImportedDeploymentRequestInput$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestInput$Outbound, - PersistImportedDeploymentRequestInput -> = z.object({ - default: z.nullable( - z.union([ - z.lazy(() => - PersistImportedDeploymentRequestDefaultString$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestDefaultNumber$outboundSchema - ), +export const PersistImportedDeploymentRequestPreparedStackInput$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestPreparedStackInput$Outbound, + PersistImportedDeploymentRequestPreparedStackInput + > = z.object({ + default: z.nullable( + z.union([ + z.lazy(() => + PersistImportedDeploymentRequestPreparedStackDefaultString$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestPreparedStackDefaultNumber$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestPreparedStackDefaultBoolean$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestPreparedStackDefaultStringList$outboundSchema + ), + z.any(), + ]), + ).optional(), + description: z.string(), + env: z.array( z.lazy(() => - PersistImportedDeploymentRequestDefaultBoolean$outboundSchema + PersistImportedDeploymentRequestPreparedStackEnv$outboundSchema ), - z.lazy(() => - PersistImportedDeploymentRequestDefaultStringList$outboundSchema + ).optional(), + id: z.string(), + kind: PersistImportedDeploymentRequestPreparedStackKind$outboundSchema, + label: z.string(), + placeholder: z.nullable(z.string()).optional(), + platforms: z.nullable( + z.array( + PersistImportedDeploymentRequestPreparedStackPlatform$outboundSchema, ), - z.any(), - ]), - ).optional(), - description: z.string(), - env: z.array(z.lazy(() => PersistImportedDeploymentRequestEnv$outboundSchema)) - .optional(), - id: z.string(), - kind: PersistImportedDeploymentRequestKind$outboundSchema, - label: z.string(), - placeholder: z.nullable(z.string()).optional(), - platforms: z.nullable( - z.array( - PersistImportedDeploymentRequestPreparedStackPlatform$outboundSchema, + ).optional(), + providedBy: z.array( + PersistImportedDeploymentRequestPreparedStackProvidedBy$outboundSchema, ), - ).optional(), - providedBy: z.array( - PersistImportedDeploymentRequestProvidedBy$outboundSchema, - ), - required: z.boolean(), - validation: z.nullable( - z.union([ - z.lazy(() => PersistImportedDeploymentRequestValidation$outboundSchema), - z.any(), - ]), - ).optional(), -}); + required: z.boolean(), + validation: z.nullable( + z.union([ + z.lazy(() => + PersistImportedDeploymentRequestPreparedStackValidation$outboundSchema + ), + z.any(), + ]), + ).optional(), + }); -export function persistImportedDeploymentRequestInputToJSON( - persistImportedDeploymentRequestInput: PersistImportedDeploymentRequestInput, +export function persistImportedDeploymentRequestPreparedStackInputToJSON( + persistImportedDeploymentRequestPreparedStackInput: + PersistImportedDeploymentRequestPreparedStackInput, ): string { return JSON.stringify( - PersistImportedDeploymentRequestInput$outboundSchema.parse( - persistImportedDeploymentRequestInput, + PersistImportedDeploymentRequestPreparedStackInput$outboundSchema.parse( + persistImportedDeploymentRequestPreparedStackInput, ), ); } /** @internal */ -export const PersistImportedDeploymentRequestManagementEnum$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestManagementEnum, - ); +export const PersistImportedDeploymentRequestPreparedStackManagementEnum$outboundSchema: + z.ZodEnum< + typeof PersistImportedDeploymentRequestPreparedStackManagementEnum + > = z.enum(PersistImportedDeploymentRequestPreparedStackManagementEnum); /** @internal */ -export type PersistImportedDeploymentRequestOverrideAwResource$Outbound = { - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - resources: Array; -}; +export type PersistImportedDeploymentRequestPreparedStackOverrideAwResource$Outbound = + { + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + resources: Array; + }; /** @internal */ -export const PersistImportedDeploymentRequestOverrideAwResource$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackOverrideAwResource$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestOverrideAwResource$Outbound, - PersistImportedDeploymentRequestOverrideAwResource + PersistImportedDeploymentRequestPreparedStackOverrideAwResource$Outbound, + PersistImportedDeploymentRequestPreparedStackOverrideAwResource > = z.object({ condition: z.nullable( z.record(z.string(), z.record(z.string(), z.string())), @@ -6420,28 +11581,28 @@ export const PersistImportedDeploymentRequestOverrideAwResource$outboundSchema: resources: z.array(z.string()), }); -export function persistImportedDeploymentRequestOverrideAwResourceToJSON( - persistImportedDeploymentRequestOverrideAwResource: - PersistImportedDeploymentRequestOverrideAwResource, +export function persistImportedDeploymentRequestPreparedStackOverrideAwResourceToJSON( + persistImportedDeploymentRequestPreparedStackOverrideAwResource: + PersistImportedDeploymentRequestPreparedStackOverrideAwResource, ): string { return JSON.stringify( - PersistImportedDeploymentRequestOverrideAwResource$outboundSchema.parse( - persistImportedDeploymentRequestOverrideAwResource, - ), + PersistImportedDeploymentRequestPreparedStackOverrideAwResource$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackOverrideAwResource), ); } /** @internal */ -export type PersistImportedDeploymentRequestOverrideAwStack$Outbound = { - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - resources: Array; -}; +export type PersistImportedDeploymentRequestPreparedStackOverrideAwStack$Outbound = + { + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + resources: Array; + }; /** @internal */ -export const PersistImportedDeploymentRequestOverrideAwStack$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackOverrideAwStack$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestOverrideAwStack$Outbound, - PersistImportedDeploymentRequestOverrideAwStack + PersistImportedDeploymentRequestPreparedStackOverrideAwStack$Outbound, + PersistImportedDeploymentRequestPreparedStackOverrideAwStack > = z.object({ condition: z.nullable( z.record(z.string(), z.record(z.string(), z.string())), @@ -6449,70 +11610,72 @@ export const PersistImportedDeploymentRequestOverrideAwStack$outboundSchema: resources: z.array(z.string()), }); -export function persistImportedDeploymentRequestOverrideAwStackToJSON( - persistImportedDeploymentRequestOverrideAwStack: - PersistImportedDeploymentRequestOverrideAwStack, +export function persistImportedDeploymentRequestPreparedStackOverrideAwStackToJSON( + persistImportedDeploymentRequestPreparedStackOverrideAwStack: + PersistImportedDeploymentRequestPreparedStackOverrideAwStack, ): string { return JSON.stringify( - PersistImportedDeploymentRequestOverrideAwStack$outboundSchema.parse( - persistImportedDeploymentRequestOverrideAwStack, - ), + PersistImportedDeploymentRequestPreparedStackOverrideAwStack$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackOverrideAwStack), ); } /** @internal */ -export type PersistImportedDeploymentRequestOverrideAwBinding$Outbound = { - resource?: - | PersistImportedDeploymentRequestOverrideAwResource$Outbound - | undefined; - stack?: PersistImportedDeploymentRequestOverrideAwStack$Outbound | undefined; -}; +export type PersistImportedDeploymentRequestPreparedStackOverrideAwBinding$Outbound = + { + resource?: + | PersistImportedDeploymentRequestPreparedStackOverrideAwResource$Outbound + | undefined; + stack?: + | PersistImportedDeploymentRequestPreparedStackOverrideAwStack$Outbound + | undefined; + }; /** @internal */ -export const PersistImportedDeploymentRequestOverrideAwBinding$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackOverrideAwBinding$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestOverrideAwBinding$Outbound, - PersistImportedDeploymentRequestOverrideAwBinding + PersistImportedDeploymentRequestPreparedStackOverrideAwBinding$Outbound, + PersistImportedDeploymentRequestPreparedStackOverrideAwBinding > = z.object({ resource: z.lazy(() => - PersistImportedDeploymentRequestOverrideAwResource$outboundSchema + PersistImportedDeploymentRequestPreparedStackOverrideAwResource$outboundSchema ).optional(), stack: z.lazy(() => - PersistImportedDeploymentRequestOverrideAwStack$outboundSchema + PersistImportedDeploymentRequestPreparedStackOverrideAwStack$outboundSchema ).optional(), }); -export function persistImportedDeploymentRequestOverrideAwBindingToJSON( - persistImportedDeploymentRequestOverrideAwBinding: - PersistImportedDeploymentRequestOverrideAwBinding, +export function persistImportedDeploymentRequestPreparedStackOverrideAwBindingToJSON( + persistImportedDeploymentRequestPreparedStackOverrideAwBinding: + PersistImportedDeploymentRequestPreparedStackOverrideAwBinding, ): string { return JSON.stringify( - PersistImportedDeploymentRequestOverrideAwBinding$outboundSchema.parse( - persistImportedDeploymentRequestOverrideAwBinding, - ), + PersistImportedDeploymentRequestPreparedStackOverrideAwBinding$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackOverrideAwBinding), ); } /** @internal */ -export const PersistImportedDeploymentRequestOverrideEffect$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestOverrideEffect, - ); +export const PersistImportedDeploymentRequestPreparedStackOverrideEffect$outboundSchema: + z.ZodEnum< + typeof PersistImportedDeploymentRequestPreparedStackOverrideEffect + > = z.enum(PersistImportedDeploymentRequestPreparedStackOverrideEffect); /** @internal */ -export type PersistImportedDeploymentRequestOverrideAwGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; -}; +export type PersistImportedDeploymentRequestPreparedStackOverrideAwGrant$Outbound = + { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; + }; /** @internal */ -export const PersistImportedDeploymentRequestOverrideAwGrant$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackOverrideAwGrant$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestOverrideAwGrant$Outbound, - PersistImportedDeploymentRequestOverrideAwGrant + PersistImportedDeploymentRequestPreparedStackOverrideAwGrant$Outbound, + PersistImportedDeploymentRequestPreparedStackOverrideAwGrant > = z.object({ actions: z.nullable(z.array(z.string())).optional(), dataActions: z.nullable(z.array(z.string())).optional(), @@ -6521,154 +11684,157 @@ export const PersistImportedDeploymentRequestOverrideAwGrant$outboundSchema: residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function persistImportedDeploymentRequestOverrideAwGrantToJSON( - persistImportedDeploymentRequestOverrideAwGrant: - PersistImportedDeploymentRequestOverrideAwGrant, +export function persistImportedDeploymentRequestPreparedStackOverrideAwGrantToJSON( + persistImportedDeploymentRequestPreparedStackOverrideAwGrant: + PersistImportedDeploymentRequestPreparedStackOverrideAwGrant, ): string { return JSON.stringify( - PersistImportedDeploymentRequestOverrideAwGrant$outboundSchema.parse( - persistImportedDeploymentRequestOverrideAwGrant, - ), + PersistImportedDeploymentRequestPreparedStackOverrideAwGrant$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackOverrideAwGrant), ); } /** @internal */ -export type PersistImportedDeploymentRequestOverrideAw$Outbound = { - binding: PersistImportedDeploymentRequestOverrideAwBinding$Outbound; +export type PersistImportedDeploymentRequestPreparedStackOverrideAw$Outbound = { + binding: + PersistImportedDeploymentRequestPreparedStackOverrideAwBinding$Outbound; description?: string | null | undefined; effect?: string | undefined; - grant: PersistImportedDeploymentRequestOverrideAwGrant$Outbound; + grant: PersistImportedDeploymentRequestPreparedStackOverrideAwGrant$Outbound; label?: string | null | undefined; }; /** @internal */ -export const PersistImportedDeploymentRequestOverrideAw$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackOverrideAw$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestOverrideAw$Outbound, - PersistImportedDeploymentRequestOverrideAw + PersistImportedDeploymentRequestPreparedStackOverrideAw$Outbound, + PersistImportedDeploymentRequestPreparedStackOverrideAw > = z.object({ binding: z.lazy(() => - PersistImportedDeploymentRequestOverrideAwBinding$outboundSchema + PersistImportedDeploymentRequestPreparedStackOverrideAwBinding$outboundSchema ), description: z.nullable(z.string()).optional(), - effect: PersistImportedDeploymentRequestOverrideEffect$outboundSchema - .optional(), + effect: + PersistImportedDeploymentRequestPreparedStackOverrideEffect$outboundSchema + .optional(), grant: z.lazy(() => - PersistImportedDeploymentRequestOverrideAwGrant$outboundSchema + PersistImportedDeploymentRequestPreparedStackOverrideAwGrant$outboundSchema ), label: z.nullable(z.string()).optional(), }); -export function persistImportedDeploymentRequestOverrideAwToJSON( - persistImportedDeploymentRequestOverrideAw: - PersistImportedDeploymentRequestOverrideAw, +export function persistImportedDeploymentRequestPreparedStackOverrideAwToJSON( + persistImportedDeploymentRequestPreparedStackOverrideAw: + PersistImportedDeploymentRequestPreparedStackOverrideAw, ): string { return JSON.stringify( - PersistImportedDeploymentRequestOverrideAw$outboundSchema.parse( - persistImportedDeploymentRequestOverrideAw, - ), + PersistImportedDeploymentRequestPreparedStackOverrideAw$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackOverrideAw), ); } /** @internal */ -export type PersistImportedDeploymentRequestOverrideAzureResource$Outbound = { - scope: string; -}; +export type PersistImportedDeploymentRequestPreparedStackOverrideAzureResource$Outbound = + { + scope: string; + }; /** @internal */ -export const PersistImportedDeploymentRequestOverrideAzureResource$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackOverrideAzureResource$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestOverrideAzureResource$Outbound, - PersistImportedDeploymentRequestOverrideAzureResource + PersistImportedDeploymentRequestPreparedStackOverrideAzureResource$Outbound, + PersistImportedDeploymentRequestPreparedStackOverrideAzureResource > = z.object({ scope: z.string(), }); -export function persistImportedDeploymentRequestOverrideAzureResourceToJSON( - persistImportedDeploymentRequestOverrideAzureResource: - PersistImportedDeploymentRequestOverrideAzureResource, +export function persistImportedDeploymentRequestPreparedStackOverrideAzureResourceToJSON( + persistImportedDeploymentRequestPreparedStackOverrideAzureResource: + PersistImportedDeploymentRequestPreparedStackOverrideAzureResource, ): string { return JSON.stringify( - PersistImportedDeploymentRequestOverrideAzureResource$outboundSchema.parse( - persistImportedDeploymentRequestOverrideAzureResource, - ), + PersistImportedDeploymentRequestPreparedStackOverrideAzureResource$outboundSchema + .parse( + persistImportedDeploymentRequestPreparedStackOverrideAzureResource, + ), ); } /** @internal */ -export type PersistImportedDeploymentRequestOverrideAzureStack$Outbound = { - scope: string; -}; +export type PersistImportedDeploymentRequestPreparedStackOverrideAzureStack$Outbound = + { + scope: string; + }; /** @internal */ -export const PersistImportedDeploymentRequestOverrideAzureStack$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackOverrideAzureStack$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestOverrideAzureStack$Outbound, - PersistImportedDeploymentRequestOverrideAzureStack + PersistImportedDeploymentRequestPreparedStackOverrideAzureStack$Outbound, + PersistImportedDeploymentRequestPreparedStackOverrideAzureStack > = z.object({ scope: z.string(), }); -export function persistImportedDeploymentRequestOverrideAzureStackToJSON( - persistImportedDeploymentRequestOverrideAzureStack: - PersistImportedDeploymentRequestOverrideAzureStack, +export function persistImportedDeploymentRequestPreparedStackOverrideAzureStackToJSON( + persistImportedDeploymentRequestPreparedStackOverrideAzureStack: + PersistImportedDeploymentRequestPreparedStackOverrideAzureStack, ): string { return JSON.stringify( - PersistImportedDeploymentRequestOverrideAzureStack$outboundSchema.parse( - persistImportedDeploymentRequestOverrideAzureStack, - ), + PersistImportedDeploymentRequestPreparedStackOverrideAzureStack$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackOverrideAzureStack), ); } /** @internal */ -export type PersistImportedDeploymentRequestOverrideAzureBinding$Outbound = { - resource?: - | PersistImportedDeploymentRequestOverrideAzureResource$Outbound - | undefined; - stack?: - | PersistImportedDeploymentRequestOverrideAzureStack$Outbound - | undefined; -}; +export type PersistImportedDeploymentRequestPreparedStackOverrideAzureBinding$Outbound = + { + resource?: + | PersistImportedDeploymentRequestPreparedStackOverrideAzureResource$Outbound + | undefined; + stack?: + | PersistImportedDeploymentRequestPreparedStackOverrideAzureStack$Outbound + | undefined; + }; /** @internal */ -export const PersistImportedDeploymentRequestOverrideAzureBinding$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackOverrideAzureBinding$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestOverrideAzureBinding$Outbound, - PersistImportedDeploymentRequestOverrideAzureBinding + PersistImportedDeploymentRequestPreparedStackOverrideAzureBinding$Outbound, + PersistImportedDeploymentRequestPreparedStackOverrideAzureBinding > = z.object({ resource: z.lazy(() => - PersistImportedDeploymentRequestOverrideAzureResource$outboundSchema + PersistImportedDeploymentRequestPreparedStackOverrideAzureResource$outboundSchema ).optional(), stack: z.lazy(() => - PersistImportedDeploymentRequestOverrideAzureStack$outboundSchema + PersistImportedDeploymentRequestPreparedStackOverrideAzureStack$outboundSchema ).optional(), }); -export function persistImportedDeploymentRequestOverrideAzureBindingToJSON( - persistImportedDeploymentRequestOverrideAzureBinding: - PersistImportedDeploymentRequestOverrideAzureBinding, +export function persistImportedDeploymentRequestPreparedStackOverrideAzureBindingToJSON( + persistImportedDeploymentRequestPreparedStackOverrideAzureBinding: + PersistImportedDeploymentRequestPreparedStackOverrideAzureBinding, ): string { return JSON.stringify( - PersistImportedDeploymentRequestOverrideAzureBinding$outboundSchema.parse( - persistImportedDeploymentRequestOverrideAzureBinding, - ), + PersistImportedDeploymentRequestPreparedStackOverrideAzureBinding$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackOverrideAzureBinding), ); } /** @internal */ -export type PersistImportedDeploymentRequestOverrideAzureGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; -}; +export type PersistImportedDeploymentRequestPreparedStackOverrideAzureGrant$Outbound = + { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; + }; /** @internal */ -export const PersistImportedDeploymentRequestOverrideAzureGrant$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackOverrideAzureGrant$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestOverrideAzureGrant$Outbound, - PersistImportedDeploymentRequestOverrideAzureGrant + PersistImportedDeploymentRequestPreparedStackOverrideAzureGrant$Outbound, + PersistImportedDeploymentRequestPreparedStackOverrideAzureGrant > = z.object({ actions: z.nullable(z.array(z.string())).optional(), dataActions: z.nullable(z.array(z.string())).optional(), @@ -6677,126 +11843,132 @@ export const PersistImportedDeploymentRequestOverrideAzureGrant$outboundSchema: residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function persistImportedDeploymentRequestOverrideAzureGrantToJSON( - persistImportedDeploymentRequestOverrideAzureGrant: - PersistImportedDeploymentRequestOverrideAzureGrant, +export function persistImportedDeploymentRequestPreparedStackOverrideAzureGrantToJSON( + persistImportedDeploymentRequestPreparedStackOverrideAzureGrant: + PersistImportedDeploymentRequestPreparedStackOverrideAzureGrant, ): string { return JSON.stringify( - PersistImportedDeploymentRequestOverrideAzureGrant$outboundSchema.parse( - persistImportedDeploymentRequestOverrideAzureGrant, - ), + PersistImportedDeploymentRequestPreparedStackOverrideAzureGrant$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackOverrideAzureGrant), ); } /** @internal */ -export type PersistImportedDeploymentRequestOverrideAzure$Outbound = { - binding: PersistImportedDeploymentRequestOverrideAzureBinding$Outbound; - description?: string | null | undefined; - grant: PersistImportedDeploymentRequestOverrideAzureGrant$Outbound; - label?: string | null | undefined; -}; +export type PersistImportedDeploymentRequestPreparedStackOverrideAzure$Outbound = + { + binding: + PersistImportedDeploymentRequestPreparedStackOverrideAzureBinding$Outbound; + description?: string | null | undefined; + grant: + PersistImportedDeploymentRequestPreparedStackOverrideAzureGrant$Outbound; + label?: string | null | undefined; + }; /** @internal */ -export const PersistImportedDeploymentRequestOverrideAzure$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackOverrideAzure$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestOverrideAzure$Outbound, - PersistImportedDeploymentRequestOverrideAzure + PersistImportedDeploymentRequestPreparedStackOverrideAzure$Outbound, + PersistImportedDeploymentRequestPreparedStackOverrideAzure > = z.object({ binding: z.lazy(() => - PersistImportedDeploymentRequestOverrideAzureBinding$outboundSchema + PersistImportedDeploymentRequestPreparedStackOverrideAzureBinding$outboundSchema ), description: z.nullable(z.string()).optional(), grant: z.lazy(() => - PersistImportedDeploymentRequestOverrideAzureGrant$outboundSchema + PersistImportedDeploymentRequestPreparedStackOverrideAzureGrant$outboundSchema ), label: z.nullable(z.string()).optional(), }); -export function persistImportedDeploymentRequestOverrideAzureToJSON( - persistImportedDeploymentRequestOverrideAzure: - PersistImportedDeploymentRequestOverrideAzure, +export function persistImportedDeploymentRequestPreparedStackOverrideAzureToJSON( + persistImportedDeploymentRequestPreparedStackOverrideAzure: + PersistImportedDeploymentRequestPreparedStackOverrideAzure, ): string { return JSON.stringify( - PersistImportedDeploymentRequestOverrideAzure$outboundSchema.parse( - persistImportedDeploymentRequestOverrideAzure, - ), + PersistImportedDeploymentRequestPreparedStackOverrideAzure$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackOverrideAzure), ); } /** @internal */ -export type PersistImportedDeploymentRequestOverrideConditionResource$Outbound = +export type PersistImportedDeploymentRequestPreparedStackOverrideConditionResource$Outbound = { expression: string; title: string; }; /** @internal */ -export const PersistImportedDeploymentRequestOverrideConditionResource$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackOverrideConditionResource$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestOverrideConditionResource$Outbound, - PersistImportedDeploymentRequestOverrideConditionResource + PersistImportedDeploymentRequestPreparedStackOverrideConditionResource$Outbound, + PersistImportedDeploymentRequestPreparedStackOverrideConditionResource > = z.object({ expression: z.string(), title: z.string(), }); -export function persistImportedDeploymentRequestOverrideConditionResourceToJSON( - persistImportedDeploymentRequestOverrideConditionResource: - PersistImportedDeploymentRequestOverrideConditionResource, +export function persistImportedDeploymentRequestPreparedStackOverrideConditionResourceToJSON( + persistImportedDeploymentRequestPreparedStackOverrideConditionResource: + PersistImportedDeploymentRequestPreparedStackOverrideConditionResource, ): string { return JSON.stringify( - PersistImportedDeploymentRequestOverrideConditionResource$outboundSchema - .parse(persistImportedDeploymentRequestOverrideConditionResource), + PersistImportedDeploymentRequestPreparedStackOverrideConditionResource$outboundSchema + .parse( + persistImportedDeploymentRequestPreparedStackOverrideConditionResource, + ), ); } /** @internal */ -export type PersistImportedDeploymentRequestOverrideResourceConditionUnion$Outbound = - | PersistImportedDeploymentRequestOverrideConditionResource$Outbound +export type PersistImportedDeploymentRequestPreparedStackOverrideResourceConditionUnion$Outbound = + | PersistImportedDeploymentRequestPreparedStackOverrideConditionResource$Outbound | any; /** @internal */ -export const PersistImportedDeploymentRequestOverrideResourceConditionUnion$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackOverrideResourceConditionUnion$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestOverrideResourceConditionUnion$Outbound, - PersistImportedDeploymentRequestOverrideResourceConditionUnion + PersistImportedDeploymentRequestPreparedStackOverrideResourceConditionUnion$Outbound, + PersistImportedDeploymentRequestPreparedStackOverrideResourceConditionUnion > = z.union([ z.lazy(() => - PersistImportedDeploymentRequestOverrideConditionResource$outboundSchema + PersistImportedDeploymentRequestPreparedStackOverrideConditionResource$outboundSchema ), z.any(), ]); -export function persistImportedDeploymentRequestOverrideResourceConditionUnionToJSON( - persistImportedDeploymentRequestOverrideResourceConditionUnion: - PersistImportedDeploymentRequestOverrideResourceConditionUnion, +export function persistImportedDeploymentRequestPreparedStackOverrideResourceConditionUnionToJSON( + persistImportedDeploymentRequestPreparedStackOverrideResourceConditionUnion: + PersistImportedDeploymentRequestPreparedStackOverrideResourceConditionUnion, ): string { return JSON.stringify( - PersistImportedDeploymentRequestOverrideResourceConditionUnion$outboundSchema - .parse(persistImportedDeploymentRequestOverrideResourceConditionUnion), + PersistImportedDeploymentRequestPreparedStackOverrideResourceConditionUnion$outboundSchema + .parse( + persistImportedDeploymentRequestPreparedStackOverrideResourceConditionUnion, + ), ); } /** @internal */ -export type PersistImportedDeploymentRequestOverrideGcpResource$Outbound = { - condition?: - | PersistImportedDeploymentRequestOverrideConditionResource$Outbound - | any - | null - | undefined; - scope: string; -}; +export type PersistImportedDeploymentRequestPreparedStackOverrideGcpResource$Outbound = + { + condition?: + | PersistImportedDeploymentRequestPreparedStackOverrideConditionResource$Outbound + | any + | null + | undefined; + scope: string; + }; /** @internal */ -export const PersistImportedDeploymentRequestOverrideGcpResource$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackOverrideGcpResource$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestOverrideGcpResource$Outbound, - PersistImportedDeploymentRequestOverrideGcpResource + PersistImportedDeploymentRequestPreparedStackOverrideGcpResource$Outbound, + PersistImportedDeploymentRequestPreparedStackOverrideGcpResource > = z.object({ condition: z.nullable( z.union([ z.lazy(() => - PersistImportedDeploymentRequestOverrideConditionResource$outboundSchema + PersistImportedDeploymentRequestPreparedStackOverrideConditionResource$outboundSchema ), z.any(), ]), @@ -6804,91 +11976,95 @@ export const PersistImportedDeploymentRequestOverrideGcpResource$outboundSchema: scope: z.string(), }); -export function persistImportedDeploymentRequestOverrideGcpResourceToJSON( - persistImportedDeploymentRequestOverrideGcpResource: - PersistImportedDeploymentRequestOverrideGcpResource, +export function persistImportedDeploymentRequestPreparedStackOverrideGcpResourceToJSON( + persistImportedDeploymentRequestPreparedStackOverrideGcpResource: + PersistImportedDeploymentRequestPreparedStackOverrideGcpResource, ): string { return JSON.stringify( - PersistImportedDeploymentRequestOverrideGcpResource$outboundSchema.parse( - persistImportedDeploymentRequestOverrideGcpResource, - ), + PersistImportedDeploymentRequestPreparedStackOverrideGcpResource$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackOverrideGcpResource), ); } /** @internal */ -export type PersistImportedDeploymentRequestOverrideConditionStack$Outbound = { - expression: string; - title: string; -}; +export type PersistImportedDeploymentRequestPreparedStackOverrideConditionStack$Outbound = + { + expression: string; + title: string; + }; /** @internal */ -export const PersistImportedDeploymentRequestOverrideConditionStack$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackOverrideConditionStack$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestOverrideConditionStack$Outbound, - PersistImportedDeploymentRequestOverrideConditionStack + PersistImportedDeploymentRequestPreparedStackOverrideConditionStack$Outbound, + PersistImportedDeploymentRequestPreparedStackOverrideConditionStack > = z.object({ expression: z.string(), title: z.string(), }); -export function persistImportedDeploymentRequestOverrideConditionStackToJSON( - persistImportedDeploymentRequestOverrideConditionStack: - PersistImportedDeploymentRequestOverrideConditionStack, +export function persistImportedDeploymentRequestPreparedStackOverrideConditionStackToJSON( + persistImportedDeploymentRequestPreparedStackOverrideConditionStack: + PersistImportedDeploymentRequestPreparedStackOverrideConditionStack, ): string { return JSON.stringify( - PersistImportedDeploymentRequestOverrideConditionStack$outboundSchema.parse( - persistImportedDeploymentRequestOverrideConditionStack, - ), + PersistImportedDeploymentRequestPreparedStackOverrideConditionStack$outboundSchema + .parse( + persistImportedDeploymentRequestPreparedStackOverrideConditionStack, + ), ); } /** @internal */ -export type PersistImportedDeploymentRequestOverrideStackConditionUnion$Outbound = - | PersistImportedDeploymentRequestOverrideConditionStack$Outbound +export type PersistImportedDeploymentRequestPreparedStackOverrideStackConditionUnion$Outbound = + | PersistImportedDeploymentRequestPreparedStackOverrideConditionStack$Outbound | any; /** @internal */ -export const PersistImportedDeploymentRequestOverrideStackConditionUnion$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackOverrideStackConditionUnion$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestOverrideStackConditionUnion$Outbound, - PersistImportedDeploymentRequestOverrideStackConditionUnion + PersistImportedDeploymentRequestPreparedStackOverrideStackConditionUnion$Outbound, + PersistImportedDeploymentRequestPreparedStackOverrideStackConditionUnion > = z.union([ z.lazy(() => - PersistImportedDeploymentRequestOverrideConditionStack$outboundSchema + PersistImportedDeploymentRequestPreparedStackOverrideConditionStack$outboundSchema ), z.any(), ]); -export function persistImportedDeploymentRequestOverrideStackConditionUnionToJSON( - persistImportedDeploymentRequestOverrideStackConditionUnion: - PersistImportedDeploymentRequestOverrideStackConditionUnion, +export function persistImportedDeploymentRequestPreparedStackOverrideStackConditionUnionToJSON( + persistImportedDeploymentRequestPreparedStackOverrideStackConditionUnion: + PersistImportedDeploymentRequestPreparedStackOverrideStackConditionUnion, ): string { return JSON.stringify( - PersistImportedDeploymentRequestOverrideStackConditionUnion$outboundSchema - .parse(persistImportedDeploymentRequestOverrideStackConditionUnion), + PersistImportedDeploymentRequestPreparedStackOverrideStackConditionUnion$outboundSchema + .parse( + persistImportedDeploymentRequestPreparedStackOverrideStackConditionUnion, + ), ); } /** @internal */ -export type PersistImportedDeploymentRequestOverrideGcpStack$Outbound = { - condition?: - | PersistImportedDeploymentRequestOverrideConditionStack$Outbound - | any - | null - | undefined; - scope: string; -}; +export type PersistImportedDeploymentRequestPreparedStackOverrideGcpStack$Outbound = + { + condition?: + | PersistImportedDeploymentRequestPreparedStackOverrideConditionStack$Outbound + | any + | null + | undefined; + scope: string; + }; /** @internal */ -export const PersistImportedDeploymentRequestOverrideGcpStack$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackOverrideGcpStack$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestOverrideGcpStack$Outbound, - PersistImportedDeploymentRequestOverrideGcpStack + PersistImportedDeploymentRequestPreparedStackOverrideGcpStack$Outbound, + PersistImportedDeploymentRequestPreparedStackOverrideGcpStack > = z.object({ condition: z.nullable( z.union([ z.lazy(() => - PersistImportedDeploymentRequestOverrideConditionStack$outboundSchema + PersistImportedDeploymentRequestPreparedStackOverrideConditionStack$outboundSchema ), z.any(), ]), @@ -6896,64 +12072,66 @@ export const PersistImportedDeploymentRequestOverrideGcpStack$outboundSchema: scope: z.string(), }); -export function persistImportedDeploymentRequestOverrideGcpStackToJSON( - persistImportedDeploymentRequestOverrideGcpStack: - PersistImportedDeploymentRequestOverrideGcpStack, +export function persistImportedDeploymentRequestPreparedStackOverrideGcpStackToJSON( + persistImportedDeploymentRequestPreparedStackOverrideGcpStack: + PersistImportedDeploymentRequestPreparedStackOverrideGcpStack, ): string { return JSON.stringify( - PersistImportedDeploymentRequestOverrideGcpStack$outboundSchema.parse( - persistImportedDeploymentRequestOverrideGcpStack, - ), + PersistImportedDeploymentRequestPreparedStackOverrideGcpStack$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackOverrideGcpStack), ); } /** @internal */ -export type PersistImportedDeploymentRequestOverrideGcpBinding$Outbound = { - resource?: - | PersistImportedDeploymentRequestOverrideGcpResource$Outbound - | undefined; - stack?: PersistImportedDeploymentRequestOverrideGcpStack$Outbound | undefined; -}; +export type PersistImportedDeploymentRequestPreparedStackOverrideGcpBinding$Outbound = + { + resource?: + | PersistImportedDeploymentRequestPreparedStackOverrideGcpResource$Outbound + | undefined; + stack?: + | PersistImportedDeploymentRequestPreparedStackOverrideGcpStack$Outbound + | undefined; + }; /** @internal */ -export const PersistImportedDeploymentRequestOverrideGcpBinding$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackOverrideGcpBinding$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestOverrideGcpBinding$Outbound, - PersistImportedDeploymentRequestOverrideGcpBinding + PersistImportedDeploymentRequestPreparedStackOverrideGcpBinding$Outbound, + PersistImportedDeploymentRequestPreparedStackOverrideGcpBinding > = z.object({ resource: z.lazy(() => - PersistImportedDeploymentRequestOverrideGcpResource$outboundSchema + PersistImportedDeploymentRequestPreparedStackOverrideGcpResource$outboundSchema ).optional(), stack: z.lazy(() => - PersistImportedDeploymentRequestOverrideGcpStack$outboundSchema + PersistImportedDeploymentRequestPreparedStackOverrideGcpStack$outboundSchema ).optional(), }); -export function persistImportedDeploymentRequestOverrideGcpBindingToJSON( - persistImportedDeploymentRequestOverrideGcpBinding: - PersistImportedDeploymentRequestOverrideGcpBinding, +export function persistImportedDeploymentRequestPreparedStackOverrideGcpBindingToJSON( + persistImportedDeploymentRequestPreparedStackOverrideGcpBinding: + PersistImportedDeploymentRequestPreparedStackOverrideGcpBinding, ): string { return JSON.stringify( - PersistImportedDeploymentRequestOverrideGcpBinding$outboundSchema.parse( - persistImportedDeploymentRequestOverrideGcpBinding, - ), + PersistImportedDeploymentRequestPreparedStackOverrideGcpBinding$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackOverrideGcpBinding), ); } /** @internal */ -export type PersistImportedDeploymentRequestOverrideGcpGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; -}; +export type PersistImportedDeploymentRequestPreparedStackOverrideGcpGrant$Outbound = + { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; + }; /** @internal */ -export const PersistImportedDeploymentRequestOverrideGcpGrant$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackOverrideGcpGrant$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestOverrideGcpGrant$Outbound, - PersistImportedDeploymentRequestOverrideGcpGrant + PersistImportedDeploymentRequestPreparedStackOverrideGcpGrant$Outbound, + PersistImportedDeploymentRequestPreparedStackOverrideGcpGrant > = z.object({ actions: z.nullable(z.array(z.string())).optional(), dataActions: z.nullable(z.array(z.string())).optional(), @@ -6962,204 +12140,213 @@ export const PersistImportedDeploymentRequestOverrideGcpGrant$outboundSchema: residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function persistImportedDeploymentRequestOverrideGcpGrantToJSON( - persistImportedDeploymentRequestOverrideGcpGrant: - PersistImportedDeploymentRequestOverrideGcpGrant, +export function persistImportedDeploymentRequestPreparedStackOverrideGcpGrantToJSON( + persistImportedDeploymentRequestPreparedStackOverrideGcpGrant: + PersistImportedDeploymentRequestPreparedStackOverrideGcpGrant, ): string { return JSON.stringify( - PersistImportedDeploymentRequestOverrideGcpGrant$outboundSchema.parse( - persistImportedDeploymentRequestOverrideGcpGrant, - ), + PersistImportedDeploymentRequestPreparedStackOverrideGcpGrant$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackOverrideGcpGrant), ); } /** @internal */ -export type PersistImportedDeploymentRequestOverrideGcp$Outbound = { - binding: PersistImportedDeploymentRequestOverrideGcpBinding$Outbound; - description?: string | null | undefined; - grant: PersistImportedDeploymentRequestOverrideGcpGrant$Outbound; - label?: string | null | undefined; -}; +export type PersistImportedDeploymentRequestPreparedStackOverrideGcp$Outbound = + { + binding: + PersistImportedDeploymentRequestPreparedStackOverrideGcpBinding$Outbound; + description?: string | null | undefined; + grant: + PersistImportedDeploymentRequestPreparedStackOverrideGcpGrant$Outbound; + label?: string | null | undefined; + }; /** @internal */ -export const PersistImportedDeploymentRequestOverrideGcp$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackOverrideGcp$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestOverrideGcp$Outbound, - PersistImportedDeploymentRequestOverrideGcp + PersistImportedDeploymentRequestPreparedStackOverrideGcp$Outbound, + PersistImportedDeploymentRequestPreparedStackOverrideGcp > = z.object({ binding: z.lazy(() => - PersistImportedDeploymentRequestOverrideGcpBinding$outboundSchema + PersistImportedDeploymentRequestPreparedStackOverrideGcpBinding$outboundSchema ), description: z.nullable(z.string()).optional(), grant: z.lazy(() => - PersistImportedDeploymentRequestOverrideGcpGrant$outboundSchema + PersistImportedDeploymentRequestPreparedStackOverrideGcpGrant$outboundSchema ), label: z.nullable(z.string()).optional(), }); -export function persistImportedDeploymentRequestOverrideGcpToJSON( - persistImportedDeploymentRequestOverrideGcp: - PersistImportedDeploymentRequestOverrideGcp, +export function persistImportedDeploymentRequestPreparedStackOverrideGcpToJSON( + persistImportedDeploymentRequestPreparedStackOverrideGcp: + PersistImportedDeploymentRequestPreparedStackOverrideGcp, ): string { return JSON.stringify( - PersistImportedDeploymentRequestOverrideGcp$outboundSchema.parse( - persistImportedDeploymentRequestOverrideGcp, - ), + PersistImportedDeploymentRequestPreparedStackOverrideGcp$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackOverrideGcp), ); } /** @internal */ -export type PersistImportedDeploymentRequestOverridePlatforms$Outbound = { - aws?: - | Array - | null - | undefined; - azure?: - | Array - | null - | undefined; - gcp?: - | Array - | null - | undefined; -}; +export type PersistImportedDeploymentRequestPreparedStackOverridePlatforms$Outbound = + { + aws?: + | Array + | null + | undefined; + azure?: + | Array< + PersistImportedDeploymentRequestPreparedStackOverrideAzure$Outbound + > + | null + | undefined; + gcp?: + | Array + | null + | undefined; + }; /** @internal */ -export const PersistImportedDeploymentRequestOverridePlatforms$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackOverridePlatforms$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestOverridePlatforms$Outbound, - PersistImportedDeploymentRequestOverridePlatforms + PersistImportedDeploymentRequestPreparedStackOverridePlatforms$Outbound, + PersistImportedDeploymentRequestPreparedStackOverridePlatforms > = z.object({ aws: z.nullable( z.array(z.lazy(() => - PersistImportedDeploymentRequestOverrideAw$outboundSchema + PersistImportedDeploymentRequestPreparedStackOverrideAw$outboundSchema )), ).optional(), azure: z.nullable( z.array(z.lazy(() => - PersistImportedDeploymentRequestOverrideAzure$outboundSchema + PersistImportedDeploymentRequestPreparedStackOverrideAzure$outboundSchema )), ).optional(), gcp: z.nullable( z.array(z.lazy(() => - PersistImportedDeploymentRequestOverrideGcp$outboundSchema + PersistImportedDeploymentRequestPreparedStackOverrideGcp$outboundSchema )), ).optional(), }); -export function persistImportedDeploymentRequestOverridePlatformsToJSON( - persistImportedDeploymentRequestOverridePlatforms: - PersistImportedDeploymentRequestOverridePlatforms, +export function persistImportedDeploymentRequestPreparedStackOverridePlatformsToJSON( + persistImportedDeploymentRequestPreparedStackOverridePlatforms: + PersistImportedDeploymentRequestPreparedStackOverridePlatforms, ): string { return JSON.stringify( - PersistImportedDeploymentRequestOverridePlatforms$outboundSchema.parse( - persistImportedDeploymentRequestOverridePlatforms, - ), + PersistImportedDeploymentRequestPreparedStackOverridePlatforms$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackOverridePlatforms), ); } /** @internal */ -export type PersistImportedDeploymentRequestOverride$Outbound = { +export type PersistImportedDeploymentRequestPreparedStackOverride$Outbound = { description: string; id: string; - platforms: PersistImportedDeploymentRequestOverridePlatforms$Outbound; + platforms: + PersistImportedDeploymentRequestPreparedStackOverridePlatforms$Outbound; }; /** @internal */ -export const PersistImportedDeploymentRequestOverride$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestOverride$Outbound, - PersistImportedDeploymentRequestOverride -> = z.object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => - PersistImportedDeploymentRequestOverridePlatforms$outboundSchema - ), -}); +export const PersistImportedDeploymentRequestPreparedStackOverride$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestPreparedStackOverride$Outbound, + PersistImportedDeploymentRequestPreparedStackOverride + > = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + PersistImportedDeploymentRequestPreparedStackOverridePlatforms$outboundSchema + ), + }); -export function persistImportedDeploymentRequestOverrideToJSON( - persistImportedDeploymentRequestOverride: - PersistImportedDeploymentRequestOverride, +export function persistImportedDeploymentRequestPreparedStackOverrideToJSON( + persistImportedDeploymentRequestPreparedStackOverride: + PersistImportedDeploymentRequestPreparedStackOverride, ): string { return JSON.stringify( - PersistImportedDeploymentRequestOverride$outboundSchema.parse( - persistImportedDeploymentRequestOverride, + PersistImportedDeploymentRequestPreparedStackOverride$outboundSchema.parse( + persistImportedDeploymentRequestPreparedStackOverride, ), ); } /** @internal */ -export type PersistImportedDeploymentRequestOverrideUnion$Outbound = - | PersistImportedDeploymentRequestOverride$Outbound +export type PersistImportedDeploymentRequestPreparedStackOverrideUnion$Outbound = + | PersistImportedDeploymentRequestPreparedStackOverride$Outbound | string; /** @internal */ -export const PersistImportedDeploymentRequestOverrideUnion$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackOverrideUnion$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestOverrideUnion$Outbound, - PersistImportedDeploymentRequestOverrideUnion + PersistImportedDeploymentRequestPreparedStackOverrideUnion$Outbound, + PersistImportedDeploymentRequestPreparedStackOverrideUnion > = z.union([ - z.lazy(() => PersistImportedDeploymentRequestOverride$outboundSchema), + z.lazy(() => + PersistImportedDeploymentRequestPreparedStackOverride$outboundSchema + ), z.string(), ]); -export function persistImportedDeploymentRequestOverrideUnionToJSON( - persistImportedDeploymentRequestOverrideUnion: - PersistImportedDeploymentRequestOverrideUnion, +export function persistImportedDeploymentRequestPreparedStackOverrideUnionToJSON( + persistImportedDeploymentRequestPreparedStackOverrideUnion: + PersistImportedDeploymentRequestPreparedStackOverrideUnion, ): string { return JSON.stringify( - PersistImportedDeploymentRequestOverrideUnion$outboundSchema.parse( - persistImportedDeploymentRequestOverrideUnion, - ), + PersistImportedDeploymentRequestPreparedStackOverrideUnion$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackOverrideUnion), ); } /** @internal */ -export type PersistImportedDeploymentRequestManagement2$Outbound = { - override: { - [k: string]: Array< - PersistImportedDeploymentRequestOverride$Outbound | string - >; +export type PersistImportedDeploymentRequestPreparedStackManagement2$Outbound = + { + override: { + [k: string]: Array< + PersistImportedDeploymentRequestPreparedStackOverride$Outbound | string + >; + }; }; -}; /** @internal */ -export const PersistImportedDeploymentRequestManagement2$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackManagement2$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestManagement2$Outbound, - PersistImportedDeploymentRequestManagement2 + PersistImportedDeploymentRequestPreparedStackManagement2$Outbound, + PersistImportedDeploymentRequestPreparedStackManagement2 > = z.object({ override: z.record( z.string(), z.array(z.union([ - z.lazy(() => PersistImportedDeploymentRequestOverride$outboundSchema), + z.lazy(() => + PersistImportedDeploymentRequestPreparedStackOverride$outboundSchema + ), z.string(), ])), ), }); -export function persistImportedDeploymentRequestManagement2ToJSON( - persistImportedDeploymentRequestManagement2: - PersistImportedDeploymentRequestManagement2, +export function persistImportedDeploymentRequestPreparedStackManagement2ToJSON( + persistImportedDeploymentRequestPreparedStackManagement2: + PersistImportedDeploymentRequestPreparedStackManagement2, ): string { return JSON.stringify( - PersistImportedDeploymentRequestManagement2$outboundSchema.parse( - persistImportedDeploymentRequestManagement2, - ), + PersistImportedDeploymentRequestPreparedStackManagement2$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackManagement2), ); } /** @internal */ -export type PersistImportedDeploymentRequestExtendAwResource$Outbound = { - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - resources: Array; -}; +export type PersistImportedDeploymentRequestPreparedStackExtendAwResource$Outbound = + { + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + resources: Array; + }; /** @internal */ -export const PersistImportedDeploymentRequestExtendAwResource$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackExtendAwResource$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestExtendAwResource$Outbound, - PersistImportedDeploymentRequestExtendAwResource + PersistImportedDeploymentRequestPreparedStackExtendAwResource$Outbound, + PersistImportedDeploymentRequestPreparedStackExtendAwResource > = z.object({ condition: z.nullable( z.record(z.string(), z.record(z.string(), z.string())), @@ -7167,28 +12354,28 @@ export const PersistImportedDeploymentRequestExtendAwResource$outboundSchema: resources: z.array(z.string()), }); -export function persistImportedDeploymentRequestExtendAwResourceToJSON( - persistImportedDeploymentRequestExtendAwResource: - PersistImportedDeploymentRequestExtendAwResource, +export function persistImportedDeploymentRequestPreparedStackExtendAwResourceToJSON( + persistImportedDeploymentRequestPreparedStackExtendAwResource: + PersistImportedDeploymentRequestPreparedStackExtendAwResource, ): string { return JSON.stringify( - PersistImportedDeploymentRequestExtendAwResource$outboundSchema.parse( - persistImportedDeploymentRequestExtendAwResource, - ), + PersistImportedDeploymentRequestPreparedStackExtendAwResource$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackExtendAwResource), ); } /** @internal */ -export type PersistImportedDeploymentRequestExtendAwStack$Outbound = { - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - resources: Array; -}; +export type PersistImportedDeploymentRequestPreparedStackExtendAwStack$Outbound = + { + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + resources: Array; + }; /** @internal */ -export const PersistImportedDeploymentRequestExtendAwStack$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackExtendAwStack$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestExtendAwStack$Outbound, - PersistImportedDeploymentRequestExtendAwStack + PersistImportedDeploymentRequestPreparedStackExtendAwStack$Outbound, + PersistImportedDeploymentRequestPreparedStackExtendAwStack > = z.object({ condition: z.nullable( z.record(z.string(), z.record(z.string(), z.string())), @@ -7196,70 +12383,71 @@ export const PersistImportedDeploymentRequestExtendAwStack$outboundSchema: resources: z.array(z.string()), }); -export function persistImportedDeploymentRequestExtendAwStackToJSON( - persistImportedDeploymentRequestExtendAwStack: - PersistImportedDeploymentRequestExtendAwStack, +export function persistImportedDeploymentRequestPreparedStackExtendAwStackToJSON( + persistImportedDeploymentRequestPreparedStackExtendAwStack: + PersistImportedDeploymentRequestPreparedStackExtendAwStack, ): string { return JSON.stringify( - PersistImportedDeploymentRequestExtendAwStack$outboundSchema.parse( - persistImportedDeploymentRequestExtendAwStack, - ), + PersistImportedDeploymentRequestPreparedStackExtendAwStack$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackExtendAwStack), ); } /** @internal */ -export type PersistImportedDeploymentRequestExtendAwBinding$Outbound = { - resource?: - | PersistImportedDeploymentRequestExtendAwResource$Outbound - | undefined; - stack?: PersistImportedDeploymentRequestExtendAwStack$Outbound | undefined; -}; +export type PersistImportedDeploymentRequestPreparedStackExtendAwBinding$Outbound = + { + resource?: + | PersistImportedDeploymentRequestPreparedStackExtendAwResource$Outbound + | undefined; + stack?: + | PersistImportedDeploymentRequestPreparedStackExtendAwStack$Outbound + | undefined; + }; /** @internal */ -export const PersistImportedDeploymentRequestExtendAwBinding$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackExtendAwBinding$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestExtendAwBinding$Outbound, - PersistImportedDeploymentRequestExtendAwBinding + PersistImportedDeploymentRequestPreparedStackExtendAwBinding$Outbound, + PersistImportedDeploymentRequestPreparedStackExtendAwBinding > = z.object({ resource: z.lazy(() => - PersistImportedDeploymentRequestExtendAwResource$outboundSchema + PersistImportedDeploymentRequestPreparedStackExtendAwResource$outboundSchema ).optional(), stack: z.lazy(() => - PersistImportedDeploymentRequestExtendAwStack$outboundSchema + PersistImportedDeploymentRequestPreparedStackExtendAwStack$outboundSchema ).optional(), }); -export function persistImportedDeploymentRequestExtendAwBindingToJSON( - persistImportedDeploymentRequestExtendAwBinding: - PersistImportedDeploymentRequestExtendAwBinding, +export function persistImportedDeploymentRequestPreparedStackExtendAwBindingToJSON( + persistImportedDeploymentRequestPreparedStackExtendAwBinding: + PersistImportedDeploymentRequestPreparedStackExtendAwBinding, ): string { return JSON.stringify( - PersistImportedDeploymentRequestExtendAwBinding$outboundSchema.parse( - persistImportedDeploymentRequestExtendAwBinding, - ), + PersistImportedDeploymentRequestPreparedStackExtendAwBinding$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackExtendAwBinding), ); } /** @internal */ -export const PersistImportedDeploymentRequestExtendEffect$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestExtendEffect, - ); +export const PersistImportedDeploymentRequestPreparedStackExtendEffect$outboundSchema: + z.ZodEnum = + z.enum(PersistImportedDeploymentRequestPreparedStackExtendEffect); /** @internal */ -export type PersistImportedDeploymentRequestExtendAwGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; -}; +export type PersistImportedDeploymentRequestPreparedStackExtendAwGrant$Outbound = + { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; + }; /** @internal */ -export const PersistImportedDeploymentRequestExtendAwGrant$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackExtendAwGrant$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestExtendAwGrant$Outbound, - PersistImportedDeploymentRequestExtendAwGrant + PersistImportedDeploymentRequestPreparedStackExtendAwGrant$Outbound, + PersistImportedDeploymentRequestPreparedStackExtendAwGrant > = z.object({ actions: z.nullable(z.array(z.string())).optional(), dataActions: z.nullable(z.array(z.string())).optional(), @@ -7268,151 +12456,156 @@ export const PersistImportedDeploymentRequestExtendAwGrant$outboundSchema: residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function persistImportedDeploymentRequestExtendAwGrantToJSON( - persistImportedDeploymentRequestExtendAwGrant: - PersistImportedDeploymentRequestExtendAwGrant, +export function persistImportedDeploymentRequestPreparedStackExtendAwGrantToJSON( + persistImportedDeploymentRequestPreparedStackExtendAwGrant: + PersistImportedDeploymentRequestPreparedStackExtendAwGrant, ): string { return JSON.stringify( - PersistImportedDeploymentRequestExtendAwGrant$outboundSchema.parse( - persistImportedDeploymentRequestExtendAwGrant, - ), + PersistImportedDeploymentRequestPreparedStackExtendAwGrant$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackExtendAwGrant), ); } /** @internal */ -export type PersistImportedDeploymentRequestExtendAw$Outbound = { - binding: PersistImportedDeploymentRequestExtendAwBinding$Outbound; +export type PersistImportedDeploymentRequestPreparedStackExtendAw$Outbound = { + binding: + PersistImportedDeploymentRequestPreparedStackExtendAwBinding$Outbound; description?: string | null | undefined; effect?: string | undefined; - grant: PersistImportedDeploymentRequestExtendAwGrant$Outbound; + grant: PersistImportedDeploymentRequestPreparedStackExtendAwGrant$Outbound; label?: string | null | undefined; }; /** @internal */ -export const PersistImportedDeploymentRequestExtendAw$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestExtendAw$Outbound, - PersistImportedDeploymentRequestExtendAw -> = z.object({ - binding: z.lazy(() => - PersistImportedDeploymentRequestExtendAwBinding$outboundSchema - ), - description: z.nullable(z.string()).optional(), - effect: PersistImportedDeploymentRequestExtendEffect$outboundSchema - .optional(), - grant: z.lazy(() => - PersistImportedDeploymentRequestExtendAwGrant$outboundSchema - ), - label: z.nullable(z.string()).optional(), -}); +export const PersistImportedDeploymentRequestPreparedStackExtendAw$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestPreparedStackExtendAw$Outbound, + PersistImportedDeploymentRequestPreparedStackExtendAw + > = z.object({ + binding: z.lazy(() => + PersistImportedDeploymentRequestPreparedStackExtendAwBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: + PersistImportedDeploymentRequestPreparedStackExtendEffect$outboundSchema + .optional(), + grant: z.lazy(() => + PersistImportedDeploymentRequestPreparedStackExtendAwGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); -export function persistImportedDeploymentRequestExtendAwToJSON( - persistImportedDeploymentRequestExtendAw: - PersistImportedDeploymentRequestExtendAw, +export function persistImportedDeploymentRequestPreparedStackExtendAwToJSON( + persistImportedDeploymentRequestPreparedStackExtendAw: + PersistImportedDeploymentRequestPreparedStackExtendAw, ): string { return JSON.stringify( - PersistImportedDeploymentRequestExtendAw$outboundSchema.parse( - persistImportedDeploymentRequestExtendAw, + PersistImportedDeploymentRequestPreparedStackExtendAw$outboundSchema.parse( + persistImportedDeploymentRequestPreparedStackExtendAw, ), ); } /** @internal */ -export type PersistImportedDeploymentRequestExtendAzureResource$Outbound = { - scope: string; -}; +export type PersistImportedDeploymentRequestPreparedStackExtendAzureResource$Outbound = + { + scope: string; + }; /** @internal */ -export const PersistImportedDeploymentRequestExtendAzureResource$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackExtendAzureResource$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestExtendAzureResource$Outbound, - PersistImportedDeploymentRequestExtendAzureResource + PersistImportedDeploymentRequestPreparedStackExtendAzureResource$Outbound, + PersistImportedDeploymentRequestPreparedStackExtendAzureResource > = z.object({ scope: z.string(), }); -export function persistImportedDeploymentRequestExtendAzureResourceToJSON( - persistImportedDeploymentRequestExtendAzureResource: - PersistImportedDeploymentRequestExtendAzureResource, +export function persistImportedDeploymentRequestPreparedStackExtendAzureResourceToJSON( + persistImportedDeploymentRequestPreparedStackExtendAzureResource: + PersistImportedDeploymentRequestPreparedStackExtendAzureResource, ): string { return JSON.stringify( - PersistImportedDeploymentRequestExtendAzureResource$outboundSchema.parse( - persistImportedDeploymentRequestExtendAzureResource, - ), + PersistImportedDeploymentRequestPreparedStackExtendAzureResource$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackExtendAzureResource), ); } /** @internal */ -export type PersistImportedDeploymentRequestExtendAzureStack$Outbound = { - scope: string; -}; +export type PersistImportedDeploymentRequestPreparedStackExtendAzureStack$Outbound = + { + scope: string; + }; /** @internal */ -export const PersistImportedDeploymentRequestExtendAzureStack$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackExtendAzureStack$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestExtendAzureStack$Outbound, - PersistImportedDeploymentRequestExtendAzureStack + PersistImportedDeploymentRequestPreparedStackExtendAzureStack$Outbound, + PersistImportedDeploymentRequestPreparedStackExtendAzureStack > = z.object({ scope: z.string(), }); -export function persistImportedDeploymentRequestExtendAzureStackToJSON( - persistImportedDeploymentRequestExtendAzureStack: - PersistImportedDeploymentRequestExtendAzureStack, +export function persistImportedDeploymentRequestPreparedStackExtendAzureStackToJSON( + persistImportedDeploymentRequestPreparedStackExtendAzureStack: + PersistImportedDeploymentRequestPreparedStackExtendAzureStack, ): string { return JSON.stringify( - PersistImportedDeploymentRequestExtendAzureStack$outboundSchema.parse( - persistImportedDeploymentRequestExtendAzureStack, - ), + PersistImportedDeploymentRequestPreparedStackExtendAzureStack$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackExtendAzureStack), ); } /** @internal */ -export type PersistImportedDeploymentRequestExtendAzureBinding$Outbound = { - resource?: - | PersistImportedDeploymentRequestExtendAzureResource$Outbound - | undefined; - stack?: PersistImportedDeploymentRequestExtendAzureStack$Outbound | undefined; -}; +export type PersistImportedDeploymentRequestPreparedStackExtendAzureBinding$Outbound = + { + resource?: + | PersistImportedDeploymentRequestPreparedStackExtendAzureResource$Outbound + | undefined; + stack?: + | PersistImportedDeploymentRequestPreparedStackExtendAzureStack$Outbound + | undefined; + }; /** @internal */ -export const PersistImportedDeploymentRequestExtendAzureBinding$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackExtendAzureBinding$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestExtendAzureBinding$Outbound, - PersistImportedDeploymentRequestExtendAzureBinding + PersistImportedDeploymentRequestPreparedStackExtendAzureBinding$Outbound, + PersistImportedDeploymentRequestPreparedStackExtendAzureBinding > = z.object({ resource: z.lazy(() => - PersistImportedDeploymentRequestExtendAzureResource$outboundSchema + PersistImportedDeploymentRequestPreparedStackExtendAzureResource$outboundSchema ).optional(), stack: z.lazy(() => - PersistImportedDeploymentRequestExtendAzureStack$outboundSchema + PersistImportedDeploymentRequestPreparedStackExtendAzureStack$outboundSchema ).optional(), }); -export function persistImportedDeploymentRequestExtendAzureBindingToJSON( - persistImportedDeploymentRequestExtendAzureBinding: - PersistImportedDeploymentRequestExtendAzureBinding, +export function persistImportedDeploymentRequestPreparedStackExtendAzureBindingToJSON( + persistImportedDeploymentRequestPreparedStackExtendAzureBinding: + PersistImportedDeploymentRequestPreparedStackExtendAzureBinding, ): string { return JSON.stringify( - PersistImportedDeploymentRequestExtendAzureBinding$outboundSchema.parse( - persistImportedDeploymentRequestExtendAzureBinding, - ), + PersistImportedDeploymentRequestPreparedStackExtendAzureBinding$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackExtendAzureBinding), ); } /** @internal */ -export type PersistImportedDeploymentRequestExtendAzureGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; -}; +export type PersistImportedDeploymentRequestPreparedStackExtendAzureGrant$Outbound = + { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; + }; /** @internal */ -export const PersistImportedDeploymentRequestExtendAzureGrant$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackExtendAzureGrant$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestExtendAzureGrant$Outbound, - PersistImportedDeploymentRequestExtendAzureGrant + PersistImportedDeploymentRequestPreparedStackExtendAzureGrant$Outbound, + PersistImportedDeploymentRequestPreparedStackExtendAzureGrant > = z.object({ actions: z.nullable(z.array(z.string())).optional(), dataActions: z.nullable(z.array(z.string())).optional(), @@ -7421,125 +12614,132 @@ export const PersistImportedDeploymentRequestExtendAzureGrant$outboundSchema: residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function persistImportedDeploymentRequestExtendAzureGrantToJSON( - persistImportedDeploymentRequestExtendAzureGrant: - PersistImportedDeploymentRequestExtendAzureGrant, +export function persistImportedDeploymentRequestPreparedStackExtendAzureGrantToJSON( + persistImportedDeploymentRequestPreparedStackExtendAzureGrant: + PersistImportedDeploymentRequestPreparedStackExtendAzureGrant, ): string { return JSON.stringify( - PersistImportedDeploymentRequestExtendAzureGrant$outboundSchema.parse( - persistImportedDeploymentRequestExtendAzureGrant, - ), + PersistImportedDeploymentRequestPreparedStackExtendAzureGrant$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackExtendAzureGrant), ); } /** @internal */ -export type PersistImportedDeploymentRequestExtendAzure$Outbound = { - binding: PersistImportedDeploymentRequestExtendAzureBinding$Outbound; - description?: string | null | undefined; - grant: PersistImportedDeploymentRequestExtendAzureGrant$Outbound; - label?: string | null | undefined; -}; +export type PersistImportedDeploymentRequestPreparedStackExtendAzure$Outbound = + { + binding: + PersistImportedDeploymentRequestPreparedStackExtendAzureBinding$Outbound; + description?: string | null | undefined; + grant: + PersistImportedDeploymentRequestPreparedStackExtendAzureGrant$Outbound; + label?: string | null | undefined; + }; /** @internal */ -export const PersistImportedDeploymentRequestExtendAzure$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackExtendAzure$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestExtendAzure$Outbound, - PersistImportedDeploymentRequestExtendAzure + PersistImportedDeploymentRequestPreparedStackExtendAzure$Outbound, + PersistImportedDeploymentRequestPreparedStackExtendAzure > = z.object({ binding: z.lazy(() => - PersistImportedDeploymentRequestExtendAzureBinding$outboundSchema + PersistImportedDeploymentRequestPreparedStackExtendAzureBinding$outboundSchema ), description: z.nullable(z.string()).optional(), grant: z.lazy(() => - PersistImportedDeploymentRequestExtendAzureGrant$outboundSchema + PersistImportedDeploymentRequestPreparedStackExtendAzureGrant$outboundSchema ), label: z.nullable(z.string()).optional(), }); -export function persistImportedDeploymentRequestExtendAzureToJSON( - persistImportedDeploymentRequestExtendAzure: - PersistImportedDeploymentRequestExtendAzure, +export function persistImportedDeploymentRequestPreparedStackExtendAzureToJSON( + persistImportedDeploymentRequestPreparedStackExtendAzure: + PersistImportedDeploymentRequestPreparedStackExtendAzure, ): string { return JSON.stringify( - PersistImportedDeploymentRequestExtendAzure$outboundSchema.parse( - persistImportedDeploymentRequestExtendAzure, - ), + PersistImportedDeploymentRequestPreparedStackExtendAzure$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackExtendAzure), ); } /** @internal */ -export type PersistImportedDeploymentRequestExtendConditionResource$Outbound = { - expression: string; - title: string; -}; +export type PersistImportedDeploymentRequestPreparedStackExtendConditionResource$Outbound = + { + expression: string; + title: string; + }; /** @internal */ -export const PersistImportedDeploymentRequestExtendConditionResource$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackExtendConditionResource$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestExtendConditionResource$Outbound, - PersistImportedDeploymentRequestExtendConditionResource + PersistImportedDeploymentRequestPreparedStackExtendConditionResource$Outbound, + PersistImportedDeploymentRequestPreparedStackExtendConditionResource > = z.object({ expression: z.string(), title: z.string(), }); -export function persistImportedDeploymentRequestExtendConditionResourceToJSON( - persistImportedDeploymentRequestExtendConditionResource: - PersistImportedDeploymentRequestExtendConditionResource, +export function persistImportedDeploymentRequestPreparedStackExtendConditionResourceToJSON( + persistImportedDeploymentRequestPreparedStackExtendConditionResource: + PersistImportedDeploymentRequestPreparedStackExtendConditionResource, ): string { return JSON.stringify( - PersistImportedDeploymentRequestExtendConditionResource$outboundSchema - .parse(persistImportedDeploymentRequestExtendConditionResource), + PersistImportedDeploymentRequestPreparedStackExtendConditionResource$outboundSchema + .parse( + persistImportedDeploymentRequestPreparedStackExtendConditionResource, + ), ); } /** @internal */ -export type PersistImportedDeploymentRequestExtendResourceConditionUnion$Outbound = - | PersistImportedDeploymentRequestExtendConditionResource$Outbound +export type PersistImportedDeploymentRequestPreparedStackExtendResourceConditionUnion$Outbound = + | PersistImportedDeploymentRequestPreparedStackExtendConditionResource$Outbound | any; /** @internal */ -export const PersistImportedDeploymentRequestExtendResourceConditionUnion$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackExtendResourceConditionUnion$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestExtendResourceConditionUnion$Outbound, - PersistImportedDeploymentRequestExtendResourceConditionUnion + PersistImportedDeploymentRequestPreparedStackExtendResourceConditionUnion$Outbound, + PersistImportedDeploymentRequestPreparedStackExtendResourceConditionUnion > = z.union([ z.lazy(() => - PersistImportedDeploymentRequestExtendConditionResource$outboundSchema + PersistImportedDeploymentRequestPreparedStackExtendConditionResource$outboundSchema ), z.any(), ]); -export function persistImportedDeploymentRequestExtendResourceConditionUnionToJSON( - persistImportedDeploymentRequestExtendResourceConditionUnion: - PersistImportedDeploymentRequestExtendResourceConditionUnion, +export function persistImportedDeploymentRequestPreparedStackExtendResourceConditionUnionToJSON( + persistImportedDeploymentRequestPreparedStackExtendResourceConditionUnion: + PersistImportedDeploymentRequestPreparedStackExtendResourceConditionUnion, ): string { return JSON.stringify( - PersistImportedDeploymentRequestExtendResourceConditionUnion$outboundSchema - .parse(persistImportedDeploymentRequestExtendResourceConditionUnion), + PersistImportedDeploymentRequestPreparedStackExtendResourceConditionUnion$outboundSchema + .parse( + persistImportedDeploymentRequestPreparedStackExtendResourceConditionUnion, + ), ); } /** @internal */ -export type PersistImportedDeploymentRequestExtendGcpResource$Outbound = { - condition?: - | PersistImportedDeploymentRequestExtendConditionResource$Outbound - | any - | null - | undefined; - scope: string; -}; +export type PersistImportedDeploymentRequestPreparedStackExtendGcpResource$Outbound = + { + condition?: + | PersistImportedDeploymentRequestPreparedStackExtendConditionResource$Outbound + | any + | null + | undefined; + scope: string; + }; /** @internal */ -export const PersistImportedDeploymentRequestExtendGcpResource$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackExtendGcpResource$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestExtendGcpResource$Outbound, - PersistImportedDeploymentRequestExtendGcpResource + PersistImportedDeploymentRequestPreparedStackExtendGcpResource$Outbound, + PersistImportedDeploymentRequestPreparedStackExtendGcpResource > = z.object({ condition: z.nullable( z.union([ z.lazy(() => - PersistImportedDeploymentRequestExtendConditionResource$outboundSchema + PersistImportedDeploymentRequestPreparedStackExtendConditionResource$outboundSchema ), z.any(), ]), @@ -7547,91 +12747,93 @@ export const PersistImportedDeploymentRequestExtendGcpResource$outboundSchema: scope: z.string(), }); -export function persistImportedDeploymentRequestExtendGcpResourceToJSON( - persistImportedDeploymentRequestExtendGcpResource: - PersistImportedDeploymentRequestExtendGcpResource, +export function persistImportedDeploymentRequestPreparedStackExtendGcpResourceToJSON( + persistImportedDeploymentRequestPreparedStackExtendGcpResource: + PersistImportedDeploymentRequestPreparedStackExtendGcpResource, ): string { return JSON.stringify( - PersistImportedDeploymentRequestExtendGcpResource$outboundSchema.parse( - persistImportedDeploymentRequestExtendGcpResource, - ), + PersistImportedDeploymentRequestPreparedStackExtendGcpResource$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackExtendGcpResource), ); } /** @internal */ -export type PersistImportedDeploymentRequestExtendConditionStack$Outbound = { - expression: string; - title: string; -}; +export type PersistImportedDeploymentRequestPreparedStackExtendConditionStack$Outbound = + { + expression: string; + title: string; + }; /** @internal */ -export const PersistImportedDeploymentRequestExtendConditionStack$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackExtendConditionStack$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestExtendConditionStack$Outbound, - PersistImportedDeploymentRequestExtendConditionStack + PersistImportedDeploymentRequestPreparedStackExtendConditionStack$Outbound, + PersistImportedDeploymentRequestPreparedStackExtendConditionStack > = z.object({ expression: z.string(), title: z.string(), }); -export function persistImportedDeploymentRequestExtendConditionStackToJSON( - persistImportedDeploymentRequestExtendConditionStack: - PersistImportedDeploymentRequestExtendConditionStack, +export function persistImportedDeploymentRequestPreparedStackExtendConditionStackToJSON( + persistImportedDeploymentRequestPreparedStackExtendConditionStack: + PersistImportedDeploymentRequestPreparedStackExtendConditionStack, ): string { return JSON.stringify( - PersistImportedDeploymentRequestExtendConditionStack$outboundSchema.parse( - persistImportedDeploymentRequestExtendConditionStack, - ), + PersistImportedDeploymentRequestPreparedStackExtendConditionStack$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackExtendConditionStack), ); } /** @internal */ -export type PersistImportedDeploymentRequestExtendStackConditionUnion$Outbound = - | PersistImportedDeploymentRequestExtendConditionStack$Outbound +export type PersistImportedDeploymentRequestPreparedStackExtendStackConditionUnion$Outbound = + | PersistImportedDeploymentRequestPreparedStackExtendConditionStack$Outbound | any; /** @internal */ -export const PersistImportedDeploymentRequestExtendStackConditionUnion$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackExtendStackConditionUnion$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestExtendStackConditionUnion$Outbound, - PersistImportedDeploymentRequestExtendStackConditionUnion + PersistImportedDeploymentRequestPreparedStackExtendStackConditionUnion$Outbound, + PersistImportedDeploymentRequestPreparedStackExtendStackConditionUnion > = z.union([ z.lazy(() => - PersistImportedDeploymentRequestExtendConditionStack$outboundSchema + PersistImportedDeploymentRequestPreparedStackExtendConditionStack$outboundSchema ), z.any(), ]); -export function persistImportedDeploymentRequestExtendStackConditionUnionToJSON( - persistImportedDeploymentRequestExtendStackConditionUnion: - PersistImportedDeploymentRequestExtendStackConditionUnion, +export function persistImportedDeploymentRequestPreparedStackExtendStackConditionUnionToJSON( + persistImportedDeploymentRequestPreparedStackExtendStackConditionUnion: + PersistImportedDeploymentRequestPreparedStackExtendStackConditionUnion, ): string { return JSON.stringify( - PersistImportedDeploymentRequestExtendStackConditionUnion$outboundSchema - .parse(persistImportedDeploymentRequestExtendStackConditionUnion), + PersistImportedDeploymentRequestPreparedStackExtendStackConditionUnion$outboundSchema + .parse( + persistImportedDeploymentRequestPreparedStackExtendStackConditionUnion, + ), ); } /** @internal */ -export type PersistImportedDeploymentRequestExtendGcpStack$Outbound = { - condition?: - | PersistImportedDeploymentRequestExtendConditionStack$Outbound - | any - | null - | undefined; - scope: string; -}; +export type PersistImportedDeploymentRequestPreparedStackExtendGcpStack$Outbound = + { + condition?: + | PersistImportedDeploymentRequestPreparedStackExtendConditionStack$Outbound + | any + | null + | undefined; + scope: string; + }; /** @internal */ -export const PersistImportedDeploymentRequestExtendGcpStack$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackExtendGcpStack$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestExtendGcpStack$Outbound, - PersistImportedDeploymentRequestExtendGcpStack + PersistImportedDeploymentRequestPreparedStackExtendGcpStack$Outbound, + PersistImportedDeploymentRequestPreparedStackExtendGcpStack > = z.object({ condition: z.nullable( z.union([ z.lazy(() => - PersistImportedDeploymentRequestExtendConditionStack$outboundSchema + PersistImportedDeploymentRequestPreparedStackExtendConditionStack$outboundSchema ), z.any(), ]), @@ -7639,64 +12841,66 @@ export const PersistImportedDeploymentRequestExtendGcpStack$outboundSchema: scope: z.string(), }); -export function persistImportedDeploymentRequestExtendGcpStackToJSON( - persistImportedDeploymentRequestExtendGcpStack: - PersistImportedDeploymentRequestExtendGcpStack, +export function persistImportedDeploymentRequestPreparedStackExtendGcpStackToJSON( + persistImportedDeploymentRequestPreparedStackExtendGcpStack: + PersistImportedDeploymentRequestPreparedStackExtendGcpStack, ): string { return JSON.stringify( - PersistImportedDeploymentRequestExtendGcpStack$outboundSchema.parse( - persistImportedDeploymentRequestExtendGcpStack, - ), + PersistImportedDeploymentRequestPreparedStackExtendGcpStack$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackExtendGcpStack), ); } /** @internal */ -export type PersistImportedDeploymentRequestExtendGcpBinding$Outbound = { - resource?: - | PersistImportedDeploymentRequestExtendGcpResource$Outbound - | undefined; - stack?: PersistImportedDeploymentRequestExtendGcpStack$Outbound | undefined; -}; +export type PersistImportedDeploymentRequestPreparedStackExtendGcpBinding$Outbound = + { + resource?: + | PersistImportedDeploymentRequestPreparedStackExtendGcpResource$Outbound + | undefined; + stack?: + | PersistImportedDeploymentRequestPreparedStackExtendGcpStack$Outbound + | undefined; + }; /** @internal */ -export const PersistImportedDeploymentRequestExtendGcpBinding$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackExtendGcpBinding$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestExtendGcpBinding$Outbound, - PersistImportedDeploymentRequestExtendGcpBinding + PersistImportedDeploymentRequestPreparedStackExtendGcpBinding$Outbound, + PersistImportedDeploymentRequestPreparedStackExtendGcpBinding > = z.object({ resource: z.lazy(() => - PersistImportedDeploymentRequestExtendGcpResource$outboundSchema + PersistImportedDeploymentRequestPreparedStackExtendGcpResource$outboundSchema ).optional(), stack: z.lazy(() => - PersistImportedDeploymentRequestExtendGcpStack$outboundSchema + PersistImportedDeploymentRequestPreparedStackExtendGcpStack$outboundSchema ).optional(), }); -export function persistImportedDeploymentRequestExtendGcpBindingToJSON( - persistImportedDeploymentRequestExtendGcpBinding: - PersistImportedDeploymentRequestExtendGcpBinding, +export function persistImportedDeploymentRequestPreparedStackExtendGcpBindingToJSON( + persistImportedDeploymentRequestPreparedStackExtendGcpBinding: + PersistImportedDeploymentRequestPreparedStackExtendGcpBinding, ): string { return JSON.stringify( - PersistImportedDeploymentRequestExtendGcpBinding$outboundSchema.parse( - persistImportedDeploymentRequestExtendGcpBinding, - ), + PersistImportedDeploymentRequestPreparedStackExtendGcpBinding$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackExtendGcpBinding), ); } /** @internal */ -export type PersistImportedDeploymentRequestExtendGcpGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; -}; +export type PersistImportedDeploymentRequestPreparedStackExtendGcpGrant$Outbound = + { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; + }; /** @internal */ -export const PersistImportedDeploymentRequestExtendGcpGrant$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackExtendGcpGrant$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestExtendGcpGrant$Outbound, - PersistImportedDeploymentRequestExtendGcpGrant + PersistImportedDeploymentRequestPreparedStackExtendGcpGrant$Outbound, + PersistImportedDeploymentRequestPreparedStackExtendGcpGrant > = z.object({ actions: z.nullable(z.array(z.string())).optional(), dataActions: z.nullable(z.array(z.string())).optional(), @@ -7705,232 +12909,241 @@ export const PersistImportedDeploymentRequestExtendGcpGrant$outboundSchema: residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function persistImportedDeploymentRequestExtendGcpGrantToJSON( - persistImportedDeploymentRequestExtendGcpGrant: - PersistImportedDeploymentRequestExtendGcpGrant, +export function persistImportedDeploymentRequestPreparedStackExtendGcpGrantToJSON( + persistImportedDeploymentRequestPreparedStackExtendGcpGrant: + PersistImportedDeploymentRequestPreparedStackExtendGcpGrant, ): string { return JSON.stringify( - PersistImportedDeploymentRequestExtendGcpGrant$outboundSchema.parse( - persistImportedDeploymentRequestExtendGcpGrant, - ), + PersistImportedDeploymentRequestPreparedStackExtendGcpGrant$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackExtendGcpGrant), ); } /** @internal */ -export type PersistImportedDeploymentRequestExtendGcp$Outbound = { - binding: PersistImportedDeploymentRequestExtendGcpBinding$Outbound; +export type PersistImportedDeploymentRequestPreparedStackExtendGcp$Outbound = { + binding: + PersistImportedDeploymentRequestPreparedStackExtendGcpBinding$Outbound; description?: string | null | undefined; - grant: PersistImportedDeploymentRequestExtendGcpGrant$Outbound; + grant: PersistImportedDeploymentRequestPreparedStackExtendGcpGrant$Outbound; label?: string | null | undefined; }; /** @internal */ -export const PersistImportedDeploymentRequestExtendGcp$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackExtendGcp$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestExtendGcp$Outbound, - PersistImportedDeploymentRequestExtendGcp + PersistImportedDeploymentRequestPreparedStackExtendGcp$Outbound, + PersistImportedDeploymentRequestPreparedStackExtendGcp > = z.object({ binding: z.lazy(() => - PersistImportedDeploymentRequestExtendGcpBinding$outboundSchema + PersistImportedDeploymentRequestPreparedStackExtendGcpBinding$outboundSchema ), description: z.nullable(z.string()).optional(), grant: z.lazy(() => - PersistImportedDeploymentRequestExtendGcpGrant$outboundSchema + PersistImportedDeploymentRequestPreparedStackExtendGcpGrant$outboundSchema ), label: z.nullable(z.string()).optional(), }); -export function persistImportedDeploymentRequestExtendGcpToJSON( - persistImportedDeploymentRequestExtendGcp: - PersistImportedDeploymentRequestExtendGcp, +export function persistImportedDeploymentRequestPreparedStackExtendGcpToJSON( + persistImportedDeploymentRequestPreparedStackExtendGcp: + PersistImportedDeploymentRequestPreparedStackExtendGcp, ): string { - return JSON.stringify( - PersistImportedDeploymentRequestExtendGcp$outboundSchema.parse( - persistImportedDeploymentRequestExtendGcp, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestExtendPlatforms$Outbound = { - aws?: - | Array - | null - | undefined; - azure?: - | Array - | null - | undefined; - gcp?: - | Array - | null - | undefined; -}; + return JSON.stringify( + PersistImportedDeploymentRequestPreparedStackExtendGcp$outboundSchema.parse( + persistImportedDeploymentRequestPreparedStackExtendGcp, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestPreparedStackExtendPlatforms$Outbound = + { + aws?: + | Array + | null + | undefined; + azure?: + | Array + | null + | undefined; + gcp?: + | Array + | null + | undefined; + }; /** @internal */ -export const PersistImportedDeploymentRequestExtendPlatforms$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackExtendPlatforms$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestExtendPlatforms$Outbound, - PersistImportedDeploymentRequestExtendPlatforms + PersistImportedDeploymentRequestPreparedStackExtendPlatforms$Outbound, + PersistImportedDeploymentRequestPreparedStackExtendPlatforms > = z.object({ aws: z.nullable( z.array(z.lazy(() => - PersistImportedDeploymentRequestExtendAw$outboundSchema + PersistImportedDeploymentRequestPreparedStackExtendAw$outboundSchema )), ).optional(), azure: z.nullable( z.array(z.lazy(() => - PersistImportedDeploymentRequestExtendAzure$outboundSchema + PersistImportedDeploymentRequestPreparedStackExtendAzure$outboundSchema )), ).optional(), gcp: z.nullable( z.array(z.lazy(() => - PersistImportedDeploymentRequestExtendGcp$outboundSchema + PersistImportedDeploymentRequestPreparedStackExtendGcp$outboundSchema )), ).optional(), }); -export function persistImportedDeploymentRequestExtendPlatformsToJSON( - persistImportedDeploymentRequestExtendPlatforms: - PersistImportedDeploymentRequestExtendPlatforms, +export function persistImportedDeploymentRequestPreparedStackExtendPlatformsToJSON( + persistImportedDeploymentRequestPreparedStackExtendPlatforms: + PersistImportedDeploymentRequestPreparedStackExtendPlatforms, ): string { return JSON.stringify( - PersistImportedDeploymentRequestExtendPlatforms$outboundSchema.parse( - persistImportedDeploymentRequestExtendPlatforms, - ), + PersistImportedDeploymentRequestPreparedStackExtendPlatforms$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackExtendPlatforms), ); } /** @internal */ -export type PersistImportedDeploymentRequestExtend$Outbound = { +export type PersistImportedDeploymentRequestPreparedStackExtend$Outbound = { description: string; id: string; - platforms: PersistImportedDeploymentRequestExtendPlatforms$Outbound; + platforms: + PersistImportedDeploymentRequestPreparedStackExtendPlatforms$Outbound; }; /** @internal */ -export const PersistImportedDeploymentRequestExtend$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestExtend$Outbound, - PersistImportedDeploymentRequestExtend -> = z.object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => - PersistImportedDeploymentRequestExtendPlatforms$outboundSchema - ), -}); +export const PersistImportedDeploymentRequestPreparedStackExtend$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestPreparedStackExtend$Outbound, + PersistImportedDeploymentRequestPreparedStackExtend + > = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + PersistImportedDeploymentRequestPreparedStackExtendPlatforms$outboundSchema + ), + }); -export function persistImportedDeploymentRequestExtendToJSON( - persistImportedDeploymentRequestExtend: - PersistImportedDeploymentRequestExtend, +export function persistImportedDeploymentRequestPreparedStackExtendToJSON( + persistImportedDeploymentRequestPreparedStackExtend: + PersistImportedDeploymentRequestPreparedStackExtend, ): string { return JSON.stringify( - PersistImportedDeploymentRequestExtend$outboundSchema.parse( - persistImportedDeploymentRequestExtend, + PersistImportedDeploymentRequestPreparedStackExtend$outboundSchema.parse( + persistImportedDeploymentRequestPreparedStackExtend, ), ); } /** @internal */ -export type PersistImportedDeploymentRequestExtendUnion$Outbound = - | PersistImportedDeploymentRequestExtend$Outbound +export type PersistImportedDeploymentRequestPreparedStackExtendUnion$Outbound = + | PersistImportedDeploymentRequestPreparedStackExtend$Outbound | string; /** @internal */ -export const PersistImportedDeploymentRequestExtendUnion$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackExtendUnion$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestExtendUnion$Outbound, - PersistImportedDeploymentRequestExtendUnion + PersistImportedDeploymentRequestPreparedStackExtendUnion$Outbound, + PersistImportedDeploymentRequestPreparedStackExtendUnion > = z.union([ - z.lazy(() => PersistImportedDeploymentRequestExtend$outboundSchema), + z.lazy(() => + PersistImportedDeploymentRequestPreparedStackExtend$outboundSchema + ), z.string(), ]); -export function persistImportedDeploymentRequestExtendUnionToJSON( - persistImportedDeploymentRequestExtendUnion: - PersistImportedDeploymentRequestExtendUnion, +export function persistImportedDeploymentRequestPreparedStackExtendUnionToJSON( + persistImportedDeploymentRequestPreparedStackExtendUnion: + PersistImportedDeploymentRequestPreparedStackExtendUnion, ): string { return JSON.stringify( - PersistImportedDeploymentRequestExtendUnion$outboundSchema.parse( - persistImportedDeploymentRequestExtendUnion, - ), + PersistImportedDeploymentRequestPreparedStackExtendUnion$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackExtendUnion), ); } /** @internal */ -export type PersistImportedDeploymentRequestManagement1$Outbound = { - extend: { - [k: string]: Array< - PersistImportedDeploymentRequestExtend$Outbound | string - >; +export type PersistImportedDeploymentRequestPreparedStackManagement1$Outbound = + { + extend: { + [k: string]: Array< + PersistImportedDeploymentRequestPreparedStackExtend$Outbound | string + >; + }; }; -}; /** @internal */ -export const PersistImportedDeploymentRequestManagement1$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackManagement1$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestManagement1$Outbound, - PersistImportedDeploymentRequestManagement1 + PersistImportedDeploymentRequestPreparedStackManagement1$Outbound, + PersistImportedDeploymentRequestPreparedStackManagement1 > = z.object({ extend: z.record( z.string(), z.array(z.union([ - z.lazy(() => PersistImportedDeploymentRequestExtend$outboundSchema), + z.lazy(() => + PersistImportedDeploymentRequestPreparedStackExtend$outboundSchema + ), z.string(), ])), ), }); -export function persistImportedDeploymentRequestManagement1ToJSON( - persistImportedDeploymentRequestManagement1: - PersistImportedDeploymentRequestManagement1, +export function persistImportedDeploymentRequestPreparedStackManagement1ToJSON( + persistImportedDeploymentRequestPreparedStackManagement1: + PersistImportedDeploymentRequestPreparedStackManagement1, ): string { return JSON.stringify( - PersistImportedDeploymentRequestManagement1$outboundSchema.parse( - persistImportedDeploymentRequestManagement1, - ), + PersistImportedDeploymentRequestPreparedStackManagement1$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackManagement1), ); } /** @internal */ -export type PersistImportedDeploymentRequestManagementUnion$Outbound = - | PersistImportedDeploymentRequestManagement1$Outbound - | PersistImportedDeploymentRequestManagement2$Outbound +export type PersistImportedDeploymentRequestPreparedStackManagementUnion$Outbound = + | PersistImportedDeploymentRequestPreparedStackManagement1$Outbound + | PersistImportedDeploymentRequestPreparedStackManagement2$Outbound | string; /** @internal */ -export const PersistImportedDeploymentRequestManagementUnion$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackManagementUnion$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestManagementUnion$Outbound, - PersistImportedDeploymentRequestManagementUnion + PersistImportedDeploymentRequestPreparedStackManagementUnion$Outbound, + PersistImportedDeploymentRequestPreparedStackManagementUnion > = z.union([ - z.lazy(() => PersistImportedDeploymentRequestManagement1$outboundSchema), - z.lazy(() => PersistImportedDeploymentRequestManagement2$outboundSchema), - PersistImportedDeploymentRequestManagementEnum$outboundSchema, + z.lazy(() => + PersistImportedDeploymentRequestPreparedStackManagement1$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestPreparedStackManagement2$outboundSchema + ), + PersistImportedDeploymentRequestPreparedStackManagementEnum$outboundSchema, ]); -export function persistImportedDeploymentRequestManagementUnionToJSON( - persistImportedDeploymentRequestManagementUnion: - PersistImportedDeploymentRequestManagementUnion, +export function persistImportedDeploymentRequestPreparedStackManagementUnionToJSON( + persistImportedDeploymentRequestPreparedStackManagementUnion: + PersistImportedDeploymentRequestPreparedStackManagementUnion, ): string { return JSON.stringify( - PersistImportedDeploymentRequestManagementUnion$outboundSchema.parse( - persistImportedDeploymentRequestManagementUnion, - ), + PersistImportedDeploymentRequestPreparedStackManagementUnion$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackManagementUnion), ); } /** @internal */ -export type PersistImportedDeploymentRequestProfileAwResource$Outbound = { - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - resources: Array; -}; +export type PersistImportedDeploymentRequestPreparedStackProfileAwResource$Outbound = + { + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + resources: Array; + }; /** @internal */ -export const PersistImportedDeploymentRequestProfileAwResource$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackProfileAwResource$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestProfileAwResource$Outbound, - PersistImportedDeploymentRequestProfileAwResource + PersistImportedDeploymentRequestPreparedStackProfileAwResource$Outbound, + PersistImportedDeploymentRequestPreparedStackProfileAwResource > = z.object({ condition: z.nullable( z.record(z.string(), z.record(z.string(), z.string())), @@ -7938,28 +13151,28 @@ export const PersistImportedDeploymentRequestProfileAwResource$outboundSchema: resources: z.array(z.string()), }); -export function persistImportedDeploymentRequestProfileAwResourceToJSON( - persistImportedDeploymentRequestProfileAwResource: - PersistImportedDeploymentRequestProfileAwResource, +export function persistImportedDeploymentRequestPreparedStackProfileAwResourceToJSON( + persistImportedDeploymentRequestPreparedStackProfileAwResource: + PersistImportedDeploymentRequestPreparedStackProfileAwResource, ): string { return JSON.stringify( - PersistImportedDeploymentRequestProfileAwResource$outboundSchema.parse( - persistImportedDeploymentRequestProfileAwResource, - ), + PersistImportedDeploymentRequestPreparedStackProfileAwResource$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackProfileAwResource), ); } /** @internal */ -export type PersistImportedDeploymentRequestProfileAwStack$Outbound = { - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - resources: Array; -}; +export type PersistImportedDeploymentRequestPreparedStackProfileAwStack$Outbound = + { + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + resources: Array; + }; /** @internal */ -export const PersistImportedDeploymentRequestProfileAwStack$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackProfileAwStack$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestProfileAwStack$Outbound, - PersistImportedDeploymentRequestProfileAwStack + PersistImportedDeploymentRequestPreparedStackProfileAwStack$Outbound, + PersistImportedDeploymentRequestPreparedStackProfileAwStack > = z.object({ condition: z.nullable( z.record(z.string(), z.record(z.string(), z.string())), @@ -7967,70 +13180,71 @@ export const PersistImportedDeploymentRequestProfileAwStack$outboundSchema: resources: z.array(z.string()), }); -export function persistImportedDeploymentRequestProfileAwStackToJSON( - persistImportedDeploymentRequestProfileAwStack: - PersistImportedDeploymentRequestProfileAwStack, +export function persistImportedDeploymentRequestPreparedStackProfileAwStackToJSON( + persistImportedDeploymentRequestPreparedStackProfileAwStack: + PersistImportedDeploymentRequestPreparedStackProfileAwStack, ): string { return JSON.stringify( - PersistImportedDeploymentRequestProfileAwStack$outboundSchema.parse( - persistImportedDeploymentRequestProfileAwStack, - ), + PersistImportedDeploymentRequestPreparedStackProfileAwStack$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackProfileAwStack), ); } /** @internal */ -export type PersistImportedDeploymentRequestProfileAwBinding$Outbound = { - resource?: - | PersistImportedDeploymentRequestProfileAwResource$Outbound - | undefined; - stack?: PersistImportedDeploymentRequestProfileAwStack$Outbound | undefined; -}; +export type PersistImportedDeploymentRequestPreparedStackProfileAwBinding$Outbound = + { + resource?: + | PersistImportedDeploymentRequestPreparedStackProfileAwResource$Outbound + | undefined; + stack?: + | PersistImportedDeploymentRequestPreparedStackProfileAwStack$Outbound + | undefined; + }; /** @internal */ -export const PersistImportedDeploymentRequestProfileAwBinding$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackProfileAwBinding$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestProfileAwBinding$Outbound, - PersistImportedDeploymentRequestProfileAwBinding + PersistImportedDeploymentRequestPreparedStackProfileAwBinding$Outbound, + PersistImportedDeploymentRequestPreparedStackProfileAwBinding > = z.object({ resource: z.lazy(() => - PersistImportedDeploymentRequestProfileAwResource$outboundSchema + PersistImportedDeploymentRequestPreparedStackProfileAwResource$outboundSchema ).optional(), stack: z.lazy(() => - PersistImportedDeploymentRequestProfileAwStack$outboundSchema + PersistImportedDeploymentRequestPreparedStackProfileAwStack$outboundSchema ).optional(), }); -export function persistImportedDeploymentRequestProfileAwBindingToJSON( - persistImportedDeploymentRequestProfileAwBinding: - PersistImportedDeploymentRequestProfileAwBinding, +export function persistImportedDeploymentRequestPreparedStackProfileAwBindingToJSON( + persistImportedDeploymentRequestPreparedStackProfileAwBinding: + PersistImportedDeploymentRequestPreparedStackProfileAwBinding, ): string { return JSON.stringify( - PersistImportedDeploymentRequestProfileAwBinding$outboundSchema.parse( - persistImportedDeploymentRequestProfileAwBinding, - ), + PersistImportedDeploymentRequestPreparedStackProfileAwBinding$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackProfileAwBinding), ); } /** @internal */ -export const PersistImportedDeploymentRequestProfileEffect$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestProfileEffect, - ); +export const PersistImportedDeploymentRequestPreparedStackProfileEffect$outboundSchema: + z.ZodEnum = + z.enum(PersistImportedDeploymentRequestPreparedStackProfileEffect); /** @internal */ -export type PersistImportedDeploymentRequestProfileAwGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; -}; +export type PersistImportedDeploymentRequestPreparedStackProfileAwGrant$Outbound = + { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; + }; /** @internal */ -export const PersistImportedDeploymentRequestProfileAwGrant$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackProfileAwGrant$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestProfileAwGrant$Outbound, - PersistImportedDeploymentRequestProfileAwGrant + PersistImportedDeploymentRequestPreparedStackProfileAwGrant$Outbound, + PersistImportedDeploymentRequestPreparedStackProfileAwGrant > = z.object({ actions: z.nullable(z.array(z.string())).optional(), dataActions: z.nullable(z.array(z.string())).optional(), @@ -8039,154 +13253,156 @@ export const PersistImportedDeploymentRequestProfileAwGrant$outboundSchema: residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function persistImportedDeploymentRequestProfileAwGrantToJSON( - persistImportedDeploymentRequestProfileAwGrant: - PersistImportedDeploymentRequestProfileAwGrant, +export function persistImportedDeploymentRequestPreparedStackProfileAwGrantToJSON( + persistImportedDeploymentRequestPreparedStackProfileAwGrant: + PersistImportedDeploymentRequestPreparedStackProfileAwGrant, ): string { return JSON.stringify( - PersistImportedDeploymentRequestProfileAwGrant$outboundSchema.parse( - persistImportedDeploymentRequestProfileAwGrant, - ), + PersistImportedDeploymentRequestPreparedStackProfileAwGrant$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackProfileAwGrant), ); } /** @internal */ -export type PersistImportedDeploymentRequestProfileAw$Outbound = { - binding: PersistImportedDeploymentRequestProfileAwBinding$Outbound; +export type PersistImportedDeploymentRequestPreparedStackProfileAw$Outbound = { + binding: + PersistImportedDeploymentRequestPreparedStackProfileAwBinding$Outbound; description?: string | null | undefined; effect?: string | undefined; - grant: PersistImportedDeploymentRequestProfileAwGrant$Outbound; + grant: PersistImportedDeploymentRequestPreparedStackProfileAwGrant$Outbound; label?: string | null | undefined; }; /** @internal */ -export const PersistImportedDeploymentRequestProfileAw$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackProfileAw$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestProfileAw$Outbound, - PersistImportedDeploymentRequestProfileAw + PersistImportedDeploymentRequestPreparedStackProfileAw$Outbound, + PersistImportedDeploymentRequestPreparedStackProfileAw > = z.object({ binding: z.lazy(() => - PersistImportedDeploymentRequestProfileAwBinding$outboundSchema + PersistImportedDeploymentRequestPreparedStackProfileAwBinding$outboundSchema ), description: z.nullable(z.string()).optional(), - effect: PersistImportedDeploymentRequestProfileEffect$outboundSchema - .optional(), + effect: + PersistImportedDeploymentRequestPreparedStackProfileEffect$outboundSchema + .optional(), grant: z.lazy(() => - PersistImportedDeploymentRequestProfileAwGrant$outboundSchema + PersistImportedDeploymentRequestPreparedStackProfileAwGrant$outboundSchema ), label: z.nullable(z.string()).optional(), }); -export function persistImportedDeploymentRequestProfileAwToJSON( - persistImportedDeploymentRequestProfileAw: - PersistImportedDeploymentRequestProfileAw, +export function persistImportedDeploymentRequestPreparedStackProfileAwToJSON( + persistImportedDeploymentRequestPreparedStackProfileAw: + PersistImportedDeploymentRequestPreparedStackProfileAw, ): string { return JSON.stringify( - PersistImportedDeploymentRequestProfileAw$outboundSchema.parse( - persistImportedDeploymentRequestProfileAw, + PersistImportedDeploymentRequestPreparedStackProfileAw$outboundSchema.parse( + persistImportedDeploymentRequestPreparedStackProfileAw, ), ); } /** @internal */ -export type PersistImportedDeploymentRequestProfileAzureResource$Outbound = { - scope: string; -}; +export type PersistImportedDeploymentRequestPreparedStackProfileAzureResource$Outbound = + { + scope: string; + }; /** @internal */ -export const PersistImportedDeploymentRequestProfileAzureResource$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackProfileAzureResource$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestProfileAzureResource$Outbound, - PersistImportedDeploymentRequestProfileAzureResource + PersistImportedDeploymentRequestPreparedStackProfileAzureResource$Outbound, + PersistImportedDeploymentRequestPreparedStackProfileAzureResource > = z.object({ scope: z.string(), }); -export function persistImportedDeploymentRequestProfileAzureResourceToJSON( - persistImportedDeploymentRequestProfileAzureResource: - PersistImportedDeploymentRequestProfileAzureResource, +export function persistImportedDeploymentRequestPreparedStackProfileAzureResourceToJSON( + persistImportedDeploymentRequestPreparedStackProfileAzureResource: + PersistImportedDeploymentRequestPreparedStackProfileAzureResource, ): string { return JSON.stringify( - PersistImportedDeploymentRequestProfileAzureResource$outboundSchema.parse( - persistImportedDeploymentRequestProfileAzureResource, - ), + PersistImportedDeploymentRequestPreparedStackProfileAzureResource$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackProfileAzureResource), ); } /** @internal */ -export type PersistImportedDeploymentRequestProfileAzureStack$Outbound = { - scope: string; -}; +export type PersistImportedDeploymentRequestPreparedStackProfileAzureStack$Outbound = + { + scope: string; + }; /** @internal */ -export const PersistImportedDeploymentRequestProfileAzureStack$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackProfileAzureStack$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestProfileAzureStack$Outbound, - PersistImportedDeploymentRequestProfileAzureStack + PersistImportedDeploymentRequestPreparedStackProfileAzureStack$Outbound, + PersistImportedDeploymentRequestPreparedStackProfileAzureStack > = z.object({ scope: z.string(), }); -export function persistImportedDeploymentRequestProfileAzureStackToJSON( - persistImportedDeploymentRequestProfileAzureStack: - PersistImportedDeploymentRequestProfileAzureStack, +export function persistImportedDeploymentRequestPreparedStackProfileAzureStackToJSON( + persistImportedDeploymentRequestPreparedStackProfileAzureStack: + PersistImportedDeploymentRequestPreparedStackProfileAzureStack, ): string { return JSON.stringify( - PersistImportedDeploymentRequestProfileAzureStack$outboundSchema.parse( - persistImportedDeploymentRequestProfileAzureStack, - ), + PersistImportedDeploymentRequestPreparedStackProfileAzureStack$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackProfileAzureStack), ); } /** @internal */ -export type PersistImportedDeploymentRequestProfileAzureBinding$Outbound = { - resource?: - | PersistImportedDeploymentRequestProfileAzureResource$Outbound - | undefined; - stack?: - | PersistImportedDeploymentRequestProfileAzureStack$Outbound - | undefined; -}; +export type PersistImportedDeploymentRequestPreparedStackProfileAzureBinding$Outbound = + { + resource?: + | PersistImportedDeploymentRequestPreparedStackProfileAzureResource$Outbound + | undefined; + stack?: + | PersistImportedDeploymentRequestPreparedStackProfileAzureStack$Outbound + | undefined; + }; /** @internal */ -export const PersistImportedDeploymentRequestProfileAzureBinding$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackProfileAzureBinding$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestProfileAzureBinding$Outbound, - PersistImportedDeploymentRequestProfileAzureBinding + PersistImportedDeploymentRequestPreparedStackProfileAzureBinding$Outbound, + PersistImportedDeploymentRequestPreparedStackProfileAzureBinding > = z.object({ resource: z.lazy(() => - PersistImportedDeploymentRequestProfileAzureResource$outboundSchema + PersistImportedDeploymentRequestPreparedStackProfileAzureResource$outboundSchema ).optional(), stack: z.lazy(() => - PersistImportedDeploymentRequestProfileAzureStack$outboundSchema + PersistImportedDeploymentRequestPreparedStackProfileAzureStack$outboundSchema ).optional(), }); -export function persistImportedDeploymentRequestProfileAzureBindingToJSON( - persistImportedDeploymentRequestProfileAzureBinding: - PersistImportedDeploymentRequestProfileAzureBinding, +export function persistImportedDeploymentRequestPreparedStackProfileAzureBindingToJSON( + persistImportedDeploymentRequestPreparedStackProfileAzureBinding: + PersistImportedDeploymentRequestPreparedStackProfileAzureBinding, ): string { return JSON.stringify( - PersistImportedDeploymentRequestProfileAzureBinding$outboundSchema.parse( - persistImportedDeploymentRequestProfileAzureBinding, - ), + PersistImportedDeploymentRequestPreparedStackProfileAzureBinding$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackProfileAzureBinding), ); } /** @internal */ -export type PersistImportedDeploymentRequestProfileAzureGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; -}; +export type PersistImportedDeploymentRequestPreparedStackProfileAzureGrant$Outbound = + { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; + }; /** @internal */ -export const PersistImportedDeploymentRequestProfileAzureGrant$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackProfileAzureGrant$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestProfileAzureGrant$Outbound, - PersistImportedDeploymentRequestProfileAzureGrant + PersistImportedDeploymentRequestPreparedStackProfileAzureGrant$Outbound, + PersistImportedDeploymentRequestPreparedStackProfileAzureGrant > = z.object({ actions: z.nullable(z.array(z.string())).optional(), dataActions: z.nullable(z.array(z.string())).optional(), @@ -8195,126 +13411,132 @@ export const PersistImportedDeploymentRequestProfileAzureGrant$outboundSchema: residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function persistImportedDeploymentRequestProfileAzureGrantToJSON( - persistImportedDeploymentRequestProfileAzureGrant: - PersistImportedDeploymentRequestProfileAzureGrant, +export function persistImportedDeploymentRequestPreparedStackProfileAzureGrantToJSON( + persistImportedDeploymentRequestPreparedStackProfileAzureGrant: + PersistImportedDeploymentRequestPreparedStackProfileAzureGrant, ): string { return JSON.stringify( - PersistImportedDeploymentRequestProfileAzureGrant$outboundSchema.parse( - persistImportedDeploymentRequestProfileAzureGrant, - ), + PersistImportedDeploymentRequestPreparedStackProfileAzureGrant$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackProfileAzureGrant), ); } /** @internal */ -export type PersistImportedDeploymentRequestProfileAzure$Outbound = { - binding: PersistImportedDeploymentRequestProfileAzureBinding$Outbound; - description?: string | null | undefined; - grant: PersistImportedDeploymentRequestProfileAzureGrant$Outbound; - label?: string | null | undefined; -}; +export type PersistImportedDeploymentRequestPreparedStackProfileAzure$Outbound = + { + binding: + PersistImportedDeploymentRequestPreparedStackProfileAzureBinding$Outbound; + description?: string | null | undefined; + grant: + PersistImportedDeploymentRequestPreparedStackProfileAzureGrant$Outbound; + label?: string | null | undefined; + }; /** @internal */ -export const PersistImportedDeploymentRequestProfileAzure$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackProfileAzure$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestProfileAzure$Outbound, - PersistImportedDeploymentRequestProfileAzure + PersistImportedDeploymentRequestPreparedStackProfileAzure$Outbound, + PersistImportedDeploymentRequestPreparedStackProfileAzure > = z.object({ binding: z.lazy(() => - PersistImportedDeploymentRequestProfileAzureBinding$outboundSchema + PersistImportedDeploymentRequestPreparedStackProfileAzureBinding$outboundSchema ), description: z.nullable(z.string()).optional(), grant: z.lazy(() => - PersistImportedDeploymentRequestProfileAzureGrant$outboundSchema + PersistImportedDeploymentRequestPreparedStackProfileAzureGrant$outboundSchema ), label: z.nullable(z.string()).optional(), }); -export function persistImportedDeploymentRequestProfileAzureToJSON( - persistImportedDeploymentRequestProfileAzure: - PersistImportedDeploymentRequestProfileAzure, +export function persistImportedDeploymentRequestPreparedStackProfileAzureToJSON( + persistImportedDeploymentRequestPreparedStackProfileAzure: + PersistImportedDeploymentRequestPreparedStackProfileAzure, ): string { return JSON.stringify( - PersistImportedDeploymentRequestProfileAzure$outboundSchema.parse( - persistImportedDeploymentRequestProfileAzure, - ), + PersistImportedDeploymentRequestPreparedStackProfileAzure$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackProfileAzure), ); } /** @internal */ -export type PersistImportedDeploymentRequestProfileConditionResource$Outbound = +export type PersistImportedDeploymentRequestPreparedStackProfileConditionResource$Outbound = { expression: string; title: string; }; /** @internal */ -export const PersistImportedDeploymentRequestProfileConditionResource$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackProfileConditionResource$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestProfileConditionResource$Outbound, - PersistImportedDeploymentRequestProfileConditionResource + PersistImportedDeploymentRequestPreparedStackProfileConditionResource$Outbound, + PersistImportedDeploymentRequestPreparedStackProfileConditionResource > = z.object({ expression: z.string(), title: z.string(), }); -export function persistImportedDeploymentRequestProfileConditionResourceToJSON( - persistImportedDeploymentRequestProfileConditionResource: - PersistImportedDeploymentRequestProfileConditionResource, +export function persistImportedDeploymentRequestPreparedStackProfileConditionResourceToJSON( + persistImportedDeploymentRequestPreparedStackProfileConditionResource: + PersistImportedDeploymentRequestPreparedStackProfileConditionResource, ): string { return JSON.stringify( - PersistImportedDeploymentRequestProfileConditionResource$outboundSchema - .parse(persistImportedDeploymentRequestProfileConditionResource), + PersistImportedDeploymentRequestPreparedStackProfileConditionResource$outboundSchema + .parse( + persistImportedDeploymentRequestPreparedStackProfileConditionResource, + ), ); } /** @internal */ -export type PersistImportedDeploymentRequestProfileResourceConditionUnion$Outbound = - | PersistImportedDeploymentRequestProfileConditionResource$Outbound +export type PersistImportedDeploymentRequestPreparedStackProfileResourceConditionUnion$Outbound = + | PersistImportedDeploymentRequestPreparedStackProfileConditionResource$Outbound | any; /** @internal */ -export const PersistImportedDeploymentRequestProfileResourceConditionUnion$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackProfileResourceConditionUnion$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestProfileResourceConditionUnion$Outbound, - PersistImportedDeploymentRequestProfileResourceConditionUnion + PersistImportedDeploymentRequestPreparedStackProfileResourceConditionUnion$Outbound, + PersistImportedDeploymentRequestPreparedStackProfileResourceConditionUnion > = z.union([ z.lazy(() => - PersistImportedDeploymentRequestProfileConditionResource$outboundSchema + PersistImportedDeploymentRequestPreparedStackProfileConditionResource$outboundSchema ), z.any(), ]); -export function persistImportedDeploymentRequestProfileResourceConditionUnionToJSON( - persistImportedDeploymentRequestProfileResourceConditionUnion: - PersistImportedDeploymentRequestProfileResourceConditionUnion, +export function persistImportedDeploymentRequestPreparedStackProfileResourceConditionUnionToJSON( + persistImportedDeploymentRequestPreparedStackProfileResourceConditionUnion: + PersistImportedDeploymentRequestPreparedStackProfileResourceConditionUnion, ): string { return JSON.stringify( - PersistImportedDeploymentRequestProfileResourceConditionUnion$outboundSchema - .parse(persistImportedDeploymentRequestProfileResourceConditionUnion), + PersistImportedDeploymentRequestPreparedStackProfileResourceConditionUnion$outboundSchema + .parse( + persistImportedDeploymentRequestPreparedStackProfileResourceConditionUnion, + ), ); } /** @internal */ -export type PersistImportedDeploymentRequestProfileGcpResource$Outbound = { - condition?: - | PersistImportedDeploymentRequestProfileConditionResource$Outbound - | any - | null - | undefined; - scope: string; -}; +export type PersistImportedDeploymentRequestPreparedStackProfileGcpResource$Outbound = + { + condition?: + | PersistImportedDeploymentRequestPreparedStackProfileConditionResource$Outbound + | any + | null + | undefined; + scope: string; + }; /** @internal */ -export const PersistImportedDeploymentRequestProfileGcpResource$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackProfileGcpResource$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestProfileGcpResource$Outbound, - PersistImportedDeploymentRequestProfileGcpResource + PersistImportedDeploymentRequestPreparedStackProfileGcpResource$Outbound, + PersistImportedDeploymentRequestPreparedStackProfileGcpResource > = z.object({ condition: z.nullable( z.union([ z.lazy(() => - PersistImportedDeploymentRequestProfileConditionResource$outboundSchema + PersistImportedDeploymentRequestPreparedStackProfileConditionResource$outboundSchema ), z.any(), ]), @@ -8322,91 +13544,95 @@ export const PersistImportedDeploymentRequestProfileGcpResource$outboundSchema: scope: z.string(), }); -export function persistImportedDeploymentRequestProfileGcpResourceToJSON( - persistImportedDeploymentRequestProfileGcpResource: - PersistImportedDeploymentRequestProfileGcpResource, +export function persistImportedDeploymentRequestPreparedStackProfileGcpResourceToJSON( + persistImportedDeploymentRequestPreparedStackProfileGcpResource: + PersistImportedDeploymentRequestPreparedStackProfileGcpResource, ): string { return JSON.stringify( - PersistImportedDeploymentRequestProfileGcpResource$outboundSchema.parse( - persistImportedDeploymentRequestProfileGcpResource, - ), + PersistImportedDeploymentRequestPreparedStackProfileGcpResource$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackProfileGcpResource), ); } /** @internal */ -export type PersistImportedDeploymentRequestProfileConditionStack$Outbound = { - expression: string; - title: string; -}; +export type PersistImportedDeploymentRequestPreparedStackProfileConditionStack$Outbound = + { + expression: string; + title: string; + }; /** @internal */ -export const PersistImportedDeploymentRequestProfileConditionStack$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackProfileConditionStack$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestProfileConditionStack$Outbound, - PersistImportedDeploymentRequestProfileConditionStack + PersistImportedDeploymentRequestPreparedStackProfileConditionStack$Outbound, + PersistImportedDeploymentRequestPreparedStackProfileConditionStack > = z.object({ expression: z.string(), title: z.string(), }); -export function persistImportedDeploymentRequestProfileConditionStackToJSON( - persistImportedDeploymentRequestProfileConditionStack: - PersistImportedDeploymentRequestProfileConditionStack, +export function persistImportedDeploymentRequestPreparedStackProfileConditionStackToJSON( + persistImportedDeploymentRequestPreparedStackProfileConditionStack: + PersistImportedDeploymentRequestPreparedStackProfileConditionStack, ): string { return JSON.stringify( - PersistImportedDeploymentRequestProfileConditionStack$outboundSchema.parse( - persistImportedDeploymentRequestProfileConditionStack, - ), + PersistImportedDeploymentRequestPreparedStackProfileConditionStack$outboundSchema + .parse( + persistImportedDeploymentRequestPreparedStackProfileConditionStack, + ), ); } /** @internal */ -export type PersistImportedDeploymentRequestProfileStackConditionUnion$Outbound = - | PersistImportedDeploymentRequestProfileConditionStack$Outbound +export type PersistImportedDeploymentRequestPreparedStackProfileStackConditionUnion$Outbound = + | PersistImportedDeploymentRequestPreparedStackProfileConditionStack$Outbound | any; /** @internal */ -export const PersistImportedDeploymentRequestProfileStackConditionUnion$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackProfileStackConditionUnion$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestProfileStackConditionUnion$Outbound, - PersistImportedDeploymentRequestProfileStackConditionUnion + PersistImportedDeploymentRequestPreparedStackProfileStackConditionUnion$Outbound, + PersistImportedDeploymentRequestPreparedStackProfileStackConditionUnion > = z.union([ z.lazy(() => - PersistImportedDeploymentRequestProfileConditionStack$outboundSchema + PersistImportedDeploymentRequestPreparedStackProfileConditionStack$outboundSchema ), z.any(), ]); -export function persistImportedDeploymentRequestProfileStackConditionUnionToJSON( - persistImportedDeploymentRequestProfileStackConditionUnion: - PersistImportedDeploymentRequestProfileStackConditionUnion, +export function persistImportedDeploymentRequestPreparedStackProfileStackConditionUnionToJSON( + persistImportedDeploymentRequestPreparedStackProfileStackConditionUnion: + PersistImportedDeploymentRequestPreparedStackProfileStackConditionUnion, ): string { return JSON.stringify( - PersistImportedDeploymentRequestProfileStackConditionUnion$outboundSchema - .parse(persistImportedDeploymentRequestProfileStackConditionUnion), + PersistImportedDeploymentRequestPreparedStackProfileStackConditionUnion$outboundSchema + .parse( + persistImportedDeploymentRequestPreparedStackProfileStackConditionUnion, + ), ); } /** @internal */ -export type PersistImportedDeploymentRequestProfileGcpStack$Outbound = { - condition?: - | PersistImportedDeploymentRequestProfileConditionStack$Outbound - | any - | null - | undefined; - scope: string; -}; +export type PersistImportedDeploymentRequestPreparedStackProfileGcpStack$Outbound = + { + condition?: + | PersistImportedDeploymentRequestPreparedStackProfileConditionStack$Outbound + | any + | null + | undefined; + scope: string; + }; /** @internal */ -export const PersistImportedDeploymentRequestProfileGcpStack$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackProfileGcpStack$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestProfileGcpStack$Outbound, - PersistImportedDeploymentRequestProfileGcpStack + PersistImportedDeploymentRequestPreparedStackProfileGcpStack$Outbound, + PersistImportedDeploymentRequestPreparedStackProfileGcpStack > = z.object({ condition: z.nullable( z.union([ z.lazy(() => - PersistImportedDeploymentRequestProfileConditionStack$outboundSchema + PersistImportedDeploymentRequestPreparedStackProfileConditionStack$outboundSchema ), z.any(), ]), @@ -8414,64 +13640,66 @@ export const PersistImportedDeploymentRequestProfileGcpStack$outboundSchema: scope: z.string(), }); -export function persistImportedDeploymentRequestProfileGcpStackToJSON( - persistImportedDeploymentRequestProfileGcpStack: - PersistImportedDeploymentRequestProfileGcpStack, +export function persistImportedDeploymentRequestPreparedStackProfileGcpStackToJSON( + persistImportedDeploymentRequestPreparedStackProfileGcpStack: + PersistImportedDeploymentRequestPreparedStackProfileGcpStack, ): string { return JSON.stringify( - PersistImportedDeploymentRequestProfileGcpStack$outboundSchema.parse( - persistImportedDeploymentRequestProfileGcpStack, - ), + PersistImportedDeploymentRequestPreparedStackProfileGcpStack$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackProfileGcpStack), ); } /** @internal */ -export type PersistImportedDeploymentRequestProfileGcpBinding$Outbound = { - resource?: - | PersistImportedDeploymentRequestProfileGcpResource$Outbound - | undefined; - stack?: PersistImportedDeploymentRequestProfileGcpStack$Outbound | undefined; -}; +export type PersistImportedDeploymentRequestPreparedStackProfileGcpBinding$Outbound = + { + resource?: + | PersistImportedDeploymentRequestPreparedStackProfileGcpResource$Outbound + | undefined; + stack?: + | PersistImportedDeploymentRequestPreparedStackProfileGcpStack$Outbound + | undefined; + }; /** @internal */ -export const PersistImportedDeploymentRequestProfileGcpBinding$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackProfileGcpBinding$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestProfileGcpBinding$Outbound, - PersistImportedDeploymentRequestProfileGcpBinding + PersistImportedDeploymentRequestPreparedStackProfileGcpBinding$Outbound, + PersistImportedDeploymentRequestPreparedStackProfileGcpBinding > = z.object({ resource: z.lazy(() => - PersistImportedDeploymentRequestProfileGcpResource$outboundSchema + PersistImportedDeploymentRequestPreparedStackProfileGcpResource$outboundSchema ).optional(), stack: z.lazy(() => - PersistImportedDeploymentRequestProfileGcpStack$outboundSchema + PersistImportedDeploymentRequestPreparedStackProfileGcpStack$outboundSchema ).optional(), }); -export function persistImportedDeploymentRequestProfileGcpBindingToJSON( - persistImportedDeploymentRequestProfileGcpBinding: - PersistImportedDeploymentRequestProfileGcpBinding, +export function persistImportedDeploymentRequestPreparedStackProfileGcpBindingToJSON( + persistImportedDeploymentRequestPreparedStackProfileGcpBinding: + PersistImportedDeploymentRequestPreparedStackProfileGcpBinding, ): string { return JSON.stringify( - PersistImportedDeploymentRequestProfileGcpBinding$outboundSchema.parse( - persistImportedDeploymentRequestProfileGcpBinding, - ), + PersistImportedDeploymentRequestPreparedStackProfileGcpBinding$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackProfileGcpBinding), ); } /** @internal */ -export type PersistImportedDeploymentRequestProfileGcpGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; -}; +export type PersistImportedDeploymentRequestPreparedStackProfileGcpGrant$Outbound = + { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; + }; /** @internal */ -export const PersistImportedDeploymentRequestProfileGcpGrant$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackProfileGcpGrant$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestProfileGcpGrant$Outbound, - PersistImportedDeploymentRequestProfileGcpGrant + PersistImportedDeploymentRequestPreparedStackProfileGcpGrant$Outbound, + PersistImportedDeploymentRequestPreparedStackProfileGcpGrant > = z.object({ actions: z.nullable(z.array(z.string())).optional(), dataActions: z.nullable(z.array(z.string())).optional(), @@ -8480,184 +13708,193 @@ export const PersistImportedDeploymentRequestProfileGcpGrant$outboundSchema: residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function persistImportedDeploymentRequestProfileGcpGrantToJSON( - persistImportedDeploymentRequestProfileGcpGrant: - PersistImportedDeploymentRequestProfileGcpGrant, +export function persistImportedDeploymentRequestPreparedStackProfileGcpGrantToJSON( + persistImportedDeploymentRequestPreparedStackProfileGcpGrant: + PersistImportedDeploymentRequestPreparedStackProfileGcpGrant, ): string { return JSON.stringify( - PersistImportedDeploymentRequestProfileGcpGrant$outboundSchema.parse( - persistImportedDeploymentRequestProfileGcpGrant, - ), + PersistImportedDeploymentRequestPreparedStackProfileGcpGrant$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackProfileGcpGrant), ); } /** @internal */ -export type PersistImportedDeploymentRequestProfileGcp$Outbound = { - binding: PersistImportedDeploymentRequestProfileGcpBinding$Outbound; +export type PersistImportedDeploymentRequestPreparedStackProfileGcp$Outbound = { + binding: + PersistImportedDeploymentRequestPreparedStackProfileGcpBinding$Outbound; description?: string | null | undefined; - grant: PersistImportedDeploymentRequestProfileGcpGrant$Outbound; + grant: PersistImportedDeploymentRequestPreparedStackProfileGcpGrant$Outbound; label?: string | null | undefined; }; /** @internal */ -export const PersistImportedDeploymentRequestProfileGcp$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackProfileGcp$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestProfileGcp$Outbound, - PersistImportedDeploymentRequestProfileGcp + PersistImportedDeploymentRequestPreparedStackProfileGcp$Outbound, + PersistImportedDeploymentRequestPreparedStackProfileGcp > = z.object({ binding: z.lazy(() => - PersistImportedDeploymentRequestProfileGcpBinding$outboundSchema + PersistImportedDeploymentRequestPreparedStackProfileGcpBinding$outboundSchema ), description: z.nullable(z.string()).optional(), grant: z.lazy(() => - PersistImportedDeploymentRequestProfileGcpGrant$outboundSchema + PersistImportedDeploymentRequestPreparedStackProfileGcpGrant$outboundSchema ), label: z.nullable(z.string()).optional(), }); -export function persistImportedDeploymentRequestProfileGcpToJSON( - persistImportedDeploymentRequestProfileGcp: - PersistImportedDeploymentRequestProfileGcp, +export function persistImportedDeploymentRequestPreparedStackProfileGcpToJSON( + persistImportedDeploymentRequestPreparedStackProfileGcp: + PersistImportedDeploymentRequestPreparedStackProfileGcp, ): string { return JSON.stringify( - PersistImportedDeploymentRequestProfileGcp$outboundSchema.parse( - persistImportedDeploymentRequestProfileGcp, - ), + PersistImportedDeploymentRequestPreparedStackProfileGcp$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackProfileGcp), ); } /** @internal */ -export type PersistImportedDeploymentRequestProfilePlatforms$Outbound = { - aws?: - | Array - | null - | undefined; - azure?: - | Array - | null - | undefined; - gcp?: - | Array - | null - | undefined; -}; +export type PersistImportedDeploymentRequestPreparedStackProfilePlatforms$Outbound = + { + aws?: + | Array + | null + | undefined; + azure?: + | Array< + PersistImportedDeploymentRequestPreparedStackProfileAzure$Outbound + > + | null + | undefined; + gcp?: + | Array + | null + | undefined; + }; /** @internal */ -export const PersistImportedDeploymentRequestProfilePlatforms$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackProfilePlatforms$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestProfilePlatforms$Outbound, - PersistImportedDeploymentRequestProfilePlatforms + PersistImportedDeploymentRequestPreparedStackProfilePlatforms$Outbound, + PersistImportedDeploymentRequestPreparedStackProfilePlatforms > = z.object({ aws: z.nullable( z.array(z.lazy(() => - PersistImportedDeploymentRequestProfileAw$outboundSchema + PersistImportedDeploymentRequestPreparedStackProfileAw$outboundSchema )), ).optional(), azure: z.nullable( z.array(z.lazy(() => - PersistImportedDeploymentRequestProfileAzure$outboundSchema + PersistImportedDeploymentRequestPreparedStackProfileAzure$outboundSchema )), ).optional(), gcp: z.nullable( z.array(z.lazy(() => - PersistImportedDeploymentRequestProfileGcp$outboundSchema + PersistImportedDeploymentRequestPreparedStackProfileGcp$outboundSchema )), ).optional(), }); -export function persistImportedDeploymentRequestProfilePlatformsToJSON( - persistImportedDeploymentRequestProfilePlatforms: - PersistImportedDeploymentRequestProfilePlatforms, +export function persistImportedDeploymentRequestPreparedStackProfilePlatformsToJSON( + persistImportedDeploymentRequestPreparedStackProfilePlatforms: + PersistImportedDeploymentRequestPreparedStackProfilePlatforms, ): string { return JSON.stringify( - PersistImportedDeploymentRequestProfilePlatforms$outboundSchema.parse( - persistImportedDeploymentRequestProfilePlatforms, - ), + PersistImportedDeploymentRequestPreparedStackProfilePlatforms$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackProfilePlatforms), ); } /** @internal */ -export type PersistImportedDeploymentRequestProfile$Outbound = { +export type PersistImportedDeploymentRequestPreparedStackProfile$Outbound = { description: string; id: string; - platforms: PersistImportedDeploymentRequestProfilePlatforms$Outbound; + platforms: + PersistImportedDeploymentRequestPreparedStackProfilePlatforms$Outbound; }; /** @internal */ -export const PersistImportedDeploymentRequestProfile$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestProfile$Outbound, - PersistImportedDeploymentRequestProfile -> = z.object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => - PersistImportedDeploymentRequestProfilePlatforms$outboundSchema - ), -}); +export const PersistImportedDeploymentRequestPreparedStackProfile$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestPreparedStackProfile$Outbound, + PersistImportedDeploymentRequestPreparedStackProfile + > = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + PersistImportedDeploymentRequestPreparedStackProfilePlatforms$outboundSchema + ), + }); -export function persistImportedDeploymentRequestProfileToJSON( - persistImportedDeploymentRequestProfile: - PersistImportedDeploymentRequestProfile, +export function persistImportedDeploymentRequestPreparedStackProfileToJSON( + persistImportedDeploymentRequestPreparedStackProfile: + PersistImportedDeploymentRequestPreparedStackProfile, ): string { return JSON.stringify( - PersistImportedDeploymentRequestProfile$outboundSchema.parse( - persistImportedDeploymentRequestProfile, + PersistImportedDeploymentRequestPreparedStackProfile$outboundSchema.parse( + persistImportedDeploymentRequestPreparedStackProfile, ), ); } /** @internal */ -export type PersistImportedDeploymentRequestProfileUnion$Outbound = - | PersistImportedDeploymentRequestProfile$Outbound +export type PersistImportedDeploymentRequestPreparedStackProfileUnion$Outbound = + | PersistImportedDeploymentRequestPreparedStackProfile$Outbound | string; /** @internal */ -export const PersistImportedDeploymentRequestProfileUnion$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackProfileUnion$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestProfileUnion$Outbound, - PersistImportedDeploymentRequestProfileUnion + PersistImportedDeploymentRequestPreparedStackProfileUnion$Outbound, + PersistImportedDeploymentRequestPreparedStackProfileUnion > = z.union([ - z.lazy(() => PersistImportedDeploymentRequestProfile$outboundSchema), + z.lazy(() => + PersistImportedDeploymentRequestPreparedStackProfile$outboundSchema + ), z.string(), ]); -export function persistImportedDeploymentRequestProfileUnionToJSON( - persistImportedDeploymentRequestProfileUnion: - PersistImportedDeploymentRequestProfileUnion, +export function persistImportedDeploymentRequestPreparedStackProfileUnionToJSON( + persistImportedDeploymentRequestPreparedStackProfileUnion: + PersistImportedDeploymentRequestPreparedStackProfileUnion, ): string { return JSON.stringify( - PersistImportedDeploymentRequestProfileUnion$outboundSchema.parse( - persistImportedDeploymentRequestProfileUnion, - ), + PersistImportedDeploymentRequestPreparedStackProfileUnion$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackProfileUnion), ); } /** @internal */ -export type PersistImportedDeploymentRequestPermissions$Outbound = { - management?: - | PersistImportedDeploymentRequestManagement1$Outbound - | PersistImportedDeploymentRequestManagement2$Outbound - | string - | undefined; - profiles: { - [k: string]: { - [k: string]: Array< - PersistImportedDeploymentRequestProfile$Outbound | string - >; +export type PersistImportedDeploymentRequestPreparedStackPermissions$Outbound = + { + management?: + | PersistImportedDeploymentRequestPreparedStackManagement1$Outbound + | PersistImportedDeploymentRequestPreparedStackManagement2$Outbound + | string + | undefined; + profiles: { + [k: string]: { + [k: string]: Array< + PersistImportedDeploymentRequestPreparedStackProfile$Outbound | string + >; + }; }; }; -}; /** @internal */ -export const PersistImportedDeploymentRequestPermissions$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackPermissions$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestPermissions$Outbound, - PersistImportedDeploymentRequestPermissions + PersistImportedDeploymentRequestPreparedStackPermissions$Outbound, + PersistImportedDeploymentRequestPreparedStackPermissions > = z.object({ management: z.union([ - z.lazy(() => PersistImportedDeploymentRequestManagement1$outboundSchema), - z.lazy(() => PersistImportedDeploymentRequestManagement2$outboundSchema), - PersistImportedDeploymentRequestManagementEnum$outboundSchema, + z.lazy(() => + PersistImportedDeploymentRequestPreparedStackManagement1$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestPreparedStackManagement2$outboundSchema + ), + PersistImportedDeploymentRequestPreparedStackManagementEnum$outboundSchema, ]).optional(), profiles: z.record( z.string(), @@ -8666,7 +13903,7 @@ export const PersistImportedDeploymentRequestPermissions$outboundSchema: z.array( z.union([ z.lazy(() => - PersistImportedDeploymentRequestProfile$outboundSchema + PersistImportedDeploymentRequestPreparedStackProfile$outboundSchema ), z.string(), ]), @@ -8675,133 +13912,143 @@ export const PersistImportedDeploymentRequestPermissions$outboundSchema: ), }); -export function persistImportedDeploymentRequestPermissionsToJSON( - persistImportedDeploymentRequestPermissions: - PersistImportedDeploymentRequestPermissions, +export function persistImportedDeploymentRequestPreparedStackPermissionsToJSON( + persistImportedDeploymentRequestPreparedStackPermissions: + PersistImportedDeploymentRequestPreparedStackPermissions, ): string { return JSON.stringify( - PersistImportedDeploymentRequestPermissions$outboundSchema.parse( - persistImportedDeploymentRequestPermissions, - ), + PersistImportedDeploymentRequestPreparedStackPermissions$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackPermissions), ); } /** @internal */ -export type PersistImportedDeploymentRequestConfig$Outbound = { +export type PersistImportedDeploymentRequestPreparedStackConfig$Outbound = { id: string; type: string; [additionalProperties: string]: unknown; }; /** @internal */ -export const PersistImportedDeploymentRequestConfig$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestConfig$Outbound, - PersistImportedDeploymentRequestConfig -> = z.object({ - id: z.string(), - type: z.string(), - additionalProperties: z.record(z.string(), z.nullable(z.any())).optional(), -}).transform((v) => { - return { - ...v.additionalProperties, - ...remap$(v, { - additionalProperties: null, - }), - }; -}); +export const PersistImportedDeploymentRequestPreparedStackConfig$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestPreparedStackConfig$Outbound, + PersistImportedDeploymentRequestPreparedStackConfig + > = z.object({ + id: z.string(), + type: z.string(), + additionalProperties: z.record(z.string(), z.nullable(z.any())).optional(), + }).transform((v) => { + return { + ...v.additionalProperties, + ...remap$(v, { + additionalProperties: null, + }), + }; + }); -export function persistImportedDeploymentRequestConfigToJSON( - persistImportedDeploymentRequestConfig: - PersistImportedDeploymentRequestConfig, +export function persistImportedDeploymentRequestPreparedStackConfigToJSON( + persistImportedDeploymentRequestPreparedStackConfig: + PersistImportedDeploymentRequestPreparedStackConfig, ): string { return JSON.stringify( - PersistImportedDeploymentRequestConfig$outboundSchema.parse( - persistImportedDeploymentRequestConfig, + PersistImportedDeploymentRequestPreparedStackConfig$outboundSchema.parse( + persistImportedDeploymentRequestPreparedStackConfig, ), ); } /** @internal */ -export type PersistImportedDeploymentRequestDependency$Outbound = { +export type PersistImportedDeploymentRequestPreparedStackDependency$Outbound = { id: string; type: string; }; /** @internal */ -export const PersistImportedDeploymentRequestDependency$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackDependency$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestDependency$Outbound, - PersistImportedDeploymentRequestDependency + PersistImportedDeploymentRequestPreparedStackDependency$Outbound, + PersistImportedDeploymentRequestPreparedStackDependency > = z.object({ id: z.string(), type: z.string(), }); -export function persistImportedDeploymentRequestDependencyToJSON( - persistImportedDeploymentRequestDependency: - PersistImportedDeploymentRequestDependency, +export function persistImportedDeploymentRequestPreparedStackDependencyToJSON( + persistImportedDeploymentRequestPreparedStackDependency: + PersistImportedDeploymentRequestPreparedStackDependency, ): string { return JSON.stringify( - PersistImportedDeploymentRequestDependency$outboundSchema.parse( - persistImportedDeploymentRequestDependency, - ), + PersistImportedDeploymentRequestPreparedStackDependency$outboundSchema + .parse(persistImportedDeploymentRequestPreparedStackDependency), ); } /** @internal */ -export const PersistImportedDeploymentRequestLifecycle$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestLifecycle, - ); +export const PersistImportedDeploymentRequestPreparedStackLifecycle$outboundSchema: + z.ZodEnum = z + .enum(PersistImportedDeploymentRequestPreparedStackLifecycle); /** @internal */ -export type PersistImportedDeploymentRequestResources$Outbound = { - config: PersistImportedDeploymentRequestConfig$Outbound; - dependencies: Array; +export type PersistImportedDeploymentRequestPreparedStackResources$Outbound = { + config: PersistImportedDeploymentRequestPreparedStackConfig$Outbound; + dependencies: Array< + PersistImportedDeploymentRequestPreparedStackDependency$Outbound + >; + enabledWhen?: string | null | undefined; lifecycle: string; remoteAccess?: boolean | undefined; }; /** @internal */ -export const PersistImportedDeploymentRequestResources$outboundSchema: +export const PersistImportedDeploymentRequestPreparedStackResources$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestResources$Outbound, - PersistImportedDeploymentRequestResources + PersistImportedDeploymentRequestPreparedStackResources$Outbound, + PersistImportedDeploymentRequestPreparedStackResources > = z.object({ - config: z.lazy(() => PersistImportedDeploymentRequestConfig$outboundSchema), + config: z.lazy(() => + PersistImportedDeploymentRequestPreparedStackConfig$outboundSchema + ), dependencies: z.array( - z.lazy(() => PersistImportedDeploymentRequestDependency$outboundSchema), + z.lazy(() => + PersistImportedDeploymentRequestPreparedStackDependency$outboundSchema + ), ), - lifecycle: PersistImportedDeploymentRequestLifecycle$outboundSchema, + enabledWhen: z.nullable(z.string()).optional(), + lifecycle: + PersistImportedDeploymentRequestPreparedStackLifecycle$outboundSchema, remoteAccess: z.boolean().optional(), }); -export function persistImportedDeploymentRequestResourcesToJSON( - persistImportedDeploymentRequestResources: - PersistImportedDeploymentRequestResources, +export function persistImportedDeploymentRequestPreparedStackResourcesToJSON( + persistImportedDeploymentRequestPreparedStackResources: + PersistImportedDeploymentRequestPreparedStackResources, ): string { return JSON.stringify( - PersistImportedDeploymentRequestResources$outboundSchema.parse( - persistImportedDeploymentRequestResources, + PersistImportedDeploymentRequestPreparedStackResources$outboundSchema.parse( + persistImportedDeploymentRequestPreparedStackResources, ), ); } /** @internal */ -export const PersistImportedDeploymentRequestSupportedPlatform$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestSupportedPlatform, - ); +export const PersistImportedDeploymentRequestPreparedStackSupportedPlatform$outboundSchema: + z.ZodEnum< + typeof PersistImportedDeploymentRequestPreparedStackSupportedPlatform + > = z.enum(PersistImportedDeploymentRequestPreparedStackSupportedPlatform); /** @internal */ export type PersistImportedDeploymentRequestPreparedStack$Outbound = { id: string; - inputs?: Array | undefined; + inputs?: + | Array + | undefined; permissions?: - | PersistImportedDeploymentRequestPermissions$Outbound + | PersistImportedDeploymentRequestPreparedStackPermissions$Outbound | undefined; resources: { - [k: string]: PersistImportedDeploymentRequestResources$Outbound; + [k: string]: + PersistImportedDeploymentRequestPreparedStackResources$Outbound; }; supportedPlatforms?: Array | null | undefined; }; @@ -8814,17 +14061,23 @@ export const PersistImportedDeploymentRequestPreparedStack$outboundSchema: > = z.object({ id: z.string(), inputs: z.array( - z.lazy(() => PersistImportedDeploymentRequestInput$outboundSchema), + z.lazy(() => + PersistImportedDeploymentRequestPreparedStackInput$outboundSchema + ), ).optional(), permissions: z.lazy(() => - PersistImportedDeploymentRequestPermissions$outboundSchema + PersistImportedDeploymentRequestPreparedStackPermissions$outboundSchema ).optional(), resources: z.record( z.string(), - z.lazy(() => PersistImportedDeploymentRequestResources$outboundSchema), + z.lazy(() => + PersistImportedDeploymentRequestPreparedStackResources$outboundSchema + ), ), supportedPlatforms: z.nullable( - z.array(PersistImportedDeploymentRequestSupportedPlatform$outboundSchema), + z.array( + PersistImportedDeploymentRequestPreparedStackSupportedPlatform$outboundSchema, + ), ).optional(), }); @@ -8865,16 +14118,92 @@ export function persistImportedDeploymentRequestPreparedStackUnionToJSON( ); } +/** @internal */ +export type PersistImportedDeploymentRequestSetupUpdateAuthorization$Outbound = + { + baselineFrozenDigest: string; + nonce: string; + releaseId: string; + setupFingerprint: string; + setupFingerprintVersion: number; + setupTarget: string; + targetFrozenDigest: string; + }; + +/** @internal */ +export const PersistImportedDeploymentRequestSetupUpdateAuthorization$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestSetupUpdateAuthorization$Outbound, + PersistImportedDeploymentRequestSetupUpdateAuthorization + > = z.object({ + baselineFrozenDigest: z.string(), + nonce: z.string(), + releaseId: z.string(), + setupFingerprint: z.string(), + setupFingerprintVersion: z.int(), + setupTarget: z.string(), + targetFrozenDigest: z.string(), + }); + +export function persistImportedDeploymentRequestSetupUpdateAuthorizationToJSON( + persistImportedDeploymentRequestSetupUpdateAuthorization: + PersistImportedDeploymentRequestSetupUpdateAuthorization, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestSetupUpdateAuthorization$outboundSchema + .parse(persistImportedDeploymentRequestSetupUpdateAuthorization), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestSetupUpdateAuthorizationUnion$Outbound = + | PersistImportedDeploymentRequestSetupUpdateAuthorization$Outbound + | any; + +/** @internal */ +export const PersistImportedDeploymentRequestSetupUpdateAuthorizationUnion$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestSetupUpdateAuthorizationUnion$Outbound, + PersistImportedDeploymentRequestSetupUpdateAuthorizationUnion + > = z.union([ + z.lazy(() => + PersistImportedDeploymentRequestSetupUpdateAuthorization$outboundSchema + ), + z.any(), + ]); + +export function persistImportedDeploymentRequestSetupUpdateAuthorizationUnionToJSON( + persistImportedDeploymentRequestSetupUpdateAuthorizationUnion: + PersistImportedDeploymentRequestSetupUpdateAuthorizationUnion, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestSetupUpdateAuthorizationUnion$outboundSchema + .parse(persistImportedDeploymentRequestSetupUpdateAuthorizationUnion), + ); +} + /** @internal */ export type PersistImportedDeploymentRequestRuntimeMetadata$Outbound = { + initialSetupAuthority?: string | undefined; lastSyncedEnvVarsHash?: string | null | undefined; lastSyncedSecretNames?: Array | undefined; + pendingPreparedStack?: + | PersistImportedDeploymentRequestPendingPreparedStack$Outbound + | any + | null + | undefined; + persistedGateAnswers?: { [k: string]: boolean } | undefined; preparedStack?: | PersistImportedDeploymentRequestPreparedStack$Outbound | any | null | undefined; registryAccessGranted?: boolean | undefined; + setupUpdateAuthorization?: + | PersistImportedDeploymentRequestSetupUpdateAuthorization$Outbound + | any + | null + | undefined; }; /** @internal */ @@ -8883,8 +14212,20 @@ export const PersistImportedDeploymentRequestRuntimeMetadata$outboundSchema: PersistImportedDeploymentRequestRuntimeMetadata$Outbound, PersistImportedDeploymentRequestRuntimeMetadata > = z.object({ + initialSetupAuthority: + PersistImportedDeploymentRequestInitialSetupAuthority$outboundSchema + .optional(), lastSyncedEnvVarsHash: z.nullable(z.string()).optional(), lastSyncedSecretNames: z.array(z.string()).optional(), + pendingPreparedStack: z.nullable( + z.union([ + z.lazy(() => + PersistImportedDeploymentRequestPendingPreparedStack$outboundSchema + ), + z.any(), + ]), + ).optional(), + persistedGateAnswers: z.record(z.string(), z.boolean()).optional(), preparedStack: z.nullable( z.union([ z.lazy(() => @@ -8894,6 +14235,14 @@ export const PersistImportedDeploymentRequestRuntimeMetadata$outboundSchema: ]), ).optional(), registryAccessGranted: z.boolean().optional(), + setupUpdateAuthorization: z.nullable( + z.union([ + z.lazy(() => + PersistImportedDeploymentRequestSetupUpdateAuthorization$outboundSchema + ), + z.any(), + ]), + ).optional(), }); export function persistImportedDeploymentRequestRuntimeMetadataToJSON( @@ -9081,6 +14430,7 @@ export type PersistImportedDeploymentRequest$Outbound = { | null | undefined; runtimeMetadata: PersistImportedDeploymentRequestRuntimeMetadata$Outbound; + scheduleReconciliation: boolean; deploymentProtocolVersion: number; status: string; currentReleaseId?: string | undefined; @@ -9139,6 +14489,7 @@ export const PersistImportedDeploymentRequest$outboundSchema: z.ZodType< runtimeMetadata: z.lazy(() => PersistImportedDeploymentRequestRuntimeMetadata$outboundSchema ), + scheduleReconciliation: z.boolean().default(false), deploymentProtocolVersion: z.int(), status: PersistImportedDeploymentRequestStatus$outboundSchema.default( "provisioning", diff --git a/client-sdks/platform/typescript/src/models/pinreleaserequest.ts b/client-sdks/platform/typescript/src/models/pinreleaserequest.ts index c73d70e7e..3364190e0 100644 --- a/client-sdks/platform/typescript/src/models/pinreleaserequest.ts +++ b/client-sdks/platform/typescript/src/models/pinreleaserequest.ts @@ -9,7 +9,7 @@ import * as z from "zod/v4"; */ export type PinReleaseRequest = { /** - * Release ID to pin the deployment to. Set to null to unpin and use active release. + * Release ID to pin the deployment to. Set to null to resume its followed channel. */ releaseId?: string | null | undefined; }; diff --git a/client-sdks/platform/typescript/src/models/prepareddeploymentstack.ts b/client-sdks/platform/typescript/src/models/prepareddeploymentstack.ts index 74d7aaf99..9c80a3895 100644 --- a/client-sdks/platform/typescript/src/models/prepareddeploymentstack.ts +++ b/client-sdks/platform/typescript/src/models/prepareddeploymentstack.ts @@ -1420,6 +1420,17 @@ export type PreparedDeploymentStackResources = { * The total dependencies are: resource.get_dependencies() + this list */ dependencies: Array; + /** + * Id of the boolean stack input that decides whether this resource is + * + * @remarks + * 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. + */ + enabledWhen?: string | null | undefined; /** * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ @@ -3583,6 +3594,7 @@ export const PreparedDeploymentStackResources$inboundSchema: z.ZodType< dependencies: z.array( z.lazy(() => PreparedDeploymentStackDependency$inboundSchema), ), + enabledWhen: z.nullable(z.string()).optional(), lifecycle: PreparedDeploymentStackLifecycle$inboundSchema, remoteAccess: z.boolean().optional(), }); diff --git a/client-sdks/platform/typescript/src/models/project.ts b/client-sdks/platform/typescript/src/models/project.ts index 284df7644..05ca515e2 100644 --- a/client-sdks/platform/typescript/src/models/project.ts +++ b/client-sdks/platform/typescript/src/models/project.ts @@ -266,6 +266,10 @@ export type ProjectDefaultManagers = { local?: string | null | undefined; }; +export type ProjectDeployments = { + enabled: boolean; +}; + export type ProjectKeys = { enabled: boolean; applicationEncryption: boolean; @@ -276,6 +280,8 @@ export const ProjectAllowedProvider = { GcpVertex: "gcp-vertex", AzureFoundry: "azure-foundry", Anthropic: "anthropic", + Databricks: "databricks", + Openai: "openai", } as const; export type ProjectAllowedProvider = ClosedEnum; @@ -298,17 +304,44 @@ export type ProjectModels = { requirements: Array; }; -export type ProjectConnections = { +export const ProjectAccess = { + ReadWrite: "read-write", +} as const; +export type ProjectAccess = ClosedEnum; + +export type ProjectBuckets = { + enabled: boolean; + access: ProjectAccess; +}; + +export const ProjectCredentialPolicy = { + PullOnly: "pull-only", + PushAndPull: "push-and-pull", +} as const; +export type ProjectCredentialPolicy = ClosedEnum< + typeof ProjectCredentialPolicy +>; + +export type ProjectRegistry = { + enabled: boolean; + repositories: Array; + credentialPolicy: ProjectCredentialPolicy; +}; + +export type ProjectProjectCapabilitiesCapabilities = { + deployments?: ProjectDeployments | undefined; keys?: ProjectKeys | undefined; models?: ProjectModels | undefined; + buckets?: ProjectBuckets | undefined; + registry?: ProjectRegistry | undefined; }; /** - * Customer infrastructure offered by this Project through exact built-in or application-authored sources. + * Capabilities this Project may offer through setup links. */ -export type ProjectCustomerConnections = { +export type ProjectProjectCapabilities = { schemaVersion: number; - connections: ProjectConnections; + capabilities: ProjectProjectCapabilitiesCapabilities; }; export type Project = { @@ -348,9 +381,9 @@ export type Project = { */ defaultManagers?: ProjectDefaultManagers | null | undefined; /** - * Customer infrastructure offered by this Project through exact built-in or application-authored sources. + * Capabilities this Project may offer through setup links. */ - customerConnections?: ProjectCustomerConnections | null | undefined; + projectCapabilities?: ProjectProjectCapabilities | null | undefined; createdAt: Date; /** * Unique identifier for the workspace. @@ -558,6 +591,24 @@ export function projectDefaultManagersFromJSON( ); } +/** @internal */ +export const ProjectDeployments$inboundSchema: z.ZodType< + ProjectDeployments, + unknown +> = z.object({ + enabled: z.boolean(), +}); + +export function projectDeploymentsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ProjectDeployments$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ProjectDeployments' from JSON`, + ); +} + /** @internal */ export const ProjectKeys$inboundSchema: z.ZodType = z .object({ @@ -624,40 +675,92 @@ export function projectModelsFromJSON( } /** @internal */ -export const ProjectConnections$inboundSchema: z.ZodType< - ProjectConnections, +export const ProjectAccess$inboundSchema: z.ZodEnum = z + .enum(ProjectAccess); + +/** @internal */ +export const ProjectBuckets$inboundSchema: z.ZodType = + z.object({ + enabled: z.boolean(), + access: ProjectAccess$inboundSchema, + }); + +export function projectBucketsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ProjectBuckets$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ProjectBuckets' from JSON`, + ); +} + +/** @internal */ +export const ProjectCredentialPolicy$inboundSchema: z.ZodEnum< + typeof ProjectCredentialPolicy +> = z.enum(ProjectCredentialPolicy); + +/** @internal */ +export const ProjectRegistry$inboundSchema: z.ZodType< + ProjectRegistry, + unknown +> = z.object({ + enabled: z.boolean(), + repositories: z.array(z.string()), + credentialPolicy: ProjectCredentialPolicy$inboundSchema, +}); + +export function projectRegistryFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ProjectRegistry$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ProjectRegistry' from JSON`, + ); +} + +/** @internal */ +export const ProjectProjectCapabilitiesCapabilities$inboundSchema: z.ZodType< + ProjectProjectCapabilitiesCapabilities, unknown > = z.object({ + deployments: z.lazy(() => ProjectDeployments$inboundSchema).optional(), keys: z.lazy(() => ProjectKeys$inboundSchema).optional(), models: z.lazy(() => ProjectModels$inboundSchema).optional(), + buckets: z.lazy(() => ProjectBuckets$inboundSchema).optional(), + registry: z.lazy(() => ProjectRegistry$inboundSchema).optional(), }); -export function projectConnectionsFromJSON( +export function projectProjectCapabilitiesCapabilitiesFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => ProjectConnections$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ProjectConnections' from JSON`, + (x) => + ProjectProjectCapabilitiesCapabilities$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ProjectProjectCapabilitiesCapabilities' from JSON`, ); } /** @internal */ -export const ProjectCustomerConnections$inboundSchema: z.ZodType< - ProjectCustomerConnections, +export const ProjectProjectCapabilities$inboundSchema: z.ZodType< + ProjectProjectCapabilities, unknown > = z.object({ schemaVersion: z.number(), - connections: z.lazy(() => ProjectConnections$inboundSchema), + capabilities: z.lazy(() => + ProjectProjectCapabilitiesCapabilities$inboundSchema + ), }); -export function projectCustomerConnectionsFromJSON( +export function projectProjectCapabilitiesFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => ProjectCustomerConnections$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ProjectCustomerConnections' from JSON`, + (x) => ProjectProjectCapabilities$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ProjectProjectCapabilities' from JSON`, ); } @@ -677,8 +780,8 @@ export const Project$inboundSchema: z.ZodType = z.object({ defaultManagers: z.nullable( z.lazy(() => ProjectDefaultManagers$inboundSchema), ).optional(), - customerConnections: z.nullable( - z.lazy(() => ProjectCustomerConnections$inboundSchema), + projectCapabilities: z.nullable( + z.lazy(() => ProjectProjectCapabilities$inboundSchema), ).optional(), createdAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), workspaceId: z.string(), diff --git a/client-sdks/platform/typescript/src/models/projectcapabilities.ts b/client-sdks/platform/typescript/src/models/projectcapabilities.ts new file mode 100644 index 000000000..5c9e8459d --- /dev/null +++ b/client-sdks/platform/typescript/src/models/projectcapabilities.ts @@ -0,0 +1,270 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { ClosedEnum } from "../types/enums.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +export type ProjectCapabilitiesDeployments = { + enabled: boolean; +}; + +export type ProjectCapabilitiesKeys = { + enabled: boolean; + applicationEncryption: boolean; +}; + +export const ProjectCapabilitiesAllowedProvider = { + AwsBedrock: "aws-bedrock", + GcpVertex: "gcp-vertex", + AzureFoundry: "azure-foundry", + Anthropic: "anthropic", + Databricks: "databricks", + Openai: "openai", +} as const; +export type ProjectCapabilitiesAllowedProvider = ClosedEnum< + typeof ProjectCapabilitiesAllowedProvider +>; + +export const ProjectCapabilitiesClientApi = { + OpenaiChat: "openai-chat", + OpenaiResponses: "openai-responses", + AnthropicMessages: "anthropic-messages", +} as const; +export type ProjectCapabilitiesClientApi = ClosedEnum< + typeof ProjectCapabilitiesClientApi +>; + +export type ProjectCapabilitiesRequirement = { + publicModelId: string; + clientApis: Array; + required: boolean; +}; + +export type ProjectCapabilitiesModels = { + enabled: boolean; + allowedProviders: Array; + requirements: Array; +}; + +export const ProjectCapabilitiesAccess = { + ReadWrite: "read-write", +} as const; +export type ProjectCapabilitiesAccess = ClosedEnum< + typeof ProjectCapabilitiesAccess +>; + +export type ProjectCapabilitiesBuckets = { + enabled: boolean; + access: ProjectCapabilitiesAccess; +}; + +export const ProjectCapabilitiesCredentialPolicy = { + PullOnly: "pull-only", + PushAndPull: "push-and-pull", +} as const; +export type ProjectCapabilitiesCredentialPolicy = ClosedEnum< + typeof ProjectCapabilitiesCredentialPolicy +>; + +export type ProjectCapabilitiesRegistry = { + enabled: boolean; + repositories: Array; + credentialPolicy: ProjectCapabilitiesCredentialPolicy; +}; + +export type ProjectCapabilitiesCapabilities = { + deployments?: ProjectCapabilitiesDeployments | undefined; + keys?: ProjectCapabilitiesKeys | undefined; + models?: ProjectCapabilitiesModels | undefined; + buckets?: ProjectCapabilitiesBuckets | undefined; + registry?: ProjectCapabilitiesRegistry | undefined; +}; + +export type ProjectCapabilities = { + schemaVersion: number; + capabilities: ProjectCapabilitiesCapabilities; +}; + +/** @internal */ +export const ProjectCapabilitiesDeployments$inboundSchema: z.ZodType< + ProjectCapabilitiesDeployments, + unknown +> = z.object({ + enabled: z.boolean(), +}); + +export function projectCapabilitiesDeploymentsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ProjectCapabilitiesDeployments$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ProjectCapabilitiesDeployments' from JSON`, + ); +} + +/** @internal */ +export const ProjectCapabilitiesKeys$inboundSchema: z.ZodType< + ProjectCapabilitiesKeys, + unknown +> = z.object({ + enabled: z.boolean(), + applicationEncryption: z.boolean(), +}); + +export function projectCapabilitiesKeysFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ProjectCapabilitiesKeys$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ProjectCapabilitiesKeys' from JSON`, + ); +} + +/** @internal */ +export const ProjectCapabilitiesAllowedProvider$inboundSchema: z.ZodEnum< + typeof ProjectCapabilitiesAllowedProvider +> = z.enum(ProjectCapabilitiesAllowedProvider); + +/** @internal */ +export const ProjectCapabilitiesClientApi$inboundSchema: z.ZodEnum< + typeof ProjectCapabilitiesClientApi +> = z.enum(ProjectCapabilitiesClientApi); + +/** @internal */ +export const ProjectCapabilitiesRequirement$inboundSchema: z.ZodType< + ProjectCapabilitiesRequirement, + unknown +> = z.object({ + publicModelId: z.string(), + clientApis: z.array(ProjectCapabilitiesClientApi$inboundSchema), + required: z.boolean(), +}); + +export function projectCapabilitiesRequirementFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ProjectCapabilitiesRequirement$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ProjectCapabilitiesRequirement' from JSON`, + ); +} + +/** @internal */ +export const ProjectCapabilitiesModels$inboundSchema: z.ZodType< + ProjectCapabilitiesModels, + unknown +> = z.object({ + enabled: z.boolean(), + allowedProviders: z.array(ProjectCapabilitiesAllowedProvider$inboundSchema), + requirements: z.array( + z.lazy(() => ProjectCapabilitiesRequirement$inboundSchema), + ), +}); + +export function projectCapabilitiesModelsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ProjectCapabilitiesModels$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ProjectCapabilitiesModels' from JSON`, + ); +} + +/** @internal */ +export const ProjectCapabilitiesAccess$inboundSchema: z.ZodEnum< + typeof ProjectCapabilitiesAccess +> = z.enum(ProjectCapabilitiesAccess); + +/** @internal */ +export const ProjectCapabilitiesBuckets$inboundSchema: z.ZodType< + ProjectCapabilitiesBuckets, + unknown +> = z.object({ + enabled: z.boolean(), + access: ProjectCapabilitiesAccess$inboundSchema, +}); + +export function projectCapabilitiesBucketsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ProjectCapabilitiesBuckets$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ProjectCapabilitiesBuckets' from JSON`, + ); +} + +/** @internal */ +export const ProjectCapabilitiesCredentialPolicy$inboundSchema: z.ZodEnum< + typeof ProjectCapabilitiesCredentialPolicy +> = z.enum(ProjectCapabilitiesCredentialPolicy); + +/** @internal */ +export const ProjectCapabilitiesRegistry$inboundSchema: z.ZodType< + ProjectCapabilitiesRegistry, + unknown +> = z.object({ + enabled: z.boolean(), + repositories: z.array(z.string()), + credentialPolicy: ProjectCapabilitiesCredentialPolicy$inboundSchema, +}); + +export function projectCapabilitiesRegistryFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ProjectCapabilitiesRegistry$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ProjectCapabilitiesRegistry' from JSON`, + ); +} + +/** @internal */ +export const ProjectCapabilitiesCapabilities$inboundSchema: z.ZodType< + ProjectCapabilitiesCapabilities, + unknown +> = z.object({ + deployments: z.lazy(() => ProjectCapabilitiesDeployments$inboundSchema) + .optional(), + keys: z.lazy(() => ProjectCapabilitiesKeys$inboundSchema).optional(), + models: z.lazy(() => ProjectCapabilitiesModels$inboundSchema).optional(), + buckets: z.lazy(() => ProjectCapabilitiesBuckets$inboundSchema).optional(), + registry: z.lazy(() => ProjectCapabilitiesRegistry$inboundSchema).optional(), +}); + +export function projectCapabilitiesCapabilitiesFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ProjectCapabilitiesCapabilities$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ProjectCapabilitiesCapabilities' from JSON`, + ); +} + +/** @internal */ +export const ProjectCapabilities$inboundSchema: z.ZodType< + ProjectCapabilities, + unknown +> = z.object({ + schemaVersion: z.number(), + capabilities: z.lazy(() => ProjectCapabilitiesCapabilities$inboundSchema), +}); + +export function projectCapabilitiesFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ProjectCapabilities$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ProjectCapabilities' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/projectcapabilityoverview.ts b/client-sdks/platform/typescript/src/models/projectcapabilityoverview.ts new file mode 100644 index 000000000..9ebcf2864 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/projectcapabilityoverview.ts @@ -0,0 +1,1538 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { ClosedEnum } from "../types/enums.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +export const ConfigurationStatus = { + Valid: "valid", + Invalid: "invalid", +} as const; +export type ConfigurationStatus = ClosedEnum; + +export type SummaryModels = { + enabled: boolean; + connected: number; + settingUp: number; + needsAttention: number; + revoked: number; + notConnected: number; +}; + +export type SummaryKeys = { + enabled: boolean; + connected: number; + settingUp: number; + needsAttention: number; + revoked: number; + notConnected: number; +}; + +export type SummaryBuckets = { + enabled: boolean; + connected: number; + settingUp: number; + needsAttention: number; + revoked: number; + notConnected: number; +}; + +export type SummaryRegistry = { + enabled: boolean; + connected: number; + settingUp: number; + needsAttention: number; + revoked: number; + notConnected: number; +}; + +export type SummaryCapabilities = { + models: SummaryModels; + keys: SummaryKeys; + buckets: SummaryBuckets; + registry: SummaryRegistry; +}; + +export type Summary = { + groups: number; + capabilities: SummaryCapabilities; +}; + +export const ModelsCapability = { + Models: "models", + Keys: "keys", + Buckets: "buckets", + Registry: "registry", +} as const; +export type ModelsCapability = ClosedEnum; + +export const ModelsState = { + NotConnected: "not-connected", + SettingUp: "setting-up", + Connected: "connected", + NeedsAttention: "needs-attention", + Revoked: "revoked", +} as const; +export type ModelsState = ClosedEnum; + +export const ModelsPlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Local: "local", + Kubernetes: "kubernetes", + Machines: "machines", + Test: "test", +} as const; +export type ModelsPlatform = ClosedEnum; + +export const ModelsHealth = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type ModelsHealth = ClosedEnum; + +export type ModelsObservation = { + provider: string | null; + platform: ModelsPlatform | null; + resourceId: string | null; + location: string | null; + account: string | null; + observedAt: Date | null; + stale: boolean; + partial: boolean; + health: ModelsHealth | null; + lifecycle: string | null; + message: string | null; +}; + +export const ModelsAvailability = { + Available: "available", + Blocked: "blocked", + Unknown: "unknown", +} as const; +export type ModelsAvailability = ClosedEnum; + +export const ModelsAccessTest = { + Verified: "verified", + Failed: "failed", + NotChecked: "not-checked", +} as const; +export type ModelsAccessTest = ClosedEnum; + +export type ModelsModelCoverage = { + publicModelId: string; + required: boolean; + availability: ModelsAvailability; + blockerCodes: Array; + accessTest: ModelsAccessTest; + accessObservedAt: Date | null; +}; + +export const ModelsProvider = { + Anthropic: "anthropic", + Databricks: "databricks", + Openai: "openai", +} as const; +export type ModelsProvider = ClosedEnum; + +export type ModelsDirectProvider = { + provider: ModelsProvider; + providerEndpoint: string | null; + keyFingerprint: string; + availableProviderModelIds: Array; + verifiedAt: Date; +}; + +export const ModelsRootState = { + Pending: "pending", + Ready: "ready", + Revoked: "revoked", +} as const; +export type ModelsRootState = ClosedEnum; + +export type ModelsRoot = { + state: ModelsRootState; + createdAt: Date | null; +}; + +export const ModelsCredentialPolicy = { + PullOnly: "pull-only", + PushAndPull: "push-and-pull", + Mixed: "mixed", + None: "none", +} as const; +export type ModelsCredentialPolicy = ClosedEnum; + +export type ModelsRegistry = { + repositories: number; + credentials: number; + credentialPolicy: ModelsCredentialPolicy; + lastVerifiedAt: Date | null; +}; + +export type GroupModels = { + capability: ModelsCapability; + enabled: boolean; + state: ModelsState; + /** + * Unique identifier for the deployment. + */ + deploymentId: string | null; + observation: ModelsObservation | null; + modelCoverage?: Array | undefined; + directProvider?: ModelsDirectProvider | undefined; + root?: ModelsRoot | undefined; + registry?: ModelsRegistry | undefined; +}; + +export const KeysCapability = { + Models: "models", + Keys: "keys", + Buckets: "buckets", + Registry: "registry", +} as const; +export type KeysCapability = ClosedEnum; + +export const KeysState = { + NotConnected: "not-connected", + SettingUp: "setting-up", + Connected: "connected", + NeedsAttention: "needs-attention", + Revoked: "revoked", +} as const; +export type KeysState = ClosedEnum; + +export const KeysPlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Local: "local", + Kubernetes: "kubernetes", + Machines: "machines", + Test: "test", +} as const; +export type KeysPlatform = ClosedEnum; + +export const KeysHealth = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type KeysHealth = ClosedEnum; + +export type KeysObservation = { + provider: string | null; + platform: KeysPlatform | null; + resourceId: string | null; + location: string | null; + account: string | null; + observedAt: Date | null; + stale: boolean; + partial: boolean; + health: KeysHealth | null; + lifecycle: string | null; + message: string | null; +}; + +export const KeysAvailability = { + Available: "available", + Blocked: "blocked", + Unknown: "unknown", +} as const; +export type KeysAvailability = ClosedEnum; + +export const KeysAccessTest = { + Verified: "verified", + Failed: "failed", + NotChecked: "not-checked", +} as const; +export type KeysAccessTest = ClosedEnum; + +export type KeysModelCoverage = { + publicModelId: string; + required: boolean; + availability: KeysAvailability; + blockerCodes: Array; + accessTest: KeysAccessTest; + accessObservedAt: Date | null; +}; + +export const KeysProvider = { + Anthropic: "anthropic", + Databricks: "databricks", + Openai: "openai", +} as const; +export type KeysProvider = ClosedEnum; + +export type KeysDirectProvider = { + provider: KeysProvider; + providerEndpoint: string | null; + keyFingerprint: string; + availableProviderModelIds: Array; + verifiedAt: Date; +}; + +export const KeysRootState = { + Pending: "pending", + Ready: "ready", + Revoked: "revoked", +} as const; +export type KeysRootState = ClosedEnum; + +export type KeysRoot = { + state: KeysRootState; + createdAt: Date | null; +}; + +export const KeysCredentialPolicy = { + PullOnly: "pull-only", + PushAndPull: "push-and-pull", + Mixed: "mixed", + None: "none", +} as const; +export type KeysCredentialPolicy = ClosedEnum; + +export type KeysRegistry = { + repositories: number; + credentials: number; + credentialPolicy: KeysCredentialPolicy; + lastVerifiedAt: Date | null; +}; + +export type GroupKeys = { + capability: KeysCapability; + enabled: boolean; + state: KeysState; + /** + * Unique identifier for the deployment. + */ + deploymentId: string | null; + observation: KeysObservation | null; + modelCoverage?: Array | undefined; + directProvider?: KeysDirectProvider | undefined; + root?: KeysRoot | undefined; + registry?: KeysRegistry | undefined; +}; + +export const BucketsCapability = { + Models: "models", + Keys: "keys", + Buckets: "buckets", + Registry: "registry", +} as const; +export type BucketsCapability = ClosedEnum; + +export const BucketsState = { + NotConnected: "not-connected", + SettingUp: "setting-up", + Connected: "connected", + NeedsAttention: "needs-attention", + Revoked: "revoked", +} as const; +export type BucketsState = ClosedEnum; + +export const BucketsPlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Local: "local", + Kubernetes: "kubernetes", + Machines: "machines", + Test: "test", +} as const; +export type BucketsPlatform = ClosedEnum; + +export const BucketsHealth = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type BucketsHealth = ClosedEnum; + +export type BucketsObservation = { + provider: string | null; + platform: BucketsPlatform | null; + resourceId: string | null; + location: string | null; + account: string | null; + observedAt: Date | null; + stale: boolean; + partial: boolean; + health: BucketsHealth | null; + lifecycle: string | null; + message: string | null; +}; + +export const BucketsAvailability = { + Available: "available", + Blocked: "blocked", + Unknown: "unknown", +} as const; +export type BucketsAvailability = ClosedEnum; + +export const BucketsAccessTest = { + Verified: "verified", + Failed: "failed", + NotChecked: "not-checked", +} as const; +export type BucketsAccessTest = ClosedEnum; + +export type BucketsModelCoverage = { + publicModelId: string; + required: boolean; + availability: BucketsAvailability; + blockerCodes: Array; + accessTest: BucketsAccessTest; + accessObservedAt: Date | null; +}; + +export const BucketsProvider = { + Anthropic: "anthropic", + Databricks: "databricks", + Openai: "openai", +} as const; +export type BucketsProvider = ClosedEnum; + +export type BucketsDirectProvider = { + provider: BucketsProvider; + providerEndpoint: string | null; + keyFingerprint: string; + availableProviderModelIds: Array; + verifiedAt: Date; +}; + +export const BucketsRootState = { + Pending: "pending", + Ready: "ready", + Revoked: "revoked", +} as const; +export type BucketsRootState = ClosedEnum; + +export type BucketsRoot = { + state: BucketsRootState; + createdAt: Date | null; +}; + +export const BucketsCredentialPolicy = { + PullOnly: "pull-only", + PushAndPull: "push-and-pull", + Mixed: "mixed", + None: "none", +} as const; +export type BucketsCredentialPolicy = ClosedEnum< + typeof BucketsCredentialPolicy +>; + +export type BucketsRegistry = { + repositories: number; + credentials: number; + credentialPolicy: BucketsCredentialPolicy; + lastVerifiedAt: Date | null; +}; + +export type GroupBuckets = { + capability: BucketsCapability; + enabled: boolean; + state: BucketsState; + /** + * Unique identifier for the deployment. + */ + deploymentId: string | null; + observation: BucketsObservation | null; + modelCoverage?: Array | undefined; + directProvider?: BucketsDirectProvider | undefined; + root?: BucketsRoot | undefined; + registry?: BucketsRegistry | undefined; +}; + +export const RegistryCapability = { + Models: "models", + Keys: "keys", + Buckets: "buckets", + Registry: "registry", +} as const; +export type RegistryCapability = ClosedEnum; + +export const RegistryState = { + NotConnected: "not-connected", + SettingUp: "setting-up", + Connected: "connected", + NeedsAttention: "needs-attention", + Revoked: "revoked", +} as const; +export type RegistryState = ClosedEnum; + +export const RegistryPlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Local: "local", + Kubernetes: "kubernetes", + Machines: "machines", + Test: "test", +} as const; +export type RegistryPlatform = ClosedEnum; + +export const RegistryHealth = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type RegistryHealth = ClosedEnum; + +export type RegistryObservation = { + provider: string | null; + platform: RegistryPlatform | null; + resourceId: string | null; + location: string | null; + account: string | null; + observedAt: Date | null; + stale: boolean; + partial: boolean; + health: RegistryHealth | null; + lifecycle: string | null; + message: string | null; +}; + +export const RegistryAvailability = { + Available: "available", + Blocked: "blocked", + Unknown: "unknown", +} as const; +export type RegistryAvailability = ClosedEnum; + +export const RegistryAccessTest = { + Verified: "verified", + Failed: "failed", + NotChecked: "not-checked", +} as const; +export type RegistryAccessTest = ClosedEnum; + +export type RegistryModelCoverage = { + publicModelId: string; + required: boolean; + availability: RegistryAvailability; + blockerCodes: Array; + accessTest: RegistryAccessTest; + accessObservedAt: Date | null; +}; + +export const RegistryProvider = { + Anthropic: "anthropic", + Databricks: "databricks", + Openai: "openai", +} as const; +export type RegistryProvider = ClosedEnum; + +export type RegistryDirectProvider = { + provider: RegistryProvider; + providerEndpoint: string | null; + keyFingerprint: string; + availableProviderModelIds: Array; + verifiedAt: Date; +}; + +export const RegistryRootState = { + Pending: "pending", + Ready: "ready", + Revoked: "revoked", +} as const; +export type RegistryRootState = ClosedEnum; + +export type RegistryRoot = { + state: RegistryRootState; + createdAt: Date | null; +}; + +export const ProjectCapabilityOverviewCredentialPolicy = { + PullOnly: "pull-only", + PushAndPull: "push-and-pull", + Mixed: "mixed", + None: "none", +} as const; +export type ProjectCapabilityOverviewCredentialPolicy = ClosedEnum< + typeof ProjectCapabilityOverviewCredentialPolicy +>; + +export type GroupRegistryRegistry = { + repositories: number; + credentials: number; + credentialPolicy: ProjectCapabilityOverviewCredentialPolicy; + lastVerifiedAt: Date | null; +}; + +export type GroupRegistry = { + capability: RegistryCapability; + enabled: boolean; + state: RegistryState; + /** + * Unique identifier for the deployment. + */ + deploymentId: string | null; + observation: RegistryObservation | null; + modelCoverage?: Array | undefined; + directProvider?: RegistryDirectProvider | undefined; + root?: RegistryRoot | undefined; + registry?: GroupRegistryRegistry | undefined; +}; + +export type GroupCapabilities = { + models: GroupModels; + keys: GroupKeys; + buckets: GroupBuckets; + registry: GroupRegistry; +}; + +export type Group = { + /** + * Unique identifier for the deployment group. + */ + deploymentGroupId: string; + name: string; + externalId: string | null; + createdAt: Date; + capabilities: GroupCapabilities; +}; + +export type ProjectCapabilityOverview = { + generatedAt: Date; + configurationStatus: ConfigurationStatus; + summary: Summary; + groups: Array; +}; + +/** @internal */ +export const ConfigurationStatus$inboundSchema: z.ZodEnum< + typeof ConfigurationStatus +> = z.enum(ConfigurationStatus); + +/** @internal */ +export const SummaryModels$inboundSchema: z.ZodType = z + .object({ + enabled: z.boolean(), + connected: z.int(), + settingUp: z.int(), + needsAttention: z.int(), + revoked: z.int(), + notConnected: z.int(), + }); + +export function summaryModelsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SummaryModels$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SummaryModels' from JSON`, + ); +} + +/** @internal */ +export const SummaryKeys$inboundSchema: z.ZodType = z + .object({ + enabled: z.boolean(), + connected: z.int(), + settingUp: z.int(), + needsAttention: z.int(), + revoked: z.int(), + notConnected: z.int(), + }); + +export function summaryKeysFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SummaryKeys$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SummaryKeys' from JSON`, + ); +} + +/** @internal */ +export const SummaryBuckets$inboundSchema: z.ZodType = + z.object({ + enabled: z.boolean(), + connected: z.int(), + settingUp: z.int(), + needsAttention: z.int(), + revoked: z.int(), + notConnected: z.int(), + }); + +export function summaryBucketsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SummaryBuckets$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SummaryBuckets' from JSON`, + ); +} + +/** @internal */ +export const SummaryRegistry$inboundSchema: z.ZodType< + SummaryRegistry, + unknown +> = z.object({ + enabled: z.boolean(), + connected: z.int(), + settingUp: z.int(), + needsAttention: z.int(), + revoked: z.int(), + notConnected: z.int(), +}); + +export function summaryRegistryFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SummaryRegistry$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SummaryRegistry' from JSON`, + ); +} + +/** @internal */ +export const SummaryCapabilities$inboundSchema: z.ZodType< + SummaryCapabilities, + unknown +> = z.object({ + models: z.lazy(() => SummaryModels$inboundSchema), + keys: z.lazy(() => SummaryKeys$inboundSchema), + buckets: z.lazy(() => SummaryBuckets$inboundSchema), + registry: z.lazy(() => SummaryRegistry$inboundSchema), +}); + +export function summaryCapabilitiesFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SummaryCapabilities$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SummaryCapabilities' from JSON`, + ); +} + +/** @internal */ +export const Summary$inboundSchema: z.ZodType = z.object({ + groups: z.int(), + capabilities: z.lazy(() => SummaryCapabilities$inboundSchema), +}); + +export function summaryFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Summary$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Summary' from JSON`, + ); +} + +/** @internal */ +export const ModelsCapability$inboundSchema: z.ZodEnum< + typeof ModelsCapability +> = z.enum(ModelsCapability); + +/** @internal */ +export const ModelsState$inboundSchema: z.ZodEnum = z.enum( + ModelsState, +); + +/** @internal */ +export const ModelsPlatform$inboundSchema: z.ZodEnum = z + .enum(ModelsPlatform); + +/** @internal */ +export const ModelsHealth$inboundSchema: z.ZodEnum = z + .enum(ModelsHealth); + +/** @internal */ +export const ModelsObservation$inboundSchema: z.ZodType< + ModelsObservation, + unknown +> = z.object({ + provider: z.nullable(z.string()), + platform: z.nullable(ModelsPlatform$inboundSchema), + resourceId: z.nullable(z.string()), + location: z.nullable(z.string()), + account: z.nullable(z.string()), + observedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + stale: z.boolean(), + partial: z.boolean(), + health: z.nullable(ModelsHealth$inboundSchema), + lifecycle: z.nullable(z.string()), + message: z.nullable(z.string()), +}); + +export function modelsObservationFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ModelsObservation$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ModelsObservation' from JSON`, + ); +} + +/** @internal */ +export const ModelsAvailability$inboundSchema: z.ZodEnum< + typeof ModelsAvailability +> = z.enum(ModelsAvailability); + +/** @internal */ +export const ModelsAccessTest$inboundSchema: z.ZodEnum< + typeof ModelsAccessTest +> = z.enum(ModelsAccessTest); + +/** @internal */ +export const ModelsModelCoverage$inboundSchema: z.ZodType< + ModelsModelCoverage, + unknown +> = z.object({ + publicModelId: z.string(), + required: z.boolean(), + availability: ModelsAvailability$inboundSchema, + blockerCodes: z.array(z.string()), + accessTest: ModelsAccessTest$inboundSchema, + accessObservedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), +}); + +export function modelsModelCoverageFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ModelsModelCoverage$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ModelsModelCoverage' from JSON`, + ); +} + +/** @internal */ +export const ModelsProvider$inboundSchema: z.ZodEnum = z + .enum(ModelsProvider); + +/** @internal */ +export const ModelsDirectProvider$inboundSchema: z.ZodType< + ModelsDirectProvider, + unknown +> = z.object({ + provider: ModelsProvider$inboundSchema, + providerEndpoint: z.nullable(z.string()), + keyFingerprint: z.string(), + availableProviderModelIds: z.array(z.string()), + verifiedAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), +}); + +export function modelsDirectProviderFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ModelsDirectProvider$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ModelsDirectProvider' from JSON`, + ); +} + +/** @internal */ +export const ModelsRootState$inboundSchema: z.ZodEnum = + z.enum(ModelsRootState); + +/** @internal */ +export const ModelsRoot$inboundSchema: z.ZodType = z + .object({ + state: ModelsRootState$inboundSchema, + createdAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + }); + +export function modelsRootFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ModelsRoot$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ModelsRoot' from JSON`, + ); +} + +/** @internal */ +export const ModelsCredentialPolicy$inboundSchema: z.ZodEnum< + typeof ModelsCredentialPolicy +> = z.enum(ModelsCredentialPolicy); + +/** @internal */ +export const ModelsRegistry$inboundSchema: z.ZodType = + z.object({ + repositories: z.int(), + credentials: z.int(), + credentialPolicy: ModelsCredentialPolicy$inboundSchema, + lastVerifiedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + }); + +export function modelsRegistryFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ModelsRegistry$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ModelsRegistry' from JSON`, + ); +} + +/** @internal */ +export const GroupModels$inboundSchema: z.ZodType = z + .object({ + capability: ModelsCapability$inboundSchema, + enabled: z.boolean(), + state: ModelsState$inboundSchema, + deploymentId: z.nullable(z.string()), + observation: z.nullable(z.lazy(() => ModelsObservation$inboundSchema)), + modelCoverage: z.array(z.lazy(() => ModelsModelCoverage$inboundSchema)) + .optional(), + directProvider: z.lazy(() => ModelsDirectProvider$inboundSchema).optional(), + root: z.lazy(() => ModelsRoot$inboundSchema).optional(), + registry: z.lazy(() => ModelsRegistry$inboundSchema).optional(), + }); + +export function groupModelsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GroupModels$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GroupModels' from JSON`, + ); +} + +/** @internal */ +export const KeysCapability$inboundSchema: z.ZodEnum = z + .enum(KeysCapability); + +/** @internal */ +export const KeysState$inboundSchema: z.ZodEnum = z.enum( + KeysState, +); + +/** @internal */ +export const KeysPlatform$inboundSchema: z.ZodEnum = z + .enum(KeysPlatform); + +/** @internal */ +export const KeysHealth$inboundSchema: z.ZodEnum = z.enum( + KeysHealth, +); + +/** @internal */ +export const KeysObservation$inboundSchema: z.ZodType< + KeysObservation, + unknown +> = z.object({ + provider: z.nullable(z.string()), + platform: z.nullable(KeysPlatform$inboundSchema), + resourceId: z.nullable(z.string()), + location: z.nullable(z.string()), + account: z.nullable(z.string()), + observedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + stale: z.boolean(), + partial: z.boolean(), + health: z.nullable(KeysHealth$inboundSchema), + lifecycle: z.nullable(z.string()), + message: z.nullable(z.string()), +}); + +export function keysObservationFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => KeysObservation$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'KeysObservation' from JSON`, + ); +} + +/** @internal */ +export const KeysAvailability$inboundSchema: z.ZodEnum< + typeof KeysAvailability +> = z.enum(KeysAvailability); + +/** @internal */ +export const KeysAccessTest$inboundSchema: z.ZodEnum = z + .enum(KeysAccessTest); + +/** @internal */ +export const KeysModelCoverage$inboundSchema: z.ZodType< + KeysModelCoverage, + unknown +> = z.object({ + publicModelId: z.string(), + required: z.boolean(), + availability: KeysAvailability$inboundSchema, + blockerCodes: z.array(z.string()), + accessTest: KeysAccessTest$inboundSchema, + accessObservedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), +}); + +export function keysModelCoverageFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => KeysModelCoverage$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'KeysModelCoverage' from JSON`, + ); +} + +/** @internal */ +export const KeysProvider$inboundSchema: z.ZodEnum = z + .enum(KeysProvider); + +/** @internal */ +export const KeysDirectProvider$inboundSchema: z.ZodType< + KeysDirectProvider, + unknown +> = z.object({ + provider: KeysProvider$inboundSchema, + providerEndpoint: z.nullable(z.string()), + keyFingerprint: z.string(), + availableProviderModelIds: z.array(z.string()), + verifiedAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), +}); + +export function keysDirectProviderFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => KeysDirectProvider$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'KeysDirectProvider' from JSON`, + ); +} + +/** @internal */ +export const KeysRootState$inboundSchema: z.ZodEnum = z + .enum(KeysRootState); + +/** @internal */ +export const KeysRoot$inboundSchema: z.ZodType = z.object({ + state: KeysRootState$inboundSchema, + createdAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), +}); + +export function keysRootFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => KeysRoot$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'KeysRoot' from JSON`, + ); +} + +/** @internal */ +export const KeysCredentialPolicy$inboundSchema: z.ZodEnum< + typeof KeysCredentialPolicy +> = z.enum(KeysCredentialPolicy); + +/** @internal */ +export const KeysRegistry$inboundSchema: z.ZodType = z + .object({ + repositories: z.int(), + credentials: z.int(), + credentialPolicy: KeysCredentialPolicy$inboundSchema, + lastVerifiedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + }); + +export function keysRegistryFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => KeysRegistry$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'KeysRegistry' from JSON`, + ); +} + +/** @internal */ +export const GroupKeys$inboundSchema: z.ZodType = z.object({ + capability: KeysCapability$inboundSchema, + enabled: z.boolean(), + state: KeysState$inboundSchema, + deploymentId: z.nullable(z.string()), + observation: z.nullable(z.lazy(() => KeysObservation$inboundSchema)), + modelCoverage: z.array(z.lazy(() => KeysModelCoverage$inboundSchema)) + .optional(), + directProvider: z.lazy(() => KeysDirectProvider$inboundSchema).optional(), + root: z.lazy(() => KeysRoot$inboundSchema).optional(), + registry: z.lazy(() => KeysRegistry$inboundSchema).optional(), +}); + +export function groupKeysFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GroupKeys$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GroupKeys' from JSON`, + ); +} + +/** @internal */ +export const BucketsCapability$inboundSchema: z.ZodEnum< + typeof BucketsCapability +> = z.enum(BucketsCapability); + +/** @internal */ +export const BucketsState$inboundSchema: z.ZodEnum = z + .enum(BucketsState); + +/** @internal */ +export const BucketsPlatform$inboundSchema: z.ZodEnum = + z.enum(BucketsPlatform); + +/** @internal */ +export const BucketsHealth$inboundSchema: z.ZodEnum = z + .enum(BucketsHealth); + +/** @internal */ +export const BucketsObservation$inboundSchema: z.ZodType< + BucketsObservation, + unknown +> = z.object({ + provider: z.nullable(z.string()), + platform: z.nullable(BucketsPlatform$inboundSchema), + resourceId: z.nullable(z.string()), + location: z.nullable(z.string()), + account: z.nullable(z.string()), + observedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + stale: z.boolean(), + partial: z.boolean(), + health: z.nullable(BucketsHealth$inboundSchema), + lifecycle: z.nullable(z.string()), + message: z.nullable(z.string()), +}); + +export function bucketsObservationFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => BucketsObservation$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'BucketsObservation' from JSON`, + ); +} + +/** @internal */ +export const BucketsAvailability$inboundSchema: z.ZodEnum< + typeof BucketsAvailability +> = z.enum(BucketsAvailability); + +/** @internal */ +export const BucketsAccessTest$inboundSchema: z.ZodEnum< + typeof BucketsAccessTest +> = z.enum(BucketsAccessTest); + +/** @internal */ +export const BucketsModelCoverage$inboundSchema: z.ZodType< + BucketsModelCoverage, + unknown +> = z.object({ + publicModelId: z.string(), + required: z.boolean(), + availability: BucketsAvailability$inboundSchema, + blockerCodes: z.array(z.string()), + accessTest: BucketsAccessTest$inboundSchema, + accessObservedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), +}); + +export function bucketsModelCoverageFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => BucketsModelCoverage$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'BucketsModelCoverage' from JSON`, + ); +} + +/** @internal */ +export const BucketsProvider$inboundSchema: z.ZodEnum = + z.enum(BucketsProvider); + +/** @internal */ +export const BucketsDirectProvider$inboundSchema: z.ZodType< + BucketsDirectProvider, + unknown +> = z.object({ + provider: BucketsProvider$inboundSchema, + providerEndpoint: z.nullable(z.string()), + keyFingerprint: z.string(), + availableProviderModelIds: z.array(z.string()), + verifiedAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), +}); + +export function bucketsDirectProviderFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => BucketsDirectProvider$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'BucketsDirectProvider' from JSON`, + ); +} + +/** @internal */ +export const BucketsRootState$inboundSchema: z.ZodEnum< + typeof BucketsRootState +> = z.enum(BucketsRootState); + +/** @internal */ +export const BucketsRoot$inboundSchema: z.ZodType = z + .object({ + state: BucketsRootState$inboundSchema, + createdAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + }); + +export function bucketsRootFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => BucketsRoot$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'BucketsRoot' from JSON`, + ); +} + +/** @internal */ +export const BucketsCredentialPolicy$inboundSchema: z.ZodEnum< + typeof BucketsCredentialPolicy +> = z.enum(BucketsCredentialPolicy); + +/** @internal */ +export const BucketsRegistry$inboundSchema: z.ZodType< + BucketsRegistry, + unknown +> = z.object({ + repositories: z.int(), + credentials: z.int(), + credentialPolicy: BucketsCredentialPolicy$inboundSchema, + lastVerifiedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), +}); + +export function bucketsRegistryFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => BucketsRegistry$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'BucketsRegistry' from JSON`, + ); +} + +/** @internal */ +export const GroupBuckets$inboundSchema: z.ZodType = z + .object({ + capability: BucketsCapability$inboundSchema, + enabled: z.boolean(), + state: BucketsState$inboundSchema, + deploymentId: z.nullable(z.string()), + observation: z.nullable(z.lazy(() => BucketsObservation$inboundSchema)), + modelCoverage: z.array(z.lazy(() => BucketsModelCoverage$inboundSchema)) + .optional(), + directProvider: z.lazy(() => BucketsDirectProvider$inboundSchema) + .optional(), + root: z.lazy(() => BucketsRoot$inboundSchema).optional(), + registry: z.lazy(() => BucketsRegistry$inboundSchema).optional(), + }); + +export function groupBucketsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GroupBuckets$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GroupBuckets' from JSON`, + ); +} + +/** @internal */ +export const RegistryCapability$inboundSchema: z.ZodEnum< + typeof RegistryCapability +> = z.enum(RegistryCapability); + +/** @internal */ +export const RegistryState$inboundSchema: z.ZodEnum = z + .enum(RegistryState); + +/** @internal */ +export const RegistryPlatform$inboundSchema: z.ZodEnum< + typeof RegistryPlatform +> = z.enum(RegistryPlatform); + +/** @internal */ +export const RegistryHealth$inboundSchema: z.ZodEnum = z + .enum(RegistryHealth); + +/** @internal */ +export const RegistryObservation$inboundSchema: z.ZodType< + RegistryObservation, + unknown +> = z.object({ + provider: z.nullable(z.string()), + platform: z.nullable(RegistryPlatform$inboundSchema), + resourceId: z.nullable(z.string()), + location: z.nullable(z.string()), + account: z.nullable(z.string()), + observedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + stale: z.boolean(), + partial: z.boolean(), + health: z.nullable(RegistryHealth$inboundSchema), + lifecycle: z.nullable(z.string()), + message: z.nullable(z.string()), +}); + +export function registryObservationFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => RegistryObservation$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'RegistryObservation' from JSON`, + ); +} + +/** @internal */ +export const RegistryAvailability$inboundSchema: z.ZodEnum< + typeof RegistryAvailability +> = z.enum(RegistryAvailability); + +/** @internal */ +export const RegistryAccessTest$inboundSchema: z.ZodEnum< + typeof RegistryAccessTest +> = z.enum(RegistryAccessTest); + +/** @internal */ +export const RegistryModelCoverage$inboundSchema: z.ZodType< + RegistryModelCoverage, + unknown +> = z.object({ + publicModelId: z.string(), + required: z.boolean(), + availability: RegistryAvailability$inboundSchema, + blockerCodes: z.array(z.string()), + accessTest: RegistryAccessTest$inboundSchema, + accessObservedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), +}); + +export function registryModelCoverageFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => RegistryModelCoverage$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'RegistryModelCoverage' from JSON`, + ); +} + +/** @internal */ +export const RegistryProvider$inboundSchema: z.ZodEnum< + typeof RegistryProvider +> = z.enum(RegistryProvider); + +/** @internal */ +export const RegistryDirectProvider$inboundSchema: z.ZodType< + RegistryDirectProvider, + unknown +> = z.object({ + provider: RegistryProvider$inboundSchema, + providerEndpoint: z.nullable(z.string()), + keyFingerprint: z.string(), + availableProviderModelIds: z.array(z.string()), + verifiedAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), +}); + +export function registryDirectProviderFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => RegistryDirectProvider$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'RegistryDirectProvider' from JSON`, + ); +} + +/** @internal */ +export const RegistryRootState$inboundSchema: z.ZodEnum< + typeof RegistryRootState +> = z.enum(RegistryRootState); + +/** @internal */ +export const RegistryRoot$inboundSchema: z.ZodType = z + .object({ + state: RegistryRootState$inboundSchema, + createdAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + }); + +export function registryRootFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => RegistryRoot$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'RegistryRoot' from JSON`, + ); +} + +/** @internal */ +export const ProjectCapabilityOverviewCredentialPolicy$inboundSchema: z.ZodEnum< + typeof ProjectCapabilityOverviewCredentialPolicy +> = z.enum(ProjectCapabilityOverviewCredentialPolicy); + +/** @internal */ +export const GroupRegistryRegistry$inboundSchema: z.ZodType< + GroupRegistryRegistry, + unknown +> = z.object({ + repositories: z.int(), + credentials: z.int(), + credentialPolicy: ProjectCapabilityOverviewCredentialPolicy$inboundSchema, + lastVerifiedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), +}); + +export function groupRegistryRegistryFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GroupRegistryRegistry$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GroupRegistryRegistry' from JSON`, + ); +} + +/** @internal */ +export const GroupRegistry$inboundSchema: z.ZodType = z + .object({ + capability: RegistryCapability$inboundSchema, + enabled: z.boolean(), + state: RegistryState$inboundSchema, + deploymentId: z.nullable(z.string()), + observation: z.nullable(z.lazy(() => RegistryObservation$inboundSchema)), + modelCoverage: z.array(z.lazy(() => RegistryModelCoverage$inboundSchema)) + .optional(), + directProvider: z.lazy(() => RegistryDirectProvider$inboundSchema) + .optional(), + root: z.lazy(() => RegistryRoot$inboundSchema).optional(), + registry: z.lazy(() => GroupRegistryRegistry$inboundSchema).optional(), + }); + +export function groupRegistryFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GroupRegistry$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GroupRegistry' from JSON`, + ); +} + +/** @internal */ +export const GroupCapabilities$inboundSchema: z.ZodType< + GroupCapabilities, + unknown +> = z.object({ + models: z.lazy(() => GroupModels$inboundSchema), + keys: z.lazy(() => GroupKeys$inboundSchema), + buckets: z.lazy(() => GroupBuckets$inboundSchema), + registry: z.lazy(() => GroupRegistry$inboundSchema), +}); + +export function groupCapabilitiesFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GroupCapabilities$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GroupCapabilities' from JSON`, + ); +} + +/** @internal */ +export const Group$inboundSchema: z.ZodType = z.object({ + deploymentGroupId: z.string(), + name: z.string(), + externalId: z.nullable(z.string()), + createdAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), + capabilities: z.lazy(() => GroupCapabilities$inboundSchema), +}); + +export function groupFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Group$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Group' from JSON`, + ); +} + +/** @internal */ +export const ProjectCapabilityOverview$inboundSchema: z.ZodType< + ProjectCapabilityOverview, + unknown +> = z.object({ + generatedAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), + configurationStatus: ConfigurationStatus$inboundSchema, + summary: z.lazy(() => Summary$inboundSchema), + groups: z.array(z.lazy(() => Group$inboundSchema)), +}); + +export function projectCapabilityOverviewFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ProjectCapabilityOverview$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ProjectCapabilityOverview' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/projectlistitemresponse.ts b/client-sdks/platform/typescript/src/models/projectlistitemresponse.ts index 3280e91d7..a71c547e9 100644 --- a/client-sdks/platform/typescript/src/models/projectlistitemresponse.ts +++ b/client-sdks/platform/typescript/src/models/projectlistitemresponse.ts @@ -274,6 +274,10 @@ export type ProjectListItemResponseDefaultManagers = { local?: string | null | undefined; }; +export type ProjectListItemResponseDeployments = { + enabled: boolean; +}; + export type ProjectListItemResponseKeys = { enabled: boolean; applicationEncryption: boolean; @@ -284,6 +288,8 @@ export const ProjectListItemResponseAllowedProvider = { GcpVertex: "gcp-vertex", AzureFoundry: "azure-foundry", Anthropic: "anthropic", + Databricks: "databricks", + Openai: "openai", } as const; export type ProjectListItemResponseAllowedProvider = ClosedEnum< typeof ProjectListItemResponseAllowedProvider @@ -310,17 +316,46 @@ export type ProjectListItemResponseModels = { requirements: Array; }; -export type ProjectListItemResponseConnections = { +export const ProjectListItemResponseAccess = { + ReadWrite: "read-write", +} as const; +export type ProjectListItemResponseAccess = ClosedEnum< + typeof ProjectListItemResponseAccess +>; + +export type ProjectListItemResponseBuckets = { + enabled: boolean; + access: ProjectListItemResponseAccess; +}; + +export const ProjectListItemResponseCredentialPolicy = { + PullOnly: "pull-only", + PushAndPull: "push-and-pull", +} as const; +export type ProjectListItemResponseCredentialPolicy = ClosedEnum< + typeof ProjectListItemResponseCredentialPolicy +>; + +export type ProjectListItemResponseRegistry = { + enabled: boolean; + repositories: Array; + credentialPolicy: ProjectListItemResponseCredentialPolicy; +}; + +export type ProjectListItemResponseCapabilities = { + deployments?: ProjectListItemResponseDeployments | undefined; keys?: ProjectListItemResponseKeys | undefined; models?: ProjectListItemResponseModels | undefined; + buckets?: ProjectListItemResponseBuckets | undefined; + registry?: ProjectListItemResponseRegistry | undefined; }; /** - * Customer infrastructure offered by this Project through exact built-in or application-authored sources. + * Capabilities this Project may offer through setup links. */ -export type ProjectListItemResponseCustomerConnections = { +export type ProjectListItemResponseProjectCapabilities = { schemaVersion: number; - connections: ProjectListItemResponseConnections; + capabilities: ProjectListItemResponseCapabilities; }; export type ProjectListItemResponse = { @@ -360,10 +395,10 @@ export type ProjectListItemResponse = { */ defaultManagers?: ProjectListItemResponseDefaultManagers | null | undefined; /** - * Customer infrastructure offered by this Project through exact built-in or application-authored sources. + * Capabilities this Project may offer through setup links. */ - customerConnections?: - | ProjectListItemResponseCustomerConnections + projectCapabilities?: + | ProjectListItemResponseProjectCapabilities | null | undefined; createdAt: Date; @@ -595,6 +630,25 @@ export function projectListItemResponseDefaultManagersFromJSON( ); } +/** @internal */ +export const ProjectListItemResponseDeployments$inboundSchema: z.ZodType< + ProjectListItemResponseDeployments, + unknown +> = z.object({ + enabled: z.boolean(), +}); + +export function projectListItemResponseDeploymentsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ProjectListItemResponseDeployments$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ProjectListItemResponseDeployments' from JSON`, + ); +} + /** @internal */ export const ProjectListItemResponseKeys$inboundSchema: z.ZodType< ProjectListItemResponseKeys, @@ -670,45 +724,102 @@ export function projectListItemResponseModelsFromJSON( } /** @internal */ -export const ProjectListItemResponseConnections$inboundSchema: z.ZodType< - ProjectListItemResponseConnections, +export const ProjectListItemResponseAccess$inboundSchema: z.ZodEnum< + typeof ProjectListItemResponseAccess +> = z.enum(ProjectListItemResponseAccess); + +/** @internal */ +export const ProjectListItemResponseBuckets$inboundSchema: z.ZodType< + ProjectListItemResponseBuckets, + unknown +> = z.object({ + enabled: z.boolean(), + access: ProjectListItemResponseAccess$inboundSchema, +}); + +export function projectListItemResponseBucketsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ProjectListItemResponseBuckets$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ProjectListItemResponseBuckets' from JSON`, + ); +} + +/** @internal */ +export const ProjectListItemResponseCredentialPolicy$inboundSchema: z.ZodEnum< + typeof ProjectListItemResponseCredentialPolicy +> = z.enum(ProjectListItemResponseCredentialPolicy); + +/** @internal */ +export const ProjectListItemResponseRegistry$inboundSchema: z.ZodType< + ProjectListItemResponseRegistry, + unknown +> = z.object({ + enabled: z.boolean(), + repositories: z.array(z.string()), + credentialPolicy: ProjectListItemResponseCredentialPolicy$inboundSchema, +}); + +export function projectListItemResponseRegistryFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ProjectListItemResponseRegistry$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ProjectListItemResponseRegistry' from JSON`, + ); +} + +/** @internal */ +export const ProjectListItemResponseCapabilities$inboundSchema: z.ZodType< + ProjectListItemResponseCapabilities, unknown > = z.object({ + deployments: z.lazy(() => ProjectListItemResponseDeployments$inboundSchema) + .optional(), keys: z.lazy(() => ProjectListItemResponseKeys$inboundSchema).optional(), models: z.lazy(() => ProjectListItemResponseModels$inboundSchema).optional(), + buckets: z.lazy(() => ProjectListItemResponseBuckets$inboundSchema) + .optional(), + registry: z.lazy(() => ProjectListItemResponseRegistry$inboundSchema) + .optional(), }); -export function projectListItemResponseConnectionsFromJSON( +export function projectListItemResponseCapabilitiesFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, (x) => - ProjectListItemResponseConnections$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ProjectListItemResponseConnections' from JSON`, + ProjectListItemResponseCapabilities$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ProjectListItemResponseCapabilities' from JSON`, ); } /** @internal */ -export const ProjectListItemResponseCustomerConnections$inboundSchema: - z.ZodType = z.object({ +export const ProjectListItemResponseProjectCapabilities$inboundSchema: + z.ZodType = z.object({ schemaVersion: z.number(), - connections: z.lazy(() => ProjectListItemResponseConnections$inboundSchema), + capabilities: z.lazy(() => + ProjectListItemResponseCapabilities$inboundSchema + ), }); -export function projectListItemResponseCustomerConnectionsFromJSON( +export function projectListItemResponseProjectCapabilitiesFromJSON( jsonString: string, ): SafeParseResult< - ProjectListItemResponseCustomerConnections, + ProjectListItemResponseProjectCapabilities, SDKValidationError > { return safeParse( jsonString, (x) => - ProjectListItemResponseCustomerConnections$inboundSchema.parse( + ProjectListItemResponseProjectCapabilities$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'ProjectListItemResponseCustomerConnections' from JSON`, + `Failed to parse 'ProjectListItemResponseProjectCapabilities' from JSON`, ); } @@ -735,8 +846,8 @@ export const ProjectListItemResponse$inboundSchema: z.ZodType< defaultManagers: z.nullable( z.lazy(() => ProjectListItemResponseDefaultManagers$inboundSchema), ).optional(), - customerConnections: z.nullable( - z.lazy(() => ProjectListItemResponseCustomerConnections$inboundSchema), + projectCapabilities: z.nullable( + z.lazy(() => ProjectListItemResponseProjectCapabilities$inboundSchema), ).optional(), createdAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), workspaceId: z.string(), diff --git a/client-sdks/platform/typescript/src/models/projectrole.ts b/client-sdks/platform/typescript/src/models/projectrole.ts index 3c7a9e955..34fe3a889 100644 --- a/client-sdks/platform/typescript/src/models/projectrole.ts +++ b/client-sdks/platform/typescript/src/models/projectrole.ts @@ -13,6 +13,7 @@ export const ProjectRole = { ProjectDeveloper: "project.developer", ProjectEncryption: "project.encryption", ProjectAiGateway: "project.ai-gateway", + ProjectRemoteBindings: "project.remote-bindings", } as const; /** * Role for project-scoped service accounts diff --git a/client-sdks/platform/typescript/src/models/publishoperationspluginrequest.ts b/client-sdks/platform/typescript/src/models/publishoperationspluginrequest.ts new file mode 100644 index 000000000..99b414ab0 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/publishoperationspluginrequest.ts @@ -0,0 +1,74 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { ClosedEnum } from "../types/enums.js"; + +/** + * Plugin-level default risk tier. + */ +export const PublishOperationsPluginRequestTier = { + ReadOnly: "read-only", + Mutating: "mutating", + Destructive: "destructive", +} as const; +/** + * Plugin-level default risk tier. + */ +export type PublishOperationsPluginRequestTier = ClosedEnum< + typeof PublishOperationsPluginRequestTier +>; + +export type PublishOperationsPluginRequest = { + /** + * Plugin name (from the bundle's metadata.json). + */ + name: string; + /** + * Plugin version. + */ + version: string; + /** + * Plugin-level default risk tier. + */ + tier: PublishOperationsPluginRequestTier; + /** + * The verbatim metadata.json (operations[], binaries{}). + */ + metadata?: any | null | undefined; +}; + +/** @internal */ +export const PublishOperationsPluginRequestTier$outboundSchema: z.ZodEnum< + typeof PublishOperationsPluginRequestTier +> = z.enum(PublishOperationsPluginRequestTier); + +/** @internal */ +export type PublishOperationsPluginRequest$Outbound = { + name: string; + version: string; + tier: string; + metadata?: any | null | undefined; +}; + +/** @internal */ +export const PublishOperationsPluginRequest$outboundSchema: z.ZodType< + PublishOperationsPluginRequest$Outbound, + PublishOperationsPluginRequest +> = z.object({ + name: z.string(), + version: z.string(), + tier: PublishOperationsPluginRequestTier$outboundSchema, + metadata: z.nullable(z.any()).optional(), +}); + +export function publishOperationsPluginRequestToJSON( + publishOperationsPluginRequest: PublishOperationsPluginRequest, +): string { + return JSON.stringify( + PublishOperationsPluginRequest$outboundSchema.parse( + publishOperationsPluginRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/publishoperationspluginresponse.ts b/client-sdks/platform/typescript/src/models/publishoperationspluginresponse.ts new file mode 100644 index 000000000..60d68d63f --- /dev/null +++ b/client-sdks/platform/typescript/src/models/publishoperationspluginresponse.ts @@ -0,0 +1,60 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { ClosedEnum } from "../types/enums.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +/** + * How risky an operation is (declared by the plugin metadata). + */ +export const PublishOperationsPluginResponseTier = { + ReadOnly: "read-only", + Mutating: "mutating", + Destructive: "destructive", +} as const; +/** + * How risky an operation is (declared by the plugin metadata). + */ +export type PublishOperationsPluginResponseTier = ClosedEnum< + typeof PublishOperationsPluginResponseTier +>; + +export type PublishOperationsPluginResponse = { + name: string; + version: string; + /** + * How risky an operation is (declared by the plugin metadata). + */ + tier: PublishOperationsPluginResponseTier; + enabled: boolean; +}; + +/** @internal */ +export const PublishOperationsPluginResponseTier$inboundSchema: z.ZodEnum< + typeof PublishOperationsPluginResponseTier +> = z.enum(PublishOperationsPluginResponseTier); + +/** @internal */ +export const PublishOperationsPluginResponse$inboundSchema: z.ZodType< + PublishOperationsPluginResponse, + unknown +> = z.object({ + name: z.string(), + version: z.string(), + tier: PublishOperationsPluginResponseTier$inboundSchema, + enabled: z.boolean(), +}); + +export function publishOperationsPluginResponseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => PublishOperationsPluginResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'PublishOperationsPluginResponse' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/putdirectanthropicbindingrequest.ts b/client-sdks/platform/typescript/src/models/putdirectanthropicbindingrequest.ts deleted file mode 100644 index fa8738811..000000000 --- a/client-sdks/platform/typescript/src/models/putdirectanthropicbindingrequest.ts +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - */ - -import * as z from "zod/v4"; - -export type PutDirectAnthropicBindingRequest = { - apiKey: string; - acknowledgeAlienCredentialAccess: boolean; -}; - -/** @internal */ -export type PutDirectAnthropicBindingRequest$Outbound = { - apiKey: string; - acknowledgeAlienCredentialAccess: boolean; -}; - -/** @internal */ -export const PutDirectAnthropicBindingRequest$outboundSchema: z.ZodType< - PutDirectAnthropicBindingRequest$Outbound, - PutDirectAnthropicBindingRequest -> = z.object({ - apiKey: z.string(), - acknowledgeAlienCredentialAccess: z.boolean(), -}); - -export function putDirectAnthropicBindingRequestToJSON( - putDirectAnthropicBindingRequest: PutDirectAnthropicBindingRequest, -): string { - return JSON.stringify( - PutDirectAnthropicBindingRequest$outboundSchema.parse( - putDirectAnthropicBindingRequest, - ), - ); -} diff --git a/client-sdks/platform/typescript/src/models/putexternalaibindingrequestunion.ts b/client-sdks/platform/typescript/src/models/putexternalaibindingrequestunion.ts new file mode 100644 index 000000000..6fdb947fd --- /dev/null +++ b/client-sdks/platform/typescript/src/models/putexternalaibindingrequestunion.ts @@ -0,0 +1,126 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { ClosedEnum } from "../types/enums.js"; + +export type PutExternalAIBindingRequestDatabricks = { + provider: "databricks"; + workspaceUrl: string; + clientId: string; + clientSecret: string; + acknowledgeAlienCredentialAccess: boolean; +}; + +export const PutExternalAIBindingRequestProviderEnum = { + Anthropic: "anthropic", + Openai: "openai", +} as const; +export type PutExternalAIBindingRequestProviderEnum = ClosedEnum< + typeof PutExternalAIBindingRequestProviderEnum +>; + +export type PutExternalAIBindingRequest = { + provider: PutExternalAIBindingRequestProviderEnum; + apiKey: string; + acknowledgeAlienCredentialAccess: boolean; +}; + +export type PutExternalAIBindingRequestUnion = + | (PutExternalAIBindingRequest & { provider: "anthropic" }) + | (PutExternalAIBindingRequest & { provider: "openai" }) + | PutExternalAIBindingRequestDatabricks; + +/** @internal */ +export type PutExternalAIBindingRequestDatabricks$Outbound = { + provider: "databricks"; + workspaceUrl: string; + clientId: string; + clientSecret: string; + acknowledgeAlienCredentialAccess: boolean; +}; + +/** @internal */ +export const PutExternalAIBindingRequestDatabricks$outboundSchema: z.ZodType< + PutExternalAIBindingRequestDatabricks$Outbound, + PutExternalAIBindingRequestDatabricks +> = z.object({ + provider: z.literal("databricks"), + workspaceUrl: z.string(), + clientId: z.string(), + clientSecret: z.string(), + acknowledgeAlienCredentialAccess: z.boolean(), +}); + +export function putExternalAIBindingRequestDatabricksToJSON( + putExternalAIBindingRequestDatabricks: PutExternalAIBindingRequestDatabricks, +): string { + return JSON.stringify( + PutExternalAIBindingRequestDatabricks$outboundSchema.parse( + putExternalAIBindingRequestDatabricks, + ), + ); +} + +/** @internal */ +export const PutExternalAIBindingRequestProviderEnum$outboundSchema: z.ZodEnum< + typeof PutExternalAIBindingRequestProviderEnum +> = z.enum(PutExternalAIBindingRequestProviderEnum); + +/** @internal */ +export type PutExternalAIBindingRequest$Outbound = { + provider: string; + apiKey: string; + acknowledgeAlienCredentialAccess: boolean; +}; + +/** @internal */ +export const PutExternalAIBindingRequest$outboundSchema: z.ZodType< + PutExternalAIBindingRequest$Outbound, + PutExternalAIBindingRequest +> = z.object({ + provider: PutExternalAIBindingRequestProviderEnum$outboundSchema, + apiKey: z.string(), + acknowledgeAlienCredentialAccess: z.boolean(), +}); + +export function putExternalAIBindingRequestToJSON( + putExternalAIBindingRequest: PutExternalAIBindingRequest, +): string { + return JSON.stringify( + PutExternalAIBindingRequest$outboundSchema.parse( + putExternalAIBindingRequest, + ), + ); +} + +/** @internal */ +export type PutExternalAIBindingRequestUnion$Outbound = + | (PutExternalAIBindingRequest$Outbound & { provider: "anthropic" }) + | (PutExternalAIBindingRequest$Outbound & { provider: "openai" }) + | PutExternalAIBindingRequestDatabricks$Outbound; + +/** @internal */ +export const PutExternalAIBindingRequestUnion$outboundSchema: z.ZodType< + PutExternalAIBindingRequestUnion$Outbound, + PutExternalAIBindingRequestUnion +> = z.union([ + z.lazy(() => PutExternalAIBindingRequest$outboundSchema).and( + z.object({ provider: z.literal("anthropic") }), + ), + z.lazy(() => PutExternalAIBindingRequest$outboundSchema).and( + z.object({ provider: z.literal("openai") }), + ), + z.lazy(() => PutExternalAIBindingRequestDatabricks$outboundSchema), +]); + +export function putExternalAIBindingRequestUnionToJSON( + putExternalAIBindingRequestUnion: PutExternalAIBindingRequestUnion, +): string { + return JSON.stringify( + PutExternalAIBindingRequestUnion$outboundSchema.parse( + putExternalAIBindingRequestUnion, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/release.ts b/client-sdks/platform/typescript/src/models/release.ts index 77932caaf..ae37b8ee0 100644 --- a/client-sdks/platform/typescript/src/models/release.ts +++ b/client-sdks/platform/typescript/src/models/release.ts @@ -11,10 +11,16 @@ import { SetupFingerprintInfo, SetupFingerprintInfo$inboundSchema, } from "./setupfingerprintinfo.js"; -import { - StackByPlatform, - StackByPlatform$inboundSchema, -} from "./stackbyplatform.js"; + +export type ReleaseStack = { + aws?: any | null | undefined; + gcp?: any | null | undefined; + azure?: any | null | undefined; + kubernetes?: any | null | undefined; + machines?: any | null | undefined; + local?: any | null | undefined; + test?: any | null | undefined; +}; export type Release = { /** @@ -25,12 +31,38 @@ export type Release = { version: string; gitMetadata?: GitMetadata | null | undefined; createdAt: Date; - stack?: StackByPlatform | null | undefined; + stack?: ReleaseStack | null | undefined; setupFingerprints: { [k: string]: SetupFingerprintInfo }; rootDirectory?: string | null | undefined; + /** + * ID of the platform user who created the release, if known + */ + createdByUserId?: string | null | undefined; workspaceId: string; }; +/** @internal */ +export const ReleaseStack$inboundSchema: z.ZodType = z + .object({ + aws: z.nullable(z.any()).optional(), + gcp: z.nullable(z.any()).optional(), + azure: z.nullable(z.any()).optional(), + kubernetes: z.nullable(z.any()).optional(), + machines: z.nullable(z.any()).optional(), + local: z.nullable(z.any()).optional(), + test: z.nullable(z.any()).optional(), + }); + +export function releaseStackFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ReleaseStack$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ReleaseStack' from JSON`, + ); +} + /** @internal */ export const Release$inboundSchema: z.ZodType = z.object({ id: z.string(), @@ -38,9 +70,10 @@ export const Release$inboundSchema: z.ZodType = z.object({ version: z.string(), gitMetadata: z.nullable(GitMetadata$inboundSchema).optional(), createdAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), - stack: z.nullable(StackByPlatform$inboundSchema).optional(), + stack: z.nullable(z.lazy(() => ReleaseStack$inboundSchema)).optional(), setupFingerprints: z.record(z.string(), SetupFingerprintInfo$inboundSchema), rootDirectory: z.nullable(z.string()).optional(), + createdByUserId: z.nullable(z.string()).optional(), workspaceId: z.string(), }); diff --git a/client-sdks/platform/typescript/src/models/releasechannel.ts b/client-sdks/platform/typescript/src/models/releasechannel.ts new file mode 100644 index 000000000..ed028d769 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/releasechannel.ts @@ -0,0 +1,49 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +export type ReleaseChannel = { + /** + * Unique identifier for the workspace. + */ + workspaceId: string; + /** + * Unique identifier for the project. + */ + projectId: string; + name: string; + /** + * Unique identifier for the release. + */ + currentReleaseId: string | null; + deploymentCount?: number | undefined; + createdAt: Date; + updatedAt: Date; +}; + +/** @internal */ +export const ReleaseChannel$inboundSchema: z.ZodType = + z.object({ + workspaceId: z.string(), + projectId: z.string(), + name: z.string(), + currentReleaseId: z.nullable(z.string()), + deploymentCount: z.int().optional(), + createdAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), + updatedAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), + }); + +export function releaseChannelFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ReleaseChannel$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ReleaseChannel' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/releasedeploymentitem.ts b/client-sdks/platform/typescript/src/models/releasedeploymentitem.ts new file mode 100644 index 000000000..7f8bcae85 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/releasedeploymentitem.ts @@ -0,0 +1,656 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { ClosedEnum } from "../types/enums.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; +import { + ReleaseRolloutState, + ReleaseRolloutState$inboundSchema, +} from "./releaserolloutstate.js"; + +/** + * Deployment status in the deployment lifecycle. + * + * @remarks + * + * For observe-only deployments with no release or stack state, `Running` + * means the Operator is attached. Connectivity comes from `lastHeartbeatAt`; + * resource health comes from inventory and resource heartbeat data. + */ +export const ReleaseDeploymentItemStatus = { + Pending: "pending", + PreflightsFailed: "preflights-failed", + InitialSetup: "initial-setup", + InitialSetupFailed: "initial-setup-failed", + Provisioning: "provisioning", + WaitingForMachines: "waiting-for-machines", + ProvisioningFailed: "provisioning-failed", + Running: "running", + RefreshFailed: "refresh-failed", + UpdatePending: "update-pending", + Updating: "updating", + UpdateFailed: "update-failed", + DeletePending: "delete-pending", + Deleting: "deleting", + DeleteFailed: "delete-failed", + TeardownRequired: "teardown-required", + TeardownFailed: "teardown-failed", + Deleted: "deleted", + Error: "error", +} as const; +/** + * Deployment status in the deployment lifecycle. + * + * @remarks + * + * For observe-only deployments with no release or stack state, `Running` + * means the Operator is attached. Connectivity comes from `lastHeartbeatAt`; + * resource health comes from inventory and resource heartbeat data. + */ +export type ReleaseDeploymentItemStatus = ClosedEnum< + typeof ReleaseDeploymentItemStatus +>; + +/** + * Target platform for the deployment + */ +export const ReleaseDeploymentItemPlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Machines: "machines", + Local: "local", + Test: "test", +} as const; +/** + * Target platform for the deployment + */ +export type ReleaseDeploymentItemPlatform = ClosedEnum< + typeof ReleaseDeploymentItemPlatform +>; + +export const ReleaseDeploymentItemPlatformTest = { + Test: "test", +} as const; +export type ReleaseDeploymentItemPlatformTest = ClosedEnum< + typeof ReleaseDeploymentItemPlatformTest +>; + +/** + * Test platform environment information (mock) + */ +export type ReleaseDeploymentItemEnvironmentInfoTest = { + /** + * Test identifier for this environment + */ + testId: string; + platform: ReleaseDeploymentItemPlatformTest; +}; + +export const ReleaseDeploymentItemPlatformLocal = { + Local: "local", +} as const; +export type ReleaseDeploymentItemPlatformLocal = ClosedEnum< + typeof ReleaseDeploymentItemPlatformLocal +>; + +/** + * Local platform environment information + */ +export type ReleaseDeploymentItemEnvironmentInfoLocal = { + /** + * Architecture (e.g., "x86_64", "aarch64") + */ + arch: string; + /** + * Hostname of the machine running the deployment + */ + hostname: string; + /** + * Operating system (e.g., "linux", "macos", "windows") + */ + os: string; + platform: ReleaseDeploymentItemPlatformLocal; +}; + +export const ReleaseDeploymentItemPlatformAzure = { + Azure: "azure", +} as const; +export type ReleaseDeploymentItemPlatformAzure = ClosedEnum< + typeof ReleaseDeploymentItemPlatformAzure +>; + +/** + * Azure-specific environment information + */ +export type ReleaseDeploymentItemEnvironmentInfoAzure = { + /** + * Azure location/region + */ + location: string; + /** + * Azure subscription ID + */ + subscriptionId: string; + /** + * Azure tenant ID + */ + tenantId: string; + platform: ReleaseDeploymentItemPlatformAzure; +}; + +export const ReleaseDeploymentItemPlatformGcp = { + Gcp: "gcp", +} as const; +export type ReleaseDeploymentItemPlatformGcp = ClosedEnum< + typeof ReleaseDeploymentItemPlatformGcp +>; + +/** + * GCP-specific environment information + */ +export type ReleaseDeploymentItemEnvironmentInfoGcp = { + /** + * GCP project ID (e.g., "my-project") + */ + projectId: string; + /** + * GCP project number (e.g., "123456789012") + */ + projectNumber: string; + /** + * GCP region + */ + region: string; + platform: ReleaseDeploymentItemPlatformGcp; +}; + +export const ReleaseDeploymentItemPlatformAws = { + Aws: "aws", +} as const; +export type ReleaseDeploymentItemPlatformAws = ClosedEnum< + typeof ReleaseDeploymentItemPlatformAws +>; + +/** + * AWS-specific environment information + */ +export type ReleaseDeploymentItemEnvironmentInfoAws = { + /** + * AWS account ID + */ + accountId: string; + /** + * AWS region + */ + region: string; + platform: ReleaseDeploymentItemPlatformAws; +}; + +/** + * Cloud environment information + */ +export type ReleaseDeploymentItemEnvironmentInfoUnion = + | ReleaseDeploymentItemEnvironmentInfoGcp + | ReleaseDeploymentItemEnvironmentInfoAzure + | ReleaseDeploymentItemEnvironmentInfoLocal + | ReleaseDeploymentItemEnvironmentInfoAws + | ReleaseDeploymentItemEnvironmentInfoTest + | any; + +/** + * Deployment group this deployment belongs to + */ +export type ReleaseDeploymentItemDeploymentGroup = { + /** + * Unique identifier for the deployment group. + */ + id: string; + /** + * Deployment group name. + */ + name: string; + /** + * Case-sensitive, URL- and header-safe identifier from the integrating application. + */ + externalId: string | null; +}; + +/** + * Latest error information if the deployment is in a failed state + */ +export type ReleaseDeploymentItemError = { + /** + * A unique identifier for the type of error. + * + * @remarks + * + * This should be a short, machine-readable string that can be used + * by clients to programmatically handle different error types. + * Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" + */ + code: string; + /** + * Additional diagnostic information about the error context. + * + * @remarks + * + * This optional field can contain structured data providing more details + * about the error, such as validation errors, request parameters that + * caused the issue, or other relevant context information. + */ + context?: any | null | undefined; + /** + * Optional human-facing remediation hint. + */ + hint?: string | null | undefined; + /** + * HTTP status code for this error. + * + * @remarks + * + * Used when converting the error to an HTTP response. If None, falls back to + * the error type's default status code or 500. + */ + httpStatusCode?: number | null | undefined; + /** + * Indicates if this is an internal error that should not be exposed to users. + * + * @remarks + * + * When `true`, this error contains sensitive information or implementation + * details that should not be shown to end-users. Such errors should be + * logged for debugging but replaced with generic error messages in responses. + */ + internal: boolean; + /** + * Human-readable error message. + * + * @remarks + * + * This message should be clear and actionable for developers or end-users, + * providing context about what went wrong and potentially how to fix it. + */ + message: string; + /** + * Indicates whether the operation that caused the error should be retried. + * + * @remarks + * + * When `true`, the error is transient and the operation might succeed + * if attempted again. When `false`, retrying the same operation is + * unlikely to succeed without changes. + */ + retryable: boolean; + /** + * The underlying error that caused this error, creating an error chain. + * + * @remarks + * + * This allows for proper error propagation and debugging by maintaining + * the full context of how an error occurred through multiple layers + * of an application. + */ + source?: any | null | undefined; +}; + +export type ReleaseDeploymentItem = { + /** + * Unique identifier for the deployment. + */ + id: string; + name: string; + /** + * Deployment status in the deployment lifecycle. + * + * @remarks + * + * For observe-only deployments with no release or stack state, `Running` + * means the Operator is attached. Connectivity comes from `lastHeartbeatAt`; + * resource health comes from inventory and resource heartbeat data. + */ + status: ReleaseDeploymentItemStatus; + /** + * Target platform for the deployment + */ + platform: ReleaseDeploymentItemPlatform; + /** + * Cloud environment information + */ + environmentInfo?: + | ReleaseDeploymentItemEnvironmentInfoGcp + | ReleaseDeploymentItemEnvironmentInfoAzure + | ReleaseDeploymentItemEnvironmentInfoLocal + | ReleaseDeploymentItemEnvironmentInfoAws + | ReleaseDeploymentItemEnvironmentInfoTest + | any + | null + | undefined; + /** + * Deployment group this deployment belongs to + */ + deploymentGroup?: ReleaseDeploymentItemDeploymentGroup | null | undefined; + /** + * ID of the currently deployed release + */ + currentReleaseId?: string | null | undefined; + /** + * ID of the desired release + */ + desiredReleaseId?: string | null | undefined; + /** + * ID of the pinned release + */ + pinnedReleaseId?: string | null | undefined; + /** + * Timestamp of the last received heartbeat + */ + lastHeartbeatAt?: Date | null | undefined; + rolloutState: ReleaseRolloutState; + /** + * When this release went live on the deployment, null if it never did + */ + releasedAt: Date | null; + /** + * Time from release creation until the deployment finished updating, in milliseconds. Null for initial provisions and deployments that never ran this release. + */ + durationMs: number | null; + /** + * Latest error information if the deployment is in a failed state + */ + error?: ReleaseDeploymentItemError | null | undefined; +}; + +/** @internal */ +export const ReleaseDeploymentItemStatus$inboundSchema: z.ZodEnum< + typeof ReleaseDeploymentItemStatus +> = z.enum(ReleaseDeploymentItemStatus); + +/** @internal */ +export const ReleaseDeploymentItemPlatform$inboundSchema: z.ZodEnum< + typeof ReleaseDeploymentItemPlatform +> = z.enum(ReleaseDeploymentItemPlatform); + +/** @internal */ +export const ReleaseDeploymentItemPlatformTest$inboundSchema: z.ZodEnum< + typeof ReleaseDeploymentItemPlatformTest +> = z.enum(ReleaseDeploymentItemPlatformTest); + +/** @internal */ +export const ReleaseDeploymentItemEnvironmentInfoTest$inboundSchema: z.ZodType< + ReleaseDeploymentItemEnvironmentInfoTest, + unknown +> = z.object({ + testId: z.string(), + platform: ReleaseDeploymentItemPlatformTest$inboundSchema, +}); + +export function releaseDeploymentItemEnvironmentInfoTestFromJSON( + jsonString: string, +): SafeParseResult< + ReleaseDeploymentItemEnvironmentInfoTest, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + ReleaseDeploymentItemEnvironmentInfoTest$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'ReleaseDeploymentItemEnvironmentInfoTest' from JSON`, + ); +} + +/** @internal */ +export const ReleaseDeploymentItemPlatformLocal$inboundSchema: z.ZodEnum< + typeof ReleaseDeploymentItemPlatformLocal +> = z.enum(ReleaseDeploymentItemPlatformLocal); + +/** @internal */ +export const ReleaseDeploymentItemEnvironmentInfoLocal$inboundSchema: z.ZodType< + ReleaseDeploymentItemEnvironmentInfoLocal, + unknown +> = z.object({ + arch: z.string(), + hostname: z.string(), + os: z.string(), + platform: ReleaseDeploymentItemPlatformLocal$inboundSchema, +}); + +export function releaseDeploymentItemEnvironmentInfoLocalFromJSON( + jsonString: string, +): SafeParseResult< + ReleaseDeploymentItemEnvironmentInfoLocal, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + ReleaseDeploymentItemEnvironmentInfoLocal$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'ReleaseDeploymentItemEnvironmentInfoLocal' from JSON`, + ); +} + +/** @internal */ +export const ReleaseDeploymentItemPlatformAzure$inboundSchema: z.ZodEnum< + typeof ReleaseDeploymentItemPlatformAzure +> = z.enum(ReleaseDeploymentItemPlatformAzure); + +/** @internal */ +export const ReleaseDeploymentItemEnvironmentInfoAzure$inboundSchema: z.ZodType< + ReleaseDeploymentItemEnvironmentInfoAzure, + unknown +> = z.object({ + location: z.string(), + subscriptionId: z.string(), + tenantId: z.string(), + platform: ReleaseDeploymentItemPlatformAzure$inboundSchema, +}); + +export function releaseDeploymentItemEnvironmentInfoAzureFromJSON( + jsonString: string, +): SafeParseResult< + ReleaseDeploymentItemEnvironmentInfoAzure, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + ReleaseDeploymentItemEnvironmentInfoAzure$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'ReleaseDeploymentItemEnvironmentInfoAzure' from JSON`, + ); +} + +/** @internal */ +export const ReleaseDeploymentItemPlatformGcp$inboundSchema: z.ZodEnum< + typeof ReleaseDeploymentItemPlatformGcp +> = z.enum(ReleaseDeploymentItemPlatformGcp); + +/** @internal */ +export const ReleaseDeploymentItemEnvironmentInfoGcp$inboundSchema: z.ZodType< + ReleaseDeploymentItemEnvironmentInfoGcp, + unknown +> = z.object({ + projectId: z.string(), + projectNumber: z.string(), + region: z.string(), + platform: ReleaseDeploymentItemPlatformGcp$inboundSchema, +}); + +export function releaseDeploymentItemEnvironmentInfoGcpFromJSON( + jsonString: string, +): SafeParseResult< + ReleaseDeploymentItemEnvironmentInfoGcp, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + ReleaseDeploymentItemEnvironmentInfoGcp$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'ReleaseDeploymentItemEnvironmentInfoGcp' from JSON`, + ); +} + +/** @internal */ +export const ReleaseDeploymentItemPlatformAws$inboundSchema: z.ZodEnum< + typeof ReleaseDeploymentItemPlatformAws +> = z.enum(ReleaseDeploymentItemPlatformAws); + +/** @internal */ +export const ReleaseDeploymentItemEnvironmentInfoAws$inboundSchema: z.ZodType< + ReleaseDeploymentItemEnvironmentInfoAws, + unknown +> = z.object({ + accountId: z.string(), + region: z.string(), + platform: ReleaseDeploymentItemPlatformAws$inboundSchema, +}); + +export function releaseDeploymentItemEnvironmentInfoAwsFromJSON( + jsonString: string, +): SafeParseResult< + ReleaseDeploymentItemEnvironmentInfoAws, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + ReleaseDeploymentItemEnvironmentInfoAws$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'ReleaseDeploymentItemEnvironmentInfoAws' from JSON`, + ); +} + +/** @internal */ +export const ReleaseDeploymentItemEnvironmentInfoUnion$inboundSchema: z.ZodType< + ReleaseDeploymentItemEnvironmentInfoUnion, + unknown +> = z.union([ + z.lazy(() => ReleaseDeploymentItemEnvironmentInfoGcp$inboundSchema), + z.lazy(() => ReleaseDeploymentItemEnvironmentInfoAzure$inboundSchema), + z.lazy(() => ReleaseDeploymentItemEnvironmentInfoLocal$inboundSchema), + z.lazy(() => ReleaseDeploymentItemEnvironmentInfoAws$inboundSchema), + z.lazy(() => ReleaseDeploymentItemEnvironmentInfoTest$inboundSchema), + z.any(), +]); + +export function releaseDeploymentItemEnvironmentInfoUnionFromJSON( + jsonString: string, +): SafeParseResult< + ReleaseDeploymentItemEnvironmentInfoUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + ReleaseDeploymentItemEnvironmentInfoUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'ReleaseDeploymentItemEnvironmentInfoUnion' from JSON`, + ); +} + +/** @internal */ +export const ReleaseDeploymentItemDeploymentGroup$inboundSchema: z.ZodType< + ReleaseDeploymentItemDeploymentGroup, + unknown +> = z.object({ + id: z.string(), + name: z.string(), + externalId: z.nullable(z.string()), +}); + +export function releaseDeploymentItemDeploymentGroupFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ReleaseDeploymentItemDeploymentGroup$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ReleaseDeploymentItemDeploymentGroup' from JSON`, + ); +} + +/** @internal */ +export const ReleaseDeploymentItemError$inboundSchema: z.ZodType< + ReleaseDeploymentItemError, + unknown +> = z.object({ + code: z.string(), + context: z.nullable(z.any()).optional(), + hint: z.nullable(z.string()).optional(), + httpStatusCode: z.nullable(z.int()).optional(), + internal: z.boolean(), + message: z.string(), + retryable: z.boolean().default(false), + source: z.nullable(z.any()).optional(), +}); + +export function releaseDeploymentItemErrorFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ReleaseDeploymentItemError$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ReleaseDeploymentItemError' from JSON`, + ); +} + +/** @internal */ +export const ReleaseDeploymentItem$inboundSchema: z.ZodType< + ReleaseDeploymentItem, + unknown +> = z.object({ + id: z.string(), + name: z.string(), + status: ReleaseDeploymentItemStatus$inboundSchema, + platform: ReleaseDeploymentItemPlatform$inboundSchema, + environmentInfo: z.nullable( + z.union([ + z.lazy(() => ReleaseDeploymentItemEnvironmentInfoGcp$inboundSchema), + z.lazy(() => ReleaseDeploymentItemEnvironmentInfoAzure$inboundSchema), + z.lazy(() => ReleaseDeploymentItemEnvironmentInfoLocal$inboundSchema), + z.lazy(() => ReleaseDeploymentItemEnvironmentInfoAws$inboundSchema), + z.lazy(() => ReleaseDeploymentItemEnvironmentInfoTest$inboundSchema), + z.any(), + ]), + ).optional(), + deploymentGroup: z.nullable( + z.lazy(() => ReleaseDeploymentItemDeploymentGroup$inboundSchema), + ).optional(), + currentReleaseId: z.nullable(z.string()).optional(), + desiredReleaseId: z.nullable(z.string()).optional(), + pinnedReleaseId: z.nullable(z.string()).optional(), + lastHeartbeatAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ).optional(), + rolloutState: ReleaseRolloutState$inboundSchema, + releasedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + durationMs: z.nullable(z.int()), + error: z.nullable(z.lazy(() => ReleaseDeploymentItemError$inboundSchema)) + .optional(), +}); + +export function releaseDeploymentItemFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ReleaseDeploymentItem$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ReleaseDeploymentItem' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/releasedeploymentsresponse.ts b/client-sdks/platform/typescript/src/models/releasedeploymentsresponse.ts new file mode 100644 index 000000000..d2e2174cd --- /dev/null +++ b/client-sdks/platform/typescript/src/models/releasedeploymentsresponse.ts @@ -0,0 +1,51 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; +import { + ReleaseDeploymentItem, + ReleaseDeploymentItem$inboundSchema, +} from "./releasedeploymentitem.js"; +import { + ReleaseRolloutStateCounts, + ReleaseRolloutStateCounts$inboundSchema, +} from "./releaserolloutstatecounts.js"; + +export type ReleaseDeploymentsResponse = { + /** + * Items in this page + */ + items: Array; + /** + * Cursor for the next page, null if last page + */ + nextCursor: string | null; + /** + * Deployment counts per rollout state across all deployments the filters allow (ignores the state filter) + */ + stateCounts: ReleaseRolloutStateCounts; +}; + +/** @internal */ +export const ReleaseDeploymentsResponse$inboundSchema: z.ZodType< + ReleaseDeploymentsResponse, + unknown +> = z.object({ + items: z.array(ReleaseDeploymentItem$inboundSchema), + nextCursor: z.nullable(z.string()), + stateCounts: ReleaseRolloutStateCounts$inboundSchema, +}); + +export function releaseDeploymentsResponseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ReleaseDeploymentsResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ReleaseDeploymentsResponse' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/releaselistitemresponse.ts b/client-sdks/platform/typescript/src/models/releaselistitemresponse.ts index 5b66cd9c1..43766666b 100644 --- a/client-sdks/platform/typescript/src/models/releaselistitemresponse.ts +++ b/client-sdks/platform/typescript/src/models/releaselistitemresponse.ts @@ -11,10 +11,16 @@ import { SetupFingerprintInfo, SetupFingerprintInfo$inboundSchema, } from "./setupfingerprintinfo.js"; -import { - StackByPlatform, - StackByPlatform$inboundSchema, -} from "./stackbyplatform.js"; + +export type ReleaseListItemResponseStack = { + aws?: any | null | undefined; + gcp?: any | null | undefined; + azure?: any | null | undefined; + kubernetes?: any | null | undefined; + machines?: any | null | undefined; + local?: any | null | undefined; + test?: any | null | undefined; +}; /** * Project info, included when ?include=project is used @@ -30,6 +36,46 @@ export type ReleaseListItemResponseProject = { name: string; }; +/** + * Rollout stats, included when ?include=rollout is used + */ +export type Rollout = { + /** + * Deployments that finished updating to this release (excludes initial provisions) + */ + updatedCount: number; + /** + * Deployments currently targeting this release but not yet running it + */ + pendingCount: number; + /** + * Average time from release creation until a deployment finished updating, in milliseconds + */ + avgDurationMs: number | null; +}; + +/** + * Platform user who created the release, included when ?include=createdBy is used + */ +export type CreatedBy = { + /** + * User ID + */ + id: string; + /** + * User's display name + */ + name: string; + /** + * User's email address + */ + email: string; + /** + * User's avatar image URL + */ + image: string | null; +}; + export type ReleaseListItemResponse = { /** * Unique identifier for the release. @@ -39,16 +85,60 @@ export type ReleaseListItemResponse = { version: string; gitMetadata?: GitMetadata | null | undefined; createdAt: Date; - stack?: StackByPlatform | null | undefined; + stack?: ReleaseListItemResponseStack | null | undefined; setupFingerprints: { [k: string]: SetupFingerprintInfo }; rootDirectory?: string | null | undefined; + /** + * ID of the platform user who created the release, if known + */ + createdByUserId?: string | null | undefined; workspaceId: string; + /** + * Channels for which this release is currently selected + */ + currentChannels: Array; + /** + * Validated canonical provider URL for the exact commit + */ + commitUrl: string | null; /** * Project info, included when ?include=project is used */ project?: ReleaseListItemResponseProject | null | undefined; + /** + * Rollout stats, included when ?include=rollout is used + */ + rollout?: Rollout | null | undefined; + /** + * Platform user who created the release, included when ?include=createdBy is used + */ + createdBy?: CreatedBy | null | undefined; }; +/** @internal */ +export const ReleaseListItemResponseStack$inboundSchema: z.ZodType< + ReleaseListItemResponseStack, + unknown +> = z.object({ + aws: z.nullable(z.any()).optional(), + gcp: z.nullable(z.any()).optional(), + azure: z.nullable(z.any()).optional(), + kubernetes: z.nullable(z.any()).optional(), + machines: z.nullable(z.any()).optional(), + local: z.nullable(z.any()).optional(), + test: z.nullable(z.any()).optional(), +}); + +export function releaseListItemResponseStackFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ReleaseListItemResponseStack$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ReleaseListItemResponseStack' from JSON`, + ); +} + /** @internal */ export const ReleaseListItemResponseProject$inboundSchema: z.ZodType< ReleaseListItemResponseProject, @@ -68,6 +158,41 @@ export function releaseListItemResponseProjectFromJSON( ); } +/** @internal */ +export const Rollout$inboundSchema: z.ZodType = z.object({ + updatedCount: z.int(), + pendingCount: z.int(), + avgDurationMs: z.nullable(z.number()), +}); + +export function rolloutFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Rollout$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Rollout' from JSON`, + ); +} + +/** @internal */ +export const CreatedBy$inboundSchema: z.ZodType = z.object({ + id: z.string(), + name: z.string(), + email: z.string(), + image: z.nullable(z.string()), +}); + +export function createdByFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CreatedBy$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreatedBy' from JSON`, + ); +} + /** @internal */ export const ReleaseListItemResponse$inboundSchema: z.ZodType< ReleaseListItemResponse, @@ -78,13 +203,19 @@ export const ReleaseListItemResponse$inboundSchema: z.ZodType< version: z.string(), gitMetadata: z.nullable(GitMetadata$inboundSchema).optional(), createdAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), - stack: z.nullable(StackByPlatform$inboundSchema).optional(), + stack: z.nullable(z.lazy(() => ReleaseListItemResponseStack$inboundSchema)) + .optional(), setupFingerprints: z.record(z.string(), SetupFingerprintInfo$inboundSchema), rootDirectory: z.nullable(z.string()).optional(), + createdByUserId: z.nullable(z.string()).optional(), workspaceId: z.string(), + currentChannels: z.array(z.string()), + commitUrl: z.nullable(z.string()), project: z.nullable( z.lazy(() => ReleaseListItemResponseProject$inboundSchema), ).optional(), + rollout: z.nullable(z.lazy(() => Rollout$inboundSchema)).optional(), + createdBy: z.nullable(z.lazy(() => CreatedBy$inboundSchema)).optional(), }); export function releaseListItemResponseFromJSON( diff --git a/client-sdks/platform/typescript/src/models/releaserolloutstate.ts b/client-sdks/platform/typescript/src/models/releaserolloutstate.ts new file mode 100644 index 000000000..759b1dcc6 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/releaserolloutstate.ts @@ -0,0 +1,26 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { ClosedEnum } from "../types/enums.js"; + +export const ReleaseRolloutState = { + Updated: "updated", + Updating: "updating", + Failed: "failed", + Pending: "pending", + PinnedOther: "pinned-other", + Superseded: "superseded", + OnOther: "on-other", +} as const; +export type ReleaseRolloutState = ClosedEnum; + +/** @internal */ +export const ReleaseRolloutState$inboundSchema: z.ZodEnum< + typeof ReleaseRolloutState +> = z.enum(ReleaseRolloutState); +/** @internal */ +export const ReleaseRolloutState$outboundSchema: z.ZodEnum< + typeof ReleaseRolloutState +> = ReleaseRolloutState$inboundSchema; diff --git a/client-sdks/platform/typescript/src/models/releaserolloutstatecounts.ts b/client-sdks/platform/typescript/src/models/releaserolloutstatecounts.ts new file mode 100644 index 000000000..adc311bab --- /dev/null +++ b/client-sdks/platform/typescript/src/models/releaserolloutstatecounts.ts @@ -0,0 +1,51 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +/** + * Deployment counts per rollout state across all deployments the filters allow (ignores the state filter) + */ +export type ReleaseRolloutStateCounts = { + updated: number; + updating: number; + failed: number; + pending: number; + pinnedOther: number; + superseded: number; + onOther: number; +}; + +/** @internal */ +export const ReleaseRolloutStateCounts$inboundSchema: z.ZodType< + ReleaseRolloutStateCounts, + unknown +> = z.object({ + updated: z.int(), + updating: z.int(), + failed: z.int(), + pending: z.int(), + "pinned-other": z.int(), + superseded: z.int(), + "on-other": z.int(), +}).transform((v) => { + return remap$(v, { + "pinned-other": "pinnedOther", + "on-other": "onOther", + }); +}); + +export function releaseRolloutStateCountsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ReleaseRolloutStateCounts$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ReleaseRolloutStateCounts' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/remotebindingsexternalaccessrequest.ts b/client-sdks/platform/typescript/src/models/remotebindingsexternalaccessrequest.ts new file mode 100644 index 000000000..650f6b6a4 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/remotebindingsexternalaccessrequest.ts @@ -0,0 +1,52 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { ClosedEnum } from "../types/enums.js"; + +export const RemoteBindingsExternalAccessRequestCapability = { + Storage: "storage", +} as const; +export type RemoteBindingsExternalAccessRequestCapability = ClosedEnum< + typeof RemoteBindingsExternalAccessRequestCapability +>; + +export type RemoteBindingsExternalAccessRequest = { + /** + * Case-sensitive, URL- and header-safe identifier from the integrating application. + */ + externalId: string; + capability: RemoteBindingsExternalAccessRequestCapability; +}; + +/** @internal */ +export const RemoteBindingsExternalAccessRequestCapability$outboundSchema: + z.ZodEnum = z.enum( + RemoteBindingsExternalAccessRequestCapability, + ); + +/** @internal */ +export type RemoteBindingsExternalAccessRequest$Outbound = { + externalId: string; + capability: string; +}; + +/** @internal */ +export const RemoteBindingsExternalAccessRequest$outboundSchema: z.ZodType< + RemoteBindingsExternalAccessRequest$Outbound, + RemoteBindingsExternalAccessRequest +> = z.object({ + externalId: z.string(), + capability: RemoteBindingsExternalAccessRequestCapability$outboundSchema, +}); + +export function remoteBindingsExternalAccessRequestToJSON( + remoteBindingsExternalAccessRequest: RemoteBindingsExternalAccessRequest, +): string { + return JSON.stringify( + RemoteBindingsExternalAccessRequest$outboundSchema.parse( + remoteBindingsExternalAccessRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/remotebindingsexternalaccessresponse.ts b/client-sdks/platform/typescript/src/models/remotebindingsexternalaccessresponse.ts new file mode 100644 index 000000000..ef337392c --- /dev/null +++ b/client-sdks/platform/typescript/src/models/remotebindingsexternalaccessresponse.ts @@ -0,0 +1,58 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { ClosedEnum } from "../types/enums.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +export const RemoteBindingsExternalAccessResponseTokenType = { + Bearer: "Bearer", +} as const; +export type RemoteBindingsExternalAccessResponseTokenType = ClosedEnum< + typeof RemoteBindingsExternalAccessResponseTokenType +>; + +export type RemoteBindingsExternalAccessResponse = { + /** + * Unique identifier for the deployment. + */ + deploymentId: string; + resourceId: string; + accessToken: string; + expiresIn: number | null; + tokenType: RemoteBindingsExternalAccessResponseTokenType; + managerUrl: string; +}; + +/** @internal */ +export const RemoteBindingsExternalAccessResponseTokenType$inboundSchema: + z.ZodEnum = z.enum( + RemoteBindingsExternalAccessResponseTokenType, + ); + +/** @internal */ +export const RemoteBindingsExternalAccessResponse$inboundSchema: z.ZodType< + RemoteBindingsExternalAccessResponse, + unknown +> = z.object({ + deploymentId: z.string(), + resourceId: z.string(), + accessToken: z.string(), + expiresIn: z.nullable(z.number()), + tokenType: RemoteBindingsExternalAccessResponseTokenType$inboundSchema, + managerUrl: z.string(), +}); + +export function remoteBindingsExternalAccessResponseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + RemoteBindingsExternalAccessResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'RemoteBindingsExternalAccessResponse' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/renderoperatormanifestrequest.ts b/client-sdks/platform/typescript/src/models/renderoperatormanifestrequest.ts index c182d61dd..10b050103 100644 --- a/client-sdks/platform/typescript/src/models/renderoperatormanifestrequest.ts +++ b/client-sdks/platform/typescript/src/models/renderoperatormanifestrequest.ts @@ -22,14 +22,16 @@ export type RenderOperatorManifestRequestFormat = ClosedEnum< /** * namespace: a namespaced Role that manages the install namespace. cluster: a ClusterRole that manages every namespace. */ -export const ScopeEnum = { +export const RenderOperatorManifestRequestScope = { Namespace: "namespace", Cluster: "cluster", } as const; /** * namespace: a namespaced Role that manages the install namespace. cluster: a ClusterRole that manages every namespace. */ -export type ScopeEnum = ClosedEnum; +export type RenderOperatorManifestRequestScope = ClosedEnum< + typeof RenderOperatorManifestRequestScope +>; /** * Operator permission tier @@ -69,7 +71,7 @@ export type RenderOperatorManifestRequest = { /** * namespace: a namespaced Role that manages the install namespace. cluster: a ClusterRole that manages every namespace. */ - scope?: ScopeEnum | undefined; + scope?: RenderOperatorManifestRequestScope | undefined; /** * Optional Kubernetes label selector narrowing what is managed, applied within the scope. */ @@ -98,9 +100,9 @@ export const RenderOperatorManifestRequestFormat$outboundSchema: z.ZodEnum< > = z.enum(RenderOperatorManifestRequestFormat); /** @internal */ -export const ScopeEnum$outboundSchema: z.ZodEnum = z.enum( - ScopeEnum, -); +export const RenderOperatorManifestRequestScope$outboundSchema: z.ZodEnum< + typeof RenderOperatorManifestRequestScope +> = z.enum(RenderOperatorManifestRequestScope); /** @internal */ export const Permission$outboundSchema: z.ZodEnum = z.enum( @@ -147,7 +149,7 @@ export const RenderOperatorManifestRequest$outboundSchema: z.ZodType< format: RenderOperatorManifestRequestFormat$outboundSchema.default("raw"), environmentName: z.string().optional(), namespace: z.string().optional(), - scope: ScopeEnum$outboundSchema.default("namespace"), + scope: RenderOperatorManifestRequestScope$outboundSchema.default("namespace"), labelSelector: z.string().optional(), permission: Permission$outboundSchema.default("observe"), operatorImagePackageId: z.string().optional(), diff --git a/client-sdks/platform/typescript/src/models/setoperationspluginenabledrequest.ts b/client-sdks/platform/typescript/src/models/setoperationspluginenabledrequest.ts new file mode 100644 index 000000000..f1c0b6224 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/setoperationspluginenabledrequest.ts @@ -0,0 +1,35 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; + +export type SetOperationsPluginEnabledRequest = { + /** + * Whether the plugin should be baked into the operator image. + */ + enabled: boolean; +}; + +/** @internal */ +export type SetOperationsPluginEnabledRequest$Outbound = { + enabled: boolean; +}; + +/** @internal */ +export const SetOperationsPluginEnabledRequest$outboundSchema: z.ZodType< + SetOperationsPluginEnabledRequest$Outbound, + SetOperationsPluginEnabledRequest +> = z.object({ + enabled: z.boolean(), +}); + +export function setOperationsPluginEnabledRequestToJSON( + setOperationsPluginEnabledRequest: SetOperationsPluginEnabledRequest, +): string { + return JSON.stringify( + SetOperationsPluginEnabledRequest$outboundSchema.parse( + setOperationsPluginEnabledRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/setoperationspluginenabledresponse.ts b/client-sdks/platform/typescript/src/models/setoperationspluginenabledresponse.ts new file mode 100644 index 000000000..0ca7fb266 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/setoperationspluginenabledresponse.ts @@ -0,0 +1,35 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +export type SetOperationsPluginEnabledResponse = { + name: string; + builtin: boolean; + enabled: boolean; +}; + +/** @internal */ +export const SetOperationsPluginEnabledResponse$inboundSchema: z.ZodType< + SetOperationsPluginEnabledResponse, + unknown +> = z.object({ + name: z.string(), + builtin: z.boolean(), + enabled: z.boolean(), +}); + +export function setOperationsPluginEnabledResponseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SetOperationsPluginEnabledResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SetOperationsPluginEnabledResponse' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/setupitemstatus.ts b/client-sdks/platform/typescript/src/models/setupitemstatus.ts index f24e2eacd..5c363e176 100644 --- a/client-sdks/platform/typescript/src/models/setupitemstatus.ts +++ b/client-sdks/platform/typescript/src/models/setupitemstatus.ts @@ -9,15 +9,19 @@ import { Result as SafeParseResult } from "../types/fp.js"; import { SDKValidationError } from "./errors/sdkvalidationerror.js"; export const SetupItemStatusItem = { - AlienStack: "alien-stack", + Deployment: "deployment", Models: "models", Keys: "keys", + Bucket: "bucket", + Registry: "registry", } as const; export type SetupItemStatusItem = ClosedEnum; export const SetupItemStatusDefinitionId = { CustomerAi: "customer-ai", CustomerKey: "customer-key", + CustomerStorage: "customer-storage", + CustomerRegistry: "customer-registry", } as const; export type SetupItemStatusDefinitionId = ClosedEnum< typeof SetupItemStatusDefinitionId @@ -33,8 +37,8 @@ export type SetupItemStatusSourceBuiltIn = { sourceReleaseId: string; }; -export type SetupItemStatusSourceApplicationRelease = { - type: "application-release"; +export type SetupItemStatusSourceProjectRelease = { + type: "project-release"; releaseChannel: string; /** * Unique identifier for the release. @@ -44,7 +48,7 @@ export type SetupItemStatusSourceApplicationRelease = { }; export type SetupItemStatusSourceUnion = - | SetupItemStatusSourceApplicationRelease + | SetupItemStatusSourceProjectRelease | SetupItemStatusSourceBuiltIn; export const SetupItemStatusAllowedProvider = { @@ -52,6 +56,8 @@ export const SetupItemStatusAllowedProvider = { GcpVertex: "gcp-vertex", AzureFoundry: "azure-foundry", Anthropic: "anthropic", + Databricks: "databricks", + Openai: "openai", } as const; export type SetupItemStatusAllowedProvider = ClosedEnum< typeof SetupItemStatusAllowedProvider @@ -95,9 +101,7 @@ export type SetupItemStatusBlocker = { export type SetupItemStatus = { item: SetupItemStatusItem; - source: - | SetupItemStatusSourceApplicationRelease - | SetupItemStatusSourceBuiltIn; + source: SetupItemStatusSourceProjectRelease | SetupItemStatusSourceBuiltIn; required: boolean; configuration?: SetupItemStatusConfiguration | undefined; status: SetupItemStatusStatus; @@ -137,29 +141,24 @@ export function setupItemStatusSourceBuiltInFromJSON( } /** @internal */ -export const SetupItemStatusSourceApplicationRelease$inboundSchema: z.ZodType< - SetupItemStatusSourceApplicationRelease, +export const SetupItemStatusSourceProjectRelease$inboundSchema: z.ZodType< + SetupItemStatusSourceProjectRelease, unknown > = z.object({ - type: z.literal("application-release"), + type: z.literal("project-release"), releaseChannel: z.string(), releaseId: z.string(), resourceId: z.string().optional(), }); -export function setupItemStatusSourceApplicationReleaseFromJSON( +export function setupItemStatusSourceProjectReleaseFromJSON( jsonString: string, -): SafeParseResult< - SetupItemStatusSourceApplicationRelease, - SDKValidationError -> { +): SafeParseResult { return safeParse( jsonString, (x) => - SetupItemStatusSourceApplicationRelease$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SetupItemStatusSourceApplicationRelease' from JSON`, + SetupItemStatusSourceProjectRelease$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SetupItemStatusSourceProjectRelease' from JSON`, ); } @@ -168,7 +167,7 @@ export const SetupItemStatusSourceUnion$inboundSchema: z.ZodType< SetupItemStatusSourceUnion, unknown > = z.union([ - z.lazy(() => SetupItemStatusSourceApplicationRelease$inboundSchema), + z.lazy(() => SetupItemStatusSourceProjectRelease$inboundSchema), z.lazy(() => SetupItemStatusSourceBuiltIn$inboundSchema), ]); @@ -265,7 +264,7 @@ export const SetupItemStatus$inboundSchema: z.ZodType< > = z.object({ item: SetupItemStatusItem$inboundSchema, source: z.union([ - z.lazy(() => SetupItemStatusSourceApplicationRelease$inboundSchema), + z.lazy(() => SetupItemStatusSourceProjectRelease$inboundSchema), z.lazy(() => SetupItemStatusSourceBuiltIn$inboundSchema), ]), required: z.boolean(), diff --git a/client-sdks/platform/typescript/src/models/slackchannel.ts b/client-sdks/platform/typescript/src/models/slackchannel.ts new file mode 100644 index 000000000..ed7d566af --- /dev/null +++ b/client-sdks/platform/typescript/src/models/slackchannel.ts @@ -0,0 +1,32 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +export type SlackChannel = { + id: string; + name: string; + isMember: boolean; +}; + +/** @internal */ +export const SlackChannel$inboundSchema: z.ZodType = z + .object({ + id: z.string(), + name: z.string(), + isMember: z.boolean(), + }); + +export function slackChannelFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SlackChannel$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SlackChannel' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/slackchannelsresponse.ts b/client-sdks/platform/typescript/src/models/slackchannelsresponse.ts new file mode 100644 index 000000000..04ee9b4ad --- /dev/null +++ b/client-sdks/platform/typescript/src/models/slackchannelsresponse.ts @@ -0,0 +1,31 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; +import { SlackChannel, SlackChannel$inboundSchema } from "./slackchannel.js"; + +export type SlackChannelsResponse = { + channels: Array; +}; + +/** @internal */ +export const SlackChannelsResponse$inboundSchema: z.ZodType< + SlackChannelsResponse, + unknown +> = z.object({ + channels: z.array(SlackChannel$inboundSchema), +}); + +export function slackChannelsResponseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SlackChannelsResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SlackChannelsResponse' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/slackinstallurlresponse.ts b/client-sdks/platform/typescript/src/models/slackinstallurlresponse.ts new file mode 100644 index 000000000..8fee0e10f --- /dev/null +++ b/client-sdks/platform/typescript/src/models/slackinstallurlresponse.ts @@ -0,0 +1,30 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +export type SlackInstallUrlResponse = { + url: string; +}; + +/** @internal */ +export const SlackInstallUrlResponse$inboundSchema: z.ZodType< + SlackInstallUrlResponse, + unknown +> = z.object({ + url: z.string(), +}); + +export function slackInstallUrlResponseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SlackInstallUrlResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SlackInstallUrlResponse' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/slackintegrationstatus.ts b/client-sdks/platform/typescript/src/models/slackintegrationstatus.ts new file mode 100644 index 000000000..6126e773f --- /dev/null +++ b/client-sdks/platform/typescript/src/models/slackintegrationstatus.ts @@ -0,0 +1,40 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +export type SlackIntegrationStatus = { + connected: boolean; + slackTeamId: string | null; + slackTeamName: string | null; + installedByUserId: string | null; + installedAt: string | null; + notificationChannelId: string | null; +}; + +/** @internal */ +export const SlackIntegrationStatus$inboundSchema: z.ZodType< + SlackIntegrationStatus, + unknown +> = z.object({ + connected: z.boolean(), + slackTeamId: z.nullable(z.string()), + slackTeamName: z.nullable(z.string()), + installedByUserId: z.nullable(z.string()), + installedAt: z.nullable(z.string()), + notificationChannelId: z.nullable(z.string()), +}); + +export function slackIntegrationStatusFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SlackIntegrationStatus$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SlackIntegrationStatus' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/slacknotificationchannelrequest.ts b/client-sdks/platform/typescript/src/models/slacknotificationchannelrequest.ts new file mode 100644 index 000000000..8d675d3b2 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/slacknotificationchannelrequest.ts @@ -0,0 +1,32 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; + +export type SlackNotificationChannelRequest = { + channelId: string | null; +}; + +/** @internal */ +export type SlackNotificationChannelRequest$Outbound = { + channelId: string | null; +}; + +/** @internal */ +export const SlackNotificationChannelRequest$outboundSchema: z.ZodType< + SlackNotificationChannelRequest$Outbound, + SlackNotificationChannelRequest +> = z.object({ + channelId: z.nullable(z.string()), +}); + +export function slackNotificationChannelRequestToJSON( + slackNotificationChannelRequest: SlackNotificationChannelRequest, +): string { + return JSON.stringify( + SlackNotificationChannelRequest$outboundSchema.parse( + slackNotificationChannelRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/slacknotificationchannelresponse.ts b/client-sdks/platform/typescript/src/models/slacknotificationchannelresponse.ts new file mode 100644 index 000000000..78a07f0d1 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/slacknotificationchannelresponse.ts @@ -0,0 +1,32 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +export type SlackNotificationChannelResponse = { + notificationChannelId: string | null; + warning: string | null; +}; + +/** @internal */ +export const SlackNotificationChannelResponse$inboundSchema: z.ZodType< + SlackNotificationChannelResponse, + unknown +> = z.object({ + notificationChannelId: z.nullable(z.string()), + warning: z.nullable(z.string()), +}); + +export function slackNotificationChannelResponseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SlackNotificationChannelResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SlackNotificationChannelResponse' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/stackbyplatform.ts b/client-sdks/platform/typescript/src/models/stackbyplatform.ts index 23ade349b..4b6448bcf 100644 --- a/client-sdks/platform/typescript/src/models/stackbyplatform.ts +++ b/client-sdks/platform/typescript/src/models/stackbyplatform.ts @@ -3,9 +3,6 @@ */ import * as z from "zod/v4"; -import { safeParse } from "../lib/schemas.js"; -import { Result as SafeParseResult } from "../types/fp.js"; -import { SDKValidationError } from "./errors/sdkvalidationerror.js"; export type StackByPlatform = { aws?: any | null | undefined; @@ -17,19 +14,6 @@ export type StackByPlatform = { test?: any | null | undefined; }; -/** @internal */ -export const StackByPlatform$inboundSchema: z.ZodType< - StackByPlatform, - unknown -> = z.object({ - aws: z.nullable(z.any()).optional(), - gcp: z.nullable(z.any()).optional(), - azure: z.nullable(z.any()).optional(), - kubernetes: z.nullable(z.any()).optional(), - machines: z.nullable(z.any()).optional(), - local: z.nullable(z.any()).optional(), - test: z.nullable(z.any()).optional(), -}); /** @internal */ export type StackByPlatform$Outbound = { aws?: any | null | undefined; @@ -60,12 +44,3 @@ export function stackByPlatformToJSON( ): string { return JSON.stringify(StackByPlatform$outboundSchema.parse(stackByPlatform)); } -export function stackByPlatformFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => StackByPlatform$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'StackByPlatform' from JSON`, - ); -} diff --git a/client-sdks/platform/typescript/src/models/syncacquireresponse.ts b/client-sdks/platform/typescript/src/models/syncacquireresponse.ts index 9bcb2ad3f..4779e3142 100644 --- a/client-sdks/platform/typescript/src/models/syncacquireresponse.ts +++ b/client-sdks/platform/typescript/src/models/syncacquireresponse.ts @@ -36,6 +36,10 @@ export type SyncAcquireResponse = { * List of deployments that failed during context building (locks already released) */ failures: Array; + /** + * When the provisional leases on the returned deployments lapse. Confirm them with sync/renew before starting work. Null when nothing was acquired. + */ + leaseExpiresAt: Date | null; }; /** @internal */ @@ -62,6 +66,9 @@ export const SyncAcquireResponse$inboundSchema: z.ZodType< > = z.object({ deployments: z.array(SyncAcquireResponseDeployment$inboundSchema), failures: z.array(z.lazy(() => Failure$inboundSchema)), + leaseExpiresAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), }); export function syncAcquireResponseFromJSON( diff --git a/client-sdks/platform/typescript/src/models/syncacquireresponsedeployment.ts b/client-sdks/platform/typescript/src/models/syncacquireresponsedeployment.ts index f7d4bd94d..182c41976 100644 --- a/client-sdks/platform/typescript/src/models/syncacquireresponsedeployment.ts +++ b/client-sdks/platform/typescript/src/models/syncacquireresponsedeployment.ts @@ -1502,6 +1502,17 @@ export type SyncAcquireResponseDeploymentCurrentReleaseResources = { * The total dependencies are: resource.get_dependencies() + this list */ dependencies: Array; + /** + * Id of the boolean stack input that decides whether this resource is + * + * @remarks + * 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. + */ + enabledWhen?: string | null | undefined; /** * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ @@ -1839,94 +1850,115 @@ export type SyncAcquireResponseDeploymentCurrentPlatform = ClosedEnum< typeof SyncAcquireResponseDeploymentCurrentPlatform >; -export const SyncAcquireResponseDeploymentPreparedStackTypeStringList = { +/** + * Actor that owns structural work during the initial setup phase. + */ +export const SyncAcquireResponseDeploymentInitialSetupAuthority = { + ImportedHandoff: "importedHandoff", + DirectSetup: "directSetup", +} as const; +/** + * Actor that owns structural work during the initial setup phase. + */ +export type SyncAcquireResponseDeploymentInitialSetupAuthority = ClosedEnum< + typeof SyncAcquireResponseDeploymentInitialSetupAuthority +>; + +export const SyncAcquireResponseDeploymentPendingPreparedStackTypeStringList = { StringList: "stringList", } as const; -export type SyncAcquireResponseDeploymentPreparedStackTypeStringList = - ClosedEnum; +export type SyncAcquireResponseDeploymentPendingPreparedStackTypeStringList = + ClosedEnum< + typeof SyncAcquireResponseDeploymentPendingPreparedStackTypeStringList + >; -export type SyncAcquireResponseDeploymentPreparedStackDefaultStringList = { - type: SyncAcquireResponseDeploymentPreparedStackTypeStringList; - /** - * String list default. - */ - value: Array; -}; +export type SyncAcquireResponseDeploymentPendingPreparedStackDefaultStringList = + { + type: SyncAcquireResponseDeploymentPendingPreparedStackTypeStringList; + /** + * String list default. + */ + value: Array; + }; -export const SyncAcquireResponseDeploymentPreparedStackTypeBoolean = { +export const SyncAcquireResponseDeploymentPendingPreparedStackTypeBoolean = { Boolean: "boolean", } as const; -export type SyncAcquireResponseDeploymentPreparedStackTypeBoolean = ClosedEnum< - typeof SyncAcquireResponseDeploymentPreparedStackTypeBoolean ->; +export type SyncAcquireResponseDeploymentPendingPreparedStackTypeBoolean = + ClosedEnum< + typeof SyncAcquireResponseDeploymentPendingPreparedStackTypeBoolean + >; -export type SyncAcquireResponseDeploymentPreparedStackDefaultBoolean = { - type: SyncAcquireResponseDeploymentPreparedStackTypeBoolean; +export type SyncAcquireResponseDeploymentPendingPreparedStackDefaultBoolean = { + type: SyncAcquireResponseDeploymentPendingPreparedStackTypeBoolean; /** * Boolean default. */ value: boolean; }; -export const SyncAcquireResponseDeploymentPreparedStackTypeNumber = { +export const SyncAcquireResponseDeploymentPendingPreparedStackTypeNumber = { Number: "number", } as const; -export type SyncAcquireResponseDeploymentPreparedStackTypeNumber = ClosedEnum< - typeof SyncAcquireResponseDeploymentPreparedStackTypeNumber ->; +export type SyncAcquireResponseDeploymentPendingPreparedStackTypeNumber = + ClosedEnum< + typeof SyncAcquireResponseDeploymentPendingPreparedStackTypeNumber + >; -export type SyncAcquireResponseDeploymentPreparedStackDefaultNumber = { - type: SyncAcquireResponseDeploymentPreparedStackTypeNumber; +export type SyncAcquireResponseDeploymentPendingPreparedStackDefaultNumber = { + type: SyncAcquireResponseDeploymentPendingPreparedStackTypeNumber; /** * Number default. */ value: string; }; -export const SyncAcquireResponseDeploymentPreparedStackTypeString = { +export const SyncAcquireResponseDeploymentPendingPreparedStackTypeString = { String: "string", } as const; -export type SyncAcquireResponseDeploymentPreparedStackTypeString = ClosedEnum< - typeof SyncAcquireResponseDeploymentPreparedStackTypeString ->; +export type SyncAcquireResponseDeploymentPendingPreparedStackTypeString = + ClosedEnum< + typeof SyncAcquireResponseDeploymentPendingPreparedStackTypeString + >; -export type SyncAcquireResponseDeploymentPreparedStackDefaultString = { - type: SyncAcquireResponseDeploymentPreparedStackTypeString; +export type SyncAcquireResponseDeploymentPendingPreparedStackDefaultString = { + type: SyncAcquireResponseDeploymentPendingPreparedStackTypeString; /** * String default. */ value: string; }; -export type SyncAcquireResponseDeploymentPreparedStackDefaultUnion = - | SyncAcquireResponseDeploymentPreparedStackDefaultString - | SyncAcquireResponseDeploymentPreparedStackDefaultNumber - | SyncAcquireResponseDeploymentPreparedStackDefaultBoolean - | SyncAcquireResponseDeploymentPreparedStackDefaultStringList +export type SyncAcquireResponseDeploymentPendingPreparedStackDefaultUnion = + | SyncAcquireResponseDeploymentPendingPreparedStackDefaultString + | SyncAcquireResponseDeploymentPendingPreparedStackDefaultNumber + | SyncAcquireResponseDeploymentPendingPreparedStackDefaultBoolean + | SyncAcquireResponseDeploymentPendingPreparedStackDefaultStringList | any; /** * Environment variable handling for a stack input mapping. */ -export const SyncAcquireResponseDeploymentPreparedStackTypeEnvEnum = { +export const SyncAcquireResponseDeploymentPendingPreparedStackTypeEnvEnum = { Plain: "plain", Secret: "secret", } as const; /** * Environment variable handling for a stack input mapping. */ -export type SyncAcquireResponseDeploymentPreparedStackTypeEnvEnum = ClosedEnum< - typeof SyncAcquireResponseDeploymentPreparedStackTypeEnvEnum ->; +export type SyncAcquireResponseDeploymentPendingPreparedStackTypeEnvEnum = + ClosedEnum< + typeof SyncAcquireResponseDeploymentPendingPreparedStackTypeEnvEnum + >; -export type SyncAcquireResponseDeploymentPreparedStackTypeUnion = - | SyncAcquireResponseDeploymentPreparedStackTypeEnvEnum +export type SyncAcquireResponseDeploymentPendingPreparedStackTypeUnion = + | SyncAcquireResponseDeploymentPendingPreparedStackTypeEnvEnum | any; /** * How a resolved stack input is injected into runtime environment variables. */ -export type SyncAcquireResponseDeploymentPreparedStackEnv = { +export type SyncAcquireResponseDeploymentPendingPreparedStackEnv = { /** * Environment variable name. */ @@ -1936,7 +1968,7 @@ export type SyncAcquireResponseDeploymentPreparedStackEnv = { */ targetResources?: Array | null | undefined; type?: - | SyncAcquireResponseDeploymentPreparedStackTypeEnvEnum + | SyncAcquireResponseDeploymentPendingPreparedStackTypeEnvEnum | any | null | undefined; @@ -1945,7 +1977,7 @@ export type SyncAcquireResponseDeploymentPreparedStackEnv = { /** * Primitive stack input kind. */ -export const SyncAcquireResponseDeploymentPreparedStackKind = { +export const SyncAcquireResponseDeploymentPendingPreparedStackKind = { String: "string", Secret: "secret", Number: "number", @@ -1957,14 +1989,14 @@ export const SyncAcquireResponseDeploymentPreparedStackKind = { /** * Primitive stack input kind. */ -export type SyncAcquireResponseDeploymentPreparedStackKind = ClosedEnum< - typeof SyncAcquireResponseDeploymentPreparedStackKind +export type SyncAcquireResponseDeploymentPendingPreparedStackKind = ClosedEnum< + typeof SyncAcquireResponseDeploymentPendingPreparedStackKind >; /** * Represents the target cloud platform. */ -export const SyncAcquireResponseDeploymentPreparedStackPlatform = { +export const SyncAcquireResponseDeploymentPendingPreparedStackPlatform = { Aws: "aws", Gcp: "gcp", Azure: "azure", @@ -1976,28 +2008,28 @@ export const SyncAcquireResponseDeploymentPreparedStackPlatform = { /** * Represents the target cloud platform. */ -export type SyncAcquireResponseDeploymentPreparedStackPlatform = ClosedEnum< - typeof SyncAcquireResponseDeploymentPreparedStackPlatform ->; +export type SyncAcquireResponseDeploymentPendingPreparedStackPlatform = + ClosedEnum; /** * Who can provide a stack input value. */ -export const SyncAcquireResponseDeploymentPreparedStackProvidedBy = { +export const SyncAcquireResponseDeploymentPendingPreparedStackProvidedBy = { Developer: "developer", Deployer: "deployer", } as const; /** * Who can provide a stack input value. */ -export type SyncAcquireResponseDeploymentPreparedStackProvidedBy = ClosedEnum< - typeof SyncAcquireResponseDeploymentPreparedStackProvidedBy ->; +export type SyncAcquireResponseDeploymentPendingPreparedStackProvidedBy = + ClosedEnum< + typeof SyncAcquireResponseDeploymentPendingPreparedStackProvidedBy + >; /** * Portable stack input validation constraints. */ -export type SyncAcquireResponseDeploymentPreparedStackValidation = { +export type SyncAcquireResponseDeploymentPendingPreparedStackValidation = { /** * Semantic format hint such as url. */ @@ -2036,19 +2068,19 @@ export type SyncAcquireResponseDeploymentPreparedStackValidation = { values?: Array | null | undefined; }; -export type SyncAcquireResponseDeploymentPreparedStackValidationUnion = - | SyncAcquireResponseDeploymentPreparedStackValidation +export type SyncAcquireResponseDeploymentPendingPreparedStackValidationUnion = + | SyncAcquireResponseDeploymentPendingPreparedStackValidation | any; /** * Stack input definition serialized into a release stack. */ -export type SyncAcquireResponseDeploymentPreparedStackInput = { +export type SyncAcquireResponseDeploymentPendingPreparedStackInput = { default?: - | SyncAcquireResponseDeploymentPreparedStackDefaultString - | SyncAcquireResponseDeploymentPreparedStackDefaultNumber - | SyncAcquireResponseDeploymentPreparedStackDefaultBoolean - | SyncAcquireResponseDeploymentPreparedStackDefaultStringList + | SyncAcquireResponseDeploymentPendingPreparedStackDefaultString + | SyncAcquireResponseDeploymentPendingPreparedStackDefaultNumber + | SyncAcquireResponseDeploymentPendingPreparedStackDefaultBoolean + | SyncAcquireResponseDeploymentPendingPreparedStackDefaultStringList | any | null | undefined; @@ -2059,7 +2091,7 @@ export type SyncAcquireResponseDeploymentPreparedStackInput = { /** * Runtime env-var mappings for v1 input resolution. */ - env?: Array | undefined; + env?: Array | undefined; /** * Stable input ID used by CLI/API calls. */ @@ -2067,7 +2099,7 @@ export type SyncAcquireResponseDeploymentPreparedStackInput = { /** * Primitive stack input kind. */ - kind: SyncAcquireResponseDeploymentPreparedStackKind; + kind: SyncAcquireResponseDeploymentPendingPreparedStackKind; /** * Human-facing field label. */ @@ -2080,48 +2112,53 @@ export type SyncAcquireResponseDeploymentPreparedStackInput = { * Platforms where this input applies. */ platforms?: - | Array + | Array | null | undefined; /** * Who can provide this value. */ - providedBy: Array; + providedBy: Array< + SyncAcquireResponseDeploymentPendingPreparedStackProvidedBy + >; /** * Whether a resolved value is required before deployment can proceed. */ required: boolean; validation?: - | SyncAcquireResponseDeploymentPreparedStackValidation + | SyncAcquireResponseDeploymentPendingPreparedStackValidation | any | null | undefined; }; -export const SyncAcquireResponseDeploymentPreparedStackManagementEnum = { +export const SyncAcquireResponseDeploymentPendingPreparedStackManagementEnum = { Auto: "auto", } as const; -export type SyncAcquireResponseDeploymentPreparedStackManagementEnum = - ClosedEnum; +export type SyncAcquireResponseDeploymentPendingPreparedStackManagementEnum = + ClosedEnum< + typeof SyncAcquireResponseDeploymentPendingPreparedStackManagementEnum + >; /** * AWS-specific binding specification */ -export type SyncAcquireResponseDeploymentPreparedStackOverrideAwResource = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; +export type SyncAcquireResponseDeploymentPendingPreparedStackOverrideAwResource = + { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; + }; /** * AWS-specific binding specification */ -export type SyncAcquireResponseDeploymentPreparedStackOverrideAwStack = { +export type SyncAcquireResponseDeploymentPendingPreparedStackOverrideAwStack = { /** * Optional condition for additional filtering (rare) */ @@ -2135,36 +2172,41 @@ export type SyncAcquireResponseDeploymentPreparedStackOverrideAwStack = { /** * Generic binding configuration for permissions */ -export type SyncAcquireResponseDeploymentPreparedStackOverrideAwBinding = { - /** - * AWS-specific binding specification - */ - resource?: - | SyncAcquireResponseDeploymentPreparedStackOverrideAwResource - | undefined; - /** - * AWS-specific binding specification - */ - stack?: SyncAcquireResponseDeploymentPreparedStackOverrideAwStack | undefined; -}; +export type SyncAcquireResponseDeploymentPendingPreparedStackOverrideAwBinding = + { + /** + * AWS-specific binding specification + */ + resource?: + | SyncAcquireResponseDeploymentPendingPreparedStackOverrideAwResource + | undefined; + /** + * AWS-specific binding specification + */ + stack?: + | SyncAcquireResponseDeploymentPendingPreparedStackOverrideAwStack + | undefined; + }; /** * IAM effect. Defaults to Allow. */ -export const SyncAcquireResponseDeploymentPreparedStackOverrideEffect = { +export const SyncAcquireResponseDeploymentPendingPreparedStackOverrideEffect = { Allow: "Allow", Deny: "Deny", } as const; /** * IAM effect. Defaults to Allow. */ -export type SyncAcquireResponseDeploymentPreparedStackOverrideEffect = - ClosedEnum; +export type SyncAcquireResponseDeploymentPendingPreparedStackOverrideEffect = + ClosedEnum< + typeof SyncAcquireResponseDeploymentPendingPreparedStackOverrideEffect + >; /** * Grant permissions for a specific cloud platform */ -export type SyncAcquireResponseDeploymentPreparedStackOverrideAwGrant = { +export type SyncAcquireResponseDeploymentPendingPreparedStackOverrideAwGrant = { /** * AWS IAM actions (only for AWS) */ @@ -2190,11 +2232,11 @@ export type SyncAcquireResponseDeploymentPreparedStackOverrideAwGrant = { /** * AWS-specific platform permission configuration */ -export type SyncAcquireResponseDeploymentPreparedStackOverrideAw = { +export type SyncAcquireResponseDeploymentPendingPreparedStackOverrideAw = { /** * Generic binding configuration for permissions */ - binding: SyncAcquireResponseDeploymentPreparedStackOverrideAwBinding; + binding: SyncAcquireResponseDeploymentPendingPreparedStackOverrideAwBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2202,11 +2244,13 @@ export type SyncAcquireResponseDeploymentPreparedStackOverrideAw = { /** * IAM effect. Defaults to Allow. */ - effect?: SyncAcquireResponseDeploymentPreparedStackOverrideEffect | undefined; + effect?: + | SyncAcquireResponseDeploymentPendingPreparedStackOverrideEffect + | undefined; /** * Grant permissions for a specific cloud platform */ - grant: SyncAcquireResponseDeploymentPreparedStackOverrideAwGrant; + grant: SyncAcquireResponseDeploymentPendingPreparedStackOverrideAwGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2216,75 +2260,80 @@ export type SyncAcquireResponseDeploymentPreparedStackOverrideAw = { /** * Azure-specific binding specification */ -export type SyncAcquireResponseDeploymentPreparedStackOverrideAzureResource = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; +export type SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzureResource = + { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; + }; /** * Azure-specific binding specification */ -export type SyncAcquireResponseDeploymentPreparedStackOverrideAzureStack = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; +export type SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzureStack = + { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; + }; /** * Generic binding configuration for permissions */ -export type SyncAcquireResponseDeploymentPreparedStackOverrideAzureBinding = { - /** - * Azure-specific binding specification - */ - resource?: - | SyncAcquireResponseDeploymentPreparedStackOverrideAzureResource - | undefined; - /** - * Azure-specific binding specification - */ - stack?: - | SyncAcquireResponseDeploymentPreparedStackOverrideAzureStack - | undefined; -}; +export type SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzureBinding = + { + /** + * Azure-specific binding specification + */ + resource?: + | SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzureResource + | undefined; + /** + * Azure-specific binding specification + */ + stack?: + | SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzureStack + | undefined; + }; /** * Grant permissions for a specific cloud platform */ -export type SyncAcquireResponseDeploymentPreparedStackOverrideAzureGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; +export type SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzureGrant = + { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; + }; /** * Azure-specific platform permission configuration */ -export type SyncAcquireResponseDeploymentPreparedStackOverrideAzure = { +export type SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzure = { /** * Generic binding configuration for permissions */ - binding: SyncAcquireResponseDeploymentPreparedStackOverrideAzureBinding; + binding: + SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzureBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2292,7 +2341,7 @@ export type SyncAcquireResponseDeploymentPreparedStackOverrideAzure = { /** * Grant permissions for a specific cloud platform */ - grant: SyncAcquireResponseDeploymentPreparedStackOverrideAzureGrant; + grant: SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzureGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2302,110 +2351,115 @@ export type SyncAcquireResponseDeploymentPreparedStackOverrideAzure = { /** * GCP IAM condition */ -export type SyncAcquireResponseDeploymentPreparedStackOverrideConditionResource = +export type SyncAcquireResponseDeploymentPendingPreparedStackOverrideConditionResource = { expression: string; title: string; }; -export type SyncAcquireResponseDeploymentPreparedStackOverrideResourceConditionUnion = - | SyncAcquireResponseDeploymentPreparedStackOverrideConditionResource +export type SyncAcquireResponseDeploymentPendingPreparedStackOverrideResourceConditionUnion = + | SyncAcquireResponseDeploymentPendingPreparedStackOverrideConditionResource | any; /** * GCP-specific binding specification */ -export type SyncAcquireResponseDeploymentPreparedStackOverrideGcpResource = { - condition?: - | SyncAcquireResponseDeploymentPreparedStackOverrideConditionResource - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; +export type SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcpResource = + { + condition?: + | SyncAcquireResponseDeploymentPendingPreparedStackOverrideConditionResource + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; + }; /** * GCP IAM condition */ -export type SyncAcquireResponseDeploymentPreparedStackOverrideConditionStack = { - expression: string; - title: string; -}; +export type SyncAcquireResponseDeploymentPendingPreparedStackOverrideConditionStack = + { + expression: string; + title: string; + }; -export type SyncAcquireResponseDeploymentPreparedStackOverrideStackConditionUnion = - | SyncAcquireResponseDeploymentPreparedStackOverrideConditionStack +export type SyncAcquireResponseDeploymentPendingPreparedStackOverrideStackConditionUnion = + | SyncAcquireResponseDeploymentPendingPreparedStackOverrideConditionStack | any; /** * GCP-specific binding specification */ -export type SyncAcquireResponseDeploymentPreparedStackOverrideGcpStack = { - condition?: - | SyncAcquireResponseDeploymentPreparedStackOverrideConditionStack - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; +export type SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcpStack = + { + condition?: + | SyncAcquireResponseDeploymentPendingPreparedStackOverrideConditionStack + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; + }; /** * Generic binding configuration for permissions */ -export type SyncAcquireResponseDeploymentPreparedStackOverrideGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: - | SyncAcquireResponseDeploymentPreparedStackOverrideGcpResource - | undefined; - /** - * GCP-specific binding specification - */ - stack?: - | SyncAcquireResponseDeploymentPreparedStackOverrideGcpStack - | undefined; -}; +export type SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcpBinding = + { + /** + * GCP-specific binding specification + */ + resource?: + | SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcpResource + | undefined; + /** + * GCP-specific binding specification + */ + stack?: + | SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcpStack + | undefined; + }; /** * Grant permissions for a specific cloud platform */ -export type SyncAcquireResponseDeploymentPreparedStackOverrideGcpGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; +export type SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcpGrant = + { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; + }; /** * GCP-specific platform permission configuration */ -export type SyncAcquireResponseDeploymentPreparedStackOverrideGcp = { +export type SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcp = { /** * Generic binding configuration for permissions */ - binding: SyncAcquireResponseDeploymentPreparedStackOverrideGcpBinding; + binding: SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcpBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2413,7 +2467,7 @@ export type SyncAcquireResponseDeploymentPreparedStackOverrideGcp = { /** * Grant permissions for a specific cloud platform */ - grant: SyncAcquireResponseDeploymentPreparedStackOverrideGcpGrant; + grant: SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcpGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2423,34 +2477,35 @@ export type SyncAcquireResponseDeploymentPreparedStackOverrideGcp = { /** * Platform-specific permission configurations */ -export type SyncAcquireResponseDeploymentPreparedStackOverridePlatforms = { - /** - * AWS permission configurations - */ - aws?: - | Array - | null - | undefined; - /** - * Azure permission configurations - */ - azure?: - | Array - | null - | undefined; - /** - * GCP permission configurations - */ - gcp?: - | Array - | null - | undefined; -}; +export type SyncAcquireResponseDeploymentPendingPreparedStackOverridePlatforms = + { + /** + * AWS permission configurations + */ + aws?: + | Array + | null + | undefined; + /** + * Azure permission configurations + */ + azure?: + | Array + | null + | undefined; + /** + * GCP permission configurations + */ + gcp?: + | Array + | null + | undefined; + }; /** * A permission set that can be applied across different cloud platforms */ -export type SyncAcquireResponseDeploymentPreparedStackOverride = { +export type SyncAcquireResponseDeploymentPendingPreparedStackOverride = { /** * Human-readable description of what this permission set allows */ @@ -2462,17 +2517,17 @@ export type SyncAcquireResponseDeploymentPreparedStackOverride = { /** * Platform-specific permission configurations */ - platforms: SyncAcquireResponseDeploymentPreparedStackOverridePlatforms; + platforms: SyncAcquireResponseDeploymentPendingPreparedStackOverridePlatforms; }; /** * Reference to a permission set - either by name or inline definition */ -export type SyncAcquireResponseDeploymentPreparedStackOverrideUnion = - | SyncAcquireResponseDeploymentPreparedStackOverride +export type SyncAcquireResponseDeploymentPendingPreparedStackOverrideUnion = + | SyncAcquireResponseDeploymentPendingPreparedStackOverride | string; -export type SyncAcquireResponseDeploymentPreparedStackManagement2 = { +export type SyncAcquireResponseDeploymentPendingPreparedStackManagement2 = { /** * Permission profile that maps resources to permission sets * @@ -2481,7 +2536,7 @@ export type SyncAcquireResponseDeploymentPreparedStackManagement2 = { */ override: { [k: string]: Array< - SyncAcquireResponseDeploymentPreparedStackOverride | string + SyncAcquireResponseDeploymentPendingPreparedStackOverride | string >; }; }; @@ -2489,21 +2544,22 @@ export type SyncAcquireResponseDeploymentPreparedStackManagement2 = { /** * AWS-specific binding specification */ -export type SyncAcquireResponseDeploymentPreparedStackExtendAwResource = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; +export type SyncAcquireResponseDeploymentPendingPreparedStackExtendAwResource = + { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; + }; /** * AWS-specific binding specification */ -export type SyncAcquireResponseDeploymentPreparedStackExtendAwStack = { +export type SyncAcquireResponseDeploymentPendingPreparedStackExtendAwStack = { /** * Optional condition for additional filtering (rare) */ @@ -2517,37 +2573,40 @@ export type SyncAcquireResponseDeploymentPreparedStackExtendAwStack = { /** * Generic binding configuration for permissions */ -export type SyncAcquireResponseDeploymentPreparedStackExtendAwBinding = { +export type SyncAcquireResponseDeploymentPendingPreparedStackExtendAwBinding = { /** * AWS-specific binding specification */ resource?: - | SyncAcquireResponseDeploymentPreparedStackExtendAwResource + | SyncAcquireResponseDeploymentPendingPreparedStackExtendAwResource | undefined; /** * AWS-specific binding specification */ - stack?: SyncAcquireResponseDeploymentPreparedStackExtendAwStack | undefined; + stack?: + | SyncAcquireResponseDeploymentPendingPreparedStackExtendAwStack + | undefined; }; /** * IAM effect. Defaults to Allow. */ -export const SyncAcquireResponseDeploymentPreparedStackExtendEffect = { +export const SyncAcquireResponseDeploymentPendingPreparedStackExtendEffect = { Allow: "Allow", Deny: "Deny", } as const; /** * IAM effect. Defaults to Allow. */ -export type SyncAcquireResponseDeploymentPreparedStackExtendEffect = ClosedEnum< - typeof SyncAcquireResponseDeploymentPreparedStackExtendEffect ->; +export type SyncAcquireResponseDeploymentPendingPreparedStackExtendEffect = + ClosedEnum< + typeof SyncAcquireResponseDeploymentPendingPreparedStackExtendEffect + >; /** * Grant permissions for a specific cloud platform */ -export type SyncAcquireResponseDeploymentPreparedStackExtendAwGrant = { +export type SyncAcquireResponseDeploymentPendingPreparedStackExtendAwGrant = { /** * AWS IAM actions (only for AWS) */ @@ -2573,11 +2632,11 @@ export type SyncAcquireResponseDeploymentPreparedStackExtendAwGrant = { /** * AWS-specific platform permission configuration */ -export type SyncAcquireResponseDeploymentPreparedStackExtendAw = { +export type SyncAcquireResponseDeploymentPendingPreparedStackExtendAw = { /** * Generic binding configuration for permissions */ - binding: SyncAcquireResponseDeploymentPreparedStackExtendAwBinding; + binding: SyncAcquireResponseDeploymentPendingPreparedStackExtendAwBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2585,11 +2644,13 @@ export type SyncAcquireResponseDeploymentPreparedStackExtendAw = { /** * IAM effect. Defaults to Allow. */ - effect?: SyncAcquireResponseDeploymentPreparedStackExtendEffect | undefined; + effect?: + | SyncAcquireResponseDeploymentPendingPreparedStackExtendEffect + | undefined; /** * Grant permissions for a specific cloud platform */ - grant: SyncAcquireResponseDeploymentPreparedStackExtendAwGrant; + grant: SyncAcquireResponseDeploymentPendingPreparedStackExtendAwGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2599,75 +2660,79 @@ export type SyncAcquireResponseDeploymentPreparedStackExtendAw = { /** * Azure-specific binding specification */ -export type SyncAcquireResponseDeploymentPreparedStackExtendAzureResource = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; +export type SyncAcquireResponseDeploymentPendingPreparedStackExtendAzureResource = + { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; + }; /** * Azure-specific binding specification */ -export type SyncAcquireResponseDeploymentPreparedStackExtendAzureStack = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; +export type SyncAcquireResponseDeploymentPendingPreparedStackExtendAzureStack = + { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; + }; /** * Generic binding configuration for permissions */ -export type SyncAcquireResponseDeploymentPreparedStackExtendAzureBinding = { - /** - * Azure-specific binding specification - */ - resource?: - | SyncAcquireResponseDeploymentPreparedStackExtendAzureResource - | undefined; - /** - * Azure-specific binding specification - */ - stack?: - | SyncAcquireResponseDeploymentPreparedStackExtendAzureStack - | undefined; -}; +export type SyncAcquireResponseDeploymentPendingPreparedStackExtendAzureBinding = + { + /** + * Azure-specific binding specification + */ + resource?: + | SyncAcquireResponseDeploymentPendingPreparedStackExtendAzureResource + | undefined; + /** + * Azure-specific binding specification + */ + stack?: + | SyncAcquireResponseDeploymentPendingPreparedStackExtendAzureStack + | undefined; + }; /** * Grant permissions for a specific cloud platform */ -export type SyncAcquireResponseDeploymentPreparedStackExtendAzureGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; +export type SyncAcquireResponseDeploymentPendingPreparedStackExtendAzureGrant = + { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; + }; /** * Azure-specific platform permission configuration */ -export type SyncAcquireResponseDeploymentPreparedStackExtendAzure = { +export type SyncAcquireResponseDeploymentPendingPreparedStackExtendAzure = { /** * Generic binding configuration for permissions */ - binding: SyncAcquireResponseDeploymentPreparedStackExtendAzureBinding; + binding: SyncAcquireResponseDeploymentPendingPreparedStackExtendAzureBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2675,7 +2740,7 @@ export type SyncAcquireResponseDeploymentPreparedStackExtendAzure = { /** * Grant permissions for a specific cloud platform */ - grant: SyncAcquireResponseDeploymentPreparedStackExtendAzureGrant; + grant: SyncAcquireResponseDeploymentPendingPreparedStackExtendAzureGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2685,49 +2750,51 @@ export type SyncAcquireResponseDeploymentPreparedStackExtendAzure = { /** * GCP IAM condition */ -export type SyncAcquireResponseDeploymentPreparedStackExtendConditionResource = +export type SyncAcquireResponseDeploymentPendingPreparedStackExtendConditionResource = { expression: string; title: string; }; -export type SyncAcquireResponseDeploymentPreparedStackExtendResourceConditionUnion = - | SyncAcquireResponseDeploymentPreparedStackExtendConditionResource +export type SyncAcquireResponseDeploymentPendingPreparedStackExtendResourceConditionUnion = + | SyncAcquireResponseDeploymentPendingPreparedStackExtendConditionResource | any; /** * GCP-specific binding specification */ -export type SyncAcquireResponseDeploymentPreparedStackExtendGcpResource = { - condition?: - | SyncAcquireResponseDeploymentPreparedStackExtendConditionResource - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * GCP IAM condition - */ -export type SyncAcquireResponseDeploymentPreparedStackExtendConditionStack = { - expression: string; - title: string; -}; +export type SyncAcquireResponseDeploymentPendingPreparedStackExtendGcpResource = + { + condition?: + | SyncAcquireResponseDeploymentPendingPreparedStackExtendConditionResource + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; + }; -export type SyncAcquireResponseDeploymentPreparedStackExtendStackConditionUnion = - | SyncAcquireResponseDeploymentPreparedStackExtendConditionStack +/** + * GCP IAM condition + */ +export type SyncAcquireResponseDeploymentPendingPreparedStackExtendConditionStack = + { + expression: string; + title: string; + }; + +export type SyncAcquireResponseDeploymentPendingPreparedStackExtendStackConditionUnion = + | SyncAcquireResponseDeploymentPendingPreparedStackExtendConditionStack | any; /** * GCP-specific binding specification */ -export type SyncAcquireResponseDeploymentPreparedStackExtendGcpStack = { +export type SyncAcquireResponseDeploymentPendingPreparedStackExtendGcpStack = { condition?: - | SyncAcquireResponseDeploymentPreparedStackExtendConditionStack + | SyncAcquireResponseDeploymentPendingPreparedStackExtendConditionStack | any | null | undefined; @@ -2740,23 +2807,26 @@ export type SyncAcquireResponseDeploymentPreparedStackExtendGcpStack = { /** * Generic binding configuration for permissions */ -export type SyncAcquireResponseDeploymentPreparedStackExtendGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: - | SyncAcquireResponseDeploymentPreparedStackExtendGcpResource - | undefined; - /** - * GCP-specific binding specification - */ - stack?: SyncAcquireResponseDeploymentPreparedStackExtendGcpStack | undefined; -}; +export type SyncAcquireResponseDeploymentPendingPreparedStackExtendGcpBinding = + { + /** + * GCP-specific binding specification + */ + resource?: + | SyncAcquireResponseDeploymentPendingPreparedStackExtendGcpResource + | undefined; + /** + * GCP-specific binding specification + */ + stack?: + | SyncAcquireResponseDeploymentPendingPreparedStackExtendGcpStack + | undefined; + }; /** * Grant permissions for a specific cloud platform */ -export type SyncAcquireResponseDeploymentPreparedStackExtendGcpGrant = { +export type SyncAcquireResponseDeploymentPendingPreparedStackExtendGcpGrant = { /** * AWS IAM actions (only for AWS) */ @@ -2782,11 +2852,11 @@ export type SyncAcquireResponseDeploymentPreparedStackExtendGcpGrant = { /** * GCP-specific platform permission configuration */ -export type SyncAcquireResponseDeploymentPreparedStackExtendGcp = { +export type SyncAcquireResponseDeploymentPendingPreparedStackExtendGcp = { /** * Generic binding configuration for permissions */ - binding: SyncAcquireResponseDeploymentPreparedStackExtendGcpBinding; + binding: SyncAcquireResponseDeploymentPendingPreparedStackExtendGcpBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2794,7 +2864,7 @@ export type SyncAcquireResponseDeploymentPreparedStackExtendGcp = { /** * Grant permissions for a specific cloud platform */ - grant: SyncAcquireResponseDeploymentPreparedStackExtendGcpGrant; + grant: SyncAcquireResponseDeploymentPendingPreparedStackExtendGcpGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2804,26 +2874,26 @@ export type SyncAcquireResponseDeploymentPreparedStackExtendGcp = { /** * Platform-specific permission configurations */ -export type SyncAcquireResponseDeploymentPreparedStackExtendPlatforms = { +export type SyncAcquireResponseDeploymentPendingPreparedStackExtendPlatforms = { /** * AWS permission configurations */ aws?: - | Array + | Array | null | undefined; /** * Azure permission configurations */ azure?: - | Array + | Array | null | undefined; /** * GCP permission configurations */ gcp?: - | Array + | Array | null | undefined; }; @@ -2831,7 +2901,7 @@ export type SyncAcquireResponseDeploymentPreparedStackExtendPlatforms = { /** * A permission set that can be applied across different cloud platforms */ -export type SyncAcquireResponseDeploymentPreparedStackExtend = { +export type SyncAcquireResponseDeploymentPendingPreparedStackExtend = { /** * Human-readable description of what this permission set allows */ @@ -2843,17 +2913,17 @@ export type SyncAcquireResponseDeploymentPreparedStackExtend = { /** * Platform-specific permission configurations */ - platforms: SyncAcquireResponseDeploymentPreparedStackExtendPlatforms; + platforms: SyncAcquireResponseDeploymentPendingPreparedStackExtendPlatforms; }; /** * Reference to a permission set - either by name or inline definition */ -export type SyncAcquireResponseDeploymentPreparedStackExtendUnion = - | SyncAcquireResponseDeploymentPreparedStackExtend +export type SyncAcquireResponseDeploymentPendingPreparedStackExtendUnion = + | SyncAcquireResponseDeploymentPendingPreparedStackExtend | string; -export type SyncAcquireResponseDeploymentPreparedStackManagement1 = { +export type SyncAcquireResponseDeploymentPendingPreparedStackManagement1 = { /** * Permission profile that maps resources to permission sets * @@ -2862,7 +2932,7 @@ export type SyncAcquireResponseDeploymentPreparedStackManagement1 = { */ extend: { [k: string]: Array< - SyncAcquireResponseDeploymentPreparedStackExtend | string + SyncAcquireResponseDeploymentPendingPreparedStackExtend | string >; }; }; @@ -2870,29 +2940,30 @@ export type SyncAcquireResponseDeploymentPreparedStackManagement1 = { /** * Management permissions configuration for stack management access */ -export type SyncAcquireResponseDeploymentPreparedStackManagementUnion = - | SyncAcquireResponseDeploymentPreparedStackManagement1 - | SyncAcquireResponseDeploymentPreparedStackManagement2 - | SyncAcquireResponseDeploymentPreparedStackManagementEnum; +export type SyncAcquireResponseDeploymentPendingPreparedStackManagementUnion = + | SyncAcquireResponseDeploymentPendingPreparedStackManagement1 + | SyncAcquireResponseDeploymentPendingPreparedStackManagement2 + | SyncAcquireResponseDeploymentPendingPreparedStackManagementEnum; /** * AWS-specific binding specification */ -export type SyncAcquireResponseDeploymentPreparedStackProfileAwResource = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; +export type SyncAcquireResponseDeploymentPendingPreparedStackProfileAwResource = + { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; + }; /** * AWS-specific binding specification */ -export type SyncAcquireResponseDeploymentPreparedStackProfileAwStack = { +export type SyncAcquireResponseDeploymentPendingPreparedStackProfileAwStack = { /** * Optional condition for additional filtering (rare) */ @@ -2906,36 +2977,41 @@ export type SyncAcquireResponseDeploymentPreparedStackProfileAwStack = { /** * Generic binding configuration for permissions */ -export type SyncAcquireResponseDeploymentPreparedStackProfileAwBinding = { - /** - * AWS-specific binding specification - */ - resource?: - | SyncAcquireResponseDeploymentPreparedStackProfileAwResource - | undefined; - /** - * AWS-specific binding specification - */ - stack?: SyncAcquireResponseDeploymentPreparedStackProfileAwStack | undefined; -}; +export type SyncAcquireResponseDeploymentPendingPreparedStackProfileAwBinding = + { + /** + * AWS-specific binding specification + */ + resource?: + | SyncAcquireResponseDeploymentPendingPreparedStackProfileAwResource + | undefined; + /** + * AWS-specific binding specification + */ + stack?: + | SyncAcquireResponseDeploymentPendingPreparedStackProfileAwStack + | undefined; + }; /** * IAM effect. Defaults to Allow. */ -export const SyncAcquireResponseDeploymentPreparedStackProfileEffect = { +export const SyncAcquireResponseDeploymentPendingPreparedStackProfileEffect = { Allow: "Allow", Deny: "Deny", } as const; /** * IAM effect. Defaults to Allow. */ -export type SyncAcquireResponseDeploymentPreparedStackProfileEffect = - ClosedEnum; +export type SyncAcquireResponseDeploymentPendingPreparedStackProfileEffect = + ClosedEnum< + typeof SyncAcquireResponseDeploymentPendingPreparedStackProfileEffect + >; /** * Grant permissions for a specific cloud platform */ -export type SyncAcquireResponseDeploymentPreparedStackProfileAwGrant = { +export type SyncAcquireResponseDeploymentPendingPreparedStackProfileAwGrant = { /** * AWS IAM actions (only for AWS) */ @@ -2961,11 +3037,11 @@ export type SyncAcquireResponseDeploymentPreparedStackProfileAwGrant = { /** * AWS-specific platform permission configuration */ -export type SyncAcquireResponseDeploymentPreparedStackProfileAw = { +export type SyncAcquireResponseDeploymentPendingPreparedStackProfileAw = { /** * Generic binding configuration for permissions */ - binding: SyncAcquireResponseDeploymentPreparedStackProfileAwBinding; + binding: SyncAcquireResponseDeploymentPendingPreparedStackProfileAwBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2973,11 +3049,13 @@ export type SyncAcquireResponseDeploymentPreparedStackProfileAw = { /** * IAM effect. Defaults to Allow. */ - effect?: SyncAcquireResponseDeploymentPreparedStackProfileEffect | undefined; + effect?: + | SyncAcquireResponseDeploymentPendingPreparedStackProfileEffect + | undefined; /** * Grant permissions for a specific cloud platform */ - grant: SyncAcquireResponseDeploymentPreparedStackProfileAwGrant; + grant: SyncAcquireResponseDeploymentPendingPreparedStackProfileAwGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2987,75 +3065,79 @@ export type SyncAcquireResponseDeploymentPreparedStackProfileAw = { /** * Azure-specific binding specification */ -export type SyncAcquireResponseDeploymentPreparedStackProfileAzureResource = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; +export type SyncAcquireResponseDeploymentPendingPreparedStackProfileAzureResource = + { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; + }; /** * Azure-specific binding specification */ -export type SyncAcquireResponseDeploymentPreparedStackProfileAzureStack = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; +export type SyncAcquireResponseDeploymentPendingPreparedStackProfileAzureStack = + { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; + }; /** * Generic binding configuration for permissions */ -export type SyncAcquireResponseDeploymentPreparedStackProfileAzureBinding = { - /** - * Azure-specific binding specification - */ - resource?: - | SyncAcquireResponseDeploymentPreparedStackProfileAzureResource - | undefined; - /** - * Azure-specific binding specification - */ - stack?: - | SyncAcquireResponseDeploymentPreparedStackProfileAzureStack - | undefined; -}; +export type SyncAcquireResponseDeploymentPendingPreparedStackProfileAzureBinding = + { + /** + * Azure-specific binding specification + */ + resource?: + | SyncAcquireResponseDeploymentPendingPreparedStackProfileAzureResource + | undefined; + /** + * Azure-specific binding specification + */ + stack?: + | SyncAcquireResponseDeploymentPendingPreparedStackProfileAzureStack + | undefined; + }; /** * Grant permissions for a specific cloud platform */ -export type SyncAcquireResponseDeploymentPreparedStackProfileAzureGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; +export type SyncAcquireResponseDeploymentPendingPreparedStackProfileAzureGrant = + { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; + }; /** * Azure-specific platform permission configuration */ -export type SyncAcquireResponseDeploymentPreparedStackProfileAzure = { +export type SyncAcquireResponseDeploymentPendingPreparedStackProfileAzure = { /** * Generic binding configuration for permissions */ - binding: SyncAcquireResponseDeploymentPreparedStackProfileAzureBinding; + binding: SyncAcquireResponseDeploymentPendingPreparedStackProfileAzureBinding; /** * Short admin-facing description of why this entry exists. */ @@ -3063,7 +3145,7 @@ export type SyncAcquireResponseDeploymentPreparedStackProfileAzure = { /** * Grant permissions for a specific cloud platform */ - grant: SyncAcquireResponseDeploymentPreparedStackProfileAzureGrant; + grant: SyncAcquireResponseDeploymentPendingPreparedStackProfileAzureGrant; /** * Stable admin-facing label for this permission entry. */ @@ -3073,49 +3155,51 @@ export type SyncAcquireResponseDeploymentPreparedStackProfileAzure = { /** * GCP IAM condition */ -export type SyncAcquireResponseDeploymentPreparedStackProfileConditionResource = +export type SyncAcquireResponseDeploymentPendingPreparedStackProfileConditionResource = { expression: string; title: string; }; -export type SyncAcquireResponseDeploymentPreparedStackProfileResourceConditionUnion = - | SyncAcquireResponseDeploymentPreparedStackProfileConditionResource +export type SyncAcquireResponseDeploymentPendingPreparedStackProfileResourceConditionUnion = + | SyncAcquireResponseDeploymentPendingPreparedStackProfileConditionResource | any; /** * GCP-specific binding specification */ -export type SyncAcquireResponseDeploymentPreparedStackProfileGcpResource = { - condition?: - | SyncAcquireResponseDeploymentPreparedStackProfileConditionResource - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; +export type SyncAcquireResponseDeploymentPendingPreparedStackProfileGcpResource = + { + condition?: + | SyncAcquireResponseDeploymentPendingPreparedStackProfileConditionResource + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; + }; /** * GCP IAM condition */ -export type SyncAcquireResponseDeploymentPreparedStackProfileConditionStack = { - expression: string; - title: string; -}; +export type SyncAcquireResponseDeploymentPendingPreparedStackProfileConditionStack = + { + expression: string; + title: string; + }; -export type SyncAcquireResponseDeploymentPreparedStackProfileStackConditionUnion = - | SyncAcquireResponseDeploymentPreparedStackProfileConditionStack +export type SyncAcquireResponseDeploymentPendingPreparedStackProfileStackConditionUnion = + | SyncAcquireResponseDeploymentPendingPreparedStackProfileConditionStack | any; /** * GCP-specific binding specification */ -export type SyncAcquireResponseDeploymentPreparedStackProfileGcpStack = { +export type SyncAcquireResponseDeploymentPendingPreparedStackProfileGcpStack = { condition?: - | SyncAcquireResponseDeploymentPreparedStackProfileConditionStack + | SyncAcquireResponseDeploymentPendingPreparedStackProfileConditionStack | any | null | undefined; @@ -3128,23 +3212,26 @@ export type SyncAcquireResponseDeploymentPreparedStackProfileGcpStack = { /** * Generic binding configuration for permissions */ -export type SyncAcquireResponseDeploymentPreparedStackProfileGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: - | SyncAcquireResponseDeploymentPreparedStackProfileGcpResource - | undefined; - /** - * GCP-specific binding specification - */ - stack?: SyncAcquireResponseDeploymentPreparedStackProfileGcpStack | undefined; -}; +export type SyncAcquireResponseDeploymentPendingPreparedStackProfileGcpBinding = + { + /** + * GCP-specific binding specification + */ + resource?: + | SyncAcquireResponseDeploymentPendingPreparedStackProfileGcpResource + | undefined; + /** + * GCP-specific binding specification + */ + stack?: + | SyncAcquireResponseDeploymentPendingPreparedStackProfileGcpStack + | undefined; + }; /** * Grant permissions for a specific cloud platform */ -export type SyncAcquireResponseDeploymentPreparedStackProfileGcpGrant = { +export type SyncAcquireResponseDeploymentPendingPreparedStackProfileGcpGrant = { /** * AWS IAM actions (only for AWS) */ @@ -3170,11 +3257,11 @@ export type SyncAcquireResponseDeploymentPreparedStackProfileGcpGrant = { /** * GCP-specific platform permission configuration */ -export type SyncAcquireResponseDeploymentPreparedStackProfileGcp = { +export type SyncAcquireResponseDeploymentPendingPreparedStackProfileGcp = { /** * Generic binding configuration for permissions */ - binding: SyncAcquireResponseDeploymentPreparedStackProfileGcpBinding; + binding: SyncAcquireResponseDeploymentPendingPreparedStackProfileGcpBinding; /** * Short admin-facing description of why this entry exists. */ @@ -3182,7 +3269,7 @@ export type SyncAcquireResponseDeploymentPreparedStackProfileGcp = { /** * Grant permissions for a specific cloud platform */ - grant: SyncAcquireResponseDeploymentPreparedStackProfileGcpGrant; + grant: SyncAcquireResponseDeploymentPendingPreparedStackProfileGcpGrant; /** * Stable admin-facing label for this permission entry. */ @@ -3192,34 +3279,35 @@ export type SyncAcquireResponseDeploymentPreparedStackProfileGcp = { /** * Platform-specific permission configurations */ -export type SyncAcquireResponseDeploymentPreparedStackProfilePlatforms = { - /** - * AWS permission configurations - */ - aws?: - | Array - | null - | undefined; - /** - * Azure permission configurations - */ - azure?: - | Array - | null - | undefined; - /** - * GCP permission configurations - */ - gcp?: - | Array - | null - | undefined; -}; +export type SyncAcquireResponseDeploymentPendingPreparedStackProfilePlatforms = + { + /** + * AWS permission configurations + */ + aws?: + | Array + | null + | undefined; + /** + * Azure permission configurations + */ + azure?: + | Array + | null + | undefined; + /** + * GCP permission configurations + */ + gcp?: + | Array + | null + | undefined; + }; /** * A permission set that can be applied across different cloud platforms */ -export type SyncAcquireResponseDeploymentPreparedStackProfile = { +export type SyncAcquireResponseDeploymentPendingPreparedStackProfile = { /** * Human-readable description of what this permission set allows */ @@ -3231,27 +3319,27 @@ export type SyncAcquireResponseDeploymentPreparedStackProfile = { /** * Platform-specific permission configurations */ - platforms: SyncAcquireResponseDeploymentPreparedStackProfilePlatforms; + platforms: SyncAcquireResponseDeploymentPendingPreparedStackProfilePlatforms; }; /** * Reference to a permission set - either by name or inline definition */ -export type SyncAcquireResponseDeploymentPreparedStackProfileUnion = - | SyncAcquireResponseDeploymentPreparedStackProfile +export type SyncAcquireResponseDeploymentPendingPreparedStackProfileUnion = + | SyncAcquireResponseDeploymentPendingPreparedStackProfile | string; /** * Combined permissions configuration that contains both profiles and management */ -export type SyncAcquireResponseDeploymentPreparedStackPermissions = { +export type SyncAcquireResponseDeploymentPendingPreparedStackPermissions = { /** * Management permissions configuration for stack management access */ management?: - | SyncAcquireResponseDeploymentPreparedStackManagement1 - | SyncAcquireResponseDeploymentPreparedStackManagement2 - | SyncAcquireResponseDeploymentPreparedStackManagementEnum + | SyncAcquireResponseDeploymentPendingPreparedStackManagement1 + | SyncAcquireResponseDeploymentPendingPreparedStackManagement2 + | SyncAcquireResponseDeploymentPendingPreparedStackManagementEnum | undefined; /** * Permission profiles that define access control for compute services @@ -3262,7 +3350,7 @@ export type SyncAcquireResponseDeploymentPreparedStackPermissions = { profiles: { [k: string]: { [k: string]: Array< - SyncAcquireResponseDeploymentPreparedStackProfile | string + SyncAcquireResponseDeploymentPendingPreparedStackProfile | string >; }; }; @@ -3271,7 +3359,7 @@ export type SyncAcquireResponseDeploymentPreparedStackPermissions = { /** * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. */ -export type SyncAcquireResponseDeploymentPreparedStackConfig = { +export type SyncAcquireResponseDeploymentPendingPreparedStackConfig = { /** * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. */ @@ -3286,7 +3374,7 @@ export type SyncAcquireResponseDeploymentPreparedStackConfig = { /** * Reference to a resource by its stable id and resource type. */ -export type SyncAcquireResponseDeploymentPreparedStackDependency = { +export type SyncAcquireResponseDeploymentPendingPreparedStackDependency = { id: string; /** * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. @@ -3297,33 +3385,45 @@ export type SyncAcquireResponseDeploymentPreparedStackDependency = { /** * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ -export const SyncAcquireResponseDeploymentPreparedStackLifecycle = { +export const SyncAcquireResponseDeploymentPendingPreparedStackLifecycle = { Frozen: "frozen", Live: "live", } as const; /** * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ -export type SyncAcquireResponseDeploymentPreparedStackLifecycle = ClosedEnum< - typeof SyncAcquireResponseDeploymentPreparedStackLifecycle ->; +export type SyncAcquireResponseDeploymentPendingPreparedStackLifecycle = + ClosedEnum; -export type SyncAcquireResponseDeploymentPreparedStackResources = { +export type SyncAcquireResponseDeploymentPendingPreparedStackResources = { /** * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. */ - config: SyncAcquireResponseDeploymentPreparedStackConfig; + config: SyncAcquireResponseDeploymentPendingPreparedStackConfig; /** * Additional dependencies for this resource beyond those defined in the resource itself. * * @remarks * The total dependencies are: resource.get_dependencies() + this list */ - dependencies: Array; + dependencies: Array< + SyncAcquireResponseDeploymentPendingPreparedStackDependency + >; + /** + * Id of the boolean stack input that decides whether this resource is + * + * @remarks + * 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. + */ + enabledWhen?: string | null | undefined; /** * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ - lifecycle: SyncAcquireResponseDeploymentPreparedStackLifecycle; + lifecycle: SyncAcquireResponseDeploymentPendingPreparedStackLifecycle; /** * Enable remote bindings for this resource (BYOB use case). * @@ -3337,27 +3437,28 @@ export type SyncAcquireResponseDeploymentPreparedStackResources = { /** * Represents the target cloud platform. */ -export const SyncAcquireResponseDeploymentPreparedStackSupportedPlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Machines: "machines", - Local: "local", - Test: "test", -} as const; +export const SyncAcquireResponseDeploymentPendingPreparedStackSupportedPlatform = + { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Machines: "machines", + Local: "local", + Test: "test", + } as const; /** * Represents the target cloud platform. */ -export type SyncAcquireResponseDeploymentPreparedStackSupportedPlatform = +export type SyncAcquireResponseDeploymentPendingPreparedStackSupportedPlatform = ClosedEnum< - typeof SyncAcquireResponseDeploymentPreparedStackSupportedPlatform + typeof SyncAcquireResponseDeploymentPendingPreparedStackSupportedPlatform >; /** * A bag of resources, unaware of any cloud. */ -export type SyncAcquireResponseDeploymentPreparedStack = { +export type SyncAcquireResponseDeploymentPendingPreparedStack = { /** * Unique identifier for the stack */ @@ -3365,113 +3466,160 @@ export type SyncAcquireResponseDeploymentPreparedStack = { /** * Input definitions required before setup or deployment can proceed. */ - inputs?: Array | undefined; + inputs?: + | Array + | undefined; /** * Combined permissions configuration that contains both profiles and management */ permissions?: - | SyncAcquireResponseDeploymentPreparedStackPermissions + | SyncAcquireResponseDeploymentPendingPreparedStackPermissions | undefined; /** * Map of resource IDs to their configurations and lifecycle settings */ resources: { - [k: string]: SyncAcquireResponseDeploymentPreparedStackResources; + [k: string]: SyncAcquireResponseDeploymentPendingPreparedStackResources; }; /** * Which platforms this stack supports. When None, all platforms are supported. */ supportedPlatforms?: - | Array + | Array | null | undefined; }; -export type SyncAcquireResponseDeploymentPreparedStackUnion = - | SyncAcquireResponseDeploymentPreparedStack +export type SyncAcquireResponseDeploymentPendingPreparedStackUnion = + | SyncAcquireResponseDeploymentPendingPreparedStack | any; -/** - * Runtime metadata for deployment - * - * @remarks - * - * Stores deployment state that needs to persist across step calls. - */ -export type SyncAcquireResponseDeploymentRuntimeMetadata = { +export const SyncAcquireResponseDeploymentPreparedStackTypeStringList = { + StringList: "stringList", +} as const; +export type SyncAcquireResponseDeploymentPreparedStackTypeStringList = + ClosedEnum; + +export type SyncAcquireResponseDeploymentPreparedStackDefaultStringList = { + type: SyncAcquireResponseDeploymentPreparedStackTypeStringList; /** - * Hash of the environment variables snapshot that was last synced to the vault - * - * @remarks - * Used to avoid redundant sync operations during incremental deployment + * String list default. */ - lastSyncedEnvVarsHash?: string | null | undefined; + value: Array; +}; + +export const SyncAcquireResponseDeploymentPreparedStackTypeBoolean = { + Boolean: "boolean", +} as const; +export type SyncAcquireResponseDeploymentPreparedStackTypeBoolean = ClosedEnum< + typeof SyncAcquireResponseDeploymentPreparedStackTypeBoolean +>; + +export type SyncAcquireResponseDeploymentPreparedStackDefaultBoolean = { + type: SyncAcquireResponseDeploymentPreparedStackTypeBoolean; /** - * Exact vault keys owned by the deployment secret synchronizer. This - * - * @remarks - * inventory lets a later snapshot delete removed keys without listing or - * touching unrelated values in the same vault. + * Boolean default. */ - lastSyncedSecretNames?: Array | undefined; - preparedStack?: - | SyncAcquireResponseDeploymentPreparedStack - | any - | null - | undefined; + value: boolean; +}; + +export const SyncAcquireResponseDeploymentPreparedStackTypeNumber = { + Number: "number", +} as const; +export type SyncAcquireResponseDeploymentPreparedStackTypeNumber = ClosedEnum< + typeof SyncAcquireResponseDeploymentPreparedStackTypeNumber +>; + +export type SyncAcquireResponseDeploymentPreparedStackDefaultNumber = { + type: SyncAcquireResponseDeploymentPreparedStackTypeNumber; /** - * Whether cross-account registry access has been successfully granted. - * - * @remarks - * Set to true after the manager successfully sets the ECR/GAR repo policy - * for this deployment's target account. Prevents redundant API calls on - * every reconcile tick. + * Number default. */ - registryAccessGranted?: boolean | undefined; + value: string; }; -export type SyncAcquireResponseDeploymentRuntimeMetadataUnion = - | SyncAcquireResponseDeploymentRuntimeMetadata +export const SyncAcquireResponseDeploymentPreparedStackTypeString = { + String: "string", +} as const; +export type SyncAcquireResponseDeploymentPreparedStackTypeString = ClosedEnum< + typeof SyncAcquireResponseDeploymentPreparedStackTypeString +>; + +export type SyncAcquireResponseDeploymentPreparedStackDefaultString = { + type: SyncAcquireResponseDeploymentPreparedStackTypeString; + /** + * String default. + */ + value: string; +}; + +export type SyncAcquireResponseDeploymentPreparedStackDefaultUnion = + | SyncAcquireResponseDeploymentPreparedStackDefaultString + | SyncAcquireResponseDeploymentPreparedStackDefaultNumber + | SyncAcquireResponseDeploymentPreparedStackDefaultBoolean + | SyncAcquireResponseDeploymentPreparedStackDefaultStringList | any; /** - * Represents the target cloud platform. + * Environment variable handling for a stack input mapping. */ -export const SyncAcquireResponseDeploymentStackStatePlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Machines: "machines", - Local: "local", - Test: "test", +export const SyncAcquireResponseDeploymentPreparedStackTypeEnvEnum = { + Plain: "plain", + Secret: "secret", } as const; /** - * Represents the target cloud platform. + * Environment variable handling for a stack input mapping. */ -export type SyncAcquireResponseDeploymentStackStatePlatform = ClosedEnum< - typeof SyncAcquireResponseDeploymentStackStatePlatform +export type SyncAcquireResponseDeploymentPreparedStackTypeEnvEnum = ClosedEnum< + typeof SyncAcquireResponseDeploymentPreparedStackTypeEnvEnum >; +export type SyncAcquireResponseDeploymentPreparedStackTypeUnion = + | SyncAcquireResponseDeploymentPreparedStackTypeEnvEnum + | any; + /** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + * How a resolved stack input is injected into runtime environment variables. */ -export type SyncAcquireResponseDeploymentStackStateConfig = { +export type SyncAcquireResponseDeploymentPreparedStackEnv = { /** - * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. + * Environment variable name. */ - id: string; + name: string; /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + * Target resource IDs or patterns. None means every env-capable resource. */ - type: string; - additionalProperties?: { [k: string]: any | null } | undefined; + targetResources?: Array | null | undefined; + type?: + | SyncAcquireResponseDeploymentPreparedStackTypeEnvEnum + | any + | null + | undefined; }; +/** + * Primitive stack input kind. + */ +export const SyncAcquireResponseDeploymentPreparedStackKind = { + String: "string", + Secret: "secret", + Number: "number", + Integer: "integer", + Boolean: "boolean", + Enum: "enum", + StringList: "stringList", +} as const; +/** + * Primitive stack input kind. + */ +export type SyncAcquireResponseDeploymentPreparedStackKind = ClosedEnum< + typeof SyncAcquireResponseDeploymentPreparedStackKind +>; + /** * Represents the target cloud platform. */ -export const SyncAcquireResponseDeploymentControllerPlatformEnum = { +export const SyncAcquireResponseDeploymentPreparedStackPlatform = { Aws: "aws", Gcp: "gcp", Azure: "azure", @@ -3483,597 +3631,520 @@ export const SyncAcquireResponseDeploymentControllerPlatformEnum = { /** * Represents the target cloud platform. */ -export type SyncAcquireResponseDeploymentControllerPlatformEnum = ClosedEnum< - typeof SyncAcquireResponseDeploymentControllerPlatformEnum +export type SyncAcquireResponseDeploymentPreparedStackPlatform = ClosedEnum< + typeof SyncAcquireResponseDeploymentPreparedStackPlatform >; -export type SyncAcquireResponseDeploymentControllerPlatformUnion = - | SyncAcquireResponseDeploymentControllerPlatformEnum - | any; +/** + * Who can provide a stack input value. + */ +export const SyncAcquireResponseDeploymentPreparedStackProvidedBy = { + Developer: "developer", + Deployer: "deployer", +} as const; +/** + * Who can provide a stack input value. + */ +export type SyncAcquireResponseDeploymentPreparedStackProvidedBy = ClosedEnum< + typeof SyncAcquireResponseDeploymentPreparedStackProvidedBy +>; /** - * Reference to a resource by its stable id and resource type. + * Portable stack input validation constraints. */ -export type SyncAcquireResponseDeploymentStackStateDependency = { - id: string; +export type SyncAcquireResponseDeploymentPreparedStackValidation = { /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + * Semantic format hint such as url. */ - type: string; -}; - -/** - * Canonical error container that provides a structured way to represent errors - * - * @remarks - * with rich metadata including error codes, human-readable messages, context, - * and chaining capabilities for error propagation. - * - * This struct is designed to be both machine-readable and user-friendly, - * supporting serialization for API responses and detailed error reporting - * in distributed systems. - */ -export type SyncAcquireResponseDeploymentStackStateError = { + format?: string | null | undefined; /** - * A unique identifier for the type of error. - * - * @remarks - * - * This should be a short, machine-readable string that can be used - * by clients to programmatically handle different error types. - * Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" + * Maximum number. */ - code: string; + max?: string | null | undefined; /** - * Additional diagnostic information about the error context. - * - * @remarks - * - * This optional field can contain structured data providing more details - * about the error, such as validation errors, request parameters that - * caused the issue, or other relevant context information. + * Maximum string-list items. */ - context?: any | null | undefined; + maxItems?: number | null | undefined; /** - * Optional human-facing remediation hint. + * Maximum string length. */ - hint?: string | null | undefined; + maxLength?: number | null | undefined; /** - * HTTP status code for this error. - * - * @remarks - * - * Used when converting the error to an HTTP response. If None, falls back to - * the error type's default status code or 500. + * Minimum number. */ - httpStatusCode?: number | null | undefined; + min?: string | null | undefined; /** - * Indicates if this is an internal error that should not be exposed to users. - * - * @remarks - * - * When `true`, this error contains sensitive information or implementation - * details that should not be shown to end-users. Such errors should be - * logged for debugging but replaced with generic error messages in responses. + * Minimum string-list items. */ - internal: boolean; + minItems?: number | null | undefined; /** - * Human-readable error message. - * - * @remarks - * - * This message should be clear and actionable for developers or end-users, - * providing context about what went wrong and potentially how to fix it. + * Minimum string length. */ - message: string; + minLength?: number | null | undefined; /** - * Indicates whether the operation that caused the error should be retried. - * - * @remarks - * - * When `true`, the error is transient and the operation might succeed - * if attempted again. When `false`, retrying the same operation is - * unlikely to succeed without changes. + * Portable whole-value regex pattern. */ - retryable: boolean; + pattern?: string | null | undefined; /** - * The underlying error that caused this error, creating an error chain. - * - * @remarks - * - * This allows for proper error propagation and debugging by maintaining - * the full context of how an error occurred through multiple layers - * of an application. + * Allowed string enum values. */ - source?: any | null | undefined; + values?: Array | null | undefined; }; -export type SyncAcquireResponseDeploymentStackStateErrorUnion = - | SyncAcquireResponseDeploymentStackStateError +export type SyncAcquireResponseDeploymentPreparedStackValidationUnion = + | SyncAcquireResponseDeploymentPreparedStackValidation | any; /** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + * Stack input definition serialized into a release stack. */ -export const SyncAcquireResponseDeploymentStackStateLifecycleEnum = { - Frozen: "frozen", - Live: "live", +export type SyncAcquireResponseDeploymentPreparedStackInput = { + default?: + | SyncAcquireResponseDeploymentPreparedStackDefaultString + | SyncAcquireResponseDeploymentPreparedStackDefaultNumber + | SyncAcquireResponseDeploymentPreparedStackDefaultBoolean + | SyncAcquireResponseDeploymentPreparedStackDefaultStringList + | any + | null + | undefined; + /** + * Human-facing helper text. + */ + description: string; + /** + * Runtime env-var mappings for v1 input resolution. + */ + env?: Array | undefined; + /** + * Stable input ID used by CLI/API calls. + */ + id: string; + /** + * Primitive stack input kind. + */ + kind: SyncAcquireResponseDeploymentPreparedStackKind; + /** + * Human-facing field label. + */ + label: string; + /** + * Example placeholder shown in UI. + */ + placeholder?: string | null | undefined; + /** + * Platforms where this input applies. + */ + platforms?: + | Array + | null + | undefined; + /** + * Who can provide this value. + */ + providedBy: Array; + /** + * Whether a resolved value is required before deployment can proceed. + */ + required: boolean; + validation?: + | SyncAcquireResponseDeploymentPreparedStackValidation + | any + | null + | undefined; +}; + +export const SyncAcquireResponseDeploymentPreparedStackManagementEnum = { + Auto: "auto", } as const; +export type SyncAcquireResponseDeploymentPreparedStackManagementEnum = + ClosedEnum; + /** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + * AWS-specific binding specification */ -export type SyncAcquireResponseDeploymentStackStateLifecycleEnum = ClosedEnum< - typeof SyncAcquireResponseDeploymentStackStateLifecycleEnum ->; - -export type SyncAcquireResponseDeploymentLifecycleUnion = - | SyncAcquireResponseDeploymentStackStateLifecycleEnum - | any; +export type SyncAcquireResponseDeploymentPreparedStackOverrideAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; /** - * 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. + * AWS-specific binding specification */ -export type SyncAcquireResponseDeploymentOutputs = { +export type SyncAcquireResponseDeploymentPreparedStackOverrideAwStack = { /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + * Optional condition for additional filtering (rare) */ - type: string; - additionalProperties?: { [k: string]: any | null } | undefined; + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; }; -export type SyncAcquireResponseDeploymentOutputsUnion = - | SyncAcquireResponseDeploymentOutputs - | any; - /** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + * Generic binding configuration for permissions */ -export type SyncAcquireResponseDeploymentPreviousConfig = { +export type SyncAcquireResponseDeploymentPreparedStackOverrideAwBinding = { /** - * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. + * AWS-specific binding specification */ - id: string; + resource?: + | SyncAcquireResponseDeploymentPreparedStackOverrideAwResource + | undefined; /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + * AWS-specific binding specification */ - type: string; - additionalProperties?: { [k: string]: any | null } | undefined; + stack?: SyncAcquireResponseDeploymentPreparedStackOverrideAwStack | undefined; }; -export type SyncAcquireResponseDeploymentPreviousConfigUnion = - | SyncAcquireResponseDeploymentPreviousConfig - | any; - /** - * Represents the high-level status of a resource during its lifecycle. + * IAM effect. Defaults to Allow. */ -export const SyncAcquireResponseDeploymentStackStateStatus = { - Pending: "pending", - Provisioning: "provisioning", - ProvisionFailed: "provision-failed", - Running: "running", - Updating: "updating", - UpdateFailed: "update-failed", - Deleting: "deleting", - DeleteFailed: "delete-failed", - TeardownRequired: "teardown-required", - Deleted: "deleted", - RefreshFailed: "refresh-failed", +export const SyncAcquireResponseDeploymentPreparedStackOverrideEffect = { + Allow: "Allow", + Deny: "Deny", } as const; /** - * Represents the high-level status of a resource during its lifecycle. + * IAM effect. Defaults to Allow. */ -export type SyncAcquireResponseDeploymentStackStateStatus = ClosedEnum< - typeof SyncAcquireResponseDeploymentStackStateStatus ->; +export type SyncAcquireResponseDeploymentPreparedStackOverrideEffect = + ClosedEnum; /** - * Represents the state of a single resource within the stack for a specific platform. + * Grant permissions for a specific cloud platform */ -export type SyncAcquireResponseDeploymentStackStateResources = { +export type SyncAcquireResponseDeploymentPreparedStackOverrideAwGrant = { /** - * The platform-specific resource controller that manages this resource's lifecycle. - * - * @remarks - * This is None when the resource status is Pending. - * Stored as JSON to make the struct serializable and movable to alien-core. + * AWS IAM actions (only for AWS) */ - internal?: any | null | undefined; + actions?: Array | null | undefined; /** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + * Azure actions (only for Azure) */ - config: SyncAcquireResponseDeploymentStackStateConfig; - controllerPlatform?: - | SyncAcquireResponseDeploymentControllerPlatformEnum - | any - | null - | undefined; + dataActions?: Array | null | undefined; /** - * Complete list of dependencies for this resource, including infrastructure dependencies. - * - * @remarks - * This preserves the full dependency information from the stack definition. + * GCP permissions that require an exact residual custom role. */ - dependencies?: - | Array - | undefined; - error?: SyncAcquireResponseDeploymentStackStateError | any | null | undefined; - /** - * Stores the controller state that failed, used for manual retry operations. - * - * @remarks - * This allows resuming from the exact point where the failure occurred. - * Stored as JSON to make the struct serializable and movable to alien-core. - */ - lastFailedState?: any | null | undefined; - lifecycle?: - | SyncAcquireResponseDeploymentStackStateLifecycleEnum - | any - | null - | undefined; - outputs?: SyncAcquireResponseDeploymentOutputs | any | null | undefined; - previousConfig?: - | SyncAcquireResponseDeploymentPreviousConfig - | any - | null - | undefined; - /** - * Binding parameters for remote access. - * - * @remarks - * Only populated when the resource has `remote_access: true` in its ResourceEntry. - * This is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding). - * Populated by controllers during provisioning using get_binding_params(). - */ - remoteBindingParams?: any | null | undefined; - /** - * Tracks consecutive retry attempts for the current state transition. - */ - retryAttempt?: number | undefined; + permissions?: Array | null | undefined; /** - * Represents the high-level status of a resource during its lifecycle. + * Provider predefined roles to bind directly. */ - status: SyncAcquireResponseDeploymentStackStateStatus; + predefinedRoles?: Array | null | undefined; /** - * The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE). + * GCP residual custom permissions to pair with predefined roles. */ - type: string; + residualPermissions?: Array | null | undefined; }; /** - * Represents the collective state of all resources in a stack, including platform and pending actions. + * AWS-specific platform permission configuration */ -export type SyncAcquireResponseDeploymentStackState = { +export type SyncAcquireResponseDeploymentPreparedStackOverrideAw = { /** - * Represents the target cloud platform. + * Generic binding configuration for permissions */ - platform: SyncAcquireResponseDeploymentStackStatePlatform; + binding: SyncAcquireResponseDeploymentPreparedStackOverrideAwBinding; /** - * A prefix used for resource naming to ensure uniqueness across deployments. + * Short admin-facing description of why this entry exists. */ - resourcePrefix: string; + description?: string | null | undefined; /** - * The state of individual resources, keyed by resource ID. + * IAM effect. Defaults to Allow. */ - resources: { [k: string]: SyncAcquireResponseDeploymentStackStateResources }; + effect?: SyncAcquireResponseDeploymentPreparedStackOverrideEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncAcquireResponseDeploymentPreparedStackOverrideAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; }; -export type SyncAcquireResponseDeploymentStackStateUnion = - | SyncAcquireResponseDeploymentStackState - | any; - -/** - * Deployment status in the deployment lifecycle. - * - * @remarks - * - * For observe-only deployments with no release or stack state, `Running` - * means the Operator is attached. Connectivity comes from `lastHeartbeatAt`; - * resource health comes from inventory and resource heartbeat data. - */ -export const SyncAcquireResponseDeploymentStatus = { - Pending: "pending", - PreflightsFailed: "preflights-failed", - InitialSetup: "initial-setup", - InitialSetupFailed: "initial-setup-failed", - Provisioning: "provisioning", - WaitingForMachines: "waiting-for-machines", - ProvisioningFailed: "provisioning-failed", - Running: "running", - RefreshFailed: "refresh-failed", - UpdatePending: "update-pending", - Updating: "updating", - UpdateFailed: "update-failed", - DeletePending: "delete-pending", - Deleting: "deleting", - DeleteFailed: "delete-failed", - TeardownRequired: "teardown-required", - TeardownFailed: "teardown-failed", - Deleted: "deleted", - Error: "error", -} as const; /** - * Deployment status in the deployment lifecycle. - * - * @remarks - * - * For observe-only deployments with no release or stack state, `Running` - * means the Operator is attached. Connectivity comes from `lastHeartbeatAt`; - * resource health comes from inventory and resource heartbeat data. + * Azure-specific binding specification */ -export type SyncAcquireResponseDeploymentStatus = ClosedEnum< - typeof SyncAcquireResponseDeploymentStatus ->; - -export const SyncAcquireResponseDeploymentTargetReleaseTypeStringList = { - StringList: "stringList", -} as const; -export type SyncAcquireResponseDeploymentTargetReleaseTypeStringList = - ClosedEnum; - -export type SyncAcquireResponseDeploymentTargetReleaseDefaultStringList = { - type: SyncAcquireResponseDeploymentTargetReleaseTypeStringList; +export type SyncAcquireResponseDeploymentPreparedStackOverrideAzureResource = { /** - * String list default. + * Scope (subscription/resource group/resource level) */ - value: Array; + scope: string; }; -export const SyncAcquireResponseDeploymentTargetReleaseTypeBoolean = { - Boolean: "boolean", -} as const; -export type SyncAcquireResponseDeploymentTargetReleaseTypeBoolean = ClosedEnum< - typeof SyncAcquireResponseDeploymentTargetReleaseTypeBoolean ->; - -export type SyncAcquireResponseDeploymentTargetReleaseDefaultBoolean = { - type: SyncAcquireResponseDeploymentTargetReleaseTypeBoolean; +/** + * Azure-specific binding specification + */ +export type SyncAcquireResponseDeploymentPreparedStackOverrideAzureStack = { /** - * Boolean default. + * Scope (subscription/resource group/resource level) */ - value: boolean; + scope: string; }; -export const SyncAcquireResponseDeploymentTargetReleaseTypeNumber = { - Number: "number", -} as const; -export type SyncAcquireResponseDeploymentTargetReleaseTypeNumber = ClosedEnum< - typeof SyncAcquireResponseDeploymentTargetReleaseTypeNumber ->; - -export type SyncAcquireResponseDeploymentTargetReleaseDefaultNumber = { - type: SyncAcquireResponseDeploymentTargetReleaseTypeNumber; +/** + * Generic binding configuration for permissions + */ +export type SyncAcquireResponseDeploymentPreparedStackOverrideAzureBinding = { /** - * Number default. + * Azure-specific binding specification */ - value: string; -}; - -export const SyncAcquireResponseDeploymentTargetReleaseTypeString = { - String: "string", -} as const; -export type SyncAcquireResponseDeploymentTargetReleaseTypeString = ClosedEnum< - typeof SyncAcquireResponseDeploymentTargetReleaseTypeString ->; - -export type SyncAcquireResponseDeploymentTargetReleaseDefaultString = { - type: SyncAcquireResponseDeploymentTargetReleaseTypeString; + resource?: + | SyncAcquireResponseDeploymentPreparedStackOverrideAzureResource + | undefined; /** - * String default. + * Azure-specific binding specification */ - value: string; + stack?: + | SyncAcquireResponseDeploymentPreparedStackOverrideAzureStack + | undefined; }; -export type SyncAcquireResponseDeploymentTargetReleaseDefaultUnion = - | SyncAcquireResponseDeploymentTargetReleaseDefaultString - | SyncAcquireResponseDeploymentTargetReleaseDefaultNumber - | SyncAcquireResponseDeploymentTargetReleaseDefaultBoolean - | SyncAcquireResponseDeploymentTargetReleaseDefaultStringList - | any; - -/** - * Environment variable handling for a stack input mapping. - */ -export const SyncAcquireResponseDeploymentTargetReleaseTypeEnvEnum = { - Plain: "plain", - Secret: "secret", -} as const; /** - * Environment variable handling for a stack input mapping. + * Grant permissions for a specific cloud platform */ -export type SyncAcquireResponseDeploymentTargetReleaseTypeEnvEnum = ClosedEnum< - typeof SyncAcquireResponseDeploymentTargetReleaseTypeEnvEnum ->; - -export type SyncAcquireResponseDeploymentTargetReleaseTypeUnion = - | SyncAcquireResponseDeploymentTargetReleaseTypeEnvEnum - | any; +export type SyncAcquireResponseDeploymentPreparedStackOverrideAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; /** - * How a resolved stack input is injected into runtime environment variables. + * Azure-specific platform permission configuration */ -export type SyncAcquireResponseDeploymentTargetReleaseEnv = { +export type SyncAcquireResponseDeploymentPreparedStackOverrideAzure = { /** - * Environment variable name. + * Generic binding configuration for permissions */ - name: string; + binding: SyncAcquireResponseDeploymentPreparedStackOverrideAzureBinding; /** - * Target resource IDs or patterns. None means every env-capable resource. + * Short admin-facing description of why this entry exists. */ - targetResources?: Array | null | undefined; - type?: - | SyncAcquireResponseDeploymentTargetReleaseTypeEnvEnum - | any - | null - | undefined; + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncAcquireResponseDeploymentPreparedStackOverrideAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; }; /** - * Primitive stack input kind. + * GCP IAM condition */ -export const SyncAcquireResponseDeploymentTargetReleaseKind = { - String: "string", - Secret: "secret", - Number: "number", - Integer: "integer", - Boolean: "boolean", - Enum: "enum", - StringList: "stringList", -} as const; -/** - * Primitive stack input kind. - */ -export type SyncAcquireResponseDeploymentTargetReleaseKind = ClosedEnum< - typeof SyncAcquireResponseDeploymentTargetReleaseKind ->; +export type SyncAcquireResponseDeploymentPreparedStackOverrideConditionResource = + { + expression: string; + title: string; + }; -/** - * Represents the target cloud platform. - */ -export const SyncAcquireResponseDeploymentTargetReleasePlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Machines: "machines", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. - */ -export type SyncAcquireResponseDeploymentTargetReleasePlatform = ClosedEnum< - typeof SyncAcquireResponseDeploymentTargetReleasePlatform ->; +export type SyncAcquireResponseDeploymentPreparedStackOverrideResourceConditionUnion = + | SyncAcquireResponseDeploymentPreparedStackOverrideConditionResource + | any; /** - * Who can provide a stack input value. + * GCP-specific binding specification */ -export const SyncAcquireResponseDeploymentTargetReleaseProvidedBy = { - Developer: "developer", - Deployer: "deployer", -} as const; +export type SyncAcquireResponseDeploymentPreparedStackOverrideGcpResource = { + condition?: + | SyncAcquireResponseDeploymentPreparedStackOverrideConditionResource + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + /** - * Who can provide a stack input value. + * GCP IAM condition */ -export type SyncAcquireResponseDeploymentTargetReleaseProvidedBy = ClosedEnum< - typeof SyncAcquireResponseDeploymentTargetReleaseProvidedBy ->; +export type SyncAcquireResponseDeploymentPreparedStackOverrideConditionStack = { + expression: string; + title: string; +}; + +export type SyncAcquireResponseDeploymentPreparedStackOverrideStackConditionUnion = + | SyncAcquireResponseDeploymentPreparedStackOverrideConditionStack + | any; /** - * Portable stack input validation constraints. + * GCP-specific binding specification */ -export type SyncAcquireResponseDeploymentTargetReleaseValidation = { - /** - * Semantic format hint such as url. - */ - format?: string | null | undefined; +export type SyncAcquireResponseDeploymentPreparedStackOverrideGcpStack = { + condition?: + | SyncAcquireResponseDeploymentPreparedStackOverrideConditionStack + | any + | null + | undefined; /** - * Maximum number. + * Scope (project/resource level) */ - max?: string | null | undefined; + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncAcquireResponseDeploymentPreparedStackOverrideGcpBinding = { /** - * Maximum string-list items. + * GCP-specific binding specification */ - maxItems?: number | null | undefined; + resource?: + | SyncAcquireResponseDeploymentPreparedStackOverrideGcpResource + | undefined; /** - * Maximum string length. + * GCP-specific binding specification */ - maxLength?: number | null | undefined; + stack?: + | SyncAcquireResponseDeploymentPreparedStackOverrideGcpStack + | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncAcquireResponseDeploymentPreparedStackOverrideGcpGrant = { /** - * Minimum number. + * AWS IAM actions (only for AWS) */ - min?: string | null | undefined; + actions?: Array | null | undefined; /** - * Minimum string-list items. + * Azure actions (only for Azure) */ - minItems?: number | null | undefined; + dataActions?: Array | null | undefined; /** - * Minimum string length. + * GCP permissions that require an exact residual custom role. */ - minLength?: number | null | undefined; + permissions?: Array | null | undefined; /** - * Portable whole-value regex pattern. + * Provider predefined roles to bind directly. */ - pattern?: string | null | undefined; + predefinedRoles?: Array | null | undefined; /** - * Allowed string enum values. + * GCP residual custom permissions to pair with predefined roles. */ - values?: Array | null | undefined; + residualPermissions?: Array | null | undefined; }; -export type SyncAcquireResponseDeploymentTargetReleaseValidationUnion = - | SyncAcquireResponseDeploymentTargetReleaseValidation - | any; - /** - * Stack input definition serialized into a release stack. + * GCP-specific platform permission configuration */ -export type SyncAcquireResponseDeploymentTargetReleaseInput = { - default?: - | SyncAcquireResponseDeploymentTargetReleaseDefaultString - | SyncAcquireResponseDeploymentTargetReleaseDefaultNumber - | SyncAcquireResponseDeploymentTargetReleaseDefaultBoolean - | SyncAcquireResponseDeploymentTargetReleaseDefaultStringList - | any - | null - | undefined; +export type SyncAcquireResponseDeploymentPreparedStackOverrideGcp = { /** - * Human-facing helper text. + * Generic binding configuration for permissions */ - description: string; + binding: SyncAcquireResponseDeploymentPreparedStackOverrideGcpBinding; /** - * Runtime env-var mappings for v1 input resolution. + * Short admin-facing description of why this entry exists. */ - env?: Array | undefined; + description?: string | null | undefined; /** - * Stable input ID used by CLI/API calls. + * Grant permissions for a specific cloud platform */ - id: string; + grant: SyncAcquireResponseDeploymentPreparedStackOverrideGcpGrant; /** - * Primitive stack input kind. + * Stable admin-facing label for this permission entry. */ - kind: SyncAcquireResponseDeploymentTargetReleaseKind; + label?: string | null | undefined; +}; + +/** + * Platform-specific permission configurations + */ +export type SyncAcquireResponseDeploymentPreparedStackOverridePlatforms = { /** - * Human-facing field label. + * AWS permission configurations */ - label: string; + aws?: + | Array + | null + | undefined; /** - * Example placeholder shown in UI. + * Azure permission configurations */ - placeholder?: string | null | undefined; + azure?: + | Array + | null + | undefined; /** - * Platforms where this input applies. + * GCP permission configurations */ - platforms?: - | Array + gcp?: + | Array | null | undefined; +}; + +/** + * A permission set that can be applied across different cloud platforms + */ +export type SyncAcquireResponseDeploymentPreparedStackOverride = { /** - * Who can provide this value. + * Human-readable description of what this permission set allows */ - providedBy: Array; + description: string; /** - * Whether a resolved value is required before deployment can proceed. + * Unique identifier for the permission set (e.g., "storage/data-read") */ - required: boolean; - validation?: - | SyncAcquireResponseDeploymentTargetReleaseValidation - | any - | null - | undefined; + id: string; + /** + * Platform-specific permission configurations + */ + platforms: SyncAcquireResponseDeploymentPreparedStackOverridePlatforms; }; -export const SyncAcquireResponseDeploymentTargetReleaseManagementEnum = { - Auto: "auto", -} as const; -export type SyncAcquireResponseDeploymentTargetReleaseManagementEnum = - ClosedEnum; +/** + * Reference to a permission set - either by name or inline definition + */ +export type SyncAcquireResponseDeploymentPreparedStackOverrideUnion = + | SyncAcquireResponseDeploymentPreparedStackOverride + | string; + +export type SyncAcquireResponseDeploymentPreparedStackManagement2 = { + /** + * Permission profile that maps resources to permission sets + * + * @remarks + * Key can be "*" for all resources or resource name for specific resource + */ + override: { + [k: string]: Array< + SyncAcquireResponseDeploymentPreparedStackOverride | string + >; + }; +}; /** * AWS-specific binding specification */ -export type SyncAcquireResponseDeploymentTargetReleaseOverrideAwResource = { +export type SyncAcquireResponseDeploymentPreparedStackExtendAwResource = { /** * Optional condition for additional filtering (rare) */ @@ -4087,7 +4158,7 @@ export type SyncAcquireResponseDeploymentTargetReleaseOverrideAwResource = { /** * AWS-specific binding specification */ -export type SyncAcquireResponseDeploymentTargetReleaseOverrideAwStack = { +export type SyncAcquireResponseDeploymentPreparedStackExtendAwStack = { /** * Optional condition for additional filtering (rare) */ @@ -4101,36 +4172,37 @@ export type SyncAcquireResponseDeploymentTargetReleaseOverrideAwStack = { /** * Generic binding configuration for permissions */ -export type SyncAcquireResponseDeploymentTargetReleaseOverrideAwBinding = { +export type SyncAcquireResponseDeploymentPreparedStackExtendAwBinding = { /** * AWS-specific binding specification */ resource?: - | SyncAcquireResponseDeploymentTargetReleaseOverrideAwResource + | SyncAcquireResponseDeploymentPreparedStackExtendAwResource | undefined; /** * AWS-specific binding specification */ - stack?: SyncAcquireResponseDeploymentTargetReleaseOverrideAwStack | undefined; + stack?: SyncAcquireResponseDeploymentPreparedStackExtendAwStack | undefined; }; /** * IAM effect. Defaults to Allow. */ -export const SyncAcquireResponseDeploymentTargetReleaseOverrideEffect = { +export const SyncAcquireResponseDeploymentPreparedStackExtendEffect = { Allow: "Allow", Deny: "Deny", } as const; /** * IAM effect. Defaults to Allow. */ -export type SyncAcquireResponseDeploymentTargetReleaseOverrideEffect = - ClosedEnum; +export type SyncAcquireResponseDeploymentPreparedStackExtendEffect = ClosedEnum< + typeof SyncAcquireResponseDeploymentPreparedStackExtendEffect +>; /** * Grant permissions for a specific cloud platform */ -export type SyncAcquireResponseDeploymentTargetReleaseOverrideAwGrant = { +export type SyncAcquireResponseDeploymentPreparedStackExtendAwGrant = { /** * AWS IAM actions (only for AWS) */ @@ -4156,11 +4228,11 @@ export type SyncAcquireResponseDeploymentTargetReleaseOverrideAwGrant = { /** * AWS-specific platform permission configuration */ -export type SyncAcquireResponseDeploymentTargetReleaseOverrideAw = { +export type SyncAcquireResponseDeploymentPreparedStackExtendAw = { /** * Generic binding configuration for permissions */ - binding: SyncAcquireResponseDeploymentTargetReleaseOverrideAwBinding; + binding: SyncAcquireResponseDeploymentPreparedStackExtendAwBinding; /** * Short admin-facing description of why this entry exists. */ @@ -4168,11 +4240,11 @@ export type SyncAcquireResponseDeploymentTargetReleaseOverrideAw = { /** * IAM effect. Defaults to Allow. */ - effect?: SyncAcquireResponseDeploymentTargetReleaseOverrideEffect | undefined; + effect?: SyncAcquireResponseDeploymentPreparedStackExtendEffect | undefined; /** * Grant permissions for a specific cloud platform */ - grant: SyncAcquireResponseDeploymentTargetReleaseOverrideAwGrant; + grant: SyncAcquireResponseDeploymentPreparedStackExtendAwGrant; /** * Stable admin-facing label for this permission entry. */ @@ -4182,7 +4254,7 @@ export type SyncAcquireResponseDeploymentTargetReleaseOverrideAw = { /** * Azure-specific binding specification */ -export type SyncAcquireResponseDeploymentTargetReleaseOverrideAzureResource = { +export type SyncAcquireResponseDeploymentPreparedStackExtendAzureResource = { /** * Scope (subscription/resource group/resource level) */ @@ -4192,7 +4264,7 @@ export type SyncAcquireResponseDeploymentTargetReleaseOverrideAzureResource = { /** * Azure-specific binding specification */ -export type SyncAcquireResponseDeploymentTargetReleaseOverrideAzureStack = { +export type SyncAcquireResponseDeploymentPreparedStackExtendAzureStack = { /** * Scope (subscription/resource group/resource level) */ @@ -4202,25 +4274,25 @@ export type SyncAcquireResponseDeploymentTargetReleaseOverrideAzureStack = { /** * Generic binding configuration for permissions */ -export type SyncAcquireResponseDeploymentTargetReleaseOverrideAzureBinding = { +export type SyncAcquireResponseDeploymentPreparedStackExtendAzureBinding = { /** * Azure-specific binding specification */ resource?: - | SyncAcquireResponseDeploymentTargetReleaseOverrideAzureResource + | SyncAcquireResponseDeploymentPreparedStackExtendAzureResource | undefined; /** * Azure-specific binding specification */ stack?: - | SyncAcquireResponseDeploymentTargetReleaseOverrideAzureStack + | SyncAcquireResponseDeploymentPreparedStackExtendAzureStack | undefined; }; /** * Grant permissions for a specific cloud platform */ -export type SyncAcquireResponseDeploymentTargetReleaseOverrideAzureGrant = { +export type SyncAcquireResponseDeploymentPreparedStackExtendAzureGrant = { /** * AWS IAM actions (only for AWS) */ @@ -4246,11 +4318,11 @@ export type SyncAcquireResponseDeploymentTargetReleaseOverrideAzureGrant = { /** * Azure-specific platform permission configuration */ -export type SyncAcquireResponseDeploymentTargetReleaseOverrideAzure = { +export type SyncAcquireResponseDeploymentPreparedStackExtendAzure = { /** * Generic binding configuration for permissions */ - binding: SyncAcquireResponseDeploymentTargetReleaseOverrideAzureBinding; + binding: SyncAcquireResponseDeploymentPreparedStackExtendAzureBinding; /** * Short admin-facing description of why this entry exists. */ @@ -4258,7 +4330,7 @@ export type SyncAcquireResponseDeploymentTargetReleaseOverrideAzure = { /** * Grant permissions for a specific cloud platform */ - grant: SyncAcquireResponseDeploymentTargetReleaseOverrideAzureGrant; + grant: SyncAcquireResponseDeploymentPreparedStackExtendAzureGrant; /** * Stable admin-facing label for this permission entry. */ @@ -4268,22 +4340,22 @@ export type SyncAcquireResponseDeploymentTargetReleaseOverrideAzure = { /** * GCP IAM condition */ -export type SyncAcquireResponseDeploymentTargetReleaseOverrideConditionResource = +export type SyncAcquireResponseDeploymentPreparedStackExtendConditionResource = { expression: string; title: string; }; -export type SyncAcquireResponseDeploymentTargetReleaseOverrideResourceConditionUnion = - | SyncAcquireResponseDeploymentTargetReleaseOverrideConditionResource +export type SyncAcquireResponseDeploymentPreparedStackExtendResourceConditionUnion = + | SyncAcquireResponseDeploymentPreparedStackExtendConditionResource | any; /** * GCP-specific binding specification */ -export type SyncAcquireResponseDeploymentTargetReleaseOverrideGcpResource = { +export type SyncAcquireResponseDeploymentPreparedStackExtendGcpResource = { condition?: - | SyncAcquireResponseDeploymentTargetReleaseOverrideConditionResource + | SyncAcquireResponseDeploymentPreparedStackExtendConditionResource | any | null | undefined; @@ -4296,21 +4368,21 @@ export type SyncAcquireResponseDeploymentTargetReleaseOverrideGcpResource = { /** * GCP IAM condition */ -export type SyncAcquireResponseDeploymentTargetReleaseOverrideCondition = { +export type SyncAcquireResponseDeploymentPreparedStackExtendConditionStack = { expression: string; title: string; }; -export type SyncAcquireResponseDeploymentTargetReleaseOverrideConditionUnion = - | SyncAcquireResponseDeploymentTargetReleaseOverrideCondition +export type SyncAcquireResponseDeploymentPreparedStackExtendStackConditionUnion = + | SyncAcquireResponseDeploymentPreparedStackExtendConditionStack | any; /** * GCP-specific binding specification */ -export type SyncAcquireResponseDeploymentTargetReleaseOverrideGcpStack = { +export type SyncAcquireResponseDeploymentPreparedStackExtendGcpStack = { condition?: - | SyncAcquireResponseDeploymentTargetReleaseOverrideCondition + | SyncAcquireResponseDeploymentPreparedStackExtendConditionStack | any | null | undefined; @@ -4323,25 +4395,23 @@ export type SyncAcquireResponseDeploymentTargetReleaseOverrideGcpStack = { /** * Generic binding configuration for permissions */ -export type SyncAcquireResponseDeploymentTargetReleaseOverrideGcpBinding = { +export type SyncAcquireResponseDeploymentPreparedStackExtendGcpBinding = { /** * GCP-specific binding specification */ resource?: - | SyncAcquireResponseDeploymentTargetReleaseOverrideGcpResource + | SyncAcquireResponseDeploymentPreparedStackExtendGcpResource | undefined; /** * GCP-specific binding specification */ - stack?: - | SyncAcquireResponseDeploymentTargetReleaseOverrideGcpStack - | undefined; + stack?: SyncAcquireResponseDeploymentPreparedStackExtendGcpStack | undefined; }; /** * Grant permissions for a specific cloud platform */ -export type SyncAcquireResponseDeploymentTargetReleaseOverrideGcpGrant = { +export type SyncAcquireResponseDeploymentPreparedStackExtendGcpGrant = { /** * AWS IAM actions (only for AWS) */ @@ -4367,11 +4437,11 @@ export type SyncAcquireResponseDeploymentTargetReleaseOverrideGcpGrant = { /** * GCP-specific platform permission configuration */ -export type SyncAcquireResponseDeploymentTargetReleaseOverrideGcp = { +export type SyncAcquireResponseDeploymentPreparedStackExtendGcp = { /** * Generic binding configuration for permissions */ - binding: SyncAcquireResponseDeploymentTargetReleaseOverrideGcpBinding; + binding: SyncAcquireResponseDeploymentPreparedStackExtendGcpBinding; /** * Short admin-facing description of why this entry exists. */ @@ -4379,7 +4449,7 @@ export type SyncAcquireResponseDeploymentTargetReleaseOverrideGcp = { /** * Grant permissions for a specific cloud platform */ - grant: SyncAcquireResponseDeploymentTargetReleaseOverrideGcpGrant; + grant: SyncAcquireResponseDeploymentPreparedStackExtendGcpGrant; /** * Stable admin-facing label for this permission entry. */ @@ -4389,26 +4459,26 @@ export type SyncAcquireResponseDeploymentTargetReleaseOverrideGcp = { /** * Platform-specific permission configurations */ -export type SyncAcquireResponseDeploymentTargetReleaseOverridePlatforms = { +export type SyncAcquireResponseDeploymentPreparedStackExtendPlatforms = { /** * AWS permission configurations */ aws?: - | Array + | Array | null | undefined; /** * Azure permission configurations */ azure?: - | Array + | Array | null | undefined; /** * GCP permission configurations */ gcp?: - | Array + | Array | null | undefined; }; @@ -4416,7 +4486,7 @@ export type SyncAcquireResponseDeploymentTargetReleaseOverridePlatforms = { /** * A permission set that can be applied across different cloud platforms */ -export type SyncAcquireResponseDeploymentTargetReleaseOverride = { +export type SyncAcquireResponseDeploymentPreparedStackExtend = { /** * Human-readable description of what this permission set allows */ @@ -4428,34 +4498,42 @@ export type SyncAcquireResponseDeploymentTargetReleaseOverride = { /** * Platform-specific permission configurations */ - platforms: SyncAcquireResponseDeploymentTargetReleaseOverridePlatforms; + platforms: SyncAcquireResponseDeploymentPreparedStackExtendPlatforms; }; /** * Reference to a permission set - either by name or inline definition */ -export type SyncAcquireResponseDeploymentTargetReleaseOverrideUnion = - | SyncAcquireResponseDeploymentTargetReleaseOverride +export type SyncAcquireResponseDeploymentPreparedStackExtendUnion = + | SyncAcquireResponseDeploymentPreparedStackExtend | string; -export type SyncAcquireResponseDeploymentTargetReleaseManagement2 = { +export type SyncAcquireResponseDeploymentPreparedStackManagement1 = { /** * Permission profile that maps resources to permission sets * * @remarks * Key can be "*" for all resources or resource name for specific resource */ - override: { + extend: { [k: string]: Array< - SyncAcquireResponseDeploymentTargetReleaseOverride | string + SyncAcquireResponseDeploymentPreparedStackExtend | string >; }; }; +/** + * Management permissions configuration for stack management access + */ +export type SyncAcquireResponseDeploymentPreparedStackManagementUnion = + | SyncAcquireResponseDeploymentPreparedStackManagement1 + | SyncAcquireResponseDeploymentPreparedStackManagement2 + | SyncAcquireResponseDeploymentPreparedStackManagementEnum; + /** * AWS-specific binding specification */ -export type SyncAcquireResponseDeploymentTargetReleaseExtendAwResource = { +export type SyncAcquireResponseDeploymentPreparedStackProfileAwResource = { /** * Optional condition for additional filtering (rare) */ @@ -4469,7 +4547,7 @@ export type SyncAcquireResponseDeploymentTargetReleaseExtendAwResource = { /** * AWS-specific binding specification */ -export type SyncAcquireResponseDeploymentTargetReleaseExtendAwStack = { +export type SyncAcquireResponseDeploymentPreparedStackProfileAwStack = { /** * Optional condition for additional filtering (rare) */ @@ -4483,37 +4561,36 @@ export type SyncAcquireResponseDeploymentTargetReleaseExtendAwStack = { /** * Generic binding configuration for permissions */ -export type SyncAcquireResponseDeploymentTargetReleaseExtendAwBinding = { +export type SyncAcquireResponseDeploymentPreparedStackProfileAwBinding = { /** * AWS-specific binding specification */ resource?: - | SyncAcquireResponseDeploymentTargetReleaseExtendAwResource + | SyncAcquireResponseDeploymentPreparedStackProfileAwResource | undefined; /** * AWS-specific binding specification */ - stack?: SyncAcquireResponseDeploymentTargetReleaseExtendAwStack | undefined; + stack?: SyncAcquireResponseDeploymentPreparedStackProfileAwStack | undefined; }; /** * IAM effect. Defaults to Allow. */ -export const SyncAcquireResponseDeploymentTargetReleaseExtendEffect = { +export const SyncAcquireResponseDeploymentPreparedStackProfileEffect = { Allow: "Allow", Deny: "Deny", } as const; /** * IAM effect. Defaults to Allow. */ -export type SyncAcquireResponseDeploymentTargetReleaseExtendEffect = ClosedEnum< - typeof SyncAcquireResponseDeploymentTargetReleaseExtendEffect ->; +export type SyncAcquireResponseDeploymentPreparedStackProfileEffect = + ClosedEnum; /** * Grant permissions for a specific cloud platform */ -export type SyncAcquireResponseDeploymentTargetReleaseExtendAwGrant = { +export type SyncAcquireResponseDeploymentPreparedStackProfileAwGrant = { /** * AWS IAM actions (only for AWS) */ @@ -4539,11 +4616,11 @@ export type SyncAcquireResponseDeploymentTargetReleaseExtendAwGrant = { /** * AWS-specific platform permission configuration */ -export type SyncAcquireResponseDeploymentTargetReleaseExtendAw = { +export type SyncAcquireResponseDeploymentPreparedStackProfileAw = { /** * Generic binding configuration for permissions */ - binding: SyncAcquireResponseDeploymentTargetReleaseExtendAwBinding; + binding: SyncAcquireResponseDeploymentPreparedStackProfileAwBinding; /** * Short admin-facing description of why this entry exists. */ @@ -4551,11 +4628,11 @@ export type SyncAcquireResponseDeploymentTargetReleaseExtendAw = { /** * IAM effect. Defaults to Allow. */ - effect?: SyncAcquireResponseDeploymentTargetReleaseExtendEffect | undefined; + effect?: SyncAcquireResponseDeploymentPreparedStackProfileEffect | undefined; /** * Grant permissions for a specific cloud platform */ - grant: SyncAcquireResponseDeploymentTargetReleaseExtendAwGrant; + grant: SyncAcquireResponseDeploymentPreparedStackProfileAwGrant; /** * Stable admin-facing label for this permission entry. */ @@ -4565,7 +4642,7 @@ export type SyncAcquireResponseDeploymentTargetReleaseExtendAw = { /** * Azure-specific binding specification */ -export type SyncAcquireResponseDeploymentTargetReleaseExtendAzureResource = { +export type SyncAcquireResponseDeploymentPreparedStackProfileAzureResource = { /** * Scope (subscription/resource group/resource level) */ @@ -4575,7 +4652,7 @@ export type SyncAcquireResponseDeploymentTargetReleaseExtendAzureResource = { /** * Azure-specific binding specification */ -export type SyncAcquireResponseDeploymentTargetReleaseExtendAzureStack = { +export type SyncAcquireResponseDeploymentPreparedStackProfileAzureStack = { /** * Scope (subscription/resource group/resource level) */ @@ -4585,25 +4662,25 @@ export type SyncAcquireResponseDeploymentTargetReleaseExtendAzureStack = { /** * Generic binding configuration for permissions */ -export type SyncAcquireResponseDeploymentTargetReleaseExtendAzureBinding = { +export type SyncAcquireResponseDeploymentPreparedStackProfileAzureBinding = { /** * Azure-specific binding specification */ resource?: - | SyncAcquireResponseDeploymentTargetReleaseExtendAzureResource + | SyncAcquireResponseDeploymentPreparedStackProfileAzureResource | undefined; /** * Azure-specific binding specification */ stack?: - | SyncAcquireResponseDeploymentTargetReleaseExtendAzureStack + | SyncAcquireResponseDeploymentPreparedStackProfileAzureStack | undefined; }; /** * Grant permissions for a specific cloud platform */ -export type SyncAcquireResponseDeploymentTargetReleaseExtendAzureGrant = { +export type SyncAcquireResponseDeploymentPreparedStackProfileAzureGrant = { /** * AWS IAM actions (only for AWS) */ @@ -4629,11 +4706,11 @@ export type SyncAcquireResponseDeploymentTargetReleaseExtendAzureGrant = { /** * Azure-specific platform permission configuration */ -export type SyncAcquireResponseDeploymentTargetReleaseExtendAzure = { +export type SyncAcquireResponseDeploymentPreparedStackProfileAzure = { /** * Generic binding configuration for permissions */ - binding: SyncAcquireResponseDeploymentTargetReleaseExtendAzureBinding; + binding: SyncAcquireResponseDeploymentPreparedStackProfileAzureBinding; /** * Short admin-facing description of why this entry exists. */ @@ -4641,7 +4718,7 @@ export type SyncAcquireResponseDeploymentTargetReleaseExtendAzure = { /** * Grant permissions for a specific cloud platform */ - grant: SyncAcquireResponseDeploymentTargetReleaseExtendAzureGrant; + grant: SyncAcquireResponseDeploymentPreparedStackProfileAzureGrant; /** * Stable admin-facing label for this permission entry. */ @@ -4651,22 +4728,22 @@ export type SyncAcquireResponseDeploymentTargetReleaseExtendAzure = { /** * GCP IAM condition */ -export type SyncAcquireResponseDeploymentTargetReleaseExtendConditionResource = +export type SyncAcquireResponseDeploymentPreparedStackProfileConditionResource = { expression: string; title: string; }; -export type SyncAcquireResponseDeploymentTargetReleaseExtendResourceConditionUnion = - | SyncAcquireResponseDeploymentTargetReleaseExtendConditionResource +export type SyncAcquireResponseDeploymentPreparedStackProfileResourceConditionUnion = + | SyncAcquireResponseDeploymentPreparedStackProfileConditionResource | any; /** * GCP-specific binding specification */ -export type SyncAcquireResponseDeploymentTargetReleaseExtendGcpResource = { +export type SyncAcquireResponseDeploymentPreparedStackProfileGcpResource = { condition?: - | SyncAcquireResponseDeploymentTargetReleaseExtendConditionResource + | SyncAcquireResponseDeploymentPreparedStackProfileConditionResource | any | null | undefined; @@ -4679,21 +4756,21 @@ export type SyncAcquireResponseDeploymentTargetReleaseExtendGcpResource = { /** * GCP IAM condition */ -export type SyncAcquireResponseDeploymentTargetReleaseExtendCondition = { +export type SyncAcquireResponseDeploymentPreparedStackProfileConditionStack = { expression: string; title: string; }; -export type SyncAcquireResponseDeploymentTargetReleaseExtendConditionUnion = - | SyncAcquireResponseDeploymentTargetReleaseExtendCondition +export type SyncAcquireResponseDeploymentPreparedStackProfileStackConditionUnion = + | SyncAcquireResponseDeploymentPreparedStackProfileConditionStack | any; /** * GCP-specific binding specification */ -export type SyncAcquireResponseDeploymentTargetReleaseExtendGcpStack = { +export type SyncAcquireResponseDeploymentPreparedStackProfileGcpStack = { condition?: - | SyncAcquireResponseDeploymentTargetReleaseExtendCondition + | SyncAcquireResponseDeploymentPreparedStackProfileConditionStack | any | null | undefined; @@ -4706,23 +4783,23 @@ export type SyncAcquireResponseDeploymentTargetReleaseExtendGcpStack = { /** * Generic binding configuration for permissions */ -export type SyncAcquireResponseDeploymentTargetReleaseExtendGcpBinding = { +export type SyncAcquireResponseDeploymentPreparedStackProfileGcpBinding = { /** * GCP-specific binding specification */ resource?: - | SyncAcquireResponseDeploymentTargetReleaseExtendGcpResource + | SyncAcquireResponseDeploymentPreparedStackProfileGcpResource | undefined; /** * GCP-specific binding specification */ - stack?: SyncAcquireResponseDeploymentTargetReleaseExtendGcpStack | undefined; + stack?: SyncAcquireResponseDeploymentPreparedStackProfileGcpStack | undefined; }; /** * Grant permissions for a specific cloud platform */ -export type SyncAcquireResponseDeploymentTargetReleaseExtendGcpGrant = { +export type SyncAcquireResponseDeploymentPreparedStackProfileGcpGrant = { /** * AWS IAM actions (only for AWS) */ @@ -4748,11 +4825,11 @@ export type SyncAcquireResponseDeploymentTargetReleaseExtendGcpGrant = { /** * GCP-specific platform permission configuration */ -export type SyncAcquireResponseDeploymentTargetReleaseExtendGcp = { +export type SyncAcquireResponseDeploymentPreparedStackProfileGcp = { /** * Generic binding configuration for permissions */ - binding: SyncAcquireResponseDeploymentTargetReleaseExtendGcpBinding; + binding: SyncAcquireResponseDeploymentPreparedStackProfileGcpBinding; /** * Short admin-facing description of why this entry exists. */ @@ -4760,7 +4837,7 @@ export type SyncAcquireResponseDeploymentTargetReleaseExtendGcp = { /** * Grant permissions for a specific cloud platform */ - grant: SyncAcquireResponseDeploymentTargetReleaseExtendGcpGrant; + grant: SyncAcquireResponseDeploymentPreparedStackProfileGcpGrant; /** * Stable admin-facing label for this permission entry. */ @@ -4770,26 +4847,26 @@ export type SyncAcquireResponseDeploymentTargetReleaseExtendGcp = { /** * Platform-specific permission configurations */ -export type SyncAcquireResponseDeploymentTargetReleaseExtendPlatforms = { +export type SyncAcquireResponseDeploymentPreparedStackProfilePlatforms = { /** * AWS permission configurations */ aws?: - | Array + | Array | null | undefined; /** * Azure permission configurations */ azure?: - | Array + | Array | null | undefined; /** * GCP permission configurations */ gcp?: - | Array + | Array | null | undefined; }; @@ -4797,7 +4874,7 @@ export type SyncAcquireResponseDeploymentTargetReleaseExtendPlatforms = { /** * A permission set that can be applied across different cloud platforms */ -export type SyncAcquireResponseDeploymentTargetReleaseExtend = { +export type SyncAcquireResponseDeploymentPreparedStackProfile = { /** * Human-readable description of what this permission set allows */ @@ -4809,435 +4886,481 @@ export type SyncAcquireResponseDeploymentTargetReleaseExtend = { /** * Platform-specific permission configurations */ - platforms: SyncAcquireResponseDeploymentTargetReleaseExtendPlatforms; + platforms: SyncAcquireResponseDeploymentPreparedStackProfilePlatforms; }; /** * Reference to a permission set - either by name or inline definition */ -export type SyncAcquireResponseDeploymentTargetReleaseExtendUnion = - | SyncAcquireResponseDeploymentTargetReleaseExtend +export type SyncAcquireResponseDeploymentPreparedStackProfileUnion = + | SyncAcquireResponseDeploymentPreparedStackProfile | string; -export type SyncAcquireResponseDeploymentTargetReleaseManagement1 = { +/** + * Combined permissions configuration that contains both profiles and management + */ +export type SyncAcquireResponseDeploymentPreparedStackPermissions = { /** - * Permission profile that maps resources to permission sets + * Management permissions configuration for stack management access + */ + management?: + | SyncAcquireResponseDeploymentPreparedStackManagement1 + | SyncAcquireResponseDeploymentPreparedStackManagement2 + | SyncAcquireResponseDeploymentPreparedStackManagementEnum + | undefined; + /** + * Permission profiles that define access control for compute services * * @remarks - * Key can be "*" for all resources or resource name for specific resource + * Key is the profile name, value is the permission configuration */ - extend: { - [k: string]: Array< - SyncAcquireResponseDeploymentTargetReleaseExtend | string - >; + profiles: { + [k: string]: { + [k: string]: Array< + SyncAcquireResponseDeploymentPreparedStackProfile | string + >; + }; }; }; /** - * Management permissions configuration for stack management access - */ -export type SyncAcquireResponseDeploymentTargetReleaseManagementUnion = - | SyncAcquireResponseDeploymentTargetReleaseManagement1 - | SyncAcquireResponseDeploymentTargetReleaseManagement2 - | SyncAcquireResponseDeploymentTargetReleaseManagementEnum; - -/** - * AWS-specific binding specification + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. */ -export type SyncAcquireResponseDeploymentTargetReleaseProfileAwResource = { +export type SyncAcquireResponseDeploymentPreparedStackConfig = { /** - * Optional condition for additional filtering (rare) + * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; + id: string; /** - * Resource ARNs to bind to + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. */ - resources: Array; + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; }; /** - * AWS-specific binding specification + * Reference to a resource by its stable id and resource type. */ -export type SyncAcquireResponseDeploymentTargetReleaseProfileAwStack = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; +export type SyncAcquireResponseDeploymentPreparedStackDependency = { + id: string; /** - * Resource ARNs to bind to + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. */ - resources: Array; + type: string; }; /** - * Generic binding configuration for permissions + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ -export type SyncAcquireResponseDeploymentTargetReleaseProfileAwBinding = { - /** - * AWS-specific binding specification - */ - resource?: - | SyncAcquireResponseDeploymentTargetReleaseProfileAwResource - | undefined; - /** - * AWS-specific binding specification - */ - stack?: SyncAcquireResponseDeploymentTargetReleaseProfileAwStack | undefined; -}; - -/** - * IAM effect. Defaults to Allow. - */ -export const SyncAcquireResponseDeploymentTargetReleaseProfileEffect = { - Allow: "Allow", - Deny: "Deny", +export const SyncAcquireResponseDeploymentPreparedStackLifecycle = { + Frozen: "frozen", + Live: "live", } as const; /** - * IAM effect. Defaults to Allow. + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ -export type SyncAcquireResponseDeploymentTargetReleaseProfileEffect = - ClosedEnum; +export type SyncAcquireResponseDeploymentPreparedStackLifecycle = ClosedEnum< + typeof SyncAcquireResponseDeploymentPreparedStackLifecycle +>; -/** - * Grant permissions for a specific cloud platform - */ -export type SyncAcquireResponseDeploymentTargetReleaseProfileAwGrant = { +export type SyncAcquireResponseDeploymentPreparedStackResources = { /** - * AWS IAM actions (only for AWS) + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. */ - actions?: Array | null | undefined; + config: SyncAcquireResponseDeploymentPreparedStackConfig; /** - * Azure actions (only for Azure) + * Additional dependencies for this resource beyond those defined in the resource itself. + * + * @remarks + * The total dependencies are: resource.get_dependencies() + this list */ - dataActions?: Array | null | undefined; + dependencies: Array; /** - * GCP permissions that require an exact residual custom role. + * Id of the boolean stack input that decides whether this resource is + * + * @remarks + * 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. */ - permissions?: Array | null | undefined; + enabledWhen?: string | null | undefined; /** - * Provider predefined roles to bind directly. + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ - predefinedRoles?: Array | null | undefined; + lifecycle: SyncAcquireResponseDeploymentPreparedStackLifecycle; /** - * GCP residual custom permissions to pair with predefined roles. + * Enable remote bindings for this resource (BYOB use case). + * + * @remarks + * When true, binding params are synced to StackState's `remote_binding_params`. + * Default: false (prevents sensitive data in synced state). */ - residualPermissions?: Array | null | undefined; + remoteAccess?: boolean | undefined; }; /** - * AWS-specific platform permission configuration + * Represents the target cloud platform. */ -export type SyncAcquireResponseDeploymentTargetReleaseProfileAw = { - /** - * Generic binding configuration for permissions - */ - binding: SyncAcquireResponseDeploymentTargetReleaseProfileAwBinding; +export const SyncAcquireResponseDeploymentPreparedStackSupportedPlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Machines: "machines", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type SyncAcquireResponseDeploymentPreparedStackSupportedPlatform = + ClosedEnum< + typeof SyncAcquireResponseDeploymentPreparedStackSupportedPlatform + >; + +/** + * A bag of resources, unaware of any cloud. + */ +export type SyncAcquireResponseDeploymentPreparedStack = { /** - * Short admin-facing description of why this entry exists. + * Unique identifier for the stack */ - description?: string | null | undefined; + id: string; /** - * IAM effect. Defaults to Allow. + * Input definitions required before setup or deployment can proceed. */ - effect?: SyncAcquireResponseDeploymentTargetReleaseProfileEffect | undefined; + inputs?: Array | undefined; /** - * Grant permissions for a specific cloud platform + * Combined permissions configuration that contains both profiles and management */ - grant: SyncAcquireResponseDeploymentTargetReleaseProfileAwGrant; + permissions?: + | SyncAcquireResponseDeploymentPreparedStackPermissions + | undefined; /** - * Stable admin-facing label for this permission entry. + * Map of resource IDs to their configurations and lifecycle settings */ - label?: string | null | undefined; -}; - -/** - * Azure-specific binding specification - */ -export type SyncAcquireResponseDeploymentTargetReleaseProfileAzureResource = { + resources: { + [k: string]: SyncAcquireResponseDeploymentPreparedStackResources; + }; /** - * Scope (subscription/resource group/resource level) + * Which platforms this stack supports. When None, all platforms are supported. */ - scope: string; + supportedPlatforms?: + | Array + | null + | undefined; }; -/** - * Azure-specific binding specification - */ -export type SyncAcquireResponseDeploymentTargetReleaseProfileAzureStack = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; +export type SyncAcquireResponseDeploymentPreparedStackUnion = + | SyncAcquireResponseDeploymentPreparedStack + | any; /** - * Generic binding configuration for permissions + * One-shot authority for a setup re-import to replace setup-owned resources. */ -export type SyncAcquireResponseDeploymentTargetReleaseProfileAzureBinding = { +export type SyncAcquireResponseDeploymentSetupUpdateAuthorization = { /** - * Azure-specific binding specification + * Frozen resource projection from the last successful deployment. */ - resource?: - | SyncAcquireResponseDeploymentTargetReleaseProfileAzureResource - | undefined; + baselineFrozenDigest: string; /** - * Azure-specific binding specification + * Unique revision used by persistence layers for compare-and-swap updates. */ - stack?: - | SyncAcquireResponseDeploymentTargetReleaseProfileAzureStack - | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncAcquireResponseDeploymentTargetReleaseProfileAzureGrant = { + nonce: string; /** - * AWS IAM actions (only for AWS) + * Release whose stack was prepared by setup. */ - actions?: Array | null | undefined; + releaseId: string; /** - * Azure actions (only for Azure) + * Exact setup artifact revision that authored this authority. */ - dataActions?: Array | null | undefined; + setupFingerprint: string; /** - * GCP permissions that require an exact residual custom role. + * Setup fingerprint contract version. */ - permissions?: Array | null | undefined; + setupFingerprintVersion: number; /** - * Provider predefined roles to bind directly. + * Stable setup target recorded on the imported deployment. */ - predefinedRoles?: Array | null | undefined; + setupTarget: string; /** - * GCP residual custom permissions to pair with predefined roles. + * Frozen resource projection prepared by the setup re-import. */ - residualPermissions?: Array | null | undefined; + targetFrozenDigest: string; }; +export type SyncAcquireResponseDeploymentSetupUpdateAuthorizationUnion = + | SyncAcquireResponseDeploymentSetupUpdateAuthorization + | any; + /** - * Azure-specific platform permission configuration + * Runtime metadata for deployment + * + * @remarks + * + * Stores deployment state that needs to persist across step calls. */ -export type SyncAcquireResponseDeploymentTargetReleaseProfileAzure = { +export type SyncAcquireResponseDeploymentRuntimeMetadata = { /** - * Generic binding configuration for permissions + * Actor that owns structural work during the initial setup phase. */ - binding: SyncAcquireResponseDeploymentTargetReleaseProfileAzureBinding; + initialSetupAuthority?: + | SyncAcquireResponseDeploymentInitialSetupAuthority + | undefined; /** - * Short admin-facing description of why this entry exists. + * Hash of the environment variables snapshot that was last synced to the vault + * + * @remarks + * Used to avoid redundant sync operations during incremental deployment */ - description?: string | null | undefined; + lastSyncedEnvVarsHash?: string | null | undefined; /** - * Grant permissions for a specific cloud platform + * Exact vault keys owned by the deployment secret synchronizer. This + * + * @remarks + * inventory lets a later snapshot delete removed keys without listing or + * touching unrelated values in the same vault. */ - grant: SyncAcquireResponseDeploymentTargetReleaseProfileAzureGrant; + lastSyncedSecretNames?: Array | undefined; + pendingPreparedStack?: + | SyncAcquireResponseDeploymentPendingPreparedStack + | any + | null + | undefined; /** - * Stable admin-facing label for this permission entry. + * Canonical resolved answers for inputs that gate Frozen resources, + * + * @remarks + * keyed by input id, recorded when the deployment is created or its + * setup import registers. + * + * A frozen gate's answer is fixed for the deployment's lifetime: the + * update path refuses input values that conflict with these, and a Live + * resource sharing such an input resolves the persisted answer forever. */ - label?: string | null | undefined; + persistedGateAnswers?: { [k: string]: boolean } | undefined; + preparedStack?: + | SyncAcquireResponseDeploymentPreparedStack + | any + | null + | undefined; + /** + * Whether cross-account registry access has been successfully granted. + * + * @remarks + * Set to true after the manager successfully sets the ECR/GAR repo policy + * for this deployment's target account. Prevents redundant API calls on + * every reconcile tick. + */ + registryAccessGranted?: boolean | undefined; + setupUpdateAuthorization?: + | SyncAcquireResponseDeploymentSetupUpdateAuthorization + | any + | null + | undefined; }; +export type SyncAcquireResponseDeploymentRuntimeMetadataUnion = + | SyncAcquireResponseDeploymentRuntimeMetadata + | any; + /** - * GCP IAM condition + * Represents the target cloud platform. */ -export type SyncAcquireResponseDeploymentTargetReleaseProfileConditionResource = - { - expression: string; - title: string; - }; - -export type SyncAcquireResponseDeploymentTargetReleaseProfileResourceConditionUnion = - | SyncAcquireResponseDeploymentTargetReleaseProfileConditionResource - | any; +export const SyncAcquireResponseDeploymentStackStatePlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Machines: "machines", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type SyncAcquireResponseDeploymentStackStatePlatform = ClosedEnum< + typeof SyncAcquireResponseDeploymentStackStatePlatform +>; /** - * GCP-specific binding specification + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. */ -export type SyncAcquireResponseDeploymentTargetReleaseProfileGcpResource = { - condition?: - | SyncAcquireResponseDeploymentTargetReleaseProfileConditionResource - | any - | null - | undefined; +export type SyncAcquireResponseDeploymentStackStateConfig = { /** - * Scope (project/resource level) + * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. */ - scope: string; + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; }; /** - * GCP IAM condition + * Represents the target cloud platform. */ -export type SyncAcquireResponseDeploymentTargetReleaseProfileCondition = { - expression: string; - title: string; -}; - -export type SyncAcquireResponseDeploymentTargetReleaseProfileConditionUnion = - | SyncAcquireResponseDeploymentTargetReleaseProfileCondition - | any; - +export const SyncAcquireResponseDeploymentControllerPlatformEnum = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Machines: "machines", + Local: "local", + Test: "test", +} as const; /** - * GCP-specific binding specification + * Represents the target cloud platform. */ -export type SyncAcquireResponseDeploymentTargetReleaseProfileGcpStack = { - condition?: - | SyncAcquireResponseDeploymentTargetReleaseProfileCondition - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; +export type SyncAcquireResponseDeploymentControllerPlatformEnum = ClosedEnum< + typeof SyncAcquireResponseDeploymentControllerPlatformEnum +>; + +export type SyncAcquireResponseDeploymentControllerPlatformUnion = + | SyncAcquireResponseDeploymentControllerPlatformEnum + | any; /** - * Generic binding configuration for permissions + * Reference to a resource by its stable id and resource type. */ -export type SyncAcquireResponseDeploymentTargetReleaseProfileGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: - | SyncAcquireResponseDeploymentTargetReleaseProfileGcpResource - | undefined; +export type SyncAcquireResponseDeploymentStackStateDependency = { + id: string; /** - * GCP-specific binding specification + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. */ - stack?: SyncAcquireResponseDeploymentTargetReleaseProfileGcpStack | undefined; + type: string; }; /** - * Grant permissions for a specific cloud platform + * Canonical error container that provides a structured way to represent errors + * + * @remarks + * with rich metadata including error codes, human-readable messages, context, + * and chaining capabilities for error propagation. + * + * This struct is designed to be both machine-readable and user-friendly, + * supporting serialization for API responses and detailed error reporting + * in distributed systems. */ -export type SyncAcquireResponseDeploymentTargetReleaseProfileGcpGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; +export type SyncAcquireResponseDeploymentStackStateError = { /** - * Azure actions (only for Azure) + * A unique identifier for the type of error. + * + * @remarks + * + * This should be a short, machine-readable string that can be used + * by clients to programmatically handle different error types. + * Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" */ - dataActions?: Array | null | undefined; + code: string; /** - * GCP permissions that require an exact residual custom role. + * Additional diagnostic information about the error context. + * + * @remarks + * + * This optional field can contain structured data providing more details + * about the error, such as validation errors, request parameters that + * caused the issue, or other relevant context information. */ - permissions?: Array | null | undefined; + context?: any | null | undefined; /** - * Provider predefined roles to bind directly. + * Optional human-facing remediation hint. */ - predefinedRoles?: Array | null | undefined; + hint?: string | null | undefined; /** - * GCP residual custom permissions to pair with predefined roles. + * HTTP status code for this error. + * + * @remarks + * + * Used when converting the error to an HTTP response. If None, falls back to + * the error type's default status code or 500. */ - residualPermissions?: Array | null | undefined; -}; - -/** - * GCP-specific platform permission configuration - */ -export type SyncAcquireResponseDeploymentTargetReleaseProfileGcp = { + httpStatusCode?: number | null | undefined; /** - * Generic binding configuration for permissions + * Indicates if this is an internal error that should not be exposed to users. + * + * @remarks + * + * When `true`, this error contains sensitive information or implementation + * details that should not be shown to end-users. Such errors should be + * logged for debugging but replaced with generic error messages in responses. */ - binding: SyncAcquireResponseDeploymentTargetReleaseProfileGcpBinding; + internal: boolean; /** - * Short admin-facing description of why this entry exists. + * Human-readable error message. + * + * @remarks + * + * This message should be clear and actionable for developers or end-users, + * providing context about what went wrong and potentially how to fix it. */ - description?: string | null | undefined; + message: string; /** - * Grant permissions for a specific cloud platform + * Indicates whether the operation that caused the error should be retried. + * + * @remarks + * + * When `true`, the error is transient and the operation might succeed + * if attempted again. When `false`, retrying the same operation is + * unlikely to succeed without changes. */ - grant: SyncAcquireResponseDeploymentTargetReleaseProfileGcpGrant; + retryable: boolean; /** - * Stable admin-facing label for this permission entry. + * The underlying error that caused this error, creating an error chain. + * + * @remarks + * + * This allows for proper error propagation and debugging by maintaining + * the full context of how an error occurred through multiple layers + * of an application. */ - label?: string | null | undefined; + source?: any | null | undefined; }; -/** - * Platform-specific permission configurations - */ -export type SyncAcquireResponseDeploymentTargetReleaseProfilePlatforms = { - /** - * AWS permission configurations - */ - aws?: - | Array - | null - | undefined; - /** - * Azure permission configurations - */ - azure?: - | Array - | null - | undefined; - /** - * GCP permission configurations - */ - gcp?: - | Array - | null - | undefined; -}; +export type SyncAcquireResponseDeploymentStackStateErrorUnion = + | SyncAcquireResponseDeploymentStackStateError + | any; /** - * A permission set that can be applied across different cloud platforms + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ -export type SyncAcquireResponseDeploymentTargetReleaseProfile = { - /** - * Human-readable description of what this permission set allows - */ - description: string; - /** - * Unique identifier for the permission set (e.g., "storage/data-read") - */ - id: string; - /** - * Platform-specific permission configurations - */ - platforms: SyncAcquireResponseDeploymentTargetReleaseProfilePlatforms; -}; - +export const SyncAcquireResponseDeploymentStackStateLifecycleEnum = { + Frozen: "frozen", + Live: "live", +} as const; /** - * Reference to a permission set - either by name or inline definition + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ -export type SyncAcquireResponseDeploymentTargetReleaseProfileUnion = - | SyncAcquireResponseDeploymentTargetReleaseProfile - | string; +export type SyncAcquireResponseDeploymentStackStateLifecycleEnum = ClosedEnum< + typeof SyncAcquireResponseDeploymentStackStateLifecycleEnum +>; + +export type SyncAcquireResponseDeploymentLifecycleUnion = + | SyncAcquireResponseDeploymentStackStateLifecycleEnum + | any; /** - * Combined permissions configuration that contains both profiles and management + * Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties. */ -export type SyncAcquireResponseDeploymentTargetReleasePermissions = { - /** - * Management permissions configuration for stack management access - */ - management?: - | SyncAcquireResponseDeploymentTargetReleaseManagement1 - | SyncAcquireResponseDeploymentTargetReleaseManagement2 - | SyncAcquireResponseDeploymentTargetReleaseManagementEnum - | undefined; +export type SyncAcquireResponseDeploymentOutputs = { /** - * Permission profiles that define access control for compute services - * - * @remarks - * Key is the profile name, value is the permission configuration + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. */ - profiles: { - [k: string]: { - [k: string]: Array< - SyncAcquireResponseDeploymentTargetReleaseProfile | string - >; - }; - }; + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; }; +export type SyncAcquireResponseDeploymentOutputsUnion = + | SyncAcquireResponseDeploymentOutputs + | any; + /** * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. */ -export type SyncAcquireResponseDeploymentTargetReleaseConfig = { +export type SyncAcquireResponseDeploymentPreviousConfig = { /** * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. */ @@ -5249,2519 +5372,2408 @@ export type SyncAcquireResponseDeploymentTargetReleaseConfig = { additionalProperties?: { [k: string]: any | null } | undefined; }; -/** - * Reference to a resource by its stable id and resource type. - */ -export type SyncAcquireResponseDeploymentTargetReleaseDependency = { - id: string; - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - type: string; -}; +export type SyncAcquireResponseDeploymentPreviousConfigUnion = + | SyncAcquireResponseDeploymentPreviousConfig + | any; /** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + * Represents the high-level status of a resource during its lifecycle. */ -export const SyncAcquireResponseDeploymentTargetReleaseLifecycle = { - Frozen: "frozen", - Live: "live", +export const SyncAcquireResponseDeploymentStackStateStatus = { + Pending: "pending", + Provisioning: "provisioning", + ProvisionFailed: "provision-failed", + Running: "running", + Updating: "updating", + UpdateFailed: "update-failed", + Deleting: "deleting", + DeleteFailed: "delete-failed", + TeardownRequired: "teardown-required", + Deleted: "deleted", + RefreshFailed: "refresh-failed", } as const; /** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + * Represents the high-level status of a resource during its lifecycle. */ -export type SyncAcquireResponseDeploymentTargetReleaseLifecycle = ClosedEnum< - typeof SyncAcquireResponseDeploymentTargetReleaseLifecycle +export type SyncAcquireResponseDeploymentStackStateStatus = ClosedEnum< + typeof SyncAcquireResponseDeploymentStackStateStatus >; -export type SyncAcquireResponseDeploymentTargetReleaseResources = { - /** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. - */ - config: SyncAcquireResponseDeploymentTargetReleaseConfig; +/** + * Represents the state of a single resource within the stack for a specific platform. + */ +export type SyncAcquireResponseDeploymentStackStateResources = { /** - * Additional dependencies for this resource beyond those defined in the resource itself. + * The platform-specific resource controller that manages this resource's lifecycle. * * @remarks - * The total dependencies are: resource.get_dependencies() + this list + * This is None when the resource status is Pending. + * Stored as JSON to make the struct serializable and movable to alien-core. */ - dependencies: Array; + internal?: any | null | undefined; /** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. */ - lifecycle: SyncAcquireResponseDeploymentTargetReleaseLifecycle; + config: SyncAcquireResponseDeploymentStackStateConfig; + controllerPlatform?: + | SyncAcquireResponseDeploymentControllerPlatformEnum + | any + | null + | undefined; /** - * Enable remote bindings for this resource (BYOB use case). + * Complete list of dependencies for this resource, including infrastructure dependencies. * * @remarks - * When true, binding params are synced to StackState's `remote_binding_params`. - * Default: false (prevents sensitive data in synced state). - */ - remoteAccess?: boolean | undefined; -}; - -/** - * Represents the target cloud platform. - */ -export const SyncAcquireResponseDeploymentTargetReleaseSupportedPlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Machines: "machines", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. - */ -export type SyncAcquireResponseDeploymentTargetReleaseSupportedPlatform = - ClosedEnum< - typeof SyncAcquireResponseDeploymentTargetReleaseSupportedPlatform - >; - -/** - * A bag of resources, unaware of any cloud. - */ -export type SyncAcquireResponseDeploymentTargetReleaseStack = { - /** - * Unique identifier for the stack - */ - id: string; - /** - * Input definitions required before setup or deployment can proceed. - */ - inputs?: Array | undefined; - /** - * Combined permissions configuration that contains both profiles and management + * This preserves the full dependency information from the stack definition. */ - permissions?: - | SyncAcquireResponseDeploymentTargetReleasePermissions + dependencies?: + | Array | undefined; + error?: SyncAcquireResponseDeploymentStackStateError | any | null | undefined; /** - * Map of resource IDs to their configurations and lifecycle settings - */ - resources: { - [k: string]: SyncAcquireResponseDeploymentTargetReleaseResources; - }; - /** - * Which platforms this stack supports. When None, all platforms are supported. + * Stores the controller state that failed, used for manual retry operations. + * + * @remarks + * This allows resuming from the exact point where the failure occurred. + * Stored as JSON to make the struct serializable and movable to alien-core. */ - supportedPlatforms?: - | Array + lastFailedState?: any | null | undefined; + lifecycle?: + | SyncAcquireResponseDeploymentStackStateLifecycleEnum + | any + | null + | undefined; + outputs?: SyncAcquireResponseDeploymentOutputs | any | null | undefined; + previousConfig?: + | SyncAcquireResponseDeploymentPreviousConfig + | any | null | undefined; -}; - -/** - * Release metadata - * - * @remarks - * - * Identifies a specific release version and includes the stack definition. - * The deployment engine uses this to track which release is currently deployed - * and which is the target. - */ -export type SyncAcquireResponseDeploymentTargetRelease = { - /** - * Short description of the release - */ - description?: string | null | undefined; /** - * Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no + * Binding parameters for remote access. * * @remarks - * Alien-assigned release — the platform resolves a release from `version`. + * Only populated when the resource has `remote_access: true` in its ResourceEntry. + * This is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding). + * Populated by controllers during provisioning using get_binding_params(). */ - releaseId?: string | null | undefined; + remoteBindingParams?: any | null | undefined; /** - * A bag of resources, unaware of any cloud. + * Tracks consecutive retry attempts for the current state transition. */ - stack: SyncAcquireResponseDeploymentTargetReleaseStack; + retryAttempt?: number | undefined; /** - * Version string (e.g., 2.1.0) + * Represents the high-level status of a resource during its lifecycle. */ - version?: string | null | undefined; + status: SyncAcquireResponseDeploymentStackStateStatus; + /** + * The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE). + */ + type: string; }; -export type SyncAcquireResponseDeploymentTargetReleaseUnion = - | SyncAcquireResponseDeploymentTargetRelease - | any; - /** - * Current deployment state (includes releases) + * Represents the collective state of all resources in a stack, including platform and pending actions. */ -export type SyncAcquireResponseDeploymentCurrent = { - currentRelease?: - | SyncAcquireResponseDeploymentCurrentRelease - | any - | null - | undefined; - environmentInfo?: - | SyncAcquireResponseDeploymentEnvironmentInfoGcp - | SyncAcquireResponseDeploymentEnvironmentInfoAzure - | SyncAcquireResponseDeploymentEnvironmentInfoLocal - | SyncAcquireResponseDeploymentEnvironmentInfoAws - | SyncAcquireResponseDeploymentEnvironmentInfoTest - | any - | null - | undefined; - error?: SyncAcquireResponseDeploymentError | any | null | undefined; +export type SyncAcquireResponseDeploymentStackState = { /** * Represents the target cloud platform. */ - platform: SyncAcquireResponseDeploymentCurrentPlatform; - /** - * Protocol version for cross-actor compatibility. - * - * @remarks - * All actors (manager, push client, agent) check this before stepping. - * Mismatched versions produce a clear error instead of silent corruption. - * See docs/02-manager/10-deployment-protocol.md. - */ - protocolVersion: number; + platform: SyncAcquireResponseDeploymentStackStatePlatform; /** - * Whether a retry has been requested for a failed deployment - * - * @remarks - * When true and status is a failed state, the deployment system will retry failed resources + * A prefix used for resource naming to ensure uniqueness across deployments. */ - retryRequested?: boolean | undefined; - runtimeMetadata?: - | SyncAcquireResponseDeploymentRuntimeMetadata - | any - | null - | undefined; - stackState?: SyncAcquireResponseDeploymentStackState | any | null | undefined; + resourcePrefix: string; /** - * Deployment status in the deployment lifecycle. - * - * @remarks - * - * For observe-only deployments with no release or stack state, `Running` - * means the Operator is attached. Connectivity comes from `lastHeartbeatAt`; - * resource health comes from inventory and resource heartbeat data. + * The state of individual resources, keyed by resource ID. */ - status: SyncAcquireResponseDeploymentStatus; - targetRelease?: - | SyncAcquireResponseDeploymentTargetRelease - | any - | null - | undefined; + resources: { [k: string]: SyncAcquireResponseDeploymentStackStateResources }; }; -/** - * Represents the target cloud platform. - */ -export const SyncAcquireResponseDeploymentBasePlatformEnum = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Machines: "machines", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. - */ -export type SyncAcquireResponseDeploymentBasePlatformEnum = ClosedEnum< - typeof SyncAcquireResponseDeploymentBasePlatformEnum ->; - -export type SyncAcquireResponseDeploymentBasePlatformUnion = - | SyncAcquireResponseDeploymentBasePlatformEnum +export type SyncAcquireResponseDeploymentStackStateUnion = + | SyncAcquireResponseDeploymentStackState | any; /** - * Configuration for a single container worker cluster. + * Deployment status in the deployment lifecycle. * * @remarks * - * Contains the cluster ID and management token needed to interact with - * the managed container control plane API for container operations. + * For observe-only deployments with no release or stack state, `Running` + * means the Operator is attached. Connectivity comes from `lastHeartbeatAt`; + * resource health comes from inventory and resource heartbeat data. */ -export type SyncAcquireResponseDeploymentClusters = { - /** - * Cluster ID (deterministic: workspace/project/deployment/resourceid) - */ - clusterId: string; - /** - * Management token for API access (hm_...) - * - * @remarks - * Used by alien-deployment controllers to create/update containers +export const SyncAcquireResponseDeploymentStatus = { + Pending: "pending", + PreflightsFailed: "preflights-failed", + InitialSetup: "initial-setup", + InitialSetupFailed: "initial-setup-failed", + Provisioning: "provisioning", + WaitingForMachines: "waiting-for-machines", + ProvisioningFailed: "provisioning-failed", + Running: "running", + RefreshFailed: "refresh-failed", + UpdatePending: "update-pending", + Updating: "updating", + UpdateFailed: "update-failed", + DeletePending: "delete-pending", + Deleting: "deleting", + DeleteFailed: "delete-failed", + TeardownRequired: "teardown-required", + TeardownFailed: "teardown-failed", + Deleted: "deleted", + Error: "error", +} as const; +/** + * Deployment status in the deployment lifecycle. + * + * @remarks + * + * For observe-only deployments with no release or stack state, `Running` + * means the Operator is attached. Connectivity comes from `lastHeartbeatAt`; + * resource health comes from inventory and resource heartbeat data. + */ +export type SyncAcquireResponseDeploymentStatus = ClosedEnum< + typeof SyncAcquireResponseDeploymentStatus +>; + +export const SyncAcquireResponseDeploymentTargetReleaseTypeStringList = { + StringList: "stringList", +} as const; +export type SyncAcquireResponseDeploymentTargetReleaseTypeStringList = + ClosedEnum; + +export type SyncAcquireResponseDeploymentTargetReleaseDefaultStringList = { + type: SyncAcquireResponseDeploymentTargetReleaseTypeStringList; + /** + * String list default. */ - managementToken: string; + value: Array; }; -/** - * AWS Horizon machine image catalog. - */ -export type SyncAcquireResponseDeploymentHorizonMachineImageAws = { +export const SyncAcquireResponseDeploymentTargetReleaseTypeBoolean = { + Boolean: "boolean", +} as const; +export type SyncAcquireResponseDeploymentTargetReleaseTypeBoolean = ClosedEnum< + typeof SyncAcquireResponseDeploymentTargetReleaseTypeBoolean +>; + +export type SyncAcquireResponseDeploymentTargetReleaseDefaultBoolean = { + type: SyncAcquireResponseDeploymentTargetReleaseTypeBoolean; /** - * AMI IDs by architecture, then AWS region. + * Boolean default. */ - amis: { [k: string]: { [k: string]: string } }; + value: boolean; }; -export type SyncAcquireResponseDeploymentHorizonMachineImageAwsUnion = - | SyncAcquireResponseDeploymentHorizonMachineImageAws - | any; +export const SyncAcquireResponseDeploymentTargetReleaseTypeNumber = { + Number: "number", +} as const; +export type SyncAcquireResponseDeploymentTargetReleaseTypeNumber = ClosedEnum< + typeof SyncAcquireResponseDeploymentTargetReleaseTypeNumber +>; -/** - * Azure Horizon machine image entry. - */ -export type SyncAcquireResponseDeploymentAzureImages = { +export type SyncAcquireResponseDeploymentTargetReleaseDefaultNumber = { + type: SyncAcquireResponseDeploymentTargetReleaseTypeNumber; /** - * Azure Compute Gallery image version ID. + * Number default. */ - imageVersionId: string; + value: string; }; -/** - * Azure Horizon machine image catalog. - */ -export type SyncAcquireResponseDeploymentHorizonMachineImageAzure = { +export const SyncAcquireResponseDeploymentTargetReleaseTypeString = { + String: "string", +} as const; +export type SyncAcquireResponseDeploymentTargetReleaseTypeString = ClosedEnum< + typeof SyncAcquireResponseDeploymentTargetReleaseTypeString +>; + +export type SyncAcquireResponseDeploymentTargetReleaseDefaultString = { + type: SyncAcquireResponseDeploymentTargetReleaseTypeString; /** - * Images by architecture. + * String default. */ - images: { [k: string]: SyncAcquireResponseDeploymentAzureImages }; + value: string; }; -export type SyncAcquireResponseDeploymentHorizonMachineImageAzureUnion = - | SyncAcquireResponseDeploymentHorizonMachineImageAzure +export type SyncAcquireResponseDeploymentTargetReleaseDefaultUnion = + | SyncAcquireResponseDeploymentTargetReleaseDefaultString + | SyncAcquireResponseDeploymentTargetReleaseDefaultNumber + | SyncAcquireResponseDeploymentTargetReleaseDefaultBoolean + | SyncAcquireResponseDeploymentTargetReleaseDefaultStringList | any; /** - * Base image metadata for the Horizon machine image. + * Environment variable handling for a stack input mapping. */ -export type SyncAcquireResponseDeploymentBaseImage = { +export const SyncAcquireResponseDeploymentTargetReleaseTypeEnvEnum = { + Plain: "plain", + Secret: "secret", +} as const; +/** + * Environment variable handling for a stack input mapping. + */ +export type SyncAcquireResponseDeploymentTargetReleaseTypeEnvEnum = ClosedEnum< + typeof SyncAcquireResponseDeploymentTargetReleaseTypeEnvEnum +>; + +export type SyncAcquireResponseDeploymentTargetReleaseTypeUnion = + | SyncAcquireResponseDeploymentTargetReleaseTypeEnvEnum + | any; + +/** + * How a resolved stack input is injected into runtime environment variables. + */ +export type SyncAcquireResponseDeploymentTargetReleaseEnv = { /** - * Base OS image name. + * Environment variable name. */ name: string; /** - * Base OS image version or channel. + * Target resource IDs or patterns. None means every env-capable resource. */ - version: string; + targetResources?: Array | null | undefined; + type?: + | SyncAcquireResponseDeploymentTargetReleaseTypeEnvEnum + | any + | null + | undefined; }; /** - * GCP Horizon machine image entry. + * Primitive stack input kind. */ -export type SyncAcquireResponseDeploymentGcpImages = { - /** - * Source image self link or image-family URL. - */ - sourceImage: string; -}; +export const SyncAcquireResponseDeploymentTargetReleaseKind = { + String: "string", + Secret: "secret", + Number: "number", + Integer: "integer", + Boolean: "boolean", + Enum: "enum", + StringList: "stringList", +} as const; +/** + * Primitive stack input kind. + */ +export type SyncAcquireResponseDeploymentTargetReleaseKind = ClosedEnum< + typeof SyncAcquireResponseDeploymentTargetReleaseKind +>; /** - * GCP Horizon machine image catalog. + * Represents the target cloud platform. */ -export type SyncAcquireResponseDeploymentHorizonMachineImageGcp = { - /** - * Images by architecture. - */ - images: { [k: string]: SyncAcquireResponseDeploymentGcpImages }; -}; +export const SyncAcquireResponseDeploymentTargetReleasePlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Machines: "machines", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type SyncAcquireResponseDeploymentTargetReleasePlatform = ClosedEnum< + typeof SyncAcquireResponseDeploymentTargetReleasePlatform +>; -export type SyncAcquireResponseDeploymentHorizonMachineImageGcpUnion = - | SyncAcquireResponseDeploymentHorizonMachineImageGcp - | any; +/** + * Who can provide a stack input value. + */ +export const SyncAcquireResponseDeploymentTargetReleaseProvidedBy = { + Developer: "developer", + Deployer: "deployer", +} as const; +/** + * Who can provide a stack input value. + */ +export type SyncAcquireResponseDeploymentTargetReleaseProvidedBy = ClosedEnum< + typeof SyncAcquireResponseDeploymentTargetReleaseProvidedBy +>; /** - * Download artifact for one horizond release platform. + * Portable stack input validation constraints. */ -export type SyncAcquireResponseDeploymentHorizondArtifacts = { +export type SyncAcquireResponseDeploymentTargetReleaseValidation = { /** - * SHA-256 digest for the artifact payload. + * Semantic format hint such as url. */ - sha256: string; + format?: string | null | undefined; /** - * HTTPS URL for the artifact. + * Maximum number. */ - url: string; -}; - -/** - * Horizon machine image catalog. - * - * @remarks - * - * Platform resolves concrete provider images from this catalog during rollout. - */ -export type SyncAcquireResponseDeploymentHorizonMachineImage = { - aws?: - | SyncAcquireResponseDeploymentHorizonMachineImageAws - | any - | null - | undefined; - azure?: - | SyncAcquireResponseDeploymentHorizonMachineImageAzure - | any - | null - | undefined; + max?: string | null | undefined; /** - * Base image metadata for the Horizon machine image. + * Maximum string-list items. */ - baseImage: SyncAcquireResponseDeploymentBaseImage; + maxItems?: number | null | undefined; /** - * Logical image channel, such as prod, staging, or canary. + * Maximum string length. */ - channel: string; + maxLength?: number | null | undefined; /** - * Image manifest creation timestamp. + * Minimum number. */ - createdAt: string; - gcp?: - | SyncAcquireResponseDeploymentHorizonMachineImageGcp - | any - | null - | undefined; + min?: string | null | undefined; /** - * Git commit SHA used to build the image. + * Minimum string-list items. */ - gitSha: string; + minItems?: number | null | undefined; /** - * Per-architecture horizond artifacts by release-platform key. + * Minimum string length. */ - horizondArtifacts: { - [k: string]: SyncAcquireResponseDeploymentHorizondArtifacts; - }; + minLength?: number | null | undefined; /** - * horizond daemon version baked into the image. + * Portable whole-value regex pattern. */ - horizondVersion: string; + pattern?: string | null | undefined; /** - * Published immutable machine image version. + * Allowed string enum values. */ - machineImageVersion: string; + values?: Array | null | undefined; }; -export type SyncAcquireResponseDeploymentHorizonMachineImageUnion = - | SyncAcquireResponseDeploymentHorizonMachineImage +export type SyncAcquireResponseDeploymentTargetReleaseValidationUnion = + | SyncAcquireResponseDeploymentTargetReleaseValidation | any; -export const SyncAcquireResponseDeploymentComputeBackendType = { - Horizon: "horizon", -} as const; -export type SyncAcquireResponseDeploymentComputeBackendType = ClosedEnum< - typeof SyncAcquireResponseDeploymentComputeBackendType ->; - /** - * Compute backend for Container and Worker resources. - * - * @remarks - * - * Determines how compute workloads are orchestrated on cloud platforms. - * When None, the platform default is used for cloud platforms. + * Stack input definition serialized into a release stack. */ -export type SyncAcquireResponseDeploymentComputeBackendHorizon = { +export type SyncAcquireResponseDeploymentTargetReleaseInput = { + default?: + | SyncAcquireResponseDeploymentTargetReleaseDefaultString + | SyncAcquireResponseDeploymentTargetReleaseDefaultNumber + | SyncAcquireResponseDeploymentTargetReleaseDefaultBoolean + | SyncAcquireResponseDeploymentTargetReleaseDefaultStringList + | any + | null + | undefined; /** - * Cluster configurations (one per ComputeCluster resource) - * - * @remarks - * Key: ComputeCluster resource ID from stack - * Value: Cluster ID and management token for that cluster + * Human-facing helper text. */ - clusters: { [k: string]: SyncAcquireResponseDeploymentClusters }; - horizonMachineImage?: - | SyncAcquireResponseDeploymentHorizonMachineImage - | any + description: string; + /** + * Runtime env-var mappings for v1 input resolution. + */ + env?: Array | undefined; + /** + * Stable input ID used by CLI/API calls. + */ + id: string; + /** + * Primitive stack input kind. + */ + kind: SyncAcquireResponseDeploymentTargetReleaseKind; + /** + * Human-facing field label. + */ + label: string; + /** + * Example placeholder shown in UI. + */ + placeholder?: string | null | undefined; + /** + * Platforms where this input applies. + */ + platforms?: + | Array | null | undefined; /** - * Horizon control-plane API base URL. + * Who can provide this value. */ - url: string; - type: SyncAcquireResponseDeploymentComputeBackendType; + providedBy: Array; + /** + * Whether a resolved value is required before deployment can proceed. + */ + required: boolean; + validation?: + | SyncAcquireResponseDeploymentTargetReleaseValidation + | any + | null + | undefined; }; -export type SyncAcquireResponseDeploymentComputeBackendUnion = - | SyncAcquireResponseDeploymentComputeBackendHorizon - | any; +export const SyncAcquireResponseDeploymentTargetReleaseManagementEnum = { + Auto: "auto", +} as const; +export type SyncAcquireResponseDeploymentTargetReleaseManagementEnum = + ClosedEnum; /** - * Certificate status in the certificate lifecycle + * AWS-specific binding specification */ -export const SyncAcquireResponseDeploymentAliasCertificateStatus = { - Pending: "pending", - Issued: "issued", - Renewing: "renewing", - RenewalFailed: "renewal-failed", - Failed: "failed", - Deleting: "deleting", -} as const; +export type SyncAcquireResponseDeploymentTargetReleaseOverrideAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + /** - * Certificate status in the certificate lifecycle + * AWS-specific binding specification */ -export type SyncAcquireResponseDeploymentAliasCertificateStatus = ClosedEnum< - typeof SyncAcquireResponseDeploymentAliasCertificateStatus ->; +export type SyncAcquireResponseDeploymentTargetReleaseOverrideAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; /** - * DNS record status in the DNS lifecycle + * Generic binding configuration for permissions */ -export const SyncAcquireResponseDeploymentAliasDnsStatus = { - Pending: "pending", - Active: "active", - Updating: "updating", - Deleting: "deleting", - Failed: "failed", +export type SyncAcquireResponseDeploymentTargetReleaseOverrideAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: + | SyncAcquireResponseDeploymentTargetReleaseOverrideAwResource + | undefined; + /** + * AWS-specific binding specification + */ + stack?: SyncAcquireResponseDeploymentTargetReleaseOverrideAwStack | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const SyncAcquireResponseDeploymentTargetReleaseOverrideEffect = { + Allow: "Allow", + Deny: "Deny", } as const; /** - * DNS record status in the DNS lifecycle + * IAM effect. Defaults to Allow. */ -export type SyncAcquireResponseDeploymentAliasDnsStatus = ClosedEnum< - typeof SyncAcquireResponseDeploymentAliasDnsStatus ->; +export type SyncAcquireResponseDeploymentTargetReleaseOverrideEffect = + ClosedEnum; /** - * Certificate and DNS metadata for a managed hostname. - * - * @remarks - * - * Includes decrypted certificate data for issued certificates. - * Private keys are deployment-scoped secrets (like environment variables). + * Grant permissions for a specific cloud platform */ -export type SyncAcquireResponseDeploymentAlias = { +export type SyncAcquireResponseDeploymentTargetReleaseOverrideAwGrant = { /** - * Full PEM certificate chain (only present if status is "issued"). + * AWS IAM actions (only for AWS) */ - certificateChain?: string | null | undefined; + actions?: Array | null | undefined; /** - * Certificate ID (for tracking/logging). + * Azure actions (only for Azure) */ - certificateId: string; + dataActions?: Array | null | undefined; /** - * Certificate status in the certificate lifecycle + * GCP permissions that require an exact residual custom role. */ - certificateStatus: SyncAcquireResponseDeploymentAliasCertificateStatus; + permissions?: Array | null | undefined; /** - * Last DNS error message. Present when DNS previously failed, even if status - * - * @remarks - * was reset to pending for retry. Used to surface actionable error context - * in WaitingForDns failure messages. + * Provider predefined roles to bind directly. */ - dnsError?: string | null | undefined; + predefinedRoles?: Array | null | undefined; /** - * DNS record status in the DNS lifecycle + * GCP residual custom permissions to pair with predefined roles. */ - dnsStatus: SyncAcquireResponseDeploymentAliasDnsStatus; + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type SyncAcquireResponseDeploymentTargetReleaseOverrideAw = { /** - * Fully qualified domain name. + * Generic binding configuration for permissions */ - fqdn: string; + binding: SyncAcquireResponseDeploymentTargetReleaseOverrideAwBinding; /** - * ISO 8601 timestamp when certificate was issued (for renewal detection). + * Short admin-facing description of why this entry exists. */ - issuedAt?: string | null | undefined; + description?: string | null | undefined; /** - * Decrypted private key (only present if status is "issued"). + * IAM effect. Defaults to Allow. */ - privateKey?: string | null | undefined; + effect?: SyncAcquireResponseDeploymentTargetReleaseOverrideEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncAcquireResponseDeploymentTargetReleaseOverrideAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; }; /** - * Certificate status in the certificate lifecycle + * Azure-specific binding specification */ -export const SyncAcquireResponseDeploymentCertificateStatus = { - Pending: "pending", - Issued: "issued", - Renewing: "renewing", - RenewalFailed: "renewal-failed", - Failed: "failed", - Deleting: "deleting", -} as const; +export type SyncAcquireResponseDeploymentTargetReleaseOverrideAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + /** - * Certificate status in the certificate lifecycle + * Azure-specific binding specification */ -export type SyncAcquireResponseDeploymentCertificateStatus = ClosedEnum< - typeof SyncAcquireResponseDeploymentCertificateStatus ->; +export type SyncAcquireResponseDeploymentTargetReleaseOverrideAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; /** - * DNS record status in the DNS lifecycle - */ -export const SyncAcquireResponseDeploymentDnsStatus = { - Pending: "pending", - Active: "active", - Updating: "updating", - Deleting: "deleting", - Failed: "failed", -} as const; -/** - * DNS record status in the DNS lifecycle - */ -export type SyncAcquireResponseDeploymentDnsStatus = ClosedEnum< - typeof SyncAcquireResponseDeploymentDnsStatus ->; - -/** - * Certificate status in the certificate lifecycle - */ -export const SyncAcquireResponseDeploymentEndpointsCertificateStatus = { - Pending: "pending", - Issued: "issued", - Renewing: "renewing", - RenewalFailed: "renewal-failed", - Failed: "failed", - Deleting: "deleting", -} as const; -/** - * Certificate status in the certificate lifecycle - */ -export type SyncAcquireResponseDeploymentEndpointsCertificateStatus = - ClosedEnum; - -/** - * DNS record status in the DNS lifecycle - */ -export const SyncAcquireResponseDeploymentEndpointsDnsStatus = { - Pending: "pending", - Active: "active", - Updating: "updating", - Deleting: "deleting", - Failed: "failed", -} as const; -/** - * DNS record status in the DNS lifecycle + * Generic binding configuration for permissions */ -export type SyncAcquireResponseDeploymentEndpointsDnsStatus = ClosedEnum< - typeof SyncAcquireResponseDeploymentEndpointsDnsStatus ->; +export type SyncAcquireResponseDeploymentTargetReleaseOverrideAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: + | SyncAcquireResponseDeploymentTargetReleaseOverrideAzureResource + | undefined; + /** + * Azure-specific binding specification + */ + stack?: + | SyncAcquireResponseDeploymentTargetReleaseOverrideAzureStack + | undefined; +}; /** - * Certificate and DNS metadata for a managed hostname. - * - * @remarks - * - * Includes decrypted certificate data for issued certificates. - * Private keys are deployment-scoped secrets (like environment variables). + * Grant permissions for a specific cloud platform */ -export type SyncAcquireResponseDeploymentEndpoints = { +export type SyncAcquireResponseDeploymentTargetReleaseOverrideAzureGrant = { /** - * Full PEM certificate chain (only present if status is "issued"). + * AWS IAM actions (only for AWS) */ - certificateChain?: string | null | undefined; + actions?: Array | null | undefined; /** - * Certificate ID (for tracking/logging). + * Azure actions (only for Azure) */ - certificateId: string; + dataActions?: Array | null | undefined; /** - * Certificate status in the certificate lifecycle + * GCP permissions that require an exact residual custom role. */ - certificateStatus: SyncAcquireResponseDeploymentEndpointsCertificateStatus; + permissions?: Array | null | undefined; /** - * Last DNS error message. Present when DNS previously failed, even if status - * - * @remarks - * was reset to pending for retry. Used to surface actionable error context - * in WaitingForDns failure messages. + * Provider predefined roles to bind directly. */ - dnsError?: string | null | undefined; + predefinedRoles?: Array | null | undefined; /** - * DNS record status in the DNS lifecycle + * GCP residual custom permissions to pair with predefined roles. */ - dnsStatus: SyncAcquireResponseDeploymentEndpointsDnsStatus; + residualPermissions?: Array | null | undefined; +}; + +/** + * Azure-specific platform permission configuration + */ +export type SyncAcquireResponseDeploymentTargetReleaseOverrideAzure = { /** - * Fully qualified domain name. + * Generic binding configuration for permissions */ - fqdn: string; + binding: SyncAcquireResponseDeploymentTargetReleaseOverrideAzureBinding; /** - * ISO 8601 timestamp when certificate was issued (for renewal detection). + * Short admin-facing description of why this entry exists. */ - issuedAt?: string | null | undefined; + description?: string | null | undefined; /** - * Decrypted private key (only present if status is "issued"). + * Grant permissions for a specific cloud platform */ - privateKey?: string | null | undefined; + grant: SyncAcquireResponseDeploymentTargetReleaseOverrideAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; }; /** - * Certificate and DNS metadata for a public resource. - * - * @remarks - * - * The direct fields describe the primary endpoint hostname. `endpoints` - * contains endpoint-scoped metadata keyed by endpoint name. `aliases` contains - * additional managed hostnames that route directly to the primary endpoint. + * GCP IAM condition */ -export type SyncAcquireResponseDeploymentDomainMetadataResources = { - /** - * Additional managed hostnames for the resource. - */ - aliases?: Array | undefined; +export type SyncAcquireResponseDeploymentTargetReleaseOverrideConditionResource = + { + expression: string; + title: string; + }; + +export type SyncAcquireResponseDeploymentTargetReleaseOverrideResourceConditionUnion = + | SyncAcquireResponseDeploymentTargetReleaseOverrideConditionResource + | any; + +/** + * GCP-specific binding specification + */ +export type SyncAcquireResponseDeploymentTargetReleaseOverrideGcpResource = { + condition?: + | SyncAcquireResponseDeploymentTargetReleaseOverrideConditionResource + | any + | null + | undefined; /** - * Full PEM certificate chain (only present if status is "issued"). + * Scope (project/resource level) */ - certificateChain?: string | null | undefined; + scope: string; +}; + +/** + * GCP IAM condition + */ +export type SyncAcquireResponseDeploymentTargetReleaseOverrideCondition = { + expression: string; + title: string; +}; + +export type SyncAcquireResponseDeploymentTargetReleaseOverrideConditionUnion = + | SyncAcquireResponseDeploymentTargetReleaseOverrideCondition + | any; + +/** + * GCP-specific binding specification + */ +export type SyncAcquireResponseDeploymentTargetReleaseOverrideGcpStack = { + condition?: + | SyncAcquireResponseDeploymentTargetReleaseOverrideCondition + | any + | null + | undefined; /** - * Certificate ID (for tracking/logging). + * Scope (project/resource level) */ - certificateId: string; + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncAcquireResponseDeploymentTargetReleaseOverrideGcpBinding = { /** - * Certificate status in the certificate lifecycle + * GCP-specific binding specification */ - certificateStatus: SyncAcquireResponseDeploymentCertificateStatus; + resource?: + | SyncAcquireResponseDeploymentTargetReleaseOverrideGcpResource + | undefined; /** - * Last DNS error message. + * GCP-specific binding specification */ - dnsError?: string | null | undefined; + stack?: + | SyncAcquireResponseDeploymentTargetReleaseOverrideGcpStack + | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncAcquireResponseDeploymentTargetReleaseOverrideGcpGrant = { /** - * DNS record status in the DNS lifecycle + * AWS IAM actions (only for AWS) */ - dnsStatus: SyncAcquireResponseDeploymentDnsStatus; + actions?: Array | null | undefined; /** - * Endpoint-scoped metadata keyed by endpoint name. + * Azure actions (only for Azure) */ - endpoints?: - | { [k: string]: SyncAcquireResponseDeploymentEndpoints } - | undefined; + dataActions?: Array | null | undefined; /** - * Fully qualified domain name. + * GCP permissions that require an exact residual custom role. */ - fqdn: string; + permissions?: Array | null | undefined; /** - * ISO 8601 timestamp when certificate was issued (for renewal detection). + * Provider predefined roles to bind directly. */ - issuedAt?: string | null | undefined; + predefinedRoles?: Array | null | undefined; /** - * Decrypted private key (only present if status is "issued"). + * GCP residual custom permissions to pair with predefined roles. */ - privateKey?: string | null | undefined; + residualPermissions?: Array | null | undefined; }; /** - * Domain metadata for auto-managed public resources (no private keys). + * GCP-specific platform permission configuration */ -export type SyncAcquireResponseDeploymentDomainMetadata = { +export type SyncAcquireResponseDeploymentTargetReleaseOverrideGcp = { /** - * Base domain for auto-generated domains (e.g., "vpc.direct"). + * Generic binding configuration for permissions */ - baseDomain: string; + binding: SyncAcquireResponseDeploymentTargetReleaseOverrideGcpBinding; /** - * Hosted zone ID for DNS records. + * Short admin-facing description of why this entry exists. */ - hostedZoneId: string; + description?: string | null | undefined; /** - * Deployment public subdomain (e.g., "k8f2j3"). + * Grant permissions for a specific cloud platform */ - publicSubdomain: string; + grant: SyncAcquireResponseDeploymentTargetReleaseOverrideGcpGrant; /** - * Metadata per resource ID. + * Stable admin-facing label for this permission entry. */ - resources: { - [k: string]: SyncAcquireResponseDeploymentDomainMetadataResources; - }; + label?: string | null | undefined; }; -export type SyncAcquireResponseDeploymentDomainMetadataUnion = - | SyncAcquireResponseDeploymentDomainMetadata - | any; - /** - * Type of environment variable + * Platform-specific permission configurations */ -export const SyncAcquireResponseDeploymentEnvironmentVariablesType = { - Plain: "plain", - Secret: "secret", -} as const; -/** - * Type of environment variable - */ -export type SyncAcquireResponseDeploymentEnvironmentVariablesType = ClosedEnum< - typeof SyncAcquireResponseDeploymentEnvironmentVariablesType ->; - -/** - * Environment variable for deployment - */ -export type SyncAcquireResponseDeploymentVariable = { - /** - * Variable name - */ - name: string; +export type SyncAcquireResponseDeploymentTargetReleaseOverridePlatforms = { /** - * Target resource patterns (null = all resources, Some = wildcard patterns) + * AWS permission configurations */ - targetResources?: Array | null | undefined; + aws?: + | Array + | null + | undefined; /** - * Type of environment variable + * Azure permission configurations */ - type: SyncAcquireResponseDeploymentEnvironmentVariablesType; + azure?: + | Array + | null + | undefined; /** - * Variable value (decrypted - deployment has access to decryption keys) + * GCP permission configurations */ - value: string; + gcp?: + | Array + | null + | undefined; }; /** - * Snapshot of environment variables at a point in time + * A permission set that can be applied across different cloud platforms */ -export type SyncAcquireResponseDeploymentEnvironmentVariables = { +export type SyncAcquireResponseDeploymentTargetReleaseOverride = { /** - * ISO 8601 timestamp when snapshot was created + * Human-readable description of what this permission set allows */ - createdAt: string; + description: string; /** - * Deterministic hash of all variables (for change detection) + * Unique identifier for the permission set (e.g., "storage/data-read") */ - hash: string; + id: string; /** - * Environment variables in the snapshot + * Platform-specific permission configurations */ - variables: Array; + platforms: SyncAcquireResponseDeploymentTargetReleaseOverridePlatforms; }; /** - * Reference to a Kubernetes Secret + * Reference to a permission set - either by name or inline definition */ -export type SyncAcquireResponseDeploymentDatabaseSecretRef6 = { - key: string; - name: string; -}; +export type SyncAcquireResponseDeploymentTargetReleaseOverrideUnion = + | SyncAcquireResponseDeploymentTargetReleaseOverride + | string; -export type SyncAcquireResponseDeploymentDatabase6 = { +export type SyncAcquireResponseDeploymentTargetReleaseManagement2 = { /** - * Reference to a Kubernetes Secret + * Permission profile that maps resources to permission sets + * + * @remarks + * Key can be "*" for all resources or resource name for specific resource */ - secretRef: SyncAcquireResponseDeploymentDatabaseSecretRef6; + override: { + [k: string]: Array< + SyncAcquireResponseDeploymentTargetReleaseOverride | string + >; + }; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncAcquireResponseDeploymentDatabaseUnion5 = - | SyncAcquireResponseDeploymentDatabase6 - | any - | string; - -/** - * Reference to a Kubernetes Secret + * AWS-specific binding specification */ -export type SyncAcquireResponseDeploymentHostSecretRef4 = { - key: string; - name: string; -}; - -export type SyncAcquireResponseDeploymentHost4 = { +export type SyncAcquireResponseDeploymentTargetReleaseExtendAwResource = { /** - * Reference to a Kubernetes Secret + * Optional condition for additional filtering (rare) */ - secretRef: SyncAcquireResponseDeploymentHostSecretRef4; + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncAcquireResponseDeploymentHostUnion4 = - | SyncAcquireResponseDeploymentHost4 - | any - | string; - -/** - * Reference to a Kubernetes Secret + * AWS-specific binding specification */ -export type SyncAcquireResponseDeploymentPortSecretRef5 = { - key: string; - name: string; -}; - -export type SyncAcquireResponseDeploymentPort5 = { +export type SyncAcquireResponseDeploymentTargetReleaseExtendAwStack = { /** - * Reference to a Kubernetes Secret + * Optional condition for additional filtering (rare) */ - secretRef: SyncAcquireResponseDeploymentPortSecretRef5; + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncAcquireResponseDeploymentPortUnion5 = - | SyncAcquireResponseDeploymentPort5 - | number - | any; - -/** - * Reference to a Kubernetes Secret + * Generic binding configuration for permissions */ -export type SyncAcquireResponseDeploymentUsernameSecretRef5 = { - key: string; - name: string; -}; - -export type SyncAcquireResponseDeploymentUsername5 = { +export type SyncAcquireResponseDeploymentTargetReleaseExtendAwBinding = { /** - * Reference to a Kubernetes Secret + * AWS-specific binding specification */ - secretRef: SyncAcquireResponseDeploymentUsernameSecretRef5; + resource?: + | SyncAcquireResponseDeploymentTargetReleaseExtendAwResource + | undefined; + /** + * AWS-specific binding specification + */ + stack?: SyncAcquireResponseDeploymentTargetReleaseExtendAwStack | undefined; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * IAM effect. Defaults to Allow. */ -export type SyncAcquireResponseDeploymentUsernameUnion5 = - | SyncAcquireResponseDeploymentUsername5 - | any - | string; - -export const SyncAcquireResponseDeploymentTypePostgres5 = { - Postgres: "postgres", +export const SyncAcquireResponseDeploymentTargetReleaseExtendEffect = { + Allow: "Allow", + Deny: "Deny", } as const; -export type SyncAcquireResponseDeploymentTypePostgres5 = ClosedEnum< - typeof SyncAcquireResponseDeploymentTypePostgres5 +/** + * IAM effect. Defaults to Allow. + */ +export type SyncAcquireResponseDeploymentTargetReleaseExtendEffect = ClosedEnum< + typeof SyncAcquireResponseDeploymentTargetReleaseExtendEffect >; /** - * Local embedded Postgres binding. + * Grant permissions for a specific cloud platform */ -export type SyncAcquireResponseDeploymentExternalBindingsLocalPostgres = { +export type SyncAcquireResponseDeploymentTargetReleaseExtendAwGrant = { /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * AWS IAM actions (only for AWS) */ - database?: - | SyncAcquireResponseDeploymentDatabase6 - | any - | string - | null - | undefined; + actions?: Array | null | undefined; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Azure actions (only for Azure) */ - host?: SyncAcquireResponseDeploymentHost4 | any | string | null | undefined; - password: string; + dataActions?: Array | null | undefined; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * GCP permissions that require an exact residual custom role. */ - port?: SyncAcquireResponseDeploymentPort5 | number | any | null | undefined; + permissions?: Array | null | undefined; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Provider predefined roles to bind directly. */ - username?: - | SyncAcquireResponseDeploymentUsername5 - | any - | string - | null - | undefined; - service: "local-postgres"; - type: SyncAcquireResponseDeploymentTypePostgres5; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseDeploymentDatabaseSecretRef5 = { - key: string; - name: string; -}; - -export type SyncAcquireResponseDeploymentDatabase5 = { + predefinedRoles?: Array | null | undefined; /** - * Reference to a Kubernetes Secret + * GCP residual custom permissions to pair with predefined roles. */ - secretRef: SyncAcquireResponseDeploymentDatabaseSecretRef5; + residualPermissions?: Array | null | undefined; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * AWS-specific platform permission configuration */ -export type SyncAcquireResponseDeploymentDatabaseUnion4 = - | SyncAcquireResponseDeploymentDatabase5 - | any - | string; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseDeploymentHostSecretRef3 = { - key: string; - name: string; -}; - -export type SyncAcquireResponseDeploymentHost3 = { +export type SyncAcquireResponseDeploymentTargetReleaseExtendAw = { /** - * Reference to a Kubernetes Secret + * Generic binding configuration for permissions */ - secretRef: SyncAcquireResponseDeploymentHostSecretRef3; + binding: SyncAcquireResponseDeploymentTargetReleaseExtendAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: SyncAcquireResponseDeploymentTargetReleaseExtendEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncAcquireResponseDeploymentTargetReleaseExtendAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncAcquireResponseDeploymentHostUnion3 = - | SyncAcquireResponseDeploymentHost3 - | any - | string; - -/** - * Reference to a Kubernetes Secret + * Azure-specific binding specification */ -export type SyncAcquireResponseDeploymentPortSecretRef4 = { - key: string; - name: string; -}; - -export type SyncAcquireResponseDeploymentPort4 = { +export type SyncAcquireResponseDeploymentTargetReleaseExtendAzureResource = { /** - * Reference to a Kubernetes Secret + * Scope (subscription/resource group/resource level) */ - secretRef: SyncAcquireResponseDeploymentPortSecretRef4; + scope: string; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncAcquireResponseDeploymentPortUnion4 = - | SyncAcquireResponseDeploymentPort4 - | number - | any; - -/** - * Reference to a Kubernetes Secret + * Azure-specific binding specification */ -export type SyncAcquireResponseDeploymentUsernameSecretRef4 = { - key: string; - name: string; -}; - -export type SyncAcquireResponseDeploymentUsername4 = { +export type SyncAcquireResponseDeploymentTargetReleaseExtendAzureStack = { /** - * Reference to a Kubernetes Secret + * Scope (subscription/resource group/resource level) */ - secretRef: SyncAcquireResponseDeploymentUsernameSecretRef4; + scope: string; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Generic binding configuration for permissions */ -export type SyncAcquireResponseDeploymentUsernameUnion4 = - | SyncAcquireResponseDeploymentUsername4 - | any - | string; - -export const SyncAcquireResponseDeploymentTypePostgres4 = { - Postgres: "postgres", -} as const; -export type SyncAcquireResponseDeploymentTypePostgres4 = ClosedEnum< - typeof SyncAcquireResponseDeploymentTypePostgres4 ->; +export type SyncAcquireResponseDeploymentTargetReleaseExtendAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: + | SyncAcquireResponseDeploymentTargetReleaseExtendAzureResource + | undefined; + /** + * Azure-specific binding specification + */ + stack?: + | SyncAcquireResponseDeploymentTargetReleaseExtendAzureStack + | undefined; +}; /** - * Operator-provided / BYO database binding. + * Grant permissions for a specific cloud platform */ -export type SyncAcquireResponseDeploymentExternalBindingsExternal = { +export type SyncAcquireResponseDeploymentTargetReleaseExtendAzureGrant = { /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * AWS IAM actions (only for AWS) */ - database?: - | SyncAcquireResponseDeploymentDatabase5 - | any - | string - | null - | undefined; + actions?: Array | null | undefined; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Azure actions (only for Azure) */ - host?: SyncAcquireResponseDeploymentHost3 | any | string | null | undefined; + dataActions?: Array | null | undefined; /** - * Connection password as a concrete value, never an unresolved `SecretRef`: the platform - * - * @remarks - * materializes the Kubernetes secret into the pod env. The cloud variants carry a secret - * locator instead. + * GCP permissions that require an exact residual custom role. */ - password: string; + permissions?: Array | null | undefined; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Provider predefined roles to bind directly. */ - port?: SyncAcquireResponseDeploymentPort4 | number | any | null | undefined; + predefinedRoles?: Array | null | undefined; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * GCP residual custom permissions to pair with predefined roles. */ - username?: - | SyncAcquireResponseDeploymentUsername4 - | any - | string - | null - | undefined; - service: "external"; - type: SyncAcquireResponseDeploymentTypePostgres4; + residualPermissions?: Array | null | undefined; }; /** - * Reference to a Kubernetes Secret + * Azure-specific platform permission configuration */ -export type SyncAcquireResponseDeploymentDatabaseSecretRef4 = { - key: string; - name: string; -}; - -export type SyncAcquireResponseDeploymentDatabase4 = { +export type SyncAcquireResponseDeploymentTargetReleaseExtendAzure = { /** - * Reference to a Kubernetes Secret + * Generic binding configuration for permissions */ - secretRef: SyncAcquireResponseDeploymentDatabaseSecretRef4; + binding: SyncAcquireResponseDeploymentTargetReleaseExtendAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncAcquireResponseDeploymentTargetReleaseExtendAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * GCP IAM condition */ -export type SyncAcquireResponseDeploymentDatabaseUnion3 = - | SyncAcquireResponseDeploymentDatabase4 - | any - | string; +export type SyncAcquireResponseDeploymentTargetReleaseExtendConditionResource = + { + expression: string; + title: string; + }; + +export type SyncAcquireResponseDeploymentTargetReleaseExtendResourceConditionUnion = + | SyncAcquireResponseDeploymentTargetReleaseExtendConditionResource + | any; /** - * Reference to a Kubernetes Secret + * GCP-specific binding specification */ -export type SyncAcquireResponseDeploymentHostSecretRef2 = { - key: string; - name: string; -}; - -export type SyncAcquireResponseDeploymentHost2 = { +export type SyncAcquireResponseDeploymentTargetReleaseExtendGcpResource = { + condition?: + | SyncAcquireResponseDeploymentTargetReleaseExtendConditionResource + | any + | null + | undefined; /** - * Reference to a Kubernetes Secret + * Scope (project/resource level) */ - secretRef: SyncAcquireResponseDeploymentHostSecretRef2; + scope: string; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * GCP IAM condition */ -export type SyncAcquireResponseDeploymentHostUnion2 = - | SyncAcquireResponseDeploymentHost2 - | any - | string; +export type SyncAcquireResponseDeploymentTargetReleaseExtendCondition = { + expression: string; + title: string; +}; + +export type SyncAcquireResponseDeploymentTargetReleaseExtendConditionUnion = + | SyncAcquireResponseDeploymentTargetReleaseExtendCondition + | any; /** - * Reference to a Kubernetes Secret + * GCP-specific binding specification */ -export type SyncAcquireResponseDeploymentPasswordSecretUriSecretRef = { - key: string; - name: string; -}; - -export type SyncAcquireResponseDeploymentPasswordSecretUri = { +export type SyncAcquireResponseDeploymentTargetReleaseExtendGcpStack = { + condition?: + | SyncAcquireResponseDeploymentTargetReleaseExtendCondition + | any + | null + | undefined; /** - * Reference to a Kubernetes Secret + * Scope (project/resource level) */ - secretRef: SyncAcquireResponseDeploymentPasswordSecretUriSecretRef; + scope: string; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncAcquireResponseDeploymentPasswordSecretUriUnion = - | SyncAcquireResponseDeploymentPasswordSecretUri - | any - | string; - -/** - * Reference to a Kubernetes Secret + * Generic binding configuration for permissions */ -export type SyncAcquireResponseDeploymentPortSecretRef3 = { - key: string; - name: string; -}; - -export type SyncAcquireResponseDeploymentPort3 = { +export type SyncAcquireResponseDeploymentTargetReleaseExtendGcpBinding = { /** - * Reference to a Kubernetes Secret + * GCP-specific binding specification */ - secretRef: SyncAcquireResponseDeploymentPortSecretRef3; + resource?: + | SyncAcquireResponseDeploymentTargetReleaseExtendGcpResource + | undefined; + /** + * GCP-specific binding specification + */ + stack?: SyncAcquireResponseDeploymentTargetReleaseExtendGcpStack | undefined; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncAcquireResponseDeploymentPortUnion3 = - | SyncAcquireResponseDeploymentPort3 - | number - | any; - -/** - * Reference to a Kubernetes Secret + * Grant permissions for a specific cloud platform */ -export type SyncAcquireResponseDeploymentUsernameSecretRef3 = { - key: string; - name: string; -}; - -export type SyncAcquireResponseDeploymentUsername3 = { +export type SyncAcquireResponseDeploymentTargetReleaseExtendGcpGrant = { /** - * Reference to a Kubernetes Secret + * AWS IAM actions (only for AWS) */ - secretRef: SyncAcquireResponseDeploymentUsernameSecretRef3; + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * GCP-specific platform permission configuration */ -export type SyncAcquireResponseDeploymentUsernameUnion3 = - | SyncAcquireResponseDeploymentUsername3 - | any - | string; - -export const SyncAcquireResponseDeploymentTypePostgres3 = { - Postgres: "postgres", -} as const; -export type SyncAcquireResponseDeploymentTypePostgres3 = ClosedEnum< - typeof SyncAcquireResponseDeploymentTypePostgres3 ->; +export type SyncAcquireResponseDeploymentTargetReleaseExtendGcp = { + /** + * Generic binding configuration for permissions + */ + binding: SyncAcquireResponseDeploymentTargetReleaseExtendGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncAcquireResponseDeploymentTargetReleaseExtendGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; /** - * Azure Flexible Server binding. + * Platform-specific permission configurations */ -export type SyncAcquireResponseDeploymentExternalBindingsFlexibleServer = { +export type SyncAcquireResponseDeploymentTargetReleaseExtendPlatforms = { /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * AWS permission configurations */ - database?: - | SyncAcquireResponseDeploymentDatabase4 - | any - | string + aws?: + | Array | null | undefined; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - host?: SyncAcquireResponseDeploymentHost2 | any | string | null | undefined; - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Azure permission configurations */ - passwordSecretUri?: - | SyncAcquireResponseDeploymentPasswordSecretUri - | any - | string + azure?: + | Array | null | undefined; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - port?: SyncAcquireResponseDeploymentPort3 | number | any | null | undefined; - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * GCP permission configurations */ - username?: - | SyncAcquireResponseDeploymentUsername3 - | any - | string + gcp?: + | Array | null | undefined; - service: "flexible-server"; - type: SyncAcquireResponseDeploymentTypePostgres3; }; /** - * Reference to a Kubernetes Secret + * A permission set that can be applied across different cloud platforms */ -export type SyncAcquireResponseDeploymentDatabaseSecretRef3 = { - key: string; - name: string; -}; - -export type SyncAcquireResponseDeploymentDatabase3 = { +export type SyncAcquireResponseDeploymentTargetReleaseExtend = { /** - * Reference to a Kubernetes Secret + * Human-readable description of what this permission set allows */ - secretRef: SyncAcquireResponseDeploymentDatabaseSecretRef3; + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: SyncAcquireResponseDeploymentTargetReleaseExtendPlatforms; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Reference to a permission set - either by name or inline definition */ -export type SyncAcquireResponseDeploymentDatabaseUnion2 = - | SyncAcquireResponseDeploymentDatabase3 - | any +export type SyncAcquireResponseDeploymentTargetReleaseExtendUnion = + | SyncAcquireResponseDeploymentTargetReleaseExtend | string; -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseDeploymentHostSecretRef1 = { - key: string; - name: string; -}; - -export type SyncAcquireResponseDeploymentHost1 = { +export type SyncAcquireResponseDeploymentTargetReleaseManagement1 = { /** - * Reference to a Kubernetes Secret + * Permission profile that maps resources to permission sets + * + * @remarks + * Key can be "*" for all resources or resource name for specific resource */ - secretRef: SyncAcquireResponseDeploymentHostSecretRef1; + extend: { + [k: string]: Array< + SyncAcquireResponseDeploymentTargetReleaseExtend | string + >; + }; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Management permissions configuration for stack management access */ -export type SyncAcquireResponseDeploymentHostUnion1 = - | SyncAcquireResponseDeploymentHost1 - | any - | string; +export type SyncAcquireResponseDeploymentTargetReleaseManagementUnion = + | SyncAcquireResponseDeploymentTargetReleaseManagement1 + | SyncAcquireResponseDeploymentTargetReleaseManagement2 + | SyncAcquireResponseDeploymentTargetReleaseManagementEnum; /** - * Reference to a Kubernetes Secret + * AWS-specific binding specification */ -export type SyncAcquireResponseDeploymentPasswordSecretNameSecretRef = { - key: string; - name: string; +export type SyncAcquireResponseDeploymentTargetReleaseProfileAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; }; -export type SyncAcquireResponseDeploymentPasswordSecretName = { +/** + * AWS-specific binding specification + */ +export type SyncAcquireResponseDeploymentTargetReleaseProfileAwStack = { /** - * Reference to a Kubernetes Secret + * Optional condition for additional filtering (rare) */ - secretRef: SyncAcquireResponseDeploymentPasswordSecretNameSecretRef; + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Generic binding configuration for permissions */ -export type SyncAcquireResponseDeploymentPasswordSecretNameUnion = - | SyncAcquireResponseDeploymentPasswordSecretName - | any - | string; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseDeploymentPortSecretRef2 = { - key: string; - name: string; -}; - -export type SyncAcquireResponseDeploymentPort2 = { +export type SyncAcquireResponseDeploymentTargetReleaseProfileAwBinding = { /** - * Reference to a Kubernetes Secret + * AWS-specific binding specification */ - secretRef: SyncAcquireResponseDeploymentPortSecretRef2; + resource?: + | SyncAcquireResponseDeploymentTargetReleaseProfileAwResource + | undefined; + /** + * AWS-specific binding specification + */ + stack?: SyncAcquireResponseDeploymentTargetReleaseProfileAwStack | undefined; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * IAM effect. Defaults to Allow. */ -export type SyncAcquireResponseDeploymentPortUnion2 = - | SyncAcquireResponseDeploymentPort2 - | number - | any; - +export const SyncAcquireResponseDeploymentTargetReleaseProfileEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; /** - * Reference to a Kubernetes Secret + * IAM effect. Defaults to Allow. */ -export type SyncAcquireResponseDeploymentUsernameSecretRef2 = { - key: string; - name: string; -}; +export type SyncAcquireResponseDeploymentTargetReleaseProfileEffect = + ClosedEnum; -export type SyncAcquireResponseDeploymentUsername2 = { +/** + * Grant permissions for a specific cloud platform + */ +export type SyncAcquireResponseDeploymentTargetReleaseProfileAwGrant = { /** - * Reference to a Kubernetes Secret + * AWS IAM actions (only for AWS) */ - secretRef: SyncAcquireResponseDeploymentUsernameSecretRef2; + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncAcquireResponseDeploymentUsernameUnion2 = - | SyncAcquireResponseDeploymentUsername2 - | any - | string; - -export const SyncAcquireResponseDeploymentTypePostgres2 = { - Postgres: "postgres", -} as const; -export type SyncAcquireResponseDeploymentTypePostgres2 = ClosedEnum< - typeof SyncAcquireResponseDeploymentTypePostgres2 ->; - -/** - * GCP Cloud SQL binding. + * AWS-specific platform permission configuration */ -export type SyncAcquireResponseDeploymentExternalBindingsCloudSQL = { +export type SyncAcquireResponseDeploymentTargetReleaseProfileAw = { /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Generic binding configuration for permissions */ - database?: - | SyncAcquireResponseDeploymentDatabase3 - | any - | string - | null - | undefined; + binding: SyncAcquireResponseDeploymentTargetReleaseProfileAwBinding; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Short admin-facing description of why this entry exists. */ - host?: SyncAcquireResponseDeploymentHost1 | any | string | null | undefined; + description?: string | null | undefined; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * IAM effect. Defaults to Allow. */ - passwordSecretName?: - | SyncAcquireResponseDeploymentPasswordSecretName - | any - | string - | null - | undefined; + effect?: SyncAcquireResponseDeploymentTargetReleaseProfileEffect | undefined; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Grant permissions for a specific cloud platform */ - port?: SyncAcquireResponseDeploymentPort2 | number | any | null | undefined; + grant: SyncAcquireResponseDeploymentTargetReleaseProfileAwGrant; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Stable admin-facing label for this permission entry. */ - username?: - | SyncAcquireResponseDeploymentUsername2 - | any - | string - | null - | undefined; - service: "cloud-sql"; - type: SyncAcquireResponseDeploymentTypePostgres2; + label?: string | null | undefined; }; /** - * Reference to a Kubernetes Secret + * Azure-specific binding specification */ -export type SyncAcquireResponseDeploymentClusterEndpointSecretRef = { - key: string; - name: string; -}; - -export type SyncAcquireResponseDeploymentClusterEndpoint = { +export type SyncAcquireResponseDeploymentTargetReleaseProfileAzureResource = { /** - * Reference to a Kubernetes Secret + * Scope (subscription/resource group/resource level) */ - secretRef: SyncAcquireResponseDeploymentClusterEndpointSecretRef; + scope: string; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Azure-specific binding specification */ -export type SyncAcquireResponseDeploymentClusterEndpointUnion = - | SyncAcquireResponseDeploymentClusterEndpoint - | any - | string; +export type SyncAcquireResponseDeploymentTargetReleaseProfileAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; /** - * Reference to a Kubernetes Secret + * Generic binding configuration for permissions */ -export type SyncAcquireResponseDeploymentDatabaseSecretRef2 = { - key: string; - name: string; -}; - -export type SyncAcquireResponseDeploymentDatabase2 = { +export type SyncAcquireResponseDeploymentTargetReleaseProfileAzureBinding = { /** - * Reference to a Kubernetes Secret + * Azure-specific binding specification */ - secretRef: SyncAcquireResponseDeploymentDatabaseSecretRef2; + resource?: + | SyncAcquireResponseDeploymentTargetReleaseProfileAzureResource + | undefined; + /** + * Azure-specific binding specification + */ + stack?: + | SyncAcquireResponseDeploymentTargetReleaseProfileAzureStack + | undefined; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Grant permissions for a specific cloud platform */ -export type SyncAcquireResponseDeploymentDatabaseUnion1 = - | SyncAcquireResponseDeploymentDatabase2 - | any - | string; +export type SyncAcquireResponseDeploymentTargetReleaseProfileAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; /** - * Reference to a Kubernetes Secret + * Azure-specific platform permission configuration */ -export type SyncAcquireResponseDeploymentPasswordSecretArnSecretRef = { - key: string; - name: string; -}; - -export type SyncAcquireResponseDeploymentPasswordSecretArn = { +export type SyncAcquireResponseDeploymentTargetReleaseProfileAzure = { /** - * Reference to a Kubernetes Secret + * Generic binding configuration for permissions */ - secretRef: SyncAcquireResponseDeploymentPasswordSecretArnSecretRef; + binding: SyncAcquireResponseDeploymentTargetReleaseProfileAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncAcquireResponseDeploymentTargetReleaseProfileAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * GCP IAM condition */ -export type SyncAcquireResponseDeploymentPasswordSecretArnUnion = - | SyncAcquireResponseDeploymentPasswordSecretArn - | any - | string; +export type SyncAcquireResponseDeploymentTargetReleaseProfileConditionResource = + { + expression: string; + title: string; + }; + +export type SyncAcquireResponseDeploymentTargetReleaseProfileResourceConditionUnion = + | SyncAcquireResponseDeploymentTargetReleaseProfileConditionResource + | any; /** - * Reference to a Kubernetes Secret + * GCP-specific binding specification */ -export type SyncAcquireResponseDeploymentPortSecretRef1 = { - key: string; - name: string; -}; - -export type SyncAcquireResponseDeploymentPort1 = { +export type SyncAcquireResponseDeploymentTargetReleaseProfileGcpResource = { + condition?: + | SyncAcquireResponseDeploymentTargetReleaseProfileConditionResource + | any + | null + | undefined; /** - * Reference to a Kubernetes Secret + * Scope (project/resource level) */ - secretRef: SyncAcquireResponseDeploymentPortSecretRef1; + scope: string; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * GCP IAM condition */ -export type SyncAcquireResponseDeploymentPortUnion1 = - | SyncAcquireResponseDeploymentPort1 - | number +export type SyncAcquireResponseDeploymentTargetReleaseProfileCondition = { + expression: string; + title: string; +}; + +export type SyncAcquireResponseDeploymentTargetReleaseProfileConditionUnion = + | SyncAcquireResponseDeploymentTargetReleaseProfileCondition | any; /** - * Reference to a Kubernetes Secret + * GCP-specific binding specification */ -export type SyncAcquireResponseDeploymentUsernameSecretRef1 = { - key: string; - name: string; +export type SyncAcquireResponseDeploymentTargetReleaseProfileGcpStack = { + condition?: + | SyncAcquireResponseDeploymentTargetReleaseProfileCondition + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; }; -export type SyncAcquireResponseDeploymentUsername1 = { +/** + * Generic binding configuration for permissions + */ +export type SyncAcquireResponseDeploymentTargetReleaseProfileGcpBinding = { /** - * Reference to a Kubernetes Secret + * GCP-specific binding specification */ - secretRef: SyncAcquireResponseDeploymentUsernameSecretRef1; + resource?: + | SyncAcquireResponseDeploymentTargetReleaseProfileGcpResource + | undefined; + /** + * GCP-specific binding specification + */ + stack?: SyncAcquireResponseDeploymentTargetReleaseProfileGcpStack | undefined; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Grant permissions for a specific cloud platform */ -export type SyncAcquireResponseDeploymentUsernameUnion1 = - | SyncAcquireResponseDeploymentUsername1 - | any - | string; +export type SyncAcquireResponseDeploymentTargetReleaseProfileGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; -export const SyncAcquireResponseDeploymentTypePostgres1 = { - Postgres: "postgres", -} as const; -export type SyncAcquireResponseDeploymentTypePostgres1 = ClosedEnum< - typeof SyncAcquireResponseDeploymentTypePostgres1 ->; +/** + * GCP-specific platform permission configuration + */ +export type SyncAcquireResponseDeploymentTargetReleaseProfileGcp = { + /** + * Generic binding configuration for permissions + */ + binding: SyncAcquireResponseDeploymentTargetReleaseProfileGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncAcquireResponseDeploymentTargetReleaseProfileGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; /** - * AWS Aurora Serverless v2 binding. + * Platform-specific permission configurations */ -export type SyncAcquireResponseDeploymentExternalBindingsAurora = { +export type SyncAcquireResponseDeploymentTargetReleaseProfilePlatforms = { /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * AWS permission configurations */ - clusterEndpoint?: - | SyncAcquireResponseDeploymentClusterEndpoint - | any - | string + aws?: + | Array | null | undefined; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Azure permission configurations */ - database?: - | SyncAcquireResponseDeploymentDatabase2 - | any - | string + azure?: + | Array | null | undefined; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * GCP permission configurations */ - passwordSecretArn?: - | SyncAcquireResponseDeploymentPasswordSecretArn - | any - | string + gcp?: + | Array | null | undefined; +}; + +/** + * A permission set that can be applied across different cloud platforms + */ +export type SyncAcquireResponseDeploymentTargetReleaseProfile = { /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Human-readable description of what this permission set allows */ - port?: SyncAcquireResponseDeploymentPort1 | number | any | null | undefined; + description: string; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Unique identifier for the permission set (e.g., "storage/data-read") */ - username?: - | SyncAcquireResponseDeploymentUsername1 - | any - | string - | null - | undefined; - service: "aurora"; - type: SyncAcquireResponseDeploymentTypePostgres1; + id: string; + /** + * Platform-specific permission configurations + */ + platforms: SyncAcquireResponseDeploymentTargetReleaseProfilePlatforms; }; /** - * Connection details for a Postgres database, one variant per backend. + * Reference to a permission set - either by name or inline definition */ -export type SyncAcquireResponseDeploymentExternalBindingsUnion6 = - | SyncAcquireResponseDeploymentExternalBindingsAurora - | SyncAcquireResponseDeploymentExternalBindingsCloudSQL - | SyncAcquireResponseDeploymentExternalBindingsFlexibleServer - | SyncAcquireResponseDeploymentExternalBindingsExternal - | SyncAcquireResponseDeploymentExternalBindingsLocalPostgres; +export type SyncAcquireResponseDeploymentTargetReleaseProfileUnion = + | SyncAcquireResponseDeploymentTargetReleaseProfile + | string; /** - * Reference to a Kubernetes Secret + * Combined permissions configuration that contains both profiles and management */ -export type SyncAcquireResponseDeploymentDefaultDomainSecretRef = { - key: string; - name: string; +export type SyncAcquireResponseDeploymentTargetReleasePermissions = { + /** + * Management permissions configuration for stack management access + */ + management?: + | SyncAcquireResponseDeploymentTargetReleaseManagement1 + | SyncAcquireResponseDeploymentTargetReleaseManagement2 + | SyncAcquireResponseDeploymentTargetReleaseManagementEnum + | undefined; + /** + * Permission profiles that define access control for compute services + * + * @remarks + * Key is the profile name, value is the permission configuration + */ + profiles: { + [k: string]: { + [k: string]: Array< + SyncAcquireResponseDeploymentTargetReleaseProfile | string + >; + }; + }; }; -export type SyncAcquireResponseDeploymentDefaultDomain = { +/** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ +export type SyncAcquireResponseDeploymentTargetReleaseConfig = { /** - * Reference to a Kubernetes Secret + * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. */ - secretRef: SyncAcquireResponseDeploymentDefaultDomainSecretRef; + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Reference to a resource by its stable id and resource type. */ -export type SyncAcquireResponseDeploymentDefaultDomainUnion = - | SyncAcquireResponseDeploymentDefaultDomain - | any - | string; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseDeploymentEnvironmentNameSecretRef = { - key: string; - name: string; -}; - -export type SyncAcquireResponseDeploymentEnvironmentName = { +export type SyncAcquireResponseDeploymentTargetReleaseDependency = { + id: string; /** - * Reference to a Kubernetes Secret + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. */ - secretRef: SyncAcquireResponseDeploymentEnvironmentNameSecretRef; + type: string; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ -export type SyncAcquireResponseDeploymentEnvironmentNameUnion = - | SyncAcquireResponseDeploymentEnvironmentName - | any - | string; - +export const SyncAcquireResponseDeploymentTargetReleaseLifecycle = { + Frozen: "frozen", + Live: "live", +} as const; /** - * Reference to a Kubernetes Secret + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ -export type SyncAcquireResponseDeploymentResourceGroupNameSecretRef3 = { - key: string; - name: string; -}; +export type SyncAcquireResponseDeploymentTargetReleaseLifecycle = ClosedEnum< + typeof SyncAcquireResponseDeploymentTargetReleaseLifecycle +>; -export type SyncAcquireResponseDeploymentResourceGroupName3 = { +export type SyncAcquireResponseDeploymentTargetReleaseResources = { /** - * Reference to a Kubernetes Secret + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. */ - secretRef: SyncAcquireResponseDeploymentResourceGroupNameSecretRef3; + config: SyncAcquireResponseDeploymentTargetReleaseConfig; + /** + * Additional dependencies for this resource beyond those defined in the resource itself. + * + * @remarks + * The total dependencies are: resource.get_dependencies() + this list + */ + dependencies: Array; + /** + * Id of the boolean stack input that decides whether this resource is + * + * @remarks + * 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. + */ + enabledWhen?: string | null | undefined; + /** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ + lifecycle: SyncAcquireResponseDeploymentTargetReleaseLifecycle; + /** + * Enable remote bindings for this resource (BYOB use case). + * + * @remarks + * When true, binding params are synced to StackState's `remote_binding_params`. + * Default: false (prevents sensitive data in synced state). + */ + remoteAccess?: boolean | undefined; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Represents the target cloud platform. */ -export type SyncAcquireResponseDeploymentResourceGroupNameUnion3 = - | SyncAcquireResponseDeploymentResourceGroupName3 - | any - | string; - +export const SyncAcquireResponseDeploymentTargetReleaseSupportedPlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Machines: "machines", + Local: "local", + Test: "test", +} as const; /** - * Reference to a Kubernetes Secret + * Represents the target cloud platform. */ -export type SyncAcquireResponseDeploymentResourceIdSecretRef = { - key: string; - name: string; -}; +export type SyncAcquireResponseDeploymentTargetReleaseSupportedPlatform = + ClosedEnum< + typeof SyncAcquireResponseDeploymentTargetReleaseSupportedPlatform + >; -export type SyncAcquireResponseDeploymentResourceId = { +/** + * A bag of resources, unaware of any cloud. + */ +export type SyncAcquireResponseDeploymentTargetReleaseStack = { /** - * Reference to a Kubernetes Secret + * Unique identifier for the stack */ - secretRef: SyncAcquireResponseDeploymentResourceIdSecretRef; + id: string; + /** + * Input definitions required before setup or deployment can proceed. + */ + inputs?: Array | undefined; + /** + * Combined permissions configuration that contains both profiles and management + */ + permissions?: + | SyncAcquireResponseDeploymentTargetReleasePermissions + | undefined; + /** + * Map of resource IDs to their configurations and lifecycle settings + */ + resources: { + [k: string]: SyncAcquireResponseDeploymentTargetReleaseResources; + }; + /** + * Which platforms this stack supports. When None, all platforms are supported. + */ + supportedPlatforms?: + | Array + | null + | undefined; }; /** - * Represents a value that can be either a concrete value, a template expression, + * Release metadata * * @remarks - * or a reference to a Kubernetes Secret + * + * Identifies a specific release version and includes the stack definition. + * The deployment engine uses this to track which release is currently deployed + * and which is the target. */ -export type SyncAcquireResponseDeploymentResourceIdUnion = - | SyncAcquireResponseDeploymentResourceId - | any - | string; +export type SyncAcquireResponseDeploymentTargetRelease = { + /** + * Short description of the release + */ + description?: string | null | undefined; + /** + * Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no + * + * @remarks + * Alien-assigned release — the platform resolves a release from `version`. + */ + releaseId?: string | null | undefined; + /** + * A bag of resources, unaware of any cloud. + */ + stack: SyncAcquireResponseDeploymentTargetReleaseStack; + /** + * Version string (e.g., 2.1.0) + */ + version?: string | null | undefined; +}; + +export type SyncAcquireResponseDeploymentTargetReleaseUnion = + | SyncAcquireResponseDeploymentTargetRelease + | any; /** - * Reference to a Kubernetes Secret + * Current deployment state (includes releases) */ -export type SyncAcquireResponseDeploymentStaticIpSecretRef = { - key: string; - name: string; -}; - -export type SyncAcquireResponseDeploymentStaticIp = { +export type SyncAcquireResponseDeploymentCurrent = { + currentRelease?: + | SyncAcquireResponseDeploymentCurrentRelease + | any + | null + | undefined; + environmentInfo?: + | SyncAcquireResponseDeploymentEnvironmentInfoGcp + | SyncAcquireResponseDeploymentEnvironmentInfoAzure + | SyncAcquireResponseDeploymentEnvironmentInfoLocal + | SyncAcquireResponseDeploymentEnvironmentInfoAws + | SyncAcquireResponseDeploymentEnvironmentInfoTest + | any + | null + | undefined; + error?: SyncAcquireResponseDeploymentError | any | null | undefined; /** - * Reference to a Kubernetes Secret + * Represents the target cloud platform. */ - secretRef: SyncAcquireResponseDeploymentStaticIpSecretRef; + platform: SyncAcquireResponseDeploymentCurrentPlatform; + /** + * Protocol version for cross-actor compatibility. + * + * @remarks + * All actors (manager, push client, agent) check this before stepping. + * Mismatched versions produce a clear error instead of silent corruption. + * See docs/02-manager/10-deployment-protocol.md. + */ + protocolVersion: number; + /** + * Whether a retry has been requested for a failed deployment + * + * @remarks + * When true and status is a failed state, the deployment system will retry failed resources + */ + retryRequested?: boolean | undefined; + runtimeMetadata?: + | SyncAcquireResponseDeploymentRuntimeMetadata + | any + | null + | undefined; + stackState?: SyncAcquireResponseDeploymentStackState | any | null | undefined; + /** + * Deployment status in the deployment lifecycle. + * + * @remarks + * + * For observe-only deployments with no release or stack state, `Running` + * means the Operator is attached. Connectivity comes from `lastHeartbeatAt`; + * resource health comes from inventory and resource heartbeat data. + */ + status: SyncAcquireResponseDeploymentStatus; + targetRelease?: + | SyncAcquireResponseDeploymentTargetRelease + | any + | null + | undefined; }; -export const SyncAcquireResponseDeploymentTypeContainerAppsEnvironment = { - ContainerAppsEnvironment: "container_apps_environment", -} as const; -export type SyncAcquireResponseDeploymentTypeContainerAppsEnvironment = - ClosedEnum; - /** - * Binding configuration for a pre-existing Azure Container Apps Environment. - * - * @remarks - * - * Used when deploying to an existing environment instead of having Alien provision one. - * This is useful for shared environments (e.g., test infrastructure) or enterprise - * setups where environments are managed by a separate team. + * Represents the target cloud platform. */ -export type SyncAcquireResponseDeploymentExternalBindingsContainerAppsEnvironment = - { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - defaultDomain?: - | SyncAcquireResponseDeploymentDefaultDomain - | any - | string - | null - | undefined; - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - environmentName?: - | SyncAcquireResponseDeploymentEnvironmentName - | any - | string - | null - | undefined; - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - resourceGroupName?: - | SyncAcquireResponseDeploymentResourceGroupName3 - | any - | string - | null - | undefined; - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - resourceId?: - | SyncAcquireResponseDeploymentResourceId - | any - | string - | null - | undefined; - staticIp?: any | null | undefined; - type: SyncAcquireResponseDeploymentTypeContainerAppsEnvironment; - }; - +export const SyncAcquireResponseDeploymentBasePlatformEnum = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Machines: "machines", + Local: "local", + Test: "test", +} as const; /** - * Reference to a Kubernetes Secret + * Represents the target cloud platform. */ -export type SyncAcquireResponseDeploymentDataDirSecretRef3 = { - key: string; - name: string; -}; +export type SyncAcquireResponseDeploymentBasePlatformEnum = ClosedEnum< + typeof SyncAcquireResponseDeploymentBasePlatformEnum +>; -export type SyncAcquireResponseDeploymentDataDir3 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseDeploymentDataDirSecretRef3; -}; +export type SyncAcquireResponseDeploymentBasePlatformUnion = + | SyncAcquireResponseDeploymentBasePlatformEnum + | any; /** - * Represents a value that can be either a concrete value, a template expression, + * Configuration for a single container worker cluster. * * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncAcquireResponseDeploymentDataDirUnion2 = - | SyncAcquireResponseDeploymentDataDir3 - | any - | string; - -export const SyncAcquireResponseDeploymentTypeVault5 = { - Vault: "vault", -} as const; -export type SyncAcquireResponseDeploymentTypeVault5 = ClosedEnum< - typeof SyncAcquireResponseDeploymentTypeVault5 ->; - -/** - * Local development vault binding (for testing/development) + * + * Contains the cluster ID and management token needed to interact with + * the managed container control plane API for container operations. */ -export type SyncAcquireResponseDeploymentExternalBindingsLocalVault = { +export type SyncAcquireResponseDeploymentClusters = { /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Cluster ID (deterministic: workspace/project/deployment/resourceid) */ - dataDir?: - | SyncAcquireResponseDeploymentDataDir3 - | any - | string - | null - | undefined; + clusterId: string; /** - * The vault name for local storage + * Management token for API access (hm_...) + * + * @remarks + * Used by alien-deployment controllers to create/update containers */ - vaultName: string; - service: "local-vault"; - type: SyncAcquireResponseDeploymentTypeVault5; + managementToken: string; }; /** - * Reference to a Kubernetes Secret + * AWS Horizon machine image catalog. */ -export type SyncAcquireResponseDeploymentNamespaceSecretRef2 = { - key: string; - name: string; -}; - -export type SyncAcquireResponseDeploymentNamespace2 = { +export type SyncAcquireResponseDeploymentHorizonMachineImageAws = { /** - * Reference to a Kubernetes Secret + * AMI IDs by architecture, then AWS region. */ - secretRef: SyncAcquireResponseDeploymentNamespaceSecretRef2; + amis: { [k: string]: { [k: string]: string } }; }; -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncAcquireResponseDeploymentNamespaceUnion2 = - | SyncAcquireResponseDeploymentNamespace2 - | any - | string; +export type SyncAcquireResponseDeploymentHorizonMachineImageAwsUnion = + | SyncAcquireResponseDeploymentHorizonMachineImageAws + | any; /** - * Reference to a Kubernetes Secret + * Azure Horizon machine image entry. */ -export type SyncAcquireResponseDeploymentVaultPrefixSecretRef3 = { - key: string; - name: string; -}; - -export type SyncAcquireResponseDeploymentVaultPrefix3 = { +export type SyncAcquireResponseDeploymentAzureImages = { /** - * Reference to a Kubernetes Secret + * Azure Compute Gallery image version ID. */ - secretRef: SyncAcquireResponseDeploymentVaultPrefixSecretRef3; + imageVersionId: string; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Azure Horizon machine image catalog. */ -export type SyncAcquireResponseDeploymentVaultPrefixUnion3 = - | SyncAcquireResponseDeploymentVaultPrefix3 - | any - | string; +export type SyncAcquireResponseDeploymentHorizonMachineImageAzure = { + /** + * Images by architecture. + */ + images: { [k: string]: SyncAcquireResponseDeploymentAzureImages }; +}; -export const SyncAcquireResponseDeploymentTypeVault4 = { - Vault: "vault", -} as const; -export type SyncAcquireResponseDeploymentTypeVault4 = ClosedEnum< - typeof SyncAcquireResponseDeploymentTypeVault4 ->; +export type SyncAcquireResponseDeploymentHorizonMachineImageAzureUnion = + | SyncAcquireResponseDeploymentHorizonMachineImageAzure + | any; /** - * Kubernetes Secrets vault binding configuration + * Base image metadata for the Horizon machine image. */ -export type SyncAcquireResponseDeploymentExternalBindingsKubernetesSecret = { +export type SyncAcquireResponseDeploymentBaseImage = { /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Base OS image name. */ - namespace?: - | SyncAcquireResponseDeploymentNamespace2 - | any - | string - | null - | undefined; + name: string; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Base OS image version or channel. */ - vaultPrefix?: - | SyncAcquireResponseDeploymentVaultPrefix3 - | any - | string - | null - | undefined; - service: "kubernetes-secret"; - type: SyncAcquireResponseDeploymentTypeVault4; + version: string; }; /** - * Reference to a Kubernetes Secret + * GCP Horizon machine image entry. */ -export type SyncAcquireResponseDeploymentVaultNameSecretRef = { - key: string; - name: string; -}; - -export type SyncAcquireResponseDeploymentVaultName = { +export type SyncAcquireResponseDeploymentGcpImages = { /** - * Reference to a Kubernetes Secret + * Source image self link or image-family URL. */ - secretRef: SyncAcquireResponseDeploymentVaultNameSecretRef; + sourceImage: string; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * GCP Horizon machine image catalog. */ -export type SyncAcquireResponseDeploymentVaultNameUnion = - | SyncAcquireResponseDeploymentVaultName - | any - | string; +export type SyncAcquireResponseDeploymentHorizonMachineImageGcp = { + /** + * Images by architecture. + */ + images: { [k: string]: SyncAcquireResponseDeploymentGcpImages }; +}; -export const SyncAcquireResponseDeploymentTypeVault3 = { - Vault: "vault", -} as const; -export type SyncAcquireResponseDeploymentTypeVault3 = ClosedEnum< - typeof SyncAcquireResponseDeploymentTypeVault3 ->; +export type SyncAcquireResponseDeploymentHorizonMachineImageGcpUnion = + | SyncAcquireResponseDeploymentHorizonMachineImageGcp + | any; /** - * Azure Key Vault binding configuration + * Download artifact for one horizond release platform. */ -export type SyncAcquireResponseDeploymentExternalBindingsKeyVault = { +export type SyncAcquireResponseDeploymentHorizondArtifacts = { /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * SHA-256 digest for the artifact payload. */ - vaultName?: - | SyncAcquireResponseDeploymentVaultName - | any - | string - | null - | undefined; - service: "key-vault"; - type: SyncAcquireResponseDeploymentTypeVault3; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseDeploymentVaultPrefixSecretRef2 = { - key: string; - name: string; -}; - -export type SyncAcquireResponseDeploymentVaultPrefix2 = { + sha256: string; /** - * Reference to a Kubernetes Secret + * HTTPS URL for the artifact. */ - secretRef: SyncAcquireResponseDeploymentVaultPrefixSecretRef2; + url: string; }; /** - * Represents a value that can be either a concrete value, a template expression, + * Horizon machine image catalog. * * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncAcquireResponseDeploymentVaultPrefixUnion2 = - | SyncAcquireResponseDeploymentVaultPrefix2 - | any - | string; - -export const SyncAcquireResponseDeploymentTypeVault2 = { - Vault: "vault", -} as const; -export type SyncAcquireResponseDeploymentTypeVault2 = ClosedEnum< - typeof SyncAcquireResponseDeploymentTypeVault2 ->; - -/** - * GCP Secret Manager vault binding configuration + * + * Platform resolves concrete provider images from this catalog during rollout. */ -export type SyncAcquireResponseDeploymentExternalBindingsSecretManager = { +export type SyncAcquireResponseDeploymentHorizonMachineImage = { + aws?: + | SyncAcquireResponseDeploymentHorizonMachineImageAws + | any + | null + | undefined; + azure?: + | SyncAcquireResponseDeploymentHorizonMachineImageAzure + | any + | null + | undefined; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Base image metadata for the Horizon machine image. */ - vaultPrefix?: - | SyncAcquireResponseDeploymentVaultPrefix2 + baseImage: SyncAcquireResponseDeploymentBaseImage; + /** + * Logical image channel, such as prod, staging, or canary. + */ + channel: string; + /** + * Image manifest creation timestamp. + */ + createdAt: string; + gcp?: + | SyncAcquireResponseDeploymentHorizonMachineImageGcp | any - | string | null | undefined; - service: "secret-manager"; - type: SyncAcquireResponseDeploymentTypeVault2; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseDeploymentVaultPrefixSecretRef1 = { - key: string; - name: string; -}; - -export type SyncAcquireResponseDeploymentVaultPrefix1 = { /** - * Reference to a Kubernetes Secret + * Git commit SHA used to build the image. */ - secretRef: SyncAcquireResponseDeploymentVaultPrefixSecretRef1; + gitSha: string; + /** + * Per-architecture horizond artifacts by release-platform key. + */ + horizondArtifacts: { + [k: string]: SyncAcquireResponseDeploymentHorizondArtifacts; + }; + /** + * horizond daemon version baked into the image. + */ + horizondVersion: string; + /** + * Published immutable machine image version. + */ + machineImageVersion: string; }; -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncAcquireResponseDeploymentVaultPrefixUnion1 = - | SyncAcquireResponseDeploymentVaultPrefix1 - | any - | string; +export type SyncAcquireResponseDeploymentHorizonMachineImageUnion = + | SyncAcquireResponseDeploymentHorizonMachineImage + | any; -export const SyncAcquireResponseDeploymentTypeVault1 = { - Vault: "vault", +export const SyncAcquireResponseDeploymentComputeBackendType = { + Horizon: "horizon", } as const; -export type SyncAcquireResponseDeploymentTypeVault1 = ClosedEnum< - typeof SyncAcquireResponseDeploymentTypeVault1 +export type SyncAcquireResponseDeploymentComputeBackendType = ClosedEnum< + typeof SyncAcquireResponseDeploymentComputeBackendType >; /** - * AWS SSM Parameter Store vault binding configuration + * Compute backend for Container and Worker resources. + * + * @remarks + * + * Determines how compute workloads are orchestrated on cloud platforms. + * When None, the platform default is used for cloud platforms. */ -export type SyncAcquireResponseDeploymentExternalBindingsParameterStore = { +export type SyncAcquireResponseDeploymentComputeBackendHorizon = { /** - * Represents a value that can be either a concrete value, a template expression, + * Cluster configurations (one per ComputeCluster resource) * * @remarks - * or a reference to a Kubernetes Secret + * Key: ComputeCluster resource ID from stack + * Value: Cluster ID and management token for that cluster */ - vaultPrefix?: - | SyncAcquireResponseDeploymentVaultPrefix1 + clusters: { [k: string]: SyncAcquireResponseDeploymentClusters }; + horizonMachineImage?: + | SyncAcquireResponseDeploymentHorizonMachineImage | any - | string | null | undefined; - service: "parameter-store"; - type: SyncAcquireResponseDeploymentTypeVault1; + /** + * Horizon control-plane API base URL. + */ + url: string; + type: SyncAcquireResponseDeploymentComputeBackendType; }; -/** - * Represents a vault binding for secure secret management - */ -export type SyncAcquireResponseDeploymentExternalBindingsUnion5 = - | SyncAcquireResponseDeploymentExternalBindingsParameterStore - | SyncAcquireResponseDeploymentExternalBindingsSecretManager - | SyncAcquireResponseDeploymentExternalBindingsKeyVault - | SyncAcquireResponseDeploymentExternalBindingsKubernetesSecret - | SyncAcquireResponseDeploymentExternalBindingsLocalVault; +export type SyncAcquireResponseDeploymentComputeBackendUnion = + | SyncAcquireResponseDeploymentComputeBackendHorizon + | any; /** - * Reference to a Kubernetes Secret + * Certificate status in the certificate lifecycle */ -export type SyncAcquireResponseDeploymentDataDirSecretRef2 = { - key: string; - name: string; -}; - -export type SyncAcquireResponseDeploymentDataDir2 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseDeploymentDataDirSecretRef2; -}; - +export const SyncAcquireResponseDeploymentAliasCertificateStatus = { + Pending: "pending", + Issued: "issued", + Renewing: "renewing", + RenewalFailed: "renewal-failed", + Failed: "failed", + Deleting: "deleting", +} as const; /** - * Reference to a Kubernetes Secret + * Certificate status in the certificate lifecycle */ -export type SyncAcquireResponseDeploymentRegistryUrlSecretRef = { - key: string; - name: string; -}; - -export type SyncAcquireResponseDeploymentRegistryUrl = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseDeploymentRegistryUrlSecretRef; -}; +export type SyncAcquireResponseDeploymentAliasCertificateStatus = ClosedEnum< + typeof SyncAcquireResponseDeploymentAliasCertificateStatus +>; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * DNS record status in the DNS lifecycle */ -export type SyncAcquireResponseDeploymentRegistryUrlUnion = - | SyncAcquireResponseDeploymentRegistryUrl - | any - | string; - -export const SyncAcquireResponseDeploymentTypeArtifactRegistry4 = { - ArtifactRegistry: "artifact_registry", +export const SyncAcquireResponseDeploymentAliasDnsStatus = { + Pending: "pending", + Active: "active", + Updating: "updating", + Deleting: "deleting", + Failed: "failed", } as const; -export type SyncAcquireResponseDeploymentTypeArtifactRegistry4 = ClosedEnum< - typeof SyncAcquireResponseDeploymentTypeArtifactRegistry4 +/** + * DNS record status in the DNS lifecycle + */ +export type SyncAcquireResponseDeploymentAliasDnsStatus = ClosedEnum< + typeof SyncAcquireResponseDeploymentAliasDnsStatus >; /** - * Local container registry binding configuration. + * Certificate and DNS metadata for a managed hostname. * * @remarks * - * The local registry runs on localhost only and does not require authentication. - * Security boundary is the OS process isolation on the customer's machine. - * External image access is secured by the manager's registry proxy (deployment tokens). + * Includes decrypted certificate data for issued certificates. + * Private keys are deployment-scoped secrets (like environment variables). */ -export type SyncAcquireResponseDeploymentExternalBindingsLocal = { +export type SyncAcquireResponseDeploymentAlias = { /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Full PEM certificate chain (only present if status is "issued"). */ - dataDir?: any | null | undefined; + certificateChain?: string | null | undefined; /** - * Represents a value that can be either a concrete value, a template expression, + * Certificate ID (for tracking/logging). + */ + certificateId: string; + /** + * Certificate status in the certificate lifecycle + */ + certificateStatus: SyncAcquireResponseDeploymentAliasCertificateStatus; + /** + * Last DNS error message. Present when DNS previously failed, even if status * * @remarks - * or a reference to a Kubernetes Secret + * was reset to pending for retry. Used to surface actionable error context + * in WaitingForDns failure messages. */ - registryUrl?: - | SyncAcquireResponseDeploymentRegistryUrl - | any - | string - | null - | undefined; - service: "local"; - type: SyncAcquireResponseDeploymentTypeArtifactRegistry4; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseDeploymentPullServiceAccountEmailSecretRef = { - key: string; - name: string; -}; - -export type SyncAcquireResponseDeploymentPullServiceAccountEmail = { + dnsError?: string | null | undefined; /** - * Reference to a Kubernetes Secret + * DNS record status in the DNS lifecycle */ - secretRef: SyncAcquireResponseDeploymentPullServiceAccountEmailSecretRef; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseDeploymentPushServiceAccountEmailSecretRef = { - key: string; - name: string; -}; - -export type SyncAcquireResponseDeploymentPushServiceAccountEmail = { + dnsStatus: SyncAcquireResponseDeploymentAliasDnsStatus; /** - * Reference to a Kubernetes Secret + * Fully qualified domain name. */ - secretRef: SyncAcquireResponseDeploymentPushServiceAccountEmailSecretRef; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseDeploymentRepositoryNameSecretRef = { - key: string; - name: string; -}; - -export type SyncAcquireResponseDeploymentRepositoryName = { + fqdn: string; /** - * Reference to a Kubernetes Secret + * ISO 8601 timestamp when certificate was issued (for renewal detection). */ - secretRef: SyncAcquireResponseDeploymentRepositoryNameSecretRef; + issuedAt?: string | null | undefined; + /** + * Decrypted private key (only present if status is "issued"). + */ + privateKey?: string | null | undefined; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Certificate status in the certificate lifecycle */ -export type SyncAcquireResponseDeploymentRepositoryNameUnion = - | SyncAcquireResponseDeploymentRepositoryName - | any - | string; - -export const SyncAcquireResponseDeploymentTypeArtifactRegistry3 = { - ArtifactRegistry: "artifact_registry", +export const SyncAcquireResponseDeploymentCertificateStatus = { + Pending: "pending", + Issued: "issued", + Renewing: "renewing", + RenewalFailed: "renewal-failed", + Failed: "failed", + Deleting: "deleting", } as const; -export type SyncAcquireResponseDeploymentTypeArtifactRegistry3 = ClosedEnum< - typeof SyncAcquireResponseDeploymentTypeArtifactRegistry3 ->; - /** - * Google Artifact Registry binding configuration + * Certificate status in the certificate lifecycle */ -export type SyncAcquireResponseDeploymentExternalBindingsGar = { - pullServiceAccountEmail?: any | null | undefined; - pushServiceAccountEmail?: any | null | undefined; - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - repositoryName?: - | SyncAcquireResponseDeploymentRepositoryName - | any - | string - | null - | undefined; - service: "gar"; - type: SyncAcquireResponseDeploymentTypeArtifactRegistry3; -}; +export type SyncAcquireResponseDeploymentCertificateStatus = ClosedEnum< + typeof SyncAcquireResponseDeploymentCertificateStatus +>; /** - * Reference to a Kubernetes Secret + * DNS record status in the DNS lifecycle */ -export type SyncAcquireResponseDeploymentRegistryNameSecretRef = { - key: string; - name: string; -}; - -export type SyncAcquireResponseDeploymentRegistryName = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseDeploymentRegistryNameSecretRef; -}; - +export const SyncAcquireResponseDeploymentDnsStatus = { + Pending: "pending", + Active: "active", + Updating: "updating", + Deleting: "deleting", + Failed: "failed", +} as const; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * DNS record status in the DNS lifecycle */ -export type SyncAcquireResponseDeploymentRegistryNameUnion = - | SyncAcquireResponseDeploymentRegistryName - | any - | string; +export type SyncAcquireResponseDeploymentDnsStatus = ClosedEnum< + typeof SyncAcquireResponseDeploymentDnsStatus +>; /** - * Reference to a Kubernetes Secret + * Certificate status in the certificate lifecycle */ -export type SyncAcquireResponseDeploymentRepositoryPrefixSecretRef2 = { - key: string; - name: string; -}; - -export type SyncAcquireResponseDeploymentRepositoryPrefix2 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseDeploymentRepositoryPrefixSecretRef2; -}; - +export const SyncAcquireResponseDeploymentEndpointsCertificateStatus = { + Pending: "pending", + Issued: "issued", + Renewing: "renewing", + RenewalFailed: "renewal-failed", + Failed: "failed", + Deleting: "deleting", +} as const; /** - * Reference to a Kubernetes Secret + * Certificate status in the certificate lifecycle */ -export type SyncAcquireResponseDeploymentResourceGroupNameSecretRef2 = { - key: string; - name: string; -}; - -export type SyncAcquireResponseDeploymentResourceGroupName2 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseDeploymentResourceGroupNameSecretRef2; -}; +export type SyncAcquireResponseDeploymentEndpointsCertificateStatus = + ClosedEnum; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * DNS record status in the DNS lifecycle */ -export type SyncAcquireResponseDeploymentResourceGroupNameUnion2 = - | SyncAcquireResponseDeploymentResourceGroupName2 - | any - | string; - -export const SyncAcquireResponseDeploymentTypeArtifactRegistry2 = { - ArtifactRegistry: "artifact_registry", +export const SyncAcquireResponseDeploymentEndpointsDnsStatus = { + Pending: "pending", + Active: "active", + Updating: "updating", + Deleting: "deleting", + Failed: "failed", } as const; -export type SyncAcquireResponseDeploymentTypeArtifactRegistry2 = ClosedEnum< - typeof SyncAcquireResponseDeploymentTypeArtifactRegistry2 +/** + * DNS record status in the DNS lifecycle + */ +export type SyncAcquireResponseDeploymentEndpointsDnsStatus = ClosedEnum< + typeof SyncAcquireResponseDeploymentEndpointsDnsStatus >; /** - * Azure Container Registry binding configuration + * Certificate and DNS metadata for a managed hostname. + * + * @remarks + * + * Includes decrypted certificate data for issued certificates. + * Private keys are deployment-scoped secrets (like environment variables). */ -export type SyncAcquireResponseDeploymentExternalBindingsAcr = { +export type SyncAcquireResponseDeploymentEndpoints = { /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Full PEM certificate chain (only present if status is "issued"). */ - registryName?: - | SyncAcquireResponseDeploymentRegistryName - | any - | string - | null - | undefined; - repositoryPrefix?: any | null | undefined; + certificateChain?: string | null | undefined; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Certificate ID (for tracking/logging). */ - resourceGroupName?: - | SyncAcquireResponseDeploymentResourceGroupName2 - | any - | string - | null - | undefined; - service: "acr"; - type: SyncAcquireResponseDeploymentTypeArtifactRegistry2; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseDeploymentPullRoleArnSecretRef = { - key: string; - name: string; -}; - -export type SyncAcquireResponseDeploymentPullRoleArn = { + certificateId: string; /** - * Reference to a Kubernetes Secret + * Certificate status in the certificate lifecycle */ - secretRef: SyncAcquireResponseDeploymentPullRoleArnSecretRef; -}; - -/** - * Reference to a Kubernetes Secret + certificateStatus: SyncAcquireResponseDeploymentEndpointsCertificateStatus; + /** + * Last DNS error message. Present when DNS previously failed, even if status + * + * @remarks + * was reset to pending for retry. Used to surface actionable error context + * in WaitingForDns failure messages. + */ + dnsError?: string | null | undefined; + /** + * DNS record status in the DNS lifecycle + */ + dnsStatus: SyncAcquireResponseDeploymentEndpointsDnsStatus; + /** + * Fully qualified domain name. + */ + fqdn: string; + /** + * ISO 8601 timestamp when certificate was issued (for renewal detection). + */ + issuedAt?: string | null | undefined; + /** + * Decrypted private key (only present if status is "issued"). + */ + privateKey?: string | null | undefined; +}; + +/** + * Certificate and DNS metadata for a public resource. + * + * @remarks + * + * The direct fields describe the primary endpoint hostname. `endpoints` + * contains endpoint-scoped metadata keyed by endpoint name. `aliases` contains + * additional managed hostnames that route directly to the primary endpoint. */ -export type SyncAcquireResponseDeploymentPushRoleArnSecretRef = { - key: string; +export type SyncAcquireResponseDeploymentDomainMetadataResources = { + /** + * Additional managed hostnames for the resource. + */ + aliases?: Array | undefined; + /** + * Full PEM certificate chain (only present if status is "issued"). + */ + certificateChain?: string | null | undefined; + /** + * Certificate ID (for tracking/logging). + */ + certificateId: string; + /** + * Certificate status in the certificate lifecycle + */ + certificateStatus: SyncAcquireResponseDeploymentCertificateStatus; + /** + * Last DNS error message. + */ + dnsError?: string | null | undefined; + /** + * DNS record status in the DNS lifecycle + */ + dnsStatus: SyncAcquireResponseDeploymentDnsStatus; + /** + * Endpoint-scoped metadata keyed by endpoint name. + */ + endpoints?: + | { [k: string]: SyncAcquireResponseDeploymentEndpoints } + | undefined; + /** + * Fully qualified domain name. + */ + fqdn: string; + /** + * ISO 8601 timestamp when certificate was issued (for renewal detection). + */ + issuedAt?: string | null | undefined; + /** + * Decrypted private key (only present if status is "issued"). + */ + privateKey?: string | null | undefined; +}; + +/** + * Domain metadata for auto-managed public resources (no private keys). + */ +export type SyncAcquireResponseDeploymentDomainMetadata = { + /** + * Base domain for auto-generated domains (e.g., "vpc.direct"). + */ + baseDomain: string; + /** + * Hosted zone ID for DNS records. + */ + hostedZoneId: string; + /** + * Deployment public subdomain (e.g., "k8f2j3"). + */ + publicSubdomain: string; + /** + * Metadata per resource ID. + */ + resources: { + [k: string]: SyncAcquireResponseDeploymentDomainMetadataResources; + }; +}; + +export type SyncAcquireResponseDeploymentDomainMetadataUnion = + | SyncAcquireResponseDeploymentDomainMetadata + | any; + +/** + * Type of environment variable + */ +export const SyncAcquireResponseDeploymentEnvironmentVariablesType = { + Plain: "plain", + Secret: "secret", +} as const; +/** + * Type of environment variable + */ +export type SyncAcquireResponseDeploymentEnvironmentVariablesType = ClosedEnum< + typeof SyncAcquireResponseDeploymentEnvironmentVariablesType +>; + +/** + * Environment variable for deployment + */ +export type SyncAcquireResponseDeploymentVariable = { + /** + * Variable name + */ name: string; + /** + * Target resource patterns (null = all resources, Some = wildcard patterns) + */ + targetResources?: Array | null | undefined; + /** + * Type of environment variable + */ + type: SyncAcquireResponseDeploymentEnvironmentVariablesType; + /** + * Variable value (decrypted - deployment has access to decryption keys) + */ + value: string; }; -export type SyncAcquireResponseDeploymentPushRoleArn = { +/** + * Snapshot of environment variables at a point in time + */ +export type SyncAcquireResponseDeploymentEnvironmentVariables = { /** - * Reference to a Kubernetes Secret + * ISO 8601 timestamp when snapshot was created */ - secretRef: SyncAcquireResponseDeploymentPushRoleArnSecretRef; + createdAt: string; + /** + * Deterministic hash of all variables (for change detection) + */ + hash: string; + /** + * Environment variables in the snapshot + */ + variables: Array; }; /** * Reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentRepositoryPrefixSecretRef1 = { +export type SyncAcquireResponseDeploymentApiKeySecretRef = { key: string; name: string; }; -export type SyncAcquireResponseDeploymentRepositoryPrefix1 = { +export type SyncAcquireResponseDeploymentApiKey = { /** * Reference to a Kubernetes Secret */ - secretRef: SyncAcquireResponseDeploymentRepositoryPrefixSecretRef1; + secretRef: SyncAcquireResponseDeploymentApiKeySecretRef; }; /** @@ -7770,62 +7782,61 @@ export type SyncAcquireResponseDeploymentRepositoryPrefix1 = { * @remarks * or a reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentRepositoryPrefixUnion = - | SyncAcquireResponseDeploymentRepositoryPrefix1 +export type SyncAcquireResponseDeploymentApiKeyUnion = + | SyncAcquireResponseDeploymentApiKey | any | string; -export const SyncAcquireResponseDeploymentTypeArtifactRegistry1 = { - ArtifactRegistry: "artifact_registry", +export const SyncAcquireResponseDeploymentTypeAi = { + Ai: "ai", } as const; -export type SyncAcquireResponseDeploymentTypeArtifactRegistry1 = ClosedEnum< - typeof SyncAcquireResponseDeploymentTypeArtifactRegistry1 +export type SyncAcquireResponseDeploymentTypeAi = ClosedEnum< + typeof SyncAcquireResponseDeploymentTypeAi >; /** - * AWS ECR (Elastic Container Registry) binding configuration + * External AI provider binding configuration (BYO-key). + * + * @remarks + * + * The operator-supplied secret rides inside the binding via + * `BindingValue`, so it is a literal on cloud platforms and gains + * Kubernetes SecretRef resolution for free (`extract_binding_secrets` walks + * the binding JSON for `secretRef`). */ -export type SyncAcquireResponseDeploymentExternalBindingsEcr = { - pullRoleArn?: any | null | undefined; - pushRoleArn?: any | null | undefined; +export type SyncAcquireResponseDeploymentExternalBindingsAi = { /** * Represents a value that can be either a concrete value, a template expression, * * @remarks * or a reference to a Kubernetes Secret */ - repositoryPrefix?: - | SyncAcquireResponseDeploymentRepositoryPrefix1 + apiKey?: + | SyncAcquireResponseDeploymentApiKey | any | string | null | undefined; - service: "ecr"; - type: SyncAcquireResponseDeploymentTypeArtifactRegistry1; + /** + * The external AI provider name (e.g., "openai", "anthropic") + */ + provider: string; + type: SyncAcquireResponseDeploymentTypeAi; }; -/** - * Service-type based artifact registry binding that supports multiple registry providers - */ -export type SyncAcquireResponseDeploymentExternalBindingsUnion4 = - | SyncAcquireResponseDeploymentExternalBindingsEcr - | SyncAcquireResponseDeploymentExternalBindingsAcr - | SyncAcquireResponseDeploymentExternalBindingsGar - | SyncAcquireResponseDeploymentExternalBindingsLocal; - /** * Reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentDataDirSecretRef1 = { +export type SyncAcquireResponseDeploymentDatabaseSecretRef6 = { key: string; name: string; }; -export type SyncAcquireResponseDeploymentDataDir1 = { +export type SyncAcquireResponseDeploymentDatabase6 = { /** * Reference to a Kubernetes Secret */ - secretRef: SyncAcquireResponseDeploymentDataDirSecretRef1; + secretRef: SyncAcquireResponseDeploymentDatabaseSecretRef6; }; /** @@ -7834,67 +7845,50 @@ export type SyncAcquireResponseDeploymentDataDir1 = { * @remarks * or a reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentDataDirUnion1 = - | SyncAcquireResponseDeploymentDataDir1 +export type SyncAcquireResponseDeploymentDatabaseUnion5 = + | SyncAcquireResponseDeploymentDatabase6 | any | string; /** * Reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentKeyPrefixSecretRef2 = { +export type SyncAcquireResponseDeploymentHostSecretRef4 = { key: string; name: string; }; -export type SyncAcquireResponseDeploymentKeyPrefix2 = { +export type SyncAcquireResponseDeploymentHost4 = { /** * Reference to a Kubernetes Secret */ - secretRef: SyncAcquireResponseDeploymentKeyPrefixSecretRef2; + secretRef: SyncAcquireResponseDeploymentHostSecretRef4; }; -export const SyncAcquireResponseDeploymentTypeKv5 = { - Kv: "kv", -} as const; -export type SyncAcquireResponseDeploymentTypeKv5 = ClosedEnum< - typeof SyncAcquireResponseDeploymentTypeKv5 ->; - /** - * Local development KV binding configuration + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentExternalBindingsLocalKv = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - dataDir?: - | SyncAcquireResponseDeploymentDataDir1 - | any - | string - | null - | undefined; - keyPrefix?: any | null | undefined; - service: "local-kv"; - type: SyncAcquireResponseDeploymentTypeKv5; -}; +export type SyncAcquireResponseDeploymentHostUnion4 = + | SyncAcquireResponseDeploymentHost4 + | any + | string; /** * Reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentConnectionUrlSecretRef = { +export type SyncAcquireResponseDeploymentPortSecretRef5 = { key: string; name: string; }; -export type SyncAcquireResponseDeploymentConnectionUrl = { +export type SyncAcquireResponseDeploymentPort5 = { /** * Reference to a Kubernetes Secret */ - secretRef: SyncAcquireResponseDeploymentConnectionUrlSecretRef; + secretRef: SyncAcquireResponseDeploymentPortSecretRef5; }; /** @@ -7903,83 +7897,104 @@ export type SyncAcquireResponseDeploymentConnectionUrl = { * @remarks * or a reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentConnectionUrlUnion = - | SyncAcquireResponseDeploymentConnectionUrl - | any - | string; +export type SyncAcquireResponseDeploymentPortUnion5 = + | SyncAcquireResponseDeploymentPort5 + | number + | any; /** * Reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentDatabaseSecretRef1 = { +export type SyncAcquireResponseDeploymentUsernameSecretRef5 = { key: string; name: string; }; -export type SyncAcquireResponseDeploymentDatabase1 = { +export type SyncAcquireResponseDeploymentUsername5 = { /** * Reference to a Kubernetes Secret */ - secretRef: SyncAcquireResponseDeploymentDatabaseSecretRef1; + secretRef: SyncAcquireResponseDeploymentUsernameSecretRef5; }; /** - * Reference to a Kubernetes Secret + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentKeyPrefixSecretRef1 = { - key: string; - name: string; -}; - -export type SyncAcquireResponseDeploymentKeyPrefix1 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseDeploymentKeyPrefixSecretRef1; -}; +export type SyncAcquireResponseDeploymentUsernameUnion5 = + | SyncAcquireResponseDeploymentUsername5 + | any + | string; -export const SyncAcquireResponseDeploymentTypeKv4 = { - Kv: "kv", +export const SyncAcquireResponseDeploymentTypePostgres5 = { + Postgres: "postgres", } as const; -export type SyncAcquireResponseDeploymentTypeKv4 = ClosedEnum< - typeof SyncAcquireResponseDeploymentTypeKv4 +export type SyncAcquireResponseDeploymentTypePostgres5 = ClosedEnum< + typeof SyncAcquireResponseDeploymentTypePostgres5 >; /** - * Redis KV binding configuration + * Local embedded Postgres binding. */ -export type SyncAcquireResponseDeploymentExternalBindingsRedis = { +export type SyncAcquireResponseDeploymentExternalBindingsLocalPostgres = { /** * Represents a value that can be either a concrete value, a template expression, * * @remarks * or a reference to a Kubernetes Secret */ - connectionUrl?: - | SyncAcquireResponseDeploymentConnectionUrl + database?: + | SyncAcquireResponseDeploymentDatabase6 | any | string | null | undefined; - database?: any | null | undefined; - keyPrefix?: any | null | undefined; - service: "redis"; - type: SyncAcquireResponseDeploymentTypeKv4; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + host?: SyncAcquireResponseDeploymentHost4 | any | string | null | undefined; + password: string; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + port?: SyncAcquireResponseDeploymentPort5 | number | any | null | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + username?: + | SyncAcquireResponseDeploymentUsername5 + | any + | string + | null + | undefined; + service: "local-postgres"; + type: SyncAcquireResponseDeploymentTypePostgres5; }; /** * Reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentAccountNameSecretRef2 = { +export type SyncAcquireResponseDeploymentDatabaseSecretRef5 = { key: string; name: string; }; -export type SyncAcquireResponseDeploymentAccountName2 = { +export type SyncAcquireResponseDeploymentDatabase5 = { /** * Reference to a Kubernetes Secret */ - secretRef: SyncAcquireResponseDeploymentAccountNameSecretRef2; + secretRef: SyncAcquireResponseDeploymentDatabaseSecretRef5; }; /** @@ -7988,24 +8003,24 @@ export type SyncAcquireResponseDeploymentAccountName2 = { * @remarks * or a reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentAccountNameUnion2 = - | SyncAcquireResponseDeploymentAccountName2 +export type SyncAcquireResponseDeploymentDatabaseUnion4 = + | SyncAcquireResponseDeploymentDatabase5 | any | string; /** * Reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentResourceGroupNameSecretRef1 = { +export type SyncAcquireResponseDeploymentHostSecretRef3 = { key: string; name: string; }; -export type SyncAcquireResponseDeploymentResourceGroupName1 = { +export type SyncAcquireResponseDeploymentHost3 = { /** * Reference to a Kubernetes Secret */ - secretRef: SyncAcquireResponseDeploymentResourceGroupNameSecretRef1; + secretRef: SyncAcquireResponseDeploymentHostSecretRef3; }; /** @@ -8014,24 +8029,24 @@ export type SyncAcquireResponseDeploymentResourceGroupName1 = { * @remarks * or a reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentResourceGroupNameUnion1 = - | SyncAcquireResponseDeploymentResourceGroupName1 +export type SyncAcquireResponseDeploymentHostUnion3 = + | SyncAcquireResponseDeploymentHost3 | any | string; /** * Reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentTableNameSecretRef2 = { +export type SyncAcquireResponseDeploymentPortSecretRef4 = { key: string; name: string; }; -export type SyncAcquireResponseDeploymentTableName2 = { +export type SyncAcquireResponseDeploymentPort4 = { /** * Reference to a Kubernetes Secret */ - secretRef: SyncAcquireResponseDeploymentTableNameSecretRef2; + secretRef: SyncAcquireResponseDeploymentPortSecretRef4; }; /** @@ -8040,30 +8055,80 @@ export type SyncAcquireResponseDeploymentTableName2 = { * @remarks * or a reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentTableNameUnion2 = - | SyncAcquireResponseDeploymentTableName2 +export type SyncAcquireResponseDeploymentPortUnion4 = + | SyncAcquireResponseDeploymentPort4 + | number + | any; + +/** + * TLS policy for an operator-provided / BYO Postgres database. + * + * @remarks + * + * Unlike libpq's ambiguous `prefer` mode, both choices map exactly to the + * connection settings exposed by every supported SDK. + */ +export const SyncAcquireResponseDeploymentSslMode = { + VerifyFull: "verify-full", + Disable: "disable", +} as const; +/** + * TLS policy for an operator-provided / BYO Postgres database. + * + * @remarks + * + * Unlike libpq's ambiguous `prefer` mode, both choices map exactly to the + * connection settings exposed by every supported SDK. + */ +export type SyncAcquireResponseDeploymentSslMode = ClosedEnum< + typeof SyncAcquireResponseDeploymentSslMode +>; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentUsernameSecretRef4 = { + key: string; + name: string; +}; + +export type SyncAcquireResponseDeploymentUsername4 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseDeploymentUsernameSecretRef4; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentUsernameUnion4 = + | SyncAcquireResponseDeploymentUsername4 | any | string; -export const SyncAcquireResponseDeploymentTypeKv3 = { - Kv: "kv", +export const SyncAcquireResponseDeploymentTypePostgres4 = { + Postgres: "postgres", } as const; -export type SyncAcquireResponseDeploymentTypeKv3 = ClosedEnum< - typeof SyncAcquireResponseDeploymentTypeKv3 +export type SyncAcquireResponseDeploymentTypePostgres4 = ClosedEnum< + typeof SyncAcquireResponseDeploymentTypePostgres4 >; /** - * Azure Table Storage KV binding configuration + * Operator-provided / BYO database binding. */ -export type SyncAcquireResponseDeploymentExternalBindingsTablestorage = { +export type SyncAcquireResponseDeploymentExternalBindingsExternal = { /** * Represents a value that can be either a concrete value, a template expression, * * @remarks * or a reference to a Kubernetes Secret */ - accountName?: - | SyncAcquireResponseDeploymentAccountName2 + database?: + | SyncAcquireResponseDeploymentDatabase5 | any | string | null @@ -8074,41 +8139,60 @@ export type SyncAcquireResponseDeploymentExternalBindingsTablestorage = { * @remarks * or a reference to a Kubernetes Secret */ - resourceGroupName?: - | SyncAcquireResponseDeploymentResourceGroupName1 - | any - | string - | null - | undefined; + host?: SyncAcquireResponseDeploymentHost3 | any | string | null | undefined; + /** + * Connection password as a concrete value, never an unresolved `SecretRef`: the platform + * + * @remarks + * materializes the Kubernetes secret into the pod env. The cloud variants carry a secret + * locator instead. + */ + password: string; /** * Represents a value that can be either a concrete value, a template expression, * * @remarks * or a reference to a Kubernetes Secret */ - tableName?: - | SyncAcquireResponseDeploymentTableName2 + port?: SyncAcquireResponseDeploymentPort4 | number | any | null | undefined; + /** + * TLS policy for an operator-provided / BYO Postgres database. + * + * @remarks + * + * Unlike libpq's ambiguous `prefer` mode, both choices map exactly to the + * connection settings exposed by every supported SDK. + */ + sslMode?: SyncAcquireResponseDeploymentSslMode | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + username?: + | SyncAcquireResponseDeploymentUsername4 | any | string | null | undefined; - service: "tablestorage"; - type: SyncAcquireResponseDeploymentTypeKv3; + service: "external"; + type: SyncAcquireResponseDeploymentTypePostgres4; }; /** * Reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentCollectionNameSecretRef = { +export type SyncAcquireResponseDeploymentDatabaseSecretRef4 = { key: string; name: string; }; -export type SyncAcquireResponseDeploymentCollectionName = { +export type SyncAcquireResponseDeploymentDatabase4 = { /** * Reference to a Kubernetes Secret */ - secretRef: SyncAcquireResponseDeploymentCollectionNameSecretRef; + secretRef: SyncAcquireResponseDeploymentDatabaseSecretRef4; }; /** @@ -8117,24 +8201,24 @@ export type SyncAcquireResponseDeploymentCollectionName = { * @remarks * or a reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentCollectionNameUnion = - | SyncAcquireResponseDeploymentCollectionName +export type SyncAcquireResponseDeploymentDatabaseUnion3 = + | SyncAcquireResponseDeploymentDatabase4 | any | string; /** * Reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentDatabaseIdSecretRef = { +export type SyncAcquireResponseDeploymentHostSecretRef2 = { key: string; name: string; }; -export type SyncAcquireResponseDeploymentDatabaseId = { +export type SyncAcquireResponseDeploymentHost2 = { /** * Reference to a Kubernetes Secret */ - secretRef: SyncAcquireResponseDeploymentDatabaseIdSecretRef; + secretRef: SyncAcquireResponseDeploymentHostSecretRef2; }; /** @@ -8143,24 +8227,24 @@ export type SyncAcquireResponseDeploymentDatabaseId = { * @remarks * or a reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentDatabaseIdUnion = - | SyncAcquireResponseDeploymentDatabaseId +export type SyncAcquireResponseDeploymentHostUnion2 = + | SyncAcquireResponseDeploymentHost2 | any | string; /** * Reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentProjectIdSecretRef = { +export type SyncAcquireResponseDeploymentPasswordSecretUriSecretRef = { key: string; name: string; }; -export type SyncAcquireResponseDeploymentProjectId = { +export type SyncAcquireResponseDeploymentPasswordSecretUri = { /** * Reference to a Kubernetes Secret */ - secretRef: SyncAcquireResponseDeploymentProjectIdSecretRef; + secretRef: SyncAcquireResponseDeploymentPasswordSecretUriSecretRef; }; /** @@ -8169,90 +8253,24 @@ export type SyncAcquireResponseDeploymentProjectId = { * @remarks * or a reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentProjectIdUnion = - | SyncAcquireResponseDeploymentProjectId +export type SyncAcquireResponseDeploymentPasswordSecretUriUnion = + | SyncAcquireResponseDeploymentPasswordSecretUri | any | string; -export const SyncAcquireResponseDeploymentTypeKv2 = { - Kv: "kv", -} as const; -export type SyncAcquireResponseDeploymentTypeKv2 = ClosedEnum< - typeof SyncAcquireResponseDeploymentTypeKv2 ->; - /** - * GCP Firestore KV binding configuration + * Reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentExternalBindingsFirestore = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - collectionName?: - | SyncAcquireResponseDeploymentCollectionName - | any - | string - | null - | undefined; +export type SyncAcquireResponseDeploymentPortSecretRef3 = { + key: string; + name: string; +}; + +export type SyncAcquireResponseDeploymentPort3 = { /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Reference to a Kubernetes Secret */ - databaseId?: - | SyncAcquireResponseDeploymentDatabaseId - | any - | string - | null - | undefined; - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - projectId?: - | SyncAcquireResponseDeploymentProjectId - | any - | string - | null - | undefined; - service: "firestore"; - type: SyncAcquireResponseDeploymentTypeKv2; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseDeploymentEndpointUrlSecretRef = { - key: string; - name: string; -}; - -export type SyncAcquireResponseDeploymentEndpointUrl = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseDeploymentEndpointUrlSecretRef; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseDeploymentRegionSecretRef = { - key: string; - name: string; -}; - -export type SyncAcquireResponseDeploymentRegion = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseDeploymentRegionSecretRef; + secretRef: SyncAcquireResponseDeploymentPortSecretRef3; }; /** @@ -8261,24 +8279,24 @@ export type SyncAcquireResponseDeploymentRegion = { * @remarks * or a reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentRegionUnion = - | SyncAcquireResponseDeploymentRegion - | any - | string; +export type SyncAcquireResponseDeploymentPortUnion3 = + | SyncAcquireResponseDeploymentPort3 + | number + | any; /** * Reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentTableNameSecretRef1 = { +export type SyncAcquireResponseDeploymentUsernameSecretRef3 = { key: string; name: string; }; -export type SyncAcquireResponseDeploymentTableName1 = { +export type SyncAcquireResponseDeploymentUsername3 = { /** * Reference to a Kubernetes Secret */ - secretRef: SyncAcquireResponseDeploymentTableNameSecretRef1; + secretRef: SyncAcquireResponseDeploymentUsernameSecretRef3; }; /** @@ -8287,31 +8305,30 @@ export type SyncAcquireResponseDeploymentTableName1 = { * @remarks * or a reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentTableNameUnion1 = - | SyncAcquireResponseDeploymentTableName1 +export type SyncAcquireResponseDeploymentUsernameUnion3 = + | SyncAcquireResponseDeploymentUsername3 | any | string; -export const SyncAcquireResponseDeploymentTypeKv1 = { - Kv: "kv", +export const SyncAcquireResponseDeploymentTypePostgres3 = { + Postgres: "postgres", } as const; -export type SyncAcquireResponseDeploymentTypeKv1 = ClosedEnum< - typeof SyncAcquireResponseDeploymentTypeKv1 +export type SyncAcquireResponseDeploymentTypePostgres3 = ClosedEnum< + typeof SyncAcquireResponseDeploymentTypePostgres3 >; /** - * AWS DynamoDB KV binding configuration + * Azure Flexible Server binding. */ -export type SyncAcquireResponseDeploymentExternalBindingsDynamodb = { - endpointUrl?: any | null | undefined; +export type SyncAcquireResponseDeploymentExternalBindingsFlexibleServer = { /** * Represents a value that can be either a concrete value, a template expression, * * @remarks * or a reference to a Kubernetes Secret */ - region?: - | SyncAcquireResponseDeploymentRegion + database?: + | SyncAcquireResponseDeploymentDatabase4 | any | string | null @@ -8322,39 +8339,55 @@ export type SyncAcquireResponseDeploymentExternalBindingsDynamodb = { * @remarks * or a reference to a Kubernetes Secret */ - tableName?: - | SyncAcquireResponseDeploymentTableName1 + host?: SyncAcquireResponseDeploymentHost2 | any | string | null | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + passwordSecretUri?: + | SyncAcquireResponseDeploymentPasswordSecretUri | any | string | null | undefined; - service: "dynamodb"; - type: SyncAcquireResponseDeploymentTypeKv1; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + port?: SyncAcquireResponseDeploymentPort3 | number | any | null | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + username?: + | SyncAcquireResponseDeploymentUsername3 + | any + | string + | null + | undefined; + service: "flexible-server"; + type: SyncAcquireResponseDeploymentTypePostgres3; }; -/** - * Represents a KV binding for key-value storage across platforms - */ -export type SyncAcquireResponseDeploymentExternalBindingsUnion3 = - | SyncAcquireResponseDeploymentExternalBindingsDynamodb - | SyncAcquireResponseDeploymentExternalBindingsFirestore - | SyncAcquireResponseDeploymentExternalBindingsTablestorage - | SyncAcquireResponseDeploymentExternalBindingsRedis - | SyncAcquireResponseDeploymentExternalBindingsLocalKv; - /** * Reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentQueuePathSecretRef = { +export type SyncAcquireResponseDeploymentDatabaseSecretRef3 = { key: string; name: string; }; -export type SyncAcquireResponseDeploymentQueuePath = { +export type SyncAcquireResponseDeploymentDatabase3 = { /** * Reference to a Kubernetes Secret */ - secretRef: SyncAcquireResponseDeploymentQueuePathSecretRef; + secretRef: SyncAcquireResponseDeploymentDatabaseSecretRef3; }; /** @@ -8363,51 +8396,24 @@ export type SyncAcquireResponseDeploymentQueuePath = { * @remarks * or a reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentQueuePathUnion = - | SyncAcquireResponseDeploymentQueuePath +export type SyncAcquireResponseDeploymentDatabaseUnion2 = + | SyncAcquireResponseDeploymentDatabase3 | any | string; -export const SyncAcquireResponseDeploymentTypeQueue4 = { - Queue: "queue", -} as const; -export type SyncAcquireResponseDeploymentTypeQueue4 = ClosedEnum< - typeof SyncAcquireResponseDeploymentTypeQueue4 ->; - -/** - * Local queue parameters - */ -export type SyncAcquireResponseDeploymentExternalBindingsLocalQueue = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - queuePath?: - | SyncAcquireResponseDeploymentQueuePath - | any - | string - | null - | undefined; - service: "local-queue"; - type: SyncAcquireResponseDeploymentTypeQueue4; -}; - /** * Reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentNamespaceSecretRef1 = { +export type SyncAcquireResponseDeploymentHostSecretRef1 = { key: string; name: string; }; -export type SyncAcquireResponseDeploymentNamespace1 = { +export type SyncAcquireResponseDeploymentHost1 = { /** * Reference to a Kubernetes Secret */ - secretRef: SyncAcquireResponseDeploymentNamespaceSecretRef1; + secretRef: SyncAcquireResponseDeploymentHostSecretRef1; }; /** @@ -8416,24 +8422,24 @@ export type SyncAcquireResponseDeploymentNamespace1 = { * @remarks * or a reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentNamespaceUnion1 = - | SyncAcquireResponseDeploymentNamespace1 +export type SyncAcquireResponseDeploymentHostUnion1 = + | SyncAcquireResponseDeploymentHost1 | any | string; /** * Reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentQueueNameSecretRef = { +export type SyncAcquireResponseDeploymentPasswordSecretNameSecretRef = { key: string; name: string; }; -export type SyncAcquireResponseDeploymentQueueName = { +export type SyncAcquireResponseDeploymentPasswordSecretName = { /** * Reference to a Kubernetes Secret */ - secretRef: SyncAcquireResponseDeploymentQueueNameSecretRef; + secretRef: SyncAcquireResponseDeploymentPasswordSecretNameSecretRef; }; /** @@ -8442,63 +8448,50 @@ export type SyncAcquireResponseDeploymentQueueName = { * @remarks * or a reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentQueueNameUnion = - | SyncAcquireResponseDeploymentQueueName +export type SyncAcquireResponseDeploymentPasswordSecretNameUnion = + | SyncAcquireResponseDeploymentPasswordSecretName | any | string; -export const SyncAcquireResponseDeploymentTypeQueue3 = { - Queue: "queue", -} as const; -export type SyncAcquireResponseDeploymentTypeQueue3 = ClosedEnum< - typeof SyncAcquireResponseDeploymentTypeQueue3 ->; - /** - * Azure Service Bus parameters + * Reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentExternalBindingsServicebus = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - namespace?: - | SyncAcquireResponseDeploymentNamespace1 - | any - | string - | null - | undefined; +export type SyncAcquireResponseDeploymentPortSecretRef2 = { + key: string; + name: string; +}; + +export type SyncAcquireResponseDeploymentPort2 = { /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Reference to a Kubernetes Secret */ - queueName?: - | SyncAcquireResponseDeploymentQueueName - | any - | string - | null - | undefined; - service: "servicebus"; - type: SyncAcquireResponseDeploymentTypeQueue3; + secretRef: SyncAcquireResponseDeploymentPortSecretRef2; }; +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentPortUnion2 = + | SyncAcquireResponseDeploymentPort2 + | number + | any; + /** * Reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentSubscriptionSecretRef = { +export type SyncAcquireResponseDeploymentServerCaCertificatesSecretRef = { key: string; name: string; }; -export type SyncAcquireResponseDeploymentSubscription = { +export type SyncAcquireResponseDeploymentServerCaCertificates = { /** * Reference to a Kubernetes Secret */ - secretRef: SyncAcquireResponseDeploymentSubscriptionSecretRef; + secretRef: SyncAcquireResponseDeploymentServerCaCertificatesSecretRef; }; /** @@ -8507,24 +8500,24 @@ export type SyncAcquireResponseDeploymentSubscription = { * @remarks * or a reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentSubscriptionUnion = - | SyncAcquireResponseDeploymentSubscription - | any - | string; +export type SyncAcquireResponseDeploymentServerCaCertificatesUnion = + | SyncAcquireResponseDeploymentServerCaCertificates + | Array + | any; /** * Reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentTopicSecretRef = { +export type SyncAcquireResponseDeploymentUsernameSecretRef2 = { key: string; name: string; }; -export type SyncAcquireResponseDeploymentTopic = { +export type SyncAcquireResponseDeploymentUsername2 = { /** * Reference to a Kubernetes Secret */ - secretRef: SyncAcquireResponseDeploymentTopicSecretRef; + secretRef: SyncAcquireResponseDeploymentUsernameSecretRef2; }; /** @@ -8533,30 +8526,30 @@ export type SyncAcquireResponseDeploymentTopic = { * @remarks * or a reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentTopicUnion = - | SyncAcquireResponseDeploymentTopic +export type SyncAcquireResponseDeploymentUsernameUnion2 = + | SyncAcquireResponseDeploymentUsername2 | any | string; -export const SyncAcquireResponseDeploymentTypeQueue2 = { - Queue: "queue", +export const SyncAcquireResponseDeploymentTypePostgres2 = { + Postgres: "postgres", } as const; -export type SyncAcquireResponseDeploymentTypeQueue2 = ClosedEnum< - typeof SyncAcquireResponseDeploymentTypeQueue2 +export type SyncAcquireResponseDeploymentTypePostgres2 = ClosedEnum< + typeof SyncAcquireResponseDeploymentTypePostgres2 >; /** - * GCP Pub/Sub parameters + * GCP Cloud SQL binding. */ -export type SyncAcquireResponseDeploymentExternalBindingsPubsub = { +export type SyncAcquireResponseDeploymentExternalBindingsCloudSQL = { /** * Represents a value that can be either a concrete value, a template expression, * * @remarks * or a reference to a Kubernetes Secret */ - subscription?: - | SyncAcquireResponseDeploymentSubscription + database?: + | SyncAcquireResponseDeploymentDatabase3 | any | string | null @@ -8567,24 +8560,67 @@ export type SyncAcquireResponseDeploymentExternalBindingsPubsub = { * @remarks * or a reference to a Kubernetes Secret */ - topic?: SyncAcquireResponseDeploymentTopic | any | string | null | undefined; - service: "pubsub"; - type: SyncAcquireResponseDeploymentTypeQueue2; + host?: SyncAcquireResponseDeploymentHost1 | any | string | null | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + passwordSecretName?: + | SyncAcquireResponseDeploymentPasswordSecretName + | any + | string + | null + | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + port?: SyncAcquireResponseDeploymentPort2 | number | any | null | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + serverCaCertificates?: + | SyncAcquireResponseDeploymentServerCaCertificates + | Array + | any + | null + | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + username?: + | SyncAcquireResponseDeploymentUsername2 + | any + | string + | null + | undefined; + service: "cloud-sql"; + type: SyncAcquireResponseDeploymentTypePostgres2; }; /** * Reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentQueueUrlSecretRef = { +export type SyncAcquireResponseDeploymentClusterEndpointSecretRef = { key: string; name: string; }; -export type SyncAcquireResponseDeploymentQueueUrl = { +export type SyncAcquireResponseDeploymentClusterEndpoint = { /** * Reference to a Kubernetes Secret */ - secretRef: SyncAcquireResponseDeploymentQueueUrlSecretRef; + secretRef: SyncAcquireResponseDeploymentClusterEndpointSecretRef; }; /** @@ -8593,60 +8629,24 @@ export type SyncAcquireResponseDeploymentQueueUrl = { * @remarks * or a reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentQueueUrlUnion = - | SyncAcquireResponseDeploymentQueueUrl +export type SyncAcquireResponseDeploymentClusterEndpointUnion = + | SyncAcquireResponseDeploymentClusterEndpoint | any | string; -export const SyncAcquireResponseDeploymentTypeQueue1 = { - Queue: "queue", -} as const; -export type SyncAcquireResponseDeploymentTypeQueue1 = ClosedEnum< - typeof SyncAcquireResponseDeploymentTypeQueue1 ->; - -/** - * AWS SQS queue parameters - */ -export type SyncAcquireResponseDeploymentExternalBindingsSqs = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - queueUrl?: - | SyncAcquireResponseDeploymentQueueUrl - | any - | string - | null - | undefined; - service: "sqs"; - type: SyncAcquireResponseDeploymentTypeQueue1; -}; - -/** - * Binding parameters for Queue at runtime or in templates. - */ -export type SyncAcquireResponseDeploymentExternalBindingsUnion2 = - | SyncAcquireResponseDeploymentExternalBindingsSqs - | SyncAcquireResponseDeploymentExternalBindingsPubsub - | SyncAcquireResponseDeploymentExternalBindingsServicebus - | SyncAcquireResponseDeploymentExternalBindingsLocalQueue; - /** * Reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentStoragePathSecretRef = { +export type SyncAcquireResponseDeploymentDatabaseSecretRef2 = { key: string; name: string; }; -export type SyncAcquireResponseDeploymentStoragePath = { +export type SyncAcquireResponseDeploymentDatabase2 = { /** * Reference to a Kubernetes Secret */ - secretRef: SyncAcquireResponseDeploymentStoragePathSecretRef; + secretRef: SyncAcquireResponseDeploymentDatabaseSecretRef2; }; /** @@ -8655,51 +8655,24 @@ export type SyncAcquireResponseDeploymentStoragePath = { * @remarks * or a reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentStoragePathUnion = - | SyncAcquireResponseDeploymentStoragePath +export type SyncAcquireResponseDeploymentDatabaseUnion1 = + | SyncAcquireResponseDeploymentDatabase2 | any | string; -export const SyncAcquireResponseDeploymentTypeStorage4 = { - Storage: "storage", -} as const; -export type SyncAcquireResponseDeploymentTypeStorage4 = ClosedEnum< - typeof SyncAcquireResponseDeploymentTypeStorage4 ->; - -/** - * Local filesystem storage binding configuration - */ -export type SyncAcquireResponseDeploymentExternalBindingsLocalStorage = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - storagePath?: - | SyncAcquireResponseDeploymentStoragePath - | any - | string - | null - | undefined; - service: "local-storage"; - type: SyncAcquireResponseDeploymentTypeStorage4; -}; - /** * Reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentBucketNameSecretRef2 = { +export type SyncAcquireResponseDeploymentPasswordSecretArnSecretRef = { key: string; name: string; }; -export type SyncAcquireResponseDeploymentBucketName2 = { +export type SyncAcquireResponseDeploymentPasswordSecretArn = { /** * Reference to a Kubernetes Secret */ - secretRef: SyncAcquireResponseDeploymentBucketNameSecretRef2; + secretRef: SyncAcquireResponseDeploymentPasswordSecretArnSecretRef; }; /** @@ -8708,51 +8681,24 @@ export type SyncAcquireResponseDeploymentBucketName2 = { * @remarks * or a reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentBucketNameUnion2 = - | SyncAcquireResponseDeploymentBucketName2 +export type SyncAcquireResponseDeploymentPasswordSecretArnUnion = + | SyncAcquireResponseDeploymentPasswordSecretArn | any | string; -export const SyncAcquireResponseDeploymentTypeStorage3 = { - Storage: "storage", -} as const; -export type SyncAcquireResponseDeploymentTypeStorage3 = ClosedEnum< - typeof SyncAcquireResponseDeploymentTypeStorage3 ->; - -/** - * Google Cloud Storage binding configuration - */ -export type SyncAcquireResponseDeploymentExternalBindingsGcs = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - bucketName?: - | SyncAcquireResponseDeploymentBucketName2 - | any - | string - | null - | undefined; - service: "gcs"; - type: SyncAcquireResponseDeploymentTypeStorage3; -}; - /** * Reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentAccountNameSecretRef1 = { +export type SyncAcquireResponseDeploymentPortSecretRef1 = { key: string; name: string; }; -export type SyncAcquireResponseDeploymentAccountName1 = { +export type SyncAcquireResponseDeploymentPort1 = { /** * Reference to a Kubernetes Secret */ - secretRef: SyncAcquireResponseDeploymentAccountNameSecretRef1; + secretRef: SyncAcquireResponseDeploymentPortSecretRef1; }; /** @@ -8761,24 +8707,24 @@ export type SyncAcquireResponseDeploymentAccountName1 = { * @remarks * or a reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentAccountNameUnion1 = - | SyncAcquireResponseDeploymentAccountName1 - | any - | string; +export type SyncAcquireResponseDeploymentPortUnion1 = + | SyncAcquireResponseDeploymentPort1 + | number + | any; /** * Reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentContainerNameSecretRef = { +export type SyncAcquireResponseDeploymentUsernameSecretRef1 = { key: string; name: string; }; -export type SyncAcquireResponseDeploymentContainerName = { +export type SyncAcquireResponseDeploymentUsername1 = { /** * Reference to a Kubernetes Secret */ - secretRef: SyncAcquireResponseDeploymentContainerNameSecretRef; + secretRef: SyncAcquireResponseDeploymentUsernameSecretRef1; }; /** @@ -8787,30 +8733,30 @@ export type SyncAcquireResponseDeploymentContainerName = { * @remarks * or a reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentContainerNameUnion = - | SyncAcquireResponseDeploymentContainerName +export type SyncAcquireResponseDeploymentUsernameUnion1 = + | SyncAcquireResponseDeploymentUsername1 | any | string; -export const SyncAcquireResponseDeploymentTypeStorage2 = { - Storage: "storage", +export const SyncAcquireResponseDeploymentTypePostgres1 = { + Postgres: "postgres", } as const; -export type SyncAcquireResponseDeploymentTypeStorage2 = ClosedEnum< - typeof SyncAcquireResponseDeploymentTypeStorage2 +export type SyncAcquireResponseDeploymentTypePostgres1 = ClosedEnum< + typeof SyncAcquireResponseDeploymentTypePostgres1 >; /** - * Azure Blob Storage binding configuration + * AWS Aurora Serverless v2 binding. */ -export type SyncAcquireResponseDeploymentExternalBindingsBlob = { +export type SyncAcquireResponseDeploymentExternalBindingsAurora = { /** * Represents a value that can be either a concrete value, a template expression, * * @remarks * or a reference to a Kubernetes Secret */ - accountName?: - | SyncAcquireResponseDeploymentAccountName1 + clusterEndpoint?: + | SyncAcquireResponseDeploymentClusterEndpoint | any | string | null @@ -8821,2467 +8767,7041 @@ export type SyncAcquireResponseDeploymentExternalBindingsBlob = { * @remarks * or a reference to a Kubernetes Secret */ - containerName?: - | SyncAcquireResponseDeploymentContainerName + database?: + | SyncAcquireResponseDeploymentDatabase2 | any | string | null | undefined; - service: "blob"; - type: SyncAcquireResponseDeploymentTypeStorage2; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseDeploymentBucketNameSecretRef1 = { - key: string; - name: string; -}; - -export type SyncAcquireResponseDeploymentBucketName1 = { /** - * Reference to a Kubernetes Secret + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ - secretRef: SyncAcquireResponseDeploymentBucketNameSecretRef1; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncAcquireResponseDeploymentBucketNameUnion1 = - | SyncAcquireResponseDeploymentBucketName1 - | any - | string; - -export const SyncAcquireResponseDeploymentTypeStorage1 = { - Storage: "storage", -} as const; -export type SyncAcquireResponseDeploymentTypeStorage1 = ClosedEnum< - typeof SyncAcquireResponseDeploymentTypeStorage1 ->; - -/** - * AWS S3 storage binding configuration - */ -export type SyncAcquireResponseDeploymentExternalBindingsS3 = { + passwordSecretArn?: + | SyncAcquireResponseDeploymentPasswordSecretArn + | any + | string + | null + | undefined; /** * Represents a value that can be either a concrete value, a template expression, * * @remarks * or a reference to a Kubernetes Secret */ - bucketName?: - | SyncAcquireResponseDeploymentBucketName1 + port?: SyncAcquireResponseDeploymentPort1 | number | any | null | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + username?: + | SyncAcquireResponseDeploymentUsername1 | any | string | null | undefined; - service: "s3"; - type: SyncAcquireResponseDeploymentTypeStorage1; + service: "aurora"; + type: SyncAcquireResponseDeploymentTypePostgres1; }; /** - * Service-type based storage binding that supports multiple storage providers - */ -export type SyncAcquireResponseDeploymentExternalBindingsUnion1 = - | SyncAcquireResponseDeploymentExternalBindingsS3 - | SyncAcquireResponseDeploymentExternalBindingsBlob - | SyncAcquireResponseDeploymentExternalBindingsGcs - | SyncAcquireResponseDeploymentExternalBindingsLocalStorage; - -/** - * Represents a binding to pre-existing infrastructure. - * - * @remarks - * - * The binding type must match the resource type it's applied to. - * Validated at runtime by the executor. + * Connection details for a Postgres database, one variant per backend. */ -export type SyncAcquireResponseDeploymentExternalBindingsUnion7 = - | SyncAcquireResponseDeploymentExternalBindingsContainerAppsEnvironment - | SyncAcquireResponseDeploymentExternalBindingsS3 - | SyncAcquireResponseDeploymentExternalBindingsBlob - | SyncAcquireResponseDeploymentExternalBindingsGcs - | SyncAcquireResponseDeploymentExternalBindingsLocalStorage - | SyncAcquireResponseDeploymentExternalBindingsSqs - | SyncAcquireResponseDeploymentExternalBindingsPubsub - | SyncAcquireResponseDeploymentExternalBindingsServicebus - | SyncAcquireResponseDeploymentExternalBindingsLocalQueue - | SyncAcquireResponseDeploymentExternalBindingsDynamodb - | SyncAcquireResponseDeploymentExternalBindingsFirestore - | SyncAcquireResponseDeploymentExternalBindingsTablestorage - | SyncAcquireResponseDeploymentExternalBindingsRedis - | SyncAcquireResponseDeploymentExternalBindingsLocalKv - | SyncAcquireResponseDeploymentExternalBindingsEcr - | SyncAcquireResponseDeploymentExternalBindingsAcr - | SyncAcquireResponseDeploymentExternalBindingsGar - | SyncAcquireResponseDeploymentExternalBindingsLocal - | SyncAcquireResponseDeploymentExternalBindingsParameterStore - | SyncAcquireResponseDeploymentExternalBindingsSecretManager - | SyncAcquireResponseDeploymentExternalBindingsKeyVault - | SyncAcquireResponseDeploymentExternalBindingsKubernetesSecret - | SyncAcquireResponseDeploymentExternalBindingsLocalVault +export type SyncAcquireResponseDeploymentExternalBindingsUnion6 = | SyncAcquireResponseDeploymentExternalBindingsAurora | SyncAcquireResponseDeploymentExternalBindingsCloudSQL | SyncAcquireResponseDeploymentExternalBindingsFlexibleServer | SyncAcquireResponseDeploymentExternalBindingsExternal | SyncAcquireResponseDeploymentExternalBindingsLocalPostgres; -export const SyncAcquireResponseDeploymentPlatformKubernetes = { - Kubernetes: "kubernetes", -} as const; -export type SyncAcquireResponseDeploymentPlatformKubernetes = ClosedEnum< - typeof SyncAcquireResponseDeploymentPlatformKubernetes ->; +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentDefaultDomainSecretRef = { + key: string; + name: string; +}; -export type SyncAcquireResponseDeploymentManagementConfigKubernetes = { - platform: SyncAcquireResponseDeploymentPlatformKubernetes; +export type SyncAcquireResponseDeploymentDefaultDomain = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseDeploymentDefaultDomainSecretRef; }; -export const SyncAcquireResponseDeploymentConfigPlatformAzure = { - Azure: "azure", -} as const; -export type SyncAcquireResponseDeploymentConfigPlatformAzure = ClosedEnum< - typeof SyncAcquireResponseDeploymentConfigPlatformAzure ->; +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentDefaultDomainUnion = + | SyncAcquireResponseDeploymentDefaultDomain + | any + | string; /** - * Azure management configuration extracted from stack settings + * Reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentManagementConfigAzure = { - /** - * The managing Azure Tenant ID for cross-tenant access - */ - managingTenantId: string; +export type SyncAcquireResponseDeploymentEnvironmentNameSecretRef = { + key: string; + name: string; +}; + +export type SyncAcquireResponseDeploymentEnvironmentName = { /** - * OIDC issuer URL trusted by the target-side managed identity. + * Reference to a Kubernetes Secret */ - oidcIssuer: string; + secretRef: SyncAcquireResponseDeploymentEnvironmentNameSecretRef; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentEnvironmentNameUnion = + | SyncAcquireResponseDeploymentEnvironmentName + | any + | string; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentResourceGroupNameSecretRef3 = { + key: string; + name: string; +}; + +export type SyncAcquireResponseDeploymentResourceGroupName3 = { /** - * OIDC subject claim trusted by the target-side managed identity. + * Reference to a Kubernetes Secret */ - oidcSubject: string; - platform: SyncAcquireResponseDeploymentConfigPlatformAzure; + secretRef: SyncAcquireResponseDeploymentResourceGroupNameSecretRef3; }; -export const SyncAcquireResponseDeploymentConfigPlatformGcp = { - Gcp: "gcp", -} as const; -export type SyncAcquireResponseDeploymentConfigPlatformGcp = ClosedEnum< - typeof SyncAcquireResponseDeploymentConfigPlatformGcp ->; +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentResourceGroupNameUnion3 = + | SyncAcquireResponseDeploymentResourceGroupName3 + | any + | string; /** - * GCP management configuration extracted from stack settings + * Reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentManagementConfigGcp = { +export type SyncAcquireResponseDeploymentResourceIdSecretRef = { + key: string; + name: string; +}; + +export type SyncAcquireResponseDeploymentResourceId = { /** - * Service account email for management roles + * Reference to a Kubernetes Secret */ - serviceAccountEmail: string; - platform: SyncAcquireResponseDeploymentConfigPlatformGcp; + secretRef: SyncAcquireResponseDeploymentResourceIdSecretRef; }; -export const SyncAcquireResponseDeploymentConfigPlatformAws = { - Aws: "aws", -} as const; -export type SyncAcquireResponseDeploymentConfigPlatformAws = ClosedEnum< - typeof SyncAcquireResponseDeploymentConfigPlatformAws ->; +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentResourceIdUnion = + | SyncAcquireResponseDeploymentResourceId + | any + | string; /** - * AWS management configuration extracted from stack settings + * Reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentManagementConfigAws = { +export type SyncAcquireResponseDeploymentStaticIpSecretRef = { + key: string; + name: string; +}; + +export type SyncAcquireResponseDeploymentStaticIp = { /** - * The managing AWS IAM role ARN that can assume cross-account roles + * Reference to a Kubernetes Secret */ - managingRoleArn: string; - platform: SyncAcquireResponseDeploymentConfigPlatformAws; + secretRef: SyncAcquireResponseDeploymentStaticIpSecretRef; }; -export type SyncAcquireResponseDeploymentManagementConfigUnion = - | SyncAcquireResponseDeploymentManagementConfigAzure - | SyncAcquireResponseDeploymentManagementConfigAws - | SyncAcquireResponseDeploymentManagementConfigGcp - | SyncAcquireResponseDeploymentManagementConfigKubernetes - | any; +export const SyncAcquireResponseDeploymentTypeContainerAppsEnvironment = { + ContainerAppsEnvironment: "container_apps_environment", +} as const; +export type SyncAcquireResponseDeploymentTypeContainerAppsEnvironment = + ClosedEnum; /** - * OTLP log export configuration for a deployment. + * Binding configuration for a pre-existing Azure Container Apps Environment. * * @remarks * - * When set, injected compute runtimes export captured application logs - * through the given endpoint via OTLP/HTTP; which resources are injected - * is platform-dependent. Workers read auth headers from a runtime-only - * secret. Runtime-less Containers and Daemons receive standard OTEL auth - * variables only at the final hosting boundary: Local passes them directly - * to the process and Kubernetes projects them from a per-workload Secret. + * Used when deploying to an existing environment instead of having Alien provision one. + * This is useful for shared environments (e.g., test infrastructure) or enterprise + * setups where environments are managed by a separate team. */ -export type SyncAcquireResponseDeploymentMonitoring = { - /** - * Auth header value in "key=value,..." format. - * - * @remarks - * Example: "authorization=Bearer " - */ - logsAuthHeader: string; - /** - * Full OTLP logs endpoint URL. - * - * @remarks - * Example: "https:///v1/logs" - */ - logsEndpoint: string; - /** - * Auth header value for the metrics endpoint in "key=value,..." format (optional). - * - * @remarks - * - * When absent, `logs_auth_header` is reused for metrics -- suitable when the same - * credential covers both signals. When present (e.g. Axiom with separate datasets), - * this value is used exclusively for metrics. - * - * Example: "authorization=Bearer ,x-axiom-dataset=" - */ - metricsAuthHeader?: string | null | undefined; - /** - * Full OTLP metrics endpoint URL (optional). - * - * @remarks - * When set, the worker runtime exports its own VM/container orchestration metrics here. - * Example: "https://api.axiom.co/v1/metrics" - */ - metricsEndpoint?: string | null | undefined; - /** - * Resource attributes attached to every OTLP signal emitted for this deployment. - * - * @remarks - * - * Platform managers use this for stable identity such as `alien.workspace_id`, - * `alien.project_id`, `alien.deployment_group_id`, and `alien.deployment_id`. - * Runtime-specific resource attributes such as `service.name` remain owned by - * the runtime/exporter. - */ - resourceAttributes?: { [k: string]: string } | undefined; -}; - -export type SyncAcquireResponseDeploymentMonitoringUnion = - | SyncAcquireResponseDeploymentMonitoring - | any; +export type SyncAcquireResponseDeploymentExternalBindingsContainerAppsEnvironment = + { + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + defaultDomain?: + | SyncAcquireResponseDeploymentDefaultDomain + | any + | string + | null + | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + environmentName?: + | SyncAcquireResponseDeploymentEnvironmentName + | any + | string + | null + | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + resourceGroupName?: + | SyncAcquireResponseDeploymentResourceGroupName3 + | any + | string + | null + | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + resourceId?: + | SyncAcquireResponseDeploymentResourceId + | any + | string + | null + | undefined; + staticIp?: any | null | undefined; + type: SyncAcquireResponseDeploymentTypeContainerAppsEnvironment; + }; -export type SyncAcquireResponseDeploymentPoolsAutoscale = { - /** - * Provider machine type selected for this deployment. - */ - machine?: string | null | undefined; - /** - * Maximum machine count. - */ - max: number; - /** - * Minimum machine count. - */ - min: number; - mode: "autoscale"; +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentDataDirSecretRef3 = { + key: string; + name: string; }; -export type SyncAcquireResponseDeploymentPoolsFixed = { - /** - * Provider machine type selected for this deployment. - */ - machine?: string | null | undefined; +export type SyncAcquireResponseDeploymentDataDir3 = { /** - * Number of machines to run. + * Reference to a Kubernetes Secret */ - machines: number; - mode: "fixed"; + secretRef: SyncAcquireResponseDeploymentDataDirSecretRef3; }; /** - * User-selected deployment settings for one compute pool. + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentPoolsUnion = - | SyncAcquireResponseDeploymentPoolsFixed - | SyncAcquireResponseDeploymentPoolsAutoscale; +export type SyncAcquireResponseDeploymentDataDirUnion2 = + | SyncAcquireResponseDeploymentDataDir3 + | any + | string; + +export const SyncAcquireResponseDeploymentTypeVault5 = { + Vault: "vault", +} as const; +export type SyncAcquireResponseDeploymentTypeVault5 = ClosedEnum< + typeof SyncAcquireResponseDeploymentTypeVault5 +>; /** - * Deployment-time compute choices for Alien-managed compute pools. - * - * @remarks - * - * Application source declares portable pool requirements. This settings - * object stores the concrete choices made for one deployment, such as the - * provider machine type and selected machine counts. + * Local development vault binding (for testing/development) */ -export type SyncAcquireResponseDeploymentCompute = { +export type SyncAcquireResponseDeploymentExternalBindingsLocalVault = { /** - * Selected compute choices keyed by pool ID. + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ - pools?: { - [k: string]: - | SyncAcquireResponseDeploymentPoolsFixed - | SyncAcquireResponseDeploymentPoolsAutoscale; - } | undefined; + dataDir?: + | SyncAcquireResponseDeploymentDataDir3 + | any + | string + | null + | undefined; + /** + * The vault name for local storage + */ + vaultName: string; + service: "local-vault"; + type: SyncAcquireResponseDeploymentTypeVault5; }; -export type SyncAcquireResponseDeploymentComputeUnion = - | SyncAcquireResponseDeploymentCompute - | any; - -/** - * Deployment model: how updates are delivered to the remote environment. - */ -export const SyncAcquireResponseDeploymentDeploymentModel = { - Push: "push", - Pull: "pull", -} as const; /** - * Deployment model: how updates are delivered to the remote environment. + * Reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentDeploymentModel = ClosedEnum< - typeof SyncAcquireResponseDeploymentDeploymentModel ->; - -export type SyncAcquireResponseDeploymentAwsStackSettings = { - certificateArn: string; -}; - -export type SyncAcquireResponseDeploymentStackSettingsAwsUnion = - | SyncAcquireResponseDeploymentAwsStackSettings - | any; - -export type SyncAcquireResponseDeploymentAzureStackSettings = { - keyVaultCertificateId: string; - keyVaultResourceId?: string | null | undefined; +export type SyncAcquireResponseDeploymentNamespaceSecretRef2 = { + key: string; + name: string; }; -export type SyncAcquireResponseDeploymentStackSettingsAzureUnion = - | SyncAcquireResponseDeploymentAzureStackSettings - | any; - -export type SyncAcquireResponseDeploymentGcpStackSettings = { - certificateName: string; +export type SyncAcquireResponseDeploymentNamespace2 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseDeploymentNamespaceSecretRef2; }; -export type SyncAcquireResponseDeploymentStackSettingsGcpUnion = - | SyncAcquireResponseDeploymentGcpStackSettings - | any; +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentNamespaceUnion2 = + | SyncAcquireResponseDeploymentNamespace2 + | any + | string; /** - * Namespace-scoped Kubernetes TLS Secret reference. + * Reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentTlsSecretRef = { - /** - * Secret namespace. Defaults to the release namespace when omitted. - */ - namespace?: string | null | undefined; - /** - * Secret name. - */ - secretName: string; +export type SyncAcquireResponseDeploymentVaultPrefixSecretRef3 = { + key: string; + name: string; }; -export type SyncAcquireResponseDeploymentDomainsKubernetes = { +export type SyncAcquireResponseDeploymentVaultPrefix3 = { /** - * Namespace-scoped Kubernetes TLS Secret reference. + * Reference to a Kubernetes Secret */ - tlsSecretRef: SyncAcquireResponseDeploymentTlsSecretRef; + secretRef: SyncAcquireResponseDeploymentVaultPrefixSecretRef3; }; -export type SyncAcquireResponseDeploymentDomainsKubernetesUnion = - | SyncAcquireResponseDeploymentDomainsKubernetes - | any; - /** - * Platform-specific certificate references for custom domains. + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentDomainsCertificate = { - aws?: SyncAcquireResponseDeploymentAwsStackSettings | any | null | undefined; - azure?: - | SyncAcquireResponseDeploymentAzureStackSettings +export type SyncAcquireResponseDeploymentVaultPrefixUnion3 = + | SyncAcquireResponseDeploymentVaultPrefix3 + | any + | string; + +export const SyncAcquireResponseDeploymentTypeVault4 = { + Vault: "vault", +} as const; +export type SyncAcquireResponseDeploymentTypeVault4 = ClosedEnum< + typeof SyncAcquireResponseDeploymentTypeVault4 +>; + +/** + * Kubernetes Secrets vault binding configuration + */ +export type SyncAcquireResponseDeploymentExternalBindingsKubernetesSecret = { + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + namespace?: + | SyncAcquireResponseDeploymentNamespace2 | any + | string | null | undefined; - gcp?: SyncAcquireResponseDeploymentGcpStackSettings | any | null | undefined; - kubernetes?: - | SyncAcquireResponseDeploymentDomainsKubernetes + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + vaultPrefix?: + | SyncAcquireResponseDeploymentVaultPrefix3 | any + | string | null | undefined; + service: "kubernetes-secret"; + type: SyncAcquireResponseDeploymentTypeVault4; }; /** - * Custom domain configuration for a single resource. + * Reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentCustomDomains = { - /** - * Platform-specific certificate references for custom domains. - */ - certificate: SyncAcquireResponseDeploymentDomainsCertificate; - /** - * Fully qualified domain name to use. - */ - domain: string; +export type SyncAcquireResponseDeploymentVaultNameSecretRef = { + key: string; + name: string; }; -export const SyncAcquireResponseDeploymentModeLoadBalancer = { - LoadBalancer: "loadBalancer", -} as const; -export type SyncAcquireResponseDeploymentModeLoadBalancer = ClosedEnum< - typeof SyncAcquireResponseDeploymentModeLoadBalancer ->; - -export type SyncAcquireResponseDeploymentPublicEndpointTargetLoadBalancer = { +export type SyncAcquireResponseDeploymentVaultName = { /** - * DNS name or URL for the external load balancer. + * Reference to a Kubernetes Secret */ - cnameTarget: string; - mode: SyncAcquireResponseDeploymentModeLoadBalancer; + secretRef: SyncAcquireResponseDeploymentVaultNameSecretRef; }; -export const SyncAcquireResponseDeploymentModeMachineAddresses = { - MachineAddresses: "machineAddresses", +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentVaultNameUnion = + | SyncAcquireResponseDeploymentVaultName + | any + | string; + +export const SyncAcquireResponseDeploymentTypeVault3 = { + Vault: "vault", } as const; -export type SyncAcquireResponseDeploymentModeMachineAddresses = ClosedEnum< - typeof SyncAcquireResponseDeploymentModeMachineAddresses +export type SyncAcquireResponseDeploymentTypeVault3 = ClosedEnum< + typeof SyncAcquireResponseDeploymentTypeVault3 >; -export type SyncAcquireResponseDeploymentPublicEndpointTargetMachineAddresses = - { - mode: SyncAcquireResponseDeploymentModeMachineAddresses; - }; - -export type SyncAcquireResponseDeploymentPublicEndpointTargetUnion = - | SyncAcquireResponseDeploymentPublicEndpointTargetLoadBalancer - | SyncAcquireResponseDeploymentPublicEndpointTargetMachineAddresses - | any; - /** - * Domain configuration for the stack. - * - * @remarks - * - * When `custom_domains` is set, the specified resources use customer-provided - * domains and certificates. Otherwise, Alien auto-generates domains. + * Azure Key Vault binding configuration */ -export type SyncAcquireResponseDeploymentDomains = { +export type SyncAcquireResponseDeploymentExternalBindingsKeyVault = { /** - * Custom domain configuration per resource ID. + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ - customDomains?: - | { [k: string]: SyncAcquireResponseDeploymentCustomDomains } - | null - | undefined; - publicEndpointTarget?: - | SyncAcquireResponseDeploymentPublicEndpointTargetLoadBalancer - | SyncAcquireResponseDeploymentPublicEndpointTargetMachineAddresses + vaultName?: + | SyncAcquireResponseDeploymentVaultName | any + | string | null | undefined; + service: "key-vault"; + type: SyncAcquireResponseDeploymentTypeVault3; }; -export type SyncAcquireResponseDeploymentDomainsUnion = - | SyncAcquireResponseDeploymentDomains - | any; +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentVaultPrefixSecretRef2 = { + key: string; + name: string; +}; + +export type SyncAcquireResponseDeploymentVaultPrefix2 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseDeploymentVaultPrefixSecretRef2; +}; /** - * External bindings for pre-existing infrastructure. + * Represents a value that can be either a concrete value, a template expression, * * @remarks - * Allows using existing resources (MinIO, Redis, shared Container Apps - * Environment, etc.) instead of having Alien provision them. - * Required for Kubernetes platform, optional for cloud platforms. + * or a reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentStackSettingsExternalBindings = {}; +export type SyncAcquireResponseDeploymentVaultPrefixUnion2 = + | SyncAcquireResponseDeploymentVaultPrefix2 + | any + | string; -/** - * How heartbeat health checks are handled. - */ -export const SyncAcquireResponseDeploymentHeartbeats = { - Off: "off", - On: "on", +export const SyncAcquireResponseDeploymentTypeVault2 = { + Vault: "vault", } as const; +export type SyncAcquireResponseDeploymentTypeVault2 = ClosedEnum< + typeof SyncAcquireResponseDeploymentTypeVault2 +>; + /** - * How heartbeat health checks are handled. + * GCP Secret Manager vault binding configuration */ -export type SyncAcquireResponseDeploymentHeartbeats = ClosedEnum< - typeof SyncAcquireResponseDeploymentHeartbeats ->; +export type SyncAcquireResponseDeploymentExternalBindingsSecretManager = { + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + vaultPrefix?: + | SyncAcquireResponseDeploymentVaultPrefix2 + | any + | string + | null + | undefined; + service: "secret-manager"; + type: SyncAcquireResponseDeploymentTypeVault2; +}; /** - * Optional provider-specific identity for a cloud-backed Kubernetes cluster. + * Reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentCloud = { - accountId?: string | null | undefined; - clusterId?: string | null | undefined; - clusterName?: string | null | undefined; - projectId?: string | null | undefined; - region?: string | null | undefined; - resourceGroup?: string | null | undefined; - subscriptionId?: string | null | undefined; +export type SyncAcquireResponseDeploymentVaultPrefixSecretRef1 = { + key: string; + name: string; }; -export type SyncAcquireResponseDeploymentCloudUnion = - | SyncAcquireResponseDeploymentCloud - | any; +export type SyncAcquireResponseDeploymentVaultPrefix1 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseDeploymentVaultPrefixSecretRef1; +}; /** - * Ownership model for the Kubernetes cluster. + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ -export const SyncAcquireResponseDeploymentOwnership = { - Managed: "managed", - Existing: "existing", - External: "external", +export type SyncAcquireResponseDeploymentVaultPrefixUnion1 = + | SyncAcquireResponseDeploymentVaultPrefix1 + | any + | string; + +export const SyncAcquireResponseDeploymentTypeVault1 = { + Vault: "vault", } as const; -/** - * Ownership model for the Kubernetes cluster. - */ -export type SyncAcquireResponseDeploymentOwnership = ClosedEnum< - typeof SyncAcquireResponseDeploymentOwnership +export type SyncAcquireResponseDeploymentTypeVault1 = ClosedEnum< + typeof SyncAcquireResponseDeploymentTypeVault1 >; /** - * Kubernetes cluster setup settings. + * AWS SSM Parameter Store vault binding configuration */ -export type SyncAcquireResponseDeploymentCluster = { - cloud?: SyncAcquireResponseDeploymentCloud | any | null | undefined; - /** - * Namespace where the Alien chart and application resources run. - */ - namespace?: string | null | undefined; +export type SyncAcquireResponseDeploymentExternalBindingsParameterStore = { /** - * Ownership model for the Kubernetes cluster. + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ - ownership: SyncAcquireResponseDeploymentOwnership; + vaultPrefix?: + | SyncAcquireResponseDeploymentVaultPrefix1 + | any + | string + | null + | undefined; + service: "parameter-store"; + type: SyncAcquireResponseDeploymentTypeVault1; }; -export type SyncAcquireResponseDeploymentClusterUnion = - | SyncAcquireResponseDeploymentCluster - | any; - -export type SyncAcquireResponseDeploymentCertificateNone2 = { - mode: "none"; +/** + * Represents a vault binding for secure secret management + */ +export type SyncAcquireResponseDeploymentExternalBindingsUnion5 = + | SyncAcquireResponseDeploymentExternalBindingsParameterStore + | SyncAcquireResponseDeploymentExternalBindingsSecretManager + | SyncAcquireResponseDeploymentExternalBindingsKeyVault + | SyncAcquireResponseDeploymentExternalBindingsKubernetesSecret + | SyncAcquireResponseDeploymentExternalBindingsLocalVault; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentDataDirSecretRef2 = { + key: string; + name: string; }; -export type SyncAcquireResponseDeploymentCertificateManagedTLSSecret2 = { - mode: "managedTlsSecret"; +export type SyncAcquireResponseDeploymentDataDir2 = { /** - * Secret name template. Runtime may substitute resource/deployment tokens. + * Reference to a Kubernetes Secret */ - secretNameTemplate: string; + secretRef: SyncAcquireResponseDeploymentDataDirSecretRef2; }; -export type SyncAcquireResponseDeploymentCertificateAwsAcmArn2 = { +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentRegistryUrlSecretRef = { + key: string; + name: string; +}; + +export type SyncAcquireResponseDeploymentRegistryUrl = { /** - * Existing ACM certificate ARN. + * Reference to a Kubernetes Secret */ - certificateArn: string; - mode: "awsAcmArn"; + secretRef: SyncAcquireResponseDeploymentRegistryUrlSecretRef; }; -export type SyncAcquireResponseDeploymentCertificateManagedAcmImport2 = { - mode: "managedAcmImport"; +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentRegistryUrlUnion = + | SyncAcquireResponseDeploymentRegistryUrl + | any + | string; + +export const SyncAcquireResponseDeploymentTypeArtifactRegistry4 = { + ArtifactRegistry: "artifact_registry", +} as const; +export type SyncAcquireResponseDeploymentTypeArtifactRegistry4 = ClosedEnum< + typeof SyncAcquireResponseDeploymentTypeArtifactRegistry4 +>; + +/** + * Local container registry binding configuration. + * + * @remarks + * + * The local registry runs on localhost only and does not require authentication. + * Security boundary is the OS process isolation on the customer's machine. + * External image access is secured by the manager's registry proxy (deployment tokens). + */ +export type SyncAcquireResponseDeploymentExternalBindingsLocal = { /** - * ACM region. Defaults to the deployment region when omitted. + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ - region?: string | null | undefined; + dataDir?: any | null | undefined; /** - * Tags applied to runtime-imported ACM certificates. + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ - tags?: { [k: string]: string } | undefined; + registryUrl?: + | SyncAcquireResponseDeploymentRegistryUrl + | any + | string + | null + | undefined; + service: "local"; + type: SyncAcquireResponseDeploymentTypeArtifactRegistry4; }; /** - * Namespace-scoped Kubernetes TLS Secret reference. + * Reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentCertificateTLSSecretRef2 = { +export type SyncAcquireResponseDeploymentPullServiceAccountEmailSecretRef = { + key: string; + name: string; +}; + +export type SyncAcquireResponseDeploymentPullServiceAccountEmail = { /** - * Secret namespace. Defaults to the release namespace when omitted. + * Reference to a Kubernetes Secret */ - namespace?: string | null | undefined; + secretRef: SyncAcquireResponseDeploymentPullServiceAccountEmailSecretRef; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentPushServiceAccountEmailSecretRef = { + key: string; + name: string; +}; + +export type SyncAcquireResponseDeploymentPushServiceAccountEmail = { /** - * Secret name. + * Reference to a Kubernetes Secret */ - secretName: string; - mode: "tlsSecretRef"; + secretRef: SyncAcquireResponseDeploymentPushServiceAccountEmailSecretRef; }; /** - * Certificate publication or reference mode for Kubernetes public endpoints. + * Reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentCertificateUnion2 = - | SyncAcquireResponseDeploymentCertificateTLSSecretRef2 - | SyncAcquireResponseDeploymentCertificateManagedAcmImport2 - | SyncAcquireResponseDeploymentCertificateAwsAcmArn2 - | SyncAcquireResponseDeploymentCertificateManagedTLSSecret2 - | SyncAcquireResponseDeploymentCertificateNone2; - -export const SyncAcquireResponseDeploymentModeCustom = { - Custom: "custom", -} as const; -export type SyncAcquireResponseDeploymentModeCustom = ClosedEnum< - typeof SyncAcquireResponseDeploymentModeCustom ->; +export type SyncAcquireResponseDeploymentRepositoryNameSecretRef = { + key: string; + name: string; +}; -export const SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainersEnum4 = - { - AzureApplicationGatewayForContainers: - "azureApplicationGatewayForContainers", - } as const; -export type SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainersEnum4 = - ClosedEnum< - typeof SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainersEnum4 - >; +export type SyncAcquireResponseDeploymentRepositoryName = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseDeploymentRepositoryNameSecretRef; +}; -export type SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainers4 = - { - /** - * Optional ALB name when using BYO Application Gateway resources. - */ - albName?: string | null | undefined; - /** - * Optional ALB namespace when using BYO Application Gateway resources. - */ - albNamespace?: string | null | undefined; - /** - * Public or internal frontend exposure. - */ - frontend: string; - provider: - SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainersEnum4; - }; +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentRepositoryNameUnion = + | SyncAcquireResponseDeploymentRepositoryName + | any + | string; -export const SyncAcquireResponseDeploymentProviderGkeGatewayEnum4 = { - GkeGateway: "gkeGateway", +export const SyncAcquireResponseDeploymentTypeArtifactRegistry3 = { + ArtifactRegistry: "artifact_registry", } as const; -export type SyncAcquireResponseDeploymentProviderGkeGatewayEnum4 = ClosedEnum< - typeof SyncAcquireResponseDeploymentProviderGkeGatewayEnum4 +export type SyncAcquireResponseDeploymentTypeArtifactRegistry3 = ClosedEnum< + typeof SyncAcquireResponseDeploymentTypeArtifactRegistry3 >; -export type SyncAcquireResponseDeploymentProviderGkeGateway4 = { - provider: SyncAcquireResponseDeploymentProviderGkeGatewayEnum4; +/** + * Google Artifact Registry binding configuration + */ +export type SyncAcquireResponseDeploymentExternalBindingsGar = { + pullServiceAccountEmail?: any | null | undefined; + pushServiceAccountEmail?: any | null | undefined; /** - * Optional static address name for the Gateway frontend. + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ - staticAddressName?: string | null | undefined; + repositoryName?: + | SyncAcquireResponseDeploymentRepositoryName + | any + | string + | null + | undefined; + service: "gar"; + type: SyncAcquireResponseDeploymentTypeArtifactRegistry3; }; -export const SyncAcquireResponseDeploymentProviderAwsAlbEnum4 = { - AwsAlb: "awsAlb", -} as const; -export type SyncAcquireResponseDeploymentProviderAwsAlbEnum4 = ClosedEnum< - typeof SyncAcquireResponseDeploymentProviderAwsAlbEnum4 ->; +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentRegistryNameSecretRef = { + key: string; + name: string; +}; -export type SyncAcquireResponseDeploymentProviderAwsAlb4 = { - /** - * Optional ALB IP address type, such as `dualstack`. - */ - ipAddressType?: string | null | undefined; - provider: SyncAcquireResponseDeploymentProviderAwsAlbEnum4; - /** - * Internet-facing or internal ALB scheme. - */ - scheme: string; - /** - * Explicit subnet IDs when the profile cannot rely on controller discovery. - */ - subnetIds?: Array | undefined; +export type SyncAcquireResponseDeploymentRegistryName = { /** - * ALB target type, usually `ip`. + * Reference to a Kubernetes Secret */ - targetType: string; + secretRef: SyncAcquireResponseDeploymentRegistryNameSecretRef; }; -export type SyncAcquireResponseDeploymentProviderUnion4 = - | SyncAcquireResponseDeploymentProviderAwsAlb4 - | SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainers4 - | SyncAcquireResponseDeploymentProviderGkeGateway4 - | any; - /** - * Shared Gateway API route profile values. + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentRouteGateway2 = { - /** - * Annotations applied to route objects. - */ - annotations?: { [k: string]: string } | undefined; - /** - * Route controller identifier, for example a cloud Gateway controller. - */ - controller?: string | null | undefined; - /** - * GatewayClass selected for generated Gateways. - */ - gatewayClassName: string; - /** - * Labels applied to route objects. - */ - labels?: { [k: string]: string } | undefined; - /** - * Listener port, usually 443. - */ - listenerPort: number; - provider?: - | SyncAcquireResponseDeploymentProviderAwsAlb4 - | SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainers4 - | SyncAcquireResponseDeploymentProviderGkeGateway4 - | any - | null - | undefined; - routeApi: "gateway"; -}; - -export const SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainersEnum3 = - { - AzureApplicationGatewayForContainers: - "azureApplicationGatewayForContainers", - } as const; -export type SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainersEnum3 = - ClosedEnum< - typeof SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainersEnum3 - >; - -export type SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainers3 = - { - /** - * Optional ALB name when using BYO Application Gateway resources. - */ - albName?: string | null | undefined; - /** - * Optional ALB namespace when using BYO Application Gateway resources. - */ - albNamespace?: string | null | undefined; - /** - * Public or internal frontend exposure. - */ - frontend: string; - provider: - SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainersEnum3; - }; +export type SyncAcquireResponseDeploymentRegistryNameUnion = + | SyncAcquireResponseDeploymentRegistryName + | any + | string; -export const SyncAcquireResponseDeploymentProviderGkeGatewayEnum3 = { - GkeGateway: "gkeGateway", -} as const; -export type SyncAcquireResponseDeploymentProviderGkeGatewayEnum3 = ClosedEnum< - typeof SyncAcquireResponseDeploymentProviderGkeGatewayEnum3 ->; +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentRepositoryPrefixSecretRef2 = { + key: string; + name: string; +}; -export type SyncAcquireResponseDeploymentProviderGkeGateway3 = { - provider: SyncAcquireResponseDeploymentProviderGkeGatewayEnum3; +export type SyncAcquireResponseDeploymentRepositoryPrefix2 = { /** - * Optional static address name for the Gateway frontend. + * Reference to a Kubernetes Secret */ - staticAddressName?: string | null | undefined; + secretRef: SyncAcquireResponseDeploymentRepositoryPrefixSecretRef2; }; -export const SyncAcquireResponseDeploymentProviderAwsAlbEnum3 = { - AwsAlb: "awsAlb", -} as const; -export type SyncAcquireResponseDeploymentProviderAwsAlbEnum3 = ClosedEnum< - typeof SyncAcquireResponseDeploymentProviderAwsAlbEnum3 ->; +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentResourceGroupNameSecretRef2 = { + key: string; + name: string; +}; -export type SyncAcquireResponseDeploymentProviderAwsAlb3 = { - /** - * Optional ALB IP address type, such as `dualstack`. - */ - ipAddressType?: string | null | undefined; - provider: SyncAcquireResponseDeploymentProviderAwsAlbEnum3; - /** - * Internet-facing or internal ALB scheme. - */ - scheme: string; - /** - * Explicit subnet IDs when the profile cannot rely on controller discovery. - */ - subnetIds?: Array | undefined; +export type SyncAcquireResponseDeploymentResourceGroupName2 = { /** - * ALB target type, usually `ip`. + * Reference to a Kubernetes Secret */ - targetType: string; + secretRef: SyncAcquireResponseDeploymentResourceGroupNameSecretRef2; }; -export type SyncAcquireResponseDeploymentProviderUnion3 = - | SyncAcquireResponseDeploymentProviderAwsAlb3 - | SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainers3 - | SyncAcquireResponseDeploymentProviderGkeGateway3 - | any; +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentResourceGroupNameUnion2 = + | SyncAcquireResponseDeploymentResourceGroupName2 + | any + | string; + +export const SyncAcquireResponseDeploymentTypeArtifactRegistry2 = { + ArtifactRegistry: "artifact_registry", +} as const; +export type SyncAcquireResponseDeploymentTypeArtifactRegistry2 = ClosedEnum< + typeof SyncAcquireResponseDeploymentTypeArtifactRegistry2 +>; /** - * Shared Ingress route profile values. + * Azure Container Registry binding configuration */ -export type SyncAcquireResponseDeploymentRouteIngress2 = { - /** - * Annotations applied to route objects. - */ - annotations?: { [k: string]: string } | undefined; - /** - * Route controller identifier, for example `eks.amazonaws.com/alb`. - */ - controller?: string | null | undefined; +export type SyncAcquireResponseDeploymentExternalBindingsAcr = { /** - * `spec.ingressClassName` for generated Ingresses. + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ - ingressClassName: string; + registryName?: + | SyncAcquireResponseDeploymentRegistryName + | any + | string + | null + | undefined; + repositoryPrefix?: any | null | undefined; /** - * Labels applied to route objects. + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ - labels?: { [k: string]: string } | undefined; - provider?: - | SyncAcquireResponseDeploymentProviderAwsAlb3 - | SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainers3 - | SyncAcquireResponseDeploymentProviderGkeGateway3 + resourceGroupName?: + | SyncAcquireResponseDeploymentResourceGroupName2 | any + | string | null | undefined; - routeApi: "ingress"; + service: "acr"; + type: SyncAcquireResponseDeploymentTypeArtifactRegistry2; }; /** - * Kubernetes route API selected for public endpoints. + * Reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentRouteUnion2 = - | SyncAcquireResponseDeploymentRouteIngress2 - | SyncAcquireResponseDeploymentRouteGateway2; +export type SyncAcquireResponseDeploymentPullRoleArnSecretRef = { + key: string; + name: string; +}; -export type SyncAcquireResponseDeploymentExposureCustom = { - /** - * Certificate publication or reference mode for Kubernetes public endpoints. - */ - certificate: - | SyncAcquireResponseDeploymentCertificateTLSSecretRef2 - | SyncAcquireResponseDeploymentCertificateManagedAcmImport2 - | SyncAcquireResponseDeploymentCertificateAwsAcmArn2 - | SyncAcquireResponseDeploymentCertificateManagedTLSSecret2 - | SyncAcquireResponseDeploymentCertificateNone2; - /** - * Hostname routed by the Kubernetes public endpoint. - */ - domain: string; - mode: SyncAcquireResponseDeploymentModeCustom; +export type SyncAcquireResponseDeploymentPullRoleArn = { /** - * Kubernetes route API selected for public endpoints. + * Reference to a Kubernetes Secret */ - route: - | SyncAcquireResponseDeploymentRouteIngress2 - | SyncAcquireResponseDeploymentRouteGateway2; + secretRef: SyncAcquireResponseDeploymentPullRoleArnSecretRef; }; -export type SyncAcquireResponseDeploymentCertificateNone1 = { - mode: "none"; +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentPushRoleArnSecretRef = { + key: string; + name: string; }; -export type SyncAcquireResponseDeploymentCertificateManagedTLSSecret1 = { - mode: "managedTlsSecret"; +export type SyncAcquireResponseDeploymentPushRoleArn = { /** - * Secret name template. Runtime may substitute resource/deployment tokens. + * Reference to a Kubernetes Secret */ - secretNameTemplate: string; + secretRef: SyncAcquireResponseDeploymentPushRoleArnSecretRef; }; -export type SyncAcquireResponseDeploymentCertificateAwsAcmArn1 = { - /** - * Existing ACM certificate ARN. - */ - certificateArn: string; - mode: "awsAcmArn"; +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentRepositoryPrefixSecretRef1 = { + key: string; + name: string; }; -export type SyncAcquireResponseDeploymentCertificateManagedAcmImport1 = { - mode: "managedAcmImport"; - /** - * ACM region. Defaults to the deployment region when omitted. - */ - region?: string | null | undefined; +export type SyncAcquireResponseDeploymentRepositoryPrefix1 = { /** - * Tags applied to runtime-imported ACM certificates. + * Reference to a Kubernetes Secret */ - tags?: { [k: string]: string } | undefined; + secretRef: SyncAcquireResponseDeploymentRepositoryPrefixSecretRef1; }; /** - * Namespace-scoped Kubernetes TLS Secret reference. + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentCertificateTLSSecretRef1 = { - /** - * Secret namespace. Defaults to the release namespace when omitted. - */ - namespace?: string | null | undefined; - /** - * Secret name. +export type SyncAcquireResponseDeploymentRepositoryPrefixUnion = + | SyncAcquireResponseDeploymentRepositoryPrefix1 + | any + | string; + +export const SyncAcquireResponseDeploymentTypeArtifactRegistry1 = { + ArtifactRegistry: "artifact_registry", +} as const; +export type SyncAcquireResponseDeploymentTypeArtifactRegistry1 = ClosedEnum< + typeof SyncAcquireResponseDeploymentTypeArtifactRegistry1 +>; + +/** + * AWS ECR (Elastic Container Registry) binding configuration + */ +export type SyncAcquireResponseDeploymentExternalBindingsEcr = { + pullRoleArn?: any | null | undefined; + pushRoleArn?: any | null | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ - secretName: string; - mode: "tlsSecretRef"; + repositoryPrefix?: + | SyncAcquireResponseDeploymentRepositoryPrefix1 + | any + | string + | null + | undefined; + service: "ecr"; + type: SyncAcquireResponseDeploymentTypeArtifactRegistry1; }; /** - * Certificate publication or reference mode for Kubernetes public endpoints. + * Service-type based artifact registry binding that supports multiple registry providers */ -export type SyncAcquireResponseDeploymentCertificateUnion1 = - | SyncAcquireResponseDeploymentCertificateTLSSecretRef1 - | SyncAcquireResponseDeploymentCertificateManagedAcmImport1 - | SyncAcquireResponseDeploymentCertificateAwsAcmArn1 - | SyncAcquireResponseDeploymentCertificateManagedTLSSecret1 - | SyncAcquireResponseDeploymentCertificateNone1; +export type SyncAcquireResponseDeploymentExternalBindingsUnion4 = + | SyncAcquireResponseDeploymentExternalBindingsEcr + | SyncAcquireResponseDeploymentExternalBindingsAcr + | SyncAcquireResponseDeploymentExternalBindingsGar + | SyncAcquireResponseDeploymentExternalBindingsLocal; -export const SyncAcquireResponseDeploymentModeGenerated = { - Generated: "generated", -} as const; -export type SyncAcquireResponseDeploymentModeGenerated = ClosedEnum< - typeof SyncAcquireResponseDeploymentModeGenerated ->; +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentDataDirSecretRef1 = { + key: string; + name: string; +}; -export const SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainersEnum2 = - { - AzureApplicationGatewayForContainers: - "azureApplicationGatewayForContainers", - } as const; -export type SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainersEnum2 = - ClosedEnum< - typeof SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainersEnum2 - >; +export type SyncAcquireResponseDeploymentDataDir1 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseDeploymentDataDirSecretRef1; +}; -export type SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainers2 = - { - /** - * Optional ALB name when using BYO Application Gateway resources. - */ - albName?: string | null | undefined; - /** - * Optional ALB namespace when using BYO Application Gateway resources. - */ - albNamespace?: string | null | undefined; - /** - * Public or internal frontend exposure. - */ - frontend: string; - provider: - SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainersEnum2; - }; +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentDataDirUnion1 = + | SyncAcquireResponseDeploymentDataDir1 + | any + | string; -export const SyncAcquireResponseDeploymentProviderGkeGatewayEnum2 = { - GkeGateway: "gkeGateway", -} as const; -export type SyncAcquireResponseDeploymentProviderGkeGatewayEnum2 = ClosedEnum< - typeof SyncAcquireResponseDeploymentProviderGkeGatewayEnum2 ->; +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentKeyPrefixSecretRef2 = { + key: string; + name: string; +}; -export type SyncAcquireResponseDeploymentProviderGkeGateway2 = { - provider: SyncAcquireResponseDeploymentProviderGkeGatewayEnum2; +export type SyncAcquireResponseDeploymentKeyPrefix2 = { /** - * Optional static address name for the Gateway frontend. + * Reference to a Kubernetes Secret */ - staticAddressName?: string | null | undefined; + secretRef: SyncAcquireResponseDeploymentKeyPrefixSecretRef2; }; -export const SyncAcquireResponseDeploymentProviderAwsAlbEnum2 = { - AwsAlb: "awsAlb", +export const SyncAcquireResponseDeploymentTypeKv5 = { + Kv: "kv", } as const; -export type SyncAcquireResponseDeploymentProviderAwsAlbEnum2 = ClosedEnum< - typeof SyncAcquireResponseDeploymentProviderAwsAlbEnum2 +export type SyncAcquireResponseDeploymentTypeKv5 = ClosedEnum< + typeof SyncAcquireResponseDeploymentTypeKv5 >; -export type SyncAcquireResponseDeploymentProviderAwsAlb2 = { - /** - * Optional ALB IP address type, such as `dualstack`. - */ - ipAddressType?: string | null | undefined; - provider: SyncAcquireResponseDeploymentProviderAwsAlbEnum2; - /** - * Internet-facing or internal ALB scheme. - */ - scheme: string; +/** + * Local development KV binding configuration + */ +export type SyncAcquireResponseDeploymentExternalBindingsLocalKv = { /** - * Explicit subnet IDs when the profile cannot rely on controller discovery. + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ - subnetIds?: Array | undefined; + dataDir?: + | SyncAcquireResponseDeploymentDataDir1 + | any + | string + | null + | undefined; + keyPrefix?: any | null | undefined; + service: "local-kv"; + type: SyncAcquireResponseDeploymentTypeKv5; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentConnectionUrlSecretRef = { + key: string; + name: string; +}; + +export type SyncAcquireResponseDeploymentConnectionUrl = { /** - * ALB target type, usually `ip`. + * Reference to a Kubernetes Secret */ - targetType: string; + secretRef: SyncAcquireResponseDeploymentConnectionUrlSecretRef; }; -export type SyncAcquireResponseDeploymentProviderUnion2 = - | SyncAcquireResponseDeploymentProviderAwsAlb2 - | SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainers2 - | SyncAcquireResponseDeploymentProviderGkeGateway2 - | any; +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentConnectionUrlUnion = + | SyncAcquireResponseDeploymentConnectionUrl + | any + | string; /** - * Shared Gateway API route profile values. + * Reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentRouteGateway1 = { - /** - * Annotations applied to route objects. - */ - annotations?: { [k: string]: string } | undefined; - /** - * Route controller identifier, for example a cloud Gateway controller. - */ - controller?: string | null | undefined; +export type SyncAcquireResponseDeploymentDatabaseSecretRef1 = { + key: string; + name: string; +}; + +export type SyncAcquireResponseDeploymentDatabase1 = { /** - * GatewayClass selected for generated Gateways. + * Reference to a Kubernetes Secret */ - gatewayClassName: string; + secretRef: SyncAcquireResponseDeploymentDatabaseSecretRef1; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentKeyPrefixSecretRef1 = { + key: string; + name: string; +}; + +export type SyncAcquireResponseDeploymentKeyPrefix1 = { /** - * Labels applied to route objects. + * Reference to a Kubernetes Secret */ - labels?: { [k: string]: string } | undefined; + secretRef: SyncAcquireResponseDeploymentKeyPrefixSecretRef1; +}; + +export const SyncAcquireResponseDeploymentTypeKv4 = { + Kv: "kv", +} as const; +export type SyncAcquireResponseDeploymentTypeKv4 = ClosedEnum< + typeof SyncAcquireResponseDeploymentTypeKv4 +>; + +/** + * Redis KV binding configuration + */ +export type SyncAcquireResponseDeploymentExternalBindingsRedis = { /** - * Listener port, usually 443. + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ - listenerPort: number; - provider?: - | SyncAcquireResponseDeploymentProviderAwsAlb2 - | SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainers2 - | SyncAcquireResponseDeploymentProviderGkeGateway2 + connectionUrl?: + | SyncAcquireResponseDeploymentConnectionUrl | any + | string | null | undefined; - routeApi: "gateway"; + database?: any | null | undefined; + keyPrefix?: any | null | undefined; + service: "redis"; + type: SyncAcquireResponseDeploymentTypeKv4; }; -export const SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainersEnum1 = - { - AzureApplicationGatewayForContainers: - "azureApplicationGatewayForContainers", - } as const; -export type SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainersEnum1 = - ClosedEnum< - typeof SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainersEnum1 - >; - -export type SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainers1 = - { - /** - * Optional ALB name when using BYO Application Gateway resources. - */ - albName?: string | null | undefined; - /** - * Optional ALB namespace when using BYO Application Gateway resources. - */ - albNamespace?: string | null | undefined; - /** - * Public or internal frontend exposure. - */ - frontend: string; - provider: - SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainersEnum1; - }; - -export const SyncAcquireResponseDeploymentProviderGkeGatewayEnum1 = { - GkeGateway: "gkeGateway", -} as const; -export type SyncAcquireResponseDeploymentProviderGkeGatewayEnum1 = ClosedEnum< - typeof SyncAcquireResponseDeploymentProviderGkeGatewayEnum1 ->; +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentAccountNameSecretRef2 = { + key: string; + name: string; +}; -export type SyncAcquireResponseDeploymentProviderGkeGateway1 = { - provider: SyncAcquireResponseDeploymentProviderGkeGatewayEnum1; +export type SyncAcquireResponseDeploymentAccountName2 = { /** - * Optional static address name for the Gateway frontend. + * Reference to a Kubernetes Secret */ - staticAddressName?: string | null | undefined; + secretRef: SyncAcquireResponseDeploymentAccountNameSecretRef2; }; -export const SyncAcquireResponseDeploymentProviderAwsAlbEnum1 = { - AwsAlb: "awsAlb", -} as const; -export type SyncAcquireResponseDeploymentProviderAwsAlbEnum1 = ClosedEnum< - typeof SyncAcquireResponseDeploymentProviderAwsAlbEnum1 ->; +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentAccountNameUnion2 = + | SyncAcquireResponseDeploymentAccountName2 + | any + | string; -export type SyncAcquireResponseDeploymentProviderAwsAlb1 = { - /** - * Optional ALB IP address type, such as `dualstack`. - */ - ipAddressType?: string | null | undefined; - provider: SyncAcquireResponseDeploymentProviderAwsAlbEnum1; - /** - * Internet-facing or internal ALB scheme. - */ - scheme: string; - /** - * Explicit subnet IDs when the profile cannot rely on controller discovery. - */ - subnetIds?: Array | undefined; +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentResourceGroupNameSecretRef1 = { + key: string; + name: string; +}; + +export type SyncAcquireResponseDeploymentResourceGroupName1 = { /** - * ALB target type, usually `ip`. + * Reference to a Kubernetes Secret */ - targetType: string; + secretRef: SyncAcquireResponseDeploymentResourceGroupNameSecretRef1; }; -export type SyncAcquireResponseDeploymentProviderUnion1 = - | SyncAcquireResponseDeploymentProviderAwsAlb1 - | SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainers1 - | SyncAcquireResponseDeploymentProviderGkeGateway1 - | any; +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentResourceGroupNameUnion1 = + | SyncAcquireResponseDeploymentResourceGroupName1 + | any + | string; /** - * Shared Ingress route profile values. + * Reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentRouteIngress1 = { +export type SyncAcquireResponseDeploymentTableNameSecretRef2 = { + key: string; + name: string; +}; + +export type SyncAcquireResponseDeploymentTableName2 = { /** - * Annotations applied to route objects. + * Reference to a Kubernetes Secret */ - annotations?: { [k: string]: string } | undefined; + secretRef: SyncAcquireResponseDeploymentTableNameSecretRef2; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentTableNameUnion2 = + | SyncAcquireResponseDeploymentTableName2 + | any + | string; + +export const SyncAcquireResponseDeploymentTypeKv3 = { + Kv: "kv", +} as const; +export type SyncAcquireResponseDeploymentTypeKv3 = ClosedEnum< + typeof SyncAcquireResponseDeploymentTypeKv3 +>; + +/** + * Azure Table Storage KV binding configuration + */ +export type SyncAcquireResponseDeploymentExternalBindingsTablestorage = { /** - * Route controller identifier, for example `eks.amazonaws.com/alb`. + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ - controller?: string | null | undefined; + accountName?: + | SyncAcquireResponseDeploymentAccountName2 + | any + | string + | null + | undefined; /** - * `spec.ingressClassName` for generated Ingresses. + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ - ingressClassName: string; + resourceGroupName?: + | SyncAcquireResponseDeploymentResourceGroupName1 + | any + | string + | null + | undefined; /** - * Labels applied to route objects. + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ - labels?: { [k: string]: string } | undefined; - provider?: - | SyncAcquireResponseDeploymentProviderAwsAlb1 - | SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainers1 - | SyncAcquireResponseDeploymentProviderGkeGateway1 + tableName?: + | SyncAcquireResponseDeploymentTableName2 | any + | string | null | undefined; - routeApi: "ingress"; + service: "tablestorage"; + type: SyncAcquireResponseDeploymentTypeKv3; }; /** - * Kubernetes route API selected for public endpoints. + * Reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentRouteUnion1 = - | SyncAcquireResponseDeploymentRouteIngress1 - | SyncAcquireResponseDeploymentRouteGateway1; +export type SyncAcquireResponseDeploymentCollectionNameSecretRef = { + key: string; + name: string; +}; -export type SyncAcquireResponseDeploymentExposureGenerated = { - /** - * Certificate publication or reference mode for Kubernetes public endpoints. - */ - certificate: - | SyncAcquireResponseDeploymentCertificateTLSSecretRef1 - | SyncAcquireResponseDeploymentCertificateManagedAcmImport1 - | SyncAcquireResponseDeploymentCertificateAwsAcmArn1 - | SyncAcquireResponseDeploymentCertificateManagedTLSSecret1 - | SyncAcquireResponseDeploymentCertificateNone1; - mode: SyncAcquireResponseDeploymentModeGenerated; +export type SyncAcquireResponseDeploymentCollectionName = { /** - * Kubernetes route API selected for public endpoints. + * Reference to a Kubernetes Secret */ - route: - | SyncAcquireResponseDeploymentRouteIngress1 - | SyncAcquireResponseDeploymentRouteGateway1; + secretRef: SyncAcquireResponseDeploymentCollectionNameSecretRef; }; -export const SyncAcquireResponseDeploymentModeDisabled = { - Disabled: "disabled", -} as const; -export type SyncAcquireResponseDeploymentModeDisabled = ClosedEnum< - typeof SyncAcquireResponseDeploymentModeDisabled ->; +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentCollectionNameUnion = + | SyncAcquireResponseDeploymentCollectionName + | any + | string; -export type SyncAcquireResponseDeploymentExposureDisabled = { - mode: SyncAcquireResponseDeploymentModeDisabled; +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentDatabaseIdSecretRef = { + key: string; + name: string; }; -export type SyncAcquireResponseDeploymentExposureUnion = - | SyncAcquireResponseDeploymentExposureCustom - | SyncAcquireResponseDeploymentExposureGenerated - | SyncAcquireResponseDeploymentExposureDisabled - | any; +export type SyncAcquireResponseDeploymentDatabaseId = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseDeploymentDatabaseIdSecretRef; +}; /** - * Kubernetes runtime substrate configuration. + * Represents a value that can be either a concrete value, a template expression, * * @remarks - * - * This controls how setup chooses the cluster backing `Platform::Kubernetes` - * deployments. When omitted, cloud-backed Kubernetes deployments default to a - * managed cluster and generic/on-prem Kubernetes defaults to an external - * cluster. + * or a reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentKubernetes = { - cluster?: SyncAcquireResponseDeploymentCluster | any | null | undefined; - exposure?: - | SyncAcquireResponseDeploymentExposureCustom - | SyncAcquireResponseDeploymentExposureGenerated - | SyncAcquireResponseDeploymentExposureDisabled - | any - | null - | undefined; +export type SyncAcquireResponseDeploymentDatabaseIdUnion = + | SyncAcquireResponseDeploymentDatabaseId + | any + | string; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentProjectIdSecretRef = { + key: string; + name: string; }; -export type SyncAcquireResponseDeploymentKubernetesUnion = - | SyncAcquireResponseDeploymentKubernetes - | any; +export type SyncAcquireResponseDeploymentProjectId = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseDeploymentProjectIdSecretRef; +}; -export const SyncAcquireResponseDeploymentTypeByoVnetAzure = { - ByoVnetAzure: "byo-vnet-azure", +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentProjectIdUnion = + | SyncAcquireResponseDeploymentProjectId + | any + | string; + +export const SyncAcquireResponseDeploymentTypeKv2 = { + Kv: "kv", } as const; -export type SyncAcquireResponseDeploymentTypeByoVnetAzure = ClosedEnum< - typeof SyncAcquireResponseDeploymentTypeByoVnetAzure +export type SyncAcquireResponseDeploymentTypeKv2 = ClosedEnum< + typeof SyncAcquireResponseDeploymentTypeKv2 >; -export type SyncAcquireResponseDeploymentNetworkByoVnetAzure = { - /** - * Name of the dedicated classic Application Gateway subnet within the VNet. - */ - applicationGatewaySubnetName?: string | null | undefined; +/** + * GCP Firestore KV binding configuration + */ +export type SyncAcquireResponseDeploymentExternalBindingsFirestore = { /** - * Name of the dedicated subnet that hosts Private Endpoints (e.g. for a + * Represents a value that can be either a concrete value, a template expression, * * @remarks - * Postgres Flexible Server). A Private Endpoint must not share the private - * subnet, which is already claimed by the Container Apps environment's - * `infrastructure_subnet_id`. Required only when the stack contains a - * Postgres resource; otherwise unused. - */ - privateEndpointSubnetName?: string | null | undefined; - /** - * Name of the private subnet within the VNet + * or a reference to a Kubernetes Secret */ - privateSubnetName: string; + collectionName?: + | SyncAcquireResponseDeploymentCollectionName + | any + | string + | null + | undefined; /** - * Name of the public subnet within the VNet + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ - publicSubnetName: string; - type: SyncAcquireResponseDeploymentTypeByoVnetAzure; + databaseId?: + | SyncAcquireResponseDeploymentDatabaseId + | any + | string + | null + | undefined; /** - * The full resource ID of the existing VNet + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ - vnetResourceId: string; + projectId?: + | SyncAcquireResponseDeploymentProjectId + | any + | string + | null + | undefined; + service: "firestore"; + type: SyncAcquireResponseDeploymentTypeKv2; }; -export const SyncAcquireResponseDeploymentTypeByoVpcGcp = { - ByoVpcGcp: "byo-vpc-gcp", -} as const; -export type SyncAcquireResponseDeploymentTypeByoVpcGcp = ClosedEnum< - typeof SyncAcquireResponseDeploymentTypeByoVpcGcp ->; +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentEndpointUrlSecretRef = { + key: string; + name: string; +}; -export type SyncAcquireResponseDeploymentNetworkByoVpcGcp = { - /** - * The name of the existing VPC network - */ - networkName: string; - /** - * The region of the subnet - */ - region: string; +export type SyncAcquireResponseDeploymentEndpointUrl = { /** - * The name of the subnet to use + * Reference to a Kubernetes Secret */ - subnetName: string; - type: SyncAcquireResponseDeploymentTypeByoVpcGcp; + secretRef: SyncAcquireResponseDeploymentEndpointUrlSecretRef; }; -export const SyncAcquireResponseDeploymentTypeByoVpcAws = { - ByoVpcAws: "byo-vpc-aws", -} as const; -export type SyncAcquireResponseDeploymentTypeByoVpcAws = ClosedEnum< - typeof SyncAcquireResponseDeploymentTypeByoVpcAws ->; +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentRegionSecretRef = { + key: string; + name: string; +}; -export type SyncAcquireResponseDeploymentNetworkByoVpcAws = { - /** - * IDs of private subnets - */ - privateSubnetIds: Array; - /** - * IDs of public subnets (required for public ingress) - */ - publicSubnetIds: Array; +export type SyncAcquireResponseDeploymentRegion = { /** - * Optional security group IDs to use + * Reference to a Kubernetes Secret */ - securityGroupIds?: Array | undefined; - type: SyncAcquireResponseDeploymentTypeByoVpcAws; + secretRef: SyncAcquireResponseDeploymentRegionSecretRef; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentRegionUnion = + | SyncAcquireResponseDeploymentRegion + | any + | string; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentTableNameSecretRef1 = { + key: string; + name: string; +}; + +export type SyncAcquireResponseDeploymentTableName1 = { /** - * The ID of the existing VPC + * Reference to a Kubernetes Secret */ - vpcId: string; + secretRef: SyncAcquireResponseDeploymentTableNameSecretRef1; }; -export const SyncAcquireResponseDeploymentTypeCreate = { - Create: "create", +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentTableNameUnion1 = + | SyncAcquireResponseDeploymentTableName1 + | any + | string; + +export const SyncAcquireResponseDeploymentTypeKv1 = { + Kv: "kv", } as const; -export type SyncAcquireResponseDeploymentTypeCreate = ClosedEnum< - typeof SyncAcquireResponseDeploymentTypeCreate +export type SyncAcquireResponseDeploymentTypeKv1 = ClosedEnum< + typeof SyncAcquireResponseDeploymentTypeKv1 >; -export type SyncAcquireResponseDeploymentNetworkCreate = { +/** + * AWS DynamoDB KV binding configuration + */ +export type SyncAcquireResponseDeploymentExternalBindingsDynamodb = { + endpointUrl?: any | null | undefined; /** - * Number of availability zones (default: 2). + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ - availabilityZones?: number | undefined; + region?: + | SyncAcquireResponseDeploymentRegion + | any + | string + | null + | undefined; /** - * VPC/VNet CIDR block. If not specified, auto-generated from stack ID + * Represents a value that can be either a concrete value, a template expression, * * @remarks - * to reduce conflicts (e.g., "10.{hash}.0.0/16"). + * or a reference to a Kubernetes Secret */ - cidr?: string | null | undefined; - type: SyncAcquireResponseDeploymentTypeCreate; + tableName?: + | SyncAcquireResponseDeploymentTableName1 + | any + | string + | null + | undefined; + service: "dynamodb"; + type: SyncAcquireResponseDeploymentTypeKv1; }; -export const SyncAcquireResponseDeploymentTypeUseDefault = { - UseDefault: "use-default", -} as const; -export type SyncAcquireResponseDeploymentTypeUseDefault = ClosedEnum< - typeof SyncAcquireResponseDeploymentTypeUseDefault ->; +/** + * Represents a KV binding for key-value storage across platforms + */ +export type SyncAcquireResponseDeploymentExternalBindingsUnion3 = + | SyncAcquireResponseDeploymentExternalBindingsDynamodb + | SyncAcquireResponseDeploymentExternalBindingsFirestore + | SyncAcquireResponseDeploymentExternalBindingsTablestorage + | SyncAcquireResponseDeploymentExternalBindingsRedis + | SyncAcquireResponseDeploymentExternalBindingsLocalKv; -export type SyncAcquireResponseDeploymentNetworkUseDefault = { - type: SyncAcquireResponseDeploymentTypeUseDefault; +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentQueuePathSecretRef = { + key: string; + name: string; }; -export type SyncAcquireResponseDeploymentNetworkUnion = - | SyncAcquireResponseDeploymentNetworkByoVpcAws - | SyncAcquireResponseDeploymentNetworkByoVpcGcp - | SyncAcquireResponseDeploymentNetworkByoVnetAzure - | SyncAcquireResponseDeploymentNetworkUseDefault - | SyncAcquireResponseDeploymentNetworkCreate - | any; +export type SyncAcquireResponseDeploymentQueuePath = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseDeploymentQueuePathSecretRef; +}; /** - * How telemetry (logs, metrics, traces) is handled. + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ -export const SyncAcquireResponseDeploymentTelemetry = { - Off: "off", - Auto: "auto", - ApprovalRequired: "approval-required", +export type SyncAcquireResponseDeploymentQueuePathUnion = + | SyncAcquireResponseDeploymentQueuePath + | any + | string; + +export const SyncAcquireResponseDeploymentTypeQueue4 = { + Queue: "queue", } as const; -/** - * How telemetry (logs, metrics, traces) is handled. - */ -export type SyncAcquireResponseDeploymentTelemetry = ClosedEnum< - typeof SyncAcquireResponseDeploymentTelemetry +export type SyncAcquireResponseDeploymentTypeQueue4 = ClosedEnum< + typeof SyncAcquireResponseDeploymentTypeQueue4 >; /** - * How updates are delivered to the deployment. + * Local queue parameters */ -export const SyncAcquireResponseDeploymentUpdates = { - Auto: "auto", - ApprovalRequired: "approval-required", -} as const; +export type SyncAcquireResponseDeploymentExternalBindingsLocalQueue = { + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + queuePath?: + | SyncAcquireResponseDeploymentQueuePath + | any + | string + | null + | undefined; + service: "local-queue"; + type: SyncAcquireResponseDeploymentTypeQueue4; +}; + /** - * How updates are delivered to the deployment. + * Reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentUpdates = ClosedEnum< - typeof SyncAcquireResponseDeploymentUpdates ->; +export type SyncAcquireResponseDeploymentNamespaceSecretRef1 = { + key: string; + name: string; +}; + +export type SyncAcquireResponseDeploymentNamespace1 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseDeploymentNamespaceSecretRef1; +}; /** - * User-customizable deployment settings specified at deploy time. + * Represents a value that can be either a concrete value, a template expression, * * @remarks - * - * These settings are provided by the customer via CloudFormation parameters, - * Terraform attributes, CLI flags, or Helm values. They customize how the - * deployment runs and what capabilities are enabled. - * - * **Key distinction**: StackSettings is user-customizable, while ManagementConfig - * is platform-derived (from the Manager's ServiceAccount). + * or a reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentStackSettings = { - compute?: SyncAcquireResponseDeploymentCompute | any | null | undefined; +export type SyncAcquireResponseDeploymentNamespaceUnion1 = + | SyncAcquireResponseDeploymentNamespace1 + | any + | string; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentQueueNameSecretRef = { + key: string; + name: string; +}; + +export type SyncAcquireResponseDeploymentQueueName = { /** - * Deployment model: how updates are delivered to the remote environment. + * Reference to a Kubernetes Secret */ - deploymentModel?: SyncAcquireResponseDeploymentDeploymentModel | undefined; - domains?: SyncAcquireResponseDeploymentDomains | any | null | undefined; + secretRef: SyncAcquireResponseDeploymentQueueNameSecretRef; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentQueueNameUnion = + | SyncAcquireResponseDeploymentQueueName + | any + | string; + +export const SyncAcquireResponseDeploymentTypeQueue3 = { + Queue: "queue", +} as const; +export type SyncAcquireResponseDeploymentTypeQueue3 = ClosedEnum< + typeof SyncAcquireResponseDeploymentTypeQueue3 +>; + +/** + * Azure Service Bus parameters + */ +export type SyncAcquireResponseDeploymentExternalBindingsServicebus = { /** - * External bindings for pre-existing infrastructure. + * Represents a value that can be either a concrete value, a template expression, * * @remarks - * Allows using existing resources (MinIO, Redis, shared Container Apps - * Environment, etc.) instead of having Alien provision them. - * Required for Kubernetes platform, optional for cloud platforms. + * or a reference to a Kubernetes Secret */ - externalBindings?: - | SyncAcquireResponseDeploymentStackSettingsExternalBindings + namespace?: + | SyncAcquireResponseDeploymentNamespace1 + | any + | string | null | undefined; /** - * How heartbeat health checks are handled. + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ - heartbeats?: SyncAcquireResponseDeploymentHeartbeats | undefined; - kubernetes?: SyncAcquireResponseDeploymentKubernetes | any | null | undefined; - network?: - | SyncAcquireResponseDeploymentNetworkByoVpcAws - | SyncAcquireResponseDeploymentNetworkByoVpcGcp - | SyncAcquireResponseDeploymentNetworkByoVnetAzure - | SyncAcquireResponseDeploymentNetworkUseDefault - | SyncAcquireResponseDeploymentNetworkCreate + queueName?: + | SyncAcquireResponseDeploymentQueueName | any + | string | null | undefined; + service: "servicebus"; + type: SyncAcquireResponseDeploymentTypeQueue3; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentSubscriptionSecretRef = { + key: string; + name: string; +}; + +export type SyncAcquireResponseDeploymentSubscription = { /** - * How telemetry (logs, metrics, traces) is handled. + * Reference to a Kubernetes Secret */ - telemetry?: SyncAcquireResponseDeploymentTelemetry | undefined; + secretRef: SyncAcquireResponseDeploymentSubscriptionSecretRef; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentSubscriptionUnion = + | SyncAcquireResponseDeploymentSubscription + | any + | string; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentTopicSecretRef = { + key: string; + name: string; +}; + +export type SyncAcquireResponseDeploymentTopic = { /** - * How updates are delivered to the deployment. + * Reference to a Kubernetes Secret */ - updates?: SyncAcquireResponseDeploymentUpdates | undefined; + secretRef: SyncAcquireResponseDeploymentTopicSecretRef; }; /** - * Deployment configuration + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ -export type SyncAcquireResponseDeploymentConfig = { +export type SyncAcquireResponseDeploymentTopicUnion = + | SyncAcquireResponseDeploymentTopic + | any + | string; + +export const SyncAcquireResponseDeploymentTypeQueue2 = { + Queue: "queue", +} as const; +export type SyncAcquireResponseDeploymentTypeQueue2 = ClosedEnum< + typeof SyncAcquireResponseDeploymentTypeQueue2 +>; + +/** + * GCP Pub/Sub parameters + */ +export type SyncAcquireResponseDeploymentExternalBindingsPubsub = { /** - * Allow frozen resource changes during updates + * Represents a value that can be either a concrete value, a template expression, * * @remarks - * When true, skips the frozen resources compatibility check. - * This requires running with elevated cloud credentials. + * or a reference to a Kubernetes Secret */ - allowFrozenChanges?: boolean | undefined; - basePlatform?: - | SyncAcquireResponseDeploymentBasePlatformEnum - | any - | null - | undefined; - computeBackend?: - | SyncAcquireResponseDeploymentComputeBackendHorizon + subscription?: + | SyncAcquireResponseDeploymentSubscription | any + | string | null | undefined; /** - * Human-readable deployment name for cloud console metadata. - * - * @remarks - * - * This is separate from the physical resource prefix in StackState. It is - * used only for display text such as IAM role descriptions, service - * account descriptions, and custom role titles. - */ - deploymentName?: string | null | undefined; - /** - * Deployment token for pull authentication with the manager's registry. + * Represents a value that can be either a concrete value, a template expression, * * @remarks - * - * Used by controllers to configure registry credentials so cloud platforms - * and K8s can pull images from the manager's `/v2/` endpoint. + * or a reference to a Kubernetes Secret */ - deploymentToken?: string | null | undefined; - domainMetadata?: - | SyncAcquireResponseDeploymentDomainMetadata - | any - | null - | undefined; - /** - * Snapshot of environment variables at a point in time - */ - environmentVariables: SyncAcquireResponseDeploymentEnvironmentVariables; + topic?: SyncAcquireResponseDeploymentTopic | any | string | null | undefined; + service: "pubsub"; + type: SyncAcquireResponseDeploymentTypeQueue2; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentQueueUrlSecretRef = { + key: string; + name: string; +}; + +export type SyncAcquireResponseDeploymentQueueUrl = { /** - * Map from resource ID to external binding. - * - * @remarks - * - * Validated at runtime: binding type must match resource type. + * Reference to a Kubernetes Secret */ - externalBindings?: { - [k: string]: - | SyncAcquireResponseDeploymentExternalBindingsContainerAppsEnvironment - | SyncAcquireResponseDeploymentExternalBindingsS3 - | SyncAcquireResponseDeploymentExternalBindingsBlob - | SyncAcquireResponseDeploymentExternalBindingsGcs - | SyncAcquireResponseDeploymentExternalBindingsLocalStorage - | SyncAcquireResponseDeploymentExternalBindingsSqs - | SyncAcquireResponseDeploymentExternalBindingsPubsub - | SyncAcquireResponseDeploymentExternalBindingsServicebus - | SyncAcquireResponseDeploymentExternalBindingsLocalQueue - | SyncAcquireResponseDeploymentExternalBindingsDynamodb - | SyncAcquireResponseDeploymentExternalBindingsFirestore - | SyncAcquireResponseDeploymentExternalBindingsTablestorage - | SyncAcquireResponseDeploymentExternalBindingsRedis - | SyncAcquireResponseDeploymentExternalBindingsLocalKv - | SyncAcquireResponseDeploymentExternalBindingsEcr - | SyncAcquireResponseDeploymentExternalBindingsAcr - | SyncAcquireResponseDeploymentExternalBindingsGar - | SyncAcquireResponseDeploymentExternalBindingsLocal - | SyncAcquireResponseDeploymentExternalBindingsParameterStore - | SyncAcquireResponseDeploymentExternalBindingsSecretManager - | SyncAcquireResponseDeploymentExternalBindingsKeyVault - | SyncAcquireResponseDeploymentExternalBindingsKubernetesSecret - | SyncAcquireResponseDeploymentExternalBindingsLocalVault - | SyncAcquireResponseDeploymentExternalBindingsAurora - | SyncAcquireResponseDeploymentExternalBindingsCloudSQL - | SyncAcquireResponseDeploymentExternalBindingsFlexibleServer - | SyncAcquireResponseDeploymentExternalBindingsExternal - | SyncAcquireResponseDeploymentExternalBindingsLocalPostgres; - } | undefined; + secretRef: SyncAcquireResponseDeploymentQueueUrlSecretRef; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentQueueUrlUnion = + | SyncAcquireResponseDeploymentQueueUrl + | any + | string; + +export const SyncAcquireResponseDeploymentTypeQueue1 = { + Queue: "queue", +} as const; +export type SyncAcquireResponseDeploymentTypeQueue1 = ClosedEnum< + typeof SyncAcquireResponseDeploymentTypeQueue1 +>; + +/** + * AWS SQS queue parameters + */ +export type SyncAcquireResponseDeploymentExternalBindingsSqs = { /** - * DNS-style label domain used for Kubernetes resource ownership labels. + * Represents a value that can be either a concrete value, a template expression, * * @remarks - * - * Defaults to `alien.dev` when absent. Whitelabeled Operator builds set this - * so generated workloads and optional log collectors share the same label - * namespace. + * or a reference to a Kubernetes Secret */ - labelDomain?: string | null | undefined; - managementConfig?: - | SyncAcquireResponseDeploymentManagementConfigAzure - | SyncAcquireResponseDeploymentManagementConfigAws - | SyncAcquireResponseDeploymentManagementConfigGcp - | SyncAcquireResponseDeploymentManagementConfigKubernetes + queueUrl?: + | SyncAcquireResponseDeploymentQueueUrl | any + | string | null | undefined; + service: "sqs"; + type: SyncAcquireResponseDeploymentTypeQueue1; +}; + +/** + * Binding parameters for Queue at runtime or in templates. + */ +export type SyncAcquireResponseDeploymentExternalBindingsUnion2 = + | SyncAcquireResponseDeploymentExternalBindingsSqs + | SyncAcquireResponseDeploymentExternalBindingsPubsub + | SyncAcquireResponseDeploymentExternalBindingsServicebus + | SyncAcquireResponseDeploymentExternalBindingsLocalQueue; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentStoragePathSecretRef = { + key: string; + name: string; +}; + +export type SyncAcquireResponseDeploymentStoragePath = { /** - * Manager base URL (e.g., "https://manager.alien.dev"). - * - * @remarks - * - * The manager IS the container registry — its `/v2/` endpoint serves as - * the OCI Distribution API. Controllers derive the proxy host from this - * to configure pull auth (RegistryCredentials, imagePullSecrets). - * - * When None (e.g., `alien dev`), controllers use image URIs as-is. + * Reference to a Kubernetes Secret */ - managerUrl?: string | null | undefined; - monitoring?: SyncAcquireResponseDeploymentMonitoring | any | null | undefined; + secretRef: SyncAcquireResponseDeploymentStoragePathSecretRef; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentStoragePathUnion = + | SyncAcquireResponseDeploymentStoragePath + | any + | string; + +export const SyncAcquireResponseDeploymentTypeStorage4 = { + Storage: "storage", +} as const; +export type SyncAcquireResponseDeploymentTypeStorage4 = ClosedEnum< + typeof SyncAcquireResponseDeploymentTypeStorage4 +>; + +/** + * Local filesystem storage binding configuration + */ +export type SyncAcquireResponseDeploymentExternalBindingsLocalStorage = { /** - * Native image registry host+prefix for platforms that require it. + * Represents a value that can be either a concrete value, a template expression, * * @remarks - * - * Lambda (ECR) and Cloud Run (GAR) require native registry URIs. Other - * runtimes, including Azure Container Apps, pull through the manager's - * registry proxy. - * - * Derived by the manager from the artifact registry binding: - * - ECR: `{account_id}.dkr.ecr.{region}.amazonaws.com/{repository_prefix}` - * - GAR: `{region}-docker.pkg.dev/{project_id}/{repository_name}` + * or a reference to a Kubernetes Secret */ - nativeImageHost?: string | null | undefined; + storagePath?: + | SyncAcquireResponseDeploymentStoragePath + | any + | string + | null + | undefined; + service: "local-storage"; + type: SyncAcquireResponseDeploymentTypeStorage4; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentBucketNameSecretRef2 = { + key: string; + name: string; +}; + +export type SyncAcquireResponseDeploymentBucketName2 = { /** - * When true the observe pass reports raw resources across every namespace - * - * @remarks - * (cluster scope); otherwise it stays within the operator's own namespace. - * The label selector, if any, still filters within whichever scope applies. - * Ignored by cloud observers. + * Reference to a Kubernetes Secret */ - observeAllNamespaces?: boolean | undefined; + secretRef: SyncAcquireResponseDeploymentBucketNameSecretRef2; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentBucketNameUnion2 = + | SyncAcquireResponseDeploymentBucketName2 + | any + | string; + +export const SyncAcquireResponseDeploymentTypeStorage3 = { + Storage: "storage", +} as const; +export type SyncAcquireResponseDeploymentTypeStorage3 = ClosedEnum< + typeof SyncAcquireResponseDeploymentTypeStorage3 +>; + +/** + * Google Cloud Storage binding configuration + */ +export type SyncAcquireResponseDeploymentExternalBindingsGcs = { /** - * Kubernetes label selector that narrows which raw resources the observe + * Represents a value that can be either a concrete value, a template expression, * * @remarks - * pass reports (e.g. `app.kubernetes.io/part-of=my-app`). `None` observes - * everything in the namespace. Ignored by cloud observers. + * or a reference to a Kubernetes Secret */ - observeLabelSelector?: string | null | undefined; + bucketName?: + | SyncAcquireResponseDeploymentBucketName2 + | any + | string + | null + | undefined; + service: "gcs"; + type: SyncAcquireResponseDeploymentTypeStorage3; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentAccountNameSecretRef1 = { + key: string; + name: string; +}; + +export type SyncAcquireResponseDeploymentAccountName1 = { /** - * Public endpoint URLs for exposed resources (optional override). - * - * @remarks - * - * Use this only when a caller already knows the public URL. Managed public - * endpoint flows should prefer `domain_metadata` plus controller-reported - * load balancer outputs so DNS, certificate renewal, and route readiness - * stay tied to the resource state. - * - * If not set, platforms determine public endpoint URLs from other sources: - * - Managed DNS/TLS flows: `domain_metadata` FQDN or load balancer DNS - * - Local: `http://localhost:{allocated_port}` - * - Custom or disabled exposure: no public endpoint URL unless a controller reports one - * - * Outer key: resource ID. Inner key: endpoint name. Value: public URL. + * Reference to a Kubernetes Secret */ - publicEndpoints?: { [k: string]: { [k: string]: string } } | null | undefined; + secretRef: SyncAcquireResponseDeploymentAccountNameSecretRef1; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentAccountNameUnion1 = + | SyncAcquireResponseDeploymentAccountName1 + | any + | string; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentContainerNameSecretRef = { + key: string; + name: string; +}; + +export type SyncAcquireResponseDeploymentContainerName = { /** - * User-customizable deployment settings specified at deploy time. + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseDeploymentContainerNameSecretRef; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentContainerNameUnion = + | SyncAcquireResponseDeploymentContainerName + | any + | string; + +export const SyncAcquireResponseDeploymentTypeStorage2 = { + Storage: "storage", +} as const; +export type SyncAcquireResponseDeploymentTypeStorage2 = ClosedEnum< + typeof SyncAcquireResponseDeploymentTypeStorage2 +>; + +/** + * Azure Blob Storage binding configuration + */ +export type SyncAcquireResponseDeploymentExternalBindingsBlob = { + /** + * Represents a value that can be either a concrete value, a template expression, * * @remarks + * or a reference to a Kubernetes Secret + */ + accountName?: + | SyncAcquireResponseDeploymentAccountName1 + | any + | string + | null + | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, * - * These settings are provided by the customer via CloudFormation parameters, - * Terraform attributes, CLI flags, or Helm values. They customize how the - * deployment runs and what capabilities are enabled. + * @remarks + * or a reference to a Kubernetes Secret + */ + containerName?: + | SyncAcquireResponseDeploymentContainerName + | any + | string + | null + | undefined; + service: "blob"; + type: SyncAcquireResponseDeploymentTypeStorage2; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentBucketNameSecretRef1 = { + key: string; + name: string; +}; + +export type SyncAcquireResponseDeploymentBucketName1 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseDeploymentBucketNameSecretRef1; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDeploymentBucketNameUnion1 = + | SyncAcquireResponseDeploymentBucketName1 + | any + | string; + +export const SyncAcquireResponseDeploymentTypeStorage1 = { + Storage: "storage", +} as const; +export type SyncAcquireResponseDeploymentTypeStorage1 = ClosedEnum< + typeof SyncAcquireResponseDeploymentTypeStorage1 +>; + +/** + * AWS S3 storage binding configuration + */ +export type SyncAcquireResponseDeploymentExternalBindingsS3 = { + /** + * Represents a value that can be either a concrete value, a template expression, * - * **Key distinction**: StackSettings is user-customizable, while ManagementConfig - * is platform-derived (from the Manager's ServiceAccount). + * @remarks + * or a reference to a Kubernetes Secret */ - stackSettings?: SyncAcquireResponseDeploymentStackSettings | undefined; + bucketName?: + | SyncAcquireResponseDeploymentBucketName1 + | any + | string + | null + | undefined; + service: "s3"; + type: SyncAcquireResponseDeploymentTypeStorage1; +}; + +/** + * Service-type based storage binding that supports multiple storage providers + */ +export type SyncAcquireResponseDeploymentExternalBindingsUnion1 = + | SyncAcquireResponseDeploymentExternalBindingsS3 + | SyncAcquireResponseDeploymentExternalBindingsBlob + | SyncAcquireResponseDeploymentExternalBindingsGcs + | SyncAcquireResponseDeploymentExternalBindingsLocalStorage; + +/** + * Represents a binding to pre-existing infrastructure. + * + * @remarks + * + * The binding type must match the resource type it's applied to. + * Validated at runtime by the executor. + */ +export type SyncAcquireResponseDeploymentExternalBindingsUnion7 = + | SyncAcquireResponseDeploymentExternalBindingsAi + | SyncAcquireResponseDeploymentExternalBindingsContainerAppsEnvironment + | SyncAcquireResponseDeploymentExternalBindingsS3 + | SyncAcquireResponseDeploymentExternalBindingsBlob + | SyncAcquireResponseDeploymentExternalBindingsGcs + | SyncAcquireResponseDeploymentExternalBindingsLocalStorage + | SyncAcquireResponseDeploymentExternalBindingsSqs + | SyncAcquireResponseDeploymentExternalBindingsPubsub + | SyncAcquireResponseDeploymentExternalBindingsServicebus + | SyncAcquireResponseDeploymentExternalBindingsLocalQueue + | SyncAcquireResponseDeploymentExternalBindingsDynamodb + | SyncAcquireResponseDeploymentExternalBindingsFirestore + | SyncAcquireResponseDeploymentExternalBindingsTablestorage + | SyncAcquireResponseDeploymentExternalBindingsRedis + | SyncAcquireResponseDeploymentExternalBindingsLocalKv + | SyncAcquireResponseDeploymentExternalBindingsEcr + | SyncAcquireResponseDeploymentExternalBindingsAcr + | SyncAcquireResponseDeploymentExternalBindingsGar + | SyncAcquireResponseDeploymentExternalBindingsLocal + | SyncAcquireResponseDeploymentExternalBindingsParameterStore + | SyncAcquireResponseDeploymentExternalBindingsSecretManager + | SyncAcquireResponseDeploymentExternalBindingsKeyVault + | SyncAcquireResponseDeploymentExternalBindingsKubernetesSecret + | SyncAcquireResponseDeploymentExternalBindingsLocalVault + | SyncAcquireResponseDeploymentExternalBindingsAurora + | SyncAcquireResponseDeploymentExternalBindingsCloudSQL + | SyncAcquireResponseDeploymentExternalBindingsFlexibleServer + | SyncAcquireResponseDeploymentExternalBindingsExternal + | SyncAcquireResponseDeploymentExternalBindingsLocalPostgres; + +export const SyncAcquireResponseDeploymentPlatformKubernetes = { + Kubernetes: "kubernetes", +} as const; +export type SyncAcquireResponseDeploymentPlatformKubernetes = ClosedEnum< + typeof SyncAcquireResponseDeploymentPlatformKubernetes +>; + +export type SyncAcquireResponseDeploymentManagementConfigKubernetes = { + platform: SyncAcquireResponseDeploymentPlatformKubernetes; +}; + +export const SyncAcquireResponseDeploymentConfigPlatformAzure = { + Azure: "azure", +} as const; +export type SyncAcquireResponseDeploymentConfigPlatformAzure = ClosedEnum< + typeof SyncAcquireResponseDeploymentConfigPlatformAzure +>; + +/** + * Azure management configuration extracted from stack settings + */ +export type SyncAcquireResponseDeploymentManagementConfigAzure = { + /** + * The managing Azure Tenant ID for cross-tenant access + */ + managingTenantId: string; + /** + * OIDC issuer URL trusted by the target-side managed identity. + */ + oidcIssuer: string; + /** + * OIDC subject claim trusted by the target-side managed identity. + */ + oidcSubject: string; + platform: SyncAcquireResponseDeploymentConfigPlatformAzure; +}; + +export const SyncAcquireResponseDeploymentConfigPlatformGcp = { + Gcp: "gcp", +} as const; +export type SyncAcquireResponseDeploymentConfigPlatformGcp = ClosedEnum< + typeof SyncAcquireResponseDeploymentConfigPlatformGcp +>; + +/** + * GCP management configuration extracted from stack settings + */ +export type SyncAcquireResponseDeploymentManagementConfigGcp = { + /** + * Service account email for management roles + */ + serviceAccountEmail: string; + platform: SyncAcquireResponseDeploymentConfigPlatformGcp; }; -export type SyncAcquireResponseDeployment = { - /** - * ID of the deployment - */ - deploymentId: string; - /** - * Project ID the deployment belongs to - */ - projectId: string; - /** - * Deployment group ID the deployment belongs to - */ - deploymentGroupId: string; - setupMethod?: DeploymentSetupMethod | undefined; - /** - * Current deployment state (includes releases) - */ - current: SyncAcquireResponseDeploymentCurrent; - /** - * Deployment configuration - */ - config: SyncAcquireResponseDeploymentConfig; -}; +export const SyncAcquireResponseDeploymentConfigPlatformAws = { + Aws: "aws", +} as const; +export type SyncAcquireResponseDeploymentConfigPlatformAws = ClosedEnum< + typeof SyncAcquireResponseDeploymentConfigPlatformAws +>; + +/** + * AWS management configuration extracted from stack settings + */ +export type SyncAcquireResponseDeploymentManagementConfigAws = { + /** + * The managing AWS IAM role ARN that can assume cross-account roles + */ + managingRoleArn: string; + platform: SyncAcquireResponseDeploymentConfigPlatformAws; +}; + +export type SyncAcquireResponseDeploymentManagementConfigUnion = + | SyncAcquireResponseDeploymentManagementConfigAzure + | SyncAcquireResponseDeploymentManagementConfigAws + | SyncAcquireResponseDeploymentManagementConfigGcp + | SyncAcquireResponseDeploymentManagementConfigKubernetes + | any; + +/** + * OTLP log export configuration for a deployment. + * + * @remarks + * + * When set, injected compute runtimes export captured application logs + * through the given endpoint via OTLP/HTTP; which resources are injected + * is platform-dependent. Workers read auth headers from a runtime-only + * secret. Runtime-less Containers and Daemons receive standard OTEL auth + * variables only at the final hosting boundary: Local passes them directly + * to the process and Kubernetes projects them from a per-workload Secret. + */ +export type SyncAcquireResponseDeploymentMonitoring = { + /** + * Auth header value in "key=value,..." format. + * + * @remarks + * Example: "authorization=Bearer " + */ + logsAuthHeader: string; + /** + * Full OTLP logs endpoint URL. + * + * @remarks + * Example: "https:///v1/logs" + */ + logsEndpoint: string; + /** + * Auth header value for the metrics endpoint in "key=value,..." format (optional). + * + * @remarks + * + * When absent, `logs_auth_header` is reused for metrics -- suitable when the same + * credential covers both signals. When present (e.g. Axiom with separate datasets), + * this value is used exclusively for metrics. + * + * Example: "authorization=Bearer ,x-axiom-dataset=" + */ + metricsAuthHeader?: string | null | undefined; + /** + * Full OTLP metrics endpoint URL (optional). + * + * @remarks + * When set, the worker runtime exports its own VM/container orchestration metrics here. + * Example: "https://api.axiom.co/v1/metrics" + */ + metricsEndpoint?: string | null | undefined; + /** + * Resource attributes attached to every OTLP signal emitted for this deployment. + * + * @remarks + * + * Platform managers use this for stable identity such as `alien.workspace_id`, + * `alien.project_id`, `alien.deployment_group_id`, and `alien.deployment_id`. + * Runtime-specific resource attributes such as `service.name` remain owned by + * the runtime/exporter. + */ + resourceAttributes?: { [k: string]: string } | undefined; +}; + +export type SyncAcquireResponseDeploymentMonitoringUnion = + | SyncAcquireResponseDeploymentMonitoring + | any; + +/** + * Failure-domain policy selected for a compute pool. + */ +export type SyncAcquireResponseDeploymentFailureDomains2 = { + /** + * Concrete provider domains selected during setup. + * + * @remarks + * Empty delegates deterministic selection to the provider setup implementation. + */ + selectedFailureDomains?: Array | undefined; + /** + * Number of distinct failure domains across which new stateful replicas may be spread. + */ + spread: number; +}; + +export type SyncAcquireResponseDeploymentFailureDomainsUnion2 = + | SyncAcquireResponseDeploymentFailureDomains2 + | any; + +export type SyncAcquireResponseDeploymentPoolsAutoscale = { + failureDomains?: + | SyncAcquireResponseDeploymentFailureDomains2 + | any + | null + | undefined; + /** + * Provider machine type selected for this deployment. + */ + machine?: string | null | undefined; + /** + * Maximum machine count. + */ + max: number; + /** + * Minimum machine count. + */ + min: number; + mode: "autoscale"; +}; + +/** + * Failure-domain policy selected for a compute pool. + */ +export type SyncAcquireResponseDeploymentFailureDomains1 = { + /** + * Concrete provider domains selected during setup. + * + * @remarks + * Empty delegates deterministic selection to the provider setup implementation. + */ + selectedFailureDomains?: Array | undefined; + /** + * Number of distinct failure domains across which new stateful replicas may be spread. + */ + spread: number; +}; + +export type SyncAcquireResponseDeploymentFailureDomainsUnion1 = + | SyncAcquireResponseDeploymentFailureDomains1 + | any; + +export type SyncAcquireResponseDeploymentPoolsFixed = { + failureDomains?: + | SyncAcquireResponseDeploymentFailureDomains1 + | any + | null + | undefined; + /** + * Provider machine type selected for this deployment. + */ + machine?: string | null | undefined; + /** + * Number of machines to run. + */ + machines: number; + mode: "fixed"; +}; + +/** + * User-selected deployment settings for one compute pool. + */ +export type SyncAcquireResponseDeploymentPoolsUnion = + | SyncAcquireResponseDeploymentPoolsFixed + | SyncAcquireResponseDeploymentPoolsAutoscale; + +/** + * Deployment-time compute choices for Alien-managed compute pools. + * + * @remarks + * + * Application source declares portable pool requirements. This settings + * object stores the concrete choices made for one deployment, such as the + * provider machine type and selected machine counts. + */ +export type SyncAcquireResponseDeploymentCompute = { + /** + * Selected compute choices keyed by pool ID. + */ + pools?: { + [k: string]: + | SyncAcquireResponseDeploymentPoolsFixed + | SyncAcquireResponseDeploymentPoolsAutoscale; + } | undefined; +}; + +export type SyncAcquireResponseDeploymentComputeUnion = + | SyncAcquireResponseDeploymentCompute + | any; + +/** + * Deployment model: how updates are delivered to the remote environment. + */ +export const SyncAcquireResponseDeploymentDeploymentModel = { + Push: "push", + Pull: "pull", +} as const; +/** + * Deployment model: how updates are delivered to the remote environment. + */ +export type SyncAcquireResponseDeploymentDeploymentModel = ClosedEnum< + typeof SyncAcquireResponseDeploymentDeploymentModel +>; + +export type SyncAcquireResponseDeploymentAwsStackSettings = { + certificateArn: string; +}; + +export type SyncAcquireResponseDeploymentStackSettingsAwsUnion = + | SyncAcquireResponseDeploymentAwsStackSettings + | any; + +export type SyncAcquireResponseDeploymentAzureStackSettings = { + keyVaultCertificateId: string; + keyVaultResourceId?: string | null | undefined; +}; + +export type SyncAcquireResponseDeploymentStackSettingsAzureUnion = + | SyncAcquireResponseDeploymentAzureStackSettings + | any; + +export type SyncAcquireResponseDeploymentGcpStackSettings = { + certificateName: string; +}; + +export type SyncAcquireResponseDeploymentStackSettingsGcpUnion = + | SyncAcquireResponseDeploymentGcpStackSettings + | any; + +/** + * Namespace-scoped Kubernetes TLS Secret reference. + */ +export type SyncAcquireResponseDeploymentTlsSecretRef = { + /** + * Secret namespace. Defaults to the release namespace when omitted. + */ + namespace?: string | null | undefined; + /** + * Secret name. + */ + secretName: string; +}; + +export type SyncAcquireResponseDeploymentDomainsKubernetes = { + /** + * Namespace-scoped Kubernetes TLS Secret reference. + */ + tlsSecretRef: SyncAcquireResponseDeploymentTlsSecretRef; +}; + +export type SyncAcquireResponseDeploymentDomainsKubernetesUnion = + | SyncAcquireResponseDeploymentDomainsKubernetes + | any; + +/** + * Platform-specific certificate references for custom domains. + */ +export type SyncAcquireResponseDeploymentDomainsCertificate = { + aws?: SyncAcquireResponseDeploymentAwsStackSettings | any | null | undefined; + azure?: + | SyncAcquireResponseDeploymentAzureStackSettings + | any + | null + | undefined; + gcp?: SyncAcquireResponseDeploymentGcpStackSettings | any | null | undefined; + kubernetes?: + | SyncAcquireResponseDeploymentDomainsKubernetes + | any + | null + | undefined; +}; + +/** + * Custom domain configuration for a single resource. + */ +export type SyncAcquireResponseDeploymentCustomDomains = { + /** + * Platform-specific certificate references for custom domains. + */ + certificate: SyncAcquireResponseDeploymentDomainsCertificate; + /** + * Fully qualified domain name to use. + */ + domain: string; +}; + +export const SyncAcquireResponseDeploymentModeLoadBalancer = { + LoadBalancer: "loadBalancer", +} as const; +export type SyncAcquireResponseDeploymentModeLoadBalancer = ClosedEnum< + typeof SyncAcquireResponseDeploymentModeLoadBalancer +>; + +export type SyncAcquireResponseDeploymentPublicEndpointTargetLoadBalancer = { + /** + * DNS name or URL for the external load balancer. + */ + cnameTarget: string; + mode: SyncAcquireResponseDeploymentModeLoadBalancer; +}; + +export const SyncAcquireResponseDeploymentModeMachineAddresses = { + MachineAddresses: "machineAddresses", +} as const; +export type SyncAcquireResponseDeploymentModeMachineAddresses = ClosedEnum< + typeof SyncAcquireResponseDeploymentModeMachineAddresses +>; + +export type SyncAcquireResponseDeploymentPublicEndpointTargetMachineAddresses = + { + mode: SyncAcquireResponseDeploymentModeMachineAddresses; + }; + +export type SyncAcquireResponseDeploymentPublicEndpointTargetUnion = + | SyncAcquireResponseDeploymentPublicEndpointTargetLoadBalancer + | SyncAcquireResponseDeploymentPublicEndpointTargetMachineAddresses + | any; + +/** + * Domain configuration for the stack. + * + * @remarks + * + * When `custom_domains` is set, the specified resources use customer-provided + * domains and certificates. Otherwise, Alien auto-generates domains. + */ +export type SyncAcquireResponseDeploymentDomains = { + /** + * Custom domain configuration per resource ID. + */ + customDomains?: + | { [k: string]: SyncAcquireResponseDeploymentCustomDomains } + | null + | undefined; + publicEndpointTarget?: + | SyncAcquireResponseDeploymentPublicEndpointTargetLoadBalancer + | SyncAcquireResponseDeploymentPublicEndpointTargetMachineAddresses + | any + | null + | undefined; +}; + +export type SyncAcquireResponseDeploymentDomainsUnion = + | SyncAcquireResponseDeploymentDomains + | any; + +/** + * External bindings for pre-existing infrastructure. + * + * @remarks + * Allows using existing resources (MinIO, Redis, shared Container Apps + * Environment, etc.) instead of having Alien provision them. + * Required for Kubernetes platform, optional for cloud platforms. + */ +export type SyncAcquireResponseDeploymentStackSettingsExternalBindings = {}; + +/** + * How heartbeat health checks are handled. + */ +export const SyncAcquireResponseDeploymentHeartbeats = { + Off: "off", + On: "on", +} as const; +/** + * How heartbeat health checks are handled. + */ +export type SyncAcquireResponseDeploymentHeartbeats = ClosedEnum< + typeof SyncAcquireResponseDeploymentHeartbeats +>; + +/** + * Optional provider-specific identity for a cloud-backed Kubernetes cluster. + */ +export type SyncAcquireResponseDeploymentCloud = { + accountId?: string | null | undefined; + clusterId?: string | null | undefined; + clusterName?: string | null | undefined; + projectId?: string | null | undefined; + region?: string | null | undefined; + resourceGroup?: string | null | undefined; + subscriptionId?: string | null | undefined; +}; + +export type SyncAcquireResponseDeploymentCloudUnion = + | SyncAcquireResponseDeploymentCloud + | any; + +/** + * Ownership model for the Kubernetes cluster. + */ +export const SyncAcquireResponseDeploymentOwnership = { + Managed: "managed", + Existing: "existing", + External: "external", +} as const; +/** + * Ownership model for the Kubernetes cluster. + */ +export type SyncAcquireResponseDeploymentOwnership = ClosedEnum< + typeof SyncAcquireResponseDeploymentOwnership +>; + +/** + * Kubernetes cluster setup settings. + */ +export type SyncAcquireResponseDeploymentCluster = { + cloud?: SyncAcquireResponseDeploymentCloud | any | null | undefined; + /** + * Namespace where the Alien chart and application resources run. + */ + namespace?: string | null | undefined; + /** + * Ownership model for the Kubernetes cluster. + */ + ownership: SyncAcquireResponseDeploymentOwnership; +}; + +export type SyncAcquireResponseDeploymentClusterUnion = + | SyncAcquireResponseDeploymentCluster + | any; + +export type SyncAcquireResponseDeploymentCertificateNone2 = { + mode: "none"; +}; + +export type SyncAcquireResponseDeploymentCertificateManagedTLSSecret2 = { + mode: "managedTlsSecret"; + /** + * Secret name template. Runtime may substitute resource/deployment tokens. + */ + secretNameTemplate: string; +}; + +export type SyncAcquireResponseDeploymentCertificateAwsAcmArn2 = { + /** + * Existing ACM certificate ARN. + */ + certificateArn: string; + mode: "awsAcmArn"; +}; + +export type SyncAcquireResponseDeploymentCertificateManagedAcmImport2 = { + mode: "managedAcmImport"; + /** + * ACM region. Defaults to the deployment region when omitted. + */ + region?: string | null | undefined; + /** + * Tags applied to runtime-imported ACM certificates. + */ + tags?: { [k: string]: string } | undefined; +}; + +/** + * Namespace-scoped Kubernetes TLS Secret reference. + */ +export type SyncAcquireResponseDeploymentCertificateTLSSecretRef2 = { + /** + * Secret namespace. Defaults to the release namespace when omitted. + */ + namespace?: string | null | undefined; + /** + * Secret name. + */ + secretName: string; + mode: "tlsSecretRef"; +}; + +/** + * Certificate publication or reference mode for Kubernetes public endpoints. + */ +export type SyncAcquireResponseDeploymentCertificateUnion2 = + | SyncAcquireResponseDeploymentCertificateTLSSecretRef2 + | SyncAcquireResponseDeploymentCertificateManagedAcmImport2 + | SyncAcquireResponseDeploymentCertificateAwsAcmArn2 + | SyncAcquireResponseDeploymentCertificateManagedTLSSecret2 + | SyncAcquireResponseDeploymentCertificateNone2; + +export const SyncAcquireResponseDeploymentModeCustom = { + Custom: "custom", +} as const; +export type SyncAcquireResponseDeploymentModeCustom = ClosedEnum< + typeof SyncAcquireResponseDeploymentModeCustom +>; + +export const SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainersEnum4 = + { + AzureApplicationGatewayForContainers: + "azureApplicationGatewayForContainers", + } as const; +export type SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainersEnum4 = + ClosedEnum< + typeof SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainersEnum4 + >; + +export type SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainers4 = + { + /** + * Optional ALB name when using BYO Application Gateway resources. + */ + albName?: string | null | undefined; + /** + * Optional ALB namespace when using BYO Application Gateway resources. + */ + albNamespace?: string | null | undefined; + /** + * Public or internal frontend exposure. + */ + frontend: string; + provider: + SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainersEnum4; + }; + +export const SyncAcquireResponseDeploymentProviderGkeGatewayEnum4 = { + GkeGateway: "gkeGateway", +} as const; +export type SyncAcquireResponseDeploymentProviderGkeGatewayEnum4 = ClosedEnum< + typeof SyncAcquireResponseDeploymentProviderGkeGatewayEnum4 +>; + +export type SyncAcquireResponseDeploymentProviderGkeGateway4 = { + provider: SyncAcquireResponseDeploymentProviderGkeGatewayEnum4; + /** + * Optional static address name for the Gateway frontend. + */ + staticAddressName?: string | null | undefined; +}; + +export const SyncAcquireResponseDeploymentProviderAwsAlbEnum4 = { + AwsAlb: "awsAlb", +} as const; +export type SyncAcquireResponseDeploymentProviderAwsAlbEnum4 = ClosedEnum< + typeof SyncAcquireResponseDeploymentProviderAwsAlbEnum4 +>; + +export type SyncAcquireResponseDeploymentProviderAwsAlb4 = { + /** + * Optional ALB IP address type, such as `dualstack`. + */ + ipAddressType?: string | null | undefined; + provider: SyncAcquireResponseDeploymentProviderAwsAlbEnum4; + /** + * Internet-facing or internal ALB scheme. + */ + scheme: string; + /** + * Explicit subnet IDs when the profile cannot rely on controller discovery. + */ + subnetIds?: Array | undefined; + /** + * ALB target type, usually `ip`. + */ + targetType: string; +}; + +export type SyncAcquireResponseDeploymentProviderUnion4 = + | SyncAcquireResponseDeploymentProviderAwsAlb4 + | SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainers4 + | SyncAcquireResponseDeploymentProviderGkeGateway4 + | any; + +/** + * Shared Gateway API route profile values. + */ +export type SyncAcquireResponseDeploymentRouteGateway2 = { + /** + * Annotations applied to route objects. + */ + annotations?: { [k: string]: string } | undefined; + /** + * Route controller identifier, for example a cloud Gateway controller. + */ + controller?: string | null | undefined; + /** + * GatewayClass selected for generated Gateways. + */ + gatewayClassName: string; + /** + * Labels applied to route objects. + */ + labels?: { [k: string]: string } | undefined; + /** + * Listener port, usually 443. + */ + listenerPort: number; + provider?: + | SyncAcquireResponseDeploymentProviderAwsAlb4 + | SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainers4 + | SyncAcquireResponseDeploymentProviderGkeGateway4 + | any + | null + | undefined; + routeApi: "gateway"; +}; + +export const SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainersEnum3 = + { + AzureApplicationGatewayForContainers: + "azureApplicationGatewayForContainers", + } as const; +export type SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainersEnum3 = + ClosedEnum< + typeof SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainersEnum3 + >; + +export type SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainers3 = + { + /** + * Optional ALB name when using BYO Application Gateway resources. + */ + albName?: string | null | undefined; + /** + * Optional ALB namespace when using BYO Application Gateway resources. + */ + albNamespace?: string | null | undefined; + /** + * Public or internal frontend exposure. + */ + frontend: string; + provider: + SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainersEnum3; + }; + +export const SyncAcquireResponseDeploymentProviderGkeGatewayEnum3 = { + GkeGateway: "gkeGateway", +} as const; +export type SyncAcquireResponseDeploymentProviderGkeGatewayEnum3 = ClosedEnum< + typeof SyncAcquireResponseDeploymentProviderGkeGatewayEnum3 +>; + +export type SyncAcquireResponseDeploymentProviderGkeGateway3 = { + provider: SyncAcquireResponseDeploymentProviderGkeGatewayEnum3; + /** + * Optional static address name for the Gateway frontend. + */ + staticAddressName?: string | null | undefined; +}; + +export const SyncAcquireResponseDeploymentProviderAwsAlbEnum3 = { + AwsAlb: "awsAlb", +} as const; +export type SyncAcquireResponseDeploymentProviderAwsAlbEnum3 = ClosedEnum< + typeof SyncAcquireResponseDeploymentProviderAwsAlbEnum3 +>; + +export type SyncAcquireResponseDeploymentProviderAwsAlb3 = { + /** + * Optional ALB IP address type, such as `dualstack`. + */ + ipAddressType?: string | null | undefined; + provider: SyncAcquireResponseDeploymentProviderAwsAlbEnum3; + /** + * Internet-facing or internal ALB scheme. + */ + scheme: string; + /** + * Explicit subnet IDs when the profile cannot rely on controller discovery. + */ + subnetIds?: Array | undefined; + /** + * ALB target type, usually `ip`. + */ + targetType: string; +}; + +export type SyncAcquireResponseDeploymentProviderUnion3 = + | SyncAcquireResponseDeploymentProviderAwsAlb3 + | SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainers3 + | SyncAcquireResponseDeploymentProviderGkeGateway3 + | any; + +/** + * Shared Ingress route profile values. + */ +export type SyncAcquireResponseDeploymentRouteIngress2 = { + /** + * Annotations applied to route objects. + */ + annotations?: { [k: string]: string } | undefined; + /** + * Route controller identifier, for example `eks.amazonaws.com/alb`. + */ + controller?: string | null | undefined; + /** + * `spec.ingressClassName` for generated Ingresses. + */ + ingressClassName: string; + /** + * Labels applied to route objects. + */ + labels?: { [k: string]: string } | undefined; + provider?: + | SyncAcquireResponseDeploymentProviderAwsAlb3 + | SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainers3 + | SyncAcquireResponseDeploymentProviderGkeGateway3 + | any + | null + | undefined; + routeApi: "ingress"; +}; + +/** + * Kubernetes route API selected for public endpoints. + */ +export type SyncAcquireResponseDeploymentRouteUnion2 = + | SyncAcquireResponseDeploymentRouteIngress2 + | SyncAcquireResponseDeploymentRouteGateway2; + +export type SyncAcquireResponseDeploymentExposureCustom = { + /** + * Certificate publication or reference mode for Kubernetes public endpoints. + */ + certificate: + | SyncAcquireResponseDeploymentCertificateTLSSecretRef2 + | SyncAcquireResponseDeploymentCertificateManagedAcmImport2 + | SyncAcquireResponseDeploymentCertificateAwsAcmArn2 + | SyncAcquireResponseDeploymentCertificateManagedTLSSecret2 + | SyncAcquireResponseDeploymentCertificateNone2; + /** + * Hostname routed by the Kubernetes public endpoint. + */ + domain: string; + mode: SyncAcquireResponseDeploymentModeCustom; + /** + * Kubernetes route API selected for public endpoints. + */ + route: + | SyncAcquireResponseDeploymentRouteIngress2 + | SyncAcquireResponseDeploymentRouteGateway2; +}; + +export type SyncAcquireResponseDeploymentCertificateNone1 = { + mode: "none"; +}; + +export type SyncAcquireResponseDeploymentCertificateManagedTLSSecret1 = { + mode: "managedTlsSecret"; + /** + * Secret name template. Runtime may substitute resource/deployment tokens. + */ + secretNameTemplate: string; +}; + +export type SyncAcquireResponseDeploymentCertificateAwsAcmArn1 = { + /** + * Existing ACM certificate ARN. + */ + certificateArn: string; + mode: "awsAcmArn"; +}; + +export type SyncAcquireResponseDeploymentCertificateManagedAcmImport1 = { + mode: "managedAcmImport"; + /** + * ACM region. Defaults to the deployment region when omitted. + */ + region?: string | null | undefined; + /** + * Tags applied to runtime-imported ACM certificates. + */ + tags?: { [k: string]: string } | undefined; +}; + +/** + * Namespace-scoped Kubernetes TLS Secret reference. + */ +export type SyncAcquireResponseDeploymentCertificateTLSSecretRef1 = { + /** + * Secret namespace. Defaults to the release namespace when omitted. + */ + namespace?: string | null | undefined; + /** + * Secret name. + */ + secretName: string; + mode: "tlsSecretRef"; +}; + +/** + * Certificate publication or reference mode for Kubernetes public endpoints. + */ +export type SyncAcquireResponseDeploymentCertificateUnion1 = + | SyncAcquireResponseDeploymentCertificateTLSSecretRef1 + | SyncAcquireResponseDeploymentCertificateManagedAcmImport1 + | SyncAcquireResponseDeploymentCertificateAwsAcmArn1 + | SyncAcquireResponseDeploymentCertificateManagedTLSSecret1 + | SyncAcquireResponseDeploymentCertificateNone1; + +export const SyncAcquireResponseDeploymentModeGenerated = { + Generated: "generated", +} as const; +export type SyncAcquireResponseDeploymentModeGenerated = ClosedEnum< + typeof SyncAcquireResponseDeploymentModeGenerated +>; + +export const SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainersEnum2 = + { + AzureApplicationGatewayForContainers: + "azureApplicationGatewayForContainers", + } as const; +export type SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainersEnum2 = + ClosedEnum< + typeof SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainersEnum2 + >; + +export type SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainers2 = + { + /** + * Optional ALB name when using BYO Application Gateway resources. + */ + albName?: string | null | undefined; + /** + * Optional ALB namespace when using BYO Application Gateway resources. + */ + albNamespace?: string | null | undefined; + /** + * Public or internal frontend exposure. + */ + frontend: string; + provider: + SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainersEnum2; + }; + +export const SyncAcquireResponseDeploymentProviderGkeGatewayEnum2 = { + GkeGateway: "gkeGateway", +} as const; +export type SyncAcquireResponseDeploymentProviderGkeGatewayEnum2 = ClosedEnum< + typeof SyncAcquireResponseDeploymentProviderGkeGatewayEnum2 +>; + +export type SyncAcquireResponseDeploymentProviderGkeGateway2 = { + provider: SyncAcquireResponseDeploymentProviderGkeGatewayEnum2; + /** + * Optional static address name for the Gateway frontend. + */ + staticAddressName?: string | null | undefined; +}; + +export const SyncAcquireResponseDeploymentProviderAwsAlbEnum2 = { + AwsAlb: "awsAlb", +} as const; +export type SyncAcquireResponseDeploymentProviderAwsAlbEnum2 = ClosedEnum< + typeof SyncAcquireResponseDeploymentProviderAwsAlbEnum2 +>; + +export type SyncAcquireResponseDeploymentProviderAwsAlb2 = { + /** + * Optional ALB IP address type, such as `dualstack`. + */ + ipAddressType?: string | null | undefined; + provider: SyncAcquireResponseDeploymentProviderAwsAlbEnum2; + /** + * Internet-facing or internal ALB scheme. + */ + scheme: string; + /** + * Explicit subnet IDs when the profile cannot rely on controller discovery. + */ + subnetIds?: Array | undefined; + /** + * ALB target type, usually `ip`. + */ + targetType: string; +}; + +export type SyncAcquireResponseDeploymentProviderUnion2 = + | SyncAcquireResponseDeploymentProviderAwsAlb2 + | SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainers2 + | SyncAcquireResponseDeploymentProviderGkeGateway2 + | any; + +/** + * Shared Gateway API route profile values. + */ +export type SyncAcquireResponseDeploymentRouteGateway1 = { + /** + * Annotations applied to route objects. + */ + annotations?: { [k: string]: string } | undefined; + /** + * Route controller identifier, for example a cloud Gateway controller. + */ + controller?: string | null | undefined; + /** + * GatewayClass selected for generated Gateways. + */ + gatewayClassName: string; + /** + * Labels applied to route objects. + */ + labels?: { [k: string]: string } | undefined; + /** + * Listener port, usually 443. + */ + listenerPort: number; + provider?: + | SyncAcquireResponseDeploymentProviderAwsAlb2 + | SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainers2 + | SyncAcquireResponseDeploymentProviderGkeGateway2 + | any + | null + | undefined; + routeApi: "gateway"; +}; + +export const SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainersEnum1 = + { + AzureApplicationGatewayForContainers: + "azureApplicationGatewayForContainers", + } as const; +export type SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainersEnum1 = + ClosedEnum< + typeof SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainersEnum1 + >; + +export type SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainers1 = + { + /** + * Optional ALB name when using BYO Application Gateway resources. + */ + albName?: string | null | undefined; + /** + * Optional ALB namespace when using BYO Application Gateway resources. + */ + albNamespace?: string | null | undefined; + /** + * Public or internal frontend exposure. + */ + frontend: string; + provider: + SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainersEnum1; + }; + +export const SyncAcquireResponseDeploymentProviderGkeGatewayEnum1 = { + GkeGateway: "gkeGateway", +} as const; +export type SyncAcquireResponseDeploymentProviderGkeGatewayEnum1 = ClosedEnum< + typeof SyncAcquireResponseDeploymentProviderGkeGatewayEnum1 +>; + +export type SyncAcquireResponseDeploymentProviderGkeGateway1 = { + provider: SyncAcquireResponseDeploymentProviderGkeGatewayEnum1; + /** + * Optional static address name for the Gateway frontend. + */ + staticAddressName?: string | null | undefined; +}; + +export const SyncAcquireResponseDeploymentProviderAwsAlbEnum1 = { + AwsAlb: "awsAlb", +} as const; +export type SyncAcquireResponseDeploymentProviderAwsAlbEnum1 = ClosedEnum< + typeof SyncAcquireResponseDeploymentProviderAwsAlbEnum1 +>; + +export type SyncAcquireResponseDeploymentProviderAwsAlb1 = { + /** + * Optional ALB IP address type, such as `dualstack`. + */ + ipAddressType?: string | null | undefined; + provider: SyncAcquireResponseDeploymentProviderAwsAlbEnum1; + /** + * Internet-facing or internal ALB scheme. + */ + scheme: string; + /** + * Explicit subnet IDs when the profile cannot rely on controller discovery. + */ + subnetIds?: Array | undefined; + /** + * ALB target type, usually `ip`. + */ + targetType: string; +}; + +export type SyncAcquireResponseDeploymentProviderUnion1 = + | SyncAcquireResponseDeploymentProviderAwsAlb1 + | SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainers1 + | SyncAcquireResponseDeploymentProviderGkeGateway1 + | any; + +/** + * Shared Ingress route profile values. + */ +export type SyncAcquireResponseDeploymentRouteIngress1 = { + /** + * Annotations applied to route objects. + */ + annotations?: { [k: string]: string } | undefined; + /** + * Route controller identifier, for example `eks.amazonaws.com/alb`. + */ + controller?: string | null | undefined; + /** + * `spec.ingressClassName` for generated Ingresses. + */ + ingressClassName: string; + /** + * Labels applied to route objects. + */ + labels?: { [k: string]: string } | undefined; + provider?: + | SyncAcquireResponseDeploymentProviderAwsAlb1 + | SyncAcquireResponseDeploymentProviderAzureApplicationGatewayForContainers1 + | SyncAcquireResponseDeploymentProviderGkeGateway1 + | any + | null + | undefined; + routeApi: "ingress"; +}; + +/** + * Kubernetes route API selected for public endpoints. + */ +export type SyncAcquireResponseDeploymentRouteUnion1 = + | SyncAcquireResponseDeploymentRouteIngress1 + | SyncAcquireResponseDeploymentRouteGateway1; + +export type SyncAcquireResponseDeploymentExposureGenerated = { + /** + * Certificate publication or reference mode for Kubernetes public endpoints. + */ + certificate: + | SyncAcquireResponseDeploymentCertificateTLSSecretRef1 + | SyncAcquireResponseDeploymentCertificateManagedAcmImport1 + | SyncAcquireResponseDeploymentCertificateAwsAcmArn1 + | SyncAcquireResponseDeploymentCertificateManagedTLSSecret1 + | SyncAcquireResponseDeploymentCertificateNone1; + mode: SyncAcquireResponseDeploymentModeGenerated; + /** + * Kubernetes route API selected for public endpoints. + */ + route: + | SyncAcquireResponseDeploymentRouteIngress1 + | SyncAcquireResponseDeploymentRouteGateway1; +}; + +export const SyncAcquireResponseDeploymentModeDisabled = { + Disabled: "disabled", +} as const; +export type SyncAcquireResponseDeploymentModeDisabled = ClosedEnum< + typeof SyncAcquireResponseDeploymentModeDisabled +>; + +export type SyncAcquireResponseDeploymentExposureDisabled = { + mode: SyncAcquireResponseDeploymentModeDisabled; +}; + +export type SyncAcquireResponseDeploymentExposureUnion = + | SyncAcquireResponseDeploymentExposureCustom + | SyncAcquireResponseDeploymentExposureGenerated + | SyncAcquireResponseDeploymentExposureDisabled + | any; + +/** + * Kubernetes runtime substrate configuration. + * + * @remarks + * + * This controls how setup chooses the cluster backing `Platform::Kubernetes` + * deployments. When omitted, cloud-backed Kubernetes deployments default to a + * managed cluster and generic/on-prem Kubernetes defaults to an external + * cluster. + */ +export type SyncAcquireResponseDeploymentKubernetes = { + cluster?: SyncAcquireResponseDeploymentCluster | any | null | undefined; + exposure?: + | SyncAcquireResponseDeploymentExposureCustom + | SyncAcquireResponseDeploymentExposureGenerated + | SyncAcquireResponseDeploymentExposureDisabled + | any + | null + | undefined; +}; + +export type SyncAcquireResponseDeploymentKubernetesUnion = + | SyncAcquireResponseDeploymentKubernetes + | any; + +export const SyncAcquireResponseDeploymentTypeByoVnetAzure = { + ByoVnetAzure: "byo-vnet-azure", +} as const; +export type SyncAcquireResponseDeploymentTypeByoVnetAzure = ClosedEnum< + typeof SyncAcquireResponseDeploymentTypeByoVnetAzure +>; + +export type SyncAcquireResponseDeploymentNetworkByoVnetAzure = { + /** + * Name of the dedicated classic Application Gateway subnet within the VNet. + */ + applicationGatewaySubnetName?: string | null | undefined; + /** + * Name of the dedicated subnet that hosts Private Endpoints (e.g. for a + * + * @remarks + * Postgres Flexible Server). A Private Endpoint must not share the private + * subnet, which is already claimed by the Container Apps environment's + * `infrastructure_subnet_id`. Required only when the stack contains a + * Postgres resource; otherwise unused. + */ + privateEndpointSubnetName?: string | null | undefined; + /** + * Name of the private subnet within the VNet + */ + privateSubnetName: string; + /** + * Name of the public subnet within the VNet + */ + publicSubnetName: string; + type: SyncAcquireResponseDeploymentTypeByoVnetAzure; + /** + * The full resource ID of the existing VNet + */ + vnetResourceId: string; +}; + +export const SyncAcquireResponseDeploymentTypeByoVpcGcp = { + ByoVpcGcp: "byo-vpc-gcp", +} as const; +export type SyncAcquireResponseDeploymentTypeByoVpcGcp = ClosedEnum< + typeof SyncAcquireResponseDeploymentTypeByoVpcGcp +>; + +export type SyncAcquireResponseDeploymentNetworkByoVpcGcp = { + /** + * The name of the existing VPC network + */ + networkName: string; + /** + * The region of the subnet + */ + region: string; + /** + * The name of the subnet to use + */ + subnetName: string; + type: SyncAcquireResponseDeploymentTypeByoVpcGcp; +}; + +export const SyncAcquireResponseDeploymentTypeByoVpcAws = { + ByoVpcAws: "byo-vpc-aws", +} as const; +export type SyncAcquireResponseDeploymentTypeByoVpcAws = ClosedEnum< + typeof SyncAcquireResponseDeploymentTypeByoVpcAws +>; + +export type SyncAcquireResponseDeploymentNetworkByoVpcAws = { + /** + * IDs of private subnets + */ + privateSubnetIds: Array; + /** + * IDs of public subnets (required for public ingress) + */ + publicSubnetIds: Array; + /** + * Optional security group IDs to use + */ + securityGroupIds?: Array | undefined; + type: SyncAcquireResponseDeploymentTypeByoVpcAws; + /** + * The ID of the existing VPC + */ + vpcId: string; +}; + +export const SyncAcquireResponseDeploymentTypeCreate = { + Create: "create", +} as const; +export type SyncAcquireResponseDeploymentTypeCreate = ClosedEnum< + typeof SyncAcquireResponseDeploymentTypeCreate +>; + +export type SyncAcquireResponseDeploymentNetworkCreate = { + /** + * Number of availability zones (default: 2). + */ + availabilityZones?: number | undefined; + /** + * VPC/VNet CIDR block. If not specified, auto-generated from stack ID + * + * @remarks + * to reduce conflicts (e.g., "10.{hash}.0.0/16"). + */ + cidr?: string | null | undefined; + type: SyncAcquireResponseDeploymentTypeCreate; +}; + +export const SyncAcquireResponseDeploymentTypeUseDefault = { + UseDefault: "use-default", +} as const; +export type SyncAcquireResponseDeploymentTypeUseDefault = ClosedEnum< + typeof SyncAcquireResponseDeploymentTypeUseDefault +>; + +export type SyncAcquireResponseDeploymentNetworkUseDefault = { + type: SyncAcquireResponseDeploymentTypeUseDefault; +}; + +export type SyncAcquireResponseDeploymentNetworkUnion = + | SyncAcquireResponseDeploymentNetworkByoVpcAws + | SyncAcquireResponseDeploymentNetworkByoVpcGcp + | SyncAcquireResponseDeploymentNetworkByoVnetAzure + | SyncAcquireResponseDeploymentNetworkUseDefault + | SyncAcquireResponseDeploymentNetworkCreate + | any; + +/** + * How telemetry (logs, metrics, traces) is handled. + */ +export const SyncAcquireResponseDeploymentTelemetry = { + Off: "off", + Auto: "auto", + ApprovalRequired: "approval-required", +} as const; +/** + * How telemetry (logs, metrics, traces) is handled. + */ +export type SyncAcquireResponseDeploymentTelemetry = ClosedEnum< + typeof SyncAcquireResponseDeploymentTelemetry +>; + +/** + * How updates are delivered to the deployment. + */ +export const SyncAcquireResponseDeploymentUpdates = { + Auto: "auto", + ApprovalRequired: "approval-required", +} as const; +/** + * How updates are delivered to the deployment. + */ +export type SyncAcquireResponseDeploymentUpdates = ClosedEnum< + typeof SyncAcquireResponseDeploymentUpdates +>; + +/** + * User-customizable deployment settings specified at deploy time. + * + * @remarks + * + * These settings are provided by the customer via CloudFormation parameters, + * Terraform attributes, CLI flags, or Helm values. They customize how the + * deployment runs and what capabilities are enabled. + * + * **Key distinction**: StackSettings is user-customizable, while ManagementConfig + * is platform-derived (from the Manager's ServiceAccount). + */ +export type SyncAcquireResponseDeploymentStackSettings = { + compute?: SyncAcquireResponseDeploymentCompute | any | null | undefined; + /** + * Deployment model: how updates are delivered to the remote environment. + */ + deploymentModel?: SyncAcquireResponseDeploymentDeploymentModel | undefined; + domains?: SyncAcquireResponseDeploymentDomains | any | null | undefined; + /** + * External bindings for pre-existing infrastructure. + * + * @remarks + * Allows using existing resources (MinIO, Redis, shared Container Apps + * Environment, etc.) instead of having Alien provision them. + * Required for Kubernetes platform, optional for cloud platforms. + */ + externalBindings?: + | SyncAcquireResponseDeploymentStackSettingsExternalBindings + | null + | undefined; + /** + * How heartbeat health checks are handled. + */ + heartbeats?: SyncAcquireResponseDeploymentHeartbeats | undefined; + kubernetes?: SyncAcquireResponseDeploymentKubernetes | any | null | undefined; + network?: + | SyncAcquireResponseDeploymentNetworkByoVpcAws + | SyncAcquireResponseDeploymentNetworkByoVpcGcp + | SyncAcquireResponseDeploymentNetworkByoVnetAzure + | SyncAcquireResponseDeploymentNetworkUseDefault + | SyncAcquireResponseDeploymentNetworkCreate + | any + | null + | undefined; + /** + * How telemetry (logs, metrics, traces) is handled. + */ + telemetry?: SyncAcquireResponseDeploymentTelemetry | undefined; + /** + * How updates are delivered to the deployment. + */ + updates?: SyncAcquireResponseDeploymentUpdates | undefined; +}; + +/** + * Deployment configuration + */ +export type SyncAcquireResponseDeploymentConfig = { + /** + * Allow frozen resource changes during updates + * + * @remarks + * When true, skips the frozen resources compatibility check. + * This requires running with elevated cloud credentials. + */ + allowFrozenChanges?: boolean | undefined; + basePlatform?: + | SyncAcquireResponseDeploymentBasePlatformEnum + | any + | null + | undefined; + computeBackend?: + | SyncAcquireResponseDeploymentComputeBackendHorizon + | any + | null + | undefined; + /** + * Human-readable deployment name for cloud console metadata. + * + * @remarks + * + * This is separate from the physical resource prefix in StackState. It is + * used only for display text such as IAM role descriptions, service + * account descriptions, and custom role titles. + */ + deploymentName?: string | null | undefined; + /** + * Deployment token for pull authentication with the manager's registry. + * + * @remarks + * + * Used by controllers to configure registry credentials so cloud platforms + * and K8s can pull images from the manager's `/v2/` endpoint. + */ + deploymentToken?: string | null | undefined; + domainMetadata?: + | SyncAcquireResponseDeploymentDomainMetadata + | any + | null + | undefined; + /** + * Snapshot of environment variables at a point in time + */ + environmentVariables: SyncAcquireResponseDeploymentEnvironmentVariables; + /** + * Map from resource ID to external binding. + * + * @remarks + * + * Validated at runtime: binding type must match resource type. + */ + externalBindings?: { + [k: string]: + | SyncAcquireResponseDeploymentExternalBindingsAi + | SyncAcquireResponseDeploymentExternalBindingsContainerAppsEnvironment + | SyncAcquireResponseDeploymentExternalBindingsS3 + | SyncAcquireResponseDeploymentExternalBindingsBlob + | SyncAcquireResponseDeploymentExternalBindingsGcs + | SyncAcquireResponseDeploymentExternalBindingsLocalStorage + | SyncAcquireResponseDeploymentExternalBindingsSqs + | SyncAcquireResponseDeploymentExternalBindingsPubsub + | SyncAcquireResponseDeploymentExternalBindingsServicebus + | SyncAcquireResponseDeploymentExternalBindingsLocalQueue + | SyncAcquireResponseDeploymentExternalBindingsDynamodb + | SyncAcquireResponseDeploymentExternalBindingsFirestore + | SyncAcquireResponseDeploymentExternalBindingsTablestorage + | SyncAcquireResponseDeploymentExternalBindingsRedis + | SyncAcquireResponseDeploymentExternalBindingsLocalKv + | SyncAcquireResponseDeploymentExternalBindingsEcr + | SyncAcquireResponseDeploymentExternalBindingsAcr + | SyncAcquireResponseDeploymentExternalBindingsGar + | SyncAcquireResponseDeploymentExternalBindingsLocal + | SyncAcquireResponseDeploymentExternalBindingsParameterStore + | SyncAcquireResponseDeploymentExternalBindingsSecretManager + | SyncAcquireResponseDeploymentExternalBindingsKeyVault + | SyncAcquireResponseDeploymentExternalBindingsKubernetesSecret + | SyncAcquireResponseDeploymentExternalBindingsLocalVault + | SyncAcquireResponseDeploymentExternalBindingsAurora + | SyncAcquireResponseDeploymentExternalBindingsCloudSQL + | SyncAcquireResponseDeploymentExternalBindingsFlexibleServer + | SyncAcquireResponseDeploymentExternalBindingsExternal + | SyncAcquireResponseDeploymentExternalBindingsLocalPostgres; + } | undefined; + /** + * Deployer-provided stack input values, keyed by input id. A resource + * + * @remarks + * 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. + */ + inputValues?: { [k: string]: any | null } | undefined; + /** + * DNS-style label domain used for Kubernetes resource ownership labels. + * + * @remarks + * + * Defaults to `alien.dev` when absent. Whitelabeled Operator builds set this + * so generated workloads and optional log collectors share the same label + * namespace. + */ + labelDomain?: string | null | undefined; + managementConfig?: + | SyncAcquireResponseDeploymentManagementConfigAzure + | SyncAcquireResponseDeploymentManagementConfigAws + | SyncAcquireResponseDeploymentManagementConfigGcp + | SyncAcquireResponseDeploymentManagementConfigKubernetes + | any + | null + | undefined; + /** + * Manager base URL (e.g., "https://manager.alien.dev"). + * + * @remarks + * + * The manager IS the container registry — its `/v2/` endpoint serves as + * the OCI Distribution API. Controllers derive the proxy host from this + * to configure pull auth (RegistryCredentials, imagePullSecrets). + * + * When None (e.g., `alien dev`), controllers use image URIs as-is. + */ + managerUrl?: string | null | undefined; + monitoring?: SyncAcquireResponseDeploymentMonitoring | any | null | undefined; + /** + * Native image registry host+prefix for platforms that require it. + * + * @remarks + * + * Lambda (ECR) and Cloud Run (GAR) require native registry URIs. Other + * runtimes, including Azure Container Apps, pull through the manager's + * registry proxy. + * + * Derived by the manager from the artifact registry binding: + * - ECR: `{account_id}.dkr.ecr.{region}.amazonaws.com/{repository_prefix}` + * - GAR: `{region}-docker.pkg.dev/{project_id}/{repository_name}` + */ + nativeImageHost?: string | null | undefined; + /** + * When true the observe pass reports raw resources across every namespace + * + * @remarks + * (cluster scope); otherwise it stays within the operator's own namespace. + * The label selector, if any, still filters within whichever scope applies. + * Ignored by cloud observers. + */ + observeAllNamespaces?: boolean | undefined; + /** + * Kubernetes label selector that narrows which raw resources the observe + * + * @remarks + * pass reports (e.g. `app.kubernetes.io/part-of=my-app`). `None` observes + * everything in the namespace. Ignored by cloud observers. + */ + observeLabelSelector?: string | null | undefined; + /** + * Public endpoint URLs for exposed resources (optional override). + * + * @remarks + * + * Use this only when a caller already knows the public URL. Managed public + * endpoint flows should prefer `domain_metadata` plus controller-reported + * load balancer outputs so DNS, certificate renewal, and route readiness + * stay tied to the resource state. + * + * If not set, platforms determine public endpoint URLs from other sources: + * - Managed DNS/TLS flows: `domain_metadata` FQDN or load balancer DNS + * - Local: `http://localhost:{allocated_port}` + * - Custom or disabled exposure: no public endpoint URL unless a controller reports one + * + * Outer key: resource ID. Inner key: endpoint name. Value: public URL. + */ + publicEndpoints?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * User-customizable deployment settings specified at deploy time. + * + * @remarks + * + * These settings are provided by the customer via CloudFormation parameters, + * Terraform attributes, CLI flags, or Helm values. They customize how the + * deployment runs and what capabilities are enabled. + * + * **Key distinction**: StackSettings is user-customizable, while ManagementConfig + * is platform-derived (from the Manager's ServiceAccount). + */ + stackSettings?: SyncAcquireResponseDeploymentStackSettings | undefined; +}; + +export type SyncAcquireResponseDeployment = { + /** + * ID of the deployment + */ + deploymentId: string; + /** + * Project ID the deployment belongs to + */ + projectId: string; + /** + * Deployment group ID the deployment belongs to + */ + deploymentGroupId: string; + setupMethod?: DeploymentSetupMethod | undefined; + /** + * Current deployment state (includes releases) + */ + current: SyncAcquireResponseDeploymentCurrent; + /** + * Deployment configuration + */ + config: SyncAcquireResponseDeploymentConfig; +}; + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseTypeStringList$inboundSchema: + z.ZodEnum = + z.enum(SyncAcquireResponseDeploymentCurrentReleaseTypeStringList); + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseDefaultStringList$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseDefaultStringList, + unknown + > = z.object({ + type: + SyncAcquireResponseDeploymentCurrentReleaseTypeStringList$inboundSchema, + value: z.array(z.string()), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseDefaultStringListFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseDefaultStringList, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseDefaultStringList$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseDefaultStringList' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseTypeBoolean$inboundSchema: + z.ZodEnum = z + .enum(SyncAcquireResponseDeploymentCurrentReleaseTypeBoolean); + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseDefaultBoolean$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseDefaultBoolean, + unknown + > = z.object({ + type: SyncAcquireResponseDeploymentCurrentReleaseTypeBoolean$inboundSchema, + value: z.boolean(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseDefaultBooleanFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseDefaultBoolean, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseDefaultBoolean$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseDefaultBoolean' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseTypeNumber$inboundSchema: + z.ZodEnum = z + .enum(SyncAcquireResponseDeploymentCurrentReleaseTypeNumber); + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseDefaultNumber$inboundSchema: + z.ZodType = + z.object({ + type: SyncAcquireResponseDeploymentCurrentReleaseTypeNumber$inboundSchema, + value: z.string(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseDefaultNumberFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseDefaultNumber, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseDefaultNumber$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseDefaultNumber' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseTypeString$inboundSchema: + z.ZodEnum = z + .enum(SyncAcquireResponseDeploymentCurrentReleaseTypeString); + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseDefaultString$inboundSchema: + z.ZodType = + z.object({ + type: SyncAcquireResponseDeploymentCurrentReleaseTypeString$inboundSchema, + value: z.string(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseDefaultStringFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseDefaultString, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseDefaultString$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseDefaultString' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseDefaultUnion$inboundSchema: + z.ZodType = + z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseDefaultString$inboundSchema + ), + z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseDefaultNumber$inboundSchema + ), + z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseDefaultBoolean$inboundSchema + ), + z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseDefaultStringList$inboundSchema + ), + z.any(), + ]); + +export function syncAcquireResponseDeploymentCurrentReleaseDefaultUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseDefaultUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseDefaultUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseDefaultUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseTypeEnvEnum$inboundSchema: + z.ZodEnum = z + .enum(SyncAcquireResponseDeploymentCurrentReleaseTypeEnvEnum); + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseTypeUnion$inboundSchema: + z.ZodType = z + .union([ + SyncAcquireResponseDeploymentCurrentReleaseTypeEnvEnum$inboundSchema, + z.any(), + ]); + +export function syncAcquireResponseDeploymentCurrentReleaseTypeUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseTypeUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseTypeUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseTypeUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseEnv$inboundSchema: + z.ZodType = z.object( + { + name: z.string(), + targetResources: z.nullable(z.array(z.string())).optional(), + type: z.nullable( + z.union([ + SyncAcquireResponseDeploymentCurrentReleaseTypeEnvEnum$inboundSchema, + z.any(), + ]), + ).optional(), + }, + ); + +export function syncAcquireResponseDeploymentCurrentReleaseEnvFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseEnv, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseEnv$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseEnv' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseKind$inboundSchema: + z.ZodEnum = z.enum( + SyncAcquireResponseDeploymentCurrentReleaseKind, + ); + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleasePlatform$inboundSchema: + z.ZodEnum = z + .enum(SyncAcquireResponseDeploymentCurrentReleasePlatform); + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseProvidedBy$inboundSchema: + z.ZodEnum = z + .enum(SyncAcquireResponseDeploymentCurrentReleaseProvidedBy); + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseValidation$inboundSchema: + z.ZodType = z + .object({ + format: z.nullable(z.string()).optional(), + max: z.nullable(z.string()).optional(), + maxItems: z.nullable(z.int()).optional(), + maxLength: z.nullable(z.int()).optional(), + min: z.nullable(z.string()).optional(), + minItems: z.nullable(z.int()).optional(), + minLength: z.nullable(z.int()).optional(), + pattern: z.nullable(z.string()).optional(), + values: z.nullable(z.array(z.string())).optional(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseValidationFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseValidation, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseValidation$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseValidation' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseValidationUnion$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseValidationUnion, + unknown + > = z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseValidation$inboundSchema + ), + z.any(), + ]); + +export function syncAcquireResponseDeploymentCurrentReleaseValidationUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseValidationUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseValidationUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseValidationUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseInput$inboundSchema: + z.ZodType = z + .object({ + default: z.nullable( + z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseDefaultString$inboundSchema + ), + z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseDefaultNumber$inboundSchema + ), + z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseDefaultBoolean$inboundSchema + ), + z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseDefaultStringList$inboundSchema + ), + z.any(), + ]), + ).optional(), + description: z.string(), + env: z.array( + z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseEnv$inboundSchema + ), + ).optional(), + id: z.string(), + kind: SyncAcquireResponseDeploymentCurrentReleaseKind$inboundSchema, + label: z.string(), + placeholder: z.nullable(z.string()).optional(), + platforms: z.nullable( + z.array( + SyncAcquireResponseDeploymentCurrentReleasePlatform$inboundSchema, + ), + ).optional(), + providedBy: z.array( + SyncAcquireResponseDeploymentCurrentReleaseProvidedBy$inboundSchema, + ), + required: z.boolean(), + validation: z.nullable( + z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseValidation$inboundSchema + ), + z.any(), + ]), + ).optional(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseInputFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseInput, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseInput$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseInput' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseManagementEnum$inboundSchema: + z.ZodEnum = + z.enum(SyncAcquireResponseDeploymentCurrentReleaseManagementEnum); + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseOverrideAwResource$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseOverrideAwResource, + unknown + > = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseOverrideAwResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseOverrideAwResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseOverrideAwResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseOverrideAwResource' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseOverrideAwStack$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseOverrideAwStack, + unknown + > = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseOverrideAwStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseOverrideAwStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseOverrideAwStack$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseOverrideAwStack' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseOverrideAwBinding$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseOverrideAwBinding, + unknown + > = z.object({ + resource: z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseOverrideAwResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseOverrideAwStack$inboundSchema + ).optional(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseOverrideAwBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseOverrideAwBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseOverrideAwBinding$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseOverrideAwBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseOverrideEffect$inboundSchema: + z.ZodEnum = + z.enum(SyncAcquireResponseDeploymentCurrentReleaseOverrideEffect); + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseOverrideAwGrant$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseOverrideAwGrant, + unknown + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseOverrideAwGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseOverrideAwGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseOverrideAwGrant$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseOverrideAwGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseOverrideAw$inboundSchema: + z.ZodType = z + .object({ + binding: z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseOverrideAwBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: + SyncAcquireResponseDeploymentCurrentReleaseOverrideEffect$inboundSchema + .optional(), + grant: z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseOverrideAwGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseOverrideAwFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseOverrideAw, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseOverrideAw$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseOverrideAw' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseOverrideAzureResource$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseOverrideAzureResource, + unknown + > = z.object({ + scope: z.string(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseOverrideAzureResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseOverrideAzureResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseOverrideAzureResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseOverrideAzureResource' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseOverrideAzureStack$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseOverrideAzureStack, + unknown + > = z.object({ + scope: z.string(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseOverrideAzureStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseOverrideAzureStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseOverrideAzureStack$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseOverrideAzureStack' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseOverrideAzureBinding$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseOverrideAzureBinding, + unknown + > = z.object({ + resource: z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseOverrideAzureResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseOverrideAzureStack$inboundSchema + ).optional(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseOverrideAzureBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseOverrideAzureBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseOverrideAzureBinding$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseOverrideAzureBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseOverrideAzureGrant$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseOverrideAzureGrant, + unknown + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseOverrideAzureGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseOverrideAzureGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseOverrideAzureGrant$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseOverrideAzureGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseOverrideAzure$inboundSchema: + z.ZodType = + z.object({ + binding: z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseOverrideAzureBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseOverrideAzureGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseOverrideAzureFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseOverrideAzure, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseOverrideAzure$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseOverrideAzure' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseOverrideConditionResource$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseOverrideConditionResource, + unknown + > = z.object({ + expression: z.string(), + title: z.string(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseOverrideConditionResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseOverrideConditionResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseOverrideConditionResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseOverrideConditionResource' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseOverrideResourceConditionUnion$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseOverrideResourceConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseOverrideConditionResource$inboundSchema + ), + z.any(), + ]); + +export function syncAcquireResponseDeploymentCurrentReleaseOverrideResourceConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseOverrideResourceConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseOverrideResourceConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseOverrideResourceConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseOverrideGcpResource$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseOverrideGcpResource, + unknown + > = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseOverrideConditionResource$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseOverrideGcpResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseOverrideGcpResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseOverrideGcpResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseOverrideGcpResource' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseOverrideCondition$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseOverrideCondition, + unknown + > = z.object({ + expression: z.string(), + title: z.string(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseOverrideConditionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseOverrideCondition, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseOverrideCondition$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseOverrideCondition' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseOverrideConditionUnion$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseOverrideConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseOverrideCondition$inboundSchema + ), + z.any(), + ]); + +export function syncAcquireResponseDeploymentCurrentReleaseOverrideConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseOverrideConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseOverrideConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseOverrideConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseOverrideGcpStack$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseOverrideGcpStack, + unknown + > = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseOverrideCondition$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseOverrideGcpStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseOverrideGcpStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseOverrideGcpStack$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseOverrideGcpStack' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseOverrideGcpBinding$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseOverrideGcpBinding, + unknown + > = z.object({ + resource: z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseOverrideGcpResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseOverrideGcpStack$inboundSchema + ).optional(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseOverrideGcpBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseOverrideGcpBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseOverrideGcpBinding$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseOverrideGcpBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseOverrideGcpGrant$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseOverrideGcpGrant, + unknown + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseOverrideGcpGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseOverrideGcpGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseOverrideGcpGrant$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseOverrideGcpGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseOverrideGcp$inboundSchema: + z.ZodType = z + .object({ + binding: z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseOverrideGcpBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseOverrideGcpGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseOverrideGcpFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseOverrideGcp, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseOverrideGcp$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseOverrideGcp' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseOverridePlatforms$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseOverridePlatforms, + unknown + > = z.object({ + aws: z.nullable( + z.array(z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseOverrideAw$inboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseOverrideAzure$inboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseOverrideGcp$inboundSchema + )), + ).optional(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseOverridePlatformsFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseOverridePlatforms, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseOverridePlatforms$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseOverridePlatforms' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseOverride$inboundSchema: + z.ZodType = z + .object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseOverridePlatforms$inboundSchema + ), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseOverrideFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseOverride, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseOverride$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseOverride' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseOverrideUnion$inboundSchema: + z.ZodType = + z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseOverride$inboundSchema + ), + z.string(), + ]); + +export function syncAcquireResponseDeploymentCurrentReleaseOverrideUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseOverrideUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseOverrideUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseOverrideUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseManagement2$inboundSchema: + z.ZodType = z + .object({ + override: z.record( + z.string(), + z.array(z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseOverride$inboundSchema + ), + z.string(), + ])), + ), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseManagement2FromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseManagement2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseManagement2$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseManagement2' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseExtendAwResource$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseExtendAwResource, + unknown + > = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseExtendAwResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseExtendAwResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseExtendAwResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseExtendAwResource' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseExtendAwStack$inboundSchema: + z.ZodType = + z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseExtendAwStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseExtendAwStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseExtendAwStack$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseExtendAwStack' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseExtendAwBinding$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseExtendAwBinding, + unknown + > = z.object({ + resource: z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseExtendAwResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseExtendAwStack$inboundSchema + ).optional(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseExtendAwBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseExtendAwBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseExtendAwBinding$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseExtendAwBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseExtendEffect$inboundSchema: + z.ZodEnum = z + .enum(SyncAcquireResponseDeploymentCurrentReleaseExtendEffect); + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseExtendAwGrant$inboundSchema: + z.ZodType = + z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseExtendAwGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseExtendAwGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseExtendAwGrant$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseExtendAwGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseExtendAw$inboundSchema: + z.ZodType = z + .object({ + binding: z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseExtendAwBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: + SyncAcquireResponseDeploymentCurrentReleaseExtendEffect$inboundSchema + .optional(), + grant: z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseExtendAwGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseExtendAwFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseExtendAw, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseExtendAw$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseExtendAw' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseExtendAzureResource$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseExtendAzureResource, + unknown + > = z.object({ + scope: z.string(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseExtendAzureResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseExtendAzureResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseExtendAzureResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseExtendAzureResource' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseExtendAzureStack$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseExtendAzureStack, + unknown + > = z.object({ + scope: z.string(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseExtendAzureStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseExtendAzureStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseExtendAzureStack$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseExtendAzureStack' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseExtendAzureBinding$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseExtendAzureBinding, + unknown + > = z.object({ + resource: z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseExtendAzureResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseExtendAzureStack$inboundSchema + ).optional(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseExtendAzureBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseExtendAzureBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseExtendAzureBinding$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseExtendAzureBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseExtendAzureGrant$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseExtendAzureGrant, + unknown + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseExtendAzureGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseExtendAzureGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseExtendAzureGrant$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseExtendAzureGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseExtendAzure$inboundSchema: + z.ZodType = z + .object({ + binding: z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseExtendAzureBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseExtendAzureGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseExtendAzureFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseExtendAzure, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseExtendAzure$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseExtendAzure' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseExtendConditionResource$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseExtendConditionResource, + unknown + > = z.object({ + expression: z.string(), + title: z.string(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseExtendConditionResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseExtendConditionResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseExtendConditionResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseExtendConditionResource' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseExtendResourceConditionUnion$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseExtendResourceConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseExtendConditionResource$inboundSchema + ), + z.any(), + ]); + +export function syncAcquireResponseDeploymentCurrentReleaseExtendResourceConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseExtendResourceConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseExtendResourceConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseExtendResourceConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseExtendGcpResource$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseExtendGcpResource, + unknown + > = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseExtendConditionResource$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseExtendGcpResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseExtendGcpResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseExtendGcpResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseExtendGcpResource' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseExtendCondition$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseExtendCondition, + unknown + > = z.object({ + expression: z.string(), + title: z.string(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseExtendConditionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseExtendCondition, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseExtendCondition$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseExtendCondition' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseExtendConditionUnion$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseExtendConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseExtendCondition$inboundSchema + ), + z.any(), + ]); + +export function syncAcquireResponseDeploymentCurrentReleaseExtendConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseExtendConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseExtendConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseExtendConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseExtendGcpStack$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseExtendGcpStack, + unknown + > = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseExtendCondition$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseExtendGcpStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseExtendGcpStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseExtendGcpStack$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseExtendGcpStack' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseExtendGcpBinding$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseExtendGcpBinding, + unknown + > = z.object({ + resource: z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseExtendGcpResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseExtendGcpStack$inboundSchema + ).optional(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseExtendGcpBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseExtendGcpBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseExtendGcpBinding$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseExtendGcpBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseExtendGcpGrant$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseExtendGcpGrant, + unknown + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseExtendGcpGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseExtendGcpGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseExtendGcpGrant$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseExtendGcpGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseExtendGcp$inboundSchema: + z.ZodType = z + .object({ + binding: z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseExtendGcpBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseExtendGcpGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseExtendGcpFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseExtendGcp, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseExtendGcp$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseExtendGcp' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseExtendPlatforms$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseExtendPlatforms, + unknown + > = z.object({ + aws: z.nullable( + z.array(z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseExtendAw$inboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseExtendAzure$inboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseExtendGcp$inboundSchema + )), + ).optional(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseExtendPlatformsFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseExtendPlatforms, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseExtendPlatforms$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseExtendPlatforms' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseExtend$inboundSchema: + z.ZodType = z + .object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseExtendPlatforms$inboundSchema + ), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseExtendFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseExtend, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseExtend$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseExtend' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseExtendUnion$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseExtend$inboundSchema + ), + z.string(), + ]); + +export function syncAcquireResponseDeploymentCurrentReleaseExtendUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseExtendUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseExtendUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseExtendUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseManagement1$inboundSchema: + z.ZodType = z + .object({ + extend: z.record( + z.string(), + z.array(z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseExtend$inboundSchema + ), + z.string(), + ])), + ), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseManagement1FromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseManagement1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseManagement1$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseManagement1' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseManagementUnion$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseManagementUnion, + unknown + > = z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseManagement1$inboundSchema + ), + z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseManagement2$inboundSchema + ), + SyncAcquireResponseDeploymentCurrentReleaseManagementEnum$inboundSchema, + ]); + +export function syncAcquireResponseDeploymentCurrentReleaseManagementUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseManagementUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseManagementUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseManagementUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseProfileAwResource$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseProfileAwResource, + unknown + > = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseProfileAwResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseProfileAwResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseProfileAwResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseProfileAwResource' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseProfileAwStack$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseProfileAwStack, + unknown + > = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseProfileAwStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseProfileAwStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseProfileAwStack$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseProfileAwStack' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseProfileAwBinding$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseProfileAwBinding, + unknown + > = z.object({ + resource: z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseProfileAwResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseProfileAwStack$inboundSchema + ).optional(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseProfileAwBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseProfileAwBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseProfileAwBinding$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseProfileAwBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseProfileEffect$inboundSchema: + z.ZodEnum = z + .enum(SyncAcquireResponseDeploymentCurrentReleaseProfileEffect); + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseProfileAwGrant$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseProfileAwGrant, + unknown + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseProfileAwGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseProfileAwGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseProfileAwGrant$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseProfileAwGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseProfileAw$inboundSchema: + z.ZodType = z + .object({ + binding: z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseProfileAwBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: + SyncAcquireResponseDeploymentCurrentReleaseProfileEffect$inboundSchema + .optional(), + grant: z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseProfileAwGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseProfileAwFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseProfileAw, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseProfileAw$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseProfileAw' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseProfileAzureResource$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseProfileAzureResource, + unknown + > = z.object({ + scope: z.string(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseProfileAzureResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseProfileAzureResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseProfileAzureResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseProfileAzureResource' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseProfileAzureStack$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseProfileAzureStack, + unknown + > = z.object({ + scope: z.string(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseProfileAzureStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseProfileAzureStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseProfileAzureStack$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseProfileAzureStack' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseProfileAzureBinding$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseProfileAzureBinding, + unknown + > = z.object({ + resource: z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseProfileAzureResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseProfileAzureStack$inboundSchema + ).optional(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseProfileAzureBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseProfileAzureBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseProfileAzureBinding$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseProfileAzureBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseProfileAzureGrant$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseProfileAzureGrant, + unknown + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseProfileAzureGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseProfileAzureGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseProfileAzureGrant$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseProfileAzureGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseProfileAzure$inboundSchema: + z.ZodType = + z.object({ + binding: z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseProfileAzureBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseProfileAzureGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseProfileAzureFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseProfileAzure, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseProfileAzure$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseProfileAzure' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseProfileConditionResource$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseProfileConditionResource, + unknown + > = z.object({ + expression: z.string(), + title: z.string(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseProfileConditionResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseProfileConditionResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseProfileConditionResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseProfileConditionResource' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseProfileResourceConditionUnion$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseProfileResourceConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseProfileConditionResource$inboundSchema + ), + z.any(), + ]); + +export function syncAcquireResponseDeploymentCurrentReleaseProfileResourceConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseProfileResourceConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseProfileResourceConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseProfileResourceConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseProfileGcpResource$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseProfileGcpResource, + unknown + > = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseProfileConditionResource$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseProfileGcpResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseProfileGcpResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseProfileGcpResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseProfileGcpResource' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseProfileCondition$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseProfileCondition, + unknown + > = z.object({ + expression: z.string(), + title: z.string(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseProfileConditionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseProfileCondition, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseProfileCondition$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseProfileCondition' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseProfileConditionUnion$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseProfileConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseProfileCondition$inboundSchema + ), + z.any(), + ]); + +export function syncAcquireResponseDeploymentCurrentReleaseProfileConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseProfileConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseProfileConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseProfileConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseProfileGcpStack$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseProfileGcpStack, + unknown + > = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseProfileCondition$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseProfileGcpStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseProfileGcpStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseProfileGcpStack$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseProfileGcpStack' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseProfileGcpBinding$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseProfileGcpBinding, + unknown + > = z.object({ + resource: z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseProfileGcpResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseProfileGcpStack$inboundSchema + ).optional(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseProfileGcpBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseProfileGcpBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseProfileGcpBinding$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseProfileGcpBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseProfileGcpGrant$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseProfileGcpGrant, + unknown + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseProfileGcpGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseProfileGcpGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseProfileGcpGrant$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseProfileGcpGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseProfileGcp$inboundSchema: + z.ZodType = z + .object({ + binding: z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseProfileGcpBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseProfileGcpGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseProfileGcpFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseProfileGcp, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseProfileGcp$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseProfileGcp' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseProfilePlatforms$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentCurrentReleaseProfilePlatforms, + unknown + > = z.object({ + aws: z.nullable( + z.array(z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseProfileAw$inboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseProfileAzure$inboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseProfileGcp$inboundSchema + )), + ).optional(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseProfilePlatformsFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseProfilePlatforms, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseProfilePlatforms$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseProfilePlatforms' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseProfile$inboundSchema: + z.ZodType = z + .object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseProfilePlatforms$inboundSchema + ), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseProfileFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseProfile, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseProfile$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseProfile' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseProfileUnion$inboundSchema: + z.ZodType = + z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseProfile$inboundSchema + ), + z.string(), + ]); + +export function syncAcquireResponseDeploymentCurrentReleaseProfileUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseProfileUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseProfileUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseProfileUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleasePermissions$inboundSchema: + z.ZodType = z + .object({ + management: z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseManagement1$inboundSchema + ), + z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseManagement2$inboundSchema + ), + SyncAcquireResponseDeploymentCurrentReleaseManagementEnum$inboundSchema, + ]).optional(), + profiles: z.record( + z.string(), + z.record( + z.string(), + z.array( + z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseProfile$inboundSchema + ), + z.string(), + ]), + ), + ), + ), + }); + +export function syncAcquireResponseDeploymentCurrentReleasePermissionsFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleasePermissions, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleasePermissions$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleasePermissions' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseConfig$inboundSchema: + z.ZodType = + collectExtraKeys$( + z.object({ + id: z.string(), + type: z.string(), + }).catchall(z.any()), + "additionalProperties", + true, + ); + +export function syncAcquireResponseDeploymentCurrentReleaseConfigFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseConfig, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseConfig$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseConfig' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseDependency$inboundSchema: + z.ZodType = z + .object({ + id: z.string(), + type: z.string(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseDependencyFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseDependency, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseDependency$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseDependency' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseLifecycle$inboundSchema: + z.ZodEnum = z + .enum(SyncAcquireResponseDeploymentCurrentReleaseLifecycle); + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseResources$inboundSchema: + z.ZodType = z + .object({ + config: z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseConfig$inboundSchema + ), + dependencies: z.array( + z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseDependency$inboundSchema + ), + ), + enabledWhen: z.nullable(z.string()).optional(), + lifecycle: + SyncAcquireResponseDeploymentCurrentReleaseLifecycle$inboundSchema, + remoteAccess: z.boolean().optional(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseResourcesFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseResources, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseResources$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseResources' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentReleaseSupportedPlatform$inboundSchema: + z.ZodEnum< + typeof SyncAcquireResponseDeploymentCurrentReleaseSupportedPlatform + > = z.enum(SyncAcquireResponseDeploymentCurrentReleaseSupportedPlatform); /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseTypeStringList$inboundSchema: - z.ZodEnum = - z.enum(SyncAcquireResponseDeploymentCurrentReleaseTypeStringList); +export const SyncAcquireResponseDeploymentCurrentReleaseStack$inboundSchema: + z.ZodType = z + .object({ + id: z.string(), + inputs: z.array( + z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseInput$inboundSchema + ), + ).optional(), + permissions: z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleasePermissions$inboundSchema + ).optional(), + resources: z.record( + z.string(), + z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseResources$inboundSchema + ), + ), + supportedPlatforms: z.nullable( + z.array( + SyncAcquireResponseDeploymentCurrentReleaseSupportedPlatform$inboundSchema, + ), + ).optional(), + }); + +export function syncAcquireResponseDeploymentCurrentReleaseStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseStack' from JSON`, + ); +} /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseDefaultStringList$inboundSchema: - z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseDefaultStringList, - unknown - > = z.object({ - type: - SyncAcquireResponseDeploymentCurrentReleaseTypeStringList$inboundSchema, - value: z.array(z.string()), +export const SyncAcquireResponseDeploymentCurrentRelease$inboundSchema: + z.ZodType = z.object({ + description: z.nullable(z.string()).optional(), + releaseId: z.nullable(z.string()).optional(), + stack: z.lazy(() => + SyncAcquireResponseDeploymentCurrentReleaseStack$inboundSchema + ), + version: z.nullable(z.string()).optional(), }); -export function syncAcquireResponseDeploymentCurrentReleaseDefaultStringListFromJSON( +export function syncAcquireResponseDeploymentCurrentReleaseFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseDefaultStringList, + SyncAcquireResponseDeploymentCurrentRelease, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseDefaultStringList$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseDefaultStringList' from JSON`, + SyncAcquireResponseDeploymentCurrentRelease$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentRelease' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseTypeBoolean$inboundSchema: - z.ZodEnum = z - .enum(SyncAcquireResponseDeploymentCurrentReleaseTypeBoolean); +export const SyncAcquireResponseDeploymentCurrentReleaseUnion$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => SyncAcquireResponseDeploymentCurrentRelease$inboundSchema), + z.any(), + ]); + +export function syncAcquireResponseDeploymentCurrentReleaseUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentCurrentReleaseUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentCurrentReleaseUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseUnion' from JSON`, + ); +} /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseDefaultBoolean$inboundSchema: - z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseDefaultBoolean, - unknown - > = z.object({ - type: SyncAcquireResponseDeploymentCurrentReleaseTypeBoolean$inboundSchema, - value: z.boolean(), - }); +export const SyncAcquireResponseDeploymentPlatformTest$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseDeploymentPlatformTest +> = z.enum(SyncAcquireResponseDeploymentPlatformTest); -export function syncAcquireResponseDeploymentCurrentReleaseDefaultBooleanFromJSON( +/** @internal */ +export const SyncAcquireResponseDeploymentEnvironmentInfoTest$inboundSchema: + z.ZodType = z + .object({ + testId: z.string(), + platform: SyncAcquireResponseDeploymentPlatformTest$inboundSchema, + }); + +export function syncAcquireResponseDeploymentEnvironmentInfoTestFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseDefaultBoolean, + SyncAcquireResponseDeploymentEnvironmentInfoTest, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseDefaultBoolean$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseDefaultBoolean' from JSON`, + SyncAcquireResponseDeploymentEnvironmentInfoTest$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseDeploymentEnvironmentInfoTest' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseTypeNumber$inboundSchema: - z.ZodEnum = z - .enum(SyncAcquireResponseDeploymentCurrentReleaseTypeNumber); +export const SyncAcquireResponseDeploymentPlatformLocal$inboundSchema: + z.ZodEnum = z.enum( + SyncAcquireResponseDeploymentPlatformLocal, + ); /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseDefaultNumber$inboundSchema: - z.ZodType = - z.object({ - type: SyncAcquireResponseDeploymentCurrentReleaseTypeNumber$inboundSchema, - value: z.string(), +export const SyncAcquireResponseDeploymentEnvironmentInfoLocal$inboundSchema: + z.ZodType = z + .object({ + arch: z.string(), + hostname: z.string(), + os: z.string(), + platform: SyncAcquireResponseDeploymentPlatformLocal$inboundSchema, }); -export function syncAcquireResponseDeploymentCurrentReleaseDefaultNumberFromJSON( +export function syncAcquireResponseDeploymentEnvironmentInfoLocalFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseDefaultNumber, + SyncAcquireResponseDeploymentEnvironmentInfoLocal, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseDefaultNumber$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseDefaultNumber' from JSON`, + SyncAcquireResponseDeploymentEnvironmentInfoLocal$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseDeploymentEnvironmentInfoLocal' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentPlatformAzure$inboundSchema: + z.ZodEnum = z.enum( + SyncAcquireResponseDeploymentCurrentPlatformAzure, + ); + +/** @internal */ +export const SyncAcquireResponseDeploymentEnvironmentInfoAzure$inboundSchema: + z.ZodType = z + .object({ + location: z.string(), + subscriptionId: z.string(), + tenantId: z.string(), + platform: SyncAcquireResponseDeploymentCurrentPlatformAzure$inboundSchema, + }); + +export function syncAcquireResponseDeploymentEnvironmentInfoAzureFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentEnvironmentInfoAzure, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentEnvironmentInfoAzure$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseDeploymentEnvironmentInfoAzure' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentCurrentPlatformGcp$inboundSchema: + z.ZodEnum = z.enum( + SyncAcquireResponseDeploymentCurrentPlatformGcp, + ); + +/** @internal */ +export const SyncAcquireResponseDeploymentEnvironmentInfoGcp$inboundSchema: + z.ZodType = z + .object({ + projectId: z.string(), + projectNumber: z.string(), + region: z.string(), + platform: SyncAcquireResponseDeploymentCurrentPlatformGcp$inboundSchema, + }); + +export function syncAcquireResponseDeploymentEnvironmentInfoGcpFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentEnvironmentInfoGcp, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentEnvironmentInfoGcp$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseDeploymentEnvironmentInfoGcp' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseTypeString$inboundSchema: - z.ZodEnum = z - .enum(SyncAcquireResponseDeploymentCurrentReleaseTypeString); +export const SyncAcquireResponseDeploymentCurrentPlatformAws$inboundSchema: + z.ZodEnum = z.enum( + SyncAcquireResponseDeploymentCurrentPlatformAws, + ); /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseDefaultString$inboundSchema: - z.ZodType = - z.object({ - type: SyncAcquireResponseDeploymentCurrentReleaseTypeString$inboundSchema, - value: z.string(), +export const SyncAcquireResponseDeploymentEnvironmentInfoAws$inboundSchema: + z.ZodType = z + .object({ + accountId: z.string(), + region: z.string(), + platform: SyncAcquireResponseDeploymentCurrentPlatformAws$inboundSchema, }); -export function syncAcquireResponseDeploymentCurrentReleaseDefaultStringFromJSON( +export function syncAcquireResponseDeploymentEnvironmentInfoAwsFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseDefaultString, + SyncAcquireResponseDeploymentEnvironmentInfoAws, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseDefaultString$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseDefaultString' from JSON`, + SyncAcquireResponseDeploymentEnvironmentInfoAws$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseDeploymentEnvironmentInfoAws' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseDefaultUnion$inboundSchema: - z.ZodType = - z.union([ +export const SyncAcquireResponseDeploymentEnvironmentInfoUnion$inboundSchema: + z.ZodType = z + .union([ z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseDefaultString$inboundSchema + SyncAcquireResponseDeploymentEnvironmentInfoGcp$inboundSchema ), z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseDefaultNumber$inboundSchema + SyncAcquireResponseDeploymentEnvironmentInfoAzure$inboundSchema ), z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseDefaultBoolean$inboundSchema + SyncAcquireResponseDeploymentEnvironmentInfoLocal$inboundSchema ), z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseDefaultStringList$inboundSchema + SyncAcquireResponseDeploymentEnvironmentInfoAws$inboundSchema + ), + z.lazy(() => + SyncAcquireResponseDeploymentEnvironmentInfoTest$inboundSchema ), z.any(), ]); -export function syncAcquireResponseDeploymentCurrentReleaseDefaultUnionFromJSON( +export function syncAcquireResponseDeploymentEnvironmentInfoUnionFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseDefaultUnion, + SyncAcquireResponseDeploymentEnvironmentInfoUnion, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseDefaultUnion$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseDefaultUnion' from JSON`, + SyncAcquireResponseDeploymentEnvironmentInfoUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseDeploymentEnvironmentInfoUnion' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseTypeEnvEnum$inboundSchema: - z.ZodEnum = z - .enum(SyncAcquireResponseDeploymentCurrentReleaseTypeEnvEnum); - -/** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseTypeUnion$inboundSchema: - z.ZodType = z - .union([ - SyncAcquireResponseDeploymentCurrentReleaseTypeEnvEnum$inboundSchema, - z.any(), - ]); +export const SyncAcquireResponseDeploymentError$inboundSchema: z.ZodType< + SyncAcquireResponseDeploymentError, + unknown +> = z.object({ + code: z.string(), + context: z.nullable(z.any()).optional(), + hint: z.nullable(z.string()).optional(), + httpStatusCode: z.nullable(z.int()).optional(), + internal: z.boolean(), + message: z.string(), + retryable: z.boolean().default(false), + source: z.nullable(z.any()).optional(), +}); -export function syncAcquireResponseDeploymentCurrentReleaseTypeUnionFromJSON( +export function syncAcquireResponseDeploymentErrorFromJSON( jsonString: string, -): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseTypeUnion, - SDKValidationError -> { +): SafeParseResult { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseTypeUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseTypeUnion' from JSON`, + SyncAcquireResponseDeploymentError$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentError' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseEnv$inboundSchema: - z.ZodType = z.object( - { - name: z.string(), - targetResources: z.nullable(z.array(z.string())).optional(), - type: z.nullable( - z.union([ - SyncAcquireResponseDeploymentCurrentReleaseTypeEnvEnum$inboundSchema, - z.any(), - ]), - ).optional(), - }, - ); +export const SyncAcquireResponseDeploymentErrorUnion$inboundSchema: z.ZodType< + SyncAcquireResponseDeploymentErrorUnion, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseDeploymentError$inboundSchema), + z.any(), +]); -export function syncAcquireResponseDeploymentCurrentReleaseEnvFromJSON( +export function syncAcquireResponseDeploymentErrorUnionFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseEnv, + SyncAcquireResponseDeploymentErrorUnion, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseEnv$inboundSchema.parse( + SyncAcquireResponseDeploymentErrorUnion$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseEnv' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentErrorUnion' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseKind$inboundSchema: - z.ZodEnum = z.enum( - SyncAcquireResponseDeploymentCurrentReleaseKind, +export const SyncAcquireResponseDeploymentCurrentPlatform$inboundSchema: + z.ZodEnum = z.enum( + SyncAcquireResponseDeploymentCurrentPlatform, ); /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleasePlatform$inboundSchema: - z.ZodEnum = z - .enum(SyncAcquireResponseDeploymentCurrentReleasePlatform); - -/** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseProvidedBy$inboundSchema: - z.ZodEnum = z - .enum(SyncAcquireResponseDeploymentCurrentReleaseProvidedBy); +export const SyncAcquireResponseDeploymentInitialSetupAuthority$inboundSchema: + z.ZodEnum = z.enum( + SyncAcquireResponseDeploymentInitialSetupAuthority, + ); /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseValidation$inboundSchema: - z.ZodType = z - .object({ - format: z.nullable(z.string()).optional(), - max: z.nullable(z.string()).optional(), - maxItems: z.nullable(z.int()).optional(), - maxLength: z.nullable(z.int()).optional(), - min: z.nullable(z.string()).optional(), - minItems: z.nullable(z.int()).optional(), - minLength: z.nullable(z.int()).optional(), - pattern: z.nullable(z.string()).optional(), - values: z.nullable(z.array(z.string())).optional(), - }); - -export function syncAcquireResponseDeploymentCurrentReleaseValidationFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseValidation, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseDeploymentCurrentReleaseValidation$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseValidation' from JSON`, - ); -} +export const SyncAcquireResponseDeploymentPendingPreparedStackTypeStringList$inboundSchema: + z.ZodEnum< + typeof SyncAcquireResponseDeploymentPendingPreparedStackTypeStringList + > = z.enum(SyncAcquireResponseDeploymentPendingPreparedStackTypeStringList); /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseValidationUnion$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackDefaultStringList$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseValidationUnion, + SyncAcquireResponseDeploymentPendingPreparedStackDefaultStringList, unknown - > = z.union([ - z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseValidation$inboundSchema - ), - z.any(), - ]); + > = z.object({ + type: + SyncAcquireResponseDeploymentPendingPreparedStackTypeStringList$inboundSchema, + value: z.array(z.string()), + }); -export function syncAcquireResponseDeploymentCurrentReleaseValidationUnionFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackDefaultStringListFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseValidationUnion, + SyncAcquireResponseDeploymentPendingPreparedStackDefaultStringList, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseValidationUnion$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackDefaultStringList$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseValidationUnion' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackDefaultStringList' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseInput$inboundSchema: - z.ZodType = z - .object({ - default: z.nullable( - z.union([ - z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseDefaultString$inboundSchema - ), - z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseDefaultNumber$inboundSchema - ), - z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseDefaultBoolean$inboundSchema - ), - z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseDefaultStringList$inboundSchema - ), - z.any(), - ]), - ).optional(), - description: z.string(), - env: z.array( - z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseEnv$inboundSchema - ), - ).optional(), - id: z.string(), - kind: SyncAcquireResponseDeploymentCurrentReleaseKind$inboundSchema, - label: z.string(), - placeholder: z.nullable(z.string()).optional(), - platforms: z.nullable( - z.array( - SyncAcquireResponseDeploymentCurrentReleasePlatform$inboundSchema, - ), - ).optional(), - providedBy: z.array( - SyncAcquireResponseDeploymentCurrentReleaseProvidedBy$inboundSchema, - ), - required: z.boolean(), - validation: z.nullable( - z.union([ - z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseValidation$inboundSchema - ), - z.any(), - ]), - ).optional(), - }); +export const SyncAcquireResponseDeploymentPendingPreparedStackTypeBoolean$inboundSchema: + z.ZodEnum< + typeof SyncAcquireResponseDeploymentPendingPreparedStackTypeBoolean + > = z.enum(SyncAcquireResponseDeploymentPendingPreparedStackTypeBoolean); -export function syncAcquireResponseDeploymentCurrentReleaseInputFromJSON( +/** @internal */ +export const SyncAcquireResponseDeploymentPendingPreparedStackDefaultBoolean$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentPendingPreparedStackDefaultBoolean, + unknown + > = z.object({ + type: + SyncAcquireResponseDeploymentPendingPreparedStackTypeBoolean$inboundSchema, + value: z.boolean(), + }); + +export function syncAcquireResponseDeploymentPendingPreparedStackDefaultBooleanFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseInput, + SyncAcquireResponseDeploymentPendingPreparedStackDefaultBoolean, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseInput$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseInput' from JSON`, + SyncAcquireResponseDeploymentPendingPreparedStackDefaultBoolean$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackDefaultBoolean' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseManagementEnum$inboundSchema: - z.ZodEnum = - z.enum(SyncAcquireResponseDeploymentCurrentReleaseManagementEnum); +export const SyncAcquireResponseDeploymentPendingPreparedStackTypeNumber$inboundSchema: + z.ZodEnum< + typeof SyncAcquireResponseDeploymentPendingPreparedStackTypeNumber + > = z.enum(SyncAcquireResponseDeploymentPendingPreparedStackTypeNumber); /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseOverrideAwResource$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackDefaultNumber$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseOverrideAwResource, + SyncAcquireResponseDeploymentPendingPreparedStackDefaultNumber, unknown > = z.object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), + type: + SyncAcquireResponseDeploymentPendingPreparedStackTypeNumber$inboundSchema, + value: z.string(), }); -export function syncAcquireResponseDeploymentCurrentReleaseOverrideAwResourceFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackDefaultNumberFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseOverrideAwResource, + SyncAcquireResponseDeploymentPendingPreparedStackDefaultNumber, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseOverrideAwResource$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackDefaultNumber$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseOverrideAwResource' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackDefaultNumber' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseOverrideAwStack$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackTypeString$inboundSchema: + z.ZodEnum< + typeof SyncAcquireResponseDeploymentPendingPreparedStackTypeString + > = z.enum(SyncAcquireResponseDeploymentPendingPreparedStackTypeString); + +/** @internal */ +export const SyncAcquireResponseDeploymentPendingPreparedStackDefaultString$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseOverrideAwStack, + SyncAcquireResponseDeploymentPendingPreparedStackDefaultString, unknown > = z.object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), + type: + SyncAcquireResponseDeploymentPendingPreparedStackTypeString$inboundSchema, + value: z.string(), }); -export function syncAcquireResponseDeploymentCurrentReleaseOverrideAwStackFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackDefaultStringFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseOverrideAwStack, + SyncAcquireResponseDeploymentPendingPreparedStackDefaultString, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseOverrideAwStack$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackDefaultString$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseOverrideAwStack' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackDefaultString' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseOverrideAwBinding$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackDefaultUnion$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseOverrideAwBinding, + SyncAcquireResponseDeploymentPendingPreparedStackDefaultUnion, unknown - > = z.object({ - resource: z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseOverrideAwResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseOverrideAwStack$inboundSchema - ).optional(), - }); + > = z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackDefaultString$inboundSchema + ), + z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackDefaultNumber$inboundSchema + ), + z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackDefaultBoolean$inboundSchema + ), + z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackDefaultStringList$inboundSchema + ), + z.any(), + ]); -export function syncAcquireResponseDeploymentCurrentReleaseOverrideAwBindingFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackDefaultUnionFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseOverrideAwBinding, + SyncAcquireResponseDeploymentPendingPreparedStackDefaultUnion, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseOverrideAwBinding$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackDefaultUnion$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseOverrideAwBinding' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackDefaultUnion' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseOverrideEffect$inboundSchema: - z.ZodEnum = - z.enum(SyncAcquireResponseDeploymentCurrentReleaseOverrideEffect); +export const SyncAcquireResponseDeploymentPendingPreparedStackTypeEnvEnum$inboundSchema: + z.ZodEnum< + typeof SyncAcquireResponseDeploymentPendingPreparedStackTypeEnvEnum + > = z.enum(SyncAcquireResponseDeploymentPendingPreparedStackTypeEnvEnum); /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseOverrideAwGrant$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackTypeUnion$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseOverrideAwGrant, + SyncAcquireResponseDeploymentPendingPreparedStackTypeUnion, unknown - > = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); + > = z.union([ + SyncAcquireResponseDeploymentPendingPreparedStackTypeEnvEnum$inboundSchema, + z.any(), + ]); -export function syncAcquireResponseDeploymentCurrentReleaseOverrideAwGrantFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackTypeUnionFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseOverrideAwGrant, + SyncAcquireResponseDeploymentPendingPreparedStackTypeUnion, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseOverrideAwGrant$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackTypeUnion$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseOverrideAwGrant' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackTypeUnion' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseOverrideAw$inboundSchema: - z.ZodType = z +export const SyncAcquireResponseDeploymentPendingPreparedStackEnv$inboundSchema: + z.ZodType = z .object({ - binding: z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseOverrideAwBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - effect: - SyncAcquireResponseDeploymentCurrentReleaseOverrideEffect$inboundSchema - .optional(), - grant: z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseOverrideAwGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), + name: z.string(), + targetResources: z.nullable(z.array(z.string())).optional(), + type: z.nullable( + z.union([ + SyncAcquireResponseDeploymentPendingPreparedStackTypeEnvEnum$inboundSchema, + z.any(), + ]), + ).optional(), }); -export function syncAcquireResponseDeploymentCurrentReleaseOverrideAwFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackEnvFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseOverrideAw, + SyncAcquireResponseDeploymentPendingPreparedStackEnv, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseOverrideAw$inboundSchema.parse( + SyncAcquireResponseDeploymentPendingPreparedStackEnv$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseOverrideAw' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackEnv' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseOverrideAzureResource$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackKind$inboundSchema: + z.ZodEnum = z + .enum(SyncAcquireResponseDeploymentPendingPreparedStackKind); + +/** @internal */ +export const SyncAcquireResponseDeploymentPendingPreparedStackPlatform$inboundSchema: + z.ZodEnum = + z.enum(SyncAcquireResponseDeploymentPendingPreparedStackPlatform); + +/** @internal */ +export const SyncAcquireResponseDeploymentPendingPreparedStackProvidedBy$inboundSchema: + z.ZodEnum< + typeof SyncAcquireResponseDeploymentPendingPreparedStackProvidedBy + > = z.enum(SyncAcquireResponseDeploymentPendingPreparedStackProvidedBy); + +/** @internal */ +export const SyncAcquireResponseDeploymentPendingPreparedStackValidation$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseOverrideAzureResource, + SyncAcquireResponseDeploymentPendingPreparedStackValidation, unknown > = z.object({ - scope: z.string(), + format: z.nullable(z.string()).optional(), + max: z.nullable(z.string()).optional(), + maxItems: z.nullable(z.int()).optional(), + maxLength: z.nullable(z.int()).optional(), + min: z.nullable(z.string()).optional(), + minItems: z.nullable(z.int()).optional(), + minLength: z.nullable(z.int()).optional(), + pattern: z.nullable(z.string()).optional(), + values: z.nullable(z.array(z.string())).optional(), }); -export function syncAcquireResponseDeploymentCurrentReleaseOverrideAzureResourceFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackValidationFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseOverrideAzureResource, + SyncAcquireResponseDeploymentPendingPreparedStackValidation, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseOverrideAzureResource$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackValidation$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseOverrideAzureResource' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackValidation' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseOverrideAzureStack$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackValidationUnion$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseOverrideAzureStack, + SyncAcquireResponseDeploymentPendingPreparedStackValidationUnion, unknown - > = z.object({ - scope: z.string(), - }); + > = z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackValidation$inboundSchema + ), + z.any(), + ]); -export function syncAcquireResponseDeploymentCurrentReleaseOverrideAzureStackFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackValidationUnionFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseOverrideAzureStack, + SyncAcquireResponseDeploymentPendingPreparedStackValidationUnion, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseOverrideAzureStack$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackValidationUnion$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseOverrideAzureStack' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackValidationUnion' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseOverrideAzureBinding$inboundSchema: - z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseOverrideAzureBinding, - unknown - > = z.object({ - resource: z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseOverrideAzureResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseOverrideAzureStack$inboundSchema - ).optional(), - }); +export const SyncAcquireResponseDeploymentPendingPreparedStackInput$inboundSchema: + z.ZodType = z + .object({ + default: z.nullable( + z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackDefaultString$inboundSchema + ), + z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackDefaultNumber$inboundSchema + ), + z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackDefaultBoolean$inboundSchema + ), + z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackDefaultStringList$inboundSchema + ), + z.any(), + ]), + ).optional(), + description: z.string(), + env: z.array( + z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackEnv$inboundSchema + ), + ).optional(), + id: z.string(), + kind: SyncAcquireResponseDeploymentPendingPreparedStackKind$inboundSchema, + label: z.string(), + placeholder: z.nullable(z.string()).optional(), + platforms: z.nullable( + z.array( + SyncAcquireResponseDeploymentPendingPreparedStackPlatform$inboundSchema, + ), + ).optional(), + providedBy: z.array( + SyncAcquireResponseDeploymentPendingPreparedStackProvidedBy$inboundSchema, + ), + required: z.boolean(), + validation: z.nullable( + z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackValidation$inboundSchema + ), + z.any(), + ]), + ).optional(), + }); -export function syncAcquireResponseDeploymentCurrentReleaseOverrideAzureBindingFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackInputFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseOverrideAzureBinding, + SyncAcquireResponseDeploymentPendingPreparedStackInput, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseOverrideAzureBinding$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackInput$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseOverrideAzureBinding' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackInput' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseOverrideAzureGrant$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackManagementEnum$inboundSchema: + z.ZodEnum< + typeof SyncAcquireResponseDeploymentPendingPreparedStackManagementEnum + > = z.enum(SyncAcquireResponseDeploymentPendingPreparedStackManagementEnum); + +/** @internal */ +export const SyncAcquireResponseDeploymentPendingPreparedStackOverrideAwResource$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseOverrideAzureGrant, + SyncAcquireResponseDeploymentPendingPreparedStackOverrideAwResource, unknown > = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), }); -export function syncAcquireResponseDeploymentCurrentReleaseOverrideAzureGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseOverrideAzureGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseDeploymentCurrentReleaseOverrideAzureGrant$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseOverrideAzureGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseOverrideAzure$inboundSchema: - z.ZodType = - z.object({ - binding: z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseOverrideAzureBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseOverrideAzureGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncAcquireResponseDeploymentCurrentReleaseOverrideAzureFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackOverrideAwResourceFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseOverrideAzure, + SyncAcquireResponseDeploymentPendingPreparedStackOverrideAwResource, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseOverrideAzure$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackOverrideAwResource$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseOverrideAzure' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackOverrideAwResource' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseOverrideConditionResource$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackOverrideAwStack$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseOverrideConditionResource, + SyncAcquireResponseDeploymentPendingPreparedStackOverrideAwStack, unknown > = z.object({ - expression: z.string(), - title: z.string(), + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), }); -export function syncAcquireResponseDeploymentCurrentReleaseOverrideConditionResourceFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackOverrideAwStackFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseOverrideConditionResource, + SyncAcquireResponseDeploymentPendingPreparedStackOverrideAwStack, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseOverrideConditionResource$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackOverrideAwStack$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseOverrideConditionResource' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackOverrideAwStack' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseOverrideResourceConditionUnion$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackOverrideAwBinding$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseOverrideResourceConditionUnion, + SyncAcquireResponseDeploymentPendingPreparedStackOverrideAwBinding, unknown - > = z.union([ - z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseOverrideConditionResource$inboundSchema - ), - z.any(), - ]); + > = z.object({ + resource: z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackOverrideAwResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackOverrideAwStack$inboundSchema + ).optional(), + }); -export function syncAcquireResponseDeploymentCurrentReleaseOverrideResourceConditionUnionFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackOverrideAwBindingFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseOverrideResourceConditionUnion, + SyncAcquireResponseDeploymentPendingPreparedStackOverrideAwBinding, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseOverrideResourceConditionUnion$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackOverrideAwBinding$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseOverrideResourceConditionUnion' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackOverrideAwBinding' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseOverrideGcpResource$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackOverrideEffect$inboundSchema: + z.ZodEnum< + typeof SyncAcquireResponseDeploymentPendingPreparedStackOverrideEffect + > = z.enum(SyncAcquireResponseDeploymentPendingPreparedStackOverrideEffect); + +/** @internal */ +export const SyncAcquireResponseDeploymentPendingPreparedStackOverrideAwGrant$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseOverrideGcpResource, + SyncAcquireResponseDeploymentPendingPreparedStackOverrideAwGrant, unknown > = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseOverrideConditionResource$inboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function syncAcquireResponseDeploymentCurrentReleaseOverrideGcpResourceFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackOverrideAwGrantFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseOverrideGcpResource, + SyncAcquireResponseDeploymentPendingPreparedStackOverrideAwGrant, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseOverrideGcpResource$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackOverrideAwGrant$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseOverrideGcpResource' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackOverrideAwGrant' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseOverrideCondition$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackOverrideAw$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseOverrideCondition, + SyncAcquireResponseDeploymentPendingPreparedStackOverrideAw, unknown > = z.object({ - expression: z.string(), - title: z.string(), + binding: z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackOverrideAwBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: + SyncAcquireResponseDeploymentPendingPreparedStackOverrideEffect$inboundSchema + .optional(), + grant: z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackOverrideAwGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), }); -export function syncAcquireResponseDeploymentCurrentReleaseOverrideConditionFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackOverrideAwFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseOverrideCondition, + SyncAcquireResponseDeploymentPendingPreparedStackOverrideAw, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseOverrideCondition$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackOverrideAw$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseOverrideCondition' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackOverrideAw' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseOverrideConditionUnion$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzureResource$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseOverrideConditionUnion, + SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzureResource, unknown - > = z.union([ - z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseOverrideCondition$inboundSchema - ), - z.any(), - ]); + > = z.object({ + scope: z.string(), + }); -export function syncAcquireResponseDeploymentCurrentReleaseOverrideConditionUnionFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackOverrideAzureResourceFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseOverrideConditionUnion, + SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzureResource, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseOverrideConditionUnion$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzureResource$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseOverrideConditionUnion' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzureResource' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseOverrideGcpStack$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzureStack$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseOverrideGcpStack, + SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzureStack, unknown > = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseOverrideCondition$inboundSchema - ), - z.any(), - ]), - ).optional(), scope: z.string(), }); -export function syncAcquireResponseDeploymentCurrentReleaseOverrideGcpStackFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackOverrideAzureStackFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseOverrideGcpStack, + SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzureStack, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseOverrideGcpStack$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzureStack$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseOverrideGcpStack' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzureStack' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseOverrideGcpBinding$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzureBinding$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseOverrideGcpBinding, + SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzureBinding, unknown > = z.object({ resource: z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseOverrideGcpResource$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzureResource$inboundSchema ).optional(), stack: z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseOverrideGcpStack$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzureStack$inboundSchema ).optional(), }); -export function syncAcquireResponseDeploymentCurrentReleaseOverrideGcpBindingFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackOverrideAzureBindingFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseOverrideGcpBinding, + SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzureBinding, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseOverrideGcpBinding$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzureBinding$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseOverrideGcpBinding' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzureBinding' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseOverrideGcpGrant$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzureGrant$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseOverrideGcpGrant, + SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzureGrant, unknown > = z.object({ actions: z.nullable(z.array(z.string())).optional(), @@ -11291,650 +15811,665 @@ export const SyncAcquireResponseDeploymentCurrentReleaseOverrideGcpGrant$inbound residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function syncAcquireResponseDeploymentCurrentReleaseOverrideGcpGrantFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackOverrideAzureGrantFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseOverrideGcpGrant, + SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzureGrant, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseOverrideGcpGrant$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzureGrant$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseOverrideGcpGrant' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzureGrant' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseOverrideGcp$inboundSchema: - z.ZodType = z - .object({ - binding: z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseOverrideGcpBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseOverrideGcpGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); +export const SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzure$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzure, + unknown + > = z.object({ + binding: z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzureBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzureGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); -export function syncAcquireResponseDeploymentCurrentReleaseOverrideGcpFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackOverrideAzureFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseOverrideGcp, + SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzure, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseOverrideGcp$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzure$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseOverrideGcp' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzure' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseOverridePlatforms$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackOverrideConditionResource$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseOverridePlatforms, + SyncAcquireResponseDeploymentPendingPreparedStackOverrideConditionResource, unknown > = z.object({ - aws: z.nullable( - z.array(z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseOverrideAw$inboundSchema - )), - ).optional(), - azure: z.nullable( - z.array(z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseOverrideAzure$inboundSchema - )), - ).optional(), - gcp: z.nullable( - z.array(z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseOverrideGcp$inboundSchema - )), - ).optional(), + expression: z.string(), + title: z.string(), }); -export function syncAcquireResponseDeploymentCurrentReleaseOverridePlatformsFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackOverrideConditionResourceFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseOverridePlatforms, + SyncAcquireResponseDeploymentPendingPreparedStackOverrideConditionResource, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseOverridePlatforms$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackOverrideConditionResource$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseOverridePlatforms' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackOverrideConditionResource' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseOverride$inboundSchema: - z.ZodType = z - .object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseOverridePlatforms$inboundSchema - ), - }); +export const SyncAcquireResponseDeploymentPendingPreparedStackOverrideResourceConditionUnion$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentPendingPreparedStackOverrideResourceConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackOverrideConditionResource$inboundSchema + ), + z.any(), + ]); -export function syncAcquireResponseDeploymentCurrentReleaseOverrideFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackOverrideResourceConditionUnionFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseOverride, + SyncAcquireResponseDeploymentPendingPreparedStackOverrideResourceConditionUnion, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseOverride$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseOverride' from JSON`, + SyncAcquireResponseDeploymentPendingPreparedStackOverrideResourceConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackOverrideResourceConditionUnion' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseOverrideUnion$inboundSchema: - z.ZodType = - z.union([ - z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseOverride$inboundSchema - ), - z.string(), - ]); +export const SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcpResource$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcpResource, + unknown + > = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackOverrideConditionResource$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); -export function syncAcquireResponseDeploymentCurrentReleaseOverrideUnionFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackOverrideGcpResourceFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseOverrideUnion, + SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcpResource, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseOverrideUnion$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcpResource$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseOverrideUnion' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcpResource' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseManagement2$inboundSchema: - z.ZodType = z - .object({ - override: z.record( - z.string(), - z.array(z.union([ - z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseOverride$inboundSchema - ), - z.string(), - ])), - ), - }); +export const SyncAcquireResponseDeploymentPendingPreparedStackOverrideConditionStack$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentPendingPreparedStackOverrideConditionStack, + unknown + > = z.object({ + expression: z.string(), + title: z.string(), + }); -export function syncAcquireResponseDeploymentCurrentReleaseManagement2FromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackOverrideConditionStackFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseManagement2, + SyncAcquireResponseDeploymentPendingPreparedStackOverrideConditionStack, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseManagement2$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackOverrideConditionStack$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseManagement2' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackOverrideConditionStack' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseExtendAwResource$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackOverrideStackConditionUnion$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseExtendAwResource, + SyncAcquireResponseDeploymentPendingPreparedStackOverrideStackConditionUnion, unknown - > = z.object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); + > = z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackOverrideConditionStack$inboundSchema + ), + z.any(), + ]); -export function syncAcquireResponseDeploymentCurrentReleaseExtendAwResourceFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackOverrideStackConditionUnionFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseExtendAwResource, + SyncAcquireResponseDeploymentPendingPreparedStackOverrideStackConditionUnion, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseExtendAwResource$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackOverrideStackConditionUnion$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseExtendAwResource' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackOverrideStackConditionUnion' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseExtendAwStack$inboundSchema: - z.ZodType = - z.object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); +export const SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcpStack$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcpStack, + unknown + > = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackOverrideConditionStack$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); -export function syncAcquireResponseDeploymentCurrentReleaseExtendAwStackFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackOverrideGcpStackFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseExtendAwStack, + SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcpStack, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseExtendAwStack$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcpStack$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseExtendAwStack' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcpStack' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseExtendAwBinding$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcpBinding$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseExtendAwBinding, + SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcpBinding, unknown > = z.object({ resource: z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseExtendAwResource$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcpResource$inboundSchema ).optional(), stack: z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseExtendAwStack$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcpStack$inboundSchema ).optional(), }); -export function syncAcquireResponseDeploymentCurrentReleaseExtendAwBindingFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackOverrideGcpBindingFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseExtendAwBinding, + SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcpBinding, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseExtendAwBinding$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseExtendAwBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseExtendEffect$inboundSchema: - z.ZodEnum = z - .enum(SyncAcquireResponseDeploymentCurrentReleaseExtendEffect); - -/** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseExtendAwGrant$inboundSchema: - z.ZodType = - z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); + SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcpBinding$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcpBinding' from JSON`, + ); +} -export function syncAcquireResponseDeploymentCurrentReleaseExtendAwGrantFromJSON( +/** @internal */ +export const SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcpGrant$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcpGrant, + unknown + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncAcquireResponseDeploymentPendingPreparedStackOverrideGcpGrantFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseExtendAwGrant, + SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcpGrant, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseExtendAwGrant$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcpGrant$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseExtendAwGrant' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcpGrant' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseExtendAw$inboundSchema: - z.ZodType = z - .object({ - binding: z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseExtendAwBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - effect: - SyncAcquireResponseDeploymentCurrentReleaseExtendEffect$inboundSchema - .optional(), - grant: z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseExtendAwGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); +export const SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcp$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcp, + unknown + > = z.object({ + binding: z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcpBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcpGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); -export function syncAcquireResponseDeploymentCurrentReleaseExtendAwFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackOverrideGcpFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseExtendAw, + SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcp, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseExtendAw$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseExtendAw' from JSON`, + SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcp$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcp' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseExtendAzureResource$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackOverridePlatforms$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseExtendAzureResource, + SyncAcquireResponseDeploymentPendingPreparedStackOverridePlatforms, unknown > = z.object({ - scope: z.string(), + aws: z.nullable( + z.array(z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackOverrideAw$inboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackOverrideAzure$inboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackOverrideGcp$inboundSchema + )), + ).optional(), }); -export function syncAcquireResponseDeploymentCurrentReleaseExtendAzureResourceFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackOverridePlatformsFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseExtendAzureResource, + SyncAcquireResponseDeploymentPendingPreparedStackOverridePlatforms, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseExtendAzureResource$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackOverridePlatforms$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseExtendAzureResource' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackOverridePlatforms' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseExtendAzureStack$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackOverride$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseExtendAzureStack, + SyncAcquireResponseDeploymentPendingPreparedStackOverride, unknown > = z.object({ - scope: z.string(), + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackOverridePlatforms$inboundSchema + ), }); -export function syncAcquireResponseDeploymentCurrentReleaseExtendAzureStackFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackOverrideFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseExtendAzureStack, + SyncAcquireResponseDeploymentPendingPreparedStackOverride, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseExtendAzureStack$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackOverride$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseExtendAzureStack' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackOverride' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseExtendAzureBinding$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackOverrideUnion$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseExtendAzureBinding, + SyncAcquireResponseDeploymentPendingPreparedStackOverrideUnion, unknown - > = z.object({ - resource: z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseExtendAzureResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseExtendAzureStack$inboundSchema - ).optional(), - }); + > = z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackOverride$inboundSchema + ), + z.string(), + ]); -export function syncAcquireResponseDeploymentCurrentReleaseExtendAzureBindingFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackOverrideUnionFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseExtendAzureBinding, + SyncAcquireResponseDeploymentPendingPreparedStackOverrideUnion, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseExtendAzureBinding$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackOverrideUnion$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseExtendAzureBinding' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackOverrideUnion' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseExtendAzureGrant$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackManagement2$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseExtendAzureGrant, + SyncAcquireResponseDeploymentPendingPreparedStackManagement2, unknown > = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), + override: z.record( + z.string(), + z.array(z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackOverride$inboundSchema + ), + z.string(), + ])), + ), }); -export function syncAcquireResponseDeploymentCurrentReleaseExtendAzureGrantFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackManagement2FromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseExtendAzureGrant, + SyncAcquireResponseDeploymentPendingPreparedStackManagement2, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseExtendAzureGrant$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackManagement2$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseExtendAzureGrant' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackManagement2' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseExtendAzure$inboundSchema: - z.ZodType = z - .object({ - binding: z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseExtendAzureBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseExtendAzureGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); +export const SyncAcquireResponseDeploymentPendingPreparedStackExtendAwResource$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentPendingPreparedStackExtendAwResource, + unknown + > = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); -export function syncAcquireResponseDeploymentCurrentReleaseExtendAzureFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackExtendAwResourceFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseExtendAzure, + SyncAcquireResponseDeploymentPendingPreparedStackExtendAwResource, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseExtendAzure$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackExtendAwResource$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseExtendAzure' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackExtendAwResource' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseExtendConditionResource$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackExtendAwStack$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseExtendConditionResource, + SyncAcquireResponseDeploymentPendingPreparedStackExtendAwStack, unknown > = z.object({ - expression: z.string(), - title: z.string(), + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), }); -export function syncAcquireResponseDeploymentCurrentReleaseExtendConditionResourceFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackExtendAwStackFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseExtendConditionResource, + SyncAcquireResponseDeploymentPendingPreparedStackExtendAwStack, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseExtendConditionResource$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackExtendAwStack$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseExtendConditionResource' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackExtendAwStack' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseExtendResourceConditionUnion$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackExtendAwBinding$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseExtendResourceConditionUnion, + SyncAcquireResponseDeploymentPendingPreparedStackExtendAwBinding, unknown - > = z.union([ - z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseExtendConditionResource$inboundSchema - ), - z.any(), - ]); + > = z.object({ + resource: z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackExtendAwResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackExtendAwStack$inboundSchema + ).optional(), + }); -export function syncAcquireResponseDeploymentCurrentReleaseExtendResourceConditionUnionFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackExtendAwBindingFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseExtendResourceConditionUnion, + SyncAcquireResponseDeploymentPendingPreparedStackExtendAwBinding, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseExtendResourceConditionUnion$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackExtendAwBinding$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseExtendResourceConditionUnion' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackExtendAwBinding' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseExtendGcpResource$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackExtendEffect$inboundSchema: + z.ZodEnum< + typeof SyncAcquireResponseDeploymentPendingPreparedStackExtendEffect + > = z.enum(SyncAcquireResponseDeploymentPendingPreparedStackExtendEffect); + +/** @internal */ +export const SyncAcquireResponseDeploymentPendingPreparedStackExtendAwGrant$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseExtendGcpResource, + SyncAcquireResponseDeploymentPendingPreparedStackExtendAwGrant, unknown > = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseExtendConditionResource$inboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function syncAcquireResponseDeploymentCurrentReleaseExtendGcpResourceFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackExtendAwGrantFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseExtendGcpResource, + SyncAcquireResponseDeploymentPendingPreparedStackExtendAwGrant, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseExtendGcpResource$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackExtendAwGrant$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseExtendGcpResource' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackExtendAwGrant' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseExtendCondition$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackExtendAw$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseExtendCondition, + SyncAcquireResponseDeploymentPendingPreparedStackExtendAw, unknown > = z.object({ - expression: z.string(), - title: z.string(), + binding: z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackExtendAwBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: + SyncAcquireResponseDeploymentPendingPreparedStackExtendEffect$inboundSchema + .optional(), + grant: z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackExtendAwGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), }); -export function syncAcquireResponseDeploymentCurrentReleaseExtendConditionFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackExtendAwFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseExtendCondition, + SyncAcquireResponseDeploymentPendingPreparedStackExtendAw, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseExtendCondition$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackExtendAw$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseExtendCondition' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackExtendAw' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseExtendConditionUnion$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackExtendAzureResource$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseExtendConditionUnion, + SyncAcquireResponseDeploymentPendingPreparedStackExtendAzureResource, unknown - > = z.union([ - z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseExtendCondition$inboundSchema - ), - z.any(), - ]); + > = z.object({ + scope: z.string(), + }); -export function syncAcquireResponseDeploymentCurrentReleaseExtendConditionUnionFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackExtendAzureResourceFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseExtendConditionUnion, + SyncAcquireResponseDeploymentPendingPreparedStackExtendAzureResource, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseExtendConditionUnion$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackExtendAzureResource$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseExtendConditionUnion' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackExtendAzureResource' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseExtendGcpStack$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackExtendAzureStack$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseExtendGcpStack, + SyncAcquireResponseDeploymentPendingPreparedStackExtendAzureStack, unknown > = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseExtendCondition$inboundSchema - ), - z.any(), - ]), - ).optional(), scope: z.string(), }); -export function syncAcquireResponseDeploymentCurrentReleaseExtendGcpStackFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackExtendAzureStackFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseExtendGcpStack, + SyncAcquireResponseDeploymentPendingPreparedStackExtendAzureStack, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseExtendGcpStack$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackExtendAzureStack$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseExtendGcpStack' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackExtendAzureStack' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseExtendGcpBinding$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackExtendAzureBinding$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseExtendGcpBinding, + SyncAcquireResponseDeploymentPendingPreparedStackExtendAzureBinding, unknown > = z.object({ resource: z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseExtendGcpResource$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackExtendAzureResource$inboundSchema ).optional(), stack: z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseExtendGcpStack$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackExtendAzureStack$inboundSchema ).optional(), }); -export function syncAcquireResponseDeploymentCurrentReleaseExtendGcpBindingFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackExtendAzureBindingFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseExtendGcpBinding, + SyncAcquireResponseDeploymentPendingPreparedStackExtendAzureBinding, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseExtendGcpBinding$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackExtendAzureBinding$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseExtendGcpBinding' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackExtendAzureBinding' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseExtendGcpGrant$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackExtendAzureGrant$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseExtendGcpGrant, + SyncAcquireResponseDeploymentPendingPreparedStackExtendAzureGrant, unknown > = z.object({ actions: z.nullable(z.array(z.string())).optional(), @@ -11944,1313 +16479,1308 @@ export const SyncAcquireResponseDeploymentCurrentReleaseExtendGcpGrant$inboundSc residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function syncAcquireResponseDeploymentCurrentReleaseExtendGcpGrantFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackExtendAzureGrantFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseExtendGcpGrant, + SyncAcquireResponseDeploymentPendingPreparedStackExtendAzureGrant, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseExtendGcpGrant$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackExtendAzureGrant$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseExtendGcpGrant' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackExtendAzureGrant' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseExtendGcp$inboundSchema: - z.ZodType = z - .object({ - binding: z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseExtendGcpBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseExtendGcpGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); +export const SyncAcquireResponseDeploymentPendingPreparedStackExtendAzure$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentPendingPreparedStackExtendAzure, + unknown + > = z.object({ + binding: z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackExtendAzureBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackExtendAzureGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); -export function syncAcquireResponseDeploymentCurrentReleaseExtendGcpFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackExtendAzureFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseExtendGcp, + SyncAcquireResponseDeploymentPendingPreparedStackExtendAzure, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseExtendGcp$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseExtendGcp' from JSON`, + SyncAcquireResponseDeploymentPendingPreparedStackExtendAzure$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackExtendAzure' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseExtendPlatforms$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackExtendConditionResource$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseExtendPlatforms, + SyncAcquireResponseDeploymentPendingPreparedStackExtendConditionResource, unknown > = z.object({ - aws: z.nullable( - z.array(z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseExtendAw$inboundSchema - )), - ).optional(), - azure: z.nullable( - z.array(z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseExtendAzure$inboundSchema - )), - ).optional(), - gcp: z.nullable( - z.array(z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseExtendGcp$inboundSchema - )), - ).optional(), + expression: z.string(), + title: z.string(), }); -export function syncAcquireResponseDeploymentCurrentReleaseExtendPlatformsFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackExtendConditionResourceFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseExtendPlatforms, + SyncAcquireResponseDeploymentPendingPreparedStackExtendConditionResource, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseExtendPlatforms$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackExtendConditionResource$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseExtendPlatforms' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackExtendConditionResource' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseExtend$inboundSchema: - z.ZodType = z - .object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseExtendPlatforms$inboundSchema - ), - }); +export const SyncAcquireResponseDeploymentPendingPreparedStackExtendResourceConditionUnion$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentPendingPreparedStackExtendResourceConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackExtendConditionResource$inboundSchema + ), + z.any(), + ]); -export function syncAcquireResponseDeploymentCurrentReleaseExtendFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackExtendResourceConditionUnionFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseExtend, + SyncAcquireResponseDeploymentPendingPreparedStackExtendResourceConditionUnion, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseExtend$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseExtend' from JSON`, + SyncAcquireResponseDeploymentPendingPreparedStackExtendResourceConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackExtendResourceConditionUnion' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseExtendUnion$inboundSchema: - z.ZodType = z - .union([ - z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseExtend$inboundSchema - ), - z.string(), - ]); +export const SyncAcquireResponseDeploymentPendingPreparedStackExtendGcpResource$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentPendingPreparedStackExtendGcpResource, + unknown + > = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackExtendConditionResource$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); -export function syncAcquireResponseDeploymentCurrentReleaseExtendUnionFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackExtendGcpResourceFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseExtendUnion, + SyncAcquireResponseDeploymentPendingPreparedStackExtendGcpResource, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseExtendUnion$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackExtendGcpResource$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseExtendUnion' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackExtendGcpResource' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseManagement1$inboundSchema: - z.ZodType = z - .object({ - extend: z.record( - z.string(), - z.array(z.union([ - z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseExtend$inboundSchema - ), - z.string(), - ])), - ), - }); +export const SyncAcquireResponseDeploymentPendingPreparedStackExtendConditionStack$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentPendingPreparedStackExtendConditionStack, + unknown + > = z.object({ + expression: z.string(), + title: z.string(), + }); -export function syncAcquireResponseDeploymentCurrentReleaseManagement1FromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackExtendConditionStackFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseManagement1, + SyncAcquireResponseDeploymentPendingPreparedStackExtendConditionStack, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseManagement1$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackExtendConditionStack$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseManagement1' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackExtendConditionStack' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseManagementUnion$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackExtendStackConditionUnion$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseManagementUnion, + SyncAcquireResponseDeploymentPendingPreparedStackExtendStackConditionUnion, unknown > = z.union([ z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseManagement1$inboundSchema - ), - z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseManagement2$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackExtendConditionStack$inboundSchema ), - SyncAcquireResponseDeploymentCurrentReleaseManagementEnum$inboundSchema, + z.any(), ]); -export function syncAcquireResponseDeploymentCurrentReleaseManagementUnionFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackExtendStackConditionUnionFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseManagementUnion, + SyncAcquireResponseDeploymentPendingPreparedStackExtendStackConditionUnion, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseManagementUnion$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackExtendStackConditionUnion$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseManagementUnion' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackExtendStackConditionUnion' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseProfileAwResource$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackExtendGcpStack$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseProfileAwResource, + SyncAcquireResponseDeploymentPendingPreparedStackExtendGcpStack, unknown > = z.object({ condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), + z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackExtendConditionStack$inboundSchema + ), + z.any(), + ]), ).optional(), - resources: z.array(z.string()), + scope: z.string(), }); -export function syncAcquireResponseDeploymentCurrentReleaseProfileAwResourceFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackExtendGcpStackFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseProfileAwResource, + SyncAcquireResponseDeploymentPendingPreparedStackExtendGcpStack, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseProfileAwResource$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackExtendGcpStack$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseProfileAwResource' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackExtendGcpStack' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseProfileAwStack$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackExtendGcpBinding$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseProfileAwStack, + SyncAcquireResponseDeploymentPendingPreparedStackExtendGcpBinding, unknown > = z.object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), + resource: z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackExtendGcpResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackExtendGcpStack$inboundSchema ).optional(), - resources: z.array(z.string()), }); -export function syncAcquireResponseDeploymentCurrentReleaseProfileAwStackFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackExtendGcpBindingFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseProfileAwStack, + SyncAcquireResponseDeploymentPendingPreparedStackExtendGcpBinding, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseProfileAwStack$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackExtendGcpBinding$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseProfileAwStack' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackExtendGcpBinding' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseProfileAwBinding$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackExtendGcpGrant$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseProfileAwBinding, + SyncAcquireResponseDeploymentPendingPreparedStackExtendGcpGrant, unknown > = z.object({ - resource: z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseProfileAwResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseProfileAwStack$inboundSchema - ).optional(), + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function syncAcquireResponseDeploymentCurrentReleaseProfileAwBindingFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackExtendGcpGrantFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseProfileAwBinding, + SyncAcquireResponseDeploymentPendingPreparedStackExtendGcpGrant, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseProfileAwBinding$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackExtendGcpGrant$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseProfileAwBinding' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackExtendGcpGrant' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseProfileEffect$inboundSchema: - z.ZodEnum = z - .enum(SyncAcquireResponseDeploymentCurrentReleaseProfileEffect); +export const SyncAcquireResponseDeploymentPendingPreparedStackExtendGcp$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentPendingPreparedStackExtendGcp, + unknown + > = z.object({ + binding: z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackExtendGcpBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackExtendGcpGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncAcquireResponseDeploymentPendingPreparedStackExtendGcpFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentPendingPreparedStackExtendGcp, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentPendingPreparedStackExtendGcp$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackExtendGcp' from JSON`, + ); +} /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseProfileAwGrant$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackExtendPlatforms$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseProfileAwGrant, + SyncAcquireResponseDeploymentPendingPreparedStackExtendPlatforms, unknown > = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), + aws: z.nullable( + z.array(z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackExtendAw$inboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackExtendAzure$inboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackExtendGcp$inboundSchema + )), + ).optional(), }); -export function syncAcquireResponseDeploymentCurrentReleaseProfileAwGrantFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackExtendPlatformsFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseProfileAwGrant, + SyncAcquireResponseDeploymentPendingPreparedStackExtendPlatforms, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseProfileAwGrant$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackExtendPlatforms$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseProfileAwGrant' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackExtendPlatforms' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseProfileAw$inboundSchema: - z.ZodType = z - .object({ - binding: z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseProfileAwBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - effect: - SyncAcquireResponseDeploymentCurrentReleaseProfileEffect$inboundSchema - .optional(), - grant: z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseProfileAwGrant$inboundSchema +export const SyncAcquireResponseDeploymentPendingPreparedStackExtend$inboundSchema: + z.ZodType = + z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackExtendPlatforms$inboundSchema ), - label: z.nullable(z.string()).optional(), }); -export function syncAcquireResponseDeploymentCurrentReleaseProfileAwFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackExtendFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseProfileAw, + SyncAcquireResponseDeploymentPendingPreparedStackExtend, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseProfileAw$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseProfileAw' from JSON`, + SyncAcquireResponseDeploymentPendingPreparedStackExtend$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackExtend' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseProfileAzureResource$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackExtendUnion$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseProfileAzureResource, + SyncAcquireResponseDeploymentPendingPreparedStackExtendUnion, + unknown + > = z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackExtend$inboundSchema + ), + z.string(), + ]); + +export function syncAcquireResponseDeploymentPendingPreparedStackExtendUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentPendingPreparedStackExtendUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentPendingPreparedStackExtendUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackExtendUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentPendingPreparedStackManagement1$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentPendingPreparedStackManagement1, unknown > = z.object({ - scope: z.string(), + extend: z.record( + z.string(), + z.array(z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackExtend$inboundSchema + ), + z.string(), + ])), + ), }); -export function syncAcquireResponseDeploymentCurrentReleaseProfileAzureResourceFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackManagement1FromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseProfileAzureResource, + SyncAcquireResponseDeploymentPendingPreparedStackManagement1, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseProfileAzureResource$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackManagement1$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseProfileAzureResource' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackManagement1' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseProfileAzureStack$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackManagementUnion$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseProfileAzureStack, + SyncAcquireResponseDeploymentPendingPreparedStackManagementUnion, unknown - > = z.object({ - scope: z.string(), - }); + > = z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackManagement1$inboundSchema + ), + z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackManagement2$inboundSchema + ), + SyncAcquireResponseDeploymentPendingPreparedStackManagementEnum$inboundSchema, + ]); -export function syncAcquireResponseDeploymentCurrentReleaseProfileAzureStackFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackManagementUnionFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseProfileAzureStack, + SyncAcquireResponseDeploymentPendingPreparedStackManagementUnion, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseProfileAzureStack$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackManagementUnion$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseProfileAzureStack' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackManagementUnion' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseProfileAzureBinding$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackProfileAwResource$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseProfileAzureBinding, + SyncAcquireResponseDeploymentPendingPreparedStackProfileAwResource, unknown > = z.object({ - resource: z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseProfileAzureResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseProfileAzureStack$inboundSchema + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), ).optional(), + resources: z.array(z.string()), }); -export function syncAcquireResponseDeploymentCurrentReleaseProfileAzureBindingFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackProfileAwResourceFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseProfileAzureBinding, + SyncAcquireResponseDeploymentPendingPreparedStackProfileAwResource, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseProfileAzureBinding$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackProfileAwResource$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseProfileAzureBinding' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackProfileAwResource' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseProfileAzureGrant$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackProfileAwStack$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseProfileAzureGrant, + SyncAcquireResponseDeploymentPendingPreparedStackProfileAwStack, unknown > = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), }); -export function syncAcquireResponseDeploymentCurrentReleaseProfileAzureGrantFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackProfileAwStackFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseProfileAzureGrant, + SyncAcquireResponseDeploymentPendingPreparedStackProfileAwStack, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseProfileAzureGrant$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackProfileAwStack$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseProfileAzureGrant' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackProfileAwStack' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseProfileAzure$inboundSchema: - z.ZodType = - z.object({ - binding: z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseProfileAzureBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseProfileAzureGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); +export const SyncAcquireResponseDeploymentPendingPreparedStackProfileAwBinding$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentPendingPreparedStackProfileAwBinding, + unknown + > = z.object({ + resource: z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackProfileAwResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackProfileAwStack$inboundSchema + ).optional(), + }); -export function syncAcquireResponseDeploymentCurrentReleaseProfileAzureFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackProfileAwBindingFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseProfileAzure, + SyncAcquireResponseDeploymentPendingPreparedStackProfileAwBinding, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseProfileAzure$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackProfileAwBinding$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseProfileAzure' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackProfileAwBinding' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseProfileConditionResource$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackProfileEffect$inboundSchema: + z.ZodEnum< + typeof SyncAcquireResponseDeploymentPendingPreparedStackProfileEffect + > = z.enum(SyncAcquireResponseDeploymentPendingPreparedStackProfileEffect); + +/** @internal */ +export const SyncAcquireResponseDeploymentPendingPreparedStackProfileAwGrant$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseProfileConditionResource, + SyncAcquireResponseDeploymentPendingPreparedStackProfileAwGrant, unknown > = z.object({ - expression: z.string(), - title: z.string(), + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function syncAcquireResponseDeploymentCurrentReleaseProfileConditionResourceFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackProfileAwGrantFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseProfileConditionResource, + SyncAcquireResponseDeploymentPendingPreparedStackProfileAwGrant, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseProfileConditionResource$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackProfileAwGrant$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseProfileConditionResource' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackProfileAwGrant' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseProfileResourceConditionUnion$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackProfileAw$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseProfileResourceConditionUnion, + SyncAcquireResponseDeploymentPendingPreparedStackProfileAw, unknown - > = z.union([ - z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseProfileConditionResource$inboundSchema + > = z.object({ + binding: z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackProfileAwBinding$inboundSchema ), - z.any(), - ]); + description: z.nullable(z.string()).optional(), + effect: + SyncAcquireResponseDeploymentPendingPreparedStackProfileEffect$inboundSchema + .optional(), + grant: z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackProfileAwGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); -export function syncAcquireResponseDeploymentCurrentReleaseProfileResourceConditionUnionFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackProfileAwFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseProfileResourceConditionUnion, + SyncAcquireResponseDeploymentPendingPreparedStackProfileAw, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseProfileResourceConditionUnion$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackProfileAw$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseProfileResourceConditionUnion' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackProfileAw' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseProfileGcpResource$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackProfileAzureResource$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseProfileGcpResource, + SyncAcquireResponseDeploymentPendingPreparedStackProfileAzureResource, unknown > = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseProfileConditionResource$inboundSchema - ), - z.any(), - ]), - ).optional(), scope: z.string(), }); -export function syncAcquireResponseDeploymentCurrentReleaseProfileGcpResourceFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackProfileAzureResourceFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseProfileGcpResource, + SyncAcquireResponseDeploymentPendingPreparedStackProfileAzureResource, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseProfileGcpResource$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackProfileAzureResource$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseProfileGcpResource' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackProfileAzureResource' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseProfileCondition$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackProfileAzureStack$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseProfileCondition, + SyncAcquireResponseDeploymentPendingPreparedStackProfileAzureStack, unknown > = z.object({ - expression: z.string(), - title: z.string(), + scope: z.string(), }); -export function syncAcquireResponseDeploymentCurrentReleaseProfileConditionFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackProfileAzureStackFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseProfileCondition, + SyncAcquireResponseDeploymentPendingPreparedStackProfileAzureStack, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseProfileCondition$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackProfileAzureStack$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseProfileCondition' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackProfileAzureStack' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseProfileConditionUnion$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackProfileAzureBinding$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseProfileConditionUnion, + SyncAcquireResponseDeploymentPendingPreparedStackProfileAzureBinding, unknown - > = z.union([ - z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseProfileCondition$inboundSchema - ), - z.any(), - ]); + > = z.object({ + resource: z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackProfileAzureResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackProfileAzureStack$inboundSchema + ).optional(), + }); -export function syncAcquireResponseDeploymentCurrentReleaseProfileConditionUnionFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackProfileAzureBindingFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseProfileConditionUnion, + SyncAcquireResponseDeploymentPendingPreparedStackProfileAzureBinding, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseProfileConditionUnion$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackProfileAzureBinding$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseProfileConditionUnion' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackProfileAzureBinding' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseProfileGcpStack$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackProfileAzureGrant$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseProfileGcpStack, + SyncAcquireResponseDeploymentPendingPreparedStackProfileAzureGrant, unknown > = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseProfileCondition$inboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function syncAcquireResponseDeploymentCurrentReleaseProfileGcpStackFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackProfileAzureGrantFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseProfileGcpStack, + SyncAcquireResponseDeploymentPendingPreparedStackProfileAzureGrant, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseProfileGcpStack$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackProfileAzureGrant$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseProfileGcpStack' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackProfileAzureGrant' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseProfileGcpBinding$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackProfileAzure$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseProfileGcpBinding, + SyncAcquireResponseDeploymentPendingPreparedStackProfileAzure, unknown > = z.object({ - resource: z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseProfileGcpResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseProfileGcpStack$inboundSchema - ).optional(), + binding: z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackProfileAzureBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackProfileAzureGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), }); -export function syncAcquireResponseDeploymentCurrentReleaseProfileGcpBindingFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackProfileAzureFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseProfileGcpBinding, + SyncAcquireResponseDeploymentPendingPreparedStackProfileAzure, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseProfileGcpBinding$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackProfileAzure$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseProfileGcpBinding' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackProfileAzure' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseProfileGcpGrant$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackProfileConditionResource$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseProfileGcpGrant, + SyncAcquireResponseDeploymentPendingPreparedStackProfileConditionResource, unknown > = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), + expression: z.string(), + title: z.string(), }); -export function syncAcquireResponseDeploymentCurrentReleaseProfileGcpGrantFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackProfileConditionResourceFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseProfileGcpGrant, + SyncAcquireResponseDeploymentPendingPreparedStackProfileConditionResource, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseProfileGcpGrant$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackProfileConditionResource$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseProfileGcpGrant' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackProfileConditionResource' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseProfileGcp$inboundSchema: - z.ZodType = z - .object({ - binding: z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseProfileGcpBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseProfileGcpGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); +export const SyncAcquireResponseDeploymentPendingPreparedStackProfileResourceConditionUnion$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentPendingPreparedStackProfileResourceConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackProfileConditionResource$inboundSchema + ), + z.any(), + ]); -export function syncAcquireResponseDeploymentCurrentReleaseProfileGcpFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackProfileResourceConditionUnionFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseProfileGcp, + SyncAcquireResponseDeploymentPendingPreparedStackProfileResourceConditionUnion, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseProfileGcp$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseProfileGcp' from JSON`, + SyncAcquireResponseDeploymentPendingPreparedStackProfileResourceConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackProfileResourceConditionUnion' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseProfilePlatforms$inboundSchema: +export const SyncAcquireResponseDeploymentPendingPreparedStackProfileGcpResource$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentCurrentReleaseProfilePlatforms, + SyncAcquireResponseDeploymentPendingPreparedStackProfileGcpResource, unknown > = z.object({ - aws: z.nullable( - z.array(z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseProfileAw$inboundSchema - )), - ).optional(), - azure: z.nullable( - z.array(z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseProfileAzure$inboundSchema - )), - ).optional(), - gcp: z.nullable( - z.array(z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseProfileGcp$inboundSchema - )), + condition: z.nullable( + z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackProfileConditionResource$inboundSchema + ), + z.any(), + ]), ).optional(), + scope: z.string(), }); -export function syncAcquireResponseDeploymentCurrentReleaseProfilePlatformsFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackProfileGcpResourceFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseProfilePlatforms, + SyncAcquireResponseDeploymentPendingPreparedStackProfileGcpResource, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseProfilePlatforms$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackProfileGcpResource$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseProfilePlatforms' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackProfileGcpResource' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseProfile$inboundSchema: - z.ZodType = z - .object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseProfilePlatforms$inboundSchema - ), - }); +export const SyncAcquireResponseDeploymentPendingPreparedStackProfileConditionStack$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentPendingPreparedStackProfileConditionStack, + unknown + > = z.object({ + expression: z.string(), + title: z.string(), + }); -export function syncAcquireResponseDeploymentCurrentReleaseProfileFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackProfileConditionStackFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseProfile, + SyncAcquireResponseDeploymentPendingPreparedStackProfileConditionStack, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseProfile$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseProfile' from JSON`, + SyncAcquireResponseDeploymentPendingPreparedStackProfileConditionStack$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackProfileConditionStack' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseProfileUnion$inboundSchema: - z.ZodType = - z.union([ - z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseProfile$inboundSchema - ), - z.string(), - ]); +export const SyncAcquireResponseDeploymentPendingPreparedStackProfileStackConditionUnion$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentPendingPreparedStackProfileStackConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackProfileConditionStack$inboundSchema + ), + z.any(), + ]); -export function syncAcquireResponseDeploymentCurrentReleaseProfileUnionFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackProfileStackConditionUnionFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseProfileUnion, + SyncAcquireResponseDeploymentPendingPreparedStackProfileStackConditionUnion, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseProfileUnion$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackProfileStackConditionUnion$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseProfileUnion' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackProfileStackConditionUnion' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleasePermissions$inboundSchema: - z.ZodType = z - .object({ - management: z.union([ - z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseManagement1$inboundSchema - ), +export const SyncAcquireResponseDeploymentPendingPreparedStackProfileGcpStack$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentPendingPreparedStackProfileGcpStack, + unknown + > = z.object({ + condition: z.nullable( + z.union([ z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseManagement2$inboundSchema - ), - SyncAcquireResponseDeploymentCurrentReleaseManagementEnum$inboundSchema, - ]).optional(), - profiles: z.record( - z.string(), - z.record( - z.string(), - z.array( - z.union([ - z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseProfile$inboundSchema - ), - z.string(), - ]), - ), + SyncAcquireResponseDeploymentPendingPreparedStackProfileConditionStack$inboundSchema ), - ), - }); + z.any(), + ]), + ).optional(), + scope: z.string(), + }); -export function syncAcquireResponseDeploymentCurrentReleasePermissionsFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackProfileGcpStackFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleasePermissions, + SyncAcquireResponseDeploymentPendingPreparedStackProfileGcpStack, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleasePermissions$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStackProfileGcpStack$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleasePermissions' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackProfileGcpStack' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseConfig$inboundSchema: - z.ZodType = - collectExtraKeys$( - z.object({ - id: z.string(), - type: z.string(), - }).catchall(z.any()), - "additionalProperties", - true, - ); +export const SyncAcquireResponseDeploymentPendingPreparedStackProfileGcpBinding$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentPendingPreparedStackProfileGcpBinding, + unknown + > = z.object({ + resource: z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackProfileGcpResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackProfileGcpStack$inboundSchema + ).optional(), + }); -export function syncAcquireResponseDeploymentCurrentReleaseConfigFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackProfileGcpBindingFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseConfig, + SyncAcquireResponseDeploymentPendingPreparedStackProfileGcpBinding, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseConfig$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseConfig' from JSON`, + SyncAcquireResponseDeploymentPendingPreparedStackProfileGcpBinding$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackProfileGcpBinding' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseDependency$inboundSchema: - z.ZodType = z - .object({ - id: z.string(), - type: z.string(), - }); +export const SyncAcquireResponseDeploymentPendingPreparedStackProfileGcpGrant$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentPendingPreparedStackProfileGcpGrant, + unknown + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); -export function syncAcquireResponseDeploymentCurrentReleaseDependencyFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackProfileGcpGrantFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseDependency, + SyncAcquireResponseDeploymentPendingPreparedStackProfileGcpGrant, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseDependency$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseDependency' from JSON`, + SyncAcquireResponseDeploymentPendingPreparedStackProfileGcpGrant$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackProfileGcpGrant' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseLifecycle$inboundSchema: - z.ZodEnum = z - .enum(SyncAcquireResponseDeploymentCurrentReleaseLifecycle); - -/** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseResources$inboundSchema: - z.ZodType = z - .object({ - config: z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseConfig$inboundSchema - ), - dependencies: z.array( - z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseDependency$inboundSchema - ), - ), - lifecycle: - SyncAcquireResponseDeploymentCurrentReleaseLifecycle$inboundSchema, - remoteAccess: z.boolean().optional(), - }); +export const SyncAcquireResponseDeploymentPendingPreparedStackProfileGcp$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentPendingPreparedStackProfileGcp, + unknown + > = z.object({ + binding: z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackProfileGcpBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackProfileGcpGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); -export function syncAcquireResponseDeploymentCurrentReleaseResourcesFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackProfileGcpFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseResources, + SyncAcquireResponseDeploymentPendingPreparedStackProfileGcp, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseResources$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseResources' from JSON`, + SyncAcquireResponseDeploymentPendingPreparedStackProfileGcp$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackProfileGcp' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseSupportedPlatform$inboundSchema: - z.ZodEnum< - typeof SyncAcquireResponseDeploymentCurrentReleaseSupportedPlatform - > = z.enum(SyncAcquireResponseDeploymentCurrentReleaseSupportedPlatform); - -/** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseStack$inboundSchema: - z.ZodType = z - .object({ - id: z.string(), - inputs: z.array( - z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseInput$inboundSchema - ), - ).optional(), - permissions: z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleasePermissions$inboundSchema - ).optional(), - resources: z.record( - z.string(), - z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseResources$inboundSchema - ), - ), - supportedPlatforms: z.nullable( - z.array( - SyncAcquireResponseDeploymentCurrentReleaseSupportedPlatform$inboundSchema, - ), - ).optional(), - }); +export const SyncAcquireResponseDeploymentPendingPreparedStackProfilePlatforms$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentPendingPreparedStackProfilePlatforms, + unknown + > = z.object({ + aws: z.nullable( + z.array(z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackProfileAw$inboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackProfileAzure$inboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackProfileGcp$inboundSchema + )), + ).optional(), + }); -export function syncAcquireResponseDeploymentCurrentReleaseStackFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackProfilePlatformsFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseStack, + SyncAcquireResponseDeploymentPendingPreparedStackProfilePlatforms, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseStack' from JSON`, + SyncAcquireResponseDeploymentPendingPreparedStackProfilePlatforms$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackProfilePlatforms' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentRelease$inboundSchema: - z.ZodType = z.object({ - description: z.nullable(z.string()).optional(), - releaseId: z.nullable(z.string()).optional(), - stack: z.lazy(() => - SyncAcquireResponseDeploymentCurrentReleaseStack$inboundSchema - ), - version: z.nullable(z.string()).optional(), - }); +export const SyncAcquireResponseDeploymentPendingPreparedStackProfile$inboundSchema: + z.ZodType = + z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackProfilePlatforms$inboundSchema + ), + }); -export function syncAcquireResponseDeploymentCurrentReleaseFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackProfileFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentRelease, + SyncAcquireResponseDeploymentPendingPreparedStackProfile, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentRelease$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentRelease' from JSON`, + SyncAcquireResponseDeploymentPendingPreparedStackProfile$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackProfile' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentReleaseUnion$inboundSchema: - z.ZodType = z - .union([ - z.lazy(() => SyncAcquireResponseDeploymentCurrentRelease$inboundSchema), - z.any(), - ]); +export const SyncAcquireResponseDeploymentPendingPreparedStackProfileUnion$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentPendingPreparedStackProfileUnion, + unknown + > = z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackProfile$inboundSchema + ), + z.string(), + ]); -export function syncAcquireResponseDeploymentCurrentReleaseUnionFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackProfileUnionFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentCurrentReleaseUnion, + SyncAcquireResponseDeploymentPendingPreparedStackProfileUnion, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentCurrentReleaseUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseDeploymentCurrentReleaseUnion' from JSON`, + SyncAcquireResponseDeploymentPendingPreparedStackProfileUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackProfileUnion' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentPlatformTest$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseDeploymentPlatformTest -> = z.enum(SyncAcquireResponseDeploymentPlatformTest); - -/** @internal */ -export const SyncAcquireResponseDeploymentEnvironmentInfoTest$inboundSchema: - z.ZodType = z - .object({ - testId: z.string(), - platform: SyncAcquireResponseDeploymentPlatformTest$inboundSchema, - }); +export const SyncAcquireResponseDeploymentPendingPreparedStackPermissions$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentPendingPreparedStackPermissions, + unknown + > = z.object({ + management: z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackManagement1$inboundSchema + ), + z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackManagement2$inboundSchema + ), + SyncAcquireResponseDeploymentPendingPreparedStackManagementEnum$inboundSchema, + ]).optional(), + profiles: z.record( + z.string(), + z.record( + z.string(), + z.array( + z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackProfile$inboundSchema + ), + z.string(), + ]), + ), + ), + ), + }); -export function syncAcquireResponseDeploymentEnvironmentInfoTestFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackPermissionsFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentEnvironmentInfoTest, + SyncAcquireResponseDeploymentPendingPreparedStackPermissions, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentEnvironmentInfoTest$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseDeploymentEnvironmentInfoTest' from JSON`, + SyncAcquireResponseDeploymentPendingPreparedStackPermissions$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackPermissions' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentPlatformLocal$inboundSchema: - z.ZodEnum = z.enum( - SyncAcquireResponseDeploymentPlatformLocal, - ); - -/** @internal */ -export const SyncAcquireResponseDeploymentEnvironmentInfoLocal$inboundSchema: - z.ZodType = z - .object({ - arch: z.string(), - hostname: z.string(), - os: z.string(), - platform: SyncAcquireResponseDeploymentPlatformLocal$inboundSchema, - }); +export const SyncAcquireResponseDeploymentPendingPreparedStackConfig$inboundSchema: + z.ZodType = + collectExtraKeys$( + z.object({ + id: z.string(), + type: z.string(), + }).catchall(z.any()), + "additionalProperties", + true, + ); -export function syncAcquireResponseDeploymentEnvironmentInfoLocalFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackConfigFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentEnvironmentInfoLocal, + SyncAcquireResponseDeploymentPendingPreparedStackConfig, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentEnvironmentInfoLocal$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseDeploymentEnvironmentInfoLocal' from JSON`, + SyncAcquireResponseDeploymentPendingPreparedStackConfig$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackConfig' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentPlatformAzure$inboundSchema: - z.ZodEnum = z.enum( - SyncAcquireResponseDeploymentCurrentPlatformAzure, - ); - -/** @internal */ -export const SyncAcquireResponseDeploymentEnvironmentInfoAzure$inboundSchema: - z.ZodType = z - .object({ - location: z.string(), - subscriptionId: z.string(), - tenantId: z.string(), - platform: SyncAcquireResponseDeploymentCurrentPlatformAzure$inboundSchema, - }); +export const SyncAcquireResponseDeploymentPendingPreparedStackDependency$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentPendingPreparedStackDependency, + unknown + > = z.object({ + id: z.string(), + type: z.string(), + }); -export function syncAcquireResponseDeploymentEnvironmentInfoAzureFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackDependencyFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentEnvironmentInfoAzure, + SyncAcquireResponseDeploymentPendingPreparedStackDependency, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentEnvironmentInfoAzure$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseDeploymentEnvironmentInfoAzure' from JSON`, + SyncAcquireResponseDeploymentPendingPreparedStackDependency$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackDependency' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentPlatformGcp$inboundSchema: - z.ZodEnum = z.enum( - SyncAcquireResponseDeploymentCurrentPlatformGcp, - ); +export const SyncAcquireResponseDeploymentPendingPreparedStackLifecycle$inboundSchema: + z.ZodEnum = + z.enum(SyncAcquireResponseDeploymentPendingPreparedStackLifecycle); /** @internal */ -export const SyncAcquireResponseDeploymentEnvironmentInfoGcp$inboundSchema: - z.ZodType = z - .object({ - projectId: z.string(), - projectNumber: z.string(), - region: z.string(), - platform: SyncAcquireResponseDeploymentCurrentPlatformGcp$inboundSchema, - }); +export const SyncAcquireResponseDeploymentPendingPreparedStackResources$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentPendingPreparedStackResources, + unknown + > = z.object({ + config: z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackConfig$inboundSchema + ), + dependencies: z.array( + z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackDependency$inboundSchema + ), + ), + enabledWhen: z.nullable(z.string()).optional(), + lifecycle: + SyncAcquireResponseDeploymentPendingPreparedStackLifecycle$inboundSchema, + remoteAccess: z.boolean().optional(), + }); -export function syncAcquireResponseDeploymentEnvironmentInfoGcpFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackResourcesFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentEnvironmentInfoGcp, + SyncAcquireResponseDeploymentPendingPreparedStackResources, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentEnvironmentInfoGcp$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseDeploymentEnvironmentInfoGcp' from JSON`, + SyncAcquireResponseDeploymentPendingPreparedStackResources$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackResources' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentCurrentPlatformAws$inboundSchema: - z.ZodEnum = z.enum( - SyncAcquireResponseDeploymentCurrentPlatformAws, +export const SyncAcquireResponseDeploymentPendingPreparedStackSupportedPlatform$inboundSchema: + z.ZodEnum< + typeof SyncAcquireResponseDeploymentPendingPreparedStackSupportedPlatform + > = z.enum( + SyncAcquireResponseDeploymentPendingPreparedStackSupportedPlatform, ); /** @internal */ -export const SyncAcquireResponseDeploymentEnvironmentInfoAws$inboundSchema: - z.ZodType = z +export const SyncAcquireResponseDeploymentPendingPreparedStack$inboundSchema: + z.ZodType = z .object({ - accountId: z.string(), - region: z.string(), - platform: SyncAcquireResponseDeploymentCurrentPlatformAws$inboundSchema, + id: z.string(), + inputs: z.array( + z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackInput$inboundSchema + ), + ).optional(), + permissions: z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackPermissions$inboundSchema + ).optional(), + resources: z.record( + z.string(), + z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStackResources$inboundSchema + ), + ), + supportedPlatforms: z.nullable( + z.array( + SyncAcquireResponseDeploymentPendingPreparedStackSupportedPlatform$inboundSchema, + ), + ).optional(), }); -export function syncAcquireResponseDeploymentEnvironmentInfoAwsFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentEnvironmentInfoAws, + SyncAcquireResponseDeploymentPendingPreparedStack, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentEnvironmentInfoAws$inboundSchema.parse( + SyncAcquireResponseDeploymentPendingPreparedStack$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'SyncAcquireResponseDeploymentEnvironmentInfoAws' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStack' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentEnvironmentInfoUnion$inboundSchema: - z.ZodType = z +export const SyncAcquireResponseDeploymentPendingPreparedStackUnion$inboundSchema: + z.ZodType = z .union([ z.lazy(() => - SyncAcquireResponseDeploymentEnvironmentInfoGcp$inboundSchema - ), - z.lazy(() => - SyncAcquireResponseDeploymentEnvironmentInfoAzure$inboundSchema - ), - z.lazy(() => - SyncAcquireResponseDeploymentEnvironmentInfoLocal$inboundSchema - ), - z.lazy(() => - SyncAcquireResponseDeploymentEnvironmentInfoAws$inboundSchema - ), - z.lazy(() => - SyncAcquireResponseDeploymentEnvironmentInfoTest$inboundSchema + SyncAcquireResponseDeploymentPendingPreparedStack$inboundSchema ), z.any(), ]); -export function syncAcquireResponseDeploymentEnvironmentInfoUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseDeploymentEnvironmentInfoUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseDeploymentEnvironmentInfoUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseDeploymentEnvironmentInfoUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseDeploymentError$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentError, - unknown -> = z.object({ - code: z.string(), - context: z.nullable(z.any()).optional(), - hint: z.nullable(z.string()).optional(), - httpStatusCode: z.nullable(z.int()).optional(), - internal: z.boolean(), - message: z.string(), - retryable: z.boolean().default(false), - source: z.nullable(z.any()).optional(), -}); - -export function syncAcquireResponseDeploymentErrorFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseDeploymentError$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDeploymentError' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseDeploymentErrorUnion$inboundSchema: z.ZodType< - SyncAcquireResponseDeploymentErrorUnion, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseDeploymentError$inboundSchema), - z.any(), -]); - -export function syncAcquireResponseDeploymentErrorUnionFromJSON( +export function syncAcquireResponseDeploymentPendingPreparedStackUnionFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentErrorUnion, + SyncAcquireResponseDeploymentPendingPreparedStackUnion, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentErrorUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseDeploymentErrorUnion' from JSON`, + SyncAcquireResponseDeploymentPendingPreparedStackUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentPendingPreparedStackUnion' from JSON`, ); } -/** @internal */ -export const SyncAcquireResponseDeploymentCurrentPlatform$inboundSchema: - z.ZodEnum = z.enum( - SyncAcquireResponseDeploymentCurrentPlatform, - ); - /** @internal */ export const SyncAcquireResponseDeploymentPreparedStackTypeStringList$inboundSchema: z.ZodEnum = z @@ -15684,6 +20214,7 @@ export const SyncAcquireResponseDeploymentPreparedStackResources$inboundSchema: SyncAcquireResponseDeploymentPreparedStackDependency$inboundSchema ), ), + enabledWhen: z.nullable(z.string()).optional(), lifecycle: SyncAcquireResponseDeploymentPreparedStackLifecycle$inboundSchema, remoteAccess: z.boolean().optional(), @@ -15736,52 +20267,120 @@ export const SyncAcquireResponseDeploymentPreparedStack$inboundSchema: ).optional(), }); -export function syncAcquireResponseDeploymentPreparedStackFromJSON( +export function syncAcquireResponseDeploymentPreparedStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentPreparedStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentPreparedStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseDeploymentPreparedStack' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentPreparedStackUnion$inboundSchema: + z.ZodType = z.union( + [ + z.lazy(() => SyncAcquireResponseDeploymentPreparedStack$inboundSchema), + z.any(), + ], + ); + +export function syncAcquireResponseDeploymentPreparedStackUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentPreparedStackUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentPreparedStackUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseDeploymentPreparedStackUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentSetupUpdateAuthorization$inboundSchema: + z.ZodType = z + .object({ + baselineFrozenDigest: z.string(), + nonce: z.string(), + releaseId: z.string(), + setupFingerprint: z.string(), + setupFingerprintVersion: z.int(), + setupTarget: z.string(), + targetFrozenDigest: z.string(), + }); + +export function syncAcquireResponseDeploymentSetupUpdateAuthorizationFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentPreparedStack, + SyncAcquireResponseDeploymentSetupUpdateAuthorization, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentPreparedStack$inboundSchema.parse( + SyncAcquireResponseDeploymentSetupUpdateAuthorization$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'SyncAcquireResponseDeploymentPreparedStack' from JSON`, + `Failed to parse 'SyncAcquireResponseDeploymentSetupUpdateAuthorization' from JSON`, ); } /** @internal */ -export const SyncAcquireResponseDeploymentPreparedStackUnion$inboundSchema: - z.ZodType = z.union( - [ - z.lazy(() => SyncAcquireResponseDeploymentPreparedStack$inboundSchema), - z.any(), - ], - ); +export const SyncAcquireResponseDeploymentSetupUpdateAuthorizationUnion$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentSetupUpdateAuthorizationUnion, + unknown + > = z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentSetupUpdateAuthorization$inboundSchema + ), + z.any(), + ]); -export function syncAcquireResponseDeploymentPreparedStackUnionFromJSON( +export function syncAcquireResponseDeploymentSetupUpdateAuthorizationUnionFromJSON( jsonString: string, ): SafeParseResult< - SyncAcquireResponseDeploymentPreparedStackUnion, + SyncAcquireResponseDeploymentSetupUpdateAuthorizationUnion, SDKValidationError > { return safeParse( jsonString, (x) => - SyncAcquireResponseDeploymentPreparedStackUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseDeploymentPreparedStackUnion' from JSON`, + SyncAcquireResponseDeploymentSetupUpdateAuthorizationUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentSetupUpdateAuthorizationUnion' from JSON`, ); } /** @internal */ export const SyncAcquireResponseDeploymentRuntimeMetadata$inboundSchema: z.ZodType = z.object({ + initialSetupAuthority: + SyncAcquireResponseDeploymentInitialSetupAuthority$inboundSchema + .optional(), lastSyncedEnvVarsHash: z.nullable(z.string()).optional(), lastSyncedSecretNames: z.array(z.string()).optional(), + pendingPreparedStack: z.nullable( + z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentPendingPreparedStack$inboundSchema + ), + z.any(), + ]), + ).optional(), + persistedGateAnswers: z.record(z.string(), z.boolean()).optional(), preparedStack: z.nullable( z.union([ z.lazy(() => SyncAcquireResponseDeploymentPreparedStack$inboundSchema), @@ -15789,6 +20388,14 @@ export const SyncAcquireResponseDeploymentRuntimeMetadata$inboundSchema: ]), ).optional(), registryAccessGranted: z.boolean().optional(), + setupUpdateAuthorization: z.nullable( + z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentSetupUpdateAuthorization$inboundSchema + ), + z.any(), + ]), + ).optional(), }); export function syncAcquireResponseDeploymentRuntimeMetadataFromJSON( @@ -18671,6 +23278,7 @@ export const SyncAcquireResponseDeploymentTargetReleaseResources$inboundSchema: SyncAcquireResponseDeploymentTargetReleaseDependency$inboundSchema ), ), + enabledWhen: z.nullable(z.string()).optional(), lifecycle: SyncAcquireResponseDeploymentTargetReleaseLifecycle$inboundSchema, remoteAccess: z.boolean().optional(), @@ -19540,6 +24148,112 @@ export function syncAcquireResponseDeploymentEnvironmentVariablesFromJSON( ); } +/** @internal */ +export const SyncAcquireResponseDeploymentApiKeySecretRef$inboundSchema: + z.ZodType = z.object({ + key: z.string(), + name: z.string(), + }); + +export function syncAcquireResponseDeploymentApiKeySecretRefFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentApiKeySecretRef, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentApiKeySecretRef$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseDeploymentApiKeySecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentApiKey$inboundSchema: z.ZodType< + SyncAcquireResponseDeploymentApiKey, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncAcquireResponseDeploymentApiKeySecretRef$inboundSchema + ), +}); + +export function syncAcquireResponseDeploymentApiKeyFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentApiKey$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentApiKey' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentApiKeyUnion$inboundSchema: z.ZodType< + SyncAcquireResponseDeploymentApiKeyUnion, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseDeploymentApiKey$inboundSchema), + z.any(), + z.string(), +]); + +export function syncAcquireResponseDeploymentApiKeyUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentApiKeyUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentApiKeyUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseDeploymentApiKeyUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentTypeAi$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseDeploymentTypeAi +> = z.enum(SyncAcquireResponseDeploymentTypeAi); + +/** @internal */ +export const SyncAcquireResponseDeploymentExternalBindingsAi$inboundSchema: + z.ZodType = z + .object({ + apiKey: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseDeploymentApiKey$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + provider: z.string(), + type: SyncAcquireResponseDeploymentTypeAi$inboundSchema, + }); + +export function syncAcquireResponseDeploymentExternalBindingsAiFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentExternalBindingsAi, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentExternalBindingsAi$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseDeploymentExternalBindingsAi' from JSON`, + ); +} + /** @internal */ export const SyncAcquireResponseDeploymentDatabaseSecretRef6$inboundSchema: z.ZodType = z @@ -20087,6 +24801,11 @@ export function syncAcquireResponseDeploymentPortUnion4FromJSON( ); } +/** @internal */ +export const SyncAcquireResponseDeploymentSslMode$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseDeploymentSslMode +> = z.enum(SyncAcquireResponseDeploymentSslMode); + /** @internal */ export const SyncAcquireResponseDeploymentUsernameSecretRef4$inboundSchema: z.ZodType = z @@ -20188,6 +24907,7 @@ export const SyncAcquireResponseDeploymentExternalBindingsExternal$inboundSchema z.any(), ]), ).optional(), + sslMode: SyncAcquireResponseDeploymentSslMode$inboundSchema.optional(), username: z.nullable( z.union([ z.lazy(() => SyncAcquireResponseDeploymentUsername4$inboundSchema), @@ -20921,6 +25641,82 @@ export function syncAcquireResponseDeploymentPortUnion2FromJSON( ); } +/** @internal */ +export const SyncAcquireResponseDeploymentServerCaCertificatesSecretRef$inboundSchema: + z.ZodType< + SyncAcquireResponseDeploymentServerCaCertificatesSecretRef, + unknown + > = z.object({ + key: z.string(), + name: z.string(), + }); + +export function syncAcquireResponseDeploymentServerCaCertificatesSecretRefFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentServerCaCertificatesSecretRef, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentServerCaCertificatesSecretRef$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentServerCaCertificatesSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentServerCaCertificates$inboundSchema: + z.ZodType = z + .object({ + secretRef: z.lazy(() => + SyncAcquireResponseDeploymentServerCaCertificatesSecretRef$inboundSchema + ), + }); + +export function syncAcquireResponseDeploymentServerCaCertificatesFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentServerCaCertificates, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentServerCaCertificates$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseDeploymentServerCaCertificates' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentServerCaCertificatesUnion$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => + SyncAcquireResponseDeploymentServerCaCertificates$inboundSchema + ), + z.array(z.string()), + z.any(), + ]); + +export function syncAcquireResponseDeploymentServerCaCertificatesUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentServerCaCertificatesUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentServerCaCertificatesUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDeploymentServerCaCertificatesUnion' from JSON`, + ); +} + /** @internal */ export const SyncAcquireResponseDeploymentUsernameSecretRef2$inboundSchema: z.ZodType = z @@ -21030,6 +25826,15 @@ export const SyncAcquireResponseDeploymentExternalBindingsCloudSQL$inboundSchema z.any(), ]), ).optional(), + serverCaCertificates: z.nullable( + z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentServerCaCertificates$inboundSchema + ), + z.array(z.string()), + z.any(), + ]), + ).optional(), username: z.nullable( z.union([ z.lazy(() => SyncAcquireResponseDeploymentUsername2$inboundSchema), @@ -25817,6 +30622,9 @@ export function syncAcquireResponseDeploymentExternalBindingsUnion1FromJSON( export const SyncAcquireResponseDeploymentExternalBindingsUnion7$inboundSchema: z.ZodType = z .union([ + z.lazy(() => + SyncAcquireResponseDeploymentExternalBindingsAi$inboundSchema + ), z.lazy(() => SyncAcquireResponseDeploymentExternalBindingsContainerAppsEnvironment$inboundSchema ), @@ -26137,13 +30945,72 @@ export function syncAcquireResponseDeploymentMonitoringUnionFromJSON( ); } +/** @internal */ +export const SyncAcquireResponseDeploymentFailureDomains2$inboundSchema: + z.ZodType = z.object({ + selectedFailureDomains: z.array(z.string()).optional(), + spread: z.int(), + }); + +export function syncAcquireResponseDeploymentFailureDomains2FromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentFailureDomains2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentFailureDomains2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseDeploymentFailureDomains2' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentFailureDomainsUnion2$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => SyncAcquireResponseDeploymentFailureDomains2$inboundSchema), + z.any(), + ]); + +export function syncAcquireResponseDeploymentFailureDomainsUnion2FromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentFailureDomainsUnion2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentFailureDomainsUnion2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseDeploymentFailureDomainsUnion2' from JSON`, + ); +} + /** @internal */ export const SyncAcquireResponseDeploymentPoolsAutoscale$inboundSchema: z.ZodType = z.object({ + failure_domains: z.nullable( + z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentFailureDomains2$inboundSchema + ), + z.any(), + ]), + ).optional(), machine: z.nullable(z.string()).optional(), max: z.int(), min: z.int(), mode: z.literal("autoscale"), + }).transform((v) => { + return remap$(v, { + "failure_domains": "failureDomains", + }); }); export function syncAcquireResponseDeploymentPoolsAutoscaleFromJSON( @@ -26162,14 +31029,71 @@ export function syncAcquireResponseDeploymentPoolsAutoscaleFromJSON( ); } +/** @internal */ +export const SyncAcquireResponseDeploymentFailureDomains1$inboundSchema: + z.ZodType = z.object({ + selectedFailureDomains: z.array(z.string()).optional(), + spread: z.int(), + }); + +export function syncAcquireResponseDeploymentFailureDomains1FromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentFailureDomains1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentFailureDomains1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseDeploymentFailureDomains1' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentFailureDomainsUnion1$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => SyncAcquireResponseDeploymentFailureDomains1$inboundSchema), + z.any(), + ]); + +export function syncAcquireResponseDeploymentFailureDomainsUnion1FromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDeploymentFailureDomainsUnion1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDeploymentFailureDomainsUnion1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseDeploymentFailureDomainsUnion1' from JSON`, + ); +} + /** @internal */ export const SyncAcquireResponseDeploymentPoolsFixed$inboundSchema: z.ZodType< SyncAcquireResponseDeploymentPoolsFixed, unknown > = z.object({ + failure_domains: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseDeploymentFailureDomains1$inboundSchema), + z.any(), + ]), + ).optional(), machine: z.nullable(z.string()).optional(), machines: z.int(), mode: z.literal("fixed"), +}).transform((v) => { + return remap$(v, { + "failure_domains": "failureDomains", + }); }); export function syncAcquireResponseDeploymentPoolsFixedFromJSON( @@ -28416,6 +33340,9 @@ export const SyncAcquireResponseDeploymentConfig$inboundSchema: z.ZodType< externalBindings: z.record( z.string(), z.union([ + z.lazy(() => + SyncAcquireResponseDeploymentExternalBindingsAi$inboundSchema + ), z.lazy(() => SyncAcquireResponseDeploymentExternalBindingsContainerAppsEnvironment$inboundSchema ), @@ -28514,6 +33441,7 @@ export const SyncAcquireResponseDeploymentConfig$inboundSchema: z.ZodType< ]), ]), ).optional(), + inputValues: z.record(z.string(), z.nullable(z.any())).optional(), labelDomain: z.nullable(z.string()).optional(), managementConfig: z.nullable( z.union([ diff --git a/client-sdks/platform/typescript/src/models/synclistresponse.ts b/client-sdks/platform/typescript/src/models/synclistresponse.ts index 6841d5217..e1b105b3c 100644 --- a/client-sdks/platform/typescript/src/models/synclistresponse.ts +++ b/client-sdks/platform/typescript/src/models/synclistresponse.ts @@ -14,6 +14,10 @@ import { DeploymentPurpose, DeploymentPurpose$inboundSchema, } from "./deploymentpurpose.js"; +import { + DeploymentUpdateOperationSummary, + DeploymentUpdateOperationSummary$inboundSchema, +} from "./deploymentupdateoperationsummary.js"; import { EnvironmentVariableConfig, EnvironmentVariableConfig$inboundSchema, @@ -228,7 +232,29 @@ export type SyncListResponseEnvironmentInfoUnion = | SyncListResponseEnvironmentInfoTest | any; +/** + * Failure-domain policy selected for a compute pool. + */ +export type SyncListResponseFailureDomains2 = { + /** + * Concrete provider domains selected during setup. + * + * @remarks + * Empty delegates deterministic selection to the provider setup implementation. + */ + selectedFailureDomains?: Array | undefined; + /** + * Number of distinct failure domains across which new stateful replicas may be spread. + */ + spread: number; +}; + +export type SyncListResponseFailureDomainsUnion2 = + | SyncListResponseFailureDomains2 + | any; + export type SyncListResponsePoolsAutoscale = { + failureDomains?: SyncListResponseFailureDomains2 | any | null | undefined; /** * Provider machine type selected for this deployment. */ @@ -244,7 +270,29 @@ export type SyncListResponsePoolsAutoscale = { mode: "autoscale"; }; +/** + * Failure-domain policy selected for a compute pool. + */ +export type SyncListResponseFailureDomains1 = { + /** + * Concrete provider domains selected during setup. + * + * @remarks + * Empty delegates deterministic selection to the provider setup implementation. + */ + selectedFailureDomains?: Array | undefined; + /** + * Number of distinct failure domains across which new stateful replicas may be spread. + */ + spread: number; +}; + +export type SyncListResponseFailureDomainsUnion1 = + | SyncListResponseFailureDomains1 + | any; + export type SyncListResponsePoolsFixed = { + failureDomains?: SyncListResponseFailureDomains1 | any | null | undefined; /** * Provider machine type selected for this deployment. */ @@ -1649,93 +1697,109 @@ export type SyncListResponseStackState = { resources: { [k: string]: SyncListResponseStackStateResources }; }; -export const SyncListResponseTypeStringList = { +/** + * Actor that owns structural work during the initial setup phase. + */ +export const SyncListResponseInitialSetupAuthority = { + ImportedHandoff: "importedHandoff", + DirectSetup: "directSetup", +} as const; +/** + * Actor that owns structural work during the initial setup phase. + */ +export type SyncListResponseInitialSetupAuthority = ClosedEnum< + typeof SyncListResponseInitialSetupAuthority +>; + +export const SyncListResponsePendingPreparedStackTypeStringList = { StringList: "stringList", } as const; -export type SyncListResponseTypeStringList = ClosedEnum< - typeof SyncListResponseTypeStringList +export type SyncListResponsePendingPreparedStackTypeStringList = ClosedEnum< + typeof SyncListResponsePendingPreparedStackTypeStringList >; -export type SyncListResponseDefaultStringList = { - type: SyncListResponseTypeStringList; +export type SyncListResponsePendingPreparedStackDefaultStringList = { + type: SyncListResponsePendingPreparedStackTypeStringList; /** * String list default. */ value: Array; }; -export const SyncListResponseTypeBoolean = { +export const SyncListResponsePendingPreparedStackTypeBoolean = { Boolean: "boolean", } as const; -export type SyncListResponseTypeBoolean = ClosedEnum< - typeof SyncListResponseTypeBoolean +export type SyncListResponsePendingPreparedStackTypeBoolean = ClosedEnum< + typeof SyncListResponsePendingPreparedStackTypeBoolean >; -export type SyncListResponseDefaultBoolean = { - type: SyncListResponseTypeBoolean; +export type SyncListResponsePendingPreparedStackDefaultBoolean = { + type: SyncListResponsePendingPreparedStackTypeBoolean; /** * Boolean default. */ value: boolean; }; -export const SyncListResponseTypeNumber = { +export const SyncListResponsePendingPreparedStackTypeNumber = { Number: "number", } as const; -export type SyncListResponseTypeNumber = ClosedEnum< - typeof SyncListResponseTypeNumber +export type SyncListResponsePendingPreparedStackTypeNumber = ClosedEnum< + typeof SyncListResponsePendingPreparedStackTypeNumber >; -export type SyncListResponseDefaultNumber = { - type: SyncListResponseTypeNumber; +export type SyncListResponsePendingPreparedStackDefaultNumber = { + type: SyncListResponsePendingPreparedStackTypeNumber; /** * Number default. */ value: string; }; -export const SyncListResponseTypeString = { +export const SyncListResponsePendingPreparedStackTypeString = { String: "string", } as const; -export type SyncListResponseTypeString = ClosedEnum< - typeof SyncListResponseTypeString +export type SyncListResponsePendingPreparedStackTypeString = ClosedEnum< + typeof SyncListResponsePendingPreparedStackTypeString >; -export type SyncListResponseDefaultString = { - type: SyncListResponseTypeString; +export type SyncListResponsePendingPreparedStackDefaultString = { + type: SyncListResponsePendingPreparedStackTypeString; /** * String default. */ value: string; }; -export type SyncListResponseDefaultUnion = - | SyncListResponseDefaultString - | SyncListResponseDefaultNumber - | SyncListResponseDefaultBoolean - | SyncListResponseDefaultStringList +export type SyncListResponsePendingPreparedStackDefaultUnion = + | SyncListResponsePendingPreparedStackDefaultString + | SyncListResponsePendingPreparedStackDefaultNumber + | SyncListResponsePendingPreparedStackDefaultBoolean + | SyncListResponsePendingPreparedStackDefaultStringList | any; /** * Environment variable handling for a stack input mapping. */ -export const SyncListResponseTypeEnvEnum = { +export const SyncListResponsePendingPreparedStackTypeEnvEnum = { Plain: "plain", Secret: "secret", } as const; /** * Environment variable handling for a stack input mapping. */ -export type SyncListResponseTypeEnvEnum = ClosedEnum< - typeof SyncListResponseTypeEnvEnum +export type SyncListResponsePendingPreparedStackTypeEnvEnum = ClosedEnum< + typeof SyncListResponsePendingPreparedStackTypeEnvEnum >; -export type SyncListResponseTypeUnion = SyncListResponseTypeEnvEnum | any; +export type SyncListResponsePendingPreparedStackTypeUnion = + | SyncListResponsePendingPreparedStackTypeEnvEnum + | any; /** * How a resolved stack input is injected into runtime environment variables. */ -export type SyncListResponseEnv = { +export type SyncListResponsePendingPreparedStackEnv = { /** * Environment variable name. */ @@ -1744,13 +1808,17 @@ export type SyncListResponseEnv = { * Target resource IDs or patterns. None means every env-capable resource. */ targetResources?: Array | null | undefined; - type?: SyncListResponseTypeEnvEnum | any | null | undefined; + type?: + | SyncListResponsePendingPreparedStackTypeEnvEnum + | any + | null + | undefined; }; /** * Primitive stack input kind. */ -export const SyncListResponseKind = { +export const SyncListResponsePendingPreparedStackKind = { String: "string", Secret: "secret", Number: "number", @@ -1762,12 +1830,14 @@ export const SyncListResponseKind = { /** * Primitive stack input kind. */ -export type SyncListResponseKind = ClosedEnum; +export type SyncListResponsePendingPreparedStackKind = ClosedEnum< + typeof SyncListResponsePendingPreparedStackKind +>; /** * Represents the target cloud platform. */ -export const SyncListResponsePreparedStackPlatform = { +export const SyncListResponsePendingPreparedStackPlatform = { Aws: "aws", Gcp: "gcp", Azure: "azure", @@ -1779,28 +1849,28 @@ export const SyncListResponsePreparedStackPlatform = { /** * Represents the target cloud platform. */ -export type SyncListResponsePreparedStackPlatform = ClosedEnum< - typeof SyncListResponsePreparedStackPlatform +export type SyncListResponsePendingPreparedStackPlatform = ClosedEnum< + typeof SyncListResponsePendingPreparedStackPlatform >; /** * Who can provide a stack input value. */ -export const SyncListResponseProvidedBy = { +export const SyncListResponsePendingPreparedStackProvidedBy = { Developer: "developer", Deployer: "deployer", } as const; /** * Who can provide a stack input value. */ -export type SyncListResponseProvidedBy = ClosedEnum< - typeof SyncListResponseProvidedBy +export type SyncListResponsePendingPreparedStackProvidedBy = ClosedEnum< + typeof SyncListResponsePendingPreparedStackProvidedBy >; /** * Portable stack input validation constraints. */ -export type SyncListResponseValidation = { +export type SyncListResponsePendingPreparedStackValidation = { /** * Semantic format hint such as url. */ @@ -1839,17 +1909,19 @@ export type SyncListResponseValidation = { values?: Array | null | undefined; }; -export type SyncListResponseValidationUnion = SyncListResponseValidation | any; +export type SyncListResponsePendingPreparedStackValidationUnion = + | SyncListResponsePendingPreparedStackValidation + | any; /** * Stack input definition serialized into a release stack. */ -export type SyncListResponseInput = { +export type SyncListResponsePendingPreparedStackInput = { default?: - | SyncListResponseDefaultString - | SyncListResponseDefaultNumber - | SyncListResponseDefaultBoolean - | SyncListResponseDefaultStringList + | SyncListResponsePendingPreparedStackDefaultString + | SyncListResponsePendingPreparedStackDefaultNumber + | SyncListResponsePendingPreparedStackDefaultBoolean + | SyncListResponsePendingPreparedStackDefaultStringList | any | null | undefined; @@ -1860,7 +1932,7 @@ export type SyncListResponseInput = { /** * Runtime env-var mappings for v1 input resolution. */ - env?: Array | undefined; + env?: Array | undefined; /** * Stable input ID used by CLI/API calls. */ @@ -1868,7 +1940,7 @@ export type SyncListResponseInput = { /** * Primitive stack input kind. */ - kind: SyncListResponseKind; + kind: SyncListResponsePendingPreparedStackKind; /** * Human-facing field label. */ @@ -1880,29 +1952,36 @@ export type SyncListResponseInput = { /** * Platforms where this input applies. */ - platforms?: Array | null | undefined; + platforms?: + | Array + | null + | undefined; /** * Who can provide this value. */ - providedBy: Array; + providedBy: Array; /** * Whether a resolved value is required before deployment can proceed. */ required: boolean; - validation?: SyncListResponseValidation | any | null | undefined; + validation?: + | SyncListResponsePendingPreparedStackValidation + | any + | null + | undefined; }; -export const SyncListResponseManagementEnum = { +export const SyncListResponsePendingPreparedStackManagementEnum = { Auto: "auto", } as const; -export type SyncListResponseManagementEnum = ClosedEnum< - typeof SyncListResponseManagementEnum +export type SyncListResponsePendingPreparedStackManagementEnum = ClosedEnum< + typeof SyncListResponsePendingPreparedStackManagementEnum >; /** * AWS-specific binding specification */ -export type SyncListResponseOverrideAwResource = { +export type SyncListResponsePendingPreparedStackOverrideAwResource = { /** * Optional condition for additional filtering (rare) */ @@ -1916,7 +1995,7 @@ export type SyncListResponseOverrideAwResource = { /** * AWS-specific binding specification */ -export type SyncListResponseOverrideAwStack = { +export type SyncListResponsePendingPreparedStackOverrideAwStack = { /** * Optional condition for additional filtering (rare) */ @@ -1930,35 +2009,35 @@ export type SyncListResponseOverrideAwStack = { /** * Generic binding configuration for permissions */ -export type SyncListResponseOverrideAwBinding = { +export type SyncListResponsePendingPreparedStackOverrideAwBinding = { /** * AWS-specific binding specification */ - resource?: SyncListResponseOverrideAwResource | undefined; + resource?: SyncListResponsePendingPreparedStackOverrideAwResource | undefined; /** * AWS-specific binding specification */ - stack?: SyncListResponseOverrideAwStack | undefined; + stack?: SyncListResponsePendingPreparedStackOverrideAwStack | undefined; }; /** * IAM effect. Defaults to Allow. */ -export const SyncListResponseOverrideEffect = { +export const SyncListResponsePendingPreparedStackOverrideEffect = { Allow: "Allow", Deny: "Deny", } as const; /** * IAM effect. Defaults to Allow. */ -export type SyncListResponseOverrideEffect = ClosedEnum< - typeof SyncListResponseOverrideEffect +export type SyncListResponsePendingPreparedStackOverrideEffect = ClosedEnum< + typeof SyncListResponsePendingPreparedStackOverrideEffect >; /** * Grant permissions for a specific cloud platform */ -export type SyncListResponseOverrideAwGrant = { +export type SyncListResponsePendingPreparedStackOverrideAwGrant = { /** * AWS IAM actions (only for AWS) */ @@ -1984,11 +2063,11 @@ export type SyncListResponseOverrideAwGrant = { /** * AWS-specific platform permission configuration */ -export type SyncListResponseOverrideAw = { +export type SyncListResponsePendingPreparedStackOverrideAw = { /** * Generic binding configuration for permissions */ - binding: SyncListResponseOverrideAwBinding; + binding: SyncListResponsePendingPreparedStackOverrideAwBinding; /** * Short admin-facing description of why this entry exists. */ @@ -1996,11 +2075,11 @@ export type SyncListResponseOverrideAw = { /** * IAM effect. Defaults to Allow. */ - effect?: SyncListResponseOverrideEffect | undefined; + effect?: SyncListResponsePendingPreparedStackOverrideEffect | undefined; /** * Grant permissions for a specific cloud platform */ - grant: SyncListResponseOverrideAwGrant; + grant: SyncListResponsePendingPreparedStackOverrideAwGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2010,7 +2089,7 @@ export type SyncListResponseOverrideAw = { /** * Azure-specific binding specification */ -export type SyncListResponseOverrideAzureResource = { +export type SyncListResponsePendingPreparedStackOverrideAzureResource = { /** * Scope (subscription/resource group/resource level) */ @@ -2020,7 +2099,7 @@ export type SyncListResponseOverrideAzureResource = { /** * Azure-specific binding specification */ -export type SyncListResponseOverrideAzureStack = { +export type SyncListResponsePendingPreparedStackOverrideAzureStack = { /** * Scope (subscription/resource group/resource level) */ @@ -2030,21 +2109,23 @@ export type SyncListResponseOverrideAzureStack = { /** * Generic binding configuration for permissions */ -export type SyncListResponseOverrideAzureBinding = { +export type SyncListResponsePendingPreparedStackOverrideAzureBinding = { /** * Azure-specific binding specification */ - resource?: SyncListResponseOverrideAzureResource | undefined; + resource?: + | SyncListResponsePendingPreparedStackOverrideAzureResource + | undefined; /** * Azure-specific binding specification */ - stack?: SyncListResponseOverrideAzureStack | undefined; + stack?: SyncListResponsePendingPreparedStackOverrideAzureStack | undefined; }; /** * Grant permissions for a specific cloud platform */ -export type SyncListResponseOverrideAzureGrant = { +export type SyncListResponsePendingPreparedStackOverrideAzureGrant = { /** * AWS IAM actions (only for AWS) */ @@ -2070,11 +2151,11 @@ export type SyncListResponseOverrideAzureGrant = { /** * Azure-specific platform permission configuration */ -export type SyncListResponseOverrideAzure = { +export type SyncListResponsePendingPreparedStackOverrideAzure = { /** * Generic binding configuration for permissions */ - binding: SyncListResponseOverrideAzureBinding; + binding: SyncListResponsePendingPreparedStackOverrideAzureBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2082,7 +2163,7 @@ export type SyncListResponseOverrideAzure = { /** * Grant permissions for a specific cloud platform */ - grant: SyncListResponseOverrideAzureGrant; + grant: SyncListResponsePendingPreparedStackOverrideAzureGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2092,21 +2173,21 @@ export type SyncListResponseOverrideAzure = { /** * GCP IAM condition */ -export type SyncListResponseOverrideConditionResource = { +export type SyncListResponsePendingPreparedStackOverrideConditionResource = { expression: string; title: string; }; -export type SyncListResponseOverrideResourceConditionUnion = - | SyncListResponseOverrideConditionResource +export type SyncListResponsePendingPreparedStackOverrideResourceConditionUnion = + | SyncListResponsePendingPreparedStackOverrideConditionResource | any; /** * GCP-specific binding specification */ -export type SyncListResponseOverrideGcpResource = { +export type SyncListResponsePendingPreparedStackOverrideGcpResource = { condition?: - | SyncListResponseOverrideConditionResource + | SyncListResponsePendingPreparedStackOverrideConditionResource | any | null | undefined; @@ -2119,20 +2200,24 @@ export type SyncListResponseOverrideGcpResource = { /** * GCP IAM condition */ -export type SyncListResponseOverrideConditionStack = { +export type SyncListResponsePendingPreparedStackOverrideConditionStack = { expression: string; title: string; }; -export type SyncListResponseOverrideStackConditionUnion = - | SyncListResponseOverrideConditionStack +export type SyncListResponsePendingPreparedStackOverrideStackConditionUnion = + | SyncListResponsePendingPreparedStackOverrideConditionStack | any; /** * GCP-specific binding specification */ -export type SyncListResponseOverrideGcpStack = { - condition?: SyncListResponseOverrideConditionStack | any | null | undefined; +export type SyncListResponsePendingPreparedStackOverrideGcpStack = { + condition?: + | SyncListResponsePendingPreparedStackOverrideConditionStack + | any + | null + | undefined; /** * Scope (project/resource level) */ @@ -2142,21 +2227,23 @@ export type SyncListResponseOverrideGcpStack = { /** * Generic binding configuration for permissions */ -export type SyncListResponseOverrideGcpBinding = { +export type SyncListResponsePendingPreparedStackOverrideGcpBinding = { /** * GCP-specific binding specification */ - resource?: SyncListResponseOverrideGcpResource | undefined; + resource?: + | SyncListResponsePendingPreparedStackOverrideGcpResource + | undefined; /** * GCP-specific binding specification */ - stack?: SyncListResponseOverrideGcpStack | undefined; + stack?: SyncListResponsePendingPreparedStackOverrideGcpStack | undefined; }; /** * Grant permissions for a specific cloud platform */ -export type SyncListResponseOverrideGcpGrant = { +export type SyncListResponsePendingPreparedStackOverrideGcpGrant = { /** * AWS IAM actions (only for AWS) */ @@ -2182,11 +2269,11 @@ export type SyncListResponseOverrideGcpGrant = { /** * GCP-specific platform permission configuration */ -export type SyncListResponseOverrideGcp = { +export type SyncListResponsePendingPreparedStackOverrideGcp = { /** * Generic binding configuration for permissions */ - binding: SyncListResponseOverrideGcpBinding; + binding: SyncListResponsePendingPreparedStackOverrideGcpBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2194,7 +2281,7 @@ export type SyncListResponseOverrideGcp = { /** * Grant permissions for a specific cloud platform */ - grant: SyncListResponseOverrideGcpGrant; + grant: SyncListResponsePendingPreparedStackOverrideGcpGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2204,25 +2291,34 @@ export type SyncListResponseOverrideGcp = { /** * Platform-specific permission configurations */ -export type SyncListResponseOverridePlatforms = { +export type SyncListResponsePendingPreparedStackOverridePlatforms = { /** * AWS permission configurations */ - aws?: Array | null | undefined; + aws?: + | Array + | null + | undefined; /** * Azure permission configurations */ - azure?: Array | null | undefined; + azure?: + | Array + | null + | undefined; /** * GCP permission configurations */ - gcp?: Array | null | undefined; + gcp?: + | Array + | null + | undefined; }; /** * A permission set that can be applied across different cloud platforms */ -export type SyncListResponseOverride = { +export type SyncListResponsePendingPreparedStackOverride = { /** * Human-readable description of what this permission set allows */ @@ -2234,28 +2330,32 @@ export type SyncListResponseOverride = { /** * Platform-specific permission configurations */ - platforms: SyncListResponseOverridePlatforms; + platforms: SyncListResponsePendingPreparedStackOverridePlatforms; }; /** * Reference to a permission set - either by name or inline definition */ -export type SyncListResponseOverrideUnion = SyncListResponseOverride | string; +export type SyncListResponsePendingPreparedStackOverrideUnion = + | SyncListResponsePendingPreparedStackOverride + | string; -export type SyncListResponseManagement2 = { +export type SyncListResponsePendingPreparedStackManagement2 = { /** * Permission profile that maps resources to permission sets * * @remarks * Key can be "*" for all resources or resource name for specific resource */ - override: { [k: string]: Array }; + override: { + [k: string]: Array; + }; }; /** * AWS-specific binding specification */ -export type SyncListResponseExtendAwResource = { +export type SyncListResponsePendingPreparedStackExtendAwResource = { /** * Optional condition for additional filtering (rare) */ @@ -2269,7 +2369,7 @@ export type SyncListResponseExtendAwResource = { /** * AWS-specific binding specification */ -export type SyncListResponseExtendAwStack = { +export type SyncListResponsePendingPreparedStackExtendAwStack = { /** * Optional condition for additional filtering (rare) */ @@ -2283,35 +2383,35 @@ export type SyncListResponseExtendAwStack = { /** * Generic binding configuration for permissions */ -export type SyncListResponseExtendAwBinding = { +export type SyncListResponsePendingPreparedStackExtendAwBinding = { /** * AWS-specific binding specification */ - resource?: SyncListResponseExtendAwResource | undefined; + resource?: SyncListResponsePendingPreparedStackExtendAwResource | undefined; /** * AWS-specific binding specification */ - stack?: SyncListResponseExtendAwStack | undefined; + stack?: SyncListResponsePendingPreparedStackExtendAwStack | undefined; }; /** * IAM effect. Defaults to Allow. */ -export const SyncListResponseExtendEffect = { +export const SyncListResponsePendingPreparedStackExtendEffect = { Allow: "Allow", Deny: "Deny", } as const; /** * IAM effect. Defaults to Allow. */ -export type SyncListResponseExtendEffect = ClosedEnum< - typeof SyncListResponseExtendEffect +export type SyncListResponsePendingPreparedStackExtendEffect = ClosedEnum< + typeof SyncListResponsePendingPreparedStackExtendEffect >; /** * Grant permissions for a specific cloud platform */ -export type SyncListResponseExtendAwGrant = { +export type SyncListResponsePendingPreparedStackExtendAwGrant = { /** * AWS IAM actions (only for AWS) */ @@ -2337,11 +2437,11 @@ export type SyncListResponseExtendAwGrant = { /** * AWS-specific platform permission configuration */ -export type SyncListResponseExtendAw = { +export type SyncListResponsePendingPreparedStackExtendAw = { /** * Generic binding configuration for permissions */ - binding: SyncListResponseExtendAwBinding; + binding: SyncListResponsePendingPreparedStackExtendAwBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2349,11 +2449,11 @@ export type SyncListResponseExtendAw = { /** * IAM effect. Defaults to Allow. */ - effect?: SyncListResponseExtendEffect | undefined; + effect?: SyncListResponsePendingPreparedStackExtendEffect | undefined; /** * Grant permissions for a specific cloud platform */ - grant: SyncListResponseExtendAwGrant; + grant: SyncListResponsePendingPreparedStackExtendAwGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2363,7 +2463,7 @@ export type SyncListResponseExtendAw = { /** * Azure-specific binding specification */ -export type SyncListResponseExtendAzureResource = { +export type SyncListResponsePendingPreparedStackExtendAzureResource = { /** * Scope (subscription/resource group/resource level) */ @@ -2373,7 +2473,7 @@ export type SyncListResponseExtendAzureResource = { /** * Azure-specific binding specification */ -export type SyncListResponseExtendAzureStack = { +export type SyncListResponsePendingPreparedStackExtendAzureStack = { /** * Scope (subscription/resource group/resource level) */ @@ -2383,21 +2483,23 @@ export type SyncListResponseExtendAzureStack = { /** * Generic binding configuration for permissions */ -export type SyncListResponseExtendAzureBinding = { +export type SyncListResponsePendingPreparedStackExtendAzureBinding = { /** * Azure-specific binding specification */ - resource?: SyncListResponseExtendAzureResource | undefined; + resource?: + | SyncListResponsePendingPreparedStackExtendAzureResource + | undefined; /** * Azure-specific binding specification */ - stack?: SyncListResponseExtendAzureStack | undefined; + stack?: SyncListResponsePendingPreparedStackExtendAzureStack | undefined; }; /** * Grant permissions for a specific cloud platform */ -export type SyncListResponseExtendAzureGrant = { +export type SyncListResponsePendingPreparedStackExtendAzureGrant = { /** * AWS IAM actions (only for AWS) */ @@ -2423,11 +2525,11 @@ export type SyncListResponseExtendAzureGrant = { /** * Azure-specific platform permission configuration */ -export type SyncListResponseExtendAzure = { +export type SyncListResponsePendingPreparedStackExtendAzure = { /** * Generic binding configuration for permissions */ - binding: SyncListResponseExtendAzureBinding; + binding: SyncListResponsePendingPreparedStackExtendAzureBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2435,7 +2537,7 @@ export type SyncListResponseExtendAzure = { /** * Grant permissions for a specific cloud platform */ - grant: SyncListResponseExtendAzureGrant; + grant: SyncListResponsePendingPreparedStackExtendAzureGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2445,20 +2547,24 @@ export type SyncListResponseExtendAzure = { /** * GCP IAM condition */ -export type SyncListResponseExtendConditionResource = { +export type SyncListResponsePendingPreparedStackExtendConditionResource = { expression: string; title: string; }; -export type SyncListResponseExtendResourceConditionUnion = - | SyncListResponseExtendConditionResource +export type SyncListResponsePendingPreparedStackExtendResourceConditionUnion = + | SyncListResponsePendingPreparedStackExtendConditionResource | any; /** * GCP-specific binding specification */ -export type SyncListResponseExtendGcpResource = { - condition?: SyncListResponseExtendConditionResource | any | null | undefined; +export type SyncListResponsePendingPreparedStackExtendGcpResource = { + condition?: + | SyncListResponsePendingPreparedStackExtendConditionResource + | any + | null + | undefined; /** * Scope (project/resource level) */ @@ -2468,20 +2574,24 @@ export type SyncListResponseExtendGcpResource = { /** * GCP IAM condition */ -export type SyncListResponseExtendConditionStack = { +export type SyncListResponsePendingPreparedStackExtendConditionStack = { expression: string; title: string; }; -export type SyncListResponseExtendStackConditionUnion = - | SyncListResponseExtendConditionStack +export type SyncListResponsePendingPreparedStackExtendStackConditionUnion = + | SyncListResponsePendingPreparedStackExtendConditionStack | any; /** * GCP-specific binding specification */ -export type SyncListResponseExtendGcpStack = { - condition?: SyncListResponseExtendConditionStack | any | null | undefined; +export type SyncListResponsePendingPreparedStackExtendGcpStack = { + condition?: + | SyncListResponsePendingPreparedStackExtendConditionStack + | any + | null + | undefined; /** * Scope (project/resource level) */ @@ -2491,21 +2601,21 @@ export type SyncListResponseExtendGcpStack = { /** * Generic binding configuration for permissions */ -export type SyncListResponseExtendGcpBinding = { +export type SyncListResponsePendingPreparedStackExtendGcpBinding = { /** * GCP-specific binding specification */ - resource?: SyncListResponseExtendGcpResource | undefined; + resource?: SyncListResponsePendingPreparedStackExtendGcpResource | undefined; /** * GCP-specific binding specification */ - stack?: SyncListResponseExtendGcpStack | undefined; + stack?: SyncListResponsePendingPreparedStackExtendGcpStack | undefined; }; /** * Grant permissions for a specific cloud platform */ -export type SyncListResponseExtendGcpGrant = { +export type SyncListResponsePendingPreparedStackExtendGcpGrant = { /** * AWS IAM actions (only for AWS) */ @@ -2531,11 +2641,11 @@ export type SyncListResponseExtendGcpGrant = { /** * GCP-specific platform permission configuration */ -export type SyncListResponseExtendGcp = { +export type SyncListResponsePendingPreparedStackExtendGcp = { /** * Generic binding configuration for permissions */ - binding: SyncListResponseExtendGcpBinding; + binding: SyncListResponsePendingPreparedStackExtendGcpBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2543,7 +2653,7 @@ export type SyncListResponseExtendGcp = { /** * Grant permissions for a specific cloud platform */ - grant: SyncListResponseExtendGcpGrant; + grant: SyncListResponsePendingPreparedStackExtendGcpGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2553,25 +2663,28 @@ export type SyncListResponseExtendGcp = { /** * Platform-specific permission configurations */ -export type SyncListResponseExtendPlatforms = { +export type SyncListResponsePendingPreparedStackExtendPlatforms = { /** * AWS permission configurations */ - aws?: Array | null | undefined; + aws?: Array | null | undefined; /** * Azure permission configurations */ - azure?: Array | null | undefined; + azure?: + | Array + | null + | undefined; /** * GCP permission configurations */ - gcp?: Array | null | undefined; + gcp?: Array | null | undefined; }; /** * A permission set that can be applied across different cloud platforms */ -export type SyncListResponseExtend = { +export type SyncListResponsePendingPreparedStackExtend = { /** * Human-readable description of what this permission set allows */ @@ -2583,36 +2696,40 @@ export type SyncListResponseExtend = { /** * Platform-specific permission configurations */ - platforms: SyncListResponseExtendPlatforms; + platforms: SyncListResponsePendingPreparedStackExtendPlatforms; }; /** * Reference to a permission set - either by name or inline definition */ -export type SyncListResponseExtendUnion = SyncListResponseExtend | string; +export type SyncListResponsePendingPreparedStackExtendUnion = + | SyncListResponsePendingPreparedStackExtend + | string; -export type SyncListResponseManagement1 = { +export type SyncListResponsePendingPreparedStackManagement1 = { /** * Permission profile that maps resources to permission sets * * @remarks * Key can be "*" for all resources or resource name for specific resource */ - extend: { [k: string]: Array }; + extend: { + [k: string]: Array; + }; }; /** * Management permissions configuration for stack management access */ -export type SyncListResponseManagementUnion = - | SyncListResponseManagement1 - | SyncListResponseManagement2 - | SyncListResponseManagementEnum; +export type SyncListResponsePendingPreparedStackManagementUnion = + | SyncListResponsePendingPreparedStackManagement1 + | SyncListResponsePendingPreparedStackManagement2 + | SyncListResponsePendingPreparedStackManagementEnum; /** * AWS-specific binding specification */ -export type SyncListResponseProfileAwResource = { +export type SyncListResponsePendingPreparedStackProfileAwResource = { /** * Optional condition for additional filtering (rare) */ @@ -2626,7 +2743,7 @@ export type SyncListResponseProfileAwResource = { /** * AWS-specific binding specification */ -export type SyncListResponseProfileAwStack = { +export type SyncListResponsePendingPreparedStackProfileAwStack = { /** * Optional condition for additional filtering (rare) */ @@ -2640,35 +2757,35 @@ export type SyncListResponseProfileAwStack = { /** * Generic binding configuration for permissions */ -export type SyncListResponseProfileAwBinding = { +export type SyncListResponsePendingPreparedStackProfileAwBinding = { /** * AWS-specific binding specification */ - resource?: SyncListResponseProfileAwResource | undefined; + resource?: SyncListResponsePendingPreparedStackProfileAwResource | undefined; /** * AWS-specific binding specification */ - stack?: SyncListResponseProfileAwStack | undefined; + stack?: SyncListResponsePendingPreparedStackProfileAwStack | undefined; }; /** * IAM effect. Defaults to Allow. */ -export const SyncListResponseProfileEffect = { +export const SyncListResponsePendingPreparedStackProfileEffect = { Allow: "Allow", Deny: "Deny", } as const; /** * IAM effect. Defaults to Allow. */ -export type SyncListResponseProfileEffect = ClosedEnum< - typeof SyncListResponseProfileEffect +export type SyncListResponsePendingPreparedStackProfileEffect = ClosedEnum< + typeof SyncListResponsePendingPreparedStackProfileEffect >; /** * Grant permissions for a specific cloud platform */ -export type SyncListResponseProfileAwGrant = { +export type SyncListResponsePendingPreparedStackProfileAwGrant = { /** * AWS IAM actions (only for AWS) */ @@ -2694,11 +2811,11 @@ export type SyncListResponseProfileAwGrant = { /** * AWS-specific platform permission configuration */ -export type SyncListResponseProfileAw = { +export type SyncListResponsePendingPreparedStackProfileAw = { /** * Generic binding configuration for permissions */ - binding: SyncListResponseProfileAwBinding; + binding: SyncListResponsePendingPreparedStackProfileAwBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2706,11 +2823,11 @@ export type SyncListResponseProfileAw = { /** * IAM effect. Defaults to Allow. */ - effect?: SyncListResponseProfileEffect | undefined; + effect?: SyncListResponsePendingPreparedStackProfileEffect | undefined; /** * Grant permissions for a specific cloud platform */ - grant: SyncListResponseProfileAwGrant; + grant: SyncListResponsePendingPreparedStackProfileAwGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2720,7 +2837,7 @@ export type SyncListResponseProfileAw = { /** * Azure-specific binding specification */ -export type SyncListResponseProfileAzureResource = { +export type SyncListResponsePendingPreparedStackProfileAzureResource = { /** * Scope (subscription/resource group/resource level) */ @@ -2730,7 +2847,7 @@ export type SyncListResponseProfileAzureResource = { /** * Azure-specific binding specification */ -export type SyncListResponseProfileAzureStack = { +export type SyncListResponsePendingPreparedStackProfileAzureStack = { /** * Scope (subscription/resource group/resource level) */ @@ -2740,21 +2857,23 @@ export type SyncListResponseProfileAzureStack = { /** * Generic binding configuration for permissions */ -export type SyncListResponseProfileAzureBinding = { +export type SyncListResponsePendingPreparedStackProfileAzureBinding = { /** * Azure-specific binding specification */ - resource?: SyncListResponseProfileAzureResource | undefined; + resource?: + | SyncListResponsePendingPreparedStackProfileAzureResource + | undefined; /** * Azure-specific binding specification */ - stack?: SyncListResponseProfileAzureStack | undefined; + stack?: SyncListResponsePendingPreparedStackProfileAzureStack | undefined; }; /** * Grant permissions for a specific cloud platform */ -export type SyncListResponseProfileAzureGrant = { +export type SyncListResponsePendingPreparedStackProfileAzureGrant = { /** * AWS IAM actions (only for AWS) */ @@ -2780,11 +2899,11 @@ export type SyncListResponseProfileAzureGrant = { /** * Azure-specific platform permission configuration */ -export type SyncListResponseProfileAzure = { +export type SyncListResponsePendingPreparedStackProfileAzure = { /** * Generic binding configuration for permissions */ - binding: SyncListResponseProfileAzureBinding; + binding: SyncListResponsePendingPreparedStackProfileAzureBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2792,7 +2911,7 @@ export type SyncListResponseProfileAzure = { /** * Grant permissions for a specific cloud platform */ - grant: SyncListResponseProfileAzureGrant; + grant: SyncListResponsePendingPreparedStackProfileAzureGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2802,20 +2921,24 @@ export type SyncListResponseProfileAzure = { /** * GCP IAM condition */ -export type SyncListResponseProfileConditionResource = { +export type SyncListResponsePendingPreparedStackProfileConditionResource = { expression: string; title: string; }; -export type SyncListResponseProfileResourceConditionUnion = - | SyncListResponseProfileConditionResource +export type SyncListResponsePendingPreparedStackProfileResourceConditionUnion = + | SyncListResponsePendingPreparedStackProfileConditionResource | any; /** * GCP-specific binding specification */ -export type SyncListResponseProfileGcpResource = { - condition?: SyncListResponseProfileConditionResource | any | null | undefined; +export type SyncListResponsePendingPreparedStackProfileGcpResource = { + condition?: + | SyncListResponsePendingPreparedStackProfileConditionResource + | any + | null + | undefined; /** * Scope (project/resource level) */ @@ -2825,20 +2948,24 @@ export type SyncListResponseProfileGcpResource = { /** * GCP IAM condition */ -export type SyncListResponseProfileConditionStack = { +export type SyncListResponsePendingPreparedStackProfileConditionStack = { expression: string; title: string; }; -export type SyncListResponseProfileStackConditionUnion = - | SyncListResponseProfileConditionStack +export type SyncListResponsePendingPreparedStackProfileStackConditionUnion = + | SyncListResponsePendingPreparedStackProfileConditionStack | any; /** * GCP-specific binding specification */ -export type SyncListResponseProfileGcpStack = { - condition?: SyncListResponseProfileConditionStack | any | null | undefined; +export type SyncListResponsePendingPreparedStackProfileGcpStack = { + condition?: + | SyncListResponsePendingPreparedStackProfileConditionStack + | any + | null + | undefined; /** * Scope (project/resource level) */ @@ -2848,21 +2975,21 @@ export type SyncListResponseProfileGcpStack = { /** * Generic binding configuration for permissions */ -export type SyncListResponseProfileGcpBinding = { +export type SyncListResponsePendingPreparedStackProfileGcpBinding = { /** * GCP-specific binding specification */ - resource?: SyncListResponseProfileGcpResource | undefined; + resource?: SyncListResponsePendingPreparedStackProfileGcpResource | undefined; /** * GCP-specific binding specification */ - stack?: SyncListResponseProfileGcpStack | undefined; + stack?: SyncListResponsePendingPreparedStackProfileGcpStack | undefined; }; /** * Grant permissions for a specific cloud platform */ -export type SyncListResponseProfileGcpGrant = { +export type SyncListResponsePendingPreparedStackProfileGcpGrant = { /** * AWS IAM actions (only for AWS) */ @@ -2888,11 +3015,11 @@ export type SyncListResponseProfileGcpGrant = { /** * GCP-specific platform permission configuration */ -export type SyncListResponseProfileGcp = { +export type SyncListResponsePendingPreparedStackProfileGcp = { /** * Generic binding configuration for permissions */ - binding: SyncListResponseProfileGcpBinding; + binding: SyncListResponsePendingPreparedStackProfileGcpBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2900,7 +3027,7 @@ export type SyncListResponseProfileGcp = { /** * Grant permissions for a specific cloud platform */ - grant: SyncListResponseProfileGcpGrant; + grant: SyncListResponsePendingPreparedStackProfileGcpGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2910,25 +3037,31 @@ export type SyncListResponseProfileGcp = { /** * Platform-specific permission configurations */ -export type SyncListResponseProfilePlatforms = { +export type SyncListResponsePendingPreparedStackProfilePlatforms = { /** * AWS permission configurations */ - aws?: Array | null | undefined; + aws?: Array | null | undefined; /** * Azure permission configurations */ - azure?: Array | null | undefined; + azure?: + | Array + | null + | undefined; /** * GCP permission configurations */ - gcp?: Array | null | undefined; + gcp?: + | Array + | null + | undefined; }; /** * A permission set that can be applied across different cloud platforms */ -export type SyncListResponseProfile = { +export type SyncListResponsePendingPreparedStackProfile = { /** * Human-readable description of what this permission set allows */ @@ -2940,25 +3073,27 @@ export type SyncListResponseProfile = { /** * Platform-specific permission configurations */ - platforms: SyncListResponseProfilePlatforms; + platforms: SyncListResponsePendingPreparedStackProfilePlatforms; }; /** * Reference to a permission set - either by name or inline definition */ -export type SyncListResponseProfileUnion = SyncListResponseProfile | string; +export type SyncListResponsePendingPreparedStackProfileUnion = + | SyncListResponsePendingPreparedStackProfile + | string; /** * Combined permissions configuration that contains both profiles and management */ -export type SyncListResponsePermissions = { +export type SyncListResponsePendingPreparedStackPermissions = { /** * Management permissions configuration for stack management access */ management?: - | SyncListResponseManagement1 - | SyncListResponseManagement2 - | SyncListResponseManagementEnum + | SyncListResponsePendingPreparedStackManagement1 + | SyncListResponsePendingPreparedStackManagement2 + | SyncListResponsePendingPreparedStackManagementEnum | undefined; /** * Permission profiles that define access control for compute services @@ -2967,14 +3102,16 @@ export type SyncListResponsePermissions = { * Key is the profile name, value is the permission configuration */ profiles: { - [k: string]: { [k: string]: Array }; + [k: string]: { + [k: string]: Array; + }; }; }; /** * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. */ -export type SyncListResponsePreparedStackConfig = { +export type SyncListResponsePendingPreparedStackConfig = { /** * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. */ @@ -2989,7 +3126,7 @@ export type SyncListResponsePreparedStackConfig = { /** * Reference to a resource by its stable id and resource type. */ -export type SyncListResponsePreparedStackDependency = { +export type SyncListResponsePendingPreparedStackDependency = { id: string; /** * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. @@ -3000,33 +3137,44 @@ export type SyncListResponsePreparedStackDependency = { /** * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ -export const SyncListResponsePreparedStackLifecycle = { +export const SyncListResponsePendingPreparedStackLifecycle = { Frozen: "frozen", Live: "live", } as const; /** * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ -export type SyncListResponsePreparedStackLifecycle = ClosedEnum< - typeof SyncListResponsePreparedStackLifecycle +export type SyncListResponsePendingPreparedStackLifecycle = ClosedEnum< + typeof SyncListResponsePendingPreparedStackLifecycle >; -export type SyncListResponsePreparedStackResources = { +export type SyncListResponsePendingPreparedStackResources = { /** * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. */ - config: SyncListResponsePreparedStackConfig; + config: SyncListResponsePendingPreparedStackConfig; /** * Additional dependencies for this resource beyond those defined in the resource itself. * * @remarks * The total dependencies are: resource.get_dependencies() + this list */ - dependencies: Array; + dependencies: Array; + /** + * Id of the boolean stack input that decides whether this resource is + * + * @remarks + * 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. + */ + enabledWhen?: string | null | undefined; /** * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ - lifecycle: SyncListResponsePreparedStackLifecycle; + lifecycle: SyncListResponsePendingPreparedStackLifecycle; /** * Enable remote bindings for this resource (BYOB use case). * @@ -3040,7 +3188,7 @@ export type SyncListResponsePreparedStackResources = { /** * Represents the target cloud platform. */ -export const SyncListResponseSupportedPlatform = { +export const SyncListResponsePendingPreparedStackSupportedPlatform = { Aws: "aws", Gcp: "gcp", Azure: "azure", @@ -3052,14 +3200,14 @@ export const SyncListResponseSupportedPlatform = { /** * Represents the target cloud platform. */ -export type SyncListResponseSupportedPlatform = ClosedEnum< - typeof SyncListResponseSupportedPlatform +export type SyncListResponsePendingPreparedStackSupportedPlatform = ClosedEnum< + typeof SyncListResponsePendingPreparedStackSupportedPlatform >; /** * A bag of resources, unaware of any cloud. */ -export type SyncListResponsePreparedStack = { +export type SyncListResponsePendingPreparedStack = { /** * Unique identifier for the stack */ @@ -3067,2900 +3215,7074 @@ export type SyncListResponsePreparedStack = { /** * Input definitions required before setup or deployment can proceed. */ - inputs?: Array | undefined; + inputs?: Array | undefined; /** * Combined permissions configuration that contains both profiles and management */ - permissions?: SyncListResponsePermissions | undefined; + permissions?: SyncListResponsePendingPreparedStackPermissions | undefined; /** * Map of resource IDs to their configurations and lifecycle settings */ - resources: { [k: string]: SyncListResponsePreparedStackResources }; + resources: { [k: string]: SyncListResponsePendingPreparedStackResources }; /** * Which platforms this stack supports. When None, all platforms are supported. */ supportedPlatforms?: - | Array + | Array | null | undefined; }; -export type SyncListResponsePreparedStackUnion = - | SyncListResponsePreparedStack +export type SyncListResponsePendingPreparedStackUnion = + | SyncListResponsePendingPreparedStack | any; -/** - * Runtime metadata for deployment state persistence - */ -export type SyncListResponseRuntimeMetadata = { +export const SyncListResponsePreparedStackTypeStringList = { + StringList: "stringList", +} as const; +export type SyncListResponsePreparedStackTypeStringList = ClosedEnum< + typeof SyncListResponsePreparedStackTypeStringList +>; + +export type SyncListResponsePreparedStackDefaultStringList = { + type: SyncListResponsePreparedStackTypeStringList; /** - * Hash of the environment variables snapshot that was last synced to the vault - * - * @remarks - * Used to avoid redundant sync operations during incremental deployment + * String list default. */ - lastSyncedEnvVarsHash?: string | null | undefined; + value: Array; +}; + +export const SyncListResponsePreparedStackTypeBoolean = { + Boolean: "boolean", +} as const; +export type SyncListResponsePreparedStackTypeBoolean = ClosedEnum< + typeof SyncListResponsePreparedStackTypeBoolean +>; + +export type SyncListResponsePreparedStackDefaultBoolean = { + type: SyncListResponsePreparedStackTypeBoolean; /** - * Exact vault keys owned by the deployment secret synchronizer. This - * - * @remarks - * inventory lets a later snapshot delete removed keys without listing or - * touching unrelated values in the same vault. + * Boolean default. */ - lastSyncedSecretNames?: Array | undefined; - preparedStack?: SyncListResponsePreparedStack | any | null | undefined; + value: boolean; +}; + +export const SyncListResponsePreparedStackTypeNumber = { + Number: "number", +} as const; +export type SyncListResponsePreparedStackTypeNumber = ClosedEnum< + typeof SyncListResponsePreparedStackTypeNumber +>; + +export type SyncListResponsePreparedStackDefaultNumber = { + type: SyncListResponsePreparedStackTypeNumber; /** - * Whether cross-account registry access has been successfully granted. - * - * @remarks - * Set to true after the manager successfully sets the ECR/GAR repo policy - * for this deployment's target account. Prevents redundant API calls on - * every reconcile tick. + * Number default. */ - registryAccessGranted?: boolean | undefined; + value: string; +}; + +export const SyncListResponsePreparedStackTypeString = { + String: "string", +} as const; +export type SyncListResponsePreparedStackTypeString = ClosedEnum< + typeof SyncListResponsePreparedStackTypeString +>; + +export type SyncListResponsePreparedStackDefaultString = { + type: SyncListResponsePreparedStackTypeString; + /** + * String default. + */ + value: string; }; +export type SyncListResponsePreparedStackDefaultUnion = + | SyncListResponsePreparedStackDefaultString + | SyncListResponsePreparedStackDefaultNumber + | SyncListResponsePreparedStackDefaultBoolean + | SyncListResponsePreparedStackDefaultStringList + | any; + /** - * Setup source that imported this deployment + * Environment variable handling for a stack input mapping. */ -export const SyncListResponseImportSource = { - Cloudformation: "cloudformation", - Terraform: "terraform", - Helm: "helm", +export const SyncListResponsePreparedStackTypeEnvEnum = { + Plain: "plain", + Secret: "secret", } as const; /** - * Setup source that imported this deployment + * Environment variable handling for a stack input mapping. */ -export type SyncListResponseImportSource = ClosedEnum< - typeof SyncListResponseImportSource +export type SyncListResponsePreparedStackTypeEnvEnum = ClosedEnum< + typeof SyncListResponsePreparedStackTypeEnvEnum >; +export type SyncListResponsePreparedStackTypeUnion = + | SyncListResponsePreparedStackTypeEnvEnum + | any; + /** - * Setup method that created the deployment record and owns setup-time resources. + * How a resolved stack input is injected into runtime environment variables. */ -export const SyncListResponseSetupMethod = { - Cloudformation: "cloudformation", - GoogleOauth: "google-oauth", - Terraform: "terraform", - Helm: "helm", - Cli: "cli", - Manual: "manual", +export type SyncListResponsePreparedStackEnv = { + /** + * Environment variable name. + */ + name: string; + /** + * Target resource IDs or patterns. None means every env-capable resource. + */ + targetResources?: Array | null | undefined; + type?: SyncListResponsePreparedStackTypeEnvEnum | any | null | undefined; +}; + +/** + * Primitive stack input kind. + */ +export const SyncListResponsePreparedStackKind = { + String: "string", + Secret: "secret", + Number: "number", + Integer: "integer", + Boolean: "boolean", + Enum: "enum", + StringList: "stringList", } as const; /** - * Setup method that created the deployment record and owns setup-time resources. + * Primitive stack input kind. */ -export type SyncListResponseSetupMethod = ClosedEnum< - typeof SyncListResponseSetupMethod +export type SyncListResponsePreparedStackKind = ClosedEnum< + typeof SyncListResponsePreparedStackKind >; /** - * Latest error information if the deployment is in a failed state + * Represents the target cloud platform. */ -export type SyncListResponseError = { +export const SyncListResponsePreparedStackPlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Machines: "machines", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type SyncListResponsePreparedStackPlatform = ClosedEnum< + typeof SyncListResponsePreparedStackPlatform +>; + +/** + * Who can provide a stack input value. + */ +export const SyncListResponsePreparedStackProvidedBy = { + Developer: "developer", + Deployer: "deployer", +} as const; +/** + * Who can provide a stack input value. + */ +export type SyncListResponsePreparedStackProvidedBy = ClosedEnum< + typeof SyncListResponsePreparedStackProvidedBy +>; + +/** + * Portable stack input validation constraints. + */ +export type SyncListResponsePreparedStackValidation = { /** - * A unique identifier for the type of error. - * - * @remarks - * - * This should be a short, machine-readable string that can be used - * by clients to programmatically handle different error types. - * Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" + * Semantic format hint such as url. */ - code: string; + format?: string | null | undefined; /** - * Additional diagnostic information about the error context. - * - * @remarks - * - * This optional field can contain structured data providing more details - * about the error, such as validation errors, request parameters that - * caused the issue, or other relevant context information. + * Maximum number. */ - context?: any | null | undefined; + max?: string | null | undefined; /** - * Optional human-facing remediation hint. + * Maximum string-list items. */ - hint?: string | null | undefined; + maxItems?: number | null | undefined; /** - * HTTP status code for this error. - * - * @remarks - * - * Used when converting the error to an HTTP response. If None, falls back to - * the error type's default status code or 500. + * Maximum string length. */ - httpStatusCode?: number | null | undefined; + maxLength?: number | null | undefined; /** - * Indicates if this is an internal error that should not be exposed to users. - * - * @remarks - * - * When `true`, this error contains sensitive information or implementation - * details that should not be shown to end-users. Such errors should be - * logged for debugging but replaced with generic error messages in responses. + * Minimum number. */ - internal: boolean; + min?: string | null | undefined; /** - * Human-readable error message. - * - * @remarks - * - * This message should be clear and actionable for developers or end-users, - * providing context about what went wrong and potentially how to fix it. + * Minimum string-list items. */ - message: string; + minItems?: number | null | undefined; /** - * Indicates whether the operation that caused the error should be retried. - * - * @remarks - * - * When `true`, the error is transient and the operation might succeed - * if attempted again. When `false`, retrying the same operation is - * unlikely to succeed without changes. + * Minimum string length. */ - retryable: boolean; + minLength?: number | null | undefined; /** - * The underlying error that caused this error, creating an error chain. - * - * @remarks - * - * This allows for proper error propagation and debugging by maintaining - * the full context of how an error occurred through multiple layers - * of an application. + * Portable whole-value regex pattern. */ - source?: any | null | undefined; -}; - -export const SyncListResponsePlatformKubernetes = { - Kubernetes: "kubernetes", -} as const; -export type SyncListResponsePlatformKubernetes = ClosedEnum< - typeof SyncListResponsePlatformKubernetes ->; - -export type SyncListResponseManagementConfigKubernetes = { - platform: SyncListResponsePlatformKubernetes; + pattern?: string | null | undefined; + /** + * Allowed string enum values. + */ + values?: Array | null | undefined; }; -export const SyncListResponseManagementConfigPlatformAzure = { - Azure: "azure", -} as const; -export type SyncListResponseManagementConfigPlatformAzure = ClosedEnum< - typeof SyncListResponseManagementConfigPlatformAzure ->; +export type SyncListResponsePreparedStackValidationUnion = + | SyncListResponsePreparedStackValidation + | any; /** - * Azure management configuration extracted from stack settings + * Stack input definition serialized into a release stack. */ -export type SyncListResponseManagementConfigAzure = { +export type SyncListResponsePreparedStackInput = { + default?: + | SyncListResponsePreparedStackDefaultString + | SyncListResponsePreparedStackDefaultNumber + | SyncListResponsePreparedStackDefaultBoolean + | SyncListResponsePreparedStackDefaultStringList + | any + | null + | undefined; /** - * The managing Azure Tenant ID for cross-tenant access + * Human-facing helper text. */ - managingTenantId: string; + description: string; /** - * OIDC issuer URL trusted by the target-side managed identity. + * Runtime env-var mappings for v1 input resolution. */ - oidcIssuer: string; + env?: Array | undefined; /** - * OIDC subject claim trusted by the target-side managed identity. + * Stable input ID used by CLI/API calls. */ - oidcSubject: string; - platform: SyncListResponseManagementConfigPlatformAzure; + id: string; + /** + * Primitive stack input kind. + */ + kind: SyncListResponsePreparedStackKind; + /** + * Human-facing field label. + */ + label: string; + /** + * Example placeholder shown in UI. + */ + placeholder?: string | null | undefined; + /** + * Platforms where this input applies. + */ + platforms?: Array | null | undefined; + /** + * Who can provide this value. + */ + providedBy: Array; + /** + * Whether a resolved value is required before deployment can proceed. + */ + required: boolean; + validation?: SyncListResponsePreparedStackValidation | any | null | undefined; }; -export const SyncListResponseManagementConfigPlatformGcp = { - Gcp: "gcp", +export const SyncListResponsePreparedStackManagementEnum = { + Auto: "auto", } as const; -export type SyncListResponseManagementConfigPlatformGcp = ClosedEnum< - typeof SyncListResponseManagementConfigPlatformGcp +export type SyncListResponsePreparedStackManagementEnum = ClosedEnum< + typeof SyncListResponsePreparedStackManagementEnum >; /** - * GCP management configuration extracted from stack settings + * AWS-specific binding specification */ -export type SyncListResponseManagementConfigGcp = { +export type SyncListResponsePreparedStackOverrideAwResource = { /** - * Service account email for management roles + * Optional condition for additional filtering (rare) */ - serviceAccountEmail: string; - platform: SyncListResponseManagementConfigPlatformGcp; + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; }; -export const SyncListResponseManagementConfigPlatformAws = { - Aws: "aws", -} as const; -export type SyncListResponseManagementConfigPlatformAws = ClosedEnum< - typeof SyncListResponseManagementConfigPlatformAws ->; - /** - * AWS management configuration extracted from stack settings + * AWS-specific binding specification */ -export type SyncListResponseManagementConfigAws = { +export type SyncListResponsePreparedStackOverrideAwStack = { /** - * The managing AWS IAM role ARN that can assume cross-account roles + * Optional condition for additional filtering (rare) */ - managingRoleArn: string; - platform: SyncListResponseManagementConfigPlatformAws; + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; }; /** - * Management configuration for different cloud platforms. - * - * @remarks - * - * Platform-derived configuration for cross-account/cross-tenant access. - * This is NOT user-specified - it's derived from the Manager's ServiceAccount. + * Generic binding configuration for permissions */ -export type SyncListResponseManagementConfigUnion = - | SyncListResponseManagementConfigAzure - | SyncListResponseManagementConfigAws - | SyncListResponseManagementConfigGcp - | SyncListResponseManagementConfigKubernetes - | any; - -export type SyncListResponseDeployment = { +export type SyncListResponsePreparedStackOverrideAwBinding = { /** - * Unique identifier for the deployment. + * AWS-specific binding specification */ - id: string; + resource?: SyncListResponsePreparedStackOverrideAwResource | undefined; /** - * Deployment name. + * AWS-specific binding specification */ - name: string; + stack?: SyncListResponsePreparedStackOverrideAwStack | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const SyncListResponsePreparedStackOverrideEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type SyncListResponsePreparedStackOverrideEffect = ClosedEnum< + typeof SyncListResponsePreparedStackOverrideEffect +>; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncListResponsePreparedStackOverrideAwGrant = { /** - * Public subdomain for auto-generated domains + * AWS IAM actions (only for AWS) */ - publicSubdomain?: string | null | undefined; + actions?: Array | null | undefined; /** - * Deployment status in the deployment lifecycle. - * - * @remarks - * - * For observe-only deployments with no release or stack state, `Running` - * means the Operator is attached. Connectivity comes from `lastHeartbeatAt`; - * resource health comes from inventory and resource heartbeat data. + * Azure actions (only for Azure) */ - status: SyncListResponseStatus; + dataActions?: Array | null | undefined; /** - * Unique identifier for the project. + * GCP permissions that require an exact residual custom role. */ - projectId: string; + permissions?: Array | null | undefined; /** - * Target platform for the deployment + * Provider predefined roles to bind directly. */ - platform: SyncListResponsePlatform; + predefinedRoles?: Array | null | undefined; /** - * Underlying cloud platform for Kubernetes deployments. + * GCP residual custom permissions to pair with predefined roles. */ - basePlatform?: SyncListResponseBasePlatform | null | undefined; + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type SyncListResponsePreparedStackOverrideAw = { /** - * Cloud region or location for the deployment. + * Generic binding configuration for permissions */ - region?: string | null | undefined; + binding: SyncListResponsePreparedStackOverrideAwBinding; /** - * DeploymentState protocol version owned by the runtime/manager + * Short admin-facing description of why this entry exists. */ - deploymentProtocolVersion: number; + description?: string | null | undefined; /** - * ID of deployment group this deployment belongs to + * IAM effect. Defaults to Allow. */ - deploymentGroupId: string; + effect?: SyncListResponsePreparedStackOverrideEffect | undefined; /** - * Operational purpose of this deployment within its customer environment. + * Grant permissions for a specific cloud platform */ - purpose: DeploymentPurpose; + grant: SyncListResponsePreparedStackOverrideAwGrant; /** - * Cloud environment information + * Stable admin-facing label for this permission entry. */ - environmentInfo?: - | SyncListResponseEnvironmentInfoGcp - | SyncListResponseEnvironmentInfoAzure - | SyncListResponseEnvironmentInfoLocal - | SyncListResponseEnvironmentInfoAws - | SyncListResponseEnvironmentInfoTest - | any - | null - | undefined; + label?: string | null | undefined; +}; + +/** + * Azure-specific binding specification + */ +export type SyncListResponsePreparedStackOverrideAzureResource = { /** - * User-provided configuration (network, deployment model, approvals) + * Scope (subscription/resource group/resource level) */ - stackSettings: SyncListResponseStackSettings; + scope: string; +}; + +/** + * Azure-specific binding specification + */ +export type SyncListResponsePreparedStackOverrideAzureStack = { /** - * State of infrastructure components managed by this deployment + * Scope (subscription/resource group/resource level) */ - stackState?: SyncListResponseStackState | null | undefined; + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncListResponsePreparedStackOverrideAzureBinding = { /** - * Runtime metadata for deployment state persistence + * Azure-specific binding specification */ - runtimeMetadata?: SyncListResponseRuntimeMetadata | null | undefined; + resource?: SyncListResponsePreparedStackOverrideAzureResource | undefined; /** - * ID of the currently deployed release (actual state) + * Azure-specific binding specification */ - currentReleaseId?: string | null | undefined; + stack?: SyncListResponsePreparedStackOverrideAzureStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncListResponsePreparedStackOverrideAzureGrant = { /** - * ID of the desired release for deployment/update (desired state) + * AWS IAM actions (only for AWS) */ - desiredReleaseId?: string | null | undefined; + actions?: Array | null | undefined; /** - * ID of the pinned release + * Azure actions (only for Azure) */ - pinnedReleaseId?: string | null | undefined; + dataActions?: Array | null | undefined; /** - * Setup source that imported this deployment + * GCP permissions that require an exact residual custom role. */ - importSource?: SyncListResponseImportSource | null | undefined; + permissions?: Array | null | undefined; /** - * Setup method that created the deployment record and owns setup-time resources. + * Provider predefined roles to bind directly. */ - setupMethod?: SyncListResponseSetupMethod | null | undefined; + predefinedRoles?: Array | null | undefined; /** - * Setup method metadata needed to guide privileged teardown. + * GCP residual custom permissions to pair with predefined roles. */ - setupMetadata?: { [k: string]: any | null } | null | undefined; + residualPermissions?: Array | null | undefined; +}; + +/** + * Azure-specific platform permission configuration + */ +export type SyncListResponsePreparedStackOverrideAzure = { /** - * Imported setup target for compatibility checks + * Generic binding configuration for permissions */ - setupTarget?: string | null | undefined; + binding: SyncListResponsePreparedStackOverrideAzureBinding; /** - * Imported setup compatibility fingerprint + * Short admin-facing description of why this entry exists. */ - setupFingerprint?: string | null | undefined; + description?: string | null | undefined; /** - * Imported setup fingerprint algorithm version + * Grant permissions for a specific cloud platform */ - setupFingerprintVersion?: number | null | undefined; + grant: SyncListResponsePreparedStackOverrideAzureGrant; /** - * Display-only scope reported by the Operator manifest + * Stable admin-facing label for this permission entry. */ - operatorScope?: string | null | undefined; + label?: string | null | undefined; +}; + +/** + * GCP IAM condition + */ +export type SyncListResponsePreparedStackOverrideConditionResource = { + expression: string; + title: string; +}; + +export type SyncListResponsePreparedStackOverrideResourceConditionUnion = + | SyncListResponsePreparedStackOverrideConditionResource + | any; + +/** + * GCP-specific binding specification + */ +export type SyncListResponsePreparedStackOverrideGcpResource = { + condition?: + | SyncListResponsePreparedStackOverrideConditionResource + | any + | null + | undefined; /** - * Display-only permission tier reported by the Operator manifest + * Scope (project/resource level) */ - operatorPermission?: string | null | undefined; + scope: string; +}; + +/** + * GCP IAM condition + */ +export type SyncListResponsePreparedStackOverrideConditionStack = { + expression: string; + title: string; +}; + +export type SyncListResponsePreparedStackOverrideStackConditionUnion = + | SyncListResponsePreparedStackOverrideConditionStack + | any; + +/** + * GCP-specific binding specification + */ +export type SyncListResponsePreparedStackOverrideGcpStack = { + condition?: + | SyncListResponsePreparedStackOverrideConditionStack + | any + | null + | undefined; /** - * Version reported by the Operator + * Scope (project/resource level) */ - operatorVersion?: string | null | undefined; + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncListResponsePreparedStackOverrideGcpBinding = { /** - * Capability state reported by the Operator + * GCP-specific binding specification */ - capabilities?: Array | null | undefined; + resource?: SyncListResponsePreparedStackOverrideGcpResource | undefined; /** - * Whether a retry has been requested for a failed deployment + * GCP-specific binding specification */ - retryRequested: boolean; + stack?: SyncListResponsePreparedStackOverrideGcpStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncListResponsePreparedStackOverrideGcpGrant = { /** - * Timestamp of the last received heartbeat from the deployment + * AWS IAM actions (only for AWS) */ - lastHeartbeatAt?: Date | null | undefined; + actions?: Array | null | undefined; /** - * Latest error information if the deployment is in a failed state + * Azure actions (only for Azure) */ - error?: SyncListResponseError | null | undefined; - createdAt: Date; - updatedAt: Date; - managerId: string; + dataActions?: Array | null | undefined; /** - * Unique identifier for the workspace. + * GCP permissions that require an exact residual custom role. */ - workspaceId: string; - userEnvironmentVariables: Array | null; + permissions?: Array | null | undefined; /** - * Management configuration for different cloud platforms. - * - * @remarks - * - * Platform-derived configuration for cross-account/cross-tenant access. - * This is NOT user-specified - it's derived from the Manager's ServiceAccount. + * Provider predefined roles to bind directly. */ - managementConfig?: - | SyncListResponseManagementConfigAzure - | SyncListResponseManagementConfigAws - | SyncListResponseManagementConfigGcp - | SyncListResponseManagementConfigKubernetes - | any - | null - | undefined; - deploymentToken?: string | null | undefined; - lockedBy?: string | null | undefined; - lockedAt?: Date | null | undefined; + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; }; /** - * Full deployment records for manager operation + * GCP-specific platform permission configuration */ -export type SyncListResponse = { - deployments: Array; +export type SyncListResponsePreparedStackOverrideGcp = { + /** + * Generic binding configuration for permissions + */ + binding: SyncListResponsePreparedStackOverrideGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncListResponsePreparedStackOverrideGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; }; -/** @internal */ -export const SyncListResponseStatus$inboundSchema: z.ZodEnum< - typeof SyncListResponseStatus -> = z.enum(SyncListResponseStatus); - -/** @internal */ -export const SyncListResponsePlatform$inboundSchema: z.ZodEnum< - typeof SyncListResponsePlatform -> = z.enum(SyncListResponsePlatform); +/** + * Platform-specific permission configurations + */ +export type SyncListResponsePreparedStackOverridePlatforms = { + /** + * AWS permission configurations + */ + aws?: Array | null | undefined; + /** + * Azure permission configurations + */ + azure?: Array | null | undefined; + /** + * GCP permission configurations + */ + gcp?: Array | null | undefined; +}; -/** @internal */ -export const SyncListResponseBasePlatform$inboundSchema: z.ZodEnum< - typeof SyncListResponseBasePlatform -> = z.enum(SyncListResponseBasePlatform); +/** + * A permission set that can be applied across different cloud platforms + */ +export type SyncListResponsePreparedStackOverride = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: SyncListResponsePreparedStackOverridePlatforms; +}; -/** @internal */ -export const SyncListResponsePlatformTest$inboundSchema: z.ZodEnum< - typeof SyncListResponsePlatformTest -> = z.enum(SyncListResponsePlatformTest); +/** + * Reference to a permission set - either by name or inline definition + */ +export type SyncListResponsePreparedStackOverrideUnion = + | SyncListResponsePreparedStackOverride + | string; -/** @internal */ -export const SyncListResponseEnvironmentInfoTest$inboundSchema: z.ZodType< - SyncListResponseEnvironmentInfoTest, - unknown -> = z.object({ - testId: z.string(), - platform: SyncListResponsePlatformTest$inboundSchema, -}); +export type SyncListResponsePreparedStackManagement2 = { + /** + * Permission profile that maps resources to permission sets + * + * @remarks + * Key can be "*" for all resources or resource name for specific resource + */ + override: { + [k: string]: Array; + }; +}; -export function syncListResponseEnvironmentInfoTestFromJSON( +/** + * AWS-specific binding specification + */ +export type SyncListResponsePreparedStackExtendAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type SyncListResponsePreparedStackExtendAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncListResponsePreparedStackExtendAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: SyncListResponsePreparedStackExtendAwResource | undefined; + /** + * AWS-specific binding specification + */ + stack?: SyncListResponsePreparedStackExtendAwStack | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const SyncListResponsePreparedStackExtendEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type SyncListResponsePreparedStackExtendEffect = ClosedEnum< + typeof SyncListResponsePreparedStackExtendEffect +>; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncListResponsePreparedStackExtendAwGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type SyncListResponsePreparedStackExtendAw = { + /** + * Generic binding configuration for permissions + */ + binding: SyncListResponsePreparedStackExtendAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: SyncListResponsePreparedStackExtendEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncListResponsePreparedStackExtendAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Azure-specific binding specification + */ +export type SyncListResponsePreparedStackExtendAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Azure-specific binding specification + */ +export type SyncListResponsePreparedStackExtendAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncListResponsePreparedStackExtendAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: SyncListResponsePreparedStackExtendAzureResource | undefined; + /** + * Azure-specific binding specification + */ + stack?: SyncListResponsePreparedStackExtendAzureStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncListResponsePreparedStackExtendAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * Azure-specific platform permission configuration + */ +export type SyncListResponsePreparedStackExtendAzure = { + /** + * Generic binding configuration for permissions + */ + binding: SyncListResponsePreparedStackExtendAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncListResponsePreparedStackExtendAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * GCP IAM condition + */ +export type SyncListResponsePreparedStackExtendConditionResource = { + expression: string; + title: string; +}; + +export type SyncListResponsePreparedStackExtendResourceConditionUnion = + | SyncListResponsePreparedStackExtendConditionResource + | any; + +/** + * GCP-specific binding specification + */ +export type SyncListResponsePreparedStackExtendGcpResource = { + condition?: + | SyncListResponsePreparedStackExtendConditionResource + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * GCP IAM condition + */ +export type SyncListResponsePreparedStackExtendConditionStack = { + expression: string; + title: string; +}; + +export type SyncListResponsePreparedStackExtendStackConditionUnion = + | SyncListResponsePreparedStackExtendConditionStack + | any; + +/** + * GCP-specific binding specification + */ +export type SyncListResponsePreparedStackExtendGcpStack = { + condition?: + | SyncListResponsePreparedStackExtendConditionStack + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncListResponsePreparedStackExtendGcpBinding = { + /** + * GCP-specific binding specification + */ + resource?: SyncListResponsePreparedStackExtendGcpResource | undefined; + /** + * GCP-specific binding specification + */ + stack?: SyncListResponsePreparedStackExtendGcpStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncListResponsePreparedStackExtendGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * GCP-specific platform permission configuration + */ +export type SyncListResponsePreparedStackExtendGcp = { + /** + * Generic binding configuration for permissions + */ + binding: SyncListResponsePreparedStackExtendGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncListResponsePreparedStackExtendGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Platform-specific permission configurations + */ +export type SyncListResponsePreparedStackExtendPlatforms = { + /** + * AWS permission configurations + */ + aws?: Array | null | undefined; + /** + * Azure permission configurations + */ + azure?: Array | null | undefined; + /** + * GCP permission configurations + */ + gcp?: Array | null | undefined; +}; + +/** + * A permission set that can be applied across different cloud platforms + */ +export type SyncListResponsePreparedStackExtend = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: SyncListResponsePreparedStackExtendPlatforms; +}; + +/** + * Reference to a permission set - either by name or inline definition + */ +export type SyncListResponsePreparedStackExtendUnion = + | SyncListResponsePreparedStackExtend + | string; + +export type SyncListResponsePreparedStackManagement1 = { + /** + * Permission profile that maps resources to permission sets + * + * @remarks + * Key can be "*" for all resources or resource name for specific resource + */ + extend: { [k: string]: Array }; +}; + +/** + * Management permissions configuration for stack management access + */ +export type SyncListResponsePreparedStackManagementUnion = + | SyncListResponsePreparedStackManagement1 + | SyncListResponsePreparedStackManagement2 + | SyncListResponsePreparedStackManagementEnum; + +/** + * AWS-specific binding specification + */ +export type SyncListResponsePreparedStackProfileAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type SyncListResponsePreparedStackProfileAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncListResponsePreparedStackProfileAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: SyncListResponsePreparedStackProfileAwResource | undefined; + /** + * AWS-specific binding specification + */ + stack?: SyncListResponsePreparedStackProfileAwStack | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const SyncListResponsePreparedStackProfileEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type SyncListResponsePreparedStackProfileEffect = ClosedEnum< + typeof SyncListResponsePreparedStackProfileEffect +>; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncListResponsePreparedStackProfileAwGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type SyncListResponsePreparedStackProfileAw = { + /** + * Generic binding configuration for permissions + */ + binding: SyncListResponsePreparedStackProfileAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: SyncListResponsePreparedStackProfileEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncListResponsePreparedStackProfileAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Azure-specific binding specification + */ +export type SyncListResponsePreparedStackProfileAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Azure-specific binding specification + */ +export type SyncListResponsePreparedStackProfileAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncListResponsePreparedStackProfileAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: SyncListResponsePreparedStackProfileAzureResource | undefined; + /** + * Azure-specific binding specification + */ + stack?: SyncListResponsePreparedStackProfileAzureStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncListResponsePreparedStackProfileAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * Azure-specific platform permission configuration + */ +export type SyncListResponsePreparedStackProfileAzure = { + /** + * Generic binding configuration for permissions + */ + binding: SyncListResponsePreparedStackProfileAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncListResponsePreparedStackProfileAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * GCP IAM condition + */ +export type SyncListResponsePreparedStackProfileConditionResource = { + expression: string; + title: string; +}; + +export type SyncListResponsePreparedStackProfileResourceConditionUnion = + | SyncListResponsePreparedStackProfileConditionResource + | any; + +/** + * GCP-specific binding specification + */ +export type SyncListResponsePreparedStackProfileGcpResource = { + condition?: + | SyncListResponsePreparedStackProfileConditionResource + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * GCP IAM condition + */ +export type SyncListResponsePreparedStackProfileConditionStack = { + expression: string; + title: string; +}; + +export type SyncListResponsePreparedStackProfileStackConditionUnion = + | SyncListResponsePreparedStackProfileConditionStack + | any; + +/** + * GCP-specific binding specification + */ +export type SyncListResponsePreparedStackProfileGcpStack = { + condition?: + | SyncListResponsePreparedStackProfileConditionStack + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncListResponsePreparedStackProfileGcpBinding = { + /** + * GCP-specific binding specification + */ + resource?: SyncListResponsePreparedStackProfileGcpResource | undefined; + /** + * GCP-specific binding specification + */ + stack?: SyncListResponsePreparedStackProfileGcpStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncListResponsePreparedStackProfileGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * GCP-specific platform permission configuration + */ +export type SyncListResponsePreparedStackProfileGcp = { + /** + * Generic binding configuration for permissions + */ + binding: SyncListResponsePreparedStackProfileGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncListResponsePreparedStackProfileGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Platform-specific permission configurations + */ +export type SyncListResponsePreparedStackProfilePlatforms = { + /** + * AWS permission configurations + */ + aws?: Array | null | undefined; + /** + * Azure permission configurations + */ + azure?: Array | null | undefined; + /** + * GCP permission configurations + */ + gcp?: Array | null | undefined; +}; + +/** + * A permission set that can be applied across different cloud platforms + */ +export type SyncListResponsePreparedStackProfile = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: SyncListResponsePreparedStackProfilePlatforms; +}; + +/** + * Reference to a permission set - either by name or inline definition + */ +export type SyncListResponsePreparedStackProfileUnion = + | SyncListResponsePreparedStackProfile + | string; + +/** + * Combined permissions configuration that contains both profiles and management + */ +export type SyncListResponsePreparedStackPermissions = { + /** + * Management permissions configuration for stack management access + */ + management?: + | SyncListResponsePreparedStackManagement1 + | SyncListResponsePreparedStackManagement2 + | SyncListResponsePreparedStackManagementEnum + | undefined; + /** + * Permission profiles that define access control for compute services + * + * @remarks + * Key is the profile name, value is the permission configuration + */ + profiles: { + [k: string]: { + [k: string]: Array; + }; + }; +}; + +/** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ +export type SyncListResponsePreparedStackConfig = { + /** + * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. + */ + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; +}; + +/** + * Reference to a resource by its stable id and resource type. + */ +export type SyncListResponsePreparedStackDependency = { + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; +}; + +/** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ +export const SyncListResponsePreparedStackLifecycle = { + Frozen: "frozen", + Live: "live", +} as const; +/** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ +export type SyncListResponsePreparedStackLifecycle = ClosedEnum< + typeof SyncListResponsePreparedStackLifecycle +>; + +export type SyncListResponsePreparedStackResources = { + /** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ + config: SyncListResponsePreparedStackConfig; + /** + * Additional dependencies for this resource beyond those defined in the resource itself. + * + * @remarks + * The total dependencies are: resource.get_dependencies() + this list + */ + dependencies: Array; + /** + * Id of the boolean stack input that decides whether this resource is + * + * @remarks + * 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. + */ + enabledWhen?: string | null | undefined; + /** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ + lifecycle: SyncListResponsePreparedStackLifecycle; + /** + * Enable remote bindings for this resource (BYOB use case). + * + * @remarks + * When true, binding params are synced to StackState's `remote_binding_params`. + * Default: false (prevents sensitive data in synced state). + */ + remoteAccess?: boolean | undefined; +}; + +/** + * Represents the target cloud platform. + */ +export const SyncListResponsePreparedStackSupportedPlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Machines: "machines", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type SyncListResponsePreparedStackSupportedPlatform = ClosedEnum< + typeof SyncListResponsePreparedStackSupportedPlatform +>; + +/** + * A bag of resources, unaware of any cloud. + */ +export type SyncListResponsePreparedStack = { + /** + * Unique identifier for the stack + */ + id: string; + /** + * Input definitions required before setup or deployment can proceed. + */ + inputs?: Array | undefined; + /** + * Combined permissions configuration that contains both profiles and management + */ + permissions?: SyncListResponsePreparedStackPermissions | undefined; + /** + * Map of resource IDs to their configurations and lifecycle settings + */ + resources: { [k: string]: SyncListResponsePreparedStackResources }; + /** + * Which platforms this stack supports. When None, all platforms are supported. + */ + supportedPlatforms?: + | Array + | null + | undefined; +}; + +export type SyncListResponsePreparedStackUnion = + | SyncListResponsePreparedStack + | any; + +/** + * One-shot authority for a setup re-import to replace setup-owned resources. + */ +export type SyncListResponseSetupUpdateAuthorization = { + /** + * Frozen resource projection from the last successful deployment. + */ + baselineFrozenDigest: string; + /** + * Unique revision used by persistence layers for compare-and-swap updates. + */ + nonce: string; + /** + * Release whose stack was prepared by setup. + */ + releaseId: string; + /** + * Exact setup artifact revision that authored this authority. + */ + setupFingerprint: string; + /** + * Setup fingerprint contract version. + */ + setupFingerprintVersion: number; + /** + * Stable setup target recorded on the imported deployment. + */ + setupTarget: string; + /** + * Frozen resource projection prepared by the setup re-import. + */ + targetFrozenDigest: string; +}; + +export type SyncListResponseSetupUpdateAuthorizationUnion = + | SyncListResponseSetupUpdateAuthorization + | any; + +/** + * Runtime metadata for deployment state persistence + */ +export type SyncListResponseRuntimeMetadata = { + /** + * Actor that owns structural work during the initial setup phase. + */ + initialSetupAuthority?: SyncListResponseInitialSetupAuthority | undefined; + /** + * Hash of the environment variables snapshot that was last synced to the vault + * + * @remarks + * Used to avoid redundant sync operations during incremental deployment + */ + lastSyncedEnvVarsHash?: string | null | undefined; + /** + * Exact vault keys owned by the deployment secret synchronizer. This + * + * @remarks + * inventory lets a later snapshot delete removed keys without listing or + * touching unrelated values in the same vault. + */ + lastSyncedSecretNames?: Array | undefined; + pendingPreparedStack?: + | SyncListResponsePendingPreparedStack + | any + | null + | undefined; + /** + * Canonical resolved answers for inputs that gate Frozen resources, + * + * @remarks + * keyed by input id, recorded when the deployment is created or its + * setup import registers. + * + * A frozen gate's answer is fixed for the deployment's lifetime: the + * update path refuses input values that conflict with these, and a Live + * resource sharing such an input resolves the persisted answer forever. + */ + persistedGateAnswers?: { [k: string]: boolean } | undefined; + preparedStack?: SyncListResponsePreparedStack | any | null | undefined; + /** + * Whether cross-account registry access has been successfully granted. + * + * @remarks + * Set to true after the manager successfully sets the ECR/GAR repo policy + * for this deployment's target account. Prevents redundant API calls on + * every reconcile tick. + */ + registryAccessGranted?: boolean | undefined; + setupUpdateAuthorization?: + | SyncListResponseSetupUpdateAuthorization + | any + | null + | undefined; +}; + +/** + * Setup source that imported this deployment + */ +export const SyncListResponseImportSource = { + Cloudformation: "cloudformation", + Terraform: "terraform", + Helm: "helm", +} as const; +/** + * Setup source that imported this deployment + */ +export type SyncListResponseImportSource = ClosedEnum< + typeof SyncListResponseImportSource +>; + +/** + * Setup method that created the deployment record and owns setup-time resources. + */ +export const SyncListResponseSetupMethod = { + Cloudformation: "cloudformation", + GoogleOauth: "google-oauth", + Terraform: "terraform", + Helm: "helm", + Cli: "cli", + Manual: "manual", +} as const; +/** + * Setup method that created the deployment record and owns setup-time resources. + */ +export type SyncListResponseSetupMethod = ClosedEnum< + typeof SyncListResponseSetupMethod +>; + +/** + * Latest error information if the deployment is in a failed state + */ +export type SyncListResponseError = { + /** + * A unique identifier for the type of error. + * + * @remarks + * + * This should be a short, machine-readable string that can be used + * by clients to programmatically handle different error types. + * Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" + */ + code: string; + /** + * Additional diagnostic information about the error context. + * + * @remarks + * + * This optional field can contain structured data providing more details + * about the error, such as validation errors, request parameters that + * caused the issue, or other relevant context information. + */ + context?: any | null | undefined; + /** + * Optional human-facing remediation hint. + */ + hint?: string | null | undefined; + /** + * HTTP status code for this error. + * + * @remarks + * + * Used when converting the error to an HTTP response. If None, falls back to + * the error type's default status code or 500. + */ + httpStatusCode?: number | null | undefined; + /** + * Indicates if this is an internal error that should not be exposed to users. + * + * @remarks + * + * When `true`, this error contains sensitive information or implementation + * details that should not be shown to end-users. Such errors should be + * logged for debugging but replaced with generic error messages in responses. + */ + internal: boolean; + /** + * Human-readable error message. + * + * @remarks + * + * This message should be clear and actionable for developers or end-users, + * providing context about what went wrong and potentially how to fix it. + */ + message: string; + /** + * Indicates whether the operation that caused the error should be retried. + * + * @remarks + * + * When `true`, the error is transient and the operation might succeed + * if attempted again. When `false`, retrying the same operation is + * unlikely to succeed without changes. + */ + retryable: boolean; + /** + * The underlying error that caused this error, creating an error chain. + * + * @remarks + * + * This allows for proper error propagation and debugging by maintaining + * the full context of how an error occurred through multiple layers + * of an application. + */ + source?: any | null | undefined; +}; + +/** + * Durable progress for deployment updates + */ +export type SyncListResponseUpdateState = { + active: DeploymentUpdateOperationSummary | null; + next: DeploymentUpdateOperationSummary | null; + latest: DeploymentUpdateOperationSummary | null; +}; + +export const SyncListResponsePlatformKubernetes = { + Kubernetes: "kubernetes", +} as const; +export type SyncListResponsePlatformKubernetes = ClosedEnum< + typeof SyncListResponsePlatformKubernetes +>; + +export type SyncListResponseManagementConfigKubernetes = { + platform: SyncListResponsePlatformKubernetes; +}; + +export const SyncListResponseManagementConfigPlatformAzure = { + Azure: "azure", +} as const; +export type SyncListResponseManagementConfigPlatformAzure = ClosedEnum< + typeof SyncListResponseManagementConfigPlatformAzure +>; + +/** + * Azure management configuration extracted from stack settings + */ +export type SyncListResponseManagementConfigAzure = { + /** + * The managing Azure Tenant ID for cross-tenant access + */ + managingTenantId: string; + /** + * OIDC issuer URL trusted by the target-side managed identity. + */ + oidcIssuer: string; + /** + * OIDC subject claim trusted by the target-side managed identity. + */ + oidcSubject: string; + platform: SyncListResponseManagementConfigPlatformAzure; +}; + +export const SyncListResponseManagementConfigPlatformGcp = { + Gcp: "gcp", +} as const; +export type SyncListResponseManagementConfigPlatformGcp = ClosedEnum< + typeof SyncListResponseManagementConfigPlatformGcp +>; + +/** + * GCP management configuration extracted from stack settings + */ +export type SyncListResponseManagementConfigGcp = { + /** + * Service account email for management roles + */ + serviceAccountEmail: string; + platform: SyncListResponseManagementConfigPlatformGcp; +}; + +export const SyncListResponseManagementConfigPlatformAws = { + Aws: "aws", +} as const; +export type SyncListResponseManagementConfigPlatformAws = ClosedEnum< + typeof SyncListResponseManagementConfigPlatformAws +>; + +/** + * AWS management configuration extracted from stack settings + */ +export type SyncListResponseManagementConfigAws = { + /** + * The managing AWS IAM role ARN that can assume cross-account roles + */ + managingRoleArn: string; + platform: SyncListResponseManagementConfigPlatformAws; +}; + +/** + * Management configuration for different cloud platforms. + * + * @remarks + * + * Platform-derived configuration for cross-account/cross-tenant access. + * This is NOT user-specified - it's derived from the Manager's ServiceAccount. + */ +export type SyncListResponseManagementConfigUnion = + | SyncListResponseManagementConfigAzure + | SyncListResponseManagementConfigAws + | SyncListResponseManagementConfigGcp + | SyncListResponseManagementConfigKubernetes + | any; + +export type SyncListResponseDeployment = { + /** + * Unique identifier for the deployment. + */ + id: string; + /** + * Deployment name. + */ + name: string; + /** + * Public subdomain for auto-generated domains + */ + publicSubdomain?: string | null | undefined; + /** + * Deployment status in the deployment lifecycle. + * + * @remarks + * + * For observe-only deployments with no release or stack state, `Running` + * means the Operator is attached. Connectivity comes from `lastHeartbeatAt`; + * resource health comes from inventory and resource heartbeat data. + */ + status: SyncListResponseStatus; + /** + * Unique identifier for the project. + */ + projectId: string; + /** + * Target platform for the deployment + */ + platform: SyncListResponsePlatform; + /** + * Underlying cloud platform for Kubernetes deployments. + */ + basePlatform?: SyncListResponseBasePlatform | null | undefined; + /** + * Cloud region or location for the deployment. + */ + region?: string | null | undefined; + /** + * DeploymentState protocol version owned by the runtime/manager + */ + deploymentProtocolVersion: number; + /** + * ID of deployment group this deployment belongs to + */ + deploymentGroupId: string; + /** + * Operational purpose of this deployment within its customer environment. + */ + purpose: DeploymentPurpose; + /** + * Cloud environment information + */ + environmentInfo?: + | SyncListResponseEnvironmentInfoGcp + | SyncListResponseEnvironmentInfoAzure + | SyncListResponseEnvironmentInfoLocal + | SyncListResponseEnvironmentInfoAws + | SyncListResponseEnvironmentInfoTest + | any + | null + | undefined; + /** + * User-provided configuration (network, deployment model, approvals) + */ + stackSettings: SyncListResponseStackSettings; + /** + * State of infrastructure components managed by this deployment + */ + stackState?: SyncListResponseStackState | null | undefined; + /** + * Runtime metadata for deployment state persistence + */ + runtimeMetadata?: SyncListResponseRuntimeMetadata | null | undefined; + /** + * ID of the currently deployed release (actual state) + */ + currentReleaseId?: string | null | undefined; + /** + * ID of the desired release for deployment/update (desired state) + */ + desiredReleaseId?: string | null | undefined; + /** + * ID of the pinned release + */ + pinnedReleaseId?: string | null | undefined; + releaseChannel: string; + /** + * Setup source that imported this deployment + */ + importSource?: SyncListResponseImportSource | null | undefined; + /** + * Setup method that created the deployment record and owns setup-time resources. + */ + setupMethod?: SyncListResponseSetupMethod | null | undefined; + /** + * Setup method metadata needed to guide privileged teardown. + */ + setupMetadata?: { [k: string]: any | null } | null | undefined; + /** + * Imported setup target for compatibility checks + */ + setupTarget?: string | null | undefined; + /** + * Imported setup compatibility fingerprint + */ + setupFingerprint?: string | null | undefined; + /** + * Imported setup fingerprint algorithm version + */ + setupFingerprintVersion?: number | null | undefined; + /** + * Display-only scope reported by the Operator manifest + */ + operatorScope?: string | null | undefined; + /** + * Display-only permission tier reported by the Operator manifest + */ + operatorPermission?: string | null | undefined; + /** + * Version reported by the Operator + */ + operatorVersion?: string | null | undefined; + /** + * Capability state reported by the Operator + */ + capabilities?: Array | null | undefined; + /** + * Whether a retry has been requested for a failed deployment + */ + retryRequested: boolean; + /** + * Timestamp of the last received heartbeat from the deployment + */ + lastHeartbeatAt?: Date | null | undefined; + /** + * Latest error information if the deployment is in a failed state + */ + error?: SyncListResponseError | null | undefined; + /** + * Durable progress for deployment updates + */ + updateState?: SyncListResponseUpdateState | undefined; + createdAt: Date; + updatedAt: Date; + managerId: string; + /** + * Unique identifier for the workspace. + */ + workspaceId: string; + userEnvironmentVariables: Array | null; + /** + * Management configuration for different cloud platforms. + * + * @remarks + * + * Platform-derived configuration for cross-account/cross-tenant access. + * This is NOT user-specified - it's derived from the Manager's ServiceAccount. + */ + managementConfig?: + | SyncListResponseManagementConfigAzure + | SyncListResponseManagementConfigAws + | SyncListResponseManagementConfigGcp + | SyncListResponseManagementConfigKubernetes + | any + | null + | undefined; + deploymentToken?: string | null | undefined; + lockedBy?: string | null | undefined; + lockedAt?: Date | null | undefined; +}; + +/** + * Full deployment records for manager operation + */ +export type SyncListResponse = { + deployments: Array; +}; + +/** @internal */ +export const SyncListResponseStatus$inboundSchema: z.ZodEnum< + typeof SyncListResponseStatus +> = z.enum(SyncListResponseStatus); + +/** @internal */ +export const SyncListResponsePlatform$inboundSchema: z.ZodEnum< + typeof SyncListResponsePlatform +> = z.enum(SyncListResponsePlatform); + +/** @internal */ +export const SyncListResponseBasePlatform$inboundSchema: z.ZodEnum< + typeof SyncListResponseBasePlatform +> = z.enum(SyncListResponseBasePlatform); + +/** @internal */ +export const SyncListResponsePlatformTest$inboundSchema: z.ZodEnum< + typeof SyncListResponsePlatformTest +> = z.enum(SyncListResponsePlatformTest); + +/** @internal */ +export const SyncListResponseEnvironmentInfoTest$inboundSchema: z.ZodType< + SyncListResponseEnvironmentInfoTest, + unknown +> = z.object({ + testId: z.string(), + platform: SyncListResponsePlatformTest$inboundSchema, +}); + +export function syncListResponseEnvironmentInfoTestFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncListResponseEnvironmentInfoTest$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseEnvironmentInfoTest' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponsePlatformLocal$inboundSchema: z.ZodEnum< + typeof SyncListResponsePlatformLocal +> = z.enum(SyncListResponsePlatformLocal); + +/** @internal */ +export const SyncListResponseEnvironmentInfoLocal$inboundSchema: z.ZodType< + SyncListResponseEnvironmentInfoLocal, + unknown +> = z.object({ + arch: z.string(), + hostname: z.string(), + os: z.string(), + platform: SyncListResponsePlatformLocal$inboundSchema, +}); + +export function syncListResponseEnvironmentInfoLocalFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncListResponseEnvironmentInfoLocal$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseEnvironmentInfoLocal' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseEnvironmentInfoPlatformAzure$inboundSchema: + z.ZodEnum = z.enum( + SyncListResponseEnvironmentInfoPlatformAzure, + ); + +/** @internal */ +export const SyncListResponseEnvironmentInfoAzure$inboundSchema: z.ZodType< + SyncListResponseEnvironmentInfoAzure, + unknown +> = z.object({ + location: z.string(), + subscriptionId: z.string(), + tenantId: z.string(), + platform: SyncListResponseEnvironmentInfoPlatformAzure$inboundSchema, +}); + +export function syncListResponseEnvironmentInfoAzureFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncListResponseEnvironmentInfoAzure$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseEnvironmentInfoAzure' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseEnvironmentInfoPlatformGcp$inboundSchema: + z.ZodEnum = z.enum( + SyncListResponseEnvironmentInfoPlatformGcp, + ); + +/** @internal */ +export const SyncListResponseEnvironmentInfoGcp$inboundSchema: z.ZodType< + SyncListResponseEnvironmentInfoGcp, + unknown +> = z.object({ + projectId: z.string(), + projectNumber: z.string(), + region: z.string(), + platform: SyncListResponseEnvironmentInfoPlatformGcp$inboundSchema, +}); + +export function syncListResponseEnvironmentInfoGcpFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncListResponseEnvironmentInfoGcp$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseEnvironmentInfoGcp' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseEnvironmentInfoPlatformAws$inboundSchema: + z.ZodEnum = z.enum( + SyncListResponseEnvironmentInfoPlatformAws, + ); + +/** @internal */ +export const SyncListResponseEnvironmentInfoAws$inboundSchema: z.ZodType< + SyncListResponseEnvironmentInfoAws, + unknown +> = z.object({ + accountId: z.string(), + region: z.string(), + platform: SyncListResponseEnvironmentInfoPlatformAws$inboundSchema, +}); + +export function syncListResponseEnvironmentInfoAwsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncListResponseEnvironmentInfoAws$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseEnvironmentInfoAws' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseEnvironmentInfoUnion$inboundSchema: z.ZodType< + SyncListResponseEnvironmentInfoUnion, + unknown +> = z.union([ + z.lazy(() => SyncListResponseEnvironmentInfoGcp$inboundSchema), + z.lazy(() => SyncListResponseEnvironmentInfoAzure$inboundSchema), + z.lazy(() => SyncListResponseEnvironmentInfoLocal$inboundSchema), + z.lazy(() => SyncListResponseEnvironmentInfoAws$inboundSchema), + z.lazy(() => SyncListResponseEnvironmentInfoTest$inboundSchema), + z.any(), +]); + +export function syncListResponseEnvironmentInfoUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncListResponseEnvironmentInfoUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseEnvironmentInfoUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseFailureDomains2$inboundSchema: z.ZodType< + SyncListResponseFailureDomains2, + unknown +> = z.object({ + selectedFailureDomains: z.array(z.string()).optional(), + spread: z.int(), +}); + +export function syncListResponseFailureDomains2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseFailureDomains2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseFailureDomains2' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseFailureDomainsUnion2$inboundSchema: z.ZodType< + SyncListResponseFailureDomainsUnion2, + unknown +> = z.union([ + z.lazy(() => SyncListResponseFailureDomains2$inboundSchema), + z.any(), +]); + +export function syncListResponseFailureDomainsUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncListResponseFailureDomainsUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseFailureDomainsUnion2' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponsePoolsAutoscale$inboundSchema: z.ZodType< + SyncListResponsePoolsAutoscale, + unknown +> = z.object({ + failure_domains: z.nullable( + z.union([ + z.lazy(() => SyncListResponseFailureDomains2$inboundSchema), + z.any(), + ]), + ).optional(), + machine: z.nullable(z.string()).optional(), + max: z.int(), + min: z.int(), + mode: z.literal("autoscale"), +}).transform((v) => { + return remap$(v, { + "failure_domains": "failureDomains", + }); +}); + +export function syncListResponsePoolsAutoscaleFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponsePoolsAutoscale$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePoolsAutoscale' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseFailureDomains1$inboundSchema: z.ZodType< + SyncListResponseFailureDomains1, + unknown +> = z.object({ + selectedFailureDomains: z.array(z.string()).optional(), + spread: z.int(), +}); + +export function syncListResponseFailureDomains1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseFailureDomains1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseFailureDomains1' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseFailureDomainsUnion1$inboundSchema: z.ZodType< + SyncListResponseFailureDomainsUnion1, + unknown +> = z.union([ + z.lazy(() => SyncListResponseFailureDomains1$inboundSchema), + z.any(), +]); + +export function syncListResponseFailureDomainsUnion1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncListResponseFailureDomainsUnion1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseFailureDomainsUnion1' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponsePoolsFixed$inboundSchema: z.ZodType< + SyncListResponsePoolsFixed, + unknown +> = z.object({ + failure_domains: z.nullable( + z.union([ + z.lazy(() => SyncListResponseFailureDomains1$inboundSchema), + z.any(), + ]), + ).optional(), + machine: z.nullable(z.string()).optional(), + machines: z.int(), + mode: z.literal("fixed"), +}).transform((v) => { + return remap$(v, { + "failure_domains": "failureDomains", + }); +}); + +export function syncListResponsePoolsFixedFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponsePoolsFixed$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePoolsFixed' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponsePoolsUnion$inboundSchema: z.ZodType< + SyncListResponsePoolsUnion, + unknown +> = z.union([ + z.lazy(() => SyncListResponsePoolsFixed$inboundSchema), + z.lazy(() => SyncListResponsePoolsAutoscale$inboundSchema), +]); + +export function syncListResponsePoolsUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponsePoolsUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePoolsUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseCompute$inboundSchema: z.ZodType< + SyncListResponseCompute, + unknown +> = z.object({ + pools: z.record( + z.string(), + z.union([ + z.lazy(() => SyncListResponsePoolsFixed$inboundSchema), + z.lazy(() => SyncListResponsePoolsAutoscale$inboundSchema), + ]), + ).optional(), +}); + +export function syncListResponseComputeFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseCompute$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseCompute' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseComputeUnion$inboundSchema: z.ZodType< + SyncListResponseComputeUnion, + unknown +> = z.union([z.lazy(() => SyncListResponseCompute$inboundSchema), z.any()]); + +export function syncListResponseComputeUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseComputeUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseComputeUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseDeploymentModel$inboundSchema: z.ZodEnum< + typeof SyncListResponseDeploymentModel +> = z.enum(SyncListResponseDeploymentModel); + +/** @internal */ +export const SyncListResponseAws$inboundSchema: z.ZodType< + SyncListResponseAws, + unknown +> = z.object({ + certificateArn: z.string(), +}); + +export function syncListResponseAwsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseAws$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseAws' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseAwsUnion$inboundSchema: z.ZodType< + SyncListResponseAwsUnion, + unknown +> = z.union([z.lazy(() => SyncListResponseAws$inboundSchema), z.any()]); + +export function syncListResponseAwsUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseAwsUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseAwsUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseAzureStackSettings$inboundSchema: z.ZodType< + SyncListResponseAzureStackSettings, + unknown +> = z.object({ + keyVaultCertificateId: z.string(), + keyVaultResourceId: z.nullable(z.string()).optional(), +}); + +export function syncListResponseAzureStackSettingsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncListResponseAzureStackSettings$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseAzureStackSettings' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseAzureUnion$inboundSchema: z.ZodType< + SyncListResponseAzureUnion, + unknown +> = z.union([ + z.lazy(() => SyncListResponseAzureStackSettings$inboundSchema), + z.any(), +]); + +export function syncListResponseAzureUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseAzureUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseAzureUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseGcpStackSettings$inboundSchema: z.ZodType< + SyncListResponseGcpStackSettings, + unknown +> = z.object({ + certificateName: z.string(), +}); + +export function syncListResponseGcpStackSettingsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseGcpStackSettings$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseGcpStackSettings' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseGcpUnion$inboundSchema: z.ZodType< + SyncListResponseGcpUnion, + unknown +> = z.union([ + z.lazy(() => SyncListResponseGcpStackSettings$inboundSchema), + z.any(), +]); + +export function syncListResponseGcpUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseGcpUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseGcpUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseTlsSecretRef$inboundSchema: z.ZodType< + SyncListResponseTlsSecretRef, + unknown +> = z.object({ + namespace: z.nullable(z.string()).optional(), + secretName: z.string(), +}); + +export function syncListResponseTlsSecretRefFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseTlsSecretRef$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseTlsSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseDomainsKubernetes$inboundSchema: z.ZodType< + SyncListResponseDomainsKubernetes, + unknown +> = z.object({ + tlsSecretRef: z.lazy(() => SyncListResponseTlsSecretRef$inboundSchema), +}); + +export function syncListResponseDomainsKubernetesFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseDomainsKubernetes$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseDomainsKubernetes' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseDomainsKubernetesUnion$inboundSchema: z.ZodType< + SyncListResponseDomainsKubernetesUnion, + unknown +> = z.union([ + z.lazy(() => SyncListResponseDomainsKubernetes$inboundSchema), + z.any(), +]); + +export function syncListResponseDomainsKubernetesUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncListResponseDomainsKubernetesUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseDomainsKubernetesUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseDomainsCertificate$inboundSchema: z.ZodType< + SyncListResponseDomainsCertificate, + unknown +> = z.object({ + aws: z.nullable( + z.union([z.lazy(() => SyncListResponseAws$inboundSchema), z.any()]), + ).optional(), + azure: z.nullable( + z.union([ + z.lazy(() => SyncListResponseAzureStackSettings$inboundSchema), + z.any(), + ]), + ).optional(), + gcp: z.nullable( + z.union([ + z.lazy(() => SyncListResponseGcpStackSettings$inboundSchema), + z.any(), + ]), + ).optional(), + kubernetes: z.nullable( + z.union([ + z.lazy(() => SyncListResponseDomainsKubernetes$inboundSchema), + z.any(), + ]), + ).optional(), +}); + +export function syncListResponseDomainsCertificateFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncListResponseDomainsCertificate$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseDomainsCertificate' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseCustomDomains$inboundSchema: z.ZodType< + SyncListResponseCustomDomains, + unknown +> = z.object({ + certificate: z.lazy(() => SyncListResponseDomainsCertificate$inboundSchema), + domain: z.string(), +}); + +export function syncListResponseCustomDomainsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseCustomDomains$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseCustomDomains' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseModeLoadBalancer$inboundSchema: z.ZodEnum< + typeof SyncListResponseModeLoadBalancer +> = z.enum(SyncListResponseModeLoadBalancer); + +/** @internal */ +export const SyncListResponsePublicEndpointTargetLoadBalancer$inboundSchema: + z.ZodType = z + .object({ + cnameTarget: z.string(), + mode: SyncListResponseModeLoadBalancer$inboundSchema, + }); + +export function syncListResponsePublicEndpointTargetLoadBalancerFromJSON( + jsonString: string, +): SafeParseResult< + SyncListResponsePublicEndpointTargetLoadBalancer, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncListResponsePublicEndpointTargetLoadBalancer$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePublicEndpointTargetLoadBalancer' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseModeMachineAddresses$inboundSchema: z.ZodEnum< + typeof SyncListResponseModeMachineAddresses +> = z.enum(SyncListResponseModeMachineAddresses); + +/** @internal */ +export const SyncListResponsePublicEndpointTargetMachineAddresses$inboundSchema: + z.ZodType = z + .object({ + mode: SyncListResponseModeMachineAddresses$inboundSchema, + }); + +export function syncListResponsePublicEndpointTargetMachineAddressesFromJSON( + jsonString: string, +): SafeParseResult< + SyncListResponsePublicEndpointTargetMachineAddresses, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncListResponsePublicEndpointTargetMachineAddresses$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePublicEndpointTargetMachineAddresses' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponsePublicEndpointTargetUnion$inboundSchema: z.ZodType< + SyncListResponsePublicEndpointTargetUnion, + unknown +> = z.union([ + z.lazy(() => SyncListResponsePublicEndpointTargetLoadBalancer$inboundSchema), + z.lazy(() => + SyncListResponsePublicEndpointTargetMachineAddresses$inboundSchema + ), + z.any(), +]); + +export function syncListResponsePublicEndpointTargetUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncListResponsePublicEndpointTargetUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncListResponsePublicEndpointTargetUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePublicEndpointTargetUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseDomains$inboundSchema: z.ZodType< + SyncListResponseDomains, + unknown +> = z.object({ + customDomains: z.nullable( + z.record( + z.string(), + z.lazy(() => SyncListResponseCustomDomains$inboundSchema), + ), + ).optional(), + publicEndpointTarget: z.nullable( + z.union([ + z.lazy(() => + SyncListResponsePublicEndpointTargetLoadBalancer$inboundSchema + ), + z.lazy(() => + SyncListResponsePublicEndpointTargetMachineAddresses$inboundSchema + ), + z.any(), + ]), + ).optional(), +}); + +export function syncListResponseDomainsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseDomains$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseDomains' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseDomainsUnion$inboundSchema: z.ZodType< + SyncListResponseDomainsUnion, + unknown +> = z.union([z.lazy(() => SyncListResponseDomains$inboundSchema), z.any()]); + +export function syncListResponseDomainsUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseDomainsUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseDomainsUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseExternalBindings$inboundSchema: z.ZodType< + SyncListResponseExternalBindings, + unknown +> = z.object({}); + +export function syncListResponseExternalBindingsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseExternalBindings$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseExternalBindings' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseHeartbeats$inboundSchema: z.ZodEnum< + typeof SyncListResponseHeartbeats +> = z.enum(SyncListResponseHeartbeats); + +/** @internal */ +export const SyncListResponseCloud$inboundSchema: z.ZodType< + SyncListResponseCloud, + unknown +> = z.object({ + accountId: z.nullable(z.string()).optional(), + clusterId: z.nullable(z.string()).optional(), + clusterName: z.nullable(z.string()).optional(), + projectId: z.nullable(z.string()).optional(), + region: z.nullable(z.string()).optional(), + resourceGroup: z.nullable(z.string()).optional(), + subscriptionId: z.nullable(z.string()).optional(), +}); + +export function syncListResponseCloudFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseCloud$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseCloud' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseCloudUnion$inboundSchema: z.ZodType< + SyncListResponseCloudUnion, + unknown +> = z.union([z.lazy(() => SyncListResponseCloud$inboundSchema), z.any()]); + +export function syncListResponseCloudUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseCloudUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseCloudUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseOwnership$inboundSchema: z.ZodEnum< + typeof SyncListResponseOwnership +> = z.enum(SyncListResponseOwnership); + +/** @internal */ +export const SyncListResponseCluster$inboundSchema: z.ZodType< + SyncListResponseCluster, + unknown +> = z.object({ + cloud: z.nullable( + z.union([z.lazy(() => SyncListResponseCloud$inboundSchema), z.any()]), + ).optional(), + namespace: z.nullable(z.string()).optional(), + ownership: SyncListResponseOwnership$inboundSchema, +}); + +export function syncListResponseClusterFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseCluster$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseCluster' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseClusterUnion$inboundSchema: z.ZodType< + SyncListResponseClusterUnion, + unknown +> = z.union([z.lazy(() => SyncListResponseCluster$inboundSchema), z.any()]); + +export function syncListResponseClusterUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseClusterUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseClusterUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseCertificateNone2$inboundSchema: z.ZodType< + SyncListResponseCertificateNone2, + unknown +> = z.object({ + mode: z.literal("none"), +}); + +export function syncListResponseCertificateNone2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseCertificateNone2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseCertificateNone2' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseCertificateManagedTLSSecret2$inboundSchema: + z.ZodType = z.object({ + mode: z.literal("managedTlsSecret"), + secretNameTemplate: z.string(), + }); + +export function syncListResponseCertificateManagedTLSSecret2FromJSON( + jsonString: string, +): SafeParseResult< + SyncListResponseCertificateManagedTLSSecret2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncListResponseCertificateManagedTLSSecret2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponseCertificateManagedTLSSecret2' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseCertificateAwsAcmArn2$inboundSchema: z.ZodType< + SyncListResponseCertificateAwsAcmArn2, + unknown +> = z.object({ + certificateArn: z.string(), + mode: z.literal("awsAcmArn"), +}); + +export function syncListResponseCertificateAwsAcmArn2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncListResponseCertificateAwsAcmArn2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseCertificateAwsAcmArn2' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseCertificateManagedAcmImport2$inboundSchema: + z.ZodType = z.object({ + mode: z.literal("managedAcmImport"), + region: z.nullable(z.string()).optional(), + tags: z.record(z.string(), z.string()).optional(), + }); + +export function syncListResponseCertificateManagedAcmImport2FromJSON( + jsonString: string, +): SafeParseResult< + SyncListResponseCertificateManagedAcmImport2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncListResponseCertificateManagedAcmImport2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponseCertificateManagedAcmImport2' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseCertificateTLSSecretRef2$inboundSchema: z.ZodType< + SyncListResponseCertificateTLSSecretRef2, + unknown +> = z.object({ + namespace: z.nullable(z.string()).optional(), + secretName: z.string(), + mode: z.literal("tlsSecretRef"), +}); + +export function syncListResponseCertificateTLSSecretRef2FromJSON( + jsonString: string, +): SafeParseResult< + SyncListResponseCertificateTLSSecretRef2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncListResponseCertificateTLSSecretRef2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponseCertificateTLSSecretRef2' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseCertificateUnion2$inboundSchema: z.ZodType< + SyncListResponseCertificateUnion2, + unknown +> = z.union([ + z.lazy(() => SyncListResponseCertificateTLSSecretRef2$inboundSchema), + z.lazy(() => SyncListResponseCertificateManagedAcmImport2$inboundSchema), + z.lazy(() => SyncListResponseCertificateAwsAcmArn2$inboundSchema), + z.lazy(() => SyncListResponseCertificateManagedTLSSecret2$inboundSchema), + z.lazy(() => SyncListResponseCertificateNone2$inboundSchema), +]); + +export function syncListResponseCertificateUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseCertificateUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseCertificateUnion2' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseModeCustom$inboundSchema: z.ZodEnum< + typeof SyncListResponseModeCustom +> = z.enum(SyncListResponseModeCustom); + +/** @internal */ +export const SyncListResponseProviderAzureApplicationGatewayForContainersEnum4$inboundSchema: + z.ZodEnum< + typeof SyncListResponseProviderAzureApplicationGatewayForContainersEnum4 + > = z.enum(SyncListResponseProviderAzureApplicationGatewayForContainersEnum4); + +/** @internal */ +export const SyncListResponseProviderAzureApplicationGatewayForContainers4$inboundSchema: + z.ZodType< + SyncListResponseProviderAzureApplicationGatewayForContainers4, + unknown + > = z.object({ + albName: z.nullable(z.string()).optional(), + albNamespace: z.nullable(z.string()).optional(), + frontend: z.string(), + provider: + SyncListResponseProviderAzureApplicationGatewayForContainersEnum4$inboundSchema, + }); + +export function syncListResponseProviderAzureApplicationGatewayForContainers4FromJSON( + jsonString: string, +): SafeParseResult< + SyncListResponseProviderAzureApplicationGatewayForContainers4, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncListResponseProviderAzureApplicationGatewayForContainers4$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseProviderAzureApplicationGatewayForContainers4' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseProviderGkeGatewayEnum4$inboundSchema: z.ZodEnum< + typeof SyncListResponseProviderGkeGatewayEnum4 +> = z.enum(SyncListResponseProviderGkeGatewayEnum4); + +/** @internal */ +export const SyncListResponseProviderGkeGateway4$inboundSchema: z.ZodType< + SyncListResponseProviderGkeGateway4, + unknown +> = z.object({ + provider: SyncListResponseProviderGkeGatewayEnum4$inboundSchema, + staticAddressName: z.nullable(z.string()).optional(), +}); + +export function syncListResponseProviderGkeGateway4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncListResponseProviderGkeGateway4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseProviderGkeGateway4' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseProviderAwsAlbEnum4$inboundSchema: z.ZodEnum< + typeof SyncListResponseProviderAwsAlbEnum4 +> = z.enum(SyncListResponseProviderAwsAlbEnum4); + +/** @internal */ +export const SyncListResponseProviderAwsAlb4$inboundSchema: z.ZodType< + SyncListResponseProviderAwsAlb4, + unknown +> = z.object({ + ipAddressType: z.nullable(z.string()).optional(), + provider: SyncListResponseProviderAwsAlbEnum4$inboundSchema, + scheme: z.string(), + subnetIds: z.array(z.string()).optional(), + targetType: z.string(), +}); + +export function syncListResponseProviderAwsAlb4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseProviderAwsAlb4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseProviderAwsAlb4' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseProviderUnion4$inboundSchema: z.ZodType< + SyncListResponseProviderUnion4, + unknown +> = z.union([ + z.lazy(() => SyncListResponseProviderAwsAlb4$inboundSchema), + z.lazy(() => + SyncListResponseProviderAzureApplicationGatewayForContainers4$inboundSchema + ), + z.lazy(() => SyncListResponseProviderGkeGateway4$inboundSchema), + z.any(), +]); + +export function syncListResponseProviderUnion4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseProviderUnion4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseProviderUnion4' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseRouteGateway2$inboundSchema: z.ZodType< + SyncListResponseRouteGateway2, + unknown +> = z.object({ + annotations: z.record(z.string(), z.string()).optional(), + controller: z.nullable(z.string()).optional(), + gatewayClassName: z.string(), + labels: z.record(z.string(), z.string()).optional(), + listenerPort: z.int(), + provider: z.nullable( + z.union([ + z.lazy(() => SyncListResponseProviderAwsAlb4$inboundSchema), + z.lazy(() => + SyncListResponseProviderAzureApplicationGatewayForContainers4$inboundSchema + ), + z.lazy(() => SyncListResponseProviderGkeGateway4$inboundSchema), + z.any(), + ]), + ).optional(), + routeApi: z.literal("gateway"), +}); + +export function syncListResponseRouteGateway2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseRouteGateway2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseRouteGateway2' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseProviderAzureApplicationGatewayForContainersEnum3$inboundSchema: + z.ZodEnum< + typeof SyncListResponseProviderAzureApplicationGatewayForContainersEnum3 + > = z.enum(SyncListResponseProviderAzureApplicationGatewayForContainersEnum3); + +/** @internal */ +export const SyncListResponseProviderAzureApplicationGatewayForContainers3$inboundSchema: + z.ZodType< + SyncListResponseProviderAzureApplicationGatewayForContainers3, + unknown + > = z.object({ + albName: z.nullable(z.string()).optional(), + albNamespace: z.nullable(z.string()).optional(), + frontend: z.string(), + provider: + SyncListResponseProviderAzureApplicationGatewayForContainersEnum3$inboundSchema, + }); + +export function syncListResponseProviderAzureApplicationGatewayForContainers3FromJSON( + jsonString: string, +): SafeParseResult< + SyncListResponseProviderAzureApplicationGatewayForContainers3, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncListResponseProviderAzureApplicationGatewayForContainers3$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseProviderAzureApplicationGatewayForContainers3' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseProviderGkeGatewayEnum3$inboundSchema: z.ZodEnum< + typeof SyncListResponseProviderGkeGatewayEnum3 +> = z.enum(SyncListResponseProviderGkeGatewayEnum3); + +/** @internal */ +export const SyncListResponseProviderGkeGateway3$inboundSchema: z.ZodType< + SyncListResponseProviderGkeGateway3, + unknown +> = z.object({ + provider: SyncListResponseProviderGkeGatewayEnum3$inboundSchema, + staticAddressName: z.nullable(z.string()).optional(), +}); + +export function syncListResponseProviderGkeGateway3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncListResponseProviderGkeGateway3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseProviderGkeGateway3' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseProviderAwsAlbEnum3$inboundSchema: z.ZodEnum< + typeof SyncListResponseProviderAwsAlbEnum3 +> = z.enum(SyncListResponseProviderAwsAlbEnum3); + +/** @internal */ +export const SyncListResponseProviderAwsAlb3$inboundSchema: z.ZodType< + SyncListResponseProviderAwsAlb3, + unknown +> = z.object({ + ipAddressType: z.nullable(z.string()).optional(), + provider: SyncListResponseProviderAwsAlbEnum3$inboundSchema, + scheme: z.string(), + subnetIds: z.array(z.string()).optional(), + targetType: z.string(), +}); + +export function syncListResponseProviderAwsAlb3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseProviderAwsAlb3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseProviderAwsAlb3' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseProviderUnion3$inboundSchema: z.ZodType< + SyncListResponseProviderUnion3, + unknown +> = z.union([ + z.lazy(() => SyncListResponseProviderAwsAlb3$inboundSchema), + z.lazy(() => + SyncListResponseProviderAzureApplicationGatewayForContainers3$inboundSchema + ), + z.lazy(() => SyncListResponseProviderGkeGateway3$inboundSchema), + z.any(), +]); + +export function syncListResponseProviderUnion3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseProviderUnion3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseProviderUnion3' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseRouteIngress2$inboundSchema: z.ZodType< + SyncListResponseRouteIngress2, + unknown +> = z.object({ + annotations: z.record(z.string(), z.string()).optional(), + controller: z.nullable(z.string()).optional(), + ingressClassName: z.string(), + labels: z.record(z.string(), z.string()).optional(), + provider: z.nullable( + z.union([ + z.lazy(() => SyncListResponseProviderAwsAlb3$inboundSchema), + z.lazy(() => + SyncListResponseProviderAzureApplicationGatewayForContainers3$inboundSchema + ), + z.lazy(() => SyncListResponseProviderGkeGateway3$inboundSchema), + z.any(), + ]), + ).optional(), + routeApi: z.literal("ingress"), +}); + +export function syncListResponseRouteIngress2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseRouteIngress2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseRouteIngress2' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseRouteUnion2$inboundSchema: z.ZodType< + SyncListResponseRouteUnion2, + unknown +> = z.union([ + z.lazy(() => SyncListResponseRouteIngress2$inboundSchema), + z.lazy(() => SyncListResponseRouteGateway2$inboundSchema), +]); + +export function syncListResponseRouteUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseRouteUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseRouteUnion2' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseExposureCustom$inboundSchema: z.ZodType< + SyncListResponseExposureCustom, + unknown +> = z.object({ + certificate: z.union([ + z.lazy(() => SyncListResponseCertificateTLSSecretRef2$inboundSchema), + z.lazy(() => SyncListResponseCertificateManagedAcmImport2$inboundSchema), + z.lazy(() => SyncListResponseCertificateAwsAcmArn2$inboundSchema), + z.lazy(() => SyncListResponseCertificateManagedTLSSecret2$inboundSchema), + z.lazy(() => SyncListResponseCertificateNone2$inboundSchema), + ]), + domain: z.string(), + mode: SyncListResponseModeCustom$inboundSchema, + route: z.union([ + z.lazy(() => SyncListResponseRouteIngress2$inboundSchema), + z.lazy(() => SyncListResponseRouteGateway2$inboundSchema), + ]), +}); + +export function syncListResponseExposureCustomFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseExposureCustom$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseExposureCustom' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseCertificateNone1$inboundSchema: z.ZodType< + SyncListResponseCertificateNone1, + unknown +> = z.object({ + mode: z.literal("none"), +}); + +export function syncListResponseCertificateNone1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseCertificateNone1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseCertificateNone1' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseCertificateManagedTLSSecret1$inboundSchema: + z.ZodType = z.object({ + mode: z.literal("managedTlsSecret"), + secretNameTemplate: z.string(), + }); + +export function syncListResponseCertificateManagedTLSSecret1FromJSON( + jsonString: string, +): SafeParseResult< + SyncListResponseCertificateManagedTLSSecret1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncListResponseCertificateManagedTLSSecret1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponseCertificateManagedTLSSecret1' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseCertificateAwsAcmArn1$inboundSchema: z.ZodType< + SyncListResponseCertificateAwsAcmArn1, + unknown +> = z.object({ + certificateArn: z.string(), + mode: z.literal("awsAcmArn"), +}); + +export function syncListResponseCertificateAwsAcmArn1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncListResponseCertificateAwsAcmArn1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseCertificateAwsAcmArn1' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseCertificateManagedAcmImport1$inboundSchema: + z.ZodType = z.object({ + mode: z.literal("managedAcmImport"), + region: z.nullable(z.string()).optional(), + tags: z.record(z.string(), z.string()).optional(), + }); + +export function syncListResponseCertificateManagedAcmImport1FromJSON( + jsonString: string, +): SafeParseResult< + SyncListResponseCertificateManagedAcmImport1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncListResponseCertificateManagedAcmImport1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponseCertificateManagedAcmImport1' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseCertificateTLSSecretRef1$inboundSchema: z.ZodType< + SyncListResponseCertificateTLSSecretRef1, + unknown +> = z.object({ + namespace: z.nullable(z.string()).optional(), + secretName: z.string(), + mode: z.literal("tlsSecretRef"), +}); + +export function syncListResponseCertificateTLSSecretRef1FromJSON( + jsonString: string, +): SafeParseResult< + SyncListResponseCertificateTLSSecretRef1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncListResponseCertificateTLSSecretRef1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponseCertificateTLSSecretRef1' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseCertificateUnion1$inboundSchema: z.ZodType< + SyncListResponseCertificateUnion1, + unknown +> = z.union([ + z.lazy(() => SyncListResponseCertificateTLSSecretRef1$inboundSchema), + z.lazy(() => SyncListResponseCertificateManagedAcmImport1$inboundSchema), + z.lazy(() => SyncListResponseCertificateAwsAcmArn1$inboundSchema), + z.lazy(() => SyncListResponseCertificateManagedTLSSecret1$inboundSchema), + z.lazy(() => SyncListResponseCertificateNone1$inboundSchema), +]); + +export function syncListResponseCertificateUnion1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseCertificateUnion1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseCertificateUnion1' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseModeGenerated$inboundSchema: z.ZodEnum< + typeof SyncListResponseModeGenerated +> = z.enum(SyncListResponseModeGenerated); + +/** @internal */ +export const SyncListResponseProviderAzureApplicationGatewayForContainersEnum2$inboundSchema: + z.ZodEnum< + typeof SyncListResponseProviderAzureApplicationGatewayForContainersEnum2 + > = z.enum(SyncListResponseProviderAzureApplicationGatewayForContainersEnum2); + +/** @internal */ +export const SyncListResponseProviderAzureApplicationGatewayForContainers2$inboundSchema: + z.ZodType< + SyncListResponseProviderAzureApplicationGatewayForContainers2, + unknown + > = z.object({ + albName: z.nullable(z.string()).optional(), + albNamespace: z.nullable(z.string()).optional(), + frontend: z.string(), + provider: + SyncListResponseProviderAzureApplicationGatewayForContainersEnum2$inboundSchema, + }); + +export function syncListResponseProviderAzureApplicationGatewayForContainers2FromJSON( + jsonString: string, +): SafeParseResult< + SyncListResponseProviderAzureApplicationGatewayForContainers2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncListResponseProviderAzureApplicationGatewayForContainers2$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseProviderAzureApplicationGatewayForContainers2' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseProviderGkeGatewayEnum2$inboundSchema: z.ZodEnum< + typeof SyncListResponseProviderGkeGatewayEnum2 +> = z.enum(SyncListResponseProviderGkeGatewayEnum2); + +/** @internal */ +export const SyncListResponseProviderGkeGateway2$inboundSchema: z.ZodType< + SyncListResponseProviderGkeGateway2, + unknown +> = z.object({ + provider: SyncListResponseProviderGkeGatewayEnum2$inboundSchema, + staticAddressName: z.nullable(z.string()).optional(), +}); + +export function syncListResponseProviderGkeGateway2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncListResponseProviderGkeGateway2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseProviderGkeGateway2' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseProviderAwsAlbEnum2$inboundSchema: z.ZodEnum< + typeof SyncListResponseProviderAwsAlbEnum2 +> = z.enum(SyncListResponseProviderAwsAlbEnum2); + +/** @internal */ +export const SyncListResponseProviderAwsAlb2$inboundSchema: z.ZodType< + SyncListResponseProviderAwsAlb2, + unknown +> = z.object({ + ipAddressType: z.nullable(z.string()).optional(), + provider: SyncListResponseProviderAwsAlbEnum2$inboundSchema, + scheme: z.string(), + subnetIds: z.array(z.string()).optional(), + targetType: z.string(), +}); + +export function syncListResponseProviderAwsAlb2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseProviderAwsAlb2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseProviderAwsAlb2' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseProviderUnion2$inboundSchema: z.ZodType< + SyncListResponseProviderUnion2, + unknown +> = z.union([ + z.lazy(() => SyncListResponseProviderAwsAlb2$inboundSchema), + z.lazy(() => + SyncListResponseProviderAzureApplicationGatewayForContainers2$inboundSchema + ), + z.lazy(() => SyncListResponseProviderGkeGateway2$inboundSchema), + z.any(), +]); + +export function syncListResponseProviderUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseProviderUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseProviderUnion2' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseRouteGateway1$inboundSchema: z.ZodType< + SyncListResponseRouteGateway1, + unknown +> = z.object({ + annotations: z.record(z.string(), z.string()).optional(), + controller: z.nullable(z.string()).optional(), + gatewayClassName: z.string(), + labels: z.record(z.string(), z.string()).optional(), + listenerPort: z.int(), + provider: z.nullable( + z.union([ + z.lazy(() => SyncListResponseProviderAwsAlb2$inboundSchema), + z.lazy(() => + SyncListResponseProviderAzureApplicationGatewayForContainers2$inboundSchema + ), + z.lazy(() => SyncListResponseProviderGkeGateway2$inboundSchema), + z.any(), + ]), + ).optional(), + routeApi: z.literal("gateway"), +}); + +export function syncListResponseRouteGateway1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseRouteGateway1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseRouteGateway1' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseProviderAzureApplicationGatewayForContainersEnum1$inboundSchema: + z.ZodEnum< + typeof SyncListResponseProviderAzureApplicationGatewayForContainersEnum1 + > = z.enum(SyncListResponseProviderAzureApplicationGatewayForContainersEnum1); + +/** @internal */ +export const SyncListResponseProviderAzureApplicationGatewayForContainers1$inboundSchema: + z.ZodType< + SyncListResponseProviderAzureApplicationGatewayForContainers1, + unknown + > = z.object({ + albName: z.nullable(z.string()).optional(), + albNamespace: z.nullable(z.string()).optional(), + frontend: z.string(), + provider: + SyncListResponseProviderAzureApplicationGatewayForContainersEnum1$inboundSchema, + }); + +export function syncListResponseProviderAzureApplicationGatewayForContainers1FromJSON( + jsonString: string, +): SafeParseResult< + SyncListResponseProviderAzureApplicationGatewayForContainers1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncListResponseProviderAzureApplicationGatewayForContainers1$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseProviderAzureApplicationGatewayForContainers1' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseProviderGkeGatewayEnum1$inboundSchema: z.ZodEnum< + typeof SyncListResponseProviderGkeGatewayEnum1 +> = z.enum(SyncListResponseProviderGkeGatewayEnum1); + +/** @internal */ +export const SyncListResponseProviderGkeGateway1$inboundSchema: z.ZodType< + SyncListResponseProviderGkeGateway1, + unknown +> = z.object({ + provider: SyncListResponseProviderGkeGatewayEnum1$inboundSchema, + staticAddressName: z.nullable(z.string()).optional(), +}); + +export function syncListResponseProviderGkeGateway1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncListResponseProviderGkeGateway1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseProviderGkeGateway1' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseProviderAwsAlbEnum1$inboundSchema: z.ZodEnum< + typeof SyncListResponseProviderAwsAlbEnum1 +> = z.enum(SyncListResponseProviderAwsAlbEnum1); + +/** @internal */ +export const SyncListResponseProviderAwsAlb1$inboundSchema: z.ZodType< + SyncListResponseProviderAwsAlb1, + unknown +> = z.object({ + ipAddressType: z.nullable(z.string()).optional(), + provider: SyncListResponseProviderAwsAlbEnum1$inboundSchema, + scheme: z.string(), + subnetIds: z.array(z.string()).optional(), + targetType: z.string(), +}); + +export function syncListResponseProviderAwsAlb1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseProviderAwsAlb1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseProviderAwsAlb1' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseProviderUnion1$inboundSchema: z.ZodType< + SyncListResponseProviderUnion1, + unknown +> = z.union([ + z.lazy(() => SyncListResponseProviderAwsAlb1$inboundSchema), + z.lazy(() => + SyncListResponseProviderAzureApplicationGatewayForContainers1$inboundSchema + ), + z.lazy(() => SyncListResponseProviderGkeGateway1$inboundSchema), + z.any(), +]); + +export function syncListResponseProviderUnion1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseProviderUnion1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseProviderUnion1' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseRouteIngress1$inboundSchema: z.ZodType< + SyncListResponseRouteIngress1, + unknown +> = z.object({ + annotations: z.record(z.string(), z.string()).optional(), + controller: z.nullable(z.string()).optional(), + ingressClassName: z.string(), + labels: z.record(z.string(), z.string()).optional(), + provider: z.nullable( + z.union([ + z.lazy(() => SyncListResponseProviderAwsAlb1$inboundSchema), + z.lazy(() => + SyncListResponseProviderAzureApplicationGatewayForContainers1$inboundSchema + ), + z.lazy(() => SyncListResponseProviderGkeGateway1$inboundSchema), + z.any(), + ]), + ).optional(), + routeApi: z.literal("ingress"), +}); + +export function syncListResponseRouteIngress1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseRouteIngress1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseRouteIngress1' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseRouteUnion1$inboundSchema: z.ZodType< + SyncListResponseRouteUnion1, + unknown +> = z.union([ + z.lazy(() => SyncListResponseRouteIngress1$inboundSchema), + z.lazy(() => SyncListResponseRouteGateway1$inboundSchema), +]); + +export function syncListResponseRouteUnion1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseRouteUnion1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseRouteUnion1' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseExposureGenerated$inboundSchema: z.ZodType< + SyncListResponseExposureGenerated, + unknown +> = z.object({ + certificate: z.union([ + z.lazy(() => SyncListResponseCertificateTLSSecretRef1$inboundSchema), + z.lazy(() => SyncListResponseCertificateManagedAcmImport1$inboundSchema), + z.lazy(() => SyncListResponseCertificateAwsAcmArn1$inboundSchema), + z.lazy(() => SyncListResponseCertificateManagedTLSSecret1$inboundSchema), + z.lazy(() => SyncListResponseCertificateNone1$inboundSchema), + ]), + mode: SyncListResponseModeGenerated$inboundSchema, + route: z.union([ + z.lazy(() => SyncListResponseRouteIngress1$inboundSchema), + z.lazy(() => SyncListResponseRouteGateway1$inboundSchema), + ]), +}); + +export function syncListResponseExposureGeneratedFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseExposureGenerated$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseExposureGenerated' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseModeDisabled$inboundSchema: z.ZodEnum< + typeof SyncListResponseModeDisabled +> = z.enum(SyncListResponseModeDisabled); + +/** @internal */ +export const SyncListResponseExposureDisabled$inboundSchema: z.ZodType< + SyncListResponseExposureDisabled, + unknown +> = z.object({ + mode: SyncListResponseModeDisabled$inboundSchema, +}); + +export function syncListResponseExposureDisabledFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseExposureDisabled$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseExposureDisabled' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseExposureUnion$inboundSchema: z.ZodType< + SyncListResponseExposureUnion, + unknown +> = z.union([ + z.lazy(() => SyncListResponseExposureCustom$inboundSchema), + z.lazy(() => SyncListResponseExposureGenerated$inboundSchema), + z.lazy(() => SyncListResponseExposureDisabled$inboundSchema), + z.any(), +]); + +export function syncListResponseExposureUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseExposureUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseExposureUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseKubernetes$inboundSchema: z.ZodType< + SyncListResponseKubernetes, + unknown +> = z.object({ + cluster: z.nullable( + z.union([z.lazy(() => SyncListResponseCluster$inboundSchema), z.any()]), + ).optional(), + exposure: z.nullable( + z.union([ + z.lazy(() => SyncListResponseExposureCustom$inboundSchema), + z.lazy(() => SyncListResponseExposureGenerated$inboundSchema), + z.lazy(() => SyncListResponseExposureDisabled$inboundSchema), + z.any(), + ]), + ).optional(), +}); + +export function syncListResponseKubernetesFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseKubernetes$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseKubernetes' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseKubernetesUnion$inboundSchema: z.ZodType< + SyncListResponseKubernetesUnion, + unknown +> = z.union([z.lazy(() => SyncListResponseKubernetes$inboundSchema), z.any()]); + +export function syncListResponseKubernetesUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseKubernetesUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseKubernetesUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseTypeByoVnetAzure$inboundSchema: z.ZodEnum< + typeof SyncListResponseTypeByoVnetAzure +> = z.enum(SyncListResponseTypeByoVnetAzure); + +/** @internal */ +export const SyncListResponseNetworkByoVnetAzure$inboundSchema: z.ZodType< + SyncListResponseNetworkByoVnetAzure, + unknown +> = z.object({ + application_gateway_subnet_name: z.nullable(z.string()).optional(), + private_endpoint_subnet_name: z.nullable(z.string()).optional(), + private_subnet_name: z.string(), + public_subnet_name: z.string(), + type: SyncListResponseTypeByoVnetAzure$inboundSchema, + vnet_resource_id: z.string(), +}).transform((v) => { + return remap$(v, { + "application_gateway_subnet_name": "applicationGatewaySubnetName", + "private_endpoint_subnet_name": "privateEndpointSubnetName", + "private_subnet_name": "privateSubnetName", + "public_subnet_name": "publicSubnetName", + "vnet_resource_id": "vnetResourceId", + }); +}); + +export function syncListResponseNetworkByoVnetAzureFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncListResponseNetworkByoVnetAzure$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseNetworkByoVnetAzure' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseTypeByoVpcGcp$inboundSchema: z.ZodEnum< + typeof SyncListResponseTypeByoVpcGcp +> = z.enum(SyncListResponseTypeByoVpcGcp); + +/** @internal */ +export const SyncListResponseNetworkByoVpcGcp$inboundSchema: z.ZodType< + SyncListResponseNetworkByoVpcGcp, + unknown +> = z.object({ + network_name: z.string(), + region: z.string(), + subnet_name: z.string(), + type: SyncListResponseTypeByoVpcGcp$inboundSchema, +}).transform((v) => { + return remap$(v, { + "network_name": "networkName", + "subnet_name": "subnetName", + }); +}); + +export function syncListResponseNetworkByoVpcGcpFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseNetworkByoVpcGcp$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseNetworkByoVpcGcp' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseTypeByoVpcAws$inboundSchema: z.ZodEnum< + typeof SyncListResponseTypeByoVpcAws +> = z.enum(SyncListResponseTypeByoVpcAws); + +/** @internal */ +export const SyncListResponseNetworkByoVpcAws$inboundSchema: z.ZodType< + SyncListResponseNetworkByoVpcAws, + unknown +> = z.object({ + private_subnet_ids: z.array(z.string()), + public_subnet_ids: z.array(z.string()), + security_group_ids: z.array(z.string()).optional(), + type: SyncListResponseTypeByoVpcAws$inboundSchema, + vpc_id: z.string(), +}).transform((v) => { + return remap$(v, { + "private_subnet_ids": "privateSubnetIds", + "public_subnet_ids": "publicSubnetIds", + "security_group_ids": "securityGroupIds", + "vpc_id": "vpcId", + }); +}); + +export function syncListResponseNetworkByoVpcAwsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseNetworkByoVpcAws$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseNetworkByoVpcAws' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseTypeCreate$inboundSchema: z.ZodEnum< + typeof SyncListResponseTypeCreate +> = z.enum(SyncListResponseTypeCreate); + +/** @internal */ +export const SyncListResponseNetworkCreate$inboundSchema: z.ZodType< + SyncListResponseNetworkCreate, + unknown +> = z.object({ + availability_zones: z.int().optional(), + cidr: z.nullable(z.string()).optional(), + type: SyncListResponseTypeCreate$inboundSchema, +}).transform((v) => { + return remap$(v, { + "availability_zones": "availabilityZones", + }); +}); + +export function syncListResponseNetworkCreateFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseNetworkCreate$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseNetworkCreate' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseTypeUseDefault$inboundSchema: z.ZodEnum< + typeof SyncListResponseTypeUseDefault +> = z.enum(SyncListResponseTypeUseDefault); + +/** @internal */ +export const SyncListResponseNetworkUseDefault$inboundSchema: z.ZodType< + SyncListResponseNetworkUseDefault, + unknown +> = z.object({ + type: SyncListResponseTypeUseDefault$inboundSchema, +}); + +export function syncListResponseNetworkUseDefaultFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseNetworkUseDefault$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseNetworkUseDefault' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseNetworkUnion$inboundSchema: z.ZodType< + SyncListResponseNetworkUnion, + unknown +> = z.union([ + z.lazy(() => SyncListResponseNetworkByoVpcAws$inboundSchema), + z.lazy(() => SyncListResponseNetworkByoVpcGcp$inboundSchema), + z.lazy(() => SyncListResponseNetworkByoVnetAzure$inboundSchema), + z.lazy(() => SyncListResponseNetworkUseDefault$inboundSchema), + z.lazy(() => SyncListResponseNetworkCreate$inboundSchema), + z.any(), +]); + +export function syncListResponseNetworkUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseNetworkUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseNetworkUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseTelemetry$inboundSchema: z.ZodEnum< + typeof SyncListResponseTelemetry +> = z.enum(SyncListResponseTelemetry); + +/** @internal */ +export const SyncListResponseUpdates$inboundSchema: z.ZodEnum< + typeof SyncListResponseUpdates +> = z.enum(SyncListResponseUpdates); + +/** @internal */ +export const SyncListResponseStackSettings$inboundSchema: z.ZodType< + SyncListResponseStackSettings, + unknown +> = z.object({ + compute: z.nullable( + z.union([z.lazy(() => SyncListResponseCompute$inboundSchema), z.any()]), + ).optional(), + deploymentModel: SyncListResponseDeploymentModel$inboundSchema.optional(), + domains: z.nullable( + z.union([z.lazy(() => SyncListResponseDomains$inboundSchema), z.any()]), + ).optional(), + externalBindings: z.nullable( + z.lazy(() => SyncListResponseExternalBindings$inboundSchema), + ).optional(), + heartbeats: SyncListResponseHeartbeats$inboundSchema.optional(), + kubernetes: z.nullable( + z.union([z.lazy(() => SyncListResponseKubernetes$inboundSchema), z.any()]), + ).optional(), + network: z.nullable( + z.union([ + z.lazy(() => SyncListResponseNetworkByoVpcAws$inboundSchema), + z.lazy(() => SyncListResponseNetworkByoVpcGcp$inboundSchema), + z.lazy(() => SyncListResponseNetworkByoVnetAzure$inboundSchema), + z.lazy(() => SyncListResponseNetworkUseDefault$inboundSchema), + z.lazy(() => SyncListResponseNetworkCreate$inboundSchema), + z.any(), + ]), + ).optional(), + telemetry: SyncListResponseTelemetry$inboundSchema.optional(), + updates: SyncListResponseUpdates$inboundSchema.optional(), +}); + +export function syncListResponseStackSettingsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseStackSettings$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseStackSettings' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseStackStatePlatform$inboundSchema: z.ZodEnum< + typeof SyncListResponseStackStatePlatform +> = z.enum(SyncListResponseStackStatePlatform); + +/** @internal */ +export const SyncListResponseStackStateConfig$inboundSchema: z.ZodType< + SyncListResponseStackStateConfig, + unknown +> = collectExtraKeys$( + z.object({ + id: z.string(), + type: z.string(), + }).catchall(z.any()), + "additionalProperties", + true, +); + +export function syncListResponseStackStateConfigFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseStackStateConfig$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseStackStateConfig' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseControllerPlatformEnum$inboundSchema: z.ZodEnum< + typeof SyncListResponseControllerPlatformEnum +> = z.enum(SyncListResponseControllerPlatformEnum); + +/** @internal */ +export const SyncListResponseControllerPlatformUnion$inboundSchema: z.ZodType< + SyncListResponseControllerPlatformUnion, + unknown +> = z.union([SyncListResponseControllerPlatformEnum$inboundSchema, z.any()]); + +export function syncListResponseControllerPlatformUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponseControllerPlatformUnion, + SDKValidationError +> { return safeParse( jsonString, (x) => - SyncListResponseEnvironmentInfoTest$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseEnvironmentInfoTest' from JSON`, + SyncListResponseControllerPlatformUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponseControllerPlatformUnion' from JSON`, ); } /** @internal */ -export const SyncListResponsePlatformLocal$inboundSchema: z.ZodEnum< - typeof SyncListResponsePlatformLocal -> = z.enum(SyncListResponsePlatformLocal); - -/** @internal */ -export const SyncListResponseEnvironmentInfoLocal$inboundSchema: z.ZodType< - SyncListResponseEnvironmentInfoLocal, +export const SyncListResponseStackStateDependency$inboundSchema: z.ZodType< + SyncListResponseStackStateDependency, unknown > = z.object({ - arch: z.string(), - hostname: z.string(), - os: z.string(), - platform: SyncListResponsePlatformLocal$inboundSchema, + id: z.string(), + type: z.string(), }); -export function syncListResponseEnvironmentInfoLocalFromJSON( +export function syncListResponseStackStateDependencyFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, (x) => - SyncListResponseEnvironmentInfoLocal$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseEnvironmentInfoLocal' from JSON`, + SyncListResponseStackStateDependency$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseStackStateDependency' from JSON`, ); } /** @internal */ -export const SyncListResponseEnvironmentInfoPlatformAzure$inboundSchema: - z.ZodEnum = z.enum( - SyncListResponseEnvironmentInfoPlatformAzure, - ); - -/** @internal */ -export const SyncListResponseEnvironmentInfoAzure$inboundSchema: z.ZodType< - SyncListResponseEnvironmentInfoAzure, +export const SyncListResponseErrorStackState$inboundSchema: z.ZodType< + SyncListResponseErrorStackState, unknown > = z.object({ - location: z.string(), - subscriptionId: z.string(), - tenantId: z.string(), - platform: SyncListResponseEnvironmentInfoPlatformAzure$inboundSchema, + code: z.string(), + context: z.nullable(z.any()).optional(), + hint: z.nullable(z.string()).optional(), + httpStatusCode: z.nullable(z.int()).optional(), + internal: z.boolean(), + message: z.string(), + retryable: z.boolean().default(false), + source: z.nullable(z.any()).optional(), }); -export function syncListResponseEnvironmentInfoAzureFromJSON( +export function syncListResponseErrorStackStateFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => - SyncListResponseEnvironmentInfoAzure$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseEnvironmentInfoAzure' from JSON`, + (x) => SyncListResponseErrorStackState$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseErrorStackState' from JSON`, ); } /** @internal */ -export const SyncListResponseEnvironmentInfoPlatformGcp$inboundSchema: - z.ZodEnum = z.enum( - SyncListResponseEnvironmentInfoPlatformGcp, - ); - -/** @internal */ -export const SyncListResponseEnvironmentInfoGcp$inboundSchema: z.ZodType< - SyncListResponseEnvironmentInfoGcp, +export const SyncListResponseErrorUnion$inboundSchema: z.ZodType< + SyncListResponseErrorUnion, unknown -> = z.object({ - projectId: z.string(), - projectNumber: z.string(), - region: z.string(), - platform: SyncListResponseEnvironmentInfoPlatformGcp$inboundSchema, -}); +> = z.union([ + z.lazy(() => SyncListResponseErrorStackState$inboundSchema), + z.any(), +]); -export function syncListResponseEnvironmentInfoGcpFromJSON( +export function syncListResponseErrorUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => - SyncListResponseEnvironmentInfoGcp$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseEnvironmentInfoGcp' from JSON`, + (x) => SyncListResponseErrorUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseErrorUnion' from JSON`, ); } /** @internal */ -export const SyncListResponseEnvironmentInfoPlatformAws$inboundSchema: - z.ZodEnum = z.enum( - SyncListResponseEnvironmentInfoPlatformAws, - ); +export const SyncListResponseLifecycleStackStateEnum$inboundSchema: z.ZodEnum< + typeof SyncListResponseLifecycleStackStateEnum +> = z.enum(SyncListResponseLifecycleStackStateEnum); /** @internal */ -export const SyncListResponseEnvironmentInfoAws$inboundSchema: z.ZodType< - SyncListResponseEnvironmentInfoAws, +export const SyncListResponseLifecycleUnion$inboundSchema: z.ZodType< + SyncListResponseLifecycleUnion, unknown -> = z.object({ - accountId: z.string(), - region: z.string(), - platform: SyncListResponseEnvironmentInfoPlatformAws$inboundSchema, -}); +> = z.union([SyncListResponseLifecycleStackStateEnum$inboundSchema, z.any()]); -export function syncListResponseEnvironmentInfoAwsFromJSON( +export function syncListResponseLifecycleUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => - SyncListResponseEnvironmentInfoAws$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseEnvironmentInfoAws' from JSON`, + (x) => SyncListResponseLifecycleUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseLifecycleUnion' from JSON`, ); } /** @internal */ -export const SyncListResponseEnvironmentInfoUnion$inboundSchema: z.ZodType< - SyncListResponseEnvironmentInfoUnion, +export const SyncListResponseOutputs$inboundSchema: z.ZodType< + SyncListResponseOutputs, unknown -> = z.union([ - z.lazy(() => SyncListResponseEnvironmentInfoGcp$inboundSchema), - z.lazy(() => SyncListResponseEnvironmentInfoAzure$inboundSchema), - z.lazy(() => SyncListResponseEnvironmentInfoLocal$inboundSchema), - z.lazy(() => SyncListResponseEnvironmentInfoAws$inboundSchema), - z.lazy(() => SyncListResponseEnvironmentInfoTest$inboundSchema), - z.any(), -]); +> = collectExtraKeys$( + z.object({ + type: z.string(), + }).catchall(z.any()), + "additionalProperties", + true, +); -export function syncListResponseEnvironmentInfoUnionFromJSON( +export function syncListResponseOutputsFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => - SyncListResponseEnvironmentInfoUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseEnvironmentInfoUnion' from JSON`, + (x) => SyncListResponseOutputs$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseOutputs' from JSON`, ); } /** @internal */ -export const SyncListResponsePoolsAutoscale$inboundSchema: z.ZodType< - SyncListResponsePoolsAutoscale, +export const SyncListResponseOutputsUnion$inboundSchema: z.ZodType< + SyncListResponseOutputsUnion, unknown -> = z.object({ - machine: z.nullable(z.string()).optional(), - max: z.int(), - min: z.int(), - mode: z.literal("autoscale"), -}); +> = z.union([z.lazy(() => SyncListResponseOutputs$inboundSchema), z.any()]); -export function syncListResponsePoolsAutoscaleFromJSON( +export function syncListResponseOutputsUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => SyncListResponsePoolsAutoscale$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponsePoolsAutoscale' from JSON`, + (x) => SyncListResponseOutputsUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseOutputsUnion' from JSON`, ); } /** @internal */ -export const SyncListResponsePoolsFixed$inboundSchema: z.ZodType< - SyncListResponsePoolsFixed, +export const SyncListResponsePreviousConfig$inboundSchema: z.ZodType< + SyncListResponsePreviousConfig, unknown -> = z.object({ - machine: z.nullable(z.string()).optional(), - machines: z.int(), - mode: z.literal("fixed"), -}); +> = collectExtraKeys$( + z.object({ + id: z.string(), + type: z.string(), + }).catchall(z.any()), + "additionalProperties", + true, +); -export function syncListResponsePoolsFixedFromJSON( +export function syncListResponsePreviousConfigFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => SyncListResponsePoolsFixed$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponsePoolsFixed' from JSON`, + (x) => SyncListResponsePreviousConfig$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePreviousConfig' from JSON`, ); } /** @internal */ -export const SyncListResponsePoolsUnion$inboundSchema: z.ZodType< - SyncListResponsePoolsUnion, +export const SyncListResponsePreviousConfigUnion$inboundSchema: z.ZodType< + SyncListResponsePreviousConfigUnion, unknown > = z.union([ - z.lazy(() => SyncListResponsePoolsFixed$inboundSchema), - z.lazy(() => SyncListResponsePoolsAutoscale$inboundSchema), + z.lazy(() => SyncListResponsePreviousConfig$inboundSchema), + z.any(), ]); -export function syncListResponsePoolsUnionFromJSON( +export function syncListResponsePreviousConfigUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => SyncListResponsePoolsUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponsePoolsUnion' from JSON`, + (x) => + SyncListResponsePreviousConfigUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePreviousConfigUnion' from JSON`, ); } /** @internal */ -export const SyncListResponseCompute$inboundSchema: z.ZodType< - SyncListResponseCompute, +export const SyncListResponseStackStateStatus$inboundSchema: z.ZodEnum< + typeof SyncListResponseStackStateStatus +> = z.enum(SyncListResponseStackStateStatus); + +/** @internal */ +export const SyncListResponseStackStateResources$inboundSchema: z.ZodType< + SyncListResponseStackStateResources, unknown > = z.object({ - pools: z.record( - z.string(), + _internal: z.nullable(z.any()).optional(), + config: z.lazy(() => SyncListResponseStackStateConfig$inboundSchema), + controllerPlatform: z.nullable( + z.union([SyncListResponseControllerPlatformEnum$inboundSchema, z.any()]), + ).optional(), + dependencies: z.array( + z.lazy(() => SyncListResponseStackStateDependency$inboundSchema), + ).optional(), + error: z.nullable( z.union([ - z.lazy(() => SyncListResponsePoolsFixed$inboundSchema), - z.lazy(() => SyncListResponsePoolsAutoscale$inboundSchema), + z.lazy(() => SyncListResponseErrorStackState$inboundSchema), + z.any(), + ]), + ).optional(), + lastFailedState: z.nullable(z.any()).optional(), + lifecycle: z.nullable( + z.union([SyncListResponseLifecycleStackStateEnum$inboundSchema, z.any()]), + ).optional(), + outputs: z.nullable( + z.union([z.lazy(() => SyncListResponseOutputs$inboundSchema), z.any()]), + ).optional(), + previousConfig: z.nullable( + z.union([ + z.lazy(() => SyncListResponsePreviousConfig$inboundSchema), + z.any(), ]), ).optional(), + remoteBindingParams: z.nullable(z.any()).optional(), + retryAttempt: z.int().optional(), + status: SyncListResponseStackStateStatus$inboundSchema, + type: z.string(), +}).transform((v) => { + return remap$(v, { + "_internal": "internal", + }); }); -export function syncListResponseComputeFromJSON( +export function syncListResponseStackStateResourcesFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => SyncListResponseCompute$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseCompute' from JSON`, + (x) => + SyncListResponseStackStateResources$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseStackStateResources' from JSON`, ); } /** @internal */ -export const SyncListResponseComputeUnion$inboundSchema: z.ZodType< - SyncListResponseComputeUnion, +export const SyncListResponseStackState$inboundSchema: z.ZodType< + SyncListResponseStackState, unknown -> = z.union([z.lazy(() => SyncListResponseCompute$inboundSchema), z.any()]); +> = z.object({ + platform: SyncListResponseStackStatePlatform$inboundSchema, + resourcePrefix: z.string(), + resources: z.record( + z.string(), + z.lazy(() => SyncListResponseStackStateResources$inboundSchema), + ), +}); -export function syncListResponseComputeUnionFromJSON( +export function syncListResponseStackStateFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => SyncListResponseComputeUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseComputeUnion' from JSON`, + (x) => SyncListResponseStackState$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseStackState' from JSON`, ); } /** @internal */ -export const SyncListResponseDeploymentModel$inboundSchema: z.ZodEnum< - typeof SyncListResponseDeploymentModel -> = z.enum(SyncListResponseDeploymentModel); +export const SyncListResponseInitialSetupAuthority$inboundSchema: z.ZodEnum< + typeof SyncListResponseInitialSetupAuthority +> = z.enum(SyncListResponseInitialSetupAuthority); /** @internal */ -export const SyncListResponseAws$inboundSchema: z.ZodType< - SyncListResponseAws, - unknown -> = z.object({ - certificateArn: z.string(), -}); +export const SyncListResponsePendingPreparedStackTypeStringList$inboundSchema: + z.ZodEnum = z.enum( + SyncListResponsePendingPreparedStackTypeStringList, + ); -export function syncListResponseAwsFromJSON( +/** @internal */ +export const SyncListResponsePendingPreparedStackDefaultStringList$inboundSchema: + z.ZodType = z + .object({ + type: SyncListResponsePendingPreparedStackTypeStringList$inboundSchema, + value: z.array(z.string()), + }); + +export function syncListResponsePendingPreparedStackDefaultStringListFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackDefaultStringList, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseAws$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseAws' from JSON`, + (x) => + SyncListResponsePendingPreparedStackDefaultStringList$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackDefaultStringList' from JSON`, ); } /** @internal */ -export const SyncListResponseAwsUnion$inboundSchema: z.ZodType< - SyncListResponseAwsUnion, - unknown -> = z.union([z.lazy(() => SyncListResponseAws$inboundSchema), z.any()]); +export const SyncListResponsePendingPreparedStackTypeBoolean$inboundSchema: + z.ZodEnum = z.enum( + SyncListResponsePendingPreparedStackTypeBoolean, + ); -export function syncListResponseAwsUnionFromJSON( +/** @internal */ +export const SyncListResponsePendingPreparedStackDefaultBoolean$inboundSchema: + z.ZodType = z + .object({ + type: SyncListResponsePendingPreparedStackTypeBoolean$inboundSchema, + value: z.boolean(), + }); + +export function syncListResponsePendingPreparedStackDefaultBooleanFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackDefaultBoolean, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseAwsUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseAwsUnion' from JSON`, + (x) => + SyncListResponsePendingPreparedStackDefaultBoolean$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackDefaultBoolean' from JSON`, ); } /** @internal */ -export const SyncListResponseAzureStackSettings$inboundSchema: z.ZodType< - SyncListResponseAzureStackSettings, - unknown -> = z.object({ - keyVaultCertificateId: z.string(), - keyVaultResourceId: z.nullable(z.string()).optional(), -}); +export const SyncListResponsePendingPreparedStackTypeNumber$inboundSchema: + z.ZodEnum = z.enum( + SyncListResponsePendingPreparedStackTypeNumber, + ); -export function syncListResponseAzureStackSettingsFromJSON( +/** @internal */ +export const SyncListResponsePendingPreparedStackDefaultNumber$inboundSchema: + z.ZodType = z + .object({ + type: SyncListResponsePendingPreparedStackTypeNumber$inboundSchema, + value: z.string(), + }); + +export function syncListResponsePendingPreparedStackDefaultNumberFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackDefaultNumber, + SDKValidationError +> { return safeParse( jsonString, (x) => - SyncListResponseAzureStackSettings$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseAzureStackSettings' from JSON`, + SyncListResponsePendingPreparedStackDefaultNumber$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackDefaultNumber' from JSON`, ); } /** @internal */ -export const SyncListResponseAzureUnion$inboundSchema: z.ZodType< - SyncListResponseAzureUnion, - unknown -> = z.union([ - z.lazy(() => SyncListResponseAzureStackSettings$inboundSchema), - z.any(), -]); +export const SyncListResponsePendingPreparedStackTypeString$inboundSchema: + z.ZodEnum = z.enum( + SyncListResponsePendingPreparedStackTypeString, + ); -export function syncListResponseAzureUnionFromJSON( +/** @internal */ +export const SyncListResponsePendingPreparedStackDefaultString$inboundSchema: + z.ZodType = z + .object({ + type: SyncListResponsePendingPreparedStackTypeString$inboundSchema, + value: z.string(), + }); + +export function syncListResponsePendingPreparedStackDefaultStringFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackDefaultString, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseAzureUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseAzureUnion' from JSON`, + (x) => + SyncListResponsePendingPreparedStackDefaultString$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackDefaultString' from JSON`, ); } /** @internal */ -export const SyncListResponseGcpStackSettings$inboundSchema: z.ZodType< - SyncListResponseGcpStackSettings, - unknown -> = z.object({ - certificateName: z.string(), -}); +export const SyncListResponsePendingPreparedStackDefaultUnion$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => + SyncListResponsePendingPreparedStackDefaultString$inboundSchema + ), + z.lazy(() => + SyncListResponsePendingPreparedStackDefaultNumber$inboundSchema + ), + z.lazy(() => + SyncListResponsePendingPreparedStackDefaultBoolean$inboundSchema + ), + z.lazy(() => + SyncListResponsePendingPreparedStackDefaultStringList$inboundSchema + ), + z.any(), + ]); -export function syncListResponseGcpStackSettingsFromJSON( +export function syncListResponsePendingPreparedStackDefaultUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackDefaultUnion, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseGcpStackSettings$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseGcpStackSettings' from JSON`, + (x) => + SyncListResponsePendingPreparedStackDefaultUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackDefaultUnion' from JSON`, ); } /** @internal */ -export const SyncListResponseGcpUnion$inboundSchema: z.ZodType< - SyncListResponseGcpUnion, - unknown -> = z.union([ - z.lazy(() => SyncListResponseGcpStackSettings$inboundSchema), - z.any(), -]); +export const SyncListResponsePendingPreparedStackTypeEnvEnum$inboundSchema: + z.ZodEnum = z.enum( + SyncListResponsePendingPreparedStackTypeEnvEnum, + ); -export function syncListResponseGcpUnionFromJSON( +/** @internal */ +export const SyncListResponsePendingPreparedStackTypeUnion$inboundSchema: + z.ZodType = z.union([ + SyncListResponsePendingPreparedStackTypeEnvEnum$inboundSchema, + z.any(), + ]); + +export function syncListResponsePendingPreparedStackTypeUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackTypeUnion, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseGcpUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseGcpUnion' from JSON`, + (x) => + SyncListResponsePendingPreparedStackTypeUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackTypeUnion' from JSON`, ); } /** @internal */ -export const SyncListResponseTlsSecretRef$inboundSchema: z.ZodType< - SyncListResponseTlsSecretRef, +export const SyncListResponsePendingPreparedStackEnv$inboundSchema: z.ZodType< + SyncListResponsePendingPreparedStackEnv, unknown > = z.object({ - namespace: z.nullable(z.string()).optional(), - secretName: z.string(), + name: z.string(), + targetResources: z.nullable(z.array(z.string())).optional(), + type: z.nullable( + z.union([ + SyncListResponsePendingPreparedStackTypeEnvEnum$inboundSchema, + z.any(), + ]), + ).optional(), }); -export function syncListResponseTlsSecretRefFromJSON( +export function syncListResponsePendingPreparedStackEnvFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackEnv, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseTlsSecretRef$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseTlsSecretRef' from JSON`, + (x) => + SyncListResponsePendingPreparedStackEnv$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackEnv' from JSON`, ); } /** @internal */ -export const SyncListResponseDomainsKubernetes$inboundSchema: z.ZodType< - SyncListResponseDomainsKubernetes, - unknown -> = z.object({ - tlsSecretRef: z.lazy(() => SyncListResponseTlsSecretRef$inboundSchema), -}); +export const SyncListResponsePendingPreparedStackKind$inboundSchema: z.ZodEnum< + typeof SyncListResponsePendingPreparedStackKind +> = z.enum(SyncListResponsePendingPreparedStackKind); -export function syncListResponseDomainsKubernetesFromJSON( +/** @internal */ +export const SyncListResponsePendingPreparedStackPlatform$inboundSchema: + z.ZodEnum = z.enum( + SyncListResponsePendingPreparedStackPlatform, + ); + +/** @internal */ +export const SyncListResponsePendingPreparedStackProvidedBy$inboundSchema: + z.ZodEnum = z.enum( + SyncListResponsePendingPreparedStackProvidedBy, + ); + +/** @internal */ +export const SyncListResponsePendingPreparedStackValidation$inboundSchema: + z.ZodType = z.object( + { + format: z.nullable(z.string()).optional(), + max: z.nullable(z.string()).optional(), + maxItems: z.nullable(z.int()).optional(), + maxLength: z.nullable(z.int()).optional(), + min: z.nullable(z.string()).optional(), + minItems: z.nullable(z.int()).optional(), + minLength: z.nullable(z.int()).optional(), + pattern: z.nullable(z.string()).optional(), + values: z.nullable(z.array(z.string())).optional(), + }, + ); + +export function syncListResponsePendingPreparedStackValidationFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackValidation, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseDomainsKubernetes$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseDomainsKubernetes' from JSON`, + (x) => + SyncListResponsePendingPreparedStackValidation$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackValidation' from JSON`, ); } /** @internal */ -export const SyncListResponseDomainsKubernetesUnion$inboundSchema: z.ZodType< - SyncListResponseDomainsKubernetesUnion, - unknown -> = z.union([ - z.lazy(() => SyncListResponseDomainsKubernetes$inboundSchema), - z.any(), -]); +export const SyncListResponsePendingPreparedStackValidationUnion$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => + SyncListResponsePendingPreparedStackValidation$inboundSchema + ), + z.any(), + ]); -export function syncListResponseDomainsKubernetesUnionFromJSON( +export function syncListResponsePendingPreparedStackValidationUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackValidationUnion, + SDKValidationError +> { return safeParse( jsonString, (x) => - SyncListResponseDomainsKubernetesUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseDomainsKubernetesUnion' from JSON`, + SyncListResponsePendingPreparedStackValidationUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackValidationUnion' from JSON`, ); } /** @internal */ -export const SyncListResponseDomainsCertificate$inboundSchema: z.ZodType< - SyncListResponseDomainsCertificate, +export const SyncListResponsePendingPreparedStackInput$inboundSchema: z.ZodType< + SyncListResponsePendingPreparedStackInput, unknown > = z.object({ - aws: z.nullable( - z.union([z.lazy(() => SyncListResponseAws$inboundSchema), z.any()]), - ).optional(), - azure: z.nullable( + default: z.nullable( z.union([ - z.lazy(() => SyncListResponseAzureStackSettings$inboundSchema), + z.lazy(() => + SyncListResponsePendingPreparedStackDefaultString$inboundSchema + ), + z.lazy(() => + SyncListResponsePendingPreparedStackDefaultNumber$inboundSchema + ), + z.lazy(() => + SyncListResponsePendingPreparedStackDefaultBoolean$inboundSchema + ), + z.lazy(() => + SyncListResponsePendingPreparedStackDefaultStringList$inboundSchema + ), z.any(), ]), ).optional(), - gcp: z.nullable( - z.union([ - z.lazy(() => SyncListResponseGcpStackSettings$inboundSchema), - z.any(), - ]), + description: z.string(), + env: z.array( + z.lazy(() => SyncListResponsePendingPreparedStackEnv$inboundSchema), ).optional(), - kubernetes: z.nullable( + id: z.string(), + kind: SyncListResponsePendingPreparedStackKind$inboundSchema, + label: z.string(), + placeholder: z.nullable(z.string()).optional(), + platforms: z.nullable( + z.array(SyncListResponsePendingPreparedStackPlatform$inboundSchema), + ).optional(), + providedBy: z.array( + SyncListResponsePendingPreparedStackProvidedBy$inboundSchema, + ), + required: z.boolean(), + validation: z.nullable( z.union([ - z.lazy(() => SyncListResponseDomainsKubernetes$inboundSchema), + z.lazy(() => + SyncListResponsePendingPreparedStackValidation$inboundSchema + ), z.any(), ]), ).optional(), }); -export function syncListResponseDomainsCertificateFromJSON( +export function syncListResponsePendingPreparedStackInputFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackInput, + SDKValidationError +> { return safeParse( jsonString, (x) => - SyncListResponseDomainsCertificate$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseDomainsCertificate' from JSON`, + SyncListResponsePendingPreparedStackInput$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackInput' from JSON`, ); } /** @internal */ -export const SyncListResponseCustomDomains$inboundSchema: z.ZodType< - SyncListResponseCustomDomains, - unknown -> = z.object({ - certificate: z.lazy(() => SyncListResponseDomainsCertificate$inboundSchema), - domain: z.string(), -}); +export const SyncListResponsePendingPreparedStackManagementEnum$inboundSchema: + z.ZodEnum = z.enum( + SyncListResponsePendingPreparedStackManagementEnum, + ); -export function syncListResponseCustomDomainsFromJSON( +/** @internal */ +export const SyncListResponsePendingPreparedStackOverrideAwResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncListResponsePendingPreparedStackOverrideAwResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackOverrideAwResource, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseCustomDomains$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseCustomDomains' from JSON`, + (x) => + SyncListResponsePendingPreparedStackOverrideAwResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePendingPreparedStackOverrideAwResource' from JSON`, ); } /** @internal */ -export const SyncListResponseModeLoadBalancer$inboundSchema: z.ZodEnum< - typeof SyncListResponseModeLoadBalancer -> = z.enum(SyncListResponseModeLoadBalancer); +export const SyncListResponsePendingPreparedStackOverrideAwStack$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncListResponsePendingPreparedStackOverrideAwStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncListResponsePendingPreparedStackOverrideAwStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncListResponsePendingPreparedStackOverrideAwStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackOverrideAwStack' from JSON`, + ); +} /** @internal */ -export const SyncListResponsePublicEndpointTargetLoadBalancer$inboundSchema: - z.ZodType = z +export const SyncListResponsePendingPreparedStackOverrideAwBinding$inboundSchema: + z.ZodType = z .object({ - cnameTarget: z.string(), - mode: SyncListResponseModeLoadBalancer$inboundSchema, + resource: z.lazy(() => + SyncListResponsePendingPreparedStackOverrideAwResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncListResponsePendingPreparedStackOverrideAwStack$inboundSchema + ).optional(), }); -export function syncListResponsePublicEndpointTargetLoadBalancerFromJSON( +export function syncListResponsePendingPreparedStackOverrideAwBindingFromJSON( jsonString: string, ): SafeParseResult< - SyncListResponsePublicEndpointTargetLoadBalancer, + SyncListResponsePendingPreparedStackOverrideAwBinding, SDKValidationError > { return safeParse( jsonString, (x) => - SyncListResponsePublicEndpointTargetLoadBalancer$inboundSchema.parse( + SyncListResponsePendingPreparedStackOverrideAwBinding$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'SyncListResponsePublicEndpointTargetLoadBalancer' from JSON`, + `Failed to parse 'SyncListResponsePendingPreparedStackOverrideAwBinding' from JSON`, ); } /** @internal */ -export const SyncListResponseModeMachineAddresses$inboundSchema: z.ZodEnum< - typeof SyncListResponseModeMachineAddresses -> = z.enum(SyncListResponseModeMachineAddresses); +export const SyncListResponsePendingPreparedStackOverrideEffect$inboundSchema: + z.ZodEnum = z.enum( + SyncListResponsePendingPreparedStackOverrideEffect, + ); /** @internal */ -export const SyncListResponsePublicEndpointTargetMachineAddresses$inboundSchema: - z.ZodType = z +export const SyncListResponsePendingPreparedStackOverrideAwGrant$inboundSchema: + z.ZodType = z .object({ - mode: SyncListResponseModeMachineAddresses$inboundSchema, + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function syncListResponsePublicEndpointTargetMachineAddressesFromJSON( +export function syncListResponsePendingPreparedStackOverrideAwGrantFromJSON( jsonString: string, ): SafeParseResult< - SyncListResponsePublicEndpointTargetMachineAddresses, + SyncListResponsePendingPreparedStackOverrideAwGrant, SDKValidationError > { return safeParse( jsonString, (x) => - SyncListResponsePublicEndpointTargetMachineAddresses$inboundSchema.parse( + SyncListResponsePendingPreparedStackOverrideAwGrant$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'SyncListResponsePublicEndpointTargetMachineAddresses' from JSON`, + `Failed to parse 'SyncListResponsePendingPreparedStackOverrideAwGrant' from JSON`, ); } /** @internal */ -export const SyncListResponsePublicEndpointTargetUnion$inboundSchema: z.ZodType< - SyncListResponsePublicEndpointTargetUnion, - unknown -> = z.union([ - z.lazy(() => SyncListResponsePublicEndpointTargetLoadBalancer$inboundSchema), - z.lazy(() => - SyncListResponsePublicEndpointTargetMachineAddresses$inboundSchema - ), - z.any(), -]); +export const SyncListResponsePendingPreparedStackOverrideAw$inboundSchema: + z.ZodType = z.object( + { + binding: z.lazy(() => + SyncListResponsePendingPreparedStackOverrideAwBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: SyncListResponsePendingPreparedStackOverrideEffect$inboundSchema + .optional(), + grant: z.lazy(() => + SyncListResponsePendingPreparedStackOverrideAwGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }, + ); -export function syncListResponsePublicEndpointTargetUnionFromJSON( +export function syncListResponsePendingPreparedStackOverrideAwFromJSON( jsonString: string, ): SafeParseResult< - SyncListResponsePublicEndpointTargetUnion, + SyncListResponsePendingPreparedStackOverrideAw, SDKValidationError > { return safeParse( jsonString, (x) => - SyncListResponsePublicEndpointTargetUnion$inboundSchema.parse( + SyncListResponsePendingPreparedStackOverrideAw$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'SyncListResponsePublicEndpointTargetUnion' from JSON`, + `Failed to parse 'SyncListResponsePendingPreparedStackOverrideAw' from JSON`, ); } /** @internal */ -export const SyncListResponseDomains$inboundSchema: z.ZodType< - SyncListResponseDomains, - unknown -> = z.object({ - customDomains: z.nullable( - z.record( - z.string(), - z.lazy(() => SyncListResponseCustomDomains$inboundSchema), - ), - ).optional(), - publicEndpointTarget: z.nullable( - z.union([ - z.lazy(() => - SyncListResponsePublicEndpointTargetLoadBalancer$inboundSchema - ), - z.lazy(() => - SyncListResponsePublicEndpointTargetMachineAddresses$inboundSchema - ), - z.any(), - ]), - ).optional(), -}); +export const SyncListResponsePendingPreparedStackOverrideAzureResource$inboundSchema: + z.ZodType< + SyncListResponsePendingPreparedStackOverrideAzureResource, + unknown + > = z.object({ + scope: z.string(), + }); -export function syncListResponseDomainsFromJSON( +export function syncListResponsePendingPreparedStackOverrideAzureResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackOverrideAzureResource, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseDomains$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseDomains' from JSON`, + (x) => + SyncListResponsePendingPreparedStackOverrideAzureResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePendingPreparedStackOverrideAzureResource' from JSON`, ); } /** @internal */ -export const SyncListResponseDomainsUnion$inboundSchema: z.ZodType< - SyncListResponseDomainsUnion, - unknown -> = z.union([z.lazy(() => SyncListResponseDomains$inboundSchema), z.any()]); +export const SyncListResponsePendingPreparedStackOverrideAzureStack$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); -export function syncListResponseDomainsUnionFromJSON( +export function syncListResponsePendingPreparedStackOverrideAzureStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackOverrideAzureStack, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseDomainsUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseDomainsUnion' from JSON`, + (x) => + SyncListResponsePendingPreparedStackOverrideAzureStack$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePendingPreparedStackOverrideAzureStack' from JSON`, ); } /** @internal */ -export const SyncListResponseExternalBindings$inboundSchema: z.ZodType< - SyncListResponseExternalBindings, - unknown -> = z.object({}); +export const SyncListResponsePendingPreparedStackOverrideAzureBinding$inboundSchema: + z.ZodType = + z.object({ + resource: z.lazy(() => + SyncListResponsePendingPreparedStackOverrideAzureResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncListResponsePendingPreparedStackOverrideAzureStack$inboundSchema + ).optional(), + }); -export function syncListResponseExternalBindingsFromJSON( +export function syncListResponsePendingPreparedStackOverrideAzureBindingFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackOverrideAzureBinding, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseExternalBindings$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseExternalBindings' from JSON`, + (x) => + SyncListResponsePendingPreparedStackOverrideAzureBinding$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePendingPreparedStackOverrideAzureBinding' from JSON`, ); } /** @internal */ -export const SyncListResponseHeartbeats$inboundSchema: z.ZodEnum< - typeof SyncListResponseHeartbeats -> = z.enum(SyncListResponseHeartbeats); +export const SyncListResponsePendingPreparedStackOverrideAzureGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncListResponsePendingPreparedStackOverrideAzureGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncListResponsePendingPreparedStackOverrideAzureGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncListResponsePendingPreparedStackOverrideAzureGrant$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePendingPreparedStackOverrideAzureGrant' from JSON`, + ); +} /** @internal */ -export const SyncListResponseCloud$inboundSchema: z.ZodType< - SyncListResponseCloud, - unknown -> = z.object({ - accountId: z.nullable(z.string()).optional(), - clusterId: z.nullable(z.string()).optional(), - clusterName: z.nullable(z.string()).optional(), - projectId: z.nullable(z.string()).optional(), - region: z.nullable(z.string()).optional(), - resourceGroup: z.nullable(z.string()).optional(), - subscriptionId: z.nullable(z.string()).optional(), -}); +export const SyncListResponsePendingPreparedStackOverrideAzure$inboundSchema: + z.ZodType = z + .object({ + binding: z.lazy(() => + SyncListResponsePendingPreparedStackOverrideAzureBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncListResponsePendingPreparedStackOverrideAzureGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); -export function syncListResponseCloudFromJSON( +export function syncListResponsePendingPreparedStackOverrideAzureFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackOverrideAzure, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseCloud$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseCloud' from JSON`, + (x) => + SyncListResponsePendingPreparedStackOverrideAzure$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackOverrideAzure' from JSON`, ); } /** @internal */ -export const SyncListResponseCloudUnion$inboundSchema: z.ZodType< - SyncListResponseCloudUnion, - unknown -> = z.union([z.lazy(() => SyncListResponseCloud$inboundSchema), z.any()]); +export const SyncListResponsePendingPreparedStackOverrideConditionResource$inboundSchema: + z.ZodType< + SyncListResponsePendingPreparedStackOverrideConditionResource, + unknown + > = z.object({ + expression: z.string(), + title: z.string(), + }); -export function syncListResponseCloudUnionFromJSON( +export function syncListResponsePendingPreparedStackOverrideConditionResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackOverrideConditionResource, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseCloudUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseCloudUnion' from JSON`, + (x) => + SyncListResponsePendingPreparedStackOverrideConditionResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePendingPreparedStackOverrideConditionResource' from JSON`, ); } /** @internal */ -export const SyncListResponseOwnership$inboundSchema: z.ZodEnum< - typeof SyncListResponseOwnership -> = z.enum(SyncListResponseOwnership); +export const SyncListResponsePendingPreparedStackOverrideResourceConditionUnion$inboundSchema: + z.ZodType< + SyncListResponsePendingPreparedStackOverrideResourceConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncListResponsePendingPreparedStackOverrideConditionResource$inboundSchema + ), + z.any(), + ]); + +export function syncListResponsePendingPreparedStackOverrideResourceConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncListResponsePendingPreparedStackOverrideResourceConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncListResponsePendingPreparedStackOverrideResourceConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePendingPreparedStackOverrideResourceConditionUnion' from JSON`, + ); +} /** @internal */ -export const SyncListResponseCluster$inboundSchema: z.ZodType< - SyncListResponseCluster, - unknown -> = z.object({ - cloud: z.nullable( - z.union([z.lazy(() => SyncListResponseCloud$inboundSchema), z.any()]), - ).optional(), - namespace: z.nullable(z.string()).optional(), - ownership: SyncListResponseOwnership$inboundSchema, -}); +export const SyncListResponsePendingPreparedStackOverrideGcpResource$inboundSchema: + z.ZodType = + z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncListResponsePendingPreparedStackOverrideConditionResource$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); -export function syncListResponseClusterFromJSON( +export function syncListResponsePendingPreparedStackOverrideGcpResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackOverrideGcpResource, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseCluster$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseCluster' from JSON`, + (x) => + SyncListResponsePendingPreparedStackOverrideGcpResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePendingPreparedStackOverrideGcpResource' from JSON`, ); } /** @internal */ -export const SyncListResponseClusterUnion$inboundSchema: z.ZodType< - SyncListResponseClusterUnion, - unknown -> = z.union([z.lazy(() => SyncListResponseCluster$inboundSchema), z.any()]); +export const SyncListResponsePendingPreparedStackOverrideConditionStack$inboundSchema: + z.ZodType< + SyncListResponsePendingPreparedStackOverrideConditionStack, + unknown + > = z.object({ + expression: z.string(), + title: z.string(), + }); -export function syncListResponseClusterUnionFromJSON( +export function syncListResponsePendingPreparedStackOverrideConditionStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackOverrideConditionStack, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseClusterUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseClusterUnion' from JSON`, + (x) => + SyncListResponsePendingPreparedStackOverrideConditionStack$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePendingPreparedStackOverrideConditionStack' from JSON`, ); } /** @internal */ -export const SyncListResponseCertificateNone2$inboundSchema: z.ZodType< - SyncListResponseCertificateNone2, - unknown -> = z.object({ - mode: z.literal("none"), -}); +export const SyncListResponsePendingPreparedStackOverrideStackConditionUnion$inboundSchema: + z.ZodType< + SyncListResponsePendingPreparedStackOverrideStackConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncListResponsePendingPreparedStackOverrideConditionStack$inboundSchema + ), + z.any(), + ]); -export function syncListResponseCertificateNone2FromJSON( +export function syncListResponsePendingPreparedStackOverrideStackConditionUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackOverrideStackConditionUnion, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseCertificateNone2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseCertificateNone2' from JSON`, + (x) => + SyncListResponsePendingPreparedStackOverrideStackConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePendingPreparedStackOverrideStackConditionUnion' from JSON`, ); } /** @internal */ -export const SyncListResponseCertificateManagedTLSSecret2$inboundSchema: - z.ZodType = z.object({ - mode: z.literal("managedTlsSecret"), - secretNameTemplate: z.string(), - }); +export const SyncListResponsePendingPreparedStackOverrideGcpStack$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncListResponsePendingPreparedStackOverrideConditionStack$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); -export function syncListResponseCertificateManagedTLSSecret2FromJSON( +export function syncListResponsePendingPreparedStackOverrideGcpStackFromJSON( jsonString: string, ): SafeParseResult< - SyncListResponseCertificateManagedTLSSecret2, + SyncListResponsePendingPreparedStackOverrideGcpStack, SDKValidationError > { return safeParse( jsonString, (x) => - SyncListResponseCertificateManagedTLSSecret2$inboundSchema.parse( + SyncListResponsePendingPreparedStackOverrideGcpStack$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'SyncListResponseCertificateManagedTLSSecret2' from JSON`, + `Failed to parse 'SyncListResponsePendingPreparedStackOverrideGcpStack' from JSON`, ); } /** @internal */ -export const SyncListResponseCertificateAwsAcmArn2$inboundSchema: z.ZodType< - SyncListResponseCertificateAwsAcmArn2, - unknown -> = z.object({ - certificateArn: z.string(), - mode: z.literal("awsAcmArn"), -}); +export const SyncListResponsePendingPreparedStackOverrideGcpBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncListResponsePendingPreparedStackOverrideGcpResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncListResponsePendingPreparedStackOverrideGcpStack$inboundSchema + ).optional(), + }); -export function syncListResponseCertificateAwsAcmArn2FromJSON( +export function syncListResponsePendingPreparedStackOverrideGcpBindingFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackOverrideGcpBinding, + SDKValidationError +> { return safeParse( jsonString, (x) => - SyncListResponseCertificateAwsAcmArn2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseCertificateAwsAcmArn2' from JSON`, + SyncListResponsePendingPreparedStackOverrideGcpBinding$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePendingPreparedStackOverrideGcpBinding' from JSON`, ); } /** @internal */ -export const SyncListResponseCertificateManagedAcmImport2$inboundSchema: - z.ZodType = z.object({ - mode: z.literal("managedAcmImport"), - region: z.nullable(z.string()).optional(), - tags: z.record(z.string(), z.string()).optional(), - }); +export const SyncListResponsePendingPreparedStackOverrideGcpGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); -export function syncListResponseCertificateManagedAcmImport2FromJSON( +export function syncListResponsePendingPreparedStackOverrideGcpGrantFromJSON( jsonString: string, ): SafeParseResult< - SyncListResponseCertificateManagedAcmImport2, + SyncListResponsePendingPreparedStackOverrideGcpGrant, SDKValidationError > { return safeParse( jsonString, (x) => - SyncListResponseCertificateManagedAcmImport2$inboundSchema.parse( + SyncListResponsePendingPreparedStackOverrideGcpGrant$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'SyncListResponseCertificateManagedAcmImport2' from JSON`, + `Failed to parse 'SyncListResponsePendingPreparedStackOverrideGcpGrant' from JSON`, ); } /** @internal */ -export const SyncListResponseCertificateTLSSecretRef2$inboundSchema: z.ZodType< - SyncListResponseCertificateTLSSecretRef2, - unknown -> = z.object({ - namespace: z.nullable(z.string()).optional(), - secretName: z.string(), - mode: z.literal("tlsSecretRef"), -}); +export const SyncListResponsePendingPreparedStackOverrideGcp$inboundSchema: + z.ZodType = z + .object({ + binding: z.lazy(() => + SyncListResponsePendingPreparedStackOverrideGcpBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncListResponsePendingPreparedStackOverrideGcpGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); -export function syncListResponseCertificateTLSSecretRef2FromJSON( +export function syncListResponsePendingPreparedStackOverrideGcpFromJSON( jsonString: string, ): SafeParseResult< - SyncListResponseCertificateTLSSecretRef2, + SyncListResponsePendingPreparedStackOverrideGcp, SDKValidationError > { return safeParse( jsonString, (x) => - SyncListResponseCertificateTLSSecretRef2$inboundSchema.parse( + SyncListResponsePendingPreparedStackOverrideGcp$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'SyncListResponseCertificateTLSSecretRef2' from JSON`, + `Failed to parse 'SyncListResponsePendingPreparedStackOverrideGcp' from JSON`, ); } /** @internal */ -export const SyncListResponseCertificateUnion2$inboundSchema: z.ZodType< - SyncListResponseCertificateUnion2, - unknown -> = z.union([ - z.lazy(() => SyncListResponseCertificateTLSSecretRef2$inboundSchema), - z.lazy(() => SyncListResponseCertificateManagedAcmImport2$inboundSchema), - z.lazy(() => SyncListResponseCertificateAwsAcmArn2$inboundSchema), - z.lazy(() => SyncListResponseCertificateManagedTLSSecret2$inboundSchema), - z.lazy(() => SyncListResponseCertificateNone2$inboundSchema), -]); +export const SyncListResponsePendingPreparedStackOverridePlatforms$inboundSchema: + z.ZodType = z + .object({ + aws: z.nullable( + z.array(z.lazy(() => + SyncListResponsePendingPreparedStackOverrideAw$inboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + SyncListResponsePendingPreparedStackOverrideAzure$inboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + SyncListResponsePendingPreparedStackOverrideGcp$inboundSchema + )), + ).optional(), + }); -export function syncListResponseCertificateUnion2FromJSON( +export function syncListResponsePendingPreparedStackOverridePlatformsFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackOverridePlatforms, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseCertificateUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseCertificateUnion2' from JSON`, + (x) => + SyncListResponsePendingPreparedStackOverridePlatforms$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackOverridePlatforms' from JSON`, ); } /** @internal */ -export const SyncListResponseModeCustom$inboundSchema: z.ZodEnum< - typeof SyncListResponseModeCustom -> = z.enum(SyncListResponseModeCustom); - -/** @internal */ -export const SyncListResponseProviderAzureApplicationGatewayForContainersEnum4$inboundSchema: - z.ZodEnum< - typeof SyncListResponseProviderAzureApplicationGatewayForContainersEnum4 - > = z.enum(SyncListResponseProviderAzureApplicationGatewayForContainersEnum4); - -/** @internal */ -export const SyncListResponseProviderAzureApplicationGatewayForContainers4$inboundSchema: - z.ZodType< - SyncListResponseProviderAzureApplicationGatewayForContainers4, - unknown - > = z.object({ - albName: z.nullable(z.string()).optional(), - albNamespace: z.nullable(z.string()).optional(), - frontend: z.string(), - provider: - SyncListResponseProviderAzureApplicationGatewayForContainersEnum4$inboundSchema, +export const SyncListResponsePendingPreparedStackOverride$inboundSchema: + z.ZodType = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncListResponsePendingPreparedStackOverridePlatforms$inboundSchema + ), }); -export function syncListResponseProviderAzureApplicationGatewayForContainers4FromJSON( +export function syncListResponsePendingPreparedStackOverrideFromJSON( jsonString: string, ): SafeParseResult< - SyncListResponseProviderAzureApplicationGatewayForContainers4, + SyncListResponsePendingPreparedStackOverride, SDKValidationError > { return safeParse( jsonString, (x) => - SyncListResponseProviderAzureApplicationGatewayForContainers4$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProviderAzureApplicationGatewayForContainers4' from JSON`, + SyncListResponsePendingPreparedStackOverride$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackOverride' from JSON`, ); } /** @internal */ -export const SyncListResponseProviderGkeGatewayEnum4$inboundSchema: z.ZodEnum< - typeof SyncListResponseProviderGkeGatewayEnum4 -> = z.enum(SyncListResponseProviderGkeGatewayEnum4); - -/** @internal */ -export const SyncListResponseProviderGkeGateway4$inboundSchema: z.ZodType< - SyncListResponseProviderGkeGateway4, - unknown -> = z.object({ - provider: SyncListResponseProviderGkeGatewayEnum4$inboundSchema, - staticAddressName: z.nullable(z.string()).optional(), -}); +export const SyncListResponsePendingPreparedStackOverrideUnion$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => SyncListResponsePendingPreparedStackOverride$inboundSchema), + z.string(), + ]); -export function syncListResponseProviderGkeGateway4FromJSON( +export function syncListResponsePendingPreparedStackOverrideUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackOverrideUnion, + SDKValidationError +> { return safeParse( jsonString, (x) => - SyncListResponseProviderGkeGateway4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProviderGkeGateway4' from JSON`, + SyncListResponsePendingPreparedStackOverrideUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackOverrideUnion' from JSON`, ); } /** @internal */ -export const SyncListResponseProviderAwsAlbEnum4$inboundSchema: z.ZodEnum< - typeof SyncListResponseProviderAwsAlbEnum4 -> = z.enum(SyncListResponseProviderAwsAlbEnum4); +export const SyncListResponsePendingPreparedStackManagement2$inboundSchema: + z.ZodType = z + .object({ + override: z.record( + z.string(), + z.array(z.union([ + z.lazy(() => + SyncListResponsePendingPreparedStackOverride$inboundSchema + ), + z.string(), + ])), + ), + }); + +export function syncListResponsePendingPreparedStackManagement2FromJSON( + jsonString: string, +): SafeParseResult< + SyncListResponsePendingPreparedStackManagement2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncListResponsePendingPreparedStackManagement2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackManagement2' from JSON`, + ); +} /** @internal */ -export const SyncListResponseProviderAwsAlb4$inboundSchema: z.ZodType< - SyncListResponseProviderAwsAlb4, - unknown -> = z.object({ - ipAddressType: z.nullable(z.string()).optional(), - provider: SyncListResponseProviderAwsAlbEnum4$inboundSchema, - scheme: z.string(), - subnetIds: z.array(z.string()).optional(), - targetType: z.string(), -}); +export const SyncListResponsePendingPreparedStackExtendAwResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); -export function syncListResponseProviderAwsAlb4FromJSON( +export function syncListResponsePendingPreparedStackExtendAwResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackExtendAwResource, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseProviderAwsAlb4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProviderAwsAlb4' from JSON`, + (x) => + SyncListResponsePendingPreparedStackExtendAwResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackExtendAwResource' from JSON`, ); } /** @internal */ -export const SyncListResponseProviderUnion4$inboundSchema: z.ZodType< - SyncListResponseProviderUnion4, - unknown -> = z.union([ - z.lazy(() => SyncListResponseProviderAwsAlb4$inboundSchema), - z.lazy(() => - SyncListResponseProviderAzureApplicationGatewayForContainers4$inboundSchema - ), - z.lazy(() => SyncListResponseProviderGkeGateway4$inboundSchema), - z.any(), -]); +export const SyncListResponsePendingPreparedStackExtendAwStack$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); -export function syncListResponseProviderUnion4FromJSON( +export function syncListResponsePendingPreparedStackExtendAwStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackExtendAwStack, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseProviderUnion4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProviderUnion4' from JSON`, + (x) => + SyncListResponsePendingPreparedStackExtendAwStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackExtendAwStack' from JSON`, ); } /** @internal */ -export const SyncListResponseRouteGateway2$inboundSchema: z.ZodType< - SyncListResponseRouteGateway2, - unknown -> = z.object({ - annotations: z.record(z.string(), z.string()).optional(), - controller: z.nullable(z.string()).optional(), - gatewayClassName: z.string(), - labels: z.record(z.string(), z.string()).optional(), - listenerPort: z.int(), - provider: z.nullable( - z.union([ - z.lazy(() => SyncListResponseProviderAwsAlb4$inboundSchema), - z.lazy(() => - SyncListResponseProviderAzureApplicationGatewayForContainers4$inboundSchema - ), - z.lazy(() => SyncListResponseProviderGkeGateway4$inboundSchema), - z.any(), - ]), - ).optional(), - routeApi: z.literal("gateway"), -}); +export const SyncListResponsePendingPreparedStackExtendAwBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncListResponsePendingPreparedStackExtendAwResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncListResponsePendingPreparedStackExtendAwStack$inboundSchema + ).optional(), + }); -export function syncListResponseRouteGateway2FromJSON( +export function syncListResponsePendingPreparedStackExtendAwBindingFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackExtendAwBinding, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseRouteGateway2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseRouteGateway2' from JSON`, + (x) => + SyncListResponsePendingPreparedStackExtendAwBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackExtendAwBinding' from JSON`, ); } /** @internal */ -export const SyncListResponseProviderAzureApplicationGatewayForContainersEnum3$inboundSchema: - z.ZodEnum< - typeof SyncListResponseProviderAzureApplicationGatewayForContainersEnum3 - > = z.enum(SyncListResponseProviderAzureApplicationGatewayForContainersEnum3); +export const SyncListResponsePendingPreparedStackExtendEffect$inboundSchema: + z.ZodEnum = z.enum( + SyncListResponsePendingPreparedStackExtendEffect, + ); /** @internal */ -export const SyncListResponseProviderAzureApplicationGatewayForContainers3$inboundSchema: - z.ZodType< - SyncListResponseProviderAzureApplicationGatewayForContainers3, - unknown - > = z.object({ - albName: z.nullable(z.string()).optional(), - albNamespace: z.nullable(z.string()).optional(), - frontend: z.string(), - provider: - SyncListResponseProviderAzureApplicationGatewayForContainersEnum3$inboundSchema, - }); +export const SyncListResponsePendingPreparedStackExtendAwGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); -export function syncListResponseProviderAzureApplicationGatewayForContainers3FromJSON( +export function syncListResponsePendingPreparedStackExtendAwGrantFromJSON( jsonString: string, ): SafeParseResult< - SyncListResponseProviderAzureApplicationGatewayForContainers3, + SyncListResponsePendingPreparedStackExtendAwGrant, SDKValidationError > { return safeParse( jsonString, (x) => - SyncListResponseProviderAzureApplicationGatewayForContainers3$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProviderAzureApplicationGatewayForContainers3' from JSON`, + SyncListResponsePendingPreparedStackExtendAwGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackExtendAwGrant' from JSON`, ); } /** @internal */ -export const SyncListResponseProviderGkeGatewayEnum3$inboundSchema: z.ZodEnum< - typeof SyncListResponseProviderGkeGatewayEnum3 -> = z.enum(SyncListResponseProviderGkeGatewayEnum3); - -/** @internal */ -export const SyncListResponseProviderGkeGateway3$inboundSchema: z.ZodType< - SyncListResponseProviderGkeGateway3, - unknown -> = z.object({ - provider: SyncListResponseProviderGkeGatewayEnum3$inboundSchema, - staticAddressName: z.nullable(z.string()).optional(), -}); +export const SyncListResponsePendingPreparedStackExtendAw$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + SyncListResponsePendingPreparedStackExtendAwBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: SyncListResponsePendingPreparedStackExtendEffect$inboundSchema + .optional(), + grant: z.lazy(() => + SyncListResponsePendingPreparedStackExtendAwGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); -export function syncListResponseProviderGkeGateway3FromJSON( +export function syncListResponsePendingPreparedStackExtendAwFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackExtendAw, + SDKValidationError +> { return safeParse( jsonString, (x) => - SyncListResponseProviderGkeGateway3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProviderGkeGateway3' from JSON`, + SyncListResponsePendingPreparedStackExtendAw$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackExtendAw' from JSON`, ); } /** @internal */ -export const SyncListResponseProviderAwsAlbEnum3$inboundSchema: z.ZodEnum< - typeof SyncListResponseProviderAwsAlbEnum3 -> = z.enum(SyncListResponseProviderAwsAlbEnum3); +export const SyncListResponsePendingPreparedStackExtendAzureResource$inboundSchema: + z.ZodType = + z.object({ + scope: z.string(), + }); + +export function syncListResponsePendingPreparedStackExtendAzureResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncListResponsePendingPreparedStackExtendAzureResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncListResponsePendingPreparedStackExtendAzureResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePendingPreparedStackExtendAzureResource' from JSON`, + ); +} /** @internal */ -export const SyncListResponseProviderAwsAlb3$inboundSchema: z.ZodType< - SyncListResponseProviderAwsAlb3, - unknown -> = z.object({ - ipAddressType: z.nullable(z.string()).optional(), - provider: SyncListResponseProviderAwsAlbEnum3$inboundSchema, - scheme: z.string(), - subnetIds: z.array(z.string()).optional(), - targetType: z.string(), -}); +export const SyncListResponsePendingPreparedStackExtendAzureStack$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); -export function syncListResponseProviderAwsAlb3FromJSON( +export function syncListResponsePendingPreparedStackExtendAzureStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackExtendAzureStack, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseProviderAwsAlb3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProviderAwsAlb3' from JSON`, + (x) => + SyncListResponsePendingPreparedStackExtendAzureStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackExtendAzureStack' from JSON`, ); } /** @internal */ -export const SyncListResponseProviderUnion3$inboundSchema: z.ZodType< - SyncListResponseProviderUnion3, - unknown -> = z.union([ - z.lazy(() => SyncListResponseProviderAwsAlb3$inboundSchema), - z.lazy(() => - SyncListResponseProviderAzureApplicationGatewayForContainers3$inboundSchema - ), - z.lazy(() => SyncListResponseProviderGkeGateway3$inboundSchema), - z.any(), -]); +export const SyncListResponsePendingPreparedStackExtendAzureBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncListResponsePendingPreparedStackExtendAzureResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncListResponsePendingPreparedStackExtendAzureStack$inboundSchema + ).optional(), + }); -export function syncListResponseProviderUnion3FromJSON( +export function syncListResponsePendingPreparedStackExtendAzureBindingFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackExtendAzureBinding, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseProviderUnion3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProviderUnion3' from JSON`, + (x) => + SyncListResponsePendingPreparedStackExtendAzureBinding$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePendingPreparedStackExtendAzureBinding' from JSON`, ); } /** @internal */ -export const SyncListResponseRouteIngress2$inboundSchema: z.ZodType< - SyncListResponseRouteIngress2, - unknown -> = z.object({ - annotations: z.record(z.string(), z.string()).optional(), - controller: z.nullable(z.string()).optional(), - ingressClassName: z.string(), - labels: z.record(z.string(), z.string()).optional(), - provider: z.nullable( - z.union([ - z.lazy(() => SyncListResponseProviderAwsAlb3$inboundSchema), - z.lazy(() => - SyncListResponseProviderAzureApplicationGatewayForContainers3$inboundSchema - ), - z.lazy(() => SyncListResponseProviderGkeGateway3$inboundSchema), - z.any(), - ]), - ).optional(), - routeApi: z.literal("ingress"), -}); +export const SyncListResponsePendingPreparedStackExtendAzureGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); -export function syncListResponseRouteIngress2FromJSON( +export function syncListResponsePendingPreparedStackExtendAzureGrantFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackExtendAzureGrant, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseRouteIngress2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseRouteIngress2' from JSON`, + (x) => + SyncListResponsePendingPreparedStackExtendAzureGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackExtendAzureGrant' from JSON`, ); } /** @internal */ -export const SyncListResponseRouteUnion2$inboundSchema: z.ZodType< - SyncListResponseRouteUnion2, - unknown -> = z.union([ - z.lazy(() => SyncListResponseRouteIngress2$inboundSchema), - z.lazy(() => SyncListResponseRouteGateway2$inboundSchema), -]); +export const SyncListResponsePendingPreparedStackExtendAzure$inboundSchema: + z.ZodType = z + .object({ + binding: z.lazy(() => + SyncListResponsePendingPreparedStackExtendAzureBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncListResponsePendingPreparedStackExtendAzureGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); -export function syncListResponseRouteUnion2FromJSON( +export function syncListResponsePendingPreparedStackExtendAzureFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackExtendAzure, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseRouteUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseRouteUnion2' from JSON`, + (x) => + SyncListResponsePendingPreparedStackExtendAzure$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackExtendAzure' from JSON`, ); } /** @internal */ -export const SyncListResponseExposureCustom$inboundSchema: z.ZodType< - SyncListResponseExposureCustom, - unknown -> = z.object({ - certificate: z.union([ - z.lazy(() => SyncListResponseCertificateTLSSecretRef2$inboundSchema), - z.lazy(() => SyncListResponseCertificateManagedAcmImport2$inboundSchema), - z.lazy(() => SyncListResponseCertificateAwsAcmArn2$inboundSchema), - z.lazy(() => SyncListResponseCertificateManagedTLSSecret2$inboundSchema), - z.lazy(() => SyncListResponseCertificateNone2$inboundSchema), - ]), - domain: z.string(), - mode: SyncListResponseModeCustom$inboundSchema, - route: z.union([ - z.lazy(() => SyncListResponseRouteIngress2$inboundSchema), - z.lazy(() => SyncListResponseRouteGateway2$inboundSchema), - ]), -}); +export const SyncListResponsePendingPreparedStackExtendConditionResource$inboundSchema: + z.ZodType< + SyncListResponsePendingPreparedStackExtendConditionResource, + unknown + > = z.object({ + expression: z.string(), + title: z.string(), + }); -export function syncListResponseExposureCustomFromJSON( +export function syncListResponsePendingPreparedStackExtendConditionResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackExtendConditionResource, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseExposureCustom$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseExposureCustom' from JSON`, + (x) => + SyncListResponsePendingPreparedStackExtendConditionResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePendingPreparedStackExtendConditionResource' from JSON`, ); } /** @internal */ -export const SyncListResponseCertificateNone1$inboundSchema: z.ZodType< - SyncListResponseCertificateNone1, - unknown -> = z.object({ - mode: z.literal("none"), -}); +export const SyncListResponsePendingPreparedStackExtendResourceConditionUnion$inboundSchema: + z.ZodType< + SyncListResponsePendingPreparedStackExtendResourceConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncListResponsePendingPreparedStackExtendConditionResource$inboundSchema + ), + z.any(), + ]); -export function syncListResponseCertificateNone1FromJSON( +export function syncListResponsePendingPreparedStackExtendResourceConditionUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackExtendResourceConditionUnion, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseCertificateNone1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseCertificateNone1' from JSON`, + (x) => + SyncListResponsePendingPreparedStackExtendResourceConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePendingPreparedStackExtendResourceConditionUnion' from JSON`, ); } /** @internal */ -export const SyncListResponseCertificateManagedTLSSecret1$inboundSchema: - z.ZodType = z.object({ - mode: z.literal("managedTlsSecret"), - secretNameTemplate: z.string(), - }); +export const SyncListResponsePendingPreparedStackExtendGcpResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncListResponsePendingPreparedStackExtendConditionResource$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); -export function syncListResponseCertificateManagedTLSSecret1FromJSON( +export function syncListResponsePendingPreparedStackExtendGcpResourceFromJSON( jsonString: string, ): SafeParseResult< - SyncListResponseCertificateManagedTLSSecret1, + SyncListResponsePendingPreparedStackExtendGcpResource, SDKValidationError > { return safeParse( jsonString, (x) => - SyncListResponseCertificateManagedTLSSecret1$inboundSchema.parse( + SyncListResponsePendingPreparedStackExtendGcpResource$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'SyncListResponseCertificateManagedTLSSecret1' from JSON`, + `Failed to parse 'SyncListResponsePendingPreparedStackExtendGcpResource' from JSON`, ); } /** @internal */ -export const SyncListResponseCertificateAwsAcmArn1$inboundSchema: z.ZodType< - SyncListResponseCertificateAwsAcmArn1, - unknown -> = z.object({ - certificateArn: z.string(), - mode: z.literal("awsAcmArn"), -}); +export const SyncListResponsePendingPreparedStackExtendConditionStack$inboundSchema: + z.ZodType = + z.object({ + expression: z.string(), + title: z.string(), + }); -export function syncListResponseCertificateAwsAcmArn1FromJSON( +export function syncListResponsePendingPreparedStackExtendConditionStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackExtendConditionStack, + SDKValidationError +> { return safeParse( jsonString, (x) => - SyncListResponseCertificateAwsAcmArn1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseCertificateAwsAcmArn1' from JSON`, + SyncListResponsePendingPreparedStackExtendConditionStack$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePendingPreparedStackExtendConditionStack' from JSON`, ); } /** @internal */ -export const SyncListResponseCertificateManagedAcmImport1$inboundSchema: - z.ZodType = z.object({ - mode: z.literal("managedAcmImport"), - region: z.nullable(z.string()).optional(), - tags: z.record(z.string(), z.string()).optional(), - }); +export const SyncListResponsePendingPreparedStackExtendStackConditionUnion$inboundSchema: + z.ZodType< + SyncListResponsePendingPreparedStackExtendStackConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncListResponsePendingPreparedStackExtendConditionStack$inboundSchema + ), + z.any(), + ]); -export function syncListResponseCertificateManagedAcmImport1FromJSON( +export function syncListResponsePendingPreparedStackExtendStackConditionUnionFromJSON( jsonString: string, ): SafeParseResult< - SyncListResponseCertificateManagedAcmImport1, + SyncListResponsePendingPreparedStackExtendStackConditionUnion, SDKValidationError > { return safeParse( jsonString, (x) => - SyncListResponseCertificateManagedAcmImport1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncListResponseCertificateManagedAcmImport1' from JSON`, + SyncListResponsePendingPreparedStackExtendStackConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePendingPreparedStackExtendStackConditionUnion' from JSON`, ); } /** @internal */ -export const SyncListResponseCertificateTLSSecretRef1$inboundSchema: z.ZodType< - SyncListResponseCertificateTLSSecretRef1, - unknown -> = z.object({ - namespace: z.nullable(z.string()).optional(), - secretName: z.string(), - mode: z.literal("tlsSecretRef"), -}); +export const SyncListResponsePendingPreparedStackExtendGcpStack$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncListResponsePendingPreparedStackExtendConditionStack$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); -export function syncListResponseCertificateTLSSecretRef1FromJSON( +export function syncListResponsePendingPreparedStackExtendGcpStackFromJSON( jsonString: string, ): SafeParseResult< - SyncListResponseCertificateTLSSecretRef1, + SyncListResponsePendingPreparedStackExtendGcpStack, SDKValidationError > { return safeParse( jsonString, (x) => - SyncListResponseCertificateTLSSecretRef1$inboundSchema.parse( + SyncListResponsePendingPreparedStackExtendGcpStack$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'SyncListResponseCertificateTLSSecretRef1' from JSON`, + `Failed to parse 'SyncListResponsePendingPreparedStackExtendGcpStack' from JSON`, ); } /** @internal */ -export const SyncListResponseCertificateUnion1$inboundSchema: z.ZodType< - SyncListResponseCertificateUnion1, - unknown -> = z.union([ - z.lazy(() => SyncListResponseCertificateTLSSecretRef1$inboundSchema), - z.lazy(() => SyncListResponseCertificateManagedAcmImport1$inboundSchema), - z.lazy(() => SyncListResponseCertificateAwsAcmArn1$inboundSchema), - z.lazy(() => SyncListResponseCertificateManagedTLSSecret1$inboundSchema), - z.lazy(() => SyncListResponseCertificateNone1$inboundSchema), -]); +export const SyncListResponsePendingPreparedStackExtendGcpBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncListResponsePendingPreparedStackExtendGcpResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncListResponsePendingPreparedStackExtendGcpStack$inboundSchema + ).optional(), + }); -export function syncListResponseCertificateUnion1FromJSON( +export function syncListResponsePendingPreparedStackExtendGcpBindingFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackExtendGcpBinding, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseCertificateUnion1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseCertificateUnion1' from JSON`, + (x) => + SyncListResponsePendingPreparedStackExtendGcpBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackExtendGcpBinding' from JSON`, ); } /** @internal */ -export const SyncListResponseModeGenerated$inboundSchema: z.ZodEnum< - typeof SyncListResponseModeGenerated -> = z.enum(SyncListResponseModeGenerated); - -/** @internal */ -export const SyncListResponseProviderAzureApplicationGatewayForContainersEnum2$inboundSchema: - z.ZodEnum< - typeof SyncListResponseProviderAzureApplicationGatewayForContainersEnum2 - > = z.enum(SyncListResponseProviderAzureApplicationGatewayForContainersEnum2); - -/** @internal */ -export const SyncListResponseProviderAzureApplicationGatewayForContainers2$inboundSchema: - z.ZodType< - SyncListResponseProviderAzureApplicationGatewayForContainers2, - unknown - > = z.object({ - albName: z.nullable(z.string()).optional(), - albNamespace: z.nullable(z.string()).optional(), - frontend: z.string(), - provider: - SyncListResponseProviderAzureApplicationGatewayForContainersEnum2$inboundSchema, - }); +export const SyncListResponsePendingPreparedStackExtendGcpGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); -export function syncListResponseProviderAzureApplicationGatewayForContainers2FromJSON( +export function syncListResponsePendingPreparedStackExtendGcpGrantFromJSON( jsonString: string, ): SafeParseResult< - SyncListResponseProviderAzureApplicationGatewayForContainers2, + SyncListResponsePendingPreparedStackExtendGcpGrant, SDKValidationError > { return safeParse( jsonString, (x) => - SyncListResponseProviderAzureApplicationGatewayForContainers2$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProviderAzureApplicationGatewayForContainers2' from JSON`, + SyncListResponsePendingPreparedStackExtendGcpGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackExtendGcpGrant' from JSON`, ); } /** @internal */ -export const SyncListResponseProviderGkeGatewayEnum2$inboundSchema: z.ZodEnum< - typeof SyncListResponseProviderGkeGatewayEnum2 -> = z.enum(SyncListResponseProviderGkeGatewayEnum2); - -/** @internal */ -export const SyncListResponseProviderGkeGateway2$inboundSchema: z.ZodType< - SyncListResponseProviderGkeGateway2, - unknown -> = z.object({ - provider: SyncListResponseProviderGkeGatewayEnum2$inboundSchema, - staticAddressName: z.nullable(z.string()).optional(), -}); +export const SyncListResponsePendingPreparedStackExtendGcp$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + SyncListResponsePendingPreparedStackExtendGcpBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncListResponsePendingPreparedStackExtendGcpGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); -export function syncListResponseProviderGkeGateway2FromJSON( +export function syncListResponsePendingPreparedStackExtendGcpFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackExtendGcp, + SDKValidationError +> { return safeParse( jsonString, (x) => - SyncListResponseProviderGkeGateway2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProviderGkeGateway2' from JSON`, + SyncListResponsePendingPreparedStackExtendGcp$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackExtendGcp' from JSON`, ); } /** @internal */ -export const SyncListResponseProviderAwsAlbEnum2$inboundSchema: z.ZodEnum< - typeof SyncListResponseProviderAwsAlbEnum2 -> = z.enum(SyncListResponseProviderAwsAlbEnum2); - -/** @internal */ -export const SyncListResponseProviderAwsAlb2$inboundSchema: z.ZodType< - SyncListResponseProviderAwsAlb2, - unknown -> = z.object({ - ipAddressType: z.nullable(z.string()).optional(), - provider: SyncListResponseProviderAwsAlbEnum2$inboundSchema, - scheme: z.string(), - subnetIds: z.array(z.string()).optional(), - targetType: z.string(), -}); +export const SyncListResponsePendingPreparedStackExtendPlatforms$inboundSchema: + z.ZodType = z + .object({ + aws: z.nullable( + z.array(z.lazy(() => + SyncListResponsePendingPreparedStackExtendAw$inboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + SyncListResponsePendingPreparedStackExtendAzure$inboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + SyncListResponsePendingPreparedStackExtendGcp$inboundSchema + )), + ).optional(), + }); -export function syncListResponseProviderAwsAlb2FromJSON( +export function syncListResponsePendingPreparedStackExtendPlatformsFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackExtendPlatforms, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseProviderAwsAlb2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProviderAwsAlb2' from JSON`, + (x) => + SyncListResponsePendingPreparedStackExtendPlatforms$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackExtendPlatforms' from JSON`, ); } /** @internal */ -export const SyncListResponseProviderUnion2$inboundSchema: z.ZodType< - SyncListResponseProviderUnion2, - unknown -> = z.union([ - z.lazy(() => SyncListResponseProviderAwsAlb2$inboundSchema), - z.lazy(() => - SyncListResponseProviderAzureApplicationGatewayForContainers2$inboundSchema - ), - z.lazy(() => SyncListResponseProviderGkeGateway2$inboundSchema), - z.any(), -]); +export const SyncListResponsePendingPreparedStackExtend$inboundSchema: + z.ZodType = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncListResponsePendingPreparedStackExtendPlatforms$inboundSchema + ), + }); -export function syncListResponseProviderUnion2FromJSON( +export function syncListResponsePendingPreparedStackExtendFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackExtend, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseProviderUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProviderUnion2' from JSON`, + (x) => + SyncListResponsePendingPreparedStackExtend$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackExtend' from JSON`, ); } /** @internal */ -export const SyncListResponseRouteGateway1$inboundSchema: z.ZodType< - SyncListResponseRouteGateway1, - unknown -> = z.object({ - annotations: z.record(z.string(), z.string()).optional(), - controller: z.nullable(z.string()).optional(), - gatewayClassName: z.string(), - labels: z.record(z.string(), z.string()).optional(), - listenerPort: z.int(), - provider: z.nullable( - z.union([ - z.lazy(() => SyncListResponseProviderAwsAlb2$inboundSchema), - z.lazy(() => - SyncListResponseProviderAzureApplicationGatewayForContainers2$inboundSchema - ), - z.lazy(() => SyncListResponseProviderGkeGateway2$inboundSchema), - z.any(), - ]), - ).optional(), - routeApi: z.literal("gateway"), -}); +export const SyncListResponsePendingPreparedStackExtendUnion$inboundSchema: + z.ZodType = z.union( + [ + z.lazy(() => SyncListResponsePendingPreparedStackExtend$inboundSchema), + z.string(), + ], + ); -export function syncListResponseRouteGateway1FromJSON( +export function syncListResponsePendingPreparedStackExtendUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackExtendUnion, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseRouteGateway1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseRouteGateway1' from JSON`, + (x) => + SyncListResponsePendingPreparedStackExtendUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackExtendUnion' from JSON`, ); } /** @internal */ -export const SyncListResponseProviderAzureApplicationGatewayForContainersEnum1$inboundSchema: - z.ZodEnum< - typeof SyncListResponseProviderAzureApplicationGatewayForContainersEnum1 - > = z.enum(SyncListResponseProviderAzureApplicationGatewayForContainersEnum1); - -/** @internal */ -export const SyncListResponseProviderAzureApplicationGatewayForContainers1$inboundSchema: - z.ZodType< - SyncListResponseProviderAzureApplicationGatewayForContainers1, - unknown - > = z.object({ - albName: z.nullable(z.string()).optional(), - albNamespace: z.nullable(z.string()).optional(), - frontend: z.string(), - provider: - SyncListResponseProviderAzureApplicationGatewayForContainersEnum1$inboundSchema, - }); +export const SyncListResponsePendingPreparedStackManagement1$inboundSchema: + z.ZodType = z + .object({ + extend: z.record( + z.string(), + z.array(z.union([ + z.lazy(() => + SyncListResponsePendingPreparedStackExtend$inboundSchema + ), + z.string(), + ])), + ), + }); -export function syncListResponseProviderAzureApplicationGatewayForContainers1FromJSON( +export function syncListResponsePendingPreparedStackManagement1FromJSON( jsonString: string, ): SafeParseResult< - SyncListResponseProviderAzureApplicationGatewayForContainers1, + SyncListResponsePendingPreparedStackManagement1, SDKValidationError > { return safeParse( jsonString, (x) => - SyncListResponseProviderAzureApplicationGatewayForContainers1$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProviderAzureApplicationGatewayForContainers1' from JSON`, + SyncListResponsePendingPreparedStackManagement1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackManagement1' from JSON`, ); } /** @internal */ -export const SyncListResponseProviderGkeGatewayEnum1$inboundSchema: z.ZodEnum< - typeof SyncListResponseProviderGkeGatewayEnum1 -> = z.enum(SyncListResponseProviderGkeGatewayEnum1); - -/** @internal */ -export const SyncListResponseProviderGkeGateway1$inboundSchema: z.ZodType< - SyncListResponseProviderGkeGateway1, - unknown -> = z.object({ - provider: SyncListResponseProviderGkeGatewayEnum1$inboundSchema, - staticAddressName: z.nullable(z.string()).optional(), -}); +export const SyncListResponsePendingPreparedStackManagementUnion$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => + SyncListResponsePendingPreparedStackManagement1$inboundSchema + ), + z.lazy(() => + SyncListResponsePendingPreparedStackManagement2$inboundSchema + ), + SyncListResponsePendingPreparedStackManagementEnum$inboundSchema, + ]); -export function syncListResponseProviderGkeGateway1FromJSON( +export function syncListResponsePendingPreparedStackManagementUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackManagementUnion, + SDKValidationError +> { return safeParse( jsonString, (x) => - SyncListResponseProviderGkeGateway1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProviderGkeGateway1' from JSON`, + SyncListResponsePendingPreparedStackManagementUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackManagementUnion' from JSON`, ); } /** @internal */ -export const SyncListResponseProviderAwsAlbEnum1$inboundSchema: z.ZodEnum< - typeof SyncListResponseProviderAwsAlbEnum1 -> = z.enum(SyncListResponseProviderAwsAlbEnum1); - -/** @internal */ -export const SyncListResponseProviderAwsAlb1$inboundSchema: z.ZodType< - SyncListResponseProviderAwsAlb1, - unknown -> = z.object({ - ipAddressType: z.nullable(z.string()).optional(), - provider: SyncListResponseProviderAwsAlbEnum1$inboundSchema, - scheme: z.string(), - subnetIds: z.array(z.string()).optional(), - targetType: z.string(), -}); +export const SyncListResponsePendingPreparedStackProfileAwResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); -export function syncListResponseProviderAwsAlb1FromJSON( +export function syncListResponsePendingPreparedStackProfileAwResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackProfileAwResource, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseProviderAwsAlb1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProviderAwsAlb1' from JSON`, + (x) => + SyncListResponsePendingPreparedStackProfileAwResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackProfileAwResource' from JSON`, ); } /** @internal */ -export const SyncListResponseProviderUnion1$inboundSchema: z.ZodType< - SyncListResponseProviderUnion1, - unknown -> = z.union([ - z.lazy(() => SyncListResponseProviderAwsAlb1$inboundSchema), - z.lazy(() => - SyncListResponseProviderAzureApplicationGatewayForContainers1$inboundSchema - ), - z.lazy(() => SyncListResponseProviderGkeGateway1$inboundSchema), - z.any(), -]); +export const SyncListResponsePendingPreparedStackProfileAwStack$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); -export function syncListResponseProviderUnion1FromJSON( +export function syncListResponsePendingPreparedStackProfileAwStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackProfileAwStack, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseProviderUnion1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProviderUnion1' from JSON`, + (x) => + SyncListResponsePendingPreparedStackProfileAwStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackProfileAwStack' from JSON`, ); } /** @internal */ -export const SyncListResponseRouteIngress1$inboundSchema: z.ZodType< - SyncListResponseRouteIngress1, - unknown -> = z.object({ - annotations: z.record(z.string(), z.string()).optional(), - controller: z.nullable(z.string()).optional(), - ingressClassName: z.string(), - labels: z.record(z.string(), z.string()).optional(), - provider: z.nullable( - z.union([ - z.lazy(() => SyncListResponseProviderAwsAlb1$inboundSchema), - z.lazy(() => - SyncListResponseProviderAzureApplicationGatewayForContainers1$inboundSchema - ), - z.lazy(() => SyncListResponseProviderGkeGateway1$inboundSchema), - z.any(), - ]), - ).optional(), - routeApi: z.literal("ingress"), -}); +export const SyncListResponsePendingPreparedStackProfileAwBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncListResponsePendingPreparedStackProfileAwResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncListResponsePendingPreparedStackProfileAwStack$inboundSchema + ).optional(), + }); -export function syncListResponseRouteIngress1FromJSON( +export function syncListResponsePendingPreparedStackProfileAwBindingFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackProfileAwBinding, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseRouteIngress1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseRouteIngress1' from JSON`, + (x) => + SyncListResponsePendingPreparedStackProfileAwBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackProfileAwBinding' from JSON`, ); } /** @internal */ -export const SyncListResponseRouteUnion1$inboundSchema: z.ZodType< - SyncListResponseRouteUnion1, - unknown -> = z.union([ - z.lazy(() => SyncListResponseRouteIngress1$inboundSchema), - z.lazy(() => SyncListResponseRouteGateway1$inboundSchema), -]); +export const SyncListResponsePendingPreparedStackProfileEffect$inboundSchema: + z.ZodEnum = z.enum( + SyncListResponsePendingPreparedStackProfileEffect, + ); -export function syncListResponseRouteUnion1FromJSON( +/** @internal */ +export const SyncListResponsePendingPreparedStackProfileAwGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncListResponsePendingPreparedStackProfileAwGrantFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackProfileAwGrant, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseRouteUnion1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseRouteUnion1' from JSON`, + (x) => + SyncListResponsePendingPreparedStackProfileAwGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackProfileAwGrant' from JSON`, ); } /** @internal */ -export const SyncListResponseExposureGenerated$inboundSchema: z.ZodType< - SyncListResponseExposureGenerated, - unknown -> = z.object({ - certificate: z.union([ - z.lazy(() => SyncListResponseCertificateTLSSecretRef1$inboundSchema), - z.lazy(() => SyncListResponseCertificateManagedAcmImport1$inboundSchema), - z.lazy(() => SyncListResponseCertificateAwsAcmArn1$inboundSchema), - z.lazy(() => SyncListResponseCertificateManagedTLSSecret1$inboundSchema), - z.lazy(() => SyncListResponseCertificateNone1$inboundSchema), - ]), - mode: SyncListResponseModeGenerated$inboundSchema, - route: z.union([ - z.lazy(() => SyncListResponseRouteIngress1$inboundSchema), - z.lazy(() => SyncListResponseRouteGateway1$inboundSchema), - ]), -}); +export const SyncListResponsePendingPreparedStackProfileAw$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + SyncListResponsePendingPreparedStackProfileAwBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: SyncListResponsePendingPreparedStackProfileEffect$inboundSchema + .optional(), + grant: z.lazy(() => + SyncListResponsePendingPreparedStackProfileAwGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); -export function syncListResponseExposureGeneratedFromJSON( +export function syncListResponsePendingPreparedStackProfileAwFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackProfileAw, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseExposureGenerated$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseExposureGenerated' from JSON`, + (x) => + SyncListResponsePendingPreparedStackProfileAw$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackProfileAw' from JSON`, ); } /** @internal */ -export const SyncListResponseModeDisabled$inboundSchema: z.ZodEnum< - typeof SyncListResponseModeDisabled -> = z.enum(SyncListResponseModeDisabled); - -/** @internal */ -export const SyncListResponseExposureDisabled$inboundSchema: z.ZodType< - SyncListResponseExposureDisabled, - unknown -> = z.object({ - mode: SyncListResponseModeDisabled$inboundSchema, -}); +export const SyncListResponsePendingPreparedStackProfileAzureResource$inboundSchema: + z.ZodType = + z.object({ + scope: z.string(), + }); -export function syncListResponseExposureDisabledFromJSON( +export function syncListResponsePendingPreparedStackProfileAzureResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackProfileAzureResource, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseExposureDisabled$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseExposureDisabled' from JSON`, + (x) => + SyncListResponsePendingPreparedStackProfileAzureResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePendingPreparedStackProfileAzureResource' from JSON`, ); } /** @internal */ -export const SyncListResponseExposureUnion$inboundSchema: z.ZodType< - SyncListResponseExposureUnion, - unknown -> = z.union([ - z.lazy(() => SyncListResponseExposureCustom$inboundSchema), - z.lazy(() => SyncListResponseExposureGenerated$inboundSchema), - z.lazy(() => SyncListResponseExposureDisabled$inboundSchema), - z.any(), -]); +export const SyncListResponsePendingPreparedStackProfileAzureStack$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); -export function syncListResponseExposureUnionFromJSON( +export function syncListResponsePendingPreparedStackProfileAzureStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackProfileAzureStack, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseExposureUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseExposureUnion' from JSON`, + (x) => + SyncListResponsePendingPreparedStackProfileAzureStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackProfileAzureStack' from JSON`, ); } /** @internal */ -export const SyncListResponseKubernetes$inboundSchema: z.ZodType< - SyncListResponseKubernetes, - unknown -> = z.object({ - cluster: z.nullable( - z.union([z.lazy(() => SyncListResponseCluster$inboundSchema), z.any()]), - ).optional(), - exposure: z.nullable( - z.union([ - z.lazy(() => SyncListResponseExposureCustom$inboundSchema), - z.lazy(() => SyncListResponseExposureGenerated$inboundSchema), - z.lazy(() => SyncListResponseExposureDisabled$inboundSchema), - z.any(), - ]), - ).optional(), -}); +export const SyncListResponsePendingPreparedStackProfileAzureBinding$inboundSchema: + z.ZodType = + z.object({ + resource: z.lazy(() => + SyncListResponsePendingPreparedStackProfileAzureResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncListResponsePendingPreparedStackProfileAzureStack$inboundSchema + ).optional(), + }); -export function syncListResponseKubernetesFromJSON( +export function syncListResponsePendingPreparedStackProfileAzureBindingFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackProfileAzureBinding, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseKubernetes$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseKubernetes' from JSON`, + (x) => + SyncListResponsePendingPreparedStackProfileAzureBinding$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePendingPreparedStackProfileAzureBinding' from JSON`, ); } /** @internal */ -export const SyncListResponseKubernetesUnion$inboundSchema: z.ZodType< - SyncListResponseKubernetesUnion, - unknown -> = z.union([z.lazy(() => SyncListResponseKubernetes$inboundSchema), z.any()]); +export const SyncListResponsePendingPreparedStackProfileAzureGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); -export function syncListResponseKubernetesUnionFromJSON( +export function syncListResponsePendingPreparedStackProfileAzureGrantFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackProfileAzureGrant, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseKubernetesUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseKubernetesUnion' from JSON`, + (x) => + SyncListResponsePendingPreparedStackProfileAzureGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackProfileAzureGrant' from JSON`, ); } /** @internal */ -export const SyncListResponseTypeByoVnetAzure$inboundSchema: z.ZodEnum< - typeof SyncListResponseTypeByoVnetAzure -> = z.enum(SyncListResponseTypeByoVnetAzure); - -/** @internal */ -export const SyncListResponseNetworkByoVnetAzure$inboundSchema: z.ZodType< - SyncListResponseNetworkByoVnetAzure, - unknown -> = z.object({ - application_gateway_subnet_name: z.nullable(z.string()).optional(), - private_endpoint_subnet_name: z.nullable(z.string()).optional(), - private_subnet_name: z.string(), - public_subnet_name: z.string(), - type: SyncListResponseTypeByoVnetAzure$inboundSchema, - vnet_resource_id: z.string(), -}).transform((v) => { - return remap$(v, { - "application_gateway_subnet_name": "applicationGatewaySubnetName", - "private_endpoint_subnet_name": "privateEndpointSubnetName", - "private_subnet_name": "privateSubnetName", - "public_subnet_name": "publicSubnetName", - "vnet_resource_id": "vnetResourceId", - }); -}); +export const SyncListResponsePendingPreparedStackProfileAzure$inboundSchema: + z.ZodType = z + .object({ + binding: z.lazy(() => + SyncListResponsePendingPreparedStackProfileAzureBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncListResponsePendingPreparedStackProfileAzureGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); -export function syncListResponseNetworkByoVnetAzureFromJSON( +export function syncListResponsePendingPreparedStackProfileAzureFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackProfileAzure, + SDKValidationError +> { return safeParse( jsonString, (x) => - SyncListResponseNetworkByoVnetAzure$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseNetworkByoVnetAzure' from JSON`, + SyncListResponsePendingPreparedStackProfileAzure$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackProfileAzure' from JSON`, ); } /** @internal */ -export const SyncListResponseTypeByoVpcGcp$inboundSchema: z.ZodEnum< - typeof SyncListResponseTypeByoVpcGcp -> = z.enum(SyncListResponseTypeByoVpcGcp); - -/** @internal */ -export const SyncListResponseNetworkByoVpcGcp$inboundSchema: z.ZodType< - SyncListResponseNetworkByoVpcGcp, - unknown -> = z.object({ - network_name: z.string(), - region: z.string(), - subnet_name: z.string(), - type: SyncListResponseTypeByoVpcGcp$inboundSchema, -}).transform((v) => { - return remap$(v, { - "network_name": "networkName", - "subnet_name": "subnetName", +export const SyncListResponsePendingPreparedStackProfileConditionResource$inboundSchema: + z.ZodType< + SyncListResponsePendingPreparedStackProfileConditionResource, + unknown + > = z.object({ + expression: z.string(), + title: z.string(), }); -}); -export function syncListResponseNetworkByoVpcGcpFromJSON( +export function syncListResponsePendingPreparedStackProfileConditionResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackProfileConditionResource, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseNetworkByoVpcGcp$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseNetworkByoVpcGcp' from JSON`, + (x) => + SyncListResponsePendingPreparedStackProfileConditionResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePendingPreparedStackProfileConditionResource' from JSON`, ); } /** @internal */ -export const SyncListResponseTypeByoVpcAws$inboundSchema: z.ZodEnum< - typeof SyncListResponseTypeByoVpcAws -> = z.enum(SyncListResponseTypeByoVpcAws); - -/** @internal */ -export const SyncListResponseNetworkByoVpcAws$inboundSchema: z.ZodType< - SyncListResponseNetworkByoVpcAws, - unknown -> = z.object({ - private_subnet_ids: z.array(z.string()), - public_subnet_ids: z.array(z.string()), - security_group_ids: z.array(z.string()).optional(), - type: SyncListResponseTypeByoVpcAws$inboundSchema, - vpc_id: z.string(), -}).transform((v) => { - return remap$(v, { - "private_subnet_ids": "privateSubnetIds", - "public_subnet_ids": "publicSubnetIds", - "security_group_ids": "securityGroupIds", - "vpc_id": "vpcId", - }); -}); +export const SyncListResponsePendingPreparedStackProfileResourceConditionUnion$inboundSchema: + z.ZodType< + SyncListResponsePendingPreparedStackProfileResourceConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncListResponsePendingPreparedStackProfileConditionResource$inboundSchema + ), + z.any(), + ]); -export function syncListResponseNetworkByoVpcAwsFromJSON( +export function syncListResponsePendingPreparedStackProfileResourceConditionUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackProfileResourceConditionUnion, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseNetworkByoVpcAws$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseNetworkByoVpcAws' from JSON`, + (x) => + SyncListResponsePendingPreparedStackProfileResourceConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePendingPreparedStackProfileResourceConditionUnion' from JSON`, ); } /** @internal */ -export const SyncListResponseTypeCreate$inboundSchema: z.ZodEnum< - typeof SyncListResponseTypeCreate -> = z.enum(SyncListResponseTypeCreate); - -/** @internal */ -export const SyncListResponseNetworkCreate$inboundSchema: z.ZodType< - SyncListResponseNetworkCreate, - unknown -> = z.object({ - availability_zones: z.int().optional(), - cidr: z.nullable(z.string()).optional(), - type: SyncListResponseTypeCreate$inboundSchema, -}).transform((v) => { - return remap$(v, { - "availability_zones": "availabilityZones", - }); -}); +export const SyncListResponsePendingPreparedStackProfileGcpResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncListResponsePendingPreparedStackProfileConditionResource$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); -export function syncListResponseNetworkCreateFromJSON( +export function syncListResponsePendingPreparedStackProfileGcpResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackProfileGcpResource, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseNetworkCreate$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseNetworkCreate' from JSON`, + (x) => + SyncListResponsePendingPreparedStackProfileGcpResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePendingPreparedStackProfileGcpResource' from JSON`, ); } /** @internal */ -export const SyncListResponseTypeUseDefault$inboundSchema: z.ZodEnum< - typeof SyncListResponseTypeUseDefault -> = z.enum(SyncListResponseTypeUseDefault); - -/** @internal */ -export const SyncListResponseNetworkUseDefault$inboundSchema: z.ZodType< - SyncListResponseNetworkUseDefault, - unknown -> = z.object({ - type: SyncListResponseTypeUseDefault$inboundSchema, -}); +export const SyncListResponsePendingPreparedStackProfileConditionStack$inboundSchema: + z.ZodType< + SyncListResponsePendingPreparedStackProfileConditionStack, + unknown + > = z.object({ + expression: z.string(), + title: z.string(), + }); -export function syncListResponseNetworkUseDefaultFromJSON( +export function syncListResponsePendingPreparedStackProfileConditionStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackProfileConditionStack, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseNetworkUseDefault$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseNetworkUseDefault' from JSON`, + (x) => + SyncListResponsePendingPreparedStackProfileConditionStack$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePendingPreparedStackProfileConditionStack' from JSON`, ); } /** @internal */ -export const SyncListResponseNetworkUnion$inboundSchema: z.ZodType< - SyncListResponseNetworkUnion, - unknown -> = z.union([ - z.lazy(() => SyncListResponseNetworkByoVpcAws$inboundSchema), - z.lazy(() => SyncListResponseNetworkByoVpcGcp$inboundSchema), - z.lazy(() => SyncListResponseNetworkByoVnetAzure$inboundSchema), - z.lazy(() => SyncListResponseNetworkUseDefault$inboundSchema), - z.lazy(() => SyncListResponseNetworkCreate$inboundSchema), - z.any(), -]); +export const SyncListResponsePendingPreparedStackProfileStackConditionUnion$inboundSchema: + z.ZodType< + SyncListResponsePendingPreparedStackProfileStackConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncListResponsePendingPreparedStackProfileConditionStack$inboundSchema + ), + z.any(), + ]); -export function syncListResponseNetworkUnionFromJSON( +export function syncListResponsePendingPreparedStackProfileStackConditionUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackProfileStackConditionUnion, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseNetworkUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseNetworkUnion' from JSON`, + (x) => + SyncListResponsePendingPreparedStackProfileStackConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePendingPreparedStackProfileStackConditionUnion' from JSON`, ); } /** @internal */ -export const SyncListResponseTelemetry$inboundSchema: z.ZodEnum< - typeof SyncListResponseTelemetry -> = z.enum(SyncListResponseTelemetry); - -/** @internal */ -export const SyncListResponseUpdates$inboundSchema: z.ZodEnum< - typeof SyncListResponseUpdates -> = z.enum(SyncListResponseUpdates); - -/** @internal */ -export const SyncListResponseStackSettings$inboundSchema: z.ZodType< - SyncListResponseStackSettings, - unknown -> = z.object({ - compute: z.nullable( - z.union([z.lazy(() => SyncListResponseCompute$inboundSchema), z.any()]), - ).optional(), - deploymentModel: SyncListResponseDeploymentModel$inboundSchema.optional(), - domains: z.nullable( - z.union([z.lazy(() => SyncListResponseDomains$inboundSchema), z.any()]), - ).optional(), - externalBindings: z.nullable( - z.lazy(() => SyncListResponseExternalBindings$inboundSchema), - ).optional(), - heartbeats: SyncListResponseHeartbeats$inboundSchema.optional(), - kubernetes: z.nullable( - z.union([z.lazy(() => SyncListResponseKubernetes$inboundSchema), z.any()]), - ).optional(), - network: z.nullable( - z.union([ - z.lazy(() => SyncListResponseNetworkByoVpcAws$inboundSchema), - z.lazy(() => SyncListResponseNetworkByoVpcGcp$inboundSchema), - z.lazy(() => SyncListResponseNetworkByoVnetAzure$inboundSchema), - z.lazy(() => SyncListResponseNetworkUseDefault$inboundSchema), - z.lazy(() => SyncListResponseNetworkCreate$inboundSchema), - z.any(), - ]), - ).optional(), - telemetry: SyncListResponseTelemetry$inboundSchema.optional(), - updates: SyncListResponseUpdates$inboundSchema.optional(), -}); +export const SyncListResponsePendingPreparedStackProfileGcpStack$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncListResponsePendingPreparedStackProfileConditionStack$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); -export function syncListResponseStackSettingsFromJSON( +export function syncListResponsePendingPreparedStackProfileGcpStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackProfileGcpStack, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseStackSettings$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseStackSettings' from JSON`, + (x) => + SyncListResponsePendingPreparedStackProfileGcpStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackProfileGcpStack' from JSON`, ); } /** @internal */ -export const SyncListResponseStackStatePlatform$inboundSchema: z.ZodEnum< - typeof SyncListResponseStackStatePlatform -> = z.enum(SyncListResponseStackStatePlatform); - -/** @internal */ -export const SyncListResponseStackStateConfig$inboundSchema: z.ZodType< - SyncListResponseStackStateConfig, - unknown -> = collectExtraKeys$( - z.object({ - id: z.string(), - type: z.string(), - }).catchall(z.any()), - "additionalProperties", - true, -); +export const SyncListResponsePendingPreparedStackProfileGcpBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncListResponsePendingPreparedStackProfileGcpResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncListResponsePendingPreparedStackProfileGcpStack$inboundSchema + ).optional(), + }); -export function syncListResponseStackStateConfigFromJSON( +export function syncListResponsePendingPreparedStackProfileGcpBindingFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackProfileGcpBinding, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseStackStateConfig$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseStackStateConfig' from JSON`, + (x) => + SyncListResponsePendingPreparedStackProfileGcpBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackProfileGcpBinding' from JSON`, ); } /** @internal */ -export const SyncListResponseControllerPlatformEnum$inboundSchema: z.ZodEnum< - typeof SyncListResponseControllerPlatformEnum -> = z.enum(SyncListResponseControllerPlatformEnum); - -/** @internal */ -export const SyncListResponseControllerPlatformUnion$inboundSchema: z.ZodType< - SyncListResponseControllerPlatformUnion, - unknown -> = z.union([SyncListResponseControllerPlatformEnum$inboundSchema, z.any()]); +export const SyncListResponsePendingPreparedStackProfileGcpGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); -export function syncListResponseControllerPlatformUnionFromJSON( +export function syncListResponsePendingPreparedStackProfileGcpGrantFromJSON( jsonString: string, ): SafeParseResult< - SyncListResponseControllerPlatformUnion, + SyncListResponsePendingPreparedStackProfileGcpGrant, SDKValidationError > { return safeParse( jsonString, (x) => - SyncListResponseControllerPlatformUnion$inboundSchema.parse( + SyncListResponsePendingPreparedStackProfileGcpGrant$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'SyncListResponseControllerPlatformUnion' from JSON`, + `Failed to parse 'SyncListResponsePendingPreparedStackProfileGcpGrant' from JSON`, ); } /** @internal */ -export const SyncListResponseStackStateDependency$inboundSchema: z.ZodType< - SyncListResponseStackStateDependency, - unknown -> = z.object({ - id: z.string(), - type: z.string(), -}); +export const SyncListResponsePendingPreparedStackProfileGcp$inboundSchema: + z.ZodType = z.object( + { + binding: z.lazy(() => + SyncListResponsePendingPreparedStackProfileGcpBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncListResponsePendingPreparedStackProfileGcpGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }, + ); -export function syncListResponseStackStateDependencyFromJSON( +export function syncListResponsePendingPreparedStackProfileGcpFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackProfileGcp, + SDKValidationError +> { return safeParse( jsonString, (x) => - SyncListResponseStackStateDependency$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseStackStateDependency' from JSON`, + SyncListResponsePendingPreparedStackProfileGcp$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackProfileGcp' from JSON`, ); } /** @internal */ -export const SyncListResponseErrorStackState$inboundSchema: z.ZodType< - SyncListResponseErrorStackState, - unknown -> = z.object({ - code: z.string(), - context: z.nullable(z.any()).optional(), - hint: z.nullable(z.string()).optional(), - httpStatusCode: z.nullable(z.int()).optional(), - internal: z.boolean(), - message: z.string(), - retryable: z.boolean().default(false), - source: z.nullable(z.any()).optional(), -}); +export const SyncListResponsePendingPreparedStackProfilePlatforms$inboundSchema: + z.ZodType = z + .object({ + aws: z.nullable( + z.array(z.lazy(() => + SyncListResponsePendingPreparedStackProfileAw$inboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + SyncListResponsePendingPreparedStackProfileAzure$inboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + SyncListResponsePendingPreparedStackProfileGcp$inboundSchema + )), + ).optional(), + }); -export function syncListResponseErrorStackStateFromJSON( +export function syncListResponsePendingPreparedStackProfilePlatformsFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackProfilePlatforms, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseErrorStackState$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseErrorStackState' from JSON`, + (x) => + SyncListResponsePendingPreparedStackProfilePlatforms$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackProfilePlatforms' from JSON`, ); } /** @internal */ -export const SyncListResponseErrorUnion$inboundSchema: z.ZodType< - SyncListResponseErrorUnion, - unknown -> = z.union([ - z.lazy(() => SyncListResponseErrorStackState$inboundSchema), - z.any(), -]); +export const SyncListResponsePendingPreparedStackProfile$inboundSchema: + z.ZodType = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncListResponsePendingPreparedStackProfilePlatforms$inboundSchema + ), + }); -export function syncListResponseErrorUnionFromJSON( +export function syncListResponsePendingPreparedStackProfileFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackProfile, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseErrorUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseErrorUnion' from JSON`, + (x) => + SyncListResponsePendingPreparedStackProfile$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackProfile' from JSON`, ); } /** @internal */ -export const SyncListResponseLifecycleStackStateEnum$inboundSchema: z.ZodEnum< - typeof SyncListResponseLifecycleStackStateEnum -> = z.enum(SyncListResponseLifecycleStackStateEnum); - -/** @internal */ -export const SyncListResponseLifecycleUnion$inboundSchema: z.ZodType< - SyncListResponseLifecycleUnion, - unknown -> = z.union([SyncListResponseLifecycleStackStateEnum$inboundSchema, z.any()]); +export const SyncListResponsePendingPreparedStackProfileUnion$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => SyncListResponsePendingPreparedStackProfile$inboundSchema), + z.string(), + ]); -export function syncListResponseLifecycleUnionFromJSON( +export function syncListResponsePendingPreparedStackProfileUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackProfileUnion, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseLifecycleUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseLifecycleUnion' from JSON`, + (x) => + SyncListResponsePendingPreparedStackProfileUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackProfileUnion' from JSON`, ); } /** @internal */ -export const SyncListResponseOutputs$inboundSchema: z.ZodType< - SyncListResponseOutputs, - unknown -> = collectExtraKeys$( - z.object({ - type: z.string(), - }).catchall(z.any()), - "additionalProperties", - true, -); +export const SyncListResponsePendingPreparedStackPermissions$inboundSchema: + z.ZodType = z + .object({ + management: z.union([ + z.lazy(() => + SyncListResponsePendingPreparedStackManagement1$inboundSchema + ), + z.lazy(() => + SyncListResponsePendingPreparedStackManagement2$inboundSchema + ), + SyncListResponsePendingPreparedStackManagementEnum$inboundSchema, + ]).optional(), + profiles: z.record( + z.string(), + z.record( + z.string(), + z.array( + z.union([ + z.lazy(() => + SyncListResponsePendingPreparedStackProfile$inboundSchema + ), + z.string(), + ]), + ), + ), + ), + }); -export function syncListResponseOutputsFromJSON( +export function syncListResponsePendingPreparedStackPermissionsFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackPermissions, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseOutputs$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseOutputs' from JSON`, + (x) => + SyncListResponsePendingPreparedStackPermissions$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackPermissions' from JSON`, ); } /** @internal */ -export const SyncListResponseOutputsUnion$inboundSchema: z.ZodType< - SyncListResponseOutputsUnion, - unknown -> = z.union([z.lazy(() => SyncListResponseOutputs$inboundSchema), z.any()]); +export const SyncListResponsePendingPreparedStackConfig$inboundSchema: + z.ZodType = + collectExtraKeys$( + z.object({ + id: z.string(), + type: z.string(), + }).catchall(z.any()), + "additionalProperties", + true, + ); -export function syncListResponseOutputsUnionFromJSON( +export function syncListResponsePendingPreparedStackConfigFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackConfig, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseOutputsUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseOutputsUnion' from JSON`, + (x) => + SyncListResponsePendingPreparedStackConfig$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackConfig' from JSON`, ); } /** @internal */ -export const SyncListResponsePreviousConfig$inboundSchema: z.ZodType< - SyncListResponsePreviousConfig, - unknown -> = collectExtraKeys$( - z.object({ - id: z.string(), - type: z.string(), - }).catchall(z.any()), - "additionalProperties", - true, -); +export const SyncListResponsePendingPreparedStackDependency$inboundSchema: + z.ZodType = z.object( + { + id: z.string(), + type: z.string(), + }, + ); -export function syncListResponsePreviousConfigFromJSON( +export function syncListResponsePendingPreparedStackDependencyFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackDependency, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponsePreviousConfig$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponsePreviousConfig' from JSON`, + (x) => + SyncListResponsePendingPreparedStackDependency$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackDependency' from JSON`, ); } /** @internal */ -export const SyncListResponsePreviousConfigUnion$inboundSchema: z.ZodType< - SyncListResponsePreviousConfigUnion, - unknown -> = z.union([ - z.lazy(() => SyncListResponsePreviousConfig$inboundSchema), - z.any(), -]); +export const SyncListResponsePendingPreparedStackLifecycle$inboundSchema: + z.ZodEnum = z.enum( + SyncListResponsePendingPreparedStackLifecycle, + ); -export function syncListResponsePreviousConfigUnionFromJSON( +/** @internal */ +export const SyncListResponsePendingPreparedStackResources$inboundSchema: + z.ZodType = z.object({ + config: z.lazy(() => + SyncListResponsePendingPreparedStackConfig$inboundSchema + ), + dependencies: z.array( + z.lazy(() => + SyncListResponsePendingPreparedStackDependency$inboundSchema + ), + ), + enabledWhen: z.nullable(z.string()).optional(), + lifecycle: SyncListResponsePendingPreparedStackLifecycle$inboundSchema, + remoteAccess: z.boolean().optional(), + }); + +export function syncListResponsePendingPreparedStackResourcesFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackResources, + SDKValidationError +> { return safeParse( jsonString, (x) => - SyncListResponsePreviousConfigUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponsePreviousConfigUnion' from JSON`, + SyncListResponsePendingPreparedStackResources$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackResources' from JSON`, ); } /** @internal */ -export const SyncListResponseStackStateStatus$inboundSchema: z.ZodEnum< - typeof SyncListResponseStackStateStatus -> = z.enum(SyncListResponseStackStateStatus); +export const SyncListResponsePendingPreparedStackSupportedPlatform$inboundSchema: + z.ZodEnum = z + .enum(SyncListResponsePendingPreparedStackSupportedPlatform); /** @internal */ -export const SyncListResponseStackStateResources$inboundSchema: z.ZodType< - SyncListResponseStackStateResources, +export const SyncListResponsePendingPreparedStack$inboundSchema: z.ZodType< + SyncListResponsePendingPreparedStack, unknown > = z.object({ - _internal: z.nullable(z.any()).optional(), - config: z.lazy(() => SyncListResponseStackStateConfig$inboundSchema), - controllerPlatform: z.nullable( - z.union([SyncListResponseControllerPlatformEnum$inboundSchema, z.any()]), - ).optional(), - dependencies: z.array( - z.lazy(() => SyncListResponseStackStateDependency$inboundSchema), - ).optional(), - error: z.nullable( - z.union([ - z.lazy(() => SyncListResponseErrorStackState$inboundSchema), - z.any(), - ]), - ).optional(), - lastFailedState: z.nullable(z.any()).optional(), - lifecycle: z.nullable( - z.union([SyncListResponseLifecycleStackStateEnum$inboundSchema, z.any()]), + id: z.string(), + inputs: z.array( + z.lazy(() => SyncListResponsePendingPreparedStackInput$inboundSchema), ).optional(), - outputs: z.nullable( - z.union([z.lazy(() => SyncListResponseOutputs$inboundSchema), z.any()]), + permissions: z.lazy(() => + SyncListResponsePendingPreparedStackPermissions$inboundSchema ).optional(), - previousConfig: z.nullable( - z.union([ - z.lazy(() => SyncListResponsePreviousConfig$inboundSchema), - z.any(), - ]), + resources: z.record( + z.string(), + z.lazy(() => SyncListResponsePendingPreparedStackResources$inboundSchema), + ), + supportedPlatforms: z.nullable( + z.array( + SyncListResponsePendingPreparedStackSupportedPlatform$inboundSchema, + ), ).optional(), - remoteBindingParams: z.nullable(z.any()).optional(), - retryAttempt: z.int().optional(), - status: SyncListResponseStackStateStatus$inboundSchema, - type: z.string(), -}).transform((v) => { - return remap$(v, { - "_internal": "internal", - }); }); -export function syncListResponseStackStateResourcesFromJSON( +export function syncListResponsePendingPreparedStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, (x) => - SyncListResponseStackStateResources$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseStackStateResources' from JSON`, + SyncListResponsePendingPreparedStack$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePendingPreparedStack' from JSON`, ); } /** @internal */ -export const SyncListResponseStackState$inboundSchema: z.ZodType< - SyncListResponseStackState, +export const SyncListResponsePendingPreparedStackUnion$inboundSchema: z.ZodType< + SyncListResponsePendingPreparedStackUnion, unknown -> = z.object({ - platform: SyncListResponseStackStatePlatform$inboundSchema, - resourcePrefix: z.string(), - resources: z.record( - z.string(), - z.lazy(() => SyncListResponseStackStateResources$inboundSchema), - ), -}); +> = z.union([ + z.lazy(() => SyncListResponsePendingPreparedStack$inboundSchema), + z.any(), +]); -export function syncListResponseStackStateFromJSON( +export function syncListResponsePendingPreparedStackUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePendingPreparedStackUnion, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseStackState$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseStackState' from JSON`, + (x) => + SyncListResponsePendingPreparedStackUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePendingPreparedStackUnion' from JSON`, ); } /** @internal */ -export const SyncListResponseTypeStringList$inboundSchema: z.ZodEnum< - typeof SyncListResponseTypeStringList -> = z.enum(SyncListResponseTypeStringList); +export const SyncListResponsePreparedStackTypeStringList$inboundSchema: + z.ZodEnum = z.enum( + SyncListResponsePreparedStackTypeStringList, + ); /** @internal */ -export const SyncListResponseDefaultStringList$inboundSchema: z.ZodType< - SyncListResponseDefaultStringList, - unknown -> = z.object({ - type: SyncListResponseTypeStringList$inboundSchema, - value: z.array(z.string()), -}); +export const SyncListResponsePreparedStackDefaultStringList$inboundSchema: + z.ZodType = z.object( + { + type: SyncListResponsePreparedStackTypeStringList$inboundSchema, + value: z.array(z.string()), + }, + ); -export function syncListResponseDefaultStringListFromJSON( +export function syncListResponsePreparedStackDefaultStringListFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackDefaultStringList, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseDefaultStringList$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseDefaultStringList' from JSON`, + (x) => + SyncListResponsePreparedStackDefaultStringList$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackDefaultStringList' from JSON`, ); } /** @internal */ -export const SyncListResponseTypeBoolean$inboundSchema: z.ZodEnum< - typeof SyncListResponseTypeBoolean -> = z.enum(SyncListResponseTypeBoolean); +export const SyncListResponsePreparedStackTypeBoolean$inboundSchema: z.ZodEnum< + typeof SyncListResponsePreparedStackTypeBoolean +> = z.enum(SyncListResponsePreparedStackTypeBoolean); /** @internal */ -export const SyncListResponseDefaultBoolean$inboundSchema: z.ZodType< - SyncListResponseDefaultBoolean, - unknown -> = z.object({ - type: SyncListResponseTypeBoolean$inboundSchema, - value: z.boolean(), -}); +export const SyncListResponsePreparedStackDefaultBoolean$inboundSchema: + z.ZodType = z.object({ + type: SyncListResponsePreparedStackTypeBoolean$inboundSchema, + value: z.boolean(), + }); -export function syncListResponseDefaultBooleanFromJSON( +export function syncListResponsePreparedStackDefaultBooleanFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackDefaultBoolean, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseDefaultBoolean$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseDefaultBoolean' from JSON`, + (x) => + SyncListResponsePreparedStackDefaultBoolean$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackDefaultBoolean' from JSON`, ); } /** @internal */ -export const SyncListResponseTypeNumber$inboundSchema: z.ZodEnum< - typeof SyncListResponseTypeNumber -> = z.enum(SyncListResponseTypeNumber); +export const SyncListResponsePreparedStackTypeNumber$inboundSchema: z.ZodEnum< + typeof SyncListResponsePreparedStackTypeNumber +> = z.enum(SyncListResponsePreparedStackTypeNumber); /** @internal */ -export const SyncListResponseDefaultNumber$inboundSchema: z.ZodType< - SyncListResponseDefaultNumber, - unknown -> = z.object({ - type: SyncListResponseTypeNumber$inboundSchema, - value: z.string(), -}); +export const SyncListResponsePreparedStackDefaultNumber$inboundSchema: + z.ZodType = z.object({ + type: SyncListResponsePreparedStackTypeNumber$inboundSchema, + value: z.string(), + }); -export function syncListResponseDefaultNumberFromJSON( +export function syncListResponsePreparedStackDefaultNumberFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackDefaultNumber, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseDefaultNumber$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseDefaultNumber' from JSON`, + (x) => + SyncListResponsePreparedStackDefaultNumber$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackDefaultNumber' from JSON`, ); } /** @internal */ -export const SyncListResponseTypeString$inboundSchema: z.ZodEnum< - typeof SyncListResponseTypeString -> = z.enum(SyncListResponseTypeString); +export const SyncListResponsePreparedStackTypeString$inboundSchema: z.ZodEnum< + typeof SyncListResponsePreparedStackTypeString +> = z.enum(SyncListResponsePreparedStackTypeString); /** @internal */ -export const SyncListResponseDefaultString$inboundSchema: z.ZodType< - SyncListResponseDefaultString, - unknown -> = z.object({ - type: SyncListResponseTypeString$inboundSchema, - value: z.string(), -}); +export const SyncListResponsePreparedStackDefaultString$inboundSchema: + z.ZodType = z.object({ + type: SyncListResponsePreparedStackTypeString$inboundSchema, + value: z.string(), + }); -export function syncListResponseDefaultStringFromJSON( +export function syncListResponsePreparedStackDefaultStringFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackDefaultString, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseDefaultString$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseDefaultString' from JSON`, + (x) => + SyncListResponsePreparedStackDefaultString$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackDefaultString' from JSON`, ); } /** @internal */ -export const SyncListResponseDefaultUnion$inboundSchema: z.ZodType< - SyncListResponseDefaultUnion, +export const SyncListResponsePreparedStackDefaultUnion$inboundSchema: z.ZodType< + SyncListResponsePreparedStackDefaultUnion, unknown > = z.union([ - z.lazy(() => SyncListResponseDefaultString$inboundSchema), - z.lazy(() => SyncListResponseDefaultNumber$inboundSchema), - z.lazy(() => SyncListResponseDefaultBoolean$inboundSchema), - z.lazy(() => SyncListResponseDefaultStringList$inboundSchema), + z.lazy(() => SyncListResponsePreparedStackDefaultString$inboundSchema), + z.lazy(() => SyncListResponsePreparedStackDefaultNumber$inboundSchema), + z.lazy(() => SyncListResponsePreparedStackDefaultBoolean$inboundSchema), + z.lazy(() => SyncListResponsePreparedStackDefaultStringList$inboundSchema), z.any(), ]); -export function syncListResponseDefaultUnionFromJSON( +export function syncListResponsePreparedStackDefaultUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackDefaultUnion, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseDefaultUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseDefaultUnion' from JSON`, + (x) => + SyncListResponsePreparedStackDefaultUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackDefaultUnion' from JSON`, ); } /** @internal */ -export const SyncListResponseTypeEnvEnum$inboundSchema: z.ZodEnum< - typeof SyncListResponseTypeEnvEnum -> = z.enum(SyncListResponseTypeEnvEnum); +export const SyncListResponsePreparedStackTypeEnvEnum$inboundSchema: z.ZodEnum< + typeof SyncListResponsePreparedStackTypeEnvEnum +> = z.enum(SyncListResponsePreparedStackTypeEnvEnum); /** @internal */ -export const SyncListResponseTypeUnion$inboundSchema: z.ZodType< - SyncListResponseTypeUnion, +export const SyncListResponsePreparedStackTypeUnion$inboundSchema: z.ZodType< + SyncListResponsePreparedStackTypeUnion, unknown -> = z.union([SyncListResponseTypeEnvEnum$inboundSchema, z.any()]); +> = z.union([SyncListResponsePreparedStackTypeEnvEnum$inboundSchema, z.any()]); -export function syncListResponseTypeUnionFromJSON( +export function syncListResponsePreparedStackTypeUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => SyncListResponseTypeUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseTypeUnion' from JSON`, + (x) => + SyncListResponsePreparedStackTypeUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePreparedStackTypeUnion' from JSON`, ); } /** @internal */ -export const SyncListResponseEnv$inboundSchema: z.ZodType< - SyncListResponseEnv, +export const SyncListResponsePreparedStackEnv$inboundSchema: z.ZodType< + SyncListResponsePreparedStackEnv, unknown > = z.object({ name: z.string(), targetResources: z.nullable(z.array(z.string())).optional(), type: z.nullable( - z.union([SyncListResponseTypeEnvEnum$inboundSchema, z.any()]), + z.union([SyncListResponsePreparedStackTypeEnvEnum$inboundSchema, z.any()]), ).optional(), }); -export function syncListResponseEnvFromJSON( +export function syncListResponsePreparedStackEnvFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => SyncListResponseEnv$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseEnv' from JSON`, + (x) => SyncListResponsePreparedStackEnv$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePreparedStackEnv' from JSON`, ); } /** @internal */ -export const SyncListResponseKind$inboundSchema: z.ZodEnum< - typeof SyncListResponseKind -> = z.enum(SyncListResponseKind); +export const SyncListResponsePreparedStackKind$inboundSchema: z.ZodEnum< + typeof SyncListResponsePreparedStackKind +> = z.enum(SyncListResponsePreparedStackKind); /** @internal */ export const SyncListResponsePreparedStackPlatform$inboundSchema: z.ZodEnum< @@ -5968,13 +10290,13 @@ export const SyncListResponsePreparedStackPlatform$inboundSchema: z.ZodEnum< > = z.enum(SyncListResponsePreparedStackPlatform); /** @internal */ -export const SyncListResponseProvidedBy$inboundSchema: z.ZodEnum< - typeof SyncListResponseProvidedBy -> = z.enum(SyncListResponseProvidedBy); +export const SyncListResponsePreparedStackProvidedBy$inboundSchema: z.ZodEnum< + typeof SyncListResponsePreparedStackProvidedBy +> = z.enum(SyncListResponsePreparedStackProvidedBy); /** @internal */ -export const SyncListResponseValidation$inboundSchema: z.ZodType< - SyncListResponseValidation, +export const SyncListResponsePreparedStackValidation$inboundSchema: z.ZodType< + SyncListResponsePreparedStackValidation, unknown > = z.object({ format: z.nullable(z.string()).optional(), @@ -5988,1586 +10310,1977 @@ export const SyncListResponseValidation$inboundSchema: z.ZodType< values: z.nullable(z.array(z.string())).optional(), }); -export function syncListResponseValidationFromJSON( +export function syncListResponsePreparedStackValidationFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackValidation, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseValidation$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseValidation' from JSON`, + (x) => + SyncListResponsePreparedStackValidation$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackValidation' from JSON`, ); } /** @internal */ -export const SyncListResponseValidationUnion$inboundSchema: z.ZodType< - SyncListResponseValidationUnion, - unknown -> = z.union([z.lazy(() => SyncListResponseValidation$inboundSchema), z.any()]); +export const SyncListResponsePreparedStackValidationUnion$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => SyncListResponsePreparedStackValidation$inboundSchema), + z.any(), + ]); -export function syncListResponseValidationUnionFromJSON( +export function syncListResponsePreparedStackValidationUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackValidationUnion, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseValidationUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseValidationUnion' from JSON`, + (x) => + SyncListResponsePreparedStackValidationUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackValidationUnion' from JSON`, ); } /** @internal */ -export const SyncListResponseInput$inboundSchema: z.ZodType< - SyncListResponseInput, +export const SyncListResponsePreparedStackInput$inboundSchema: z.ZodType< + SyncListResponsePreparedStackInput, unknown > = z.object({ default: z.nullable( z.union([ - z.lazy(() => SyncListResponseDefaultString$inboundSchema), - z.lazy(() => SyncListResponseDefaultNumber$inboundSchema), - z.lazy(() => SyncListResponseDefaultBoolean$inboundSchema), - z.lazy(() => SyncListResponseDefaultStringList$inboundSchema), + z.lazy(() => SyncListResponsePreparedStackDefaultString$inboundSchema), + z.lazy(() => SyncListResponsePreparedStackDefaultNumber$inboundSchema), + z.lazy(() => SyncListResponsePreparedStackDefaultBoolean$inboundSchema), + z.lazy(() => + SyncListResponsePreparedStackDefaultStringList$inboundSchema + ), z.any(), ]), ).optional(), description: z.string(), - env: z.array(z.lazy(() => SyncListResponseEnv$inboundSchema)).optional(), + env: z.array(z.lazy(() => SyncListResponsePreparedStackEnv$inboundSchema)) + .optional(), id: z.string(), - kind: SyncListResponseKind$inboundSchema, + kind: SyncListResponsePreparedStackKind$inboundSchema, label: z.string(), placeholder: z.nullable(z.string()).optional(), platforms: z.nullable( z.array(SyncListResponsePreparedStackPlatform$inboundSchema), ).optional(), - providedBy: z.array(SyncListResponseProvidedBy$inboundSchema), + providedBy: z.array(SyncListResponsePreparedStackProvidedBy$inboundSchema), required: z.boolean(), validation: z.nullable( - z.union([z.lazy(() => SyncListResponseValidation$inboundSchema), z.any()]), + z.union([ + z.lazy(() => SyncListResponsePreparedStackValidation$inboundSchema), + z.any(), + ]), ).optional(), }); -export function syncListResponseInputFromJSON( +export function syncListResponsePreparedStackInputFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => SyncListResponseInput$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseInput' from JSON`, + (x) => + SyncListResponsePreparedStackInput$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePreparedStackInput' from JSON`, ); } /** @internal */ -export const SyncListResponseManagementEnum$inboundSchema: z.ZodEnum< - typeof SyncListResponseManagementEnum -> = z.enum(SyncListResponseManagementEnum); +export const SyncListResponsePreparedStackManagementEnum$inboundSchema: + z.ZodEnum = z.enum( + SyncListResponsePreparedStackManagementEnum, + ); /** @internal */ -export const SyncListResponseOverrideAwResource$inboundSchema: z.ZodType< - SyncListResponseOverrideAwResource, - unknown -> = z.object({ - condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) - .optional(), - resources: z.array(z.string()), -}); +export const SyncListResponsePreparedStackOverrideAwResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); -export function syncListResponseOverrideAwResourceFromJSON( +export function syncListResponsePreparedStackOverrideAwResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackOverrideAwResource, + SDKValidationError +> { return safeParse( jsonString, (x) => - SyncListResponseOverrideAwResource$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseOverrideAwResource' from JSON`, + SyncListResponsePreparedStackOverrideAwResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackOverrideAwResource' from JSON`, ); } /** @internal */ -export const SyncListResponseOverrideAwStack$inboundSchema: z.ZodType< - SyncListResponseOverrideAwStack, - unknown -> = z.object({ - condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) - .optional(), - resources: z.array(z.string()), -}); +export const SyncListResponsePreparedStackOverrideAwStack$inboundSchema: + z.ZodType = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); -export function syncListResponseOverrideAwStackFromJSON( +export function syncListResponsePreparedStackOverrideAwStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackOverrideAwStack, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseOverrideAwStack$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseOverrideAwStack' from JSON`, + (x) => + SyncListResponsePreparedStackOverrideAwStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackOverrideAwStack' from JSON`, ); } /** @internal */ -export const SyncListResponseOverrideAwBinding$inboundSchema: z.ZodType< - SyncListResponseOverrideAwBinding, - unknown -> = z.object({ - resource: z.lazy(() => SyncListResponseOverrideAwResource$inboundSchema) - .optional(), - stack: z.lazy(() => SyncListResponseOverrideAwStack$inboundSchema).optional(), -}); +export const SyncListResponsePreparedStackOverrideAwBinding$inboundSchema: + z.ZodType = z.object( + { + resource: z.lazy(() => + SyncListResponsePreparedStackOverrideAwResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncListResponsePreparedStackOverrideAwStack$inboundSchema + ).optional(), + }, + ); -export function syncListResponseOverrideAwBindingFromJSON( +export function syncListResponsePreparedStackOverrideAwBindingFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackOverrideAwBinding, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseOverrideAwBinding$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseOverrideAwBinding' from JSON`, + (x) => + SyncListResponsePreparedStackOverrideAwBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackOverrideAwBinding' from JSON`, ); } /** @internal */ -export const SyncListResponseOverrideEffect$inboundSchema: z.ZodEnum< - typeof SyncListResponseOverrideEffect -> = z.enum(SyncListResponseOverrideEffect); +export const SyncListResponsePreparedStackOverrideEffect$inboundSchema: + z.ZodEnum = z.enum( + SyncListResponsePreparedStackOverrideEffect, + ); /** @internal */ -export const SyncListResponseOverrideAwGrant$inboundSchema: z.ZodType< - SyncListResponseOverrideAwGrant, - unknown -> = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), -}); +export const SyncListResponsePreparedStackOverrideAwGrant$inboundSchema: + z.ZodType = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); -export function syncListResponseOverrideAwGrantFromJSON( +export function syncListResponsePreparedStackOverrideAwGrantFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackOverrideAwGrant, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseOverrideAwGrant$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseOverrideAwGrant' from JSON`, + (x) => + SyncListResponsePreparedStackOverrideAwGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackOverrideAwGrant' from JSON`, ); } /** @internal */ -export const SyncListResponseOverrideAw$inboundSchema: z.ZodType< - SyncListResponseOverrideAw, +export const SyncListResponsePreparedStackOverrideAw$inboundSchema: z.ZodType< + SyncListResponsePreparedStackOverrideAw, unknown > = z.object({ - binding: z.lazy(() => SyncListResponseOverrideAwBinding$inboundSchema), + binding: z.lazy(() => + SyncListResponsePreparedStackOverrideAwBinding$inboundSchema + ), description: z.nullable(z.string()).optional(), - effect: SyncListResponseOverrideEffect$inboundSchema.optional(), - grant: z.lazy(() => SyncListResponseOverrideAwGrant$inboundSchema), + effect: SyncListResponsePreparedStackOverrideEffect$inboundSchema.optional(), + grant: z.lazy(() => + SyncListResponsePreparedStackOverrideAwGrant$inboundSchema + ), label: z.nullable(z.string()).optional(), }); -export function syncListResponseOverrideAwFromJSON( +export function syncListResponsePreparedStackOverrideAwFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackOverrideAw, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseOverrideAw$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseOverrideAw' from JSON`, + (x) => + SyncListResponsePreparedStackOverrideAw$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackOverrideAw' from JSON`, ); } /** @internal */ -export const SyncListResponseOverrideAzureResource$inboundSchema: z.ZodType< - SyncListResponseOverrideAzureResource, - unknown -> = z.object({ - scope: z.string(), -}); +export const SyncListResponsePreparedStackOverrideAzureResource$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); -export function syncListResponseOverrideAzureResourceFromJSON( +export function syncListResponsePreparedStackOverrideAzureResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackOverrideAzureResource, + SDKValidationError +> { return safeParse( jsonString, (x) => - SyncListResponseOverrideAzureResource$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseOverrideAzureResource' from JSON`, + SyncListResponsePreparedStackOverrideAzureResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackOverrideAzureResource' from JSON`, ); } /** @internal */ -export const SyncListResponseOverrideAzureStack$inboundSchema: z.ZodType< - SyncListResponseOverrideAzureStack, - unknown -> = z.object({ - scope: z.string(), -}); +export const SyncListResponsePreparedStackOverrideAzureStack$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); -export function syncListResponseOverrideAzureStackFromJSON( +export function syncListResponsePreparedStackOverrideAzureStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackOverrideAzureStack, + SDKValidationError +> { return safeParse( jsonString, (x) => - SyncListResponseOverrideAzureStack$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseOverrideAzureStack' from JSON`, + SyncListResponsePreparedStackOverrideAzureStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackOverrideAzureStack' from JSON`, ); } /** @internal */ -export const SyncListResponseOverrideAzureBinding$inboundSchema: z.ZodType< - SyncListResponseOverrideAzureBinding, - unknown -> = z.object({ - resource: z.lazy(() => SyncListResponseOverrideAzureResource$inboundSchema) - .optional(), - stack: z.lazy(() => SyncListResponseOverrideAzureStack$inboundSchema) - .optional(), -}); +export const SyncListResponsePreparedStackOverrideAzureBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncListResponsePreparedStackOverrideAzureResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncListResponsePreparedStackOverrideAzureStack$inboundSchema + ).optional(), + }); -export function syncListResponseOverrideAzureBindingFromJSON( +export function syncListResponsePreparedStackOverrideAzureBindingFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackOverrideAzureBinding, + SDKValidationError +> { return safeParse( jsonString, (x) => - SyncListResponseOverrideAzureBinding$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseOverrideAzureBinding' from JSON`, + SyncListResponsePreparedStackOverrideAzureBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackOverrideAzureBinding' from JSON`, ); } /** @internal */ -export const SyncListResponseOverrideAzureGrant$inboundSchema: z.ZodType< - SyncListResponseOverrideAzureGrant, - unknown -> = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), -}); +export const SyncListResponsePreparedStackOverrideAzureGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); -export function syncListResponseOverrideAzureGrantFromJSON( +export function syncListResponsePreparedStackOverrideAzureGrantFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackOverrideAzureGrant, + SDKValidationError +> { return safeParse( jsonString, (x) => - SyncListResponseOverrideAzureGrant$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseOverrideAzureGrant' from JSON`, + SyncListResponsePreparedStackOverrideAzureGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackOverrideAzureGrant' from JSON`, ); } /** @internal */ -export const SyncListResponseOverrideAzure$inboundSchema: z.ZodType< - SyncListResponseOverrideAzure, - unknown -> = z.object({ - binding: z.lazy(() => SyncListResponseOverrideAzureBinding$inboundSchema), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => SyncListResponseOverrideAzureGrant$inboundSchema), - label: z.nullable(z.string()).optional(), -}); +export const SyncListResponsePreparedStackOverrideAzure$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + SyncListResponsePreparedStackOverrideAzureBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncListResponsePreparedStackOverrideAzureGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); -export function syncListResponseOverrideAzureFromJSON( +export function syncListResponsePreparedStackOverrideAzureFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackOverrideAzure, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseOverrideAzure$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseOverrideAzure' from JSON`, + (x) => + SyncListResponsePreparedStackOverrideAzure$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackOverrideAzure' from JSON`, ); } /** @internal */ -export const SyncListResponseOverrideConditionResource$inboundSchema: z.ZodType< - SyncListResponseOverrideConditionResource, - unknown -> = z.object({ - expression: z.string(), - title: z.string(), -}); +export const SyncListResponsePreparedStackOverrideConditionResource$inboundSchema: + z.ZodType = z + .object({ + expression: z.string(), + title: z.string(), + }); -export function syncListResponseOverrideConditionResourceFromJSON( +export function syncListResponsePreparedStackOverrideConditionResourceFromJSON( jsonString: string, ): SafeParseResult< - SyncListResponseOverrideConditionResource, + SyncListResponsePreparedStackOverrideConditionResource, SDKValidationError > { return safeParse( jsonString, (x) => - SyncListResponseOverrideConditionResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncListResponseOverrideConditionResource' from JSON`, + SyncListResponsePreparedStackOverrideConditionResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePreparedStackOverrideConditionResource' from JSON`, ); } /** @internal */ -export const SyncListResponseOverrideResourceConditionUnion$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => SyncListResponseOverrideConditionResource$inboundSchema), +export const SyncListResponsePreparedStackOverrideResourceConditionUnion$inboundSchema: + z.ZodType< + SyncListResponsePreparedStackOverrideResourceConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncListResponsePreparedStackOverrideConditionResource$inboundSchema + ), z.any(), ]); -export function syncListResponseOverrideResourceConditionUnionFromJSON( +export function syncListResponsePreparedStackOverrideResourceConditionUnionFromJSON( jsonString: string, ): SafeParseResult< - SyncListResponseOverrideResourceConditionUnion, + SyncListResponsePreparedStackOverrideResourceConditionUnion, SDKValidationError > { return safeParse( jsonString, (x) => - SyncListResponseOverrideResourceConditionUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncListResponseOverrideResourceConditionUnion' from JSON`, + SyncListResponsePreparedStackOverrideResourceConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePreparedStackOverrideResourceConditionUnion' from JSON`, ); } /** @internal */ -export const SyncListResponseOverrideGcpResource$inboundSchema: z.ZodType< - SyncListResponseOverrideGcpResource, - unknown -> = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => SyncListResponseOverrideConditionResource$inboundSchema), - z.any(), - ]), - ).optional(), - scope: z.string(), -}); +export const SyncListResponsePreparedStackOverrideGcpResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncListResponsePreparedStackOverrideConditionResource$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); -export function syncListResponseOverrideGcpResourceFromJSON( +export function syncListResponsePreparedStackOverrideGcpResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackOverrideGcpResource, + SDKValidationError +> { return safeParse( jsonString, (x) => - SyncListResponseOverrideGcpResource$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseOverrideGcpResource' from JSON`, + SyncListResponsePreparedStackOverrideGcpResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackOverrideGcpResource' from JSON`, ); } /** @internal */ -export const SyncListResponseOverrideConditionStack$inboundSchema: z.ZodType< - SyncListResponseOverrideConditionStack, - unknown -> = z.object({ - expression: z.string(), - title: z.string(), -}); +export const SyncListResponsePreparedStackOverrideConditionStack$inboundSchema: + z.ZodType = z + .object({ + expression: z.string(), + title: z.string(), + }); -export function syncListResponseOverrideConditionStackFromJSON( +export function syncListResponsePreparedStackOverrideConditionStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackOverrideConditionStack, + SDKValidationError +> { return safeParse( jsonString, (x) => - SyncListResponseOverrideConditionStack$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseOverrideConditionStack' from JSON`, + SyncListResponsePreparedStackOverrideConditionStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackOverrideConditionStack' from JSON`, ); } /** @internal */ -export const SyncListResponseOverrideStackConditionUnion$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => SyncListResponseOverrideConditionStack$inboundSchema), - z.any(), - ]); +export const SyncListResponsePreparedStackOverrideStackConditionUnion$inboundSchema: + z.ZodType = + z.union([ + z.lazy(() => + SyncListResponsePreparedStackOverrideConditionStack$inboundSchema + ), + z.any(), + ]); -export function syncListResponseOverrideStackConditionUnionFromJSON( +export function syncListResponsePreparedStackOverrideStackConditionUnionFromJSON( jsonString: string, ): SafeParseResult< - SyncListResponseOverrideStackConditionUnion, + SyncListResponsePreparedStackOverrideStackConditionUnion, SDKValidationError > { return safeParse( jsonString, (x) => - SyncListResponseOverrideStackConditionUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncListResponseOverrideStackConditionUnion' from JSON`, + SyncListResponsePreparedStackOverrideStackConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePreparedStackOverrideStackConditionUnion' from JSON`, ); } /** @internal */ -export const SyncListResponseOverrideGcpStack$inboundSchema: z.ZodType< - SyncListResponseOverrideGcpStack, - unknown -> = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => SyncListResponseOverrideConditionStack$inboundSchema), - z.any(), - ]), - ).optional(), - scope: z.string(), -}); +export const SyncListResponsePreparedStackOverrideGcpStack$inboundSchema: + z.ZodType = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncListResponsePreparedStackOverrideConditionStack$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); -export function syncListResponseOverrideGcpStackFromJSON( +export function syncListResponsePreparedStackOverrideGcpStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackOverrideGcpStack, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseOverrideGcpStack$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseOverrideGcpStack' from JSON`, + (x) => + SyncListResponsePreparedStackOverrideGcpStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackOverrideGcpStack' from JSON`, ); } /** @internal */ -export const SyncListResponseOverrideGcpBinding$inboundSchema: z.ZodType< - SyncListResponseOverrideGcpBinding, - unknown -> = z.object({ - resource: z.lazy(() => SyncListResponseOverrideGcpResource$inboundSchema) - .optional(), - stack: z.lazy(() => SyncListResponseOverrideGcpStack$inboundSchema) - .optional(), -}); +export const SyncListResponsePreparedStackOverrideGcpBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncListResponsePreparedStackOverrideGcpResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncListResponsePreparedStackOverrideGcpStack$inboundSchema + ).optional(), + }); -export function syncListResponseOverrideGcpBindingFromJSON( +export function syncListResponsePreparedStackOverrideGcpBindingFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackOverrideGcpBinding, + SDKValidationError +> { return safeParse( jsonString, (x) => - SyncListResponseOverrideGcpBinding$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseOverrideGcpBinding' from JSON`, + SyncListResponsePreparedStackOverrideGcpBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackOverrideGcpBinding' from JSON`, ); } /** @internal */ -export const SyncListResponseOverrideGcpGrant$inboundSchema: z.ZodType< - SyncListResponseOverrideGcpGrant, - unknown -> = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), -}); +export const SyncListResponsePreparedStackOverrideGcpGrant$inboundSchema: + z.ZodType = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); -export function syncListResponseOverrideGcpGrantFromJSON( +export function syncListResponsePreparedStackOverrideGcpGrantFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackOverrideGcpGrant, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseOverrideGcpGrant$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseOverrideGcpGrant' from JSON`, + (x) => + SyncListResponsePreparedStackOverrideGcpGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackOverrideGcpGrant' from JSON`, ); } /** @internal */ -export const SyncListResponseOverrideGcp$inboundSchema: z.ZodType< - SyncListResponseOverrideGcp, +export const SyncListResponsePreparedStackOverrideGcp$inboundSchema: z.ZodType< + SyncListResponsePreparedStackOverrideGcp, unknown > = z.object({ - binding: z.lazy(() => SyncListResponseOverrideGcpBinding$inboundSchema), + binding: z.lazy(() => + SyncListResponsePreparedStackOverrideGcpBinding$inboundSchema + ), description: z.nullable(z.string()).optional(), - grant: z.lazy(() => SyncListResponseOverrideGcpGrant$inboundSchema), + grant: z.lazy(() => + SyncListResponsePreparedStackOverrideGcpGrant$inboundSchema + ), label: z.nullable(z.string()).optional(), }); -export function syncListResponseOverrideGcpFromJSON( +export function syncListResponsePreparedStackOverrideGcpFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackOverrideGcp, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseOverrideGcp$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseOverrideGcp' from JSON`, + (x) => + SyncListResponsePreparedStackOverrideGcp$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackOverrideGcp' from JSON`, ); } /** @internal */ -export const SyncListResponseOverridePlatforms$inboundSchema: z.ZodType< - SyncListResponseOverridePlatforms, - unknown -> = z.object({ - aws: z.nullable( - z.array(z.lazy(() => SyncListResponseOverrideAw$inboundSchema)), - ).optional(), - azure: z.nullable( - z.array(z.lazy(() => SyncListResponseOverrideAzure$inboundSchema)), - ).optional(), - gcp: z.nullable( - z.array(z.lazy(() => SyncListResponseOverrideGcp$inboundSchema)), - ).optional(), -}); +export const SyncListResponsePreparedStackOverridePlatforms$inboundSchema: + z.ZodType = z.object( + { + aws: z.nullable(z.array(z.lazy(() => + SyncListResponsePreparedStackOverrideAw$inboundSchema + ))).optional(), + azure: z.nullable(z.array(z.lazy(() => + SyncListResponsePreparedStackOverrideAzure$inboundSchema + ))).optional(), + gcp: z.nullable(z.array(z.lazy(() => + SyncListResponsePreparedStackOverrideGcp$inboundSchema + ))).optional(), + }, + ); -export function syncListResponseOverridePlatformsFromJSON( +export function syncListResponsePreparedStackOverridePlatformsFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackOverridePlatforms, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseOverridePlatforms$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseOverridePlatforms' from JSON`, + (x) => + SyncListResponsePreparedStackOverridePlatforms$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackOverridePlatforms' from JSON`, ); } /** @internal */ -export const SyncListResponseOverride$inboundSchema: z.ZodType< - SyncListResponseOverride, +export const SyncListResponsePreparedStackOverride$inboundSchema: z.ZodType< + SyncListResponsePreparedStackOverride, unknown > = z.object({ description: z.string(), id: z.string(), - platforms: z.lazy(() => SyncListResponseOverridePlatforms$inboundSchema), + platforms: z.lazy(() => + SyncListResponsePreparedStackOverridePlatforms$inboundSchema + ), }); -export function syncListResponseOverrideFromJSON( +export function syncListResponsePreparedStackOverrideFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => SyncListResponseOverride$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseOverride' from JSON`, + (x) => + SyncListResponsePreparedStackOverride$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePreparedStackOverride' from JSON`, ); } /** @internal */ -export const SyncListResponseOverrideUnion$inboundSchema: z.ZodType< - SyncListResponseOverrideUnion, - unknown -> = z.union([z.lazy(() => SyncListResponseOverride$inboundSchema), z.string()]); +export const SyncListResponsePreparedStackOverrideUnion$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => SyncListResponsePreparedStackOverride$inboundSchema), + z.string(), + ]); -export function syncListResponseOverrideUnionFromJSON( +export function syncListResponsePreparedStackOverrideUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackOverrideUnion, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseOverrideUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseOverrideUnion' from JSON`, + (x) => + SyncListResponsePreparedStackOverrideUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackOverrideUnion' from JSON`, ); } /** @internal */ -export const SyncListResponseManagement2$inboundSchema: z.ZodType< - SyncListResponseManagement2, +export const SyncListResponsePreparedStackManagement2$inboundSchema: z.ZodType< + SyncListResponsePreparedStackManagement2, unknown > = z.object({ override: z.record( z.string(), z.array(z.union([ - z.lazy(() => SyncListResponseOverride$inboundSchema), + z.lazy(() => SyncListResponsePreparedStackOverride$inboundSchema), z.string(), ])), ), }); -export function syncListResponseManagement2FromJSON( +export function syncListResponsePreparedStackManagement2FromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackManagement2, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseManagement2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseManagement2' from JSON`, + (x) => + SyncListResponsePreparedStackManagement2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackManagement2' from JSON`, ); } /** @internal */ -export const SyncListResponseExtendAwResource$inboundSchema: z.ZodType< - SyncListResponseExtendAwResource, - unknown -> = z.object({ - condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) - .optional(), - resources: z.array(z.string()), -}); +export const SyncListResponsePreparedStackExtendAwResource$inboundSchema: + z.ZodType = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); -export function syncListResponseExtendAwResourceFromJSON( +export function syncListResponsePreparedStackExtendAwResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackExtendAwResource, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseExtendAwResource$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseExtendAwResource' from JSON`, + (x) => + SyncListResponsePreparedStackExtendAwResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackExtendAwResource' from JSON`, ); } /** @internal */ -export const SyncListResponseExtendAwStack$inboundSchema: z.ZodType< - SyncListResponseExtendAwStack, - unknown -> = z.object({ - condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) - .optional(), - resources: z.array(z.string()), -}); +export const SyncListResponsePreparedStackExtendAwStack$inboundSchema: + z.ZodType = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); -export function syncListResponseExtendAwStackFromJSON( +export function syncListResponsePreparedStackExtendAwStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackExtendAwStack, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseExtendAwStack$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseExtendAwStack' from JSON`, + (x) => + SyncListResponsePreparedStackExtendAwStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackExtendAwStack' from JSON`, ); } /** @internal */ -export const SyncListResponseExtendAwBinding$inboundSchema: z.ZodType< - SyncListResponseExtendAwBinding, - unknown -> = z.object({ - resource: z.lazy(() => SyncListResponseExtendAwResource$inboundSchema) - .optional(), - stack: z.lazy(() => SyncListResponseExtendAwStack$inboundSchema).optional(), -}); +export const SyncListResponsePreparedStackExtendAwBinding$inboundSchema: + z.ZodType = z.object({ + resource: z.lazy(() => + SyncListResponsePreparedStackExtendAwResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncListResponsePreparedStackExtendAwStack$inboundSchema + ).optional(), + }); -export function syncListResponseExtendAwBindingFromJSON( +export function syncListResponsePreparedStackExtendAwBindingFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackExtendAwBinding, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseExtendAwBinding$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseExtendAwBinding' from JSON`, + (x) => + SyncListResponsePreparedStackExtendAwBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackExtendAwBinding' from JSON`, ); } /** @internal */ -export const SyncListResponseExtendEffect$inboundSchema: z.ZodEnum< - typeof SyncListResponseExtendEffect -> = z.enum(SyncListResponseExtendEffect); +export const SyncListResponsePreparedStackExtendEffect$inboundSchema: z.ZodEnum< + typeof SyncListResponsePreparedStackExtendEffect +> = z.enum(SyncListResponsePreparedStackExtendEffect); /** @internal */ -export const SyncListResponseExtendAwGrant$inboundSchema: z.ZodType< - SyncListResponseExtendAwGrant, - unknown -> = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), -}); +export const SyncListResponsePreparedStackExtendAwGrant$inboundSchema: + z.ZodType = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); -export function syncListResponseExtendAwGrantFromJSON( +export function syncListResponsePreparedStackExtendAwGrantFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackExtendAwGrant, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseExtendAwGrant$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseExtendAwGrant' from JSON`, + (x) => + SyncListResponsePreparedStackExtendAwGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackExtendAwGrant' from JSON`, ); } /** @internal */ -export const SyncListResponseExtendAw$inboundSchema: z.ZodType< - SyncListResponseExtendAw, +export const SyncListResponsePreparedStackExtendAw$inboundSchema: z.ZodType< + SyncListResponsePreparedStackExtendAw, unknown > = z.object({ - binding: z.lazy(() => SyncListResponseExtendAwBinding$inboundSchema), + binding: z.lazy(() => + SyncListResponsePreparedStackExtendAwBinding$inboundSchema + ), description: z.nullable(z.string()).optional(), - effect: SyncListResponseExtendEffect$inboundSchema.optional(), - grant: z.lazy(() => SyncListResponseExtendAwGrant$inboundSchema), + effect: SyncListResponsePreparedStackExtendEffect$inboundSchema.optional(), + grant: z.lazy(() => SyncListResponsePreparedStackExtendAwGrant$inboundSchema), label: z.nullable(z.string()).optional(), }); -export function syncListResponseExtendAwFromJSON( +export function syncListResponsePreparedStackExtendAwFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => SyncListResponseExtendAw$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseExtendAw' from JSON`, + (x) => + SyncListResponsePreparedStackExtendAw$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePreparedStackExtendAw' from JSON`, ); } /** @internal */ -export const SyncListResponseExtendAzureResource$inboundSchema: z.ZodType< - SyncListResponseExtendAzureResource, - unknown -> = z.object({ - scope: z.string(), -}); +export const SyncListResponsePreparedStackExtendAzureResource$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); -export function syncListResponseExtendAzureResourceFromJSON( +export function syncListResponsePreparedStackExtendAzureResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackExtendAzureResource, + SDKValidationError +> { return safeParse( jsonString, (x) => - SyncListResponseExtendAzureResource$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseExtendAzureResource' from JSON`, + SyncListResponsePreparedStackExtendAzureResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackExtendAzureResource' from JSON`, ); } /** @internal */ -export const SyncListResponseExtendAzureStack$inboundSchema: z.ZodType< - SyncListResponseExtendAzureStack, - unknown -> = z.object({ - scope: z.string(), -}); +export const SyncListResponsePreparedStackExtendAzureStack$inboundSchema: + z.ZodType = z.object({ + scope: z.string(), + }); -export function syncListResponseExtendAzureStackFromJSON( +export function syncListResponsePreparedStackExtendAzureStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackExtendAzureStack, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseExtendAzureStack$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseExtendAzureStack' from JSON`, + (x) => + SyncListResponsePreparedStackExtendAzureStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackExtendAzureStack' from JSON`, ); } /** @internal */ -export const SyncListResponseExtendAzureBinding$inboundSchema: z.ZodType< - SyncListResponseExtendAzureBinding, - unknown -> = z.object({ - resource: z.lazy(() => SyncListResponseExtendAzureResource$inboundSchema) - .optional(), - stack: z.lazy(() => SyncListResponseExtendAzureStack$inboundSchema) - .optional(), -}); +export const SyncListResponsePreparedStackExtendAzureBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncListResponsePreparedStackExtendAzureResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncListResponsePreparedStackExtendAzureStack$inboundSchema + ).optional(), + }); -export function syncListResponseExtendAzureBindingFromJSON( +export function syncListResponsePreparedStackExtendAzureBindingFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackExtendAzureBinding, + SDKValidationError +> { return safeParse( jsonString, (x) => - SyncListResponseExtendAzureBinding$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseExtendAzureBinding' from JSON`, + SyncListResponsePreparedStackExtendAzureBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackExtendAzureBinding' from JSON`, ); } /** @internal */ -export const SyncListResponseExtendAzureGrant$inboundSchema: z.ZodType< - SyncListResponseExtendAzureGrant, - unknown -> = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), -}); +export const SyncListResponsePreparedStackExtendAzureGrant$inboundSchema: + z.ZodType = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); -export function syncListResponseExtendAzureGrantFromJSON( +export function syncListResponsePreparedStackExtendAzureGrantFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackExtendAzureGrant, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseExtendAzureGrant$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseExtendAzureGrant' from JSON`, + (x) => + SyncListResponsePreparedStackExtendAzureGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackExtendAzureGrant' from JSON`, ); } /** @internal */ -export const SyncListResponseExtendAzure$inboundSchema: z.ZodType< - SyncListResponseExtendAzure, +export const SyncListResponsePreparedStackExtendAzure$inboundSchema: z.ZodType< + SyncListResponsePreparedStackExtendAzure, unknown > = z.object({ - binding: z.lazy(() => SyncListResponseExtendAzureBinding$inboundSchema), + binding: z.lazy(() => + SyncListResponsePreparedStackExtendAzureBinding$inboundSchema + ), description: z.nullable(z.string()).optional(), - grant: z.lazy(() => SyncListResponseExtendAzureGrant$inboundSchema), + grant: z.lazy(() => + SyncListResponsePreparedStackExtendAzureGrant$inboundSchema + ), label: z.nullable(z.string()).optional(), }); -export function syncListResponseExtendAzureFromJSON( +export function syncListResponsePreparedStackExtendAzureFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackExtendAzure, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseExtendAzure$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseExtendAzure' from JSON`, + (x) => + SyncListResponsePreparedStackExtendAzure$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackExtendAzure' from JSON`, ); } /** @internal */ -export const SyncListResponseExtendConditionResource$inboundSchema: z.ZodType< - SyncListResponseExtendConditionResource, - unknown -> = z.object({ - expression: z.string(), - title: z.string(), -}); +export const SyncListResponsePreparedStackExtendConditionResource$inboundSchema: + z.ZodType = z + .object({ + expression: z.string(), + title: z.string(), + }); -export function syncListResponseExtendConditionResourceFromJSON( +export function syncListResponsePreparedStackExtendConditionResourceFromJSON( jsonString: string, ): SafeParseResult< - SyncListResponseExtendConditionResource, + SyncListResponsePreparedStackExtendConditionResource, SDKValidationError > { return safeParse( jsonString, (x) => - SyncListResponseExtendConditionResource$inboundSchema.parse( + SyncListResponsePreparedStackExtendConditionResource$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'SyncListResponseExtendConditionResource' from JSON`, + `Failed to parse 'SyncListResponsePreparedStackExtendConditionResource' from JSON`, ); } /** @internal */ -export const SyncListResponseExtendResourceConditionUnion$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => SyncListResponseExtendConditionResource$inboundSchema), +export const SyncListResponsePreparedStackExtendResourceConditionUnion$inboundSchema: + z.ZodType< + SyncListResponsePreparedStackExtendResourceConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncListResponsePreparedStackExtendConditionResource$inboundSchema + ), z.any(), ]); -export function syncListResponseExtendResourceConditionUnionFromJSON( +export function syncListResponsePreparedStackExtendResourceConditionUnionFromJSON( jsonString: string, ): SafeParseResult< - SyncListResponseExtendResourceConditionUnion, + SyncListResponsePreparedStackExtendResourceConditionUnion, SDKValidationError > { return safeParse( jsonString, (x) => - SyncListResponseExtendResourceConditionUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncListResponseExtendResourceConditionUnion' from JSON`, + SyncListResponsePreparedStackExtendResourceConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePreparedStackExtendResourceConditionUnion' from JSON`, ); } /** @internal */ -export const SyncListResponseExtendGcpResource$inboundSchema: z.ZodType< - SyncListResponseExtendGcpResource, - unknown -> = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => SyncListResponseExtendConditionResource$inboundSchema), - z.any(), - ]), - ).optional(), - scope: z.string(), -}); +export const SyncListResponsePreparedStackExtendGcpResource$inboundSchema: + z.ZodType = z.object( + { + condition: z.nullable(z.union([ + z.lazy(() => + SyncListResponsePreparedStackExtendConditionResource$inboundSchema + ), + z.any(), + ])).optional(), + scope: z.string(), + }, + ); -export function syncListResponseExtendGcpResourceFromJSON( +export function syncListResponsePreparedStackExtendGcpResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackExtendGcpResource, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseExtendGcpResource$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseExtendGcpResource' from JSON`, + (x) => + SyncListResponsePreparedStackExtendGcpResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackExtendGcpResource' from JSON`, ); } /** @internal */ -export const SyncListResponseExtendConditionStack$inboundSchema: z.ZodType< - SyncListResponseExtendConditionStack, - unknown -> = z.object({ - expression: z.string(), - title: z.string(), -}); +export const SyncListResponsePreparedStackExtendConditionStack$inboundSchema: + z.ZodType = z + .object({ + expression: z.string(), + title: z.string(), + }); -export function syncListResponseExtendConditionStackFromJSON( +export function syncListResponsePreparedStackExtendConditionStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackExtendConditionStack, + SDKValidationError +> { return safeParse( jsonString, (x) => - SyncListResponseExtendConditionStack$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseExtendConditionStack' from JSON`, + SyncListResponsePreparedStackExtendConditionStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackExtendConditionStack' from JSON`, ); } /** @internal */ -export const SyncListResponseExtendStackConditionUnion$inboundSchema: z.ZodType< - SyncListResponseExtendStackConditionUnion, - unknown -> = z.union([ - z.lazy(() => SyncListResponseExtendConditionStack$inboundSchema), - z.any(), -]); +export const SyncListResponsePreparedStackExtendStackConditionUnion$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => + SyncListResponsePreparedStackExtendConditionStack$inboundSchema + ), + z.any(), + ]); -export function syncListResponseExtendStackConditionUnionFromJSON( +export function syncListResponsePreparedStackExtendStackConditionUnionFromJSON( jsonString: string, ): SafeParseResult< - SyncListResponseExtendStackConditionUnion, + SyncListResponsePreparedStackExtendStackConditionUnion, SDKValidationError > { return safeParse( jsonString, (x) => - SyncListResponseExtendStackConditionUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncListResponseExtendStackConditionUnion' from JSON`, + SyncListResponsePreparedStackExtendStackConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePreparedStackExtendStackConditionUnion' from JSON`, ); } /** @internal */ -export const SyncListResponseExtendGcpStack$inboundSchema: z.ZodType< - SyncListResponseExtendGcpStack, - unknown -> = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => SyncListResponseExtendConditionStack$inboundSchema), - z.any(), - ]), - ).optional(), - scope: z.string(), -}); +export const SyncListResponsePreparedStackExtendGcpStack$inboundSchema: + z.ZodType = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncListResponsePreparedStackExtendConditionStack$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); -export function syncListResponseExtendGcpStackFromJSON( +export function syncListResponsePreparedStackExtendGcpStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackExtendGcpStack, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseExtendGcpStack$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseExtendGcpStack' from JSON`, + (x) => + SyncListResponsePreparedStackExtendGcpStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackExtendGcpStack' from JSON`, ); } /** @internal */ -export const SyncListResponseExtendGcpBinding$inboundSchema: z.ZodType< - SyncListResponseExtendGcpBinding, - unknown -> = z.object({ - resource: z.lazy(() => SyncListResponseExtendGcpResource$inboundSchema) - .optional(), - stack: z.lazy(() => SyncListResponseExtendGcpStack$inboundSchema).optional(), -}); +export const SyncListResponsePreparedStackExtendGcpBinding$inboundSchema: + z.ZodType = z.object({ + resource: z.lazy(() => + SyncListResponsePreparedStackExtendGcpResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncListResponsePreparedStackExtendGcpStack$inboundSchema + ).optional(), + }); -export function syncListResponseExtendGcpBindingFromJSON( +export function syncListResponsePreparedStackExtendGcpBindingFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackExtendGcpBinding, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseExtendGcpBinding$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseExtendGcpBinding' from JSON`, + (x) => + SyncListResponsePreparedStackExtendGcpBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackExtendGcpBinding' from JSON`, ); } /** @internal */ -export const SyncListResponseExtendGcpGrant$inboundSchema: z.ZodType< - SyncListResponseExtendGcpGrant, - unknown -> = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), -}); +export const SyncListResponsePreparedStackExtendGcpGrant$inboundSchema: + z.ZodType = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); -export function syncListResponseExtendGcpGrantFromJSON( +export function syncListResponsePreparedStackExtendGcpGrantFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackExtendGcpGrant, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseExtendGcpGrant$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseExtendGcpGrant' from JSON`, + (x) => + SyncListResponsePreparedStackExtendGcpGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackExtendGcpGrant' from JSON`, ); } /** @internal */ -export const SyncListResponseExtendGcp$inboundSchema: z.ZodType< - SyncListResponseExtendGcp, +export const SyncListResponsePreparedStackExtendGcp$inboundSchema: z.ZodType< + SyncListResponsePreparedStackExtendGcp, unknown > = z.object({ - binding: z.lazy(() => SyncListResponseExtendGcpBinding$inboundSchema), + binding: z.lazy(() => + SyncListResponsePreparedStackExtendGcpBinding$inboundSchema + ), description: z.nullable(z.string()).optional(), - grant: z.lazy(() => SyncListResponseExtendGcpGrant$inboundSchema), + grant: z.lazy(() => + SyncListResponsePreparedStackExtendGcpGrant$inboundSchema + ), label: z.nullable(z.string()).optional(), }); -export function syncListResponseExtendGcpFromJSON( +export function syncListResponsePreparedStackExtendGcpFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => SyncListResponseExtendGcp$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseExtendGcp' from JSON`, + (x) => + SyncListResponsePreparedStackExtendGcp$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePreparedStackExtendGcp' from JSON`, ); } /** @internal */ -export const SyncListResponseExtendPlatforms$inboundSchema: z.ZodType< - SyncListResponseExtendPlatforms, - unknown -> = z.object({ - aws: z.nullable(z.array(z.lazy(() => SyncListResponseExtendAw$inboundSchema))) - .optional(), - azure: z.nullable( - z.array(z.lazy(() => SyncListResponseExtendAzure$inboundSchema)), - ).optional(), - gcp: z.nullable( - z.array(z.lazy(() => SyncListResponseExtendGcp$inboundSchema)), - ).optional(), -}); +export const SyncListResponsePreparedStackExtendPlatforms$inboundSchema: + z.ZodType = z.object({ + aws: z.nullable( + z.array( + z.lazy(() => SyncListResponsePreparedStackExtendAw$inboundSchema), + ), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + SyncListResponsePreparedStackExtendAzure$inboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array( + z.lazy(() => SyncListResponsePreparedStackExtendGcp$inboundSchema), + ), + ).optional(), + }); -export function syncListResponseExtendPlatformsFromJSON( +export function syncListResponsePreparedStackExtendPlatformsFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackExtendPlatforms, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseExtendPlatforms$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseExtendPlatforms' from JSON`, + (x) => + SyncListResponsePreparedStackExtendPlatforms$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackExtendPlatforms' from JSON`, ); } /** @internal */ -export const SyncListResponseExtend$inboundSchema: z.ZodType< - SyncListResponseExtend, +export const SyncListResponsePreparedStackExtend$inboundSchema: z.ZodType< + SyncListResponsePreparedStackExtend, unknown > = z.object({ description: z.string(), id: z.string(), - platforms: z.lazy(() => SyncListResponseExtendPlatforms$inboundSchema), + platforms: z.lazy(() => + SyncListResponsePreparedStackExtendPlatforms$inboundSchema + ), }); -export function syncListResponseExtendFromJSON( +export function syncListResponsePreparedStackExtendFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => SyncListResponseExtend$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseExtend' from JSON`, + (x) => + SyncListResponsePreparedStackExtend$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePreparedStackExtend' from JSON`, ); } /** @internal */ -export const SyncListResponseExtendUnion$inboundSchema: z.ZodType< - SyncListResponseExtendUnion, +export const SyncListResponsePreparedStackExtendUnion$inboundSchema: z.ZodType< + SyncListResponsePreparedStackExtendUnion, unknown -> = z.union([z.lazy(() => SyncListResponseExtend$inboundSchema), z.string()]); +> = z.union([ + z.lazy(() => SyncListResponsePreparedStackExtend$inboundSchema), + z.string(), +]); -export function syncListResponseExtendUnionFromJSON( +export function syncListResponsePreparedStackExtendUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackExtendUnion, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseExtendUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseExtendUnion' from JSON`, + (x) => + SyncListResponsePreparedStackExtendUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackExtendUnion' from JSON`, ); } /** @internal */ -export const SyncListResponseManagement1$inboundSchema: z.ZodType< - SyncListResponseManagement1, +export const SyncListResponsePreparedStackManagement1$inboundSchema: z.ZodType< + SyncListResponsePreparedStackManagement1, unknown > = z.object({ extend: z.record( z.string(), - z.array( - z.union([z.lazy(() => SyncListResponseExtend$inboundSchema), z.string()]), - ), + z.array(z.union([ + z.lazy(() => SyncListResponsePreparedStackExtend$inboundSchema), + z.string(), + ])), ), }); -export function syncListResponseManagement1FromJSON( +export function syncListResponsePreparedStackManagement1FromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackManagement1, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseManagement1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseManagement1' from JSON`, + (x) => + SyncListResponsePreparedStackManagement1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackManagement1' from JSON`, ); } /** @internal */ -export const SyncListResponseManagementUnion$inboundSchema: z.ZodType< - SyncListResponseManagementUnion, - unknown -> = z.union([ - z.lazy(() => SyncListResponseManagement1$inboundSchema), - z.lazy(() => SyncListResponseManagement2$inboundSchema), - SyncListResponseManagementEnum$inboundSchema, -]); +export const SyncListResponsePreparedStackManagementUnion$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => SyncListResponsePreparedStackManagement1$inboundSchema), + z.lazy(() => SyncListResponsePreparedStackManagement2$inboundSchema), + SyncListResponsePreparedStackManagementEnum$inboundSchema, + ]); -export function syncListResponseManagementUnionFromJSON( +export function syncListResponsePreparedStackManagementUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackManagementUnion, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseManagementUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseManagementUnion' from JSON`, + (x) => + SyncListResponsePreparedStackManagementUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackManagementUnion' from JSON`, ); } /** @internal */ -export const SyncListResponseProfileAwResource$inboundSchema: z.ZodType< - SyncListResponseProfileAwResource, - unknown -> = z.object({ - condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) - .optional(), - resources: z.array(z.string()), -}); +export const SyncListResponsePreparedStackProfileAwResource$inboundSchema: + z.ZodType = z.object( + { + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }, + ); -export function syncListResponseProfileAwResourceFromJSON( +export function syncListResponsePreparedStackProfileAwResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackProfileAwResource, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseProfileAwResource$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProfileAwResource' from JSON`, + (x) => + SyncListResponsePreparedStackProfileAwResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackProfileAwResource' from JSON`, ); } /** @internal */ -export const SyncListResponseProfileAwStack$inboundSchema: z.ZodType< - SyncListResponseProfileAwStack, - unknown -> = z.object({ - condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) - .optional(), - resources: z.array(z.string()), -}); +export const SyncListResponsePreparedStackProfileAwStack$inboundSchema: + z.ZodType = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); -export function syncListResponseProfileAwStackFromJSON( +export function syncListResponsePreparedStackProfileAwStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackProfileAwStack, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseProfileAwStack$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProfileAwStack' from JSON`, + (x) => + SyncListResponsePreparedStackProfileAwStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackProfileAwStack' from JSON`, ); } -/** @internal */ -export const SyncListResponseProfileAwBinding$inboundSchema: z.ZodType< - SyncListResponseProfileAwBinding, - unknown -> = z.object({ - resource: z.lazy(() => SyncListResponseProfileAwResource$inboundSchema) - .optional(), - stack: z.lazy(() => SyncListResponseProfileAwStack$inboundSchema).optional(), -}); - -export function syncListResponseProfileAwBindingFromJSON( +/** @internal */ +export const SyncListResponsePreparedStackProfileAwBinding$inboundSchema: + z.ZodType = z.object({ + resource: z.lazy(() => + SyncListResponsePreparedStackProfileAwResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncListResponsePreparedStackProfileAwStack$inboundSchema + ).optional(), + }); + +export function syncListResponsePreparedStackProfileAwBindingFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackProfileAwBinding, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseProfileAwBinding$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProfileAwBinding' from JSON`, + (x) => + SyncListResponsePreparedStackProfileAwBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackProfileAwBinding' from JSON`, ); } /** @internal */ -export const SyncListResponseProfileEffect$inboundSchema: z.ZodEnum< - typeof SyncListResponseProfileEffect -> = z.enum(SyncListResponseProfileEffect); +export const SyncListResponsePreparedStackProfileEffect$inboundSchema: + z.ZodEnum = z.enum( + SyncListResponsePreparedStackProfileEffect, + ); /** @internal */ -export const SyncListResponseProfileAwGrant$inboundSchema: z.ZodType< - SyncListResponseProfileAwGrant, - unknown -> = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), -}); +export const SyncListResponsePreparedStackProfileAwGrant$inboundSchema: + z.ZodType = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); -export function syncListResponseProfileAwGrantFromJSON( +export function syncListResponsePreparedStackProfileAwGrantFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackProfileAwGrant, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseProfileAwGrant$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProfileAwGrant' from JSON`, + (x) => + SyncListResponsePreparedStackProfileAwGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackProfileAwGrant' from JSON`, ); } /** @internal */ -export const SyncListResponseProfileAw$inboundSchema: z.ZodType< - SyncListResponseProfileAw, +export const SyncListResponsePreparedStackProfileAw$inboundSchema: z.ZodType< + SyncListResponsePreparedStackProfileAw, unknown > = z.object({ - binding: z.lazy(() => SyncListResponseProfileAwBinding$inboundSchema), + binding: z.lazy(() => + SyncListResponsePreparedStackProfileAwBinding$inboundSchema + ), description: z.nullable(z.string()).optional(), - effect: SyncListResponseProfileEffect$inboundSchema.optional(), - grant: z.lazy(() => SyncListResponseProfileAwGrant$inboundSchema), + effect: SyncListResponsePreparedStackProfileEffect$inboundSchema.optional(), + grant: z.lazy(() => + SyncListResponsePreparedStackProfileAwGrant$inboundSchema + ), label: z.nullable(z.string()).optional(), }); -export function syncListResponseProfileAwFromJSON( +export function syncListResponsePreparedStackProfileAwFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => SyncListResponseProfileAw$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProfileAw' from JSON`, + (x) => + SyncListResponsePreparedStackProfileAw$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePreparedStackProfileAw' from JSON`, ); } /** @internal */ -export const SyncListResponseProfileAzureResource$inboundSchema: z.ZodType< - SyncListResponseProfileAzureResource, - unknown -> = z.object({ - scope: z.string(), -}); +export const SyncListResponsePreparedStackProfileAzureResource$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); -export function syncListResponseProfileAzureResourceFromJSON( +export function syncListResponsePreparedStackProfileAzureResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackProfileAzureResource, + SDKValidationError +> { return safeParse( jsonString, (x) => - SyncListResponseProfileAzureResource$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProfileAzureResource' from JSON`, + SyncListResponsePreparedStackProfileAzureResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackProfileAzureResource' from JSON`, ); } /** @internal */ -export const SyncListResponseProfileAzureStack$inboundSchema: z.ZodType< - SyncListResponseProfileAzureStack, - unknown -> = z.object({ - scope: z.string(), -}); +export const SyncListResponsePreparedStackProfileAzureStack$inboundSchema: + z.ZodType = z.object( + { + scope: z.string(), + }, + ); -export function syncListResponseProfileAzureStackFromJSON( +export function syncListResponsePreparedStackProfileAzureStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackProfileAzureStack, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseProfileAzureStack$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProfileAzureStack' from JSON`, + (x) => + SyncListResponsePreparedStackProfileAzureStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackProfileAzureStack' from JSON`, ); } /** @internal */ -export const SyncListResponseProfileAzureBinding$inboundSchema: z.ZodType< - SyncListResponseProfileAzureBinding, - unknown -> = z.object({ - resource: z.lazy(() => SyncListResponseProfileAzureResource$inboundSchema) - .optional(), - stack: z.lazy(() => SyncListResponseProfileAzureStack$inboundSchema) - .optional(), -}); +export const SyncListResponsePreparedStackProfileAzureBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncListResponsePreparedStackProfileAzureResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncListResponsePreparedStackProfileAzureStack$inboundSchema + ).optional(), + }); -export function syncListResponseProfileAzureBindingFromJSON( +export function syncListResponsePreparedStackProfileAzureBindingFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackProfileAzureBinding, + SDKValidationError +> { return safeParse( jsonString, (x) => - SyncListResponseProfileAzureBinding$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProfileAzureBinding' from JSON`, + SyncListResponsePreparedStackProfileAzureBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackProfileAzureBinding' from JSON`, ); } /** @internal */ -export const SyncListResponseProfileAzureGrant$inboundSchema: z.ZodType< - SyncListResponseProfileAzureGrant, - unknown -> = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), -}); +export const SyncListResponsePreparedStackProfileAzureGrant$inboundSchema: + z.ZodType = z.object( + { + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }, + ); -export function syncListResponseProfileAzureGrantFromJSON( +export function syncListResponsePreparedStackProfileAzureGrantFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackProfileAzureGrant, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseProfileAzureGrant$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProfileAzureGrant' from JSON`, + (x) => + SyncListResponsePreparedStackProfileAzureGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackProfileAzureGrant' from JSON`, ); } /** @internal */ -export const SyncListResponseProfileAzure$inboundSchema: z.ZodType< - SyncListResponseProfileAzure, +export const SyncListResponsePreparedStackProfileAzure$inboundSchema: z.ZodType< + SyncListResponsePreparedStackProfileAzure, unknown > = z.object({ - binding: z.lazy(() => SyncListResponseProfileAzureBinding$inboundSchema), + binding: z.lazy(() => + SyncListResponsePreparedStackProfileAzureBinding$inboundSchema + ), description: z.nullable(z.string()).optional(), - grant: z.lazy(() => SyncListResponseProfileAzureGrant$inboundSchema), + grant: z.lazy(() => + SyncListResponsePreparedStackProfileAzureGrant$inboundSchema + ), label: z.nullable(z.string()).optional(), }); -export function syncListResponseProfileAzureFromJSON( +export function syncListResponsePreparedStackProfileAzureFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackProfileAzure, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseProfileAzure$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProfileAzure' from JSON`, + (x) => + SyncListResponsePreparedStackProfileAzure$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackProfileAzure' from JSON`, ); } /** @internal */ -export const SyncListResponseProfileConditionResource$inboundSchema: z.ZodType< - SyncListResponseProfileConditionResource, - unknown -> = z.object({ - expression: z.string(), - title: z.string(), -}); +export const SyncListResponsePreparedStackProfileConditionResource$inboundSchema: + z.ZodType = z + .object({ + expression: z.string(), + title: z.string(), + }); -export function syncListResponseProfileConditionResourceFromJSON( +export function syncListResponsePreparedStackProfileConditionResourceFromJSON( jsonString: string, ): SafeParseResult< - SyncListResponseProfileConditionResource, + SyncListResponsePreparedStackProfileConditionResource, SDKValidationError > { return safeParse( jsonString, (x) => - SyncListResponseProfileConditionResource$inboundSchema.parse( + SyncListResponsePreparedStackProfileConditionResource$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'SyncListResponseProfileConditionResource' from JSON`, + `Failed to parse 'SyncListResponsePreparedStackProfileConditionResource' from JSON`, ); } /** @internal */ -export const SyncListResponseProfileResourceConditionUnion$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => SyncListResponseProfileConditionResource$inboundSchema), +export const SyncListResponsePreparedStackProfileResourceConditionUnion$inboundSchema: + z.ZodType< + SyncListResponsePreparedStackProfileResourceConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncListResponsePreparedStackProfileConditionResource$inboundSchema + ), z.any(), ]); -export function syncListResponseProfileResourceConditionUnionFromJSON( +export function syncListResponsePreparedStackProfileResourceConditionUnionFromJSON( jsonString: string, ): SafeParseResult< - SyncListResponseProfileResourceConditionUnion, + SyncListResponsePreparedStackProfileResourceConditionUnion, SDKValidationError > { return safeParse( jsonString, (x) => - SyncListResponseProfileResourceConditionUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncListResponseProfileResourceConditionUnion' from JSON`, + SyncListResponsePreparedStackProfileResourceConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePreparedStackProfileResourceConditionUnion' from JSON`, ); } /** @internal */ -export const SyncListResponseProfileGcpResource$inboundSchema: z.ZodType< - SyncListResponseProfileGcpResource, - unknown -> = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => SyncListResponseProfileConditionResource$inboundSchema), - z.any(), - ]), - ).optional(), - scope: z.string(), -}); +export const SyncListResponsePreparedStackProfileGcpResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncListResponsePreparedStackProfileConditionResource$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); -export function syncListResponseProfileGcpResourceFromJSON( +export function syncListResponsePreparedStackProfileGcpResourceFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackProfileGcpResource, + SDKValidationError +> { return safeParse( jsonString, (x) => - SyncListResponseProfileGcpResource$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProfileGcpResource' from JSON`, + SyncListResponsePreparedStackProfileGcpResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackProfileGcpResource' from JSON`, ); } /** @internal */ -export const SyncListResponseProfileConditionStack$inboundSchema: z.ZodType< - SyncListResponseProfileConditionStack, - unknown -> = z.object({ - expression: z.string(), - title: z.string(), -}); +export const SyncListResponsePreparedStackProfileConditionStack$inboundSchema: + z.ZodType = z + .object({ + expression: z.string(), + title: z.string(), + }); -export function syncListResponseProfileConditionStackFromJSON( +export function syncListResponsePreparedStackProfileConditionStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackProfileConditionStack, + SDKValidationError +> { return safeParse( jsonString, (x) => - SyncListResponseProfileConditionStack$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProfileConditionStack' from JSON`, + SyncListResponsePreparedStackProfileConditionStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackProfileConditionStack' from JSON`, ); } /** @internal */ -export const SyncListResponseProfileStackConditionUnion$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => SyncListResponseProfileConditionStack$inboundSchema), - z.any(), - ]); +export const SyncListResponsePreparedStackProfileStackConditionUnion$inboundSchema: + z.ZodType = + z.union([ + z.lazy(() => + SyncListResponsePreparedStackProfileConditionStack$inboundSchema + ), + z.any(), + ]); -export function syncListResponseProfileStackConditionUnionFromJSON( +export function syncListResponsePreparedStackProfileStackConditionUnionFromJSON( jsonString: string, ): SafeParseResult< - SyncListResponseProfileStackConditionUnion, + SyncListResponsePreparedStackProfileStackConditionUnion, SDKValidationError > { return safeParse( jsonString, (x) => - SyncListResponseProfileStackConditionUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncListResponseProfileStackConditionUnion' from JSON`, + SyncListResponsePreparedStackProfileStackConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePreparedStackProfileStackConditionUnion' from JSON`, ); } /** @internal */ -export const SyncListResponseProfileGcpStack$inboundSchema: z.ZodType< - SyncListResponseProfileGcpStack, - unknown -> = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => SyncListResponseProfileConditionStack$inboundSchema), - z.any(), - ]), - ).optional(), - scope: z.string(), -}); +export const SyncListResponsePreparedStackProfileGcpStack$inboundSchema: + z.ZodType = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncListResponsePreparedStackProfileConditionStack$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); -export function syncListResponseProfileGcpStackFromJSON( +export function syncListResponsePreparedStackProfileGcpStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackProfileGcpStack, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseProfileGcpStack$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProfileGcpStack' from JSON`, + (x) => + SyncListResponsePreparedStackProfileGcpStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackProfileGcpStack' from JSON`, ); } /** @internal */ -export const SyncListResponseProfileGcpBinding$inboundSchema: z.ZodType< - SyncListResponseProfileGcpBinding, - unknown -> = z.object({ - resource: z.lazy(() => SyncListResponseProfileGcpResource$inboundSchema) - .optional(), - stack: z.lazy(() => SyncListResponseProfileGcpStack$inboundSchema).optional(), -}); +export const SyncListResponsePreparedStackProfileGcpBinding$inboundSchema: + z.ZodType = z.object( + { + resource: z.lazy(() => + SyncListResponsePreparedStackProfileGcpResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncListResponsePreparedStackProfileGcpStack$inboundSchema + ).optional(), + }, + ); -export function syncListResponseProfileGcpBindingFromJSON( +export function syncListResponsePreparedStackProfileGcpBindingFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackProfileGcpBinding, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseProfileGcpBinding$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProfileGcpBinding' from JSON`, + (x) => + SyncListResponsePreparedStackProfileGcpBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackProfileGcpBinding' from JSON`, ); } /** @internal */ -export const SyncListResponseProfileGcpGrant$inboundSchema: z.ZodType< - SyncListResponseProfileGcpGrant, - unknown -> = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), -}); +export const SyncListResponsePreparedStackProfileGcpGrant$inboundSchema: + z.ZodType = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); -export function syncListResponseProfileGcpGrantFromJSON( +export function syncListResponsePreparedStackProfileGcpGrantFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackProfileGcpGrant, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseProfileGcpGrant$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProfileGcpGrant' from JSON`, + (x) => + SyncListResponsePreparedStackProfileGcpGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackProfileGcpGrant' from JSON`, ); } /** @internal */ -export const SyncListResponseProfileGcp$inboundSchema: z.ZodType< - SyncListResponseProfileGcp, +export const SyncListResponsePreparedStackProfileGcp$inboundSchema: z.ZodType< + SyncListResponsePreparedStackProfileGcp, unknown > = z.object({ - binding: z.lazy(() => SyncListResponseProfileGcpBinding$inboundSchema), + binding: z.lazy(() => + SyncListResponsePreparedStackProfileGcpBinding$inboundSchema + ), description: z.nullable(z.string()).optional(), - grant: z.lazy(() => SyncListResponseProfileGcpGrant$inboundSchema), + grant: z.lazy(() => + SyncListResponsePreparedStackProfileGcpGrant$inboundSchema + ), label: z.nullable(z.string()).optional(), }); -export function syncListResponseProfileGcpFromJSON( +export function syncListResponsePreparedStackProfileGcpFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackProfileGcp, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseProfileGcp$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProfileGcp' from JSON`, + (x) => + SyncListResponsePreparedStackProfileGcp$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackProfileGcp' from JSON`, ); } /** @internal */ -export const SyncListResponseProfilePlatforms$inboundSchema: z.ZodType< - SyncListResponseProfilePlatforms, - unknown -> = z.object({ - aws: z.nullable( - z.array(z.lazy(() => SyncListResponseProfileAw$inboundSchema)), - ).optional(), - azure: z.nullable( - z.array(z.lazy(() => SyncListResponseProfileAzure$inboundSchema)), - ).optional(), - gcp: z.nullable( - z.array(z.lazy(() => SyncListResponseProfileGcp$inboundSchema)), - ).optional(), -}); +export const SyncListResponsePreparedStackProfilePlatforms$inboundSchema: + z.ZodType = z.object({ + aws: z.nullable( + z.array( + z.lazy(() => SyncListResponsePreparedStackProfileAw$inboundSchema), + ), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + SyncListResponsePreparedStackProfileAzure$inboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array( + z.lazy(() => SyncListResponsePreparedStackProfileGcp$inboundSchema), + ), + ).optional(), + }); -export function syncListResponseProfilePlatformsFromJSON( +export function syncListResponsePreparedStackProfilePlatformsFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackProfilePlatforms, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseProfilePlatforms$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProfilePlatforms' from JSON`, + (x) => + SyncListResponsePreparedStackProfilePlatforms$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackProfilePlatforms' from JSON`, ); } /** @internal */ -export const SyncListResponseProfile$inboundSchema: z.ZodType< - SyncListResponseProfile, +export const SyncListResponsePreparedStackProfile$inboundSchema: z.ZodType< + SyncListResponsePreparedStackProfile, unknown > = z.object({ description: z.string(), id: z.string(), - platforms: z.lazy(() => SyncListResponseProfilePlatforms$inboundSchema), + platforms: z.lazy(() => + SyncListResponsePreparedStackProfilePlatforms$inboundSchema + ), }); -export function syncListResponseProfileFromJSON( +export function syncListResponsePreparedStackProfileFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => SyncListResponseProfile$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProfile' from JSON`, + (x) => + SyncListResponsePreparedStackProfile$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePreparedStackProfile' from JSON`, ); } /** @internal */ -export const SyncListResponseProfileUnion$inboundSchema: z.ZodType< - SyncListResponseProfileUnion, +export const SyncListResponsePreparedStackProfileUnion$inboundSchema: z.ZodType< + SyncListResponsePreparedStackProfileUnion, unknown -> = z.union([z.lazy(() => SyncListResponseProfile$inboundSchema), z.string()]); +> = z.union([ + z.lazy(() => SyncListResponsePreparedStackProfile$inboundSchema), + z.string(), +]); -export function syncListResponseProfileUnionFromJSON( +export function syncListResponsePreparedStackProfileUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackProfileUnion, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponseProfileUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProfileUnion' from JSON`, + (x) => + SyncListResponsePreparedStackProfileUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackProfileUnion' from JSON`, ); } /** @internal */ -export const SyncListResponsePermissions$inboundSchema: z.ZodType< - SyncListResponsePermissions, +export const SyncListResponsePreparedStackPermissions$inboundSchema: z.ZodType< + SyncListResponsePreparedStackPermissions, unknown > = z.object({ management: z.union([ - z.lazy(() => SyncListResponseManagement1$inboundSchema), - z.lazy(() => SyncListResponseManagement2$inboundSchema), - SyncListResponseManagementEnum$inboundSchema, + z.lazy(() => SyncListResponsePreparedStackManagement1$inboundSchema), + z.lazy(() => SyncListResponsePreparedStackManagement2$inboundSchema), + SyncListResponsePreparedStackManagementEnum$inboundSchema, ]).optional(), profiles: z.record( z.string(), @@ -7575,7 +12288,7 @@ export const SyncListResponsePermissions$inboundSchema: z.ZodType< z.string(), z.array( z.union([ - z.lazy(() => SyncListResponseProfile$inboundSchema), + z.lazy(() => SyncListResponsePreparedStackProfile$inboundSchema), z.string(), ]), ), @@ -7583,13 +12296,19 @@ export const SyncListResponsePermissions$inboundSchema: z.ZodType< ), }); -export function syncListResponsePermissionsFromJSON( +export function syncListResponsePreparedStackPermissionsFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncListResponsePreparedStackPermissions, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncListResponsePermissions$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponsePermissions' from JSON`, + (x) => + SyncListResponsePreparedStackPermissions$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponsePreparedStackPermissions' from JSON`, ); } @@ -7656,6 +12375,7 @@ export const SyncListResponsePreparedStackResources$inboundSchema: z.ZodType< dependencies: z.array( z.lazy(() => SyncListResponsePreparedStackDependency$inboundSchema), ), + enabledWhen: z.nullable(z.string()).optional(), lifecycle: SyncListResponsePreparedStackLifecycle$inboundSchema, remoteAccess: z.boolean().optional(), }); @@ -7672,9 +12392,10 @@ export function syncListResponsePreparedStackResourcesFromJSON( } /** @internal */ -export const SyncListResponseSupportedPlatform$inboundSchema: z.ZodEnum< - typeof SyncListResponseSupportedPlatform -> = z.enum(SyncListResponseSupportedPlatform); +export const SyncListResponsePreparedStackSupportedPlatform$inboundSchema: + z.ZodEnum = z.enum( + SyncListResponsePreparedStackSupportedPlatform, + ); /** @internal */ export const SyncListResponsePreparedStack$inboundSchema: z.ZodType< @@ -7682,15 +12403,18 @@ export const SyncListResponsePreparedStack$inboundSchema: z.ZodType< unknown > = z.object({ id: z.string(), - inputs: z.array(z.lazy(() => SyncListResponseInput$inboundSchema)).optional(), - permissions: z.lazy(() => SyncListResponsePermissions$inboundSchema) - .optional(), + inputs: z.array( + z.lazy(() => SyncListResponsePreparedStackInput$inboundSchema), + ).optional(), + permissions: z.lazy(() => + SyncListResponsePreparedStackPermissions$inboundSchema + ).optional(), resources: z.record( z.string(), z.lazy(() => SyncListResponsePreparedStackResources$inboundSchema), ), supportedPlatforms: z.nullable( - z.array(SyncListResponseSupportedPlatform$inboundSchema), + z.array(SyncListResponsePreparedStackSupportedPlatform$inboundSchema), ).optional(), }); @@ -7724,13 +12448,75 @@ export function syncListResponsePreparedStackUnionFromJSON( ); } +/** @internal */ +export const SyncListResponseSetupUpdateAuthorization$inboundSchema: z.ZodType< + SyncListResponseSetupUpdateAuthorization, + unknown +> = z.object({ + baselineFrozenDigest: z.string(), + nonce: z.string(), + releaseId: z.string(), + setupFingerprint: z.string(), + setupFingerprintVersion: z.int(), + setupTarget: z.string(), + targetFrozenDigest: z.string(), +}); + +export function syncListResponseSetupUpdateAuthorizationFromJSON( + jsonString: string, +): SafeParseResult< + SyncListResponseSetupUpdateAuthorization, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncListResponseSetupUpdateAuthorization$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponseSetupUpdateAuthorization' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseSetupUpdateAuthorizationUnion$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => SyncListResponseSetupUpdateAuthorization$inboundSchema), + z.any(), + ]); + +export function syncListResponseSetupUpdateAuthorizationUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncListResponseSetupUpdateAuthorizationUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncListResponseSetupUpdateAuthorizationUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponseSetupUpdateAuthorizationUnion' from JSON`, + ); +} + /** @internal */ export const SyncListResponseRuntimeMetadata$inboundSchema: z.ZodType< SyncListResponseRuntimeMetadata, unknown > = z.object({ + initialSetupAuthority: SyncListResponseInitialSetupAuthority$inboundSchema + .optional(), lastSyncedEnvVarsHash: z.nullable(z.string()).optional(), lastSyncedSecretNames: z.array(z.string()).optional(), + pendingPreparedStack: z.nullable( + z.union([ + z.lazy(() => SyncListResponsePendingPreparedStack$inboundSchema), + z.any(), + ]), + ).optional(), + persistedGateAnswers: z.record(z.string(), z.boolean()).optional(), preparedStack: z.nullable( z.union([ z.lazy(() => SyncListResponsePreparedStack$inboundSchema), @@ -7738,6 +12524,12 @@ export const SyncListResponseRuntimeMetadata$inboundSchema: z.ZodType< ]), ).optional(), registryAccessGranted: z.boolean().optional(), + setupUpdateAuthorization: z.nullable( + z.union([ + z.lazy(() => SyncListResponseSetupUpdateAuthorization$inboundSchema), + z.any(), + ]), + ).optional(), }); export function syncListResponseRuntimeMetadataFromJSON( @@ -7785,6 +12577,26 @@ export function syncListResponseErrorFromJSON( ); } +/** @internal */ +export const SyncListResponseUpdateState$inboundSchema: z.ZodType< + SyncListResponseUpdateState, + unknown +> = z.object({ + active: z.nullable(DeploymentUpdateOperationSummary$inboundSchema), + next: z.nullable(DeploymentUpdateOperationSummary$inboundSchema), + latest: z.nullable(DeploymentUpdateOperationSummary$inboundSchema), +}); + +export function syncListResponseUpdateStateFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseUpdateState$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseUpdateState' from JSON`, + ); +} + /** @internal */ export const SyncListResponsePlatformKubernetes$inboundSchema: z.ZodEnum< typeof SyncListResponsePlatformKubernetes @@ -7951,6 +12763,7 @@ export const SyncListResponseDeployment$inboundSchema: z.ZodType< currentReleaseId: z.nullable(z.string()).optional(), desiredReleaseId: z.nullable(z.string()).optional(), pinnedReleaseId: z.nullable(z.string()).optional(), + releaseChannel: z.string(), importSource: z.nullable(SyncListResponseImportSource$inboundSchema) .optional(), setupMethod: z.nullable(SyncListResponseSetupMethod$inboundSchema).optional(), @@ -7970,6 +12783,8 @@ export const SyncListResponseDeployment$inboundSchema: z.ZodType< ).optional(), error: z.nullable(z.lazy(() => SyncListResponseError$inboundSchema)) .optional(), + updateState: z.lazy(() => SyncListResponseUpdateState$inboundSchema) + .optional(), createdAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), updatedAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), managerId: z.string(), diff --git a/client-sdks/platform/typescript/src/models/syncreconcilerequest.ts b/client-sdks/platform/typescript/src/models/syncreconcilerequest.ts index 88ed4ce91..f2f284f02 100644 --- a/client-sdks/platform/typescript/src/models/syncreconcilerequest.ts +++ b/client-sdks/platform/typescript/src/models/syncreconcilerequest.ts @@ -1427,6 +1427,17 @@ export type SyncReconcileRequestCurrentReleaseResources = { * The total dependencies are: resource.get_dependencies() + this list */ dependencies: Array; + /** + * Id of the boolean stack input that decides whether this resource is + * + * @remarks + * 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. + */ + enabledWhen?: string | null | undefined; /** * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ @@ -1757,95 +1768,109 @@ export type SyncReconcileRequestPlatform = ClosedEnum< typeof SyncReconcileRequestPlatform >; -export const SyncReconcileRequestPreparedStackTypeStringList = { +/** + * Actor that owns structural work during the initial setup phase. + */ +export const SyncReconcileRequestInitialSetupAuthority = { + ImportedHandoff: "importedHandoff", + DirectSetup: "directSetup", +} as const; +/** + * Actor that owns structural work during the initial setup phase. + */ +export type SyncReconcileRequestInitialSetupAuthority = ClosedEnum< + typeof SyncReconcileRequestInitialSetupAuthority +>; + +export const SyncReconcileRequestPendingPreparedStackTypeStringList = { StringList: "stringList", } as const; -export type SyncReconcileRequestPreparedStackTypeStringList = ClosedEnum< - typeof SyncReconcileRequestPreparedStackTypeStringList +export type SyncReconcileRequestPendingPreparedStackTypeStringList = ClosedEnum< + typeof SyncReconcileRequestPendingPreparedStackTypeStringList >; -export type SyncReconcileRequestPreparedStackDefaultStringList = { - type: SyncReconcileRequestPreparedStackTypeStringList; +export type SyncReconcileRequestPendingPreparedStackDefaultStringList = { + type: SyncReconcileRequestPendingPreparedStackTypeStringList; /** * String list default. */ value: Array; }; -export const SyncReconcileRequestPreparedStackTypeBoolean = { +export const SyncReconcileRequestPendingPreparedStackTypeBoolean = { Boolean: "boolean", } as const; -export type SyncReconcileRequestPreparedStackTypeBoolean = ClosedEnum< - typeof SyncReconcileRequestPreparedStackTypeBoolean +export type SyncReconcileRequestPendingPreparedStackTypeBoolean = ClosedEnum< + typeof SyncReconcileRequestPendingPreparedStackTypeBoolean >; -export type SyncReconcileRequestPreparedStackDefaultBoolean = { - type: SyncReconcileRequestPreparedStackTypeBoolean; +export type SyncReconcileRequestPendingPreparedStackDefaultBoolean = { + type: SyncReconcileRequestPendingPreparedStackTypeBoolean; /** * Boolean default. */ value: boolean; }; -export const SyncReconcileRequestPreparedStackTypeNumber = { +export const SyncReconcileRequestPendingPreparedStackTypeNumber = { Number: "number", } as const; -export type SyncReconcileRequestPreparedStackTypeNumber = ClosedEnum< - typeof SyncReconcileRequestPreparedStackTypeNumber +export type SyncReconcileRequestPendingPreparedStackTypeNumber = ClosedEnum< + typeof SyncReconcileRequestPendingPreparedStackTypeNumber >; -export type SyncReconcileRequestPreparedStackDefaultNumber = { - type: SyncReconcileRequestPreparedStackTypeNumber; +export type SyncReconcileRequestPendingPreparedStackDefaultNumber = { + type: SyncReconcileRequestPendingPreparedStackTypeNumber; /** * Number default. */ value: string; }; -export const SyncReconcileRequestPreparedStackTypeString = { +export const SyncReconcileRequestPendingPreparedStackTypeString = { String: "string", } as const; -export type SyncReconcileRequestPreparedStackTypeString = ClosedEnum< - typeof SyncReconcileRequestPreparedStackTypeString +export type SyncReconcileRequestPendingPreparedStackTypeString = ClosedEnum< + typeof SyncReconcileRequestPendingPreparedStackTypeString >; -export type SyncReconcileRequestPreparedStackDefaultString = { - type: SyncReconcileRequestPreparedStackTypeString; +export type SyncReconcileRequestPendingPreparedStackDefaultString = { + type: SyncReconcileRequestPendingPreparedStackTypeString; /** * String default. */ value: string; }; -export type SyncReconcileRequestPreparedStackDefaultUnion = - | SyncReconcileRequestPreparedStackDefaultString - | SyncReconcileRequestPreparedStackDefaultNumber - | SyncReconcileRequestPreparedStackDefaultBoolean - | SyncReconcileRequestPreparedStackDefaultStringList +export type SyncReconcileRequestPendingPreparedStackDefaultUnion = + | SyncReconcileRequestPendingPreparedStackDefaultString + | SyncReconcileRequestPendingPreparedStackDefaultNumber + | SyncReconcileRequestPendingPreparedStackDefaultBoolean + | SyncReconcileRequestPendingPreparedStackDefaultStringList | any; /** * Environment variable handling for a stack input mapping. */ -export const SyncReconcileRequestPreparedStackTypeEnvEnum = { +export const SyncReconcileRequestPendingPreparedStackTypeEnvEnum = { Plain: "plain", Secret: "secret", } as const; /** * Environment variable handling for a stack input mapping. */ -export type SyncReconcileRequestPreparedStackTypeEnvEnum = ClosedEnum< - typeof SyncReconcileRequestPreparedStackTypeEnvEnum +export type SyncReconcileRequestPendingPreparedStackTypeEnvEnum = ClosedEnum< + typeof SyncReconcileRequestPendingPreparedStackTypeEnvEnum >; -export type SyncReconcileRequestPreparedStackTypeUnion = - | SyncReconcileRequestPreparedStackTypeEnvEnum +export type SyncReconcileRequestPendingPreparedStackTypeUnion = + | SyncReconcileRequestPendingPreparedStackTypeEnvEnum | any; /** * How a resolved stack input is injected into runtime environment variables. */ -export type SyncReconcileRequestPreparedStackEnv = { +export type SyncReconcileRequestPendingPreparedStackEnv = { /** * Environment variable name. */ @@ -1854,13 +1879,17 @@ export type SyncReconcileRequestPreparedStackEnv = { * Target resource IDs or patterns. None means every env-capable resource. */ targetResources?: Array | null | undefined; - type?: SyncReconcileRequestPreparedStackTypeEnvEnum | any | null | undefined; + type?: + | SyncReconcileRequestPendingPreparedStackTypeEnvEnum + | any + | null + | undefined; }; /** * Primitive stack input kind. */ -export const PreparedStackStateKind = { +export const PendingPreparedStackStateKind = { String: "string", Secret: "secret", Number: "number", @@ -1872,12 +1901,14 @@ export const PreparedStackStateKind = { /** * Primitive stack input kind. */ -export type PreparedStackStateKind = ClosedEnum; +export type PendingPreparedStackStateKind = ClosedEnum< + typeof PendingPreparedStackStateKind +>; /** * Represents the target cloud platform. */ -export const SyncReconcileRequestPreparedStackPlatform = { +export const SyncReconcileRequestPendingPreparedStackPlatform = { Aws: "aws", Gcp: "gcp", Azure: "azure", @@ -1889,28 +1920,28 @@ export const SyncReconcileRequestPreparedStackPlatform = { /** * Represents the target cloud platform. */ -export type SyncReconcileRequestPreparedStackPlatform = ClosedEnum< - typeof SyncReconcileRequestPreparedStackPlatform +export type SyncReconcileRequestPendingPreparedStackPlatform = ClosedEnum< + typeof SyncReconcileRequestPendingPreparedStackPlatform >; /** * Who can provide a stack input value. */ -export const SyncReconcileRequestPreparedStackProvidedBy = { +export const SyncReconcileRequestPendingPreparedStackProvidedBy = { Developer: "developer", Deployer: "deployer", } as const; /** * Who can provide a stack input value. */ -export type SyncReconcileRequestPreparedStackProvidedBy = ClosedEnum< - typeof SyncReconcileRequestPreparedStackProvidedBy +export type SyncReconcileRequestPendingPreparedStackProvidedBy = ClosedEnum< + typeof SyncReconcileRequestPendingPreparedStackProvidedBy >; /** * Portable stack input validation constraints. */ -export type SyncReconcileRequestPreparedStackValidation = { +export type SyncReconcileRequestPendingPreparedStackValidation = { /** * Semantic format hint such as url. */ @@ -1949,19 +1980,19 @@ export type SyncReconcileRequestPreparedStackValidation = { values?: Array | null | undefined; }; -export type SyncReconcileRequestPreparedStackValidationUnion = - | SyncReconcileRequestPreparedStackValidation +export type SyncReconcileRequestPendingPreparedStackValidationUnion = + | SyncReconcileRequestPendingPreparedStackValidation | any; /** * Stack input definition serialized into a release stack. */ -export type SyncReconcileRequestPreparedStackInput = { +export type SyncReconcileRequestPendingPreparedStackInput = { default?: - | SyncReconcileRequestPreparedStackDefaultString - | SyncReconcileRequestPreparedStackDefaultNumber - | SyncReconcileRequestPreparedStackDefaultBoolean - | SyncReconcileRequestPreparedStackDefaultStringList + | SyncReconcileRequestPendingPreparedStackDefaultString + | SyncReconcileRequestPendingPreparedStackDefaultNumber + | SyncReconcileRequestPendingPreparedStackDefaultBoolean + | SyncReconcileRequestPendingPreparedStackDefaultStringList | any | null | undefined; @@ -1972,7 +2003,7 @@ export type SyncReconcileRequestPreparedStackInput = { /** * Runtime env-var mappings for v1 input resolution. */ - env?: Array | undefined; + env?: Array | undefined; /** * Stable input ID used by CLI/API calls. */ @@ -1980,7 +2011,7 @@ export type SyncReconcileRequestPreparedStackInput = { /** * Primitive stack input kind. */ - kind: PreparedStackStateKind; + kind: PendingPreparedStackStateKind; /** * Human-facing field label. */ @@ -1993,35 +2024,35 @@ export type SyncReconcileRequestPreparedStackInput = { * Platforms where this input applies. */ platforms?: - | Array + | Array | null | undefined; /** * Who can provide this value. */ - providedBy: Array; + providedBy: Array; /** * Whether a resolved value is required before deployment can proceed. */ required: boolean; validation?: - | SyncReconcileRequestPreparedStackValidation + | SyncReconcileRequestPendingPreparedStackValidation | any | null | undefined; }; -export const SyncReconcileRequestPreparedStackManagementEnum = { +export const SyncReconcileRequestPendingPreparedStackManagementEnum = { Auto: "auto", } as const; -export type SyncReconcileRequestPreparedStackManagementEnum = ClosedEnum< - typeof SyncReconcileRequestPreparedStackManagementEnum +export type SyncReconcileRequestPendingPreparedStackManagementEnum = ClosedEnum< + typeof SyncReconcileRequestPendingPreparedStackManagementEnum >; /** * AWS-specific binding specification */ -export type PreparedStackOverrideStateAwResource = { +export type PendingPreparedStackOverrideStateAwResource = { /** * Optional condition for additional filtering (rare) */ @@ -2035,7 +2066,7 @@ export type PreparedStackOverrideStateAwResource = { /** * AWS-specific binding specification */ -export type SyncReconcileRequestPreparedStackOverrideAwStack = { +export type SyncReconcileRequestPendingPreparedStackOverrideAwStack = { /** * Optional condition for additional filtering (rare) */ @@ -2049,35 +2080,35 @@ export type SyncReconcileRequestPreparedStackOverrideAwStack = { /** * Generic binding configuration for permissions */ -export type SyncReconcileRequestPreparedStackOverrideAwBinding = { +export type SyncReconcileRequestPendingPreparedStackOverrideAwBinding = { /** * AWS-specific binding specification */ - resource?: PreparedStackOverrideStateAwResource | undefined; + resource?: PendingPreparedStackOverrideStateAwResource | undefined; /** * AWS-specific binding specification */ - stack?: SyncReconcileRequestPreparedStackOverrideAwStack | undefined; + stack?: SyncReconcileRequestPendingPreparedStackOverrideAwStack | undefined; }; /** * IAM effect. Defaults to Allow. */ -export const SyncReconcileRequestPreparedStackOverrideEffect = { +export const SyncReconcileRequestPendingPreparedStackOverrideEffect = { Allow: "Allow", Deny: "Deny", } as const; /** * IAM effect. Defaults to Allow. */ -export type SyncReconcileRequestPreparedStackOverrideEffect = ClosedEnum< - typeof SyncReconcileRequestPreparedStackOverrideEffect +export type SyncReconcileRequestPendingPreparedStackOverrideEffect = ClosedEnum< + typeof SyncReconcileRequestPendingPreparedStackOverrideEffect >; /** * Grant permissions for a specific cloud platform */ -export type SyncReconcileRequestPreparedStackOverrideAwGrant = { +export type SyncReconcileRequestPendingPreparedStackOverrideAwGrant = { /** * AWS IAM actions (only for AWS) */ @@ -2103,11 +2134,11 @@ export type SyncReconcileRequestPreparedStackOverrideAwGrant = { /** * AWS-specific platform permission configuration */ -export type SyncReconcileRequestPreparedStackOverrideAw = { +export type SyncReconcileRequestPendingPreparedStackOverrideAw = { /** * Generic binding configuration for permissions */ - binding: SyncReconcileRequestPreparedStackOverrideAwBinding; + binding: SyncReconcileRequestPendingPreparedStackOverrideAwBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2115,11 +2146,11 @@ export type SyncReconcileRequestPreparedStackOverrideAw = { /** * IAM effect. Defaults to Allow. */ - effect?: SyncReconcileRequestPreparedStackOverrideEffect | undefined; + effect?: SyncReconcileRequestPendingPreparedStackOverrideEffect | undefined; /** * Grant permissions for a specific cloud platform */ - grant: SyncReconcileRequestPreparedStackOverrideAwGrant; + grant: SyncReconcileRequestPendingPreparedStackOverrideAwGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2129,7 +2160,7 @@ export type SyncReconcileRequestPreparedStackOverrideAw = { /** * Azure-specific binding specification */ -export type PreparedStackOverrideStateAzureResource = { +export type PendingPreparedStackOverrideStateAzureResource = { /** * Scope (subscription/resource group/resource level) */ @@ -2139,7 +2170,7 @@ export type PreparedStackOverrideStateAzureResource = { /** * Azure-specific binding specification */ -export type SyncReconcileRequestPreparedStackOverrideAzureStack = { +export type SyncReconcileRequestPendingPreparedStackOverrideAzureStack = { /** * Scope (subscription/resource group/resource level) */ @@ -2149,21 +2180,23 @@ export type SyncReconcileRequestPreparedStackOverrideAzureStack = { /** * Generic binding configuration for permissions */ -export type SyncReconcileRequestPreparedStackOverrideAzureBinding = { +export type SyncReconcileRequestPendingPreparedStackOverrideAzureBinding = { /** * Azure-specific binding specification */ - resource?: PreparedStackOverrideStateAzureResource | undefined; + resource?: PendingPreparedStackOverrideStateAzureResource | undefined; /** * Azure-specific binding specification */ - stack?: SyncReconcileRequestPreparedStackOverrideAzureStack | undefined; + stack?: + | SyncReconcileRequestPendingPreparedStackOverrideAzureStack + | undefined; }; /** * Grant permissions for a specific cloud platform */ -export type SyncReconcileRequestPreparedStackOverrideAzureGrant = { +export type SyncReconcileRequestPendingPreparedStackOverrideAzureGrant = { /** * AWS IAM actions (only for AWS) */ @@ -2189,11 +2222,11 @@ export type SyncReconcileRequestPreparedStackOverrideAzureGrant = { /** * Azure-specific platform permission configuration */ -export type SyncReconcileRequestPreparedStackOverrideAzure = { +export type SyncReconcileRequestPendingPreparedStackOverrideAzure = { /** * Generic binding configuration for permissions */ - binding: SyncReconcileRequestPreparedStackOverrideAzureBinding; + binding: SyncReconcileRequestPendingPreparedStackOverrideAzureBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2201,7 +2234,7 @@ export type SyncReconcileRequestPreparedStackOverrideAzure = { /** * Grant permissions for a specific cloud platform */ - grant: SyncReconcileRequestPreparedStackOverrideAzureGrant; + grant: SyncReconcileRequestPendingPreparedStackOverrideAzureGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2211,21 +2244,21 @@ export type SyncReconcileRequestPreparedStackOverrideAzure = { /** * GCP IAM condition */ -export type PreparedStackOverrideConditionStateResource = { +export type PendingPreparedStackOverrideConditionStateResource = { expression: string; title: string; }; -export type PreparedStackOverrideStateResourceConditionUnion = - | PreparedStackOverrideConditionStateResource +export type PendingPreparedStackOverrideStateResourceConditionUnion = + | PendingPreparedStackOverrideConditionStateResource | any; /** * GCP-specific binding specification */ -export type PreparedStackOverrideStateGcpResource = { +export type PendingPreparedStackOverrideStateGcpResource = { condition?: - | PreparedStackOverrideConditionStateResource + | PendingPreparedStackOverrideConditionStateResource | any | null | undefined; @@ -2238,20 +2271,24 @@ export type PreparedStackOverrideStateGcpResource = { /** * GCP IAM condition */ -export type PreparedStackOverrideConditionStateStack = { +export type PendingPreparedStackOverrideConditionStateStack = { expression: string; title: string; }; -export type PreparedStackOverrideStateStackConditionUnion = - | PreparedStackOverrideConditionStateStack +export type PendingPreparedStackOverrideStateStackConditionUnion = + | PendingPreparedStackOverrideConditionStateStack | any; /** * GCP-specific binding specification */ -export type SyncReconcileRequestPreparedStackOverrideGcpStack = { - condition?: PreparedStackOverrideConditionStateStack | any | null | undefined; +export type SyncReconcileRequestPendingPreparedStackOverrideGcpStack = { + condition?: + | PendingPreparedStackOverrideConditionStateStack + | any + | null + | undefined; /** * Scope (project/resource level) */ @@ -2261,21 +2298,21 @@ export type SyncReconcileRequestPreparedStackOverrideGcpStack = { /** * Generic binding configuration for permissions */ -export type SyncReconcileRequestPreparedStackOverrideGcpBinding = { +export type SyncReconcileRequestPendingPreparedStackOverrideGcpBinding = { /** * GCP-specific binding specification */ - resource?: PreparedStackOverrideStateGcpResource | undefined; + resource?: PendingPreparedStackOverrideStateGcpResource | undefined; /** * GCP-specific binding specification */ - stack?: SyncReconcileRequestPreparedStackOverrideGcpStack | undefined; + stack?: SyncReconcileRequestPendingPreparedStackOverrideGcpStack | undefined; }; /** * Grant permissions for a specific cloud platform */ -export type SyncReconcileRequestPreparedStackOverrideGcpGrant = { +export type SyncReconcileRequestPendingPreparedStackOverrideGcpGrant = { /** * AWS IAM actions (only for AWS) */ @@ -2301,11 +2338,11 @@ export type SyncReconcileRequestPreparedStackOverrideGcpGrant = { /** * GCP-specific platform permission configuration */ -export type SyncReconcileRequestPreparedStackOverrideGcp = { +export type SyncReconcileRequestPendingPreparedStackOverrideGcp = { /** * Generic binding configuration for permissions */ - binding: SyncReconcileRequestPreparedStackOverrideGcpBinding; + binding: SyncReconcileRequestPendingPreparedStackOverrideGcpBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2313,7 +2350,7 @@ export type SyncReconcileRequestPreparedStackOverrideGcp = { /** * Grant permissions for a specific cloud platform */ - grant: SyncReconcileRequestPreparedStackOverrideGcpGrant; + grant: SyncReconcileRequestPendingPreparedStackOverrideGcpGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2323,28 +2360,34 @@ export type SyncReconcileRequestPreparedStackOverrideGcp = { /** * Platform-specific permission configurations */ -export type SyncReconcileRequestPreparedStackOverridePlatforms = { +export type SyncReconcileRequestPendingPreparedStackOverridePlatforms = { /** * AWS permission configurations */ - aws?: Array | null | undefined; + aws?: + | Array + | null + | undefined; /** * Azure permission configurations */ azure?: - | Array + | Array | null | undefined; /** * GCP permission configurations */ - gcp?: Array | null | undefined; + gcp?: + | Array + | null + | undefined; }; /** * A permission set that can be applied across different cloud platforms */ -export type SyncReconcileRequestPreparedStackOverride = { +export type SyncReconcileRequestPendingPreparedStackOverride = { /** * Human-readable description of what this permission set allows */ @@ -2356,17 +2399,17 @@ export type SyncReconcileRequestPreparedStackOverride = { /** * Platform-specific permission configurations */ - platforms: SyncReconcileRequestPreparedStackOverridePlatforms; + platforms: SyncReconcileRequestPendingPreparedStackOverridePlatforms; }; /** * Reference to a permission set - either by name or inline definition */ -export type SyncReconcileRequestPreparedStackOverrideUnion = - | SyncReconcileRequestPreparedStackOverride +export type SyncReconcileRequestPendingPreparedStackOverrideUnion = + | SyncReconcileRequestPendingPreparedStackOverride | string; -export type SyncReconcileRequestPreparedStackManagement2 = { +export type SyncReconcileRequestPendingPreparedStackManagement2 = { /** * Permission profile that maps resources to permission sets * @@ -2374,14 +2417,16 @@ export type SyncReconcileRequestPreparedStackManagement2 = { * Key can be "*" for all resources or resource name for specific resource */ override: { - [k: string]: Array; + [k: string]: Array< + SyncReconcileRequestPendingPreparedStackOverride | string + >; }; }; /** * AWS-specific binding specification */ -export type PreparedStackExtendStateAwResource = { +export type PendingPreparedStackExtendStateAwResource = { /** * Optional condition for additional filtering (rare) */ @@ -2395,7 +2440,7 @@ export type PreparedStackExtendStateAwResource = { /** * AWS-specific binding specification */ -export type SyncReconcileRequestPreparedStackExtendAwStack = { +export type SyncReconcileRequestPendingPreparedStackExtendAwStack = { /** * Optional condition for additional filtering (rare) */ @@ -2409,35 +2454,35 @@ export type SyncReconcileRequestPreparedStackExtendAwStack = { /** * Generic binding configuration for permissions */ -export type SyncReconcileRequestPreparedStackExtendAwBinding = { +export type SyncReconcileRequestPendingPreparedStackExtendAwBinding = { /** * AWS-specific binding specification */ - resource?: PreparedStackExtendStateAwResource | undefined; + resource?: PendingPreparedStackExtendStateAwResource | undefined; /** * AWS-specific binding specification */ - stack?: SyncReconcileRequestPreparedStackExtendAwStack | undefined; + stack?: SyncReconcileRequestPendingPreparedStackExtendAwStack | undefined; }; /** * IAM effect. Defaults to Allow. */ -export const SyncReconcileRequestPreparedStackExtendEffect = { +export const SyncReconcileRequestPendingPreparedStackExtendEffect = { Allow: "Allow", Deny: "Deny", } as const; /** * IAM effect. Defaults to Allow. */ -export type SyncReconcileRequestPreparedStackExtendEffect = ClosedEnum< - typeof SyncReconcileRequestPreparedStackExtendEffect +export type SyncReconcileRequestPendingPreparedStackExtendEffect = ClosedEnum< + typeof SyncReconcileRequestPendingPreparedStackExtendEffect >; /** * Grant permissions for a specific cloud platform */ -export type SyncReconcileRequestPreparedStackExtendAwGrant = { +export type SyncReconcileRequestPendingPreparedStackExtendAwGrant = { /** * AWS IAM actions (only for AWS) */ @@ -2463,11 +2508,11 @@ export type SyncReconcileRequestPreparedStackExtendAwGrant = { /** * AWS-specific platform permission configuration */ -export type SyncReconcileRequestPreparedStackExtendAw = { +export type SyncReconcileRequestPendingPreparedStackExtendAw = { /** * Generic binding configuration for permissions */ - binding: SyncReconcileRequestPreparedStackExtendAwBinding; + binding: SyncReconcileRequestPendingPreparedStackExtendAwBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2475,11 +2520,11 @@ export type SyncReconcileRequestPreparedStackExtendAw = { /** * IAM effect. Defaults to Allow. */ - effect?: SyncReconcileRequestPreparedStackExtendEffect | undefined; + effect?: SyncReconcileRequestPendingPreparedStackExtendEffect | undefined; /** * Grant permissions for a specific cloud platform */ - grant: SyncReconcileRequestPreparedStackExtendAwGrant; + grant: SyncReconcileRequestPendingPreparedStackExtendAwGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2489,7 +2534,7 @@ export type SyncReconcileRequestPreparedStackExtendAw = { /** * Azure-specific binding specification */ -export type PreparedStackExtendStateAzureResource = { +export type PendingPreparedStackExtendStateAzureResource = { /** * Scope (subscription/resource group/resource level) */ @@ -2499,7 +2544,7 @@ export type PreparedStackExtendStateAzureResource = { /** * Azure-specific binding specification */ -export type SyncReconcileRequestPreparedStackExtendAzureStack = { +export type SyncReconcileRequestPendingPreparedStackExtendAzureStack = { /** * Scope (subscription/resource group/resource level) */ @@ -2509,21 +2554,21 @@ export type SyncReconcileRequestPreparedStackExtendAzureStack = { /** * Generic binding configuration for permissions */ -export type SyncReconcileRequestPreparedStackExtendAzureBinding = { +export type SyncReconcileRequestPendingPreparedStackExtendAzureBinding = { /** * Azure-specific binding specification */ - resource?: PreparedStackExtendStateAzureResource | undefined; + resource?: PendingPreparedStackExtendStateAzureResource | undefined; /** * Azure-specific binding specification */ - stack?: SyncReconcileRequestPreparedStackExtendAzureStack | undefined; + stack?: SyncReconcileRequestPendingPreparedStackExtendAzureStack | undefined; }; /** * Grant permissions for a specific cloud platform */ -export type SyncReconcileRequestPreparedStackExtendAzureGrant = { +export type SyncReconcileRequestPendingPreparedStackExtendAzureGrant = { /** * AWS IAM actions (only for AWS) */ @@ -2549,11 +2594,11 @@ export type SyncReconcileRequestPreparedStackExtendAzureGrant = { /** * Azure-specific platform permission configuration */ -export type SyncReconcileRequestPreparedStackExtendAzure = { +export type SyncReconcileRequestPendingPreparedStackExtendAzure = { /** * Generic binding configuration for permissions */ - binding: SyncReconcileRequestPreparedStackExtendAzureBinding; + binding: SyncReconcileRequestPendingPreparedStackExtendAzureBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2561,7 +2606,7 @@ export type SyncReconcileRequestPreparedStackExtendAzure = { /** * Grant permissions for a specific cloud platform */ - grant: SyncReconcileRequestPreparedStackExtendAzureGrant; + grant: SyncReconcileRequestPendingPreparedStackExtendAzureGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2571,21 +2616,21 @@ export type SyncReconcileRequestPreparedStackExtendAzure = { /** * GCP IAM condition */ -export type PreparedStackExtendConditionStateResource = { +export type PendingPreparedStackExtendConditionStateResource = { expression: string; title: string; }; -export type PreparedStackExtendStateResourceConditionUnion = - | PreparedStackExtendConditionStateResource +export type PendingPreparedStackExtendStateResourceConditionUnion = + | PendingPreparedStackExtendConditionStateResource | any; /** * GCP-specific binding specification */ -export type PreparedStackExtendStateGcpResource = { +export type PendingPreparedStackExtendStateGcpResource = { condition?: - | PreparedStackExtendConditionStateResource + | PendingPreparedStackExtendConditionStateResource | any | null | undefined; @@ -2598,20 +2643,24 @@ export type PreparedStackExtendStateGcpResource = { /** * GCP IAM condition */ -export type PreparedStackExtendConditionStateStack = { +export type PendingPreparedStackExtendConditionStateStack = { expression: string; title: string; }; -export type PreparedStackExtendStateStackConditionUnion = - | PreparedStackExtendConditionStateStack +export type PendingPreparedStackExtendStateStackConditionUnion = + | PendingPreparedStackExtendConditionStateStack | any; /** * GCP-specific binding specification */ -export type SyncReconcileRequestPreparedStackExtendGcpStack = { - condition?: PreparedStackExtendConditionStateStack | any | null | undefined; +export type SyncReconcileRequestPendingPreparedStackExtendGcpStack = { + condition?: + | PendingPreparedStackExtendConditionStateStack + | any + | null + | undefined; /** * Scope (project/resource level) */ @@ -2621,21 +2670,21 @@ export type SyncReconcileRequestPreparedStackExtendGcpStack = { /** * Generic binding configuration for permissions */ -export type SyncReconcileRequestPreparedStackExtendGcpBinding = { +export type SyncReconcileRequestPendingPreparedStackExtendGcpBinding = { /** * GCP-specific binding specification */ - resource?: PreparedStackExtendStateGcpResource | undefined; + resource?: PendingPreparedStackExtendStateGcpResource | undefined; /** * GCP-specific binding specification */ - stack?: SyncReconcileRequestPreparedStackExtendGcpStack | undefined; + stack?: SyncReconcileRequestPendingPreparedStackExtendGcpStack | undefined; }; /** * Grant permissions for a specific cloud platform */ -export type SyncReconcileRequestPreparedStackExtendGcpGrant = { +export type SyncReconcileRequestPendingPreparedStackExtendGcpGrant = { /** * AWS IAM actions (only for AWS) */ @@ -2661,11 +2710,11 @@ export type SyncReconcileRequestPreparedStackExtendGcpGrant = { /** * GCP-specific platform permission configuration */ -export type SyncReconcileRequestPreparedStackExtendGcp = { +export type SyncReconcileRequestPendingPreparedStackExtendGcp = { /** * Generic binding configuration for permissions */ - binding: SyncReconcileRequestPreparedStackExtendGcpBinding; + binding: SyncReconcileRequestPendingPreparedStackExtendGcpBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2673,7 +2722,7 @@ export type SyncReconcileRequestPreparedStackExtendGcp = { /** * Grant permissions for a specific cloud platform */ - grant: SyncReconcileRequestPreparedStackExtendGcpGrant; + grant: SyncReconcileRequestPendingPreparedStackExtendGcpGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2683,28 +2732,34 @@ export type SyncReconcileRequestPreparedStackExtendGcp = { /** * Platform-specific permission configurations */ -export type SyncReconcileRequestPreparedStackExtendPlatforms = { +export type SyncReconcileRequestPendingPreparedStackExtendPlatforms = { /** * AWS permission configurations */ - aws?: Array | null | undefined; + aws?: + | Array + | null + | undefined; /** * Azure permission configurations */ azure?: - | Array + | Array | null | undefined; /** * GCP permission configurations */ - gcp?: Array | null | undefined; + gcp?: + | Array + | null + | undefined; }; /** * A permission set that can be applied across different cloud platforms */ -export type SyncReconcileRequestPreparedStackExtend = { +export type SyncReconcileRequestPendingPreparedStackExtend = { /** * Human-readable description of what this permission set allows */ @@ -2716,17 +2771,17 @@ export type SyncReconcileRequestPreparedStackExtend = { /** * Platform-specific permission configurations */ - platforms: SyncReconcileRequestPreparedStackExtendPlatforms; + platforms: SyncReconcileRequestPendingPreparedStackExtendPlatforms; }; /** * Reference to a permission set - either by name or inline definition */ -export type SyncReconcileRequestPreparedStackExtendUnion = - | SyncReconcileRequestPreparedStackExtend +export type SyncReconcileRequestPendingPreparedStackExtendUnion = + | SyncReconcileRequestPendingPreparedStackExtend | string; -export type SyncReconcileRequestPreparedStackManagement1 = { +export type SyncReconcileRequestPendingPreparedStackManagement1 = { /** * Permission profile that maps resources to permission sets * @@ -2734,22 +2789,22 @@ export type SyncReconcileRequestPreparedStackManagement1 = { * Key can be "*" for all resources or resource name for specific resource */ extend: { - [k: string]: Array; + [k: string]: Array; }; }; /** * Management permissions configuration for stack management access */ -export type SyncReconcileRequestPreparedStackManagementUnion = - | SyncReconcileRequestPreparedStackManagement1 - | SyncReconcileRequestPreparedStackManagement2 - | SyncReconcileRequestPreparedStackManagementEnum; +export type SyncReconcileRequestPendingPreparedStackManagementUnion = + | SyncReconcileRequestPendingPreparedStackManagement1 + | SyncReconcileRequestPendingPreparedStackManagement2 + | SyncReconcileRequestPendingPreparedStackManagementEnum; /** * AWS-specific binding specification */ -export type PreparedStackProfileStateAwResource = { +export type PendingPreparedStackProfileStateAwResource = { /** * Optional condition for additional filtering (rare) */ @@ -2763,7 +2818,7 @@ export type PreparedStackProfileStateAwResource = { /** * AWS-specific binding specification */ -export type SyncReconcileRequestPreparedStackProfileAwStack = { +export type SyncReconcileRequestPendingPreparedStackProfileAwStack = { /** * Optional condition for additional filtering (rare) */ @@ -2777,35 +2832,35 @@ export type SyncReconcileRequestPreparedStackProfileAwStack = { /** * Generic binding configuration for permissions */ -export type SyncReconcileRequestPreparedStackProfileAwBinding = { +export type SyncReconcileRequestPendingPreparedStackProfileAwBinding = { /** * AWS-specific binding specification */ - resource?: PreparedStackProfileStateAwResource | undefined; + resource?: PendingPreparedStackProfileStateAwResource | undefined; /** * AWS-specific binding specification */ - stack?: SyncReconcileRequestPreparedStackProfileAwStack | undefined; + stack?: SyncReconcileRequestPendingPreparedStackProfileAwStack | undefined; }; /** * IAM effect. Defaults to Allow. */ -export const SyncReconcileRequestPreparedStackProfileEffect = { +export const SyncReconcileRequestPendingPreparedStackProfileEffect = { Allow: "Allow", Deny: "Deny", } as const; /** * IAM effect. Defaults to Allow. */ -export type SyncReconcileRequestPreparedStackProfileEffect = ClosedEnum< - typeof SyncReconcileRequestPreparedStackProfileEffect +export type SyncReconcileRequestPendingPreparedStackProfileEffect = ClosedEnum< + typeof SyncReconcileRequestPendingPreparedStackProfileEffect >; /** * Grant permissions for a specific cloud platform */ -export type SyncReconcileRequestPreparedStackProfileAwGrant = { +export type SyncReconcileRequestPendingPreparedStackProfileAwGrant = { /** * AWS IAM actions (only for AWS) */ @@ -2831,11 +2886,11 @@ export type SyncReconcileRequestPreparedStackProfileAwGrant = { /** * AWS-specific platform permission configuration */ -export type SyncReconcileRequestPreparedStackProfileAw = { +export type SyncReconcileRequestPendingPreparedStackProfileAw = { /** * Generic binding configuration for permissions */ - binding: SyncReconcileRequestPreparedStackProfileAwBinding; + binding: SyncReconcileRequestPendingPreparedStackProfileAwBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2843,11 +2898,11 @@ export type SyncReconcileRequestPreparedStackProfileAw = { /** * IAM effect. Defaults to Allow. */ - effect?: SyncReconcileRequestPreparedStackProfileEffect | undefined; + effect?: SyncReconcileRequestPendingPreparedStackProfileEffect | undefined; /** * Grant permissions for a specific cloud platform */ - grant: SyncReconcileRequestPreparedStackProfileAwGrant; + grant: SyncReconcileRequestPendingPreparedStackProfileAwGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2857,7 +2912,7 @@ export type SyncReconcileRequestPreparedStackProfileAw = { /** * Azure-specific binding specification */ -export type PreparedStackProfileStateAzureResource = { +export type PendingPreparedStackProfileStateAzureResource = { /** * Scope (subscription/resource group/resource level) */ @@ -2867,7 +2922,7 @@ export type PreparedStackProfileStateAzureResource = { /** * Azure-specific binding specification */ -export type SyncReconcileRequestPreparedStackProfileAzureStack = { +export type SyncReconcileRequestPendingPreparedStackProfileAzureStack = { /** * Scope (subscription/resource group/resource level) */ @@ -2877,21 +2932,21 @@ export type SyncReconcileRequestPreparedStackProfileAzureStack = { /** * Generic binding configuration for permissions */ -export type SyncReconcileRequestPreparedStackProfileAzureBinding = { +export type SyncReconcileRequestPendingPreparedStackProfileAzureBinding = { /** * Azure-specific binding specification */ - resource?: PreparedStackProfileStateAzureResource | undefined; + resource?: PendingPreparedStackProfileStateAzureResource | undefined; /** * Azure-specific binding specification */ - stack?: SyncReconcileRequestPreparedStackProfileAzureStack | undefined; + stack?: SyncReconcileRequestPendingPreparedStackProfileAzureStack | undefined; }; /** * Grant permissions for a specific cloud platform */ -export type SyncReconcileRequestPreparedStackProfileAzureGrant = { +export type SyncReconcileRequestPendingPreparedStackProfileAzureGrant = { /** * AWS IAM actions (only for AWS) */ @@ -2917,11 +2972,11 @@ export type SyncReconcileRequestPreparedStackProfileAzureGrant = { /** * Azure-specific platform permission configuration */ -export type SyncReconcileRequestPreparedStackProfileAzure = { +export type SyncReconcileRequestPendingPreparedStackProfileAzure = { /** * Generic binding configuration for permissions */ - binding: SyncReconcileRequestPreparedStackProfileAzureBinding; + binding: SyncReconcileRequestPendingPreparedStackProfileAzureBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2929,7 +2984,7 @@ export type SyncReconcileRequestPreparedStackProfileAzure = { /** * Grant permissions for a specific cloud platform */ - grant: SyncReconcileRequestPreparedStackProfileAzureGrant; + grant: SyncReconcileRequestPendingPreparedStackProfileAzureGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2939,21 +2994,21 @@ export type SyncReconcileRequestPreparedStackProfileAzure = { /** * GCP IAM condition */ -export type PreparedStackProfileConditionStateResource = { +export type PendingPreparedStackProfileConditionStateResource = { expression: string; title: string; }; -export type PreparedStackProfileStateResourceConditionUnion = - | PreparedStackProfileConditionStateResource +export type PendingPreparedStackProfileStateResourceConditionUnion = + | PendingPreparedStackProfileConditionStateResource | any; /** * GCP-specific binding specification */ -export type PreparedStackProfileStateGcpResource = { +export type PendingPreparedStackProfileStateGcpResource = { condition?: - | PreparedStackProfileConditionStateResource + | PendingPreparedStackProfileConditionStateResource | any | null | undefined; @@ -2966,20 +3021,24 @@ export type PreparedStackProfileStateGcpResource = { /** * GCP IAM condition */ -export type PreparedStackProfileConditionStateStack = { +export type PendingPreparedStackProfileConditionStateStack = { expression: string; title: string; }; -export type PreparedStackProfileStateStackConditionUnion = - | PreparedStackProfileConditionStateStack +export type PendingPreparedStackProfileStateStackConditionUnion = + | PendingPreparedStackProfileConditionStateStack | any; /** * GCP-specific binding specification */ -export type SyncReconcileRequestPreparedStackProfileGcpStack = { - condition?: PreparedStackProfileConditionStateStack | any | null | undefined; +export type SyncReconcileRequestPendingPreparedStackProfileGcpStack = { + condition?: + | PendingPreparedStackProfileConditionStateStack + | any + | null + | undefined; /** * Scope (project/resource level) */ @@ -2989,21 +3048,21 @@ export type SyncReconcileRequestPreparedStackProfileGcpStack = { /** * Generic binding configuration for permissions */ -export type SyncReconcileRequestPreparedStackProfileGcpBinding = { +export type SyncReconcileRequestPendingPreparedStackProfileGcpBinding = { /** * GCP-specific binding specification */ - resource?: PreparedStackProfileStateGcpResource | undefined; + resource?: PendingPreparedStackProfileStateGcpResource | undefined; /** * GCP-specific binding specification */ - stack?: SyncReconcileRequestPreparedStackProfileGcpStack | undefined; + stack?: SyncReconcileRequestPendingPreparedStackProfileGcpStack | undefined; }; /** * Grant permissions for a specific cloud platform */ -export type SyncReconcileRequestPreparedStackProfileGcpGrant = { +export type SyncReconcileRequestPendingPreparedStackProfileGcpGrant = { /** * AWS IAM actions (only for AWS) */ @@ -3029,11 +3088,11 @@ export type SyncReconcileRequestPreparedStackProfileGcpGrant = { /** * GCP-specific platform permission configuration */ -export type SyncReconcileRequestPreparedStackProfileGcp = { +export type SyncReconcileRequestPendingPreparedStackProfileGcp = { /** * Generic binding configuration for permissions */ - binding: SyncReconcileRequestPreparedStackProfileGcpBinding; + binding: SyncReconcileRequestPendingPreparedStackProfileGcpBinding; /** * Short admin-facing description of why this entry exists. */ @@ -3041,7 +3100,7 @@ export type SyncReconcileRequestPreparedStackProfileGcp = { /** * Grant permissions for a specific cloud platform */ - grant: SyncReconcileRequestPreparedStackProfileGcpGrant; + grant: SyncReconcileRequestPendingPreparedStackProfileGcpGrant; /** * Stable admin-facing label for this permission entry. */ @@ -3051,28 +3110,34 @@ export type SyncReconcileRequestPreparedStackProfileGcp = { /** * Platform-specific permission configurations */ -export type SyncReconcileRequestPreparedStackProfilePlatforms = { +export type SyncReconcileRequestPendingPreparedStackProfilePlatforms = { /** * AWS permission configurations */ - aws?: Array | null | undefined; + aws?: + | Array + | null + | undefined; /** * Azure permission configurations */ azure?: - | Array + | Array | null | undefined; /** * GCP permission configurations */ - gcp?: Array | null | undefined; + gcp?: + | Array + | null + | undefined; }; /** * A permission set that can be applied across different cloud platforms */ -export type SyncReconcileRequestPreparedStackProfile = { +export type SyncReconcileRequestPendingPreparedStackProfile = { /** * Human-readable description of what this permission set allows */ @@ -3084,27 +3149,27 @@ export type SyncReconcileRequestPreparedStackProfile = { /** * Platform-specific permission configurations */ - platforms: SyncReconcileRequestPreparedStackProfilePlatforms; + platforms: SyncReconcileRequestPendingPreparedStackProfilePlatforms; }; /** * Reference to a permission set - either by name or inline definition */ -export type SyncReconcileRequestPreparedStackProfileUnion = - | SyncReconcileRequestPreparedStackProfile +export type SyncReconcileRequestPendingPreparedStackProfileUnion = + | SyncReconcileRequestPendingPreparedStackProfile | string; /** * Combined permissions configuration that contains both profiles and management */ -export type SyncReconcileRequestPreparedStackPermissions = { +export type SyncReconcileRequestPendingPreparedStackPermissions = { /** * Management permissions configuration for stack management access */ management?: - | SyncReconcileRequestPreparedStackManagement1 - | SyncReconcileRequestPreparedStackManagement2 - | SyncReconcileRequestPreparedStackManagementEnum + | SyncReconcileRequestPendingPreparedStackManagement1 + | SyncReconcileRequestPendingPreparedStackManagement2 + | SyncReconcileRequestPendingPreparedStackManagementEnum | undefined; /** * Permission profiles that define access control for compute services @@ -3114,7 +3179,9 @@ export type SyncReconcileRequestPreparedStackPermissions = { */ profiles: { [k: string]: { - [k: string]: Array; + [k: string]: Array< + SyncReconcileRequestPendingPreparedStackProfile | string + >; }; }; }; @@ -3122,7 +3189,7 @@ export type SyncReconcileRequestPreparedStackPermissions = { /** * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. */ -export type SyncReconcileRequestPreparedStackConfig = { +export type SyncReconcileRequestPendingPreparedStackConfig = { /** * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. */ @@ -3137,7 +3204,7 @@ export type SyncReconcileRequestPreparedStackConfig = { /** * Reference to a resource by its stable id and resource type. */ -export type SyncReconcileRequestPreparedStackDependency = { +export type SyncReconcileRequestPendingPreparedStackDependency = { id: string; /** * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. @@ -3148,33 +3215,44 @@ export type SyncReconcileRequestPreparedStackDependency = { /** * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ -export const PreparedStackStateLifecycle = { +export const PendingPreparedStackStateLifecycle = { Frozen: "frozen", Live: "live", } as const; /** * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ -export type PreparedStackStateLifecycle = ClosedEnum< - typeof PreparedStackStateLifecycle +export type PendingPreparedStackStateLifecycle = ClosedEnum< + typeof PendingPreparedStackStateLifecycle >; -export type SyncReconcileRequestPreparedStackResources = { +export type SyncReconcileRequestPendingPreparedStackResources = { /** * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. */ - config: SyncReconcileRequestPreparedStackConfig; + config: SyncReconcileRequestPendingPreparedStackConfig; /** * Additional dependencies for this resource beyond those defined in the resource itself. * * @remarks * The total dependencies are: resource.get_dependencies() + this list */ - dependencies: Array; + dependencies: Array; + /** + * Id of the boolean stack input that decides whether this resource is + * + * @remarks + * 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. + */ + enabledWhen?: string | null | undefined; /** * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ - lifecycle: PreparedStackStateLifecycle; + lifecycle: PendingPreparedStackStateLifecycle; /** * Enable remote bindings for this resource (BYOB use case). * @@ -3188,7 +3266,7 @@ export type SyncReconcileRequestPreparedStackResources = { /** * Represents the target cloud platform. */ -export const SyncReconcileRequestPreparedStackSupportedPlatform = { +export const SyncReconcileRequestPendingPreparedStackSupportedPlatform = { Aws: "aws", Gcp: "gcp", Azure: "azure", @@ -3200,14 +3278,13 @@ export const SyncReconcileRequestPreparedStackSupportedPlatform = { /** * Represents the target cloud platform. */ -export type SyncReconcileRequestPreparedStackSupportedPlatform = ClosedEnum< - typeof SyncReconcileRequestPreparedStackSupportedPlatform ->; +export type SyncReconcileRequestPendingPreparedStackSupportedPlatform = + ClosedEnum; /** * A bag of resources, unaware of any cloud. */ -export type SyncReconcileRequestPreparedStack = { +export type SyncReconcileRequestPendingPreparedStack = { /** * Unique identifier for the stack */ @@ -3215,105 +3292,149 @@ export type SyncReconcileRequestPreparedStack = { /** * Input definitions required before setup or deployment can proceed. */ - inputs?: Array | undefined; + inputs?: Array | undefined; /** * Combined permissions configuration that contains both profiles and management */ - permissions?: SyncReconcileRequestPreparedStackPermissions | undefined; + permissions?: SyncReconcileRequestPendingPreparedStackPermissions | undefined; /** * Map of resource IDs to their configurations and lifecycle settings */ - resources: { [k: string]: SyncReconcileRequestPreparedStackResources }; + resources: { [k: string]: SyncReconcileRequestPendingPreparedStackResources }; /** * Which platforms this stack supports. When None, all platforms are supported. */ supportedPlatforms?: - | Array + | Array | null | undefined; }; -export type SyncReconcileRequestPreparedStackUnion = - | SyncReconcileRequestPreparedStack +export type SyncReconcileRequestPendingPreparedStackUnion = + | SyncReconcileRequestPendingPreparedStack | any; -/** - * Runtime metadata for deployment - * - * @remarks - * - * Stores deployment state that needs to persist across step calls. - */ -export type SyncReconcileRequestRuntimeMetadata = { +export const SyncReconcileRequestPreparedStackTypeStringList = { + StringList: "stringList", +} as const; +export type SyncReconcileRequestPreparedStackTypeStringList = ClosedEnum< + typeof SyncReconcileRequestPreparedStackTypeStringList +>; + +export type SyncReconcileRequestPreparedStackDefaultStringList = { + type: SyncReconcileRequestPreparedStackTypeStringList; /** - * Hash of the environment variables snapshot that was last synced to the vault - * - * @remarks - * Used to avoid redundant sync operations during incremental deployment + * String list default. */ - lastSyncedEnvVarsHash?: string | null | undefined; + value: Array; +}; + +export const SyncReconcileRequestPreparedStackTypeBoolean = { + Boolean: "boolean", +} as const; +export type SyncReconcileRequestPreparedStackTypeBoolean = ClosedEnum< + typeof SyncReconcileRequestPreparedStackTypeBoolean +>; + +export type SyncReconcileRequestPreparedStackDefaultBoolean = { + type: SyncReconcileRequestPreparedStackTypeBoolean; /** - * Exact vault keys owned by the deployment secret synchronizer. This - * - * @remarks - * inventory lets a later snapshot delete removed keys without listing or - * touching unrelated values in the same vault. + * Boolean default. */ - lastSyncedSecretNames?: Array | undefined; - preparedStack?: SyncReconcileRequestPreparedStack | any | null | undefined; + value: boolean; +}; + +export const SyncReconcileRequestPreparedStackTypeNumber = { + Number: "number", +} as const; +export type SyncReconcileRequestPreparedStackTypeNumber = ClosedEnum< + typeof SyncReconcileRequestPreparedStackTypeNumber +>; + +export type SyncReconcileRequestPreparedStackDefaultNumber = { + type: SyncReconcileRequestPreparedStackTypeNumber; /** - * Whether cross-account registry access has been successfully granted. - * - * @remarks - * Set to true after the manager successfully sets the ECR/GAR repo policy - * for this deployment's target account. Prevents redundant API calls on - * every reconcile tick. + * Number default. */ - registryAccessGranted?: boolean | undefined; + value: string; }; -export type SyncReconcileRequestRuntimeMetadataUnion = - | SyncReconcileRequestRuntimeMetadata +export const SyncReconcileRequestPreparedStackTypeString = { + String: "string", +} as const; +export type SyncReconcileRequestPreparedStackTypeString = ClosedEnum< + typeof SyncReconcileRequestPreparedStackTypeString +>; + +export type SyncReconcileRequestPreparedStackDefaultString = { + type: SyncReconcileRequestPreparedStackTypeString; + /** + * String default. + */ + value: string; +}; + +export type SyncReconcileRequestPreparedStackDefaultUnion = + | SyncReconcileRequestPreparedStackDefaultString + | SyncReconcileRequestPreparedStackDefaultNumber + | SyncReconcileRequestPreparedStackDefaultBoolean + | SyncReconcileRequestPreparedStackDefaultStringList | any; /** - * Represents the target cloud platform. + * Environment variable handling for a stack input mapping. */ -export const SyncReconcileRequestStackStatePlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Machines: "machines", - Local: "local", - Test: "test", +export const SyncReconcileRequestPreparedStackTypeEnvEnum = { + Plain: "plain", + Secret: "secret", } as const; /** - * Represents the target cloud platform. + * Environment variable handling for a stack input mapping. */ -export type SyncReconcileRequestStackStatePlatform = ClosedEnum< - typeof SyncReconcileRequestStackStatePlatform +export type SyncReconcileRequestPreparedStackTypeEnvEnum = ClosedEnum< + typeof SyncReconcileRequestPreparedStackTypeEnvEnum >; +export type SyncReconcileRequestPreparedStackTypeUnion = + | SyncReconcileRequestPreparedStackTypeEnvEnum + | any; + /** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + * How a resolved stack input is injected into runtime environment variables. */ -export type SyncReconcileRequestStackStateConfig = { +export type SyncReconcileRequestPreparedStackEnv = { /** - * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. + * Environment variable name. */ - id: string; + name: string; /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + * Target resource IDs or patterns. None means every env-capable resource. */ - type: string; - additionalProperties?: { [k: string]: any | null } | undefined; + targetResources?: Array | null | undefined; + type?: SyncReconcileRequestPreparedStackTypeEnvEnum | any | null | undefined; }; +/** + * Primitive stack input kind. + */ +export const PreparedStackStateKind = { + String: "string", + Secret: "secret", + Number: "number", + Integer: "integer", + Boolean: "boolean", + Enum: "enum", + StringList: "stringList", +} as const; +/** + * Primitive stack input kind. + */ +export type PreparedStackStateKind = ClosedEnum; + /** * Represents the target cloud platform. */ -export const ControllerPlatformStateEnum = { +export const SyncReconcileRequestPreparedStackPlatform = { Aws: "aws", Gcp: "gcp", Azure: "azure", @@ -3325,480 +3446,48 @@ export const ControllerPlatformStateEnum = { /** * Represents the target cloud platform. */ -export type ControllerPlatformStateEnum = ClosedEnum< - typeof ControllerPlatformStateEnum +export type SyncReconcileRequestPreparedStackPlatform = ClosedEnum< + typeof SyncReconcileRequestPreparedStackPlatform >; -export type StateControllerPlatformUnion = ControllerPlatformStateEnum | any; - /** - * Reference to a resource by its stable id and resource type. + * Who can provide a stack input value. */ -export type SyncReconcileRequestStackStateDependency = { - id: string; - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - type: string; -}; +export const SyncReconcileRequestPreparedStackProvidedBy = { + Developer: "developer", + Deployer: "deployer", +} as const; +/** + * Who can provide a stack input value. + */ +export type SyncReconcileRequestPreparedStackProvidedBy = ClosedEnum< + typeof SyncReconcileRequestPreparedStackProvidedBy +>; /** - * Canonical error container that provides a structured way to represent errors - * - * @remarks - * with rich metadata including error codes, human-readable messages, context, - * and chaining capabilities for error propagation. - * - * This struct is designed to be both machine-readable and user-friendly, - * supporting serialization for API responses and detailed error reporting - * in distributed systems. + * Portable stack input validation constraints. */ -export type SyncReconcileRequestStackStateError = { +export type SyncReconcileRequestPreparedStackValidation = { /** - * A unique identifier for the type of error. - * - * @remarks - * - * This should be a short, machine-readable string that can be used - * by clients to programmatically handle different error types. - * Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" + * Semantic format hint such as url. */ - code: string; + format?: string | null | undefined; /** - * Additional diagnostic information about the error context. - * - * @remarks - * - * This optional field can contain structured data providing more details - * about the error, such as validation errors, request parameters that - * caused the issue, or other relevant context information. + * Maximum number. */ - context?: any | null | undefined; + max?: string | null | undefined; /** - * Optional human-facing remediation hint. + * Maximum string-list items. */ - hint?: string | null | undefined; + maxItems?: number | null | undefined; /** - * HTTP status code for this error. - * - * @remarks - * - * Used when converting the error to an HTTP response. If None, falls back to - * the error type's default status code or 500. + * Maximum string length. */ - httpStatusCode?: number | null | undefined; + maxLength?: number | null | undefined; /** - * Indicates if this is an internal error that should not be exposed to users. - * - * @remarks - * - * When `true`, this error contains sensitive information or implementation - * details that should not be shown to end-users. Such errors should be - * logged for debugging but replaced with generic error messages in responses. + * Minimum number. */ - internal: boolean; - /** - * Human-readable error message. - * - * @remarks - * - * This message should be clear and actionable for developers or end-users, - * providing context about what went wrong and potentially how to fix it. - */ - message: string; - /** - * Indicates whether the operation that caused the error should be retried. - * - * @remarks - * - * When `true`, the error is transient and the operation might succeed - * if attempted again. When `false`, retrying the same operation is - * unlikely to succeed without changes. - */ - retryable?: boolean | undefined; - /** - * The underlying error that caused this error, creating an error chain. - * - * @remarks - * - * This allows for proper error propagation and debugging by maintaining - * the full context of how an error occurred through multiple layers - * of an application. - */ - source?: any | null | undefined; -}; - -export type SyncReconcileRequestStackStateErrorUnion = - | SyncReconcileRequestStackStateError - | any; - -/** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ -export const StackStateLifecycleStateEnum = { - Frozen: "frozen", - Live: "live", -} as const; -/** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ -export type StackStateLifecycleStateEnum = ClosedEnum< - typeof StackStateLifecycleStateEnum ->; - -export type StateLifecycleUnion = StackStateLifecycleStateEnum | any; - -/** - * Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties. - */ -export type SyncReconcileRequestOutputs = { - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - type: string; - additionalProperties?: { [k: string]: any | null } | undefined; -}; - -export type SyncReconcileRequestOutputsUnion = - | SyncReconcileRequestOutputs - | any; - -/** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. - */ -export type SyncReconcileRequestPreviousConfig = { - /** - * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. - */ - id: string; - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - type: string; - additionalProperties?: { [k: string]: any | null } | undefined; -}; - -export type SyncReconcileRequestPreviousConfigUnion = - | SyncReconcileRequestPreviousConfig - | any; - -/** - * Represents the high-level status of a resource during its lifecycle. - */ -export const StackStateStateStatus = { - Pending: "pending", - Provisioning: "provisioning", - ProvisionFailed: "provision-failed", - Running: "running", - Updating: "updating", - UpdateFailed: "update-failed", - Deleting: "deleting", - DeleteFailed: "delete-failed", - TeardownRequired: "teardown-required", - Deleted: "deleted", - RefreshFailed: "refresh-failed", -} as const; -/** - * Represents the high-level status of a resource during its lifecycle. - */ -export type StackStateStateStatus = ClosedEnum; - -/** - * Represents the state of a single resource within the stack for a specific platform. - */ -export type SyncReconcileRequestStackStateResources = { - /** - * The platform-specific resource controller that manages this resource's lifecycle. - * - * @remarks - * This is None when the resource status is Pending. - * Stored as JSON to make the struct serializable and movable to alien-core. - */ - internal?: any | null | undefined; - /** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. - */ - config: SyncReconcileRequestStackStateConfig; - controllerPlatform?: ControllerPlatformStateEnum | any | null | undefined; - /** - * Complete list of dependencies for this resource, including infrastructure dependencies. - * - * @remarks - * This preserves the full dependency information from the stack definition. - */ - dependencies?: Array | undefined; - error?: SyncReconcileRequestStackStateError | any | null | undefined; - /** - * Stores the controller state that failed, used for manual retry operations. - * - * @remarks - * This allows resuming from the exact point where the failure occurred. - * Stored as JSON to make the struct serializable and movable to alien-core. - */ - lastFailedState?: any | null | undefined; - lifecycle?: StackStateLifecycleStateEnum | any | null | undefined; - outputs?: SyncReconcileRequestOutputs | any | null | undefined; - previousConfig?: SyncReconcileRequestPreviousConfig | any | null | undefined; - /** - * Binding parameters for remote access. - * - * @remarks - * Only populated when the resource has `remote_access: true` in its ResourceEntry. - * This is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding). - * Populated by controllers during provisioning using get_binding_params(). - */ - remoteBindingParams?: any | null | undefined; - /** - * Tracks consecutive retry attempts for the current state transition. - */ - retryAttempt?: number | undefined; - /** - * Represents the high-level status of a resource during its lifecycle. - */ - status: StackStateStateStatus; - /** - * The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE). - */ - type: string; -}; - -/** - * Represents the collective state of all resources in a stack, including platform and pending actions. - */ -export type SyncReconcileRequestStackState = { - /** - * Represents the target cloud platform. - */ - platform: SyncReconcileRequestStackStatePlatform; - /** - * A prefix used for resource naming to ensure uniqueness across deployments. - */ - resourcePrefix: string; - /** - * The state of individual resources, keyed by resource ID. - */ - resources: { [k: string]: SyncReconcileRequestStackStateResources }; -}; - -export type SyncReconcileRequestStackStateUnion = - | SyncReconcileRequestStackState - | any; - -/** - * Deployment status in the deployment lifecycle. - * - * @remarks - * - * For observe-only deployments with no release or stack state, `Running` - * means the Operator is attached. Connectivity comes from `lastHeartbeatAt`; - * resource health comes from inventory and resource heartbeat data. - */ -export const StateStatus = { - Pending: "pending", - PreflightsFailed: "preflights-failed", - InitialSetup: "initial-setup", - InitialSetupFailed: "initial-setup-failed", - Provisioning: "provisioning", - WaitingForMachines: "waiting-for-machines", - ProvisioningFailed: "provisioning-failed", - Running: "running", - RefreshFailed: "refresh-failed", - UpdatePending: "update-pending", - Updating: "updating", - UpdateFailed: "update-failed", - DeletePending: "delete-pending", - Deleting: "deleting", - DeleteFailed: "delete-failed", - TeardownRequired: "teardown-required", - TeardownFailed: "teardown-failed", - Deleted: "deleted", - Error: "error", -} as const; -/** - * Deployment status in the deployment lifecycle. - * - * @remarks - * - * For observe-only deployments with no release or stack state, `Running` - * means the Operator is attached. Connectivity comes from `lastHeartbeatAt`; - * resource health comes from inventory and resource heartbeat data. - */ -export type StateStatus = ClosedEnum; - -export const SyncReconcileRequestTargetReleaseTypeStringList = { - StringList: "stringList", -} as const; -export type SyncReconcileRequestTargetReleaseTypeStringList = ClosedEnum< - typeof SyncReconcileRequestTargetReleaseTypeStringList ->; - -export type SyncReconcileRequestTargetReleaseDefaultStringList = { - type: SyncReconcileRequestTargetReleaseTypeStringList; - /** - * String list default. - */ - value: Array; -}; - -export const SyncReconcileRequestTargetReleaseTypeBoolean = { - Boolean: "boolean", -} as const; -export type SyncReconcileRequestTargetReleaseTypeBoolean = ClosedEnum< - typeof SyncReconcileRequestTargetReleaseTypeBoolean ->; - -export type SyncReconcileRequestTargetReleaseDefaultBoolean = { - type: SyncReconcileRequestTargetReleaseTypeBoolean; - /** - * Boolean default. - */ - value: boolean; -}; - -export const SyncReconcileRequestTargetReleaseTypeNumber = { - Number: "number", -} as const; -export type SyncReconcileRequestTargetReleaseTypeNumber = ClosedEnum< - typeof SyncReconcileRequestTargetReleaseTypeNumber ->; - -export type SyncReconcileRequestTargetReleaseDefaultNumber = { - type: SyncReconcileRequestTargetReleaseTypeNumber; - /** - * Number default. - */ - value: string; -}; - -export const SyncReconcileRequestTargetReleaseTypeString = { - String: "string", -} as const; -export type SyncReconcileRequestTargetReleaseTypeString = ClosedEnum< - typeof SyncReconcileRequestTargetReleaseTypeString ->; - -export type SyncReconcileRequestTargetReleaseDefaultString = { - type: SyncReconcileRequestTargetReleaseTypeString; - /** - * String default. - */ - value: string; -}; - -export type SyncReconcileRequestTargetReleaseDefaultUnion = - | SyncReconcileRequestTargetReleaseDefaultString - | SyncReconcileRequestTargetReleaseDefaultNumber - | SyncReconcileRequestTargetReleaseDefaultBoolean - | SyncReconcileRequestTargetReleaseDefaultStringList - | any; - -/** - * Environment variable handling for a stack input mapping. - */ -export const SyncReconcileRequestTargetReleaseTypeEnvEnum = { - Plain: "plain", - Secret: "secret", -} as const; -/** - * Environment variable handling for a stack input mapping. - */ -export type SyncReconcileRequestTargetReleaseTypeEnvEnum = ClosedEnum< - typeof SyncReconcileRequestTargetReleaseTypeEnvEnum ->; - -export type SyncReconcileRequestTargetReleaseTypeUnion = - | SyncReconcileRequestTargetReleaseTypeEnvEnum - | any; - -/** - * How a resolved stack input is injected into runtime environment variables. - */ -export type SyncReconcileRequestTargetReleaseEnv = { - /** - * Environment variable name. - */ - name: string; - /** - * Target resource IDs or patterns. None means every env-capable resource. - */ - targetResources?: Array | null | undefined; - type?: SyncReconcileRequestTargetReleaseTypeEnvEnum | any | null | undefined; -}; - -/** - * Primitive stack input kind. - */ -export const TargetReleaseStateKind = { - String: "string", - Secret: "secret", - Number: "number", - Integer: "integer", - Boolean: "boolean", - Enum: "enum", - StringList: "stringList", -} as const; -/** - * Primitive stack input kind. - */ -export type TargetReleaseStateKind = ClosedEnum; - -/** - * Represents the target cloud platform. - */ -export const SyncReconcileRequestTargetReleasePlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Machines: "machines", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. - */ -export type SyncReconcileRequestTargetReleasePlatform = ClosedEnum< - typeof SyncReconcileRequestTargetReleasePlatform ->; - -/** - * Who can provide a stack input value. - */ -export const SyncReconcileRequestTargetReleaseProvidedBy = { - Developer: "developer", - Deployer: "deployer", -} as const; -/** - * Who can provide a stack input value. - */ -export type SyncReconcileRequestTargetReleaseProvidedBy = ClosedEnum< - typeof SyncReconcileRequestTargetReleaseProvidedBy ->; - -/** - * Portable stack input validation constraints. - */ -export type SyncReconcileRequestTargetReleaseValidation = { - /** - * Semantic format hint such as url. - */ - format?: string | null | undefined; - /** - * Maximum number. - */ - max?: string | null | undefined; - /** - * Maximum string-list items. - */ - maxItems?: number | null | undefined; - /** - * Maximum string length. - */ - maxLength?: number | null | undefined; - /** - * Minimum number. - */ - min?: string | null | undefined; + min?: string | null | undefined; /** * Minimum string-list items. */ @@ -3817,19 +3506,19 @@ export type SyncReconcileRequestTargetReleaseValidation = { values?: Array | null | undefined; }; -export type SyncReconcileRequestTargetReleaseValidationUnion = - | SyncReconcileRequestTargetReleaseValidation +export type SyncReconcileRequestPreparedStackValidationUnion = + | SyncReconcileRequestPreparedStackValidation | any; /** * Stack input definition serialized into a release stack. */ -export type SyncReconcileRequestTargetReleaseInput = { +export type SyncReconcileRequestPreparedStackInput = { default?: - | SyncReconcileRequestTargetReleaseDefaultString - | SyncReconcileRequestTargetReleaseDefaultNumber - | SyncReconcileRequestTargetReleaseDefaultBoolean - | SyncReconcileRequestTargetReleaseDefaultStringList + | SyncReconcileRequestPreparedStackDefaultString + | SyncReconcileRequestPreparedStackDefaultNumber + | SyncReconcileRequestPreparedStackDefaultBoolean + | SyncReconcileRequestPreparedStackDefaultStringList | any | null | undefined; @@ -3840,7 +3529,7 @@ export type SyncReconcileRequestTargetReleaseInput = { /** * Runtime env-var mappings for v1 input resolution. */ - env?: Array | undefined; + env?: Array | undefined; /** * Stable input ID used by CLI/API calls. */ @@ -3848,7 +3537,7 @@ export type SyncReconcileRequestTargetReleaseInput = { /** * Primitive stack input kind. */ - kind: TargetReleaseStateKind; + kind: PreparedStackStateKind; /** * Human-facing field label. */ @@ -3861,35 +3550,35 @@ export type SyncReconcileRequestTargetReleaseInput = { * Platforms where this input applies. */ platforms?: - | Array + | Array | null | undefined; /** * Who can provide this value. */ - providedBy: Array; + providedBy: Array; /** * Whether a resolved value is required before deployment can proceed. */ required: boolean; validation?: - | SyncReconcileRequestTargetReleaseValidation + | SyncReconcileRequestPreparedStackValidation | any | null | undefined; }; -export const SyncReconcileRequestTargetReleaseManagementEnum = { +export const SyncReconcileRequestPreparedStackManagementEnum = { Auto: "auto", } as const; -export type SyncReconcileRequestTargetReleaseManagementEnum = ClosedEnum< - typeof SyncReconcileRequestTargetReleaseManagementEnum +export type SyncReconcileRequestPreparedStackManagementEnum = ClosedEnum< + typeof SyncReconcileRequestPreparedStackManagementEnum >; /** * AWS-specific binding specification */ -export type TargetReleaseOverrideStateAwResource = { +export type PreparedStackOverrideStateAwResource = { /** * Optional condition for additional filtering (rare) */ @@ -3903,7 +3592,7 @@ export type TargetReleaseOverrideStateAwResource = { /** * AWS-specific binding specification */ -export type SyncReconcileRequestTargetReleaseOverrideAwStack = { +export type SyncReconcileRequestPreparedStackOverrideAwStack = { /** * Optional condition for additional filtering (rare) */ @@ -3917,35 +3606,35 @@ export type SyncReconcileRequestTargetReleaseOverrideAwStack = { /** * Generic binding configuration for permissions */ -export type SyncReconcileRequestTargetReleaseOverrideAwBinding = { +export type SyncReconcileRequestPreparedStackOverrideAwBinding = { /** * AWS-specific binding specification */ - resource?: TargetReleaseOverrideStateAwResource | undefined; + resource?: PreparedStackOverrideStateAwResource | undefined; /** * AWS-specific binding specification */ - stack?: SyncReconcileRequestTargetReleaseOverrideAwStack | undefined; + stack?: SyncReconcileRequestPreparedStackOverrideAwStack | undefined; }; /** * IAM effect. Defaults to Allow. */ -export const SyncReconcileRequestTargetReleaseOverrideEffect = { +export const SyncReconcileRequestPreparedStackOverrideEffect = { Allow: "Allow", Deny: "Deny", } as const; /** * IAM effect. Defaults to Allow. */ -export type SyncReconcileRequestTargetReleaseOverrideEffect = ClosedEnum< - typeof SyncReconcileRequestTargetReleaseOverrideEffect +export type SyncReconcileRequestPreparedStackOverrideEffect = ClosedEnum< + typeof SyncReconcileRequestPreparedStackOverrideEffect >; /** * Grant permissions for a specific cloud platform */ -export type SyncReconcileRequestTargetReleaseOverrideAwGrant = { +export type SyncReconcileRequestPreparedStackOverrideAwGrant = { /** * AWS IAM actions (only for AWS) */ @@ -3971,11 +3660,11 @@ export type SyncReconcileRequestTargetReleaseOverrideAwGrant = { /** * AWS-specific platform permission configuration */ -export type SyncReconcileRequestTargetReleaseOverrideAw = { +export type SyncReconcileRequestPreparedStackOverrideAw = { /** * Generic binding configuration for permissions */ - binding: SyncReconcileRequestTargetReleaseOverrideAwBinding; + binding: SyncReconcileRequestPreparedStackOverrideAwBinding; /** * Short admin-facing description of why this entry exists. */ @@ -3983,11 +3672,11 @@ export type SyncReconcileRequestTargetReleaseOverrideAw = { /** * IAM effect. Defaults to Allow. */ - effect?: SyncReconcileRequestTargetReleaseOverrideEffect | undefined; + effect?: SyncReconcileRequestPreparedStackOverrideEffect | undefined; /** * Grant permissions for a specific cloud platform */ - grant: SyncReconcileRequestTargetReleaseOverrideAwGrant; + grant: SyncReconcileRequestPreparedStackOverrideAwGrant; /** * Stable admin-facing label for this permission entry. */ @@ -3997,7 +3686,7 @@ export type SyncReconcileRequestTargetReleaseOverrideAw = { /** * Azure-specific binding specification */ -export type TargetReleaseOverrideStateAzureResource = { +export type PreparedStackOverrideStateAzureResource = { /** * Scope (subscription/resource group/resource level) */ @@ -4007,7 +3696,7 @@ export type TargetReleaseOverrideStateAzureResource = { /** * Azure-specific binding specification */ -export type SyncReconcileRequestTargetReleaseOverrideAzureStack = { +export type SyncReconcileRequestPreparedStackOverrideAzureStack = { /** * Scope (subscription/resource group/resource level) */ @@ -4017,21 +3706,21 @@ export type SyncReconcileRequestTargetReleaseOverrideAzureStack = { /** * Generic binding configuration for permissions */ -export type SyncReconcileRequestTargetReleaseOverrideAzureBinding = { +export type SyncReconcileRequestPreparedStackOverrideAzureBinding = { /** * Azure-specific binding specification */ - resource?: TargetReleaseOverrideStateAzureResource | undefined; + resource?: PreparedStackOverrideStateAzureResource | undefined; /** * Azure-specific binding specification */ - stack?: SyncReconcileRequestTargetReleaseOverrideAzureStack | undefined; + stack?: SyncReconcileRequestPreparedStackOverrideAzureStack | undefined; }; /** * Grant permissions for a specific cloud platform */ -export type SyncReconcileRequestTargetReleaseOverrideAzureGrant = { +export type SyncReconcileRequestPreparedStackOverrideAzureGrant = { /** * AWS IAM actions (only for AWS) */ @@ -4057,11 +3746,11 @@ export type SyncReconcileRequestTargetReleaseOverrideAzureGrant = { /** * Azure-specific platform permission configuration */ -export type SyncReconcileRequestTargetReleaseOverrideAzure = { +export type SyncReconcileRequestPreparedStackOverrideAzure = { /** * Generic binding configuration for permissions */ - binding: SyncReconcileRequestTargetReleaseOverrideAzureBinding; + binding: SyncReconcileRequestPreparedStackOverrideAzureBinding; /** * Short admin-facing description of why this entry exists. */ @@ -4069,7 +3758,7 @@ export type SyncReconcileRequestTargetReleaseOverrideAzure = { /** * Grant permissions for a specific cloud platform */ - grant: SyncReconcileRequestTargetReleaseOverrideAzureGrant; + grant: SyncReconcileRequestPreparedStackOverrideAzureGrant; /** * Stable admin-facing label for this permission entry. */ @@ -4079,21 +3768,21 @@ export type SyncReconcileRequestTargetReleaseOverrideAzure = { /** * GCP IAM condition */ -export type TargetReleaseOverrideConditionStateResource = { +export type PreparedStackOverrideConditionStateResource = { expression: string; title: string; }; -export type TargetReleaseOverrideStateResourceConditionUnion = - | TargetReleaseOverrideConditionStateResource +export type PreparedStackOverrideStateResourceConditionUnion = + | PreparedStackOverrideConditionStateResource | any; /** * GCP-specific binding specification */ -export type TargetReleaseOverrideStateGcpResource = { +export type PreparedStackOverrideStateGcpResource = { condition?: - | TargetReleaseOverrideConditionStateResource + | PreparedStackOverrideConditionStateResource | any | null | undefined; @@ -4106,20 +3795,20 @@ export type TargetReleaseOverrideStateGcpResource = { /** * GCP IAM condition */ -export type TargetReleaseOverrideConditionState = { +export type PreparedStackOverrideConditionStateStack = { expression: string; title: string; }; -export type TargetReleaseOverrideStateConditionUnion = - | TargetReleaseOverrideConditionState +export type PreparedStackOverrideStateStackConditionUnion = + | PreparedStackOverrideConditionStateStack | any; /** * GCP-specific binding specification */ -export type SyncReconcileRequestTargetReleaseOverrideGcpStack = { - condition?: TargetReleaseOverrideConditionState | any | null | undefined; +export type SyncReconcileRequestPreparedStackOverrideGcpStack = { + condition?: PreparedStackOverrideConditionStateStack | any | null | undefined; /** * Scope (project/resource level) */ @@ -4129,21 +3818,21 @@ export type SyncReconcileRequestTargetReleaseOverrideGcpStack = { /** * Generic binding configuration for permissions */ -export type SyncReconcileRequestTargetReleaseOverrideGcpBinding = { +export type SyncReconcileRequestPreparedStackOverrideGcpBinding = { /** * GCP-specific binding specification */ - resource?: TargetReleaseOverrideStateGcpResource | undefined; + resource?: PreparedStackOverrideStateGcpResource | undefined; /** * GCP-specific binding specification */ - stack?: SyncReconcileRequestTargetReleaseOverrideGcpStack | undefined; + stack?: SyncReconcileRequestPreparedStackOverrideGcpStack | undefined; }; /** * Grant permissions for a specific cloud platform */ -export type SyncReconcileRequestTargetReleaseOverrideGcpGrant = { +export type SyncReconcileRequestPreparedStackOverrideGcpGrant = { /** * AWS IAM actions (only for AWS) */ @@ -4169,11 +3858,11 @@ export type SyncReconcileRequestTargetReleaseOverrideGcpGrant = { /** * GCP-specific platform permission configuration */ -export type SyncReconcileRequestTargetReleaseOverrideGcp = { +export type SyncReconcileRequestPreparedStackOverrideGcp = { /** * Generic binding configuration for permissions */ - binding: SyncReconcileRequestTargetReleaseOverrideGcpBinding; + binding: SyncReconcileRequestPreparedStackOverrideGcpBinding; /** * Short admin-facing description of why this entry exists. */ @@ -4181,7 +3870,7 @@ export type SyncReconcileRequestTargetReleaseOverrideGcp = { /** * Grant permissions for a specific cloud platform */ - grant: SyncReconcileRequestTargetReleaseOverrideGcpGrant; + grant: SyncReconcileRequestPreparedStackOverrideGcpGrant; /** * Stable admin-facing label for this permission entry. */ @@ -4191,28 +3880,28 @@ export type SyncReconcileRequestTargetReleaseOverrideGcp = { /** * Platform-specific permission configurations */ -export type SyncReconcileRequestTargetReleaseOverridePlatforms = { +export type SyncReconcileRequestPreparedStackOverridePlatforms = { /** * AWS permission configurations */ - aws?: Array | null | undefined; + aws?: Array | null | undefined; /** * Azure permission configurations */ azure?: - | Array + | Array | null | undefined; /** * GCP permission configurations */ - gcp?: Array | null | undefined; + gcp?: Array | null | undefined; }; /** * A permission set that can be applied across different cloud platforms */ -export type SyncReconcileRequestTargetReleaseOverride = { +export type SyncReconcileRequestPreparedStackOverride = { /** * Human-readable description of what this permission set allows */ @@ -4224,17 +3913,17 @@ export type SyncReconcileRequestTargetReleaseOverride = { /** * Platform-specific permission configurations */ - platforms: SyncReconcileRequestTargetReleaseOverridePlatforms; + platforms: SyncReconcileRequestPreparedStackOverridePlatforms; }; /** * Reference to a permission set - either by name or inline definition */ -export type SyncReconcileRequestTargetReleaseOverrideUnion = - | SyncReconcileRequestTargetReleaseOverride +export type SyncReconcileRequestPreparedStackOverrideUnion = + | SyncReconcileRequestPreparedStackOverride | string; -export type SyncReconcileRequestTargetReleaseManagement2 = { +export type SyncReconcileRequestPreparedStackManagement2 = { /** * Permission profile that maps resources to permission sets * @@ -4242,14 +3931,14 @@ export type SyncReconcileRequestTargetReleaseManagement2 = { * Key can be "*" for all resources or resource name for specific resource */ override: { - [k: string]: Array; + [k: string]: Array; }; }; /** * AWS-specific binding specification */ -export type TargetReleaseExtendStateAwResource = { +export type PreparedStackExtendStateAwResource = { /** * Optional condition for additional filtering (rare) */ @@ -4263,7 +3952,7 @@ export type TargetReleaseExtendStateAwResource = { /** * AWS-specific binding specification */ -export type SyncReconcileRequestTargetReleaseExtendAwStack = { +export type SyncReconcileRequestPreparedStackExtendAwStack = { /** * Optional condition for additional filtering (rare) */ @@ -4277,35 +3966,35 @@ export type SyncReconcileRequestTargetReleaseExtendAwStack = { /** * Generic binding configuration for permissions */ -export type SyncReconcileRequestTargetReleaseExtendAwBinding = { +export type SyncReconcileRequestPreparedStackExtendAwBinding = { /** * AWS-specific binding specification */ - resource?: TargetReleaseExtendStateAwResource | undefined; + resource?: PreparedStackExtendStateAwResource | undefined; /** * AWS-specific binding specification */ - stack?: SyncReconcileRequestTargetReleaseExtendAwStack | undefined; + stack?: SyncReconcileRequestPreparedStackExtendAwStack | undefined; }; /** * IAM effect. Defaults to Allow. */ -export const SyncReconcileRequestTargetReleaseExtendEffect = { +export const SyncReconcileRequestPreparedStackExtendEffect = { Allow: "Allow", Deny: "Deny", } as const; /** * IAM effect. Defaults to Allow. */ -export type SyncReconcileRequestTargetReleaseExtendEffect = ClosedEnum< - typeof SyncReconcileRequestTargetReleaseExtendEffect +export type SyncReconcileRequestPreparedStackExtendEffect = ClosedEnum< + typeof SyncReconcileRequestPreparedStackExtendEffect >; /** * Grant permissions for a specific cloud platform */ -export type SyncReconcileRequestTargetReleaseExtendAwGrant = { +export type SyncReconcileRequestPreparedStackExtendAwGrant = { /** * AWS IAM actions (only for AWS) */ @@ -4331,11 +4020,11 @@ export type SyncReconcileRequestTargetReleaseExtendAwGrant = { /** * AWS-specific platform permission configuration */ -export type SyncReconcileRequestTargetReleaseExtendAw = { +export type SyncReconcileRequestPreparedStackExtendAw = { /** * Generic binding configuration for permissions */ - binding: SyncReconcileRequestTargetReleaseExtendAwBinding; + binding: SyncReconcileRequestPreparedStackExtendAwBinding; /** * Short admin-facing description of why this entry exists. */ @@ -4343,11 +4032,11 @@ export type SyncReconcileRequestTargetReleaseExtendAw = { /** * IAM effect. Defaults to Allow. */ - effect?: SyncReconcileRequestTargetReleaseExtendEffect | undefined; + effect?: SyncReconcileRequestPreparedStackExtendEffect | undefined; /** * Grant permissions for a specific cloud platform */ - grant: SyncReconcileRequestTargetReleaseExtendAwGrant; + grant: SyncReconcileRequestPreparedStackExtendAwGrant; /** * Stable admin-facing label for this permission entry. */ @@ -4357,7 +4046,7 @@ export type SyncReconcileRequestTargetReleaseExtendAw = { /** * Azure-specific binding specification */ -export type TargetReleaseExtendStateAzureResource = { +export type PreparedStackExtendStateAzureResource = { /** * Scope (subscription/resource group/resource level) */ @@ -4367,7 +4056,7 @@ export type TargetReleaseExtendStateAzureResource = { /** * Azure-specific binding specification */ -export type SyncReconcileRequestTargetReleaseExtendAzureStack = { +export type SyncReconcileRequestPreparedStackExtendAzureStack = { /** * Scope (subscription/resource group/resource level) */ @@ -4377,21 +4066,21 @@ export type SyncReconcileRequestTargetReleaseExtendAzureStack = { /** * Generic binding configuration for permissions */ -export type SyncReconcileRequestTargetReleaseExtendAzureBinding = { +export type SyncReconcileRequestPreparedStackExtendAzureBinding = { /** * Azure-specific binding specification */ - resource?: TargetReleaseExtendStateAzureResource | undefined; + resource?: PreparedStackExtendStateAzureResource | undefined; /** * Azure-specific binding specification */ - stack?: SyncReconcileRequestTargetReleaseExtendAzureStack | undefined; + stack?: SyncReconcileRequestPreparedStackExtendAzureStack | undefined; }; /** * Grant permissions for a specific cloud platform */ -export type SyncReconcileRequestTargetReleaseExtendAzureGrant = { +export type SyncReconcileRequestPreparedStackExtendAzureGrant = { /** * AWS IAM actions (only for AWS) */ @@ -4417,11 +4106,11 @@ export type SyncReconcileRequestTargetReleaseExtendAzureGrant = { /** * Azure-specific platform permission configuration */ -export type SyncReconcileRequestTargetReleaseExtendAzure = { +export type SyncReconcileRequestPreparedStackExtendAzure = { /** * Generic binding configuration for permissions */ - binding: SyncReconcileRequestTargetReleaseExtendAzureBinding; + binding: SyncReconcileRequestPreparedStackExtendAzureBinding; /** * Short admin-facing description of why this entry exists. */ @@ -4429,7 +4118,7 @@ export type SyncReconcileRequestTargetReleaseExtendAzure = { /** * Grant permissions for a specific cloud platform */ - grant: SyncReconcileRequestTargetReleaseExtendAzureGrant; + grant: SyncReconcileRequestPreparedStackExtendAzureGrant; /** * Stable admin-facing label for this permission entry. */ @@ -4439,21 +4128,21 @@ export type SyncReconcileRequestTargetReleaseExtendAzure = { /** * GCP IAM condition */ -export type TargetReleaseExtendConditionStateResource = { +export type PreparedStackExtendConditionStateResource = { expression: string; title: string; }; -export type TargetReleaseExtendStateResourceConditionUnion = - | TargetReleaseExtendConditionStateResource +export type PreparedStackExtendStateResourceConditionUnion = + | PreparedStackExtendConditionStateResource | any; /** * GCP-specific binding specification */ -export type TargetReleaseExtendStateGcpResource = { +export type PreparedStackExtendStateGcpResource = { condition?: - | TargetReleaseExtendConditionStateResource + | PreparedStackExtendConditionStateResource | any | null | undefined; @@ -4466,20 +4155,20 @@ export type TargetReleaseExtendStateGcpResource = { /** * GCP IAM condition */ -export type TargetReleaseExtendConditionState = { +export type PreparedStackExtendConditionStateStack = { expression: string; title: string; }; -export type TargetReleaseExtendStateConditionUnion = - | TargetReleaseExtendConditionState +export type PreparedStackExtendStateStackConditionUnion = + | PreparedStackExtendConditionStateStack | any; /** * GCP-specific binding specification */ -export type SyncReconcileRequestTargetReleaseExtendGcpStack = { - condition?: TargetReleaseExtendConditionState | any | null | undefined; +export type SyncReconcileRequestPreparedStackExtendGcpStack = { + condition?: PreparedStackExtendConditionStateStack | any | null | undefined; /** * Scope (project/resource level) */ @@ -4489,21 +4178,21 @@ export type SyncReconcileRequestTargetReleaseExtendGcpStack = { /** * Generic binding configuration for permissions */ -export type SyncReconcileRequestTargetReleaseExtendGcpBinding = { +export type SyncReconcileRequestPreparedStackExtendGcpBinding = { /** * GCP-specific binding specification */ - resource?: TargetReleaseExtendStateGcpResource | undefined; + resource?: PreparedStackExtendStateGcpResource | undefined; /** * GCP-specific binding specification */ - stack?: SyncReconcileRequestTargetReleaseExtendGcpStack | undefined; + stack?: SyncReconcileRequestPreparedStackExtendGcpStack | undefined; }; /** * Grant permissions for a specific cloud platform */ -export type SyncReconcileRequestTargetReleaseExtendGcpGrant = { +export type SyncReconcileRequestPreparedStackExtendGcpGrant = { /** * AWS IAM actions (only for AWS) */ @@ -4529,11 +4218,11 @@ export type SyncReconcileRequestTargetReleaseExtendGcpGrant = { /** * GCP-specific platform permission configuration */ -export type SyncReconcileRequestTargetReleaseExtendGcp = { +export type SyncReconcileRequestPreparedStackExtendGcp = { /** * Generic binding configuration for permissions */ - binding: SyncReconcileRequestTargetReleaseExtendGcpBinding; + binding: SyncReconcileRequestPreparedStackExtendGcpBinding; /** * Short admin-facing description of why this entry exists. */ @@ -4541,7 +4230,7 @@ export type SyncReconcileRequestTargetReleaseExtendGcp = { /** * Grant permissions for a specific cloud platform */ - grant: SyncReconcileRequestTargetReleaseExtendGcpGrant; + grant: SyncReconcileRequestPreparedStackExtendGcpGrant; /** * Stable admin-facing label for this permission entry. */ @@ -4551,28 +4240,28 @@ export type SyncReconcileRequestTargetReleaseExtendGcp = { /** * Platform-specific permission configurations */ -export type SyncReconcileRequestTargetReleaseExtendPlatforms = { +export type SyncReconcileRequestPreparedStackExtendPlatforms = { /** * AWS permission configurations */ - aws?: Array | null | undefined; + aws?: Array | null | undefined; /** * Azure permission configurations */ azure?: - | Array + | Array | null | undefined; /** * GCP permission configurations */ - gcp?: Array | null | undefined; + gcp?: Array | null | undefined; }; /** * A permission set that can be applied across different cloud platforms */ -export type SyncReconcileRequestTargetReleaseExtend = { +export type SyncReconcileRequestPreparedStackExtend = { /** * Human-readable description of what this permission set allows */ @@ -4584,17 +4273,17 @@ export type SyncReconcileRequestTargetReleaseExtend = { /** * Platform-specific permission configurations */ - platforms: SyncReconcileRequestTargetReleaseExtendPlatforms; + platforms: SyncReconcileRequestPreparedStackExtendPlatforms; }; /** * Reference to a permission set - either by name or inline definition */ -export type SyncReconcileRequestTargetReleaseExtendUnion = - | SyncReconcileRequestTargetReleaseExtend +export type SyncReconcileRequestPreparedStackExtendUnion = + | SyncReconcileRequestPreparedStackExtend | string; -export type SyncReconcileRequestTargetReleaseManagement1 = { +export type SyncReconcileRequestPreparedStackManagement1 = { /** * Permission profile that maps resources to permission sets * @@ -4602,22 +4291,22 @@ export type SyncReconcileRequestTargetReleaseManagement1 = { * Key can be "*" for all resources or resource name for specific resource */ extend: { - [k: string]: Array; + [k: string]: Array; }; }; /** * Management permissions configuration for stack management access */ -export type SyncReconcileRequestTargetReleaseManagementUnion = - | SyncReconcileRequestTargetReleaseManagement1 - | SyncReconcileRequestTargetReleaseManagement2 - | SyncReconcileRequestTargetReleaseManagementEnum; +export type SyncReconcileRequestPreparedStackManagementUnion = + | SyncReconcileRequestPreparedStackManagement1 + | SyncReconcileRequestPreparedStackManagement2 + | SyncReconcileRequestPreparedStackManagementEnum; /** * AWS-specific binding specification */ -export type TargetReleaseProfileStateAwResource = { +export type PreparedStackProfileStateAwResource = { /** * Optional condition for additional filtering (rare) */ @@ -4631,7 +4320,7 @@ export type TargetReleaseProfileStateAwResource = { /** * AWS-specific binding specification */ -export type SyncReconcileRequestTargetReleaseProfileAwStack = { +export type SyncReconcileRequestPreparedStackProfileAwStack = { /** * Optional condition for additional filtering (rare) */ @@ -4645,35 +4334,35 @@ export type SyncReconcileRequestTargetReleaseProfileAwStack = { /** * Generic binding configuration for permissions */ -export type SyncReconcileRequestTargetReleaseProfileAwBinding = { +export type SyncReconcileRequestPreparedStackProfileAwBinding = { /** * AWS-specific binding specification */ - resource?: TargetReleaseProfileStateAwResource | undefined; + resource?: PreparedStackProfileStateAwResource | undefined; /** * AWS-specific binding specification */ - stack?: SyncReconcileRequestTargetReleaseProfileAwStack | undefined; + stack?: SyncReconcileRequestPreparedStackProfileAwStack | undefined; }; /** * IAM effect. Defaults to Allow. */ -export const SyncReconcileRequestTargetReleaseProfileEffect = { +export const SyncReconcileRequestPreparedStackProfileEffect = { Allow: "Allow", Deny: "Deny", } as const; /** * IAM effect. Defaults to Allow. */ -export type SyncReconcileRequestTargetReleaseProfileEffect = ClosedEnum< - typeof SyncReconcileRequestTargetReleaseProfileEffect +export type SyncReconcileRequestPreparedStackProfileEffect = ClosedEnum< + typeof SyncReconcileRequestPreparedStackProfileEffect >; /** * Grant permissions for a specific cloud platform */ -export type SyncReconcileRequestTargetReleaseProfileAwGrant = { +export type SyncReconcileRequestPreparedStackProfileAwGrant = { /** * AWS IAM actions (only for AWS) */ @@ -4699,11 +4388,11 @@ export type SyncReconcileRequestTargetReleaseProfileAwGrant = { /** * AWS-specific platform permission configuration */ -export type SyncReconcileRequestTargetReleaseProfileAw = { +export type SyncReconcileRequestPreparedStackProfileAw = { /** * Generic binding configuration for permissions */ - binding: SyncReconcileRequestTargetReleaseProfileAwBinding; + binding: SyncReconcileRequestPreparedStackProfileAwBinding; /** * Short admin-facing description of why this entry exists. */ @@ -4711,11 +4400,11 @@ export type SyncReconcileRequestTargetReleaseProfileAw = { /** * IAM effect. Defaults to Allow. */ - effect?: SyncReconcileRequestTargetReleaseProfileEffect | undefined; + effect?: SyncReconcileRequestPreparedStackProfileEffect | undefined; /** * Grant permissions for a specific cloud platform */ - grant: SyncReconcileRequestTargetReleaseProfileAwGrant; + grant: SyncReconcileRequestPreparedStackProfileAwGrant; /** * Stable admin-facing label for this permission entry. */ @@ -4725,7 +4414,7 @@ export type SyncReconcileRequestTargetReleaseProfileAw = { /** * Azure-specific binding specification */ -export type TargetReleaseProfileStateAzureResource = { +export type PreparedStackProfileStateAzureResource = { /** * Scope (subscription/resource group/resource level) */ @@ -4735,7 +4424,7 @@ export type TargetReleaseProfileStateAzureResource = { /** * Azure-specific binding specification */ -export type SyncReconcileRequestTargetReleaseProfileAzureStack = { +export type SyncReconcileRequestPreparedStackProfileAzureStack = { /** * Scope (subscription/resource group/resource level) */ @@ -4745,21 +4434,21 @@ export type SyncReconcileRequestTargetReleaseProfileAzureStack = { /** * Generic binding configuration for permissions */ -export type SyncReconcileRequestTargetReleaseProfileAzureBinding = { +export type SyncReconcileRequestPreparedStackProfileAzureBinding = { /** * Azure-specific binding specification */ - resource?: TargetReleaseProfileStateAzureResource | undefined; + resource?: PreparedStackProfileStateAzureResource | undefined; /** * Azure-specific binding specification */ - stack?: SyncReconcileRequestTargetReleaseProfileAzureStack | undefined; + stack?: SyncReconcileRequestPreparedStackProfileAzureStack | undefined; }; /** * Grant permissions for a specific cloud platform */ -export type SyncReconcileRequestTargetReleaseProfileAzureGrant = { +export type SyncReconcileRequestPreparedStackProfileAzureGrant = { /** * AWS IAM actions (only for AWS) */ @@ -4785,11 +4474,11 @@ export type SyncReconcileRequestTargetReleaseProfileAzureGrant = { /** * Azure-specific platform permission configuration */ -export type SyncReconcileRequestTargetReleaseProfileAzure = { +export type SyncReconcileRequestPreparedStackProfileAzure = { /** * Generic binding configuration for permissions */ - binding: SyncReconcileRequestTargetReleaseProfileAzureBinding; + binding: SyncReconcileRequestPreparedStackProfileAzureBinding; /** * Short admin-facing description of why this entry exists. */ @@ -4797,7 +4486,7 @@ export type SyncReconcileRequestTargetReleaseProfileAzure = { /** * Grant permissions for a specific cloud platform */ - grant: SyncReconcileRequestTargetReleaseProfileAzureGrant; + grant: SyncReconcileRequestPreparedStackProfileAzureGrant; /** * Stable admin-facing label for this permission entry. */ @@ -4807,21 +4496,21 @@ export type SyncReconcileRequestTargetReleaseProfileAzure = { /** * GCP IAM condition */ -export type TargetReleaseProfileConditionStateResource = { +export type PreparedStackProfileConditionStateResource = { expression: string; title: string; }; -export type TargetReleaseProfileStateResourceConditionUnion = - | TargetReleaseProfileConditionStateResource +export type PreparedStackProfileStateResourceConditionUnion = + | PreparedStackProfileConditionStateResource | any; /** * GCP-specific binding specification */ -export type TargetReleaseProfileStateGcpResource = { +export type PreparedStackProfileStateGcpResource = { condition?: - | TargetReleaseProfileConditionStateResource + | PreparedStackProfileConditionStateResource | any | null | undefined; @@ -4834,20 +4523,20 @@ export type TargetReleaseProfileStateGcpResource = { /** * GCP IAM condition */ -export type TargetReleaseProfileConditionState = { +export type PreparedStackProfileConditionStateStack = { expression: string; title: string; }; -export type TargetReleaseProfileStateConditionUnion = - | TargetReleaseProfileConditionState +export type PreparedStackProfileStateStackConditionUnion = + | PreparedStackProfileConditionStateStack | any; /** * GCP-specific binding specification */ -export type SyncReconcileRequestTargetReleaseProfileGcpStack = { - condition?: TargetReleaseProfileConditionState | any | null | undefined; +export type SyncReconcileRequestPreparedStackProfileGcpStack = { + condition?: PreparedStackProfileConditionStateStack | any | null | undefined; /** * Scope (project/resource level) */ @@ -4857,21 +4546,21 @@ export type SyncReconcileRequestTargetReleaseProfileGcpStack = { /** * Generic binding configuration for permissions */ -export type SyncReconcileRequestTargetReleaseProfileGcpBinding = { +export type SyncReconcileRequestPreparedStackProfileGcpBinding = { /** * GCP-specific binding specification */ - resource?: TargetReleaseProfileStateGcpResource | undefined; + resource?: PreparedStackProfileStateGcpResource | undefined; /** * GCP-specific binding specification */ - stack?: SyncReconcileRequestTargetReleaseProfileGcpStack | undefined; + stack?: SyncReconcileRequestPreparedStackProfileGcpStack | undefined; }; /** * Grant permissions for a specific cloud platform */ -export type SyncReconcileRequestTargetReleaseProfileGcpGrant = { +export type SyncReconcileRequestPreparedStackProfileGcpGrant = { /** * AWS IAM actions (only for AWS) */ @@ -4897,11 +4586,11 @@ export type SyncReconcileRequestTargetReleaseProfileGcpGrant = { /** * GCP-specific platform permission configuration */ -export type SyncReconcileRequestTargetReleaseProfileGcp = { +export type SyncReconcileRequestPreparedStackProfileGcp = { /** * Generic binding configuration for permissions */ - binding: SyncReconcileRequestTargetReleaseProfileGcpBinding; + binding: SyncReconcileRequestPreparedStackProfileGcpBinding; /** * Short admin-facing description of why this entry exists. */ @@ -4909,7 +4598,7 @@ export type SyncReconcileRequestTargetReleaseProfileGcp = { /** * Grant permissions for a specific cloud platform */ - grant: SyncReconcileRequestTargetReleaseProfileGcpGrant; + grant: SyncReconcileRequestPreparedStackProfileGcpGrant; /** * Stable admin-facing label for this permission entry. */ @@ -4919,28 +4608,28 @@ export type SyncReconcileRequestTargetReleaseProfileGcp = { /** * Platform-specific permission configurations */ -export type SyncReconcileRequestTargetReleaseProfilePlatforms = { +export type SyncReconcileRequestPreparedStackProfilePlatforms = { /** * AWS permission configurations */ - aws?: Array | null | undefined; + aws?: Array | null | undefined; /** * Azure permission configurations */ azure?: - | Array + | Array | null | undefined; /** * GCP permission configurations */ - gcp?: Array | null | undefined; + gcp?: Array | null | undefined; }; /** * A permission set that can be applied across different cloud platforms */ -export type SyncReconcileRequestTargetReleaseProfile = { +export type SyncReconcileRequestPreparedStackProfile = { /** * Human-readable description of what this permission set allows */ @@ -4952,27 +4641,27 @@ export type SyncReconcileRequestTargetReleaseProfile = { /** * Platform-specific permission configurations */ - platforms: SyncReconcileRequestTargetReleaseProfilePlatforms; + platforms: SyncReconcileRequestPreparedStackProfilePlatforms; }; /** * Reference to a permission set - either by name or inline definition */ -export type SyncReconcileRequestTargetReleaseProfileUnion = - | SyncReconcileRequestTargetReleaseProfile +export type SyncReconcileRequestPreparedStackProfileUnion = + | SyncReconcileRequestPreparedStackProfile | string; /** * Combined permissions configuration that contains both profiles and management */ -export type SyncReconcileRequestTargetReleasePermissions = { +export type SyncReconcileRequestPreparedStackPermissions = { /** * Management permissions configuration for stack management access */ management?: - | SyncReconcileRequestTargetReleaseManagement1 - | SyncReconcileRequestTargetReleaseManagement2 - | SyncReconcileRequestTargetReleaseManagementEnum + | SyncReconcileRequestPreparedStackManagement1 + | SyncReconcileRequestPreparedStackManagement2 + | SyncReconcileRequestPreparedStackManagementEnum | undefined; /** * Permission profiles that define access control for compute services @@ -4982,7 +4671,7 @@ export type SyncReconcileRequestTargetReleasePermissions = { */ profiles: { [k: string]: { - [k: string]: Array; + [k: string]: Array; }; }; }; @@ -4990,7 +4679,7 @@ export type SyncReconcileRequestTargetReleasePermissions = { /** * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. */ -export type SyncReconcileRequestTargetReleaseConfig = { +export type SyncReconcileRequestPreparedStackConfig = { /** * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. */ @@ -5005,7 +4694,7 @@ export type SyncReconcileRequestTargetReleaseConfig = { /** * Reference to a resource by its stable id and resource type. */ -export type SyncReconcileRequestTargetReleaseDependency = { +export type SyncReconcileRequestPreparedStackDependency = { id: string; /** * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. @@ -5016,33 +4705,44 @@ export type SyncReconcileRequestTargetReleaseDependency = { /** * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ -export const TargetReleaseStateLifecycle = { +export const PreparedStackStateLifecycle = { Frozen: "frozen", Live: "live", } as const; /** * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ -export type TargetReleaseStateLifecycle = ClosedEnum< - typeof TargetReleaseStateLifecycle +export type PreparedStackStateLifecycle = ClosedEnum< + typeof PreparedStackStateLifecycle >; -export type SyncReconcileRequestTargetReleaseResources = { +export type SyncReconcileRequestPreparedStackResources = { /** * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. */ - config: SyncReconcileRequestTargetReleaseConfig; + config: SyncReconcileRequestPreparedStackConfig; /** * Additional dependencies for this resource beyond those defined in the resource itself. * * @remarks * The total dependencies are: resource.get_dependencies() + this list */ - dependencies: Array; + dependencies: Array; + /** + * Id of the boolean stack input that decides whether this resource is + * + * @remarks + * 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. + */ + enabledWhen?: string | null | undefined; /** * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ - lifecycle: TargetReleaseStateLifecycle; + lifecycle: PreparedStackStateLifecycle; /** * Enable remote bindings for this resource (BYOB use case). * @@ -5056,7 +4756,7 @@ export type SyncReconcileRequestTargetReleaseResources = { /** * Represents the target cloud platform. */ -export const SyncReconcileRequestTargetReleaseSupportedPlatform = { +export const SyncReconcileRequestPreparedStackSupportedPlatform = { Aws: "aws", Gcp: "gcp", Azure: "azure", @@ -5068,14 +4768,14 @@ export const SyncReconcileRequestTargetReleaseSupportedPlatform = { /** * Represents the target cloud platform. */ -export type SyncReconcileRequestTargetReleaseSupportedPlatform = ClosedEnum< - typeof SyncReconcileRequestTargetReleaseSupportedPlatform +export type SyncReconcileRequestPreparedStackSupportedPlatform = ClosedEnum< + typeof SyncReconcileRequestPreparedStackSupportedPlatform >; /** * A bag of resources, unaware of any cloud. */ -export type SyncReconcileRequestTargetReleaseStack = { +export type SyncReconcileRequestPreparedStack = { /** * Unique identifier for the stack */ @@ -5083,131 +4783,169 @@ export type SyncReconcileRequestTargetReleaseStack = { /** * Input definitions required before setup or deployment can proceed. */ - inputs?: Array | undefined; + inputs?: Array | undefined; /** * Combined permissions configuration that contains both profiles and management */ - permissions?: SyncReconcileRequestTargetReleasePermissions | undefined; + permissions?: SyncReconcileRequestPreparedStackPermissions | undefined; /** * Map of resource IDs to their configurations and lifecycle settings */ - resources: { [k: string]: SyncReconcileRequestTargetReleaseResources }; + resources: { [k: string]: SyncReconcileRequestPreparedStackResources }; /** * Which platforms this stack supports. When None, all platforms are supported. */ supportedPlatforms?: - | Array + | Array | null | undefined; }; +export type SyncReconcileRequestPreparedStackUnion = + | SyncReconcileRequestPreparedStack + | any; + /** - * Release metadata - * - * @remarks - * - * Identifies a specific release version and includes the stack definition. - * The deployment engine uses this to track which release is currently deployed - * and which is the target. + * One-shot authority for a setup re-import to replace setup-owned resources. */ -export type SyncReconcileRequestTargetRelease = { +export type SyncReconcileRequestSetupUpdateAuthorization = { /** - * Short description of the release + * Frozen resource projection from the last successful deployment. */ - description?: string | null | undefined; + baselineFrozenDigest: string; /** - * Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no - * - * @remarks - * Alien-assigned release — the platform resolves a release from `version`. + * Unique revision used by persistence layers for compare-and-swap updates. */ - releaseId?: string | null | undefined; + nonce: string; /** - * A bag of resources, unaware of any cloud. + * Release whose stack was prepared by setup. */ - stack: SyncReconcileRequestTargetReleaseStack; + releaseId: string; /** - * Version string (e.g., 2.1.0) + * Exact setup artifact revision that authored this authority. */ - version?: string | null | undefined; + setupFingerprint: string; + /** + * Setup fingerprint contract version. + */ + setupFingerprintVersion: number; + /** + * Stable setup target recorded on the imported deployment. + */ + setupTarget: string; + /** + * Frozen resource projection prepared by the setup re-import. + */ + targetFrozenDigest: string; }; -export type SyncReconcileRequestTargetReleaseUnion = - | SyncReconcileRequestTargetRelease +export type SyncReconcileRequestSetupUpdateAuthorizationUnion = + | SyncReconcileRequestSetupUpdateAuthorization | any; /** - * Complete deployment state after step() execution + * Runtime metadata for deployment + * + * @remarks + * + * Stores deployment state that needs to persist across step calls. */ -export type SyncReconcileRequestState = { - currentRelease?: SyncReconcileRequestCurrentRelease | any | null | undefined; - environmentInfo?: - | SyncReconcileRequestEnvironmentInfoGcp - | SyncReconcileRequestEnvironmentInfoAzure - | SyncReconcileRequestEnvironmentInfoLocal - | SyncReconcileRequestEnvironmentInfoAws - | SyncReconcileRequestEnvironmentInfoTest - | any - | null - | undefined; - error?: SyncReconcileRequestError | any | null | undefined; +export type SyncReconcileRequestRuntimeMetadata = { /** - * Represents the target cloud platform. + * Actor that owns structural work during the initial setup phase. */ - platform: SyncReconcileRequestPlatform; + initialSetupAuthority?: SyncReconcileRequestInitialSetupAuthority | undefined; /** - * Protocol version for cross-actor compatibility. + * Hash of the environment variables snapshot that was last synced to the vault * * @remarks - * All actors (manager, push client, agent) check this before stepping. - * Mismatched versions produce a clear error instead of silent corruption. - * See docs/02-manager/10-deployment-protocol.md. + * Used to avoid redundant sync operations during incremental deployment */ - protocolVersion: number; + lastSyncedEnvVarsHash?: string | null | undefined; /** - * Whether a retry has been requested for a failed deployment + * Exact vault keys owned by the deployment secret synchronizer. This * * @remarks - * When true and status is a failed state, the deployment system will retry failed resources + * inventory lets a later snapshot delete removed keys without listing or + * touching unrelated values in the same vault. */ - retryRequested?: boolean | undefined; - runtimeMetadata?: - | SyncReconcileRequestRuntimeMetadata + lastSyncedSecretNames?: Array | undefined; + pendingPreparedStack?: + | SyncReconcileRequestPendingPreparedStack | any | null | undefined; - stackState?: SyncReconcileRequestStackState | any | null | undefined; /** - * Deployment status in the deployment lifecycle. + * Canonical resolved answers for inputs that gate Frozen resources, * * @remarks + * keyed by input id, recorded when the deployment is created or its + * setup import registers. * - * For observe-only deployments with no release or stack state, `Running` - * means the Operator is attached. Connectivity comes from `lastHeartbeatAt`; - * resource health comes from inventory and resource heartbeat data. + * A frozen gate's answer is fixed for the deployment's lifetime: the + * update path refuses input values that conflict with these, and a Live + * resource sharing such an input resolves the persisted answer forever. */ - status: StateStatus; - targetRelease?: SyncReconcileRequestTargetRelease | any | null | undefined; + persistedGateAnswers?: { [k: string]: boolean } | undefined; + preparedStack?: SyncReconcileRequestPreparedStack | any | null | undefined; + /** + * Whether cross-account registry access has been successfully granted. + * + * @remarks + * Set to true after the manager successfully sets the ECR/GAR repo policy + * for this deployment's target account. Prevents redundant API calls on + * every reconcile tick. + */ + registryAccessGranted?: boolean | undefined; + setupUpdateAuthorization?: + | SyncReconcileRequestSetupUpdateAuthorization + | any + | null + | undefined; }; -export const ResourceHeartbeatBackendEnum = { +export type SyncReconcileRequestRuntimeMetadataUnion = + | SyncReconcileRequestRuntimeMetadata + | any; + +/** + * Represents the target cloud platform. + */ +export const SyncReconcileRequestStackStatePlatform = { Aws: "aws", Gcp: "gcp", Azure: "azure", Kubernetes: "kubernetes", + Machines: "machines", Local: "local", - Managed: "managed", - External: "external", Test: "test", } as const; -export type ResourceHeartbeatBackendEnum = ClosedEnum< - typeof ResourceHeartbeatBackendEnum +/** + * Represents the target cloud platform. + */ +export type SyncReconcileRequestStackStatePlatform = ClosedEnum< + typeof SyncReconcileRequestStackStatePlatform >; +/** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ +export type SyncReconcileRequestStackStateConfig = { + /** + * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. + */ + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; +}; + /** * Represents the target cloud platform. */ -export const ResourceHeartbeatControllerPlatform = { +export const ControllerPlatformStateEnum = { Aws: "aws", Gcp: "gcp", Azure: "azure", @@ -5219,1436 +4957,1924 @@ export const ResourceHeartbeatControllerPlatform = { /** * Represents the target cloud platform. */ -export type ResourceHeartbeatControllerPlatform = ClosedEnum< - typeof ResourceHeartbeatControllerPlatform +export type ControllerPlatformStateEnum = ClosedEnum< + typeof ControllerPlatformStateEnum >; -export const DataReason65 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type DataReason65 = ClosedEnum; +export type StateControllerPlatformUnion = ControllerPlatformStateEnum | any; -export const StatusSeverity65 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type StatusSeverity65 = ClosedEnum; +/** + * Reference to a resource by its stable id and resource type. + */ +export type SyncReconcileRequestStackStateDependency = { + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; +}; -export type DataCollectionIssue65 = { +/** + * Canonical error container that provides a structured way to represent errors + * + * @remarks + * with rich metadata including error codes, human-readable messages, context, + * and chaining capabilities for error propagation. + * + * This struct is designed to be both machine-readable and user-friendly, + * supporting serialization for API responses and detailed error reporting + * in distributed systems. + */ +export type SyncReconcileRequestStackStateError = { + /** + * A unique identifier for the type of error. + * + * @remarks + * + * This should be a short, machine-readable string that can be used + * by clients to programmatically handle different error types. + * Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" + */ + code: string; + /** + * Additional diagnostic information about the error context. + * + * @remarks + * + * This optional field can contain structured data providing more details + * about the error, such as validation errors, request parameters that + * caused the issue, or other relevant context information. + */ + context?: any | null | undefined; + /** + * Optional human-facing remediation hint. + */ + hint?: string | null | undefined; + /** + * HTTP status code for this error. + * + * @remarks + * + * Used when converting the error to an HTTP response. If None, falls back to + * the error type's default status code or 500. + */ + httpStatusCode?: number | null | undefined; + /** + * Indicates if this is an internal error that should not be exposed to users. + * + * @remarks + * + * When `true`, this error contains sensitive information or implementation + * details that should not be shown to end-users. Such errors should be + * logged for debugging but replaced with generic error messages in responses. + */ + internal: boolean; + /** + * Human-readable error message. + * + * @remarks + * + * This message should be clear and actionable for developers or end-users, + * providing context about what went wrong and potentially how to fix it. + */ message: string; - reason: DataReason65; - severity: StatusSeverity65; - source: string; + /** + * Indicates whether the operation that caused the error should be retried. + * + * @remarks + * + * When `true`, the error is transient and the operation might succeed + * if attempted again. When `false`, retrying the same operation is + * unlikely to succeed without changes. + */ + retryable?: boolean | undefined; + /** + * The underlying error that caused this error, creating an error chain. + * + * @remarks + * + * This allows for proper error propagation and debugging by maintaining + * the full context of how an error occurred through multiple layers + * of an application. + */ + source?: any | null | undefined; }; -export const DataHealth65 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type DataHealth65 = ClosedEnum; +export type SyncReconcileRequestStackStateErrorUnion = + | SyncReconcileRequestStackStateError + | any; -export const StatusLifecycle65 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", +/** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ +export const StackStateLifecycleStateEnum = { + Frozen: "frozen", + Live: "live", } as const; -export type StatusLifecycle65 = ClosedEnum; - -export type ResourceHeartbeatStatus65 = { - collectionIssues: Array; - health: DataHealth65; - lifecycle: StatusLifecycle65; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; +/** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ +export type StackStateLifecycleStateEnum = ClosedEnum< + typeof StackStateLifecycleStateEnum +>; -export type SyncReconcileRequestData5 = { - createdAt?: string | null | undefined; - disableLocalAuth?: boolean | null | undefined; - location?: string | null | undefined; - metricId?: string | null | undefined; - minimumTlsVersion?: string | null | undefined; - name: string; - namespaceStatus?: string | null | undefined; - premiumMessagingPartitions?: number | null | undefined; - privateEndpointConnectionCount: number; - provisioningState?: string | null | undefined; - publicNetworkAccess?: string | null | undefined; - resourceGroup?: string | null | undefined; - resourceId?: string | null | undefined; - serviceBusEndpoint?: string | null | undefined; - skuCapacity?: number | null | undefined; - skuName?: string | null | undefined; - skuTier?: string | null | undefined; - status: ResourceHeartbeatStatus65; - updatedAt?: string | null | undefined; - zoneRedundant?: boolean | null | undefined; -}; +export type StateLifecycleUnion = StackStateLifecycleStateEnum | any; -export type DataAzureServiceBusNamespace = { - data: SyncReconcileRequestData5; - resourceType: "azure_service_bus_namespace"; +/** + * Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties. + */ +export type SyncReconcileRequestOutputs = { + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; }; -export const DataReason64 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type DataReason64 = ClosedEnum; - -export const StatusSeverity64 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type StatusSeverity64 = ClosedEnum; +export type SyncReconcileRequestOutputsUnion = + | SyncReconcileRequestOutputs + | any; -export type DataCollectionIssue64 = { - message: string; - reason: DataReason64; - severity: StatusSeverity64; - source: string; +/** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ +export type SyncReconcileRequestPreviousConfig = { + /** + * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. + */ + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; }; -export const DataHealth64 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type DataHealth64 = ClosedEnum; +export type SyncReconcileRequestPreviousConfigUnion = + | SyncReconcileRequestPreviousConfig + | any; -export const StatusLifecycle64 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", +/** + * Represents the high-level status of a resource during its lifecycle. + */ +export const StackStateStateStatus = { + Pending: "pending", + Provisioning: "provisioning", + ProvisionFailed: "provision-failed", Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", + Updating: "updating", + UpdateFailed: "update-failed", Deleting: "deleting", + DeleteFailed: "delete-failed", + TeardownRequired: "teardown-required", Deleted: "deleted", - Failed: "failed", + RefreshFailed: "refresh-failed", } as const; -export type StatusLifecycle64 = ClosedEnum; - -export type ResourceHeartbeatStatus64 = { - collectionIssues: Array; - health: DataHealth64; - lifecycle: StatusLifecycle64; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type WorkloadProfile = { - maximumCount?: number | null | undefined; - minimumCount?: number | null | undefined; - name: string; - workloadProfileType: string; -}; - -export type SyncReconcileRequestData4 = { - customDomainVerificationId?: string | null | undefined; - defaultDomain?: string | null | undefined; - eventStreamEndpoint?: string | null | undefined; - infrastructureResourceGroup?: string | null | undefined; - kind?: string | null | undefined; - location?: string | null | undefined; - name: string; - provisioningState?: string | null | undefined; - resourceGroup?: string | null | undefined; - resourceId?: string | null | undefined; - staticIp?: string | null | undefined; - status: ResourceHeartbeatStatus64; - workloadProfileCount: number; - workloadProfiles: Array; - zoneRedundant?: boolean | null | undefined; -}; +/** + * Represents the high-level status of a resource during its lifecycle. + */ +export type StackStateStateStatus = ClosedEnum; -export type DataAzureContainerAppsEnvironment = { - data: SyncReconcileRequestData4; - resourceType: "azure_container_apps_environment"; +/** + * Represents the state of a single resource within the stack for a specific platform. + */ +export type SyncReconcileRequestStackStateResources = { + /** + * The platform-specific resource controller that manages this resource's lifecycle. + * + * @remarks + * This is None when the resource status is Pending. + * Stored as JSON to make the struct serializable and movable to alien-core. + */ + internal?: any | null | undefined; + /** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ + config: SyncReconcileRequestStackStateConfig; + controllerPlatform?: ControllerPlatformStateEnum | any | null | undefined; + /** + * Complete list of dependencies for this resource, including infrastructure dependencies. + * + * @remarks + * This preserves the full dependency information from the stack definition. + */ + dependencies?: Array | undefined; + error?: SyncReconcileRequestStackStateError | any | null | undefined; + /** + * Stores the controller state that failed, used for manual retry operations. + * + * @remarks + * This allows resuming from the exact point where the failure occurred. + * Stored as JSON to make the struct serializable and movable to alien-core. + */ + lastFailedState?: any | null | undefined; + lifecycle?: StackStateLifecycleStateEnum | any | null | undefined; + outputs?: SyncReconcileRequestOutputs | any | null | undefined; + previousConfig?: SyncReconcileRequestPreviousConfig | any | null | undefined; + /** + * Binding parameters for remote access. + * + * @remarks + * Only populated when the resource has `remote_access: true` in its ResourceEntry. + * This is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding). + * Populated by controllers during provisioning using get_binding_params(). + */ + remoteBindingParams?: any | null | undefined; + /** + * Tracks consecutive retry attempts for the current state transition. + */ + retryAttempt?: number | undefined; + /** + * Represents the high-level status of a resource during its lifecycle. + */ + status: StackStateStateStatus; + /** + * The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE). + */ + type: string; }; -export type PrimaryEndpoints = { - blob?: string | null | undefined; - dfs?: string | null | undefined; - file?: string | null | undefined; - queue?: string | null | undefined; - table?: string | null | undefined; - web?: string | null | undefined; +/** + * Represents the collective state of all resources in a stack, including platform and pending actions. + */ +export type SyncReconcileRequestStackState = { + /** + * Represents the target cloud platform. + */ + platform: SyncReconcileRequestStackStatePlatform; + /** + * A prefix used for resource naming to ensure uniqueness across deployments. + */ + resourcePrefix: string; + /** + * The state of individual resources, keyed by resource ID. + */ + resources: { [k: string]: SyncReconcileRequestStackStateResources }; }; -export type SecondaryEndpoints = { - blob?: string | null | undefined; - dfs?: string | null | undefined; - file?: string | null | undefined; - queue?: string | null | undefined; - table?: string | null | undefined; - web?: string | null | undefined; -}; +export type SyncReconcileRequestStackStateUnion = + | SyncReconcileRequestStackState + | any; -export const DataReason63 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", +/** + * Deployment status in the deployment lifecycle. + * + * @remarks + * + * For observe-only deployments with no release or stack state, `Running` + * means the Operator is attached. Connectivity comes from `lastHeartbeatAt`; + * resource health comes from inventory and resource heartbeat data. + */ +export const StateStatus = { + Pending: "pending", + PreflightsFailed: "preflights-failed", + InitialSetup: "initial-setup", + InitialSetupFailed: "initial-setup-failed", + Provisioning: "provisioning", + WaitingForMachines: "waiting-for-machines", + ProvisioningFailed: "provisioning-failed", + Running: "running", + RefreshFailed: "refresh-failed", + UpdatePending: "update-pending", + Updating: "updating", + UpdateFailed: "update-failed", + DeletePending: "delete-pending", + Deleting: "deleting", + DeleteFailed: "delete-failed", + TeardownRequired: "teardown-required", + TeardownFailed: "teardown-failed", + Deleted: "deleted", + Error: "error", } as const; -export type DataReason63 = ClosedEnum; +/** + * Deployment status in the deployment lifecycle. + * + * @remarks + * + * For observe-only deployments with no release or stack state, `Running` + * means the Operator is attached. Connectivity comes from `lastHeartbeatAt`; + * resource health comes from inventory and resource heartbeat data. + */ +export type StateStatus = ClosedEnum; -export const StatusSeverity63 = { - Info: "info", - Warning: "warning", - Error: "error", +export const SyncReconcileRequestTargetReleaseTypeStringList = { + StringList: "stringList", } as const; -export type StatusSeverity63 = ClosedEnum; +export type SyncReconcileRequestTargetReleaseTypeStringList = ClosedEnum< + typeof SyncReconcileRequestTargetReleaseTypeStringList +>; -export type DataCollectionIssue63 = { - message: string; - reason: DataReason63; - severity: StatusSeverity63; - source: string; +export type SyncReconcileRequestTargetReleaseDefaultStringList = { + type: SyncReconcileRequestTargetReleaseTypeStringList; + /** + * String list default. + */ + value: Array; }; -export const DataHealth63 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type DataHealth63 = ClosedEnum; - -export const StatusLifecycle63 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", +export const SyncReconcileRequestTargetReleaseTypeBoolean = { + Boolean: "boolean", } as const; -export type StatusLifecycle63 = ClosedEnum; +export type SyncReconcileRequestTargetReleaseTypeBoolean = ClosedEnum< + typeof SyncReconcileRequestTargetReleaseTypeBoolean +>; -export type ResourceHeartbeatStatus63 = { - collectionIssues: Array; - health: DataHealth63; - lifecycle: StatusLifecycle63; - message?: string | null | undefined; - partial: boolean; - stale: boolean; +export type SyncReconcileRequestTargetReleaseDefaultBoolean = { + type: SyncReconcileRequestTargetReleaseTypeBoolean; + /** + * Boolean default. + */ + value: boolean; }; -export type SyncReconcileRequestData3 = { - allowBlobPublicAccess?: boolean | null | undefined; - allowSharedKeyAccess?: boolean | null | undefined; - encryptionKeySource?: string | null | undefined; - kind?: string | null | undefined; - location?: string | null | undefined; - minimumTlsVersion?: string | null | undefined; - name: string; - networkBypass?: string | null | undefined; - networkDefaultAction?: string | null | undefined; - networkIpRuleCount?: number | null | undefined; - networkResourceAccessRuleCount?: number | null | undefined; - networkVirtualNetworkRuleCount?: number | null | undefined; - primaryEndpoints: PrimaryEndpoints; - provisioningState?: string | null | undefined; - publicNetworkAccess?: string | null | undefined; - requireInfrastructureEncryption?: boolean | null | undefined; - resourceGroup?: string | null | undefined; - resourceId?: string | null | undefined; - secondaryEndpoints: SecondaryEndpoints; - skuName?: string | null | undefined; - skuTier?: string | null | undefined; - status: ResourceHeartbeatStatus63; - supportsHttpsTrafficOnly?: boolean | null | undefined; -}; +export const SyncReconcileRequestTargetReleaseTypeNumber = { + Number: "number", +} as const; +export type SyncReconcileRequestTargetReleaseTypeNumber = ClosedEnum< + typeof SyncReconcileRequestTargetReleaseTypeNumber +>; -export type DataAzureStorageAccount = { - data: SyncReconcileRequestData3; - resourceType: "azure_storage_account"; +export type SyncReconcileRequestTargetReleaseDefaultNumber = { + type: SyncReconcileRequestTargetReleaseTypeNumber; + /** + * Number default. + */ + value: string; }; -export const DataReason62 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type DataReason62 = ClosedEnum; - -export const StatusSeverity62 = { - Info: "info", - Warning: "warning", - Error: "error", +export const SyncReconcileRequestTargetReleaseTypeString = { + String: "string", } as const; -export type StatusSeverity62 = ClosedEnum; +export type SyncReconcileRequestTargetReleaseTypeString = ClosedEnum< + typeof SyncReconcileRequestTargetReleaseTypeString +>; -export type DataCollectionIssue62 = { - message: string; - reason: DataReason62; - severity: StatusSeverity62; - source: string; +export type SyncReconcileRequestTargetReleaseDefaultString = { + type: SyncReconcileRequestTargetReleaseTypeString; + /** + * String default. + */ + value: string; }; -export const DataHealth62 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type DataHealth62 = ClosedEnum; +export type SyncReconcileRequestTargetReleaseDefaultUnion = + | SyncReconcileRequestTargetReleaseDefaultString + | SyncReconcileRequestTargetReleaseDefaultNumber + | SyncReconcileRequestTargetReleaseDefaultBoolean + | SyncReconcileRequestTargetReleaseDefaultStringList + | any; -export const StatusLifecycle62 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", +/** + * Environment variable handling for a stack input mapping. + */ +export const SyncReconcileRequestTargetReleaseTypeEnvEnum = { + Plain: "plain", + Secret: "secret", } as const; -export type StatusLifecycle62 = ClosedEnum; +/** + * Environment variable handling for a stack input mapping. + */ +export type SyncReconcileRequestTargetReleaseTypeEnvEnum = ClosedEnum< + typeof SyncReconcileRequestTargetReleaseTypeEnvEnum +>; -export type ResourceHeartbeatStatus62 = { - collectionIssues: Array; - health: DataHealth62; - lifecycle: StatusLifecycle62; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; +export type SyncReconcileRequestTargetReleaseTypeUnion = + | SyncReconcileRequestTargetReleaseTypeEnvEnum + | any; -export type SyncReconcileRequestData2 = { - location?: string | null | undefined; - managedTags: { [k: string]: string }; +/** + * How a resolved stack input is injected into runtime environment variables. + */ +export type SyncReconcileRequestTargetReleaseEnv = { + /** + * Environment variable name. + */ name: string; - provisioningState?: string | null | undefined; - resourceId?: string | null | undefined; - status: ResourceHeartbeatStatus62; + /** + * Target resource IDs or patterns. None means every env-capable resource. + */ + targetResources?: Array | null | undefined; + type?: SyncReconcileRequestTargetReleaseTypeEnvEnum | any | null | undefined; }; -export type DataAzureResourceGroup = { - data: SyncReconcileRequestData2; - resourceType: "azure_resource_group"; -}; - -export const DataReason61 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type DataReason61 = ClosedEnum; - -export const StatusSeverity61 = { - Info: "info", - Warning: "warning", - Error: "error", +/** + * Primitive stack input kind. + */ +export const TargetReleaseStateKind = { + String: "string", + Secret: "secret", + Number: "number", + Integer: "integer", + Boolean: "boolean", + Enum: "enum", + StringList: "stringList", } as const; -export type StatusSeverity61 = ClosedEnum; - -export type DataCollectionIssue61 = { - message: string; - reason: DataReason61; - severity: StatusSeverity61; - source: string; -}; +/** + * Primitive stack input kind. + */ +export type TargetReleaseStateKind = ClosedEnum; -export const DataHealth61 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", +/** + * Represents the target cloud platform. + */ +export const SyncReconcileRequestTargetReleasePlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Machines: "machines", + Local: "local", + Test: "test", } as const; -export type DataHealth61 = ClosedEnum; +/** + * Represents the target cloud platform. + */ +export type SyncReconcileRequestTargetReleasePlatform = ClosedEnum< + typeof SyncReconcileRequestTargetReleasePlatform +>; -export const StatusLifecycle61 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", +/** + * Who can provide a stack input value. + */ +export const SyncReconcileRequestTargetReleaseProvidedBy = { + Developer: "developer", + Deployer: "deployer", } as const; -export type StatusLifecycle61 = ClosedEnum; +/** + * Who can provide a stack input value. + */ +export type SyncReconcileRequestTargetReleaseProvidedBy = ClosedEnum< + typeof SyncReconcileRequestTargetReleaseProvidedBy +>; -export type ResourceHeartbeatStatus61 = { - collectionIssues: Array; - health: DataHealth61; - lifecycle: StatusLifecycle61; - message?: string | null | undefined; - partial: boolean; - stale: boolean; +/** + * Portable stack input validation constraints. + */ +export type SyncReconcileRequestTargetReleaseValidation = { + /** + * Semantic format hint such as url. + */ + format?: string | null | undefined; + /** + * Maximum number. + */ + max?: string | null | undefined; + /** + * Maximum string-list items. + */ + maxItems?: number | null | undefined; + /** + * Maximum string length. + */ + maxLength?: number | null | undefined; + /** + * Minimum number. + */ + min?: string | null | undefined; + /** + * Minimum string-list items. + */ + minItems?: number | null | undefined; + /** + * Minimum string length. + */ + minLength?: number | null | undefined; + /** + * Portable whole-value regex pattern. + */ + pattern?: string | null | undefined; + /** + * Allowed string enum values. + */ + values?: Array | null | undefined; }; -export type DataAzureResourceProvider = { - namespace: string; - providerId?: string | null | undefined; - registered: boolean; - registrationPolicy?: string | null | undefined; - registrationState?: string | null | undefined; - resourceTypeCount: number; - status: ResourceHeartbeatStatus61; - backend: "azureResourceProvider"; +export type SyncReconcileRequestTargetReleaseValidationUnion = + | SyncReconcileRequestTargetReleaseValidation + | any; + +/** + * Stack input definition serialized into a release stack. + */ +export type SyncReconcileRequestTargetReleaseInput = { + default?: + | SyncReconcileRequestTargetReleaseDefaultString + | SyncReconcileRequestTargetReleaseDefaultNumber + | SyncReconcileRequestTargetReleaseDefaultBoolean + | SyncReconcileRequestTargetReleaseDefaultStringList + | any + | null + | undefined; + /** + * Human-facing helper text. + */ + description: string; + /** + * Runtime env-var mappings for v1 input resolution. + */ + env?: Array | undefined; + /** + * Stable input ID used by CLI/API calls. + */ + id: string; + /** + * Primitive stack input kind. + */ + kind: TargetReleaseStateKind; + /** + * Human-facing field label. + */ + label: string; + /** + * Example placeholder shown in UI. + */ + placeholder?: string | null | undefined; + /** + * Platforms where this input applies. + */ + platforms?: + | Array + | null + | undefined; + /** + * Who can provide this value. + */ + providedBy: Array; + /** + * Whether a resolved value is required before deployment can proceed. + */ + required: boolean; + validation?: + | SyncReconcileRequestTargetReleaseValidation + | any + | null + | undefined; }; -export const DataReason60 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", +export const SyncReconcileRequestTargetReleaseManagementEnum = { + Auto: "auto", } as const; -export type DataReason60 = ClosedEnum; +export type SyncReconcileRequestTargetReleaseManagementEnum = ClosedEnum< + typeof SyncReconcileRequestTargetReleaseManagementEnum +>; -export const StatusSeverity60 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type StatusSeverity60 = ClosedEnum; +/** + * AWS-specific binding specification + */ +export type TargetReleaseOverrideStateAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; -export type DataCollectionIssue60 = { - message: string; - reason: DataReason60; - severity: StatusSeverity60; - source: string; +/** + * AWS-specific binding specification + */ +export type SyncReconcileRequestTargetReleaseOverrideAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; }; -export const DataHealth60 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type DataHealth60 = ClosedEnum; +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileRequestTargetReleaseOverrideAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: TargetReleaseOverrideStateAwResource | undefined; + /** + * AWS-specific binding specification + */ + stack?: SyncReconcileRequestTargetReleaseOverrideAwStack | undefined; +}; -export const StatusLifecycle60 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", +/** + * IAM effect. Defaults to Allow. + */ +export const SyncReconcileRequestTargetReleaseOverrideEffect = { + Allow: "Allow", + Deny: "Deny", } as const; -export type StatusLifecycle60 = ClosedEnum; +/** + * IAM effect. Defaults to Allow. + */ +export type SyncReconcileRequestTargetReleaseOverrideEffect = ClosedEnum< + typeof SyncReconcileRequestTargetReleaseOverrideEffect +>; -export type ResourceHeartbeatStatus60 = { - collectionIssues: Array; - health: DataHealth60; - lifecycle: StatusLifecycle60; - message?: string | null | undefined; - partial: boolean; - stale: boolean; +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileRequestTargetReleaseOverrideAwGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; }; -export type DataGcpServiceUsage = { - enabled: boolean; - lastOperationName?: string | null | undefined; - projectId: string; - serviceName: string; - serviceResourceName?: string | null | undefined; - state?: string | null | undefined; - status: ResourceHeartbeatStatus60; - title?: string | null | undefined; - backend: "gcpServiceUsage"; +/** + * AWS-specific platform permission configuration + */ +export type SyncReconcileRequestTargetReleaseOverrideAw = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileRequestTargetReleaseOverrideAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: SyncReconcileRequestTargetReleaseOverrideEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileRequestTargetReleaseOverrideAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; }; -export type SyncReconcileRequestDataUnion15 = - | DataGcpServiceUsage - | DataAzureResourceProvider; - -export type DataServiceActivation = { - data: DataGcpServiceUsage | DataAzureResourceProvider; - resourceType: "service_activation"; +/** + * Azure-specific binding specification + */ +export type TargetReleaseOverrideStateAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; }; -export type InvolvedObject10 = { - apiVersion?: string | null | undefined; - fieldPath?: string | null | undefined; - kind?: string | null | undefined; - name?: string | null | undefined; - namespace?: string | null | undefined; - resourceVersion?: string | null | undefined; - uid?: string | null | undefined; +/** + * Azure-specific binding specification + */ +export type SyncReconcileRequestTargetReleaseOverrideAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; }; -export type InvolvedObjectUnion10 = InvolvedObject10 | any; +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileRequestTargetReleaseOverrideAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: TargetReleaseOverrideStateAzureResource | undefined; + /** + * Azure-specific binding specification + */ + stack?: SyncReconcileRequestTargetReleaseOverrideAzureStack | undefined; +}; -export type SyncReconcileRequestSource10 = { - component?: string | null | undefined; - host?: string | null | undefined; +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileRequestTargetReleaseOverrideAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; }; -export type SourceUnion10 = SyncReconcileRequestSource10 | any; +/** + * Azure-specific platform permission configuration + */ +export type SyncReconcileRequestTargetReleaseOverrideAzure = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileRequestTargetReleaseOverrideAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileRequestTargetReleaseOverrideAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; -export type SyncReconcileRequestEvent13 = { - count?: number | null | undefined; - eventTime?: Date | null | undefined; - firstTimestamp?: Date | null | undefined; - involvedObject?: InvolvedObject10 | any | null | undefined; - lastTimestamp?: Date | null | undefined; - message: string; - raw?: any | null | undefined; - reason: string; - source?: SyncReconcileRequestSource10 | any | null | undefined; - type?: string | null | undefined; +/** + * GCP IAM condition + */ +export type TargetReleaseOverrideConditionStateResource = { + expression: string; + title: string; }; -export const DataReason59 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type DataReason59 = ClosedEnum; +export type TargetReleaseOverrideStateResourceConditionUnion = + | TargetReleaseOverrideConditionStateResource + | any; -export const StatusSeverity59 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type StatusSeverity59 = ClosedEnum; +/** + * GCP-specific binding specification + */ +export type TargetReleaseOverrideStateGcpResource = { + condition?: + | TargetReleaseOverrideConditionStateResource + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; -export type DataCollectionIssue59 = { - message: string; - reason: DataReason59; - severity: StatusSeverity59; - source: string; +/** + * GCP IAM condition + */ +export type TargetReleaseOverrideConditionState = { + expression: string; + title: string; }; -export const DataHealth59 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type DataHealth59 = ClosedEnum; +export type TargetReleaseOverrideStateConditionUnion = + | TargetReleaseOverrideConditionState + | any; -export const StatusLifecycle59 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle59 = ClosedEnum; +/** + * GCP-specific binding specification + */ +export type SyncReconcileRequestTargetReleaseOverrideGcpStack = { + condition?: TargetReleaseOverrideConditionState | any | null | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; -export type ResourceHeartbeatStatus59 = { - collectionIssues: Array; - health: DataHealth59; - lifecycle: StatusLifecycle59; - message?: string | null | undefined; - partial: boolean; - stale: boolean; +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileRequestTargetReleaseOverrideGcpBinding = { + /** + * GCP-specific binding specification + */ + resource?: TargetReleaseOverrideStateGcpResource | undefined; + /** + * GCP-specific binding specification + */ + stack?: SyncReconcileRequestTargetReleaseOverrideGcpStack | undefined; }; -export type DataKubernetesJob = { - active?: number | null | undefined; - completionTime?: Date | null | undefined; - conditionCount: number; - events: Array; - failed?: number | null | undefined; - imageDigest?: string | null | undefined; - jobName: string; - namespace: string; - startTime?: Date | null | undefined; - status: ResourceHeartbeatStatus59; - succeeded?: number | null | undefined; - backend: "kubernetesJob"; +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileRequestTargetReleaseOverrideGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; }; -export const DataReason58 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type DataReason58 = ClosedEnum; +/** + * GCP-specific platform permission configuration + */ +export type SyncReconcileRequestTargetReleaseOverrideGcp = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileRequestTargetReleaseOverrideGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileRequestTargetReleaseOverrideGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; -export const StatusSeverity58 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type StatusSeverity58 = ClosedEnum; +/** + * Platform-specific permission configurations + */ +export type SyncReconcileRequestTargetReleaseOverridePlatforms = { + /** + * AWS permission configurations + */ + aws?: Array | null | undefined; + /** + * Azure permission configurations + */ + azure?: + | Array + | null + | undefined; + /** + * GCP permission configurations + */ + gcp?: Array | null | undefined; +}; -export type DataCollectionIssue58 = { - message: string; - reason: DataReason58; - severity: StatusSeverity58; - source: string; +/** + * A permission set that can be applied across different cloud platforms + */ +export type SyncReconcileRequestTargetReleaseOverride = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: SyncReconcileRequestTargetReleaseOverridePlatforms; }; -export const DataHealth58 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type DataHealth58 = ClosedEnum; +/** + * Reference to a permission set - either by name or inline definition + */ +export type SyncReconcileRequestTargetReleaseOverrideUnion = + | SyncReconcileRequestTargetReleaseOverride + | string; -export const StatusLifecycle58 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle58 = ClosedEnum; +export type SyncReconcileRequestTargetReleaseManagement2 = { + /** + * Permission profile that maps resources to permission sets + * + * @remarks + * Key can be "*" for all resources or resource name for specific resource + */ + override: { + [k: string]: Array; + }; +}; -export type ResourceHeartbeatStatus58 = { - collectionIssues: Array; - health: DataHealth58; - lifecycle: StatusLifecycle58; - message?: string | null | undefined; - partial: boolean; - stale: boolean; +/** + * AWS-specific binding specification + */ +export type TargetReleaseExtendStateAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; }; -export type DataAzureContainerApps2 = { - environmentVariableCount: number; - managedEnvironmentId: string; - managedIdentityId?: string | null | undefined; - resourceGroupName: string; - resourcePrefix?: string | null | undefined; - status: ResourceHeartbeatStatus58; - backend: "azureContainerApps"; +/** + * AWS-specific binding specification + */ +export type SyncReconcileRequestTargetReleaseExtendAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; }; -export const DataReason57 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type DataReason57 = ClosedEnum; +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileRequestTargetReleaseExtendAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: TargetReleaseExtendStateAwResource | undefined; + /** + * AWS-specific binding specification + */ + stack?: SyncReconcileRequestTargetReleaseExtendAwStack | undefined; +}; -export const StatusSeverity57 = { - Info: "info", - Warning: "warning", - Error: "error", +/** + * IAM effect. Defaults to Allow. + */ +export const SyncReconcileRequestTargetReleaseExtendEffect = { + Allow: "Allow", + Deny: "Deny", } as const; -export type StatusSeverity57 = ClosedEnum; +/** + * IAM effect. Defaults to Allow. + */ +export type SyncReconcileRequestTargetReleaseExtendEffect = ClosedEnum< + typeof SyncReconcileRequestTargetReleaseExtendEffect +>; -export type DataCollectionIssue57 = { - message: string; - reason: DataReason57; - severity: StatusSeverity57; - source: string; +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileRequestTargetReleaseExtendAwGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; }; -export const DataHealth57 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type DataHealth57 = ClosedEnum; - -export const StatusLifecycle57 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle57 = ClosedEnum; +/** + * AWS-specific platform permission configuration + */ +export type SyncReconcileRequestTargetReleaseExtendAw = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileRequestTargetReleaseExtendAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: SyncReconcileRequestTargetReleaseExtendEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileRequestTargetReleaseExtendAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; -export type ResourceHeartbeatStatus57 = { - collectionIssues: Array; - health: DataHealth57; - lifecycle: StatusLifecycle57; - message?: string | null | undefined; - partial: boolean; - stale: boolean; +/** + * Azure-specific binding specification + */ +export type TargetReleaseExtendStateAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; }; -export type DataGcpCloudBuild = { - buildConfigId: string; - environmentVariableCount: number; - location: string; - projectId: string; - serviceAccount?: string | null | undefined; - status: ResourceHeartbeatStatus57; - backend: "gcpCloudBuild"; +/** + * Azure-specific binding specification + */ +export type SyncReconcileRequestTargetReleaseExtendAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; }; -export const DataReason56 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type DataReason56 = ClosedEnum; +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileRequestTargetReleaseExtendAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: TargetReleaseExtendStateAzureResource | undefined; + /** + * Azure-specific binding specification + */ + stack?: SyncReconcileRequestTargetReleaseExtendAzureStack | undefined; +}; -export const StatusSeverity56 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type StatusSeverity56 = ClosedEnum; +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileRequestTargetReleaseExtendAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; -export type DataCollectionIssue56 = { - message: string; - reason: DataReason56; - severity: StatusSeverity56; - source: string; +/** + * Azure-specific platform permission configuration + */ +export type SyncReconcileRequestTargetReleaseExtendAzure = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileRequestTargetReleaseExtendAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileRequestTargetReleaseExtendAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; }; -export const DataHealth56 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type DataHealth56 = ClosedEnum; +/** + * GCP IAM condition + */ +export type TargetReleaseExtendConditionStateResource = { + expression: string; + title: string; +}; -export const StatusLifecycle56 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle56 = ClosedEnum; +export type TargetReleaseExtendStateResourceConditionUnion = + | TargetReleaseExtendConditionStateResource + | any; -export type ResourceHeartbeatStatus56 = { - collectionIssues: Array; - health: DataHealth56; - lifecycle: StatusLifecycle56; - message?: string | null | undefined; - partial: boolean; - stale: boolean; +/** + * GCP-specific binding specification + */ +export type TargetReleaseExtendStateGcpResource = { + condition?: + | TargetReleaseExtendConditionStateResource + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; }; -export type DataAwsCodeBuild = { - artifactsEncryptionDisabled?: boolean | null | undefined; - artifactsType?: string | null | undefined; - cloudWatchLogsStatus?: string | null | undefined; - computeType?: string | null | undefined; - created?: number | null | undefined; - description?: string | null | undefined; - encryptionKeyPresent: boolean; - environmentImage?: string | null | undefined; - environmentType?: string | null | undefined; - environmentVariableCount: number; - imagePullCredentialsType?: string | null | undefined; - lastModified?: number | null | undefined; - privilegedMode?: boolean | null | undefined; - projectArn?: string | null | undefined; - projectName: string; - queuedTimeoutInMinutes?: number | null | undefined; - s3LogsStatus?: string | null | undefined; - serviceRolePresent: boolean; - sourceType?: string | null | undefined; - status: ResourceHeartbeatStatus56; - timeoutInMinutes?: number | null | undefined; - backend: "awsCodeBuild"; +/** + * GCP IAM condition + */ +export type TargetReleaseExtendConditionState = { + expression: string; + title: string; }; -export type SyncReconcileRequestDataUnion14 = - | DataAwsCodeBuild - | DataGcpCloudBuild - | DataAzureContainerApps2 - | DataKubernetesJob; +export type TargetReleaseExtendStateConditionUnion = + | TargetReleaseExtendConditionState + | any; -export type DataBuild = { - data: - | DataAwsCodeBuild - | DataGcpCloudBuild - | DataAzureContainerApps2 - | DataKubernetesJob; - resourceType: "build"; +/** + * GCP-specific binding specification + */ +export type SyncReconcileRequestTargetReleaseExtendGcpStack = { + condition?: TargetReleaseExtendConditionState | any | null | undefined; + /** + * Scope (project/resource level) + */ + scope: string; }; -export const DataReason55 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type DataReason55 = ClosedEnum; - -export const StatusSeverity55 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type StatusSeverity55 = ClosedEnum; - -export type DataCollectionIssue55 = { - message: string; - reason: DataReason55; - severity: StatusSeverity55; - source: string; +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileRequestTargetReleaseExtendGcpBinding = { + /** + * GCP-specific binding specification + */ + resource?: TargetReleaseExtendStateGcpResource | undefined; + /** + * GCP-specific binding specification + */ + stack?: SyncReconcileRequestTargetReleaseExtendGcpStack | undefined; }; -export const DataHealth55 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type DataHealth55 = ClosedEnum; - -export const StatusLifecycle55 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle55 = ClosedEnum; +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileRequestTargetReleaseExtendGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; -export type ResourceHeartbeatStatus55 = { - collectionIssues: Array; - health: DataHealth55; - lifecycle: StatusLifecycle55; - message?: string | null | undefined; - partial: boolean; - stale: boolean; +/** + * GCP-specific platform permission configuration + */ +export type SyncReconcileRequestTargetReleaseExtendGcp = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileRequestTargetReleaseExtendGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileRequestTargetReleaseExtendGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; }; -export type DataLocal11 = { - reachable: boolean; - registryUrl: string; - status: ResourceHeartbeatStatus55; - backend: "local"; +/** + * Platform-specific permission configurations + */ +export type SyncReconcileRequestTargetReleaseExtendPlatforms = { + /** + * AWS permission configurations + */ + aws?: Array | null | undefined; + /** + * Azure permission configurations + */ + azure?: + | Array + | null + | undefined; + /** + * GCP permission configurations + */ + gcp?: Array | null | undefined; }; -export const DataReason54 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type DataReason54 = ClosedEnum; +/** + * A permission set that can be applied across different cloud platforms + */ +export type SyncReconcileRequestTargetReleaseExtend = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: SyncReconcileRequestTargetReleaseExtendPlatforms; +}; -export const StatusSeverity54 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type StatusSeverity54 = ClosedEnum; +/** + * Reference to a permission set - either by name or inline definition + */ +export type SyncReconcileRequestTargetReleaseExtendUnion = + | SyncReconcileRequestTargetReleaseExtend + | string; -export type DataCollectionIssue54 = { - message: string; - reason: DataReason54; - severity: StatusSeverity54; - source: string; +export type SyncReconcileRequestTargetReleaseManagement1 = { + /** + * Permission profile that maps resources to permission sets + * + * @remarks + * Key can be "*" for all resources or resource name for specific resource + */ + extend: { + [k: string]: Array; + }; }; -export const DataHealth54 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type DataHealth54 = ClosedEnum; - -export const StatusLifecycle54 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle54 = ClosedEnum; +/** + * Management permissions configuration for stack management access + */ +export type SyncReconcileRequestTargetReleaseManagementUnion = + | SyncReconcileRequestTargetReleaseManagement1 + | SyncReconcileRequestTargetReleaseManagement2 + | SyncReconcileRequestTargetReleaseManagementEnum; -export type ResourceHeartbeatStatus54 = { - collectionIssues: Array; - health: DataHealth54; - lifecycle: StatusLifecycle54; - message?: string | null | undefined; - partial: boolean; - stale: boolean; +/** + * AWS-specific binding specification + */ +export type TargetReleaseProfileStateAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; }; -export type DataAzureContainerRegistry = { - adminUserEnabled: boolean; - anonymousPullEnabled: boolean; - creationDate?: string | null | undefined; - dataEndpointEnabled?: boolean | null | undefined; - dataEndpointHostNames: Array; - encryptionKeyIdentifierPresent: boolean; - encryptionKeyVaultUriPresent: boolean; - encryptionStatus?: string | null | undefined; - ipRuleCount: number; - location: string; - loginServer?: string | null | undefined; - managedTagCount: number; - name: string; - networkRuleBypassOptions: string; - networkRuleDefaultAction?: string | null | undefined; - policiesPresent: boolean; - policyCount: number; - privateEndpointConnectionCount: number; - provisioningState?: string | null | undefined; - publicNetworkAccess: string; - resourceGroup: string; - resourceId?: string | null | undefined; - skuName: string; - skuTier?: string | null | undefined; - status: ResourceHeartbeatStatus54; - type?: string | null | undefined; - zoneRedundancy: string; - backend: "azureContainerRegistry"; +/** + * AWS-specific binding specification + */ +export type SyncReconcileRequestTargetReleaseProfileAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; }; -export const DataReason53 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type DataReason53 = ClosedEnum; - -export const StatusSeverity53 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type StatusSeverity53 = ClosedEnum; - -export type DataCollectionIssue53 = { - message: string; - reason: DataReason53; - severity: StatusSeverity53; - source: string; +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileRequestTargetReleaseProfileAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: TargetReleaseProfileStateAwResource | undefined; + /** + * AWS-specific binding specification + */ + stack?: SyncReconcileRequestTargetReleaseProfileAwStack | undefined; }; -export const DataHealth53 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type DataHealth53 = ClosedEnum; - -export const StatusLifecycle53 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", +/** + * IAM effect. Defaults to Allow. + */ +export const SyncReconcileRequestTargetReleaseProfileEffect = { + Allow: "Allow", + Deny: "Deny", } as const; -export type StatusLifecycle53 = ClosedEnum; +/** + * IAM effect. Defaults to Allow. + */ +export type SyncReconcileRequestTargetReleaseProfileEffect = ClosedEnum< + typeof SyncReconcileRequestTargetReleaseProfileEffect +>; -export type ResourceHeartbeatStatus53 = { - collectionIssues: Array; - health: DataHealth53; - lifecycle: StatusLifecycle53; - message?: string | null | undefined; - partial: boolean; - stale: boolean; +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileRequestTargetReleaseProfileAwGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; }; -export type DataGcpArtifactRegistry = { - cleanupPolicyCount: number; - cleanupPolicyDryRun?: boolean | null | undefined; - createTime?: string | null | undefined; +/** + * AWS-specific platform permission configuration + */ +export type SyncReconcileRequestTargetReleaseProfileAw = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileRequestTargetReleaseProfileAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ description?: string | null | undefined; - format?: string | null | undefined; - iamBindingCount: number; - iamPolicyEtagPresent: boolean; - iamRoles: Array; - kmsKeyNamePresent: boolean; - labelCount: number; - location: string; - mode?: string | null | undefined; - name?: string | null | undefined; - projectId: string; - pullServiceAccountEmail?: string | null | undefined; - pushServiceAccountEmail?: string | null | undefined; - repositoryId: string; - satisfiesPzs?: boolean | null | undefined; - sizeBytes?: string | null | undefined; - status: ResourceHeartbeatStatus53; - updateTime?: string | null | undefined; - backend: "gcpArtifactRegistry"; + /** + * IAM effect. Defaults to Allow. + */ + effect?: SyncReconcileRequestTargetReleaseProfileEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileRequestTargetReleaseProfileAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; }; -export type Repository = { - createdAt: number; - encryptionType?: string | null | undefined; - imageTagMutability?: string | null | undefined; - kmsKeyPresent: boolean; - registryId: string; - repositoryArn: string; - repositoryName: string; - repositoryUri: string; - scanOnPush?: boolean | null | undefined; +/** + * Azure-specific binding specification + */ +export type TargetReleaseProfileStateAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; }; -export const DataReason52 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type DataReason52 = ClosedEnum; - -export const StatusSeverity52 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type StatusSeverity52 = ClosedEnum; - -export type DataCollectionIssue52 = { - message: string; - reason: DataReason52; - severity: StatusSeverity52; - source: string; +/** + * Azure-specific binding specification + */ +export type SyncReconcileRequestTargetReleaseProfileAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; }; -export const DataHealth52 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type DataHealth52 = ClosedEnum; - -export const StatusLifecycle52 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle52 = ClosedEnum; - -export type ResourceHeartbeatStatus52 = { - collectionIssues: Array; - health: DataHealth52; - lifecycle: StatusLifecycle52; - message?: string | null | undefined; - partial: boolean; - stale: boolean; +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileRequestTargetReleaseProfileAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: TargetReleaseProfileStateAzureResource | undefined; + /** + * Azure-specific binding specification + */ + stack?: SyncReconcileRequestTargetReleaseProfileAzureStack | undefined; }; -export type DataAwsEcr = { - pullRoleArn?: string | null | undefined; - pushRoleArn?: string | null | undefined; - region: string; - registryId: string; - registryUri: string; - repositories: Array; - repositoriesTruncated: boolean; - repositoryCount: number; - repositoryPrefix: string; - status: ResourceHeartbeatStatus52; - backend: "awsEcr"; +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileRequestTargetReleaseProfileAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; }; -export type SyncReconcileRequestDataUnion13 = - | DataAwsEcr - | DataGcpArtifactRegistry - | DataAzureContainerRegistry - | DataLocal11; - -export type DataArtifactRegistry = { - data: - | DataAwsEcr - | DataGcpArtifactRegistry - | DataAzureContainerRegistry - | DataLocal11; - resourceType: "artifact-registry"; +/** + * Azure-specific platform permission configuration + */ +export type SyncReconcileRequestTargetReleaseProfileAzure = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileRequestTargetReleaseProfileAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileRequestTargetReleaseProfileAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; }; -export const DataReason51 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type DataReason51 = ClosedEnum; - -export const StatusSeverity51 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type StatusSeverity51 = ClosedEnum; - -export type DataCollectionIssue51 = { - message: string; - reason: DataReason51; - severity: StatusSeverity51; - source: string; +/** + * GCP IAM condition + */ +export type TargetReleaseProfileConditionStateResource = { + expression: string; + title: string; }; -export const DataHealth51 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type DataHealth51 = ClosedEnum; - -export const StatusLifecycle51 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle51 = ClosedEnum; +export type TargetReleaseProfileStateResourceConditionUnion = + | TargetReleaseProfileConditionStateResource + | any; -export type ResourceHeartbeatStatus51 = { - collectionIssues: Array; - health: DataHealth51; - lifecycle: StatusLifecycle51; - message?: string | null | undefined; - partial: boolean; - stale: boolean; +/** + * GCP-specific binding specification + */ +export type TargetReleaseProfileStateGcpResource = { + condition?: + | TargetReleaseProfileConditionStateResource + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; }; -export type DataAzureManagedIdentity2 = { - ficName?: string | null | undefined; - roleAssignmentIds: Array; - roleDefinitionId?: string | null | undefined; - status: ResourceHeartbeatStatus51; - tenantId?: string | null | undefined; - uamiClientId?: string | null | undefined; - uamiPrincipalId?: string | null | undefined; - uamiResourceId?: string | null | undefined; - backend: "azureManagedIdentity"; +/** + * GCP IAM condition + */ +export type TargetReleaseProfileConditionState = { + expression: string; + title: string; }; -export const DataReason50 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type DataReason50 = ClosedEnum; - -export const StatusSeverity50 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type StatusSeverity50 = ClosedEnum; +export type TargetReleaseProfileStateConditionUnion = + | TargetReleaseProfileConditionState + | any; -export type DataCollectionIssue50 = { - message: string; - reason: DataReason50; - severity: StatusSeverity50; - source: string; +/** + * GCP-specific binding specification + */ +export type SyncReconcileRequestTargetReleaseProfileGcpStack = { + condition?: TargetReleaseProfileConditionState | any | null | undefined; + /** + * Scope (project/resource level) + */ + scope: string; }; -export const DataHealth50 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type DataHealth50 = ClosedEnum; - -export const StatusLifecycle50 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle50 = ClosedEnum; - -export type ResourceHeartbeatStatus50 = { - collectionIssues: Array; - health: DataHealth50; - lifecycle: StatusLifecycle50; - message?: string | null | undefined; - partial: boolean; - stale: boolean; +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileRequestTargetReleaseProfileGcpBinding = { + /** + * GCP-specific binding specification + */ + resource?: TargetReleaseProfileStateGcpResource | undefined; + /** + * GCP-specific binding specification + */ + stack?: SyncReconcileRequestTargetReleaseProfileGcpStack | undefined; }; -export type DataGcpServiceAccount2 = { - impersonationGranted: boolean; - roleBound: boolean; - serviceAccountEmail?: string | null | undefined; - serviceAccountUniqueId?: string | null | undefined; - status: ResourceHeartbeatStatus50; - backend: "gcpServiceAccount"; +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileRequestTargetReleaseProfileGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; }; -export const DataReason49 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type DataReason49 = ClosedEnum; - -export const StatusSeverity49 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type StatusSeverity49 = ClosedEnum; - -export type DataCollectionIssue49 = { - message: string; - reason: DataReason49; - severity: StatusSeverity49; - source: string; +/** + * GCP-specific platform permission configuration + */ +export type SyncReconcileRequestTargetReleaseProfileGcp = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileRequestTargetReleaseProfileGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileRequestTargetReleaseProfileGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; }; -export const DataHealth49 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type DataHealth49 = ClosedEnum; - -export const StatusLifecycle49 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle49 = ClosedEnum; - -export type ResourceHeartbeatStatus49 = { - collectionIssues: Array; - health: DataHealth49; - lifecycle: StatusLifecycle49; - message?: string | null | undefined; - partial: boolean; - stale: boolean; +/** + * Platform-specific permission configurations + */ +export type SyncReconcileRequestTargetReleaseProfilePlatforms = { + /** + * AWS permission configurations + */ + aws?: Array | null | undefined; + /** + * Azure permission configurations + */ + azure?: + | Array + | null + | undefined; + /** + * GCP permission configurations + */ + gcp?: Array | null | undefined; }; -export type DataAwsIamRole2 = { - managementPermissionsApplied: boolean; - roleArn?: string | null | undefined; - roleName?: string | null | undefined; - status: ResourceHeartbeatStatus49; - backend: "awsIamRole"; +/** + * A permission set that can be applied across different cloud platforms + */ +export type SyncReconcileRequestTargetReleaseProfile = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: SyncReconcileRequestTargetReleaseProfilePlatforms; }; -export type SyncReconcileRequestDataUnion12 = - | DataAwsIamRole2 - | DataGcpServiceAccount2 - | DataAzureManagedIdentity2; +/** + * Reference to a permission set - either by name or inline definition + */ +export type SyncReconcileRequestTargetReleaseProfileUnion = + | SyncReconcileRequestTargetReleaseProfile + | string; -export type DataRemoteStackManagement = { - data: DataAwsIamRole2 | DataGcpServiceAccount2 | DataAzureManagedIdentity2; - resourceType: "remote-stack-management"; +/** + * Combined permissions configuration that contains both profiles and management + */ +export type SyncReconcileRequestTargetReleasePermissions = { + /** + * Management permissions configuration for stack management access + */ + management?: + | SyncReconcileRequestTargetReleaseManagement1 + | SyncReconcileRequestTargetReleaseManagement2 + | SyncReconcileRequestTargetReleaseManagementEnum + | undefined; + /** + * Permission profiles that define access control for compute services + * + * @remarks + * Key is the profile name, value is the permission configuration + */ + profiles: { + [k: string]: { + [k: string]: Array; + }; + }; }; -export const DataReason48 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type DataReason48 = ClosedEnum; - -export const StatusSeverity48 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type StatusSeverity48 = ClosedEnum; +/** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ +export type SyncReconcileRequestTargetReleaseConfig = { + /** + * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. + */ + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; +}; -export type DataCollectionIssue48 = { - message: string; - reason: DataReason48; - severity: StatusSeverity48; - source: string; +/** + * Reference to a resource by its stable id and resource type. + */ +export type SyncReconcileRequestTargetReleaseDependency = { + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; }; -export const DataHealth48 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", +/** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ +export const TargetReleaseStateLifecycle = { + Frozen: "frozen", + Live: "live", } as const; -export type DataHealth48 = ClosedEnum; +/** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ +export type TargetReleaseStateLifecycle = ClosedEnum< + typeof TargetReleaseStateLifecycle +>; -export const StatusLifecycle48 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", +export type SyncReconcileRequestTargetReleaseResources = { + /** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ + config: SyncReconcileRequestTargetReleaseConfig; + /** + * Additional dependencies for this resource beyond those defined in the resource itself. + * + * @remarks + * The total dependencies are: resource.get_dependencies() + this list + */ + dependencies: Array; + /** + * Id of the boolean stack input that decides whether this resource is + * + * @remarks + * 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. + */ + enabledWhen?: string | null | undefined; + /** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ + lifecycle: TargetReleaseStateLifecycle; + /** + * Enable remote bindings for this resource (BYOB use case). + * + * @remarks + * When true, binding params are synced to StackState's `remote_binding_params`. + * Default: false (prevents sensitive data in synced state). + */ + remoteAccess?: boolean | undefined; +}; + +/** + * Represents the target cloud platform. + */ +export const SyncReconcileRequestTargetReleaseSupportedPlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Machines: "machines", + Local: "local", + Test: "test", } as const; -export type StatusLifecycle48 = ClosedEnum; +/** + * Represents the target cloud platform. + */ +export type SyncReconcileRequestTargetReleaseSupportedPlatform = ClosedEnum< + typeof SyncReconcileRequestTargetReleaseSupportedPlatform +>; -export type ResourceHeartbeatStatus48 = { - collectionIssues: Array; - health: DataHealth48; - lifecycle: StatusLifecycle48; - message?: string | null | undefined; - partial: boolean; - stale: boolean; +/** + * A bag of resources, unaware of any cloud. + */ +export type SyncReconcileRequestTargetReleaseStack = { + /** + * Unique identifier for the stack + */ + id: string; + /** + * Input definitions required before setup or deployment can proceed. + */ + inputs?: Array | undefined; + /** + * Combined permissions configuration that contains both profiles and management + */ + permissions?: SyncReconcileRequestTargetReleasePermissions | undefined; + /** + * Map of resource IDs to their configurations and lifecycle settings + */ + resources: { [k: string]: SyncReconcileRequestTargetReleaseResources }; + /** + * Which platforms this stack supports. When None, all platforms are supported. + */ + supportedPlatforms?: + | Array + | null + | undefined; }; -export type DataAzureVnet = { - applicationGatewaySubnetName?: string | null | undefined; - cidrBlock?: string | null | undefined; - isByoVnet: boolean; - lastByoVnetVerificationErrorCode?: string | null | undefined; - location?: string | null | undefined; - natGatewayId?: string | null | undefined; - nsgId?: string | null | undefined; - privateEndpointSubnetName?: string | null | undefined; - privateSubnetName?: string | null | undefined; - publicIpId?: string | null | undefined; - publicSubnetName?: string | null | undefined; - resourceGroup?: string | null | undefined; - status: ResourceHeartbeatStatus48; - vnetName?: string | null | undefined; - vnetResourceId?: string | null | undefined; - backend: "azureVnet"; +/** + * Release metadata + * + * @remarks + * + * Identifies a specific release version and includes the stack definition. + * The deployment engine uses this to track which release is currently deployed + * and which is the target. + */ +export type SyncReconcileRequestTargetRelease = { + /** + * Short description of the release + */ + description?: string | null | undefined; + /** + * Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no + * + * @remarks + * Alien-assigned release — the platform resolves a release from `version`. + */ + releaseId?: string | null | undefined; + /** + * A bag of resources, unaware of any cloud. + */ + stack: SyncReconcileRequestTargetReleaseStack; + /** + * Version string (e.g., 2.1.0) + */ + version?: string | null | undefined; }; -export const DataReason47 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type DataReason47 = ClosedEnum; +export type SyncReconcileRequestTargetReleaseUnion = + | SyncReconcileRequestTargetRelease + | any; -export const StatusSeverity47 = { - Info: "info", - Warning: "warning", - Error: "error", +/** + * Complete deployment state after step() execution + */ +export type SyncReconcileRequestState = { + currentRelease?: SyncReconcileRequestCurrentRelease | any | null | undefined; + environmentInfo?: + | SyncReconcileRequestEnvironmentInfoGcp + | SyncReconcileRequestEnvironmentInfoAzure + | SyncReconcileRequestEnvironmentInfoLocal + | SyncReconcileRequestEnvironmentInfoAws + | SyncReconcileRequestEnvironmentInfoTest + | any + | null + | undefined; + error?: SyncReconcileRequestError | any | null | undefined; + /** + * Represents the target cloud platform. + */ + platform: SyncReconcileRequestPlatform; + /** + * Protocol version for cross-actor compatibility. + * + * @remarks + * All actors (manager, push client, agent) check this before stepping. + * Mismatched versions produce a clear error instead of silent corruption. + * See docs/02-manager/10-deployment-protocol.md. + */ + protocolVersion: number; + /** + * Whether a retry has been requested for a failed deployment + * + * @remarks + * When true and status is a failed state, the deployment system will retry failed resources + */ + retryRequested?: boolean | undefined; + runtimeMetadata?: + | SyncReconcileRequestRuntimeMetadata + | any + | null + | undefined; + stackState?: SyncReconcileRequestStackState | any | null | undefined; + /** + * Deployment status in the deployment lifecycle. + * + * @remarks + * + * For observe-only deployments with no release or stack state, `Running` + * means the Operator is attached. Connectivity comes from `lastHeartbeatAt`; + * resource health comes from inventory and resource heartbeat data. + */ + status: StateStatus; + targetRelease?: SyncReconcileRequestTargetRelease | any | null | undefined; +}; + +export const ResourceHeartbeatBackendEnum = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Managed: "managed", + External: "external", + Test: "test", } as const; -export type StatusSeverity47 = ClosedEnum; +export type ResourceHeartbeatBackendEnum = ClosedEnum< + typeof ResourceHeartbeatBackendEnum +>; -export type DataCollectionIssue47 = { - message: string; - reason: DataReason47; - severity: StatusSeverity47; - source: string; -}; +/** + * Represents the target cloud platform. + */ +export const ResourceHeartbeatControllerPlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Machines: "machines", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type ResourceHeartbeatControllerPlatform = ClosedEnum< + typeof ResourceHeartbeatControllerPlatform +>; -export const DataHealth47 = { +export const DataHealth72 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type DataHealth47 = ClosedEnum; +export type DataHealth72 = ClosedEnum; -export const StatusLifecycle47 = { +export const StatusLifecycle72 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -6660,64 +6886,37 @@ export const StatusLifecycle47 = { Deleted: "deleted", Failed: "failed", } as const; -export type StatusLifecycle47 = ClosedEnum; +export type StatusLifecycle72 = ClosedEnum; -export type ResourceHeartbeatStatus47 = { - collectionIssues: Array; - health: DataHealth47; - lifecycle: StatusLifecycle47; +export type ResourceHeartbeatStatus72 = { + health: DataHealth72; + lifecycle: StatusLifecycle72; message?: string | null | undefined; - partial: boolean; - stale: boolean; }; -export type DataGcpVpc = { - cidrBlock?: string | null | undefined; - cloudNatName?: string | null | undefined; - firewallName?: string | null | undefined; - isByoVpc: boolean; - networkName?: string | null | undefined; - networkSelfLink?: string | null | undefined; - region?: string | null | undefined; - routerName?: string | null | undefined; - status: ResourceHeartbeatStatus47; - subnetworkName?: string | null | undefined; - subnetworkSelfLink?: string | null | undefined; - backend: "gcpVpc"; +export type SyncReconcileRequestData8 = { + enabled?: boolean | null | undefined; + keyId: string; + keyOperations: Array; + keyType: string; + recoveryLevel?: string | null | undefined; + status: ResourceHeartbeatStatus72; }; -export const DataReason46 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type DataReason46 = ClosedEnum; - -export const StatusSeverity46 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type StatusSeverity46 = ClosedEnum; - -export type DataCollectionIssue46 = { - message: string; - reason: DataReason46; - severity: StatusSeverity46; - source: string; +export type DataAzureKeyVault2 = { + data: SyncReconcileRequestData8; + provider: "azure-key-vault"; }; -export const DataHealth46 = { +export const DataHealth71 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type DataHealth46 = ClosedEnum; +export type DataHealth71 = ClosedEnum; -export const StatusLifecycle46 = { +export const StatusLifecycle71 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -6729,75 +6928,37 @@ export const StatusLifecycle46 = { Deleted: "deleted", Failed: "failed", } as const; -export type StatusLifecycle46 = ClosedEnum; +export type StatusLifecycle71 = ClosedEnum; -export type ResourceHeartbeatStatus46 = { - collectionIssues: Array; - health: DataHealth46; - lifecycle: StatusLifecycle46; +export type ResourceHeartbeatStatus71 = { + health: DataHealth71; + lifecycle: StatusLifecycle71; message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAwsVpc = { - availabilityZones: Array; - cidrBlock?: string | null | undefined; - internetGatewayId?: string | null | undefined; - isByoVpc: boolean; - natGatewayId?: string | null | undefined; - privateSubnetIds: Array; - publicSubnetIds: Array; - routeTableCount: number; - securityGroupId?: string | null | undefined; - status: ResourceHeartbeatStatus46; - vpcId?: string | null | undefined; - vpcState?: string | null | undefined; - backend: "awsVpc"; }; -export type SyncReconcileRequestDataUnion11 = - | DataAwsVpc - | DataGcpVpc - | DataAzureVnet; - -export type DataNetwork = { - data: DataAwsVpc | DataGcpVpc | DataAzureVnet; - resourceType: "network"; +export type SyncReconcileRequestData7 = { + algorithm?: string | null | undefined; + cryptoKeyName: string; + primaryState?: string | null | undefined; + primaryVersion?: string | null | undefined; + purpose: string; + status: ResourceHeartbeatStatus71; }; -export const DataReason45 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type DataReason45 = ClosedEnum; - -export const StatusSeverity45 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type StatusSeverity45 = ClosedEnum; - -export type DataCollectionIssue45 = { - message: string; - reason: DataReason45; - severity: StatusSeverity45; - source: string; +export type DataGcpCloudKms = { + data: SyncReconcileRequestData7; + provider: "gcp-cloud-kms"; }; -export const DataHealth45 = { +export const DataHealth70 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type DataHealth45 = ClosedEnum; +export type DataHealth70 = ClosedEnum; -export const StatusLifecycle45 = { +export const StatusLifecycle70 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -6809,56 +6970,164 @@ export const StatusLifecycle45 = { Deleted: "deleted", Failed: "failed", } as const; -export type StatusLifecycle45 = ClosedEnum; +export type StatusLifecycle70 = ClosedEnum; -export type ResourceHeartbeatStatus45 = { - collectionIssues: Array; - health: DataHealth45; - lifecycle: StatusLifecycle45; +export type ResourceHeartbeatStatus70 = { + health: DataHealth70; + lifecycle: StatusLifecycle70; message?: string | null | undefined; - partial: boolean; - stale: boolean; }; -export type DataLocal10 = { - configured: boolean; - identity: string; - status: ResourceHeartbeatStatus45; - backend: "local"; +export type SyncReconcileRequestData6 = { + enabled: boolean; + keyArn: string; + keySpec: string; + keyState: string; + keyUsage: string; + status: ResourceHeartbeatStatus70; }; -export const DataReason44 = { +export type DataAwsKms = { + data: SyncReconcileRequestData6; + provider: "aws-kms"; +}; + +export type SyncReconcileRequestDataUnion17 = + | DataAwsKms + | DataGcpCloudKms + | DataAzureKeyVault2; + +export type DataKey = { + data: DataAwsKms | DataGcpCloudKms | DataAzureKeyVault2; + resourceType: "key"; +}; + +export const SyncReconcileRequestAccessTest4 = { + Verified: "verified", + Failed: "failed", + NotChecked: "not-checked", +} as const; +export type SyncReconcileRequestAccessTest4 = ClosedEnum< + typeof SyncReconcileRequestAccessTest4 +>; + +export const SyncReconcileRequestModelAvailability4 = { + Available: "available", + Blocked: "blocked", + Unknown: "unknown", +} as const; +export type SyncReconcileRequestModelAvailability4 = ClosedEnum< + typeof SyncReconcileRequestModelAvailability4 +>; + +export const SyncReconcileRequestBlockerEnum4 = { + AgreementRequired: "agreement-required", + EntitlementRequired: "entitlement-required", + ModelActivationRequired: "model-activation-required", + DeploymentRequired: "deployment-required", + QuotaConfigurationRequired: "quota-configuration-required", + RegionUnavailable: "region-unavailable", + AccessDenied: "access-denied", + ObservationFailed: "observation-failed", +} as const; +export type SyncReconcileRequestBlockerEnum4 = ClosedEnum< + typeof SyncReconcileRequestBlockerEnum4 +>; + +/** + * A public API accepted from an application client. + */ +export const SyncReconcileRequestClientApi4 = { + OpenAiChatCompletions: "open-ai-chat-completions", + OpenAiResponses: "open-ai-responses", + AnthropicMessages: "anthropic-messages", +} as const; +/** + * A public API accepted from an application client. + */ +export type SyncReconcileRequestClientApi4 = ClosedEnum< + typeof SyncReconcileRequestClientApi4 +>; + +export type SyncReconcileRequestModel4 = { + accessTest: SyncReconcileRequestAccessTest4; + availability: SyncReconcileRequestModelAvailability4; + blockers: Array; + clientApis: Array; + errorCode?: string | null | undefined; + publicModelId: string; + testedAt?: Date | null | undefined; +}; + +/** + * Provider control plane used to observe model availability without invoking + * + * @remarks + * a model, spending customer quota, or accepting provider terms. + */ +export const SyncReconcileRequestAvailabilitySource4 = { + AwsBedrock: "aws-bedrock", + GcpVertex: "gcp-vertex", + AzureFoundry: "azure-foundry", + Anthropic: "anthropic", +} as const; +/** + * Provider control plane used to observe model availability without invoking + * + * @remarks + * a model, spending customer quota, or accepting provider terms. + */ +export type SyncReconcileRequestAvailabilitySource4 = ClosedEnum< + typeof SyncReconcileRequestAvailabilitySource4 +>; + +export type SyncReconcileRequestAvailability4 = { + catalogRevision: string; + location?: string | null | undefined; + models: Array; + /** + * Provider control plane used to observe model availability without invoking + * + * @remarks + * a model, spending customer quota, or accepting provider terms. + */ + source: SyncReconcileRequestAvailabilitySource4; +}; + +export type Availability = SyncReconcileRequestAvailability4 | any; + +export const DataReason69 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type DataReason44 = ClosedEnum; +export type DataReason69 = ClosedEnum; -export const StatusSeverity44 = { +export const StatusSeverity69 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type StatusSeverity44 = ClosedEnum; +export type StatusSeverity69 = ClosedEnum; -export type DataCollectionIssue44 = { +export type DataCollectionIssue69 = { message: string; - reason: DataReason44; - severity: StatusSeverity44; + reason: DataReason69; + severity: StatusSeverity69; source: string; }; -export const DataHealth44 = { +export const DataHealth69 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type DataHealth44 = ClosedEnum; +export type DataHealth69 = ClosedEnum; -export const StatusLifecycle44 = { +export const StatusLifecycle69 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -6870,69 +7139,154 @@ export const StatusLifecycle44 = { Deleted: "deleted", Failed: "failed", } as const; -export type StatusLifecycle44 = ClosedEnum; +export type StatusLifecycle69 = ClosedEnum; -export type ResourceHeartbeatStatus44 = { - collectionIssues: Array; - health: DataHealth44; - lifecycle: StatusLifecycle44; +export type ResourceHeartbeatStatus69 = { + collectionIssues: Array; + health: DataHealth69; + lifecycle: StatusLifecycle69; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataAzureManagedIdentity1 = { - clientId?: string | null | undefined; - customRoleDefinitionCount: number; - customRoleDefinitionIds: Array; - isolationScope?: string | null | undefined; - location: string; - managedTagCount: number; - name: string; - principalId?: string | null | undefined; - resourceGroup: string; - resourceId: string; - roleAssignmentCount: number; - roleAssignmentIds: Array; - stackPermissionsApplied: boolean; - status: ResourceHeartbeatStatus44; - tenantId?: string | null | undefined; - type?: string | null | undefined; - backend: "azureManagedIdentity"; +export type DataExternal = { + availability?: SyncReconcileRequestAvailability4 | any | null | undefined; + /** + * The BYO-key provider serving this binding (e.g. "openai"). Used on the Local + * + * @remarks + * platform, where the app brings its own provider key instead of an ambient cloud. + */ + provider: string; + status: ResourceHeartbeatStatus69; + backend: "external"; }; -export const DataReason43 = { +export const SyncReconcileRequestAccessTest3 = { + Verified: "verified", + Failed: "failed", + NotChecked: "not-checked", +} as const; +export type SyncReconcileRequestAccessTest3 = ClosedEnum< + typeof SyncReconcileRequestAccessTest3 +>; + +export const SyncReconcileRequestModelAvailability3 = { + Available: "available", + Blocked: "blocked", + Unknown: "unknown", +} as const; +export type SyncReconcileRequestModelAvailability3 = ClosedEnum< + typeof SyncReconcileRequestModelAvailability3 +>; + +export const SyncReconcileRequestBlockerEnum3 = { + AgreementRequired: "agreement-required", + EntitlementRequired: "entitlement-required", + ModelActivationRequired: "model-activation-required", + DeploymentRequired: "deployment-required", + QuotaConfigurationRequired: "quota-configuration-required", + RegionUnavailable: "region-unavailable", + AccessDenied: "access-denied", + ObservationFailed: "observation-failed", +} as const; +export type SyncReconcileRequestBlockerEnum3 = ClosedEnum< + typeof SyncReconcileRequestBlockerEnum3 +>; + +/** + * A public API accepted from an application client. + */ +export const SyncReconcileRequestClientApi3 = { + OpenAiChatCompletions: "open-ai-chat-completions", + OpenAiResponses: "open-ai-responses", + AnthropicMessages: "anthropic-messages", +} as const; +/** + * A public API accepted from an application client. + */ +export type SyncReconcileRequestClientApi3 = ClosedEnum< + typeof SyncReconcileRequestClientApi3 +>; + +export type SyncReconcileRequestModel3 = { + accessTest: SyncReconcileRequestAccessTest3; + availability: SyncReconcileRequestModelAvailability3; + blockers: Array; + clientApis: Array; + errorCode?: string | null | undefined; + publicModelId: string; + testedAt?: Date | null | undefined; +}; + +/** + * Provider control plane used to observe model availability without invoking + * + * @remarks + * a model, spending customer quota, or accepting provider terms. + */ +export const SyncReconcileRequestAvailabilitySource3 = { + AwsBedrock: "aws-bedrock", + GcpVertex: "gcp-vertex", + AzureFoundry: "azure-foundry", + Anthropic: "anthropic", +} as const; +/** + * Provider control plane used to observe model availability without invoking + * + * @remarks + * a model, spending customer quota, or accepting provider terms. + */ +export type SyncReconcileRequestAvailabilitySource3 = ClosedEnum< + typeof SyncReconcileRequestAvailabilitySource3 +>; + +export type SyncReconcileRequestAvailability3 = { + catalogRevision: string; + location?: string | null | undefined; + models: Array; + /** + * Provider control plane used to observe model availability without invoking + * + * @remarks + * a model, spending customer quota, or accepting provider terms. + */ + source: SyncReconcileRequestAvailabilitySource3; +}; + +export const DataReason68 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type DataReason43 = ClosedEnum; +export type DataReason68 = ClosedEnum; -export const StatusSeverity43 = { +export const StatusSeverity68 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type StatusSeverity43 = ClosedEnum; +export type StatusSeverity68 = ClosedEnum; -export type DataCollectionIssue43 = { +export type DataCollectionIssue68 = { message: string; - reason: DataReason43; - severity: StatusSeverity43; + reason: DataReason68; + severity: StatusSeverity68; source: string; }; -export const DataHealth43 = { +export const DataHealth68 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type DataHealth43 = ClosedEnum; +export type DataHealth68 = ClosedEnum; -export const StatusLifecycle43 = { +export const StatusLifecycle68 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -6944,67 +7298,151 @@ export const StatusLifecycle43 = { Deleted: "deleted", Failed: "failed", } as const; -export type StatusLifecycle43 = ClosedEnum; +export type StatusLifecycle68 = ClosedEnum; -export type ResourceHeartbeatStatus43 = { - collectionIssues: Array; - health: DataHealth43; - lifecycle: StatusLifecycle43; +export type ResourceHeartbeatStatus68 = { + collectionIssues: Array; + health: DataHealth68; + lifecycle: StatusLifecycle68; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataGcpServiceAccount1 = { - description?: string | null | undefined; - disabled?: boolean | null | undefined; - displayName?: string | null | undefined; - email: string; - etag?: string | null | undefined; - name?: string | null | undefined; - oauth2ClientId?: string | null | undefined; - projectBindingCount: number; - projectId?: string | null | undefined; - projectRoles: Array; - serviceAccountBindingCount: number; - serviceAccountRoles: Array; - status: ResourceHeartbeatStatus43; - uniqueId?: string | null | undefined; - backend: "gcpServiceAccount"; +export type DataAzureFoundry = { + accountName: string; + availability: SyncReconcileRequestAvailability3; + endpoint?: string | null | undefined; + location?: string | null | undefined; + resourceGroup?: string | null | undefined; + status: ResourceHeartbeatStatus68; + backend: "azureFoundry"; }; -export const DataReason42 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", +export const SyncReconcileRequestAccessTest2 = { + Verified: "verified", + Failed: "failed", + NotChecked: "not-checked", } as const; -export type DataReason42 = ClosedEnum; +export type SyncReconcileRequestAccessTest2 = ClosedEnum< + typeof SyncReconcileRequestAccessTest2 +>; -export const StatusSeverity42 = { +export const SyncReconcileRequestModelAvailability2 = { + Available: "available", + Blocked: "blocked", + Unknown: "unknown", +} as const; +export type SyncReconcileRequestModelAvailability2 = ClosedEnum< + typeof SyncReconcileRequestModelAvailability2 +>; + +export const SyncReconcileRequestBlockerEnum2 = { + AgreementRequired: "agreement-required", + EntitlementRequired: "entitlement-required", + ModelActivationRequired: "model-activation-required", + DeploymentRequired: "deployment-required", + QuotaConfigurationRequired: "quota-configuration-required", + RegionUnavailable: "region-unavailable", + AccessDenied: "access-denied", + ObservationFailed: "observation-failed", +} as const; +export type SyncReconcileRequestBlockerEnum2 = ClosedEnum< + typeof SyncReconcileRequestBlockerEnum2 +>; + +/** + * A public API accepted from an application client. + */ +export const SyncReconcileRequestClientApi2 = { + OpenAiChatCompletions: "open-ai-chat-completions", + OpenAiResponses: "open-ai-responses", + AnthropicMessages: "anthropic-messages", +} as const; +/** + * A public API accepted from an application client. + */ +export type SyncReconcileRequestClientApi2 = ClosedEnum< + typeof SyncReconcileRequestClientApi2 +>; + +export type SyncReconcileRequestModel2 = { + accessTest: SyncReconcileRequestAccessTest2; + availability: SyncReconcileRequestModelAvailability2; + blockers: Array; + clientApis: Array; + errorCode?: string | null | undefined; + publicModelId: string; + testedAt?: Date | null | undefined; +}; + +/** + * Provider control plane used to observe model availability without invoking + * + * @remarks + * a model, spending customer quota, or accepting provider terms. + */ +export const SyncReconcileRequestAvailabilitySource2 = { + AwsBedrock: "aws-bedrock", + GcpVertex: "gcp-vertex", + AzureFoundry: "azure-foundry", + Anthropic: "anthropic", +} as const; +/** + * Provider control plane used to observe model availability without invoking + * + * @remarks + * a model, spending customer quota, or accepting provider terms. + */ +export type SyncReconcileRequestAvailabilitySource2 = ClosedEnum< + typeof SyncReconcileRequestAvailabilitySource2 +>; + +export type SyncReconcileRequestAvailability2 = { + catalogRevision: string; + location?: string | null | undefined; + models: Array; + /** + * Provider control plane used to observe model availability without invoking + * + * @remarks + * a model, spending customer quota, or accepting provider terms. + */ + source: SyncReconcileRequestAvailabilitySource2; +}; + +export const DataReason67 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type DataReason67 = ClosedEnum; + +export const StatusSeverity67 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type StatusSeverity42 = ClosedEnum; +export type StatusSeverity67 = ClosedEnum; -export type DataCollectionIssue42 = { +export type DataCollectionIssue67 = { message: string; - reason: DataReason42; - severity: StatusSeverity42; + reason: DataReason67; + severity: StatusSeverity67; source: string; }; -export const DataHealth42 = { +export const DataHealth67 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type DataHealth42 = ClosedEnum; +export type DataHealth67 = ClosedEnum; -export const StatusLifecycle42 = { +export const StatusLifecycle67 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -7016,88 +7454,149 @@ export const StatusLifecycle42 = { Deleted: "deleted", Failed: "failed", } as const; -export type StatusLifecycle42 = ClosedEnum; +export type StatusLifecycle67 = ClosedEnum; -export type ResourceHeartbeatStatus42 = { - collectionIssues: Array; - health: DataHealth42; - lifecycle: StatusLifecycle42; +export type ResourceHeartbeatStatus67 = { + collectionIssues: Array; + health: DataHealth67; + lifecycle: StatusLifecycle67; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataAwsIamRole1 = { - assumeRolePolicyPresent: boolean; - attachedPolicyCount: number; - attachedPolicyNames: Array; - createDate: string; - description?: string | null | undefined; - inlinePolicyCount: number; - inlinePolicyNames: Array; - lastUsedDate?: string | null | undefined; - lastUsedRegion?: string | null | undefined; - managedTagCount: number; - maxSessionDuration?: number | null | undefined; - path: string; - permissionsBoundaryArn?: string | null | undefined; - permissionsBoundaryType?: string | null | undefined; - roleArn: string; - roleId: string; - roleName: string; - stackPermissionsApplied: boolean; - status: ResourceHeartbeatStatus42; - tagCount: number; - backend: "awsIamRole"; +export type DataGcpVertex = { + availability: SyncReconcileRequestAvailability2; + location: string; + project: string; + status: ResourceHeartbeatStatus67; + backend: "gcpVertex"; }; -export type SyncReconcileRequestDataUnion10 = - | DataAwsIamRole1 - | DataGcpServiceAccount1 - | DataAzureManagedIdentity1 - | DataLocal10; +export const SyncReconcileRequestAccessTest1 = { + Verified: "verified", + Failed: "failed", + NotChecked: "not-checked", +} as const; +export type SyncReconcileRequestAccessTest1 = ClosedEnum< + typeof SyncReconcileRequestAccessTest1 +>; -export type DataServiceAccount = { - data: - | DataAwsIamRole1 - | DataGcpServiceAccount1 - | DataAzureManagedIdentity1 - | DataLocal10; - resourceType: "service-account"; +export const SyncReconcileRequestModelAvailability1 = { + Available: "available", + Blocked: "blocked", + Unknown: "unknown", +} as const; +export type SyncReconcileRequestModelAvailability1 = ClosedEnum< + typeof SyncReconcileRequestModelAvailability1 +>; + +export const SyncReconcileRequestBlockerEnum1 = { + AgreementRequired: "agreement-required", + EntitlementRequired: "entitlement-required", + ModelActivationRequired: "model-activation-required", + DeploymentRequired: "deployment-required", + QuotaConfigurationRequired: "quota-configuration-required", + RegionUnavailable: "region-unavailable", + AccessDenied: "access-denied", + ObservationFailed: "observation-failed", +} as const; +export type SyncReconcileRequestBlockerEnum1 = ClosedEnum< + typeof SyncReconcileRequestBlockerEnum1 +>; + +/** + * A public API accepted from an application client. + */ +export const SyncReconcileRequestClientApi1 = { + OpenAiChatCompletions: "open-ai-chat-completions", + OpenAiResponses: "open-ai-responses", + AnthropicMessages: "anthropic-messages", +} as const; +/** + * A public API accepted from an application client. + */ +export type SyncReconcileRequestClientApi1 = ClosedEnum< + typeof SyncReconcileRequestClientApi1 +>; + +export type SyncReconcileRequestModel1 = { + accessTest: SyncReconcileRequestAccessTest1; + availability: SyncReconcileRequestModelAvailability1; + blockers: Array; + clientApis: Array; + errorCode?: string | null | undefined; + publicModelId: string; + testedAt?: Date | null | undefined; }; -export const DataReason41 = { +/** + * Provider control plane used to observe model availability without invoking + * + * @remarks + * a model, spending customer quota, or accepting provider terms. + */ +export const SyncReconcileRequestAvailabilitySource1 = { + AwsBedrock: "aws-bedrock", + GcpVertex: "gcp-vertex", + AzureFoundry: "azure-foundry", + Anthropic: "anthropic", +} as const; +/** + * Provider control plane used to observe model availability without invoking + * + * @remarks + * a model, spending customer quota, or accepting provider terms. + */ +export type SyncReconcileRequestAvailabilitySource1 = ClosedEnum< + typeof SyncReconcileRequestAvailabilitySource1 +>; + +export type SyncReconcileRequestAvailability1 = { + catalogRevision: string; + location?: string | null | undefined; + models: Array; + /** + * Provider control plane used to observe model availability without invoking + * + * @remarks + * a model, spending customer quota, or accepting provider terms. + */ + source: SyncReconcileRequestAvailabilitySource1; +}; + +export const DataReason66 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type DataReason41 = ClosedEnum; +export type DataReason66 = ClosedEnum; -export const StatusSeverity41 = { +export const StatusSeverity66 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type StatusSeverity41 = ClosedEnum; +export type StatusSeverity66 = ClosedEnum; -export type DataCollectionIssue41 = { +export type DataCollectionIssue66 = { message: string; - reason: DataReason41; - severity: StatusSeverity41; + reason: DataReason66; + severity: StatusSeverity66; source: string; }; -export const DataHealth41 = { +export const DataHealth66 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type DataHealth41 = ClosedEnum; +export type DataHealth66 = ClosedEnum; -export const StatusLifecycle41 = { +export const StatusLifecycle66 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -7109,60 +7608,67 @@ export const StatusLifecycle41 = { Deleted: "deleted", Failed: "failed", } as const; -export type StatusLifecycle41 = ClosedEnum; +export type StatusLifecycle66 = ClosedEnum; -export type ResourceHeartbeatStatus41 = { - collectionIssues: Array; - health: DataHealth41; - lifecycle: StatusLifecycle41; +export type ResourceHeartbeatStatus66 = { + collectionIssues: Array; + health: DataHealth66; + lifecycle: StatusLifecycle66; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataLocal9 = { - isDirectory?: boolean | null | undefined; - modifiedAt?: Date | null | undefined; - path: string; - pathExists: boolean; - readonly?: boolean | null | undefined; - secretMetadataListed: boolean; - status: ResourceHeartbeatStatus41; - backend: "local"; +export type DataAwsBedrock = { + availability: SyncReconcileRequestAvailability1; + region: string; + status: ResourceHeartbeatStatus66; + backend: "awsBedrock"; }; -export const DataReason40 = { +export type SyncReconcileRequestDataUnion16 = + | DataAwsBedrock + | DataGcpVertex + | DataAzureFoundry + | DataExternal; + +export type DataAi = { + data: DataAwsBedrock | DataGcpVertex | DataAzureFoundry | DataExternal; + resourceType: "ai"; +}; + +export const DataReason65 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type DataReason40 = ClosedEnum; +export type DataReason65 = ClosedEnum; -export const StatusSeverity40 = { +export const StatusSeverity65 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type StatusSeverity40 = ClosedEnum; +export type StatusSeverity65 = ClosedEnum; -export type DataCollectionIssue40 = { +export type DataCollectionIssue65 = { message: string; - reason: DataReason40; - severity: StatusSeverity40; + reason: DataReason65; + severity: StatusSeverity65; source: string; }; -export const DataHealth40 = { +export const DataHealth65 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type DataHealth40 = ClosedEnum; +export type DataHealth65 = ClosedEnum; -export const StatusLifecycle40 = { +export const StatusLifecycle65 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -7174,57 +7680,77 @@ export const StatusLifecycle40 = { Deleted: "deleted", Failed: "failed", } as const; -export type StatusLifecycle40 = ClosedEnum; +export type StatusLifecycle65 = ClosedEnum; -export type ResourceHeartbeatStatus40 = { - collectionIssues: Array; - health: DataHealth40; - lifecycle: StatusLifecycle40; +export type ResourceHeartbeatStatus65 = { + collectionIssues: Array; + health: DataHealth65; + lifecycle: StatusLifecycle65; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataKubernetesSecret = { - namespace: string; - prefix: string; - secretMetadataListed: boolean; - status: ResourceHeartbeatStatus40; - backend: "kubernetesSecret"; +export type SyncReconcileRequestData5 = { + createdAt?: string | null | undefined; + disableLocalAuth?: boolean | null | undefined; + location?: string | null | undefined; + metricId?: string | null | undefined; + minimumTlsVersion?: string | null | undefined; + name: string; + namespaceStatus?: string | null | undefined; + premiumMessagingPartitions?: number | null | undefined; + privateEndpointConnectionCount: number; + provisioningState?: string | null | undefined; + publicNetworkAccess?: string | null | undefined; + resourceGroup?: string | null | undefined; + resourceId?: string | null | undefined; + serviceBusEndpoint?: string | null | undefined; + skuCapacity?: number | null | undefined; + skuName?: string | null | undefined; + skuTier?: string | null | undefined; + status: ResourceHeartbeatStatus65; + updatedAt?: string | null | undefined; + zoneRedundant?: boolean | null | undefined; }; -export const DataReason39 = { +export type DataAzureServiceBusNamespace = { + data: SyncReconcileRequestData5; + resourceType: "azure_service_bus_namespace"; +}; + +export const DataReason64 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type DataReason39 = ClosedEnum; +export type DataReason64 = ClosedEnum; -export const StatusSeverity39 = { +export const StatusSeverity64 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type StatusSeverity39 = ClosedEnum; +export type StatusSeverity64 = ClosedEnum; -export type DataCollectionIssue39 = { +export type DataCollectionIssue64 = { message: string; - reason: DataReason39; - severity: StatusSeverity39; + reason: DataReason64; + severity: StatusSeverity64; source: string; }; -export const DataHealth39 = { +export const DataHealth64 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type DataHealth39 = ClosedEnum; +export type DataHealth64 = ClosedEnum; -export const StatusLifecycle39 = { +export const StatusLifecycle64 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -7236,70 +7762,97 @@ export const StatusLifecycle39 = { Deleted: "deleted", Failed: "failed", } as const; -export type StatusLifecycle39 = ClosedEnum; +export type StatusLifecycle64 = ClosedEnum; -export type ResourceHeartbeatStatus39 = { - collectionIssues: Array; - health: DataHealth39; - lifecycle: StatusLifecycle39; +export type ResourceHeartbeatStatus64 = { + collectionIssues: Array; + health: DataHealth64; + lifecycle: StatusLifecycle64; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataAzureKeyVault = { - accessPolicyCount: number; +export type WorkloadProfile = { + maximumCount?: number | null | undefined; + minimumCount?: number | null | undefined; + name: string; + workloadProfileType: string; +}; + +export type SyncReconcileRequestData4 = { + customDomainVerificationId?: string | null | undefined; + defaultDomain?: string | null | undefined; + eventStreamEndpoint?: string | null | undefined; + infrastructureResourceGroup?: string | null | undefined; + kind?: string | null | undefined; location?: string | null | undefined; name: string; - privateEndpointConnectionCount: number; provisioningState?: string | null | undefined; - publicNetworkAccess: string; - purgeProtectionEnabled?: boolean | null | undefined; - rbacAuthorizationEnabled: boolean; resourceGroup?: string | null | undefined; resourceId?: string | null | undefined; - secretMetadataListed: boolean; - skuFamily?: string | null | undefined; - skuName?: string | null | undefined; - softDeleteEnabled: boolean; - softDeleteRetentionDays: number; - status: ResourceHeartbeatStatus39; - vaultUri?: string | null | undefined; - backend: "azureKeyVault"; + staticIp?: string | null | undefined; + status: ResourceHeartbeatStatus64; + workloadProfileCount: number; + workloadProfiles: Array; + zoneRedundant?: boolean | null | undefined; }; -export const DataReason38 = { +export type DataAzureContainerAppsEnvironment = { + data: SyncReconcileRequestData4; + resourceType: "azure_container_apps_environment"; +}; + +export type PrimaryEndpoints = { + blob?: string | null | undefined; + dfs?: string | null | undefined; + file?: string | null | undefined; + queue?: string | null | undefined; + table?: string | null | undefined; + web?: string | null | undefined; +}; + +export type SecondaryEndpoints = { + blob?: string | null | undefined; + dfs?: string | null | undefined; + file?: string | null | undefined; + queue?: string | null | undefined; + table?: string | null | undefined; + web?: string | null | undefined; +}; + +export const DataReason63 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type DataReason38 = ClosedEnum; +export type DataReason63 = ClosedEnum; -export const StatusSeverity38 = { +export const StatusSeverity63 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type StatusSeverity38 = ClosedEnum; +export type StatusSeverity63 = ClosedEnum; -export type DataCollectionIssue38 = { +export type DataCollectionIssue63 = { message: string; - reason: DataReason38; - severity: StatusSeverity38; + reason: DataReason63; + severity: StatusSeverity63; source: string; }; -export const DataHealth38 = { +export const DataHealth63 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type DataHealth38 = ClosedEnum; +export type DataHealth63 = ClosedEnum; -export const StatusLifecycle38 = { +export const StatusLifecycle63 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -7311,58 +7864,80 @@ export const StatusLifecycle38 = { Deleted: "deleted", Failed: "failed", } as const; -export type StatusLifecycle38 = ClosedEnum; +export type StatusLifecycle63 = ClosedEnum; -export type ResourceHeartbeatStatus38 = { - collectionIssues: Array; - health: DataHealth38; - lifecycle: StatusLifecycle38; +export type ResourceHeartbeatStatus63 = { + collectionIssues: Array; + health: DataHealth63; + lifecycle: StatusLifecycle63; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataGcpSecretManager = { - location: string; - prefix: string; - projectId: string; - secretMetadataListed: boolean; - status: ResourceHeartbeatStatus38; - backend: "gcpSecretManager"; +export type SyncReconcileRequestData3 = { + allowBlobPublicAccess?: boolean | null | undefined; + allowSharedKeyAccess?: boolean | null | undefined; + encryptionKeySource?: string | null | undefined; + kind?: string | null | undefined; + location?: string | null | undefined; + minimumTlsVersion?: string | null | undefined; + name: string; + networkBypass?: string | null | undefined; + networkDefaultAction?: string | null | undefined; + networkIpRuleCount?: number | null | undefined; + networkResourceAccessRuleCount?: number | null | undefined; + networkVirtualNetworkRuleCount?: number | null | undefined; + primaryEndpoints: PrimaryEndpoints; + provisioningState?: string | null | undefined; + publicNetworkAccess?: string | null | undefined; + requireInfrastructureEncryption?: boolean | null | undefined; + resourceGroup?: string | null | undefined; + resourceId?: string | null | undefined; + secondaryEndpoints: SecondaryEndpoints; + skuName?: string | null | undefined; + skuTier?: string | null | undefined; + status: ResourceHeartbeatStatus63; + supportsHttpsTrafficOnly?: boolean | null | undefined; }; -export const DataReason37 = { +export type DataAzureStorageAccount = { + data: SyncReconcileRequestData3; + resourceType: "azure_storage_account"; +}; + +export const DataReason62 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type DataReason37 = ClosedEnum; +export type DataReason62 = ClosedEnum; -export const StatusSeverity37 = { +export const StatusSeverity62 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type StatusSeverity37 = ClosedEnum; +export type StatusSeverity62 = ClosedEnum; -export type DataCollectionIssue37 = { +export type DataCollectionIssue62 = { message: string; - reason: DataReason37; - severity: StatusSeverity37; + reason: DataReason62; + severity: StatusSeverity62; source: string; }; -export const DataHealth37 = { +export const DataHealth62 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type DataHealth37 = ClosedEnum; +export type DataHealth62 = ClosedEnum; -export const StatusLifecycle37 = { +export const StatusLifecycle62 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -7374,83 +7949,63 @@ export const StatusLifecycle37 = { Deleted: "deleted", Failed: "failed", } as const; -export type StatusLifecycle37 = ClosedEnum; +export type StatusLifecycle62 = ClosedEnum; -export type ResourceHeartbeatStatus37 = { - collectionIssues: Array; - health: DataHealth37; - lifecycle: StatusLifecycle37; +export type ResourceHeartbeatStatus62 = { + collectionIssues: Array; + health: DataHealth62; + lifecycle: StatusLifecycle62; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataAwsParameterStore = { - accountId: string; - hasMoreParameters?: boolean | null | undefined; - latestModifiedAt?: Date | null | undefined; - parameterMetadataSampled: boolean; - prefix: string; - region: string; - sampledAdvancedTierCount?: number | null | undefined; - sampledKmsKeyMetadataPresentCount?: number | null | undefined; - sampledParameterCount?: number | null | undefined; - sampledSecureStringCount?: number | null | undefined; - sampledStringCount?: number | null | undefined; - sampledStringListCount?: number | null | undefined; - status: ResourceHeartbeatStatus37; - backend: "awsParameterStore"; +export type SyncReconcileRequestData2 = { + location?: string | null | undefined; + managedTags: { [k: string]: string }; + name: string; + provisioningState?: string | null | undefined; + resourceId?: string | null | undefined; + status: ResourceHeartbeatStatus62; }; -export type SyncReconcileRequestDataUnion9 = - | DataAwsParameterStore - | DataGcpSecretManager - | DataAzureKeyVault - | DataKubernetesSecret - | DataLocal9; - -export type DataVault = { - data: - | DataAwsParameterStore - | DataGcpSecretManager - | DataAzureKeyVault - | DataKubernetesSecret - | DataLocal9; - resourceType: "vault"; +export type DataAzureResourceGroup = { + data: SyncReconcileRequestData2; + resourceType: "azure_resource_group"; }; -export const DataReason36 = { +export const DataReason61 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type DataReason36 = ClosedEnum; +export type DataReason61 = ClosedEnum; -export const StatusSeverity36 = { +export const StatusSeverity61 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type StatusSeverity36 = ClosedEnum; +export type StatusSeverity61 = ClosedEnum; -export type DataCollectionIssue36 = { +export type DataCollectionIssue61 = { message: string; - reason: DataReason36; - severity: StatusSeverity36; + reason: DataReason61; + severity: StatusSeverity61; source: string; }; -export const DataHealth36 = { +export const DataHealth61 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type DataHealth36 = ClosedEnum; +export type DataHealth61 = ClosedEnum; -export const StatusLifecycle36 = { +export const StatusLifecycle61 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -7462,58 +8017,60 @@ export const StatusLifecycle36 = { Deleted: "deleted", Failed: "failed", } as const; -export type StatusLifecycle36 = ClosedEnum; +export type StatusLifecycle61 = ClosedEnum; -export type ResourceHeartbeatStatus36 = { - collectionIssues: Array; - health: DataHealth36; - lifecycle: StatusLifecycle36; +export type ResourceHeartbeatStatus61 = { + collectionIssues: Array; + health: DataHealth61; + lifecycle: StatusLifecycle61; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataLocal8 = { - name: string; - port?: number | null | undefined; - processRunning: boolean; - status: ResourceHeartbeatStatus36; - version: string; - backend: "local"; +export type DataAzureResourceProvider = { + namespace: string; + providerId?: string | null | undefined; + registered: boolean; + registrationPolicy?: string | null | undefined; + registrationState?: string | null | undefined; + resourceTypeCount: number; + status: ResourceHeartbeatStatus61; + backend: "azureResourceProvider"; }; -export const DataReason35 = { +export const DataReason60 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type DataReason35 = ClosedEnum; +export type DataReason60 = ClosedEnum; -export const StatusSeverity35 = { +export const StatusSeverity60 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type StatusSeverity35 = ClosedEnum; +export type StatusSeverity60 = ClosedEnum; -export type DataCollectionIssue35 = { +export type DataCollectionIssue60 = { message: string; - reason: DataReason35; - severity: StatusSeverity35; + reason: DataReason60; + severity: StatusSeverity60; source: string; }; -export const DataHealth35 = { +export const DataHealth60 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type DataHealth35 = ClosedEnum; +export type DataHealth60 = ClosedEnum; -export const StatusLifecycle35 = { +export const StatusLifecycle60 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -7525,119 +8082,102 @@ export const StatusLifecycle35 = { Deleted: "deleted", Failed: "failed", } as const; -export type StatusLifecycle35 = ClosedEnum; +export type StatusLifecycle60 = ClosedEnum; -export type ResourceHeartbeatStatus35 = { - collectionIssues: Array; - health: DataHealth35; - lifecycle: StatusLifecycle35; +export type ResourceHeartbeatStatus60 = { + collectionIssues: Array; + health: DataHealth60; + lifecycle: StatusLifecycle60; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataFlexibleServer = { - serverName: string; - state?: string | null | undefined; - status: ResourceHeartbeatStatus35; - version?: string | null | undefined; - backend: "flexibleServer"; +export type DataGcpServiceUsage = { + enabled: boolean; + lastOperationName?: string | null | undefined; + projectId: string; + serviceName: string; + serviceResourceName?: string | null | undefined; + state?: string | null | undefined; + status: ResourceHeartbeatStatus60; + title?: string | null | undefined; + backend: "gcpServiceUsage"; }; -export const DataReason34 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type DataReason34 = ClosedEnum; - -export const StatusSeverity34 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type StatusSeverity34 = ClosedEnum; +export type SyncReconcileRequestDataUnion15 = + | DataGcpServiceUsage + | DataAzureResourceProvider; -export type DataCollectionIssue34 = { - message: string; - reason: DataReason34; - severity: StatusSeverity34; - source: string; +export type DataServiceActivation = { + data: DataGcpServiceUsage | DataAzureResourceProvider; + resourceType: "service_activation"; }; -export const DataHealth34 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type DataHealth34 = ClosedEnum; +export type InvolvedObject10 = { + apiVersion?: string | null | undefined; + fieldPath?: string | null | undefined; + kind?: string | null | undefined; + name?: string | null | undefined; + namespace?: string | null | undefined; + resourceVersion?: string | null | undefined; + uid?: string | null | undefined; +}; -export const StatusLifecycle34 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle34 = ClosedEnum; +export type InvolvedObjectUnion10 = InvolvedObject10 | any; -export type ResourceHeartbeatStatus34 = { - collectionIssues: Array; - health: DataHealth34; - lifecycle: StatusLifecycle34; - message?: string | null | undefined; - partial: boolean; - stale: boolean; +export type SourceEvent10 = { + component?: string | null | undefined; + host?: string | null | undefined; }; -export type DataCloudSQL = { - databaseVersion?: string | null | undefined; - instanceName: string; - state?: string | null | undefined; - status: ResourceHeartbeatStatus34; - backend: "cloudSql"; +export type EventSourceUnion10 = SourceEvent10 | any; + +export type SyncReconcileRequestEvent13 = { + count?: number | null | undefined; + eventTime?: Date | null | undefined; + firstTimestamp?: Date | null | undefined; + involvedObject?: InvolvedObject10 | any | null | undefined; + lastTimestamp?: Date | null | undefined; + message: string; + raw?: any | null | undefined; + reason: string; + source?: SourceEvent10 | any | null | undefined; + type?: string | null | undefined; }; -export const DataReason33 = { +export const DataReason59 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type DataReason33 = ClosedEnum; +export type DataReason59 = ClosedEnum; -export const StatusSeverity33 = { +export const StatusSeverity59 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type StatusSeverity33 = ClosedEnum; +export type StatusSeverity59 = ClosedEnum; -export type DataCollectionIssue33 = { +export type DataCollectionIssue59 = { message: string; - reason: DataReason33; - severity: StatusSeverity33; + reason: DataReason59; + severity: StatusSeverity59; source: string; }; -export const DataHealth33 = { +export const DataHealth59 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type DataHealth33 = ClosedEnum; +export type DataHealth59 = ClosedEnum; -export const StatusLifecycle33 = { +export const StatusLifecycle59 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -7649,79 +8189,64 @@ export const StatusLifecycle33 = { Deleted: "deleted", Failed: "failed", } as const; -export type StatusLifecycle33 = ClosedEnum; +export type StatusLifecycle59 = ClosedEnum; -export type ResourceHeartbeatStatus33 = { - collectionIssues: Array; - health: DataHealth33; - lifecycle: StatusLifecycle33; +export type ResourceHeartbeatStatus59 = { + collectionIssues: Array; + health: DataHealth59; + lifecycle: StatusLifecycle59; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataAurora = { - clusterIdentifier: string; - endpoint?: string | null | undefined; - engineVersion?: string | null | undefined; - /** - * True when a `minCapacity: 0` instance has not reached 0 ACU over the observation - * - * @remarks - * window — it is silently paying always-on prices (auto-pause verification). - */ - neverPauses: boolean; - /** - * Latest sampled `ServerlessDatabaseCapacity` (ACU). - */ - serverlessCapacity?: number | null | undefined; - status: ResourceHeartbeatStatus33; - backend: "aurora"; -}; - -export type SyncReconcileRequestDataUnion8 = - | DataAurora - | DataCloudSQL - | DataFlexibleServer - | DataLocal8; - -export type DataPostgres = { - data: DataAurora | DataCloudSQL | DataFlexibleServer | DataLocal8; - resourceType: "postgres"; +export type DataKubernetesJob = { + active?: number | null | undefined; + completionTime?: Date | null | undefined; + conditionCount: number; + events: Array; + failed?: number | null | undefined; + imageDigest?: string | null | undefined; + jobName: string; + namespace: string; + startTime?: Date | null | undefined; + status: ResourceHeartbeatStatus59; + succeeded?: number | null | undefined; + backend: "kubernetesJob"; }; -export const DataReason32 = { +export const DataReason58 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type DataReason32 = ClosedEnum; +export type DataReason58 = ClosedEnum; -export const StatusSeverity32 = { +export const StatusSeverity58 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type StatusSeverity32 = ClosedEnum; +export type StatusSeverity58 = ClosedEnum; -export type DataCollectionIssue32 = { +export type DataCollectionIssue58 = { message: string; - reason: DataReason32; - severity: StatusSeverity32; + reason: DataReason58; + severity: StatusSeverity58; source: string; }; -export const DataHealth32 = { +export const DataHealth58 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type DataHealth32 = ClosedEnum; +export type DataHealth58 = ClosedEnum; -export const StatusLifecycle32 = { +export const StatusLifecycle58 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -7733,59 +8258,59 @@ export const StatusLifecycle32 = { Deleted: "deleted", Failed: "failed", } as const; -export type StatusLifecycle32 = ClosedEnum; +export type StatusLifecycle58 = ClosedEnum; -export type ResourceHeartbeatStatus32 = { - collectionIssues: Array; - health: DataHealth32; - lifecycle: StatusLifecycle32; +export type ResourceHeartbeatStatus58 = { + collectionIssues: Array; + health: DataHealth58; + lifecycle: StatusLifecycle58; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataLocal7 = { - cloudMetadataSupported: boolean; - isDirectory?: boolean | null | undefined; - name: string; - path: string; - pathExists: boolean; - status: ResourceHeartbeatStatus32; - backend: "local"; +export type DataAzureContainerApps2 = { + environmentVariableCount: number; + managedEnvironmentId: string; + managedIdentityId?: string | null | undefined; + resourceGroupName: string; + resourcePrefix?: string | null | undefined; + status: ResourceHeartbeatStatus58; + backend: "azureContainerApps"; }; -export const DataReason31 = { +export const DataReason57 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type DataReason31 = ClosedEnum; +export type DataReason57 = ClosedEnum; -export const StatusSeverity31 = { +export const StatusSeverity57 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type StatusSeverity31 = ClosedEnum; +export type StatusSeverity57 = ClosedEnum; -export type DataCollectionIssue31 = { +export type DataCollectionIssue57 = { message: string; - reason: DataReason31; - severity: StatusSeverity31; + reason: DataReason57; + severity: StatusSeverity57; source: string; }; -export const DataHealth31 = { +export const DataHealth57 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type DataHealth31 = ClosedEnum; +export type DataHealth57 = ClosedEnum; -export const StatusLifecycle31 = { +export const StatusLifecycle57 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -7797,65 +8322,59 @@ export const StatusLifecycle31 = { Deleted: "deleted", Failed: "failed", } as const; -export type StatusLifecycle31 = ClosedEnum; +export type StatusLifecycle57 = ClosedEnum; -export type ResourceHeartbeatStatus31 = { - collectionIssues: Array; - health: DataHealth31; - lifecycle: StatusLifecycle31; +export type ResourceHeartbeatStatus57 = { + collectionIssues: Array; + health: DataHealth57; + lifecycle: StatusLifecycle57; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataAzureTable = { - endpoint?: string | null | undefined; - resourceGroup?: string | null | undefined; - signedIdentifierCount?: number | null | undefined; - status: ResourceHeartbeatStatus31; - storageAccountKind?: string | null | undefined; - storageAccountLocation?: string | null | undefined; - storageAccountName: string; - storageAccountPrimaryStatus?: string | null | undefined; - storageAccountProvisioningState?: string | null | undefined; - storageAccountResourceId?: string | null | undefined; - tableExists: boolean; - tableName: string; - backend: "azureTable"; +export type DataGcpCloudBuild = { + buildConfigId: string; + environmentVariableCount: number; + location: string; + projectId: string; + serviceAccount?: string | null | undefined; + status: ResourceHeartbeatStatus57; + backend: "gcpCloudBuild"; }; -export const DataReason30 = { +export const DataReason56 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type DataReason30 = ClosedEnum; +export type DataReason56 = ClosedEnum; -export const StatusSeverity30 = { +export const StatusSeverity56 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type StatusSeverity30 = ClosedEnum; +export type StatusSeverity56 = ClosedEnum; -export type DataCollectionIssue30 = { +export type DataCollectionIssue56 = { message: string; - reason: DataReason30; - severity: StatusSeverity30; + reason: DataReason56; + severity: StatusSeverity56; source: string; }; -export const DataHealth30 = { +export const DataHealth56 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type DataHealth30 = ClosedEnum; +export type DataHealth56 = ClosedEnum; -export const StatusLifecycle30 = { +export const StatusLifecycle56 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -7867,76 +8386,89 @@ export const StatusLifecycle30 = { Deleted: "deleted", Failed: "failed", } as const; -export type StatusLifecycle30 = ClosedEnum; +export type StatusLifecycle56 = ClosedEnum; -export type ResourceHeartbeatStatus30 = { - collectionIssues: Array; - health: DataHealth30; - lifecycle: StatusLifecycle30; +export type ResourceHeartbeatStatus56 = { + collectionIssues: Array; + health: DataHealth56; + lifecycle: StatusLifecycle56; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataGcpFirestore = { - appEngineIntegrationMode?: string | null | undefined; - cmekEnabled: boolean; - concurrencyMode?: string | null | undefined; - createTime?: string | null | undefined; - databaseEdition?: string | null | undefined; - databaseName: string; - databaseType?: string | null | undefined; - deleteProtectionState?: string | null | undefined; - deleteTime?: string | null | undefined; - earliestVersionTime?: string | null | undefined; - endpoint?: string | null | undefined; - locationId?: string | null | undefined; - pointInTimeRecoveryEnablement?: string | null | undefined; - projectId?: string | null | undefined; - sourceInfoPresent: boolean; - status: ResourceHeartbeatStatus30; - updateTime?: string | null | undefined; - versionRetentionPeriod?: string | null | undefined; - backend: "gcpFirestore"; +export type DataAwsCodeBuild = { + artifactsEncryptionDisabled?: boolean | null | undefined; + artifactsType?: string | null | undefined; + cloudWatchLogsStatus?: string | null | undefined; + computeType?: string | null | undefined; + created?: number | null | undefined; + description?: string | null | undefined; + encryptionKeyPresent: boolean; + environmentImage?: string | null | undefined; + environmentType?: string | null | undefined; + environmentVariableCount: number; + imagePullCredentialsType?: string | null | undefined; + lastModified?: number | null | undefined; + privilegedMode?: boolean | null | undefined; + projectArn?: string | null | undefined; + projectName: string; + queuedTimeoutInMinutes?: number | null | undefined; + s3LogsStatus?: string | null | undefined; + serviceRolePresent: boolean; + sourceType?: string | null | undefined; + status: ResourceHeartbeatStatus56; + timeoutInMinutes?: number | null | undefined; + backend: "awsCodeBuild"; }; -export type KeySchema = { - attributeName: string; - keyType: string; +export type SyncReconcileRequestDataUnion14 = + | DataAwsCodeBuild + | DataGcpCloudBuild + | DataAzureContainerApps2 + | DataKubernetesJob; + +export type DataBuild = { + data: + | DataAwsCodeBuild + | DataGcpCloudBuild + | DataAzureContainerApps2 + | DataKubernetesJob; + resourceType: "build"; }; -export const DataReason29 = { +export const DataReason55 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type DataReason29 = ClosedEnum; +export type DataReason55 = ClosedEnum; -export const StatusSeverity29 = { +export const StatusSeverity55 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type StatusSeverity29 = ClosedEnum; +export type StatusSeverity55 = ClosedEnum; -export type DataCollectionIssue29 = { +export type DataCollectionIssue55 = { message: string; - reason: DataReason29; - severity: StatusSeverity29; + reason: DataReason55; + severity: StatusSeverity55; source: string; }; -export const DataHealth29 = { +export const DataHealth55 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type DataHealth29 = ClosedEnum; +export type DataHealth55 = ClosedEnum; -export const StatusLifecycle29 = { +export const StatusLifecycle55 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -7948,85 +8480,56 @@ export const StatusLifecycle29 = { Deleted: "deleted", Failed: "failed", } as const; -export type StatusLifecycle29 = ClosedEnum; +export type StatusLifecycle55 = ClosedEnum; -export type ResourceHeartbeatStatus29 = { - collectionIssues: Array; - health: DataHealth29; - lifecycle: StatusLifecycle29; +export type ResourceHeartbeatStatus55 = { + collectionIssues: Array; + health: DataHealth55; + lifecycle: StatusLifecycle55; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataAwsDynamoDb = { - billingMode?: string | null | undefined; - deletionProtectionEnabled?: boolean | null | undefined; - globalSecondaryIndexCount?: number | null | undefined; - itemCount?: number | null | undefined; - keySchema: Array; - localSecondaryIndexCount?: number | null | undefined; - name: string; - region?: string | null | undefined; - replicaCount?: number | null | undefined; - restoreInProgress?: boolean | null | undefined; - sseStatus?: string | null | undefined; - sseType?: string | null | undefined; - status: ResourceHeartbeatStatus29; - streamEnabled?: boolean | null | undefined; - streamViewType?: string | null | undefined; - tableArn?: string | null | undefined; - tableClass?: string | null | undefined; - tableSizeBytes?: number | null | undefined; - tableStatus?: string | null | undefined; - ttlAttributeName?: string | null | undefined; - ttlStatus?: string | null | undefined; - backend: "awsDynamoDb"; -}; - -export type SyncReconcileRequestDataUnion7 = - | DataAwsDynamoDb - | DataGcpFirestore - | DataAzureTable - | DataLocal7; - -export type DataKv = { - data: DataAwsDynamoDb | DataGcpFirestore | DataAzureTable | DataLocal7; - resourceType: "kv"; +export type DataLocal11 = { + reachable: boolean; + registryUrl: string; + status: ResourceHeartbeatStatus55; + backend: "local"; }; -export const DataReason28 = { +export const DataReason54 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type DataReason28 = ClosedEnum; +export type DataReason54 = ClosedEnum; -export const StatusSeverity28 = { +export const StatusSeverity54 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type StatusSeverity28 = ClosedEnum; +export type StatusSeverity54 = ClosedEnum; -export type DataCollectionIssue28 = { +export type DataCollectionIssue54 = { message: string; - reason: DataReason28; - severity: StatusSeverity28; + reason: DataReason54; + severity: StatusSeverity54; source: string; }; -export const DataHealth28 = { +export const DataHealth54 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type DataHealth28 = ClosedEnum; +export type DataHealth54 = ClosedEnum; -export const StatusLifecycle28 = { +export const StatusLifecycle54 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -8038,57 +8541,80 @@ export const StatusLifecycle28 = { Deleted: "deleted", Failed: "failed", } as const; -export type StatusLifecycle28 = ClosedEnum; +export type StatusLifecycle54 = ClosedEnum; -export type ResourceHeartbeatStatus28 = { - collectionIssues: Array; - health: DataHealth28; - lifecycle: StatusLifecycle28; +export type ResourceHeartbeatStatus54 = { + collectionIssues: Array; + health: DataHealth54; + lifecycle: StatusLifecycle54; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataLocal6 = { +export type DataAzureContainerRegistry = { + adminUserEnabled: boolean; + anonymousPullEnabled: boolean; + creationDate?: string | null | undefined; + dataEndpointEnabled?: boolean | null | undefined; + dataEndpointHostNames: Array; + encryptionKeyIdentifierPresent: boolean; + encryptionKeyVaultUriPresent: boolean; + encryptionStatus?: string | null | undefined; + ipRuleCount: number; + location: string; + loginServer?: string | null | undefined; + managedTagCount: number; name: string; - path?: string | null | undefined; - serviceStatus?: string | null | undefined; - status: ResourceHeartbeatStatus28; - backend: "local"; + networkRuleBypassOptions: string; + networkRuleDefaultAction?: string | null | undefined; + policiesPresent: boolean; + policyCount: number; + privateEndpointConnectionCount: number; + provisioningState?: string | null | undefined; + publicNetworkAccess: string; + resourceGroup: string; + resourceId?: string | null | undefined; + skuName: string; + skuTier?: string | null | undefined; + status: ResourceHeartbeatStatus54; + type?: string | null | undefined; + zoneRedundancy: string; + backend: "azureContainerRegistry"; }; -export const DataReason27 = { +export const DataReason53 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type DataReason27 = ClosedEnum; +export type DataReason53 = ClosedEnum; -export const StatusSeverity27 = { +export const StatusSeverity53 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type StatusSeverity27 = ClosedEnum; +export type StatusSeverity53 = ClosedEnum; -export type DataCollectionIssue27 = { +export type DataCollectionIssue53 = { message: string; - reason: DataReason27; - severity: StatusSeverity27; + reason: DataReason53; + severity: StatusSeverity53; source: string; }; -export const DataHealth27 = { +export const DataHealth53 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type DataHealth27 = ClosedEnum; +export type DataHealth53 = ClosedEnum; -export const StatusLifecycle27 = { +export const StatusLifecycle53 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -8100,85 +8626,86 @@ export const StatusLifecycle27 = { Deleted: "deleted", Failed: "failed", } as const; -export type StatusLifecycle27 = ClosedEnum; +export type StatusLifecycle53 = ClosedEnum; -export type ResourceHeartbeatStatus27 = { - collectionIssues: Array; - health: DataHealth27; - lifecycle: StatusLifecycle27; - message?: string | null | undefined; +export type ResourceHeartbeatStatus53 = { + collectionIssues: Array; + health: DataHealth53; + lifecycle: StatusLifecycle53; + message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataAzureServiceBus = { - accessedAt?: string | null | undefined; - activeMessageCount?: number | null | undefined; - autoDeleteOnIdle?: string | null | undefined; - createdAt?: string | null | undefined; - deadLetterMessageCount?: number | null | undefined; - deadLetteringOnMessageExpiration?: boolean | null | undefined; - defaultMessageTimeToLive?: string | null | undefined; - duplicateDetectionHistoryTimeWindow?: string | null | undefined; - enableBatchedOperations?: boolean | null | undefined; - enableExpress?: boolean | null | undefined; - enablePartitioning?: boolean | null | undefined; - endpoint?: string | null | undefined; - forwardDeadLetteredMessagesTo?: string | null | undefined; - forwardTo?: string | null | undefined; - lockDuration?: string | null | undefined; - maxDeliveryCount?: number | null | undefined; - maxMessageSizeInKilobytes?: number | null | undefined; - maxSizeInMegabytes?: number | null | undefined; - messageCount?: number | null | undefined; - name: string; - namespaceName: string; - queueStatus?: string | null | undefined; - requiresDuplicateDetection?: boolean | null | undefined; - requiresSession?: boolean | null | undefined; - resourceGroup?: string | null | undefined; - resourceId?: string | null | undefined; - scheduledMessageCount?: number | null | undefined; - sizeInBytes?: number | null | undefined; - status: ResourceHeartbeatStatus27; - transferDeadLetterMessageCount?: number | null | undefined; - transferMessageCount?: number | null | undefined; - updatedAt?: string | null | undefined; - backend: "azureServiceBus"; +export type DataGcpArtifactRegistry = { + cleanupPolicyCount: number; + cleanupPolicyDryRun?: boolean | null | undefined; + createTime?: string | null | undefined; + description?: string | null | undefined; + format?: string | null | undefined; + iamBindingCount: number; + iamPolicyEtagPresent: boolean; + iamRoles: Array; + kmsKeyNamePresent: boolean; + labelCount: number; + location: string; + mode?: string | null | undefined; + name?: string | null | undefined; + projectId: string; + pullServiceAccountEmail?: string | null | undefined; + pushServiceAccountEmail?: string | null | undefined; + repositoryId: string; + satisfiesPzs?: boolean | null | undefined; + sizeBytes?: string | null | undefined; + status: ResourceHeartbeatStatus53; + updateTime?: string | null | undefined; + backend: "gcpArtifactRegistry"; }; -export const DataReason26 = { +export type SyncReconcileRequestRepository = { + createdAt: number; + encryptionType?: string | null | undefined; + imageTagMutability?: string | null | undefined; + kmsKeyPresent: boolean; + registryId: string; + repositoryArn: string; + repositoryName: string; + repositoryUri: string; + scanOnPush?: boolean | null | undefined; +}; + +export const DataReason52 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type DataReason26 = ClosedEnum; +export type DataReason52 = ClosedEnum; -export const StatusSeverity26 = { +export const StatusSeverity52 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type StatusSeverity26 = ClosedEnum; +export type StatusSeverity52 = ClosedEnum; -export type DataCollectionIssue26 = { +export type DataCollectionIssue52 = { message: string; - reason: DataReason26; - severity: StatusSeverity26; + reason: DataReason52; + severity: StatusSeverity52; source: string; }; -export const DataHealth26 = { +export const DataHealth52 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type DataHealth26 = ClosedEnum; +export type DataHealth52 = ClosedEnum; -export const StatusLifecycle26 = { +export const StatusLifecycle52 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -8190,87 +8717,78 @@ export const StatusLifecycle26 = { Deleted: "deleted", Failed: "failed", } as const; -export type StatusLifecycle26 = ClosedEnum; +export type StatusLifecycle52 = ClosedEnum; -export type ResourceHeartbeatStatus26 = { - collectionIssues: Array; - health: DataHealth26; - lifecycle: StatusLifecycle26; +export type ResourceHeartbeatStatus52 = { + collectionIssues: Array; + health: DataHealth52; + lifecycle: StatusLifecycle52; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataGcpPubSub = { - endpoint?: string | null | undefined; - kmsKeyName?: string | null | undefined; - messageStorageAllowedPersistenceRegions: Array; - messageStorageEnforceInTransit?: boolean | null | undefined; - projectId?: string | null | undefined; - schemaEncoding?: string | null | undefined; - schemaFirstRevisionId?: string | null | undefined; - schemaLastRevisionId?: string | null | undefined; - schemaName?: string | null | undefined; - status: ResourceHeartbeatStatus26; - subscriptionAckDeadlineSeconds?: number | null | undefined; - subscriptionDeadLetterMaxDeliveryAttempts?: number | null | undefined; - subscriptionDeadLetterTopic?: string | null | undefined; - subscriptionDetached?: boolean | null | undefined; - subscriptionEnableMessageOrdering?: boolean | null | undefined; - subscriptionFilter?: string | null | undefined; - subscriptionFullName?: string | null | undefined; - subscriptionLabels: { [k: string]: string }; - subscriptionMessageRetentionDuration?: string | null | undefined; - subscriptionName?: string | null | undefined; - subscriptionPushAttributes: { [k: string]: string }; - subscriptionPushConfigPresent?: boolean | null | undefined; - subscriptionPushEndpoint?: string | null | undefined; - subscriptionPushNoWrapperWriteMetadata?: boolean | null | undefined; - subscriptionPushOidcAudience?: string | null | undefined; - subscriptionPushOidcServiceAccountEmail?: string | null | undefined; - subscriptionPushPubsubWrapperWriteMetadata?: boolean | null | undefined; - subscriptionRetainAckedMessages?: boolean | null | undefined; - subscriptionState?: string | null | undefined; - topicFullName?: string | null | undefined; - topicLabels: { [k: string]: string }; - topicMessageRetentionDuration?: string | null | undefined; - topicName: string; - topicState?: string | null | undefined; - backend: "gcpPubSub"; +export type DataAwsEcr = { + pullRoleArn?: string | null | undefined; + pushRoleArn?: string | null | undefined; + region: string; + registryId: string; + registryUri: string; + repositories: Array; + repositoriesTruncated: boolean; + repositoryCount: number; + repositoryPrefix: string; + status: ResourceHeartbeatStatus52; + backend: "awsEcr"; }; -export const DataReason25 = { +export type SyncReconcileRequestDataUnion13 = + | DataAwsEcr + | DataGcpArtifactRegistry + | DataAzureContainerRegistry + | DataLocal11; + +export type DataArtifactRegistry = { + data: + | DataAwsEcr + | DataGcpArtifactRegistry + | DataAzureContainerRegistry + | DataLocal11; + resourceType: "artifact-registry"; +}; + +export const DataReason51 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type DataReason25 = ClosedEnum; +export type DataReason51 = ClosedEnum; -export const StatusSeverity25 = { +export const StatusSeverity51 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type StatusSeverity25 = ClosedEnum; +export type StatusSeverity51 = ClosedEnum; -export type DataCollectionIssue25 = { +export type DataCollectionIssue51 = { message: string; - reason: DataReason25; - severity: StatusSeverity25; + reason: DataReason51; + severity: StatusSeverity51; source: string; }; -export const DataHealth25 = { +export const DataHealth51 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type DataHealth25 = ClosedEnum; +export type DataHealth51 = ClosedEnum; -export const StatusLifecycle25 = { +export const StatusLifecycle51 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -8282,308 +8800,124 @@ export const StatusLifecycle25 = { Deleted: "deleted", Failed: "failed", } as const; -export type StatusLifecycle25 = ClosedEnum; +export type StatusLifecycle51 = ClosedEnum; -export type ResourceHeartbeatStatus25 = { - collectionIssues: Array; - health: DataHealth25; - lifecycle: StatusLifecycle25; +export type ResourceHeartbeatStatus51 = { + collectionIssues: Array; + health: DataHealth51; + lifecycle: StatusLifecycle51; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataAwsSqs = { - approximateCounts: boolean; - approximateDelayedMessages?: number | null | undefined; - approximateInFlightMessages?: number | null | undefined; - approximateVisibleMessages?: number | null | undefined; - contentBasedDeduplication?: boolean | null | undefined; - deduplicationScope?: string | null | undefined; - delaySeconds?: number | null | undefined; - fifoQueue?: boolean | null | undefined; - fifoThroughputLimit?: string | null | undefined; - kmsDataKeyReusePeriodSeconds?: number | null | undefined; - kmsMasterKeyId?: string | null | undefined; - maximumMessageSize?: number | null | undefined; - messageRetentionPeriodSeconds?: number | null | undefined; - name: string; - queueArn?: string | null | undefined; - queueUrl?: string | null | undefined; - receiveMessageWaitTimeSeconds?: number | null | undefined; - redriveAllowPolicy?: string | null | undefined; - redrivePolicy?: string | null | undefined; - region?: string | null | undefined; - sqsManagedSseEnabled?: boolean | null | undefined; - sseEnabled?: boolean | null | undefined; - status: ResourceHeartbeatStatus25; - visibilityTimeoutSeconds?: number | null | undefined; - backend: "awsSqs"; -}; - -export type SyncReconcileRequestDataUnion6 = - | DataAwsSqs - | DataGcpPubSub - | DataAzureServiceBus - | DataLocal6; - -export type DataQueue = { - data: DataAwsSqs | DataGcpPubSub | DataAzureServiceBus | DataLocal6; - resourceType: "queue"; -}; - -export const CpuUnit11 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuUnit11 = ClosedEnum; - -export type Cpu11 = { - unit: CpuUnit11; - value: number; -}; - -export type CpuUnion11 = Cpu11 | any; - -export type InvolvedObject9 = { - apiVersion?: string | null | undefined; - fieldPath?: string | null | undefined; - kind?: string | null | undefined; - name?: string | null | undefined; - namespace?: string | null | undefined; - resourceVersion?: string | null | undefined; - uid?: string | null | undefined; -}; - -export type InvolvedObjectUnion9 = InvolvedObject9 | any; - -export type SyncReconcileRequestSource9 = { - component?: string | null | undefined; - host?: string | null | undefined; -}; - -export type SourceUnion9 = SyncReconcileRequestSource9 | any; - -export type SyncReconcileRequestEvent12 = { - count?: number | null | undefined; - eventTime?: Date | null | undefined; - firstTimestamp?: Date | null | undefined; - involvedObject?: InvolvedObject9 | any | null | undefined; - lastTimestamp?: Date | null | undefined; - message: string; - raw?: any | null | undefined; - reason: string; - source?: SyncReconcileRequestSource9 | any | null | undefined; - type?: string | null | undefined; -}; - -export const MemoryUnit11 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryUnit11 = ClosedEnum; - -export type Memory11 = { - unit: MemoryUnit11; - value: number; -}; - -export type MemoryUnion11 = Memory11 | any; - -export type NodeCounts = { - current?: number | null | undefined; - desired?: number | null | undefined; - ready?: number | null | undefined; +export type DataAzureManagedIdentity2 = { + ficName?: string | null | undefined; + roleAssignmentIds: Array; + roleDefinitionId?: string | null | undefined; + status: ResourceHeartbeatStatus51; + tenantId?: string | null | undefined; + uamiClientId?: string | null | undefined; + uamiPrincipalId?: string | null | undefined; + uamiResourceId?: string | null | undefined; + backend: "azureManagedIdentity"; }; -export const CpuAllocatableUnit = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", +export const DataReason50 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", } as const; -export type CpuAllocatableUnit = ClosedEnum; - -export type CpuAllocatable = { - unit: CpuAllocatableUnit; - value: number; -}; - -export type AllocatableCpuUnion = CpuAllocatable | any; +export type DataReason50 = ClosedEnum; -export const MemoryAllocatableUnit = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", +export const StatusSeverity50 = { + Info: "info", + Warning: "warning", + Error: "error", } as const; -export type MemoryAllocatableUnit = ClosedEnum; - -export type MemoryAllocatable = { - unit: MemoryAllocatableUnit; - value: number; -}; - -export type AllocatableMemoryUnion = MemoryAllocatable | any; +export type StatusSeverity50 = ClosedEnum; -export type Allocatable = { - cpu?: CpuAllocatable | any | null | undefined; - memory?: MemoryAllocatable | any | null | undefined; - pods?: number | null | undefined; +export type DataCollectionIssue50 = { + message: string; + reason: DataReason50; + severity: StatusSeverity50; + source: string; }; -export const CpuCapacityUnit = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", +export const DataHealth50 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", } as const; -export type CpuCapacityUnit = ClosedEnum; - -export type CpuCapacity = { - unit: CpuCapacityUnit; - value: number; -}; - -export type CapacityCpuUnion = CpuCapacity | any; +export type DataHealth50 = ClosedEnum; -export const MemoryCapacityUnit = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", +export const StatusLifecycle50 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", } as const; -export type MemoryCapacityUnit = ClosedEnum; - -export type MemoryCapacity = { - unit: MemoryCapacityUnit; - value: number; -}; - -export type CapacityMemoryUnion = MemoryCapacity | any; - -export type Capacity = { - cpu?: CpuCapacity | any | null | undefined; - memory?: MemoryCapacity | any | null | undefined; - pods?: number | null | undefined; -}; +export type StatusLifecycle50 = ClosedEnum; -export type NodeStatusCondition = { +export type ResourceHeartbeatStatus50 = { + collectionIssues: Array; + health: DataHealth50; + lifecycle: StatusLifecycle50; message?: string | null | undefined; - reason?: string | null | undefined; - status: string; - type: string; -}; - -export const UsageCpuUnit = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type UsageCpuUnit = ClosedEnum; - -export type UsageCpu = { - unit: UsageCpuUnit; - value: number; -}; - -export type UsageCpuUnion = UsageCpu | any; - -export const UsageMemoryUnit = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type UsageMemoryUnit = ClosedEnum; - -export type UsageMemory = { - unit: UsageMemoryUnit; - value: number; -}; - -export type UsageMemoryUnion = UsageMemory | any; - -export type SyncReconcileRequestUsage = { - cpu?: UsageCpu | any | null | undefined; - memory?: UsageMemory | any | null | undefined; -}; - -export type Usage = SyncReconcileRequestUsage | any; - -export type NodeStatus = { - allocatable: Allocatable; - capacity: Capacity; - conditions?: Array | undefined; - containerRuntimeVersion?: string | null | undefined; - kubeletVersion?: string | null | undefined; - labels: { [k: string]: string }; - name: string; - ready: boolean; - roles: Array; - uid?: string | null | undefined; - usage?: SyncReconcileRequestUsage | any | null | undefined; + partial: boolean; + stale: boolean; }; -export type PodCounts = { - current?: number | null | undefined; - desired?: number | null | undefined; - ready?: number | null | undefined; +export type DataGcpServiceAccount2 = { + impersonationGranted: boolean; + roleBound: boolean; + serviceAccountEmail?: string | null | undefined; + serviceAccountUniqueId?: string | null | undefined; + status: ResourceHeartbeatStatus50; + backend: "gcpServiceAccount"; }; -export const DataReason24 = { +export const DataReason49 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type DataReason24 = ClosedEnum; +export type DataReason49 = ClosedEnum; -export const StatusSeverity24 = { +export const StatusSeverity49 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type StatusSeverity24 = ClosedEnum; +export type StatusSeverity49 = ClosedEnum; -export type DataCollectionIssue24 = { +export type DataCollectionIssue49 = { message: string; - reason: DataReason24; - severity: StatusSeverity24; + reason: DataReason49; + severity: StatusSeverity49; source: string; }; -export const DataHealth24 = { +export const DataHealth49 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type DataHealth24 = ClosedEnum; +export type DataHealth49 = ClosedEnum; -export const StatusLifecycle24 = { +export const StatusLifecycle49 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -8595,74 +8929,67 @@ export const StatusLifecycle24 = { Deleted: "deleted", Failed: "failed", } as const; -export type StatusLifecycle24 = ClosedEnum; +export type StatusLifecycle49 = ClosedEnum; -export type ResourceHeartbeatStatus24 = { - collectionIssues: Array; - health: DataHealth24; - lifecycle: StatusLifecycle24; +export type ResourceHeartbeatStatus49 = { + collectionIssues: Array; + health: DataHealth49; + lifecycle: StatusLifecycle49; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type SyncReconcileRequestData1 = { - cpu?: Cpu11 | any | null | undefined; - events: Array; - memory?: Memory11 | any | null | undefined; - name: string; - namespace?: string | null | undefined; - nodeCounts: NodeCounts; - nodeStatuses?: Array | undefined; - podCounts: PodCounts; - region?: string | null | undefined; - status: ResourceHeartbeatStatus24; - version?: string | null | undefined; +export type DataAwsIamRole2 = { + managementPermissionsApplied: boolean; + roleArn?: string | null | undefined; + roleName?: string | null | undefined; + status: ResourceHeartbeatStatus49; + backend: "awsIamRole"; }; -export type DataKubernetesCluster = { - data: SyncReconcileRequestData1; - resourceType: "kubernetes-cluster"; -}; +export type SyncReconcileRequestDataUnion12 = + | DataAwsIamRole2 + | DataGcpServiceAccount2 + | DataAzureManagedIdentity2; -export type Nodes5 = { - current?: number | null | undefined; - desired?: number | null | undefined; - ready?: number | null | undefined; +export type DataRemoteStackManagement = { + data: DataAwsIamRole2 | DataGcpServiceAccount2 | DataAzureManagedIdentity2; + resourceType: "remote-stack-management"; }; -export const DataReason23 = { +export const DataReason48 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type DataReason23 = ClosedEnum; +export type DataReason48 = ClosedEnum; -export const StatusSeverity23 = { +export const StatusSeverity48 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type StatusSeverity23 = ClosedEnum; +export type StatusSeverity48 = ClosedEnum; -export type DataCollectionIssue23 = { +export type DataCollectionIssue48 = { message: string; - reason: DataReason23; - severity: StatusSeverity23; + reason: DataReason48; + severity: StatusSeverity48; source: string; }; -export const DataHealth23 = { +export const DataHealth48 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type DataHealth23 = ClosedEnum; +export type DataHealth48 = ClosedEnum; -export const StatusLifecycle23 = { +export const StatusLifecycle48 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -8674,218 +9001,68 @@ export const StatusLifecycle23 = { Deleted: "deleted", Failed: "failed", } as const; -export type StatusLifecycle23 = ClosedEnum; +export type StatusLifecycle48 = ClosedEnum; -export type ResourceHeartbeatStatus23 = { - collectionIssues: Array; - health: DataHealth23; - lifecycle: StatusLifecycle23; +export type ResourceHeartbeatStatus48 = { + collectionIssues: Array; + health: DataHealth48; + lifecycle: StatusLifecycle48; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataLocal5 = { - dockerApiVersion?: string | null | undefined; - dockerArch?: string | null | undefined; - dockerAvailable: boolean; - dockerOs?: string | null | undefined; - dockerVersion?: string | null | undefined; - hostIdentifier?: string | null | undefined; - name: string; - networkAvailable: boolean; - networkName?: string | null | undefined; - nodes: Nodes5; - runningContainers?: number | null | undefined; - status: ResourceHeartbeatStatus23; - trackedContainers?: number | null | undefined; - backend: "local"; -}; - -export const Category4 = { - Quota: "quota", - Capacity: "capacity", - Allocation: "allocation", - Other: "other", -} as const; -export type Category4 = ClosedEnum; - -export type CapacityBlocker4 = { - category: Category4; - message: string; - observedAt: Date; - providerCode?: string | null | undefined; - providerReference?: string | null | undefined; -}; - -export type CapacityBlockerUnion4 = CapacityBlocker4 | any; - -export type Blocker4 = { - reason: string; - replicaId: string; - schedulingMode: string; - state: string; - workloadName: string; -}; - -export const DrainProgressStatus4 = { - Draining: "draining", - Drained: "drained", - Terminating: "terminating", -} as const; -export type DrainProgressStatus4 = ClosedEnum; - -export type DrainProgress4 = { - blockers?: Array | undefined; - drainDeadlineAt?: string | null | undefined; - drainRequestedAt?: string | null | undefined; - drainedAt?: string | null | undefined; - force: boolean; - machineId: string; - replicaCount: number; - stalled: boolean; - status: DrainProgressStatus4; -}; - -export type DrainProgressUnion4 = DrainProgress4 | any; - -export const UtilizationUnit4 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type UtilizationUnit4 = ClosedEnum; - -export type Utilization4 = { - unit: UtilizationUnit4; - value: number; -}; - -export type UtilizationUnion4 = Utilization4 | any; - -export type Recommendation4 = { - desiredMachines: number; - reason?: string | null | undefined; - unschedulableReplicas?: number | null | undefined; - utilization?: Utilization4 | any | null | undefined; -}; - -export type RecommendationUnion4 = Recommendation4 | any; - -export type CapacityGroup4 = { - capacityBlocker?: CapacityBlocker4 | any | null | undefined; - currentMachines: number; - desiredMachines: number; - drainProgress?: DrainProgress4 | any | null | undefined; - groupId: string; - instanceType?: string | null | undefined; - maxMachines?: number | null | undefined; - minMachines?: number | null | undefined; - recommendation?: Recommendation4 | any | null | undefined; -}; - -export const CpuUnit10 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuUnit10 = ClosedEnum; - -export type Cpu10 = { - unit: CpuUnit10; - value: number; -}; - -export type CpuUnion10 = Cpu10 | any; - -export type DrainBlocker = { - reason: string; - replicaId: string; - schedulingMode: string; - state: string; - workloadName: string; -}; - -export type SyncReconcileRequestMachine = { - capacityGroup: string; - cpuCores?: number | null | undefined; - drainBlockers?: Array | undefined; - drainDeadlineAt?: string | null | undefined; - drainForce: boolean; - drainRequestedAt?: string | null | undefined; - drainedAt?: string | null | undefined; - horizondVersion?: string | null | undefined; - lastHeartbeat: string; - machineId: string; - memoryBytes?: number | null | undefined; - overlayIp?: string | null | undefined; - publicIp?: string | null | undefined; - replicaCount: number; - status: string; - zone: string; -}; - -export const MemoryUnit10 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryUnit10 = ClosedEnum; - -export type Memory10 = { - unit: MemoryUnit10; - value: number; -}; - -export type MemoryUnion10 = Memory10 | any; - -export type Nodes4 = { - current?: number | null | undefined; - desired?: number | null | undefined; - ready?: number | null | undefined; +export type DataAzureVnet = { + applicationGatewaySubnetName?: string | null | undefined; + cidrBlock?: string | null | undefined; + isByoVnet: boolean; + lastByoVnetVerificationErrorCode?: string | null | undefined; + location?: string | null | undefined; + natGatewayId?: string | null | undefined; + nsgId?: string | null | undefined; + privateEndpointSubnetName?: string | null | undefined; + privateSubnetName?: string | null | undefined; + publicIpId?: string | null | undefined; + publicSubnetName?: string | null | undefined; + resourceGroup?: string | null | undefined; + status: ResourceHeartbeatStatus48; + vnetName?: string | null | undefined; + vnetResourceId?: string | null | undefined; + backend: "azureVnet"; }; -export const DataReason22 = { +export const DataReason47 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type DataReason22 = ClosedEnum; +export type DataReason47 = ClosedEnum; -export const StatusSeverity22 = { +export const StatusSeverity47 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type StatusSeverity22 = ClosedEnum; +export type StatusSeverity47 = ClosedEnum; -export type DataCollectionIssue22 = { +export type DataCollectionIssue47 = { message: string; - reason: DataReason22; - severity: StatusSeverity22; + reason: DataReason47; + severity: StatusSeverity47; source: string; }; -export const DataHealth22 = { +export const DataHealth47 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type DataHealth22 = ClosedEnum; +export type DataHealth47 = ClosedEnum; -export const StatusLifecycle22 = { +export const StatusLifecycle47 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -8897,194 +9074,144 @@ export const StatusLifecycle22 = { Deleted: "deleted", Failed: "failed", } as const; -export type StatusLifecycle22 = ClosedEnum; +export type StatusLifecycle47 = ClosedEnum; -export type ResourceHeartbeatStatus22 = { - collectionIssues: Array; - health: DataHealth22; - lifecycle: StatusLifecycle22; +export type ResourceHeartbeatStatus47 = { + collectionIssues: Array; + health: DataHealth47; + lifecycle: StatusLifecycle47; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataMachines2 = { - backendClusterId?: string | null | undefined; - capacityGroups: Array; - cpu?: Cpu10 | any | null | undefined; - machines: Array; - memory?: Memory10 | any | null | undefined; - name: string; - nodes: Nodes4; - status: ResourceHeartbeatStatus22; - backend: "machines"; +export type DataGcpVpc = { + cidrBlock?: string | null | undefined; + cloudNatName?: string | null | undefined; + firewallName?: string | null | undefined; + isByoVpc: boolean; + networkName?: string | null | undefined; + networkSelfLink?: string | null | undefined; + region?: string | null | undefined; + routerName?: string | null | undefined; + status: ResourceHeartbeatStatus47; + subnetworkName?: string | null | undefined; + subnetworkSelfLink?: string | null | undefined; + backend: "gcpVpc"; }; -export const Category3 = { - Quota: "quota", - Capacity: "capacity", - Allocation: "allocation", - Other: "other", +export const DataReason46 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", } as const; -export type Category3 = ClosedEnum; - -export type CapacityBlocker3 = { - category: Category3; - message: string; - observedAt: Date; - providerCode?: string | null | undefined; - providerReference?: string | null | undefined; -}; - -export type CapacityBlockerUnion3 = CapacityBlocker3 | any; - -export type Blocker3 = { - reason: string; - replicaId: string; - schedulingMode: string; - state: string; - workloadName: string; -}; +export type DataReason46 = ClosedEnum; -export const DrainProgressStatus3 = { - Draining: "draining", - Drained: "drained", - Terminating: "terminating", +export const StatusSeverity46 = { + Info: "info", + Warning: "warning", + Error: "error", } as const; -export type DrainProgressStatus3 = ClosedEnum; +export type StatusSeverity46 = ClosedEnum; -export type DrainProgress3 = { - blockers?: Array | undefined; - drainDeadlineAt?: string | null | undefined; - drainRequestedAt?: string | null | undefined; - drainedAt?: string | null | undefined; - force: boolean; - machineId: string; - replicaCount: number; - stalled: boolean; - status: DrainProgressStatus3; +export type DataCollectionIssue46 = { + message: string; + reason: DataReason46; + severity: StatusSeverity46; + source: string; }; -export type DrainProgressUnion3 = DrainProgress3 | any; - -export const UtilizationUnit3 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", +export const DataHealth46 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", } as const; -export type UtilizationUnit3 = ClosedEnum; - -export type Utilization3 = { - unit: UtilizationUnit3; - value: number; -}; - -export type UtilizationUnion3 = Utilization3 | any; - -export type Recommendation3 = { - desiredMachines: number; - reason?: string | null | undefined; - unschedulableReplicas?: number | null | undefined; - utilization?: Utilization3 | any | null | undefined; -}; - -export type RecommendationUnion3 = Recommendation3 | any; - -export type CapacityGroup3 = { - capacityBlocker?: CapacityBlocker3 | any | null | undefined; - currentMachines: number; - desiredMachines: number; - drainProgress?: DrainProgress3 | any | null | undefined; - groupId: string; - instanceType?: string | null | undefined; - maxMachines?: number | null | undefined; - minMachines?: number | null | undefined; - recommendation?: Recommendation3 | any | null | undefined; -}; +export type DataHealth46 = ClosedEnum; -export const CpuUnit9 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", +export const StatusLifecycle46 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", } as const; -export type CpuUnit9 = ClosedEnum; +export type StatusLifecycle46 = ClosedEnum; -export type Cpu9 = { - unit: CpuUnit9; - value: number; +export type ResourceHeartbeatStatus46 = { + collectionIssues: Array; + health: DataHealth46; + lifecycle: StatusLifecycle46; + message?: string | null | undefined; + partial: boolean; + stale: boolean; }; -export type CpuUnion9 = Cpu9 | any; - -export const MemoryUnit9 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryUnit9 = ClosedEnum; - -export type Memory9 = { - unit: MemoryUnit9; - value: number; +export type DataAwsVpc = { + availabilityZones: Array; + cidrBlock?: string | null | undefined; + internetGatewayId?: string | null | undefined; + isByoVpc: boolean; + natGatewayId?: string | null | undefined; + privateSubnetIds: Array; + publicSubnetIds: Array; + routeTableCount: number; + securityGroupId?: string | null | undefined; + status: ResourceHeartbeatStatus46; + vpcId?: string | null | undefined; + vpcState?: string | null | undefined; + backend: "awsVpc"; }; -export type MemoryUnion9 = Memory9 | any; - -export type Nodes3 = { - current?: number | null | undefined; - desired?: number | null | undefined; - ready?: number | null | undefined; -}; +export type SyncReconcileRequestDataUnion11 = + | DataAwsVpc + | DataGcpVpc + | DataAzureVnet; -export type ProviderFleet3 = { - currentMachines: number; - desiredMachines: number; - groupId: string; - location?: string | null | undefined; - providerId: string; +export type DataNetwork = { + data: DataAwsVpc | DataGcpVpc | DataAzureVnet; + resourceType: "network"; }; -export const DataReason21 = { +export const DataReason45 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type DataReason21 = ClosedEnum; +export type DataReason45 = ClosedEnum; -export const StatusSeverity21 = { +export const StatusSeverity45 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type StatusSeverity21 = ClosedEnum; +export type StatusSeverity45 = ClosedEnum; -export type DataCollectionIssue21 = { +export type DataCollectionIssue45 = { message: string; - reason: DataReason21; - severity: StatusSeverity21; + reason: DataReason45; + severity: StatusSeverity45; source: string; }; -export const DataHealth21 = { +export const DataHealth45 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type DataHealth21 = ClosedEnum; +export type DataHealth45 = ClosedEnum; -export const StatusLifecycle21 = { +export const StatusLifecycle45 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -9096,195 +9223,56 @@ export const StatusLifecycle21 = { Deleted: "deleted", Failed: "failed", } as const; -export type StatusLifecycle21 = ClosedEnum; +export type StatusLifecycle45 = ClosedEnum; -export type ResourceHeartbeatStatus21 = { - collectionIssues: Array; - health: DataHealth21; - lifecycle: StatusLifecycle21; - message?: string | null | undefined; +export type ResourceHeartbeatStatus45 = { + collectionIssues: Array; + health: DataHealth45; + lifecycle: StatusLifecycle45; + message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataAzure2 = { - backendClusterId?: string | null | undefined; - capacityGroups: Array; - cpu?: Cpu9 | any | null | undefined; - memory?: Memory9 | any | null | undefined; - name: string; - nodes: Nodes3; - providerFleets: Array; - region?: string | null | undefined; - status: ResourceHeartbeatStatus21; - backend: "azure"; -}; - -export const Category2 = { - Quota: "quota", - Capacity: "capacity", - Allocation: "allocation", - Other: "other", -} as const; -export type Category2 = ClosedEnum; - -export type CapacityBlocker2 = { - category: Category2; - message: string; - observedAt: Date; - providerCode?: string | null | undefined; - providerReference?: string | null | undefined; -}; - -export type CapacityBlockerUnion2 = CapacityBlocker2 | any; - -export type Blocker2 = { - reason: string; - replicaId: string; - schedulingMode: string; - state: string; - workloadName: string; -}; - -export const DrainProgressStatus2 = { - Draining: "draining", - Drained: "drained", - Terminating: "terminating", -} as const; -export type DrainProgressStatus2 = ClosedEnum; - -export type DrainProgress2 = { - blockers?: Array | undefined; - drainDeadlineAt?: string | null | undefined; - drainRequestedAt?: string | null | undefined; - drainedAt?: string | null | undefined; - force: boolean; - machineId: string; - replicaCount: number; - stalled: boolean; - status: DrainProgressStatus2; -}; - -export type DrainProgressUnion2 = DrainProgress2 | any; - -export const UtilizationUnit2 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type UtilizationUnit2 = ClosedEnum; - -export type Utilization2 = { - unit: UtilizationUnit2; - value: number; -}; - -export type UtilizationUnion2 = Utilization2 | any; - -export type Recommendation2 = { - desiredMachines: number; - reason?: string | null | undefined; - unschedulableReplicas?: number | null | undefined; - utilization?: Utilization2 | any | null | undefined; -}; - -export type RecommendationUnion2 = Recommendation2 | any; - -export type CapacityGroup2 = { - capacityBlocker?: CapacityBlocker2 | any | null | undefined; - currentMachines: number; - desiredMachines: number; - drainProgress?: DrainProgress2 | any | null | undefined; - groupId: string; - instanceType?: string | null | undefined; - maxMachines?: number | null | undefined; - minMachines?: number | null | undefined; - recommendation?: Recommendation2 | any | null | undefined; -}; - -export const CpuUnit8 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuUnit8 = ClosedEnum; - -export type Cpu8 = { - unit: CpuUnit8; - value: number; -}; - -export type CpuUnion8 = Cpu8 | any; - -export const MemoryUnit8 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryUnit8 = ClosedEnum; - -export type Memory8 = { - unit: MemoryUnit8; - value: number; -}; - -export type MemoryUnion8 = Memory8 | any; - -export type Nodes2 = { - current?: number | null | undefined; - desired?: number | null | undefined; - ready?: number | null | undefined; -}; - -export type ProviderFleet2 = { - currentMachines: number; - desiredMachines: number; - groupId: string; - location?: string | null | undefined; - providerId: string; +export type DataLocal10 = { + configured: boolean; + identity: string; + status: ResourceHeartbeatStatus45; + backend: "local"; }; -export const DataReason20 = { +export const DataReason44 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type DataReason20 = ClosedEnum; +export type DataReason44 = ClosedEnum; -export const StatusSeverity20 = { +export const StatusSeverity44 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type StatusSeverity20 = ClosedEnum; +export type StatusSeverity44 = ClosedEnum; -export type DataCollectionIssue20 = { +export type DataCollectionIssue44 = { message: string; - reason: DataReason20; - severity: StatusSeverity20; + reason: DataReason44; + severity: StatusSeverity44; source: string; }; -export const DataHealth20 = { +export const DataHealth44 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type DataHealth20 = ClosedEnum; +export type DataHealth44 = ClosedEnum; -export const StatusLifecycle20 = { +export const StatusLifecycle44 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -9296,195 +9284,69 @@ export const StatusLifecycle20 = { Deleted: "deleted", Failed: "failed", } as const; -export type StatusLifecycle20 = ClosedEnum; +export type StatusLifecycle44 = ClosedEnum; -export type ResourceHeartbeatStatus20 = { - collectionIssues: Array; - health: DataHealth20; - lifecycle: StatusLifecycle20; +export type ResourceHeartbeatStatus44 = { + collectionIssues: Array; + health: DataHealth44; + lifecycle: StatusLifecycle44; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataGcp2 = { - backendClusterId?: string | null | undefined; - capacityGroups: Array; - cpu?: Cpu8 | any | null | undefined; - memory?: Memory8 | any | null | undefined; +export type DataAzureManagedIdentity1 = { + clientId?: string | null | undefined; + customRoleDefinitionCount: number; + customRoleDefinitionIds: Array; + isolationScope?: string | null | undefined; + location: string; + managedTagCount: number; name: string; - nodes: Nodes2; - providerFleets: Array; - region?: string | null | undefined; - status: ResourceHeartbeatStatus20; - backend: "gcp"; -}; - -export const Category1 = { - Quota: "quota", - Capacity: "capacity", - Allocation: "allocation", - Other: "other", -} as const; -export type Category1 = ClosedEnum; - -export type CapacityBlocker1 = { - category: Category1; - message: string; - observedAt: Date; - providerCode?: string | null | undefined; - providerReference?: string | null | undefined; -}; - -export type CapacityBlockerUnion1 = CapacityBlocker1 | any; - -export type Blocker1 = { - reason: string; - replicaId: string; - schedulingMode: string; - state: string; - workloadName: string; -}; - -export const DrainProgressStatus1 = { - Draining: "draining", - Drained: "drained", - Terminating: "terminating", -} as const; -export type DrainProgressStatus1 = ClosedEnum; - -export type DrainProgress1 = { - blockers?: Array | undefined; - drainDeadlineAt?: string | null | undefined; - drainRequestedAt?: string | null | undefined; - drainedAt?: string | null | undefined; - force: boolean; - machineId: string; - replicaCount: number; - stalled: boolean; - status: DrainProgressStatus1; -}; - -export type DrainProgressUnion1 = DrainProgress1 | any; - -export const UtilizationUnit1 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type UtilizationUnit1 = ClosedEnum; - -export type Utilization1 = { - unit: UtilizationUnit1; - value: number; -}; - -export type UtilizationUnion1 = Utilization1 | any; - -export type Recommendation1 = { - desiredMachines: number; - reason?: string | null | undefined; - unschedulableReplicas?: number | null | undefined; - utilization?: Utilization1 | any | null | undefined; -}; - -export type RecommendationUnion1 = Recommendation1 | any; - -export type CapacityGroup1 = { - capacityBlocker?: CapacityBlocker1 | any | null | undefined; - currentMachines: number; - desiredMachines: number; - drainProgress?: DrainProgress1 | any | null | undefined; - groupId: string; - instanceType?: string | null | undefined; - maxMachines?: number | null | undefined; - minMachines?: number | null | undefined; - recommendation?: Recommendation1 | any | null | undefined; -}; - -export const CpuUnit7 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuUnit7 = ClosedEnum; - -export type Cpu7 = { - unit: CpuUnit7; - value: number; -}; - -export type CpuUnion7 = Cpu7 | any; - -export const MemoryUnit7 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryUnit7 = ClosedEnum; - -export type Memory7 = { - unit: MemoryUnit7; - value: number; -}; - -export type MemoryUnion7 = Memory7 | any; - -export type Nodes1 = { - current?: number | null | undefined; - desired?: number | null | undefined; - ready?: number | null | undefined; -}; - -export type ProviderFleet1 = { - currentMachines: number; - desiredMachines: number; - groupId: string; - location?: string | null | undefined; - providerId: string; + principalId?: string | null | undefined; + resourceGroup: string; + resourceId: string; + roleAssignmentCount: number; + roleAssignmentIds: Array; + stackPermissionsApplied: boolean; + status: ResourceHeartbeatStatus44; + tenantId?: string | null | undefined; + type?: string | null | undefined; + backend: "azureManagedIdentity"; }; -export const DataReason19 = { +export const DataReason43 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type DataReason19 = ClosedEnum; +export type DataReason43 = ClosedEnum; -export const StatusSeverity19 = { +export const StatusSeverity43 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type StatusSeverity19 = ClosedEnum; +export type StatusSeverity43 = ClosedEnum; -export type DataCollectionIssue19 = { +export type DataCollectionIssue43 = { message: string; - reason: DataReason19; - severity: StatusSeverity19; + reason: DataReason43; + severity: StatusSeverity43; source: string; }; -export const DataHealth19 = { +export const DataHealth43 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type DataHealth19 = ClosedEnum; +export type DataHealth43 = ClosedEnum; -export const StatusLifecycle19 = { +export const StatusLifecycle43 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -9496,157 +9358,67 @@ export const StatusLifecycle19 = { Deleted: "deleted", Failed: "failed", } as const; -export type StatusLifecycle19 = ClosedEnum; +export type StatusLifecycle43 = ClosedEnum; -export type ResourceHeartbeatStatus19 = { - collectionIssues: Array; - health: DataHealth19; - lifecycle: StatusLifecycle19; +export type ResourceHeartbeatStatus43 = { + collectionIssues: Array; + health: DataHealth43; + lifecycle: StatusLifecycle43; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataAws2 = { - backendClusterId?: string | null | undefined; - capacityGroups: Array; - cpu?: Cpu7 | any | null | undefined; - memory?: Memory7 | any | null | undefined; - name: string; - nodes: Nodes1; - providerFleets: Array; - region?: string | null | undefined; - status: ResourceHeartbeatStatus19; - backend: "aws"; -}; - -export type SyncReconcileRequestDataUnion5 = - | DataAws2 - | DataGcp2 - | DataAzure2 - | DataMachines2 - | DataLocal5; - -export type DataComputeCluster = { - data: DataAws2 | DataGcp2 | DataAzure2 | DataMachines2 | DataLocal5; - resourceType: "compute-cluster"; -}; - -export const DaemonInstanceCpuUnit = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type DaemonInstanceCpuUnit = ClosedEnum; - -export type DaemonInstanceCpu = { - unit: DaemonInstanceCpuUnit; - value: number; -}; - -export type DaemonInstanceCpuUnion5 = DaemonInstanceCpu | any; - -export const DaemonInstanceKind = { - Container: "container", - Process: "process", - Daemon: "daemon", -} as const; -export type DaemonInstanceKind = ClosedEnum; - -export const DaemonInstanceMemoryUnit = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type DaemonInstanceMemoryUnit = ClosedEnum< - typeof DaemonInstanceMemoryUnit ->; - -export type DaemonInstanceMemory = { - unit: DaemonInstanceMemoryUnit; - value: number; -}; - -export type DaemonInstanceMemoryUnion5 = DaemonInstanceMemory | any; - -export type DaemonInstance5 = { - cpu?: DaemonInstanceCpu | any | null | undefined; - kind: DaemonInstanceKind; - memory?: DaemonInstanceMemory | any | null | undefined; - name: string; - phase?: string | null | undefined; - pid?: number | null | undefined; - ready: boolean; - restartCount?: number | null | undefined; - unitId: string; -}; - -export type DaemonInstanceUnion = DaemonInstance5 | any; - -export const EventSeverity3 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type EventSeverity3 = ClosedEnum; - -export type SyncReconcileRequestSubject3 = { - id?: string | null | undefined; - kind: string; +export type DataGcpServiceAccount1 = { + description?: string | null | undefined; + disabled?: boolean | null | undefined; + displayName?: string | null | undefined; + email: string; + etag?: string | null | undefined; name?: string | null | undefined; + oauth2ClientId?: string | null | undefined; + projectBindingCount: number; + projectId?: string | null | undefined; + projectRoles: Array; + serviceAccountBindingCount: number; + serviceAccountRoles: Array; + status: ResourceHeartbeatStatus43; + uniqueId?: string | null | undefined; + backend: "gcpServiceAccount"; }; -export type SyncReconcileRequestSubjectUnion3 = - | SyncReconcileRequestSubject3 - | any; - -export type SyncReconcileRequestEvent11 = { - kind: string; - message: string; - raw?: any | null | undefined; - severity: EventSeverity3; - subject?: SyncReconcileRequestSubject3 | any | null | undefined; - timestamp: Date; -}; - -export const DataReason18 = { +export const DataReason42 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type DataReason18 = ClosedEnum; +export type DataReason42 = ClosedEnum; -export const StatusSeverity18 = { +export const StatusSeverity42 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type StatusSeverity18 = ClosedEnum; +export type StatusSeverity42 = ClosedEnum; -export type DataCollectionIssue18 = { +export type DataCollectionIssue42 = { message: string; - reason: DataReason18; - severity: StatusSeverity18; + reason: DataReason42; + severity: StatusSeverity42; source: string; }; -export const DataHealth18 = { +export const DataHealth42 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type DataHealth18 = ClosedEnum; +export type DataHealth42 = ClosedEnum; -export const StatusLifecycle18 = { +export const StatusLifecycle42 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -9658,194 +9430,88 @@ export const StatusLifecycle18 = { Deleted: "deleted", Failed: "failed", } as const; -export type StatusLifecycle18 = ClosedEnum; +export type StatusLifecycle42 = ClosedEnum; -export type ResourceHeartbeatStatus18 = { - collectionIssues: Array; - health: DataHealth18; - lifecycle: StatusLifecycle18; +export type ResourceHeartbeatStatus42 = { + collectionIssues: Array; + health: DataHealth42; + lifecycle: StatusLifecycle42; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataLocal4 = { - commandSupported: boolean; - daemonInstance?: DaemonInstance5 | any | null | undefined; - daemonName?: string | undefined; - events: Array; - exitReason?: string | null | undefined; - imagePathPresent: boolean; - pid?: number | null | undefined; - restartCount?: number | null | undefined; - runtimeId: string; - status: ResourceHeartbeatStatus18; - backend: "local"; -}; - -export const CpuUnit6 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuUnit6 = ClosedEnum; - -export type Cpu6 = { - unit: CpuUnit6; - value: number; -}; - -export type CpuUnion6 = Cpu6 | any; - -export type InvolvedObject8 = { - apiVersion?: string | null | undefined; - fieldPath?: string | null | undefined; - kind?: string | null | undefined; - name?: string | null | undefined; - namespace?: string | null | undefined; - resourceVersion?: string | null | undefined; - uid?: string | null | undefined; -}; - -export type InvolvedObjectUnion8 = InvolvedObject8 | any; - -export type SyncReconcileRequestSource8 = { - component?: string | null | undefined; - host?: string | null | undefined; -}; - -export type SourceUnion8 = SyncReconcileRequestSource8 | any; - -export type SyncReconcileRequestEvent10 = { - count?: number | null | undefined; - eventTime?: Date | null | undefined; - firstTimestamp?: Date | null | undefined; - involvedObject?: InvolvedObject8 | any | null | undefined; - lastTimestamp?: Date | null | undefined; - message: string; - raw?: any | null | undefined; - reason: string; - source?: SyncReconcileRequestSource8 | any | null | undefined; - type?: string | null | undefined; -}; - -export const MemoryUnit6 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryUnit6 = ClosedEnum; - -export type Memory6 = { - unit: MemoryUnit6; - value: number; -}; - -export type MemoryUnion6 = Memory6 | any; - -export const CpuPodUnit3 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuPodUnit3 = ClosedEnum; - -export type CpuPod3 = { - unit: CpuPodUnit3; - value: number; -}; - -export type PodCpuUnion3 = CpuPod3 | any; - -export const MemoryPodUnit3 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryPodUnit3 = ClosedEnum; - -export type MemoryPod3 = { - unit: MemoryPodUnit3; - value: number; -}; - -export type PodMemoryUnion3 = MemoryPod3 | any; - -export type OwnerReference3 = { - controller: boolean; - kind: string; - name: string; - uid: string; +export type DataAwsIamRole1 = { + assumeRolePolicyPresent: boolean; + attachedPolicyCount: number; + attachedPolicyNames: Array; + createDate: string; + description?: string | null | undefined; + inlinePolicyCount: number; + inlinePolicyNames: Array; + lastUsedDate?: string | null | undefined; + lastUsedRegion?: string | null | undefined; + managedTagCount: number; + maxSessionDuration?: number | null | undefined; + path: string; + permissionsBoundaryArn?: string | null | undefined; + permissionsBoundaryType?: string | null | undefined; + roleArn: string; + roleId: string; + roleName: string; + stackPermissionsApplied: boolean; + status: ResourceHeartbeatStatus42; + tagCount: number; + backend: "awsIamRole"; }; -export type Pod3 = { - cpu?: CpuPod3 | any | null | undefined; - memory?: MemoryPod3 | any | null | undefined; - name: string; - nodeName?: string | null | undefined; - ownerReferences: Array; - phase?: string | null | undefined; - podIp?: string | null | undefined; - ready: boolean; - restartCount: number; - terminatedReason?: string | null | undefined; - uid?: string | null | undefined; - waitingReason?: string | null | undefined; -}; +export type SyncReconcileRequestDataUnion10 = + | DataAwsIamRole1 + | DataGcpServiceAccount1 + | DataAzureManagedIdentity1 + | DataLocal10; -export type Replicas4 = { - available?: number | null | undefined; - current?: number | null | undefined; - desired?: number | null | undefined; - misscheduled?: number | null | undefined; - ready?: number | null | undefined; - updated?: number | null | undefined; +export type DataServiceAccount = { + data: + | DataAwsIamRole1 + | DataGcpServiceAccount1 + | DataAzureManagedIdentity1 + | DataLocal10; + resourceType: "service-account"; }; -export const DataReason17 = { +export const DataReason41 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type DataReason17 = ClosedEnum; +export type DataReason41 = ClosedEnum; -export const StatusSeverity17 = { +export const StatusSeverity41 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type StatusSeverity17 = ClosedEnum; +export type StatusSeverity41 = ClosedEnum; -export type DataCollectionIssue17 = { +export type DataCollectionIssue41 = { message: string; - reason: DataReason17; - severity: StatusSeverity17; + reason: DataReason41; + severity: StatusSeverity41; source: string; }; -export const DataHealth17 = { +export const DataHealth41 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type DataHealth17 = ClosedEnum; +export type DataHealth41 = ClosedEnum; -export const StatusLifecycle17 = { +export const StatusLifecycle41 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -9857,175 +9523,60 @@ export const StatusLifecycle17 = { Deleted: "deleted", Failed: "failed", } as const; -export type StatusLifecycle17 = ClosedEnum; +export type StatusLifecycle41 = ClosedEnum; -export type ResourceHeartbeatStatus17 = { - collectionIssues: Array; - health: DataHealth17; - lifecycle: StatusLifecycle17; +export type ResourceHeartbeatStatus41 = { + collectionIssues: Array; + health: DataHealth41; + lifecycle: StatusLifecycle41; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type WorkloadCondition3 = { - lastTransitionTime?: Date | null | undefined; - message?: string | null | undefined; - reason?: string | null | undefined; - status: string; - type: string; -}; - -export type Workload3 = { - availableReplicas?: number | null | undefined; - conditions: Array; - desiredGeneration?: number | null | undefined; - desiredReplicas?: number | null | undefined; - observedGeneration?: number | null | undefined; - readyReplicas?: number | null | undefined; - rolloutReason?: string | null | undefined; - updatedReplicas?: number | null | undefined; -}; - -export type WorkloadUnion3 = Workload3 | any; - -export type DataKubernetes3 = { - commandSupported: boolean; - cpu?: Cpu6 | any | null | undefined; - events: Array; - memory?: Memory6 | any | null | undefined; - name: string; - namespace: string; - pods: Array; - replicas: Replicas4; - restarts?: number | null | undefined; - status: ResourceHeartbeatStatus17; - workload?: Workload3 | any | null | undefined; - backend: "kubernetes"; -}; - -export const CpuDaemonInstanceUnit4 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuDaemonInstanceUnit4 = ClosedEnum; - -export type CpuDaemonInstance4 = { - unit: CpuDaemonInstanceUnit4; - value: number; -}; - -export type DaemonInstanceCpuUnion4 = CpuDaemonInstance4 | any; - -export const MemoryDaemonInstanceUnit4 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryDaemonInstanceUnit4 = ClosedEnum< - typeof MemoryDaemonInstanceUnit4 ->; - -export type MemoryDaemonInstance4 = { - unit: MemoryDaemonInstanceUnit4; - value: number; -}; - -export type DaemonInstanceMemoryUnion4 = MemoryDaemonInstance4 | any; - -export type DaemonInstance4 = { - cpu?: CpuDaemonInstance4 | any | null | undefined; - ip?: string | null | undefined; - machineId?: string | null | undefined; - memory?: MemoryDaemonInstance4 | any | null | undefined; - message?: string | null | undefined; - metricsHealthy?: boolean | null | undefined; - metricsLastUpdated?: string | null | undefined; - metricsStatus?: string | null | undefined; - name: string; - nodeName?: string | null | undefined; - phase?: string | null | undefined; - ready: boolean; - reason?: string | null | undefined; - replicaId: string; - restartCount?: number | null | undefined; - status?: string | null | undefined; - terminatedReason?: string | null | undefined; - waitingReason?: string | null | undefined; -}; - -export type InvolvedObject7 = { - details?: any | null | undefined; - id?: string | null | undefined; - kind?: string | null | undefined; - machineId?: string | null | undefined; - name?: string | null | undefined; - replicaId?: string | null | undefined; -}; - -export type InvolvedObjectUnion7 = InvolvedObject7 | any; - -export type SyncReconcileRequestSource7 = { - component?: string | null | undefined; - host?: string | null | undefined; -}; - -export type SourceUnion7 = SyncReconcileRequestSource7 | any; - -export type SyncReconcileRequestEvent9 = { - count?: number | null | undefined; - details?: any | null | undefined; - eventId?: string | null | undefined; - eventTime?: Date | null | undefined; - firstTimestamp?: Date | null | undefined; - involvedObject?: InvolvedObject7 | any | null | undefined; - lastTimestamp?: Date | null | undefined; - message: string; - raw?: any | null | undefined; - reason: string; - source?: SyncReconcileRequestSource7 | any | null | undefined; - type?: string | null | undefined; +export type DataLocal9 = { + isDirectory?: boolean | null | undefined; + modifiedAt?: Date | null | undefined; + path: string; + pathExists: boolean; + readonly?: boolean | null | undefined; + secretMetadataListed: boolean; + status: ResourceHeartbeatStatus41; + backend: "local"; }; -export const DataReason16 = { +export const DataReason40 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type DataReason16 = ClosedEnum; +export type DataReason40 = ClosedEnum; -export const StatusSeverity16 = { +export const StatusSeverity40 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type StatusSeverity16 = ClosedEnum; +export type StatusSeverity40 = ClosedEnum; -export type DataCollectionIssue16 = { +export type DataCollectionIssue40 = { message: string; - reason: DataReason16; - severity: StatusSeverity16; + reason: DataReason40; + severity: StatusSeverity40; source: string; }; -export const DataHealth16 = { +export const DataHealth40 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type DataHealth16 = ClosedEnum; +export type DataHealth40 = ClosedEnum; -export const StatusLifecycle16 = { +export const StatusLifecycle40 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -10037,158 +9588,57 @@ export const StatusLifecycle16 = { Deleted: "deleted", Failed: "failed", } as const; -export type StatusLifecycle16 = ClosedEnum; +export type StatusLifecycle40 = ClosedEnum; -export type ResourceHeartbeatStatus16 = { - collectionIssues: Array; - health: DataHealth16; - lifecycle: StatusLifecycle16; +export type ResourceHeartbeatStatus40 = { + collectionIssues: Array; + health: DataHealth40; + lifecycle: StatusLifecycle40; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataMachines1 = { - assignedMachines: number; - capacityGroup: string; - commandSupported: boolean; - daemonInstances: Array; - daemonName?: string | undefined; - desiredMachines: number; - events: Array; - healthyInstances: number; - horizonClusterId: string; - horizonStatus: string; - horizonStatusMessage?: string | null | undefined; - horizonStatusReason?: string | null | undefined; - latestUpdateTimestamp: string; - status: ResourceHeartbeatStatus16; - unavailableInstances: number; - backend: "machines"; -}; - -export const CpuDaemonInstanceUnit3 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuDaemonInstanceUnit3 = ClosedEnum; - -export type CpuDaemonInstance3 = { - unit: CpuDaemonInstanceUnit3; - value: number; -}; - -export type DaemonInstanceCpuUnion3 = CpuDaemonInstance3 | any; - -export const MemoryDaemonInstanceUnit3 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryDaemonInstanceUnit3 = ClosedEnum< - typeof MemoryDaemonInstanceUnit3 ->; - -export type MemoryDaemonInstance3 = { - unit: MemoryDaemonInstanceUnit3; - value: number; -}; - -export type DaemonInstanceMemoryUnion3 = MemoryDaemonInstance3 | any; - -export type DaemonInstance3 = { - cpu?: CpuDaemonInstance3 | any | null | undefined; - ip?: string | null | undefined; - machineId?: string | null | undefined; - memory?: MemoryDaemonInstance3 | any | null | undefined; - message?: string | null | undefined; - metricsHealthy?: boolean | null | undefined; - metricsLastUpdated?: string | null | undefined; - metricsStatus?: string | null | undefined; - name: string; - nodeName?: string | null | undefined; - phase?: string | null | undefined; - ready: boolean; - reason?: string | null | undefined; - replicaId: string; - restartCount?: number | null | undefined; - status?: string | null | undefined; - terminatedReason?: string | null | undefined; - waitingReason?: string | null | undefined; -}; - -export type InvolvedObject6 = { - details?: any | null | undefined; - id?: string | null | undefined; - kind?: string | null | undefined; - machineId?: string | null | undefined; - name?: string | null | undefined; - replicaId?: string | null | undefined; -}; - -export type InvolvedObjectUnion6 = InvolvedObject6 | any; - -export type SyncReconcileRequestSource6 = { - component?: string | null | undefined; - host?: string | null | undefined; -}; - -export type SourceUnion6 = SyncReconcileRequestSource6 | any; - -export type SyncReconcileRequestEvent8 = { - count?: number | null | undefined; - details?: any | null | undefined; - eventId?: string | null | undefined; - eventTime?: Date | null | undefined; - firstTimestamp?: Date | null | undefined; - involvedObject?: InvolvedObject6 | any | null | undefined; - lastTimestamp?: Date | null | undefined; - message: string; - raw?: any | null | undefined; - reason: string; - source?: SyncReconcileRequestSource6 | any | null | undefined; - type?: string | null | undefined; +export type DataKubernetesSecret = { + namespace: string; + prefix: string; + secretMetadataListed: boolean; + status: ResourceHeartbeatStatus40; + backend: "kubernetesSecret"; }; -export const DataReason15 = { +export const DataReason39 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type DataReason15 = ClosedEnum; +export type DataReason39 = ClosedEnum; -export const StatusSeverity15 = { +export const StatusSeverity39 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type StatusSeverity15 = ClosedEnum; +export type StatusSeverity39 = ClosedEnum; -export type DataCollectionIssue15 = { +export type DataCollectionIssue39 = { message: string; - reason: DataReason15; - severity: StatusSeverity15; + reason: DataReason39; + severity: StatusSeverity39; source: string; }; -export const DataHealth15 = { +export const DataHealth39 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type DataHealth15 = ClosedEnum; +export type DataHealth39 = ClosedEnum; -export const StatusLifecycle15 = { +export const StatusLifecycle39 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -10200,158 +9650,70 @@ export const StatusLifecycle15 = { Deleted: "deleted", Failed: "failed", } as const; -export type StatusLifecycle15 = ClosedEnum; +export type StatusLifecycle39 = ClosedEnum; -export type ResourceHeartbeatStatus15 = { - collectionIssues: Array; - health: DataHealth15; - lifecycle: StatusLifecycle15; +export type ResourceHeartbeatStatus39 = { + collectionIssues: Array; + health: DataHealth39; + lifecycle: StatusLifecycle39; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataAzure1 = { - assignedMachines: number; - capacityGroup: string; - commandSupported: boolean; - daemonInstances: Array; - daemonName?: string | undefined; - desiredMachines: number; - events: Array; - healthyInstances: number; - horizonClusterId: string; - horizonStatus: string; - horizonStatusMessage?: string | null | undefined; - horizonStatusReason?: string | null | undefined; - latestUpdateTimestamp: string; - status: ResourceHeartbeatStatus15; - unavailableInstances: number; - backend: "azure"; -}; - -export const CpuDaemonInstanceUnit2 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuDaemonInstanceUnit2 = ClosedEnum; - -export type CpuDaemonInstance2 = { - unit: CpuDaemonInstanceUnit2; - value: number; -}; - -export type DaemonInstanceCpuUnion2 = CpuDaemonInstance2 | any; - -export const MemoryDaemonInstanceUnit2 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryDaemonInstanceUnit2 = ClosedEnum< - typeof MemoryDaemonInstanceUnit2 ->; - -export type MemoryDaemonInstance2 = { - unit: MemoryDaemonInstanceUnit2; - value: number; -}; - -export type DaemonInstanceMemoryUnion2 = MemoryDaemonInstance2 | any; - -export type DaemonInstance2 = { - cpu?: CpuDaemonInstance2 | any | null | undefined; - ip?: string | null | undefined; - machineId?: string | null | undefined; - memory?: MemoryDaemonInstance2 | any | null | undefined; - message?: string | null | undefined; - metricsHealthy?: boolean | null | undefined; - metricsLastUpdated?: string | null | undefined; - metricsStatus?: string | null | undefined; +export type DataAzureKeyVault1 = { + accessPolicyCount: number; + location?: string | null | undefined; name: string; - nodeName?: string | null | undefined; - phase?: string | null | undefined; - ready: boolean; - reason?: string | null | undefined; - replicaId: string; - restartCount?: number | null | undefined; - status?: string | null | undefined; - terminatedReason?: string | null | undefined; - waitingReason?: string | null | undefined; -}; - -export type InvolvedObject5 = { - details?: any | null | undefined; - id?: string | null | undefined; - kind?: string | null | undefined; - machineId?: string | null | undefined; - name?: string | null | undefined; - replicaId?: string | null | undefined; -}; - -export type InvolvedObjectUnion5 = InvolvedObject5 | any; - -export type SyncReconcileRequestSource5 = { - component?: string | null | undefined; - host?: string | null | undefined; -}; - -export type SourceUnion5 = SyncReconcileRequestSource5 | any; - -export type SyncReconcileRequestEvent7 = { - count?: number | null | undefined; - details?: any | null | undefined; - eventId?: string | null | undefined; - eventTime?: Date | null | undefined; - firstTimestamp?: Date | null | undefined; - involvedObject?: InvolvedObject5 | any | null | undefined; - lastTimestamp?: Date | null | undefined; - message: string; - raw?: any | null | undefined; - reason: string; - source?: SyncReconcileRequestSource5 | any | null | undefined; - type?: string | null | undefined; + privateEndpointConnectionCount: number; + provisioningState?: string | null | undefined; + publicNetworkAccess: string; + purgeProtectionEnabled?: boolean | null | undefined; + rbacAuthorizationEnabled: boolean; + resourceGroup?: string | null | undefined; + resourceId?: string | null | undefined; + secretMetadataListed: boolean; + skuFamily?: string | null | undefined; + skuName?: string | null | undefined; + softDeleteEnabled: boolean; + softDeleteRetentionDays: number; + status: ResourceHeartbeatStatus39; + vaultUri?: string | null | undefined; + backend: "azureKeyVault"; }; -export const DataReason14 = { +export const DataReason38 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type DataReason14 = ClosedEnum; +export type DataReason38 = ClosedEnum; -export const StatusSeverity14 = { +export const StatusSeverity38 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type StatusSeverity14 = ClosedEnum; +export type StatusSeverity38 = ClosedEnum; -export type DataCollectionIssue14 = { +export type DataCollectionIssue38 = { message: string; - reason: DataReason14; - severity: StatusSeverity14; + reason: DataReason38; + severity: StatusSeverity38; source: string; }; -export const DataHealth14 = { +export const DataHealth38 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type DataHealth14 = ClosedEnum; +export type DataHealth38 = ClosedEnum; -export const StatusLifecycle14 = { +export const StatusLifecycle38 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -10363,158 +9725,58 @@ export const StatusLifecycle14 = { Deleted: "deleted", Failed: "failed", } as const; -export type StatusLifecycle14 = ClosedEnum; +export type StatusLifecycle38 = ClosedEnum; -export type ResourceHeartbeatStatus14 = { - collectionIssues: Array; - health: DataHealth14; - lifecycle: StatusLifecycle14; +export type ResourceHeartbeatStatus38 = { + collectionIssues: Array; + health: DataHealth38; + lifecycle: StatusLifecycle38; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataGcp1 = { - assignedMachines: number; - capacityGroup: string; - commandSupported: boolean; - daemonInstances: Array; - daemonName?: string | undefined; - desiredMachines: number; - events: Array; - healthyInstances: number; - horizonClusterId: string; - horizonStatus: string; - horizonStatusMessage?: string | null | undefined; - horizonStatusReason?: string | null | undefined; - latestUpdateTimestamp: string; - status: ResourceHeartbeatStatus14; - unavailableInstances: number; - backend: "gcp"; -}; - -export const CpuDaemonInstanceUnit1 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuDaemonInstanceUnit1 = ClosedEnum; - -export type CpuDaemonInstance1 = { - unit: CpuDaemonInstanceUnit1; - value: number; -}; - -export type DaemonInstanceCpuUnion1 = CpuDaemonInstance1 | any; - -export const MemoryDaemonInstanceUnit1 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryDaemonInstanceUnit1 = ClosedEnum< - typeof MemoryDaemonInstanceUnit1 ->; - -export type MemoryDaemonInstance1 = { - unit: MemoryDaemonInstanceUnit1; - value: number; -}; - -export type DaemonInstanceMemoryUnion1 = MemoryDaemonInstance1 | any; - -export type DaemonInstance1 = { - cpu?: CpuDaemonInstance1 | any | null | undefined; - ip?: string | null | undefined; - machineId?: string | null | undefined; - memory?: MemoryDaemonInstance1 | any | null | undefined; - message?: string | null | undefined; - metricsHealthy?: boolean | null | undefined; - metricsLastUpdated?: string | null | undefined; - metricsStatus?: string | null | undefined; - name: string; - nodeName?: string | null | undefined; - phase?: string | null | undefined; - ready: boolean; - reason?: string | null | undefined; - replicaId: string; - restartCount?: number | null | undefined; - status?: string | null | undefined; - terminatedReason?: string | null | undefined; - waitingReason?: string | null | undefined; -}; - -export type InvolvedObject4 = { - details?: any | null | undefined; - id?: string | null | undefined; - kind?: string | null | undefined; - machineId?: string | null | undefined; - name?: string | null | undefined; - replicaId?: string | null | undefined; -}; - -export type InvolvedObjectUnion4 = InvolvedObject4 | any; - -export type SyncReconcileRequestSource4 = { - component?: string | null | undefined; - host?: string | null | undefined; -}; - -export type SourceUnion4 = SyncReconcileRequestSource4 | any; - -export type SyncReconcileRequestEvent6 = { - count?: number | null | undefined; - details?: any | null | undefined; - eventId?: string | null | undefined; - eventTime?: Date | null | undefined; - firstTimestamp?: Date | null | undefined; - involvedObject?: InvolvedObject4 | any | null | undefined; - lastTimestamp?: Date | null | undefined; - message: string; - raw?: any | null | undefined; - reason: string; - source?: SyncReconcileRequestSource4 | any | null | undefined; - type?: string | null | undefined; +export type DataGcpSecretManager = { + location: string; + prefix: string; + projectId: string; + secretMetadataListed: boolean; + status: ResourceHeartbeatStatus38; + backend: "gcpSecretManager"; }; -export const DataReason13 = { +export const DataReason37 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type DataReason13 = ClosedEnum; +export type DataReason37 = ClosedEnum; -export const StatusSeverity13 = { +export const StatusSeverity37 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type StatusSeverity13 = ClosedEnum; +export type StatusSeverity37 = ClosedEnum; -export type DataCollectionIssue13 = { +export type DataCollectionIssue37 = { message: string; - reason: DataReason13; - severity: StatusSeverity13; + reason: DataReason37; + severity: StatusSeverity37; source: string; }; -export const DataHealth13 = { +export const DataHealth37 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type DataHealth13 = ClosedEnum; +export type DataHealth37 = ClosedEnum; -export const StatusLifecycle13 = { +export const StatusLifecycle37 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -10526,204 +9788,83 @@ export const StatusLifecycle13 = { Deleted: "deleted", Failed: "failed", } as const; -export type StatusLifecycle13 = ClosedEnum; +export type StatusLifecycle37 = ClosedEnum; -export type ResourceHeartbeatStatus13 = { - collectionIssues: Array; - health: DataHealth13; - lifecycle: StatusLifecycle13; +export type ResourceHeartbeatStatus37 = { + collectionIssues: Array; + health: DataHealth37; + lifecycle: StatusLifecycle37; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataAws1 = { - assignedMachines: number; - capacityGroup: string; - commandSupported: boolean; - daemonInstances: Array; - daemonName?: string | undefined; - desiredMachines: number; - events: Array; - healthyInstances: number; - horizonClusterId: string; - horizonStatus: string; - horizonStatusMessage?: string | null | undefined; - horizonStatusReason?: string | null | undefined; - latestUpdateTimestamp: string; - status: ResourceHeartbeatStatus13; - unavailableInstances: number; - backend: "aws"; +export type DataAwsParameterStore = { + accountId: string; + hasMoreParameters?: boolean | null | undefined; + latestModifiedAt?: Date | null | undefined; + parameterMetadataSampled: boolean; + prefix: string; + region: string; + sampledAdvancedTierCount?: number | null | undefined; + sampledKmsKeyMetadataPresentCount?: number | null | undefined; + sampledParameterCount?: number | null | undefined; + sampledSecureStringCount?: number | null | undefined; + sampledStringCount?: number | null | undefined; + sampledStringListCount?: number | null | undefined; + status: ResourceHeartbeatStatus37; + backend: "awsParameterStore"; }; -export type SyncReconcileRequestDataUnion4 = - | DataAws1 - | DataGcp1 - | DataAzure1 - | DataMachines1 - | DataKubernetes3 - | DataLocal4; +export type SyncReconcileRequestDataUnion9 = + | DataAwsParameterStore + | DataGcpSecretManager + | DataAzureKeyVault1 + | DataKubernetesSecret + | DataLocal9; -export type DataDaemon = { +export type DataVault = { data: - | DataAws1 - | DataGcp1 - | DataAzure1 - | DataMachines1 - | DataKubernetes3 - | DataLocal4; - resourceType: "daemon"; -}; - -export const ContainerUnitCpuUnit = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type ContainerUnitCpuUnit = ClosedEnum; - -export type ContainerUnitCpu = { - unit: ContainerUnitCpuUnit; - value: number; -}; - -export type ContainerUnitCpuUnion = ContainerUnitCpu | any; - -export const ContainerUnitKind = { - Container: "container", - Process: "process", - Daemon: "daemon", -} as const; -export type ContainerUnitKind = ClosedEnum; - -export const ContainerUnitMemoryUnit = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type ContainerUnitMemoryUnit = ClosedEnum< - typeof ContainerUnitMemoryUnit ->; - -export type ContainerUnitMemory = { - unit: ContainerUnitMemoryUnit; - value: number; -}; - -export type ContainerUnitMemoryUnion = ContainerUnitMemory | any; - -export type ContainerUnit = { - cpu?: ContainerUnitCpu | any | null | undefined; - kind: ContainerUnitKind; - memory?: ContainerUnitMemory | any | null | undefined; - name: string; - phase?: string | null | undefined; - pid?: number | null | undefined; - ready: boolean; - restartCount?: number | null | undefined; - unitId: string; -}; - -export type ContainerUnitUnion = ContainerUnit | any; - -export const CpuUnit5 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuUnit5 = ClosedEnum; - -export type Cpu5 = { - unit: CpuUnit5; - value: number; -}; - -export type CpuUnion5 = Cpu5 | any; - -export const EventSeverity2 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type EventSeverity2 = ClosedEnum; - -export type SyncReconcileRequestSubject2 = { - id?: string | null | undefined; - kind: string; - name?: string | null | undefined; -}; - -export type SyncReconcileRequestSubjectUnion2 = - | SyncReconcileRequestSubject2 - | any; - -export type SyncReconcileRequestEvent5 = { - kind: string; - message: string; - raw?: any | null | undefined; - severity: EventSeverity2; - subject?: SyncReconcileRequestSubject2 | any | null | undefined; - timestamp: Date; -}; - -export const MemoryUnit5 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryUnit5 = ClosedEnum; - -export type Memory5 = { - unit: MemoryUnit5; - value: number; + | DataAwsParameterStore + | DataGcpSecretManager + | DataAzureKeyVault1 + | DataKubernetesSecret + | DataLocal9; + resourceType: "vault"; }; -export type MemoryUnion5 = Memory5 | any; - -export const DataReason12 = { +export const DataReason36 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type DataReason12 = ClosedEnum; +export type DataReason36 = ClosedEnum; -export const StatusSeverity12 = { +export const StatusSeverity36 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type StatusSeverity12 = ClosedEnum; +export type StatusSeverity36 = ClosedEnum; -export type DataCollectionIssue12 = { +export type DataCollectionIssue36 = { message: string; - reason: DataReason12; - severity: StatusSeverity12; + reason: DataReason36; + severity: StatusSeverity36; source: string; }; -export const DataHealth12 = { +export const DataHealth36 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type DataHealth12 = ClosedEnum; +export type DataHealth36 = ClosedEnum; -export const StatusLifecycle12 = { +export const StatusLifecycle36 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -10735,198 +9876,126 @@ export const StatusLifecycle12 = { Deleted: "deleted", Failed: "failed", } as const; -export type StatusLifecycle12 = ClosedEnum; +export type StatusLifecycle36 = ClosedEnum; -export type ResourceHeartbeatStatus12 = { - collectionIssues: Array; - health: DataHealth12; - lifecycle: StatusLifecycle12; +export type ResourceHeartbeatStatus36 = { + collectionIssues: Array; + health: DataHealth36; + lifecycle: StatusLifecycle36; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataLocal3 = { - bindMountCount: number; - containerId?: string | null | undefined; - containerUnit?: ContainerUnit | any | null | undefined; - cpu?: Cpu5 | any | null | undefined; - events: Array; - image?: string | null | undefined; - localUrl?: string | null | undefined; - memory?: Memory5 | any | null | undefined; - name?: string | null | undefined; - portCount: number; - restartCount?: number | null | undefined; - runtimeReachable: boolean; - runtimeStatus?: string | null | undefined; - status: ResourceHeartbeatStatus12; - backend: "local"; -}; - -export const CpuUnit4 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuUnit4 = ClosedEnum; - -export type Cpu4 = { - unit: CpuUnit4; - value: number; -}; - -export type CpuUnion4 = Cpu4 | any; - -export type InvolvedObject3 = { - apiVersion?: string | null | undefined; - fieldPath?: string | null | undefined; - kind?: string | null | undefined; - name?: string | null | undefined; - namespace?: string | null | undefined; - resourceVersion?: string | null | undefined; - uid?: string | null | undefined; -}; - -export type InvolvedObjectUnion3 = InvolvedObject3 | any; - -export type SyncReconcileRequestSource3 = { - component?: string | null | undefined; - host?: string | null | undefined; -}; - -export type SourceUnion3 = SyncReconcileRequestSource3 | any; - -export type SyncReconcileRequestEvent4 = { - count?: number | null | undefined; - eventTime?: Date | null | undefined; - firstTimestamp?: Date | null | undefined; - involvedObject?: InvolvedObject3 | any | null | undefined; - lastTimestamp?: Date | null | undefined; - message: string; - raw?: any | null | undefined; - reason: string; - source?: SyncReconcileRequestSource3 | any | null | undefined; - type?: string | null | undefined; +/** + * Local embedded Postgres backend. + */ +export type DataLocal8 = { + name: string; + port?: number | null | undefined; + processRunning: boolean; + status: ResourceHeartbeatStatus36; + version: string; + backend: "local"; }; -export const MemoryUnit4 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", +export const DataReason35 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", } as const; -export type MemoryUnit4 = ClosedEnum; - -export type Memory4 = { - unit: MemoryUnit4; - value: number; -}; - -export type MemoryUnion4 = Memory4 | any; +export type DataReason35 = ClosedEnum; -export const CpuPodUnit2 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", +export const StatusSeverity35 = { + Info: "info", + Warning: "warning", + Error: "error", } as const; -export type CpuPodUnit2 = ClosedEnum; +export type StatusSeverity35 = ClosedEnum; -export type CpuPod2 = { - unit: CpuPodUnit2; - value: number; +export type DataCollectionIssue35 = { + message: string; + reason: DataReason35; + severity: StatusSeverity35; + source: string; }; -export type PodCpuUnion2 = CpuPod2 | any; - -export const MemoryPodUnit2 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", +export const DataHealth35 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", } as const; -export type MemoryPodUnit2 = ClosedEnum; - -export type MemoryPod2 = { - unit: MemoryPodUnit2; - value: number; -}; - -export type PodMemoryUnion2 = MemoryPod2 | any; +export type DataHealth35 = ClosedEnum; -export type OwnerReference2 = { - controller: boolean; - kind: string; - name: string; - uid: string; -}; +export const StatusLifecycle35 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle35 = ClosedEnum; -export type Pod2 = { - cpu?: CpuPod2 | any | null | undefined; - memory?: MemoryPod2 | any | null | undefined; - name: string; - nodeName?: string | null | undefined; - ownerReferences: Array; - phase?: string | null | undefined; - podIp?: string | null | undefined; - ready: boolean; - restartCount: number; - terminatedReason?: string | null | undefined; - uid?: string | null | undefined; - waitingReason?: string | null | undefined; +export type ResourceHeartbeatStatus35 = { + collectionIssues: Array; + health: DataHealth35; + lifecycle: StatusLifecycle35; + message?: string | null | undefined; + partial: boolean; + stale: boolean; }; -export type Replicas3 = { - available?: number | null | undefined; - current?: number | null | undefined; - desired?: number | null | undefined; - misscheduled?: number | null | undefined; - ready?: number | null | undefined; - updated?: number | null | undefined; +/** + * Azure Flexible Server backend. + */ +export type DataFlexibleServer = { + serverName: string; + state?: string | null | undefined; + status: ResourceHeartbeatStatus35; + version?: string | null | undefined; + backend: "flexibleServer"; }; -export const DataReason11 = { +export const DataReason34 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type DataReason11 = ClosedEnum; +export type DataReason34 = ClosedEnum; -export const StatusSeverity11 = { +export const StatusSeverity34 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type StatusSeverity11 = ClosedEnum; +export type StatusSeverity34 = ClosedEnum; -export type DataCollectionIssue11 = { +export type DataCollectionIssue34 = { message: string; - reason: DataReason11; - severity: StatusSeverity11; + reason: DataReason34; + severity: StatusSeverity34; source: string; }; -export const DataHealth11 = { +export const DataHealth34 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type DataHealth11 = ClosedEnum; +export type DataHealth34 = ClosedEnum; -export const StatusLifecycle11 = { +export const StatusLifecycle34 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -10938,232 +10007,211 @@ export const StatusLifecycle11 = { Deleted: "deleted", Failed: "failed", } as const; -export type StatusLifecycle11 = ClosedEnum; +export type StatusLifecycle34 = ClosedEnum; -export type ResourceHeartbeatStatus11 = { - collectionIssues: Array; - health: DataHealth11; - lifecycle: StatusLifecycle11; +export type ResourceHeartbeatStatus34 = { + collectionIssues: Array; + health: DataHealth34; + lifecycle: StatusLifecycle34; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type WorkloadCondition2 = { - lastTransitionTime?: Date | null | undefined; - message?: string | null | undefined; - reason?: string | null | undefined; - status: string; - type: string; -}; - -export type Workload2 = { - availableReplicas?: number | null | undefined; - conditions: Array; - desiredGeneration?: number | null | undefined; - desiredReplicas?: number | null | undefined; - observedGeneration?: number | null | undefined; - readyReplicas?: number | null | undefined; - rolloutReason?: string | null | undefined; - updatedReplicas?: number | null | undefined; +/** + * GCP Cloud SQL backend. + */ +export type DataCloudSQL = { + databaseVersion?: string | null | undefined; + instanceName: string; + state?: string | null | undefined; + status: ResourceHeartbeatStatus34; + backend: "cloudSql"; }; -export type WorkloadUnion2 = Workload2 | any; +export const DataReason33 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type DataReason33 = ClosedEnum; -export const WorkloadKind2 = { - Deployment: "deployment", - StatefulSet: "statefulSet", - DaemonSet: "daemonSet", - ReplicaSet: "replicaSet", - Pod: "pod", +export const StatusSeverity33 = { + Info: "info", + Warning: "warning", + Error: "error", } as const; -export type WorkloadKind2 = ClosedEnum; +export type StatusSeverity33 = ClosedEnum; -export type DataKubernetes2 = { - cpu?: Cpu4 | any | null | undefined; - events: Array; - memory?: Memory4 | any | null | undefined; - name: string; - namespace: string; - pods: Array; - replicas: Replicas3; - restarts?: number | null | undefined; - status: ResourceHeartbeatStatus11; - workload?: Workload2 | any | null | undefined; - workloadKind: WorkloadKind2; - backend: "kubernetes"; +export type DataCollectionIssue33 = { + message: string; + reason: DataReason33; + severity: StatusSeverity33; + source: string; }; -export const CpuUnit3 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", +export const DataHealth33 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", } as const; -export type CpuUnit3 = ClosedEnum; - -export type Cpu3 = { - unit: CpuUnit3; - value: number; -}; +export type DataHealth33 = ClosedEnum; -export type CpuUnion3 = Cpu3 | any; +export const StatusLifecycle33 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle33 = ClosedEnum; -export type InvolvedObject2 = { - details?: any | null | undefined; - id?: string | null | undefined; - kind?: string | null | undefined; - machineId?: string | null | undefined; - name?: string | null | undefined; - replicaId?: string | null | undefined; +export type ResourceHeartbeatStatus33 = { + collectionIssues: Array; + health: DataHealth33; + lifecycle: StatusLifecycle33; + message?: string | null | undefined; + partial: boolean; + stale: boolean; }; -export type InvolvedObjectUnion2 = InvolvedObject2 | any; - -export type SyncReconcileRequestSource2 = { - component?: string | null | undefined; - host?: string | null | undefined; +/** + * AWS Aurora Serverless v2 backend. + */ +export type DataAurora = { + clusterIdentifier: string; + endpoint?: string | null | undefined; + engineVersion?: string | null | undefined; + /** + * True when a `minCapacity: 0` instance has not reached 0 ACU over the observation + * + * @remarks + * window — it is silently paying always-on prices (auto-pause verification). + */ + neverPauses: boolean; + /** + * Latest sampled `ServerlessDatabaseCapacity` (ACU). + */ + serverlessCapacity?: number | null | undefined; + status: ResourceHeartbeatStatus33; + backend: "aurora"; }; -export type SourceUnion2 = SyncReconcileRequestSource2 | any; +export type SyncReconcileRequestDataUnion8 = + | DataAurora + | DataCloudSQL + | DataFlexibleServer + | DataLocal8; -export type SyncReconcileRequestEvent3 = { - count?: number | null | undefined; - details?: any | null | undefined; - eventId?: string | null | undefined; - eventTime?: Date | null | undefined; - firstTimestamp?: Date | null | undefined; - involvedObject?: InvolvedObject2 | any | null | undefined; - lastTimestamp?: Date | null | undefined; - message: string; - raw?: any | null | undefined; - reason: string; - source?: SyncReconcileRequestSource2 | any | null | undefined; - type?: string | null | undefined; +export type DataPostgres = { + data: DataAurora | DataCloudSQL | DataFlexibleServer | DataLocal8; + resourceType: "postgres"; }; -export const MemoryUnit3 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", +export const DataReason32 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", } as const; -export type MemoryUnit3 = ClosedEnum; - -export type Memory3 = { - unit: MemoryUnit3; - value: number; -}; - -export type MemoryUnion3 = Memory3 | any; +export type DataReason32 = ClosedEnum; -export const CpuReplicaUnitUnit = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", +export const StatusSeverity32 = { + Info: "info", + Warning: "warning", + Error: "error", } as const; -export type CpuReplicaUnitUnit = ClosedEnum; +export type StatusSeverity32 = ClosedEnum; -export type CpuReplicaUnit = { - unit: CpuReplicaUnitUnit; - value: number; +export type DataCollectionIssue32 = { + message: string; + reason: DataReason32; + severity: StatusSeverity32; + source: string; }; -export type ReplicaUnitCpuUnion = CpuReplicaUnit | any; - -export const MemoryReplicaUnitUnit = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", +export const DataHealth32 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", } as const; -export type MemoryReplicaUnitUnit = ClosedEnum; - -export type MemoryReplicaUnit = { - unit: MemoryReplicaUnitUnit; - value: number; -}; +export type DataHealth32 = ClosedEnum; -export type ReplicaUnitMemoryUnion = MemoryReplicaUnit | any; +export const StatusLifecycle32 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle32 = ClosedEnum; -export type ReplicaUnit = { - cpu?: CpuReplicaUnit | any | null | undefined; - ip?: string | null | undefined; - machineId?: string | null | undefined; - memory?: MemoryReplicaUnit | any | null | undefined; +export type ResourceHeartbeatStatus32 = { + collectionIssues: Array; + health: DataHealth32; + lifecycle: StatusLifecycle32; message?: string | null | undefined; - metricsHealthy?: boolean | null | undefined; - metricsLastUpdated?: string | null | undefined; - metricsStatus?: string | null | undefined; - name: string; - nodeName?: string | null | undefined; - phase?: string | null | undefined; - ready: boolean; - reason?: string | null | undefined; - replicaId: string; - restartCount?: number | null | undefined; - status?: string | null | undefined; - terminatedReason?: string | null | undefined; - waitingReason?: string | null | undefined; + partial: boolean; + stale: boolean; }; -export type Replicas2 = { - available?: number | null | undefined; - current?: number | null | undefined; - desired?: number | null | undefined; - misscheduled?: number | null | undefined; - ready?: number | null | undefined; - updated?: number | null | undefined; +export type DataLocal7 = { + cloudMetadataSupported: boolean; + isDirectory?: boolean | null | undefined; + name: string; + path: string; + pathExists: boolean; + status: ResourceHeartbeatStatus32; + backend: "local"; }; -export const SchedulingMode = { - Replicated: "replicated", - Stateful: "stateful", - Daemon: "daemon", -} as const; -export type SchedulingMode = ClosedEnum; - -export const DataReason10 = { +export const DataReason31 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type DataReason10 = ClosedEnum; +export type DataReason31 = ClosedEnum; -export const StatusSeverity10 = { +export const StatusSeverity31 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type StatusSeverity10 = ClosedEnum; +export type StatusSeverity31 = ClosedEnum; -export type DataCollectionIssue10 = { +export type DataCollectionIssue31 = { message: string; - reason: DataReason10; - severity: StatusSeverity10; + reason: DataReason31; + severity: StatusSeverity31; source: string; }; -export const DataHealth10 = { +export const DataHealth31 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type DataHealth10 = ClosedEnum; +export type DataHealth31 = ClosedEnum; -export const StatusLifecycle10 = { +export const StatusLifecycle31 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -11175,188 +10223,65 @@ export const StatusLifecycle10 = { Deleted: "deleted", Failed: "failed", } as const; -export type StatusLifecycle10 = ClosedEnum; +export type StatusLifecycle31 = ClosedEnum; -export type ResourceHeartbeatStatus10 = { - collectionIssues: Array; - health: DataHealth10; - lifecycle: StatusLifecycle10; +export type ResourceHeartbeatStatus31 = { + collectionIssues: Array; + health: DataHealth31; + lifecycle: StatusLifecycle31; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataHorizonPlatform = { - attentionCount: number; - containerId: string; - cpu?: Cpu3 | any | null | undefined; - events: Array; - image?: string | null | undefined; - memory?: Memory3 | any | null | undefined; - replicaUnits: Array; - replicas: Replicas2; - schedulingMode: SchedulingMode; - status: ResourceHeartbeatStatus10; - backend: "horizonPlatform"; -}; - -export type SyncReconcileRequestDataUnion3 = - | DataHorizonPlatform - | DataKubernetes2 - | DataLocal3; - -export type DataContainer = { - data: DataHorizonPlatform | DataKubernetes2 | DataLocal3; - resourceType: "container"; -}; - -export const CpuUnit2 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuUnit2 = ClosedEnum; - -export type Cpu2 = { - unit: CpuUnit2; - value: number; -}; - -export type CpuUnion2 = Cpu2 | any; - -export const EventSeverity1 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type EventSeverity1 = ClosedEnum; - -export type SyncReconcileRequestSubject1 = { - id?: string | null | undefined; - kind: string; - name?: string | null | undefined; -}; - -export type SyncReconcileRequestSubjectUnion1 = - | SyncReconcileRequestSubject1 - | any; - -export type SyncReconcileRequestEvent2 = { - kind: string; - message: string; - raw?: any | null | undefined; - severity: EventSeverity1; - subject?: SyncReconcileRequestSubject1 | any | null | undefined; - timestamp: Date; -}; - -export const MemoryUnit2 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryUnit2 = ClosedEnum; - -export type Memory2 = { - unit: MemoryUnit2; - value: number; -}; - -export type MemoryUnion2 = Memory2 | any; - -export const ProcessCpuUnit = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type ProcessCpuUnit = ClosedEnum; - -export type ProcessCpu = { - unit: ProcessCpuUnit; - value: number; -}; - -export type ProcessCpuUnion = ProcessCpu | any; - -export const ProcessKind = { - Container: "container", - Process: "process", - Daemon: "daemon", -} as const; -export type ProcessKind = ClosedEnum; - -export const ProcessMemoryUnit = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type ProcessMemoryUnit = ClosedEnum; - -export type ProcessMemory = { - unit: ProcessMemoryUnit; - value: number; -}; - -export type ProcessMemoryUnion = ProcessMemory | any; - -export type Process = { - cpu?: ProcessCpu | any | null | undefined; - kind: ProcessKind; - memory?: ProcessMemory | any | null | undefined; - name: string; - phase?: string | null | undefined; - pid?: number | null | undefined; - ready: boolean; - restartCount?: number | null | undefined; - unitId: string; +export type DataAzureTable = { + endpoint?: string | null | undefined; + resourceGroup?: string | null | undefined; + signedIdentifierCount?: number | null | undefined; + status: ResourceHeartbeatStatus31; + storageAccountKind?: string | null | undefined; + storageAccountLocation?: string | null | undefined; + storageAccountName: string; + storageAccountPrimaryStatus?: string | null | undefined; + storageAccountProvisioningState?: string | null | undefined; + storageAccountResourceId?: string | null | undefined; + tableExists: boolean; + tableName: string; + backend: "azureTable"; }; -export type ProcessUnion = Process | any; - -export const DataReason9 = { +export const DataReason30 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type DataReason9 = ClosedEnum; +export type DataReason30 = ClosedEnum; -export const StatusSeverity9 = { +export const StatusSeverity30 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type StatusSeverity9 = ClosedEnum; +export type StatusSeverity30 = ClosedEnum; -export type DataCollectionIssue9 = { +export type DataCollectionIssue30 = { message: string; - reason: DataReason9; - severity: StatusSeverity9; + reason: DataReason30; + severity: StatusSeverity30; source: string; }; -export const DataHealth9 = { +export const DataHealth30 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type DataHealth9 = ClosedEnum; +export type DataHealth30 = ClosedEnum; -export const StatusLifecycle9 = { +export const StatusLifecycle30 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -11368,194 +10293,76 @@ export const StatusLifecycle9 = { Deleted: "deleted", Failed: "failed", } as const; -export type StatusLifecycle9 = ClosedEnum; +export type StatusLifecycle30 = ClosedEnum; -export type ResourceHeartbeatStatus9 = { - collectionIssues: Array; - health: DataHealth9; - lifecycle: StatusLifecycle9; +export type ResourceHeartbeatStatus30 = { + collectionIssues: Array; + health: DataHealth30; + lifecycle: StatusLifecycle30; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataLocal2 = { - commandSupported: boolean; - cpu?: Cpu2 | any | null | undefined; - events: Array; - imagePathPresent: boolean; - memory?: Memory2 | any | null | undefined; - pid?: number | null | undefined; - process?: Process | any | null | undefined; - readinessProbeOk?: boolean | null | undefined; - status: ResourceHeartbeatStatus9; - triggerCount: number; - backend: "local"; -}; - -export const CpuUnit1 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuUnit1 = ClosedEnum; - -export type Cpu1 = { - unit: CpuUnit1; - value: number; -}; - -export type CpuUnion1 = Cpu1 | any; - -export type InvolvedObject1 = { - apiVersion?: string | null | undefined; - fieldPath?: string | null | undefined; - kind?: string | null | undefined; - name?: string | null | undefined; - namespace?: string | null | undefined; - resourceVersion?: string | null | undefined; - uid?: string | null | undefined; -}; - -export type InvolvedObjectUnion1 = InvolvedObject1 | any; - -export type SyncReconcileRequestSource1 = { - component?: string | null | undefined; - host?: string | null | undefined; -}; - -export type SourceUnion1 = SyncReconcileRequestSource1 | any; - -export type SyncReconcileRequestEvent1 = { - count?: number | null | undefined; - eventTime?: Date | null | undefined; - firstTimestamp?: Date | null | undefined; - involvedObject?: InvolvedObject1 | any | null | undefined; - lastTimestamp?: Date | null | undefined; - message: string; - raw?: any | null | undefined; - reason: string; - source?: SyncReconcileRequestSource1 | any | null | undefined; - type?: string | null | undefined; -}; - -export const MemoryUnit1 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryUnit1 = ClosedEnum; - -export type Memory1 = { - unit: MemoryUnit1; - value: number; -}; - -export type MemoryUnion1 = Memory1 | any; - -export const CpuPodUnit1 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuPodUnit1 = ClosedEnum; - -export type CpuPod1 = { - unit: CpuPodUnit1; - value: number; -}; - -export type PodCpuUnion1 = CpuPod1 | any; - -export const MemoryPodUnit1 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryPodUnit1 = ClosedEnum; - -export type MemoryPod1 = { - unit: MemoryPodUnit1; - value: number; -}; - -export type PodMemoryUnion1 = MemoryPod1 | any; - -export type OwnerReference1 = { - controller: boolean; - kind: string; - name: string; - uid: string; -}; - -export type Pod1 = { - cpu?: CpuPod1 | any | null | undefined; - memory?: MemoryPod1 | any | null | undefined; - name: string; - nodeName?: string | null | undefined; - ownerReferences: Array; - phase?: string | null | undefined; - podIp?: string | null | undefined; - ready: boolean; - restartCount: number; - terminatedReason?: string | null | undefined; - uid?: string | null | undefined; - waitingReason?: string | null | undefined; +export type DataGcpFirestore = { + appEngineIntegrationMode?: string | null | undefined; + cmekEnabled: boolean; + concurrencyMode?: string | null | undefined; + createTime?: string | null | undefined; + databaseEdition?: string | null | undefined; + databaseName: string; + databaseType?: string | null | undefined; + deleteProtectionState?: string | null | undefined; + deleteTime?: string | null | undefined; + earliestVersionTime?: string | null | undefined; + endpoint?: string | null | undefined; + locationId?: string | null | undefined; + pointInTimeRecoveryEnablement?: string | null | undefined; + projectId?: string | null | undefined; + sourceInfoPresent: boolean; + status: ResourceHeartbeatStatus30; + updateTime?: string | null | undefined; + versionRetentionPeriod?: string | null | undefined; + backend: "gcpFirestore"; }; -export type Replicas1 = { - available?: number | null | undefined; - current?: number | null | undefined; - desired?: number | null | undefined; - misscheduled?: number | null | undefined; - ready?: number | null | undefined; - updated?: number | null | undefined; +export type KeySchema = { + attributeName: string; + keyType: string; }; -export const DataReason8 = { +export const DataReason29 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type DataReason8 = ClosedEnum; +export type DataReason29 = ClosedEnum; -export const StatusSeverity8 = { +export const StatusSeverity29 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type StatusSeverity8 = ClosedEnum; +export type StatusSeverity29 = ClosedEnum; -export type DataCollectionIssue8 = { +export type DataCollectionIssue29 = { message: string; - reason: DataReason8; - severity: StatusSeverity8; + reason: DataReason29; + severity: StatusSeverity29; source: string; }; -export const DataHealth8 = { +export const DataHealth29 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type DataHealth8 = ClosedEnum; +export type DataHealth29 = ClosedEnum; -export const StatusLifecycle8 = { +export const StatusLifecycle29 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -11567,95 +10374,85 @@ export const StatusLifecycle8 = { Deleted: "deleted", Failed: "failed", } as const; -export type StatusLifecycle8 = ClosedEnum; +export type StatusLifecycle29 = ClosedEnum; -export type ResourceHeartbeatStatus8 = { - collectionIssues: Array; - health: DataHealth8; - lifecycle: StatusLifecycle8; +export type ResourceHeartbeatStatus29 = { + collectionIssues: Array; + health: DataHealth29; + lifecycle: StatusLifecycle29; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type WorkloadCondition1 = { - lastTransitionTime?: Date | null | undefined; - message?: string | null | undefined; - reason?: string | null | undefined; - status: string; - type: string; -}; - -export type Workload1 = { - availableReplicas?: number | null | undefined; - conditions: Array; - desiredGeneration?: number | null | undefined; - desiredReplicas?: number | null | undefined; - observedGeneration?: number | null | undefined; - readyReplicas?: number | null | undefined; - rolloutReason?: string | null | undefined; - updatedReplicas?: number | null | undefined; +export type DataAwsDynamoDb = { + billingMode?: string | null | undefined; + deletionProtectionEnabled?: boolean | null | undefined; + globalSecondaryIndexCount?: number | null | undefined; + itemCount?: number | null | undefined; + keySchema: Array; + localSecondaryIndexCount?: number | null | undefined; + name: string; + region?: string | null | undefined; + replicaCount?: number | null | undefined; + restoreInProgress?: boolean | null | undefined; + sseStatus?: string | null | undefined; + sseType?: string | null | undefined; + status: ResourceHeartbeatStatus29; + streamEnabled?: boolean | null | undefined; + streamViewType?: string | null | undefined; + tableArn?: string | null | undefined; + tableClass?: string | null | undefined; + tableSizeBytes?: number | null | undefined; + tableStatus?: string | null | undefined; + ttlAttributeName?: string | null | undefined; + ttlStatus?: string | null | undefined; + backend: "awsDynamoDb"; }; -export type WorkloadUnion1 = Workload1 | any; - -export const WorkloadKind1 = { - Deployment: "deployment", - StatefulSet: "statefulSet", - DaemonSet: "daemonSet", - ReplicaSet: "replicaSet", - Pod: "pod", -} as const; -export type WorkloadKind1 = ClosedEnum; +export type SyncReconcileRequestDataUnion7 = + | DataAwsDynamoDb + | DataGcpFirestore + | DataAzureTable + | DataLocal7; -export type DataKubernetes1 = { - cpu?: Cpu1 | any | null | undefined; - events: Array; - memory?: Memory1 | any | null | undefined; - name: string; - namespace: string; - pods: Array; - replicas: Replicas1; - restarts?: number | null | undefined; - status: ResourceHeartbeatStatus8; - triggerCount: number; - workload?: Workload1 | any | null | undefined; - workloadKind: WorkloadKind1; - backend: "kubernetes"; +export type DataKv = { + data: DataAwsDynamoDb | DataGcpFirestore | DataAzureTable | DataLocal7; + resourceType: "kv"; }; -export const DataReason7 = { +export const DataReason28 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type DataReason7 = ClosedEnum; +export type DataReason28 = ClosedEnum; -export const StatusSeverity7 = { +export const StatusSeverity28 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type StatusSeverity7 = ClosedEnum; +export type StatusSeverity28 = ClosedEnum; -export type DataCollectionIssue7 = { +export type DataCollectionIssue28 = { message: string; - reason: DataReason7; - severity: StatusSeverity7; + reason: DataReason28; + severity: StatusSeverity28; source: string; }; -export const DataHealth7 = { +export const DataHealth28 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type DataHealth7 = ClosedEnum; +export type DataHealth28 = ClosedEnum; -export const StatusLifecycle7 = { +export const StatusLifecycle28 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -11667,64 +10464,57 @@ export const StatusLifecycle7 = { Deleted: "deleted", Failed: "failed", } as const; -export type StatusLifecycle7 = ClosedEnum; +export type StatusLifecycle28 = ClosedEnum; -export type ResourceHeartbeatStatus7 = { - collectionIssues: Array; - health: DataHealth7; - lifecycle: StatusLifecycle7; +export type ResourceHeartbeatStatus28 = { + collectionIssues: Array; + health: DataHealth28; + lifecycle: StatusLifecycle28; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataAzureContainerApps1 = { - appName: string; - cpu?: number | null | undefined; - environmentName?: string | null | undefined; - ingressFqdn?: string | null | undefined; - maxReplicas?: number | null | undefined; - memory?: string | null | undefined; - minReplicas?: number | null | undefined; - provisioningState?: string | null | undefined; - revision?: string | null | undefined; - runningStatus?: string | null | undefined; - status: ResourceHeartbeatStatus7; - backend: "azureContainerApps"; +export type DataLocal6 = { + name: string; + path?: string | null | undefined; + serviceStatus?: string | null | undefined; + status: ResourceHeartbeatStatus28; + backend: "local"; }; -export const DataReason6 = { +export const DataReason27 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type DataReason6 = ClosedEnum; +export type DataReason27 = ClosedEnum; -export const StatusSeverity6 = { +export const StatusSeverity27 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type StatusSeverity6 = ClosedEnum; +export type StatusSeverity27 = ClosedEnum; -export type DataCollectionIssue6 = { +export type DataCollectionIssue27 = { message: string; - reason: DataReason6; - severity: StatusSeverity6; + reason: DataReason27; + severity: StatusSeverity27; source: string; }; -export const DataHealth6 = { +export const DataHealth27 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type DataHealth6 = ClosedEnum; +export type DataHealth27 = ClosedEnum; -export const StatusLifecycle6 = { +export const StatusLifecycle27 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -11736,68 +10526,85 @@ export const StatusLifecycle6 = { Deleted: "deleted", Failed: "failed", } as const; -export type StatusLifecycle6 = ClosedEnum; +export type StatusLifecycle27 = ClosedEnum; -export type ResourceHeartbeatStatus6 = { - collectionIssues: Array; - health: DataHealth6; - lifecycle: StatusLifecycle6; +export type ResourceHeartbeatStatus27 = { + collectionIssues: Array; + health: DataHealth27; + lifecycle: StatusLifecycle27; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataGcpCloudRun = { - containerImage?: string | null | undefined; - cpuLimit?: string | null | undefined; - generation?: number | null | undefined; - latestCreatedRevision?: string | null | undefined; - latestReadyRevision?: string | null | undefined; - maxInstanceCount?: number | null | undefined; - memoryLimit?: string | null | undefined; - minInstanceCount?: number | null | undefined; - observedGeneration?: number | null | undefined; - region?: string | null | undefined; - service: string; - status: ResourceHeartbeatStatus6; - trafficCount: number; - uri?: string | null | undefined; - urls: Array; - backend: "gcpCloudRun"; +export type DataAzureServiceBus = { + accessedAt?: string | null | undefined; + activeMessageCount?: number | null | undefined; + autoDeleteOnIdle?: string | null | undefined; + createdAt?: string | null | undefined; + deadLetterMessageCount?: number | null | undefined; + deadLetteringOnMessageExpiration?: boolean | null | undefined; + defaultMessageTimeToLive?: string | null | undefined; + duplicateDetectionHistoryTimeWindow?: string | null | undefined; + enableBatchedOperations?: boolean | null | undefined; + enableExpress?: boolean | null | undefined; + enablePartitioning?: boolean | null | undefined; + endpoint?: string | null | undefined; + forwardDeadLetteredMessagesTo?: string | null | undefined; + forwardTo?: string | null | undefined; + lockDuration?: string | null | undefined; + maxDeliveryCount?: number | null | undefined; + maxMessageSizeInKilobytes?: number | null | undefined; + maxSizeInMegabytes?: number | null | undefined; + messageCount?: number | null | undefined; + name: string; + namespaceName: string; + queueStatus?: string | null | undefined; + requiresDuplicateDetection?: boolean | null | undefined; + requiresSession?: boolean | null | undefined; + resourceGroup?: string | null | undefined; + resourceId?: string | null | undefined; + scheduledMessageCount?: number | null | undefined; + sizeInBytes?: number | null | undefined; + status: ResourceHeartbeatStatus27; + transferDeadLetterMessageCount?: number | null | undefined; + transferMessageCount?: number | null | undefined; + updatedAt?: string | null | undefined; + backend: "azureServiceBus"; }; -export const DataReason5 = { +export const DataReason26 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type DataReason5 = ClosedEnum; +export type DataReason26 = ClosedEnum; -export const StatusSeverity5 = { +export const StatusSeverity26 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type StatusSeverity5 = ClosedEnum; +export type StatusSeverity26 = ClosedEnum; -export type DataCollectionIssue5 = { +export type DataCollectionIssue26 = { message: string; - reason: DataReason5; - severity: StatusSeverity5; + reason: DataReason26; + severity: StatusSeverity26; source: string; }; -export const DataHealth5 = { +export const DataHealth26 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type DataHealth5 = ClosedEnum; +export type DataHealth26 = ClosedEnum; -export const StatusLifecycle5 = { +export const StatusLifecycle26 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -11809,90 +10616,87 @@ export const StatusLifecycle5 = { Deleted: "deleted", Failed: "failed", } as const; -export type StatusLifecycle5 = ClosedEnum; +export type StatusLifecycle26 = ClosedEnum; -export type ResourceHeartbeatStatus5 = { - collectionIssues: Array; - health: DataHealth5; - lifecycle: StatusLifecycle5; +export type ResourceHeartbeatStatus26 = { + collectionIssues: Array; + health: DataHealth26; + lifecycle: StatusLifecycle26; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataAwsLambda = { - codeSha256?: string | null | undefined; - functionName: string; - functionUrlAuthType?: string | null | undefined; - functionUrlCorsPresent: boolean; - lastModified?: string | null | undefined; - lastUpdateStatus?: string | null | undefined; - lastUpdateStatusReason?: string | null | undefined; - lastUpdateStatusReasonCode?: string | null | undefined; - layerCount: number; - memorySizeMb?: number | null | undefined; - packageType?: string | null | undefined; - revisionId?: string | null | undefined; - runtime?: string | null | undefined; - state?: string | null | undefined; - stateReason?: string | null | undefined; - stateReasonCode?: string | null | undefined; - status: ResourceHeartbeatStatus5; - timeoutSeconds?: number | null | undefined; - triggerCount: number; - version?: string | null | undefined; - backend: "awsLambda"; -}; - -export type SyncReconcileRequestDataUnion2 = - | DataAwsLambda - | DataGcpCloudRun - | DataAzureContainerApps1 - | DataKubernetes1 - | DataLocal2; - -export type DataWorker = { - data: - | DataAwsLambda - | DataGcpCloudRun - | DataAzureContainerApps1 - | DataKubernetes1 - | DataLocal2; - resourceType: "worker"; +export type DataGcpPubSub = { + endpoint?: string | null | undefined; + kmsKeyName?: string | null | undefined; + messageStorageAllowedPersistenceRegions: Array; + messageStorageEnforceInTransit?: boolean | null | undefined; + projectId?: string | null | undefined; + schemaEncoding?: string | null | undefined; + schemaFirstRevisionId?: string | null | undefined; + schemaLastRevisionId?: string | null | undefined; + schemaName?: string | null | undefined; + status: ResourceHeartbeatStatus26; + subscriptionAckDeadlineSeconds?: number | null | undefined; + subscriptionDeadLetterMaxDeliveryAttempts?: number | null | undefined; + subscriptionDeadLetterTopic?: string | null | undefined; + subscriptionDetached?: boolean | null | undefined; + subscriptionEnableMessageOrdering?: boolean | null | undefined; + subscriptionFilter?: string | null | undefined; + subscriptionFullName?: string | null | undefined; + subscriptionLabels: { [k: string]: string }; + subscriptionMessageRetentionDuration?: string | null | undefined; + subscriptionName?: string | null | undefined; + subscriptionPushAttributes: { [k: string]: string }; + subscriptionPushConfigPresent?: boolean | null | undefined; + subscriptionPushEndpoint?: string | null | undefined; + subscriptionPushNoWrapperWriteMetadata?: boolean | null | undefined; + subscriptionPushOidcAudience?: string | null | undefined; + subscriptionPushOidcServiceAccountEmail?: string | null | undefined; + subscriptionPushPubsubWrapperWriteMetadata?: boolean | null | undefined; + subscriptionRetainAckedMessages?: boolean | null | undefined; + subscriptionState?: string | null | undefined; + topicFullName?: string | null | undefined; + topicLabels: { [k: string]: string }; + topicMessageRetentionDuration?: string | null | undefined; + topicName: string; + topicState?: string | null | undefined; + backend: "gcpPubSub"; }; -export const DataReason4 = { +export const DataReason25 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type DataReason4 = ClosedEnum; +export type DataReason25 = ClosedEnum; -export const StatusSeverity4 = { +export const StatusSeverity25 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type StatusSeverity4 = ClosedEnum; +export type StatusSeverity25 = ClosedEnum; -export type DataCollectionIssue4 = { +export type DataCollectionIssue25 = { message: string; - reason: DataReason4; - severity: StatusSeverity4; + reason: DataReason25; + severity: StatusSeverity25; source: string; }; -export const DataHealth4 = { +export const DataHealth25 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type DataHealth4 = ClosedEnum; +export type DataHealth25 = ClosedEnum; -export const StatusLifecycle4 = { +export const StatusLifecycle25 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -11904,59 +10708,308 @@ export const StatusLifecycle4 = { Deleted: "deleted", Failed: "failed", } as const; -export type StatusLifecycle4 = ClosedEnum; +export type StatusLifecycle25 = ClosedEnum; -export type ResourceHeartbeatStatus4 = { - collectionIssues: Array; - health: DataHealth4; - lifecycle: StatusLifecycle4; +export type ResourceHeartbeatStatus25 = { + collectionIssues: Array; + health: DataHealth25; + lifecycle: StatusLifecycle25; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataLocal1 = { - isDirectory?: boolean | null | undefined; - modifiedAt?: Date | null | undefined; - path: string; - pathExists: boolean; - readonly?: boolean | null | undefined; - status: ResourceHeartbeatStatus4; - backend: "local"; +export type DataAwsSqs = { + approximateCounts: boolean; + approximateDelayedMessages?: number | null | undefined; + approximateInFlightMessages?: number | null | undefined; + approximateVisibleMessages?: number | null | undefined; + contentBasedDeduplication?: boolean | null | undefined; + deduplicationScope?: string | null | undefined; + delaySeconds?: number | null | undefined; + fifoQueue?: boolean | null | undefined; + fifoThroughputLimit?: string | null | undefined; + kmsDataKeyReusePeriodSeconds?: number | null | undefined; + kmsMasterKeyId?: string | null | undefined; + maximumMessageSize?: number | null | undefined; + messageRetentionPeriodSeconds?: number | null | undefined; + name: string; + queueArn?: string | null | undefined; + queueUrl?: string | null | undefined; + receiveMessageWaitTimeSeconds?: number | null | undefined; + redriveAllowPolicy?: string | null | undefined; + redrivePolicy?: string | null | undefined; + region?: string | null | undefined; + sqsManagedSseEnabled?: boolean | null | undefined; + sseEnabled?: boolean | null | undefined; + status: ResourceHeartbeatStatus25; + visibilityTimeoutSeconds?: number | null | undefined; + backend: "awsSqs"; }; -export const DataReason3 = { +export type SyncReconcileRequestDataUnion6 = + | DataAwsSqs + | DataGcpPubSub + | DataAzureServiceBus + | DataLocal6; + +export type DataQueue = { + data: DataAwsSqs | DataGcpPubSub | DataAzureServiceBus | DataLocal6; + resourceType: "queue"; +}; + +export const CpuUnit11 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuUnit11 = ClosedEnum; + +export type Cpu11 = { + unit: CpuUnit11; + value: number; +}; + +export type CpuUnion11 = Cpu11 | any; + +export type InvolvedObject9 = { + apiVersion?: string | null | undefined; + fieldPath?: string | null | undefined; + kind?: string | null | undefined; + name?: string | null | undefined; + namespace?: string | null | undefined; + resourceVersion?: string | null | undefined; + uid?: string | null | undefined; +}; + +export type InvolvedObjectUnion9 = InvolvedObject9 | any; + +export type SourceEvent9 = { + component?: string | null | undefined; + host?: string | null | undefined; +}; + +export type EventSourceUnion9 = SourceEvent9 | any; + +export type SyncReconcileRequestEvent12 = { + count?: number | null | undefined; + eventTime?: Date | null | undefined; + firstTimestamp?: Date | null | undefined; + involvedObject?: InvolvedObject9 | any | null | undefined; + lastTimestamp?: Date | null | undefined; + message: string; + raw?: any | null | undefined; + reason: string; + source?: SourceEvent9 | any | null | undefined; + type?: string | null | undefined; +}; + +export const MemoryUnit11 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryUnit11 = ClosedEnum; + +export type Memory11 = { + unit: MemoryUnit11; + value: number; +}; + +export type MemoryUnion11 = Memory11 | any; + +export type NodeCounts = { + current?: number | null | undefined; + desired?: number | null | undefined; + ready?: number | null | undefined; +}; + +export const CpuAllocatableUnit = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuAllocatableUnit = ClosedEnum; + +export type CpuAllocatable = { + unit: CpuAllocatableUnit; + value: number; +}; + +export type AllocatableCpuUnion = CpuAllocatable | any; + +export const MemoryAllocatableUnit = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryAllocatableUnit = ClosedEnum; + +export type MemoryAllocatable = { + unit: MemoryAllocatableUnit; + value: number; +}; + +export type AllocatableMemoryUnion = MemoryAllocatable | any; + +export type Allocatable = { + cpu?: CpuAllocatable | any | null | undefined; + memory?: MemoryAllocatable | any | null | undefined; + pods?: number | null | undefined; +}; + +export const CpuCapacityUnit = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuCapacityUnit = ClosedEnum; + +export type CpuCapacity = { + unit: CpuCapacityUnit; + value: number; +}; + +export type CapacityCpuUnion = CpuCapacity | any; + +export const MemoryCapacityUnit = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryCapacityUnit = ClosedEnum; + +export type MemoryCapacity = { + unit: MemoryCapacityUnit; + value: number; +}; + +export type CapacityMemoryUnion = MemoryCapacity | any; + +export type Capacity = { + cpu?: CpuCapacity | any | null | undefined; + memory?: MemoryCapacity | any | null | undefined; + pods?: number | null | undefined; +}; + +export type NodeStatusCondition = { + message?: string | null | undefined; + reason?: string | null | undefined; + status: string; + type: string; +}; + +export const UsageCpuUnit = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type UsageCpuUnit = ClosedEnum; + +export type UsageCpu = { + unit: UsageCpuUnit; + value: number; +}; + +export type UsageCpuUnion = UsageCpu | any; + +export const UsageMemoryUnit = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type UsageMemoryUnit = ClosedEnum; + +export type UsageMemory = { + unit: UsageMemoryUnit; + value: number; +}; + +export type UsageMemoryUnion = UsageMemory | any; + +export type SyncReconcileRequestUsage = { + cpu?: UsageCpu | any | null | undefined; + memory?: UsageMemory | any | null | undefined; +}; + +export type Usage = SyncReconcileRequestUsage | any; + +export type NodeStatus = { + allocatable: Allocatable; + capacity: Capacity; + conditions?: Array | undefined; + containerRuntimeVersion?: string | null | undefined; + kubeletVersion?: string | null | undefined; + labels: { [k: string]: string }; + name: string; + ready: boolean; + roles: Array; + uid?: string | null | undefined; + usage?: SyncReconcileRequestUsage | any | null | undefined; +}; + +export type PodCounts = { + current?: number | null | undefined; + desired?: number | null | undefined; + ready?: number | null | undefined; +}; + +export const DataReason24 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type DataReason3 = ClosedEnum; +export type DataReason24 = ClosedEnum; -export const StatusSeverity3 = { +export const StatusSeverity24 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type StatusSeverity3 = ClosedEnum; +export type StatusSeverity24 = ClosedEnum; -export type DataCollectionIssue3 = { +export type DataCollectionIssue24 = { message: string; - reason: DataReason3; - severity: StatusSeverity3; + reason: DataReason24; + severity: StatusSeverity24; source: string; }; -export const DataHealth3 = { +export const DataHealth24 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type DataHealth3 = ClosedEnum; +export type DataHealth24 = ClosedEnum; -export const StatusLifecycle3 = { +export const StatusLifecycle24 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -11968,82 +11021,74 @@ export const StatusLifecycle3 = { Deleted: "deleted", Failed: "failed", } as const; -export type StatusLifecycle3 = ClosedEnum; +export type StatusLifecycle24 = ClosedEnum; -export type ResourceHeartbeatStatus3 = { - collectionIssues: Array; - health: DataHealth3; - lifecycle: StatusLifecycle3; +export type ResourceHeartbeatStatus24 = { + collectionIssues: Array; + health: DataHealth24; + lifecycle: StatusLifecycle24; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataAzureBlob = { - accessTier?: string | null | undefined; - accountKind?: string | null | undefined; - allowBlobPublicAccess?: boolean | null | undefined; - blobDeleteRetentionDays?: number | null | undefined; - blobDeleteRetentionEnabled?: boolean | null | undefined; - blobEncryptionEnabled?: boolean | null | undefined; - blobVersioningEnabled?: boolean | null | undefined; - changeFeedEnabled?: boolean | null | undefined; - changeFeedRetentionDays?: number | null | undefined; - containerDeleteRetentionDays?: number | null | undefined; - containerDeleteRetentionEnabled?: boolean | null | undefined; - containerPublicAccess?: string | null | undefined; - encryptionKeySource?: string | null | undefined; - fileEncryptionEnabled?: boolean | null | undefined; - location?: string | null | undefined; +export type SyncReconcileRequestData1 = { + cpu?: Cpu11 | any | null | undefined; + events: Array; + memory?: Memory11 | any | null | undefined; name: string; - primaryLocation?: string | null | undefined; - provisioningState?: string | null | undefined; - publicNetworkAccess?: string | null | undefined; - queueEncryptionEnabled?: boolean | null | undefined; - resourceGroup?: string | null | undefined; - secondaryLocation?: string | null | undefined; - skuName?: string | null | undefined; - skuTier?: string | null | undefined; - status: ResourceHeartbeatStatus3; - statusOfPrimary?: string | null | undefined; - statusOfSecondary?: string | null | undefined; - storageAccountName?: string | null | undefined; - tableEncryptionEnabled?: boolean | null | undefined; - backend: "azureBlob"; + namespace?: string | null | undefined; + nodeCounts: NodeCounts; + nodeStatuses?: Array | undefined; + podCounts: PodCounts; + region?: string | null | undefined; + status: ResourceHeartbeatStatus24; + version?: string | null | undefined; }; -export const DataReason2 = { +export type DataKubernetesCluster = { + data: SyncReconcileRequestData1; + resourceType: "kubernetes-cluster"; +}; + +export type Nodes5 = { + current?: number | null | undefined; + desired?: number | null | undefined; + ready?: number | null | undefined; +}; + +export const DataReason23 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type DataReason2 = ClosedEnum; +export type DataReason23 = ClosedEnum; -export const StatusSeverity2 = { +export const StatusSeverity23 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type StatusSeverity2 = ClosedEnum; +export type StatusSeverity23 = ClosedEnum; -export type DataCollectionIssue2 = { +export type DataCollectionIssue23 = { message: string; - reason: DataReason2; - severity: StatusSeverity2; + reason: DataReason23; + severity: StatusSeverity23; source: string; }; -export const DataHealth2 = { +export const DataHealth23 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type DataHealth2 = ClosedEnum; +export type DataHealth23 = ClosedEnum; -export const StatusLifecycle2 = { +export const StatusLifecycle23 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -12055,287 +11100,218 @@ export const StatusLifecycle2 = { Deleted: "deleted", Failed: "failed", } as const; -export type StatusLifecycle2 = ClosedEnum; +export type StatusLifecycle23 = ClosedEnum; -export type ResourceHeartbeatStatus2 = { - collectionIssues: Array; - health: DataHealth2; - lifecycle: StatusLifecycle2; +export type ResourceHeartbeatStatus23 = { + collectionIssues: Array; + health: DataHealth23; + lifecycle: StatusLifecycle23; message?: string | null | undefined; partial: boolean; stale: boolean; }; -export type DataGcpCloudStorage = { - bucketId?: string | null | undefined; - defaultKmsKeyName?: string | null | undefined; - encryptionConfigPresent: boolean; - lifecyclePresent: boolean; - lifecycleRuleCount?: number | null | undefined; - location?: string | null | undefined; - locationType?: string | null | undefined; +export type DataLocal5 = { + dockerApiVersion?: string | null | undefined; + dockerArch?: string | null | undefined; + dockerAvailable: boolean; + dockerOs?: string | null | undefined; + dockerVersion?: string | null | undefined; + hostIdentifier?: string | null | undefined; name: string; - publicAccessPrevention?: string | null | undefined; - retentionPeriod?: string | null | undefined; - retentionPolicyEffectiveTime?: string | null | undefined; - retentionPolicyIsLocked?: boolean | null | undefined; - softDeleteEffectiveTime?: string | null | undefined; - softDeleteRetentionDurationSeconds?: string | null | undefined; - status: ResourceHeartbeatStatus2; - storageClass?: string | null | undefined; - uniformBucketLevelAccessEnabled?: boolean | null | undefined; - uniformBucketLevelAccessLockedTime?: string | null | undefined; - versioningEnabled?: boolean | null | undefined; - backend: "gcpCloudStorage"; + networkAvailable: boolean; + networkName?: string | null | undefined; + nodes: Nodes5; + runningContainers?: number | null | undefined; + status: ResourceHeartbeatStatus23; + trackedContainers?: number | null | undefined; + backend: "local"; }; -export const DataReason1 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type DataReason1 = ClosedEnum; - -export const StatusSeverity1 = { - Info: "info", - Warning: "warning", - Error: "error", +export const Category4 = { + Quota: "quota", + Capacity: "capacity", + Allocation: "allocation", + Other: "other", } as const; -export type StatusSeverity1 = ClosedEnum; +export type Category4 = ClosedEnum; -export type DataCollectionIssue1 = { +export type CapacityBlocker4 = { + category: Category4; message: string; - reason: DataReason1; - severity: StatusSeverity1; - source: string; + observedAt: Date; + providerCode?: string | null | undefined; + providerReference?: string | null | undefined; }; -export const DataHealth1 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type DataHealth1 = ClosedEnum; +export type CapacityBlockerUnion4 = CapacityBlocker4 | any; -export const StatusLifecycle1 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", +export type DrainProgressBlocker4 = { + reason: string; + replicaId: string; + schedulingMode: string; + state: string; + workloadName: string; +}; + +export const DrainProgressStatus4 = { + Draining: "draining", + Drained: "drained", + Terminating: "terminating", } as const; -export type StatusLifecycle1 = ClosedEnum; +export type DrainProgressStatus4 = ClosedEnum; -export type ResourceHeartbeatStatus1 = { - collectionIssues: Array; - health: DataHealth1; - lifecycle: StatusLifecycle1; - message?: string | null | undefined; - partial: boolean; - stale: boolean; +export type DrainProgress4 = { + blockers?: Array | undefined; + drainDeadlineAt?: string | null | undefined; + drainRequestedAt?: string | null | undefined; + drainedAt?: string | null | undefined; + force: boolean; + machineId: string; + replicaCount: number; + stalled: boolean; + status: DrainProgressStatus4; }; -export type DataAwsS3 = { - blockPublicAcls?: boolean | null | undefined; - blockPublicPolicy?: boolean | null | undefined; - bucketAclPresent?: boolean | null | undefined; - bucketLocation?: string | null | undefined; - bucketPolicyPresent?: boolean | null | undefined; - encryptionConfigPresent: boolean; - encryptionEnabled?: boolean | null | undefined; - ignorePublicAcls?: boolean | null | undefined; - lifecyclePresent: boolean; - lifecycleRuleCount?: number | null | undefined; - name: string; - publicAccessBlockPresent: boolean; - region?: string | null | undefined; - restrictPublicBuckets?: boolean | null | undefined; - status: ResourceHeartbeatStatus1; - versioningEnabled?: boolean | null | undefined; - versioningStatus?: string | null | undefined; - backend: "awsS3"; +export type DrainProgressUnion4 = DrainProgress4 | any; + +export const UtilizationUnit4 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type UtilizationUnit4 = ClosedEnum; + +export type Utilization4 = { + unit: UtilizationUnit4; + value: number; }; -export type SyncReconcileRequestDataUnion1 = - | DataAwsS3 - | DataGcpCloudStorage - | DataAzureBlob - | DataLocal1; +export type UtilizationUnion4 = Utilization4 | any; -export type DataStorage = { - data: DataAwsS3 | DataGcpCloudStorage | DataAzureBlob | DataLocal1; - resourceType: "storage"; +export type Recommendation4 = { + desiredMachines: number; + reason?: string | null | undefined; + unschedulableReplicas?: number | null | undefined; + utilization?: Utilization4 | any | null | undefined; }; -export type SyncReconcileRequestDataUnion16 = - | DataStorage - | DataWorker - | DataContainer - | DataDaemon - | DataComputeCluster - | DataKubernetesCluster - | DataQueue - | DataKv - | DataPostgres - | DataVault - | DataServiceAccount - | DataNetwork - | DataRemoteStackManagement - | DataArtifactRegistry - | DataBuild - | DataServiceActivation - | DataAzureResourceGroup - | DataAzureStorageAccount - | DataAzureContainerAppsEnvironment - | DataAzureServiceBusNamespace; +export type RecommendationUnion4 = Recommendation4 | any; -export const ResourceHeartbeatFormat = { - Json: "json", - Yaml: "yaml", - Text: "text", +export type CapacityGroup4 = { + capacityBlocker?: CapacityBlocker4 | any | null | undefined; + currentMachines: number; + desiredMachines: number; + drainProgress?: DrainProgress4 | any | null | undefined; + groupId: string; + instanceType?: string | null | undefined; + maxMachines?: number | null | undefined; + minMachines?: number | null | undefined; + recommendation?: Recommendation4 | any | null | undefined; +}; + +export const CpuUnit10 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", } as const; -export type ResourceHeartbeatFormat = ClosedEnum< - typeof ResourceHeartbeatFormat ->; +export type CpuUnit10 = ClosedEnum; -export type ResourceHeartbeatRaw = { - body: string; - collectedAt: Date; - format: ResourceHeartbeatFormat; - source: string; - truncated: boolean; +export type Cpu10 = { + unit: CpuUnit10; + value: number; }; -export type ResourceHeartbeat = { - backend: ResourceHeartbeatBackendEnum; - /** - * Represents the target cloud platform. - */ - controllerPlatform: ResourceHeartbeatControllerPlatform; - data: - | DataStorage - | DataWorker - | DataContainer - | DataDaemon - | DataComputeCluster - | DataKubernetesCluster - | DataQueue - | DataKv - | DataPostgres - | DataVault - | DataServiceAccount - | DataNetwork - | DataRemoteStackManagement - | DataArtifactRegistry - | DataBuild - | DataServiceActivation - | DataAzureResourceGroup - | DataAzureStorageAccount - | DataAzureContainerAppsEnvironment - | DataAzureServiceBusNamespace; - deploymentId?: string | null | undefined; - observedAt: Date; - raw: Array; - /** - * Alien resource id, such as the `alien.Container` or `alien.Storage` - * - * @remarks - * resource id from the stack. - */ - resourceId: string; - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - resourceType: string; +export type CpuUnion10 = Cpu10 | any; + +export type DrainBlocker = { + reason: string; + replicaId: string; + schedulingMode: string; + state: string; + workloadName: string; }; -/** - * Backend whose observer produced this snapshot. - */ -export const ObservedInventoryBatchBackend = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Managed: "managed", - External: "external", - Test: "test", -} as const; -/** - * Backend whose observer produced this snapshot. - */ -export type ObservedInventoryBatchBackend = ClosedEnum< - typeof ObservedInventoryBatchBackend ->; +export type SyncReconcileRequestMachine = { + capacityGroup: string; + cpuCores?: number | null | undefined; + drainBlockers?: Array | undefined; + drainDeadlineAt?: string | null | undefined; + drainForce: boolean; + drainRequestedAt?: string | null | undefined; + drainedAt?: string | null | undefined; + horizondVersion?: string | null | undefined; + lastHeartbeat: string; + machineId: string; + memoryBytes?: number | null | undefined; + overlayIp?: string | null | undefined; + publicIp?: string | null | undefined; + replicaCount: number; + status: string; + zone: string; +}; -/** - * Represents the target cloud platform. - */ -export const ObservedInventoryBatchControllerPlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Machines: "machines", - Local: "local", - Test: "test", +export const MemoryUnit10 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", } as const; -/** - * Represents the target cloud platform. - */ -export type ObservedInventoryBatchControllerPlatform = ClosedEnum< - typeof ObservedInventoryBatchControllerPlatform ->; +export type MemoryUnit10 = ClosedEnum; -export const ResourceReason = { +export type Memory10 = { + unit: MemoryUnit10; + value: number; +}; + +export type MemoryUnion10 = Memory10 | any; + +export type Nodes4 = { + current?: number | null | undefined; + desired?: number | null | undefined; + ready?: number | null | undefined; +}; + +export const DataReason22 = { Forbidden: "forbidden", NotInstalled: "not-installed", ApiUnavailable: "api-unavailable", CollectionFailed: "collection-failed", TimedOut: "timed-out", } as const; -export type ResourceReason = ClosedEnum; +export type DataReason22 = ClosedEnum; -export const ResourceSeverity = { +export const StatusSeverity22 = { Info: "info", Warning: "warning", Error: "error", } as const; -export type ResourceSeverity = ClosedEnum; +export type StatusSeverity22 = ClosedEnum; -export type ResourceCollectionIssue = { +export type DataCollectionIssue22 = { message: string; - reason: ResourceReason; - severity: ResourceSeverity; + reason: DataReason22; + severity: StatusSeverity22; source: string; }; -export type Counts = { - current?: number | null | undefined; - desired?: number | null | undefined; - ready?: number | null | undefined; -}; - -export type CountsUnion = Counts | any; - -export const ResourceHealth = { +export const DataHealth22 = { Unknown: "unknown", Healthy: "healthy", Degraded: "degraded", Unhealthy: "unhealthy", } as const; -export type ResourceHealth = ClosedEnum; +export type DataHealth22 = ClosedEnum; -export const ResourceLifecycle = { +export const StatusLifecycle22 = { Unknown: "unknown", Creating: "creating", Updating: "updating", @@ -12347,584 +11323,7922 @@ export const ResourceLifecycle = { Deleted: "deleted", Failed: "failed", } as const; -export type ResourceLifecycle = ClosedEnum; +export type StatusLifecycle22 = ClosedEnum; -export const ResourceFormat = { - Json: "json", - Yaml: "yaml", - Text: "text", -} as const; -export type ResourceFormat = ClosedEnum; +export type ResourceHeartbeatStatus22 = { + collectionIssues: Array; + health: DataHealth22; + lifecycle: StatusLifecycle22; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; -export type ResourceRaw = { - body: string; - collectedAt: Date; - format: ResourceFormat; - source: string; - truncated: boolean; +export type DataMachines2 = { + backendClusterId?: string | null | undefined; + capacityGroups: Array; + cpu?: Cpu10 | any | null | undefined; + machines: Array; + memory?: Memory10 | any | null | undefined; + name: string; + nodes: Nodes4; + status: ResourceHeartbeatStatus22; + backend: "machines"; }; -export type ResourceTypeHint = string | any; +export const Category3 = { + Quota: "quota", + Capacity: "capacity", + Allocation: "allocation", + Other: "other", +} as const; +export type Category3 = ClosedEnum; -export type ObservedInventoryBatchResource = { - alienResourceId?: string | null | undefined; - attributes?: { [k: string]: any | null } | undefined; - collectionIssues?: Array | undefined; - counts?: Counts | any | null | undefined; - deploymentId?: string | null | undefined; - displayName: string; - health: ResourceHealth; - labels?: { [k: string]: string } | undefined; - lifecycle: ResourceLifecycle; - message?: string | null | undefined; - namespace?: string | null | undefined; - partial: boolean; - /** - * Provider-native kind, such as `apps/v1/Deployment`, - * - * @remarks - * `AWS::S3::Bucket`, `storage.googleapis.com/Bucket`, or an Azure - * resource type. - */ - providerKind: string; - providerStale: boolean; - raw?: Array | undefined; - /** - * Provider-native stable identity: Kubernetes object identity, cloud ARN, - * - * @remarks - * GCP full resource name, Azure resource id, etc. - */ - rawIdentity: string; - region?: string | null | undefined; - resourceTypeHint?: string | any | null | undefined; - scope?: string | null | undefined; - /** - * Release/version identity observed from the provider resource, when available. - */ - version?: string | null | undefined; +export type CapacityBlocker3 = { + category: Category3; + message: string; + observedAt: Date; + providerCode?: string | null | undefined; + providerReference?: string | null | undefined; }; -export type ObservedInventoryBatch = { - /** - * Backend whose observer produced this snapshot. - */ - backend: ObservedInventoryBatchBackend; - /** - * Whether this batch is a complete replacement for the scope. Complete - * - * @remarks - * batches tombstone previously observed rows in the same scope when they - * are absent from `resources`. - */ - complete: boolean; - /** - * Represents the target cloud platform. - */ - controllerPlatform: ObservedInventoryBatchControllerPlatform; - /** - * Stable scope for the provider list operation that produced this batch. - */ - inventoryScope: string; - /** - * Time the inventory scope was observed. - */ +export type CapacityBlockerUnion3 = CapacityBlocker3 | any; + +export type DrainProgressBlocker3 = { + reason: string; + replicaId: string; + schedulingMode: string; + state: string; + workloadName: string; +}; + +export const DrainProgressStatus3 = { + Draining: "draining", + Drained: "drained", + Terminating: "terminating", +} as const; +export type DrainProgressStatus3 = ClosedEnum; + +export type DrainProgress3 = { + blockers?: Array | undefined; + drainDeadlineAt?: string | null | undefined; + drainRequestedAt?: string | null | undefined; + drainedAt?: string | null | undefined; + force: boolean; + machineId: string; + replicaCount: number; + stalled: boolean; + status: DrainProgressStatus3; +}; + +export type DrainProgressUnion3 = DrainProgress3 | any; + +export const UtilizationUnit3 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type UtilizationUnit3 = ClosedEnum; + +export type Utilization3 = { + unit: UtilizationUnit3; + value: number; +}; + +export type UtilizationUnion3 = Utilization3 | any; + +export type Recommendation3 = { + desiredMachines: number; + reason?: string | null | undefined; + unschedulableReplicas?: number | null | undefined; + utilization?: Utilization3 | any | null | undefined; +}; + +export type RecommendationUnion3 = Recommendation3 | any; + +export type CapacityGroup3 = { + capacityBlocker?: CapacityBlocker3 | any | null | undefined; + currentMachines: number; + desiredMachines: number; + drainProgress?: DrainProgress3 | any | null | undefined; + groupId: string; + instanceType?: string | null | undefined; + maxMachines?: number | null | undefined; + minMachines?: number | null | undefined; + recommendation?: Recommendation3 | any | null | undefined; +}; + +export const CpuUnit9 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuUnit9 = ClosedEnum; + +export type Cpu9 = { + unit: CpuUnit9; + value: number; +}; + +export type CpuUnion9 = Cpu9 | any; + +export const MemoryUnit9 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryUnit9 = ClosedEnum; + +export type Memory9 = { + unit: MemoryUnit9; + value: number; +}; + +export type MemoryUnion9 = Memory9 | any; + +export type Nodes3 = { + current?: number | null | undefined; + desired?: number | null | undefined; + ready?: number | null | undefined; +}; + +export type ProviderFleet3 = { + currentMachines: number; + desiredMachines: number; + groupId: string; + location?: string | null | undefined; + providerId: string; +}; + +export const DataReason21 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type DataReason21 = ClosedEnum; + +export const StatusSeverity21 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type StatusSeverity21 = ClosedEnum; + +export type DataCollectionIssue21 = { + message: string; + reason: DataReason21; + severity: StatusSeverity21; + source: string; +}; + +export const DataHealth21 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type DataHealth21 = ClosedEnum; + +export const StatusLifecycle21 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle21 = ClosedEnum; + +export type ResourceHeartbeatStatus21 = { + collectionIssues: Array; + health: DataHealth21; + lifecycle: StatusLifecycle21; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAzure2 = { + backendClusterId?: string | null | undefined; + capacityGroups: Array; + cpu?: Cpu9 | any | null | undefined; + memory?: Memory9 | any | null | undefined; + name: string; + nodes: Nodes3; + providerFleets: Array; + region?: string | null | undefined; + status: ResourceHeartbeatStatus21; + backend: "azure"; +}; + +export const Category2 = { + Quota: "quota", + Capacity: "capacity", + Allocation: "allocation", + Other: "other", +} as const; +export type Category2 = ClosedEnum; + +export type CapacityBlocker2 = { + category: Category2; + message: string; observedAt: Date; - resources: Array; - /** - * Writer/source for this inventory pass, such as `operator` or - * - * @remarks - * `manager-observer`. - */ - sourceKind: string; + providerCode?: string | null | undefined; + providerReference?: string | null | undefined; }; -/** - * Request to reconcile deployment state - */ -export type SyncReconcileRequest = { - /** - * Deployment ID to reconcile state for - */ - deploymentId: string; - /** - * Lock session (push model only) - verifies lock ownership - */ - session?: string | undefined; - /** - * Complete deployment state after step() execution - */ - state: SyncReconcileRequestState; - /** - * Update heartbeat timestamp (for successful health checks) - */ - updateHeartbeat?: boolean | undefined; - /** - * Delay before this deployment should be acquired again. - */ - suggestedDelayMs?: number | undefined; - /** - * Latest typed resource heartbeats collected during this step. - */ - resourceHeartbeats?: Array | undefined; - /** - * Observed raw-resource inventory batches read during this step. - */ - observedInventoryBatches?: Array | undefined; - /** - * Operator-reported runtime capabilities. - */ - capabilities?: Array | undefined; - /** - * Operator binary version reported by the runtime. - */ - operatorVersion?: string | undefined; +export type CapacityBlockerUnion2 = CapacityBlocker2 | any; + +export type DrainProgressBlocker2 = { + reason: string; + replicaId: string; + schedulingMode: string; + state: string; + workloadName: string; +}; + +export const DrainProgressStatus2 = { + Draining: "draining", + Drained: "drained", + Terminating: "terminating", +} as const; +export type DrainProgressStatus2 = ClosedEnum; + +export type DrainProgress2 = { + blockers?: Array | undefined; + drainDeadlineAt?: string | null | undefined; + drainRequestedAt?: string | null | undefined; + drainedAt?: string | null | undefined; + force: boolean; + machineId: string; + replicaCount: number; + stalled: boolean; + status: DrainProgressStatus2; +}; + +export type DrainProgressUnion2 = DrainProgress2 | any; + +export const UtilizationUnit2 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type UtilizationUnit2 = ClosedEnum; + +export type Utilization2 = { + unit: UtilizationUnit2; + value: number; +}; + +export type UtilizationUnion2 = Utilization2 | any; + +export type Recommendation2 = { + desiredMachines: number; + reason?: string | null | undefined; + unschedulableReplicas?: number | null | undefined; + utilization?: Utilization2 | any | null | undefined; +}; + +export type RecommendationUnion2 = Recommendation2 | any; + +export type CapacityGroup2 = { + capacityBlocker?: CapacityBlocker2 | any | null | undefined; + currentMachines: number; + desiredMachines: number; + drainProgress?: DrainProgress2 | any | null | undefined; + groupId: string; + instanceType?: string | null | undefined; + maxMachines?: number | null | undefined; + minMachines?: number | null | undefined; + recommendation?: Recommendation2 | any | null | undefined; +}; + +export const CpuUnit8 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuUnit8 = ClosedEnum; + +export type Cpu8 = { + unit: CpuUnit8; + value: number; +}; + +export type CpuUnion8 = Cpu8 | any; + +export const MemoryUnit8 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryUnit8 = ClosedEnum; + +export type Memory8 = { + unit: MemoryUnit8; + value: number; +}; + +export type MemoryUnion8 = Memory8 | any; + +export type Nodes2 = { + current?: number | null | undefined; + desired?: number | null | undefined; + ready?: number | null | undefined; +}; + +export type ProviderFleet2 = { + currentMachines: number; + desiredMachines: number; + groupId: string; + location?: string | null | undefined; + providerId: string; +}; + +export const DataReason20 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type DataReason20 = ClosedEnum; + +export const StatusSeverity20 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type StatusSeverity20 = ClosedEnum; + +export type DataCollectionIssue20 = { + message: string; + reason: DataReason20; + severity: StatusSeverity20; + source: string; +}; + +export const DataHealth20 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type DataHealth20 = ClosedEnum; + +export const StatusLifecycle20 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle20 = ClosedEnum; + +export type ResourceHeartbeatStatus20 = { + collectionIssues: Array; + health: DataHealth20; + lifecycle: StatusLifecycle20; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataGcp2 = { + backendClusterId?: string | null | undefined; + capacityGroups: Array; + cpu?: Cpu8 | any | null | undefined; + memory?: Memory8 | any | null | undefined; + name: string; + nodes: Nodes2; + providerFleets: Array; + region?: string | null | undefined; + status: ResourceHeartbeatStatus20; + backend: "gcp"; +}; + +export const Category1 = { + Quota: "quota", + Capacity: "capacity", + Allocation: "allocation", + Other: "other", +} as const; +export type Category1 = ClosedEnum; + +export type CapacityBlocker1 = { + category: Category1; + message: string; + observedAt: Date; + providerCode?: string | null | undefined; + providerReference?: string | null | undefined; +}; + +export type CapacityBlockerUnion1 = CapacityBlocker1 | any; + +export type DrainProgressBlocker1 = { + reason: string; + replicaId: string; + schedulingMode: string; + state: string; + workloadName: string; +}; + +export const DrainProgressStatus1 = { + Draining: "draining", + Drained: "drained", + Terminating: "terminating", +} as const; +export type DrainProgressStatus1 = ClosedEnum; + +export type DrainProgress1 = { + blockers?: Array | undefined; + drainDeadlineAt?: string | null | undefined; + drainRequestedAt?: string | null | undefined; + drainedAt?: string | null | undefined; + force: boolean; + machineId: string; + replicaCount: number; + stalled: boolean; + status: DrainProgressStatus1; +}; + +export type DrainProgressUnion1 = DrainProgress1 | any; + +export const UtilizationUnit1 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type UtilizationUnit1 = ClosedEnum; + +export type Utilization1 = { + unit: UtilizationUnit1; + value: number; +}; + +export type UtilizationUnion1 = Utilization1 | any; + +export type Recommendation1 = { + desiredMachines: number; + reason?: string | null | undefined; + unschedulableReplicas?: number | null | undefined; + utilization?: Utilization1 | any | null | undefined; +}; + +export type RecommendationUnion1 = Recommendation1 | any; + +export type CapacityGroup1 = { + capacityBlocker?: CapacityBlocker1 | any | null | undefined; + currentMachines: number; + desiredMachines: number; + drainProgress?: DrainProgress1 | any | null | undefined; + groupId: string; + instanceType?: string | null | undefined; + maxMachines?: number | null | undefined; + minMachines?: number | null | undefined; + recommendation?: Recommendation1 | any | null | undefined; +}; + +export const CpuUnit7 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuUnit7 = ClosedEnum; + +export type Cpu7 = { + unit: CpuUnit7; + value: number; +}; + +export type CpuUnion7 = Cpu7 | any; + +export const MemoryUnit7 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryUnit7 = ClosedEnum; + +export type Memory7 = { + unit: MemoryUnit7; + value: number; +}; + +export type MemoryUnion7 = Memory7 | any; + +export type Nodes1 = { + current?: number | null | undefined; + desired?: number | null | undefined; + ready?: number | null | undefined; +}; + +export type ProviderFleet1 = { + currentMachines: number; + desiredMachines: number; + groupId: string; + location?: string | null | undefined; + providerId: string; +}; + +export const DataReason19 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type DataReason19 = ClosedEnum; + +export const StatusSeverity19 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type StatusSeverity19 = ClosedEnum; + +export type DataCollectionIssue19 = { + message: string; + reason: DataReason19; + severity: StatusSeverity19; + source: string; +}; + +export const DataHealth19 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type DataHealth19 = ClosedEnum; + +export const StatusLifecycle19 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle19 = ClosedEnum; + +export type ResourceHeartbeatStatus19 = { + collectionIssues: Array; + health: DataHealth19; + lifecycle: StatusLifecycle19; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAws2 = { + backendClusterId?: string | null | undefined; + capacityGroups: Array; + cpu?: Cpu7 | any | null | undefined; + memory?: Memory7 | any | null | undefined; + name: string; + nodes: Nodes1; + providerFleets: Array; + region?: string | null | undefined; + status: ResourceHeartbeatStatus19; + backend: "aws"; +}; + +export type SyncReconcileRequestDataUnion5 = + | DataAws2 + | DataGcp2 + | DataAzure2 + | DataMachines2 + | DataLocal5; + +export type DataComputeCluster = { + data: DataAws2 | DataGcp2 | DataAzure2 | DataMachines2 | DataLocal5; + resourceType: "compute-cluster"; +}; + +export const DaemonInstanceCpuUnit = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type DaemonInstanceCpuUnit = ClosedEnum; + +export type DaemonInstanceCpu = { + unit: DaemonInstanceCpuUnit; + value: number; +}; + +export type DaemonInstanceCpuUnion5 = DaemonInstanceCpu | any; + +export const DaemonInstanceKind = { + Container: "container", + Process: "process", + Daemon: "daemon", +} as const; +export type DaemonInstanceKind = ClosedEnum; + +export const DaemonInstanceMemoryUnit = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type DaemonInstanceMemoryUnit = ClosedEnum< + typeof DaemonInstanceMemoryUnit +>; + +export type DaemonInstanceMemory = { + unit: DaemonInstanceMemoryUnit; + value: number; +}; + +export type DaemonInstanceMemoryUnion5 = DaemonInstanceMemory | any; + +export type DaemonInstance5 = { + cpu?: DaemonInstanceCpu | any | null | undefined; + kind: DaemonInstanceKind; + memory?: DaemonInstanceMemory | any | null | undefined; + name: string; + phase?: string | null | undefined; + pid?: number | null | undefined; + ready: boolean; + restartCount?: number | null | undefined; + unitId: string; +}; + +export type DaemonInstanceUnion = DaemonInstance5 | any; + +export const EventSeverity3 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type EventSeverity3 = ClosedEnum; + +export type SyncReconcileRequestSubject3 = { + id?: string | null | undefined; + kind: string; + name?: string | null | undefined; +}; + +export type SyncReconcileRequestSubjectUnion3 = + | SyncReconcileRequestSubject3 + | any; + +export type SyncReconcileRequestEvent11 = { + kind: string; + message: string; + raw?: any | null | undefined; + severity: EventSeverity3; + subject?: SyncReconcileRequestSubject3 | any | null | undefined; + timestamp: Date; +}; + +export const DataReason18 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type DataReason18 = ClosedEnum; + +export const StatusSeverity18 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type StatusSeverity18 = ClosedEnum; + +export type DataCollectionIssue18 = { + message: string; + reason: DataReason18; + severity: StatusSeverity18; + source: string; +}; + +export const DataHealth18 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type DataHealth18 = ClosedEnum; + +export const StatusLifecycle18 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle18 = ClosedEnum; + +export type ResourceHeartbeatStatus18 = { + collectionIssues: Array; + health: DataHealth18; + lifecycle: StatusLifecycle18; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataLocal4 = { + commandSupported: boolean; + daemonInstance?: DaemonInstance5 | any | null | undefined; + daemonName?: string | undefined; + events: Array; + exitReason?: string | null | undefined; + imagePathPresent: boolean; + pid?: number | null | undefined; + restartCount?: number | null | undefined; + runtimeId: string; + status: ResourceHeartbeatStatus18; + backend: "local"; +}; + +export const CpuUnit6 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuUnit6 = ClosedEnum; + +export type Cpu6 = { + unit: CpuUnit6; + value: number; +}; + +export type CpuUnion6 = Cpu6 | any; + +export type InvolvedObject8 = { + apiVersion?: string | null | undefined; + fieldPath?: string | null | undefined; + kind?: string | null | undefined; + name?: string | null | undefined; + namespace?: string | null | undefined; + resourceVersion?: string | null | undefined; + uid?: string | null | undefined; +}; + +export type InvolvedObjectUnion8 = InvolvedObject8 | any; + +export type SourceEvent8 = { + component?: string | null | undefined; + host?: string | null | undefined; +}; + +export type EventSourceUnion8 = SourceEvent8 | any; + +export type SyncReconcileRequestEvent10 = { + count?: number | null | undefined; + eventTime?: Date | null | undefined; + firstTimestamp?: Date | null | undefined; + involvedObject?: InvolvedObject8 | any | null | undefined; + lastTimestamp?: Date | null | undefined; + message: string; + raw?: any | null | undefined; + reason: string; + source?: SourceEvent8 | any | null | undefined; + type?: string | null | undefined; +}; + +export const MemoryUnit6 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryUnit6 = ClosedEnum; + +export type Memory6 = { + unit: MemoryUnit6; + value: number; +}; + +export type MemoryUnion6 = Memory6 | any; + +export const CpuPodUnit3 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuPodUnit3 = ClosedEnum; + +export type CpuPod3 = { + unit: CpuPodUnit3; + value: number; +}; + +export type PodCpuUnion3 = CpuPod3 | any; + +export const MemoryPodUnit3 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryPodUnit3 = ClosedEnum; + +export type MemoryPod3 = { + unit: MemoryPodUnit3; + value: number; +}; + +export type PodMemoryUnion3 = MemoryPod3 | any; + +export type OwnerReference3 = { + controller: boolean; + kind: string; + name: string; + uid: string; +}; + +export type Pod3 = { + cpu?: CpuPod3 | any | null | undefined; + memory?: MemoryPod3 | any | null | undefined; + name: string; + nodeName?: string | null | undefined; + ownerReferences: Array; + phase?: string | null | undefined; + podIp?: string | null | undefined; + ready: boolean; + restartCount: number; + terminatedReason?: string | null | undefined; + uid?: string | null | undefined; + waitingReason?: string | null | undefined; +}; + +export type Replicas4 = { + available?: number | null | undefined; + current?: number | null | undefined; + desired?: number | null | undefined; + misscheduled?: number | null | undefined; + ready?: number | null | undefined; + updated?: number | null | undefined; +}; + +export const DataReason17 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type DataReason17 = ClosedEnum; + +export const StatusSeverity17 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type StatusSeverity17 = ClosedEnum; + +export type DataCollectionIssue17 = { + message: string; + reason: DataReason17; + severity: StatusSeverity17; + source: string; +}; + +export const DataHealth17 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type DataHealth17 = ClosedEnum; + +export const StatusLifecycle17 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle17 = ClosedEnum; + +export type ResourceHeartbeatStatus17 = { + collectionIssues: Array; + health: DataHealth17; + lifecycle: StatusLifecycle17; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type WorkloadCondition3 = { + lastTransitionTime?: Date | null | undefined; + message?: string | null | undefined; + reason?: string | null | undefined; + status: string; + type: string; +}; + +export type Workload3 = { + availableReplicas?: number | null | undefined; + conditions: Array; + desiredGeneration?: number | null | undefined; + desiredReplicas?: number | null | undefined; + observedGeneration?: number | null | undefined; + readyReplicas?: number | null | undefined; + rolloutReason?: string | null | undefined; + updatedReplicas?: number | null | undefined; +}; + +export type WorkloadUnion3 = Workload3 | any; + +export type DataKubernetes3 = { + commandSupported: boolean; + cpu?: Cpu6 | any | null | undefined; + events: Array; + memory?: Memory6 | any | null | undefined; + name: string; + namespace: string; + pods: Array; + replicas: Replicas4; + restarts?: number | null | undefined; + status: ResourceHeartbeatStatus17; + workload?: Workload3 | any | null | undefined; + backend: "kubernetes"; +}; + +export const CpuDaemonInstanceUnit4 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuDaemonInstanceUnit4 = ClosedEnum; + +export type CpuDaemonInstance4 = { + unit: CpuDaemonInstanceUnit4; + value: number; +}; + +export type DaemonInstanceCpuUnion4 = CpuDaemonInstance4 | any; + +export const MemoryDaemonInstanceUnit4 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryDaemonInstanceUnit4 = ClosedEnum< + typeof MemoryDaemonInstanceUnit4 +>; + +export type MemoryDaemonInstance4 = { + unit: MemoryDaemonInstanceUnit4; + value: number; +}; + +export type DaemonInstanceMemoryUnion4 = MemoryDaemonInstance4 | any; + +export type DaemonInstance4 = { + cpu?: CpuDaemonInstance4 | any | null | undefined; + ip?: string | null | undefined; + machineId?: string | null | undefined; + memory?: MemoryDaemonInstance4 | any | null | undefined; + message?: string | null | undefined; + metricsHealthy?: boolean | null | undefined; + metricsLastUpdated?: string | null | undefined; + metricsStatus?: string | null | undefined; + name: string; + nodeName?: string | null | undefined; + phase?: string | null | undefined; + ready: boolean; + reason?: string | null | undefined; + replicaId: string; + restartCount?: number | null | undefined; + status?: string | null | undefined; + terminatedReason?: string | null | undefined; + waitingReason?: string | null | undefined; +}; + +export type InvolvedObject7 = { + details?: any | null | undefined; + id?: string | null | undefined; + kind?: string | null | undefined; + machineId?: string | null | undefined; + name?: string | null | undefined; + replicaId?: string | null | undefined; +}; + +export type InvolvedObjectUnion7 = InvolvedObject7 | any; + +export type SourceEvent7 = { + component?: string | null | undefined; + host?: string | null | undefined; +}; + +export type EventSourceUnion7 = SourceEvent7 | any; + +export type SyncReconcileRequestEvent9 = { + count?: number | null | undefined; + details?: any | null | undefined; + eventId?: string | null | undefined; + eventTime?: Date | null | undefined; + firstTimestamp?: Date | null | undefined; + involvedObject?: InvolvedObject7 | any | null | undefined; + lastTimestamp?: Date | null | undefined; + message: string; + raw?: any | null | undefined; + reason: string; + source?: SourceEvent7 | any | null | undefined; + type?: string | null | undefined; +}; + +export const DataReason16 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type DataReason16 = ClosedEnum; + +export const StatusSeverity16 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type StatusSeverity16 = ClosedEnum; + +export type DataCollectionIssue16 = { + message: string; + reason: DataReason16; + severity: StatusSeverity16; + source: string; +}; + +export const DataHealth16 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type DataHealth16 = ClosedEnum; + +export const StatusLifecycle16 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle16 = ClosedEnum; + +export type ResourceHeartbeatStatus16 = { + collectionIssues: Array; + health: DataHealth16; + lifecycle: StatusLifecycle16; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataMachines1 = { + assignedMachines: number; + capacityGroup: string; + commandSupported: boolean; + daemonInstances: Array; + daemonName?: string | undefined; + desiredMachines: number; + events: Array; + healthyInstances: number; + horizonClusterId: string; + horizonStatus: string; + horizonStatusMessage?: string | null | undefined; + horizonStatusReason?: string | null | undefined; + latestUpdateTimestamp: string; + observedImage?: string | null | undefined; + status: ResourceHeartbeatStatus16; + unavailableInstances: number; + backend: "machines"; +}; + +export const CpuDaemonInstanceUnit3 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuDaemonInstanceUnit3 = ClosedEnum; + +export type CpuDaemonInstance3 = { + unit: CpuDaemonInstanceUnit3; + value: number; +}; + +export type DaemonInstanceCpuUnion3 = CpuDaemonInstance3 | any; + +export const MemoryDaemonInstanceUnit3 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryDaemonInstanceUnit3 = ClosedEnum< + typeof MemoryDaemonInstanceUnit3 +>; + +export type MemoryDaemonInstance3 = { + unit: MemoryDaemonInstanceUnit3; + value: number; +}; + +export type DaemonInstanceMemoryUnion3 = MemoryDaemonInstance3 | any; + +export type DaemonInstance3 = { + cpu?: CpuDaemonInstance3 | any | null | undefined; + ip?: string | null | undefined; + machineId?: string | null | undefined; + memory?: MemoryDaemonInstance3 | any | null | undefined; + message?: string | null | undefined; + metricsHealthy?: boolean | null | undefined; + metricsLastUpdated?: string | null | undefined; + metricsStatus?: string | null | undefined; + name: string; + nodeName?: string | null | undefined; + phase?: string | null | undefined; + ready: boolean; + reason?: string | null | undefined; + replicaId: string; + restartCount?: number | null | undefined; + status?: string | null | undefined; + terminatedReason?: string | null | undefined; + waitingReason?: string | null | undefined; +}; + +export type InvolvedObject6 = { + details?: any | null | undefined; + id?: string | null | undefined; + kind?: string | null | undefined; + machineId?: string | null | undefined; + name?: string | null | undefined; + replicaId?: string | null | undefined; +}; + +export type InvolvedObjectUnion6 = InvolvedObject6 | any; + +export type SourceEvent6 = { + component?: string | null | undefined; + host?: string | null | undefined; +}; + +export type EventSourceUnion6 = SourceEvent6 | any; + +export type SyncReconcileRequestEvent8 = { + count?: number | null | undefined; + details?: any | null | undefined; + eventId?: string | null | undefined; + eventTime?: Date | null | undefined; + firstTimestamp?: Date | null | undefined; + involvedObject?: InvolvedObject6 | any | null | undefined; + lastTimestamp?: Date | null | undefined; + message: string; + raw?: any | null | undefined; + reason: string; + source?: SourceEvent6 | any | null | undefined; + type?: string | null | undefined; +}; + +export const DataReason15 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type DataReason15 = ClosedEnum; + +export const StatusSeverity15 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type StatusSeverity15 = ClosedEnum; + +export type DataCollectionIssue15 = { + message: string; + reason: DataReason15; + severity: StatusSeverity15; + source: string; +}; + +export const DataHealth15 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type DataHealth15 = ClosedEnum; + +export const StatusLifecycle15 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle15 = ClosedEnum; + +export type ResourceHeartbeatStatus15 = { + collectionIssues: Array; + health: DataHealth15; + lifecycle: StatusLifecycle15; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAzure1 = { + assignedMachines: number; + capacityGroup: string; + commandSupported: boolean; + daemonInstances: Array; + daemonName?: string | undefined; + desiredMachines: number; + events: Array; + healthyInstances: number; + horizonClusterId: string; + horizonStatus: string; + horizonStatusMessage?: string | null | undefined; + horizonStatusReason?: string | null | undefined; + latestUpdateTimestamp: string; + observedImage?: string | null | undefined; + status: ResourceHeartbeatStatus15; + unavailableInstances: number; + backend: "azure"; +}; + +export const CpuDaemonInstanceUnit2 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuDaemonInstanceUnit2 = ClosedEnum; + +export type CpuDaemonInstance2 = { + unit: CpuDaemonInstanceUnit2; + value: number; +}; + +export type DaemonInstanceCpuUnion2 = CpuDaemonInstance2 | any; + +export const MemoryDaemonInstanceUnit2 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryDaemonInstanceUnit2 = ClosedEnum< + typeof MemoryDaemonInstanceUnit2 +>; + +export type MemoryDaemonInstance2 = { + unit: MemoryDaemonInstanceUnit2; + value: number; +}; + +export type DaemonInstanceMemoryUnion2 = MemoryDaemonInstance2 | any; + +export type DaemonInstance2 = { + cpu?: CpuDaemonInstance2 | any | null | undefined; + ip?: string | null | undefined; + machineId?: string | null | undefined; + memory?: MemoryDaemonInstance2 | any | null | undefined; + message?: string | null | undefined; + metricsHealthy?: boolean | null | undefined; + metricsLastUpdated?: string | null | undefined; + metricsStatus?: string | null | undefined; + name: string; + nodeName?: string | null | undefined; + phase?: string | null | undefined; + ready: boolean; + reason?: string | null | undefined; + replicaId: string; + restartCount?: number | null | undefined; + status?: string | null | undefined; + terminatedReason?: string | null | undefined; + waitingReason?: string | null | undefined; +}; + +export type InvolvedObject5 = { + details?: any | null | undefined; + id?: string | null | undefined; + kind?: string | null | undefined; + machineId?: string | null | undefined; + name?: string | null | undefined; + replicaId?: string | null | undefined; +}; + +export type InvolvedObjectUnion5 = InvolvedObject5 | any; + +export type SourceEvent5 = { + component?: string | null | undefined; + host?: string | null | undefined; +}; + +export type EventSourceUnion5 = SourceEvent5 | any; + +export type SyncReconcileRequestEvent7 = { + count?: number | null | undefined; + details?: any | null | undefined; + eventId?: string | null | undefined; + eventTime?: Date | null | undefined; + firstTimestamp?: Date | null | undefined; + involvedObject?: InvolvedObject5 | any | null | undefined; + lastTimestamp?: Date | null | undefined; + message: string; + raw?: any | null | undefined; + reason: string; + source?: SourceEvent5 | any | null | undefined; + type?: string | null | undefined; +}; + +export const DataReason14 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type DataReason14 = ClosedEnum; + +export const StatusSeverity14 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type StatusSeverity14 = ClosedEnum; + +export type DataCollectionIssue14 = { + message: string; + reason: DataReason14; + severity: StatusSeverity14; + source: string; +}; + +export const DataHealth14 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type DataHealth14 = ClosedEnum; + +export const StatusLifecycle14 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle14 = ClosedEnum; + +export type ResourceHeartbeatStatus14 = { + collectionIssues: Array; + health: DataHealth14; + lifecycle: StatusLifecycle14; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataGcp1 = { + assignedMachines: number; + capacityGroup: string; + commandSupported: boolean; + daemonInstances: Array; + daemonName?: string | undefined; + desiredMachines: number; + events: Array; + healthyInstances: number; + horizonClusterId: string; + horizonStatus: string; + horizonStatusMessage?: string | null | undefined; + horizonStatusReason?: string | null | undefined; + latestUpdateTimestamp: string; + observedImage?: string | null | undefined; + status: ResourceHeartbeatStatus14; + unavailableInstances: number; + backend: "gcp"; +}; + +export const CpuDaemonInstanceUnit1 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuDaemonInstanceUnit1 = ClosedEnum; + +export type CpuDaemonInstance1 = { + unit: CpuDaemonInstanceUnit1; + value: number; +}; + +export type DaemonInstanceCpuUnion1 = CpuDaemonInstance1 | any; + +export const MemoryDaemonInstanceUnit1 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryDaemonInstanceUnit1 = ClosedEnum< + typeof MemoryDaemonInstanceUnit1 +>; + +export type MemoryDaemonInstance1 = { + unit: MemoryDaemonInstanceUnit1; + value: number; +}; + +export type DaemonInstanceMemoryUnion1 = MemoryDaemonInstance1 | any; + +export type DaemonInstance1 = { + cpu?: CpuDaemonInstance1 | any | null | undefined; + ip?: string | null | undefined; + machineId?: string | null | undefined; + memory?: MemoryDaemonInstance1 | any | null | undefined; + message?: string | null | undefined; + metricsHealthy?: boolean | null | undefined; + metricsLastUpdated?: string | null | undefined; + metricsStatus?: string | null | undefined; + name: string; + nodeName?: string | null | undefined; + phase?: string | null | undefined; + ready: boolean; + reason?: string | null | undefined; + replicaId: string; + restartCount?: number | null | undefined; + status?: string | null | undefined; + terminatedReason?: string | null | undefined; + waitingReason?: string | null | undefined; +}; + +export type InvolvedObject4 = { + details?: any | null | undefined; + id?: string | null | undefined; + kind?: string | null | undefined; + machineId?: string | null | undefined; + name?: string | null | undefined; + replicaId?: string | null | undefined; +}; + +export type InvolvedObjectUnion4 = InvolvedObject4 | any; + +export type SourceEvent4 = { + component?: string | null | undefined; + host?: string | null | undefined; +}; + +export type EventSourceUnion4 = SourceEvent4 | any; + +export type SyncReconcileRequestEvent6 = { + count?: number | null | undefined; + details?: any | null | undefined; + eventId?: string | null | undefined; + eventTime?: Date | null | undefined; + firstTimestamp?: Date | null | undefined; + involvedObject?: InvolvedObject4 | any | null | undefined; + lastTimestamp?: Date | null | undefined; + message: string; + raw?: any | null | undefined; + reason: string; + source?: SourceEvent4 | any | null | undefined; + type?: string | null | undefined; +}; + +export const DataReason13 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type DataReason13 = ClosedEnum; + +export const StatusSeverity13 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type StatusSeverity13 = ClosedEnum; + +export type DataCollectionIssue13 = { + message: string; + reason: DataReason13; + severity: StatusSeverity13; + source: string; +}; + +export const DataHealth13 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type DataHealth13 = ClosedEnum; + +export const StatusLifecycle13 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle13 = ClosedEnum; + +export type ResourceHeartbeatStatus13 = { + collectionIssues: Array; + health: DataHealth13; + lifecycle: StatusLifecycle13; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAws1 = { + assignedMachines: number; + capacityGroup: string; + commandSupported: boolean; + daemonInstances: Array; + daemonName?: string | undefined; + desiredMachines: number; + events: Array; + healthyInstances: number; + horizonClusterId: string; + horizonStatus: string; + horizonStatusMessage?: string | null | undefined; + horizonStatusReason?: string | null | undefined; + latestUpdateTimestamp: string; + observedImage?: string | null | undefined; + status: ResourceHeartbeatStatus13; + unavailableInstances: number; + backend: "aws"; +}; + +export type SyncReconcileRequestDataUnion4 = + | DataAws1 + | DataGcp1 + | DataAzure1 + | DataMachines1 + | DataKubernetes3 + | DataLocal4; + +export type DataDaemon = { + data: + | DataAws1 + | DataGcp1 + | DataAzure1 + | DataMachines1 + | DataKubernetes3 + | DataLocal4; + resourceType: "daemon"; +}; + +export const ContainerUnitCpuUnit = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type ContainerUnitCpuUnit = ClosedEnum; + +export type ContainerUnitCpu = { + unit: ContainerUnitCpuUnit; + value: number; +}; + +export type ContainerUnitCpuUnion = ContainerUnitCpu | any; + +export const ContainerUnitKind = { + Container: "container", + Process: "process", + Daemon: "daemon", +} as const; +export type ContainerUnitKind = ClosedEnum; + +export const ContainerUnitMemoryUnit = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type ContainerUnitMemoryUnit = ClosedEnum< + typeof ContainerUnitMemoryUnit +>; + +export type ContainerUnitMemory = { + unit: ContainerUnitMemoryUnit; + value: number; +}; + +export type ContainerUnitMemoryUnion = ContainerUnitMemory | any; + +export type ContainerUnit = { + cpu?: ContainerUnitCpu | any | null | undefined; + kind: ContainerUnitKind; + memory?: ContainerUnitMemory | any | null | undefined; + name: string; + phase?: string | null | undefined; + pid?: number | null | undefined; + ready: boolean; + restartCount?: number | null | undefined; + unitId: string; +}; + +export type ContainerUnitUnion = ContainerUnit | any; + +export const CpuUnit5 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuUnit5 = ClosedEnum; + +export type Cpu5 = { + unit: CpuUnit5; + value: number; +}; + +export type CpuUnion5 = Cpu5 | any; + +export const EventSeverity2 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type EventSeverity2 = ClosedEnum; + +export type SyncReconcileRequestSubject2 = { + id?: string | null | undefined; + kind: string; + name?: string | null | undefined; +}; + +export type SyncReconcileRequestSubjectUnion2 = + | SyncReconcileRequestSubject2 + | any; + +export type SyncReconcileRequestEvent5 = { + kind: string; + message: string; + raw?: any | null | undefined; + severity: EventSeverity2; + subject?: SyncReconcileRequestSubject2 | any | null | undefined; + timestamp: Date; +}; + +export const MemoryUnit5 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryUnit5 = ClosedEnum; + +export type Memory5 = { + unit: MemoryUnit5; + value: number; +}; + +export type MemoryUnion5 = Memory5 | any; + +export const DataReason12 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type DataReason12 = ClosedEnum; + +export const StatusSeverity12 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type StatusSeverity12 = ClosedEnum; + +export type DataCollectionIssue12 = { + message: string; + reason: DataReason12; + severity: StatusSeverity12; + source: string; +}; + +export const DataHealth12 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type DataHealth12 = ClosedEnum; + +export const StatusLifecycle12 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle12 = ClosedEnum; + +export type ResourceHeartbeatStatus12 = { + collectionIssues: Array; + health: DataHealth12; + lifecycle: StatusLifecycle12; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataLocal3 = { + bindMountCount: number; + containerId?: string | null | undefined; + containerUnit?: ContainerUnit | any | null | undefined; + cpu?: Cpu5 | any | null | undefined; + events: Array; + image?: string | null | undefined; + localUrl?: string | null | undefined; + memory?: Memory5 | any | null | undefined; + name?: string | null | undefined; + portCount: number; + restartCount?: number | null | undefined; + runtimeReachable: boolean; + runtimeStatus?: string | null | undefined; + status: ResourceHeartbeatStatus12; + backend: "local"; +}; + +export const CpuUnit4 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuUnit4 = ClosedEnum; + +export type Cpu4 = { + unit: CpuUnit4; + value: number; +}; + +export type CpuUnion4 = Cpu4 | any; + +export type InvolvedObject3 = { + apiVersion?: string | null | undefined; + fieldPath?: string | null | undefined; + kind?: string | null | undefined; + name?: string | null | undefined; + namespace?: string | null | undefined; + resourceVersion?: string | null | undefined; + uid?: string | null | undefined; +}; + +export type InvolvedObjectUnion3 = InvolvedObject3 | any; + +export type SourceEvent3 = { + component?: string | null | undefined; + host?: string | null | undefined; +}; + +export type EventSourceUnion3 = SourceEvent3 | any; + +export type SyncReconcileRequestEvent4 = { + count?: number | null | undefined; + eventTime?: Date | null | undefined; + firstTimestamp?: Date | null | undefined; + involvedObject?: InvolvedObject3 | any | null | undefined; + lastTimestamp?: Date | null | undefined; + message: string; + raw?: any | null | undefined; + reason: string; + source?: SourceEvent3 | any | null | undefined; + type?: string | null | undefined; +}; + +export const MemoryUnit4 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryUnit4 = ClosedEnum; + +export type Memory4 = { + unit: MemoryUnit4; + value: number; +}; + +export type MemoryUnion4 = Memory4 | any; + +export const CpuPodUnit2 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuPodUnit2 = ClosedEnum; + +export type CpuPod2 = { + unit: CpuPodUnit2; + value: number; +}; + +export type PodCpuUnion2 = CpuPod2 | any; + +export const MemoryPodUnit2 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryPodUnit2 = ClosedEnum; + +export type MemoryPod2 = { + unit: MemoryPodUnit2; + value: number; +}; + +export type PodMemoryUnion2 = MemoryPod2 | any; + +export type OwnerReference2 = { + controller: boolean; + kind: string; + name: string; + uid: string; +}; + +export type Pod2 = { + cpu?: CpuPod2 | any | null | undefined; + memory?: MemoryPod2 | any | null | undefined; + name: string; + nodeName?: string | null | undefined; + ownerReferences: Array; + phase?: string | null | undefined; + podIp?: string | null | undefined; + ready: boolean; + restartCount: number; + terminatedReason?: string | null | undefined; + uid?: string | null | undefined; + waitingReason?: string | null | undefined; +}; + +export type Replicas3 = { + available?: number | null | undefined; + current?: number | null | undefined; + desired?: number | null | undefined; + misscheduled?: number | null | undefined; + ready?: number | null | undefined; + updated?: number | null | undefined; +}; + +export const DataReason11 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type DataReason11 = ClosedEnum; + +export const StatusSeverity11 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type StatusSeverity11 = ClosedEnum; + +export type DataCollectionIssue11 = { + message: string; + reason: DataReason11; + severity: StatusSeverity11; + source: string; +}; + +export const DataHealth11 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type DataHealth11 = ClosedEnum; + +export const StatusLifecycle11 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle11 = ClosedEnum; + +export type ResourceHeartbeatStatus11 = { + collectionIssues: Array; + health: DataHealth11; + lifecycle: StatusLifecycle11; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type WorkloadCondition2 = { + lastTransitionTime?: Date | null | undefined; + message?: string | null | undefined; + reason?: string | null | undefined; + status: string; + type: string; +}; + +export type Workload2 = { + availableReplicas?: number | null | undefined; + conditions: Array; + desiredGeneration?: number | null | undefined; + desiredReplicas?: number | null | undefined; + observedGeneration?: number | null | undefined; + readyReplicas?: number | null | undefined; + rolloutReason?: string | null | undefined; + updatedReplicas?: number | null | undefined; +}; + +export type WorkloadUnion2 = Workload2 | any; + +export const WorkloadKind2 = { + Deployment: "deployment", + StatefulSet: "statefulSet", + DaemonSet: "daemonSet", + ReplicaSet: "replicaSet", + Pod: "pod", +} as const; +export type WorkloadKind2 = ClosedEnum; + +export type DataKubernetes2 = { + cpu?: Cpu4 | any | null | undefined; + events: Array; + memory?: Memory4 | any | null | undefined; + name: string; + namespace: string; + pods: Array; + replicas: Replicas3; + restarts?: number | null | undefined; + status: ResourceHeartbeatStatus11; + workload?: Workload2 | any | null | undefined; + workloadKind: WorkloadKind2; + backend: "kubernetes"; +}; + +export const CpuUnit3 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuUnit3 = ClosedEnum; + +export type Cpu3 = { + unit: CpuUnit3; + value: number; +}; + +export type CpuUnion3 = Cpu3 | any; + +export type InvolvedObject2 = { + details?: any | null | undefined; + id?: string | null | undefined; + kind?: string | null | undefined; + machineId?: string | null | undefined; + name?: string | null | undefined; + replicaId?: string | null | undefined; +}; + +export type InvolvedObjectUnion2 = InvolvedObject2 | any; + +export type SourceEvent2 = { + component?: string | null | undefined; + host?: string | null | undefined; +}; + +export type EventSourceUnion2 = SourceEvent2 | any; + +export type SyncReconcileRequestEvent3 = { + count?: number | null | undefined; + details?: any | null | undefined; + eventId?: string | null | undefined; + eventTime?: Date | null | undefined; + firstTimestamp?: Date | null | undefined; + involvedObject?: InvolvedObject2 | any | null | undefined; + lastTimestamp?: Date | null | undefined; + message: string; + raw?: any | null | undefined; + reason: string; + source?: SourceEvent2 | any | null | undefined; + type?: string | null | undefined; +}; + +export const MemoryUnit3 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryUnit3 = ClosedEnum; + +export type Memory3 = { + unit: MemoryUnit3; + value: number; +}; + +export type MemoryUnion3 = Memory3 | any; + +export const CpuReplicaUnitUnit = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuReplicaUnitUnit = ClosedEnum; + +export type CpuReplicaUnit = { + unit: CpuReplicaUnitUnit; + value: number; +}; + +export type ReplicaUnitCpuUnion = CpuReplicaUnit | any; + +export const MemoryReplicaUnitUnit = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryReplicaUnitUnit = ClosedEnum; + +export type MemoryReplicaUnit = { + unit: MemoryReplicaUnitUnit; + value: number; +}; + +export type ReplicaUnitMemoryUnion = MemoryReplicaUnit | any; + +export type ReplicaUnit = { + cpu?: CpuReplicaUnit | any | null | undefined; + ip?: string | null | undefined; + machineId?: string | null | undefined; + memory?: MemoryReplicaUnit | any | null | undefined; + message?: string | null | undefined; + metricsHealthy?: boolean | null | undefined; + metricsLastUpdated?: string | null | undefined; + metricsStatus?: string | null | undefined; + name: string; + nodeName?: string | null | undefined; + phase?: string | null | undefined; + ready: boolean; + reason?: string | null | undefined; + replicaId: string; + restartCount?: number | null | undefined; + status?: string | null | undefined; + terminatedReason?: string | null | undefined; + waitingReason?: string | null | undefined; +}; + +export type Replicas2 = { + available?: number | null | undefined; + current?: number | null | undefined; + desired?: number | null | undefined; + misscheduled?: number | null | undefined; + ready?: number | null | undefined; + updated?: number | null | undefined; +}; + +export const SchedulingMode = { + Replicated: "replicated", + Stateful: "stateful", + Daemon: "daemon", +} as const; +export type SchedulingMode = ClosedEnum; + +export const DataReason10 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type DataReason10 = ClosedEnum; + +export const StatusSeverity10 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type StatusSeverity10 = ClosedEnum; + +export type DataCollectionIssue10 = { + message: string; + reason: DataReason10; + severity: StatusSeverity10; + source: string; +}; + +export const DataHealth10 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type DataHealth10 = ClosedEnum; + +export const StatusLifecycle10 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle10 = ClosedEnum; + +export type ResourceHeartbeatStatus10 = { + collectionIssues: Array; + health: DataHealth10; + lifecycle: StatusLifecycle10; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataHorizonPlatform = { + attentionCount: number; + containerId: string; + cpu?: Cpu3 | any | null | undefined; + events: Array; + image?: string | null | undefined; + latestUpdateTimestamp?: string | null | undefined; + memory?: Memory3 | any | null | undefined; + observedImage?: string | null | undefined; + replicaUnits: Array; + replicas: Replicas2; + schedulingMode: SchedulingMode; + status: ResourceHeartbeatStatus10; + backend: "horizonPlatform"; +}; + +export type SyncReconcileRequestDataUnion3 = + | DataHorizonPlatform + | DataKubernetes2 + | DataLocal3; + +export type DataContainer = { + data: DataHorizonPlatform | DataKubernetes2 | DataLocal3; + resourceType: "container"; +}; + +export const CpuUnit2 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuUnit2 = ClosedEnum; + +export type Cpu2 = { + unit: CpuUnit2; + value: number; +}; + +export type CpuUnion2 = Cpu2 | any; + +export const EventSeverity1 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type EventSeverity1 = ClosedEnum; + +export type SyncReconcileRequestSubject1 = { + id?: string | null | undefined; + kind: string; + name?: string | null | undefined; +}; + +export type SyncReconcileRequestSubjectUnion1 = + | SyncReconcileRequestSubject1 + | any; + +export type SyncReconcileRequestEvent2 = { + kind: string; + message: string; + raw?: any | null | undefined; + severity: EventSeverity1; + subject?: SyncReconcileRequestSubject1 | any | null | undefined; + timestamp: Date; +}; + +export const MemoryUnit2 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryUnit2 = ClosedEnum; + +export type Memory2 = { + unit: MemoryUnit2; + value: number; +}; + +export type MemoryUnion2 = Memory2 | any; + +export const ProcessCpuUnit = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type ProcessCpuUnit = ClosedEnum; + +export type ProcessCpu = { + unit: ProcessCpuUnit; + value: number; +}; + +export type ProcessCpuUnion = ProcessCpu | any; + +export const ProcessKind = { + Container: "container", + Process: "process", + Daemon: "daemon", +} as const; +export type ProcessKind = ClosedEnum; + +export const ProcessMemoryUnit = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type ProcessMemoryUnit = ClosedEnum; + +export type ProcessMemory = { + unit: ProcessMemoryUnit; + value: number; +}; + +export type ProcessMemoryUnion = ProcessMemory | any; + +export type Process = { + cpu?: ProcessCpu | any | null | undefined; + kind: ProcessKind; + memory?: ProcessMemory | any | null | undefined; + name: string; + phase?: string | null | undefined; + pid?: number | null | undefined; + ready: boolean; + restartCount?: number | null | undefined; + unitId: string; +}; + +export type ProcessUnion = Process | any; + +export const DataReason9 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type DataReason9 = ClosedEnum; + +export const StatusSeverity9 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type StatusSeverity9 = ClosedEnum; + +export type DataCollectionIssue9 = { + message: string; + reason: DataReason9; + severity: StatusSeverity9; + source: string; +}; + +export const DataHealth9 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type DataHealth9 = ClosedEnum; + +export const StatusLifecycle9 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle9 = ClosedEnum; + +export type ResourceHeartbeatStatus9 = { + collectionIssues: Array; + health: DataHealth9; + lifecycle: StatusLifecycle9; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataLocal2 = { + commandSupported: boolean; + cpu?: Cpu2 | any | null | undefined; + events: Array; + imagePathPresent: boolean; + memory?: Memory2 | any | null | undefined; + pid?: number | null | undefined; + process?: Process | any | null | undefined; + readinessProbeOk?: boolean | null | undefined; + status: ResourceHeartbeatStatus9; + triggerCount: number; + backend: "local"; +}; + +export const CpuUnit1 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuUnit1 = ClosedEnum; + +export type Cpu1 = { + unit: CpuUnit1; + value: number; +}; + +export type CpuUnion1 = Cpu1 | any; + +export type InvolvedObject1 = { + apiVersion?: string | null | undefined; + fieldPath?: string | null | undefined; + kind?: string | null | undefined; + name?: string | null | undefined; + namespace?: string | null | undefined; + resourceVersion?: string | null | undefined; + uid?: string | null | undefined; +}; + +export type InvolvedObjectUnion1 = InvolvedObject1 | any; + +export type SourceEvent1 = { + component?: string | null | undefined; + host?: string | null | undefined; +}; + +export type EventSourceUnion1 = SourceEvent1 | any; + +export type SyncReconcileRequestEvent1 = { + count?: number | null | undefined; + eventTime?: Date | null | undefined; + firstTimestamp?: Date | null | undefined; + involvedObject?: InvolvedObject1 | any | null | undefined; + lastTimestamp?: Date | null | undefined; + message: string; + raw?: any | null | undefined; + reason: string; + source?: SourceEvent1 | any | null | undefined; + type?: string | null | undefined; +}; + +export const MemoryUnit1 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryUnit1 = ClosedEnum; + +export type Memory1 = { + unit: MemoryUnit1; + value: number; +}; + +export type MemoryUnion1 = Memory1 | any; + +export const CpuPodUnit1 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuPodUnit1 = ClosedEnum; + +export type CpuPod1 = { + unit: CpuPodUnit1; + value: number; +}; + +export type PodCpuUnion1 = CpuPod1 | any; + +export const MemoryPodUnit1 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryPodUnit1 = ClosedEnum; + +export type MemoryPod1 = { + unit: MemoryPodUnit1; + value: number; +}; + +export type PodMemoryUnion1 = MemoryPod1 | any; + +export type OwnerReference1 = { + controller: boolean; + kind: string; + name: string; + uid: string; +}; + +export type Pod1 = { + cpu?: CpuPod1 | any | null | undefined; + memory?: MemoryPod1 | any | null | undefined; + name: string; + nodeName?: string | null | undefined; + ownerReferences: Array; + phase?: string | null | undefined; + podIp?: string | null | undefined; + ready: boolean; + restartCount: number; + terminatedReason?: string | null | undefined; + uid?: string | null | undefined; + waitingReason?: string | null | undefined; +}; + +export type Replicas1 = { + available?: number | null | undefined; + current?: number | null | undefined; + desired?: number | null | undefined; + misscheduled?: number | null | undefined; + ready?: number | null | undefined; + updated?: number | null | undefined; +}; + +export const DataReason8 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type DataReason8 = ClosedEnum; + +export const StatusSeverity8 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type StatusSeverity8 = ClosedEnum; + +export type DataCollectionIssue8 = { + message: string; + reason: DataReason8; + severity: StatusSeverity8; + source: string; +}; + +export const DataHealth8 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type DataHealth8 = ClosedEnum; + +export const StatusLifecycle8 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle8 = ClosedEnum; + +export type ResourceHeartbeatStatus8 = { + collectionIssues: Array; + health: DataHealth8; + lifecycle: StatusLifecycle8; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type WorkloadCondition1 = { + lastTransitionTime?: Date | null | undefined; + message?: string | null | undefined; + reason?: string | null | undefined; + status: string; + type: string; +}; + +export type Workload1 = { + availableReplicas?: number | null | undefined; + conditions: Array; + desiredGeneration?: number | null | undefined; + desiredReplicas?: number | null | undefined; + observedGeneration?: number | null | undefined; + readyReplicas?: number | null | undefined; + rolloutReason?: string | null | undefined; + updatedReplicas?: number | null | undefined; +}; + +export type WorkloadUnion1 = Workload1 | any; + +export const WorkloadKind1 = { + Deployment: "deployment", + StatefulSet: "statefulSet", + DaemonSet: "daemonSet", + ReplicaSet: "replicaSet", + Pod: "pod", +} as const; +export type WorkloadKind1 = ClosedEnum; + +export type DataKubernetes1 = { + cpu?: Cpu1 | any | null | undefined; + events: Array; + memory?: Memory1 | any | null | undefined; + name: string; + namespace: string; + pods: Array; + replicas: Replicas1; + restarts?: number | null | undefined; + status: ResourceHeartbeatStatus8; + triggerCount: number; + workload?: Workload1 | any | null | undefined; + workloadKind: WorkloadKind1; + backend: "kubernetes"; +}; + +export const DataReason7 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type DataReason7 = ClosedEnum; + +export const StatusSeverity7 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type StatusSeverity7 = ClosedEnum; + +export type DataCollectionIssue7 = { + message: string; + reason: DataReason7; + severity: StatusSeverity7; + source: string; +}; + +export const DataHealth7 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type DataHealth7 = ClosedEnum; + +export const StatusLifecycle7 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle7 = ClosedEnum; + +export type ResourceHeartbeatStatus7 = { + collectionIssues: Array; + health: DataHealth7; + lifecycle: StatusLifecycle7; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAzureContainerApps1 = { + appName: string; + cpu?: number | null | undefined; + environmentName?: string | null | undefined; + ingressFqdn?: string | null | undefined; + maxReplicas?: number | null | undefined; + memory?: string | null | undefined; + minReplicas?: number | null | undefined; + provisioningState?: string | null | undefined; + revision?: string | null | undefined; + runningStatus?: string | null | undefined; + status: ResourceHeartbeatStatus7; + backend: "azureContainerApps"; +}; + +export const DataReason6 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type DataReason6 = ClosedEnum; + +export const StatusSeverity6 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type StatusSeverity6 = ClosedEnum; + +export type DataCollectionIssue6 = { + message: string; + reason: DataReason6; + severity: StatusSeverity6; + source: string; +}; + +export const DataHealth6 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type DataHealth6 = ClosedEnum; + +export const StatusLifecycle6 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle6 = ClosedEnum; + +export type ResourceHeartbeatStatus6 = { + collectionIssues: Array; + health: DataHealth6; + lifecycle: StatusLifecycle6; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataGcpCloudRun = { + containerImage?: string | null | undefined; + cpuLimit?: string | null | undefined; + generation?: number | null | undefined; + latestCreatedRevision?: string | null | undefined; + latestReadyRevision?: string | null | undefined; + maxInstanceCount?: number | null | undefined; + memoryLimit?: string | null | undefined; + minInstanceCount?: number | null | undefined; + observedGeneration?: number | null | undefined; + region?: string | null | undefined; + service: string; + status: ResourceHeartbeatStatus6; + trafficCount: number; + uri?: string | null | undefined; + urls: Array; + backend: "gcpCloudRun"; +}; + +export const DataReason5 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type DataReason5 = ClosedEnum; + +export const StatusSeverity5 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type StatusSeverity5 = ClosedEnum; + +export type DataCollectionIssue5 = { + message: string; + reason: DataReason5; + severity: StatusSeverity5; + source: string; +}; + +export const DataHealth5 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type DataHealth5 = ClosedEnum; + +export const StatusLifecycle5 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle5 = ClosedEnum; + +export type ResourceHeartbeatStatus5 = { + collectionIssues: Array; + health: DataHealth5; + lifecycle: StatusLifecycle5; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAwsLambda = { + codeSha256?: string | null | undefined; + functionName: string; + functionUrlAuthType?: string | null | undefined; + functionUrlCorsPresent: boolean; + lastModified?: string | null | undefined; + lastUpdateStatus?: string | null | undefined; + lastUpdateStatusReason?: string | null | undefined; + lastUpdateStatusReasonCode?: string | null | undefined; + layerCount: number; + memorySizeMb?: number | null | undefined; + packageType?: string | null | undefined; + revisionId?: string | null | undefined; + runtime?: string | null | undefined; + state?: string | null | undefined; + stateReason?: string | null | undefined; + stateReasonCode?: string | null | undefined; + status: ResourceHeartbeatStatus5; + timeoutSeconds?: number | null | undefined; + triggerCount: number; + version?: string | null | undefined; + backend: "awsLambda"; +}; + +export type SyncReconcileRequestDataUnion2 = + | DataAwsLambda + | DataGcpCloudRun + | DataAzureContainerApps1 + | DataKubernetes1 + | DataLocal2; + +export type DataWorker = { + data: + | DataAwsLambda + | DataGcpCloudRun + | DataAzureContainerApps1 + | DataKubernetes1 + | DataLocal2; + resourceType: "worker"; +}; + +export const DataReason4 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type DataReason4 = ClosedEnum; + +export const StatusSeverity4 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type StatusSeverity4 = ClosedEnum; + +export type DataCollectionIssue4 = { + message: string; + reason: DataReason4; + severity: StatusSeverity4; + source: string; +}; + +export const DataHealth4 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type DataHealth4 = ClosedEnum; + +export const StatusLifecycle4 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle4 = ClosedEnum; + +export type ResourceHeartbeatStatus4 = { + collectionIssues: Array; + health: DataHealth4; + lifecycle: StatusLifecycle4; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataLocal1 = { + isDirectory?: boolean | null | undefined; + modifiedAt?: Date | null | undefined; + path: string; + pathExists: boolean; + readonly?: boolean | null | undefined; + status: ResourceHeartbeatStatus4; + backend: "local"; +}; + +export const DataReason3 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type DataReason3 = ClosedEnum; + +export const StatusSeverity3 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type StatusSeverity3 = ClosedEnum; + +export type DataCollectionIssue3 = { + message: string; + reason: DataReason3; + severity: StatusSeverity3; + source: string; +}; + +export const DataHealth3 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type DataHealth3 = ClosedEnum; + +export const StatusLifecycle3 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle3 = ClosedEnum; + +export type ResourceHeartbeatStatus3 = { + collectionIssues: Array; + health: DataHealth3; + lifecycle: StatusLifecycle3; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAzureBlob = { + accessTier?: string | null | undefined; + accountKind?: string | null | undefined; + allowBlobPublicAccess?: boolean | null | undefined; + blobDeleteRetentionDays?: number | null | undefined; + blobDeleteRetentionEnabled?: boolean | null | undefined; + blobEncryptionEnabled?: boolean | null | undefined; + blobVersioningEnabled?: boolean | null | undefined; + changeFeedEnabled?: boolean | null | undefined; + changeFeedRetentionDays?: number | null | undefined; + containerDeleteRetentionDays?: number | null | undefined; + containerDeleteRetentionEnabled?: boolean | null | undefined; + containerPublicAccess?: string | null | undefined; + encryptionKeySource?: string | null | undefined; + fileEncryptionEnabled?: boolean | null | undefined; + location?: string | null | undefined; + name: string; + primaryLocation?: string | null | undefined; + provisioningState?: string | null | undefined; + publicNetworkAccess?: string | null | undefined; + queueEncryptionEnabled?: boolean | null | undefined; + resourceGroup?: string | null | undefined; + secondaryLocation?: string | null | undefined; + skuName?: string | null | undefined; + skuTier?: string | null | undefined; + status: ResourceHeartbeatStatus3; + statusOfPrimary?: string | null | undefined; + statusOfSecondary?: string | null | undefined; + storageAccountName?: string | null | undefined; + tableEncryptionEnabled?: boolean | null | undefined; + backend: "azureBlob"; +}; + +export const DataReason2 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type DataReason2 = ClosedEnum; + +export const StatusSeverity2 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type StatusSeverity2 = ClosedEnum; + +export type DataCollectionIssue2 = { + message: string; + reason: DataReason2; + severity: StatusSeverity2; + source: string; +}; + +export const DataHealth2 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type DataHealth2 = ClosedEnum; + +export const StatusLifecycle2 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle2 = ClosedEnum; + +export type ResourceHeartbeatStatus2 = { + collectionIssues: Array; + health: DataHealth2; + lifecycle: StatusLifecycle2; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataGcpCloudStorage = { + bucketId?: string | null | undefined; + defaultKmsKeyName?: string | null | undefined; + encryptionConfigPresent: boolean; + lifecyclePresent: boolean; + lifecycleRuleCount?: number | null | undefined; + location?: string | null | undefined; + locationType?: string | null | undefined; + name: string; + publicAccessPrevention?: string | null | undefined; + retentionPeriod?: string | null | undefined; + retentionPolicyEffectiveTime?: string | null | undefined; + retentionPolicyIsLocked?: boolean | null | undefined; + softDeleteEffectiveTime?: string | null | undefined; + softDeleteRetentionDurationSeconds?: string | null | undefined; + status: ResourceHeartbeatStatus2; + storageClass?: string | null | undefined; + uniformBucketLevelAccessEnabled?: boolean | null | undefined; + uniformBucketLevelAccessLockedTime?: string | null | undefined; + versioningEnabled?: boolean | null | undefined; + backend: "gcpCloudStorage"; +}; + +export const DataReason1 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type DataReason1 = ClosedEnum; + +export const StatusSeverity1 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type StatusSeverity1 = ClosedEnum; + +export type DataCollectionIssue1 = { + message: string; + reason: DataReason1; + severity: StatusSeverity1; + source: string; +}; + +export const DataHealth1 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type DataHealth1 = ClosedEnum; + +export const StatusLifecycle1 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle1 = ClosedEnum; + +export type ResourceHeartbeatStatus1 = { + collectionIssues: Array; + health: DataHealth1; + lifecycle: StatusLifecycle1; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAwsS3 = { + blockPublicAcls?: boolean | null | undefined; + blockPublicPolicy?: boolean | null | undefined; + bucketAclPresent?: boolean | null | undefined; + bucketLocation?: string | null | undefined; + bucketPolicyPresent?: boolean | null | undefined; + encryptionConfigPresent: boolean; + encryptionEnabled?: boolean | null | undefined; + ignorePublicAcls?: boolean | null | undefined; + lifecyclePresent: boolean; + lifecycleRuleCount?: number | null | undefined; + name: string; + publicAccessBlockPresent: boolean; + region?: string | null | undefined; + restrictPublicBuckets?: boolean | null | undefined; + status: ResourceHeartbeatStatus1; + versioningEnabled?: boolean | null | undefined; + versioningStatus?: string | null | undefined; + backend: "awsS3"; +}; + +export type SyncReconcileRequestDataUnion1 = + | DataAwsS3 + | DataGcpCloudStorage + | DataAzureBlob + | DataLocal1; + +export type DataStorage = { + data: DataAwsS3 | DataGcpCloudStorage | DataAzureBlob | DataLocal1; + resourceType: "storage"; +}; + +export type SyncReconcileRequestDataUnion18 = + | DataStorage + | DataWorker + | DataContainer + | DataDaemon + | DataComputeCluster + | DataKubernetesCluster + | DataQueue + | DataKv + | DataPostgres + | DataVault + | DataServiceAccount + | DataNetwork + | DataRemoteStackManagement + | DataArtifactRegistry + | DataBuild + | DataServiceActivation + | DataAzureResourceGroup + | DataAzureStorageAccount + | DataAzureContainerAppsEnvironment + | DataAzureServiceBusNamespace + | DataAi + | DataKey; + +export const ResourceHeartbeatFormat = { + Json: "json", + Yaml: "yaml", + Text: "text", +} as const; +export type ResourceHeartbeatFormat = ClosedEnum< + typeof ResourceHeartbeatFormat +>; + +export type ResourceHeartbeatRaw = { + body: string; + collectedAt: Date; + format: ResourceHeartbeatFormat; + source: string; + truncated: boolean; +}; + +export type ResourceHeartbeat = { + backend: ResourceHeartbeatBackendEnum; + /** + * Represents the target cloud platform. + */ + controllerPlatform: ResourceHeartbeatControllerPlatform; + data: + | DataStorage + | DataWorker + | DataContainer + | DataDaemon + | DataComputeCluster + | DataKubernetesCluster + | DataQueue + | DataKv + | DataPostgres + | DataVault + | DataServiceAccount + | DataNetwork + | DataRemoteStackManagement + | DataArtifactRegistry + | DataBuild + | DataServiceActivation + | DataAzureResourceGroup + | DataAzureStorageAccount + | DataAzureContainerAppsEnvironment + | DataAzureServiceBusNamespace + | DataAi + | DataKey; + deploymentId?: string | null | undefined; + observedAt: Date; + raw: Array; + /** + * Alien resource id, such as the `alien.Container` or `alien.Storage` + * + * @remarks + * resource id from the stack. + */ + resourceId: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + resourceType: string; +}; + +/** + * Backend whose observer produced this snapshot. + */ +export const ObservedInventoryBatchBackend = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Managed: "managed", + External: "external", + Test: "test", +} as const; +/** + * Backend whose observer produced this snapshot. + */ +export type ObservedInventoryBatchBackend = ClosedEnum< + typeof ObservedInventoryBatchBackend +>; + +/** + * Represents the target cloud platform. + */ +export const ObservedInventoryBatchControllerPlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Machines: "machines", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type ObservedInventoryBatchControllerPlatform = ClosedEnum< + typeof ObservedInventoryBatchControllerPlatform +>; + +export const ResourceReason = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type ResourceReason = ClosedEnum; + +export const ResourceSeverity = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type ResourceSeverity = ClosedEnum; + +export type ResourceCollectionIssue = { + message: string; + reason: ResourceReason; + severity: ResourceSeverity; + source: string; +}; + +export type Counts = { + current?: number | null | undefined; + desired?: number | null | undefined; + ready?: number | null | undefined; +}; + +export type CountsUnion = Counts | any; + +export const ResourceHealth = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type ResourceHealth = ClosedEnum; + +export const ResourceLifecycle = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type ResourceLifecycle = ClosedEnum; + +export const ResourceFormat = { + Json: "json", + Yaml: "yaml", + Text: "text", +} as const; +export type ResourceFormat = ClosedEnum; + +export type ResourceRaw = { + body: string; + collectedAt: Date; + format: ResourceFormat; + source: string; + truncated: boolean; +}; + +export type ResourceTypeHint = string | any; + +export type ObservedInventoryBatchResource = { + alienResourceId?: string | null | undefined; + attributes?: { [k: string]: any | null } | undefined; + collectionIssues?: Array | undefined; + counts?: Counts | any | null | undefined; + deploymentId?: string | null | undefined; + displayName: string; + health: ResourceHealth; + labels?: { [k: string]: string } | undefined; + lifecycle: ResourceLifecycle; + message?: string | null | undefined; + namespace?: string | null | undefined; + partial: boolean; + /** + * Provider-native kind, such as `apps/v1/Deployment`, + * + * @remarks + * `AWS::S3::Bucket`, `storage.googleapis.com/Bucket`, or an Azure + * resource type. + */ + providerKind: string; + providerStale: boolean; + raw?: Array | undefined; + /** + * Provider-native stable identity: Kubernetes object identity, cloud ARN, + * + * @remarks + * GCP full resource name, Azure resource id, etc. + */ + rawIdentity: string; + region?: string | null | undefined; + resourceTypeHint?: string | any | null | undefined; + scope?: string | null | undefined; + /** + * Release/version identity observed from the provider resource, when available. + */ + version?: string | null | undefined; +}; + +export type ObservedInventoryBatch = { + /** + * Backend whose observer produced this snapshot. + */ + backend: ObservedInventoryBatchBackend; + /** + * Whether this batch is a complete replacement for the scope. Complete + * + * @remarks + * batches tombstone previously observed rows in the same scope when they + * are absent from `resources`. + */ + complete: boolean; + /** + * Represents the target cloud platform. + */ + controllerPlatform: ObservedInventoryBatchControllerPlatform; + /** + * Stable scope for the provider list operation that produced this batch. + */ + inventoryScope: string; + /** + * Time the inventory scope was observed. + */ + observedAt: Date; + resources: Array; + /** + * Writer/source for this inventory pass, such as `operator` or + * + * @remarks + * `manager-observer`. + */ + sourceKind: string; +}; + +/** + * Request to reconcile deployment state + */ +export type SyncReconcileRequest = { + /** + * Deployment ID to reconcile state for + */ + deploymentId: string; + /** + * Lock session (push model only) - verifies lock ownership + */ + session?: string | undefined; + /** + * Complete deployment state after step() execution + */ + state: SyncReconcileRequestState; + /** + * Update heartbeat timestamp (for successful health checks) + */ + updateHeartbeat?: boolean | undefined; + /** + * Delay before this deployment should be acquired again. + */ + suggestedDelayMs?: number | undefined; + /** + * Latest typed resource heartbeats collected during this step. + */ + resourceHeartbeats?: Array | undefined; + /** + * Observed raw-resource inventory batches read during this step. + */ + observedInventoryBatches?: Array | undefined; + /** + * Operator-reported runtime capabilities. + */ + capabilities?: Array | undefined; + /** + * Operator binary version reported by the runtime. + */ + operatorVersion?: string | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseTypeStringList$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestCurrentReleaseTypeStringList, + ); + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseDefaultStringList$Outbound = { + type: string; + value: Array; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseDefaultStringList$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseDefaultStringList$Outbound, + SyncReconcileRequestCurrentReleaseDefaultStringList + > = z.object({ + type: SyncReconcileRequestCurrentReleaseTypeStringList$outboundSchema, + value: z.array(z.string()), + }); + +export function syncReconcileRequestCurrentReleaseDefaultStringListToJSON( + syncReconcileRequestCurrentReleaseDefaultStringList: + SyncReconcileRequestCurrentReleaseDefaultStringList, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseDefaultStringList$outboundSchema.parse( + syncReconcileRequestCurrentReleaseDefaultStringList, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseTypeBoolean$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestCurrentReleaseTypeBoolean, + ); + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseDefaultBoolean$Outbound = { + type: string; + value: boolean; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseDefaultBoolean$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseDefaultBoolean$Outbound, + SyncReconcileRequestCurrentReleaseDefaultBoolean + > = z.object({ + type: SyncReconcileRequestCurrentReleaseTypeBoolean$outboundSchema, + value: z.boolean(), + }); + +export function syncReconcileRequestCurrentReleaseDefaultBooleanToJSON( + syncReconcileRequestCurrentReleaseDefaultBoolean: + SyncReconcileRequestCurrentReleaseDefaultBoolean, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseDefaultBoolean$outboundSchema.parse( + syncReconcileRequestCurrentReleaseDefaultBoolean, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseTypeNumber$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestCurrentReleaseTypeNumber, + ); + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseDefaultNumber$Outbound = { + type: string; + value: string; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseDefaultNumber$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseDefaultNumber$Outbound, + SyncReconcileRequestCurrentReleaseDefaultNumber + > = z.object({ + type: SyncReconcileRequestCurrentReleaseTypeNumber$outboundSchema, + value: z.string(), + }); + +export function syncReconcileRequestCurrentReleaseDefaultNumberToJSON( + syncReconcileRequestCurrentReleaseDefaultNumber: + SyncReconcileRequestCurrentReleaseDefaultNumber, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseDefaultNumber$outboundSchema.parse( + syncReconcileRequestCurrentReleaseDefaultNumber, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseTypeString$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestCurrentReleaseTypeString, + ); + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseDefaultString$Outbound = { + type: string; + value: string; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseDefaultString$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseDefaultString$Outbound, + SyncReconcileRequestCurrentReleaseDefaultString + > = z.object({ + type: SyncReconcileRequestCurrentReleaseTypeString$outboundSchema, + value: z.string(), + }); + +export function syncReconcileRequestCurrentReleaseDefaultStringToJSON( + syncReconcileRequestCurrentReleaseDefaultString: + SyncReconcileRequestCurrentReleaseDefaultString, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseDefaultString$outboundSchema.parse( + syncReconcileRequestCurrentReleaseDefaultString, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseDefaultUnion$Outbound = + | SyncReconcileRequestCurrentReleaseDefaultString$Outbound + | SyncReconcileRequestCurrentReleaseDefaultNumber$Outbound + | SyncReconcileRequestCurrentReleaseDefaultBoolean$Outbound + | SyncReconcileRequestCurrentReleaseDefaultStringList$Outbound + | any; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseDefaultUnion$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseDefaultUnion$Outbound, + SyncReconcileRequestCurrentReleaseDefaultUnion + > = z.union([ + z.lazy(() => + SyncReconcileRequestCurrentReleaseDefaultString$outboundSchema + ), + z.lazy(() => + SyncReconcileRequestCurrentReleaseDefaultNumber$outboundSchema + ), + z.lazy(() => + SyncReconcileRequestCurrentReleaseDefaultBoolean$outboundSchema + ), + z.lazy(() => + SyncReconcileRequestCurrentReleaseDefaultStringList$outboundSchema + ), + z.any(), + ]); + +export function syncReconcileRequestCurrentReleaseDefaultUnionToJSON( + syncReconcileRequestCurrentReleaseDefaultUnion: + SyncReconcileRequestCurrentReleaseDefaultUnion, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseDefaultUnion$outboundSchema.parse( + syncReconcileRequestCurrentReleaseDefaultUnion, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseTypeEnvEnum$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestCurrentReleaseTypeEnvEnum, + ); + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseTypeUnion$Outbound = string | any; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseTypeUnion$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseTypeUnion$Outbound, + SyncReconcileRequestCurrentReleaseTypeUnion + > = z.union([ + SyncReconcileRequestCurrentReleaseTypeEnvEnum$outboundSchema, + z.any(), + ]); + +export function syncReconcileRequestCurrentReleaseTypeUnionToJSON( + syncReconcileRequestCurrentReleaseTypeUnion: + SyncReconcileRequestCurrentReleaseTypeUnion, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseTypeUnion$outboundSchema.parse( + syncReconcileRequestCurrentReleaseTypeUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseEnv$Outbound = { + name: string; + targetResources?: Array | null | undefined; + type?: string | any | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseEnv$outboundSchema: z.ZodType< + SyncReconcileRequestCurrentReleaseEnv$Outbound, + SyncReconcileRequestCurrentReleaseEnv +> = z.object({ + name: z.string(), + targetResources: z.nullable(z.array(z.string())).optional(), + type: z.nullable( + z.union([ + SyncReconcileRequestCurrentReleaseTypeEnvEnum$outboundSchema, + z.any(), + ]), + ).optional(), +}); + +export function syncReconcileRequestCurrentReleaseEnvToJSON( + syncReconcileRequestCurrentReleaseEnv: SyncReconcileRequestCurrentReleaseEnv, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseEnv$outboundSchema.parse( + syncReconcileRequestCurrentReleaseEnv, + ), + ); +} + +/** @internal */ +export const CurrentReleaseStateKind$outboundSchema: z.ZodEnum< + typeof CurrentReleaseStateKind +> = z.enum(CurrentReleaseStateKind); + +/** @internal */ +export const SyncReconcileRequestCurrentReleasePlatform$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestCurrentReleasePlatform, + ); + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseProvidedBy$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestCurrentReleaseProvidedBy, + ); + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseValidation$Outbound = { + format?: string | null | undefined; + max?: string | null | undefined; + maxItems?: number | null | undefined; + maxLength?: number | null | undefined; + min?: string | null | undefined; + minItems?: number | null | undefined; + minLength?: number | null | undefined; + pattern?: string | null | undefined; + values?: Array | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseValidation$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseValidation$Outbound, + SyncReconcileRequestCurrentReleaseValidation + > = z.object({ + format: z.nullable(z.string()).optional(), + max: z.nullable(z.string()).optional(), + maxItems: z.nullable(z.int()).optional(), + maxLength: z.nullable(z.int()).optional(), + min: z.nullable(z.string()).optional(), + minItems: z.nullable(z.int()).optional(), + minLength: z.nullable(z.int()).optional(), + pattern: z.nullable(z.string()).optional(), + values: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileRequestCurrentReleaseValidationToJSON( + syncReconcileRequestCurrentReleaseValidation: + SyncReconcileRequestCurrentReleaseValidation, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseValidation$outboundSchema.parse( + syncReconcileRequestCurrentReleaseValidation, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseValidationUnion$Outbound = + | SyncReconcileRequestCurrentReleaseValidation$Outbound + | any; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseValidationUnion$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseValidationUnion$Outbound, + SyncReconcileRequestCurrentReleaseValidationUnion + > = z.union([ + z.lazy(() => SyncReconcileRequestCurrentReleaseValidation$outboundSchema), + z.any(), + ]); + +export function syncReconcileRequestCurrentReleaseValidationUnionToJSON( + syncReconcileRequestCurrentReleaseValidationUnion: + SyncReconcileRequestCurrentReleaseValidationUnion, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseValidationUnion$outboundSchema.parse( + syncReconcileRequestCurrentReleaseValidationUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseInput$Outbound = { + default?: + | SyncReconcileRequestCurrentReleaseDefaultString$Outbound + | SyncReconcileRequestCurrentReleaseDefaultNumber$Outbound + | SyncReconcileRequestCurrentReleaseDefaultBoolean$Outbound + | SyncReconcileRequestCurrentReleaseDefaultStringList$Outbound + | any + | null + | undefined; + description: string; + env?: Array | undefined; + id: string; + kind: string; + label: string; + placeholder?: string | null | undefined; + platforms?: Array | null | undefined; + providedBy: Array; + required: boolean; + validation?: + | SyncReconcileRequestCurrentReleaseValidation$Outbound + | any + | null + | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseInput$outboundSchema: z.ZodType< + SyncReconcileRequestCurrentReleaseInput$Outbound, + SyncReconcileRequestCurrentReleaseInput +> = z.object({ + default: z.nullable( + z.union([ + z.lazy(() => + SyncReconcileRequestCurrentReleaseDefaultString$outboundSchema + ), + z.lazy(() => + SyncReconcileRequestCurrentReleaseDefaultNumber$outboundSchema + ), + z.lazy(() => + SyncReconcileRequestCurrentReleaseDefaultBoolean$outboundSchema + ), + z.lazy(() => + SyncReconcileRequestCurrentReleaseDefaultStringList$outboundSchema + ), + z.any(), + ]), + ).optional(), + description: z.string(), + env: z.array( + z.lazy(() => SyncReconcileRequestCurrentReleaseEnv$outboundSchema), + ).optional(), + id: z.string(), + kind: CurrentReleaseStateKind$outboundSchema, + label: z.string(), + placeholder: z.nullable(z.string()).optional(), + platforms: z.nullable( + z.array(SyncReconcileRequestCurrentReleasePlatform$outboundSchema), + ).optional(), + providedBy: z.array( + SyncReconcileRequestCurrentReleaseProvidedBy$outboundSchema, + ), + required: z.boolean(), + validation: z.nullable( + z.union([ + z.lazy(() => SyncReconcileRequestCurrentReleaseValidation$outboundSchema), + z.any(), + ]), + ).optional(), +}); + +export function syncReconcileRequestCurrentReleaseInputToJSON( + syncReconcileRequestCurrentReleaseInput: + SyncReconcileRequestCurrentReleaseInput, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseInput$outboundSchema.parse( + syncReconcileRequestCurrentReleaseInput, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseManagementEnum$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestCurrentReleaseManagementEnum, + ); + +/** @internal */ +export type CurrentReleaseOverrideStateAwResource$Outbound = { + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + resources: Array; +}; + +/** @internal */ +export const CurrentReleaseOverrideStateAwResource$outboundSchema: z.ZodType< + CurrentReleaseOverrideStateAwResource$Outbound, + CurrentReleaseOverrideStateAwResource +> = z.object({ + condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) + .optional(), + resources: z.array(z.string()), +}); + +export function currentReleaseOverrideStateAwResourceToJSON( + currentReleaseOverrideStateAwResource: CurrentReleaseOverrideStateAwResource, +): string { + return JSON.stringify( + CurrentReleaseOverrideStateAwResource$outboundSchema.parse( + currentReleaseOverrideStateAwResource, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseOverrideAwStack$Outbound = { + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + resources: Array; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseOverrideAwStack$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseOverrideAwStack$Outbound, + SyncReconcileRequestCurrentReleaseOverrideAwStack + > = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncReconcileRequestCurrentReleaseOverrideAwStackToJSON( + syncReconcileRequestCurrentReleaseOverrideAwStack: + SyncReconcileRequestCurrentReleaseOverrideAwStack, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseOverrideAwStack$outboundSchema.parse( + syncReconcileRequestCurrentReleaseOverrideAwStack, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseOverrideAwBinding$Outbound = { + resource?: CurrentReleaseOverrideStateAwResource$Outbound | undefined; + stack?: + | SyncReconcileRequestCurrentReleaseOverrideAwStack$Outbound + | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseOverrideAwBinding$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseOverrideAwBinding$Outbound, + SyncReconcileRequestCurrentReleaseOverrideAwBinding + > = z.object({ + resource: z.lazy(() => CurrentReleaseOverrideStateAwResource$outboundSchema) + .optional(), + stack: z.lazy(() => + SyncReconcileRequestCurrentReleaseOverrideAwStack$outboundSchema + ).optional(), + }); + +export function syncReconcileRequestCurrentReleaseOverrideAwBindingToJSON( + syncReconcileRequestCurrentReleaseOverrideAwBinding: + SyncReconcileRequestCurrentReleaseOverrideAwBinding, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseOverrideAwBinding$outboundSchema.parse( + syncReconcileRequestCurrentReleaseOverrideAwBinding, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseOverrideEffect$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestCurrentReleaseOverrideEffect, + ); + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseOverrideAwGrant$Outbound = { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseOverrideAwGrant$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseOverrideAwGrant$Outbound, + SyncReconcileRequestCurrentReleaseOverrideAwGrant + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileRequestCurrentReleaseOverrideAwGrantToJSON( + syncReconcileRequestCurrentReleaseOverrideAwGrant: + SyncReconcileRequestCurrentReleaseOverrideAwGrant, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseOverrideAwGrant$outboundSchema.parse( + syncReconcileRequestCurrentReleaseOverrideAwGrant, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseOverrideAw$Outbound = { + binding: SyncReconcileRequestCurrentReleaseOverrideAwBinding$Outbound; + description?: string | null | undefined; + effect?: string | undefined; + grant: SyncReconcileRequestCurrentReleaseOverrideAwGrant$Outbound; + label?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseOverrideAw$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseOverrideAw$Outbound, + SyncReconcileRequestCurrentReleaseOverrideAw + > = z.object({ + binding: z.lazy(() => + SyncReconcileRequestCurrentReleaseOverrideAwBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: SyncReconcileRequestCurrentReleaseOverrideEffect$outboundSchema + .optional(), + grant: z.lazy(() => + SyncReconcileRequestCurrentReleaseOverrideAwGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileRequestCurrentReleaseOverrideAwToJSON( + syncReconcileRequestCurrentReleaseOverrideAw: + SyncReconcileRequestCurrentReleaseOverrideAw, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseOverrideAw$outboundSchema.parse( + syncReconcileRequestCurrentReleaseOverrideAw, + ), + ); +} + +/** @internal */ +export type CurrentReleaseOverrideStateAzureResource$Outbound = { + scope: string; +}; + +/** @internal */ +export const CurrentReleaseOverrideStateAzureResource$outboundSchema: z.ZodType< + CurrentReleaseOverrideStateAzureResource$Outbound, + CurrentReleaseOverrideStateAzureResource +> = z.object({ + scope: z.string(), +}); + +export function currentReleaseOverrideStateAzureResourceToJSON( + currentReleaseOverrideStateAzureResource: + CurrentReleaseOverrideStateAzureResource, +): string { + return JSON.stringify( + CurrentReleaseOverrideStateAzureResource$outboundSchema.parse( + currentReleaseOverrideStateAzureResource, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseOverrideAzureStack$Outbound = { + scope: string; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseOverrideAzureStack$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseOverrideAzureStack$Outbound, + SyncReconcileRequestCurrentReleaseOverrideAzureStack + > = z.object({ + scope: z.string(), + }); + +export function syncReconcileRequestCurrentReleaseOverrideAzureStackToJSON( + syncReconcileRequestCurrentReleaseOverrideAzureStack: + SyncReconcileRequestCurrentReleaseOverrideAzureStack, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseOverrideAzureStack$outboundSchema.parse( + syncReconcileRequestCurrentReleaseOverrideAzureStack, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseOverrideAzureBinding$Outbound = { + resource?: CurrentReleaseOverrideStateAzureResource$Outbound | undefined; + stack?: + | SyncReconcileRequestCurrentReleaseOverrideAzureStack$Outbound + | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseOverrideAzureBinding$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseOverrideAzureBinding$Outbound, + SyncReconcileRequestCurrentReleaseOverrideAzureBinding + > = z.object({ + resource: z.lazy(() => + CurrentReleaseOverrideStateAzureResource$outboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileRequestCurrentReleaseOverrideAzureStack$outboundSchema + ).optional(), + }); + +export function syncReconcileRequestCurrentReleaseOverrideAzureBindingToJSON( + syncReconcileRequestCurrentReleaseOverrideAzureBinding: + SyncReconcileRequestCurrentReleaseOverrideAzureBinding, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseOverrideAzureBinding$outboundSchema.parse( + syncReconcileRequestCurrentReleaseOverrideAzureBinding, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseOverrideAzureGrant$Outbound = { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseOverrideAzureGrant$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseOverrideAzureGrant$Outbound, + SyncReconcileRequestCurrentReleaseOverrideAzureGrant + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileRequestCurrentReleaseOverrideAzureGrantToJSON( + syncReconcileRequestCurrentReleaseOverrideAzureGrant: + SyncReconcileRequestCurrentReleaseOverrideAzureGrant, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseOverrideAzureGrant$outboundSchema.parse( + syncReconcileRequestCurrentReleaseOverrideAzureGrant, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseOverrideAzure$Outbound = { + binding: SyncReconcileRequestCurrentReleaseOverrideAzureBinding$Outbound; + description?: string | null | undefined; + grant: SyncReconcileRequestCurrentReleaseOverrideAzureGrant$Outbound; + label?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseOverrideAzure$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseOverrideAzure$Outbound, + SyncReconcileRequestCurrentReleaseOverrideAzure + > = z.object({ + binding: z.lazy(() => + SyncReconcileRequestCurrentReleaseOverrideAzureBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileRequestCurrentReleaseOverrideAzureGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileRequestCurrentReleaseOverrideAzureToJSON( + syncReconcileRequestCurrentReleaseOverrideAzure: + SyncReconcileRequestCurrentReleaseOverrideAzure, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseOverrideAzure$outboundSchema.parse( + syncReconcileRequestCurrentReleaseOverrideAzure, + ), + ); +} + +/** @internal */ +export type CurrentReleaseOverrideConditionStateResource$Outbound = { + expression: string; + title: string; +}; + +/** @internal */ +export const CurrentReleaseOverrideConditionStateResource$outboundSchema: + z.ZodType< + CurrentReleaseOverrideConditionStateResource$Outbound, + CurrentReleaseOverrideConditionStateResource + > = z.object({ + expression: z.string(), + title: z.string(), + }); + +export function currentReleaseOverrideConditionStateResourceToJSON( + currentReleaseOverrideConditionStateResource: + CurrentReleaseOverrideConditionStateResource, +): string { + return JSON.stringify( + CurrentReleaseOverrideConditionStateResource$outboundSchema.parse( + currentReleaseOverrideConditionStateResource, + ), + ); +} + +/** @internal */ +export type CurrentReleaseOverrideStateResourceConditionUnion$Outbound = + | CurrentReleaseOverrideConditionStateResource$Outbound + | any; + +/** @internal */ +export const CurrentReleaseOverrideStateResourceConditionUnion$outboundSchema: + z.ZodType< + CurrentReleaseOverrideStateResourceConditionUnion$Outbound, + CurrentReleaseOverrideStateResourceConditionUnion + > = z.union([ + z.lazy(() => CurrentReleaseOverrideConditionStateResource$outboundSchema), + z.any(), + ]); + +export function currentReleaseOverrideStateResourceConditionUnionToJSON( + currentReleaseOverrideStateResourceConditionUnion: + CurrentReleaseOverrideStateResourceConditionUnion, +): string { + return JSON.stringify( + CurrentReleaseOverrideStateResourceConditionUnion$outboundSchema.parse( + currentReleaseOverrideStateResourceConditionUnion, + ), + ); +} + +/** @internal */ +export type CurrentReleaseOverrideStateGcpResource$Outbound = { + condition?: + | CurrentReleaseOverrideConditionStateResource$Outbound + | any + | null + | undefined; + scope: string; +}; + +/** @internal */ +export const CurrentReleaseOverrideStateGcpResource$outboundSchema: z.ZodType< + CurrentReleaseOverrideStateGcpResource$Outbound, + CurrentReleaseOverrideStateGcpResource +> = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => CurrentReleaseOverrideConditionStateResource$outboundSchema), + z.any(), + ]), + ).optional(), + scope: z.string(), +}); + +export function currentReleaseOverrideStateGcpResourceToJSON( + currentReleaseOverrideStateGcpResource: + CurrentReleaseOverrideStateGcpResource, +): string { + return JSON.stringify( + CurrentReleaseOverrideStateGcpResource$outboundSchema.parse( + currentReleaseOverrideStateGcpResource, + ), + ); +} + +/** @internal */ +export type CurrentReleaseOverrideConditionState$Outbound = { + expression: string; + title: string; +}; + +/** @internal */ +export const CurrentReleaseOverrideConditionState$outboundSchema: z.ZodType< + CurrentReleaseOverrideConditionState$Outbound, + CurrentReleaseOverrideConditionState +> = z.object({ + expression: z.string(), + title: z.string(), +}); + +export function currentReleaseOverrideConditionStateToJSON( + currentReleaseOverrideConditionState: CurrentReleaseOverrideConditionState, +): string { + return JSON.stringify( + CurrentReleaseOverrideConditionState$outboundSchema.parse( + currentReleaseOverrideConditionState, + ), + ); +} + +/** @internal */ +export type CurrentReleaseOverrideStateConditionUnion$Outbound = + | CurrentReleaseOverrideConditionState$Outbound + | any; + +/** @internal */ +export const CurrentReleaseOverrideStateConditionUnion$outboundSchema: + z.ZodType< + CurrentReleaseOverrideStateConditionUnion$Outbound, + CurrentReleaseOverrideStateConditionUnion + > = z.union([ + z.lazy(() => CurrentReleaseOverrideConditionState$outboundSchema), + z.any(), + ]); + +export function currentReleaseOverrideStateConditionUnionToJSON( + currentReleaseOverrideStateConditionUnion: + CurrentReleaseOverrideStateConditionUnion, +): string { + return JSON.stringify( + CurrentReleaseOverrideStateConditionUnion$outboundSchema.parse( + currentReleaseOverrideStateConditionUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseOverrideGcpStack$Outbound = { + condition?: + | CurrentReleaseOverrideConditionState$Outbound + | any + | null + | undefined; + scope: string; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseOverrideGcpStack$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseOverrideGcpStack$Outbound, + SyncReconcileRequestCurrentReleaseOverrideGcpStack + > = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => CurrentReleaseOverrideConditionState$outboundSchema), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncReconcileRequestCurrentReleaseOverrideGcpStackToJSON( + syncReconcileRequestCurrentReleaseOverrideGcpStack: + SyncReconcileRequestCurrentReleaseOverrideGcpStack, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseOverrideGcpStack$outboundSchema.parse( + syncReconcileRequestCurrentReleaseOverrideGcpStack, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseOverrideGcpBinding$Outbound = { + resource?: CurrentReleaseOverrideStateGcpResource$Outbound | undefined; + stack?: + | SyncReconcileRequestCurrentReleaseOverrideGcpStack$Outbound + | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseOverrideGcpBinding$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseOverrideGcpBinding$Outbound, + SyncReconcileRequestCurrentReleaseOverrideGcpBinding + > = z.object({ + resource: z.lazy(() => + CurrentReleaseOverrideStateGcpResource$outboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileRequestCurrentReleaseOverrideGcpStack$outboundSchema + ).optional(), + }); + +export function syncReconcileRequestCurrentReleaseOverrideGcpBindingToJSON( + syncReconcileRequestCurrentReleaseOverrideGcpBinding: + SyncReconcileRequestCurrentReleaseOverrideGcpBinding, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseOverrideGcpBinding$outboundSchema.parse( + syncReconcileRequestCurrentReleaseOverrideGcpBinding, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseOverrideGcpGrant$Outbound = { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseOverrideGcpGrant$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseOverrideGcpGrant$Outbound, + SyncReconcileRequestCurrentReleaseOverrideGcpGrant + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileRequestCurrentReleaseOverrideGcpGrantToJSON( + syncReconcileRequestCurrentReleaseOverrideGcpGrant: + SyncReconcileRequestCurrentReleaseOverrideGcpGrant, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseOverrideGcpGrant$outboundSchema.parse( + syncReconcileRequestCurrentReleaseOverrideGcpGrant, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseOverrideGcp$Outbound = { + binding: SyncReconcileRequestCurrentReleaseOverrideGcpBinding$Outbound; + description?: string | null | undefined; + grant: SyncReconcileRequestCurrentReleaseOverrideGcpGrant$Outbound; + label?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseOverrideGcp$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseOverrideGcp$Outbound, + SyncReconcileRequestCurrentReleaseOverrideGcp + > = z.object({ + binding: z.lazy(() => + SyncReconcileRequestCurrentReleaseOverrideGcpBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileRequestCurrentReleaseOverrideGcpGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileRequestCurrentReleaseOverrideGcpToJSON( + syncReconcileRequestCurrentReleaseOverrideGcp: + SyncReconcileRequestCurrentReleaseOverrideGcp, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseOverrideGcp$outboundSchema.parse( + syncReconcileRequestCurrentReleaseOverrideGcp, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseOverridePlatforms$Outbound = { + aws?: + | Array + | null + | undefined; + azure?: + | Array + | null + | undefined; + gcp?: + | Array + | null + | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseOverridePlatforms$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseOverridePlatforms$Outbound, + SyncReconcileRequestCurrentReleaseOverridePlatforms + > = z.object({ + aws: z.nullable( + z.array(z.lazy(() => + SyncReconcileRequestCurrentReleaseOverrideAw$outboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + SyncReconcileRequestCurrentReleaseOverrideAzure$outboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + SyncReconcileRequestCurrentReleaseOverrideGcp$outboundSchema + )), + ).optional(), + }); + +export function syncReconcileRequestCurrentReleaseOverridePlatformsToJSON( + syncReconcileRequestCurrentReleaseOverridePlatforms: + SyncReconcileRequestCurrentReleaseOverridePlatforms, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseOverridePlatforms$outboundSchema.parse( + syncReconcileRequestCurrentReleaseOverridePlatforms, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseOverride$Outbound = { + description: string; + id: string; + platforms: SyncReconcileRequestCurrentReleaseOverridePlatforms$Outbound; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseOverride$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseOverride$Outbound, + SyncReconcileRequestCurrentReleaseOverride + > = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncReconcileRequestCurrentReleaseOverridePlatforms$outboundSchema + ), + }); + +export function syncReconcileRequestCurrentReleaseOverrideToJSON( + syncReconcileRequestCurrentReleaseOverride: + SyncReconcileRequestCurrentReleaseOverride, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseOverride$outboundSchema.parse( + syncReconcileRequestCurrentReleaseOverride, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseOverrideUnion$Outbound = + | SyncReconcileRequestCurrentReleaseOverride$Outbound + | string; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseOverrideUnion$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseOverrideUnion$Outbound, + SyncReconcileRequestCurrentReleaseOverrideUnion + > = z.union([ + z.lazy(() => SyncReconcileRequestCurrentReleaseOverride$outboundSchema), + z.string(), + ]); + +export function syncReconcileRequestCurrentReleaseOverrideUnionToJSON( + syncReconcileRequestCurrentReleaseOverrideUnion: + SyncReconcileRequestCurrentReleaseOverrideUnion, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseOverrideUnion$outboundSchema.parse( + syncReconcileRequestCurrentReleaseOverrideUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseManagement2$Outbound = { + override: { + [k: string]: Array< + SyncReconcileRequestCurrentReleaseOverride$Outbound | string + >; + }; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseManagement2$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseManagement2$Outbound, + SyncReconcileRequestCurrentReleaseManagement2 + > = z.object({ + override: z.record( + z.string(), + z.array(z.union([ + z.lazy(() => SyncReconcileRequestCurrentReleaseOverride$outboundSchema), + z.string(), + ])), + ), + }); + +export function syncReconcileRequestCurrentReleaseManagement2ToJSON( + syncReconcileRequestCurrentReleaseManagement2: + SyncReconcileRequestCurrentReleaseManagement2, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseManagement2$outboundSchema.parse( + syncReconcileRequestCurrentReleaseManagement2, + ), + ); +} + +/** @internal */ +export type CurrentReleaseExtendStateAwResource$Outbound = { + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + resources: Array; +}; + +/** @internal */ +export const CurrentReleaseExtendStateAwResource$outboundSchema: z.ZodType< + CurrentReleaseExtendStateAwResource$Outbound, + CurrentReleaseExtendStateAwResource +> = z.object({ + condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) + .optional(), + resources: z.array(z.string()), +}); + +export function currentReleaseExtendStateAwResourceToJSON( + currentReleaseExtendStateAwResource: CurrentReleaseExtendStateAwResource, +): string { + return JSON.stringify( + CurrentReleaseExtendStateAwResource$outboundSchema.parse( + currentReleaseExtendStateAwResource, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseExtendAwStack$Outbound = { + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + resources: Array; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseExtendAwStack$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseExtendAwStack$Outbound, + SyncReconcileRequestCurrentReleaseExtendAwStack + > = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncReconcileRequestCurrentReleaseExtendAwStackToJSON( + syncReconcileRequestCurrentReleaseExtendAwStack: + SyncReconcileRequestCurrentReleaseExtendAwStack, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseExtendAwStack$outboundSchema.parse( + syncReconcileRequestCurrentReleaseExtendAwStack, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseExtendAwBinding$Outbound = { + resource?: CurrentReleaseExtendStateAwResource$Outbound | undefined; + stack?: SyncReconcileRequestCurrentReleaseExtendAwStack$Outbound | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseExtendAwBinding$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseExtendAwBinding$Outbound, + SyncReconcileRequestCurrentReleaseExtendAwBinding + > = z.object({ + resource: z.lazy(() => CurrentReleaseExtendStateAwResource$outboundSchema) + .optional(), + stack: z.lazy(() => + SyncReconcileRequestCurrentReleaseExtendAwStack$outboundSchema + ).optional(), + }); + +export function syncReconcileRequestCurrentReleaseExtendAwBindingToJSON( + syncReconcileRequestCurrentReleaseExtendAwBinding: + SyncReconcileRequestCurrentReleaseExtendAwBinding, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseExtendAwBinding$outboundSchema.parse( + syncReconcileRequestCurrentReleaseExtendAwBinding, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseExtendEffect$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestCurrentReleaseExtendEffect, + ); + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseExtendAwGrant$Outbound = { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseExtendAwGrant$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseExtendAwGrant$Outbound, + SyncReconcileRequestCurrentReleaseExtendAwGrant + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileRequestCurrentReleaseExtendAwGrantToJSON( + syncReconcileRequestCurrentReleaseExtendAwGrant: + SyncReconcileRequestCurrentReleaseExtendAwGrant, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseExtendAwGrant$outboundSchema.parse( + syncReconcileRequestCurrentReleaseExtendAwGrant, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseExtendAw$Outbound = { + binding: SyncReconcileRequestCurrentReleaseExtendAwBinding$Outbound; + description?: string | null | undefined; + effect?: string | undefined; + grant: SyncReconcileRequestCurrentReleaseExtendAwGrant$Outbound; + label?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseExtendAw$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseExtendAw$Outbound, + SyncReconcileRequestCurrentReleaseExtendAw + > = z.object({ + binding: z.lazy(() => + SyncReconcileRequestCurrentReleaseExtendAwBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: SyncReconcileRequestCurrentReleaseExtendEffect$outboundSchema + .optional(), + grant: z.lazy(() => + SyncReconcileRequestCurrentReleaseExtendAwGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileRequestCurrentReleaseExtendAwToJSON( + syncReconcileRequestCurrentReleaseExtendAw: + SyncReconcileRequestCurrentReleaseExtendAw, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseExtendAw$outboundSchema.parse( + syncReconcileRequestCurrentReleaseExtendAw, + ), + ); +} + +/** @internal */ +export type CurrentReleaseExtendStateAzureResource$Outbound = { + scope: string; +}; + +/** @internal */ +export const CurrentReleaseExtendStateAzureResource$outboundSchema: z.ZodType< + CurrentReleaseExtendStateAzureResource$Outbound, + CurrentReleaseExtendStateAzureResource +> = z.object({ + scope: z.string(), +}); + +export function currentReleaseExtendStateAzureResourceToJSON( + currentReleaseExtendStateAzureResource: + CurrentReleaseExtendStateAzureResource, +): string { + return JSON.stringify( + CurrentReleaseExtendStateAzureResource$outboundSchema.parse( + currentReleaseExtendStateAzureResource, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseExtendAzureStack$Outbound = { + scope: string; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseExtendAzureStack$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseExtendAzureStack$Outbound, + SyncReconcileRequestCurrentReleaseExtendAzureStack + > = z.object({ + scope: z.string(), + }); + +export function syncReconcileRequestCurrentReleaseExtendAzureStackToJSON( + syncReconcileRequestCurrentReleaseExtendAzureStack: + SyncReconcileRequestCurrentReleaseExtendAzureStack, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseExtendAzureStack$outboundSchema.parse( + syncReconcileRequestCurrentReleaseExtendAzureStack, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseExtendAzureBinding$Outbound = { + resource?: CurrentReleaseExtendStateAzureResource$Outbound | undefined; + stack?: + | SyncReconcileRequestCurrentReleaseExtendAzureStack$Outbound + | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseExtendAzureBinding$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseExtendAzureBinding$Outbound, + SyncReconcileRequestCurrentReleaseExtendAzureBinding + > = z.object({ + resource: z.lazy(() => + CurrentReleaseExtendStateAzureResource$outboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileRequestCurrentReleaseExtendAzureStack$outboundSchema + ).optional(), + }); + +export function syncReconcileRequestCurrentReleaseExtendAzureBindingToJSON( + syncReconcileRequestCurrentReleaseExtendAzureBinding: + SyncReconcileRequestCurrentReleaseExtendAzureBinding, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseExtendAzureBinding$outboundSchema.parse( + syncReconcileRequestCurrentReleaseExtendAzureBinding, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseExtendAzureGrant$Outbound = { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseExtendAzureGrant$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseExtendAzureGrant$Outbound, + SyncReconcileRequestCurrentReleaseExtendAzureGrant + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileRequestCurrentReleaseExtendAzureGrantToJSON( + syncReconcileRequestCurrentReleaseExtendAzureGrant: + SyncReconcileRequestCurrentReleaseExtendAzureGrant, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseExtendAzureGrant$outboundSchema.parse( + syncReconcileRequestCurrentReleaseExtendAzureGrant, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseExtendAzure$Outbound = { + binding: SyncReconcileRequestCurrentReleaseExtendAzureBinding$Outbound; + description?: string | null | undefined; + grant: SyncReconcileRequestCurrentReleaseExtendAzureGrant$Outbound; + label?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseExtendAzure$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseExtendAzure$Outbound, + SyncReconcileRequestCurrentReleaseExtendAzure + > = z.object({ + binding: z.lazy(() => + SyncReconcileRequestCurrentReleaseExtendAzureBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileRequestCurrentReleaseExtendAzureGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileRequestCurrentReleaseExtendAzureToJSON( + syncReconcileRequestCurrentReleaseExtendAzure: + SyncReconcileRequestCurrentReleaseExtendAzure, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseExtendAzure$outboundSchema.parse( + syncReconcileRequestCurrentReleaseExtendAzure, + ), + ); +} + +/** @internal */ +export type CurrentReleaseExtendConditionStateResource$Outbound = { + expression: string; + title: string; +}; + +/** @internal */ +export const CurrentReleaseExtendConditionStateResource$outboundSchema: + z.ZodType< + CurrentReleaseExtendConditionStateResource$Outbound, + CurrentReleaseExtendConditionStateResource + > = z.object({ + expression: z.string(), + title: z.string(), + }); + +export function currentReleaseExtendConditionStateResourceToJSON( + currentReleaseExtendConditionStateResource: + CurrentReleaseExtendConditionStateResource, +): string { + return JSON.stringify( + CurrentReleaseExtendConditionStateResource$outboundSchema.parse( + currentReleaseExtendConditionStateResource, + ), + ); +} + +/** @internal */ +export type CurrentReleaseExtendStateResourceConditionUnion$Outbound = + | CurrentReleaseExtendConditionStateResource$Outbound + | any; + +/** @internal */ +export const CurrentReleaseExtendStateResourceConditionUnion$outboundSchema: + z.ZodType< + CurrentReleaseExtendStateResourceConditionUnion$Outbound, + CurrentReleaseExtendStateResourceConditionUnion + > = z.union([ + z.lazy(() => CurrentReleaseExtendConditionStateResource$outboundSchema), + z.any(), + ]); + +export function currentReleaseExtendStateResourceConditionUnionToJSON( + currentReleaseExtendStateResourceConditionUnion: + CurrentReleaseExtendStateResourceConditionUnion, +): string { + return JSON.stringify( + CurrentReleaseExtendStateResourceConditionUnion$outboundSchema.parse( + currentReleaseExtendStateResourceConditionUnion, + ), + ); +} + +/** @internal */ +export type CurrentReleaseExtendStateGcpResource$Outbound = { + condition?: + | CurrentReleaseExtendConditionStateResource$Outbound + | any + | null + | undefined; + scope: string; +}; + +/** @internal */ +export const CurrentReleaseExtendStateGcpResource$outboundSchema: z.ZodType< + CurrentReleaseExtendStateGcpResource$Outbound, + CurrentReleaseExtendStateGcpResource +> = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => CurrentReleaseExtendConditionStateResource$outboundSchema), + z.any(), + ]), + ).optional(), + scope: z.string(), +}); + +export function currentReleaseExtendStateGcpResourceToJSON( + currentReleaseExtendStateGcpResource: CurrentReleaseExtendStateGcpResource, +): string { + return JSON.stringify( + CurrentReleaseExtendStateGcpResource$outboundSchema.parse( + currentReleaseExtendStateGcpResource, + ), + ); +} + +/** @internal */ +export type CurrentReleaseExtendConditionState$Outbound = { + expression: string; + title: string; +}; + +/** @internal */ +export const CurrentReleaseExtendConditionState$outboundSchema: z.ZodType< + CurrentReleaseExtendConditionState$Outbound, + CurrentReleaseExtendConditionState +> = z.object({ + expression: z.string(), + title: z.string(), +}); + +export function currentReleaseExtendConditionStateToJSON( + currentReleaseExtendConditionState: CurrentReleaseExtendConditionState, +): string { + return JSON.stringify( + CurrentReleaseExtendConditionState$outboundSchema.parse( + currentReleaseExtendConditionState, + ), + ); +} + +/** @internal */ +export type CurrentReleaseExtendStateConditionUnion$Outbound = + | CurrentReleaseExtendConditionState$Outbound + | any; + +/** @internal */ +export const CurrentReleaseExtendStateConditionUnion$outboundSchema: z.ZodType< + CurrentReleaseExtendStateConditionUnion$Outbound, + CurrentReleaseExtendStateConditionUnion +> = z.union([ + z.lazy(() => CurrentReleaseExtendConditionState$outboundSchema), + z.any(), +]); + +export function currentReleaseExtendStateConditionUnionToJSON( + currentReleaseExtendStateConditionUnion: + CurrentReleaseExtendStateConditionUnion, +): string { + return JSON.stringify( + CurrentReleaseExtendStateConditionUnion$outboundSchema.parse( + currentReleaseExtendStateConditionUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseExtendGcpStack$Outbound = { + condition?: + | CurrentReleaseExtendConditionState$Outbound + | any + | null + | undefined; + scope: string; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseExtendGcpStack$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseExtendGcpStack$Outbound, + SyncReconcileRequestCurrentReleaseExtendGcpStack + > = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => CurrentReleaseExtendConditionState$outboundSchema), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncReconcileRequestCurrentReleaseExtendGcpStackToJSON( + syncReconcileRequestCurrentReleaseExtendGcpStack: + SyncReconcileRequestCurrentReleaseExtendGcpStack, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseExtendGcpStack$outboundSchema.parse( + syncReconcileRequestCurrentReleaseExtendGcpStack, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseExtendGcpBinding$Outbound = { + resource?: CurrentReleaseExtendStateGcpResource$Outbound | undefined; + stack?: SyncReconcileRequestCurrentReleaseExtendGcpStack$Outbound | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseExtendGcpBinding$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseExtendGcpBinding$Outbound, + SyncReconcileRequestCurrentReleaseExtendGcpBinding + > = z.object({ + resource: z.lazy(() => CurrentReleaseExtendStateGcpResource$outboundSchema) + .optional(), + stack: z.lazy(() => + SyncReconcileRequestCurrentReleaseExtendGcpStack$outboundSchema + ).optional(), + }); + +export function syncReconcileRequestCurrentReleaseExtendGcpBindingToJSON( + syncReconcileRequestCurrentReleaseExtendGcpBinding: + SyncReconcileRequestCurrentReleaseExtendGcpBinding, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseExtendGcpBinding$outboundSchema.parse( + syncReconcileRequestCurrentReleaseExtendGcpBinding, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseExtendGcpGrant$Outbound = { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseExtendGcpGrant$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseExtendGcpGrant$Outbound, + SyncReconcileRequestCurrentReleaseExtendGcpGrant + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileRequestCurrentReleaseExtendGcpGrantToJSON( + syncReconcileRequestCurrentReleaseExtendGcpGrant: + SyncReconcileRequestCurrentReleaseExtendGcpGrant, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseExtendGcpGrant$outboundSchema.parse( + syncReconcileRequestCurrentReleaseExtendGcpGrant, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseExtendGcp$Outbound = { + binding: SyncReconcileRequestCurrentReleaseExtendGcpBinding$Outbound; + description?: string | null | undefined; + grant: SyncReconcileRequestCurrentReleaseExtendGcpGrant$Outbound; + label?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseExtendGcp$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseExtendGcp$Outbound, + SyncReconcileRequestCurrentReleaseExtendGcp + > = z.object({ + binding: z.lazy(() => + SyncReconcileRequestCurrentReleaseExtendGcpBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileRequestCurrentReleaseExtendGcpGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileRequestCurrentReleaseExtendGcpToJSON( + syncReconcileRequestCurrentReleaseExtendGcp: + SyncReconcileRequestCurrentReleaseExtendGcp, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseExtendGcp$outboundSchema.parse( + syncReconcileRequestCurrentReleaseExtendGcp, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseExtendPlatforms$Outbound = { + aws?: + | Array + | null + | undefined; + azure?: + | Array + | null + | undefined; + gcp?: + | Array + | null + | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseExtendPlatforms$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseExtendPlatforms$Outbound, + SyncReconcileRequestCurrentReleaseExtendPlatforms + > = z.object({ + aws: z.nullable( + z.array(z.lazy(() => + SyncReconcileRequestCurrentReleaseExtendAw$outboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + SyncReconcileRequestCurrentReleaseExtendAzure$outboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + SyncReconcileRequestCurrentReleaseExtendGcp$outboundSchema + )), + ).optional(), + }); + +export function syncReconcileRequestCurrentReleaseExtendPlatformsToJSON( + syncReconcileRequestCurrentReleaseExtendPlatforms: + SyncReconcileRequestCurrentReleaseExtendPlatforms, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseExtendPlatforms$outboundSchema.parse( + syncReconcileRequestCurrentReleaseExtendPlatforms, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseExtend$Outbound = { + description: string; + id: string; + platforms: SyncReconcileRequestCurrentReleaseExtendPlatforms$Outbound; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseExtend$outboundSchema: z.ZodType< + SyncReconcileRequestCurrentReleaseExtend$Outbound, + SyncReconcileRequestCurrentReleaseExtend +> = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncReconcileRequestCurrentReleaseExtendPlatforms$outboundSchema + ), +}); + +export function syncReconcileRequestCurrentReleaseExtendToJSON( + syncReconcileRequestCurrentReleaseExtend: + SyncReconcileRequestCurrentReleaseExtend, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseExtend$outboundSchema.parse( + syncReconcileRequestCurrentReleaseExtend, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseExtendUnion$Outbound = + | SyncReconcileRequestCurrentReleaseExtend$Outbound + | string; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseExtendUnion$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseExtendUnion$Outbound, + SyncReconcileRequestCurrentReleaseExtendUnion + > = z.union([ + z.lazy(() => SyncReconcileRequestCurrentReleaseExtend$outboundSchema), + z.string(), + ]); + +export function syncReconcileRequestCurrentReleaseExtendUnionToJSON( + syncReconcileRequestCurrentReleaseExtendUnion: + SyncReconcileRequestCurrentReleaseExtendUnion, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseExtendUnion$outboundSchema.parse( + syncReconcileRequestCurrentReleaseExtendUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseManagement1$Outbound = { + extend: { + [k: string]: Array< + SyncReconcileRequestCurrentReleaseExtend$Outbound | string + >; + }; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseManagement1$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseManagement1$Outbound, + SyncReconcileRequestCurrentReleaseManagement1 + > = z.object({ + extend: z.record( + z.string(), + z.array(z.union([ + z.lazy(() => SyncReconcileRequestCurrentReleaseExtend$outboundSchema), + z.string(), + ])), + ), + }); + +export function syncReconcileRequestCurrentReleaseManagement1ToJSON( + syncReconcileRequestCurrentReleaseManagement1: + SyncReconcileRequestCurrentReleaseManagement1, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseManagement1$outboundSchema.parse( + syncReconcileRequestCurrentReleaseManagement1, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseManagementUnion$Outbound = + | SyncReconcileRequestCurrentReleaseManagement1$Outbound + | SyncReconcileRequestCurrentReleaseManagement2$Outbound + | string; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseManagementUnion$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseManagementUnion$Outbound, + SyncReconcileRequestCurrentReleaseManagementUnion + > = z.union([ + z.lazy(() => SyncReconcileRequestCurrentReleaseManagement1$outboundSchema), + z.lazy(() => SyncReconcileRequestCurrentReleaseManagement2$outboundSchema), + SyncReconcileRequestCurrentReleaseManagementEnum$outboundSchema, + ]); + +export function syncReconcileRequestCurrentReleaseManagementUnionToJSON( + syncReconcileRequestCurrentReleaseManagementUnion: + SyncReconcileRequestCurrentReleaseManagementUnion, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseManagementUnion$outboundSchema.parse( + syncReconcileRequestCurrentReleaseManagementUnion, + ), + ); +} + +/** @internal */ +export type CurrentReleaseProfileStateAwResource$Outbound = { + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + resources: Array; +}; + +/** @internal */ +export const CurrentReleaseProfileStateAwResource$outboundSchema: z.ZodType< + CurrentReleaseProfileStateAwResource$Outbound, + CurrentReleaseProfileStateAwResource +> = z.object({ + condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) + .optional(), + resources: z.array(z.string()), +}); + +export function currentReleaseProfileStateAwResourceToJSON( + currentReleaseProfileStateAwResource: CurrentReleaseProfileStateAwResource, +): string { + return JSON.stringify( + CurrentReleaseProfileStateAwResource$outboundSchema.parse( + currentReleaseProfileStateAwResource, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseProfileAwStack$Outbound = { + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + resources: Array; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseProfileAwStack$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseProfileAwStack$Outbound, + SyncReconcileRequestCurrentReleaseProfileAwStack + > = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncReconcileRequestCurrentReleaseProfileAwStackToJSON( + syncReconcileRequestCurrentReleaseProfileAwStack: + SyncReconcileRequestCurrentReleaseProfileAwStack, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseProfileAwStack$outboundSchema.parse( + syncReconcileRequestCurrentReleaseProfileAwStack, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseProfileAwBinding$Outbound = { + resource?: CurrentReleaseProfileStateAwResource$Outbound | undefined; + stack?: SyncReconcileRequestCurrentReleaseProfileAwStack$Outbound | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseProfileAwBinding$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseProfileAwBinding$Outbound, + SyncReconcileRequestCurrentReleaseProfileAwBinding + > = z.object({ + resource: z.lazy(() => CurrentReleaseProfileStateAwResource$outboundSchema) + .optional(), + stack: z.lazy(() => + SyncReconcileRequestCurrentReleaseProfileAwStack$outboundSchema + ).optional(), + }); + +export function syncReconcileRequestCurrentReleaseProfileAwBindingToJSON( + syncReconcileRequestCurrentReleaseProfileAwBinding: + SyncReconcileRequestCurrentReleaseProfileAwBinding, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseProfileAwBinding$outboundSchema.parse( + syncReconcileRequestCurrentReleaseProfileAwBinding, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseProfileEffect$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestCurrentReleaseProfileEffect, + ); + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseProfileAwGrant$Outbound = { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseProfileAwGrant$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseProfileAwGrant$Outbound, + SyncReconcileRequestCurrentReleaseProfileAwGrant + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileRequestCurrentReleaseProfileAwGrantToJSON( + syncReconcileRequestCurrentReleaseProfileAwGrant: + SyncReconcileRequestCurrentReleaseProfileAwGrant, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseProfileAwGrant$outboundSchema.parse( + syncReconcileRequestCurrentReleaseProfileAwGrant, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseProfileAw$Outbound = { + binding: SyncReconcileRequestCurrentReleaseProfileAwBinding$Outbound; + description?: string | null | undefined; + effect?: string | undefined; + grant: SyncReconcileRequestCurrentReleaseProfileAwGrant$Outbound; + label?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseProfileAw$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseProfileAw$Outbound, + SyncReconcileRequestCurrentReleaseProfileAw + > = z.object({ + binding: z.lazy(() => + SyncReconcileRequestCurrentReleaseProfileAwBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: SyncReconcileRequestCurrentReleaseProfileEffect$outboundSchema + .optional(), + grant: z.lazy(() => + SyncReconcileRequestCurrentReleaseProfileAwGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileRequestCurrentReleaseProfileAwToJSON( + syncReconcileRequestCurrentReleaseProfileAw: + SyncReconcileRequestCurrentReleaseProfileAw, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseProfileAw$outboundSchema.parse( + syncReconcileRequestCurrentReleaseProfileAw, + ), + ); +} + +/** @internal */ +export type CurrentReleaseProfileStateAzureResource$Outbound = { + scope: string; +}; + +/** @internal */ +export const CurrentReleaseProfileStateAzureResource$outboundSchema: z.ZodType< + CurrentReleaseProfileStateAzureResource$Outbound, + CurrentReleaseProfileStateAzureResource +> = z.object({ + scope: z.string(), +}); + +export function currentReleaseProfileStateAzureResourceToJSON( + currentReleaseProfileStateAzureResource: + CurrentReleaseProfileStateAzureResource, +): string { + return JSON.stringify( + CurrentReleaseProfileStateAzureResource$outboundSchema.parse( + currentReleaseProfileStateAzureResource, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseProfileAzureStack$Outbound = { + scope: string; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseProfileAzureStack$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseProfileAzureStack$Outbound, + SyncReconcileRequestCurrentReleaseProfileAzureStack + > = z.object({ + scope: z.string(), + }); + +export function syncReconcileRequestCurrentReleaseProfileAzureStackToJSON( + syncReconcileRequestCurrentReleaseProfileAzureStack: + SyncReconcileRequestCurrentReleaseProfileAzureStack, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseProfileAzureStack$outboundSchema.parse( + syncReconcileRequestCurrentReleaseProfileAzureStack, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseProfileAzureBinding$Outbound = { + resource?: CurrentReleaseProfileStateAzureResource$Outbound | undefined; + stack?: + | SyncReconcileRequestCurrentReleaseProfileAzureStack$Outbound + | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseProfileAzureBinding$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseProfileAzureBinding$Outbound, + SyncReconcileRequestCurrentReleaseProfileAzureBinding + > = z.object({ + resource: z.lazy(() => + CurrentReleaseProfileStateAzureResource$outboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileRequestCurrentReleaseProfileAzureStack$outboundSchema + ).optional(), + }); + +export function syncReconcileRequestCurrentReleaseProfileAzureBindingToJSON( + syncReconcileRequestCurrentReleaseProfileAzureBinding: + SyncReconcileRequestCurrentReleaseProfileAzureBinding, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseProfileAzureBinding$outboundSchema.parse( + syncReconcileRequestCurrentReleaseProfileAzureBinding, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseProfileAzureGrant$Outbound = { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseProfileAzureGrant$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseProfileAzureGrant$Outbound, + SyncReconcileRequestCurrentReleaseProfileAzureGrant + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileRequestCurrentReleaseProfileAzureGrantToJSON( + syncReconcileRequestCurrentReleaseProfileAzureGrant: + SyncReconcileRequestCurrentReleaseProfileAzureGrant, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseProfileAzureGrant$outboundSchema.parse( + syncReconcileRequestCurrentReleaseProfileAzureGrant, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseProfileAzure$Outbound = { + binding: SyncReconcileRequestCurrentReleaseProfileAzureBinding$Outbound; + description?: string | null | undefined; + grant: SyncReconcileRequestCurrentReleaseProfileAzureGrant$Outbound; + label?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseProfileAzure$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseProfileAzure$Outbound, + SyncReconcileRequestCurrentReleaseProfileAzure + > = z.object({ + binding: z.lazy(() => + SyncReconcileRequestCurrentReleaseProfileAzureBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileRequestCurrentReleaseProfileAzureGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileRequestCurrentReleaseProfileAzureToJSON( + syncReconcileRequestCurrentReleaseProfileAzure: + SyncReconcileRequestCurrentReleaseProfileAzure, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseProfileAzure$outboundSchema.parse( + syncReconcileRequestCurrentReleaseProfileAzure, + ), + ); +} + +/** @internal */ +export type CurrentReleaseProfileConditionStateResource$Outbound = { + expression: string; + title: string; +}; + +/** @internal */ +export const CurrentReleaseProfileConditionStateResource$outboundSchema: + z.ZodType< + CurrentReleaseProfileConditionStateResource$Outbound, + CurrentReleaseProfileConditionStateResource + > = z.object({ + expression: z.string(), + title: z.string(), + }); + +export function currentReleaseProfileConditionStateResourceToJSON( + currentReleaseProfileConditionStateResource: + CurrentReleaseProfileConditionStateResource, +): string { + return JSON.stringify( + CurrentReleaseProfileConditionStateResource$outboundSchema.parse( + currentReleaseProfileConditionStateResource, + ), + ); +} + +/** @internal */ +export type CurrentReleaseProfileStateResourceConditionUnion$Outbound = + | CurrentReleaseProfileConditionStateResource$Outbound + | any; + +/** @internal */ +export const CurrentReleaseProfileStateResourceConditionUnion$outboundSchema: + z.ZodType< + CurrentReleaseProfileStateResourceConditionUnion$Outbound, + CurrentReleaseProfileStateResourceConditionUnion + > = z.union([ + z.lazy(() => CurrentReleaseProfileConditionStateResource$outboundSchema), + z.any(), + ]); + +export function currentReleaseProfileStateResourceConditionUnionToJSON( + currentReleaseProfileStateResourceConditionUnion: + CurrentReleaseProfileStateResourceConditionUnion, +): string { + return JSON.stringify( + CurrentReleaseProfileStateResourceConditionUnion$outboundSchema.parse( + currentReleaseProfileStateResourceConditionUnion, + ), + ); +} + +/** @internal */ +export type CurrentReleaseProfileStateGcpResource$Outbound = { + condition?: + | CurrentReleaseProfileConditionStateResource$Outbound + | any + | null + | undefined; + scope: string; +}; + +/** @internal */ +export const CurrentReleaseProfileStateGcpResource$outboundSchema: z.ZodType< + CurrentReleaseProfileStateGcpResource$Outbound, + CurrentReleaseProfileStateGcpResource +> = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => CurrentReleaseProfileConditionStateResource$outboundSchema), + z.any(), + ]), + ).optional(), + scope: z.string(), +}); + +export function currentReleaseProfileStateGcpResourceToJSON( + currentReleaseProfileStateGcpResource: CurrentReleaseProfileStateGcpResource, +): string { + return JSON.stringify( + CurrentReleaseProfileStateGcpResource$outboundSchema.parse( + currentReleaseProfileStateGcpResource, + ), + ); +} + +/** @internal */ +export type CurrentReleaseProfileConditionState$Outbound = { + expression: string; + title: string; +}; + +/** @internal */ +export const CurrentReleaseProfileConditionState$outboundSchema: z.ZodType< + CurrentReleaseProfileConditionState$Outbound, + CurrentReleaseProfileConditionState +> = z.object({ + expression: z.string(), + title: z.string(), +}); + +export function currentReleaseProfileConditionStateToJSON( + currentReleaseProfileConditionState: CurrentReleaseProfileConditionState, +): string { + return JSON.stringify( + CurrentReleaseProfileConditionState$outboundSchema.parse( + currentReleaseProfileConditionState, + ), + ); +} + +/** @internal */ +export type CurrentReleaseProfileStateConditionUnion$Outbound = + | CurrentReleaseProfileConditionState$Outbound + | any; + +/** @internal */ +export const CurrentReleaseProfileStateConditionUnion$outboundSchema: z.ZodType< + CurrentReleaseProfileStateConditionUnion$Outbound, + CurrentReleaseProfileStateConditionUnion +> = z.union([ + z.lazy(() => CurrentReleaseProfileConditionState$outboundSchema), + z.any(), +]); + +export function currentReleaseProfileStateConditionUnionToJSON( + currentReleaseProfileStateConditionUnion: + CurrentReleaseProfileStateConditionUnion, +): string { + return JSON.stringify( + CurrentReleaseProfileStateConditionUnion$outboundSchema.parse( + currentReleaseProfileStateConditionUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseProfileGcpStack$Outbound = { + condition?: + | CurrentReleaseProfileConditionState$Outbound + | any + | null + | undefined; + scope: string; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseProfileGcpStack$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseProfileGcpStack$Outbound, + SyncReconcileRequestCurrentReleaseProfileGcpStack + > = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => CurrentReleaseProfileConditionState$outboundSchema), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncReconcileRequestCurrentReleaseProfileGcpStackToJSON( + syncReconcileRequestCurrentReleaseProfileGcpStack: + SyncReconcileRequestCurrentReleaseProfileGcpStack, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseProfileGcpStack$outboundSchema.parse( + syncReconcileRequestCurrentReleaseProfileGcpStack, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseProfileGcpBinding$Outbound = { + resource?: CurrentReleaseProfileStateGcpResource$Outbound | undefined; + stack?: + | SyncReconcileRequestCurrentReleaseProfileGcpStack$Outbound + | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseProfileGcpBinding$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseProfileGcpBinding$Outbound, + SyncReconcileRequestCurrentReleaseProfileGcpBinding + > = z.object({ + resource: z.lazy(() => CurrentReleaseProfileStateGcpResource$outboundSchema) + .optional(), + stack: z.lazy(() => + SyncReconcileRequestCurrentReleaseProfileGcpStack$outboundSchema + ).optional(), + }); + +export function syncReconcileRequestCurrentReleaseProfileGcpBindingToJSON( + syncReconcileRequestCurrentReleaseProfileGcpBinding: + SyncReconcileRequestCurrentReleaseProfileGcpBinding, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseProfileGcpBinding$outboundSchema.parse( + syncReconcileRequestCurrentReleaseProfileGcpBinding, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseProfileGcpGrant$Outbound = { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseProfileGcpGrant$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseProfileGcpGrant$Outbound, + SyncReconcileRequestCurrentReleaseProfileGcpGrant + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileRequestCurrentReleaseProfileGcpGrantToJSON( + syncReconcileRequestCurrentReleaseProfileGcpGrant: + SyncReconcileRequestCurrentReleaseProfileGcpGrant, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseProfileGcpGrant$outboundSchema.parse( + syncReconcileRequestCurrentReleaseProfileGcpGrant, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseProfileGcp$Outbound = { + binding: SyncReconcileRequestCurrentReleaseProfileGcpBinding$Outbound; + description?: string | null | undefined; + grant: SyncReconcileRequestCurrentReleaseProfileGcpGrant$Outbound; + label?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseProfileGcp$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseProfileGcp$Outbound, + SyncReconcileRequestCurrentReleaseProfileGcp + > = z.object({ + binding: z.lazy(() => + SyncReconcileRequestCurrentReleaseProfileGcpBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileRequestCurrentReleaseProfileGcpGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileRequestCurrentReleaseProfileGcpToJSON( + syncReconcileRequestCurrentReleaseProfileGcp: + SyncReconcileRequestCurrentReleaseProfileGcp, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseProfileGcp$outboundSchema.parse( + syncReconcileRequestCurrentReleaseProfileGcp, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseProfilePlatforms$Outbound = { + aws?: + | Array + | null + | undefined; + azure?: + | Array + | null + | undefined; + gcp?: + | Array + | null + | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseProfilePlatforms$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseProfilePlatforms$Outbound, + SyncReconcileRequestCurrentReleaseProfilePlatforms + > = z.object({ + aws: z.nullable( + z.array(z.lazy(() => + SyncReconcileRequestCurrentReleaseProfileAw$outboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + SyncReconcileRequestCurrentReleaseProfileAzure$outboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + SyncReconcileRequestCurrentReleaseProfileGcp$outboundSchema + )), + ).optional(), + }); + +export function syncReconcileRequestCurrentReleaseProfilePlatformsToJSON( + syncReconcileRequestCurrentReleaseProfilePlatforms: + SyncReconcileRequestCurrentReleaseProfilePlatforms, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseProfilePlatforms$outboundSchema.parse( + syncReconcileRequestCurrentReleaseProfilePlatforms, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseProfile$Outbound = { + description: string; + id: string; + platforms: SyncReconcileRequestCurrentReleaseProfilePlatforms$Outbound; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseProfile$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseProfile$Outbound, + SyncReconcileRequestCurrentReleaseProfile + > = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncReconcileRequestCurrentReleaseProfilePlatforms$outboundSchema + ), + }); + +export function syncReconcileRequestCurrentReleaseProfileToJSON( + syncReconcileRequestCurrentReleaseProfile: + SyncReconcileRequestCurrentReleaseProfile, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseProfile$outboundSchema.parse( + syncReconcileRequestCurrentReleaseProfile, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseProfileUnion$Outbound = + | SyncReconcileRequestCurrentReleaseProfile$Outbound + | string; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseProfileUnion$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseProfileUnion$Outbound, + SyncReconcileRequestCurrentReleaseProfileUnion + > = z.union([ + z.lazy(() => SyncReconcileRequestCurrentReleaseProfile$outboundSchema), + z.string(), + ]); + +export function syncReconcileRequestCurrentReleaseProfileUnionToJSON( + syncReconcileRequestCurrentReleaseProfileUnion: + SyncReconcileRequestCurrentReleaseProfileUnion, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseProfileUnion$outboundSchema.parse( + syncReconcileRequestCurrentReleaseProfileUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleasePermissions$Outbound = { + management?: + | SyncReconcileRequestCurrentReleaseManagement1$Outbound + | SyncReconcileRequestCurrentReleaseManagement2$Outbound + | string + | undefined; + profiles: { + [k: string]: { + [k: string]: Array< + SyncReconcileRequestCurrentReleaseProfile$Outbound | string + >; + }; + }; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleasePermissions$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleasePermissions$Outbound, + SyncReconcileRequestCurrentReleasePermissions + > = z.object({ + management: z.union([ + z.lazy(() => + SyncReconcileRequestCurrentReleaseManagement1$outboundSchema + ), + z.lazy(() => + SyncReconcileRequestCurrentReleaseManagement2$outboundSchema + ), + SyncReconcileRequestCurrentReleaseManagementEnum$outboundSchema, + ]).optional(), + profiles: z.record( + z.string(), + z.record( + z.string(), + z.array( + z.union([ + z.lazy(() => + SyncReconcileRequestCurrentReleaseProfile$outboundSchema + ), + z.string(), + ]), + ), + ), + ), + }); + +export function syncReconcileRequestCurrentReleasePermissionsToJSON( + syncReconcileRequestCurrentReleasePermissions: + SyncReconcileRequestCurrentReleasePermissions, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleasePermissions$outboundSchema.parse( + syncReconcileRequestCurrentReleasePermissions, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseConfig$Outbound = { + id: string; + type: string; + [additionalProperties: string]: unknown; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseConfig$outboundSchema: z.ZodType< + SyncReconcileRequestCurrentReleaseConfig$Outbound, + SyncReconcileRequestCurrentReleaseConfig +> = z.object({ + id: z.string(), + type: z.string(), + additionalProperties: z.record(z.string(), z.nullable(z.any())).optional(), +}).transform((v) => { + return { + ...v.additionalProperties, + ...remap$(v, { + additionalProperties: null, + }), + }; +}); + +export function syncReconcileRequestCurrentReleaseConfigToJSON( + syncReconcileRequestCurrentReleaseConfig: + SyncReconcileRequestCurrentReleaseConfig, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseConfig$outboundSchema.parse( + syncReconcileRequestCurrentReleaseConfig, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseDependency$Outbound = { + id: string; + type: string; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseDependency$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseDependency$Outbound, + SyncReconcileRequestCurrentReleaseDependency + > = z.object({ + id: z.string(), + type: z.string(), + }); + +export function syncReconcileRequestCurrentReleaseDependencyToJSON( + syncReconcileRequestCurrentReleaseDependency: + SyncReconcileRequestCurrentReleaseDependency, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseDependency$outboundSchema.parse( + syncReconcileRequestCurrentReleaseDependency, + ), + ); +} + +/** @internal */ +export const CurrentReleaseStateLifecycle$outboundSchema: z.ZodEnum< + typeof CurrentReleaseStateLifecycle +> = z.enum(CurrentReleaseStateLifecycle); + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseResources$Outbound = { + config: SyncReconcileRequestCurrentReleaseConfig$Outbound; + dependencies: Array; + enabledWhen?: string | null | undefined; + lifecycle: string; + remoteAccess?: boolean | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseResources$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseResources$Outbound, + SyncReconcileRequestCurrentReleaseResources + > = z.object({ + config: z.lazy(() => + SyncReconcileRequestCurrentReleaseConfig$outboundSchema + ), + dependencies: z.array( + z.lazy(() => SyncReconcileRequestCurrentReleaseDependency$outboundSchema), + ), + enabledWhen: z.nullable(z.string()).optional(), + lifecycle: CurrentReleaseStateLifecycle$outboundSchema, + remoteAccess: z.boolean().optional(), + }); + +export function syncReconcileRequestCurrentReleaseResourcesToJSON( + syncReconcileRequestCurrentReleaseResources: + SyncReconcileRequestCurrentReleaseResources, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseResources$outboundSchema.parse( + syncReconcileRequestCurrentReleaseResources, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseSupportedPlatform$outboundSchema: + z.ZodEnum = z + .enum(SyncReconcileRequestCurrentReleaseSupportedPlatform); + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseStack$Outbound = { + id: string; + inputs?: Array | undefined; + permissions?: + | SyncReconcileRequestCurrentReleasePermissions$Outbound + | undefined; + resources: { + [k: string]: SyncReconcileRequestCurrentReleaseResources$Outbound; + }; + supportedPlatforms?: Array | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseStack$outboundSchema: z.ZodType< + SyncReconcileRequestCurrentReleaseStack$Outbound, + SyncReconcileRequestCurrentReleaseStack +> = z.object({ + id: z.string(), + inputs: z.array( + z.lazy(() => SyncReconcileRequestCurrentReleaseInput$outboundSchema), + ).optional(), + permissions: z.lazy(() => + SyncReconcileRequestCurrentReleasePermissions$outboundSchema + ).optional(), + resources: z.record( + z.string(), + z.lazy(() => SyncReconcileRequestCurrentReleaseResources$outboundSchema), + ), + supportedPlatforms: z.nullable( + z.array(SyncReconcileRequestCurrentReleaseSupportedPlatform$outboundSchema), + ).optional(), +}); + +export function syncReconcileRequestCurrentReleaseStackToJSON( + syncReconcileRequestCurrentReleaseStack: + SyncReconcileRequestCurrentReleaseStack, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseStack$outboundSchema.parse( + syncReconcileRequestCurrentReleaseStack, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentRelease$Outbound = { + description?: string | null | undefined; + releaseId?: string | null | undefined; + stack: SyncReconcileRequestCurrentReleaseStack$Outbound; + version?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentRelease$outboundSchema: z.ZodType< + SyncReconcileRequestCurrentRelease$Outbound, + SyncReconcileRequestCurrentRelease +> = z.object({ + description: z.nullable(z.string()).optional(), + releaseId: z.nullable(z.string()).optional(), + stack: z.lazy(() => SyncReconcileRequestCurrentReleaseStack$outboundSchema), + version: z.nullable(z.string()).optional(), +}); + +export function syncReconcileRequestCurrentReleaseToJSON( + syncReconcileRequestCurrentRelease: SyncReconcileRequestCurrentRelease, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentRelease$outboundSchema.parse( + syncReconcileRequestCurrentRelease, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseUnion$Outbound = + | SyncReconcileRequestCurrentRelease$Outbound + | any; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseUnion$outboundSchema: z.ZodType< + SyncReconcileRequestCurrentReleaseUnion$Outbound, + SyncReconcileRequestCurrentReleaseUnion +> = z.union([ + z.lazy(() => SyncReconcileRequestCurrentRelease$outboundSchema), + z.any(), +]); + +export function syncReconcileRequestCurrentReleaseUnionToJSON( + syncReconcileRequestCurrentReleaseUnion: + SyncReconcileRequestCurrentReleaseUnion, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseUnion$outboundSchema.parse( + syncReconcileRequestCurrentReleaseUnion, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestPlatformTest$outboundSchema: z.ZodEnum< + typeof SyncReconcileRequestPlatformTest +> = z.enum(SyncReconcileRequestPlatformTest); + +/** @internal */ +export type SyncReconcileRequestEnvironmentInfoTest$Outbound = { + testId: string; + platform: string; +}; + +/** @internal */ +export const SyncReconcileRequestEnvironmentInfoTest$outboundSchema: z.ZodType< + SyncReconcileRequestEnvironmentInfoTest$Outbound, + SyncReconcileRequestEnvironmentInfoTest +> = z.object({ + testId: z.string(), + platform: SyncReconcileRequestPlatformTest$outboundSchema, +}); + +export function syncReconcileRequestEnvironmentInfoTestToJSON( + syncReconcileRequestEnvironmentInfoTest: + SyncReconcileRequestEnvironmentInfoTest, +): string { + return JSON.stringify( + SyncReconcileRequestEnvironmentInfoTest$outboundSchema.parse( + syncReconcileRequestEnvironmentInfoTest, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestPlatformLocal$outboundSchema: z.ZodEnum< + typeof SyncReconcileRequestPlatformLocal +> = z.enum(SyncReconcileRequestPlatformLocal); + +/** @internal */ +export type SyncReconcileRequestEnvironmentInfoLocal$Outbound = { + arch: string; + hostname: string; + os: string; + platform: string; +}; + +/** @internal */ +export const SyncReconcileRequestEnvironmentInfoLocal$outboundSchema: z.ZodType< + SyncReconcileRequestEnvironmentInfoLocal$Outbound, + SyncReconcileRequestEnvironmentInfoLocal +> = z.object({ + arch: z.string(), + hostname: z.string(), + os: z.string(), + platform: SyncReconcileRequestPlatformLocal$outboundSchema, +}); + +export function syncReconcileRequestEnvironmentInfoLocalToJSON( + syncReconcileRequestEnvironmentInfoLocal: + SyncReconcileRequestEnvironmentInfoLocal, +): string { + return JSON.stringify( + SyncReconcileRequestEnvironmentInfoLocal$outboundSchema.parse( + syncReconcileRequestEnvironmentInfoLocal, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestPlatformAzure$outboundSchema: z.ZodEnum< + typeof SyncReconcileRequestPlatformAzure +> = z.enum(SyncReconcileRequestPlatformAzure); + +/** @internal */ +export type SyncReconcileRequestEnvironmentInfoAzure$Outbound = { + location: string; + subscriptionId: string; + tenantId: string; + platform: string; +}; + +/** @internal */ +export const SyncReconcileRequestEnvironmentInfoAzure$outboundSchema: z.ZodType< + SyncReconcileRequestEnvironmentInfoAzure$Outbound, + SyncReconcileRequestEnvironmentInfoAzure +> = z.object({ + location: z.string(), + subscriptionId: z.string(), + tenantId: z.string(), + platform: SyncReconcileRequestPlatformAzure$outboundSchema, +}); + +export function syncReconcileRequestEnvironmentInfoAzureToJSON( + syncReconcileRequestEnvironmentInfoAzure: + SyncReconcileRequestEnvironmentInfoAzure, +): string { + return JSON.stringify( + SyncReconcileRequestEnvironmentInfoAzure$outboundSchema.parse( + syncReconcileRequestEnvironmentInfoAzure, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestPlatformGcp$outboundSchema: z.ZodEnum< + typeof SyncReconcileRequestPlatformGcp +> = z.enum(SyncReconcileRequestPlatformGcp); + +/** @internal */ +export type SyncReconcileRequestEnvironmentInfoGcp$Outbound = { + projectId: string; + projectNumber: string; + region: string; + platform: string; +}; + +/** @internal */ +export const SyncReconcileRequestEnvironmentInfoGcp$outboundSchema: z.ZodType< + SyncReconcileRequestEnvironmentInfoGcp$Outbound, + SyncReconcileRequestEnvironmentInfoGcp +> = z.object({ + projectId: z.string(), + projectNumber: z.string(), + region: z.string(), + platform: SyncReconcileRequestPlatformGcp$outboundSchema, +}); + +export function syncReconcileRequestEnvironmentInfoGcpToJSON( + syncReconcileRequestEnvironmentInfoGcp: + SyncReconcileRequestEnvironmentInfoGcp, +): string { + return JSON.stringify( + SyncReconcileRequestEnvironmentInfoGcp$outboundSchema.parse( + syncReconcileRequestEnvironmentInfoGcp, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestPlatformAws$outboundSchema: z.ZodEnum< + typeof SyncReconcileRequestPlatformAws +> = z.enum(SyncReconcileRequestPlatformAws); + +/** @internal */ +export type SyncReconcileRequestEnvironmentInfoAws$Outbound = { + accountId: string; + region: string; + platform: string; +}; + +/** @internal */ +export const SyncReconcileRequestEnvironmentInfoAws$outboundSchema: z.ZodType< + SyncReconcileRequestEnvironmentInfoAws$Outbound, + SyncReconcileRequestEnvironmentInfoAws +> = z.object({ + accountId: z.string(), + region: z.string(), + platform: SyncReconcileRequestPlatformAws$outboundSchema, +}); + +export function syncReconcileRequestEnvironmentInfoAwsToJSON( + syncReconcileRequestEnvironmentInfoAws: + SyncReconcileRequestEnvironmentInfoAws, +): string { + return JSON.stringify( + SyncReconcileRequestEnvironmentInfoAws$outboundSchema.parse( + syncReconcileRequestEnvironmentInfoAws, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestEnvironmentInfoUnion$Outbound = + | SyncReconcileRequestEnvironmentInfoGcp$Outbound + | SyncReconcileRequestEnvironmentInfoAzure$Outbound + | SyncReconcileRequestEnvironmentInfoLocal$Outbound + | SyncReconcileRequestEnvironmentInfoAws$Outbound + | SyncReconcileRequestEnvironmentInfoTest$Outbound + | any; + +/** @internal */ +export const SyncReconcileRequestEnvironmentInfoUnion$outboundSchema: z.ZodType< + SyncReconcileRequestEnvironmentInfoUnion$Outbound, + SyncReconcileRequestEnvironmentInfoUnion +> = z.union([ + z.lazy(() => SyncReconcileRequestEnvironmentInfoGcp$outboundSchema), + z.lazy(() => SyncReconcileRequestEnvironmentInfoAzure$outboundSchema), + z.lazy(() => SyncReconcileRequestEnvironmentInfoLocal$outboundSchema), + z.lazy(() => SyncReconcileRequestEnvironmentInfoAws$outboundSchema), + z.lazy(() => SyncReconcileRequestEnvironmentInfoTest$outboundSchema), + z.any(), +]); + +export function syncReconcileRequestEnvironmentInfoUnionToJSON( + syncReconcileRequestEnvironmentInfoUnion: + SyncReconcileRequestEnvironmentInfoUnion, +): string { + return JSON.stringify( + SyncReconcileRequestEnvironmentInfoUnion$outboundSchema.parse( + syncReconcileRequestEnvironmentInfoUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestError$Outbound = { + code: string; + context?: any | null | undefined; + hint?: string | null | undefined; + httpStatusCode?: number | null | undefined; + internal: boolean; + message: string; + retryable: boolean; + source?: any | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestError$outboundSchema: z.ZodType< + SyncReconcileRequestError$Outbound, + SyncReconcileRequestError +> = z.object({ + code: z.string(), + context: z.nullable(z.any()).optional(), + hint: z.nullable(z.string()).optional(), + httpStatusCode: z.nullable(z.int()).optional(), + internal: z.boolean(), + message: z.string(), + retryable: z.boolean().default(false), + source: z.nullable(z.any()).optional(), +}); + +export function syncReconcileRequestErrorToJSON( + syncReconcileRequestError: SyncReconcileRequestError, +): string { + return JSON.stringify( + SyncReconcileRequestError$outboundSchema.parse(syncReconcileRequestError), + ); +} + +/** @internal */ +export type SyncReconcileRequestErrorUnion$Outbound = + | SyncReconcileRequestError$Outbound + | any; + +/** @internal */ +export const SyncReconcileRequestErrorUnion$outboundSchema: z.ZodType< + SyncReconcileRequestErrorUnion$Outbound, + SyncReconcileRequestErrorUnion +> = z.union([z.lazy(() => SyncReconcileRequestError$outboundSchema), z.any()]); + +export function syncReconcileRequestErrorUnionToJSON( + syncReconcileRequestErrorUnion: SyncReconcileRequestErrorUnion, +): string { + return JSON.stringify( + SyncReconcileRequestErrorUnion$outboundSchema.parse( + syncReconcileRequestErrorUnion, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestPlatform$outboundSchema: z.ZodEnum< + typeof SyncReconcileRequestPlatform +> = z.enum(SyncReconcileRequestPlatform); + +/** @internal */ +export const SyncReconcileRequestInitialSetupAuthority$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestInitialSetupAuthority, + ); + +/** @internal */ +export const SyncReconcileRequestPendingPreparedStackTypeStringList$outboundSchema: + z.ZodEnum = z + .enum(SyncReconcileRequestPendingPreparedStackTypeStringList); + +/** @internal */ +export type SyncReconcileRequestPendingPreparedStackDefaultStringList$Outbound = + { + type: string; + value: Array; + }; + +/** @internal */ +export const SyncReconcileRequestPendingPreparedStackDefaultStringList$outboundSchema: + z.ZodType< + SyncReconcileRequestPendingPreparedStackDefaultStringList$Outbound, + SyncReconcileRequestPendingPreparedStackDefaultStringList + > = z.object({ + type: SyncReconcileRequestPendingPreparedStackTypeStringList$outboundSchema, + value: z.array(z.string()), + }); + +export function syncReconcileRequestPendingPreparedStackDefaultStringListToJSON( + syncReconcileRequestPendingPreparedStackDefaultStringList: + SyncReconcileRequestPendingPreparedStackDefaultStringList, +): string { + return JSON.stringify( + SyncReconcileRequestPendingPreparedStackDefaultStringList$outboundSchema + .parse(syncReconcileRequestPendingPreparedStackDefaultStringList), + ); +} + +/** @internal */ +export const SyncReconcileRequestPendingPreparedStackTypeBoolean$outboundSchema: + z.ZodEnum = z + .enum(SyncReconcileRequestPendingPreparedStackTypeBoolean); + +/** @internal */ +export type SyncReconcileRequestPendingPreparedStackDefaultBoolean$Outbound = { + type: string; + value: boolean; +}; + +/** @internal */ +export const SyncReconcileRequestPendingPreparedStackDefaultBoolean$outboundSchema: + z.ZodType< + SyncReconcileRequestPendingPreparedStackDefaultBoolean$Outbound, + SyncReconcileRequestPendingPreparedStackDefaultBoolean + > = z.object({ + type: SyncReconcileRequestPendingPreparedStackTypeBoolean$outboundSchema, + value: z.boolean(), + }); + +export function syncReconcileRequestPendingPreparedStackDefaultBooleanToJSON( + syncReconcileRequestPendingPreparedStackDefaultBoolean: + SyncReconcileRequestPendingPreparedStackDefaultBoolean, +): string { + return JSON.stringify( + SyncReconcileRequestPendingPreparedStackDefaultBoolean$outboundSchema.parse( + syncReconcileRequestPendingPreparedStackDefaultBoolean, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestPendingPreparedStackTypeNumber$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestPendingPreparedStackTypeNumber, + ); + +/** @internal */ +export type SyncReconcileRequestPendingPreparedStackDefaultNumber$Outbound = { + type: string; + value: string; +}; + +/** @internal */ +export const SyncReconcileRequestPendingPreparedStackDefaultNumber$outboundSchema: + z.ZodType< + SyncReconcileRequestPendingPreparedStackDefaultNumber$Outbound, + SyncReconcileRequestPendingPreparedStackDefaultNumber + > = z.object({ + type: SyncReconcileRequestPendingPreparedStackTypeNumber$outboundSchema, + value: z.string(), + }); + +export function syncReconcileRequestPendingPreparedStackDefaultNumberToJSON( + syncReconcileRequestPendingPreparedStackDefaultNumber: + SyncReconcileRequestPendingPreparedStackDefaultNumber, +): string { + return JSON.stringify( + SyncReconcileRequestPendingPreparedStackDefaultNumber$outboundSchema.parse( + syncReconcileRequestPendingPreparedStackDefaultNumber, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestPendingPreparedStackTypeString$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestPendingPreparedStackTypeString, + ); + +/** @internal */ +export type SyncReconcileRequestPendingPreparedStackDefaultString$Outbound = { + type: string; + value: string; +}; + +/** @internal */ +export const SyncReconcileRequestPendingPreparedStackDefaultString$outboundSchema: + z.ZodType< + SyncReconcileRequestPendingPreparedStackDefaultString$Outbound, + SyncReconcileRequestPendingPreparedStackDefaultString + > = z.object({ + type: SyncReconcileRequestPendingPreparedStackTypeString$outboundSchema, + value: z.string(), + }); + +export function syncReconcileRequestPendingPreparedStackDefaultStringToJSON( + syncReconcileRequestPendingPreparedStackDefaultString: + SyncReconcileRequestPendingPreparedStackDefaultString, +): string { + return JSON.stringify( + SyncReconcileRequestPendingPreparedStackDefaultString$outboundSchema.parse( + syncReconcileRequestPendingPreparedStackDefaultString, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPendingPreparedStackDefaultUnion$Outbound = + | SyncReconcileRequestPendingPreparedStackDefaultString$Outbound + | SyncReconcileRequestPendingPreparedStackDefaultNumber$Outbound + | SyncReconcileRequestPendingPreparedStackDefaultBoolean$Outbound + | SyncReconcileRequestPendingPreparedStackDefaultStringList$Outbound + | any; + +/** @internal */ +export const SyncReconcileRequestPendingPreparedStackDefaultUnion$outboundSchema: + z.ZodType< + SyncReconcileRequestPendingPreparedStackDefaultUnion$Outbound, + SyncReconcileRequestPendingPreparedStackDefaultUnion + > = z.union([ + z.lazy(() => + SyncReconcileRequestPendingPreparedStackDefaultString$outboundSchema + ), + z.lazy(() => + SyncReconcileRequestPendingPreparedStackDefaultNumber$outboundSchema + ), + z.lazy(() => + SyncReconcileRequestPendingPreparedStackDefaultBoolean$outboundSchema + ), + z.lazy(() => + SyncReconcileRequestPendingPreparedStackDefaultStringList$outboundSchema + ), + z.any(), + ]); + +export function syncReconcileRequestPendingPreparedStackDefaultUnionToJSON( + syncReconcileRequestPendingPreparedStackDefaultUnion: + SyncReconcileRequestPendingPreparedStackDefaultUnion, +): string { + return JSON.stringify( + SyncReconcileRequestPendingPreparedStackDefaultUnion$outboundSchema.parse( + syncReconcileRequestPendingPreparedStackDefaultUnion, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestPendingPreparedStackTypeEnvEnum$outboundSchema: + z.ZodEnum = z + .enum(SyncReconcileRequestPendingPreparedStackTypeEnvEnum); + +/** @internal */ +export type SyncReconcileRequestPendingPreparedStackTypeUnion$Outbound = + | string + | any; + +/** @internal */ +export const SyncReconcileRequestPendingPreparedStackTypeUnion$outboundSchema: + z.ZodType< + SyncReconcileRequestPendingPreparedStackTypeUnion$Outbound, + SyncReconcileRequestPendingPreparedStackTypeUnion + > = z.union([ + SyncReconcileRequestPendingPreparedStackTypeEnvEnum$outboundSchema, + z.any(), + ]); + +export function syncReconcileRequestPendingPreparedStackTypeUnionToJSON( + syncReconcileRequestPendingPreparedStackTypeUnion: + SyncReconcileRequestPendingPreparedStackTypeUnion, +): string { + return JSON.stringify( + SyncReconcileRequestPendingPreparedStackTypeUnion$outboundSchema.parse( + syncReconcileRequestPendingPreparedStackTypeUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPendingPreparedStackEnv$Outbound = { + name: string; + targetResources?: Array | null | undefined; + type?: string | any | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestPendingPreparedStackEnv$outboundSchema: + z.ZodType< + SyncReconcileRequestPendingPreparedStackEnv$Outbound, + SyncReconcileRequestPendingPreparedStackEnv + > = z.object({ + name: z.string(), + targetResources: z.nullable(z.array(z.string())).optional(), + type: z.nullable( + z.union([ + SyncReconcileRequestPendingPreparedStackTypeEnvEnum$outboundSchema, + z.any(), + ]), + ).optional(), + }); + +export function syncReconcileRequestPendingPreparedStackEnvToJSON( + syncReconcileRequestPendingPreparedStackEnv: + SyncReconcileRequestPendingPreparedStackEnv, +): string { + return JSON.stringify( + SyncReconcileRequestPendingPreparedStackEnv$outboundSchema.parse( + syncReconcileRequestPendingPreparedStackEnv, + ), + ); +} + +/** @internal */ +export const PendingPreparedStackStateKind$outboundSchema: z.ZodEnum< + typeof PendingPreparedStackStateKind +> = z.enum(PendingPreparedStackStateKind); + +/** @internal */ +export const SyncReconcileRequestPendingPreparedStackPlatform$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestPendingPreparedStackPlatform, + ); + +/** @internal */ +export const SyncReconcileRequestPendingPreparedStackProvidedBy$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestPendingPreparedStackProvidedBy, + ); + +/** @internal */ +export type SyncReconcileRequestPendingPreparedStackValidation$Outbound = { + format?: string | null | undefined; + max?: string | null | undefined; + maxItems?: number | null | undefined; + maxLength?: number | null | undefined; + min?: string | null | undefined; + minItems?: number | null | undefined; + minLength?: number | null | undefined; + pattern?: string | null | undefined; + values?: Array | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestPendingPreparedStackValidation$outboundSchema: + z.ZodType< + SyncReconcileRequestPendingPreparedStackValidation$Outbound, + SyncReconcileRequestPendingPreparedStackValidation + > = z.object({ + format: z.nullable(z.string()).optional(), + max: z.nullable(z.string()).optional(), + maxItems: z.nullable(z.int()).optional(), + maxLength: z.nullable(z.int()).optional(), + min: z.nullable(z.string()).optional(), + minItems: z.nullable(z.int()).optional(), + minLength: z.nullable(z.int()).optional(), + pattern: z.nullable(z.string()).optional(), + values: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileRequestPendingPreparedStackValidationToJSON( + syncReconcileRequestPendingPreparedStackValidation: + SyncReconcileRequestPendingPreparedStackValidation, +): string { + return JSON.stringify( + SyncReconcileRequestPendingPreparedStackValidation$outboundSchema.parse( + syncReconcileRequestPendingPreparedStackValidation, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPendingPreparedStackValidationUnion$Outbound = + | SyncReconcileRequestPendingPreparedStackValidation$Outbound + | any; + +/** @internal */ +export const SyncReconcileRequestPendingPreparedStackValidationUnion$outboundSchema: + z.ZodType< + SyncReconcileRequestPendingPreparedStackValidationUnion$Outbound, + SyncReconcileRequestPendingPreparedStackValidationUnion + > = z.union([ + z.lazy(() => + SyncReconcileRequestPendingPreparedStackValidation$outboundSchema + ), + z.any(), + ]); + +export function syncReconcileRequestPendingPreparedStackValidationUnionToJSON( + syncReconcileRequestPendingPreparedStackValidationUnion: + SyncReconcileRequestPendingPreparedStackValidationUnion, +): string { + return JSON.stringify( + SyncReconcileRequestPendingPreparedStackValidationUnion$outboundSchema + .parse(syncReconcileRequestPendingPreparedStackValidationUnion), + ); +} + +/** @internal */ +export type SyncReconcileRequestPendingPreparedStackInput$Outbound = { + default?: + | SyncReconcileRequestPendingPreparedStackDefaultString$Outbound + | SyncReconcileRequestPendingPreparedStackDefaultNumber$Outbound + | SyncReconcileRequestPendingPreparedStackDefaultBoolean$Outbound + | SyncReconcileRequestPendingPreparedStackDefaultStringList$Outbound + | any + | null + | undefined; + description: string; + env?: Array | undefined; + id: string; + kind: string; + label: string; + placeholder?: string | null | undefined; + platforms?: Array | null | undefined; + providedBy: Array; + required: boolean; + validation?: + | SyncReconcileRequestPendingPreparedStackValidation$Outbound + | any + | null + | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestPendingPreparedStackInput$outboundSchema: + z.ZodType< + SyncReconcileRequestPendingPreparedStackInput$Outbound, + SyncReconcileRequestPendingPreparedStackInput + > = z.object({ + default: z.nullable( + z.union([ + z.lazy(() => + SyncReconcileRequestPendingPreparedStackDefaultString$outboundSchema + ), + z.lazy(() => + SyncReconcileRequestPendingPreparedStackDefaultNumber$outboundSchema + ), + z.lazy(() => + SyncReconcileRequestPendingPreparedStackDefaultBoolean$outboundSchema + ), + z.lazy(() => + SyncReconcileRequestPendingPreparedStackDefaultStringList$outboundSchema + ), + z.any(), + ]), + ).optional(), + description: z.string(), + env: z.array( + z.lazy(() => SyncReconcileRequestPendingPreparedStackEnv$outboundSchema), + ).optional(), + id: z.string(), + kind: PendingPreparedStackStateKind$outboundSchema, + label: z.string(), + placeholder: z.nullable(z.string()).optional(), + platforms: z.nullable( + z.array(SyncReconcileRequestPendingPreparedStackPlatform$outboundSchema), + ).optional(), + providedBy: z.array( + SyncReconcileRequestPendingPreparedStackProvidedBy$outboundSchema, + ), + required: z.boolean(), + validation: z.nullable( + z.union([ + z.lazy(() => + SyncReconcileRequestPendingPreparedStackValidation$outboundSchema + ), + z.any(), + ]), + ).optional(), + }); + +export function syncReconcileRequestPendingPreparedStackInputToJSON( + syncReconcileRequestPendingPreparedStackInput: + SyncReconcileRequestPendingPreparedStackInput, +): string { + return JSON.stringify( + SyncReconcileRequestPendingPreparedStackInput$outboundSchema.parse( + syncReconcileRequestPendingPreparedStackInput, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestPendingPreparedStackManagementEnum$outboundSchema: + z.ZodEnum = z + .enum(SyncReconcileRequestPendingPreparedStackManagementEnum); + +/** @internal */ +export type PendingPreparedStackOverrideStateAwResource$Outbound = { + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + resources: Array; }; /** @internal */ -export const SyncReconcileRequestCurrentReleaseTypeStringList$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestCurrentReleaseTypeStringList, +export const PendingPreparedStackOverrideStateAwResource$outboundSchema: + z.ZodType< + PendingPreparedStackOverrideStateAwResource$Outbound, + PendingPreparedStackOverrideStateAwResource + > = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function pendingPreparedStackOverrideStateAwResourceToJSON( + pendingPreparedStackOverrideStateAwResource: + PendingPreparedStackOverrideStateAwResource, +): string { + return JSON.stringify( + PendingPreparedStackOverrideStateAwResource$outboundSchema.parse( + pendingPreparedStackOverrideStateAwResource, + ), ); +} /** @internal */ -export type SyncReconcileRequestCurrentReleaseDefaultStringList$Outbound = { - type: string; - value: Array; +export type SyncReconcileRequestPendingPreparedStackOverrideAwStack$Outbound = { + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + resources: Array; }; /** @internal */ -export const SyncReconcileRequestCurrentReleaseDefaultStringList$outboundSchema: +export const SyncReconcileRequestPendingPreparedStackOverrideAwStack$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseDefaultStringList$Outbound, - SyncReconcileRequestCurrentReleaseDefaultStringList + SyncReconcileRequestPendingPreparedStackOverrideAwStack$Outbound, + SyncReconcileRequestPendingPreparedStackOverrideAwStack > = z.object({ - type: SyncReconcileRequestCurrentReleaseTypeStringList$outboundSchema, - value: z.array(z.string()), + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), }); -export function syncReconcileRequestCurrentReleaseDefaultStringListToJSON( - syncReconcileRequestCurrentReleaseDefaultStringList: - SyncReconcileRequestCurrentReleaseDefaultStringList, +export function syncReconcileRequestPendingPreparedStackOverrideAwStackToJSON( + syncReconcileRequestPendingPreparedStackOverrideAwStack: + SyncReconcileRequestPendingPreparedStackOverrideAwStack, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseDefaultStringList$outboundSchema.parse( - syncReconcileRequestCurrentReleaseDefaultStringList, - ), + SyncReconcileRequestPendingPreparedStackOverrideAwStack$outboundSchema + .parse(syncReconcileRequestPendingPreparedStackOverrideAwStack), ); } /** @internal */ -export const SyncReconcileRequestCurrentReleaseTypeBoolean$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestCurrentReleaseTypeBoolean, +export type SyncReconcileRequestPendingPreparedStackOverrideAwBinding$Outbound = + { + resource?: PendingPreparedStackOverrideStateAwResource$Outbound | undefined; + stack?: + | SyncReconcileRequestPendingPreparedStackOverrideAwStack$Outbound + | undefined; + }; + +/** @internal */ +export const SyncReconcileRequestPendingPreparedStackOverrideAwBinding$outboundSchema: + z.ZodType< + SyncReconcileRequestPendingPreparedStackOverrideAwBinding$Outbound, + SyncReconcileRequestPendingPreparedStackOverrideAwBinding + > = z.object({ + resource: z.lazy(() => + PendingPreparedStackOverrideStateAwResource$outboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileRequestPendingPreparedStackOverrideAwStack$outboundSchema + ).optional(), + }); + +export function syncReconcileRequestPendingPreparedStackOverrideAwBindingToJSON( + syncReconcileRequestPendingPreparedStackOverrideAwBinding: + SyncReconcileRequestPendingPreparedStackOverrideAwBinding, +): string { + return JSON.stringify( + SyncReconcileRequestPendingPreparedStackOverrideAwBinding$outboundSchema + .parse(syncReconcileRequestPendingPreparedStackOverrideAwBinding), ); +} /** @internal */ -export type SyncReconcileRequestCurrentReleaseDefaultBoolean$Outbound = { - type: string; - value: boolean; +export const SyncReconcileRequestPendingPreparedStackOverrideEffect$outboundSchema: + z.ZodEnum = z + .enum(SyncReconcileRequestPendingPreparedStackOverrideEffect); + +/** @internal */ +export type SyncReconcileRequestPendingPreparedStackOverrideAwGrant$Outbound = { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; }; /** @internal */ -export const SyncReconcileRequestCurrentReleaseDefaultBoolean$outboundSchema: +export const SyncReconcileRequestPendingPreparedStackOverrideAwGrant$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseDefaultBoolean$Outbound, - SyncReconcileRequestCurrentReleaseDefaultBoolean + SyncReconcileRequestPendingPreparedStackOverrideAwGrant$Outbound, + SyncReconcileRequestPendingPreparedStackOverrideAwGrant > = z.object({ - type: SyncReconcileRequestCurrentReleaseTypeBoolean$outboundSchema, - value: z.boolean(), + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function syncReconcileRequestCurrentReleaseDefaultBooleanToJSON( - syncReconcileRequestCurrentReleaseDefaultBoolean: - SyncReconcileRequestCurrentReleaseDefaultBoolean, +export function syncReconcileRequestPendingPreparedStackOverrideAwGrantToJSON( + syncReconcileRequestPendingPreparedStackOverrideAwGrant: + SyncReconcileRequestPendingPreparedStackOverrideAwGrant, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseDefaultBoolean$outboundSchema.parse( - syncReconcileRequestCurrentReleaseDefaultBoolean, - ), + SyncReconcileRequestPendingPreparedStackOverrideAwGrant$outboundSchema + .parse(syncReconcileRequestPendingPreparedStackOverrideAwGrant), ); } /** @internal */ -export const SyncReconcileRequestCurrentReleaseTypeNumber$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestCurrentReleaseTypeNumber, +export type SyncReconcileRequestPendingPreparedStackOverrideAw$Outbound = { + binding: SyncReconcileRequestPendingPreparedStackOverrideAwBinding$Outbound; + description?: string | null | undefined; + effect?: string | undefined; + grant: SyncReconcileRequestPendingPreparedStackOverrideAwGrant$Outbound; + label?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestPendingPreparedStackOverrideAw$outboundSchema: + z.ZodType< + SyncReconcileRequestPendingPreparedStackOverrideAw$Outbound, + SyncReconcileRequestPendingPreparedStackOverrideAw + > = z.object({ + binding: z.lazy(() => + SyncReconcileRequestPendingPreparedStackOverrideAwBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: + SyncReconcileRequestPendingPreparedStackOverrideEffect$outboundSchema + .optional(), + grant: z.lazy(() => + SyncReconcileRequestPendingPreparedStackOverrideAwGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileRequestPendingPreparedStackOverrideAwToJSON( + syncReconcileRequestPendingPreparedStackOverrideAw: + SyncReconcileRequestPendingPreparedStackOverrideAw, +): string { + return JSON.stringify( + SyncReconcileRequestPendingPreparedStackOverrideAw$outboundSchema.parse( + syncReconcileRequestPendingPreparedStackOverrideAw, + ), ); +} /** @internal */ -export type SyncReconcileRequestCurrentReleaseDefaultNumber$Outbound = { - type: string; - value: string; +export type PendingPreparedStackOverrideStateAzureResource$Outbound = { + scope: string; }; /** @internal */ -export const SyncReconcileRequestCurrentReleaseDefaultNumber$outboundSchema: +export const PendingPreparedStackOverrideStateAzureResource$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseDefaultNumber$Outbound, - SyncReconcileRequestCurrentReleaseDefaultNumber + PendingPreparedStackOverrideStateAzureResource$Outbound, + PendingPreparedStackOverrideStateAzureResource > = z.object({ - type: SyncReconcileRequestCurrentReleaseTypeNumber$outboundSchema, - value: z.string(), + scope: z.string(), }); -export function syncReconcileRequestCurrentReleaseDefaultNumberToJSON( - syncReconcileRequestCurrentReleaseDefaultNumber: - SyncReconcileRequestCurrentReleaseDefaultNumber, +export function pendingPreparedStackOverrideStateAzureResourceToJSON( + pendingPreparedStackOverrideStateAzureResource: + PendingPreparedStackOverrideStateAzureResource, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseDefaultNumber$outboundSchema.parse( - syncReconcileRequestCurrentReleaseDefaultNumber, + PendingPreparedStackOverrideStateAzureResource$outboundSchema.parse( + pendingPreparedStackOverrideStateAzureResource, ), ); } /** @internal */ -export const SyncReconcileRequestCurrentReleaseTypeString$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestCurrentReleaseTypeString, +export type SyncReconcileRequestPendingPreparedStackOverrideAzureStack$Outbound = + { + scope: string; + }; + +/** @internal */ +export const SyncReconcileRequestPendingPreparedStackOverrideAzureStack$outboundSchema: + z.ZodType< + SyncReconcileRequestPendingPreparedStackOverrideAzureStack$Outbound, + SyncReconcileRequestPendingPreparedStackOverrideAzureStack + > = z.object({ + scope: z.string(), + }); + +export function syncReconcileRequestPendingPreparedStackOverrideAzureStackToJSON( + syncReconcileRequestPendingPreparedStackOverrideAzureStack: + SyncReconcileRequestPendingPreparedStackOverrideAzureStack, +): string { + return JSON.stringify( + SyncReconcileRequestPendingPreparedStackOverrideAzureStack$outboundSchema + .parse(syncReconcileRequestPendingPreparedStackOverrideAzureStack), ); +} /** @internal */ -export type SyncReconcileRequestCurrentReleaseDefaultString$Outbound = { - type: string; - value: string; +export type SyncReconcileRequestPendingPreparedStackOverrideAzureBinding$Outbound = + { + resource?: + | PendingPreparedStackOverrideStateAzureResource$Outbound + | undefined; + stack?: + | SyncReconcileRequestPendingPreparedStackOverrideAzureStack$Outbound + | undefined; + }; + +/** @internal */ +export const SyncReconcileRequestPendingPreparedStackOverrideAzureBinding$outboundSchema: + z.ZodType< + SyncReconcileRequestPendingPreparedStackOverrideAzureBinding$Outbound, + SyncReconcileRequestPendingPreparedStackOverrideAzureBinding + > = z.object({ + resource: z.lazy(() => + PendingPreparedStackOverrideStateAzureResource$outboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileRequestPendingPreparedStackOverrideAzureStack$outboundSchema + ).optional(), + }); + +export function syncReconcileRequestPendingPreparedStackOverrideAzureBindingToJSON( + syncReconcileRequestPendingPreparedStackOverrideAzureBinding: + SyncReconcileRequestPendingPreparedStackOverrideAzureBinding, +): string { + return JSON.stringify( + SyncReconcileRequestPendingPreparedStackOverrideAzureBinding$outboundSchema + .parse(syncReconcileRequestPendingPreparedStackOverrideAzureBinding), + ); +} + +/** @internal */ +export type SyncReconcileRequestPendingPreparedStackOverrideAzureGrant$Outbound = + { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; + }; + +/** @internal */ +export const SyncReconcileRequestPendingPreparedStackOverrideAzureGrant$outboundSchema: + z.ZodType< + SyncReconcileRequestPendingPreparedStackOverrideAzureGrant$Outbound, + SyncReconcileRequestPendingPreparedStackOverrideAzureGrant + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileRequestPendingPreparedStackOverrideAzureGrantToJSON( + syncReconcileRequestPendingPreparedStackOverrideAzureGrant: + SyncReconcileRequestPendingPreparedStackOverrideAzureGrant, +): string { + return JSON.stringify( + SyncReconcileRequestPendingPreparedStackOverrideAzureGrant$outboundSchema + .parse(syncReconcileRequestPendingPreparedStackOverrideAzureGrant), + ); +} + +/** @internal */ +export type SyncReconcileRequestPendingPreparedStackOverrideAzure$Outbound = { + binding: + SyncReconcileRequestPendingPreparedStackOverrideAzureBinding$Outbound; + description?: string | null | undefined; + grant: SyncReconcileRequestPendingPreparedStackOverrideAzureGrant$Outbound; + label?: string | null | undefined; }; /** @internal */ -export const SyncReconcileRequestCurrentReleaseDefaultString$outboundSchema: +export const SyncReconcileRequestPendingPreparedStackOverrideAzure$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseDefaultString$Outbound, - SyncReconcileRequestCurrentReleaseDefaultString + SyncReconcileRequestPendingPreparedStackOverrideAzure$Outbound, + SyncReconcileRequestPendingPreparedStackOverrideAzure > = z.object({ - type: SyncReconcileRequestCurrentReleaseTypeString$outboundSchema, - value: z.string(), + binding: z.lazy(() => + SyncReconcileRequestPendingPreparedStackOverrideAzureBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileRequestPendingPreparedStackOverrideAzureGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), }); -export function syncReconcileRequestCurrentReleaseDefaultStringToJSON( - syncReconcileRequestCurrentReleaseDefaultString: - SyncReconcileRequestCurrentReleaseDefaultString, +export function syncReconcileRequestPendingPreparedStackOverrideAzureToJSON( + syncReconcileRequestPendingPreparedStackOverrideAzure: + SyncReconcileRequestPendingPreparedStackOverrideAzure, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseDefaultString$outboundSchema.parse( - syncReconcileRequestCurrentReleaseDefaultString, + SyncReconcileRequestPendingPreparedStackOverrideAzure$outboundSchema.parse( + syncReconcileRequestPendingPreparedStackOverrideAzure, ), ); } /** @internal */ -export type SyncReconcileRequestCurrentReleaseDefaultUnion$Outbound = - | SyncReconcileRequestCurrentReleaseDefaultString$Outbound - | SyncReconcileRequestCurrentReleaseDefaultNumber$Outbound - | SyncReconcileRequestCurrentReleaseDefaultBoolean$Outbound - | SyncReconcileRequestCurrentReleaseDefaultStringList$Outbound +export type PendingPreparedStackOverrideConditionStateResource$Outbound = { + expression: string; + title: string; +}; + +/** @internal */ +export const PendingPreparedStackOverrideConditionStateResource$outboundSchema: + z.ZodType< + PendingPreparedStackOverrideConditionStateResource$Outbound, + PendingPreparedStackOverrideConditionStateResource + > = z.object({ + expression: z.string(), + title: z.string(), + }); + +export function pendingPreparedStackOverrideConditionStateResourceToJSON( + pendingPreparedStackOverrideConditionStateResource: + PendingPreparedStackOverrideConditionStateResource, +): string { + return JSON.stringify( + PendingPreparedStackOverrideConditionStateResource$outboundSchema.parse( + pendingPreparedStackOverrideConditionStateResource, + ), + ); +} + +/** @internal */ +export type PendingPreparedStackOverrideStateResourceConditionUnion$Outbound = + | PendingPreparedStackOverrideConditionStateResource$Outbound | any; /** @internal */ -export const SyncReconcileRequestCurrentReleaseDefaultUnion$outboundSchema: +export const PendingPreparedStackOverrideStateResourceConditionUnion$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseDefaultUnion$Outbound, - SyncReconcileRequestCurrentReleaseDefaultUnion + PendingPreparedStackOverrideStateResourceConditionUnion$Outbound, + PendingPreparedStackOverrideStateResourceConditionUnion > = z.union([ z.lazy(() => - SyncReconcileRequestCurrentReleaseDefaultString$outboundSchema - ), - z.lazy(() => - SyncReconcileRequestCurrentReleaseDefaultNumber$outboundSchema - ), - z.lazy(() => - SyncReconcileRequestCurrentReleaseDefaultBoolean$outboundSchema - ), - z.lazy(() => - SyncReconcileRequestCurrentReleaseDefaultStringList$outboundSchema + PendingPreparedStackOverrideConditionStateResource$outboundSchema ), z.any(), ]); -export function syncReconcileRequestCurrentReleaseDefaultUnionToJSON( - syncReconcileRequestCurrentReleaseDefaultUnion: - SyncReconcileRequestCurrentReleaseDefaultUnion, +export function pendingPreparedStackOverrideStateResourceConditionUnionToJSON( + pendingPreparedStackOverrideStateResourceConditionUnion: + PendingPreparedStackOverrideStateResourceConditionUnion, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseDefaultUnion$outboundSchema.parse( - syncReconcileRequestCurrentReleaseDefaultUnion, + PendingPreparedStackOverrideStateResourceConditionUnion$outboundSchema + .parse(pendingPreparedStackOverrideStateResourceConditionUnion), + ); +} + +/** @internal */ +export type PendingPreparedStackOverrideStateGcpResource$Outbound = { + condition?: + | PendingPreparedStackOverrideConditionStateResource$Outbound + | any + | null + | undefined; + scope: string; +}; + +/** @internal */ +export const PendingPreparedStackOverrideStateGcpResource$outboundSchema: + z.ZodType< + PendingPreparedStackOverrideStateGcpResource$Outbound, + PendingPreparedStackOverrideStateGcpResource + > = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => + PendingPreparedStackOverrideConditionStateResource$outboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function pendingPreparedStackOverrideStateGcpResourceToJSON( + pendingPreparedStackOverrideStateGcpResource: + PendingPreparedStackOverrideStateGcpResource, +): string { + return JSON.stringify( + PendingPreparedStackOverrideStateGcpResource$outboundSchema.parse( + pendingPreparedStackOverrideStateGcpResource, ), ); } /** @internal */ -export const SyncReconcileRequestCurrentReleaseTypeEnvEnum$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestCurrentReleaseTypeEnvEnum, +export type PendingPreparedStackOverrideConditionStateStack$Outbound = { + expression: string; + title: string; +}; + +/** @internal */ +export const PendingPreparedStackOverrideConditionStateStack$outboundSchema: + z.ZodType< + PendingPreparedStackOverrideConditionStateStack$Outbound, + PendingPreparedStackOverrideConditionStateStack + > = z.object({ + expression: z.string(), + title: z.string(), + }); + +export function pendingPreparedStackOverrideConditionStateStackToJSON( + pendingPreparedStackOverrideConditionStateStack: + PendingPreparedStackOverrideConditionStateStack, +): string { + return JSON.stringify( + PendingPreparedStackOverrideConditionStateStack$outboundSchema.parse( + pendingPreparedStackOverrideConditionStateStack, + ), ); +} /** @internal */ -export type SyncReconcileRequestCurrentReleaseTypeUnion$Outbound = string | any; +export type PendingPreparedStackOverrideStateStackConditionUnion$Outbound = + | PendingPreparedStackOverrideConditionStateStack$Outbound + | any; /** @internal */ -export const SyncReconcileRequestCurrentReleaseTypeUnion$outboundSchema: +export const PendingPreparedStackOverrideStateStackConditionUnion$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseTypeUnion$Outbound, - SyncReconcileRequestCurrentReleaseTypeUnion + PendingPreparedStackOverrideStateStackConditionUnion$Outbound, + PendingPreparedStackOverrideStateStackConditionUnion > = z.union([ - SyncReconcileRequestCurrentReleaseTypeEnvEnum$outboundSchema, + z.lazy(() => + PendingPreparedStackOverrideConditionStateStack$outboundSchema + ), z.any(), ]); -export function syncReconcileRequestCurrentReleaseTypeUnionToJSON( - syncReconcileRequestCurrentReleaseTypeUnion: - SyncReconcileRequestCurrentReleaseTypeUnion, +export function pendingPreparedStackOverrideStateStackConditionUnionToJSON( + pendingPreparedStackOverrideStateStackConditionUnion: + PendingPreparedStackOverrideStateStackConditionUnion, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseTypeUnion$outboundSchema.parse( - syncReconcileRequestCurrentReleaseTypeUnion, + PendingPreparedStackOverrideStateStackConditionUnion$outboundSchema.parse( + pendingPreparedStackOverrideStateStackConditionUnion, ), ); } /** @internal */ -export type SyncReconcileRequestCurrentReleaseEnv$Outbound = { - name: string; - targetResources?: Array | null | undefined; - type?: string | any | null | undefined; -}; +export type SyncReconcileRequestPendingPreparedStackOverrideGcpStack$Outbound = + { + condition?: + | PendingPreparedStackOverrideConditionStateStack$Outbound + | any + | null + | undefined; + scope: string; + }; /** @internal */ -export const SyncReconcileRequestCurrentReleaseEnv$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseEnv$Outbound, - SyncReconcileRequestCurrentReleaseEnv -> = z.object({ - name: z.string(), - targetResources: z.nullable(z.array(z.string())).optional(), - type: z.nullable( - z.union([ - SyncReconcileRequestCurrentReleaseTypeEnvEnum$outboundSchema, - z.any(), - ]), - ).optional(), -}); +export const SyncReconcileRequestPendingPreparedStackOverrideGcpStack$outboundSchema: + z.ZodType< + SyncReconcileRequestPendingPreparedStackOverrideGcpStack$Outbound, + SyncReconcileRequestPendingPreparedStackOverrideGcpStack + > = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => + PendingPreparedStackOverrideConditionStateStack$outboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); -export function syncReconcileRequestCurrentReleaseEnvToJSON( - syncReconcileRequestCurrentReleaseEnv: SyncReconcileRequestCurrentReleaseEnv, +export function syncReconcileRequestPendingPreparedStackOverrideGcpStackToJSON( + syncReconcileRequestPendingPreparedStackOverrideGcpStack: + SyncReconcileRequestPendingPreparedStackOverrideGcpStack, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseEnv$outboundSchema.parse( - syncReconcileRequestCurrentReleaseEnv, - ), + SyncReconcileRequestPendingPreparedStackOverrideGcpStack$outboundSchema + .parse(syncReconcileRequestPendingPreparedStackOverrideGcpStack), ); } /** @internal */ -export const CurrentReleaseStateKind$outboundSchema: z.ZodEnum< - typeof CurrentReleaseStateKind -> = z.enum(CurrentReleaseStateKind); +export type SyncReconcileRequestPendingPreparedStackOverrideGcpBinding$Outbound = + { + resource?: + | PendingPreparedStackOverrideStateGcpResource$Outbound + | undefined; + stack?: + | SyncReconcileRequestPendingPreparedStackOverrideGcpStack$Outbound + | undefined; + }; /** @internal */ -export const SyncReconcileRequestCurrentReleasePlatform$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestCurrentReleasePlatform, - ); +export const SyncReconcileRequestPendingPreparedStackOverrideGcpBinding$outboundSchema: + z.ZodType< + SyncReconcileRequestPendingPreparedStackOverrideGcpBinding$Outbound, + SyncReconcileRequestPendingPreparedStackOverrideGcpBinding + > = z.object({ + resource: z.lazy(() => + PendingPreparedStackOverrideStateGcpResource$outboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileRequestPendingPreparedStackOverrideGcpStack$outboundSchema + ).optional(), + }); -/** @internal */ -export const SyncReconcileRequestCurrentReleaseProvidedBy$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestCurrentReleaseProvidedBy, +export function syncReconcileRequestPendingPreparedStackOverrideGcpBindingToJSON( + syncReconcileRequestPendingPreparedStackOverrideGcpBinding: + SyncReconcileRequestPendingPreparedStackOverrideGcpBinding, +): string { + return JSON.stringify( + SyncReconcileRequestPendingPreparedStackOverrideGcpBinding$outboundSchema + .parse(syncReconcileRequestPendingPreparedStackOverrideGcpBinding), ); +} /** @internal */ -export type SyncReconcileRequestCurrentReleaseValidation$Outbound = { - format?: string | null | undefined; - max?: string | null | undefined; - maxItems?: number | null | undefined; - maxLength?: number | null | undefined; - min?: string | null | undefined; - minItems?: number | null | undefined; - minLength?: number | null | undefined; - pattern?: string | null | undefined; - values?: Array | null | undefined; -}; +export type SyncReconcileRequestPendingPreparedStackOverrideGcpGrant$Outbound = + { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; + }; /** @internal */ -export const SyncReconcileRequestCurrentReleaseValidation$outboundSchema: +export const SyncReconcileRequestPendingPreparedStackOverrideGcpGrant$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseValidation$Outbound, - SyncReconcileRequestCurrentReleaseValidation + SyncReconcileRequestPendingPreparedStackOverrideGcpGrant$Outbound, + SyncReconcileRequestPendingPreparedStackOverrideGcpGrant > = z.object({ - format: z.nullable(z.string()).optional(), - max: z.nullable(z.string()).optional(), - maxItems: z.nullable(z.int()).optional(), - maxLength: z.nullable(z.int()).optional(), - min: z.nullable(z.string()).optional(), - minItems: z.nullable(z.int()).optional(), - minLength: z.nullable(z.int()).optional(), - pattern: z.nullable(z.string()).optional(), - values: z.nullable(z.array(z.string())).optional(), + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function syncReconcileRequestCurrentReleaseValidationToJSON( - syncReconcileRequestCurrentReleaseValidation: - SyncReconcileRequestCurrentReleaseValidation, +export function syncReconcileRequestPendingPreparedStackOverrideGcpGrantToJSON( + syncReconcileRequestPendingPreparedStackOverrideGcpGrant: + SyncReconcileRequestPendingPreparedStackOverrideGcpGrant, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseValidation$outboundSchema.parse( - syncReconcileRequestCurrentReleaseValidation, - ), + SyncReconcileRequestPendingPreparedStackOverrideGcpGrant$outboundSchema + .parse(syncReconcileRequestPendingPreparedStackOverrideGcpGrant), ); } /** @internal */ -export type SyncReconcileRequestCurrentReleaseValidationUnion$Outbound = - | SyncReconcileRequestCurrentReleaseValidation$Outbound - | any; +export type SyncReconcileRequestPendingPreparedStackOverrideGcp$Outbound = { + binding: SyncReconcileRequestPendingPreparedStackOverrideGcpBinding$Outbound; + description?: string | null | undefined; + grant: SyncReconcileRequestPendingPreparedStackOverrideGcpGrant$Outbound; + label?: string | null | undefined; +}; /** @internal */ -export const SyncReconcileRequestCurrentReleaseValidationUnion$outboundSchema: +export const SyncReconcileRequestPendingPreparedStackOverrideGcp$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseValidationUnion$Outbound, - SyncReconcileRequestCurrentReleaseValidationUnion - > = z.union([ - z.lazy(() => SyncReconcileRequestCurrentReleaseValidation$outboundSchema), - z.any(), - ]); + SyncReconcileRequestPendingPreparedStackOverrideGcp$Outbound, + SyncReconcileRequestPendingPreparedStackOverrideGcp + > = z.object({ + binding: z.lazy(() => + SyncReconcileRequestPendingPreparedStackOverrideGcpBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileRequestPendingPreparedStackOverrideGcpGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); -export function syncReconcileRequestCurrentReleaseValidationUnionToJSON( - syncReconcileRequestCurrentReleaseValidationUnion: - SyncReconcileRequestCurrentReleaseValidationUnion, +export function syncReconcileRequestPendingPreparedStackOverrideGcpToJSON( + syncReconcileRequestPendingPreparedStackOverrideGcp: + SyncReconcileRequestPendingPreparedStackOverrideGcp, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseValidationUnion$outboundSchema.parse( - syncReconcileRequestCurrentReleaseValidationUnion, + SyncReconcileRequestPendingPreparedStackOverrideGcp$outboundSchema.parse( + syncReconcileRequestPendingPreparedStackOverrideGcp, ), ); } /** @internal */ -export type SyncReconcileRequestCurrentReleaseInput$Outbound = { - default?: - | SyncReconcileRequestCurrentReleaseDefaultString$Outbound - | SyncReconcileRequestCurrentReleaseDefaultNumber$Outbound - | SyncReconcileRequestCurrentReleaseDefaultBoolean$Outbound - | SyncReconcileRequestCurrentReleaseDefaultStringList$Outbound - | any - | null - | undefined; - description: string; - env?: Array | undefined; - id: string; - kind: string; - label: string; - placeholder?: string | null | undefined; - platforms?: Array | null | undefined; - providedBy: Array; - required: boolean; - validation?: - | SyncReconcileRequestCurrentReleaseValidation$Outbound - | any - | null - | undefined; -}; +export type SyncReconcileRequestPendingPreparedStackOverridePlatforms$Outbound = + { + aws?: + | Array + | null + | undefined; + azure?: + | Array + | null + | undefined; + gcp?: + | Array + | null + | undefined; + }; /** @internal */ -export const SyncReconcileRequestCurrentReleaseInput$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseInput$Outbound, - SyncReconcileRequestCurrentReleaseInput -> = z.object({ - default: z.nullable( - z.union([ - z.lazy(() => - SyncReconcileRequestCurrentReleaseDefaultString$outboundSchema - ), - z.lazy(() => - SyncReconcileRequestCurrentReleaseDefaultNumber$outboundSchema - ), - z.lazy(() => - SyncReconcileRequestCurrentReleaseDefaultBoolean$outboundSchema - ), - z.lazy(() => - SyncReconcileRequestCurrentReleaseDefaultStringList$outboundSchema - ), - z.any(), - ]), - ).optional(), - description: z.string(), - env: z.array( - z.lazy(() => SyncReconcileRequestCurrentReleaseEnv$outboundSchema), - ).optional(), - id: z.string(), - kind: CurrentReleaseStateKind$outboundSchema, - label: z.string(), - placeholder: z.nullable(z.string()).optional(), - platforms: z.nullable( - z.array(SyncReconcileRequestCurrentReleasePlatform$outboundSchema), - ).optional(), - providedBy: z.array( - SyncReconcileRequestCurrentReleaseProvidedBy$outboundSchema, - ), - required: z.boolean(), - validation: z.nullable( - z.union([ - z.lazy(() => SyncReconcileRequestCurrentReleaseValidation$outboundSchema), - z.any(), - ]), - ).optional(), -}); +export const SyncReconcileRequestPendingPreparedStackOverridePlatforms$outboundSchema: + z.ZodType< + SyncReconcileRequestPendingPreparedStackOverridePlatforms$Outbound, + SyncReconcileRequestPendingPreparedStackOverridePlatforms + > = z.object({ + aws: z.nullable( + z.array(z.lazy(() => + SyncReconcileRequestPendingPreparedStackOverrideAw$outboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + SyncReconcileRequestPendingPreparedStackOverrideAzure$outboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + SyncReconcileRequestPendingPreparedStackOverrideGcp$outboundSchema + )), + ).optional(), + }); + +export function syncReconcileRequestPendingPreparedStackOverridePlatformsToJSON( + syncReconcileRequestPendingPreparedStackOverridePlatforms: + SyncReconcileRequestPendingPreparedStackOverridePlatforms, +): string { + return JSON.stringify( + SyncReconcileRequestPendingPreparedStackOverridePlatforms$outboundSchema + .parse(syncReconcileRequestPendingPreparedStackOverridePlatforms), + ); +} -export function syncReconcileRequestCurrentReleaseInputToJSON( - syncReconcileRequestCurrentReleaseInput: - SyncReconcileRequestCurrentReleaseInput, +/** @internal */ +export type SyncReconcileRequestPendingPreparedStackOverride$Outbound = { + description: string; + id: string; + platforms: SyncReconcileRequestPendingPreparedStackOverridePlatforms$Outbound; +}; + +/** @internal */ +export const SyncReconcileRequestPendingPreparedStackOverride$outboundSchema: + z.ZodType< + SyncReconcileRequestPendingPreparedStackOverride$Outbound, + SyncReconcileRequestPendingPreparedStackOverride + > = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncReconcileRequestPendingPreparedStackOverridePlatforms$outboundSchema + ), + }); + +export function syncReconcileRequestPendingPreparedStackOverrideToJSON( + syncReconcileRequestPendingPreparedStackOverride: + SyncReconcileRequestPendingPreparedStackOverride, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseInput$outboundSchema.parse( - syncReconcileRequestCurrentReleaseInput, + SyncReconcileRequestPendingPreparedStackOverride$outboundSchema.parse( + syncReconcileRequestPendingPreparedStackOverride, ), ); } /** @internal */ -export const SyncReconcileRequestCurrentReleaseManagementEnum$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestCurrentReleaseManagementEnum, +export type SyncReconcileRequestPendingPreparedStackOverrideUnion$Outbound = + | SyncReconcileRequestPendingPreparedStackOverride$Outbound + | string; + +/** @internal */ +export const SyncReconcileRequestPendingPreparedStackOverrideUnion$outboundSchema: + z.ZodType< + SyncReconcileRequestPendingPreparedStackOverrideUnion$Outbound, + SyncReconcileRequestPendingPreparedStackOverrideUnion + > = z.union([ + z.lazy(() => + SyncReconcileRequestPendingPreparedStackOverride$outboundSchema + ), + z.string(), + ]); + +export function syncReconcileRequestPendingPreparedStackOverrideUnionToJSON( + syncReconcileRequestPendingPreparedStackOverrideUnion: + SyncReconcileRequestPendingPreparedStackOverrideUnion, +): string { + return JSON.stringify( + SyncReconcileRequestPendingPreparedStackOverrideUnion$outboundSchema.parse( + syncReconcileRequestPendingPreparedStackOverrideUnion, + ), ); +} /** @internal */ -export type CurrentReleaseOverrideStateAwResource$Outbound = { +export type SyncReconcileRequestPendingPreparedStackManagement2$Outbound = { + override: { + [k: string]: Array< + SyncReconcileRequestPendingPreparedStackOverride$Outbound | string + >; + }; +}; + +/** @internal */ +export const SyncReconcileRequestPendingPreparedStackManagement2$outboundSchema: + z.ZodType< + SyncReconcileRequestPendingPreparedStackManagement2$Outbound, + SyncReconcileRequestPendingPreparedStackManagement2 + > = z.object({ + override: z.record( + z.string(), + z.array(z.union([ + z.lazy(() => + SyncReconcileRequestPendingPreparedStackOverride$outboundSchema + ), + z.string(), + ])), + ), + }); + +export function syncReconcileRequestPendingPreparedStackManagement2ToJSON( + syncReconcileRequestPendingPreparedStackManagement2: + SyncReconcileRequestPendingPreparedStackManagement2, +): string { + return JSON.stringify( + SyncReconcileRequestPendingPreparedStackManagement2$outboundSchema.parse( + syncReconcileRequestPendingPreparedStackManagement2, + ), + ); +} + +/** @internal */ +export type PendingPreparedStackExtendStateAwResource$Outbound = { condition?: { [k: string]: { [k: string]: string } } | null | undefined; resources: Array; }; /** @internal */ -export const CurrentReleaseOverrideStateAwResource$outboundSchema: z.ZodType< - CurrentReleaseOverrideStateAwResource$Outbound, - CurrentReleaseOverrideStateAwResource -> = z.object({ - condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) - .optional(), - resources: z.array(z.string()), -}); +export const PendingPreparedStackExtendStateAwResource$outboundSchema: + z.ZodType< + PendingPreparedStackExtendStateAwResource$Outbound, + PendingPreparedStackExtendStateAwResource + > = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); -export function currentReleaseOverrideStateAwResourceToJSON( - currentReleaseOverrideStateAwResource: CurrentReleaseOverrideStateAwResource, +export function pendingPreparedStackExtendStateAwResourceToJSON( + pendingPreparedStackExtendStateAwResource: + PendingPreparedStackExtendStateAwResource, ): string { return JSON.stringify( - CurrentReleaseOverrideStateAwResource$outboundSchema.parse( - currentReleaseOverrideStateAwResource, + PendingPreparedStackExtendStateAwResource$outboundSchema.parse( + pendingPreparedStackExtendStateAwResource, ), ); } /** @internal */ -export type SyncReconcileRequestCurrentReleaseOverrideAwStack$Outbound = { +export type SyncReconcileRequestPendingPreparedStackExtendAwStack$Outbound = { condition?: { [k: string]: { [k: string]: string } } | null | undefined; resources: Array; }; /** @internal */ -export const SyncReconcileRequestCurrentReleaseOverrideAwStack$outboundSchema: +export const SyncReconcileRequestPendingPreparedStackExtendAwStack$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseOverrideAwStack$Outbound, - SyncReconcileRequestCurrentReleaseOverrideAwStack + SyncReconcileRequestPendingPreparedStackExtendAwStack$Outbound, + SyncReconcileRequestPendingPreparedStackExtendAwStack > = z.object({ condition: z.nullable( z.record(z.string(), z.record(z.string(), z.string())), @@ -12932,57 +19246,56 @@ export const SyncReconcileRequestCurrentReleaseOverrideAwStack$outboundSchema: resources: z.array(z.string()), }); -export function syncReconcileRequestCurrentReleaseOverrideAwStackToJSON( - syncReconcileRequestCurrentReleaseOverrideAwStack: - SyncReconcileRequestCurrentReleaseOverrideAwStack, +export function syncReconcileRequestPendingPreparedStackExtendAwStackToJSON( + syncReconcileRequestPendingPreparedStackExtendAwStack: + SyncReconcileRequestPendingPreparedStackExtendAwStack, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseOverrideAwStack$outboundSchema.parse( - syncReconcileRequestCurrentReleaseOverrideAwStack, + SyncReconcileRequestPendingPreparedStackExtendAwStack$outboundSchema.parse( + syncReconcileRequestPendingPreparedStackExtendAwStack, ), ); } /** @internal */ -export type SyncReconcileRequestCurrentReleaseOverrideAwBinding$Outbound = { - resource?: CurrentReleaseOverrideStateAwResource$Outbound | undefined; +export type SyncReconcileRequestPendingPreparedStackExtendAwBinding$Outbound = { + resource?: PendingPreparedStackExtendStateAwResource$Outbound | undefined; stack?: - | SyncReconcileRequestCurrentReleaseOverrideAwStack$Outbound + | SyncReconcileRequestPendingPreparedStackExtendAwStack$Outbound | undefined; }; /** @internal */ -export const SyncReconcileRequestCurrentReleaseOverrideAwBinding$outboundSchema: +export const SyncReconcileRequestPendingPreparedStackExtendAwBinding$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseOverrideAwBinding$Outbound, - SyncReconcileRequestCurrentReleaseOverrideAwBinding + SyncReconcileRequestPendingPreparedStackExtendAwBinding$Outbound, + SyncReconcileRequestPendingPreparedStackExtendAwBinding > = z.object({ - resource: z.lazy(() => CurrentReleaseOverrideStateAwResource$outboundSchema) - .optional(), + resource: z.lazy(() => + PendingPreparedStackExtendStateAwResource$outboundSchema + ).optional(), stack: z.lazy(() => - SyncReconcileRequestCurrentReleaseOverrideAwStack$outboundSchema + SyncReconcileRequestPendingPreparedStackExtendAwStack$outboundSchema ).optional(), }); -export function syncReconcileRequestCurrentReleaseOverrideAwBindingToJSON( - syncReconcileRequestCurrentReleaseOverrideAwBinding: - SyncReconcileRequestCurrentReleaseOverrideAwBinding, +export function syncReconcileRequestPendingPreparedStackExtendAwBindingToJSON( + syncReconcileRequestPendingPreparedStackExtendAwBinding: + SyncReconcileRequestPendingPreparedStackExtendAwBinding, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseOverrideAwBinding$outboundSchema.parse( - syncReconcileRequestCurrentReleaseOverrideAwBinding, - ), + SyncReconcileRequestPendingPreparedStackExtendAwBinding$outboundSchema + .parse(syncReconcileRequestPendingPreparedStackExtendAwBinding), ); } /** @internal */ -export const SyncReconcileRequestCurrentReleaseOverrideEffect$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestCurrentReleaseOverrideEffect, - ); +export const SyncReconcileRequestPendingPreparedStackExtendEffect$outboundSchema: + z.ZodEnum = z + .enum(SyncReconcileRequestPendingPreparedStackExtendEffect); /** @internal */ -export type SyncReconcileRequestCurrentReleaseOverrideAwGrant$Outbound = { +export type SyncReconcileRequestPendingPreparedStackExtendAwGrant$Outbound = { actions?: Array | null | undefined; dataActions?: Array | null | undefined; permissions?: Array | null | undefined; @@ -12991,10 +19304,10 @@ export type SyncReconcileRequestCurrentReleaseOverrideAwGrant$Outbound = { }; /** @internal */ -export const SyncReconcileRequestCurrentReleaseOverrideAwGrant$outboundSchema: +export const SyncReconcileRequestPendingPreparedStackExtendAwGrant$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseOverrideAwGrant$Outbound, - SyncReconcileRequestCurrentReleaseOverrideAwGrant + SyncReconcileRequestPendingPreparedStackExtendAwGrant$Outbound, + SyncReconcileRequestPendingPreparedStackExtendAwGrant > = z.object({ actions: z.nullable(z.array(z.string())).optional(), dataActions: z.nullable(z.array(z.string())).optional(), @@ -13003,151 +19316,155 @@ export const SyncReconcileRequestCurrentReleaseOverrideAwGrant$outboundSchema: residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function syncReconcileRequestCurrentReleaseOverrideAwGrantToJSON( - syncReconcileRequestCurrentReleaseOverrideAwGrant: - SyncReconcileRequestCurrentReleaseOverrideAwGrant, +export function syncReconcileRequestPendingPreparedStackExtendAwGrantToJSON( + syncReconcileRequestPendingPreparedStackExtendAwGrant: + SyncReconcileRequestPendingPreparedStackExtendAwGrant, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseOverrideAwGrant$outboundSchema.parse( - syncReconcileRequestCurrentReleaseOverrideAwGrant, + SyncReconcileRequestPendingPreparedStackExtendAwGrant$outboundSchema.parse( + syncReconcileRequestPendingPreparedStackExtendAwGrant, ), ); } /** @internal */ -export type SyncReconcileRequestCurrentReleaseOverrideAw$Outbound = { - binding: SyncReconcileRequestCurrentReleaseOverrideAwBinding$Outbound; +export type SyncReconcileRequestPendingPreparedStackExtendAw$Outbound = { + binding: SyncReconcileRequestPendingPreparedStackExtendAwBinding$Outbound; description?: string | null | undefined; effect?: string | undefined; - grant: SyncReconcileRequestCurrentReleaseOverrideAwGrant$Outbound; + grant: SyncReconcileRequestPendingPreparedStackExtendAwGrant$Outbound; label?: string | null | undefined; }; /** @internal */ -export const SyncReconcileRequestCurrentReleaseOverrideAw$outboundSchema: +export const SyncReconcileRequestPendingPreparedStackExtendAw$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseOverrideAw$Outbound, - SyncReconcileRequestCurrentReleaseOverrideAw + SyncReconcileRequestPendingPreparedStackExtendAw$Outbound, + SyncReconcileRequestPendingPreparedStackExtendAw > = z.object({ binding: z.lazy(() => - SyncReconcileRequestCurrentReleaseOverrideAwBinding$outboundSchema + SyncReconcileRequestPendingPreparedStackExtendAwBinding$outboundSchema ), description: z.nullable(z.string()).optional(), - effect: SyncReconcileRequestCurrentReleaseOverrideEffect$outboundSchema + effect: SyncReconcileRequestPendingPreparedStackExtendEffect$outboundSchema .optional(), grant: z.lazy(() => - SyncReconcileRequestCurrentReleaseOverrideAwGrant$outboundSchema + SyncReconcileRequestPendingPreparedStackExtendAwGrant$outboundSchema ), label: z.nullable(z.string()).optional(), }); -export function syncReconcileRequestCurrentReleaseOverrideAwToJSON( - syncReconcileRequestCurrentReleaseOverrideAw: - SyncReconcileRequestCurrentReleaseOverrideAw, +export function syncReconcileRequestPendingPreparedStackExtendAwToJSON( + syncReconcileRequestPendingPreparedStackExtendAw: + SyncReconcileRequestPendingPreparedStackExtendAw, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseOverrideAw$outboundSchema.parse( - syncReconcileRequestCurrentReleaseOverrideAw, + SyncReconcileRequestPendingPreparedStackExtendAw$outboundSchema.parse( + syncReconcileRequestPendingPreparedStackExtendAw, ), ); } /** @internal */ -export type CurrentReleaseOverrideStateAzureResource$Outbound = { +export type PendingPreparedStackExtendStateAzureResource$Outbound = { scope: string; }; /** @internal */ -export const CurrentReleaseOverrideStateAzureResource$outboundSchema: z.ZodType< - CurrentReleaseOverrideStateAzureResource$Outbound, - CurrentReleaseOverrideStateAzureResource -> = z.object({ - scope: z.string(), -}); +export const PendingPreparedStackExtendStateAzureResource$outboundSchema: + z.ZodType< + PendingPreparedStackExtendStateAzureResource$Outbound, + PendingPreparedStackExtendStateAzureResource + > = z.object({ + scope: z.string(), + }); -export function currentReleaseOverrideStateAzureResourceToJSON( - currentReleaseOverrideStateAzureResource: - CurrentReleaseOverrideStateAzureResource, +export function pendingPreparedStackExtendStateAzureResourceToJSON( + pendingPreparedStackExtendStateAzureResource: + PendingPreparedStackExtendStateAzureResource, ): string { return JSON.stringify( - CurrentReleaseOverrideStateAzureResource$outboundSchema.parse( - currentReleaseOverrideStateAzureResource, + PendingPreparedStackExtendStateAzureResource$outboundSchema.parse( + pendingPreparedStackExtendStateAzureResource, ), ); } /** @internal */ -export type SyncReconcileRequestCurrentReleaseOverrideAzureStack$Outbound = { - scope: string; -}; +export type SyncReconcileRequestPendingPreparedStackExtendAzureStack$Outbound = + { + scope: string; + }; /** @internal */ -export const SyncReconcileRequestCurrentReleaseOverrideAzureStack$outboundSchema: +export const SyncReconcileRequestPendingPreparedStackExtendAzureStack$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseOverrideAzureStack$Outbound, - SyncReconcileRequestCurrentReleaseOverrideAzureStack + SyncReconcileRequestPendingPreparedStackExtendAzureStack$Outbound, + SyncReconcileRequestPendingPreparedStackExtendAzureStack > = z.object({ scope: z.string(), }); -export function syncReconcileRequestCurrentReleaseOverrideAzureStackToJSON( - syncReconcileRequestCurrentReleaseOverrideAzureStack: - SyncReconcileRequestCurrentReleaseOverrideAzureStack, +export function syncReconcileRequestPendingPreparedStackExtendAzureStackToJSON( + syncReconcileRequestPendingPreparedStackExtendAzureStack: + SyncReconcileRequestPendingPreparedStackExtendAzureStack, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseOverrideAzureStack$outboundSchema.parse( - syncReconcileRequestCurrentReleaseOverrideAzureStack, - ), + SyncReconcileRequestPendingPreparedStackExtendAzureStack$outboundSchema + .parse(syncReconcileRequestPendingPreparedStackExtendAzureStack), ); } /** @internal */ -export type SyncReconcileRequestCurrentReleaseOverrideAzureBinding$Outbound = { - resource?: CurrentReleaseOverrideStateAzureResource$Outbound | undefined; - stack?: - | SyncReconcileRequestCurrentReleaseOverrideAzureStack$Outbound - | undefined; -}; +export type SyncReconcileRequestPendingPreparedStackExtendAzureBinding$Outbound = + { + resource?: + | PendingPreparedStackExtendStateAzureResource$Outbound + | undefined; + stack?: + | SyncReconcileRequestPendingPreparedStackExtendAzureStack$Outbound + | undefined; + }; /** @internal */ -export const SyncReconcileRequestCurrentReleaseOverrideAzureBinding$outboundSchema: +export const SyncReconcileRequestPendingPreparedStackExtendAzureBinding$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseOverrideAzureBinding$Outbound, - SyncReconcileRequestCurrentReleaseOverrideAzureBinding + SyncReconcileRequestPendingPreparedStackExtendAzureBinding$Outbound, + SyncReconcileRequestPendingPreparedStackExtendAzureBinding > = z.object({ resource: z.lazy(() => - CurrentReleaseOverrideStateAzureResource$outboundSchema + PendingPreparedStackExtendStateAzureResource$outboundSchema ).optional(), stack: z.lazy(() => - SyncReconcileRequestCurrentReleaseOverrideAzureStack$outboundSchema + SyncReconcileRequestPendingPreparedStackExtendAzureStack$outboundSchema ).optional(), }); -export function syncReconcileRequestCurrentReleaseOverrideAzureBindingToJSON( - syncReconcileRequestCurrentReleaseOverrideAzureBinding: - SyncReconcileRequestCurrentReleaseOverrideAzureBinding, +export function syncReconcileRequestPendingPreparedStackExtendAzureBindingToJSON( + syncReconcileRequestPendingPreparedStackExtendAzureBinding: + SyncReconcileRequestPendingPreparedStackExtendAzureBinding, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseOverrideAzureBinding$outboundSchema.parse( - syncReconcileRequestCurrentReleaseOverrideAzureBinding, - ), + SyncReconcileRequestPendingPreparedStackExtendAzureBinding$outboundSchema + .parse(syncReconcileRequestPendingPreparedStackExtendAzureBinding), ); } /** @internal */ -export type SyncReconcileRequestCurrentReleaseOverrideAzureGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; -}; +export type SyncReconcileRequestPendingPreparedStackExtendAzureGrant$Outbound = + { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; + }; /** @internal */ -export const SyncReconcileRequestCurrentReleaseOverrideAzureGrant$outboundSchema: +export const SyncReconcileRequestPendingPreparedStackExtendAzureGrant$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseOverrideAzureGrant$Outbound, - SyncReconcileRequestCurrentReleaseOverrideAzureGrant + SyncReconcileRequestPendingPreparedStackExtendAzureGrant$Outbound, + SyncReconcileRequestPendingPreparedStackExtendAzureGrant > = z.object({ actions: z.nullable(z.array(z.string())).optional(), dataActions: z.nullable(z.array(z.string())).optional(), @@ -13156,109 +19473,110 @@ export const SyncReconcileRequestCurrentReleaseOverrideAzureGrant$outboundSchema residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function syncReconcileRequestCurrentReleaseOverrideAzureGrantToJSON( - syncReconcileRequestCurrentReleaseOverrideAzureGrant: - SyncReconcileRequestCurrentReleaseOverrideAzureGrant, +export function syncReconcileRequestPendingPreparedStackExtendAzureGrantToJSON( + syncReconcileRequestPendingPreparedStackExtendAzureGrant: + SyncReconcileRequestPendingPreparedStackExtendAzureGrant, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseOverrideAzureGrant$outboundSchema.parse( - syncReconcileRequestCurrentReleaseOverrideAzureGrant, - ), + SyncReconcileRequestPendingPreparedStackExtendAzureGrant$outboundSchema + .parse(syncReconcileRequestPendingPreparedStackExtendAzureGrant), ); } /** @internal */ -export type SyncReconcileRequestCurrentReleaseOverrideAzure$Outbound = { - binding: SyncReconcileRequestCurrentReleaseOverrideAzureBinding$Outbound; +export type SyncReconcileRequestPendingPreparedStackExtendAzure$Outbound = { + binding: SyncReconcileRequestPendingPreparedStackExtendAzureBinding$Outbound; description?: string | null | undefined; - grant: SyncReconcileRequestCurrentReleaseOverrideAzureGrant$Outbound; + grant: SyncReconcileRequestPendingPreparedStackExtendAzureGrant$Outbound; label?: string | null | undefined; }; /** @internal */ -export const SyncReconcileRequestCurrentReleaseOverrideAzure$outboundSchema: +export const SyncReconcileRequestPendingPreparedStackExtendAzure$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseOverrideAzure$Outbound, - SyncReconcileRequestCurrentReleaseOverrideAzure + SyncReconcileRequestPendingPreparedStackExtendAzure$Outbound, + SyncReconcileRequestPendingPreparedStackExtendAzure > = z.object({ binding: z.lazy(() => - SyncReconcileRequestCurrentReleaseOverrideAzureBinding$outboundSchema + SyncReconcileRequestPendingPreparedStackExtendAzureBinding$outboundSchema ), description: z.nullable(z.string()).optional(), grant: z.lazy(() => - SyncReconcileRequestCurrentReleaseOverrideAzureGrant$outboundSchema + SyncReconcileRequestPendingPreparedStackExtendAzureGrant$outboundSchema ), label: z.nullable(z.string()).optional(), }); -export function syncReconcileRequestCurrentReleaseOverrideAzureToJSON( - syncReconcileRequestCurrentReleaseOverrideAzure: - SyncReconcileRequestCurrentReleaseOverrideAzure, +export function syncReconcileRequestPendingPreparedStackExtendAzureToJSON( + syncReconcileRequestPendingPreparedStackExtendAzure: + SyncReconcileRequestPendingPreparedStackExtendAzure, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseOverrideAzure$outboundSchema.parse( - syncReconcileRequestCurrentReleaseOverrideAzure, + SyncReconcileRequestPendingPreparedStackExtendAzure$outboundSchema.parse( + syncReconcileRequestPendingPreparedStackExtendAzure, ), ); } /** @internal */ -export type CurrentReleaseOverrideConditionStateResource$Outbound = { +export type PendingPreparedStackExtendConditionStateResource$Outbound = { expression: string; title: string; }; /** @internal */ -export const CurrentReleaseOverrideConditionStateResource$outboundSchema: +export const PendingPreparedStackExtendConditionStateResource$outboundSchema: z.ZodType< - CurrentReleaseOverrideConditionStateResource$Outbound, - CurrentReleaseOverrideConditionStateResource + PendingPreparedStackExtendConditionStateResource$Outbound, + PendingPreparedStackExtendConditionStateResource > = z.object({ expression: z.string(), title: z.string(), }); -export function currentReleaseOverrideConditionStateResourceToJSON( - currentReleaseOverrideConditionStateResource: - CurrentReleaseOverrideConditionStateResource, +export function pendingPreparedStackExtendConditionStateResourceToJSON( + pendingPreparedStackExtendConditionStateResource: + PendingPreparedStackExtendConditionStateResource, ): string { return JSON.stringify( - CurrentReleaseOverrideConditionStateResource$outboundSchema.parse( - currentReleaseOverrideConditionStateResource, + PendingPreparedStackExtendConditionStateResource$outboundSchema.parse( + pendingPreparedStackExtendConditionStateResource, ), ); } /** @internal */ -export type CurrentReleaseOverrideStateResourceConditionUnion$Outbound = - | CurrentReleaseOverrideConditionStateResource$Outbound +export type PendingPreparedStackExtendStateResourceConditionUnion$Outbound = + | PendingPreparedStackExtendConditionStateResource$Outbound | any; /** @internal */ -export const CurrentReleaseOverrideStateResourceConditionUnion$outboundSchema: +export const PendingPreparedStackExtendStateResourceConditionUnion$outboundSchema: z.ZodType< - CurrentReleaseOverrideStateResourceConditionUnion$Outbound, - CurrentReleaseOverrideStateResourceConditionUnion + PendingPreparedStackExtendStateResourceConditionUnion$Outbound, + PendingPreparedStackExtendStateResourceConditionUnion > = z.union([ - z.lazy(() => CurrentReleaseOverrideConditionStateResource$outboundSchema), + z.lazy(() => + PendingPreparedStackExtendConditionStateResource$outboundSchema + ), z.any(), ]); -export function currentReleaseOverrideStateResourceConditionUnionToJSON( - currentReleaseOverrideStateResourceConditionUnion: - CurrentReleaseOverrideStateResourceConditionUnion, +export function pendingPreparedStackExtendStateResourceConditionUnionToJSON( + pendingPreparedStackExtendStateResourceConditionUnion: + PendingPreparedStackExtendStateResourceConditionUnion, ): string { return JSON.stringify( - CurrentReleaseOverrideStateResourceConditionUnion$outboundSchema.parse( - currentReleaseOverrideStateResourceConditionUnion, + PendingPreparedStackExtendStateResourceConditionUnion$outboundSchema.parse( + pendingPreparedStackExtendStateResourceConditionUnion, ), ); } /** @internal */ -export type CurrentReleaseOverrideStateGcpResource$Outbound = { +export type PendingPreparedStackExtendStateGcpResource$Outbound = { condition?: - | CurrentReleaseOverrideConditionStateResource$Outbound + | PendingPreparedStackExtendConditionStateResource$Outbound | any | null | undefined; @@ -13266,85 +19584,90 @@ export type CurrentReleaseOverrideStateGcpResource$Outbound = { }; /** @internal */ -export const CurrentReleaseOverrideStateGcpResource$outboundSchema: z.ZodType< - CurrentReleaseOverrideStateGcpResource$Outbound, - CurrentReleaseOverrideStateGcpResource -> = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => CurrentReleaseOverrideConditionStateResource$outboundSchema), - z.any(), - ]), - ).optional(), - scope: z.string(), -}); +export const PendingPreparedStackExtendStateGcpResource$outboundSchema: + z.ZodType< + PendingPreparedStackExtendStateGcpResource$Outbound, + PendingPreparedStackExtendStateGcpResource + > = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => + PendingPreparedStackExtendConditionStateResource$outboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); -export function currentReleaseOverrideStateGcpResourceToJSON( - currentReleaseOverrideStateGcpResource: - CurrentReleaseOverrideStateGcpResource, +export function pendingPreparedStackExtendStateGcpResourceToJSON( + pendingPreparedStackExtendStateGcpResource: + PendingPreparedStackExtendStateGcpResource, ): string { return JSON.stringify( - CurrentReleaseOverrideStateGcpResource$outboundSchema.parse( - currentReleaseOverrideStateGcpResource, + PendingPreparedStackExtendStateGcpResource$outboundSchema.parse( + pendingPreparedStackExtendStateGcpResource, ), ); } /** @internal */ -export type CurrentReleaseOverrideConditionState$Outbound = { +export type PendingPreparedStackExtendConditionStateStack$Outbound = { expression: string; title: string; }; /** @internal */ -export const CurrentReleaseOverrideConditionState$outboundSchema: z.ZodType< - CurrentReleaseOverrideConditionState$Outbound, - CurrentReleaseOverrideConditionState -> = z.object({ - expression: z.string(), - title: z.string(), -}); +export const PendingPreparedStackExtendConditionStateStack$outboundSchema: + z.ZodType< + PendingPreparedStackExtendConditionStateStack$Outbound, + PendingPreparedStackExtendConditionStateStack + > = z.object({ + expression: z.string(), + title: z.string(), + }); -export function currentReleaseOverrideConditionStateToJSON( - currentReleaseOverrideConditionState: CurrentReleaseOverrideConditionState, +export function pendingPreparedStackExtendConditionStateStackToJSON( + pendingPreparedStackExtendConditionStateStack: + PendingPreparedStackExtendConditionStateStack, ): string { return JSON.stringify( - CurrentReleaseOverrideConditionState$outboundSchema.parse( - currentReleaseOverrideConditionState, + PendingPreparedStackExtendConditionStateStack$outboundSchema.parse( + pendingPreparedStackExtendConditionStateStack, ), ); } /** @internal */ -export type CurrentReleaseOverrideStateConditionUnion$Outbound = - | CurrentReleaseOverrideConditionState$Outbound +export type PendingPreparedStackExtendStateStackConditionUnion$Outbound = + | PendingPreparedStackExtendConditionStateStack$Outbound | any; /** @internal */ -export const CurrentReleaseOverrideStateConditionUnion$outboundSchema: +export const PendingPreparedStackExtendStateStackConditionUnion$outboundSchema: z.ZodType< - CurrentReleaseOverrideStateConditionUnion$Outbound, - CurrentReleaseOverrideStateConditionUnion + PendingPreparedStackExtendStateStackConditionUnion$Outbound, + PendingPreparedStackExtendStateStackConditionUnion > = z.union([ - z.lazy(() => CurrentReleaseOverrideConditionState$outboundSchema), + z.lazy(() => PendingPreparedStackExtendConditionStateStack$outboundSchema), z.any(), ]); -export function currentReleaseOverrideStateConditionUnionToJSON( - currentReleaseOverrideStateConditionUnion: - CurrentReleaseOverrideStateConditionUnion, +export function pendingPreparedStackExtendStateStackConditionUnionToJSON( + pendingPreparedStackExtendStateStackConditionUnion: + PendingPreparedStackExtendStateStackConditionUnion, ): string { return JSON.stringify( - CurrentReleaseOverrideStateConditionUnion$outboundSchema.parse( - currentReleaseOverrideStateConditionUnion, + PendingPreparedStackExtendStateStackConditionUnion$outboundSchema.parse( + pendingPreparedStackExtendStateStackConditionUnion, ), ); } /** @internal */ -export type SyncReconcileRequestCurrentReleaseOverrideGcpStack$Outbound = { +export type SyncReconcileRequestPendingPreparedStackExtendGcpStack$Outbound = { condition?: - | CurrentReleaseOverrideConditionState$Outbound + | PendingPreparedStackExtendConditionStateStack$Outbound | any | null | undefined; @@ -13352,66 +19675,68 @@ export type SyncReconcileRequestCurrentReleaseOverrideGcpStack$Outbound = { }; /** @internal */ -export const SyncReconcileRequestCurrentReleaseOverrideGcpStack$outboundSchema: +export const SyncReconcileRequestPendingPreparedStackExtendGcpStack$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseOverrideGcpStack$Outbound, - SyncReconcileRequestCurrentReleaseOverrideGcpStack + SyncReconcileRequestPendingPreparedStackExtendGcpStack$Outbound, + SyncReconcileRequestPendingPreparedStackExtendGcpStack > = z.object({ condition: z.nullable( z.union([ - z.lazy(() => CurrentReleaseOverrideConditionState$outboundSchema), + z.lazy(() => + PendingPreparedStackExtendConditionStateStack$outboundSchema + ), z.any(), ]), ).optional(), scope: z.string(), }); -export function syncReconcileRequestCurrentReleaseOverrideGcpStackToJSON( - syncReconcileRequestCurrentReleaseOverrideGcpStack: - SyncReconcileRequestCurrentReleaseOverrideGcpStack, +export function syncReconcileRequestPendingPreparedStackExtendGcpStackToJSON( + syncReconcileRequestPendingPreparedStackExtendGcpStack: + SyncReconcileRequestPendingPreparedStackExtendGcpStack, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseOverrideGcpStack$outboundSchema.parse( - syncReconcileRequestCurrentReleaseOverrideGcpStack, + SyncReconcileRequestPendingPreparedStackExtendGcpStack$outboundSchema.parse( + syncReconcileRequestPendingPreparedStackExtendGcpStack, ), ); } /** @internal */ -export type SyncReconcileRequestCurrentReleaseOverrideGcpBinding$Outbound = { - resource?: CurrentReleaseOverrideStateGcpResource$Outbound | undefined; - stack?: - | SyncReconcileRequestCurrentReleaseOverrideGcpStack$Outbound - | undefined; -}; +export type SyncReconcileRequestPendingPreparedStackExtendGcpBinding$Outbound = + { + resource?: PendingPreparedStackExtendStateGcpResource$Outbound | undefined; + stack?: + | SyncReconcileRequestPendingPreparedStackExtendGcpStack$Outbound + | undefined; + }; /** @internal */ -export const SyncReconcileRequestCurrentReleaseOverrideGcpBinding$outboundSchema: +export const SyncReconcileRequestPendingPreparedStackExtendGcpBinding$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseOverrideGcpBinding$Outbound, - SyncReconcileRequestCurrentReleaseOverrideGcpBinding + SyncReconcileRequestPendingPreparedStackExtendGcpBinding$Outbound, + SyncReconcileRequestPendingPreparedStackExtendGcpBinding > = z.object({ resource: z.lazy(() => - CurrentReleaseOverrideStateGcpResource$outboundSchema + PendingPreparedStackExtendStateGcpResource$outboundSchema ).optional(), stack: z.lazy(() => - SyncReconcileRequestCurrentReleaseOverrideGcpStack$outboundSchema + SyncReconcileRequestPendingPreparedStackExtendGcpStack$outboundSchema ).optional(), }); -export function syncReconcileRequestCurrentReleaseOverrideGcpBindingToJSON( - syncReconcileRequestCurrentReleaseOverrideGcpBinding: - SyncReconcileRequestCurrentReleaseOverrideGcpBinding, +export function syncReconcileRequestPendingPreparedStackExtendGcpBindingToJSON( + syncReconcileRequestPendingPreparedStackExtendGcpBinding: + SyncReconcileRequestPendingPreparedStackExtendGcpBinding, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseOverrideGcpBinding$outboundSchema.parse( - syncReconcileRequestCurrentReleaseOverrideGcpBinding, - ), + SyncReconcileRequestPendingPreparedStackExtendGcpBinding$outboundSchema + .parse(syncReconcileRequestPendingPreparedStackExtendGcpBinding), ); } /** @internal */ -export type SyncReconcileRequestCurrentReleaseOverrideGcpGrant$Outbound = { +export type SyncReconcileRequestPendingPreparedStackExtendGcpGrant$Outbound = { actions?: Array | null | undefined; dataActions?: Array | null | undefined; permissions?: Array | null | undefined; @@ -13420,10 +19745,10 @@ export type SyncReconcileRequestCurrentReleaseOverrideGcpGrant$Outbound = { }; /** @internal */ -export const SyncReconcileRequestCurrentReleaseOverrideGcpGrant$outboundSchema: +export const SyncReconcileRequestPendingPreparedStackExtendGcpGrant$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseOverrideGcpGrant$Outbound, - SyncReconcileRequestCurrentReleaseOverrideGcpGrant + SyncReconcileRequestPendingPreparedStackExtendGcpGrant$Outbound, + SyncReconcileRequestPendingPreparedStackExtendGcpGrant > = z.object({ actions: z.nullable(z.array(z.string())).optional(), dataActions: z.nullable(z.array(z.string())).optional(), @@ -13432,231 +19757,266 @@ export const SyncReconcileRequestCurrentReleaseOverrideGcpGrant$outboundSchema: residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function syncReconcileRequestCurrentReleaseOverrideGcpGrantToJSON( - syncReconcileRequestCurrentReleaseOverrideGcpGrant: - SyncReconcileRequestCurrentReleaseOverrideGcpGrant, +export function syncReconcileRequestPendingPreparedStackExtendGcpGrantToJSON( + syncReconcileRequestPendingPreparedStackExtendGcpGrant: + SyncReconcileRequestPendingPreparedStackExtendGcpGrant, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseOverrideGcpGrant$outboundSchema.parse( - syncReconcileRequestCurrentReleaseOverrideGcpGrant, + SyncReconcileRequestPendingPreparedStackExtendGcpGrant$outboundSchema.parse( + syncReconcileRequestPendingPreparedStackExtendGcpGrant, ), ); } /** @internal */ -export type SyncReconcileRequestCurrentReleaseOverrideGcp$Outbound = { - binding: SyncReconcileRequestCurrentReleaseOverrideGcpBinding$Outbound; +export type SyncReconcileRequestPendingPreparedStackExtendGcp$Outbound = { + binding: SyncReconcileRequestPendingPreparedStackExtendGcpBinding$Outbound; description?: string | null | undefined; - grant: SyncReconcileRequestCurrentReleaseOverrideGcpGrant$Outbound; + grant: SyncReconcileRequestPendingPreparedStackExtendGcpGrant$Outbound; label?: string | null | undefined; }; /** @internal */ -export const SyncReconcileRequestCurrentReleaseOverrideGcp$outboundSchema: +export const SyncReconcileRequestPendingPreparedStackExtendGcp$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseOverrideGcp$Outbound, - SyncReconcileRequestCurrentReleaseOverrideGcp + SyncReconcileRequestPendingPreparedStackExtendGcp$Outbound, + SyncReconcileRequestPendingPreparedStackExtendGcp > = z.object({ binding: z.lazy(() => - SyncReconcileRequestCurrentReleaseOverrideGcpBinding$outboundSchema + SyncReconcileRequestPendingPreparedStackExtendGcpBinding$outboundSchema ), description: z.nullable(z.string()).optional(), grant: z.lazy(() => - SyncReconcileRequestCurrentReleaseOverrideGcpGrant$outboundSchema + SyncReconcileRequestPendingPreparedStackExtendGcpGrant$outboundSchema ), label: z.nullable(z.string()).optional(), }); -export function syncReconcileRequestCurrentReleaseOverrideGcpToJSON( - syncReconcileRequestCurrentReleaseOverrideGcp: - SyncReconcileRequestCurrentReleaseOverrideGcp, +export function syncReconcileRequestPendingPreparedStackExtendGcpToJSON( + syncReconcileRequestPendingPreparedStackExtendGcp: + SyncReconcileRequestPendingPreparedStackExtendGcp, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseOverrideGcp$outboundSchema.parse( - syncReconcileRequestCurrentReleaseOverrideGcp, + SyncReconcileRequestPendingPreparedStackExtendGcp$outboundSchema.parse( + syncReconcileRequestPendingPreparedStackExtendGcp, ), ); } /** @internal */ -export type SyncReconcileRequestCurrentReleaseOverridePlatforms$Outbound = { +export type SyncReconcileRequestPendingPreparedStackExtendPlatforms$Outbound = { aws?: - | Array + | Array | null | undefined; azure?: - | Array + | Array | null | undefined; gcp?: - | Array + | Array | null | undefined; }; /** @internal */ -export const SyncReconcileRequestCurrentReleaseOverridePlatforms$outboundSchema: +export const SyncReconcileRequestPendingPreparedStackExtendPlatforms$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseOverridePlatforms$Outbound, - SyncReconcileRequestCurrentReleaseOverridePlatforms + SyncReconcileRequestPendingPreparedStackExtendPlatforms$Outbound, + SyncReconcileRequestPendingPreparedStackExtendPlatforms > = z.object({ aws: z.nullable( z.array(z.lazy(() => - SyncReconcileRequestCurrentReleaseOverrideAw$outboundSchema + SyncReconcileRequestPendingPreparedStackExtendAw$outboundSchema )), ).optional(), azure: z.nullable( z.array(z.lazy(() => - SyncReconcileRequestCurrentReleaseOverrideAzure$outboundSchema + SyncReconcileRequestPendingPreparedStackExtendAzure$outboundSchema )), ).optional(), gcp: z.nullable( z.array(z.lazy(() => - SyncReconcileRequestCurrentReleaseOverrideGcp$outboundSchema + SyncReconcileRequestPendingPreparedStackExtendGcp$outboundSchema )), ).optional(), }); -export function syncReconcileRequestCurrentReleaseOverridePlatformsToJSON( - syncReconcileRequestCurrentReleaseOverridePlatforms: - SyncReconcileRequestCurrentReleaseOverridePlatforms, +export function syncReconcileRequestPendingPreparedStackExtendPlatformsToJSON( + syncReconcileRequestPendingPreparedStackExtendPlatforms: + SyncReconcileRequestPendingPreparedStackExtendPlatforms, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseOverridePlatforms$outboundSchema.parse( - syncReconcileRequestCurrentReleaseOverridePlatforms, - ), + SyncReconcileRequestPendingPreparedStackExtendPlatforms$outboundSchema + .parse(syncReconcileRequestPendingPreparedStackExtendPlatforms), ); } /** @internal */ -export type SyncReconcileRequestCurrentReleaseOverride$Outbound = { +export type SyncReconcileRequestPendingPreparedStackExtend$Outbound = { description: string; id: string; - platforms: SyncReconcileRequestCurrentReleaseOverridePlatforms$Outbound; + platforms: SyncReconcileRequestPendingPreparedStackExtendPlatforms$Outbound; }; /** @internal */ -export const SyncReconcileRequestCurrentReleaseOverride$outboundSchema: +export const SyncReconcileRequestPendingPreparedStackExtend$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseOverride$Outbound, - SyncReconcileRequestCurrentReleaseOverride + SyncReconcileRequestPendingPreparedStackExtend$Outbound, + SyncReconcileRequestPendingPreparedStackExtend > = z.object({ description: z.string(), id: z.string(), platforms: z.lazy(() => - SyncReconcileRequestCurrentReleaseOverridePlatforms$outboundSchema + SyncReconcileRequestPendingPreparedStackExtendPlatforms$outboundSchema ), }); -export function syncReconcileRequestCurrentReleaseOverrideToJSON( - syncReconcileRequestCurrentReleaseOverride: - SyncReconcileRequestCurrentReleaseOverride, +export function syncReconcileRequestPendingPreparedStackExtendToJSON( + syncReconcileRequestPendingPreparedStackExtend: + SyncReconcileRequestPendingPreparedStackExtend, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseOverride$outboundSchema.parse( - syncReconcileRequestCurrentReleaseOverride, + SyncReconcileRequestPendingPreparedStackExtend$outboundSchema.parse( + syncReconcileRequestPendingPreparedStackExtend, ), ); } /** @internal */ -export type SyncReconcileRequestCurrentReleaseOverrideUnion$Outbound = - | SyncReconcileRequestCurrentReleaseOverride$Outbound +export type SyncReconcileRequestPendingPreparedStackExtendUnion$Outbound = + | SyncReconcileRequestPendingPreparedStackExtend$Outbound | string; /** @internal */ -export const SyncReconcileRequestCurrentReleaseOverrideUnion$outboundSchema: +export const SyncReconcileRequestPendingPreparedStackExtendUnion$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseOverrideUnion$Outbound, - SyncReconcileRequestCurrentReleaseOverrideUnion + SyncReconcileRequestPendingPreparedStackExtendUnion$Outbound, + SyncReconcileRequestPendingPreparedStackExtendUnion > = z.union([ - z.lazy(() => SyncReconcileRequestCurrentReleaseOverride$outboundSchema), + z.lazy(() => SyncReconcileRequestPendingPreparedStackExtend$outboundSchema), z.string(), ]); -export function syncReconcileRequestCurrentReleaseOverrideUnionToJSON( - syncReconcileRequestCurrentReleaseOverrideUnion: - SyncReconcileRequestCurrentReleaseOverrideUnion, +export function syncReconcileRequestPendingPreparedStackExtendUnionToJSON( + syncReconcileRequestPendingPreparedStackExtendUnion: + SyncReconcileRequestPendingPreparedStackExtendUnion, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseOverrideUnion$outboundSchema.parse( - syncReconcileRequestCurrentReleaseOverrideUnion, + SyncReconcileRequestPendingPreparedStackExtendUnion$outboundSchema.parse( + syncReconcileRequestPendingPreparedStackExtendUnion, ), ); } /** @internal */ -export type SyncReconcileRequestCurrentReleaseManagement2$Outbound = { - override: { +export type SyncReconcileRequestPendingPreparedStackManagement1$Outbound = { + extend: { [k: string]: Array< - SyncReconcileRequestCurrentReleaseOverride$Outbound | string + SyncReconcileRequestPendingPreparedStackExtend$Outbound | string >; }; }; /** @internal */ -export const SyncReconcileRequestCurrentReleaseManagement2$outboundSchema: +export const SyncReconcileRequestPendingPreparedStackManagement1$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseManagement2$Outbound, - SyncReconcileRequestCurrentReleaseManagement2 + SyncReconcileRequestPendingPreparedStackManagement1$Outbound, + SyncReconcileRequestPendingPreparedStackManagement1 > = z.object({ - override: z.record( + extend: z.record( z.string(), z.array(z.union([ - z.lazy(() => SyncReconcileRequestCurrentReleaseOverride$outboundSchema), + z.lazy(() => + SyncReconcileRequestPendingPreparedStackExtend$outboundSchema + ), z.string(), ])), ), }); -export function syncReconcileRequestCurrentReleaseManagement2ToJSON( - syncReconcileRequestCurrentReleaseManagement2: - SyncReconcileRequestCurrentReleaseManagement2, +export function syncReconcileRequestPendingPreparedStackManagement1ToJSON( + syncReconcileRequestPendingPreparedStackManagement1: + SyncReconcileRequestPendingPreparedStackManagement1, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseManagement2$outboundSchema.parse( - syncReconcileRequestCurrentReleaseManagement2, + SyncReconcileRequestPendingPreparedStackManagement1$outboundSchema.parse( + syncReconcileRequestPendingPreparedStackManagement1, ), ); } /** @internal */ -export type CurrentReleaseExtendStateAwResource$Outbound = { +export type SyncReconcileRequestPendingPreparedStackManagementUnion$Outbound = + | SyncReconcileRequestPendingPreparedStackManagement1$Outbound + | SyncReconcileRequestPendingPreparedStackManagement2$Outbound + | string; + +/** @internal */ +export const SyncReconcileRequestPendingPreparedStackManagementUnion$outboundSchema: + z.ZodType< + SyncReconcileRequestPendingPreparedStackManagementUnion$Outbound, + SyncReconcileRequestPendingPreparedStackManagementUnion + > = z.union([ + z.lazy(() => + SyncReconcileRequestPendingPreparedStackManagement1$outboundSchema + ), + z.lazy(() => + SyncReconcileRequestPendingPreparedStackManagement2$outboundSchema + ), + SyncReconcileRequestPendingPreparedStackManagementEnum$outboundSchema, + ]); + +export function syncReconcileRequestPendingPreparedStackManagementUnionToJSON( + syncReconcileRequestPendingPreparedStackManagementUnion: + SyncReconcileRequestPendingPreparedStackManagementUnion, +): string { + return JSON.stringify( + SyncReconcileRequestPendingPreparedStackManagementUnion$outboundSchema + .parse(syncReconcileRequestPendingPreparedStackManagementUnion), + ); +} + +/** @internal */ +export type PendingPreparedStackProfileStateAwResource$Outbound = { condition?: { [k: string]: { [k: string]: string } } | null | undefined; resources: Array; }; /** @internal */ -export const CurrentReleaseExtendStateAwResource$outboundSchema: z.ZodType< - CurrentReleaseExtendStateAwResource$Outbound, - CurrentReleaseExtendStateAwResource -> = z.object({ - condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) - .optional(), - resources: z.array(z.string()), -}); +export const PendingPreparedStackProfileStateAwResource$outboundSchema: + z.ZodType< + PendingPreparedStackProfileStateAwResource$Outbound, + PendingPreparedStackProfileStateAwResource + > = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); -export function currentReleaseExtendStateAwResourceToJSON( - currentReleaseExtendStateAwResource: CurrentReleaseExtendStateAwResource, +export function pendingPreparedStackProfileStateAwResourceToJSON( + pendingPreparedStackProfileStateAwResource: + PendingPreparedStackProfileStateAwResource, ): string { return JSON.stringify( - CurrentReleaseExtendStateAwResource$outboundSchema.parse( - currentReleaseExtendStateAwResource, + PendingPreparedStackProfileStateAwResource$outboundSchema.parse( + pendingPreparedStackProfileStateAwResource, ), ); } /** @internal */ -export type SyncReconcileRequestCurrentReleaseExtendAwStack$Outbound = { +export type SyncReconcileRequestPendingPreparedStackProfileAwStack$Outbound = { condition?: { [k: string]: { [k: string]: string } } | null | undefined; resources: Array; }; /** @internal */ -export const SyncReconcileRequestCurrentReleaseExtendAwStack$outboundSchema: +export const SyncReconcileRequestPendingPreparedStackProfileAwStack$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseExtendAwStack$Outbound, - SyncReconcileRequestCurrentReleaseExtendAwStack + SyncReconcileRequestPendingPreparedStackProfileAwStack$Outbound, + SyncReconcileRequestPendingPreparedStackProfileAwStack > = z.object({ condition: z.nullable( z.record(z.string(), z.record(z.string(), z.string())), @@ -13664,55 +20024,57 @@ export const SyncReconcileRequestCurrentReleaseExtendAwStack$outboundSchema: resources: z.array(z.string()), }); -export function syncReconcileRequestCurrentReleaseExtendAwStackToJSON( - syncReconcileRequestCurrentReleaseExtendAwStack: - SyncReconcileRequestCurrentReleaseExtendAwStack, +export function syncReconcileRequestPendingPreparedStackProfileAwStackToJSON( + syncReconcileRequestPendingPreparedStackProfileAwStack: + SyncReconcileRequestPendingPreparedStackProfileAwStack, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseExtendAwStack$outboundSchema.parse( - syncReconcileRequestCurrentReleaseExtendAwStack, + SyncReconcileRequestPendingPreparedStackProfileAwStack$outboundSchema.parse( + syncReconcileRequestPendingPreparedStackProfileAwStack, ), ); } /** @internal */ -export type SyncReconcileRequestCurrentReleaseExtendAwBinding$Outbound = { - resource?: CurrentReleaseExtendStateAwResource$Outbound | undefined; - stack?: SyncReconcileRequestCurrentReleaseExtendAwStack$Outbound | undefined; -}; +export type SyncReconcileRequestPendingPreparedStackProfileAwBinding$Outbound = + { + resource?: PendingPreparedStackProfileStateAwResource$Outbound | undefined; + stack?: + | SyncReconcileRequestPendingPreparedStackProfileAwStack$Outbound + | undefined; + }; /** @internal */ -export const SyncReconcileRequestCurrentReleaseExtendAwBinding$outboundSchema: +export const SyncReconcileRequestPendingPreparedStackProfileAwBinding$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseExtendAwBinding$Outbound, - SyncReconcileRequestCurrentReleaseExtendAwBinding + SyncReconcileRequestPendingPreparedStackProfileAwBinding$Outbound, + SyncReconcileRequestPendingPreparedStackProfileAwBinding > = z.object({ - resource: z.lazy(() => CurrentReleaseExtendStateAwResource$outboundSchema) - .optional(), + resource: z.lazy(() => + PendingPreparedStackProfileStateAwResource$outboundSchema + ).optional(), stack: z.lazy(() => - SyncReconcileRequestCurrentReleaseExtendAwStack$outboundSchema + SyncReconcileRequestPendingPreparedStackProfileAwStack$outboundSchema ).optional(), }); -export function syncReconcileRequestCurrentReleaseExtendAwBindingToJSON( - syncReconcileRequestCurrentReleaseExtendAwBinding: - SyncReconcileRequestCurrentReleaseExtendAwBinding, +export function syncReconcileRequestPendingPreparedStackProfileAwBindingToJSON( + syncReconcileRequestPendingPreparedStackProfileAwBinding: + SyncReconcileRequestPendingPreparedStackProfileAwBinding, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseExtendAwBinding$outboundSchema.parse( - syncReconcileRequestCurrentReleaseExtendAwBinding, - ), + SyncReconcileRequestPendingPreparedStackProfileAwBinding$outboundSchema + .parse(syncReconcileRequestPendingPreparedStackProfileAwBinding), ); } /** @internal */ -export const SyncReconcileRequestCurrentReleaseExtendEffect$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestCurrentReleaseExtendEffect, - ); +export const SyncReconcileRequestPendingPreparedStackProfileEffect$outboundSchema: + z.ZodEnum = z + .enum(SyncReconcileRequestPendingPreparedStackProfileEffect); /** @internal */ -export type SyncReconcileRequestCurrentReleaseExtendAwGrant$Outbound = { +export type SyncReconcileRequestPendingPreparedStackProfileAwGrant$Outbound = { actions?: Array | null | undefined; dataActions?: Array | null | undefined; permissions?: Array | null | undefined; @@ -13721,10 +20083,10 @@ export type SyncReconcileRequestCurrentReleaseExtendAwGrant$Outbound = { }; /** @internal */ -export const SyncReconcileRequestCurrentReleaseExtendAwGrant$outboundSchema: +export const SyncReconcileRequestPendingPreparedStackProfileAwGrant$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseExtendAwGrant$Outbound, - SyncReconcileRequestCurrentReleaseExtendAwGrant + SyncReconcileRequestPendingPreparedStackProfileAwGrant$Outbound, + SyncReconcileRequestPendingPreparedStackProfileAwGrant > = z.object({ actions: z.nullable(z.array(z.string())).optional(), dataActions: z.nullable(z.array(z.string())).optional(), @@ -13733,151 +20095,155 @@ export const SyncReconcileRequestCurrentReleaseExtendAwGrant$outboundSchema: residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function syncReconcileRequestCurrentReleaseExtendAwGrantToJSON( - syncReconcileRequestCurrentReleaseExtendAwGrant: - SyncReconcileRequestCurrentReleaseExtendAwGrant, +export function syncReconcileRequestPendingPreparedStackProfileAwGrantToJSON( + syncReconcileRequestPendingPreparedStackProfileAwGrant: + SyncReconcileRequestPendingPreparedStackProfileAwGrant, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseExtendAwGrant$outboundSchema.parse( - syncReconcileRequestCurrentReleaseExtendAwGrant, + SyncReconcileRequestPendingPreparedStackProfileAwGrant$outboundSchema.parse( + syncReconcileRequestPendingPreparedStackProfileAwGrant, ), ); } /** @internal */ -export type SyncReconcileRequestCurrentReleaseExtendAw$Outbound = { - binding: SyncReconcileRequestCurrentReleaseExtendAwBinding$Outbound; +export type SyncReconcileRequestPendingPreparedStackProfileAw$Outbound = { + binding: SyncReconcileRequestPendingPreparedStackProfileAwBinding$Outbound; description?: string | null | undefined; effect?: string | undefined; - grant: SyncReconcileRequestCurrentReleaseExtendAwGrant$Outbound; + grant: SyncReconcileRequestPendingPreparedStackProfileAwGrant$Outbound; label?: string | null | undefined; }; /** @internal */ -export const SyncReconcileRequestCurrentReleaseExtendAw$outboundSchema: +export const SyncReconcileRequestPendingPreparedStackProfileAw$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseExtendAw$Outbound, - SyncReconcileRequestCurrentReleaseExtendAw + SyncReconcileRequestPendingPreparedStackProfileAw$Outbound, + SyncReconcileRequestPendingPreparedStackProfileAw > = z.object({ binding: z.lazy(() => - SyncReconcileRequestCurrentReleaseExtendAwBinding$outboundSchema + SyncReconcileRequestPendingPreparedStackProfileAwBinding$outboundSchema ), description: z.nullable(z.string()).optional(), - effect: SyncReconcileRequestCurrentReleaseExtendEffect$outboundSchema + effect: SyncReconcileRequestPendingPreparedStackProfileEffect$outboundSchema .optional(), grant: z.lazy(() => - SyncReconcileRequestCurrentReleaseExtendAwGrant$outboundSchema + SyncReconcileRequestPendingPreparedStackProfileAwGrant$outboundSchema ), label: z.nullable(z.string()).optional(), }); -export function syncReconcileRequestCurrentReleaseExtendAwToJSON( - syncReconcileRequestCurrentReleaseExtendAw: - SyncReconcileRequestCurrentReleaseExtendAw, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseExtendAw$outboundSchema.parse( - syncReconcileRequestCurrentReleaseExtendAw, - ), - ); -} - -/** @internal */ -export type CurrentReleaseExtendStateAzureResource$Outbound = { - scope: string; -}; - -/** @internal */ -export const CurrentReleaseExtendStateAzureResource$outboundSchema: z.ZodType< - CurrentReleaseExtendStateAzureResource$Outbound, - CurrentReleaseExtendStateAzureResource -> = z.object({ - scope: z.string(), -}); - -export function currentReleaseExtendStateAzureResourceToJSON( - currentReleaseExtendStateAzureResource: - CurrentReleaseExtendStateAzureResource, +export function syncReconcileRequestPendingPreparedStackProfileAwToJSON( + syncReconcileRequestPendingPreparedStackProfileAw: + SyncReconcileRequestPendingPreparedStackProfileAw, ): string { return JSON.stringify( - CurrentReleaseExtendStateAzureResource$outboundSchema.parse( - currentReleaseExtendStateAzureResource, + SyncReconcileRequestPendingPreparedStackProfileAw$outboundSchema.parse( + syncReconcileRequestPendingPreparedStackProfileAw, ), ); } /** @internal */ -export type SyncReconcileRequestCurrentReleaseExtendAzureStack$Outbound = { +export type PendingPreparedStackProfileStateAzureResource$Outbound = { scope: string; }; /** @internal */ -export const SyncReconcileRequestCurrentReleaseExtendAzureStack$outboundSchema: +export const PendingPreparedStackProfileStateAzureResource$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseExtendAzureStack$Outbound, - SyncReconcileRequestCurrentReleaseExtendAzureStack + PendingPreparedStackProfileStateAzureResource$Outbound, + PendingPreparedStackProfileStateAzureResource > = z.object({ scope: z.string(), }); -export function syncReconcileRequestCurrentReleaseExtendAzureStackToJSON( - syncReconcileRequestCurrentReleaseExtendAzureStack: - SyncReconcileRequestCurrentReleaseExtendAzureStack, +export function pendingPreparedStackProfileStateAzureResourceToJSON( + pendingPreparedStackProfileStateAzureResource: + PendingPreparedStackProfileStateAzureResource, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseExtendAzureStack$outboundSchema.parse( - syncReconcileRequestCurrentReleaseExtendAzureStack, + PendingPreparedStackProfileStateAzureResource$outboundSchema.parse( + pendingPreparedStackProfileStateAzureResource, ), ); } /** @internal */ -export type SyncReconcileRequestCurrentReleaseExtendAzureBinding$Outbound = { - resource?: CurrentReleaseExtendStateAzureResource$Outbound | undefined; - stack?: - | SyncReconcileRequestCurrentReleaseExtendAzureStack$Outbound - | undefined; -}; +export type SyncReconcileRequestPendingPreparedStackProfileAzureStack$Outbound = + { + scope: string; + }; /** @internal */ -export const SyncReconcileRequestCurrentReleaseExtendAzureBinding$outboundSchema: +export const SyncReconcileRequestPendingPreparedStackProfileAzureStack$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseExtendAzureBinding$Outbound, - SyncReconcileRequestCurrentReleaseExtendAzureBinding + SyncReconcileRequestPendingPreparedStackProfileAzureStack$Outbound, + SyncReconcileRequestPendingPreparedStackProfileAzureStack + > = z.object({ + scope: z.string(), + }); + +export function syncReconcileRequestPendingPreparedStackProfileAzureStackToJSON( + syncReconcileRequestPendingPreparedStackProfileAzureStack: + SyncReconcileRequestPendingPreparedStackProfileAzureStack, +): string { + return JSON.stringify( + SyncReconcileRequestPendingPreparedStackProfileAzureStack$outboundSchema + .parse(syncReconcileRequestPendingPreparedStackProfileAzureStack), + ); +} + +/** @internal */ +export type SyncReconcileRequestPendingPreparedStackProfileAzureBinding$Outbound = + { + resource?: + | PendingPreparedStackProfileStateAzureResource$Outbound + | undefined; + stack?: + | SyncReconcileRequestPendingPreparedStackProfileAzureStack$Outbound + | undefined; + }; + +/** @internal */ +export const SyncReconcileRequestPendingPreparedStackProfileAzureBinding$outboundSchema: + z.ZodType< + SyncReconcileRequestPendingPreparedStackProfileAzureBinding$Outbound, + SyncReconcileRequestPendingPreparedStackProfileAzureBinding > = z.object({ resource: z.lazy(() => - CurrentReleaseExtendStateAzureResource$outboundSchema + PendingPreparedStackProfileStateAzureResource$outboundSchema ).optional(), stack: z.lazy(() => - SyncReconcileRequestCurrentReleaseExtendAzureStack$outboundSchema + SyncReconcileRequestPendingPreparedStackProfileAzureStack$outboundSchema ).optional(), }); -export function syncReconcileRequestCurrentReleaseExtendAzureBindingToJSON( - syncReconcileRequestCurrentReleaseExtendAzureBinding: - SyncReconcileRequestCurrentReleaseExtendAzureBinding, +export function syncReconcileRequestPendingPreparedStackProfileAzureBindingToJSON( + syncReconcileRequestPendingPreparedStackProfileAzureBinding: + SyncReconcileRequestPendingPreparedStackProfileAzureBinding, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseExtendAzureBinding$outboundSchema.parse( - syncReconcileRequestCurrentReleaseExtendAzureBinding, - ), + SyncReconcileRequestPendingPreparedStackProfileAzureBinding$outboundSchema + .parse(syncReconcileRequestPendingPreparedStackProfileAzureBinding), ); } /** @internal */ -export type SyncReconcileRequestCurrentReleaseExtendAzureGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; -}; +export type SyncReconcileRequestPendingPreparedStackProfileAzureGrant$Outbound = + { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; + }; /** @internal */ -export const SyncReconcileRequestCurrentReleaseExtendAzureGrant$outboundSchema: +export const SyncReconcileRequestPendingPreparedStackProfileAzureGrant$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseExtendAzureGrant$Outbound, - SyncReconcileRequestCurrentReleaseExtendAzureGrant + SyncReconcileRequestPendingPreparedStackProfileAzureGrant$Outbound, + SyncReconcileRequestPendingPreparedStackProfileAzureGrant > = z.object({ actions: z.nullable(z.array(z.string())).optional(), dataActions: z.nullable(z.array(z.string())).optional(), @@ -13886,109 +20252,110 @@ export const SyncReconcileRequestCurrentReleaseExtendAzureGrant$outboundSchema: residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function syncReconcileRequestCurrentReleaseExtendAzureGrantToJSON( - syncReconcileRequestCurrentReleaseExtendAzureGrant: - SyncReconcileRequestCurrentReleaseExtendAzureGrant, +export function syncReconcileRequestPendingPreparedStackProfileAzureGrantToJSON( + syncReconcileRequestPendingPreparedStackProfileAzureGrant: + SyncReconcileRequestPendingPreparedStackProfileAzureGrant, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseExtendAzureGrant$outboundSchema.parse( - syncReconcileRequestCurrentReleaseExtendAzureGrant, - ), + SyncReconcileRequestPendingPreparedStackProfileAzureGrant$outboundSchema + .parse(syncReconcileRequestPendingPreparedStackProfileAzureGrant), ); } /** @internal */ -export type SyncReconcileRequestCurrentReleaseExtendAzure$Outbound = { - binding: SyncReconcileRequestCurrentReleaseExtendAzureBinding$Outbound; +export type SyncReconcileRequestPendingPreparedStackProfileAzure$Outbound = { + binding: SyncReconcileRequestPendingPreparedStackProfileAzureBinding$Outbound; description?: string | null | undefined; - grant: SyncReconcileRequestCurrentReleaseExtendAzureGrant$Outbound; + grant: SyncReconcileRequestPendingPreparedStackProfileAzureGrant$Outbound; label?: string | null | undefined; }; /** @internal */ -export const SyncReconcileRequestCurrentReleaseExtendAzure$outboundSchema: +export const SyncReconcileRequestPendingPreparedStackProfileAzure$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseExtendAzure$Outbound, - SyncReconcileRequestCurrentReleaseExtendAzure + SyncReconcileRequestPendingPreparedStackProfileAzure$Outbound, + SyncReconcileRequestPendingPreparedStackProfileAzure > = z.object({ binding: z.lazy(() => - SyncReconcileRequestCurrentReleaseExtendAzureBinding$outboundSchema + SyncReconcileRequestPendingPreparedStackProfileAzureBinding$outboundSchema ), description: z.nullable(z.string()).optional(), grant: z.lazy(() => - SyncReconcileRequestCurrentReleaseExtendAzureGrant$outboundSchema + SyncReconcileRequestPendingPreparedStackProfileAzureGrant$outboundSchema ), label: z.nullable(z.string()).optional(), }); -export function syncReconcileRequestCurrentReleaseExtendAzureToJSON( - syncReconcileRequestCurrentReleaseExtendAzure: - SyncReconcileRequestCurrentReleaseExtendAzure, +export function syncReconcileRequestPendingPreparedStackProfileAzureToJSON( + syncReconcileRequestPendingPreparedStackProfileAzure: + SyncReconcileRequestPendingPreparedStackProfileAzure, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseExtendAzure$outboundSchema.parse( - syncReconcileRequestCurrentReleaseExtendAzure, + SyncReconcileRequestPendingPreparedStackProfileAzure$outboundSchema.parse( + syncReconcileRequestPendingPreparedStackProfileAzure, ), ); } /** @internal */ -export type CurrentReleaseExtendConditionStateResource$Outbound = { +export type PendingPreparedStackProfileConditionStateResource$Outbound = { expression: string; title: string; }; /** @internal */ -export const CurrentReleaseExtendConditionStateResource$outboundSchema: +export const PendingPreparedStackProfileConditionStateResource$outboundSchema: z.ZodType< - CurrentReleaseExtendConditionStateResource$Outbound, - CurrentReleaseExtendConditionStateResource + PendingPreparedStackProfileConditionStateResource$Outbound, + PendingPreparedStackProfileConditionStateResource > = z.object({ expression: z.string(), title: z.string(), }); -export function currentReleaseExtendConditionStateResourceToJSON( - currentReleaseExtendConditionStateResource: - CurrentReleaseExtendConditionStateResource, +export function pendingPreparedStackProfileConditionStateResourceToJSON( + pendingPreparedStackProfileConditionStateResource: + PendingPreparedStackProfileConditionStateResource, ): string { return JSON.stringify( - CurrentReleaseExtendConditionStateResource$outboundSchema.parse( - currentReleaseExtendConditionStateResource, + PendingPreparedStackProfileConditionStateResource$outboundSchema.parse( + pendingPreparedStackProfileConditionStateResource, ), ); } /** @internal */ -export type CurrentReleaseExtendStateResourceConditionUnion$Outbound = - | CurrentReleaseExtendConditionStateResource$Outbound +export type PendingPreparedStackProfileStateResourceConditionUnion$Outbound = + | PendingPreparedStackProfileConditionStateResource$Outbound | any; /** @internal */ -export const CurrentReleaseExtendStateResourceConditionUnion$outboundSchema: +export const PendingPreparedStackProfileStateResourceConditionUnion$outboundSchema: z.ZodType< - CurrentReleaseExtendStateResourceConditionUnion$Outbound, - CurrentReleaseExtendStateResourceConditionUnion + PendingPreparedStackProfileStateResourceConditionUnion$Outbound, + PendingPreparedStackProfileStateResourceConditionUnion > = z.union([ - z.lazy(() => CurrentReleaseExtendConditionStateResource$outboundSchema), + z.lazy(() => + PendingPreparedStackProfileConditionStateResource$outboundSchema + ), z.any(), ]); -export function currentReleaseExtendStateResourceConditionUnionToJSON( - currentReleaseExtendStateResourceConditionUnion: - CurrentReleaseExtendStateResourceConditionUnion, +export function pendingPreparedStackProfileStateResourceConditionUnionToJSON( + pendingPreparedStackProfileStateResourceConditionUnion: + PendingPreparedStackProfileStateResourceConditionUnion, ): string { return JSON.stringify( - CurrentReleaseExtendStateResourceConditionUnion$outboundSchema.parse( - currentReleaseExtendStateResourceConditionUnion, + PendingPreparedStackProfileStateResourceConditionUnion$outboundSchema.parse( + pendingPreparedStackProfileStateResourceConditionUnion, ), ); } /** @internal */ -export type CurrentReleaseExtendStateGcpResource$Outbound = { +export type PendingPreparedStackProfileStateGcpResource$Outbound = { condition?: - | CurrentReleaseExtendConditionStateResource$Outbound + | PendingPreparedStackProfileConditionStateResource$Outbound | any | null | undefined; @@ -13996,83 +20363,90 @@ export type CurrentReleaseExtendStateGcpResource$Outbound = { }; /** @internal */ -export const CurrentReleaseExtendStateGcpResource$outboundSchema: z.ZodType< - CurrentReleaseExtendStateGcpResource$Outbound, - CurrentReleaseExtendStateGcpResource -> = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => CurrentReleaseExtendConditionStateResource$outboundSchema), - z.any(), - ]), - ).optional(), - scope: z.string(), -}); +export const PendingPreparedStackProfileStateGcpResource$outboundSchema: + z.ZodType< + PendingPreparedStackProfileStateGcpResource$Outbound, + PendingPreparedStackProfileStateGcpResource + > = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => + PendingPreparedStackProfileConditionStateResource$outboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); -export function currentReleaseExtendStateGcpResourceToJSON( - currentReleaseExtendStateGcpResource: CurrentReleaseExtendStateGcpResource, +export function pendingPreparedStackProfileStateGcpResourceToJSON( + pendingPreparedStackProfileStateGcpResource: + PendingPreparedStackProfileStateGcpResource, ): string { return JSON.stringify( - CurrentReleaseExtendStateGcpResource$outboundSchema.parse( - currentReleaseExtendStateGcpResource, + PendingPreparedStackProfileStateGcpResource$outboundSchema.parse( + pendingPreparedStackProfileStateGcpResource, ), ); } /** @internal */ -export type CurrentReleaseExtendConditionState$Outbound = { +export type PendingPreparedStackProfileConditionStateStack$Outbound = { expression: string; title: string; }; /** @internal */ -export const CurrentReleaseExtendConditionState$outboundSchema: z.ZodType< - CurrentReleaseExtendConditionState$Outbound, - CurrentReleaseExtendConditionState -> = z.object({ - expression: z.string(), - title: z.string(), -}); +export const PendingPreparedStackProfileConditionStateStack$outboundSchema: + z.ZodType< + PendingPreparedStackProfileConditionStateStack$Outbound, + PendingPreparedStackProfileConditionStateStack + > = z.object({ + expression: z.string(), + title: z.string(), + }); -export function currentReleaseExtendConditionStateToJSON( - currentReleaseExtendConditionState: CurrentReleaseExtendConditionState, +export function pendingPreparedStackProfileConditionStateStackToJSON( + pendingPreparedStackProfileConditionStateStack: + PendingPreparedStackProfileConditionStateStack, ): string { return JSON.stringify( - CurrentReleaseExtendConditionState$outboundSchema.parse( - currentReleaseExtendConditionState, + PendingPreparedStackProfileConditionStateStack$outboundSchema.parse( + pendingPreparedStackProfileConditionStateStack, ), ); } /** @internal */ -export type CurrentReleaseExtendStateConditionUnion$Outbound = - | CurrentReleaseExtendConditionState$Outbound +export type PendingPreparedStackProfileStateStackConditionUnion$Outbound = + | PendingPreparedStackProfileConditionStateStack$Outbound | any; /** @internal */ -export const CurrentReleaseExtendStateConditionUnion$outboundSchema: z.ZodType< - CurrentReleaseExtendStateConditionUnion$Outbound, - CurrentReleaseExtendStateConditionUnion -> = z.union([ - z.lazy(() => CurrentReleaseExtendConditionState$outboundSchema), - z.any(), -]); +export const PendingPreparedStackProfileStateStackConditionUnion$outboundSchema: + z.ZodType< + PendingPreparedStackProfileStateStackConditionUnion$Outbound, + PendingPreparedStackProfileStateStackConditionUnion + > = z.union([ + z.lazy(() => PendingPreparedStackProfileConditionStateStack$outboundSchema), + z.any(), + ]); -export function currentReleaseExtendStateConditionUnionToJSON( - currentReleaseExtendStateConditionUnion: - CurrentReleaseExtendStateConditionUnion, +export function pendingPreparedStackProfileStateStackConditionUnionToJSON( + pendingPreparedStackProfileStateStackConditionUnion: + PendingPreparedStackProfileStateStackConditionUnion, ): string { return JSON.stringify( - CurrentReleaseExtendStateConditionUnion$outboundSchema.parse( - currentReleaseExtendStateConditionUnion, + PendingPreparedStackProfileStateStackConditionUnion$outboundSchema.parse( + pendingPreparedStackProfileStateStackConditionUnion, ), ); } /** @internal */ -export type SyncReconcileRequestCurrentReleaseExtendGcpStack$Outbound = { +export type SyncReconcileRequestPendingPreparedStackProfileGcpStack$Outbound = { condition?: - | CurrentReleaseExtendConditionState$Outbound + | PendingPreparedStackProfileConditionStateStack$Outbound | any | null | undefined; @@ -14080,63 +20454,67 @@ export type SyncReconcileRequestCurrentReleaseExtendGcpStack$Outbound = { }; /** @internal */ -export const SyncReconcileRequestCurrentReleaseExtendGcpStack$outboundSchema: +export const SyncReconcileRequestPendingPreparedStackProfileGcpStack$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseExtendGcpStack$Outbound, - SyncReconcileRequestCurrentReleaseExtendGcpStack + SyncReconcileRequestPendingPreparedStackProfileGcpStack$Outbound, + SyncReconcileRequestPendingPreparedStackProfileGcpStack > = z.object({ condition: z.nullable( z.union([ - z.lazy(() => CurrentReleaseExtendConditionState$outboundSchema), + z.lazy(() => + PendingPreparedStackProfileConditionStateStack$outboundSchema + ), z.any(), ]), ).optional(), scope: z.string(), }); -export function syncReconcileRequestCurrentReleaseExtendGcpStackToJSON( - syncReconcileRequestCurrentReleaseExtendGcpStack: - SyncReconcileRequestCurrentReleaseExtendGcpStack, +export function syncReconcileRequestPendingPreparedStackProfileGcpStackToJSON( + syncReconcileRequestPendingPreparedStackProfileGcpStack: + SyncReconcileRequestPendingPreparedStackProfileGcpStack, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseExtendGcpStack$outboundSchema.parse( - syncReconcileRequestCurrentReleaseExtendGcpStack, - ), + SyncReconcileRequestPendingPreparedStackProfileGcpStack$outboundSchema + .parse(syncReconcileRequestPendingPreparedStackProfileGcpStack), ); } /** @internal */ -export type SyncReconcileRequestCurrentReleaseExtendGcpBinding$Outbound = { - resource?: CurrentReleaseExtendStateGcpResource$Outbound | undefined; - stack?: SyncReconcileRequestCurrentReleaseExtendGcpStack$Outbound | undefined; -}; +export type SyncReconcileRequestPendingPreparedStackProfileGcpBinding$Outbound = + { + resource?: PendingPreparedStackProfileStateGcpResource$Outbound | undefined; + stack?: + | SyncReconcileRequestPendingPreparedStackProfileGcpStack$Outbound + | undefined; + }; /** @internal */ -export const SyncReconcileRequestCurrentReleaseExtendGcpBinding$outboundSchema: +export const SyncReconcileRequestPendingPreparedStackProfileGcpBinding$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseExtendGcpBinding$Outbound, - SyncReconcileRequestCurrentReleaseExtendGcpBinding + SyncReconcileRequestPendingPreparedStackProfileGcpBinding$Outbound, + SyncReconcileRequestPendingPreparedStackProfileGcpBinding > = z.object({ - resource: z.lazy(() => CurrentReleaseExtendStateGcpResource$outboundSchema) - .optional(), + resource: z.lazy(() => + PendingPreparedStackProfileStateGcpResource$outboundSchema + ).optional(), stack: z.lazy(() => - SyncReconcileRequestCurrentReleaseExtendGcpStack$outboundSchema + SyncReconcileRequestPendingPreparedStackProfileGcpStack$outboundSchema ).optional(), }); -export function syncReconcileRequestCurrentReleaseExtendGcpBindingToJSON( - syncReconcileRequestCurrentReleaseExtendGcpBinding: - SyncReconcileRequestCurrentReleaseExtendGcpBinding, +export function syncReconcileRequestPendingPreparedStackProfileGcpBindingToJSON( + syncReconcileRequestPendingPreparedStackProfileGcpBinding: + SyncReconcileRequestPendingPreparedStackProfileGcpBinding, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseExtendGcpBinding$outboundSchema.parse( - syncReconcileRequestCurrentReleaseExtendGcpBinding, - ), + SyncReconcileRequestPendingPreparedStackProfileGcpBinding$outboundSchema + .parse(syncReconcileRequestPendingPreparedStackProfileGcpBinding), ); } /** @internal */ -export type SyncReconcileRequestCurrentReleaseExtendGcpGrant$Outbound = { +export type SyncReconcileRequestPendingPreparedStackProfileGcpGrant$Outbound = { actions?: Array | null | undefined; dataActions?: Array | null | undefined; permissions?: Array | null | undefined; @@ -14145,10 +20523,10 @@ export type SyncReconcileRequestCurrentReleaseExtendGcpGrant$Outbound = { }; /** @internal */ -export const SyncReconcileRequestCurrentReleaseExtendGcpGrant$outboundSchema: +export const SyncReconcileRequestPendingPreparedStackProfileGcpGrant$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseExtendGcpGrant$Outbound, - SyncReconcileRequestCurrentReleaseExtendGcpGrant + SyncReconcileRequestPendingPreparedStackProfileGcpGrant$Outbound, + SyncReconcileRequestPendingPreparedStackProfileGcpGrant > = z.object({ actions: z.nullable(z.array(z.string())).optional(), dataActions: z.nullable(z.array(z.string())).optional(), @@ -14157,1879 +20535,1577 @@ export const SyncReconcileRequestCurrentReleaseExtendGcpGrant$outboundSchema: residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function syncReconcileRequestCurrentReleaseExtendGcpGrantToJSON( - syncReconcileRequestCurrentReleaseExtendGcpGrant: - SyncReconcileRequestCurrentReleaseExtendGcpGrant, +export function syncReconcileRequestPendingPreparedStackProfileGcpGrantToJSON( + syncReconcileRequestPendingPreparedStackProfileGcpGrant: + SyncReconcileRequestPendingPreparedStackProfileGcpGrant, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseExtendGcpGrant$outboundSchema.parse( - syncReconcileRequestCurrentReleaseExtendGcpGrant, - ), + SyncReconcileRequestPendingPreparedStackProfileGcpGrant$outboundSchema + .parse(syncReconcileRequestPendingPreparedStackProfileGcpGrant), ); } /** @internal */ -export type SyncReconcileRequestCurrentReleaseExtendGcp$Outbound = { - binding: SyncReconcileRequestCurrentReleaseExtendGcpBinding$Outbound; +export type SyncReconcileRequestPendingPreparedStackProfileGcp$Outbound = { + binding: SyncReconcileRequestPendingPreparedStackProfileGcpBinding$Outbound; description?: string | null | undefined; - grant: SyncReconcileRequestCurrentReleaseExtendGcpGrant$Outbound; + grant: SyncReconcileRequestPendingPreparedStackProfileGcpGrant$Outbound; label?: string | null | undefined; }; /** @internal */ -export const SyncReconcileRequestCurrentReleaseExtendGcp$outboundSchema: +export const SyncReconcileRequestPendingPreparedStackProfileGcp$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseExtendGcp$Outbound, - SyncReconcileRequestCurrentReleaseExtendGcp + SyncReconcileRequestPendingPreparedStackProfileGcp$Outbound, + SyncReconcileRequestPendingPreparedStackProfileGcp > = z.object({ binding: z.lazy(() => - SyncReconcileRequestCurrentReleaseExtendGcpBinding$outboundSchema + SyncReconcileRequestPendingPreparedStackProfileGcpBinding$outboundSchema ), description: z.nullable(z.string()).optional(), grant: z.lazy(() => - SyncReconcileRequestCurrentReleaseExtendGcpGrant$outboundSchema + SyncReconcileRequestPendingPreparedStackProfileGcpGrant$outboundSchema ), label: z.nullable(z.string()).optional(), }); -export function syncReconcileRequestCurrentReleaseExtendGcpToJSON( - syncReconcileRequestCurrentReleaseExtendGcp: - SyncReconcileRequestCurrentReleaseExtendGcp, +export function syncReconcileRequestPendingPreparedStackProfileGcpToJSON( + syncReconcileRequestPendingPreparedStackProfileGcp: + SyncReconcileRequestPendingPreparedStackProfileGcp, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseExtendGcp$outboundSchema.parse( - syncReconcileRequestCurrentReleaseExtendGcp, + SyncReconcileRequestPendingPreparedStackProfileGcp$outboundSchema.parse( + syncReconcileRequestPendingPreparedStackProfileGcp, ), ); } /** @internal */ -export type SyncReconcileRequestCurrentReleaseExtendPlatforms$Outbound = { - aws?: - | Array - | null - | undefined; - azure?: - | Array - | null - | undefined; - gcp?: - | Array - | null - | undefined; -}; +export type SyncReconcileRequestPendingPreparedStackProfilePlatforms$Outbound = + { + aws?: + | Array + | null + | undefined; + azure?: + | Array + | null + | undefined; + gcp?: + | Array + | null + | undefined; + }; /** @internal */ -export const SyncReconcileRequestCurrentReleaseExtendPlatforms$outboundSchema: +export const SyncReconcileRequestPendingPreparedStackProfilePlatforms$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseExtendPlatforms$Outbound, - SyncReconcileRequestCurrentReleaseExtendPlatforms + SyncReconcileRequestPendingPreparedStackProfilePlatforms$Outbound, + SyncReconcileRequestPendingPreparedStackProfilePlatforms > = z.object({ aws: z.nullable( z.array(z.lazy(() => - SyncReconcileRequestCurrentReleaseExtendAw$outboundSchema + SyncReconcileRequestPendingPreparedStackProfileAw$outboundSchema )), ).optional(), azure: z.nullable( z.array(z.lazy(() => - SyncReconcileRequestCurrentReleaseExtendAzure$outboundSchema + SyncReconcileRequestPendingPreparedStackProfileAzure$outboundSchema )), ).optional(), gcp: z.nullable( z.array(z.lazy(() => - SyncReconcileRequestCurrentReleaseExtendGcp$outboundSchema + SyncReconcileRequestPendingPreparedStackProfileGcp$outboundSchema )), ).optional(), }); -export function syncReconcileRequestCurrentReleaseExtendPlatformsToJSON( - syncReconcileRequestCurrentReleaseExtendPlatforms: - SyncReconcileRequestCurrentReleaseExtendPlatforms, +export function syncReconcileRequestPendingPreparedStackProfilePlatformsToJSON( + syncReconcileRequestPendingPreparedStackProfilePlatforms: + SyncReconcileRequestPendingPreparedStackProfilePlatforms, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseExtendPlatforms$outboundSchema.parse( - syncReconcileRequestCurrentReleaseExtendPlatforms, - ), + SyncReconcileRequestPendingPreparedStackProfilePlatforms$outboundSchema + .parse(syncReconcileRequestPendingPreparedStackProfilePlatforms), ); } /** @internal */ -export type SyncReconcileRequestCurrentReleaseExtend$Outbound = { +export type SyncReconcileRequestPendingPreparedStackProfile$Outbound = { description: string; id: string; - platforms: SyncReconcileRequestCurrentReleaseExtendPlatforms$Outbound; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseExtend$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseExtend$Outbound, - SyncReconcileRequestCurrentReleaseExtend -> = z.object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => - SyncReconcileRequestCurrentReleaseExtendPlatforms$outboundSchema - ), -}); - -export function syncReconcileRequestCurrentReleaseExtendToJSON( - syncReconcileRequestCurrentReleaseExtend: - SyncReconcileRequestCurrentReleaseExtend, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseExtend$outboundSchema.parse( - syncReconcileRequestCurrentReleaseExtend, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseExtendUnion$Outbound = - | SyncReconcileRequestCurrentReleaseExtend$Outbound - | string; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseExtendUnion$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseExtendUnion$Outbound, - SyncReconcileRequestCurrentReleaseExtendUnion - > = z.union([ - z.lazy(() => SyncReconcileRequestCurrentReleaseExtend$outboundSchema), - z.string(), - ]); - -export function syncReconcileRequestCurrentReleaseExtendUnionToJSON( - syncReconcileRequestCurrentReleaseExtendUnion: - SyncReconcileRequestCurrentReleaseExtendUnion, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseExtendUnion$outboundSchema.parse( - syncReconcileRequestCurrentReleaseExtendUnion, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseManagement1$Outbound = { - extend: { - [k: string]: Array< - SyncReconcileRequestCurrentReleaseExtend$Outbound | string - >; - }; + platforms: SyncReconcileRequestPendingPreparedStackProfilePlatforms$Outbound; }; /** @internal */ -export const SyncReconcileRequestCurrentReleaseManagement1$outboundSchema: +export const SyncReconcileRequestPendingPreparedStackProfile$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseManagement1$Outbound, - SyncReconcileRequestCurrentReleaseManagement1 + SyncReconcileRequestPendingPreparedStackProfile$Outbound, + SyncReconcileRequestPendingPreparedStackProfile > = z.object({ - extend: z.record( - z.string(), - z.array(z.union([ - z.lazy(() => SyncReconcileRequestCurrentReleaseExtend$outboundSchema), - z.string(), - ])), + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncReconcileRequestPendingPreparedStackProfilePlatforms$outboundSchema ), }); -export function syncReconcileRequestCurrentReleaseManagement1ToJSON( - syncReconcileRequestCurrentReleaseManagement1: - SyncReconcileRequestCurrentReleaseManagement1, +export function syncReconcileRequestPendingPreparedStackProfileToJSON( + syncReconcileRequestPendingPreparedStackProfile: + SyncReconcileRequestPendingPreparedStackProfile, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseManagement1$outboundSchema.parse( - syncReconcileRequestCurrentReleaseManagement1, + SyncReconcileRequestPendingPreparedStackProfile$outboundSchema.parse( + syncReconcileRequestPendingPreparedStackProfile, ), ); } /** @internal */ -export type SyncReconcileRequestCurrentReleaseManagementUnion$Outbound = - | SyncReconcileRequestCurrentReleaseManagement1$Outbound - | SyncReconcileRequestCurrentReleaseManagement2$Outbound +export type SyncReconcileRequestPendingPreparedStackProfileUnion$Outbound = + | SyncReconcileRequestPendingPreparedStackProfile$Outbound | string; /** @internal */ -export const SyncReconcileRequestCurrentReleaseManagementUnion$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseManagementUnion$Outbound, - SyncReconcileRequestCurrentReleaseManagementUnion - > = z.union([ - z.lazy(() => SyncReconcileRequestCurrentReleaseManagement1$outboundSchema), - z.lazy(() => SyncReconcileRequestCurrentReleaseManagement2$outboundSchema), - SyncReconcileRequestCurrentReleaseManagementEnum$outboundSchema, - ]); - -export function syncReconcileRequestCurrentReleaseManagementUnionToJSON( - syncReconcileRequestCurrentReleaseManagementUnion: - SyncReconcileRequestCurrentReleaseManagementUnion, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseManagementUnion$outboundSchema.parse( - syncReconcileRequestCurrentReleaseManagementUnion, - ), - ); -} - -/** @internal */ -export type CurrentReleaseProfileStateAwResource$Outbound = { - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - resources: Array; -}; - -/** @internal */ -export const CurrentReleaseProfileStateAwResource$outboundSchema: z.ZodType< - CurrentReleaseProfileStateAwResource$Outbound, - CurrentReleaseProfileStateAwResource -> = z.object({ - condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) - .optional(), - resources: z.array(z.string()), -}); - -export function currentReleaseProfileStateAwResourceToJSON( - currentReleaseProfileStateAwResource: CurrentReleaseProfileStateAwResource, -): string { - return JSON.stringify( - CurrentReleaseProfileStateAwResource$outboundSchema.parse( - currentReleaseProfileStateAwResource, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseProfileAwStack$Outbound = { - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - resources: Array; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseProfileAwStack$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseProfileAwStack$Outbound, - SyncReconcileRequestCurrentReleaseProfileAwStack - > = z.object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncReconcileRequestCurrentReleaseProfileAwStackToJSON( - syncReconcileRequestCurrentReleaseProfileAwStack: - SyncReconcileRequestCurrentReleaseProfileAwStack, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseProfileAwStack$outboundSchema.parse( - syncReconcileRequestCurrentReleaseProfileAwStack, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseProfileAwBinding$Outbound = { - resource?: CurrentReleaseProfileStateAwResource$Outbound | undefined; - stack?: SyncReconcileRequestCurrentReleaseProfileAwStack$Outbound | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseProfileAwBinding$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseProfileAwBinding$Outbound, - SyncReconcileRequestCurrentReleaseProfileAwBinding - > = z.object({ - resource: z.lazy(() => CurrentReleaseProfileStateAwResource$outboundSchema) - .optional(), - stack: z.lazy(() => - SyncReconcileRequestCurrentReleaseProfileAwStack$outboundSchema - ).optional(), - }); - -export function syncReconcileRequestCurrentReleaseProfileAwBindingToJSON( - syncReconcileRequestCurrentReleaseProfileAwBinding: - SyncReconcileRequestCurrentReleaseProfileAwBinding, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseProfileAwBinding$outboundSchema.parse( - syncReconcileRequestCurrentReleaseProfileAwBinding, - ), - ); -} - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseProfileEffect$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestCurrentReleaseProfileEffect, - ); - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseProfileAwGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseProfileAwGrant$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseProfileAwGrant$Outbound, - SyncReconcileRequestCurrentReleaseProfileAwGrant - > = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileRequestCurrentReleaseProfileAwGrantToJSON( - syncReconcileRequestCurrentReleaseProfileAwGrant: - SyncReconcileRequestCurrentReleaseProfileAwGrant, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseProfileAwGrant$outboundSchema.parse( - syncReconcileRequestCurrentReleaseProfileAwGrant, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseProfileAw$Outbound = { - binding: SyncReconcileRequestCurrentReleaseProfileAwBinding$Outbound; - description?: string | null | undefined; - effect?: string | undefined; - grant: SyncReconcileRequestCurrentReleaseProfileAwGrant$Outbound; - label?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseProfileAw$outboundSchema: +export const SyncReconcileRequestPendingPreparedStackProfileUnion$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseProfileAw$Outbound, - SyncReconcileRequestCurrentReleaseProfileAw - > = z.object({ - binding: z.lazy(() => - SyncReconcileRequestCurrentReleaseProfileAwBinding$outboundSchema - ), - description: z.nullable(z.string()).optional(), - effect: SyncReconcileRequestCurrentReleaseProfileEffect$outboundSchema - .optional(), - grant: z.lazy(() => - SyncReconcileRequestCurrentReleaseProfileAwGrant$outboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileRequestCurrentReleaseProfileAwToJSON( - syncReconcileRequestCurrentReleaseProfileAw: - SyncReconcileRequestCurrentReleaseProfileAw, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseProfileAw$outboundSchema.parse( - syncReconcileRequestCurrentReleaseProfileAw, - ), - ); -} - -/** @internal */ -export type CurrentReleaseProfileStateAzureResource$Outbound = { - scope: string; -}; - -/** @internal */ -export const CurrentReleaseProfileStateAzureResource$outboundSchema: z.ZodType< - CurrentReleaseProfileStateAzureResource$Outbound, - CurrentReleaseProfileStateAzureResource -> = z.object({ - scope: z.string(), -}); + SyncReconcileRequestPendingPreparedStackProfileUnion$Outbound, + SyncReconcileRequestPendingPreparedStackProfileUnion + > = z.union([ + z.lazy(() => + SyncReconcileRequestPendingPreparedStackProfile$outboundSchema + ), + z.string(), + ]); -export function currentReleaseProfileStateAzureResourceToJSON( - currentReleaseProfileStateAzureResource: - CurrentReleaseProfileStateAzureResource, +export function syncReconcileRequestPendingPreparedStackProfileUnionToJSON( + syncReconcileRequestPendingPreparedStackProfileUnion: + SyncReconcileRequestPendingPreparedStackProfileUnion, ): string { return JSON.stringify( - CurrentReleaseProfileStateAzureResource$outboundSchema.parse( - currentReleaseProfileStateAzureResource, + SyncReconcileRequestPendingPreparedStackProfileUnion$outboundSchema.parse( + syncReconcileRequestPendingPreparedStackProfileUnion, ), ); } /** @internal */ -export type SyncReconcileRequestCurrentReleaseProfileAzureStack$Outbound = { - scope: string; +export type SyncReconcileRequestPendingPreparedStackPermissions$Outbound = { + management?: + | SyncReconcileRequestPendingPreparedStackManagement1$Outbound + | SyncReconcileRequestPendingPreparedStackManagement2$Outbound + | string + | undefined; + profiles: { + [k: string]: { + [k: string]: Array< + SyncReconcileRequestPendingPreparedStackProfile$Outbound | string + >; + }; + }; }; /** @internal */ -export const SyncReconcileRequestCurrentReleaseProfileAzureStack$outboundSchema: +export const SyncReconcileRequestPendingPreparedStackPermissions$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseProfileAzureStack$Outbound, - SyncReconcileRequestCurrentReleaseProfileAzureStack + SyncReconcileRequestPendingPreparedStackPermissions$Outbound, + SyncReconcileRequestPendingPreparedStackPermissions > = z.object({ - scope: z.string(), + management: z.union([ + z.lazy(() => + SyncReconcileRequestPendingPreparedStackManagement1$outboundSchema + ), + z.lazy(() => + SyncReconcileRequestPendingPreparedStackManagement2$outboundSchema + ), + SyncReconcileRequestPendingPreparedStackManagementEnum$outboundSchema, + ]).optional(), + profiles: z.record( + z.string(), + z.record( + z.string(), + z.array( + z.union([ + z.lazy(() => + SyncReconcileRequestPendingPreparedStackProfile$outboundSchema + ), + z.string(), + ]), + ), + ), + ), }); -export function syncReconcileRequestCurrentReleaseProfileAzureStackToJSON( - syncReconcileRequestCurrentReleaseProfileAzureStack: - SyncReconcileRequestCurrentReleaseProfileAzureStack, +export function syncReconcileRequestPendingPreparedStackPermissionsToJSON( + syncReconcileRequestPendingPreparedStackPermissions: + SyncReconcileRequestPendingPreparedStackPermissions, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseProfileAzureStack$outboundSchema.parse( - syncReconcileRequestCurrentReleaseProfileAzureStack, + SyncReconcileRequestPendingPreparedStackPermissions$outboundSchema.parse( + syncReconcileRequestPendingPreparedStackPermissions, ), ); } /** @internal */ -export type SyncReconcileRequestCurrentReleaseProfileAzureBinding$Outbound = { - resource?: CurrentReleaseProfileStateAzureResource$Outbound | undefined; - stack?: - | SyncReconcileRequestCurrentReleaseProfileAzureStack$Outbound - | undefined; +export type SyncReconcileRequestPendingPreparedStackConfig$Outbound = { + id: string; + type: string; + [additionalProperties: string]: unknown; }; /** @internal */ -export const SyncReconcileRequestCurrentReleaseProfileAzureBinding$outboundSchema: +export const SyncReconcileRequestPendingPreparedStackConfig$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseProfileAzureBinding$Outbound, - SyncReconcileRequestCurrentReleaseProfileAzureBinding + SyncReconcileRequestPendingPreparedStackConfig$Outbound, + SyncReconcileRequestPendingPreparedStackConfig > = z.object({ - resource: z.lazy(() => - CurrentReleaseProfileStateAzureResource$outboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileRequestCurrentReleaseProfileAzureStack$outboundSchema - ).optional(), + id: z.string(), + type: z.string(), + additionalProperties: z.record(z.string(), z.nullable(z.any())).optional(), + }).transform((v) => { + return { + ...v.additionalProperties, + ...remap$(v, { + additionalProperties: null, + }), + }; }); -export function syncReconcileRequestCurrentReleaseProfileAzureBindingToJSON( - syncReconcileRequestCurrentReleaseProfileAzureBinding: - SyncReconcileRequestCurrentReleaseProfileAzureBinding, +export function syncReconcileRequestPendingPreparedStackConfigToJSON( + syncReconcileRequestPendingPreparedStackConfig: + SyncReconcileRequestPendingPreparedStackConfig, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseProfileAzureBinding$outboundSchema.parse( - syncReconcileRequestCurrentReleaseProfileAzureBinding, + SyncReconcileRequestPendingPreparedStackConfig$outboundSchema.parse( + syncReconcileRequestPendingPreparedStackConfig, ), ); } /** @internal */ -export type SyncReconcileRequestCurrentReleaseProfileAzureGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; +export type SyncReconcileRequestPendingPreparedStackDependency$Outbound = { + id: string; + type: string; }; /** @internal */ -export const SyncReconcileRequestCurrentReleaseProfileAzureGrant$outboundSchema: +export const SyncReconcileRequestPendingPreparedStackDependency$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseProfileAzureGrant$Outbound, - SyncReconcileRequestCurrentReleaseProfileAzureGrant + SyncReconcileRequestPendingPreparedStackDependency$Outbound, + SyncReconcileRequestPendingPreparedStackDependency > = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), + id: z.string(), + type: z.string(), }); -export function syncReconcileRequestCurrentReleaseProfileAzureGrantToJSON( - syncReconcileRequestCurrentReleaseProfileAzureGrant: - SyncReconcileRequestCurrentReleaseProfileAzureGrant, +export function syncReconcileRequestPendingPreparedStackDependencyToJSON( + syncReconcileRequestPendingPreparedStackDependency: + SyncReconcileRequestPendingPreparedStackDependency, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseProfileAzureGrant$outboundSchema.parse( - syncReconcileRequestCurrentReleaseProfileAzureGrant, + SyncReconcileRequestPendingPreparedStackDependency$outboundSchema.parse( + syncReconcileRequestPendingPreparedStackDependency, ), ); } /** @internal */ -export type SyncReconcileRequestCurrentReleaseProfileAzure$Outbound = { - binding: SyncReconcileRequestCurrentReleaseProfileAzureBinding$Outbound; - description?: string | null | undefined; - grant: SyncReconcileRequestCurrentReleaseProfileAzureGrant$Outbound; - label?: string | null | undefined; +export const PendingPreparedStackStateLifecycle$outboundSchema: z.ZodEnum< + typeof PendingPreparedStackStateLifecycle +> = z.enum(PendingPreparedStackStateLifecycle); + +/** @internal */ +export type SyncReconcileRequestPendingPreparedStackResources$Outbound = { + config: SyncReconcileRequestPendingPreparedStackConfig$Outbound; + dependencies: Array< + SyncReconcileRequestPendingPreparedStackDependency$Outbound + >; + enabledWhen?: string | null | undefined; + lifecycle: string; + remoteAccess?: boolean | undefined; }; /** @internal */ -export const SyncReconcileRequestCurrentReleaseProfileAzure$outboundSchema: +export const SyncReconcileRequestPendingPreparedStackResources$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseProfileAzure$Outbound, - SyncReconcileRequestCurrentReleaseProfileAzure + SyncReconcileRequestPendingPreparedStackResources$Outbound, + SyncReconcileRequestPendingPreparedStackResources > = z.object({ - binding: z.lazy(() => - SyncReconcileRequestCurrentReleaseProfileAzureBinding$outboundSchema + config: z.lazy(() => + SyncReconcileRequestPendingPreparedStackConfig$outboundSchema ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncReconcileRequestCurrentReleaseProfileAzureGrant$outboundSchema + dependencies: z.array( + z.lazy(() => + SyncReconcileRequestPendingPreparedStackDependency$outboundSchema + ), ), - label: z.nullable(z.string()).optional(), + enabledWhen: z.nullable(z.string()).optional(), + lifecycle: PendingPreparedStackStateLifecycle$outboundSchema, + remoteAccess: z.boolean().optional(), }); -export function syncReconcileRequestCurrentReleaseProfileAzureToJSON( - syncReconcileRequestCurrentReleaseProfileAzure: - SyncReconcileRequestCurrentReleaseProfileAzure, +export function syncReconcileRequestPendingPreparedStackResourcesToJSON( + syncReconcileRequestPendingPreparedStackResources: + SyncReconcileRequestPendingPreparedStackResources, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseProfileAzure$outboundSchema.parse( - syncReconcileRequestCurrentReleaseProfileAzure, + SyncReconcileRequestPendingPreparedStackResources$outboundSchema.parse( + syncReconcileRequestPendingPreparedStackResources, ), ); } /** @internal */ -export type CurrentReleaseProfileConditionStateResource$Outbound = { - expression: string; - title: string; +export const SyncReconcileRequestPendingPreparedStackSupportedPlatform$outboundSchema: + z.ZodEnum = + z.enum(SyncReconcileRequestPendingPreparedStackSupportedPlatform); + +/** @internal */ +export type SyncReconcileRequestPendingPreparedStack$Outbound = { + id: string; + inputs?: + | Array + | undefined; + permissions?: + | SyncReconcileRequestPendingPreparedStackPermissions$Outbound + | undefined; + resources: { + [k: string]: SyncReconcileRequestPendingPreparedStackResources$Outbound; + }; + supportedPlatforms?: Array | null | undefined; }; /** @internal */ -export const CurrentReleaseProfileConditionStateResource$outboundSchema: - z.ZodType< - CurrentReleaseProfileConditionStateResource$Outbound, - CurrentReleaseProfileConditionStateResource - > = z.object({ - expression: z.string(), - title: z.string(), - }); +export const SyncReconcileRequestPendingPreparedStack$outboundSchema: z.ZodType< + SyncReconcileRequestPendingPreparedStack$Outbound, + SyncReconcileRequestPendingPreparedStack +> = z.object({ + id: z.string(), + inputs: z.array( + z.lazy(() => SyncReconcileRequestPendingPreparedStackInput$outboundSchema), + ).optional(), + permissions: z.lazy(() => + SyncReconcileRequestPendingPreparedStackPermissions$outboundSchema + ).optional(), + resources: z.record( + z.string(), + z.lazy(() => + SyncReconcileRequestPendingPreparedStackResources$outboundSchema + ), + ), + supportedPlatforms: z.nullable( + z.array( + SyncReconcileRequestPendingPreparedStackSupportedPlatform$outboundSchema, + ), + ).optional(), +}); -export function currentReleaseProfileConditionStateResourceToJSON( - currentReleaseProfileConditionStateResource: - CurrentReleaseProfileConditionStateResource, +export function syncReconcileRequestPendingPreparedStackToJSON( + syncReconcileRequestPendingPreparedStack: + SyncReconcileRequestPendingPreparedStack, ): string { return JSON.stringify( - CurrentReleaseProfileConditionStateResource$outboundSchema.parse( - currentReleaseProfileConditionStateResource, + SyncReconcileRequestPendingPreparedStack$outboundSchema.parse( + syncReconcileRequestPendingPreparedStack, ), ); } /** @internal */ -export type CurrentReleaseProfileStateResourceConditionUnion$Outbound = - | CurrentReleaseProfileConditionStateResource$Outbound +export type SyncReconcileRequestPendingPreparedStackUnion$Outbound = + | SyncReconcileRequestPendingPreparedStack$Outbound | any; /** @internal */ -export const CurrentReleaseProfileStateResourceConditionUnion$outboundSchema: +export const SyncReconcileRequestPendingPreparedStackUnion$outboundSchema: z.ZodType< - CurrentReleaseProfileStateResourceConditionUnion$Outbound, - CurrentReleaseProfileStateResourceConditionUnion + SyncReconcileRequestPendingPreparedStackUnion$Outbound, + SyncReconcileRequestPendingPreparedStackUnion > = z.union([ - z.lazy(() => CurrentReleaseProfileConditionStateResource$outboundSchema), + z.lazy(() => SyncReconcileRequestPendingPreparedStack$outboundSchema), z.any(), ]); -export function currentReleaseProfileStateResourceConditionUnionToJSON( - currentReleaseProfileStateResourceConditionUnion: - CurrentReleaseProfileStateResourceConditionUnion, +export function syncReconcileRequestPendingPreparedStackUnionToJSON( + syncReconcileRequestPendingPreparedStackUnion: + SyncReconcileRequestPendingPreparedStackUnion, ): string { return JSON.stringify( - CurrentReleaseProfileStateResourceConditionUnion$outboundSchema.parse( - currentReleaseProfileStateResourceConditionUnion, + SyncReconcileRequestPendingPreparedStackUnion$outboundSchema.parse( + syncReconcileRequestPendingPreparedStackUnion, ), ); } /** @internal */ -export type CurrentReleaseProfileStateGcpResource$Outbound = { - condition?: - | CurrentReleaseProfileConditionStateResource$Outbound - | any - | null - | undefined; - scope: string; +export const SyncReconcileRequestPreparedStackTypeStringList$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestPreparedStackTypeStringList, + ); + +/** @internal */ +export type SyncReconcileRequestPreparedStackDefaultStringList$Outbound = { + type: string; + value: Array; }; /** @internal */ -export const CurrentReleaseProfileStateGcpResource$outboundSchema: z.ZodType< - CurrentReleaseProfileStateGcpResource$Outbound, - CurrentReleaseProfileStateGcpResource -> = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => CurrentReleaseProfileConditionStateResource$outboundSchema), - z.any(), - ]), - ).optional(), - scope: z.string(), -}); +export const SyncReconcileRequestPreparedStackDefaultStringList$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackDefaultStringList$Outbound, + SyncReconcileRequestPreparedStackDefaultStringList + > = z.object({ + type: SyncReconcileRequestPreparedStackTypeStringList$outboundSchema, + value: z.array(z.string()), + }); -export function currentReleaseProfileStateGcpResourceToJSON( - currentReleaseProfileStateGcpResource: CurrentReleaseProfileStateGcpResource, +export function syncReconcileRequestPreparedStackDefaultStringListToJSON( + syncReconcileRequestPreparedStackDefaultStringList: + SyncReconcileRequestPreparedStackDefaultStringList, ): string { return JSON.stringify( - CurrentReleaseProfileStateGcpResource$outboundSchema.parse( - currentReleaseProfileStateGcpResource, + SyncReconcileRequestPreparedStackDefaultStringList$outboundSchema.parse( + syncReconcileRequestPreparedStackDefaultStringList, ), ); } /** @internal */ -export type CurrentReleaseProfileConditionState$Outbound = { - expression: string; - title: string; +export const SyncReconcileRequestPreparedStackTypeBoolean$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestPreparedStackTypeBoolean, + ); + +/** @internal */ +export type SyncReconcileRequestPreparedStackDefaultBoolean$Outbound = { + type: string; + value: boolean; }; /** @internal */ -export const CurrentReleaseProfileConditionState$outboundSchema: z.ZodType< - CurrentReleaseProfileConditionState$Outbound, - CurrentReleaseProfileConditionState -> = z.object({ - expression: z.string(), - title: z.string(), -}); +export const SyncReconcileRequestPreparedStackDefaultBoolean$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackDefaultBoolean$Outbound, + SyncReconcileRequestPreparedStackDefaultBoolean + > = z.object({ + type: SyncReconcileRequestPreparedStackTypeBoolean$outboundSchema, + value: z.boolean(), + }); -export function currentReleaseProfileConditionStateToJSON( - currentReleaseProfileConditionState: CurrentReleaseProfileConditionState, +export function syncReconcileRequestPreparedStackDefaultBooleanToJSON( + syncReconcileRequestPreparedStackDefaultBoolean: + SyncReconcileRequestPreparedStackDefaultBoolean, ): string { return JSON.stringify( - CurrentReleaseProfileConditionState$outboundSchema.parse( - currentReleaseProfileConditionState, + SyncReconcileRequestPreparedStackDefaultBoolean$outboundSchema.parse( + syncReconcileRequestPreparedStackDefaultBoolean, ), ); } /** @internal */ -export type CurrentReleaseProfileStateConditionUnion$Outbound = - | CurrentReleaseProfileConditionState$Outbound - | any; - -/** @internal */ -export const CurrentReleaseProfileStateConditionUnion$outboundSchema: z.ZodType< - CurrentReleaseProfileStateConditionUnion$Outbound, - CurrentReleaseProfileStateConditionUnion -> = z.union([ - z.lazy(() => CurrentReleaseProfileConditionState$outboundSchema), - z.any(), -]); - -export function currentReleaseProfileStateConditionUnionToJSON( - currentReleaseProfileStateConditionUnion: - CurrentReleaseProfileStateConditionUnion, -): string { - return JSON.stringify( - CurrentReleaseProfileStateConditionUnion$outboundSchema.parse( - currentReleaseProfileStateConditionUnion, - ), +export const SyncReconcileRequestPreparedStackTypeNumber$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestPreparedStackTypeNumber, ); -} /** @internal */ -export type SyncReconcileRequestCurrentReleaseProfileGcpStack$Outbound = { - condition?: - | CurrentReleaseProfileConditionState$Outbound - | any - | null - | undefined; - scope: string; +export type SyncReconcileRequestPreparedStackDefaultNumber$Outbound = { + type: string; + value: string; }; /** @internal */ -export const SyncReconcileRequestCurrentReleaseProfileGcpStack$outboundSchema: +export const SyncReconcileRequestPreparedStackDefaultNumber$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseProfileGcpStack$Outbound, - SyncReconcileRequestCurrentReleaseProfileGcpStack + SyncReconcileRequestPreparedStackDefaultNumber$Outbound, + SyncReconcileRequestPreparedStackDefaultNumber > = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => CurrentReleaseProfileConditionState$outboundSchema), - z.any(), - ]), - ).optional(), - scope: z.string(), + type: SyncReconcileRequestPreparedStackTypeNumber$outboundSchema, + value: z.string(), }); -export function syncReconcileRequestCurrentReleaseProfileGcpStackToJSON( - syncReconcileRequestCurrentReleaseProfileGcpStack: - SyncReconcileRequestCurrentReleaseProfileGcpStack, +export function syncReconcileRequestPreparedStackDefaultNumberToJSON( + syncReconcileRequestPreparedStackDefaultNumber: + SyncReconcileRequestPreparedStackDefaultNumber, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseProfileGcpStack$outboundSchema.parse( - syncReconcileRequestCurrentReleaseProfileGcpStack, + SyncReconcileRequestPreparedStackDefaultNumber$outboundSchema.parse( + syncReconcileRequestPreparedStackDefaultNumber, ), ); } /** @internal */ -export type SyncReconcileRequestCurrentReleaseProfileGcpBinding$Outbound = { - resource?: CurrentReleaseProfileStateGcpResource$Outbound | undefined; - stack?: - | SyncReconcileRequestCurrentReleaseProfileGcpStack$Outbound - | undefined; +export const SyncReconcileRequestPreparedStackTypeString$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestPreparedStackTypeString, + ); + +/** @internal */ +export type SyncReconcileRequestPreparedStackDefaultString$Outbound = { + type: string; + value: string; }; /** @internal */ -export const SyncReconcileRequestCurrentReleaseProfileGcpBinding$outboundSchema: +export const SyncReconcileRequestPreparedStackDefaultString$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseProfileGcpBinding$Outbound, - SyncReconcileRequestCurrentReleaseProfileGcpBinding + SyncReconcileRequestPreparedStackDefaultString$Outbound, + SyncReconcileRequestPreparedStackDefaultString > = z.object({ - resource: z.lazy(() => CurrentReleaseProfileStateGcpResource$outboundSchema) - .optional(), - stack: z.lazy(() => - SyncReconcileRequestCurrentReleaseProfileGcpStack$outboundSchema - ).optional(), + type: SyncReconcileRequestPreparedStackTypeString$outboundSchema, + value: z.string(), }); -export function syncReconcileRequestCurrentReleaseProfileGcpBindingToJSON( - syncReconcileRequestCurrentReleaseProfileGcpBinding: - SyncReconcileRequestCurrentReleaseProfileGcpBinding, +export function syncReconcileRequestPreparedStackDefaultStringToJSON( + syncReconcileRequestPreparedStackDefaultString: + SyncReconcileRequestPreparedStackDefaultString, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseProfileGcpBinding$outboundSchema.parse( - syncReconcileRequestCurrentReleaseProfileGcpBinding, + SyncReconcileRequestPreparedStackDefaultString$outboundSchema.parse( + syncReconcileRequestPreparedStackDefaultString, ), ); } /** @internal */ -export type SyncReconcileRequestCurrentReleaseProfileGcpGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; -}; +export type SyncReconcileRequestPreparedStackDefaultUnion$Outbound = + | SyncReconcileRequestPreparedStackDefaultString$Outbound + | SyncReconcileRequestPreparedStackDefaultNumber$Outbound + | SyncReconcileRequestPreparedStackDefaultBoolean$Outbound + | SyncReconcileRequestPreparedStackDefaultStringList$Outbound + | any; /** @internal */ -export const SyncReconcileRequestCurrentReleaseProfileGcpGrant$outboundSchema: +export const SyncReconcileRequestPreparedStackDefaultUnion$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseProfileGcpGrant$Outbound, - SyncReconcileRequestCurrentReleaseProfileGcpGrant - > = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); + SyncReconcileRequestPreparedStackDefaultUnion$Outbound, + SyncReconcileRequestPreparedStackDefaultUnion + > = z.union([ + z.lazy(() => SyncReconcileRequestPreparedStackDefaultString$outboundSchema), + z.lazy(() => SyncReconcileRequestPreparedStackDefaultNumber$outboundSchema), + z.lazy(() => + SyncReconcileRequestPreparedStackDefaultBoolean$outboundSchema + ), + z.lazy(() => + SyncReconcileRequestPreparedStackDefaultStringList$outboundSchema + ), + z.any(), + ]); -export function syncReconcileRequestCurrentReleaseProfileGcpGrantToJSON( - syncReconcileRequestCurrentReleaseProfileGcpGrant: - SyncReconcileRequestCurrentReleaseProfileGcpGrant, +export function syncReconcileRequestPreparedStackDefaultUnionToJSON( + syncReconcileRequestPreparedStackDefaultUnion: + SyncReconcileRequestPreparedStackDefaultUnion, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseProfileGcpGrant$outboundSchema.parse( - syncReconcileRequestCurrentReleaseProfileGcpGrant, + SyncReconcileRequestPreparedStackDefaultUnion$outboundSchema.parse( + syncReconcileRequestPreparedStackDefaultUnion, ), ); } /** @internal */ -export type SyncReconcileRequestCurrentReleaseProfileGcp$Outbound = { - binding: SyncReconcileRequestCurrentReleaseProfileGcpBinding$Outbound; - description?: string | null | undefined; - grant: SyncReconcileRequestCurrentReleaseProfileGcpGrant$Outbound; - label?: string | null | undefined; -}; +export const SyncReconcileRequestPreparedStackTypeEnvEnum$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestPreparedStackTypeEnvEnum, + ); /** @internal */ -export const SyncReconcileRequestCurrentReleaseProfileGcp$outboundSchema: +export type SyncReconcileRequestPreparedStackTypeUnion$Outbound = string | any; + +/** @internal */ +export const SyncReconcileRequestPreparedStackTypeUnion$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseProfileGcp$Outbound, - SyncReconcileRequestCurrentReleaseProfileGcp - > = z.object({ - binding: z.lazy(() => - SyncReconcileRequestCurrentReleaseProfileGcpBinding$outboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncReconcileRequestCurrentReleaseProfileGcpGrant$outboundSchema - ), - label: z.nullable(z.string()).optional(), - }); + SyncReconcileRequestPreparedStackTypeUnion$Outbound, + SyncReconcileRequestPreparedStackTypeUnion + > = z.union([ + SyncReconcileRequestPreparedStackTypeEnvEnum$outboundSchema, + z.any(), + ]); -export function syncReconcileRequestCurrentReleaseProfileGcpToJSON( - syncReconcileRequestCurrentReleaseProfileGcp: - SyncReconcileRequestCurrentReleaseProfileGcp, +export function syncReconcileRequestPreparedStackTypeUnionToJSON( + syncReconcileRequestPreparedStackTypeUnion: + SyncReconcileRequestPreparedStackTypeUnion, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseProfileGcp$outboundSchema.parse( - syncReconcileRequestCurrentReleaseProfileGcp, + SyncReconcileRequestPreparedStackTypeUnion$outboundSchema.parse( + syncReconcileRequestPreparedStackTypeUnion, ), ); } /** @internal */ -export type SyncReconcileRequestCurrentReleaseProfilePlatforms$Outbound = { - aws?: - | Array - | null - | undefined; - azure?: - | Array - | null - | undefined; - gcp?: - | Array - | null - | undefined; +export type SyncReconcileRequestPreparedStackEnv$Outbound = { + name: string; + targetResources?: Array | null | undefined; + type?: string | any | null | undefined; }; /** @internal */ -export const SyncReconcileRequestCurrentReleaseProfilePlatforms$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseProfilePlatforms$Outbound, - SyncReconcileRequestCurrentReleaseProfilePlatforms - > = z.object({ - aws: z.nullable( - z.array(z.lazy(() => - SyncReconcileRequestCurrentReleaseProfileAw$outboundSchema - )), - ).optional(), - azure: z.nullable( - z.array(z.lazy(() => - SyncReconcileRequestCurrentReleaseProfileAzure$outboundSchema - )), - ).optional(), - gcp: z.nullable( - z.array(z.lazy(() => - SyncReconcileRequestCurrentReleaseProfileGcp$outboundSchema - )), - ).optional(), - }); +export const SyncReconcileRequestPreparedStackEnv$outboundSchema: z.ZodType< + SyncReconcileRequestPreparedStackEnv$Outbound, + SyncReconcileRequestPreparedStackEnv +> = z.object({ + name: z.string(), + targetResources: z.nullable(z.array(z.string())).optional(), + type: z.nullable( + z.union([ + SyncReconcileRequestPreparedStackTypeEnvEnum$outboundSchema, + z.any(), + ]), + ).optional(), +}); -export function syncReconcileRequestCurrentReleaseProfilePlatformsToJSON( - syncReconcileRequestCurrentReleaseProfilePlatforms: - SyncReconcileRequestCurrentReleaseProfilePlatforms, +export function syncReconcileRequestPreparedStackEnvToJSON( + syncReconcileRequestPreparedStackEnv: SyncReconcileRequestPreparedStackEnv, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseProfilePlatforms$outboundSchema.parse( - syncReconcileRequestCurrentReleaseProfilePlatforms, + SyncReconcileRequestPreparedStackEnv$outboundSchema.parse( + syncReconcileRequestPreparedStackEnv, ), ); -} +} + +/** @internal */ +export const PreparedStackStateKind$outboundSchema: z.ZodEnum< + typeof PreparedStackStateKind +> = z.enum(PreparedStackStateKind); + +/** @internal */ +export const SyncReconcileRequestPreparedStackPlatform$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestPreparedStackPlatform, + ); /** @internal */ -export type SyncReconcileRequestCurrentReleaseProfile$Outbound = { - description: string; - id: string; - platforms: SyncReconcileRequestCurrentReleaseProfilePlatforms$Outbound; +export const SyncReconcileRequestPreparedStackProvidedBy$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestPreparedStackProvidedBy, + ); + +/** @internal */ +export type SyncReconcileRequestPreparedStackValidation$Outbound = { + format?: string | null | undefined; + max?: string | null | undefined; + maxItems?: number | null | undefined; + maxLength?: number | null | undefined; + min?: string | null | undefined; + minItems?: number | null | undefined; + minLength?: number | null | undefined; + pattern?: string | null | undefined; + values?: Array | null | undefined; }; /** @internal */ -export const SyncReconcileRequestCurrentReleaseProfile$outboundSchema: +export const SyncReconcileRequestPreparedStackValidation$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseProfile$Outbound, - SyncReconcileRequestCurrentReleaseProfile + SyncReconcileRequestPreparedStackValidation$Outbound, + SyncReconcileRequestPreparedStackValidation > = z.object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => - SyncReconcileRequestCurrentReleaseProfilePlatforms$outboundSchema - ), + format: z.nullable(z.string()).optional(), + max: z.nullable(z.string()).optional(), + maxItems: z.nullable(z.int()).optional(), + maxLength: z.nullable(z.int()).optional(), + min: z.nullable(z.string()).optional(), + minItems: z.nullable(z.int()).optional(), + minLength: z.nullable(z.int()).optional(), + pattern: z.nullable(z.string()).optional(), + values: z.nullable(z.array(z.string())).optional(), }); -export function syncReconcileRequestCurrentReleaseProfileToJSON( - syncReconcileRequestCurrentReleaseProfile: - SyncReconcileRequestCurrentReleaseProfile, +export function syncReconcileRequestPreparedStackValidationToJSON( + syncReconcileRequestPreparedStackValidation: + SyncReconcileRequestPreparedStackValidation, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseProfile$outboundSchema.parse( - syncReconcileRequestCurrentReleaseProfile, + SyncReconcileRequestPreparedStackValidation$outboundSchema.parse( + syncReconcileRequestPreparedStackValidation, ), ); } /** @internal */ -export type SyncReconcileRequestCurrentReleaseProfileUnion$Outbound = - | SyncReconcileRequestCurrentReleaseProfile$Outbound - | string; +export type SyncReconcileRequestPreparedStackValidationUnion$Outbound = + | SyncReconcileRequestPreparedStackValidation$Outbound + | any; /** @internal */ -export const SyncReconcileRequestCurrentReleaseProfileUnion$outboundSchema: +export const SyncReconcileRequestPreparedStackValidationUnion$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseProfileUnion$Outbound, - SyncReconcileRequestCurrentReleaseProfileUnion + SyncReconcileRequestPreparedStackValidationUnion$Outbound, + SyncReconcileRequestPreparedStackValidationUnion > = z.union([ - z.lazy(() => SyncReconcileRequestCurrentReleaseProfile$outboundSchema), - z.string(), + z.lazy(() => SyncReconcileRequestPreparedStackValidation$outboundSchema), + z.any(), ]); -export function syncReconcileRequestCurrentReleaseProfileUnionToJSON( - syncReconcileRequestCurrentReleaseProfileUnion: - SyncReconcileRequestCurrentReleaseProfileUnion, +export function syncReconcileRequestPreparedStackValidationUnionToJSON( + syncReconcileRequestPreparedStackValidationUnion: + SyncReconcileRequestPreparedStackValidationUnion, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseProfileUnion$outboundSchema.parse( - syncReconcileRequestCurrentReleaseProfileUnion, + SyncReconcileRequestPreparedStackValidationUnion$outboundSchema.parse( + syncReconcileRequestPreparedStackValidationUnion, ), ); } /** @internal */ -export type SyncReconcileRequestCurrentReleasePermissions$Outbound = { - management?: - | SyncReconcileRequestCurrentReleaseManagement1$Outbound - | SyncReconcileRequestCurrentReleaseManagement2$Outbound - | string +export type SyncReconcileRequestPreparedStackInput$Outbound = { + default?: + | SyncReconcileRequestPreparedStackDefaultString$Outbound + | SyncReconcileRequestPreparedStackDefaultNumber$Outbound + | SyncReconcileRequestPreparedStackDefaultBoolean$Outbound + | SyncReconcileRequestPreparedStackDefaultStringList$Outbound + | any + | null + | undefined; + description: string; + env?: Array | undefined; + id: string; + kind: string; + label: string; + placeholder?: string | null | undefined; + platforms?: Array | null | undefined; + providedBy: Array; + required: boolean; + validation?: + | SyncReconcileRequestPreparedStackValidation$Outbound + | any + | null | undefined; - profiles: { - [k: string]: { - [k: string]: Array< - SyncReconcileRequestCurrentReleaseProfile$Outbound | string - >; - }; - }; }; /** @internal */ -export const SyncReconcileRequestCurrentReleasePermissions$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleasePermissions$Outbound, - SyncReconcileRequestCurrentReleasePermissions - > = z.object({ - management: z.union([ +export const SyncReconcileRequestPreparedStackInput$outboundSchema: z.ZodType< + SyncReconcileRequestPreparedStackInput$Outbound, + SyncReconcileRequestPreparedStackInput +> = z.object({ + default: z.nullable( + z.union([ z.lazy(() => - SyncReconcileRequestCurrentReleaseManagement1$outboundSchema + SyncReconcileRequestPreparedStackDefaultString$outboundSchema ), z.lazy(() => - SyncReconcileRequestCurrentReleaseManagement2$outboundSchema + SyncReconcileRequestPreparedStackDefaultNumber$outboundSchema ), - SyncReconcileRequestCurrentReleaseManagementEnum$outboundSchema, - ]).optional(), - profiles: z.record( - z.string(), - z.record( - z.string(), - z.array( - z.union([ - z.lazy(() => - SyncReconcileRequestCurrentReleaseProfile$outboundSchema - ), - z.string(), - ]), - ), + z.lazy(() => + SyncReconcileRequestPreparedStackDefaultBoolean$outboundSchema ), - ), - }); + z.lazy(() => + SyncReconcileRequestPreparedStackDefaultStringList$outboundSchema + ), + z.any(), + ]), + ).optional(), + description: z.string(), + env: z.array( + z.lazy(() => SyncReconcileRequestPreparedStackEnv$outboundSchema), + ).optional(), + id: z.string(), + kind: PreparedStackStateKind$outboundSchema, + label: z.string(), + placeholder: z.nullable(z.string()).optional(), + platforms: z.nullable( + z.array(SyncReconcileRequestPreparedStackPlatform$outboundSchema), + ).optional(), + providedBy: z.array( + SyncReconcileRequestPreparedStackProvidedBy$outboundSchema, + ), + required: z.boolean(), + validation: z.nullable( + z.union([ + z.lazy(() => SyncReconcileRequestPreparedStackValidation$outboundSchema), + z.any(), + ]), + ).optional(), +}); -export function syncReconcileRequestCurrentReleasePermissionsToJSON( - syncReconcileRequestCurrentReleasePermissions: - SyncReconcileRequestCurrentReleasePermissions, +export function syncReconcileRequestPreparedStackInputToJSON( + syncReconcileRequestPreparedStackInput: + SyncReconcileRequestPreparedStackInput, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleasePermissions$outboundSchema.parse( - syncReconcileRequestCurrentReleasePermissions, + SyncReconcileRequestPreparedStackInput$outboundSchema.parse( + syncReconcileRequestPreparedStackInput, ), ); } /** @internal */ -export type SyncReconcileRequestCurrentReleaseConfig$Outbound = { - id: string; - type: string; - [additionalProperties: string]: unknown; +export const SyncReconcileRequestPreparedStackManagementEnum$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestPreparedStackManagementEnum, + ); + +/** @internal */ +export type PreparedStackOverrideStateAwResource$Outbound = { + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + resources: Array; }; /** @internal */ -export const SyncReconcileRequestCurrentReleaseConfig$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseConfig$Outbound, - SyncReconcileRequestCurrentReleaseConfig +export const PreparedStackOverrideStateAwResource$outboundSchema: z.ZodType< + PreparedStackOverrideStateAwResource$Outbound, + PreparedStackOverrideStateAwResource > = z.object({ - id: z.string(), - type: z.string(), - additionalProperties: z.record(z.string(), z.nullable(z.any())).optional(), -}).transform((v) => { - return { - ...v.additionalProperties, - ...remap$(v, { - additionalProperties: null, - }), - }; + condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) + .optional(), + resources: z.array(z.string()), }); -export function syncReconcileRequestCurrentReleaseConfigToJSON( - syncReconcileRequestCurrentReleaseConfig: - SyncReconcileRequestCurrentReleaseConfig, +export function preparedStackOverrideStateAwResourceToJSON( + preparedStackOverrideStateAwResource: PreparedStackOverrideStateAwResource, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseConfig$outboundSchema.parse( - syncReconcileRequestCurrentReleaseConfig, + PreparedStackOverrideStateAwResource$outboundSchema.parse( + preparedStackOverrideStateAwResource, ), ); } /** @internal */ -export type SyncReconcileRequestCurrentReleaseDependency$Outbound = { - id: string; - type: string; +export type SyncReconcileRequestPreparedStackOverrideAwStack$Outbound = { + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + resources: Array; }; /** @internal */ -export const SyncReconcileRequestCurrentReleaseDependency$outboundSchema: +export const SyncReconcileRequestPreparedStackOverrideAwStack$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseDependency$Outbound, - SyncReconcileRequestCurrentReleaseDependency + SyncReconcileRequestPreparedStackOverrideAwStack$Outbound, + SyncReconcileRequestPreparedStackOverrideAwStack > = z.object({ - id: z.string(), - type: z.string(), + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), }); -export function syncReconcileRequestCurrentReleaseDependencyToJSON( - syncReconcileRequestCurrentReleaseDependency: - SyncReconcileRequestCurrentReleaseDependency, +export function syncReconcileRequestPreparedStackOverrideAwStackToJSON( + syncReconcileRequestPreparedStackOverrideAwStack: + SyncReconcileRequestPreparedStackOverrideAwStack, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseDependency$outboundSchema.parse( - syncReconcileRequestCurrentReleaseDependency, + SyncReconcileRequestPreparedStackOverrideAwStack$outboundSchema.parse( + syncReconcileRequestPreparedStackOverrideAwStack, ), ); } /** @internal */ -export const CurrentReleaseStateLifecycle$outboundSchema: z.ZodEnum< - typeof CurrentReleaseStateLifecycle -> = z.enum(CurrentReleaseStateLifecycle); - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseResources$Outbound = { - config: SyncReconcileRequestCurrentReleaseConfig$Outbound; - dependencies: Array; - lifecycle: string; - remoteAccess?: boolean | undefined; +export type SyncReconcileRequestPreparedStackOverrideAwBinding$Outbound = { + resource?: PreparedStackOverrideStateAwResource$Outbound | undefined; + stack?: SyncReconcileRequestPreparedStackOverrideAwStack$Outbound | undefined; }; /** @internal */ -export const SyncReconcileRequestCurrentReleaseResources$outboundSchema: +export const SyncReconcileRequestPreparedStackOverrideAwBinding$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseResources$Outbound, - SyncReconcileRequestCurrentReleaseResources + SyncReconcileRequestPreparedStackOverrideAwBinding$Outbound, + SyncReconcileRequestPreparedStackOverrideAwBinding > = z.object({ - config: z.lazy(() => - SyncReconcileRequestCurrentReleaseConfig$outboundSchema - ), - dependencies: z.array( - z.lazy(() => SyncReconcileRequestCurrentReleaseDependency$outboundSchema), - ), - lifecycle: CurrentReleaseStateLifecycle$outboundSchema, - remoteAccess: z.boolean().optional(), + resource: z.lazy(() => PreparedStackOverrideStateAwResource$outboundSchema) + .optional(), + stack: z.lazy(() => + SyncReconcileRequestPreparedStackOverrideAwStack$outboundSchema + ).optional(), }); -export function syncReconcileRequestCurrentReleaseResourcesToJSON( - syncReconcileRequestCurrentReleaseResources: - SyncReconcileRequestCurrentReleaseResources, +export function syncReconcileRequestPreparedStackOverrideAwBindingToJSON( + syncReconcileRequestPreparedStackOverrideAwBinding: + SyncReconcileRequestPreparedStackOverrideAwBinding, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseResources$outboundSchema.parse( - syncReconcileRequestCurrentReleaseResources, + SyncReconcileRequestPreparedStackOverrideAwBinding$outboundSchema.parse( + syncReconcileRequestPreparedStackOverrideAwBinding, ), ); } /** @internal */ -export const SyncReconcileRequestCurrentReleaseSupportedPlatform$outboundSchema: - z.ZodEnum = z - .enum(SyncReconcileRequestCurrentReleaseSupportedPlatform); +export const SyncReconcileRequestPreparedStackOverrideEffect$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestPreparedStackOverrideEffect, + ); /** @internal */ -export type SyncReconcileRequestCurrentReleaseStack$Outbound = { - id: string; - inputs?: Array | undefined; - permissions?: - | SyncReconcileRequestCurrentReleasePermissions$Outbound - | undefined; - resources: { - [k: string]: SyncReconcileRequestCurrentReleaseResources$Outbound; - }; - supportedPlatforms?: Array | null | undefined; +export type SyncReconcileRequestPreparedStackOverrideAwGrant$Outbound = { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; }; /** @internal */ -export const SyncReconcileRequestCurrentReleaseStack$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseStack$Outbound, - SyncReconcileRequestCurrentReleaseStack -> = z.object({ - id: z.string(), - inputs: z.array( - z.lazy(() => SyncReconcileRequestCurrentReleaseInput$outboundSchema), - ).optional(), - permissions: z.lazy(() => - SyncReconcileRequestCurrentReleasePermissions$outboundSchema - ).optional(), - resources: z.record( - z.string(), - z.lazy(() => SyncReconcileRequestCurrentReleaseResources$outboundSchema), - ), - supportedPlatforms: z.nullable( - z.array(SyncReconcileRequestCurrentReleaseSupportedPlatform$outboundSchema), - ).optional(), -}); +export const SyncReconcileRequestPreparedStackOverrideAwGrant$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackOverrideAwGrant$Outbound, + SyncReconcileRequestPreparedStackOverrideAwGrant + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); -export function syncReconcileRequestCurrentReleaseStackToJSON( - syncReconcileRequestCurrentReleaseStack: - SyncReconcileRequestCurrentReleaseStack, +export function syncReconcileRequestPreparedStackOverrideAwGrantToJSON( + syncReconcileRequestPreparedStackOverrideAwGrant: + SyncReconcileRequestPreparedStackOverrideAwGrant, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseStack$outboundSchema.parse( - syncReconcileRequestCurrentReleaseStack, + SyncReconcileRequestPreparedStackOverrideAwGrant$outboundSchema.parse( + syncReconcileRequestPreparedStackOverrideAwGrant, ), ); } /** @internal */ -export type SyncReconcileRequestCurrentRelease$Outbound = { +export type SyncReconcileRequestPreparedStackOverrideAw$Outbound = { + binding: SyncReconcileRequestPreparedStackOverrideAwBinding$Outbound; description?: string | null | undefined; - releaseId?: string | null | undefined; - stack: SyncReconcileRequestCurrentReleaseStack$Outbound; - version?: string | null | undefined; + effect?: string | undefined; + grant: SyncReconcileRequestPreparedStackOverrideAwGrant$Outbound; + label?: string | null | undefined; }; /** @internal */ -export const SyncReconcileRequestCurrentRelease$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentRelease$Outbound, - SyncReconcileRequestCurrentRelease -> = z.object({ - description: z.nullable(z.string()).optional(), - releaseId: z.nullable(z.string()).optional(), - stack: z.lazy(() => SyncReconcileRequestCurrentReleaseStack$outboundSchema), - version: z.nullable(z.string()).optional(), -}); +export const SyncReconcileRequestPreparedStackOverrideAw$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackOverrideAw$Outbound, + SyncReconcileRequestPreparedStackOverrideAw + > = z.object({ + binding: z.lazy(() => + SyncReconcileRequestPreparedStackOverrideAwBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: SyncReconcileRequestPreparedStackOverrideEffect$outboundSchema + .optional(), + grant: z.lazy(() => + SyncReconcileRequestPreparedStackOverrideAwGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); -export function syncReconcileRequestCurrentReleaseToJSON( - syncReconcileRequestCurrentRelease: SyncReconcileRequestCurrentRelease, +export function syncReconcileRequestPreparedStackOverrideAwToJSON( + syncReconcileRequestPreparedStackOverrideAw: + SyncReconcileRequestPreparedStackOverrideAw, ): string { return JSON.stringify( - SyncReconcileRequestCurrentRelease$outboundSchema.parse( - syncReconcileRequestCurrentRelease, + SyncReconcileRequestPreparedStackOverrideAw$outboundSchema.parse( + syncReconcileRequestPreparedStackOverrideAw, ), ); } /** @internal */ -export type SyncReconcileRequestCurrentReleaseUnion$Outbound = - | SyncReconcileRequestCurrentRelease$Outbound - | any; +export type PreparedStackOverrideStateAzureResource$Outbound = { + scope: string; +}; /** @internal */ -export const SyncReconcileRequestCurrentReleaseUnion$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseUnion$Outbound, - SyncReconcileRequestCurrentReleaseUnion -> = z.union([ - z.lazy(() => SyncReconcileRequestCurrentRelease$outboundSchema), - z.any(), -]); +export const PreparedStackOverrideStateAzureResource$outboundSchema: z.ZodType< + PreparedStackOverrideStateAzureResource$Outbound, + PreparedStackOverrideStateAzureResource +> = z.object({ + scope: z.string(), +}); -export function syncReconcileRequestCurrentReleaseUnionToJSON( - syncReconcileRequestCurrentReleaseUnion: - SyncReconcileRequestCurrentReleaseUnion, +export function preparedStackOverrideStateAzureResourceToJSON( + preparedStackOverrideStateAzureResource: + PreparedStackOverrideStateAzureResource, ): string { return JSON.stringify( - SyncReconcileRequestCurrentReleaseUnion$outboundSchema.parse( - syncReconcileRequestCurrentReleaseUnion, + PreparedStackOverrideStateAzureResource$outboundSchema.parse( + preparedStackOverrideStateAzureResource, ), ); } /** @internal */ -export const SyncReconcileRequestPlatformTest$outboundSchema: z.ZodEnum< - typeof SyncReconcileRequestPlatformTest -> = z.enum(SyncReconcileRequestPlatformTest); - -/** @internal */ -export type SyncReconcileRequestEnvironmentInfoTest$Outbound = { - testId: string; - platform: string; +export type SyncReconcileRequestPreparedStackOverrideAzureStack$Outbound = { + scope: string; }; /** @internal */ -export const SyncReconcileRequestEnvironmentInfoTest$outboundSchema: z.ZodType< - SyncReconcileRequestEnvironmentInfoTest$Outbound, - SyncReconcileRequestEnvironmentInfoTest -> = z.object({ - testId: z.string(), - platform: SyncReconcileRequestPlatformTest$outboundSchema, -}); +export const SyncReconcileRequestPreparedStackOverrideAzureStack$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackOverrideAzureStack$Outbound, + SyncReconcileRequestPreparedStackOverrideAzureStack + > = z.object({ + scope: z.string(), + }); -export function syncReconcileRequestEnvironmentInfoTestToJSON( - syncReconcileRequestEnvironmentInfoTest: - SyncReconcileRequestEnvironmentInfoTest, +export function syncReconcileRequestPreparedStackOverrideAzureStackToJSON( + syncReconcileRequestPreparedStackOverrideAzureStack: + SyncReconcileRequestPreparedStackOverrideAzureStack, ): string { return JSON.stringify( - SyncReconcileRequestEnvironmentInfoTest$outboundSchema.parse( - syncReconcileRequestEnvironmentInfoTest, + SyncReconcileRequestPreparedStackOverrideAzureStack$outboundSchema.parse( + syncReconcileRequestPreparedStackOverrideAzureStack, ), ); } /** @internal */ -export const SyncReconcileRequestPlatformLocal$outboundSchema: z.ZodEnum< - typeof SyncReconcileRequestPlatformLocal -> = z.enum(SyncReconcileRequestPlatformLocal); - -/** @internal */ -export type SyncReconcileRequestEnvironmentInfoLocal$Outbound = { - arch: string; - hostname: string; - os: string; - platform: string; +export type SyncReconcileRequestPreparedStackOverrideAzureBinding$Outbound = { + resource?: PreparedStackOverrideStateAzureResource$Outbound | undefined; + stack?: + | SyncReconcileRequestPreparedStackOverrideAzureStack$Outbound + | undefined; }; /** @internal */ -export const SyncReconcileRequestEnvironmentInfoLocal$outboundSchema: z.ZodType< - SyncReconcileRequestEnvironmentInfoLocal$Outbound, - SyncReconcileRequestEnvironmentInfoLocal -> = z.object({ - arch: z.string(), - hostname: z.string(), - os: z.string(), - platform: SyncReconcileRequestPlatformLocal$outboundSchema, -}); +export const SyncReconcileRequestPreparedStackOverrideAzureBinding$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackOverrideAzureBinding$Outbound, + SyncReconcileRequestPreparedStackOverrideAzureBinding + > = z.object({ + resource: z.lazy(() => + PreparedStackOverrideStateAzureResource$outboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileRequestPreparedStackOverrideAzureStack$outboundSchema + ).optional(), + }); -export function syncReconcileRequestEnvironmentInfoLocalToJSON( - syncReconcileRequestEnvironmentInfoLocal: - SyncReconcileRequestEnvironmentInfoLocal, +export function syncReconcileRequestPreparedStackOverrideAzureBindingToJSON( + syncReconcileRequestPreparedStackOverrideAzureBinding: + SyncReconcileRequestPreparedStackOverrideAzureBinding, ): string { return JSON.stringify( - SyncReconcileRequestEnvironmentInfoLocal$outboundSchema.parse( - syncReconcileRequestEnvironmentInfoLocal, + SyncReconcileRequestPreparedStackOverrideAzureBinding$outboundSchema.parse( + syncReconcileRequestPreparedStackOverrideAzureBinding, ), ); } /** @internal */ -export const SyncReconcileRequestPlatformAzure$outboundSchema: z.ZodEnum< - typeof SyncReconcileRequestPlatformAzure -> = z.enum(SyncReconcileRequestPlatformAzure); - -/** @internal */ -export type SyncReconcileRequestEnvironmentInfoAzure$Outbound = { - location: string; - subscriptionId: string; - tenantId: string; - platform: string; +export type SyncReconcileRequestPreparedStackOverrideAzureGrant$Outbound = { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; }; /** @internal */ -export const SyncReconcileRequestEnvironmentInfoAzure$outboundSchema: z.ZodType< - SyncReconcileRequestEnvironmentInfoAzure$Outbound, - SyncReconcileRequestEnvironmentInfoAzure -> = z.object({ - location: z.string(), - subscriptionId: z.string(), - tenantId: z.string(), - platform: SyncReconcileRequestPlatformAzure$outboundSchema, -}); +export const SyncReconcileRequestPreparedStackOverrideAzureGrant$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackOverrideAzureGrant$Outbound, + SyncReconcileRequestPreparedStackOverrideAzureGrant + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); -export function syncReconcileRequestEnvironmentInfoAzureToJSON( - syncReconcileRequestEnvironmentInfoAzure: - SyncReconcileRequestEnvironmentInfoAzure, +export function syncReconcileRequestPreparedStackOverrideAzureGrantToJSON( + syncReconcileRequestPreparedStackOverrideAzureGrant: + SyncReconcileRequestPreparedStackOverrideAzureGrant, ): string { return JSON.stringify( - SyncReconcileRequestEnvironmentInfoAzure$outboundSchema.parse( - syncReconcileRequestEnvironmentInfoAzure, + SyncReconcileRequestPreparedStackOverrideAzureGrant$outboundSchema.parse( + syncReconcileRequestPreparedStackOverrideAzureGrant, ), ); } /** @internal */ -export const SyncReconcileRequestPlatformGcp$outboundSchema: z.ZodEnum< - typeof SyncReconcileRequestPlatformGcp -> = z.enum(SyncReconcileRequestPlatformGcp); - -/** @internal */ -export type SyncReconcileRequestEnvironmentInfoGcp$Outbound = { - projectId: string; - projectNumber: string; - region: string; - platform: string; +export type SyncReconcileRequestPreparedStackOverrideAzure$Outbound = { + binding: SyncReconcileRequestPreparedStackOverrideAzureBinding$Outbound; + description?: string | null | undefined; + grant: SyncReconcileRequestPreparedStackOverrideAzureGrant$Outbound; + label?: string | null | undefined; }; /** @internal */ -export const SyncReconcileRequestEnvironmentInfoGcp$outboundSchema: z.ZodType< - SyncReconcileRequestEnvironmentInfoGcp$Outbound, - SyncReconcileRequestEnvironmentInfoGcp -> = z.object({ - projectId: z.string(), - projectNumber: z.string(), - region: z.string(), - platform: SyncReconcileRequestPlatformGcp$outboundSchema, -}); +export const SyncReconcileRequestPreparedStackOverrideAzure$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackOverrideAzure$Outbound, + SyncReconcileRequestPreparedStackOverrideAzure + > = z.object({ + binding: z.lazy(() => + SyncReconcileRequestPreparedStackOverrideAzureBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileRequestPreparedStackOverrideAzureGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); -export function syncReconcileRequestEnvironmentInfoGcpToJSON( - syncReconcileRequestEnvironmentInfoGcp: - SyncReconcileRequestEnvironmentInfoGcp, +export function syncReconcileRequestPreparedStackOverrideAzureToJSON( + syncReconcileRequestPreparedStackOverrideAzure: + SyncReconcileRequestPreparedStackOverrideAzure, ): string { return JSON.stringify( - SyncReconcileRequestEnvironmentInfoGcp$outboundSchema.parse( - syncReconcileRequestEnvironmentInfoGcp, + SyncReconcileRequestPreparedStackOverrideAzure$outboundSchema.parse( + syncReconcileRequestPreparedStackOverrideAzure, ), ); } /** @internal */ -export const SyncReconcileRequestPlatformAws$outboundSchema: z.ZodEnum< - typeof SyncReconcileRequestPlatformAws -> = z.enum(SyncReconcileRequestPlatformAws); - -/** @internal */ -export type SyncReconcileRequestEnvironmentInfoAws$Outbound = { - accountId: string; - region: string; - platform: string; +export type PreparedStackOverrideConditionStateResource$Outbound = { + expression: string; + title: string; }; /** @internal */ -export const SyncReconcileRequestEnvironmentInfoAws$outboundSchema: z.ZodType< - SyncReconcileRequestEnvironmentInfoAws$Outbound, - SyncReconcileRequestEnvironmentInfoAws -> = z.object({ - accountId: z.string(), - region: z.string(), - platform: SyncReconcileRequestPlatformAws$outboundSchema, -}); +export const PreparedStackOverrideConditionStateResource$outboundSchema: + z.ZodType< + PreparedStackOverrideConditionStateResource$Outbound, + PreparedStackOverrideConditionStateResource + > = z.object({ + expression: z.string(), + title: z.string(), + }); -export function syncReconcileRequestEnvironmentInfoAwsToJSON( - syncReconcileRequestEnvironmentInfoAws: - SyncReconcileRequestEnvironmentInfoAws, +export function preparedStackOverrideConditionStateResourceToJSON( + preparedStackOverrideConditionStateResource: + PreparedStackOverrideConditionStateResource, ): string { return JSON.stringify( - SyncReconcileRequestEnvironmentInfoAws$outboundSchema.parse( - syncReconcileRequestEnvironmentInfoAws, + PreparedStackOverrideConditionStateResource$outboundSchema.parse( + preparedStackOverrideConditionStateResource, ), ); } /** @internal */ -export type SyncReconcileRequestEnvironmentInfoUnion$Outbound = - | SyncReconcileRequestEnvironmentInfoGcp$Outbound - | SyncReconcileRequestEnvironmentInfoAzure$Outbound - | SyncReconcileRequestEnvironmentInfoLocal$Outbound - | SyncReconcileRequestEnvironmentInfoAws$Outbound - | SyncReconcileRequestEnvironmentInfoTest$Outbound +export type PreparedStackOverrideStateResourceConditionUnion$Outbound = + | PreparedStackOverrideConditionStateResource$Outbound | any; /** @internal */ -export const SyncReconcileRequestEnvironmentInfoUnion$outboundSchema: z.ZodType< - SyncReconcileRequestEnvironmentInfoUnion$Outbound, - SyncReconcileRequestEnvironmentInfoUnion -> = z.union([ - z.lazy(() => SyncReconcileRequestEnvironmentInfoGcp$outboundSchema), - z.lazy(() => SyncReconcileRequestEnvironmentInfoAzure$outboundSchema), - z.lazy(() => SyncReconcileRequestEnvironmentInfoLocal$outboundSchema), - z.lazy(() => SyncReconcileRequestEnvironmentInfoAws$outboundSchema), - z.lazy(() => SyncReconcileRequestEnvironmentInfoTest$outboundSchema), - z.any(), -]); +export const PreparedStackOverrideStateResourceConditionUnion$outboundSchema: + z.ZodType< + PreparedStackOverrideStateResourceConditionUnion$Outbound, + PreparedStackOverrideStateResourceConditionUnion + > = z.union([ + z.lazy(() => PreparedStackOverrideConditionStateResource$outboundSchema), + z.any(), + ]); -export function syncReconcileRequestEnvironmentInfoUnionToJSON( - syncReconcileRequestEnvironmentInfoUnion: - SyncReconcileRequestEnvironmentInfoUnion, +export function preparedStackOverrideStateResourceConditionUnionToJSON( + preparedStackOverrideStateResourceConditionUnion: + PreparedStackOverrideStateResourceConditionUnion, ): string { return JSON.stringify( - SyncReconcileRequestEnvironmentInfoUnion$outboundSchema.parse( - syncReconcileRequestEnvironmentInfoUnion, + PreparedStackOverrideStateResourceConditionUnion$outboundSchema.parse( + preparedStackOverrideStateResourceConditionUnion, ), ); } /** @internal */ -export type SyncReconcileRequestError$Outbound = { - code: string; - context?: any | null | undefined; - hint?: string | null | undefined; - httpStatusCode?: number | null | undefined; - internal: boolean; - message: string; - retryable: boolean; - source?: any | null | undefined; +export type PreparedStackOverrideStateGcpResource$Outbound = { + condition?: + | PreparedStackOverrideConditionStateResource$Outbound + | any + | null + | undefined; + scope: string; }; /** @internal */ -export const SyncReconcileRequestError$outboundSchema: z.ZodType< - SyncReconcileRequestError$Outbound, - SyncReconcileRequestError +export const PreparedStackOverrideStateGcpResource$outboundSchema: z.ZodType< + PreparedStackOverrideStateGcpResource$Outbound, + PreparedStackOverrideStateGcpResource > = z.object({ - code: z.string(), - context: z.nullable(z.any()).optional(), - hint: z.nullable(z.string()).optional(), - httpStatusCode: z.nullable(z.int()).optional(), - internal: z.boolean(), - message: z.string(), - retryable: z.boolean().default(false), - source: z.nullable(z.any()).optional(), + condition: z.nullable( + z.union([ + z.lazy(() => PreparedStackOverrideConditionStateResource$outboundSchema), + z.any(), + ]), + ).optional(), + scope: z.string(), }); -export function syncReconcileRequestErrorToJSON( - syncReconcileRequestError: SyncReconcileRequestError, +export function preparedStackOverrideStateGcpResourceToJSON( + preparedStackOverrideStateGcpResource: PreparedStackOverrideStateGcpResource, ): string { return JSON.stringify( - SyncReconcileRequestError$outboundSchema.parse(syncReconcileRequestError), + PreparedStackOverrideStateGcpResource$outboundSchema.parse( + preparedStackOverrideStateGcpResource, + ), ); } /** @internal */ -export type SyncReconcileRequestErrorUnion$Outbound = - | SyncReconcileRequestError$Outbound - | any; +export type PreparedStackOverrideConditionStateStack$Outbound = { + expression: string; + title: string; +}; /** @internal */ -export const SyncReconcileRequestErrorUnion$outboundSchema: z.ZodType< - SyncReconcileRequestErrorUnion$Outbound, - SyncReconcileRequestErrorUnion -> = z.union([z.lazy(() => SyncReconcileRequestError$outboundSchema), z.any()]); +export const PreparedStackOverrideConditionStateStack$outboundSchema: z.ZodType< + PreparedStackOverrideConditionStateStack$Outbound, + PreparedStackOverrideConditionStateStack +> = z.object({ + expression: z.string(), + title: z.string(), +}); -export function syncReconcileRequestErrorUnionToJSON( - syncReconcileRequestErrorUnion: SyncReconcileRequestErrorUnion, +export function preparedStackOverrideConditionStateStackToJSON( + preparedStackOverrideConditionStateStack: + PreparedStackOverrideConditionStateStack, ): string { return JSON.stringify( - SyncReconcileRequestErrorUnion$outboundSchema.parse( - syncReconcileRequestErrorUnion, + PreparedStackOverrideConditionStateStack$outboundSchema.parse( + preparedStackOverrideConditionStateStack, ), ); } /** @internal */ -export const SyncReconcileRequestPlatform$outboundSchema: z.ZodEnum< - typeof SyncReconcileRequestPlatform -> = z.enum(SyncReconcileRequestPlatform); - -/** @internal */ -export const SyncReconcileRequestPreparedStackTypeStringList$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestPreparedStackTypeStringList, - ); - -/** @internal */ -export type SyncReconcileRequestPreparedStackDefaultStringList$Outbound = { - type: string; - value: Array; -}; +export type PreparedStackOverrideStateStackConditionUnion$Outbound = + | PreparedStackOverrideConditionStateStack$Outbound + | any; /** @internal */ -export const SyncReconcileRequestPreparedStackDefaultStringList$outboundSchema: +export const PreparedStackOverrideStateStackConditionUnion$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackDefaultStringList$Outbound, - SyncReconcileRequestPreparedStackDefaultStringList - > = z.object({ - type: SyncReconcileRequestPreparedStackTypeStringList$outboundSchema, - value: z.array(z.string()), - }); + PreparedStackOverrideStateStackConditionUnion$Outbound, + PreparedStackOverrideStateStackConditionUnion + > = z.union([ + z.lazy(() => PreparedStackOverrideConditionStateStack$outboundSchema), + z.any(), + ]); -export function syncReconcileRequestPreparedStackDefaultStringListToJSON( - syncReconcileRequestPreparedStackDefaultStringList: - SyncReconcileRequestPreparedStackDefaultStringList, +export function preparedStackOverrideStateStackConditionUnionToJSON( + preparedStackOverrideStateStackConditionUnion: + PreparedStackOverrideStateStackConditionUnion, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackDefaultStringList$outboundSchema.parse( - syncReconcileRequestPreparedStackDefaultStringList, + PreparedStackOverrideStateStackConditionUnion$outboundSchema.parse( + preparedStackOverrideStateStackConditionUnion, ), ); } /** @internal */ -export const SyncReconcileRequestPreparedStackTypeBoolean$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestPreparedStackTypeBoolean, - ); - -/** @internal */ -export type SyncReconcileRequestPreparedStackDefaultBoolean$Outbound = { - type: string; - value: boolean; +export type SyncReconcileRequestPreparedStackOverrideGcpStack$Outbound = { + condition?: + | PreparedStackOverrideConditionStateStack$Outbound + | any + | null + | undefined; + scope: string; }; /** @internal */ -export const SyncReconcileRequestPreparedStackDefaultBoolean$outboundSchema: +export const SyncReconcileRequestPreparedStackOverrideGcpStack$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackDefaultBoolean$Outbound, - SyncReconcileRequestPreparedStackDefaultBoolean + SyncReconcileRequestPreparedStackOverrideGcpStack$Outbound, + SyncReconcileRequestPreparedStackOverrideGcpStack > = z.object({ - type: SyncReconcileRequestPreparedStackTypeBoolean$outboundSchema, - value: z.boolean(), + condition: z.nullable( + z.union([ + z.lazy(() => PreparedStackOverrideConditionStateStack$outboundSchema), + z.any(), + ]), + ).optional(), + scope: z.string(), }); -export function syncReconcileRequestPreparedStackDefaultBooleanToJSON( - syncReconcileRequestPreparedStackDefaultBoolean: - SyncReconcileRequestPreparedStackDefaultBoolean, +export function syncReconcileRequestPreparedStackOverrideGcpStackToJSON( + syncReconcileRequestPreparedStackOverrideGcpStack: + SyncReconcileRequestPreparedStackOverrideGcpStack, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackDefaultBoolean$outboundSchema.parse( - syncReconcileRequestPreparedStackDefaultBoolean, + SyncReconcileRequestPreparedStackOverrideGcpStack$outboundSchema.parse( + syncReconcileRequestPreparedStackOverrideGcpStack, ), ); } /** @internal */ -export const SyncReconcileRequestPreparedStackTypeNumber$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestPreparedStackTypeNumber, - ); - -/** @internal */ -export type SyncReconcileRequestPreparedStackDefaultNumber$Outbound = { - type: string; - value: string; +export type SyncReconcileRequestPreparedStackOverrideGcpBinding$Outbound = { + resource?: PreparedStackOverrideStateGcpResource$Outbound | undefined; + stack?: + | SyncReconcileRequestPreparedStackOverrideGcpStack$Outbound + | undefined; }; /** @internal */ -export const SyncReconcileRequestPreparedStackDefaultNumber$outboundSchema: +export const SyncReconcileRequestPreparedStackOverrideGcpBinding$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackDefaultNumber$Outbound, - SyncReconcileRequestPreparedStackDefaultNumber + SyncReconcileRequestPreparedStackOverrideGcpBinding$Outbound, + SyncReconcileRequestPreparedStackOverrideGcpBinding > = z.object({ - type: SyncReconcileRequestPreparedStackTypeNumber$outboundSchema, - value: z.string(), + resource: z.lazy(() => PreparedStackOverrideStateGcpResource$outboundSchema) + .optional(), + stack: z.lazy(() => + SyncReconcileRequestPreparedStackOverrideGcpStack$outboundSchema + ).optional(), }); -export function syncReconcileRequestPreparedStackDefaultNumberToJSON( - syncReconcileRequestPreparedStackDefaultNumber: - SyncReconcileRequestPreparedStackDefaultNumber, +export function syncReconcileRequestPreparedStackOverrideGcpBindingToJSON( + syncReconcileRequestPreparedStackOverrideGcpBinding: + SyncReconcileRequestPreparedStackOverrideGcpBinding, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackDefaultNumber$outboundSchema.parse( - syncReconcileRequestPreparedStackDefaultNumber, + SyncReconcileRequestPreparedStackOverrideGcpBinding$outboundSchema.parse( + syncReconcileRequestPreparedStackOverrideGcpBinding, ), ); } /** @internal */ -export const SyncReconcileRequestPreparedStackTypeString$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestPreparedStackTypeString, - ); - -/** @internal */ -export type SyncReconcileRequestPreparedStackDefaultString$Outbound = { - type: string; - value: string; +export type SyncReconcileRequestPreparedStackOverrideGcpGrant$Outbound = { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; }; /** @internal */ -export const SyncReconcileRequestPreparedStackDefaultString$outboundSchema: +export const SyncReconcileRequestPreparedStackOverrideGcpGrant$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackDefaultString$Outbound, - SyncReconcileRequestPreparedStackDefaultString + SyncReconcileRequestPreparedStackOverrideGcpGrant$Outbound, + SyncReconcileRequestPreparedStackOverrideGcpGrant > = z.object({ - type: SyncReconcileRequestPreparedStackTypeString$outboundSchema, - value: z.string(), + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function syncReconcileRequestPreparedStackDefaultStringToJSON( - syncReconcileRequestPreparedStackDefaultString: - SyncReconcileRequestPreparedStackDefaultString, +export function syncReconcileRequestPreparedStackOverrideGcpGrantToJSON( + syncReconcileRequestPreparedStackOverrideGcpGrant: + SyncReconcileRequestPreparedStackOverrideGcpGrant, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackDefaultString$outboundSchema.parse( - syncReconcileRequestPreparedStackDefaultString, + SyncReconcileRequestPreparedStackOverrideGcpGrant$outboundSchema.parse( + syncReconcileRequestPreparedStackOverrideGcpGrant, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackDefaultUnion$Outbound = - | SyncReconcileRequestPreparedStackDefaultString$Outbound - | SyncReconcileRequestPreparedStackDefaultNumber$Outbound - | SyncReconcileRequestPreparedStackDefaultBoolean$Outbound - | SyncReconcileRequestPreparedStackDefaultStringList$Outbound - | any; +export type SyncReconcileRequestPreparedStackOverrideGcp$Outbound = { + binding: SyncReconcileRequestPreparedStackOverrideGcpBinding$Outbound; + description?: string | null | undefined; + grant: SyncReconcileRequestPreparedStackOverrideGcpGrant$Outbound; + label?: string | null | undefined; +}; /** @internal */ -export const SyncReconcileRequestPreparedStackDefaultUnion$outboundSchema: +export const SyncReconcileRequestPreparedStackOverrideGcp$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackDefaultUnion$Outbound, - SyncReconcileRequestPreparedStackDefaultUnion - > = z.union([ - z.lazy(() => SyncReconcileRequestPreparedStackDefaultString$outboundSchema), - z.lazy(() => SyncReconcileRequestPreparedStackDefaultNumber$outboundSchema), - z.lazy(() => - SyncReconcileRequestPreparedStackDefaultBoolean$outboundSchema - ), - z.lazy(() => - SyncReconcileRequestPreparedStackDefaultStringList$outboundSchema + SyncReconcileRequestPreparedStackOverrideGcp$Outbound, + SyncReconcileRequestPreparedStackOverrideGcp + > = z.object({ + binding: z.lazy(() => + SyncReconcileRequestPreparedStackOverrideGcpBinding$outboundSchema ), - z.any(), - ]); - -export function syncReconcileRequestPreparedStackDefaultUnionToJSON( - syncReconcileRequestPreparedStackDefaultUnion: - SyncReconcileRequestPreparedStackDefaultUnion, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackDefaultUnion$outboundSchema.parse( - syncReconcileRequestPreparedStackDefaultUnion, + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileRequestPreparedStackOverrideGcpGrant$outboundSchema ), - ); -} - -/** @internal */ -export const SyncReconcileRequestPreparedStackTypeEnvEnum$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestPreparedStackTypeEnvEnum, - ); - -/** @internal */ -export type SyncReconcileRequestPreparedStackTypeUnion$Outbound = string | any; - -/** @internal */ -export const SyncReconcileRequestPreparedStackTypeUnion$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackTypeUnion$Outbound, - SyncReconcileRequestPreparedStackTypeUnion - > = z.union([ - SyncReconcileRequestPreparedStackTypeEnvEnum$outboundSchema, - z.any(), - ]); + label: z.nullable(z.string()).optional(), + }); -export function syncReconcileRequestPreparedStackTypeUnionToJSON( - syncReconcileRequestPreparedStackTypeUnion: - SyncReconcileRequestPreparedStackTypeUnion, +export function syncReconcileRequestPreparedStackOverrideGcpToJSON( + syncReconcileRequestPreparedStackOverrideGcp: + SyncReconcileRequestPreparedStackOverrideGcp, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackTypeUnion$outboundSchema.parse( - syncReconcileRequestPreparedStackTypeUnion, + SyncReconcileRequestPreparedStackOverrideGcp$outboundSchema.parse( + syncReconcileRequestPreparedStackOverrideGcp, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackEnv$Outbound = { - name: string; - targetResources?: Array | null | undefined; - type?: string | any | null | undefined; +export type SyncReconcileRequestPreparedStackOverridePlatforms$Outbound = { + aws?: + | Array + | null + | undefined; + azure?: + | Array + | null + | undefined; + gcp?: + | Array + | null + | undefined; }; /** @internal */ -export const SyncReconcileRequestPreparedStackEnv$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackEnv$Outbound, - SyncReconcileRequestPreparedStackEnv -> = z.object({ - name: z.string(), - targetResources: z.nullable(z.array(z.string())).optional(), - type: z.nullable( - z.union([ - SyncReconcileRequestPreparedStackTypeEnvEnum$outboundSchema, - z.any(), - ]), - ).optional(), -}); +export const SyncReconcileRequestPreparedStackOverridePlatforms$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackOverridePlatforms$Outbound, + SyncReconcileRequestPreparedStackOverridePlatforms + > = z.object({ + aws: z.nullable( + z.array(z.lazy(() => + SyncReconcileRequestPreparedStackOverrideAw$outboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + SyncReconcileRequestPreparedStackOverrideAzure$outboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + SyncReconcileRequestPreparedStackOverrideGcp$outboundSchema + )), + ).optional(), + }); -export function syncReconcileRequestPreparedStackEnvToJSON( - syncReconcileRequestPreparedStackEnv: SyncReconcileRequestPreparedStackEnv, +export function syncReconcileRequestPreparedStackOverridePlatformsToJSON( + syncReconcileRequestPreparedStackOverridePlatforms: + SyncReconcileRequestPreparedStackOverridePlatforms, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackEnv$outboundSchema.parse( - syncReconcileRequestPreparedStackEnv, + SyncReconcileRequestPreparedStackOverridePlatforms$outboundSchema.parse( + syncReconcileRequestPreparedStackOverridePlatforms, ), ); } /** @internal */ -export const PreparedStackStateKind$outboundSchema: z.ZodEnum< - typeof PreparedStackStateKind -> = z.enum(PreparedStackStateKind); - -/** @internal */ -export const SyncReconcileRequestPreparedStackPlatform$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestPreparedStackPlatform, - ); - -/** @internal */ -export const SyncReconcileRequestPreparedStackProvidedBy$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestPreparedStackProvidedBy, - ); - -/** @internal */ -export type SyncReconcileRequestPreparedStackValidation$Outbound = { - format?: string | null | undefined; - max?: string | null | undefined; - maxItems?: number | null | undefined; - maxLength?: number | null | undefined; - min?: string | null | undefined; - minItems?: number | null | undefined; - minLength?: number | null | undefined; - pattern?: string | null | undefined; - values?: Array | null | undefined; +export type SyncReconcileRequestPreparedStackOverride$Outbound = { + description: string; + id: string; + platforms: SyncReconcileRequestPreparedStackOverridePlatforms$Outbound; }; /** @internal */ -export const SyncReconcileRequestPreparedStackValidation$outboundSchema: +export const SyncReconcileRequestPreparedStackOverride$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackValidation$Outbound, - SyncReconcileRequestPreparedStackValidation + SyncReconcileRequestPreparedStackOverride$Outbound, + SyncReconcileRequestPreparedStackOverride > = z.object({ - format: z.nullable(z.string()).optional(), - max: z.nullable(z.string()).optional(), - maxItems: z.nullable(z.int()).optional(), - maxLength: z.nullable(z.int()).optional(), - min: z.nullable(z.string()).optional(), - minItems: z.nullable(z.int()).optional(), - minLength: z.nullable(z.int()).optional(), - pattern: z.nullable(z.string()).optional(), - values: z.nullable(z.array(z.string())).optional(), + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncReconcileRequestPreparedStackOverridePlatforms$outboundSchema + ), }); -export function syncReconcileRequestPreparedStackValidationToJSON( - syncReconcileRequestPreparedStackValidation: - SyncReconcileRequestPreparedStackValidation, +export function syncReconcileRequestPreparedStackOverrideToJSON( + syncReconcileRequestPreparedStackOverride: + SyncReconcileRequestPreparedStackOverride, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackValidation$outboundSchema.parse( - syncReconcileRequestPreparedStackValidation, + SyncReconcileRequestPreparedStackOverride$outboundSchema.parse( + syncReconcileRequestPreparedStackOverride, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackValidationUnion$Outbound = - | SyncReconcileRequestPreparedStackValidation$Outbound - | any; +export type SyncReconcileRequestPreparedStackOverrideUnion$Outbound = + | SyncReconcileRequestPreparedStackOverride$Outbound + | string; /** @internal */ -export const SyncReconcileRequestPreparedStackValidationUnion$outboundSchema: +export const SyncReconcileRequestPreparedStackOverrideUnion$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackValidationUnion$Outbound, - SyncReconcileRequestPreparedStackValidationUnion + SyncReconcileRequestPreparedStackOverrideUnion$Outbound, + SyncReconcileRequestPreparedStackOverrideUnion > = z.union([ - z.lazy(() => SyncReconcileRequestPreparedStackValidation$outboundSchema), - z.any(), + z.lazy(() => SyncReconcileRequestPreparedStackOverride$outboundSchema), + z.string(), ]); -export function syncReconcileRequestPreparedStackValidationUnionToJSON( - syncReconcileRequestPreparedStackValidationUnion: - SyncReconcileRequestPreparedStackValidationUnion, +export function syncReconcileRequestPreparedStackOverrideUnionToJSON( + syncReconcileRequestPreparedStackOverrideUnion: + SyncReconcileRequestPreparedStackOverrideUnion, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackValidationUnion$outboundSchema.parse( - syncReconcileRequestPreparedStackValidationUnion, + SyncReconcileRequestPreparedStackOverrideUnion$outboundSchema.parse( + syncReconcileRequestPreparedStackOverrideUnion, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackInput$Outbound = { - default?: - | SyncReconcileRequestPreparedStackDefaultString$Outbound - | SyncReconcileRequestPreparedStackDefaultNumber$Outbound - | SyncReconcileRequestPreparedStackDefaultBoolean$Outbound - | SyncReconcileRequestPreparedStackDefaultStringList$Outbound - | any - | null - | undefined; - description: string; - env?: Array | undefined; - id: string; - kind: string; - label: string; - placeholder?: string | null | undefined; - platforms?: Array | null | undefined; - providedBy: Array; - required: boolean; - validation?: - | SyncReconcileRequestPreparedStackValidation$Outbound - | any - | null - | undefined; +export type SyncReconcileRequestPreparedStackManagement2$Outbound = { + override: { + [k: string]: Array< + SyncReconcileRequestPreparedStackOverride$Outbound | string + >; + }; }; /** @internal */ -export const SyncReconcileRequestPreparedStackInput$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackInput$Outbound, - SyncReconcileRequestPreparedStackInput -> = z.object({ - default: z.nullable( - z.union([ - z.lazy(() => - SyncReconcileRequestPreparedStackDefaultString$outboundSchema - ), - z.lazy(() => - SyncReconcileRequestPreparedStackDefaultNumber$outboundSchema - ), - z.lazy(() => - SyncReconcileRequestPreparedStackDefaultBoolean$outboundSchema - ), - z.lazy(() => - SyncReconcileRequestPreparedStackDefaultStringList$outboundSchema - ), - z.any(), - ]), - ).optional(), - description: z.string(), - env: z.array( - z.lazy(() => SyncReconcileRequestPreparedStackEnv$outboundSchema), - ).optional(), - id: z.string(), - kind: PreparedStackStateKind$outboundSchema, - label: z.string(), - placeholder: z.nullable(z.string()).optional(), - platforms: z.nullable( - z.array(SyncReconcileRequestPreparedStackPlatform$outboundSchema), - ).optional(), - providedBy: z.array( - SyncReconcileRequestPreparedStackProvidedBy$outboundSchema, - ), - required: z.boolean(), - validation: z.nullable( - z.union([ - z.lazy(() => SyncReconcileRequestPreparedStackValidation$outboundSchema), - z.any(), - ]), - ).optional(), -}); +export const SyncReconcileRequestPreparedStackManagement2$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackManagement2$Outbound, + SyncReconcileRequestPreparedStackManagement2 + > = z.object({ + override: z.record( + z.string(), + z.array(z.union([ + z.lazy(() => SyncReconcileRequestPreparedStackOverride$outboundSchema), + z.string(), + ])), + ), + }); -export function syncReconcileRequestPreparedStackInputToJSON( - syncReconcileRequestPreparedStackInput: - SyncReconcileRequestPreparedStackInput, +export function syncReconcileRequestPreparedStackManagement2ToJSON( + syncReconcileRequestPreparedStackManagement2: + SyncReconcileRequestPreparedStackManagement2, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackInput$outboundSchema.parse( - syncReconcileRequestPreparedStackInput, + SyncReconcileRequestPreparedStackManagement2$outboundSchema.parse( + syncReconcileRequestPreparedStackManagement2, ), ); } /** @internal */ -export const SyncReconcileRequestPreparedStackManagementEnum$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestPreparedStackManagementEnum, - ); - -/** @internal */ -export type PreparedStackOverrideStateAwResource$Outbound = { +export type PreparedStackExtendStateAwResource$Outbound = { condition?: { [k: string]: { [k: string]: string } } | null | undefined; resources: Array; }; /** @internal */ -export const PreparedStackOverrideStateAwResource$outboundSchema: z.ZodType< - PreparedStackOverrideStateAwResource$Outbound, - PreparedStackOverrideStateAwResource +export const PreparedStackExtendStateAwResource$outboundSchema: z.ZodType< + PreparedStackExtendStateAwResource$Outbound, + PreparedStackExtendStateAwResource > = z.object({ condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) .optional(), resources: z.array(z.string()), }); -export function preparedStackOverrideStateAwResourceToJSON( - preparedStackOverrideStateAwResource: PreparedStackOverrideStateAwResource, +export function preparedStackExtendStateAwResourceToJSON( + preparedStackExtendStateAwResource: PreparedStackExtendStateAwResource, ): string { return JSON.stringify( - PreparedStackOverrideStateAwResource$outboundSchema.parse( - preparedStackOverrideStateAwResource, + PreparedStackExtendStateAwResource$outboundSchema.parse( + preparedStackExtendStateAwResource, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackOverrideAwStack$Outbound = { +export type SyncReconcileRequestPreparedStackExtendAwStack$Outbound = { condition?: { [k: string]: { [k: string]: string } } | null | undefined; resources: Array; }; /** @internal */ -export const SyncReconcileRequestPreparedStackOverrideAwStack$outboundSchema: +export const SyncReconcileRequestPreparedStackExtendAwStack$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackOverrideAwStack$Outbound, - SyncReconcileRequestPreparedStackOverrideAwStack + SyncReconcileRequestPreparedStackExtendAwStack$Outbound, + SyncReconcileRequestPreparedStackExtendAwStack > = z.object({ condition: z.nullable( z.record(z.string(), z.record(z.string(), z.string())), @@ -16037,55 +22113,55 @@ export const SyncReconcileRequestPreparedStackOverrideAwStack$outboundSchema: resources: z.array(z.string()), }); -export function syncReconcileRequestPreparedStackOverrideAwStackToJSON( - syncReconcileRequestPreparedStackOverrideAwStack: - SyncReconcileRequestPreparedStackOverrideAwStack, +export function syncReconcileRequestPreparedStackExtendAwStackToJSON( + syncReconcileRequestPreparedStackExtendAwStack: + SyncReconcileRequestPreparedStackExtendAwStack, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackOverrideAwStack$outboundSchema.parse( - syncReconcileRequestPreparedStackOverrideAwStack, + SyncReconcileRequestPreparedStackExtendAwStack$outboundSchema.parse( + syncReconcileRequestPreparedStackExtendAwStack, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackOverrideAwBinding$Outbound = { - resource?: PreparedStackOverrideStateAwResource$Outbound | undefined; - stack?: SyncReconcileRequestPreparedStackOverrideAwStack$Outbound | undefined; +export type SyncReconcileRequestPreparedStackExtendAwBinding$Outbound = { + resource?: PreparedStackExtendStateAwResource$Outbound | undefined; + stack?: SyncReconcileRequestPreparedStackExtendAwStack$Outbound | undefined; }; /** @internal */ -export const SyncReconcileRequestPreparedStackOverrideAwBinding$outboundSchema: +export const SyncReconcileRequestPreparedStackExtendAwBinding$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackOverrideAwBinding$Outbound, - SyncReconcileRequestPreparedStackOverrideAwBinding + SyncReconcileRequestPreparedStackExtendAwBinding$Outbound, + SyncReconcileRequestPreparedStackExtendAwBinding > = z.object({ - resource: z.lazy(() => PreparedStackOverrideStateAwResource$outboundSchema) + resource: z.lazy(() => PreparedStackExtendStateAwResource$outboundSchema) .optional(), stack: z.lazy(() => - SyncReconcileRequestPreparedStackOverrideAwStack$outboundSchema + SyncReconcileRequestPreparedStackExtendAwStack$outboundSchema ).optional(), }); -export function syncReconcileRequestPreparedStackOverrideAwBindingToJSON( - syncReconcileRequestPreparedStackOverrideAwBinding: - SyncReconcileRequestPreparedStackOverrideAwBinding, +export function syncReconcileRequestPreparedStackExtendAwBindingToJSON( + syncReconcileRequestPreparedStackExtendAwBinding: + SyncReconcileRequestPreparedStackExtendAwBinding, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackOverrideAwBinding$outboundSchema.parse( - syncReconcileRequestPreparedStackOverrideAwBinding, + SyncReconcileRequestPreparedStackExtendAwBinding$outboundSchema.parse( + syncReconcileRequestPreparedStackExtendAwBinding, ), ); } /** @internal */ -export const SyncReconcileRequestPreparedStackOverrideEffect$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestPreparedStackOverrideEffect, +export const SyncReconcileRequestPreparedStackExtendEffect$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestPreparedStackExtendEffect, ); /** @internal */ -export type SyncReconcileRequestPreparedStackOverrideAwGrant$Outbound = { +export type SyncReconcileRequestPreparedStackExtendAwGrant$Outbound = { actions?: Array | null | undefined; dataActions?: Array | null | undefined; permissions?: Array | null | undefined; @@ -16094,10 +22170,10 @@ export type SyncReconcileRequestPreparedStackOverrideAwGrant$Outbound = { }; /** @internal */ -export const SyncReconcileRequestPreparedStackOverrideAwGrant$outboundSchema: +export const SyncReconcileRequestPreparedStackExtendAwGrant$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackOverrideAwGrant$Outbound, - SyncReconcileRequestPreparedStackOverrideAwGrant + SyncReconcileRequestPreparedStackExtendAwGrant$Outbound, + SyncReconcileRequestPreparedStackExtendAwGrant > = z.object({ actions: z.nullable(z.array(z.string())).optional(), dataActions: z.nullable(z.array(z.string())).optional(), @@ -16106,139 +22182,137 @@ export const SyncReconcileRequestPreparedStackOverrideAwGrant$outboundSchema: residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function syncReconcileRequestPreparedStackOverrideAwGrantToJSON( - syncReconcileRequestPreparedStackOverrideAwGrant: - SyncReconcileRequestPreparedStackOverrideAwGrant, +export function syncReconcileRequestPreparedStackExtendAwGrantToJSON( + syncReconcileRequestPreparedStackExtendAwGrant: + SyncReconcileRequestPreparedStackExtendAwGrant, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackOverrideAwGrant$outboundSchema.parse( - syncReconcileRequestPreparedStackOverrideAwGrant, + SyncReconcileRequestPreparedStackExtendAwGrant$outboundSchema.parse( + syncReconcileRequestPreparedStackExtendAwGrant, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackOverrideAw$Outbound = { - binding: SyncReconcileRequestPreparedStackOverrideAwBinding$Outbound; +export type SyncReconcileRequestPreparedStackExtendAw$Outbound = { + binding: SyncReconcileRequestPreparedStackExtendAwBinding$Outbound; description?: string | null | undefined; effect?: string | undefined; - grant: SyncReconcileRequestPreparedStackOverrideAwGrant$Outbound; + grant: SyncReconcileRequestPreparedStackExtendAwGrant$Outbound; label?: string | null | undefined; }; /** @internal */ -export const SyncReconcileRequestPreparedStackOverrideAw$outboundSchema: +export const SyncReconcileRequestPreparedStackExtendAw$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackOverrideAw$Outbound, - SyncReconcileRequestPreparedStackOverrideAw + SyncReconcileRequestPreparedStackExtendAw$Outbound, + SyncReconcileRequestPreparedStackExtendAw > = z.object({ binding: z.lazy(() => - SyncReconcileRequestPreparedStackOverrideAwBinding$outboundSchema + SyncReconcileRequestPreparedStackExtendAwBinding$outboundSchema ), description: z.nullable(z.string()).optional(), - effect: SyncReconcileRequestPreparedStackOverrideEffect$outboundSchema + effect: SyncReconcileRequestPreparedStackExtendEffect$outboundSchema .optional(), grant: z.lazy(() => - SyncReconcileRequestPreparedStackOverrideAwGrant$outboundSchema + SyncReconcileRequestPreparedStackExtendAwGrant$outboundSchema ), label: z.nullable(z.string()).optional(), }); -export function syncReconcileRequestPreparedStackOverrideAwToJSON( - syncReconcileRequestPreparedStackOverrideAw: - SyncReconcileRequestPreparedStackOverrideAw, +export function syncReconcileRequestPreparedStackExtendAwToJSON( + syncReconcileRequestPreparedStackExtendAw: + SyncReconcileRequestPreparedStackExtendAw, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackOverrideAw$outboundSchema.parse( - syncReconcileRequestPreparedStackOverrideAw, + SyncReconcileRequestPreparedStackExtendAw$outboundSchema.parse( + syncReconcileRequestPreparedStackExtendAw, ), ); } /** @internal */ -export type PreparedStackOverrideStateAzureResource$Outbound = { +export type PreparedStackExtendStateAzureResource$Outbound = { scope: string; }; /** @internal */ -export const PreparedStackOverrideStateAzureResource$outboundSchema: z.ZodType< - PreparedStackOverrideStateAzureResource$Outbound, - PreparedStackOverrideStateAzureResource +export const PreparedStackExtendStateAzureResource$outboundSchema: z.ZodType< + PreparedStackExtendStateAzureResource$Outbound, + PreparedStackExtendStateAzureResource > = z.object({ scope: z.string(), }); -export function preparedStackOverrideStateAzureResourceToJSON( - preparedStackOverrideStateAzureResource: - PreparedStackOverrideStateAzureResource, +export function preparedStackExtendStateAzureResourceToJSON( + preparedStackExtendStateAzureResource: PreparedStackExtendStateAzureResource, ): string { return JSON.stringify( - PreparedStackOverrideStateAzureResource$outboundSchema.parse( - preparedStackOverrideStateAzureResource, + PreparedStackExtendStateAzureResource$outboundSchema.parse( + preparedStackExtendStateAzureResource, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackOverrideAzureStack$Outbound = { +export type SyncReconcileRequestPreparedStackExtendAzureStack$Outbound = { scope: string; }; /** @internal */ -export const SyncReconcileRequestPreparedStackOverrideAzureStack$outboundSchema: +export const SyncReconcileRequestPreparedStackExtendAzureStack$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackOverrideAzureStack$Outbound, - SyncReconcileRequestPreparedStackOverrideAzureStack + SyncReconcileRequestPreparedStackExtendAzureStack$Outbound, + SyncReconcileRequestPreparedStackExtendAzureStack > = z.object({ scope: z.string(), }); -export function syncReconcileRequestPreparedStackOverrideAzureStackToJSON( - syncReconcileRequestPreparedStackOverrideAzureStack: - SyncReconcileRequestPreparedStackOverrideAzureStack, +export function syncReconcileRequestPreparedStackExtendAzureStackToJSON( + syncReconcileRequestPreparedStackExtendAzureStack: + SyncReconcileRequestPreparedStackExtendAzureStack, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackOverrideAzureStack$outboundSchema.parse( - syncReconcileRequestPreparedStackOverrideAzureStack, + SyncReconcileRequestPreparedStackExtendAzureStack$outboundSchema.parse( + syncReconcileRequestPreparedStackExtendAzureStack, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackOverrideAzureBinding$Outbound = { - resource?: PreparedStackOverrideStateAzureResource$Outbound | undefined; +export type SyncReconcileRequestPreparedStackExtendAzureBinding$Outbound = { + resource?: PreparedStackExtendStateAzureResource$Outbound | undefined; stack?: - | SyncReconcileRequestPreparedStackOverrideAzureStack$Outbound + | SyncReconcileRequestPreparedStackExtendAzureStack$Outbound | undefined; }; /** @internal */ -export const SyncReconcileRequestPreparedStackOverrideAzureBinding$outboundSchema: +export const SyncReconcileRequestPreparedStackExtendAzureBinding$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackOverrideAzureBinding$Outbound, - SyncReconcileRequestPreparedStackOverrideAzureBinding + SyncReconcileRequestPreparedStackExtendAzureBinding$Outbound, + SyncReconcileRequestPreparedStackExtendAzureBinding > = z.object({ - resource: z.lazy(() => - PreparedStackOverrideStateAzureResource$outboundSchema - ).optional(), + resource: z.lazy(() => PreparedStackExtendStateAzureResource$outboundSchema) + .optional(), stack: z.lazy(() => - SyncReconcileRequestPreparedStackOverrideAzureStack$outboundSchema + SyncReconcileRequestPreparedStackExtendAzureStack$outboundSchema ).optional(), }); -export function syncReconcileRequestPreparedStackOverrideAzureBindingToJSON( - syncReconcileRequestPreparedStackOverrideAzureBinding: - SyncReconcileRequestPreparedStackOverrideAzureBinding, +export function syncReconcileRequestPreparedStackExtendAzureBindingToJSON( + syncReconcileRequestPreparedStackExtendAzureBinding: + SyncReconcileRequestPreparedStackExtendAzureBinding, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackOverrideAzureBinding$outboundSchema.parse( - syncReconcileRequestPreparedStackOverrideAzureBinding, + SyncReconcileRequestPreparedStackExtendAzureBinding$outboundSchema.parse( + syncReconcileRequestPreparedStackExtendAzureBinding, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackOverrideAzureGrant$Outbound = { +export type SyncReconcileRequestPreparedStackExtendAzureGrant$Outbound = { actions?: Array | null | undefined; dataActions?: Array | null | undefined; permissions?: Array | null | undefined; @@ -16247,10 +22321,10 @@ export type SyncReconcileRequestPreparedStackOverrideAzureGrant$Outbound = { }; /** @internal */ -export const SyncReconcileRequestPreparedStackOverrideAzureGrant$outboundSchema: +export const SyncReconcileRequestPreparedStackExtendAzureGrant$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackOverrideAzureGrant$Outbound, - SyncReconcileRequestPreparedStackOverrideAzureGrant + SyncReconcileRequestPreparedStackExtendAzureGrant$Outbound, + SyncReconcileRequestPreparedStackExtendAzureGrant > = z.object({ actions: z.nullable(z.array(z.string())).optional(), dataActions: z.nullable(z.array(z.string())).optional(), @@ -16259,109 +22333,109 @@ export const SyncReconcileRequestPreparedStackOverrideAzureGrant$outboundSchema: residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function syncReconcileRequestPreparedStackOverrideAzureGrantToJSON( - syncReconcileRequestPreparedStackOverrideAzureGrant: - SyncReconcileRequestPreparedStackOverrideAzureGrant, +export function syncReconcileRequestPreparedStackExtendAzureGrantToJSON( + syncReconcileRequestPreparedStackExtendAzureGrant: + SyncReconcileRequestPreparedStackExtendAzureGrant, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackOverrideAzureGrant$outboundSchema.parse( - syncReconcileRequestPreparedStackOverrideAzureGrant, + SyncReconcileRequestPreparedStackExtendAzureGrant$outboundSchema.parse( + syncReconcileRequestPreparedStackExtendAzureGrant, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackOverrideAzure$Outbound = { - binding: SyncReconcileRequestPreparedStackOverrideAzureBinding$Outbound; +export type SyncReconcileRequestPreparedStackExtendAzure$Outbound = { + binding: SyncReconcileRequestPreparedStackExtendAzureBinding$Outbound; description?: string | null | undefined; - grant: SyncReconcileRequestPreparedStackOverrideAzureGrant$Outbound; + grant: SyncReconcileRequestPreparedStackExtendAzureGrant$Outbound; label?: string | null | undefined; }; /** @internal */ -export const SyncReconcileRequestPreparedStackOverrideAzure$outboundSchema: +export const SyncReconcileRequestPreparedStackExtendAzure$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackOverrideAzure$Outbound, - SyncReconcileRequestPreparedStackOverrideAzure + SyncReconcileRequestPreparedStackExtendAzure$Outbound, + SyncReconcileRequestPreparedStackExtendAzure > = z.object({ binding: z.lazy(() => - SyncReconcileRequestPreparedStackOverrideAzureBinding$outboundSchema + SyncReconcileRequestPreparedStackExtendAzureBinding$outboundSchema ), description: z.nullable(z.string()).optional(), grant: z.lazy(() => - SyncReconcileRequestPreparedStackOverrideAzureGrant$outboundSchema + SyncReconcileRequestPreparedStackExtendAzureGrant$outboundSchema ), label: z.nullable(z.string()).optional(), }); -export function syncReconcileRequestPreparedStackOverrideAzureToJSON( - syncReconcileRequestPreparedStackOverrideAzure: - SyncReconcileRequestPreparedStackOverrideAzure, +export function syncReconcileRequestPreparedStackExtendAzureToJSON( + syncReconcileRequestPreparedStackExtendAzure: + SyncReconcileRequestPreparedStackExtendAzure, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackOverrideAzure$outboundSchema.parse( - syncReconcileRequestPreparedStackOverrideAzure, + SyncReconcileRequestPreparedStackExtendAzure$outboundSchema.parse( + syncReconcileRequestPreparedStackExtendAzure, ), ); } /** @internal */ -export type PreparedStackOverrideConditionStateResource$Outbound = { +export type PreparedStackExtendConditionStateResource$Outbound = { expression: string; title: string; }; /** @internal */ -export const PreparedStackOverrideConditionStateResource$outboundSchema: +export const PreparedStackExtendConditionStateResource$outboundSchema: z.ZodType< - PreparedStackOverrideConditionStateResource$Outbound, - PreparedStackOverrideConditionStateResource + PreparedStackExtendConditionStateResource$Outbound, + PreparedStackExtendConditionStateResource > = z.object({ expression: z.string(), title: z.string(), }); -export function preparedStackOverrideConditionStateResourceToJSON( - preparedStackOverrideConditionStateResource: - PreparedStackOverrideConditionStateResource, +export function preparedStackExtendConditionStateResourceToJSON( + preparedStackExtendConditionStateResource: + PreparedStackExtendConditionStateResource, ): string { return JSON.stringify( - PreparedStackOverrideConditionStateResource$outboundSchema.parse( - preparedStackOverrideConditionStateResource, + PreparedStackExtendConditionStateResource$outboundSchema.parse( + preparedStackExtendConditionStateResource, ), ); } /** @internal */ -export type PreparedStackOverrideStateResourceConditionUnion$Outbound = - | PreparedStackOverrideConditionStateResource$Outbound +export type PreparedStackExtendStateResourceConditionUnion$Outbound = + | PreparedStackExtendConditionStateResource$Outbound | any; /** @internal */ -export const PreparedStackOverrideStateResourceConditionUnion$outboundSchema: +export const PreparedStackExtendStateResourceConditionUnion$outboundSchema: z.ZodType< - PreparedStackOverrideStateResourceConditionUnion$Outbound, - PreparedStackOverrideStateResourceConditionUnion + PreparedStackExtendStateResourceConditionUnion$Outbound, + PreparedStackExtendStateResourceConditionUnion > = z.union([ - z.lazy(() => PreparedStackOverrideConditionStateResource$outboundSchema), + z.lazy(() => PreparedStackExtendConditionStateResource$outboundSchema), z.any(), ]); -export function preparedStackOverrideStateResourceConditionUnionToJSON( - preparedStackOverrideStateResourceConditionUnion: - PreparedStackOverrideStateResourceConditionUnion, +export function preparedStackExtendStateResourceConditionUnionToJSON( + preparedStackExtendStateResourceConditionUnion: + PreparedStackExtendStateResourceConditionUnion, ): string { return JSON.stringify( - PreparedStackOverrideStateResourceConditionUnion$outboundSchema.parse( - preparedStackOverrideStateResourceConditionUnion, + PreparedStackExtendStateResourceConditionUnion$outboundSchema.parse( + preparedStackExtendStateResourceConditionUnion, ), ); } /** @internal */ -export type PreparedStackOverrideStateGcpResource$Outbound = { +export type PreparedStackExtendStateGcpResource$Outbound = { condition?: - | PreparedStackOverrideConditionStateResource$Outbound + | PreparedStackExtendConditionStateResource$Outbound | any | null | undefined; @@ -16369,85 +22443,85 @@ export type PreparedStackOverrideStateGcpResource$Outbound = { }; /** @internal */ -export const PreparedStackOverrideStateGcpResource$outboundSchema: z.ZodType< - PreparedStackOverrideStateGcpResource$Outbound, - PreparedStackOverrideStateGcpResource +export const PreparedStackExtendStateGcpResource$outboundSchema: z.ZodType< + PreparedStackExtendStateGcpResource$Outbound, + PreparedStackExtendStateGcpResource > = z.object({ condition: z.nullable( z.union([ - z.lazy(() => PreparedStackOverrideConditionStateResource$outboundSchema), + z.lazy(() => PreparedStackExtendConditionStateResource$outboundSchema), z.any(), ]), ).optional(), scope: z.string(), }); -export function preparedStackOverrideStateGcpResourceToJSON( - preparedStackOverrideStateGcpResource: PreparedStackOverrideStateGcpResource, +export function preparedStackExtendStateGcpResourceToJSON( + preparedStackExtendStateGcpResource: PreparedStackExtendStateGcpResource, ): string { return JSON.stringify( - PreparedStackOverrideStateGcpResource$outboundSchema.parse( - preparedStackOverrideStateGcpResource, + PreparedStackExtendStateGcpResource$outboundSchema.parse( + preparedStackExtendStateGcpResource, ), ); } /** @internal */ -export type PreparedStackOverrideConditionStateStack$Outbound = { +export type PreparedStackExtendConditionStateStack$Outbound = { expression: string; title: string; }; /** @internal */ -export const PreparedStackOverrideConditionStateStack$outboundSchema: z.ZodType< - PreparedStackOverrideConditionStateStack$Outbound, - PreparedStackOverrideConditionStateStack +export const PreparedStackExtendConditionStateStack$outboundSchema: z.ZodType< + PreparedStackExtendConditionStateStack$Outbound, + PreparedStackExtendConditionStateStack > = z.object({ expression: z.string(), title: z.string(), }); -export function preparedStackOverrideConditionStateStackToJSON( - preparedStackOverrideConditionStateStack: - PreparedStackOverrideConditionStateStack, +export function preparedStackExtendConditionStateStackToJSON( + preparedStackExtendConditionStateStack: + PreparedStackExtendConditionStateStack, ): string { return JSON.stringify( - PreparedStackOverrideConditionStateStack$outboundSchema.parse( - preparedStackOverrideConditionStateStack, + PreparedStackExtendConditionStateStack$outboundSchema.parse( + preparedStackExtendConditionStateStack, ), ); } /** @internal */ -export type PreparedStackOverrideStateStackConditionUnion$Outbound = - | PreparedStackOverrideConditionStateStack$Outbound +export type PreparedStackExtendStateStackConditionUnion$Outbound = + | PreparedStackExtendConditionStateStack$Outbound | any; /** @internal */ -export const PreparedStackOverrideStateStackConditionUnion$outboundSchema: +export const PreparedStackExtendStateStackConditionUnion$outboundSchema: z.ZodType< - PreparedStackOverrideStateStackConditionUnion$Outbound, - PreparedStackOverrideStateStackConditionUnion + PreparedStackExtendStateStackConditionUnion$Outbound, + PreparedStackExtendStateStackConditionUnion > = z.union([ - z.lazy(() => PreparedStackOverrideConditionStateStack$outboundSchema), + z.lazy(() => PreparedStackExtendConditionStateStack$outboundSchema), z.any(), ]); -export function preparedStackOverrideStateStackConditionUnionToJSON( - preparedStackOverrideStateStackConditionUnion: - PreparedStackOverrideStateStackConditionUnion, +export function preparedStackExtendStateStackConditionUnionToJSON( + preparedStackExtendStateStackConditionUnion: + PreparedStackExtendStateStackConditionUnion, ): string { return JSON.stringify( - PreparedStackOverrideStateStackConditionUnion$outboundSchema.parse( - preparedStackOverrideStateStackConditionUnion, + PreparedStackExtendStateStackConditionUnion$outboundSchema.parse( + preparedStackExtendStateStackConditionUnion, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackOverrideGcpStack$Outbound = { +export type SyncReconcileRequestPreparedStackExtendGcpStack$Outbound = { condition?: - | PreparedStackOverrideConditionStateStack$Outbound + | PreparedStackExtendConditionStateStack$Outbound | any | null | undefined; @@ -16455,65 +22529,63 @@ export type SyncReconcileRequestPreparedStackOverrideGcpStack$Outbound = { }; /** @internal */ -export const SyncReconcileRequestPreparedStackOverrideGcpStack$outboundSchema: +export const SyncReconcileRequestPreparedStackExtendGcpStack$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackOverrideGcpStack$Outbound, - SyncReconcileRequestPreparedStackOverrideGcpStack + SyncReconcileRequestPreparedStackExtendGcpStack$Outbound, + SyncReconcileRequestPreparedStackExtendGcpStack > = z.object({ condition: z.nullable( z.union([ - z.lazy(() => PreparedStackOverrideConditionStateStack$outboundSchema), + z.lazy(() => PreparedStackExtendConditionStateStack$outboundSchema), z.any(), ]), ).optional(), scope: z.string(), }); -export function syncReconcileRequestPreparedStackOverrideGcpStackToJSON( - syncReconcileRequestPreparedStackOverrideGcpStack: - SyncReconcileRequestPreparedStackOverrideGcpStack, +export function syncReconcileRequestPreparedStackExtendGcpStackToJSON( + syncReconcileRequestPreparedStackExtendGcpStack: + SyncReconcileRequestPreparedStackExtendGcpStack, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackOverrideGcpStack$outboundSchema.parse( - syncReconcileRequestPreparedStackOverrideGcpStack, + SyncReconcileRequestPreparedStackExtendGcpStack$outboundSchema.parse( + syncReconcileRequestPreparedStackExtendGcpStack, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackOverrideGcpBinding$Outbound = { - resource?: PreparedStackOverrideStateGcpResource$Outbound | undefined; - stack?: - | SyncReconcileRequestPreparedStackOverrideGcpStack$Outbound - | undefined; +export type SyncReconcileRequestPreparedStackExtendGcpBinding$Outbound = { + resource?: PreparedStackExtendStateGcpResource$Outbound | undefined; + stack?: SyncReconcileRequestPreparedStackExtendGcpStack$Outbound | undefined; }; /** @internal */ -export const SyncReconcileRequestPreparedStackOverrideGcpBinding$outboundSchema: +export const SyncReconcileRequestPreparedStackExtendGcpBinding$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackOverrideGcpBinding$Outbound, - SyncReconcileRequestPreparedStackOverrideGcpBinding + SyncReconcileRequestPreparedStackExtendGcpBinding$Outbound, + SyncReconcileRequestPreparedStackExtendGcpBinding > = z.object({ - resource: z.lazy(() => PreparedStackOverrideStateGcpResource$outboundSchema) + resource: z.lazy(() => PreparedStackExtendStateGcpResource$outboundSchema) .optional(), stack: z.lazy(() => - SyncReconcileRequestPreparedStackOverrideGcpStack$outboundSchema + SyncReconcileRequestPreparedStackExtendGcpStack$outboundSchema ).optional(), }); -export function syncReconcileRequestPreparedStackOverrideGcpBindingToJSON( - syncReconcileRequestPreparedStackOverrideGcpBinding: - SyncReconcileRequestPreparedStackOverrideGcpBinding, +export function syncReconcileRequestPreparedStackExtendGcpBindingToJSON( + syncReconcileRequestPreparedStackExtendGcpBinding: + SyncReconcileRequestPreparedStackExtendGcpBinding, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackOverrideGcpBinding$outboundSchema.parse( - syncReconcileRequestPreparedStackOverrideGcpBinding, + SyncReconcileRequestPreparedStackExtendGcpBinding$outboundSchema.parse( + syncReconcileRequestPreparedStackExtendGcpBinding, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackOverrideGcpGrant$Outbound = { +export type SyncReconcileRequestPreparedStackExtendGcpGrant$Outbound = { actions?: Array | null | undefined; dataActions?: Array | null | undefined; permissions?: Array | null | undefined; @@ -16522,10 +22594,10 @@ export type SyncReconcileRequestPreparedStackOverrideGcpGrant$Outbound = { }; /** @internal */ -export const SyncReconcileRequestPreparedStackOverrideGcpGrant$outboundSchema: +export const SyncReconcileRequestPreparedStackExtendGcpGrant$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackOverrideGcpGrant$Outbound, - SyncReconcileRequestPreparedStackOverrideGcpGrant + SyncReconcileRequestPreparedStackExtendGcpGrant$Outbound, + SyncReconcileRequestPreparedStackExtendGcpGrant > = z.object({ actions: z.nullable(z.array(z.string())).optional(), dataActions: z.nullable(z.array(z.string())).optional(), @@ -16534,231 +22606,258 @@ export const SyncReconcileRequestPreparedStackOverrideGcpGrant$outboundSchema: residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function syncReconcileRequestPreparedStackOverrideGcpGrantToJSON( - syncReconcileRequestPreparedStackOverrideGcpGrant: - SyncReconcileRequestPreparedStackOverrideGcpGrant, +export function syncReconcileRequestPreparedStackExtendGcpGrantToJSON( + syncReconcileRequestPreparedStackExtendGcpGrant: + SyncReconcileRequestPreparedStackExtendGcpGrant, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackOverrideGcpGrant$outboundSchema.parse( - syncReconcileRequestPreparedStackOverrideGcpGrant, + SyncReconcileRequestPreparedStackExtendGcpGrant$outboundSchema.parse( + syncReconcileRequestPreparedStackExtendGcpGrant, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackOverrideGcp$Outbound = { - binding: SyncReconcileRequestPreparedStackOverrideGcpBinding$Outbound; +export type SyncReconcileRequestPreparedStackExtendGcp$Outbound = { + binding: SyncReconcileRequestPreparedStackExtendGcpBinding$Outbound; description?: string | null | undefined; - grant: SyncReconcileRequestPreparedStackOverrideGcpGrant$Outbound; + grant: SyncReconcileRequestPreparedStackExtendGcpGrant$Outbound; label?: string | null | undefined; }; /** @internal */ -export const SyncReconcileRequestPreparedStackOverrideGcp$outboundSchema: +export const SyncReconcileRequestPreparedStackExtendGcp$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackOverrideGcp$Outbound, - SyncReconcileRequestPreparedStackOverrideGcp + SyncReconcileRequestPreparedStackExtendGcp$Outbound, + SyncReconcileRequestPreparedStackExtendGcp > = z.object({ binding: z.lazy(() => - SyncReconcileRequestPreparedStackOverrideGcpBinding$outboundSchema + SyncReconcileRequestPreparedStackExtendGcpBinding$outboundSchema ), description: z.nullable(z.string()).optional(), grant: z.lazy(() => - SyncReconcileRequestPreparedStackOverrideGcpGrant$outboundSchema + SyncReconcileRequestPreparedStackExtendGcpGrant$outboundSchema ), label: z.nullable(z.string()).optional(), }); -export function syncReconcileRequestPreparedStackOverrideGcpToJSON( - syncReconcileRequestPreparedStackOverrideGcp: - SyncReconcileRequestPreparedStackOverrideGcp, +export function syncReconcileRequestPreparedStackExtendGcpToJSON( + syncReconcileRequestPreparedStackExtendGcp: + SyncReconcileRequestPreparedStackExtendGcp, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackOverrideGcp$outboundSchema.parse( - syncReconcileRequestPreparedStackOverrideGcp, + SyncReconcileRequestPreparedStackExtendGcp$outboundSchema.parse( + syncReconcileRequestPreparedStackExtendGcp, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackOverridePlatforms$Outbound = { +export type SyncReconcileRequestPreparedStackExtendPlatforms$Outbound = { aws?: - | Array + | Array | null | undefined; azure?: - | Array + | Array | null | undefined; gcp?: - | Array + | Array | null | undefined; }; /** @internal */ -export const SyncReconcileRequestPreparedStackOverridePlatforms$outboundSchema: +export const SyncReconcileRequestPreparedStackExtendPlatforms$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackOverridePlatforms$Outbound, - SyncReconcileRequestPreparedStackOverridePlatforms + SyncReconcileRequestPreparedStackExtendPlatforms$Outbound, + SyncReconcileRequestPreparedStackExtendPlatforms > = z.object({ aws: z.nullable( z.array(z.lazy(() => - SyncReconcileRequestPreparedStackOverrideAw$outboundSchema + SyncReconcileRequestPreparedStackExtendAw$outboundSchema )), ).optional(), azure: z.nullable( z.array(z.lazy(() => - SyncReconcileRequestPreparedStackOverrideAzure$outboundSchema + SyncReconcileRequestPreparedStackExtendAzure$outboundSchema )), ).optional(), gcp: z.nullable( z.array(z.lazy(() => - SyncReconcileRequestPreparedStackOverrideGcp$outboundSchema + SyncReconcileRequestPreparedStackExtendGcp$outboundSchema )), ).optional(), }); -export function syncReconcileRequestPreparedStackOverridePlatformsToJSON( - syncReconcileRequestPreparedStackOverridePlatforms: - SyncReconcileRequestPreparedStackOverridePlatforms, +export function syncReconcileRequestPreparedStackExtendPlatformsToJSON( + syncReconcileRequestPreparedStackExtendPlatforms: + SyncReconcileRequestPreparedStackExtendPlatforms, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackOverridePlatforms$outboundSchema.parse( - syncReconcileRequestPreparedStackOverridePlatforms, + SyncReconcileRequestPreparedStackExtendPlatforms$outboundSchema.parse( + syncReconcileRequestPreparedStackExtendPlatforms, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackOverride$Outbound = { +export type SyncReconcileRequestPreparedStackExtend$Outbound = { description: string; id: string; - platforms: SyncReconcileRequestPreparedStackOverridePlatforms$Outbound; + platforms: SyncReconcileRequestPreparedStackExtendPlatforms$Outbound; }; /** @internal */ -export const SyncReconcileRequestPreparedStackOverride$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackOverride$Outbound, - SyncReconcileRequestPreparedStackOverride - > = z.object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => - SyncReconcileRequestPreparedStackOverridePlatforms$outboundSchema - ), - }); +export const SyncReconcileRequestPreparedStackExtend$outboundSchema: z.ZodType< + SyncReconcileRequestPreparedStackExtend$Outbound, + SyncReconcileRequestPreparedStackExtend +> = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncReconcileRequestPreparedStackExtendPlatforms$outboundSchema + ), +}); -export function syncReconcileRequestPreparedStackOverrideToJSON( - syncReconcileRequestPreparedStackOverride: - SyncReconcileRequestPreparedStackOverride, +export function syncReconcileRequestPreparedStackExtendToJSON( + syncReconcileRequestPreparedStackExtend: + SyncReconcileRequestPreparedStackExtend, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackOverride$outboundSchema.parse( - syncReconcileRequestPreparedStackOverride, + SyncReconcileRequestPreparedStackExtend$outboundSchema.parse( + syncReconcileRequestPreparedStackExtend, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackOverrideUnion$Outbound = - | SyncReconcileRequestPreparedStackOverride$Outbound +export type SyncReconcileRequestPreparedStackExtendUnion$Outbound = + | SyncReconcileRequestPreparedStackExtend$Outbound | string; /** @internal */ -export const SyncReconcileRequestPreparedStackOverrideUnion$outboundSchema: +export const SyncReconcileRequestPreparedStackExtendUnion$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackOverrideUnion$Outbound, - SyncReconcileRequestPreparedStackOverrideUnion + SyncReconcileRequestPreparedStackExtendUnion$Outbound, + SyncReconcileRequestPreparedStackExtendUnion > = z.union([ - z.lazy(() => SyncReconcileRequestPreparedStackOverride$outboundSchema), + z.lazy(() => SyncReconcileRequestPreparedStackExtend$outboundSchema), z.string(), ]); -export function syncReconcileRequestPreparedStackOverrideUnionToJSON( - syncReconcileRequestPreparedStackOverrideUnion: - SyncReconcileRequestPreparedStackOverrideUnion, +export function syncReconcileRequestPreparedStackExtendUnionToJSON( + syncReconcileRequestPreparedStackExtendUnion: + SyncReconcileRequestPreparedStackExtendUnion, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackOverrideUnion$outboundSchema.parse( - syncReconcileRequestPreparedStackOverrideUnion, + SyncReconcileRequestPreparedStackExtendUnion$outboundSchema.parse( + syncReconcileRequestPreparedStackExtendUnion, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackManagement2$Outbound = { - override: { +export type SyncReconcileRequestPreparedStackManagement1$Outbound = { + extend: { [k: string]: Array< - SyncReconcileRequestPreparedStackOverride$Outbound | string + SyncReconcileRequestPreparedStackExtend$Outbound | string >; }; }; /** @internal */ -export const SyncReconcileRequestPreparedStackManagement2$outboundSchema: +export const SyncReconcileRequestPreparedStackManagement1$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackManagement2$Outbound, - SyncReconcileRequestPreparedStackManagement2 + SyncReconcileRequestPreparedStackManagement1$Outbound, + SyncReconcileRequestPreparedStackManagement1 > = z.object({ - override: z.record( + extend: z.record( z.string(), z.array(z.union([ - z.lazy(() => SyncReconcileRequestPreparedStackOverride$outboundSchema), + z.lazy(() => SyncReconcileRequestPreparedStackExtend$outboundSchema), z.string(), ])), ), }); -export function syncReconcileRequestPreparedStackManagement2ToJSON( - syncReconcileRequestPreparedStackManagement2: - SyncReconcileRequestPreparedStackManagement2, +export function syncReconcileRequestPreparedStackManagement1ToJSON( + syncReconcileRequestPreparedStackManagement1: + SyncReconcileRequestPreparedStackManagement1, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackManagement2$outboundSchema.parse( - syncReconcileRequestPreparedStackManagement2, + SyncReconcileRequestPreparedStackManagement1$outboundSchema.parse( + syncReconcileRequestPreparedStackManagement1, ), ); } /** @internal */ -export type PreparedStackExtendStateAwResource$Outbound = { +export type SyncReconcileRequestPreparedStackManagementUnion$Outbound = + | SyncReconcileRequestPreparedStackManagement1$Outbound + | SyncReconcileRequestPreparedStackManagement2$Outbound + | string; + +/** @internal */ +export const SyncReconcileRequestPreparedStackManagementUnion$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackManagementUnion$Outbound, + SyncReconcileRequestPreparedStackManagementUnion + > = z.union([ + z.lazy(() => SyncReconcileRequestPreparedStackManagement1$outboundSchema), + z.lazy(() => SyncReconcileRequestPreparedStackManagement2$outboundSchema), + SyncReconcileRequestPreparedStackManagementEnum$outboundSchema, + ]); + +export function syncReconcileRequestPreparedStackManagementUnionToJSON( + syncReconcileRequestPreparedStackManagementUnion: + SyncReconcileRequestPreparedStackManagementUnion, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackManagementUnion$outboundSchema.parse( + syncReconcileRequestPreparedStackManagementUnion, + ), + ); +} + +/** @internal */ +export type PreparedStackProfileStateAwResource$Outbound = { condition?: { [k: string]: { [k: string]: string } } | null | undefined; resources: Array; }; /** @internal */ -export const PreparedStackExtendStateAwResource$outboundSchema: z.ZodType< - PreparedStackExtendStateAwResource$Outbound, - PreparedStackExtendStateAwResource +export const PreparedStackProfileStateAwResource$outboundSchema: z.ZodType< + PreparedStackProfileStateAwResource$Outbound, + PreparedStackProfileStateAwResource > = z.object({ condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) .optional(), resources: z.array(z.string()), }); -export function preparedStackExtendStateAwResourceToJSON( - preparedStackExtendStateAwResource: PreparedStackExtendStateAwResource, +export function preparedStackProfileStateAwResourceToJSON( + preparedStackProfileStateAwResource: PreparedStackProfileStateAwResource, ): string { return JSON.stringify( - PreparedStackExtendStateAwResource$outboundSchema.parse( - preparedStackExtendStateAwResource, + PreparedStackProfileStateAwResource$outboundSchema.parse( + preparedStackProfileStateAwResource, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackExtendAwStack$Outbound = { +export type SyncReconcileRequestPreparedStackProfileAwStack$Outbound = { condition?: { [k: string]: { [k: string]: string } } | null | undefined; resources: Array; }; /** @internal */ -export const SyncReconcileRequestPreparedStackExtendAwStack$outboundSchema: +export const SyncReconcileRequestPreparedStackProfileAwStack$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackExtendAwStack$Outbound, - SyncReconcileRequestPreparedStackExtendAwStack + SyncReconcileRequestPreparedStackProfileAwStack$Outbound, + SyncReconcileRequestPreparedStackProfileAwStack > = z.object({ condition: z.nullable( z.record(z.string(), z.record(z.string(), z.string())), @@ -16766,55 +22865,55 @@ export const SyncReconcileRequestPreparedStackExtendAwStack$outboundSchema: resources: z.array(z.string()), }); -export function syncReconcileRequestPreparedStackExtendAwStackToJSON( - syncReconcileRequestPreparedStackExtendAwStack: - SyncReconcileRequestPreparedStackExtendAwStack, +export function syncReconcileRequestPreparedStackProfileAwStackToJSON( + syncReconcileRequestPreparedStackProfileAwStack: + SyncReconcileRequestPreparedStackProfileAwStack, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackExtendAwStack$outboundSchema.parse( - syncReconcileRequestPreparedStackExtendAwStack, + SyncReconcileRequestPreparedStackProfileAwStack$outboundSchema.parse( + syncReconcileRequestPreparedStackProfileAwStack, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackExtendAwBinding$Outbound = { - resource?: PreparedStackExtendStateAwResource$Outbound | undefined; - stack?: SyncReconcileRequestPreparedStackExtendAwStack$Outbound | undefined; +export type SyncReconcileRequestPreparedStackProfileAwBinding$Outbound = { + resource?: PreparedStackProfileStateAwResource$Outbound | undefined; + stack?: SyncReconcileRequestPreparedStackProfileAwStack$Outbound | undefined; }; /** @internal */ -export const SyncReconcileRequestPreparedStackExtendAwBinding$outboundSchema: +export const SyncReconcileRequestPreparedStackProfileAwBinding$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackExtendAwBinding$Outbound, - SyncReconcileRequestPreparedStackExtendAwBinding + SyncReconcileRequestPreparedStackProfileAwBinding$Outbound, + SyncReconcileRequestPreparedStackProfileAwBinding > = z.object({ - resource: z.lazy(() => PreparedStackExtendStateAwResource$outboundSchema) + resource: z.lazy(() => PreparedStackProfileStateAwResource$outboundSchema) .optional(), stack: z.lazy(() => - SyncReconcileRequestPreparedStackExtendAwStack$outboundSchema + SyncReconcileRequestPreparedStackProfileAwStack$outboundSchema ).optional(), }); -export function syncReconcileRequestPreparedStackExtendAwBindingToJSON( - syncReconcileRequestPreparedStackExtendAwBinding: - SyncReconcileRequestPreparedStackExtendAwBinding, +export function syncReconcileRequestPreparedStackProfileAwBindingToJSON( + syncReconcileRequestPreparedStackProfileAwBinding: + SyncReconcileRequestPreparedStackProfileAwBinding, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackExtendAwBinding$outboundSchema.parse( - syncReconcileRequestPreparedStackExtendAwBinding, + SyncReconcileRequestPreparedStackProfileAwBinding$outboundSchema.parse( + syncReconcileRequestPreparedStackProfileAwBinding, ), ); } /** @internal */ -export const SyncReconcileRequestPreparedStackExtendEffect$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestPreparedStackExtendEffect, +export const SyncReconcileRequestPreparedStackProfileEffect$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestPreparedStackProfileEffect, ); /** @internal */ -export type SyncReconcileRequestPreparedStackExtendAwGrant$Outbound = { +export type SyncReconcileRequestPreparedStackProfileAwGrant$Outbound = { actions?: Array | null | undefined; dataActions?: Array | null | undefined; permissions?: Array | null | undefined; @@ -16823,10 +22922,10 @@ export type SyncReconcileRequestPreparedStackExtendAwGrant$Outbound = { }; /** @internal */ -export const SyncReconcileRequestPreparedStackExtendAwGrant$outboundSchema: +export const SyncReconcileRequestPreparedStackProfileAwGrant$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackExtendAwGrant$Outbound, - SyncReconcileRequestPreparedStackExtendAwGrant + SyncReconcileRequestPreparedStackProfileAwGrant$Outbound, + SyncReconcileRequestPreparedStackProfileAwGrant > = z.object({ actions: z.nullable(z.array(z.string())).optional(), dataActions: z.nullable(z.array(z.string())).optional(), @@ -16835,137 +22934,139 @@ export const SyncReconcileRequestPreparedStackExtendAwGrant$outboundSchema: residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function syncReconcileRequestPreparedStackExtendAwGrantToJSON( - syncReconcileRequestPreparedStackExtendAwGrant: - SyncReconcileRequestPreparedStackExtendAwGrant, +export function syncReconcileRequestPreparedStackProfileAwGrantToJSON( + syncReconcileRequestPreparedStackProfileAwGrant: + SyncReconcileRequestPreparedStackProfileAwGrant, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackExtendAwGrant$outboundSchema.parse( - syncReconcileRequestPreparedStackExtendAwGrant, + SyncReconcileRequestPreparedStackProfileAwGrant$outboundSchema.parse( + syncReconcileRequestPreparedStackProfileAwGrant, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackExtendAw$Outbound = { - binding: SyncReconcileRequestPreparedStackExtendAwBinding$Outbound; +export type SyncReconcileRequestPreparedStackProfileAw$Outbound = { + binding: SyncReconcileRequestPreparedStackProfileAwBinding$Outbound; description?: string | null | undefined; effect?: string | undefined; - grant: SyncReconcileRequestPreparedStackExtendAwGrant$Outbound; + grant: SyncReconcileRequestPreparedStackProfileAwGrant$Outbound; label?: string | null | undefined; }; /** @internal */ -export const SyncReconcileRequestPreparedStackExtendAw$outboundSchema: +export const SyncReconcileRequestPreparedStackProfileAw$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackExtendAw$Outbound, - SyncReconcileRequestPreparedStackExtendAw + SyncReconcileRequestPreparedStackProfileAw$Outbound, + SyncReconcileRequestPreparedStackProfileAw > = z.object({ binding: z.lazy(() => - SyncReconcileRequestPreparedStackExtendAwBinding$outboundSchema + SyncReconcileRequestPreparedStackProfileAwBinding$outboundSchema ), description: z.nullable(z.string()).optional(), - effect: SyncReconcileRequestPreparedStackExtendEffect$outboundSchema + effect: SyncReconcileRequestPreparedStackProfileEffect$outboundSchema .optional(), grant: z.lazy(() => - SyncReconcileRequestPreparedStackExtendAwGrant$outboundSchema + SyncReconcileRequestPreparedStackProfileAwGrant$outboundSchema ), label: z.nullable(z.string()).optional(), }); -export function syncReconcileRequestPreparedStackExtendAwToJSON( - syncReconcileRequestPreparedStackExtendAw: - SyncReconcileRequestPreparedStackExtendAw, +export function syncReconcileRequestPreparedStackProfileAwToJSON( + syncReconcileRequestPreparedStackProfileAw: + SyncReconcileRequestPreparedStackProfileAw, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackExtendAw$outboundSchema.parse( - syncReconcileRequestPreparedStackExtendAw, + SyncReconcileRequestPreparedStackProfileAw$outboundSchema.parse( + syncReconcileRequestPreparedStackProfileAw, ), ); } /** @internal */ -export type PreparedStackExtendStateAzureResource$Outbound = { +export type PreparedStackProfileStateAzureResource$Outbound = { scope: string; }; /** @internal */ -export const PreparedStackExtendStateAzureResource$outboundSchema: z.ZodType< - PreparedStackExtendStateAzureResource$Outbound, - PreparedStackExtendStateAzureResource +export const PreparedStackProfileStateAzureResource$outboundSchema: z.ZodType< + PreparedStackProfileStateAzureResource$Outbound, + PreparedStackProfileStateAzureResource > = z.object({ scope: z.string(), }); -export function preparedStackExtendStateAzureResourceToJSON( - preparedStackExtendStateAzureResource: PreparedStackExtendStateAzureResource, +export function preparedStackProfileStateAzureResourceToJSON( + preparedStackProfileStateAzureResource: + PreparedStackProfileStateAzureResource, ): string { return JSON.stringify( - PreparedStackExtendStateAzureResource$outboundSchema.parse( - preparedStackExtendStateAzureResource, + PreparedStackProfileStateAzureResource$outboundSchema.parse( + preparedStackProfileStateAzureResource, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackExtendAzureStack$Outbound = { +export type SyncReconcileRequestPreparedStackProfileAzureStack$Outbound = { scope: string; }; /** @internal */ -export const SyncReconcileRequestPreparedStackExtendAzureStack$outboundSchema: +export const SyncReconcileRequestPreparedStackProfileAzureStack$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackExtendAzureStack$Outbound, - SyncReconcileRequestPreparedStackExtendAzureStack + SyncReconcileRequestPreparedStackProfileAzureStack$Outbound, + SyncReconcileRequestPreparedStackProfileAzureStack > = z.object({ scope: z.string(), }); -export function syncReconcileRequestPreparedStackExtendAzureStackToJSON( - syncReconcileRequestPreparedStackExtendAzureStack: - SyncReconcileRequestPreparedStackExtendAzureStack, +export function syncReconcileRequestPreparedStackProfileAzureStackToJSON( + syncReconcileRequestPreparedStackProfileAzureStack: + SyncReconcileRequestPreparedStackProfileAzureStack, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackExtendAzureStack$outboundSchema.parse( - syncReconcileRequestPreparedStackExtendAzureStack, + SyncReconcileRequestPreparedStackProfileAzureStack$outboundSchema.parse( + syncReconcileRequestPreparedStackProfileAzureStack, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackExtendAzureBinding$Outbound = { - resource?: PreparedStackExtendStateAzureResource$Outbound | undefined; +export type SyncReconcileRequestPreparedStackProfileAzureBinding$Outbound = { + resource?: PreparedStackProfileStateAzureResource$Outbound | undefined; stack?: - | SyncReconcileRequestPreparedStackExtendAzureStack$Outbound + | SyncReconcileRequestPreparedStackProfileAzureStack$Outbound | undefined; }; /** @internal */ -export const SyncReconcileRequestPreparedStackExtendAzureBinding$outboundSchema: +export const SyncReconcileRequestPreparedStackProfileAzureBinding$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackExtendAzureBinding$Outbound, - SyncReconcileRequestPreparedStackExtendAzureBinding + SyncReconcileRequestPreparedStackProfileAzureBinding$Outbound, + SyncReconcileRequestPreparedStackProfileAzureBinding > = z.object({ - resource: z.lazy(() => PreparedStackExtendStateAzureResource$outboundSchema) - .optional(), + resource: z.lazy(() => + PreparedStackProfileStateAzureResource$outboundSchema + ).optional(), stack: z.lazy(() => - SyncReconcileRequestPreparedStackExtendAzureStack$outboundSchema + SyncReconcileRequestPreparedStackProfileAzureStack$outboundSchema ).optional(), }); -export function syncReconcileRequestPreparedStackExtendAzureBindingToJSON( - syncReconcileRequestPreparedStackExtendAzureBinding: - SyncReconcileRequestPreparedStackExtendAzureBinding, +export function syncReconcileRequestPreparedStackProfileAzureBindingToJSON( + syncReconcileRequestPreparedStackProfileAzureBinding: + SyncReconcileRequestPreparedStackProfileAzureBinding, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackExtendAzureBinding$outboundSchema.parse( - syncReconcileRequestPreparedStackExtendAzureBinding, + SyncReconcileRequestPreparedStackProfileAzureBinding$outboundSchema.parse( + syncReconcileRequestPreparedStackProfileAzureBinding, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackExtendAzureGrant$Outbound = { +export type SyncReconcileRequestPreparedStackProfileAzureGrant$Outbound = { actions?: Array | null | undefined; dataActions?: Array | null | undefined; permissions?: Array | null | undefined; @@ -16974,10 +23075,10 @@ export type SyncReconcileRequestPreparedStackExtendAzureGrant$Outbound = { }; /** @internal */ -export const SyncReconcileRequestPreparedStackExtendAzureGrant$outboundSchema: +export const SyncReconcileRequestPreparedStackProfileAzureGrant$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackExtendAzureGrant$Outbound, - SyncReconcileRequestPreparedStackExtendAzureGrant + SyncReconcileRequestPreparedStackProfileAzureGrant$Outbound, + SyncReconcileRequestPreparedStackProfileAzureGrant > = z.object({ actions: z.nullable(z.array(z.string())).optional(), dataActions: z.nullable(z.array(z.string())).optional(), @@ -16986,109 +23087,109 @@ export const SyncReconcileRequestPreparedStackExtendAzureGrant$outboundSchema: residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function syncReconcileRequestPreparedStackExtendAzureGrantToJSON( - syncReconcileRequestPreparedStackExtendAzureGrant: - SyncReconcileRequestPreparedStackExtendAzureGrant, +export function syncReconcileRequestPreparedStackProfileAzureGrantToJSON( + syncReconcileRequestPreparedStackProfileAzureGrant: + SyncReconcileRequestPreparedStackProfileAzureGrant, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackExtendAzureGrant$outboundSchema.parse( - syncReconcileRequestPreparedStackExtendAzureGrant, + SyncReconcileRequestPreparedStackProfileAzureGrant$outboundSchema.parse( + syncReconcileRequestPreparedStackProfileAzureGrant, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackExtendAzure$Outbound = { - binding: SyncReconcileRequestPreparedStackExtendAzureBinding$Outbound; +export type SyncReconcileRequestPreparedStackProfileAzure$Outbound = { + binding: SyncReconcileRequestPreparedStackProfileAzureBinding$Outbound; description?: string | null | undefined; - grant: SyncReconcileRequestPreparedStackExtendAzureGrant$Outbound; + grant: SyncReconcileRequestPreparedStackProfileAzureGrant$Outbound; label?: string | null | undefined; }; /** @internal */ -export const SyncReconcileRequestPreparedStackExtendAzure$outboundSchema: +export const SyncReconcileRequestPreparedStackProfileAzure$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackExtendAzure$Outbound, - SyncReconcileRequestPreparedStackExtendAzure + SyncReconcileRequestPreparedStackProfileAzure$Outbound, + SyncReconcileRequestPreparedStackProfileAzure > = z.object({ binding: z.lazy(() => - SyncReconcileRequestPreparedStackExtendAzureBinding$outboundSchema + SyncReconcileRequestPreparedStackProfileAzureBinding$outboundSchema ), description: z.nullable(z.string()).optional(), grant: z.lazy(() => - SyncReconcileRequestPreparedStackExtendAzureGrant$outboundSchema + SyncReconcileRequestPreparedStackProfileAzureGrant$outboundSchema ), label: z.nullable(z.string()).optional(), }); -export function syncReconcileRequestPreparedStackExtendAzureToJSON( - syncReconcileRequestPreparedStackExtendAzure: - SyncReconcileRequestPreparedStackExtendAzure, +export function syncReconcileRequestPreparedStackProfileAzureToJSON( + syncReconcileRequestPreparedStackProfileAzure: + SyncReconcileRequestPreparedStackProfileAzure, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackExtendAzure$outboundSchema.parse( - syncReconcileRequestPreparedStackExtendAzure, + SyncReconcileRequestPreparedStackProfileAzure$outboundSchema.parse( + syncReconcileRequestPreparedStackProfileAzure, ), ); } /** @internal */ -export type PreparedStackExtendConditionStateResource$Outbound = { +export type PreparedStackProfileConditionStateResource$Outbound = { expression: string; title: string; }; /** @internal */ -export const PreparedStackExtendConditionStateResource$outboundSchema: +export const PreparedStackProfileConditionStateResource$outboundSchema: z.ZodType< - PreparedStackExtendConditionStateResource$Outbound, - PreparedStackExtendConditionStateResource + PreparedStackProfileConditionStateResource$Outbound, + PreparedStackProfileConditionStateResource > = z.object({ expression: z.string(), title: z.string(), }); -export function preparedStackExtendConditionStateResourceToJSON( - preparedStackExtendConditionStateResource: - PreparedStackExtendConditionStateResource, +export function preparedStackProfileConditionStateResourceToJSON( + preparedStackProfileConditionStateResource: + PreparedStackProfileConditionStateResource, ): string { return JSON.stringify( - PreparedStackExtendConditionStateResource$outboundSchema.parse( - preparedStackExtendConditionStateResource, + PreparedStackProfileConditionStateResource$outboundSchema.parse( + preparedStackProfileConditionStateResource, ), ); } /** @internal */ -export type PreparedStackExtendStateResourceConditionUnion$Outbound = - | PreparedStackExtendConditionStateResource$Outbound +export type PreparedStackProfileStateResourceConditionUnion$Outbound = + | PreparedStackProfileConditionStateResource$Outbound | any; /** @internal */ -export const PreparedStackExtendStateResourceConditionUnion$outboundSchema: +export const PreparedStackProfileStateResourceConditionUnion$outboundSchema: z.ZodType< - PreparedStackExtendStateResourceConditionUnion$Outbound, - PreparedStackExtendStateResourceConditionUnion + PreparedStackProfileStateResourceConditionUnion$Outbound, + PreparedStackProfileStateResourceConditionUnion > = z.union([ - z.lazy(() => PreparedStackExtendConditionStateResource$outboundSchema), + z.lazy(() => PreparedStackProfileConditionStateResource$outboundSchema), z.any(), ]); -export function preparedStackExtendStateResourceConditionUnionToJSON( - preparedStackExtendStateResourceConditionUnion: - PreparedStackExtendStateResourceConditionUnion, +export function preparedStackProfileStateResourceConditionUnionToJSON( + preparedStackProfileStateResourceConditionUnion: + PreparedStackProfileStateResourceConditionUnion, ): string { return JSON.stringify( - PreparedStackExtendStateResourceConditionUnion$outboundSchema.parse( - preparedStackExtendStateResourceConditionUnion, + PreparedStackProfileStateResourceConditionUnion$outboundSchema.parse( + preparedStackProfileStateResourceConditionUnion, ), ); } /** @internal */ -export type PreparedStackExtendStateGcpResource$Outbound = { +export type PreparedStackProfileStateGcpResource$Outbound = { condition?: - | PreparedStackExtendConditionStateResource$Outbound + | PreparedStackProfileConditionStateResource$Outbound | any | null | undefined; @@ -17096,85 +23197,85 @@ export type PreparedStackExtendStateGcpResource$Outbound = { }; /** @internal */ -export const PreparedStackExtendStateGcpResource$outboundSchema: z.ZodType< - PreparedStackExtendStateGcpResource$Outbound, - PreparedStackExtendStateGcpResource +export const PreparedStackProfileStateGcpResource$outboundSchema: z.ZodType< + PreparedStackProfileStateGcpResource$Outbound, + PreparedStackProfileStateGcpResource > = z.object({ condition: z.nullable( z.union([ - z.lazy(() => PreparedStackExtendConditionStateResource$outboundSchema), + z.lazy(() => PreparedStackProfileConditionStateResource$outboundSchema), z.any(), ]), ).optional(), scope: z.string(), }); -export function preparedStackExtendStateGcpResourceToJSON( - preparedStackExtendStateGcpResource: PreparedStackExtendStateGcpResource, +export function preparedStackProfileStateGcpResourceToJSON( + preparedStackProfileStateGcpResource: PreparedStackProfileStateGcpResource, ): string { return JSON.stringify( - PreparedStackExtendStateGcpResource$outboundSchema.parse( - preparedStackExtendStateGcpResource, + PreparedStackProfileStateGcpResource$outboundSchema.parse( + preparedStackProfileStateGcpResource, ), ); } /** @internal */ -export type PreparedStackExtendConditionStateStack$Outbound = { +export type PreparedStackProfileConditionStateStack$Outbound = { expression: string; title: string; }; /** @internal */ -export const PreparedStackExtendConditionStateStack$outboundSchema: z.ZodType< - PreparedStackExtendConditionStateStack$Outbound, - PreparedStackExtendConditionStateStack +export const PreparedStackProfileConditionStateStack$outboundSchema: z.ZodType< + PreparedStackProfileConditionStateStack$Outbound, + PreparedStackProfileConditionStateStack > = z.object({ expression: z.string(), title: z.string(), }); -export function preparedStackExtendConditionStateStackToJSON( - preparedStackExtendConditionStateStack: - PreparedStackExtendConditionStateStack, +export function preparedStackProfileConditionStateStackToJSON( + preparedStackProfileConditionStateStack: + PreparedStackProfileConditionStateStack, ): string { return JSON.stringify( - PreparedStackExtendConditionStateStack$outboundSchema.parse( - preparedStackExtendConditionStateStack, + PreparedStackProfileConditionStateStack$outboundSchema.parse( + preparedStackProfileConditionStateStack, ), ); } /** @internal */ -export type PreparedStackExtendStateStackConditionUnion$Outbound = - | PreparedStackExtendConditionStateStack$Outbound +export type PreparedStackProfileStateStackConditionUnion$Outbound = + | PreparedStackProfileConditionStateStack$Outbound | any; /** @internal */ -export const PreparedStackExtendStateStackConditionUnion$outboundSchema: +export const PreparedStackProfileStateStackConditionUnion$outboundSchema: z.ZodType< - PreparedStackExtendStateStackConditionUnion$Outbound, - PreparedStackExtendStateStackConditionUnion + PreparedStackProfileStateStackConditionUnion$Outbound, + PreparedStackProfileStateStackConditionUnion > = z.union([ - z.lazy(() => PreparedStackExtendConditionStateStack$outboundSchema), + z.lazy(() => PreparedStackProfileConditionStateStack$outboundSchema), z.any(), ]); -export function preparedStackExtendStateStackConditionUnionToJSON( - preparedStackExtendStateStackConditionUnion: - PreparedStackExtendStateStackConditionUnion, +export function preparedStackProfileStateStackConditionUnionToJSON( + preparedStackProfileStateStackConditionUnion: + PreparedStackProfileStateStackConditionUnion, ): string { return JSON.stringify( - PreparedStackExtendStateStackConditionUnion$outboundSchema.parse( - preparedStackExtendStateStackConditionUnion, + PreparedStackProfileStateStackConditionUnion$outboundSchema.parse( + preparedStackProfileStateStackConditionUnion, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackExtendGcpStack$Outbound = { +export type SyncReconcileRequestPreparedStackProfileGcpStack$Outbound = { condition?: - | PreparedStackExtendConditionStateStack$Outbound + | PreparedStackProfileConditionStateStack$Outbound | any | null | undefined; @@ -17182,63 +23283,63 @@ export type SyncReconcileRequestPreparedStackExtendGcpStack$Outbound = { }; /** @internal */ -export const SyncReconcileRequestPreparedStackExtendGcpStack$outboundSchema: +export const SyncReconcileRequestPreparedStackProfileGcpStack$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackExtendGcpStack$Outbound, - SyncReconcileRequestPreparedStackExtendGcpStack + SyncReconcileRequestPreparedStackProfileGcpStack$Outbound, + SyncReconcileRequestPreparedStackProfileGcpStack > = z.object({ condition: z.nullable( z.union([ - z.lazy(() => PreparedStackExtendConditionStateStack$outboundSchema), + z.lazy(() => PreparedStackProfileConditionStateStack$outboundSchema), z.any(), ]), ).optional(), scope: z.string(), }); -export function syncReconcileRequestPreparedStackExtendGcpStackToJSON( - syncReconcileRequestPreparedStackExtendGcpStack: - SyncReconcileRequestPreparedStackExtendGcpStack, +export function syncReconcileRequestPreparedStackProfileGcpStackToJSON( + syncReconcileRequestPreparedStackProfileGcpStack: + SyncReconcileRequestPreparedStackProfileGcpStack, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackExtendGcpStack$outboundSchema.parse( - syncReconcileRequestPreparedStackExtendGcpStack, + SyncReconcileRequestPreparedStackProfileGcpStack$outboundSchema.parse( + syncReconcileRequestPreparedStackProfileGcpStack, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackExtendGcpBinding$Outbound = { - resource?: PreparedStackExtendStateGcpResource$Outbound | undefined; - stack?: SyncReconcileRequestPreparedStackExtendGcpStack$Outbound | undefined; +export type SyncReconcileRequestPreparedStackProfileGcpBinding$Outbound = { + resource?: PreparedStackProfileStateGcpResource$Outbound | undefined; + stack?: SyncReconcileRequestPreparedStackProfileGcpStack$Outbound | undefined; }; /** @internal */ -export const SyncReconcileRequestPreparedStackExtendGcpBinding$outboundSchema: +export const SyncReconcileRequestPreparedStackProfileGcpBinding$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackExtendGcpBinding$Outbound, - SyncReconcileRequestPreparedStackExtendGcpBinding + SyncReconcileRequestPreparedStackProfileGcpBinding$Outbound, + SyncReconcileRequestPreparedStackProfileGcpBinding > = z.object({ - resource: z.lazy(() => PreparedStackExtendStateGcpResource$outboundSchema) + resource: z.lazy(() => PreparedStackProfileStateGcpResource$outboundSchema) .optional(), stack: z.lazy(() => - SyncReconcileRequestPreparedStackExtendGcpStack$outboundSchema + SyncReconcileRequestPreparedStackProfileGcpStack$outboundSchema ).optional(), }); -export function syncReconcileRequestPreparedStackExtendGcpBindingToJSON( - syncReconcileRequestPreparedStackExtendGcpBinding: - SyncReconcileRequestPreparedStackExtendGcpBinding, +export function syncReconcileRequestPreparedStackProfileGcpBindingToJSON( + syncReconcileRequestPreparedStackProfileGcpBinding: + SyncReconcileRequestPreparedStackProfileGcpBinding, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackExtendGcpBinding$outboundSchema.parse( - syncReconcileRequestPreparedStackExtendGcpBinding, + SyncReconcileRequestPreparedStackProfileGcpBinding$outboundSchema.parse( + syncReconcileRequestPreparedStackProfileGcpBinding, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackExtendGcpGrant$Outbound = { +export type SyncReconcileRequestPreparedStackProfileGcpGrant$Outbound = { actions?: Array | null | undefined; dataActions?: Array | null | undefined; permissions?: Array | null | undefined; @@ -17247,10 +23348,10 @@ export type SyncReconcileRequestPreparedStackExtendGcpGrant$Outbound = { }; /** @internal */ -export const SyncReconcileRequestPreparedStackExtendGcpGrant$outboundSchema: +export const SyncReconcileRequestPreparedStackProfileGcpGrant$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackExtendGcpGrant$Outbound, - SyncReconcileRequestPreparedStackExtendGcpGrant + SyncReconcileRequestPreparedStackProfileGcpGrant$Outbound, + SyncReconcileRequestPreparedStackProfileGcpGrant > = z.object({ actions: z.nullable(z.array(z.string())).optional(), dataActions: z.nullable(z.array(z.string())).optional(), @@ -17259,2076 +23360,2141 @@ export const SyncReconcileRequestPreparedStackExtendGcpGrant$outboundSchema: residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function syncReconcileRequestPreparedStackExtendGcpGrantToJSON( - syncReconcileRequestPreparedStackExtendGcpGrant: - SyncReconcileRequestPreparedStackExtendGcpGrant, +export function syncReconcileRequestPreparedStackProfileGcpGrantToJSON( + syncReconcileRequestPreparedStackProfileGcpGrant: + SyncReconcileRequestPreparedStackProfileGcpGrant, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackExtendGcpGrant$outboundSchema.parse( - syncReconcileRequestPreparedStackExtendGcpGrant, + SyncReconcileRequestPreparedStackProfileGcpGrant$outboundSchema.parse( + syncReconcileRequestPreparedStackProfileGcpGrant, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackExtendGcp$Outbound = { - binding: SyncReconcileRequestPreparedStackExtendGcpBinding$Outbound; +export type SyncReconcileRequestPreparedStackProfileGcp$Outbound = { + binding: SyncReconcileRequestPreparedStackProfileGcpBinding$Outbound; description?: string | null | undefined; - grant: SyncReconcileRequestPreparedStackExtendGcpGrant$Outbound; + grant: SyncReconcileRequestPreparedStackProfileGcpGrant$Outbound; label?: string | null | undefined; }; /** @internal */ -export const SyncReconcileRequestPreparedStackExtendGcp$outboundSchema: +export const SyncReconcileRequestPreparedStackProfileGcp$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackExtendGcp$Outbound, - SyncReconcileRequestPreparedStackExtendGcp + SyncReconcileRequestPreparedStackProfileGcp$Outbound, + SyncReconcileRequestPreparedStackProfileGcp > = z.object({ binding: z.lazy(() => - SyncReconcileRequestPreparedStackExtendGcpBinding$outboundSchema + SyncReconcileRequestPreparedStackProfileGcpBinding$outboundSchema ), description: z.nullable(z.string()).optional(), grant: z.lazy(() => - SyncReconcileRequestPreparedStackExtendGcpGrant$outboundSchema + SyncReconcileRequestPreparedStackProfileGcpGrant$outboundSchema ), label: z.nullable(z.string()).optional(), }); -export function syncReconcileRequestPreparedStackExtendGcpToJSON( - syncReconcileRequestPreparedStackExtendGcp: - SyncReconcileRequestPreparedStackExtendGcp, +export function syncReconcileRequestPreparedStackProfileGcpToJSON( + syncReconcileRequestPreparedStackProfileGcp: + SyncReconcileRequestPreparedStackProfileGcp, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackExtendGcp$outboundSchema.parse( - syncReconcileRequestPreparedStackExtendGcp, + SyncReconcileRequestPreparedStackProfileGcp$outboundSchema.parse( + syncReconcileRequestPreparedStackProfileGcp, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackExtendPlatforms$Outbound = { +export type SyncReconcileRequestPreparedStackProfilePlatforms$Outbound = { aws?: - | Array + | Array | null | undefined; azure?: - | Array + | Array | null | undefined; gcp?: - | Array + | Array | null | undefined; }; /** @internal */ -export const SyncReconcileRequestPreparedStackExtendPlatforms$outboundSchema: +export const SyncReconcileRequestPreparedStackProfilePlatforms$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackExtendPlatforms$Outbound, - SyncReconcileRequestPreparedStackExtendPlatforms + SyncReconcileRequestPreparedStackProfilePlatforms$Outbound, + SyncReconcileRequestPreparedStackProfilePlatforms > = z.object({ aws: z.nullable( z.array(z.lazy(() => - SyncReconcileRequestPreparedStackExtendAw$outboundSchema + SyncReconcileRequestPreparedStackProfileAw$outboundSchema )), ).optional(), azure: z.nullable( z.array(z.lazy(() => - SyncReconcileRequestPreparedStackExtendAzure$outboundSchema + SyncReconcileRequestPreparedStackProfileAzure$outboundSchema )), ).optional(), gcp: z.nullable( z.array(z.lazy(() => - SyncReconcileRequestPreparedStackExtendGcp$outboundSchema + SyncReconcileRequestPreparedStackProfileGcp$outboundSchema )), ).optional(), }); -export function syncReconcileRequestPreparedStackExtendPlatformsToJSON( - syncReconcileRequestPreparedStackExtendPlatforms: - SyncReconcileRequestPreparedStackExtendPlatforms, +export function syncReconcileRequestPreparedStackProfilePlatformsToJSON( + syncReconcileRequestPreparedStackProfilePlatforms: + SyncReconcileRequestPreparedStackProfilePlatforms, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackExtendPlatforms$outboundSchema.parse( - syncReconcileRequestPreparedStackExtendPlatforms, + SyncReconcileRequestPreparedStackProfilePlatforms$outboundSchema.parse( + syncReconcileRequestPreparedStackProfilePlatforms, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackExtend$Outbound = { +export type SyncReconcileRequestPreparedStackProfile$Outbound = { description: string; id: string; - platforms: SyncReconcileRequestPreparedStackExtendPlatforms$Outbound; + platforms: SyncReconcileRequestPreparedStackProfilePlatforms$Outbound; }; /** @internal */ -export const SyncReconcileRequestPreparedStackExtend$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackExtend$Outbound, - SyncReconcileRequestPreparedStackExtend +export const SyncReconcileRequestPreparedStackProfile$outboundSchema: z.ZodType< + SyncReconcileRequestPreparedStackProfile$Outbound, + SyncReconcileRequestPreparedStackProfile > = z.object({ description: z.string(), id: z.string(), platforms: z.lazy(() => - SyncReconcileRequestPreparedStackExtendPlatforms$outboundSchema + SyncReconcileRequestPreparedStackProfilePlatforms$outboundSchema ), }); -export function syncReconcileRequestPreparedStackExtendToJSON( - syncReconcileRequestPreparedStackExtend: - SyncReconcileRequestPreparedStackExtend, +export function syncReconcileRequestPreparedStackProfileToJSON( + syncReconcileRequestPreparedStackProfile: + SyncReconcileRequestPreparedStackProfile, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackExtend$outboundSchema.parse( - syncReconcileRequestPreparedStackExtend, + SyncReconcileRequestPreparedStackProfile$outboundSchema.parse( + syncReconcileRequestPreparedStackProfile, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackExtendUnion$Outbound = - | SyncReconcileRequestPreparedStackExtend$Outbound +export type SyncReconcileRequestPreparedStackProfileUnion$Outbound = + | SyncReconcileRequestPreparedStackProfile$Outbound | string; /** @internal */ -export const SyncReconcileRequestPreparedStackExtendUnion$outboundSchema: +export const SyncReconcileRequestPreparedStackProfileUnion$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackExtendUnion$Outbound, - SyncReconcileRequestPreparedStackExtendUnion + SyncReconcileRequestPreparedStackProfileUnion$Outbound, + SyncReconcileRequestPreparedStackProfileUnion > = z.union([ - z.lazy(() => SyncReconcileRequestPreparedStackExtend$outboundSchema), + z.lazy(() => SyncReconcileRequestPreparedStackProfile$outboundSchema), z.string(), ]); -export function syncReconcileRequestPreparedStackExtendUnionToJSON( - syncReconcileRequestPreparedStackExtendUnion: - SyncReconcileRequestPreparedStackExtendUnion, +export function syncReconcileRequestPreparedStackProfileUnionToJSON( + syncReconcileRequestPreparedStackProfileUnion: + SyncReconcileRequestPreparedStackProfileUnion, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackExtendUnion$outboundSchema.parse( - syncReconcileRequestPreparedStackExtendUnion, + SyncReconcileRequestPreparedStackProfileUnion$outboundSchema.parse( + syncReconcileRequestPreparedStackProfileUnion, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackManagement1$Outbound = { - extend: { - [k: string]: Array< - SyncReconcileRequestPreparedStackExtend$Outbound | string - >; +export type SyncReconcileRequestPreparedStackPermissions$Outbound = { + management?: + | SyncReconcileRequestPreparedStackManagement1$Outbound + | SyncReconcileRequestPreparedStackManagement2$Outbound + | string + | undefined; + profiles: { + [k: string]: { + [k: string]: Array< + SyncReconcileRequestPreparedStackProfile$Outbound | string + >; + }; }; }; /** @internal */ -export const SyncReconcileRequestPreparedStackManagement1$outboundSchema: +export const SyncReconcileRequestPreparedStackPermissions$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackManagement1$Outbound, - SyncReconcileRequestPreparedStackManagement1 + SyncReconcileRequestPreparedStackPermissions$Outbound, + SyncReconcileRequestPreparedStackPermissions > = z.object({ - extend: z.record( + management: z.union([ + z.lazy(() => SyncReconcileRequestPreparedStackManagement1$outboundSchema), + z.lazy(() => SyncReconcileRequestPreparedStackManagement2$outboundSchema), + SyncReconcileRequestPreparedStackManagementEnum$outboundSchema, + ]).optional(), + profiles: z.record( z.string(), - z.array(z.union([ - z.lazy(() => SyncReconcileRequestPreparedStackExtend$outboundSchema), + z.record( z.string(), - ])), + z.array( + z.union([ + z.lazy(() => + SyncReconcileRequestPreparedStackProfile$outboundSchema + ), + z.string(), + ]), + ), + ), ), }); -export function syncReconcileRequestPreparedStackManagement1ToJSON( - syncReconcileRequestPreparedStackManagement1: - SyncReconcileRequestPreparedStackManagement1, +export function syncReconcileRequestPreparedStackPermissionsToJSON( + syncReconcileRequestPreparedStackPermissions: + SyncReconcileRequestPreparedStackPermissions, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackManagement1$outboundSchema.parse( - syncReconcileRequestPreparedStackManagement1, + SyncReconcileRequestPreparedStackPermissions$outboundSchema.parse( + syncReconcileRequestPreparedStackPermissions, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackManagementUnion$Outbound = - | SyncReconcileRequestPreparedStackManagement1$Outbound - | SyncReconcileRequestPreparedStackManagement2$Outbound - | string; +export type SyncReconcileRequestPreparedStackConfig$Outbound = { + id: string; + type: string; + [additionalProperties: string]: unknown; +}; /** @internal */ -export const SyncReconcileRequestPreparedStackManagementUnion$outboundSchema: +export const SyncReconcileRequestPreparedStackConfig$outboundSchema: z.ZodType< + SyncReconcileRequestPreparedStackConfig$Outbound, + SyncReconcileRequestPreparedStackConfig +> = z.object({ + id: z.string(), + type: z.string(), + additionalProperties: z.record(z.string(), z.nullable(z.any())).optional(), +}).transform((v) => { + return { + ...v.additionalProperties, + ...remap$(v, { + additionalProperties: null, + }), + }; +}); + +export function syncReconcileRequestPreparedStackConfigToJSON( + syncReconcileRequestPreparedStackConfig: + SyncReconcileRequestPreparedStackConfig, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackConfig$outboundSchema.parse( + syncReconcileRequestPreparedStackConfig, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackDependency$Outbound = { + id: string; + type: string; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackDependency$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackManagementUnion$Outbound, - SyncReconcileRequestPreparedStackManagementUnion - > = z.union([ - z.lazy(() => SyncReconcileRequestPreparedStackManagement1$outboundSchema), - z.lazy(() => SyncReconcileRequestPreparedStackManagement2$outboundSchema), - SyncReconcileRequestPreparedStackManagementEnum$outboundSchema, - ]); + SyncReconcileRequestPreparedStackDependency$Outbound, + SyncReconcileRequestPreparedStackDependency + > = z.object({ + id: z.string(), + type: z.string(), + }); -export function syncReconcileRequestPreparedStackManagementUnionToJSON( - syncReconcileRequestPreparedStackManagementUnion: - SyncReconcileRequestPreparedStackManagementUnion, +export function syncReconcileRequestPreparedStackDependencyToJSON( + syncReconcileRequestPreparedStackDependency: + SyncReconcileRequestPreparedStackDependency, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackManagementUnion$outboundSchema.parse( - syncReconcileRequestPreparedStackManagementUnion, + SyncReconcileRequestPreparedStackDependency$outboundSchema.parse( + syncReconcileRequestPreparedStackDependency, ), ); } /** @internal */ -export type PreparedStackProfileStateAwResource$Outbound = { - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - resources: Array; +export const PreparedStackStateLifecycle$outboundSchema: z.ZodEnum< + typeof PreparedStackStateLifecycle +> = z.enum(PreparedStackStateLifecycle); + +/** @internal */ +export type SyncReconcileRequestPreparedStackResources$Outbound = { + config: SyncReconcileRequestPreparedStackConfig$Outbound; + dependencies: Array; + enabledWhen?: string | null | undefined; + lifecycle: string; + remoteAccess?: boolean | undefined; }; /** @internal */ -export const PreparedStackProfileStateAwResource$outboundSchema: z.ZodType< - PreparedStackProfileStateAwResource$Outbound, - PreparedStackProfileStateAwResource +export const SyncReconcileRequestPreparedStackResources$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackResources$Outbound, + SyncReconcileRequestPreparedStackResources + > = z.object({ + config: z.lazy(() => + SyncReconcileRequestPreparedStackConfig$outboundSchema + ), + dependencies: z.array( + z.lazy(() => SyncReconcileRequestPreparedStackDependency$outboundSchema), + ), + enabledWhen: z.nullable(z.string()).optional(), + lifecycle: PreparedStackStateLifecycle$outboundSchema, + remoteAccess: z.boolean().optional(), + }); + +export function syncReconcileRequestPreparedStackResourcesToJSON( + syncReconcileRequestPreparedStackResources: + SyncReconcileRequestPreparedStackResources, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackResources$outboundSchema.parse( + syncReconcileRequestPreparedStackResources, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestPreparedStackSupportedPlatform$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestPreparedStackSupportedPlatform, + ); + +/** @internal */ +export type SyncReconcileRequestPreparedStack$Outbound = { + id: string; + inputs?: Array | undefined; + permissions?: + | SyncReconcileRequestPreparedStackPermissions$Outbound + | undefined; + resources: { + [k: string]: SyncReconcileRequestPreparedStackResources$Outbound; + }; + supportedPlatforms?: Array | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStack$outboundSchema: z.ZodType< + SyncReconcileRequestPreparedStack$Outbound, + SyncReconcileRequestPreparedStack +> = z.object({ + id: z.string(), + inputs: z.array( + z.lazy(() => SyncReconcileRequestPreparedStackInput$outboundSchema), + ).optional(), + permissions: z.lazy(() => + SyncReconcileRequestPreparedStackPermissions$outboundSchema + ).optional(), + resources: z.record( + z.string(), + z.lazy(() => SyncReconcileRequestPreparedStackResources$outboundSchema), + ), + supportedPlatforms: z.nullable( + z.array(SyncReconcileRequestPreparedStackSupportedPlatform$outboundSchema), + ).optional(), +}); + +export function syncReconcileRequestPreparedStackToJSON( + syncReconcileRequestPreparedStack: SyncReconcileRequestPreparedStack, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStack$outboundSchema.parse( + syncReconcileRequestPreparedStack, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackUnion$Outbound = + | SyncReconcileRequestPreparedStack$Outbound + | any; + +/** @internal */ +export const SyncReconcileRequestPreparedStackUnion$outboundSchema: z.ZodType< + SyncReconcileRequestPreparedStackUnion$Outbound, + SyncReconcileRequestPreparedStackUnion +> = z.union([ + z.lazy(() => SyncReconcileRequestPreparedStack$outboundSchema), + z.any(), +]); + +export function syncReconcileRequestPreparedStackUnionToJSON( + syncReconcileRequestPreparedStackUnion: + SyncReconcileRequestPreparedStackUnion, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackUnion$outboundSchema.parse( + syncReconcileRequestPreparedStackUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestSetupUpdateAuthorization$Outbound = { + baselineFrozenDigest: string; + nonce: string; + releaseId: string; + setupFingerprint: string; + setupFingerprintVersion: number; + setupTarget: string; + targetFrozenDigest: string; +}; + +/** @internal */ +export const SyncReconcileRequestSetupUpdateAuthorization$outboundSchema: + z.ZodType< + SyncReconcileRequestSetupUpdateAuthorization$Outbound, + SyncReconcileRequestSetupUpdateAuthorization + > = z.object({ + baselineFrozenDigest: z.string(), + nonce: z.string(), + releaseId: z.string(), + setupFingerprint: z.string(), + setupFingerprintVersion: z.int(), + setupTarget: z.string(), + targetFrozenDigest: z.string(), + }); + +export function syncReconcileRequestSetupUpdateAuthorizationToJSON( + syncReconcileRequestSetupUpdateAuthorization: + SyncReconcileRequestSetupUpdateAuthorization, +): string { + return JSON.stringify( + SyncReconcileRequestSetupUpdateAuthorization$outboundSchema.parse( + syncReconcileRequestSetupUpdateAuthorization, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestSetupUpdateAuthorizationUnion$Outbound = + | SyncReconcileRequestSetupUpdateAuthorization$Outbound + | any; + +/** @internal */ +export const SyncReconcileRequestSetupUpdateAuthorizationUnion$outboundSchema: + z.ZodType< + SyncReconcileRequestSetupUpdateAuthorizationUnion$Outbound, + SyncReconcileRequestSetupUpdateAuthorizationUnion + > = z.union([ + z.lazy(() => SyncReconcileRequestSetupUpdateAuthorization$outboundSchema), + z.any(), + ]); + +export function syncReconcileRequestSetupUpdateAuthorizationUnionToJSON( + syncReconcileRequestSetupUpdateAuthorizationUnion: + SyncReconcileRequestSetupUpdateAuthorizationUnion, +): string { + return JSON.stringify( + SyncReconcileRequestSetupUpdateAuthorizationUnion$outboundSchema.parse( + syncReconcileRequestSetupUpdateAuthorizationUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestRuntimeMetadata$Outbound = { + initialSetupAuthority?: string | undefined; + lastSyncedEnvVarsHash?: string | null | undefined; + lastSyncedSecretNames?: Array | undefined; + pendingPreparedStack?: + | SyncReconcileRequestPendingPreparedStack$Outbound + | any + | null + | undefined; + persistedGateAnswers?: { [k: string]: boolean } | undefined; + preparedStack?: + | SyncReconcileRequestPreparedStack$Outbound + | any + | null + | undefined; + registryAccessGranted?: boolean | undefined; + setupUpdateAuthorization?: + | SyncReconcileRequestSetupUpdateAuthorization$Outbound + | any + | null + | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestRuntimeMetadata$outboundSchema: z.ZodType< + SyncReconcileRequestRuntimeMetadata$Outbound, + SyncReconcileRequestRuntimeMetadata > = z.object({ - condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) - .optional(), - resources: z.array(z.string()), + initialSetupAuthority: + SyncReconcileRequestInitialSetupAuthority$outboundSchema.optional(), + lastSyncedEnvVarsHash: z.nullable(z.string()).optional(), + lastSyncedSecretNames: z.array(z.string()).optional(), + pendingPreparedStack: z.nullable( + z.union([ + z.lazy(() => SyncReconcileRequestPendingPreparedStack$outboundSchema), + z.any(), + ]), + ).optional(), + persistedGateAnswers: z.record(z.string(), z.boolean()).optional(), + preparedStack: z.nullable( + z.union([ + z.lazy(() => SyncReconcileRequestPreparedStack$outboundSchema), + z.any(), + ]), + ).optional(), + registryAccessGranted: z.boolean().optional(), + setupUpdateAuthorization: z.nullable( + z.union([ + z.lazy(() => SyncReconcileRequestSetupUpdateAuthorization$outboundSchema), + z.any(), + ]), + ).optional(), }); -export function preparedStackProfileStateAwResourceToJSON( - preparedStackProfileStateAwResource: PreparedStackProfileStateAwResource, +export function syncReconcileRequestRuntimeMetadataToJSON( + syncReconcileRequestRuntimeMetadata: SyncReconcileRequestRuntimeMetadata, ): string { return JSON.stringify( - PreparedStackProfileStateAwResource$outboundSchema.parse( - preparedStackProfileStateAwResource, + SyncReconcileRequestRuntimeMetadata$outboundSchema.parse( + syncReconcileRequestRuntimeMetadata, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackProfileAwStack$Outbound = { - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - resources: Array; -}; +export type SyncReconcileRequestRuntimeMetadataUnion$Outbound = + | SyncReconcileRequestRuntimeMetadata$Outbound + | any; /** @internal */ -export const SyncReconcileRequestPreparedStackProfileAwStack$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackProfileAwStack$Outbound, - SyncReconcileRequestPreparedStackProfileAwStack - > = z.object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); +export const SyncReconcileRequestRuntimeMetadataUnion$outboundSchema: z.ZodType< + SyncReconcileRequestRuntimeMetadataUnion$Outbound, + SyncReconcileRequestRuntimeMetadataUnion +> = z.union([ + z.lazy(() => SyncReconcileRequestRuntimeMetadata$outboundSchema), + z.any(), +]); -export function syncReconcileRequestPreparedStackProfileAwStackToJSON( - syncReconcileRequestPreparedStackProfileAwStack: - SyncReconcileRequestPreparedStackProfileAwStack, +export function syncReconcileRequestRuntimeMetadataUnionToJSON( + syncReconcileRequestRuntimeMetadataUnion: + SyncReconcileRequestRuntimeMetadataUnion, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackProfileAwStack$outboundSchema.parse( - syncReconcileRequestPreparedStackProfileAwStack, + SyncReconcileRequestRuntimeMetadataUnion$outboundSchema.parse( + syncReconcileRequestRuntimeMetadataUnion, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackProfileAwBinding$Outbound = { - resource?: PreparedStackProfileStateAwResource$Outbound | undefined; - stack?: SyncReconcileRequestPreparedStackProfileAwStack$Outbound | undefined; +export const SyncReconcileRequestStackStatePlatform$outboundSchema: z.ZodEnum< + typeof SyncReconcileRequestStackStatePlatform +> = z.enum(SyncReconcileRequestStackStatePlatform); + +/** @internal */ +export type SyncReconcileRequestStackStateConfig$Outbound = { + id: string; + type: string; + [additionalProperties: string]: unknown; }; /** @internal */ -export const SyncReconcileRequestPreparedStackProfileAwBinding$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackProfileAwBinding$Outbound, - SyncReconcileRequestPreparedStackProfileAwBinding - > = z.object({ - resource: z.lazy(() => PreparedStackProfileStateAwResource$outboundSchema) - .optional(), - stack: z.lazy(() => - SyncReconcileRequestPreparedStackProfileAwStack$outboundSchema - ).optional(), - }); +export const SyncReconcileRequestStackStateConfig$outboundSchema: z.ZodType< + SyncReconcileRequestStackStateConfig$Outbound, + SyncReconcileRequestStackStateConfig +> = z.object({ + id: z.string(), + type: z.string(), + additionalProperties: z.record(z.string(), z.nullable(z.any())).optional(), +}).transform((v) => { + return { + ...v.additionalProperties, + ...remap$(v, { + additionalProperties: null, + }), + }; +}); -export function syncReconcileRequestPreparedStackProfileAwBindingToJSON( - syncReconcileRequestPreparedStackProfileAwBinding: - SyncReconcileRequestPreparedStackProfileAwBinding, +export function syncReconcileRequestStackStateConfigToJSON( + syncReconcileRequestStackStateConfig: SyncReconcileRequestStackStateConfig, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackProfileAwBinding$outboundSchema.parse( - syncReconcileRequestPreparedStackProfileAwBinding, + SyncReconcileRequestStackStateConfig$outboundSchema.parse( + syncReconcileRequestStackStateConfig, ), ); } /** @internal */ -export const SyncReconcileRequestPreparedStackProfileEffect$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestPreparedStackProfileEffect, - ); +export const ControllerPlatformStateEnum$outboundSchema: z.ZodEnum< + typeof ControllerPlatformStateEnum +> = z.enum(ControllerPlatformStateEnum); /** @internal */ -export type SyncReconcileRequestPreparedStackProfileAwGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; -}; +export type StateControllerPlatformUnion$Outbound = string | any; /** @internal */ -export const SyncReconcileRequestPreparedStackProfileAwGrant$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackProfileAwGrant$Outbound, - SyncReconcileRequestPreparedStackProfileAwGrant - > = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); +export const StateControllerPlatformUnion$outboundSchema: z.ZodType< + StateControllerPlatformUnion$Outbound, + StateControllerPlatformUnion +> = z.union([ControllerPlatformStateEnum$outboundSchema, z.any()]); -export function syncReconcileRequestPreparedStackProfileAwGrantToJSON( - syncReconcileRequestPreparedStackProfileAwGrant: - SyncReconcileRequestPreparedStackProfileAwGrant, +export function stateControllerPlatformUnionToJSON( + stateControllerPlatformUnion: StateControllerPlatformUnion, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackProfileAwGrant$outboundSchema.parse( - syncReconcileRequestPreparedStackProfileAwGrant, + StateControllerPlatformUnion$outboundSchema.parse( + stateControllerPlatformUnion, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackProfileAw$Outbound = { - binding: SyncReconcileRequestPreparedStackProfileAwBinding$Outbound; - description?: string | null | undefined; - effect?: string | undefined; - grant: SyncReconcileRequestPreparedStackProfileAwGrant$Outbound; - label?: string | null | undefined; +export type SyncReconcileRequestStackStateDependency$Outbound = { + id: string; + type: string; }; /** @internal */ -export const SyncReconcileRequestPreparedStackProfileAw$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackProfileAw$Outbound, - SyncReconcileRequestPreparedStackProfileAw - > = z.object({ - binding: z.lazy(() => - SyncReconcileRequestPreparedStackProfileAwBinding$outboundSchema - ), - description: z.nullable(z.string()).optional(), - effect: SyncReconcileRequestPreparedStackProfileEffect$outboundSchema - .optional(), - grant: z.lazy(() => - SyncReconcileRequestPreparedStackProfileAwGrant$outboundSchema - ), - label: z.nullable(z.string()).optional(), - }); +export const SyncReconcileRequestStackStateDependency$outboundSchema: z.ZodType< + SyncReconcileRequestStackStateDependency$Outbound, + SyncReconcileRequestStackStateDependency +> = z.object({ + id: z.string(), + type: z.string(), +}); -export function syncReconcileRequestPreparedStackProfileAwToJSON( - syncReconcileRequestPreparedStackProfileAw: - SyncReconcileRequestPreparedStackProfileAw, +export function syncReconcileRequestStackStateDependencyToJSON( + syncReconcileRequestStackStateDependency: + SyncReconcileRequestStackStateDependency, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackProfileAw$outboundSchema.parse( - syncReconcileRequestPreparedStackProfileAw, + SyncReconcileRequestStackStateDependency$outboundSchema.parse( + syncReconcileRequestStackStateDependency, ), ); } /** @internal */ -export type PreparedStackProfileStateAzureResource$Outbound = { - scope: string; +export type SyncReconcileRequestStackStateError$Outbound = { + code: string; + context?: any | null | undefined; + hint?: string | null | undefined; + httpStatusCode?: number | null | undefined; + internal: boolean; + message: string; + retryable: boolean; + source?: any | null | undefined; }; /** @internal */ -export const PreparedStackProfileStateAzureResource$outboundSchema: z.ZodType< - PreparedStackProfileStateAzureResource$Outbound, - PreparedStackProfileStateAzureResource +export const SyncReconcileRequestStackStateError$outboundSchema: z.ZodType< + SyncReconcileRequestStackStateError$Outbound, + SyncReconcileRequestStackStateError > = z.object({ - scope: z.string(), + code: z.string(), + context: z.nullable(z.any()).optional(), + hint: z.nullable(z.string()).optional(), + httpStatusCode: z.nullable(z.int()).optional(), + internal: z.boolean(), + message: z.string(), + retryable: z.boolean().default(false), + source: z.nullable(z.any()).optional(), }); -export function preparedStackProfileStateAzureResourceToJSON( - preparedStackProfileStateAzureResource: - PreparedStackProfileStateAzureResource, +export function syncReconcileRequestStackStateErrorToJSON( + syncReconcileRequestStackStateError: SyncReconcileRequestStackStateError, ): string { return JSON.stringify( - PreparedStackProfileStateAzureResource$outboundSchema.parse( - preparedStackProfileStateAzureResource, + SyncReconcileRequestStackStateError$outboundSchema.parse( + syncReconcileRequestStackStateError, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackProfileAzureStack$Outbound = { - scope: string; -}; +export type SyncReconcileRequestStackStateErrorUnion$Outbound = + | SyncReconcileRequestStackStateError$Outbound + | any; /** @internal */ -export const SyncReconcileRequestPreparedStackProfileAzureStack$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackProfileAzureStack$Outbound, - SyncReconcileRequestPreparedStackProfileAzureStack - > = z.object({ - scope: z.string(), - }); +export const SyncReconcileRequestStackStateErrorUnion$outboundSchema: z.ZodType< + SyncReconcileRequestStackStateErrorUnion$Outbound, + SyncReconcileRequestStackStateErrorUnion +> = z.union([ + z.lazy(() => SyncReconcileRequestStackStateError$outboundSchema), + z.any(), +]); -export function syncReconcileRequestPreparedStackProfileAzureStackToJSON( - syncReconcileRequestPreparedStackProfileAzureStack: - SyncReconcileRequestPreparedStackProfileAzureStack, +export function syncReconcileRequestStackStateErrorUnionToJSON( + syncReconcileRequestStackStateErrorUnion: + SyncReconcileRequestStackStateErrorUnion, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackProfileAzureStack$outboundSchema.parse( - syncReconcileRequestPreparedStackProfileAzureStack, + SyncReconcileRequestStackStateErrorUnion$outboundSchema.parse( + syncReconcileRequestStackStateErrorUnion, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackProfileAzureBinding$Outbound = { - resource?: PreparedStackProfileStateAzureResource$Outbound | undefined; - stack?: - | SyncReconcileRequestPreparedStackProfileAzureStack$Outbound - | undefined; -}; +export const StackStateLifecycleStateEnum$outboundSchema: z.ZodEnum< + typeof StackStateLifecycleStateEnum +> = z.enum(StackStateLifecycleStateEnum); /** @internal */ -export const SyncReconcileRequestPreparedStackProfileAzureBinding$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackProfileAzureBinding$Outbound, - SyncReconcileRequestPreparedStackProfileAzureBinding - > = z.object({ - resource: z.lazy(() => - PreparedStackProfileStateAzureResource$outboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileRequestPreparedStackProfileAzureStack$outboundSchema - ).optional(), - }); +export type StateLifecycleUnion$Outbound = string | any; -export function syncReconcileRequestPreparedStackProfileAzureBindingToJSON( - syncReconcileRequestPreparedStackProfileAzureBinding: - SyncReconcileRequestPreparedStackProfileAzureBinding, +/** @internal */ +export const StateLifecycleUnion$outboundSchema: z.ZodType< + StateLifecycleUnion$Outbound, + StateLifecycleUnion +> = z.union([StackStateLifecycleStateEnum$outboundSchema, z.any()]); + +export function stateLifecycleUnionToJSON( + stateLifecycleUnion: StateLifecycleUnion, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackProfileAzureBinding$outboundSchema.parse( - syncReconcileRequestPreparedStackProfileAzureBinding, - ), + StateLifecycleUnion$outboundSchema.parse(stateLifecycleUnion), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackProfileAzureGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; +export type SyncReconcileRequestOutputs$Outbound = { + type: string; + [additionalProperties: string]: unknown; }; /** @internal */ -export const SyncReconcileRequestPreparedStackProfileAzureGrant$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackProfileAzureGrant$Outbound, - SyncReconcileRequestPreparedStackProfileAzureGrant - > = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); +export const SyncReconcileRequestOutputs$outboundSchema: z.ZodType< + SyncReconcileRequestOutputs$Outbound, + SyncReconcileRequestOutputs +> = z.object({ + type: z.string(), + additionalProperties: z.record(z.string(), z.nullable(z.any())).optional(), +}).transform((v) => { + return { + ...v.additionalProperties, + ...remap$(v, { + additionalProperties: null, + }), + }; +}); -export function syncReconcileRequestPreparedStackProfileAzureGrantToJSON( - syncReconcileRequestPreparedStackProfileAzureGrant: - SyncReconcileRequestPreparedStackProfileAzureGrant, +export function syncReconcileRequestOutputsToJSON( + syncReconcileRequestOutputs: SyncReconcileRequestOutputs, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackProfileAzureGrant$outboundSchema.parse( - syncReconcileRequestPreparedStackProfileAzureGrant, + SyncReconcileRequestOutputs$outboundSchema.parse( + syncReconcileRequestOutputs, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackProfileAzure$Outbound = { - binding: SyncReconcileRequestPreparedStackProfileAzureBinding$Outbound; - description?: string | null | undefined; - grant: SyncReconcileRequestPreparedStackProfileAzureGrant$Outbound; - label?: string | null | undefined; -}; +export type SyncReconcileRequestOutputsUnion$Outbound = + | SyncReconcileRequestOutputs$Outbound + | any; /** @internal */ -export const SyncReconcileRequestPreparedStackProfileAzure$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackProfileAzure$Outbound, - SyncReconcileRequestPreparedStackProfileAzure - > = z.object({ - binding: z.lazy(() => - SyncReconcileRequestPreparedStackProfileAzureBinding$outboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncReconcileRequestPreparedStackProfileAzureGrant$outboundSchema - ), - label: z.nullable(z.string()).optional(), - }); +export const SyncReconcileRequestOutputsUnion$outboundSchema: z.ZodType< + SyncReconcileRequestOutputsUnion$Outbound, + SyncReconcileRequestOutputsUnion +> = z.union([ + z.lazy(() => SyncReconcileRequestOutputs$outboundSchema), + z.any(), +]); -export function syncReconcileRequestPreparedStackProfileAzureToJSON( - syncReconcileRequestPreparedStackProfileAzure: - SyncReconcileRequestPreparedStackProfileAzure, +export function syncReconcileRequestOutputsUnionToJSON( + syncReconcileRequestOutputsUnion: SyncReconcileRequestOutputsUnion, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackProfileAzure$outboundSchema.parse( - syncReconcileRequestPreparedStackProfileAzure, + SyncReconcileRequestOutputsUnion$outboundSchema.parse( + syncReconcileRequestOutputsUnion, ), ); } /** @internal */ -export type PreparedStackProfileConditionStateResource$Outbound = { - expression: string; - title: string; +export type SyncReconcileRequestPreviousConfig$Outbound = { + id: string; + type: string; + [additionalProperties: string]: unknown; }; /** @internal */ -export const PreparedStackProfileConditionStateResource$outboundSchema: - z.ZodType< - PreparedStackProfileConditionStateResource$Outbound, - PreparedStackProfileConditionStateResource - > = z.object({ - expression: z.string(), - title: z.string(), - }); +export const SyncReconcileRequestPreviousConfig$outboundSchema: z.ZodType< + SyncReconcileRequestPreviousConfig$Outbound, + SyncReconcileRequestPreviousConfig +> = z.object({ + id: z.string(), + type: z.string(), + additionalProperties: z.record(z.string(), z.nullable(z.any())).optional(), +}).transform((v) => { + return { + ...v.additionalProperties, + ...remap$(v, { + additionalProperties: null, + }), + }; +}); -export function preparedStackProfileConditionStateResourceToJSON( - preparedStackProfileConditionStateResource: - PreparedStackProfileConditionStateResource, +export function syncReconcileRequestPreviousConfigToJSON( + syncReconcileRequestPreviousConfig: SyncReconcileRequestPreviousConfig, ): string { return JSON.stringify( - PreparedStackProfileConditionStateResource$outboundSchema.parse( - preparedStackProfileConditionStateResource, + SyncReconcileRequestPreviousConfig$outboundSchema.parse( + syncReconcileRequestPreviousConfig, ), ); } /** @internal */ -export type PreparedStackProfileStateResourceConditionUnion$Outbound = - | PreparedStackProfileConditionStateResource$Outbound +export type SyncReconcileRequestPreviousConfigUnion$Outbound = + | SyncReconcileRequestPreviousConfig$Outbound | any; /** @internal */ -export const PreparedStackProfileStateResourceConditionUnion$outboundSchema: - z.ZodType< - PreparedStackProfileStateResourceConditionUnion$Outbound, - PreparedStackProfileStateResourceConditionUnion - > = z.union([ - z.lazy(() => PreparedStackProfileConditionStateResource$outboundSchema), - z.any(), - ]); +export const SyncReconcileRequestPreviousConfigUnion$outboundSchema: z.ZodType< + SyncReconcileRequestPreviousConfigUnion$Outbound, + SyncReconcileRequestPreviousConfigUnion +> = z.union([ + z.lazy(() => SyncReconcileRequestPreviousConfig$outboundSchema), + z.any(), +]); -export function preparedStackProfileStateResourceConditionUnionToJSON( - preparedStackProfileStateResourceConditionUnion: - PreparedStackProfileStateResourceConditionUnion, +export function syncReconcileRequestPreviousConfigUnionToJSON( + syncReconcileRequestPreviousConfigUnion: + SyncReconcileRequestPreviousConfigUnion, ): string { return JSON.stringify( - PreparedStackProfileStateResourceConditionUnion$outboundSchema.parse( - preparedStackProfileStateResourceConditionUnion, + SyncReconcileRequestPreviousConfigUnion$outboundSchema.parse( + syncReconcileRequestPreviousConfigUnion, ), ); } /** @internal */ -export type PreparedStackProfileStateGcpResource$Outbound = { - condition?: - | PreparedStackProfileConditionStateResource$Outbound +export const StackStateStateStatus$outboundSchema: z.ZodEnum< + typeof StackStateStateStatus +> = z.enum(StackStateStateStatus); + +/** @internal */ +export type SyncReconcileRequestStackStateResources$Outbound = { + _internal?: any | null | undefined; + config: SyncReconcileRequestStackStateConfig$Outbound; + controllerPlatform?: string | any | null | undefined; + dependencies?: + | Array + | undefined; + error?: SyncReconcileRequestStackStateError$Outbound | any | null | undefined; + lastFailedState?: any | null | undefined; + lifecycle?: string | any | null | undefined; + outputs?: SyncReconcileRequestOutputs$Outbound | any | null | undefined; + previousConfig?: + | SyncReconcileRequestPreviousConfig$Outbound | any | null | undefined; - scope: string; + remoteBindingParams?: any | null | undefined; + retryAttempt?: number | undefined; + status: string; + type: string; }; /** @internal */ -export const PreparedStackProfileStateGcpResource$outboundSchema: z.ZodType< - PreparedStackProfileStateGcpResource$Outbound, - PreparedStackProfileStateGcpResource +export const SyncReconcileRequestStackStateResources$outboundSchema: z.ZodType< + SyncReconcileRequestStackStateResources$Outbound, + SyncReconcileRequestStackStateResources > = z.object({ - condition: z.nullable( + internal: z.nullable(z.any()).optional(), + config: z.lazy(() => SyncReconcileRequestStackStateConfig$outboundSchema), + controllerPlatform: z.nullable( + z.union([ControllerPlatformStateEnum$outboundSchema, z.any()]), + ).optional(), + dependencies: z.array( + z.lazy(() => SyncReconcileRequestStackStateDependency$outboundSchema), + ).optional(), + error: z.nullable( z.union([ - z.lazy(() => PreparedStackProfileConditionStateResource$outboundSchema), + z.lazy(() => SyncReconcileRequestStackStateError$outboundSchema), z.any(), ]), ).optional(), - scope: z.string(), + lastFailedState: z.nullable(z.any()).optional(), + lifecycle: z.nullable( + z.union([StackStateLifecycleStateEnum$outboundSchema, z.any()]), + ).optional(), + outputs: z.nullable( + z.union([ + z.lazy(() => SyncReconcileRequestOutputs$outboundSchema), + z.any(), + ]), + ).optional(), + previousConfig: z.nullable( + z.union([ + z.lazy(() => SyncReconcileRequestPreviousConfig$outboundSchema), + z.any(), + ]), + ).optional(), + remoteBindingParams: z.nullable(z.any()).optional(), + retryAttempt: z.int().optional(), + status: StackStateStateStatus$outboundSchema, + type: z.string(), +}).transform((v) => { + return remap$(v, { + internal: "_internal", + }); }); -export function preparedStackProfileStateGcpResourceToJSON( - preparedStackProfileStateGcpResource: PreparedStackProfileStateGcpResource, +export function syncReconcileRequestStackStateResourcesToJSON( + syncReconcileRequestStackStateResources: + SyncReconcileRequestStackStateResources, ): string { return JSON.stringify( - PreparedStackProfileStateGcpResource$outboundSchema.parse( - preparedStackProfileStateGcpResource, + SyncReconcileRequestStackStateResources$outboundSchema.parse( + syncReconcileRequestStackStateResources, ), ); } /** @internal */ -export type PreparedStackProfileConditionStateStack$Outbound = { - expression: string; - title: string; +export type SyncReconcileRequestStackState$Outbound = { + platform: string; + resourcePrefix: string; + resources: { [k: string]: SyncReconcileRequestStackStateResources$Outbound }; }; /** @internal */ -export const PreparedStackProfileConditionStateStack$outboundSchema: z.ZodType< - PreparedStackProfileConditionStateStack$Outbound, - PreparedStackProfileConditionStateStack +export const SyncReconcileRequestStackState$outboundSchema: z.ZodType< + SyncReconcileRequestStackState$Outbound, + SyncReconcileRequestStackState > = z.object({ - expression: z.string(), - title: z.string(), + platform: SyncReconcileRequestStackStatePlatform$outboundSchema, + resourcePrefix: z.string(), + resources: z.record( + z.string(), + z.lazy(() => SyncReconcileRequestStackStateResources$outboundSchema), + ), }); -export function preparedStackProfileConditionStateStackToJSON( - preparedStackProfileConditionStateStack: - PreparedStackProfileConditionStateStack, +export function syncReconcileRequestStackStateToJSON( + syncReconcileRequestStackState: SyncReconcileRequestStackState, ): string { return JSON.stringify( - PreparedStackProfileConditionStateStack$outboundSchema.parse( - preparedStackProfileConditionStateStack, + SyncReconcileRequestStackState$outboundSchema.parse( + syncReconcileRequestStackState, ), ); } /** @internal */ -export type PreparedStackProfileStateStackConditionUnion$Outbound = - | PreparedStackProfileConditionStateStack$Outbound +export type SyncReconcileRequestStackStateUnion$Outbound = + | SyncReconcileRequestStackState$Outbound | any; /** @internal */ -export const PreparedStackProfileStateStackConditionUnion$outboundSchema: - z.ZodType< - PreparedStackProfileStateStackConditionUnion$Outbound, - PreparedStackProfileStateStackConditionUnion - > = z.union([ - z.lazy(() => PreparedStackProfileConditionStateStack$outboundSchema), - z.any(), - ]); +export const SyncReconcileRequestStackStateUnion$outboundSchema: z.ZodType< + SyncReconcileRequestStackStateUnion$Outbound, + SyncReconcileRequestStackStateUnion +> = z.union([ + z.lazy(() => SyncReconcileRequestStackState$outboundSchema), + z.any(), +]); -export function preparedStackProfileStateStackConditionUnionToJSON( - preparedStackProfileStateStackConditionUnion: - PreparedStackProfileStateStackConditionUnion, +export function syncReconcileRequestStackStateUnionToJSON( + syncReconcileRequestStackStateUnion: SyncReconcileRequestStackStateUnion, ): string { return JSON.stringify( - PreparedStackProfileStateStackConditionUnion$outboundSchema.parse( - preparedStackProfileStateStackConditionUnion, + SyncReconcileRequestStackStateUnion$outboundSchema.parse( + syncReconcileRequestStackStateUnion, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackProfileGcpStack$Outbound = { - condition?: - | PreparedStackProfileConditionStateStack$Outbound - | any - | null - | undefined; - scope: string; -}; +export const StateStatus$outboundSchema: z.ZodEnum = z.enum( + StateStatus, +); /** @internal */ -export const SyncReconcileRequestPreparedStackProfileGcpStack$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackProfileGcpStack$Outbound, - SyncReconcileRequestPreparedStackProfileGcpStack - > = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => PreparedStackProfileConditionStateStack$outboundSchema), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncReconcileRequestPreparedStackProfileGcpStackToJSON( - syncReconcileRequestPreparedStackProfileGcpStack: - SyncReconcileRequestPreparedStackProfileGcpStack, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackProfileGcpStack$outboundSchema.parse( - syncReconcileRequestPreparedStackProfileGcpStack, - ), +export const SyncReconcileRequestTargetReleaseTypeStringList$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestTargetReleaseTypeStringList, ); -} /** @internal */ -export type SyncReconcileRequestPreparedStackProfileGcpBinding$Outbound = { - resource?: PreparedStackProfileStateGcpResource$Outbound | undefined; - stack?: SyncReconcileRequestPreparedStackProfileGcpStack$Outbound | undefined; +export type SyncReconcileRequestTargetReleaseDefaultStringList$Outbound = { + type: string; + value: Array; }; /** @internal */ -export const SyncReconcileRequestPreparedStackProfileGcpBinding$outboundSchema: +export const SyncReconcileRequestTargetReleaseDefaultStringList$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackProfileGcpBinding$Outbound, - SyncReconcileRequestPreparedStackProfileGcpBinding + SyncReconcileRequestTargetReleaseDefaultStringList$Outbound, + SyncReconcileRequestTargetReleaseDefaultStringList > = z.object({ - resource: z.lazy(() => PreparedStackProfileStateGcpResource$outboundSchema) - .optional(), - stack: z.lazy(() => - SyncReconcileRequestPreparedStackProfileGcpStack$outboundSchema - ).optional(), + type: SyncReconcileRequestTargetReleaseTypeStringList$outboundSchema, + value: z.array(z.string()), }); -export function syncReconcileRequestPreparedStackProfileGcpBindingToJSON( - syncReconcileRequestPreparedStackProfileGcpBinding: - SyncReconcileRequestPreparedStackProfileGcpBinding, +export function syncReconcileRequestTargetReleaseDefaultStringListToJSON( + syncReconcileRequestTargetReleaseDefaultStringList: + SyncReconcileRequestTargetReleaseDefaultStringList, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackProfileGcpBinding$outboundSchema.parse( - syncReconcileRequestPreparedStackProfileGcpBinding, + SyncReconcileRequestTargetReleaseDefaultStringList$outboundSchema.parse( + syncReconcileRequestTargetReleaseDefaultStringList, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackProfileGcpGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackProfileGcpGrant$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackProfileGcpGrant$Outbound, - SyncReconcileRequestPreparedStackProfileGcpGrant - > = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileRequestPreparedStackProfileGcpGrantToJSON( - syncReconcileRequestPreparedStackProfileGcpGrant: - SyncReconcileRequestPreparedStackProfileGcpGrant, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackProfileGcpGrant$outboundSchema.parse( - syncReconcileRequestPreparedStackProfileGcpGrant, - ), +export const SyncReconcileRequestTargetReleaseTypeBoolean$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestTargetReleaseTypeBoolean, ); -} /** @internal */ -export type SyncReconcileRequestPreparedStackProfileGcp$Outbound = { - binding: SyncReconcileRequestPreparedStackProfileGcpBinding$Outbound; - description?: string | null | undefined; - grant: SyncReconcileRequestPreparedStackProfileGcpGrant$Outbound; - label?: string | null | undefined; +export type SyncReconcileRequestTargetReleaseDefaultBoolean$Outbound = { + type: string; + value: boolean; }; /** @internal */ -export const SyncReconcileRequestPreparedStackProfileGcp$outboundSchema: +export const SyncReconcileRequestTargetReleaseDefaultBoolean$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackProfileGcp$Outbound, - SyncReconcileRequestPreparedStackProfileGcp + SyncReconcileRequestTargetReleaseDefaultBoolean$Outbound, + SyncReconcileRequestTargetReleaseDefaultBoolean > = z.object({ - binding: z.lazy(() => - SyncReconcileRequestPreparedStackProfileGcpBinding$outboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncReconcileRequestPreparedStackProfileGcpGrant$outboundSchema - ), - label: z.nullable(z.string()).optional(), + type: SyncReconcileRequestTargetReleaseTypeBoolean$outboundSchema, + value: z.boolean(), }); -export function syncReconcileRequestPreparedStackProfileGcpToJSON( - syncReconcileRequestPreparedStackProfileGcp: - SyncReconcileRequestPreparedStackProfileGcp, +export function syncReconcileRequestTargetReleaseDefaultBooleanToJSON( + syncReconcileRequestTargetReleaseDefaultBoolean: + SyncReconcileRequestTargetReleaseDefaultBoolean, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackProfileGcp$outboundSchema.parse( - syncReconcileRequestPreparedStackProfileGcp, + SyncReconcileRequestTargetReleaseDefaultBoolean$outboundSchema.parse( + syncReconcileRequestTargetReleaseDefaultBoolean, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackProfilePlatforms$Outbound = { - aws?: - | Array - | null - | undefined; - azure?: - | Array - | null - | undefined; - gcp?: - | Array - | null - | undefined; +export const SyncReconcileRequestTargetReleaseTypeNumber$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestTargetReleaseTypeNumber, + ); + +/** @internal */ +export type SyncReconcileRequestTargetReleaseDefaultNumber$Outbound = { + type: string; + value: string; }; /** @internal */ -export const SyncReconcileRequestPreparedStackProfilePlatforms$outboundSchema: +export const SyncReconcileRequestTargetReleaseDefaultNumber$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackProfilePlatforms$Outbound, - SyncReconcileRequestPreparedStackProfilePlatforms + SyncReconcileRequestTargetReleaseDefaultNumber$Outbound, + SyncReconcileRequestTargetReleaseDefaultNumber > = z.object({ - aws: z.nullable( - z.array(z.lazy(() => - SyncReconcileRequestPreparedStackProfileAw$outboundSchema - )), - ).optional(), - azure: z.nullable( - z.array(z.lazy(() => - SyncReconcileRequestPreparedStackProfileAzure$outboundSchema - )), - ).optional(), - gcp: z.nullable( - z.array(z.lazy(() => - SyncReconcileRequestPreparedStackProfileGcp$outboundSchema - )), - ).optional(), + type: SyncReconcileRequestTargetReleaseTypeNumber$outboundSchema, + value: z.string(), }); -export function syncReconcileRequestPreparedStackProfilePlatformsToJSON( - syncReconcileRequestPreparedStackProfilePlatforms: - SyncReconcileRequestPreparedStackProfilePlatforms, +export function syncReconcileRequestTargetReleaseDefaultNumberToJSON( + syncReconcileRequestTargetReleaseDefaultNumber: + SyncReconcileRequestTargetReleaseDefaultNumber, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackProfilePlatforms$outboundSchema.parse( - syncReconcileRequestPreparedStackProfilePlatforms, + SyncReconcileRequestTargetReleaseDefaultNumber$outboundSchema.parse( + syncReconcileRequestTargetReleaseDefaultNumber, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackProfile$Outbound = { - description: string; - id: string; - platforms: SyncReconcileRequestPreparedStackProfilePlatforms$Outbound; +export const SyncReconcileRequestTargetReleaseTypeString$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestTargetReleaseTypeString, + ); + +/** @internal */ +export type SyncReconcileRequestTargetReleaseDefaultString$Outbound = { + type: string; + value: string; }; /** @internal */ -export const SyncReconcileRequestPreparedStackProfile$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackProfile$Outbound, - SyncReconcileRequestPreparedStackProfile -> = z.object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => - SyncReconcileRequestPreparedStackProfilePlatforms$outboundSchema - ), -}); +export const SyncReconcileRequestTargetReleaseDefaultString$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseDefaultString$Outbound, + SyncReconcileRequestTargetReleaseDefaultString + > = z.object({ + type: SyncReconcileRequestTargetReleaseTypeString$outboundSchema, + value: z.string(), + }); -export function syncReconcileRequestPreparedStackProfileToJSON( - syncReconcileRequestPreparedStackProfile: - SyncReconcileRequestPreparedStackProfile, +export function syncReconcileRequestTargetReleaseDefaultStringToJSON( + syncReconcileRequestTargetReleaseDefaultString: + SyncReconcileRequestTargetReleaseDefaultString, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackProfile$outboundSchema.parse( - syncReconcileRequestPreparedStackProfile, + SyncReconcileRequestTargetReleaseDefaultString$outboundSchema.parse( + syncReconcileRequestTargetReleaseDefaultString, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackProfileUnion$Outbound = - | SyncReconcileRequestPreparedStackProfile$Outbound - | string; +export type SyncReconcileRequestTargetReleaseDefaultUnion$Outbound = + | SyncReconcileRequestTargetReleaseDefaultString$Outbound + | SyncReconcileRequestTargetReleaseDefaultNumber$Outbound + | SyncReconcileRequestTargetReleaseDefaultBoolean$Outbound + | SyncReconcileRequestTargetReleaseDefaultStringList$Outbound + | any; /** @internal */ -export const SyncReconcileRequestPreparedStackProfileUnion$outboundSchema: +export const SyncReconcileRequestTargetReleaseDefaultUnion$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackProfileUnion$Outbound, - SyncReconcileRequestPreparedStackProfileUnion + SyncReconcileRequestTargetReleaseDefaultUnion$Outbound, + SyncReconcileRequestTargetReleaseDefaultUnion > = z.union([ - z.lazy(() => SyncReconcileRequestPreparedStackProfile$outboundSchema), - z.string(), + z.lazy(() => SyncReconcileRequestTargetReleaseDefaultString$outboundSchema), + z.lazy(() => SyncReconcileRequestTargetReleaseDefaultNumber$outboundSchema), + z.lazy(() => + SyncReconcileRequestTargetReleaseDefaultBoolean$outboundSchema + ), + z.lazy(() => + SyncReconcileRequestTargetReleaseDefaultStringList$outboundSchema + ), + z.any(), ]); -export function syncReconcileRequestPreparedStackProfileUnionToJSON( - syncReconcileRequestPreparedStackProfileUnion: - SyncReconcileRequestPreparedStackProfileUnion, +export function syncReconcileRequestTargetReleaseDefaultUnionToJSON( + syncReconcileRequestTargetReleaseDefaultUnion: + SyncReconcileRequestTargetReleaseDefaultUnion, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackProfileUnion$outboundSchema.parse( - syncReconcileRequestPreparedStackProfileUnion, + SyncReconcileRequestTargetReleaseDefaultUnion$outboundSchema.parse( + syncReconcileRequestTargetReleaseDefaultUnion, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackPermissions$Outbound = { - management?: - | SyncReconcileRequestPreparedStackManagement1$Outbound - | SyncReconcileRequestPreparedStackManagement2$Outbound - | string - | undefined; - profiles: { - [k: string]: { - [k: string]: Array< - SyncReconcileRequestPreparedStackProfile$Outbound | string - >; - }; - }; -}; +export const SyncReconcileRequestTargetReleaseTypeEnvEnum$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestTargetReleaseTypeEnvEnum, + ); /** @internal */ -export const SyncReconcileRequestPreparedStackPermissions$outboundSchema: +export type SyncReconcileRequestTargetReleaseTypeUnion$Outbound = string | any; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseTypeUnion$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackPermissions$Outbound, - SyncReconcileRequestPreparedStackPermissions - > = z.object({ - management: z.union([ - z.lazy(() => SyncReconcileRequestPreparedStackManagement1$outboundSchema), - z.lazy(() => SyncReconcileRequestPreparedStackManagement2$outboundSchema), - SyncReconcileRequestPreparedStackManagementEnum$outboundSchema, - ]).optional(), - profiles: z.record( - z.string(), - z.record( - z.string(), - z.array( - z.union([ - z.lazy(() => - SyncReconcileRequestPreparedStackProfile$outboundSchema - ), - z.string(), - ]), - ), - ), - ), - }); + SyncReconcileRequestTargetReleaseTypeUnion$Outbound, + SyncReconcileRequestTargetReleaseTypeUnion + > = z.union([ + SyncReconcileRequestTargetReleaseTypeEnvEnum$outboundSchema, + z.any(), + ]); -export function syncReconcileRequestPreparedStackPermissionsToJSON( - syncReconcileRequestPreparedStackPermissions: - SyncReconcileRequestPreparedStackPermissions, +export function syncReconcileRequestTargetReleaseTypeUnionToJSON( + syncReconcileRequestTargetReleaseTypeUnion: + SyncReconcileRequestTargetReleaseTypeUnion, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackPermissions$outboundSchema.parse( - syncReconcileRequestPreparedStackPermissions, + SyncReconcileRequestTargetReleaseTypeUnion$outboundSchema.parse( + syncReconcileRequestTargetReleaseTypeUnion, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackConfig$Outbound = { - id: string; - type: string; - [additionalProperties: string]: unknown; +export type SyncReconcileRequestTargetReleaseEnv$Outbound = { + name: string; + targetResources?: Array | null | undefined; + type?: string | any | null | undefined; }; /** @internal */ -export const SyncReconcileRequestPreparedStackConfig$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackConfig$Outbound, - SyncReconcileRequestPreparedStackConfig +export const SyncReconcileRequestTargetReleaseEnv$outboundSchema: z.ZodType< + SyncReconcileRequestTargetReleaseEnv$Outbound, + SyncReconcileRequestTargetReleaseEnv > = z.object({ - id: z.string(), - type: z.string(), - additionalProperties: z.record(z.string(), z.nullable(z.any())).optional(), -}).transform((v) => { - return { - ...v.additionalProperties, - ...remap$(v, { - additionalProperties: null, - }), - }; + name: z.string(), + targetResources: z.nullable(z.array(z.string())).optional(), + type: z.nullable( + z.union([ + SyncReconcileRequestTargetReleaseTypeEnvEnum$outboundSchema, + z.any(), + ]), + ).optional(), }); -export function syncReconcileRequestPreparedStackConfigToJSON( - syncReconcileRequestPreparedStackConfig: - SyncReconcileRequestPreparedStackConfig, +export function syncReconcileRequestTargetReleaseEnvToJSON( + syncReconcileRequestTargetReleaseEnv: SyncReconcileRequestTargetReleaseEnv, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackConfig$outboundSchema.parse( - syncReconcileRequestPreparedStackConfig, + SyncReconcileRequestTargetReleaseEnv$outboundSchema.parse( + syncReconcileRequestTargetReleaseEnv, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackDependency$Outbound = { - id: string; - type: string; -}; +export const TargetReleaseStateKind$outboundSchema: z.ZodEnum< + typeof TargetReleaseStateKind +> = z.enum(TargetReleaseStateKind); /** @internal */ -export const SyncReconcileRequestPreparedStackDependency$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackDependency$Outbound, - SyncReconcileRequestPreparedStackDependency - > = z.object({ - id: z.string(), - type: z.string(), - }); - -export function syncReconcileRequestPreparedStackDependencyToJSON( - syncReconcileRequestPreparedStackDependency: - SyncReconcileRequestPreparedStackDependency, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackDependency$outboundSchema.parse( - syncReconcileRequestPreparedStackDependency, - ), +export const SyncReconcileRequestTargetReleasePlatform$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestTargetReleasePlatform, ); -} /** @internal */ -export const PreparedStackStateLifecycle$outboundSchema: z.ZodEnum< - typeof PreparedStackStateLifecycle -> = z.enum(PreparedStackStateLifecycle); +export const SyncReconcileRequestTargetReleaseProvidedBy$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestTargetReleaseProvidedBy, + ); /** @internal */ -export type SyncReconcileRequestPreparedStackResources$Outbound = { - config: SyncReconcileRequestPreparedStackConfig$Outbound; - dependencies: Array; - lifecycle: string; - remoteAccess?: boolean | undefined; +export type SyncReconcileRequestTargetReleaseValidation$Outbound = { + format?: string | null | undefined; + max?: string | null | undefined; + maxItems?: number | null | undefined; + maxLength?: number | null | undefined; + min?: string | null | undefined; + minItems?: number | null | undefined; + minLength?: number | null | undefined; + pattern?: string | null | undefined; + values?: Array | null | undefined; }; /** @internal */ -export const SyncReconcileRequestPreparedStackResources$outboundSchema: +export const SyncReconcileRequestTargetReleaseValidation$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackResources$Outbound, - SyncReconcileRequestPreparedStackResources + SyncReconcileRequestTargetReleaseValidation$Outbound, + SyncReconcileRequestTargetReleaseValidation > = z.object({ - config: z.lazy(() => - SyncReconcileRequestPreparedStackConfig$outboundSchema - ), - dependencies: z.array( - z.lazy(() => SyncReconcileRequestPreparedStackDependency$outboundSchema), - ), - lifecycle: PreparedStackStateLifecycle$outboundSchema, - remoteAccess: z.boolean().optional(), + format: z.nullable(z.string()).optional(), + max: z.nullable(z.string()).optional(), + maxItems: z.nullable(z.int()).optional(), + maxLength: z.nullable(z.int()).optional(), + min: z.nullable(z.string()).optional(), + minItems: z.nullable(z.int()).optional(), + minLength: z.nullable(z.int()).optional(), + pattern: z.nullable(z.string()).optional(), + values: z.nullable(z.array(z.string())).optional(), }); -export function syncReconcileRequestPreparedStackResourcesToJSON( - syncReconcileRequestPreparedStackResources: - SyncReconcileRequestPreparedStackResources, +export function syncReconcileRequestTargetReleaseValidationToJSON( + syncReconcileRequestTargetReleaseValidation: + SyncReconcileRequestTargetReleaseValidation, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStackResources$outboundSchema.parse( - syncReconcileRequestPreparedStackResources, + SyncReconcileRequestTargetReleaseValidation$outboundSchema.parse( + syncReconcileRequestTargetReleaseValidation, ), ); } /** @internal */ -export const SyncReconcileRequestPreparedStackSupportedPlatform$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestPreparedStackSupportedPlatform, +export type SyncReconcileRequestTargetReleaseValidationUnion$Outbound = + | SyncReconcileRequestTargetReleaseValidation$Outbound + | any; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseValidationUnion$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseValidationUnion$Outbound, + SyncReconcileRequestTargetReleaseValidationUnion + > = z.union([ + z.lazy(() => SyncReconcileRequestTargetReleaseValidation$outboundSchema), + z.any(), + ]); + +export function syncReconcileRequestTargetReleaseValidationUnionToJSON( + syncReconcileRequestTargetReleaseValidationUnion: + SyncReconcileRequestTargetReleaseValidationUnion, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseValidationUnion$outboundSchema.parse( + syncReconcileRequestTargetReleaseValidationUnion, + ), ); +} /** @internal */ -export type SyncReconcileRequestPreparedStack$Outbound = { +export type SyncReconcileRequestTargetReleaseInput$Outbound = { + default?: + | SyncReconcileRequestTargetReleaseDefaultString$Outbound + | SyncReconcileRequestTargetReleaseDefaultNumber$Outbound + | SyncReconcileRequestTargetReleaseDefaultBoolean$Outbound + | SyncReconcileRequestTargetReleaseDefaultStringList$Outbound + | any + | null + | undefined; + description: string; + env?: Array | undefined; id: string; - inputs?: Array | undefined; - permissions?: - | SyncReconcileRequestPreparedStackPermissions$Outbound + kind: string; + label: string; + placeholder?: string | null | undefined; + platforms?: Array | null | undefined; + providedBy: Array; + required: boolean; + validation?: + | SyncReconcileRequestTargetReleaseValidation$Outbound + | any + | null | undefined; - resources: { - [k: string]: SyncReconcileRequestPreparedStackResources$Outbound; - }; - supportedPlatforms?: Array | null | undefined; }; /** @internal */ -export const SyncReconcileRequestPreparedStack$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStack$Outbound, - SyncReconcileRequestPreparedStack +export const SyncReconcileRequestTargetReleaseInput$outboundSchema: z.ZodType< + SyncReconcileRequestTargetReleaseInput$Outbound, + SyncReconcileRequestTargetReleaseInput > = z.object({ - id: z.string(), - inputs: z.array( - z.lazy(() => SyncReconcileRequestPreparedStackInput$outboundSchema), + default: z.nullable( + z.union([ + z.lazy(() => + SyncReconcileRequestTargetReleaseDefaultString$outboundSchema + ), + z.lazy(() => + SyncReconcileRequestTargetReleaseDefaultNumber$outboundSchema + ), + z.lazy(() => + SyncReconcileRequestTargetReleaseDefaultBoolean$outboundSchema + ), + z.lazy(() => + SyncReconcileRequestTargetReleaseDefaultStringList$outboundSchema + ), + z.any(), + ]), ).optional(), - permissions: z.lazy(() => - SyncReconcileRequestPreparedStackPermissions$outboundSchema + description: z.string(), + env: z.array( + z.lazy(() => SyncReconcileRequestTargetReleaseEnv$outboundSchema), ).optional(), - resources: z.record( - z.string(), - z.lazy(() => SyncReconcileRequestPreparedStackResources$outboundSchema), + id: z.string(), + kind: TargetReleaseStateKind$outboundSchema, + label: z.string(), + placeholder: z.nullable(z.string()).optional(), + platforms: z.nullable( + z.array(SyncReconcileRequestTargetReleasePlatform$outboundSchema), + ).optional(), + providedBy: z.array( + SyncReconcileRequestTargetReleaseProvidedBy$outboundSchema, ), - supportedPlatforms: z.nullable( - z.array(SyncReconcileRequestPreparedStackSupportedPlatform$outboundSchema), + required: z.boolean(), + validation: z.nullable( + z.union([ + z.lazy(() => SyncReconcileRequestTargetReleaseValidation$outboundSchema), + z.any(), + ]), ).optional(), }); -export function syncReconcileRequestPreparedStackToJSON( - syncReconcileRequestPreparedStack: SyncReconcileRequestPreparedStack, +export function syncReconcileRequestTargetReleaseInputToJSON( + syncReconcileRequestTargetReleaseInput: + SyncReconcileRequestTargetReleaseInput, ): string { return JSON.stringify( - SyncReconcileRequestPreparedStack$outboundSchema.parse( - syncReconcileRequestPreparedStack, + SyncReconcileRequestTargetReleaseInput$outboundSchema.parse( + syncReconcileRequestTargetReleaseInput, ), ); } /** @internal */ -export type SyncReconcileRequestPreparedStackUnion$Outbound = - | SyncReconcileRequestPreparedStack$Outbound - | any; - -/** @internal */ -export const SyncReconcileRequestPreparedStackUnion$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackUnion$Outbound, - SyncReconcileRequestPreparedStackUnion -> = z.union([ - z.lazy(() => SyncReconcileRequestPreparedStack$outboundSchema), - z.any(), -]); - -export function syncReconcileRequestPreparedStackUnionToJSON( - syncReconcileRequestPreparedStackUnion: - SyncReconcileRequestPreparedStackUnion, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackUnion$outboundSchema.parse( - syncReconcileRequestPreparedStackUnion, - ), +export const SyncReconcileRequestTargetReleaseManagementEnum$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestTargetReleaseManagementEnum, ); -} /** @internal */ -export type SyncReconcileRequestRuntimeMetadata$Outbound = { - lastSyncedEnvVarsHash?: string | null | undefined; - lastSyncedSecretNames?: Array | undefined; - preparedStack?: - | SyncReconcileRequestPreparedStack$Outbound - | any - | null - | undefined; - registryAccessGranted?: boolean | undefined; +export type TargetReleaseOverrideStateAwResource$Outbound = { + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + resources: Array; }; /** @internal */ -export const SyncReconcileRequestRuntimeMetadata$outboundSchema: z.ZodType< - SyncReconcileRequestRuntimeMetadata$Outbound, - SyncReconcileRequestRuntimeMetadata +export const TargetReleaseOverrideStateAwResource$outboundSchema: z.ZodType< + TargetReleaseOverrideStateAwResource$Outbound, + TargetReleaseOverrideStateAwResource > = z.object({ - lastSyncedEnvVarsHash: z.nullable(z.string()).optional(), - lastSyncedSecretNames: z.array(z.string()).optional(), - preparedStack: z.nullable( - z.union([ - z.lazy(() => SyncReconcileRequestPreparedStack$outboundSchema), - z.any(), - ]), - ).optional(), - registryAccessGranted: z.boolean().optional(), + condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) + .optional(), + resources: z.array(z.string()), }); -export function syncReconcileRequestRuntimeMetadataToJSON( - syncReconcileRequestRuntimeMetadata: SyncReconcileRequestRuntimeMetadata, +export function targetReleaseOverrideStateAwResourceToJSON( + targetReleaseOverrideStateAwResource: TargetReleaseOverrideStateAwResource, ): string { return JSON.stringify( - SyncReconcileRequestRuntimeMetadata$outboundSchema.parse( - syncReconcileRequestRuntimeMetadata, + TargetReleaseOverrideStateAwResource$outboundSchema.parse( + targetReleaseOverrideStateAwResource, ), ); } /** @internal */ -export type SyncReconcileRequestRuntimeMetadataUnion$Outbound = - | SyncReconcileRequestRuntimeMetadata$Outbound - | any; +export type SyncReconcileRequestTargetReleaseOverrideAwStack$Outbound = { + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + resources: Array; +}; /** @internal */ -export const SyncReconcileRequestRuntimeMetadataUnion$outboundSchema: z.ZodType< - SyncReconcileRequestRuntimeMetadataUnion$Outbound, - SyncReconcileRequestRuntimeMetadataUnion -> = z.union([ - z.lazy(() => SyncReconcileRequestRuntimeMetadata$outboundSchema), - z.any(), -]); +export const SyncReconcileRequestTargetReleaseOverrideAwStack$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseOverrideAwStack$Outbound, + SyncReconcileRequestTargetReleaseOverrideAwStack + > = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); -export function syncReconcileRequestRuntimeMetadataUnionToJSON( - syncReconcileRequestRuntimeMetadataUnion: - SyncReconcileRequestRuntimeMetadataUnion, +export function syncReconcileRequestTargetReleaseOverrideAwStackToJSON( + syncReconcileRequestTargetReleaseOverrideAwStack: + SyncReconcileRequestTargetReleaseOverrideAwStack, ): string { return JSON.stringify( - SyncReconcileRequestRuntimeMetadataUnion$outboundSchema.parse( - syncReconcileRequestRuntimeMetadataUnion, + SyncReconcileRequestTargetReleaseOverrideAwStack$outboundSchema.parse( + syncReconcileRequestTargetReleaseOverrideAwStack, ), ); } /** @internal */ -export const SyncReconcileRequestStackStatePlatform$outboundSchema: z.ZodEnum< - typeof SyncReconcileRequestStackStatePlatform -> = z.enum(SyncReconcileRequestStackStatePlatform); - -/** @internal */ -export type SyncReconcileRequestStackStateConfig$Outbound = { - id: string; - type: string; - [additionalProperties: string]: unknown; +export type SyncReconcileRequestTargetReleaseOverrideAwBinding$Outbound = { + resource?: TargetReleaseOverrideStateAwResource$Outbound | undefined; + stack?: SyncReconcileRequestTargetReleaseOverrideAwStack$Outbound | undefined; }; /** @internal */ -export const SyncReconcileRequestStackStateConfig$outboundSchema: z.ZodType< - SyncReconcileRequestStackStateConfig$Outbound, - SyncReconcileRequestStackStateConfig -> = z.object({ - id: z.string(), - type: z.string(), - additionalProperties: z.record(z.string(), z.nullable(z.any())).optional(), -}).transform((v) => { - return { - ...v.additionalProperties, - ...remap$(v, { - additionalProperties: null, - }), - }; -}); +export const SyncReconcileRequestTargetReleaseOverrideAwBinding$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseOverrideAwBinding$Outbound, + SyncReconcileRequestTargetReleaseOverrideAwBinding + > = z.object({ + resource: z.lazy(() => TargetReleaseOverrideStateAwResource$outboundSchema) + .optional(), + stack: z.lazy(() => + SyncReconcileRequestTargetReleaseOverrideAwStack$outboundSchema + ).optional(), + }); -export function syncReconcileRequestStackStateConfigToJSON( - syncReconcileRequestStackStateConfig: SyncReconcileRequestStackStateConfig, +export function syncReconcileRequestTargetReleaseOverrideAwBindingToJSON( + syncReconcileRequestTargetReleaseOverrideAwBinding: + SyncReconcileRequestTargetReleaseOverrideAwBinding, ): string { return JSON.stringify( - SyncReconcileRequestStackStateConfig$outboundSchema.parse( - syncReconcileRequestStackStateConfig, + SyncReconcileRequestTargetReleaseOverrideAwBinding$outboundSchema.parse( + syncReconcileRequestTargetReleaseOverrideAwBinding, ), ); } /** @internal */ -export const ControllerPlatformStateEnum$outboundSchema: z.ZodEnum< - typeof ControllerPlatformStateEnum -> = z.enum(ControllerPlatformStateEnum); +export const SyncReconcileRequestTargetReleaseOverrideEffect$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestTargetReleaseOverrideEffect, + ); /** @internal */ -export type StateControllerPlatformUnion$Outbound = string | any; +export type SyncReconcileRequestTargetReleaseOverrideAwGrant$Outbound = { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; +}; /** @internal */ -export const StateControllerPlatformUnion$outboundSchema: z.ZodType< - StateControllerPlatformUnion$Outbound, - StateControllerPlatformUnion -> = z.union([ControllerPlatformStateEnum$outboundSchema, z.any()]); +export const SyncReconcileRequestTargetReleaseOverrideAwGrant$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseOverrideAwGrant$Outbound, + SyncReconcileRequestTargetReleaseOverrideAwGrant + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); -export function stateControllerPlatformUnionToJSON( - stateControllerPlatformUnion: StateControllerPlatformUnion, +export function syncReconcileRequestTargetReleaseOverrideAwGrantToJSON( + syncReconcileRequestTargetReleaseOverrideAwGrant: + SyncReconcileRequestTargetReleaseOverrideAwGrant, ): string { return JSON.stringify( - StateControllerPlatformUnion$outboundSchema.parse( - stateControllerPlatformUnion, + SyncReconcileRequestTargetReleaseOverrideAwGrant$outboundSchema.parse( + syncReconcileRequestTargetReleaseOverrideAwGrant, ), ); } /** @internal */ -export type SyncReconcileRequestStackStateDependency$Outbound = { - id: string; - type: string; +export type SyncReconcileRequestTargetReleaseOverrideAw$Outbound = { + binding: SyncReconcileRequestTargetReleaseOverrideAwBinding$Outbound; + description?: string | null | undefined; + effect?: string | undefined; + grant: SyncReconcileRequestTargetReleaseOverrideAwGrant$Outbound; + label?: string | null | undefined; }; /** @internal */ -export const SyncReconcileRequestStackStateDependency$outboundSchema: z.ZodType< - SyncReconcileRequestStackStateDependency$Outbound, - SyncReconcileRequestStackStateDependency -> = z.object({ - id: z.string(), - type: z.string(), -}); +export const SyncReconcileRequestTargetReleaseOverrideAw$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseOverrideAw$Outbound, + SyncReconcileRequestTargetReleaseOverrideAw + > = z.object({ + binding: z.lazy(() => + SyncReconcileRequestTargetReleaseOverrideAwBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: SyncReconcileRequestTargetReleaseOverrideEffect$outboundSchema + .optional(), + grant: z.lazy(() => + SyncReconcileRequestTargetReleaseOverrideAwGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); -export function syncReconcileRequestStackStateDependencyToJSON( - syncReconcileRequestStackStateDependency: - SyncReconcileRequestStackStateDependency, +export function syncReconcileRequestTargetReleaseOverrideAwToJSON( + syncReconcileRequestTargetReleaseOverrideAw: + SyncReconcileRequestTargetReleaseOverrideAw, ): string { return JSON.stringify( - SyncReconcileRequestStackStateDependency$outboundSchema.parse( - syncReconcileRequestStackStateDependency, + SyncReconcileRequestTargetReleaseOverrideAw$outboundSchema.parse( + syncReconcileRequestTargetReleaseOverrideAw, ), ); } /** @internal */ -export type SyncReconcileRequestStackStateError$Outbound = { - code: string; - context?: any | null | undefined; - hint?: string | null | undefined; - httpStatusCode?: number | null | undefined; - internal: boolean; - message: string; - retryable: boolean; - source?: any | null | undefined; +export type TargetReleaseOverrideStateAzureResource$Outbound = { + scope: string; }; /** @internal */ -export const SyncReconcileRequestStackStateError$outboundSchema: z.ZodType< - SyncReconcileRequestStackStateError$Outbound, - SyncReconcileRequestStackStateError +export const TargetReleaseOverrideStateAzureResource$outboundSchema: z.ZodType< + TargetReleaseOverrideStateAzureResource$Outbound, + TargetReleaseOverrideStateAzureResource > = z.object({ - code: z.string(), - context: z.nullable(z.any()).optional(), - hint: z.nullable(z.string()).optional(), - httpStatusCode: z.nullable(z.int()).optional(), - internal: z.boolean(), - message: z.string(), - retryable: z.boolean().default(false), - source: z.nullable(z.any()).optional(), + scope: z.string(), }); -export function syncReconcileRequestStackStateErrorToJSON( - syncReconcileRequestStackStateError: SyncReconcileRequestStackStateError, +export function targetReleaseOverrideStateAzureResourceToJSON( + targetReleaseOverrideStateAzureResource: + TargetReleaseOverrideStateAzureResource, ): string { return JSON.stringify( - SyncReconcileRequestStackStateError$outboundSchema.parse( - syncReconcileRequestStackStateError, + TargetReleaseOverrideStateAzureResource$outboundSchema.parse( + targetReleaseOverrideStateAzureResource, ), ); } /** @internal */ -export type SyncReconcileRequestStackStateErrorUnion$Outbound = - | SyncReconcileRequestStackStateError$Outbound - | any; +export type SyncReconcileRequestTargetReleaseOverrideAzureStack$Outbound = { + scope: string; +}; /** @internal */ -export const SyncReconcileRequestStackStateErrorUnion$outboundSchema: z.ZodType< - SyncReconcileRequestStackStateErrorUnion$Outbound, - SyncReconcileRequestStackStateErrorUnion -> = z.union([ - z.lazy(() => SyncReconcileRequestStackStateError$outboundSchema), - z.any(), -]); +export const SyncReconcileRequestTargetReleaseOverrideAzureStack$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseOverrideAzureStack$Outbound, + SyncReconcileRequestTargetReleaseOverrideAzureStack + > = z.object({ + scope: z.string(), + }); -export function syncReconcileRequestStackStateErrorUnionToJSON( - syncReconcileRequestStackStateErrorUnion: - SyncReconcileRequestStackStateErrorUnion, +export function syncReconcileRequestTargetReleaseOverrideAzureStackToJSON( + syncReconcileRequestTargetReleaseOverrideAzureStack: + SyncReconcileRequestTargetReleaseOverrideAzureStack, ): string { return JSON.stringify( - SyncReconcileRequestStackStateErrorUnion$outboundSchema.parse( - syncReconcileRequestStackStateErrorUnion, + SyncReconcileRequestTargetReleaseOverrideAzureStack$outboundSchema.parse( + syncReconcileRequestTargetReleaseOverrideAzureStack, ), ); } /** @internal */ -export const StackStateLifecycleStateEnum$outboundSchema: z.ZodEnum< - typeof StackStateLifecycleStateEnum -> = z.enum(StackStateLifecycleStateEnum); - -/** @internal */ -export type StateLifecycleUnion$Outbound = string | any; +export type SyncReconcileRequestTargetReleaseOverrideAzureBinding$Outbound = { + resource?: TargetReleaseOverrideStateAzureResource$Outbound | undefined; + stack?: + | SyncReconcileRequestTargetReleaseOverrideAzureStack$Outbound + | undefined; +}; /** @internal */ -export const StateLifecycleUnion$outboundSchema: z.ZodType< - StateLifecycleUnion$Outbound, - StateLifecycleUnion -> = z.union([StackStateLifecycleStateEnum$outboundSchema, z.any()]); +export const SyncReconcileRequestTargetReleaseOverrideAzureBinding$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseOverrideAzureBinding$Outbound, + SyncReconcileRequestTargetReleaseOverrideAzureBinding + > = z.object({ + resource: z.lazy(() => + TargetReleaseOverrideStateAzureResource$outboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileRequestTargetReleaseOverrideAzureStack$outboundSchema + ).optional(), + }); -export function stateLifecycleUnionToJSON( - stateLifecycleUnion: StateLifecycleUnion, +export function syncReconcileRequestTargetReleaseOverrideAzureBindingToJSON( + syncReconcileRequestTargetReleaseOverrideAzureBinding: + SyncReconcileRequestTargetReleaseOverrideAzureBinding, ): string { return JSON.stringify( - StateLifecycleUnion$outboundSchema.parse(stateLifecycleUnion), + SyncReconcileRequestTargetReleaseOverrideAzureBinding$outboundSchema.parse( + syncReconcileRequestTargetReleaseOverrideAzureBinding, + ), ); } /** @internal */ -export type SyncReconcileRequestOutputs$Outbound = { - type: string; - [additionalProperties: string]: unknown; +export type SyncReconcileRequestTargetReleaseOverrideAzureGrant$Outbound = { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; }; /** @internal */ -export const SyncReconcileRequestOutputs$outboundSchema: z.ZodType< - SyncReconcileRequestOutputs$Outbound, - SyncReconcileRequestOutputs -> = z.object({ - type: z.string(), - additionalProperties: z.record(z.string(), z.nullable(z.any())).optional(), -}).transform((v) => { - return { - ...v.additionalProperties, - ...remap$(v, { - additionalProperties: null, - }), - }; -}); +export const SyncReconcileRequestTargetReleaseOverrideAzureGrant$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseOverrideAzureGrant$Outbound, + SyncReconcileRequestTargetReleaseOverrideAzureGrant + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); -export function syncReconcileRequestOutputsToJSON( - syncReconcileRequestOutputs: SyncReconcileRequestOutputs, +export function syncReconcileRequestTargetReleaseOverrideAzureGrantToJSON( + syncReconcileRequestTargetReleaseOverrideAzureGrant: + SyncReconcileRequestTargetReleaseOverrideAzureGrant, ): string { return JSON.stringify( - SyncReconcileRequestOutputs$outboundSchema.parse( - syncReconcileRequestOutputs, + SyncReconcileRequestTargetReleaseOverrideAzureGrant$outboundSchema.parse( + syncReconcileRequestTargetReleaseOverrideAzureGrant, ), ); } /** @internal */ -export type SyncReconcileRequestOutputsUnion$Outbound = - | SyncReconcileRequestOutputs$Outbound - | any; +export type SyncReconcileRequestTargetReleaseOverrideAzure$Outbound = { + binding: SyncReconcileRequestTargetReleaseOverrideAzureBinding$Outbound; + description?: string | null | undefined; + grant: SyncReconcileRequestTargetReleaseOverrideAzureGrant$Outbound; + label?: string | null | undefined; +}; /** @internal */ -export const SyncReconcileRequestOutputsUnion$outboundSchema: z.ZodType< - SyncReconcileRequestOutputsUnion$Outbound, - SyncReconcileRequestOutputsUnion -> = z.union([ - z.lazy(() => SyncReconcileRequestOutputs$outboundSchema), - z.any(), -]); +export const SyncReconcileRequestTargetReleaseOverrideAzure$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseOverrideAzure$Outbound, + SyncReconcileRequestTargetReleaseOverrideAzure + > = z.object({ + binding: z.lazy(() => + SyncReconcileRequestTargetReleaseOverrideAzureBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileRequestTargetReleaseOverrideAzureGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); -export function syncReconcileRequestOutputsUnionToJSON( - syncReconcileRequestOutputsUnion: SyncReconcileRequestOutputsUnion, +export function syncReconcileRequestTargetReleaseOverrideAzureToJSON( + syncReconcileRequestTargetReleaseOverrideAzure: + SyncReconcileRequestTargetReleaseOverrideAzure, ): string { return JSON.stringify( - SyncReconcileRequestOutputsUnion$outboundSchema.parse( - syncReconcileRequestOutputsUnion, + SyncReconcileRequestTargetReleaseOverrideAzure$outboundSchema.parse( + syncReconcileRequestTargetReleaseOverrideAzure, ), ); } /** @internal */ -export type SyncReconcileRequestPreviousConfig$Outbound = { - id: string; - type: string; - [additionalProperties: string]: unknown; +export type TargetReleaseOverrideConditionStateResource$Outbound = { + expression: string; + title: string; }; /** @internal */ -export const SyncReconcileRequestPreviousConfig$outboundSchema: z.ZodType< - SyncReconcileRequestPreviousConfig$Outbound, - SyncReconcileRequestPreviousConfig -> = z.object({ - id: z.string(), - type: z.string(), - additionalProperties: z.record(z.string(), z.nullable(z.any())).optional(), -}).transform((v) => { - return { - ...v.additionalProperties, - ...remap$(v, { - additionalProperties: null, - }), - }; -}); +export const TargetReleaseOverrideConditionStateResource$outboundSchema: + z.ZodType< + TargetReleaseOverrideConditionStateResource$Outbound, + TargetReleaseOverrideConditionStateResource + > = z.object({ + expression: z.string(), + title: z.string(), + }); -export function syncReconcileRequestPreviousConfigToJSON( - syncReconcileRequestPreviousConfig: SyncReconcileRequestPreviousConfig, +export function targetReleaseOverrideConditionStateResourceToJSON( + targetReleaseOverrideConditionStateResource: + TargetReleaseOverrideConditionStateResource, ): string { return JSON.stringify( - SyncReconcileRequestPreviousConfig$outboundSchema.parse( - syncReconcileRequestPreviousConfig, + TargetReleaseOverrideConditionStateResource$outboundSchema.parse( + targetReleaseOverrideConditionStateResource, ), ); } /** @internal */ -export type SyncReconcileRequestPreviousConfigUnion$Outbound = - | SyncReconcileRequestPreviousConfig$Outbound +export type TargetReleaseOverrideStateResourceConditionUnion$Outbound = + | TargetReleaseOverrideConditionStateResource$Outbound | any; /** @internal */ -export const SyncReconcileRequestPreviousConfigUnion$outboundSchema: z.ZodType< - SyncReconcileRequestPreviousConfigUnion$Outbound, - SyncReconcileRequestPreviousConfigUnion -> = z.union([ - z.lazy(() => SyncReconcileRequestPreviousConfig$outboundSchema), - z.any(), -]); +export const TargetReleaseOverrideStateResourceConditionUnion$outboundSchema: + z.ZodType< + TargetReleaseOverrideStateResourceConditionUnion$Outbound, + TargetReleaseOverrideStateResourceConditionUnion + > = z.union([ + z.lazy(() => TargetReleaseOverrideConditionStateResource$outboundSchema), + z.any(), + ]); -export function syncReconcileRequestPreviousConfigUnionToJSON( - syncReconcileRequestPreviousConfigUnion: - SyncReconcileRequestPreviousConfigUnion, +export function targetReleaseOverrideStateResourceConditionUnionToJSON( + targetReleaseOverrideStateResourceConditionUnion: + TargetReleaseOverrideStateResourceConditionUnion, ): string { return JSON.stringify( - SyncReconcileRequestPreviousConfigUnion$outboundSchema.parse( - syncReconcileRequestPreviousConfigUnion, + TargetReleaseOverrideStateResourceConditionUnion$outboundSchema.parse( + targetReleaseOverrideStateResourceConditionUnion, ), ); } /** @internal */ -export const StackStateStateStatus$outboundSchema: z.ZodEnum< - typeof StackStateStateStatus -> = z.enum(StackStateStateStatus); - -/** @internal */ -export type SyncReconcileRequestStackStateResources$Outbound = { - _internal?: any | null | undefined; - config: SyncReconcileRequestStackStateConfig$Outbound; - controllerPlatform?: string | any | null | undefined; - dependencies?: - | Array - | undefined; - error?: SyncReconcileRequestStackStateError$Outbound | any | null | undefined; - lastFailedState?: any | null | undefined; - lifecycle?: string | any | null | undefined; - outputs?: SyncReconcileRequestOutputs$Outbound | any | null | undefined; - previousConfig?: - | SyncReconcileRequestPreviousConfig$Outbound +export type TargetReleaseOverrideStateGcpResource$Outbound = { + condition?: + | TargetReleaseOverrideConditionStateResource$Outbound | any | null | undefined; - remoteBindingParams?: any | null | undefined; - retryAttempt?: number | undefined; - status: string; - type: string; + scope: string; }; /** @internal */ -export const SyncReconcileRequestStackStateResources$outboundSchema: z.ZodType< - SyncReconcileRequestStackStateResources$Outbound, - SyncReconcileRequestStackStateResources +export const TargetReleaseOverrideStateGcpResource$outboundSchema: z.ZodType< + TargetReleaseOverrideStateGcpResource$Outbound, + TargetReleaseOverrideStateGcpResource > = z.object({ - internal: z.nullable(z.any()).optional(), - config: z.lazy(() => SyncReconcileRequestStackStateConfig$outboundSchema), - controllerPlatform: z.nullable( - z.union([ControllerPlatformStateEnum$outboundSchema, z.any()]), - ).optional(), - dependencies: z.array( - z.lazy(() => SyncReconcileRequestStackStateDependency$outboundSchema), - ).optional(), - error: z.nullable( - z.union([ - z.lazy(() => SyncReconcileRequestStackStateError$outboundSchema), - z.any(), - ]), - ).optional(), - lastFailedState: z.nullable(z.any()).optional(), - lifecycle: z.nullable( - z.union([StackStateLifecycleStateEnum$outboundSchema, z.any()]), - ).optional(), - outputs: z.nullable( - z.union([ - z.lazy(() => SyncReconcileRequestOutputs$outboundSchema), - z.any(), - ]), - ).optional(), - previousConfig: z.nullable( + condition: z.nullable( z.union([ - z.lazy(() => SyncReconcileRequestPreviousConfig$outboundSchema), + z.lazy(() => TargetReleaseOverrideConditionStateResource$outboundSchema), z.any(), ]), ).optional(), - remoteBindingParams: z.nullable(z.any()).optional(), - retryAttempt: z.int().optional(), - status: StackStateStateStatus$outboundSchema, - type: z.string(), -}).transform((v) => { - return remap$(v, { - internal: "_internal", - }); + scope: z.string(), }); -export function syncReconcileRequestStackStateResourcesToJSON( - syncReconcileRequestStackStateResources: - SyncReconcileRequestStackStateResources, +export function targetReleaseOverrideStateGcpResourceToJSON( + targetReleaseOverrideStateGcpResource: TargetReleaseOverrideStateGcpResource, ): string { return JSON.stringify( - SyncReconcileRequestStackStateResources$outboundSchema.parse( - syncReconcileRequestStackStateResources, + TargetReleaseOverrideStateGcpResource$outboundSchema.parse( + targetReleaseOverrideStateGcpResource, ), ); } /** @internal */ -export type SyncReconcileRequestStackState$Outbound = { - platform: string; - resourcePrefix: string; - resources: { [k: string]: SyncReconcileRequestStackStateResources$Outbound }; +export type TargetReleaseOverrideConditionState$Outbound = { + expression: string; + title: string; }; /** @internal */ -export const SyncReconcileRequestStackState$outboundSchema: z.ZodType< - SyncReconcileRequestStackState$Outbound, - SyncReconcileRequestStackState +export const TargetReleaseOverrideConditionState$outboundSchema: z.ZodType< + TargetReleaseOverrideConditionState$Outbound, + TargetReleaseOverrideConditionState > = z.object({ - platform: SyncReconcileRequestStackStatePlatform$outboundSchema, - resourcePrefix: z.string(), - resources: z.record( - z.string(), - z.lazy(() => SyncReconcileRequestStackStateResources$outboundSchema), - ), + expression: z.string(), + title: z.string(), }); -export function syncReconcileRequestStackStateToJSON( - syncReconcileRequestStackState: SyncReconcileRequestStackState, +export function targetReleaseOverrideConditionStateToJSON( + targetReleaseOverrideConditionState: TargetReleaseOverrideConditionState, ): string { return JSON.stringify( - SyncReconcileRequestStackState$outboundSchema.parse( - syncReconcileRequestStackState, + TargetReleaseOverrideConditionState$outboundSchema.parse( + targetReleaseOverrideConditionState, ), ); } /** @internal */ -export type SyncReconcileRequestStackStateUnion$Outbound = - | SyncReconcileRequestStackState$Outbound +export type TargetReleaseOverrideStateConditionUnion$Outbound = + | TargetReleaseOverrideConditionState$Outbound | any; /** @internal */ -export const SyncReconcileRequestStackStateUnion$outboundSchema: z.ZodType< - SyncReconcileRequestStackStateUnion$Outbound, - SyncReconcileRequestStackStateUnion +export const TargetReleaseOverrideStateConditionUnion$outboundSchema: z.ZodType< + TargetReleaseOverrideStateConditionUnion$Outbound, + TargetReleaseOverrideStateConditionUnion > = z.union([ - z.lazy(() => SyncReconcileRequestStackState$outboundSchema), + z.lazy(() => TargetReleaseOverrideConditionState$outboundSchema), z.any(), ]); -export function syncReconcileRequestStackStateUnionToJSON( - syncReconcileRequestStackStateUnion: SyncReconcileRequestStackStateUnion, +export function targetReleaseOverrideStateConditionUnionToJSON( + targetReleaseOverrideStateConditionUnion: + TargetReleaseOverrideStateConditionUnion, ): string { return JSON.stringify( - SyncReconcileRequestStackStateUnion$outboundSchema.parse( - syncReconcileRequestStackStateUnion, + TargetReleaseOverrideStateConditionUnion$outboundSchema.parse( + targetReleaseOverrideStateConditionUnion, ), ); } /** @internal */ -export const StateStatus$outboundSchema: z.ZodEnum = z.enum( - StateStatus, -); - -/** @internal */ -export const SyncReconcileRequestTargetReleaseTypeStringList$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestTargetReleaseTypeStringList, - ); - -/** @internal */ -export type SyncReconcileRequestTargetReleaseDefaultStringList$Outbound = { - type: string; - value: Array; +export type SyncReconcileRequestTargetReleaseOverrideGcpStack$Outbound = { + condition?: + | TargetReleaseOverrideConditionState$Outbound + | any + | null + | undefined; + scope: string; }; /** @internal */ -export const SyncReconcileRequestTargetReleaseDefaultStringList$outboundSchema: +export const SyncReconcileRequestTargetReleaseOverrideGcpStack$outboundSchema: z.ZodType< - SyncReconcileRequestTargetReleaseDefaultStringList$Outbound, - SyncReconcileRequestTargetReleaseDefaultStringList + SyncReconcileRequestTargetReleaseOverrideGcpStack$Outbound, + SyncReconcileRequestTargetReleaseOverrideGcpStack > = z.object({ - type: SyncReconcileRequestTargetReleaseTypeStringList$outboundSchema, - value: z.array(z.string()), + condition: z.nullable( + z.union([ + z.lazy(() => TargetReleaseOverrideConditionState$outboundSchema), + z.any(), + ]), + ).optional(), + scope: z.string(), }); -export function syncReconcileRequestTargetReleaseDefaultStringListToJSON( - syncReconcileRequestTargetReleaseDefaultStringList: - SyncReconcileRequestTargetReleaseDefaultStringList, +export function syncReconcileRequestTargetReleaseOverrideGcpStackToJSON( + syncReconcileRequestTargetReleaseOverrideGcpStack: + SyncReconcileRequestTargetReleaseOverrideGcpStack, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseDefaultStringList$outboundSchema.parse( - syncReconcileRequestTargetReleaseDefaultStringList, + SyncReconcileRequestTargetReleaseOverrideGcpStack$outboundSchema.parse( + syncReconcileRequestTargetReleaseOverrideGcpStack, ), ); } /** @internal */ -export const SyncReconcileRequestTargetReleaseTypeBoolean$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestTargetReleaseTypeBoolean, - ); - -/** @internal */ -export type SyncReconcileRequestTargetReleaseDefaultBoolean$Outbound = { - type: string; - value: boolean; +export type SyncReconcileRequestTargetReleaseOverrideGcpBinding$Outbound = { + resource?: TargetReleaseOverrideStateGcpResource$Outbound | undefined; + stack?: + | SyncReconcileRequestTargetReleaseOverrideGcpStack$Outbound + | undefined; }; /** @internal */ -export const SyncReconcileRequestTargetReleaseDefaultBoolean$outboundSchema: +export const SyncReconcileRequestTargetReleaseOverrideGcpBinding$outboundSchema: z.ZodType< - SyncReconcileRequestTargetReleaseDefaultBoolean$Outbound, - SyncReconcileRequestTargetReleaseDefaultBoolean + SyncReconcileRequestTargetReleaseOverrideGcpBinding$Outbound, + SyncReconcileRequestTargetReleaseOverrideGcpBinding > = z.object({ - type: SyncReconcileRequestTargetReleaseTypeBoolean$outboundSchema, - value: z.boolean(), + resource: z.lazy(() => TargetReleaseOverrideStateGcpResource$outboundSchema) + .optional(), + stack: z.lazy(() => + SyncReconcileRequestTargetReleaseOverrideGcpStack$outboundSchema + ).optional(), }); -export function syncReconcileRequestTargetReleaseDefaultBooleanToJSON( - syncReconcileRequestTargetReleaseDefaultBoolean: - SyncReconcileRequestTargetReleaseDefaultBoolean, +export function syncReconcileRequestTargetReleaseOverrideGcpBindingToJSON( + syncReconcileRequestTargetReleaseOverrideGcpBinding: + SyncReconcileRequestTargetReleaseOverrideGcpBinding, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseDefaultBoolean$outboundSchema.parse( - syncReconcileRequestTargetReleaseDefaultBoolean, + SyncReconcileRequestTargetReleaseOverrideGcpBinding$outboundSchema.parse( + syncReconcileRequestTargetReleaseOverrideGcpBinding, ), ); } /** @internal */ -export const SyncReconcileRequestTargetReleaseTypeNumber$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestTargetReleaseTypeNumber, - ); - -/** @internal */ -export type SyncReconcileRequestTargetReleaseDefaultNumber$Outbound = { - type: string; - value: string; +export type SyncReconcileRequestTargetReleaseOverrideGcpGrant$Outbound = { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; }; /** @internal */ -export const SyncReconcileRequestTargetReleaseDefaultNumber$outboundSchema: +export const SyncReconcileRequestTargetReleaseOverrideGcpGrant$outboundSchema: z.ZodType< - SyncReconcileRequestTargetReleaseDefaultNumber$Outbound, - SyncReconcileRequestTargetReleaseDefaultNumber + SyncReconcileRequestTargetReleaseOverrideGcpGrant$Outbound, + SyncReconcileRequestTargetReleaseOverrideGcpGrant > = z.object({ - type: SyncReconcileRequestTargetReleaseTypeNumber$outboundSchema, - value: z.string(), + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function syncReconcileRequestTargetReleaseDefaultNumberToJSON( - syncReconcileRequestTargetReleaseDefaultNumber: - SyncReconcileRequestTargetReleaseDefaultNumber, +export function syncReconcileRequestTargetReleaseOverrideGcpGrantToJSON( + syncReconcileRequestTargetReleaseOverrideGcpGrant: + SyncReconcileRequestTargetReleaseOverrideGcpGrant, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseDefaultNumber$outboundSchema.parse( - syncReconcileRequestTargetReleaseDefaultNumber, + SyncReconcileRequestTargetReleaseOverrideGcpGrant$outboundSchema.parse( + syncReconcileRequestTargetReleaseOverrideGcpGrant, ), ); } /** @internal */ -export const SyncReconcileRequestTargetReleaseTypeString$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestTargetReleaseTypeString, - ); - -/** @internal */ -export type SyncReconcileRequestTargetReleaseDefaultString$Outbound = { - type: string; - value: string; +export type SyncReconcileRequestTargetReleaseOverrideGcp$Outbound = { + binding: SyncReconcileRequestTargetReleaseOverrideGcpBinding$Outbound; + description?: string | null | undefined; + grant: SyncReconcileRequestTargetReleaseOverrideGcpGrant$Outbound; + label?: string | null | undefined; }; /** @internal */ -export const SyncReconcileRequestTargetReleaseDefaultString$outboundSchema: +export const SyncReconcileRequestTargetReleaseOverrideGcp$outboundSchema: z.ZodType< - SyncReconcileRequestTargetReleaseDefaultString$Outbound, - SyncReconcileRequestTargetReleaseDefaultString + SyncReconcileRequestTargetReleaseOverrideGcp$Outbound, + SyncReconcileRequestTargetReleaseOverrideGcp > = z.object({ - type: SyncReconcileRequestTargetReleaseTypeString$outboundSchema, - value: z.string(), - }); - -export function syncReconcileRequestTargetReleaseDefaultStringToJSON( - syncReconcileRequestTargetReleaseDefaultString: - SyncReconcileRequestTargetReleaseDefaultString, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseDefaultString$outboundSchema.parse( - syncReconcileRequestTargetReleaseDefaultString, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseDefaultUnion$Outbound = - | SyncReconcileRequestTargetReleaseDefaultString$Outbound - | SyncReconcileRequestTargetReleaseDefaultNumber$Outbound - | SyncReconcileRequestTargetReleaseDefaultBoolean$Outbound - | SyncReconcileRequestTargetReleaseDefaultStringList$Outbound - | any; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseDefaultUnion$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseDefaultUnion$Outbound, - SyncReconcileRequestTargetReleaseDefaultUnion - > = z.union([ - z.lazy(() => SyncReconcileRequestTargetReleaseDefaultString$outboundSchema), - z.lazy(() => SyncReconcileRequestTargetReleaseDefaultNumber$outboundSchema), - z.lazy(() => - SyncReconcileRequestTargetReleaseDefaultBoolean$outboundSchema - ), - z.lazy(() => - SyncReconcileRequestTargetReleaseDefaultStringList$outboundSchema + binding: z.lazy(() => + SyncReconcileRequestTargetReleaseOverrideGcpBinding$outboundSchema ), - z.any(), - ]); - -export function syncReconcileRequestTargetReleaseDefaultUnionToJSON( - syncReconcileRequestTargetReleaseDefaultUnion: - SyncReconcileRequestTargetReleaseDefaultUnion, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseDefaultUnion$outboundSchema.parse( - syncReconcileRequestTargetReleaseDefaultUnion, + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileRequestTargetReleaseOverrideGcpGrant$outboundSchema ), - ); -} - -/** @internal */ -export const SyncReconcileRequestTargetReleaseTypeEnvEnum$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestTargetReleaseTypeEnvEnum, - ); - -/** @internal */ -export type SyncReconcileRequestTargetReleaseTypeUnion$Outbound = string | any; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseTypeUnion$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseTypeUnion$Outbound, - SyncReconcileRequestTargetReleaseTypeUnion - > = z.union([ - SyncReconcileRequestTargetReleaseTypeEnvEnum$outboundSchema, - z.any(), - ]); + label: z.nullable(z.string()).optional(), + }); -export function syncReconcileRequestTargetReleaseTypeUnionToJSON( - syncReconcileRequestTargetReleaseTypeUnion: - SyncReconcileRequestTargetReleaseTypeUnion, +export function syncReconcileRequestTargetReleaseOverrideGcpToJSON( + syncReconcileRequestTargetReleaseOverrideGcp: + SyncReconcileRequestTargetReleaseOverrideGcp, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseTypeUnion$outboundSchema.parse( - syncReconcileRequestTargetReleaseTypeUnion, + SyncReconcileRequestTargetReleaseOverrideGcp$outboundSchema.parse( + syncReconcileRequestTargetReleaseOverrideGcp, ), ); } /** @internal */ -export type SyncReconcileRequestTargetReleaseEnv$Outbound = { - name: string; - targetResources?: Array | null | undefined; - type?: string | any | null | undefined; +export type SyncReconcileRequestTargetReleaseOverridePlatforms$Outbound = { + aws?: + | Array + | null + | undefined; + azure?: + | Array + | null + | undefined; + gcp?: + | Array + | null + | undefined; }; /** @internal */ -export const SyncReconcileRequestTargetReleaseEnv$outboundSchema: z.ZodType< - SyncReconcileRequestTargetReleaseEnv$Outbound, - SyncReconcileRequestTargetReleaseEnv -> = z.object({ - name: z.string(), - targetResources: z.nullable(z.array(z.string())).optional(), - type: z.nullable( - z.union([ - SyncReconcileRequestTargetReleaseTypeEnvEnum$outboundSchema, - z.any(), - ]), - ).optional(), -}); - -export function syncReconcileRequestTargetReleaseEnvToJSON( - syncReconcileRequestTargetReleaseEnv: SyncReconcileRequestTargetReleaseEnv, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseEnv$outboundSchema.parse( - syncReconcileRequestTargetReleaseEnv, - ), - ); -} - -/** @internal */ -export const TargetReleaseStateKind$outboundSchema: z.ZodEnum< - typeof TargetReleaseStateKind -> = z.enum(TargetReleaseStateKind); - -/** @internal */ -export const SyncReconcileRequestTargetReleasePlatform$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestTargetReleasePlatform, - ); +export const SyncReconcileRequestTargetReleaseOverridePlatforms$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseOverridePlatforms$Outbound, + SyncReconcileRequestTargetReleaseOverridePlatforms + > = z.object({ + aws: z.nullable( + z.array(z.lazy(() => + SyncReconcileRequestTargetReleaseOverrideAw$outboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + SyncReconcileRequestTargetReleaseOverrideAzure$outboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + SyncReconcileRequestTargetReleaseOverrideGcp$outboundSchema + )), + ).optional(), + }); -/** @internal */ -export const SyncReconcileRequestTargetReleaseProvidedBy$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestTargetReleaseProvidedBy, +export function syncReconcileRequestTargetReleaseOverridePlatformsToJSON( + syncReconcileRequestTargetReleaseOverridePlatforms: + SyncReconcileRequestTargetReleaseOverridePlatforms, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseOverridePlatforms$outboundSchema.parse( + syncReconcileRequestTargetReleaseOverridePlatforms, + ), ); +} /** @internal */ -export type SyncReconcileRequestTargetReleaseValidation$Outbound = { - format?: string | null | undefined; - max?: string | null | undefined; - maxItems?: number | null | undefined; - maxLength?: number | null | undefined; - min?: string | null | undefined; - minItems?: number | null | undefined; - minLength?: number | null | undefined; - pattern?: string | null | undefined; - values?: Array | null | undefined; +export type SyncReconcileRequestTargetReleaseOverride$Outbound = { + description: string; + id: string; + platforms: SyncReconcileRequestTargetReleaseOverridePlatforms$Outbound; }; /** @internal */ -export const SyncReconcileRequestTargetReleaseValidation$outboundSchema: +export const SyncReconcileRequestTargetReleaseOverride$outboundSchema: z.ZodType< - SyncReconcileRequestTargetReleaseValidation$Outbound, - SyncReconcileRequestTargetReleaseValidation + SyncReconcileRequestTargetReleaseOverride$Outbound, + SyncReconcileRequestTargetReleaseOverride > = z.object({ - format: z.nullable(z.string()).optional(), - max: z.nullable(z.string()).optional(), - maxItems: z.nullable(z.int()).optional(), - maxLength: z.nullable(z.int()).optional(), - min: z.nullable(z.string()).optional(), - minItems: z.nullable(z.int()).optional(), - minLength: z.nullable(z.int()).optional(), - pattern: z.nullable(z.string()).optional(), - values: z.nullable(z.array(z.string())).optional(), + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncReconcileRequestTargetReleaseOverridePlatforms$outboundSchema + ), }); -export function syncReconcileRequestTargetReleaseValidationToJSON( - syncReconcileRequestTargetReleaseValidation: - SyncReconcileRequestTargetReleaseValidation, +export function syncReconcileRequestTargetReleaseOverrideToJSON( + syncReconcileRequestTargetReleaseOverride: + SyncReconcileRequestTargetReleaseOverride, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseValidation$outboundSchema.parse( - syncReconcileRequestTargetReleaseValidation, + SyncReconcileRequestTargetReleaseOverride$outboundSchema.parse( + syncReconcileRequestTargetReleaseOverride, ), ); } /** @internal */ -export type SyncReconcileRequestTargetReleaseValidationUnion$Outbound = - | SyncReconcileRequestTargetReleaseValidation$Outbound - | any; +export type SyncReconcileRequestTargetReleaseOverrideUnion$Outbound = + | SyncReconcileRequestTargetReleaseOverride$Outbound + | string; /** @internal */ -export const SyncReconcileRequestTargetReleaseValidationUnion$outboundSchema: +export const SyncReconcileRequestTargetReleaseOverrideUnion$outboundSchema: z.ZodType< - SyncReconcileRequestTargetReleaseValidationUnion$Outbound, - SyncReconcileRequestTargetReleaseValidationUnion + SyncReconcileRequestTargetReleaseOverrideUnion$Outbound, + SyncReconcileRequestTargetReleaseOverrideUnion > = z.union([ - z.lazy(() => SyncReconcileRequestTargetReleaseValidation$outboundSchema), - z.any(), + z.lazy(() => SyncReconcileRequestTargetReleaseOverride$outboundSchema), + z.string(), ]); -export function syncReconcileRequestTargetReleaseValidationUnionToJSON( - syncReconcileRequestTargetReleaseValidationUnion: - SyncReconcileRequestTargetReleaseValidationUnion, +export function syncReconcileRequestTargetReleaseOverrideUnionToJSON( + syncReconcileRequestTargetReleaseOverrideUnion: + SyncReconcileRequestTargetReleaseOverrideUnion, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseValidationUnion$outboundSchema.parse( - syncReconcileRequestTargetReleaseValidationUnion, + SyncReconcileRequestTargetReleaseOverrideUnion$outboundSchema.parse( + syncReconcileRequestTargetReleaseOverrideUnion, ), ); } /** @internal */ -export type SyncReconcileRequestTargetReleaseInput$Outbound = { - default?: - | SyncReconcileRequestTargetReleaseDefaultString$Outbound - | SyncReconcileRequestTargetReleaseDefaultNumber$Outbound - | SyncReconcileRequestTargetReleaseDefaultBoolean$Outbound - | SyncReconcileRequestTargetReleaseDefaultStringList$Outbound - | any - | null - | undefined; - description: string; - env?: Array | undefined; - id: string; - kind: string; - label: string; - placeholder?: string | null | undefined; - platforms?: Array | null | undefined; - providedBy: Array; - required: boolean; - validation?: - | SyncReconcileRequestTargetReleaseValidation$Outbound - | any - | null - | undefined; +export type SyncReconcileRequestTargetReleaseManagement2$Outbound = { + override: { + [k: string]: Array< + SyncReconcileRequestTargetReleaseOverride$Outbound | string + >; + }; }; /** @internal */ -export const SyncReconcileRequestTargetReleaseInput$outboundSchema: z.ZodType< - SyncReconcileRequestTargetReleaseInput$Outbound, - SyncReconcileRequestTargetReleaseInput -> = z.object({ - default: z.nullable( - z.union([ - z.lazy(() => - SyncReconcileRequestTargetReleaseDefaultString$outboundSchema - ), - z.lazy(() => - SyncReconcileRequestTargetReleaseDefaultNumber$outboundSchema - ), - z.lazy(() => - SyncReconcileRequestTargetReleaseDefaultBoolean$outboundSchema - ), - z.lazy(() => - SyncReconcileRequestTargetReleaseDefaultStringList$outboundSchema - ), - z.any(), - ]), - ).optional(), - description: z.string(), - env: z.array( - z.lazy(() => SyncReconcileRequestTargetReleaseEnv$outboundSchema), - ).optional(), - id: z.string(), - kind: TargetReleaseStateKind$outboundSchema, - label: z.string(), - placeholder: z.nullable(z.string()).optional(), - platforms: z.nullable( - z.array(SyncReconcileRequestTargetReleasePlatform$outboundSchema), - ).optional(), - providedBy: z.array( - SyncReconcileRequestTargetReleaseProvidedBy$outboundSchema, - ), - required: z.boolean(), - validation: z.nullable( - z.union([ - z.lazy(() => SyncReconcileRequestTargetReleaseValidation$outboundSchema), - z.any(), - ]), - ).optional(), -}); +export const SyncReconcileRequestTargetReleaseManagement2$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseManagement2$Outbound, + SyncReconcileRequestTargetReleaseManagement2 + > = z.object({ + override: z.record( + z.string(), + z.array(z.union([ + z.lazy(() => SyncReconcileRequestTargetReleaseOverride$outboundSchema), + z.string(), + ])), + ), + }); -export function syncReconcileRequestTargetReleaseInputToJSON( - syncReconcileRequestTargetReleaseInput: - SyncReconcileRequestTargetReleaseInput, +export function syncReconcileRequestTargetReleaseManagement2ToJSON( + syncReconcileRequestTargetReleaseManagement2: + SyncReconcileRequestTargetReleaseManagement2, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseInput$outboundSchema.parse( - syncReconcileRequestTargetReleaseInput, + SyncReconcileRequestTargetReleaseManagement2$outboundSchema.parse( + syncReconcileRequestTargetReleaseManagement2, ), ); } /** @internal */ -export const SyncReconcileRequestTargetReleaseManagementEnum$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestTargetReleaseManagementEnum, - ); - -/** @internal */ -export type TargetReleaseOverrideStateAwResource$Outbound = { +export type TargetReleaseExtendStateAwResource$Outbound = { condition?: { [k: string]: { [k: string]: string } } | null | undefined; resources: Array; }; /** @internal */ -export const TargetReleaseOverrideStateAwResource$outboundSchema: z.ZodType< - TargetReleaseOverrideStateAwResource$Outbound, - TargetReleaseOverrideStateAwResource +export const TargetReleaseExtendStateAwResource$outboundSchema: z.ZodType< + TargetReleaseExtendStateAwResource$Outbound, + TargetReleaseExtendStateAwResource > = z.object({ condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) .optional(), resources: z.array(z.string()), }); -export function targetReleaseOverrideStateAwResourceToJSON( - targetReleaseOverrideStateAwResource: TargetReleaseOverrideStateAwResource, +export function targetReleaseExtendStateAwResourceToJSON( + targetReleaseExtendStateAwResource: TargetReleaseExtendStateAwResource, ): string { return JSON.stringify( - TargetReleaseOverrideStateAwResource$outboundSchema.parse( - targetReleaseOverrideStateAwResource, + TargetReleaseExtendStateAwResource$outboundSchema.parse( + targetReleaseExtendStateAwResource, ), ); } /** @internal */ -export type SyncReconcileRequestTargetReleaseOverrideAwStack$Outbound = { +export type SyncReconcileRequestTargetReleaseExtendAwStack$Outbound = { condition?: { [k: string]: { [k: string]: string } } | null | undefined; resources: Array; }; /** @internal */ -export const SyncReconcileRequestTargetReleaseOverrideAwStack$outboundSchema: +export const SyncReconcileRequestTargetReleaseExtendAwStack$outboundSchema: z.ZodType< - SyncReconcileRequestTargetReleaseOverrideAwStack$Outbound, - SyncReconcileRequestTargetReleaseOverrideAwStack + SyncReconcileRequestTargetReleaseExtendAwStack$Outbound, + SyncReconcileRequestTargetReleaseExtendAwStack > = z.object({ condition: z.nullable( z.record(z.string(), z.record(z.string(), z.string())), @@ -19336,55 +25502,55 @@ export const SyncReconcileRequestTargetReleaseOverrideAwStack$outboundSchema: resources: z.array(z.string()), }); -export function syncReconcileRequestTargetReleaseOverrideAwStackToJSON( - syncReconcileRequestTargetReleaseOverrideAwStack: - SyncReconcileRequestTargetReleaseOverrideAwStack, +export function syncReconcileRequestTargetReleaseExtendAwStackToJSON( + syncReconcileRequestTargetReleaseExtendAwStack: + SyncReconcileRequestTargetReleaseExtendAwStack, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseOverrideAwStack$outboundSchema.parse( - syncReconcileRequestTargetReleaseOverrideAwStack, + SyncReconcileRequestTargetReleaseExtendAwStack$outboundSchema.parse( + syncReconcileRequestTargetReleaseExtendAwStack, ), ); } /** @internal */ -export type SyncReconcileRequestTargetReleaseOverrideAwBinding$Outbound = { - resource?: TargetReleaseOverrideStateAwResource$Outbound | undefined; - stack?: SyncReconcileRequestTargetReleaseOverrideAwStack$Outbound | undefined; +export type SyncReconcileRequestTargetReleaseExtendAwBinding$Outbound = { + resource?: TargetReleaseExtendStateAwResource$Outbound | undefined; + stack?: SyncReconcileRequestTargetReleaseExtendAwStack$Outbound | undefined; }; /** @internal */ -export const SyncReconcileRequestTargetReleaseOverrideAwBinding$outboundSchema: +export const SyncReconcileRequestTargetReleaseExtendAwBinding$outboundSchema: z.ZodType< - SyncReconcileRequestTargetReleaseOverrideAwBinding$Outbound, - SyncReconcileRequestTargetReleaseOverrideAwBinding + SyncReconcileRequestTargetReleaseExtendAwBinding$Outbound, + SyncReconcileRequestTargetReleaseExtendAwBinding > = z.object({ - resource: z.lazy(() => TargetReleaseOverrideStateAwResource$outboundSchema) + resource: z.lazy(() => TargetReleaseExtendStateAwResource$outboundSchema) .optional(), stack: z.lazy(() => - SyncReconcileRequestTargetReleaseOverrideAwStack$outboundSchema + SyncReconcileRequestTargetReleaseExtendAwStack$outboundSchema ).optional(), }); -export function syncReconcileRequestTargetReleaseOverrideAwBindingToJSON( - syncReconcileRequestTargetReleaseOverrideAwBinding: - SyncReconcileRequestTargetReleaseOverrideAwBinding, +export function syncReconcileRequestTargetReleaseExtendAwBindingToJSON( + syncReconcileRequestTargetReleaseExtendAwBinding: + SyncReconcileRequestTargetReleaseExtendAwBinding, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseOverrideAwBinding$outboundSchema.parse( - syncReconcileRequestTargetReleaseOverrideAwBinding, + SyncReconcileRequestTargetReleaseExtendAwBinding$outboundSchema.parse( + syncReconcileRequestTargetReleaseExtendAwBinding, ), ); } /** @internal */ -export const SyncReconcileRequestTargetReleaseOverrideEffect$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestTargetReleaseOverrideEffect, +export const SyncReconcileRequestTargetReleaseExtendEffect$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestTargetReleaseExtendEffect, ); /** @internal */ -export type SyncReconcileRequestTargetReleaseOverrideAwGrant$Outbound = { +export type SyncReconcileRequestTargetReleaseExtendAwGrant$Outbound = { actions?: Array | null | undefined; dataActions?: Array | null | undefined; permissions?: Array | null | undefined; @@ -19393,10 +25559,10 @@ export type SyncReconcileRequestTargetReleaseOverrideAwGrant$Outbound = { }; /** @internal */ -export const SyncReconcileRequestTargetReleaseOverrideAwGrant$outboundSchema: +export const SyncReconcileRequestTargetReleaseExtendAwGrant$outboundSchema: z.ZodType< - SyncReconcileRequestTargetReleaseOverrideAwGrant$Outbound, - SyncReconcileRequestTargetReleaseOverrideAwGrant + SyncReconcileRequestTargetReleaseExtendAwGrant$Outbound, + SyncReconcileRequestTargetReleaseExtendAwGrant > = z.object({ actions: z.nullable(z.array(z.string())).optional(), dataActions: z.nullable(z.array(z.string())).optional(), @@ -19405,139 +25571,137 @@ export const SyncReconcileRequestTargetReleaseOverrideAwGrant$outboundSchema: residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function syncReconcileRequestTargetReleaseOverrideAwGrantToJSON( - syncReconcileRequestTargetReleaseOverrideAwGrant: - SyncReconcileRequestTargetReleaseOverrideAwGrant, +export function syncReconcileRequestTargetReleaseExtendAwGrantToJSON( + syncReconcileRequestTargetReleaseExtendAwGrant: + SyncReconcileRequestTargetReleaseExtendAwGrant, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseOverrideAwGrant$outboundSchema.parse( - syncReconcileRequestTargetReleaseOverrideAwGrant, + SyncReconcileRequestTargetReleaseExtendAwGrant$outboundSchema.parse( + syncReconcileRequestTargetReleaseExtendAwGrant, ), ); } /** @internal */ -export type SyncReconcileRequestTargetReleaseOverrideAw$Outbound = { - binding: SyncReconcileRequestTargetReleaseOverrideAwBinding$Outbound; +export type SyncReconcileRequestTargetReleaseExtendAw$Outbound = { + binding: SyncReconcileRequestTargetReleaseExtendAwBinding$Outbound; description?: string | null | undefined; effect?: string | undefined; - grant: SyncReconcileRequestTargetReleaseOverrideAwGrant$Outbound; + grant: SyncReconcileRequestTargetReleaseExtendAwGrant$Outbound; label?: string | null | undefined; }; /** @internal */ -export const SyncReconcileRequestTargetReleaseOverrideAw$outboundSchema: +export const SyncReconcileRequestTargetReleaseExtendAw$outboundSchema: z.ZodType< - SyncReconcileRequestTargetReleaseOverrideAw$Outbound, - SyncReconcileRequestTargetReleaseOverrideAw + SyncReconcileRequestTargetReleaseExtendAw$Outbound, + SyncReconcileRequestTargetReleaseExtendAw > = z.object({ binding: z.lazy(() => - SyncReconcileRequestTargetReleaseOverrideAwBinding$outboundSchema + SyncReconcileRequestTargetReleaseExtendAwBinding$outboundSchema ), description: z.nullable(z.string()).optional(), - effect: SyncReconcileRequestTargetReleaseOverrideEffect$outboundSchema + effect: SyncReconcileRequestTargetReleaseExtendEffect$outboundSchema .optional(), grant: z.lazy(() => - SyncReconcileRequestTargetReleaseOverrideAwGrant$outboundSchema + SyncReconcileRequestTargetReleaseExtendAwGrant$outboundSchema ), label: z.nullable(z.string()).optional(), }); -export function syncReconcileRequestTargetReleaseOverrideAwToJSON( - syncReconcileRequestTargetReleaseOverrideAw: - SyncReconcileRequestTargetReleaseOverrideAw, +export function syncReconcileRequestTargetReleaseExtendAwToJSON( + syncReconcileRequestTargetReleaseExtendAw: + SyncReconcileRequestTargetReleaseExtendAw, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseOverrideAw$outboundSchema.parse( - syncReconcileRequestTargetReleaseOverrideAw, + SyncReconcileRequestTargetReleaseExtendAw$outboundSchema.parse( + syncReconcileRequestTargetReleaseExtendAw, ), ); } /** @internal */ -export type TargetReleaseOverrideStateAzureResource$Outbound = { +export type TargetReleaseExtendStateAzureResource$Outbound = { scope: string; }; /** @internal */ -export const TargetReleaseOverrideStateAzureResource$outboundSchema: z.ZodType< - TargetReleaseOverrideStateAzureResource$Outbound, - TargetReleaseOverrideStateAzureResource +export const TargetReleaseExtendStateAzureResource$outboundSchema: z.ZodType< + TargetReleaseExtendStateAzureResource$Outbound, + TargetReleaseExtendStateAzureResource > = z.object({ scope: z.string(), }); -export function targetReleaseOverrideStateAzureResourceToJSON( - targetReleaseOverrideStateAzureResource: - TargetReleaseOverrideStateAzureResource, +export function targetReleaseExtendStateAzureResourceToJSON( + targetReleaseExtendStateAzureResource: TargetReleaseExtendStateAzureResource, ): string { return JSON.stringify( - TargetReleaseOverrideStateAzureResource$outboundSchema.parse( - targetReleaseOverrideStateAzureResource, + TargetReleaseExtendStateAzureResource$outboundSchema.parse( + targetReleaseExtendStateAzureResource, ), ); } /** @internal */ -export type SyncReconcileRequestTargetReleaseOverrideAzureStack$Outbound = { +export type SyncReconcileRequestTargetReleaseExtendAzureStack$Outbound = { scope: string; }; /** @internal */ -export const SyncReconcileRequestTargetReleaseOverrideAzureStack$outboundSchema: +export const SyncReconcileRequestTargetReleaseExtendAzureStack$outboundSchema: z.ZodType< - SyncReconcileRequestTargetReleaseOverrideAzureStack$Outbound, - SyncReconcileRequestTargetReleaseOverrideAzureStack + SyncReconcileRequestTargetReleaseExtendAzureStack$Outbound, + SyncReconcileRequestTargetReleaseExtendAzureStack > = z.object({ scope: z.string(), }); -export function syncReconcileRequestTargetReleaseOverrideAzureStackToJSON( - syncReconcileRequestTargetReleaseOverrideAzureStack: - SyncReconcileRequestTargetReleaseOverrideAzureStack, +export function syncReconcileRequestTargetReleaseExtendAzureStackToJSON( + syncReconcileRequestTargetReleaseExtendAzureStack: + SyncReconcileRequestTargetReleaseExtendAzureStack, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseOverrideAzureStack$outboundSchema.parse( - syncReconcileRequestTargetReleaseOverrideAzureStack, + SyncReconcileRequestTargetReleaseExtendAzureStack$outboundSchema.parse( + syncReconcileRequestTargetReleaseExtendAzureStack, ), ); } /** @internal */ -export type SyncReconcileRequestTargetReleaseOverrideAzureBinding$Outbound = { - resource?: TargetReleaseOverrideStateAzureResource$Outbound | undefined; +export type SyncReconcileRequestTargetReleaseExtendAzureBinding$Outbound = { + resource?: TargetReleaseExtendStateAzureResource$Outbound | undefined; stack?: - | SyncReconcileRequestTargetReleaseOverrideAzureStack$Outbound + | SyncReconcileRequestTargetReleaseExtendAzureStack$Outbound | undefined; }; /** @internal */ -export const SyncReconcileRequestTargetReleaseOverrideAzureBinding$outboundSchema: +export const SyncReconcileRequestTargetReleaseExtendAzureBinding$outboundSchema: z.ZodType< - SyncReconcileRequestTargetReleaseOverrideAzureBinding$Outbound, - SyncReconcileRequestTargetReleaseOverrideAzureBinding + SyncReconcileRequestTargetReleaseExtendAzureBinding$Outbound, + SyncReconcileRequestTargetReleaseExtendAzureBinding > = z.object({ - resource: z.lazy(() => - TargetReleaseOverrideStateAzureResource$outboundSchema - ).optional(), + resource: z.lazy(() => TargetReleaseExtendStateAzureResource$outboundSchema) + .optional(), stack: z.lazy(() => - SyncReconcileRequestTargetReleaseOverrideAzureStack$outboundSchema + SyncReconcileRequestTargetReleaseExtendAzureStack$outboundSchema ).optional(), }); -export function syncReconcileRequestTargetReleaseOverrideAzureBindingToJSON( - syncReconcileRequestTargetReleaseOverrideAzureBinding: - SyncReconcileRequestTargetReleaseOverrideAzureBinding, +export function syncReconcileRequestTargetReleaseExtendAzureBindingToJSON( + syncReconcileRequestTargetReleaseExtendAzureBinding: + SyncReconcileRequestTargetReleaseExtendAzureBinding, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseOverrideAzureBinding$outboundSchema.parse( - syncReconcileRequestTargetReleaseOverrideAzureBinding, + SyncReconcileRequestTargetReleaseExtendAzureBinding$outboundSchema.parse( + syncReconcileRequestTargetReleaseExtendAzureBinding, ), ); } /** @internal */ -export type SyncReconcileRequestTargetReleaseOverrideAzureGrant$Outbound = { +export type SyncReconcileRequestTargetReleaseExtendAzureGrant$Outbound = { actions?: Array | null | undefined; dataActions?: Array | null | undefined; permissions?: Array | null | undefined; @@ -19546,10 +25710,10 @@ export type SyncReconcileRequestTargetReleaseOverrideAzureGrant$Outbound = { }; /** @internal */ -export const SyncReconcileRequestTargetReleaseOverrideAzureGrant$outboundSchema: +export const SyncReconcileRequestTargetReleaseExtendAzureGrant$outboundSchema: z.ZodType< - SyncReconcileRequestTargetReleaseOverrideAzureGrant$Outbound, - SyncReconcileRequestTargetReleaseOverrideAzureGrant + SyncReconcileRequestTargetReleaseExtendAzureGrant$Outbound, + SyncReconcileRequestTargetReleaseExtendAzureGrant > = z.object({ actions: z.nullable(z.array(z.string())).optional(), dataActions: z.nullable(z.array(z.string())).optional(), @@ -19558,109 +25722,109 @@ export const SyncReconcileRequestTargetReleaseOverrideAzureGrant$outboundSchema: residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function syncReconcileRequestTargetReleaseOverrideAzureGrantToJSON( - syncReconcileRequestTargetReleaseOverrideAzureGrant: - SyncReconcileRequestTargetReleaseOverrideAzureGrant, +export function syncReconcileRequestTargetReleaseExtendAzureGrantToJSON( + syncReconcileRequestTargetReleaseExtendAzureGrant: + SyncReconcileRequestTargetReleaseExtendAzureGrant, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseOverrideAzureGrant$outboundSchema.parse( - syncReconcileRequestTargetReleaseOverrideAzureGrant, + SyncReconcileRequestTargetReleaseExtendAzureGrant$outboundSchema.parse( + syncReconcileRequestTargetReleaseExtendAzureGrant, ), ); } /** @internal */ -export type SyncReconcileRequestTargetReleaseOverrideAzure$Outbound = { - binding: SyncReconcileRequestTargetReleaseOverrideAzureBinding$Outbound; +export type SyncReconcileRequestTargetReleaseExtendAzure$Outbound = { + binding: SyncReconcileRequestTargetReleaseExtendAzureBinding$Outbound; description?: string | null | undefined; - grant: SyncReconcileRequestTargetReleaseOverrideAzureGrant$Outbound; + grant: SyncReconcileRequestTargetReleaseExtendAzureGrant$Outbound; label?: string | null | undefined; }; /** @internal */ -export const SyncReconcileRequestTargetReleaseOverrideAzure$outboundSchema: +export const SyncReconcileRequestTargetReleaseExtendAzure$outboundSchema: z.ZodType< - SyncReconcileRequestTargetReleaseOverrideAzure$Outbound, - SyncReconcileRequestTargetReleaseOverrideAzure + SyncReconcileRequestTargetReleaseExtendAzure$Outbound, + SyncReconcileRequestTargetReleaseExtendAzure > = z.object({ binding: z.lazy(() => - SyncReconcileRequestTargetReleaseOverrideAzureBinding$outboundSchema + SyncReconcileRequestTargetReleaseExtendAzureBinding$outboundSchema ), description: z.nullable(z.string()).optional(), grant: z.lazy(() => - SyncReconcileRequestTargetReleaseOverrideAzureGrant$outboundSchema + SyncReconcileRequestTargetReleaseExtendAzureGrant$outboundSchema ), label: z.nullable(z.string()).optional(), }); -export function syncReconcileRequestTargetReleaseOverrideAzureToJSON( - syncReconcileRequestTargetReleaseOverrideAzure: - SyncReconcileRequestTargetReleaseOverrideAzure, +export function syncReconcileRequestTargetReleaseExtendAzureToJSON( + syncReconcileRequestTargetReleaseExtendAzure: + SyncReconcileRequestTargetReleaseExtendAzure, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseOverrideAzure$outboundSchema.parse( - syncReconcileRequestTargetReleaseOverrideAzure, + SyncReconcileRequestTargetReleaseExtendAzure$outboundSchema.parse( + syncReconcileRequestTargetReleaseExtendAzure, ), ); } /** @internal */ -export type TargetReleaseOverrideConditionStateResource$Outbound = { +export type TargetReleaseExtendConditionStateResource$Outbound = { expression: string; title: string; }; /** @internal */ -export const TargetReleaseOverrideConditionStateResource$outboundSchema: +export const TargetReleaseExtendConditionStateResource$outboundSchema: z.ZodType< - TargetReleaseOverrideConditionStateResource$Outbound, - TargetReleaseOverrideConditionStateResource + TargetReleaseExtendConditionStateResource$Outbound, + TargetReleaseExtendConditionStateResource > = z.object({ expression: z.string(), title: z.string(), }); -export function targetReleaseOverrideConditionStateResourceToJSON( - targetReleaseOverrideConditionStateResource: - TargetReleaseOverrideConditionStateResource, +export function targetReleaseExtendConditionStateResourceToJSON( + targetReleaseExtendConditionStateResource: + TargetReleaseExtendConditionStateResource, ): string { return JSON.stringify( - TargetReleaseOverrideConditionStateResource$outboundSchema.parse( - targetReleaseOverrideConditionStateResource, + TargetReleaseExtendConditionStateResource$outboundSchema.parse( + targetReleaseExtendConditionStateResource, ), ); } /** @internal */ -export type TargetReleaseOverrideStateResourceConditionUnion$Outbound = - | TargetReleaseOverrideConditionStateResource$Outbound +export type TargetReleaseExtendStateResourceConditionUnion$Outbound = + | TargetReleaseExtendConditionStateResource$Outbound | any; /** @internal */ -export const TargetReleaseOverrideStateResourceConditionUnion$outboundSchema: +export const TargetReleaseExtendStateResourceConditionUnion$outboundSchema: z.ZodType< - TargetReleaseOverrideStateResourceConditionUnion$Outbound, - TargetReleaseOverrideStateResourceConditionUnion + TargetReleaseExtendStateResourceConditionUnion$Outbound, + TargetReleaseExtendStateResourceConditionUnion > = z.union([ - z.lazy(() => TargetReleaseOverrideConditionStateResource$outboundSchema), + z.lazy(() => TargetReleaseExtendConditionStateResource$outboundSchema), z.any(), ]); -export function targetReleaseOverrideStateResourceConditionUnionToJSON( - targetReleaseOverrideStateResourceConditionUnion: - TargetReleaseOverrideStateResourceConditionUnion, +export function targetReleaseExtendStateResourceConditionUnionToJSON( + targetReleaseExtendStateResourceConditionUnion: + TargetReleaseExtendStateResourceConditionUnion, ): string { return JSON.stringify( - TargetReleaseOverrideStateResourceConditionUnion$outboundSchema.parse( - targetReleaseOverrideStateResourceConditionUnion, + TargetReleaseExtendStateResourceConditionUnion$outboundSchema.parse( + targetReleaseExtendStateResourceConditionUnion, ), ); } /** @internal */ -export type TargetReleaseOverrideStateGcpResource$Outbound = { +export type TargetReleaseExtendStateGcpResource$Outbound = { condition?: - | TargetReleaseOverrideConditionStateResource$Outbound + | TargetReleaseExtendConditionStateResource$Outbound | any | null | undefined; @@ -19668,83 +25832,83 @@ export type TargetReleaseOverrideStateGcpResource$Outbound = { }; /** @internal */ -export const TargetReleaseOverrideStateGcpResource$outboundSchema: z.ZodType< - TargetReleaseOverrideStateGcpResource$Outbound, - TargetReleaseOverrideStateGcpResource +export const TargetReleaseExtendStateGcpResource$outboundSchema: z.ZodType< + TargetReleaseExtendStateGcpResource$Outbound, + TargetReleaseExtendStateGcpResource > = z.object({ condition: z.nullable( z.union([ - z.lazy(() => TargetReleaseOverrideConditionStateResource$outboundSchema), + z.lazy(() => TargetReleaseExtendConditionStateResource$outboundSchema), z.any(), ]), ).optional(), scope: z.string(), }); -export function targetReleaseOverrideStateGcpResourceToJSON( - targetReleaseOverrideStateGcpResource: TargetReleaseOverrideStateGcpResource, +export function targetReleaseExtendStateGcpResourceToJSON( + targetReleaseExtendStateGcpResource: TargetReleaseExtendStateGcpResource, ): string { return JSON.stringify( - TargetReleaseOverrideStateGcpResource$outboundSchema.parse( - targetReleaseOverrideStateGcpResource, + TargetReleaseExtendStateGcpResource$outboundSchema.parse( + targetReleaseExtendStateGcpResource, ), ); } /** @internal */ -export type TargetReleaseOverrideConditionState$Outbound = { +export type TargetReleaseExtendConditionState$Outbound = { expression: string; title: string; }; /** @internal */ -export const TargetReleaseOverrideConditionState$outboundSchema: z.ZodType< - TargetReleaseOverrideConditionState$Outbound, - TargetReleaseOverrideConditionState +export const TargetReleaseExtendConditionState$outboundSchema: z.ZodType< + TargetReleaseExtendConditionState$Outbound, + TargetReleaseExtendConditionState > = z.object({ expression: z.string(), title: z.string(), }); -export function targetReleaseOverrideConditionStateToJSON( - targetReleaseOverrideConditionState: TargetReleaseOverrideConditionState, +export function targetReleaseExtendConditionStateToJSON( + targetReleaseExtendConditionState: TargetReleaseExtendConditionState, ): string { return JSON.stringify( - TargetReleaseOverrideConditionState$outboundSchema.parse( - targetReleaseOverrideConditionState, + TargetReleaseExtendConditionState$outboundSchema.parse( + targetReleaseExtendConditionState, ), ); } /** @internal */ -export type TargetReleaseOverrideStateConditionUnion$Outbound = - | TargetReleaseOverrideConditionState$Outbound +export type TargetReleaseExtendStateConditionUnion$Outbound = + | TargetReleaseExtendConditionState$Outbound | any; /** @internal */ -export const TargetReleaseOverrideStateConditionUnion$outboundSchema: z.ZodType< - TargetReleaseOverrideStateConditionUnion$Outbound, - TargetReleaseOverrideStateConditionUnion +export const TargetReleaseExtendStateConditionUnion$outboundSchema: z.ZodType< + TargetReleaseExtendStateConditionUnion$Outbound, + TargetReleaseExtendStateConditionUnion > = z.union([ - z.lazy(() => TargetReleaseOverrideConditionState$outboundSchema), + z.lazy(() => TargetReleaseExtendConditionState$outboundSchema), z.any(), ]); -export function targetReleaseOverrideStateConditionUnionToJSON( - targetReleaseOverrideStateConditionUnion: - TargetReleaseOverrideStateConditionUnion, +export function targetReleaseExtendStateConditionUnionToJSON( + targetReleaseExtendStateConditionUnion: + TargetReleaseExtendStateConditionUnion, ): string { return JSON.stringify( - TargetReleaseOverrideStateConditionUnion$outboundSchema.parse( - targetReleaseOverrideStateConditionUnion, + TargetReleaseExtendStateConditionUnion$outboundSchema.parse( + targetReleaseExtendStateConditionUnion, ), ); } /** @internal */ -export type SyncReconcileRequestTargetReleaseOverrideGcpStack$Outbound = { +export type SyncReconcileRequestTargetReleaseExtendGcpStack$Outbound = { condition?: - | TargetReleaseOverrideConditionState$Outbound + | TargetReleaseExtendConditionState$Outbound | any | null | undefined; @@ -19752,65 +25916,63 @@ export type SyncReconcileRequestTargetReleaseOverrideGcpStack$Outbound = { }; /** @internal */ -export const SyncReconcileRequestTargetReleaseOverrideGcpStack$outboundSchema: +export const SyncReconcileRequestTargetReleaseExtendGcpStack$outboundSchema: z.ZodType< - SyncReconcileRequestTargetReleaseOverrideGcpStack$Outbound, - SyncReconcileRequestTargetReleaseOverrideGcpStack + SyncReconcileRequestTargetReleaseExtendGcpStack$Outbound, + SyncReconcileRequestTargetReleaseExtendGcpStack > = z.object({ condition: z.nullable( z.union([ - z.lazy(() => TargetReleaseOverrideConditionState$outboundSchema), + z.lazy(() => TargetReleaseExtendConditionState$outboundSchema), z.any(), ]), ).optional(), scope: z.string(), }); -export function syncReconcileRequestTargetReleaseOverrideGcpStackToJSON( - syncReconcileRequestTargetReleaseOverrideGcpStack: - SyncReconcileRequestTargetReleaseOverrideGcpStack, +export function syncReconcileRequestTargetReleaseExtendGcpStackToJSON( + syncReconcileRequestTargetReleaseExtendGcpStack: + SyncReconcileRequestTargetReleaseExtendGcpStack, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseOverrideGcpStack$outboundSchema.parse( - syncReconcileRequestTargetReleaseOverrideGcpStack, + SyncReconcileRequestTargetReleaseExtendGcpStack$outboundSchema.parse( + syncReconcileRequestTargetReleaseExtendGcpStack, ), ); } /** @internal */ -export type SyncReconcileRequestTargetReleaseOverrideGcpBinding$Outbound = { - resource?: TargetReleaseOverrideStateGcpResource$Outbound | undefined; - stack?: - | SyncReconcileRequestTargetReleaseOverrideGcpStack$Outbound - | undefined; +export type SyncReconcileRequestTargetReleaseExtendGcpBinding$Outbound = { + resource?: TargetReleaseExtendStateGcpResource$Outbound | undefined; + stack?: SyncReconcileRequestTargetReleaseExtendGcpStack$Outbound | undefined; }; /** @internal */ -export const SyncReconcileRequestTargetReleaseOverrideGcpBinding$outboundSchema: +export const SyncReconcileRequestTargetReleaseExtendGcpBinding$outboundSchema: z.ZodType< - SyncReconcileRequestTargetReleaseOverrideGcpBinding$Outbound, - SyncReconcileRequestTargetReleaseOverrideGcpBinding + SyncReconcileRequestTargetReleaseExtendGcpBinding$Outbound, + SyncReconcileRequestTargetReleaseExtendGcpBinding > = z.object({ - resource: z.lazy(() => TargetReleaseOverrideStateGcpResource$outboundSchema) + resource: z.lazy(() => TargetReleaseExtendStateGcpResource$outboundSchema) .optional(), stack: z.lazy(() => - SyncReconcileRequestTargetReleaseOverrideGcpStack$outboundSchema + SyncReconcileRequestTargetReleaseExtendGcpStack$outboundSchema ).optional(), }); -export function syncReconcileRequestTargetReleaseOverrideGcpBindingToJSON( - syncReconcileRequestTargetReleaseOverrideGcpBinding: - SyncReconcileRequestTargetReleaseOverrideGcpBinding, +export function syncReconcileRequestTargetReleaseExtendGcpBindingToJSON( + syncReconcileRequestTargetReleaseExtendGcpBinding: + SyncReconcileRequestTargetReleaseExtendGcpBinding, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseOverrideGcpBinding$outboundSchema.parse( - syncReconcileRequestTargetReleaseOverrideGcpBinding, + SyncReconcileRequestTargetReleaseExtendGcpBinding$outboundSchema.parse( + syncReconcileRequestTargetReleaseExtendGcpBinding, ), ); } /** @internal */ -export type SyncReconcileRequestTargetReleaseOverrideGcpGrant$Outbound = { +export type SyncReconcileRequestTargetReleaseExtendGcpGrant$Outbound = { actions?: Array | null | undefined; dataActions?: Array | null | undefined; permissions?: Array | null | undefined; @@ -19819,10 +25981,10 @@ export type SyncReconcileRequestTargetReleaseOverrideGcpGrant$Outbound = { }; /** @internal */ -export const SyncReconcileRequestTargetReleaseOverrideGcpGrant$outboundSchema: +export const SyncReconcileRequestTargetReleaseExtendGcpGrant$outboundSchema: z.ZodType< - SyncReconcileRequestTargetReleaseOverrideGcpGrant$Outbound, - SyncReconcileRequestTargetReleaseOverrideGcpGrant + SyncReconcileRequestTargetReleaseExtendGcpGrant$Outbound, + SyncReconcileRequestTargetReleaseExtendGcpGrant > = z.object({ actions: z.nullable(z.array(z.string())).optional(), dataActions: z.nullable(z.array(z.string())).optional(), @@ -19831,231 +25993,258 @@ export const SyncReconcileRequestTargetReleaseOverrideGcpGrant$outboundSchema: residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function syncReconcileRequestTargetReleaseOverrideGcpGrantToJSON( - syncReconcileRequestTargetReleaseOverrideGcpGrant: - SyncReconcileRequestTargetReleaseOverrideGcpGrant, +export function syncReconcileRequestTargetReleaseExtendGcpGrantToJSON( + syncReconcileRequestTargetReleaseExtendGcpGrant: + SyncReconcileRequestTargetReleaseExtendGcpGrant, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseOverrideGcpGrant$outboundSchema.parse( - syncReconcileRequestTargetReleaseOverrideGcpGrant, + SyncReconcileRequestTargetReleaseExtendGcpGrant$outboundSchema.parse( + syncReconcileRequestTargetReleaseExtendGcpGrant, ), ); } /** @internal */ -export type SyncReconcileRequestTargetReleaseOverrideGcp$Outbound = { - binding: SyncReconcileRequestTargetReleaseOverrideGcpBinding$Outbound; +export type SyncReconcileRequestTargetReleaseExtendGcp$Outbound = { + binding: SyncReconcileRequestTargetReleaseExtendGcpBinding$Outbound; description?: string | null | undefined; - grant: SyncReconcileRequestTargetReleaseOverrideGcpGrant$Outbound; + grant: SyncReconcileRequestTargetReleaseExtendGcpGrant$Outbound; label?: string | null | undefined; }; /** @internal */ -export const SyncReconcileRequestTargetReleaseOverrideGcp$outboundSchema: +export const SyncReconcileRequestTargetReleaseExtendGcp$outboundSchema: z.ZodType< - SyncReconcileRequestTargetReleaseOverrideGcp$Outbound, - SyncReconcileRequestTargetReleaseOverrideGcp + SyncReconcileRequestTargetReleaseExtendGcp$Outbound, + SyncReconcileRequestTargetReleaseExtendGcp > = z.object({ binding: z.lazy(() => - SyncReconcileRequestTargetReleaseOverrideGcpBinding$outboundSchema + SyncReconcileRequestTargetReleaseExtendGcpBinding$outboundSchema ), description: z.nullable(z.string()).optional(), grant: z.lazy(() => - SyncReconcileRequestTargetReleaseOverrideGcpGrant$outboundSchema + SyncReconcileRequestTargetReleaseExtendGcpGrant$outboundSchema ), label: z.nullable(z.string()).optional(), }); -export function syncReconcileRequestTargetReleaseOverrideGcpToJSON( - syncReconcileRequestTargetReleaseOverrideGcp: - SyncReconcileRequestTargetReleaseOverrideGcp, +export function syncReconcileRequestTargetReleaseExtendGcpToJSON( + syncReconcileRequestTargetReleaseExtendGcp: + SyncReconcileRequestTargetReleaseExtendGcp, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseOverrideGcp$outboundSchema.parse( - syncReconcileRequestTargetReleaseOverrideGcp, + SyncReconcileRequestTargetReleaseExtendGcp$outboundSchema.parse( + syncReconcileRequestTargetReleaseExtendGcp, ), ); } /** @internal */ -export type SyncReconcileRequestTargetReleaseOverridePlatforms$Outbound = { +export type SyncReconcileRequestTargetReleaseExtendPlatforms$Outbound = { aws?: - | Array + | Array | null | undefined; azure?: - | Array + | Array | null | undefined; gcp?: - | Array + | Array | null | undefined; }; /** @internal */ -export const SyncReconcileRequestTargetReleaseOverridePlatforms$outboundSchema: +export const SyncReconcileRequestTargetReleaseExtendPlatforms$outboundSchema: z.ZodType< - SyncReconcileRequestTargetReleaseOverridePlatforms$Outbound, - SyncReconcileRequestTargetReleaseOverridePlatforms + SyncReconcileRequestTargetReleaseExtendPlatforms$Outbound, + SyncReconcileRequestTargetReleaseExtendPlatforms > = z.object({ aws: z.nullable( z.array(z.lazy(() => - SyncReconcileRequestTargetReleaseOverrideAw$outboundSchema + SyncReconcileRequestTargetReleaseExtendAw$outboundSchema )), ).optional(), azure: z.nullable( z.array(z.lazy(() => - SyncReconcileRequestTargetReleaseOverrideAzure$outboundSchema + SyncReconcileRequestTargetReleaseExtendAzure$outboundSchema )), ).optional(), gcp: z.nullable( z.array(z.lazy(() => - SyncReconcileRequestTargetReleaseOverrideGcp$outboundSchema + SyncReconcileRequestTargetReleaseExtendGcp$outboundSchema )), ).optional(), }); -export function syncReconcileRequestTargetReleaseOverridePlatformsToJSON( - syncReconcileRequestTargetReleaseOverridePlatforms: - SyncReconcileRequestTargetReleaseOverridePlatforms, +export function syncReconcileRequestTargetReleaseExtendPlatformsToJSON( + syncReconcileRequestTargetReleaseExtendPlatforms: + SyncReconcileRequestTargetReleaseExtendPlatforms, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseOverridePlatforms$outboundSchema.parse( - syncReconcileRequestTargetReleaseOverridePlatforms, + SyncReconcileRequestTargetReleaseExtendPlatforms$outboundSchema.parse( + syncReconcileRequestTargetReleaseExtendPlatforms, ), ); } /** @internal */ -export type SyncReconcileRequestTargetReleaseOverride$Outbound = { +export type SyncReconcileRequestTargetReleaseExtend$Outbound = { description: string; id: string; - platforms: SyncReconcileRequestTargetReleaseOverridePlatforms$Outbound; + platforms: SyncReconcileRequestTargetReleaseExtendPlatforms$Outbound; }; /** @internal */ -export const SyncReconcileRequestTargetReleaseOverride$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseOverride$Outbound, - SyncReconcileRequestTargetReleaseOverride - > = z.object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => - SyncReconcileRequestTargetReleaseOverridePlatforms$outboundSchema - ), - }); +export const SyncReconcileRequestTargetReleaseExtend$outboundSchema: z.ZodType< + SyncReconcileRequestTargetReleaseExtend$Outbound, + SyncReconcileRequestTargetReleaseExtend +> = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncReconcileRequestTargetReleaseExtendPlatforms$outboundSchema + ), +}); -export function syncReconcileRequestTargetReleaseOverrideToJSON( - syncReconcileRequestTargetReleaseOverride: - SyncReconcileRequestTargetReleaseOverride, +export function syncReconcileRequestTargetReleaseExtendToJSON( + syncReconcileRequestTargetReleaseExtend: + SyncReconcileRequestTargetReleaseExtend, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseOverride$outboundSchema.parse( - syncReconcileRequestTargetReleaseOverride, + SyncReconcileRequestTargetReleaseExtend$outboundSchema.parse( + syncReconcileRequestTargetReleaseExtend, ), ); } /** @internal */ -export type SyncReconcileRequestTargetReleaseOverrideUnion$Outbound = - | SyncReconcileRequestTargetReleaseOverride$Outbound +export type SyncReconcileRequestTargetReleaseExtendUnion$Outbound = + | SyncReconcileRequestTargetReleaseExtend$Outbound | string; /** @internal */ -export const SyncReconcileRequestTargetReleaseOverrideUnion$outboundSchema: +export const SyncReconcileRequestTargetReleaseExtendUnion$outboundSchema: z.ZodType< - SyncReconcileRequestTargetReleaseOverrideUnion$Outbound, - SyncReconcileRequestTargetReleaseOverrideUnion + SyncReconcileRequestTargetReleaseExtendUnion$Outbound, + SyncReconcileRequestTargetReleaseExtendUnion > = z.union([ - z.lazy(() => SyncReconcileRequestTargetReleaseOverride$outboundSchema), + z.lazy(() => SyncReconcileRequestTargetReleaseExtend$outboundSchema), z.string(), ]); -export function syncReconcileRequestTargetReleaseOverrideUnionToJSON( - syncReconcileRequestTargetReleaseOverrideUnion: - SyncReconcileRequestTargetReleaseOverrideUnion, +export function syncReconcileRequestTargetReleaseExtendUnionToJSON( + syncReconcileRequestTargetReleaseExtendUnion: + SyncReconcileRequestTargetReleaseExtendUnion, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseOverrideUnion$outboundSchema.parse( - syncReconcileRequestTargetReleaseOverrideUnion, + SyncReconcileRequestTargetReleaseExtendUnion$outboundSchema.parse( + syncReconcileRequestTargetReleaseExtendUnion, ), ); } /** @internal */ -export type SyncReconcileRequestTargetReleaseManagement2$Outbound = { - override: { +export type SyncReconcileRequestTargetReleaseManagement1$Outbound = { + extend: { [k: string]: Array< - SyncReconcileRequestTargetReleaseOverride$Outbound | string + SyncReconcileRequestTargetReleaseExtend$Outbound | string >; }; }; /** @internal */ -export const SyncReconcileRequestTargetReleaseManagement2$outboundSchema: +export const SyncReconcileRequestTargetReleaseManagement1$outboundSchema: z.ZodType< - SyncReconcileRequestTargetReleaseManagement2$Outbound, - SyncReconcileRequestTargetReleaseManagement2 + SyncReconcileRequestTargetReleaseManagement1$Outbound, + SyncReconcileRequestTargetReleaseManagement1 > = z.object({ - override: z.record( + extend: z.record( z.string(), z.array(z.union([ - z.lazy(() => SyncReconcileRequestTargetReleaseOverride$outboundSchema), + z.lazy(() => SyncReconcileRequestTargetReleaseExtend$outboundSchema), z.string(), ])), ), }); -export function syncReconcileRequestTargetReleaseManagement2ToJSON( - syncReconcileRequestTargetReleaseManagement2: - SyncReconcileRequestTargetReleaseManagement2, +export function syncReconcileRequestTargetReleaseManagement1ToJSON( + syncReconcileRequestTargetReleaseManagement1: + SyncReconcileRequestTargetReleaseManagement1, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseManagement2$outboundSchema.parse( - syncReconcileRequestTargetReleaseManagement2, + SyncReconcileRequestTargetReleaseManagement1$outboundSchema.parse( + syncReconcileRequestTargetReleaseManagement1, ), ); } /** @internal */ -export type TargetReleaseExtendStateAwResource$Outbound = { +export type SyncReconcileRequestTargetReleaseManagementUnion$Outbound = + | SyncReconcileRequestTargetReleaseManagement1$Outbound + | SyncReconcileRequestTargetReleaseManagement2$Outbound + | string; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseManagementUnion$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseManagementUnion$Outbound, + SyncReconcileRequestTargetReleaseManagementUnion + > = z.union([ + z.lazy(() => SyncReconcileRequestTargetReleaseManagement1$outboundSchema), + z.lazy(() => SyncReconcileRequestTargetReleaseManagement2$outboundSchema), + SyncReconcileRequestTargetReleaseManagementEnum$outboundSchema, + ]); + +export function syncReconcileRequestTargetReleaseManagementUnionToJSON( + syncReconcileRequestTargetReleaseManagementUnion: + SyncReconcileRequestTargetReleaseManagementUnion, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseManagementUnion$outboundSchema.parse( + syncReconcileRequestTargetReleaseManagementUnion, + ), + ); +} + +/** @internal */ +export type TargetReleaseProfileStateAwResource$Outbound = { condition?: { [k: string]: { [k: string]: string } } | null | undefined; resources: Array; }; /** @internal */ -export const TargetReleaseExtendStateAwResource$outboundSchema: z.ZodType< - TargetReleaseExtendStateAwResource$Outbound, - TargetReleaseExtendStateAwResource +export const TargetReleaseProfileStateAwResource$outboundSchema: z.ZodType< + TargetReleaseProfileStateAwResource$Outbound, + TargetReleaseProfileStateAwResource > = z.object({ condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) .optional(), resources: z.array(z.string()), }); -export function targetReleaseExtendStateAwResourceToJSON( - targetReleaseExtendStateAwResource: TargetReleaseExtendStateAwResource, +export function targetReleaseProfileStateAwResourceToJSON( + targetReleaseProfileStateAwResource: TargetReleaseProfileStateAwResource, ): string { return JSON.stringify( - TargetReleaseExtendStateAwResource$outboundSchema.parse( - targetReleaseExtendStateAwResource, + TargetReleaseProfileStateAwResource$outboundSchema.parse( + targetReleaseProfileStateAwResource, ), ); } /** @internal */ -export type SyncReconcileRequestTargetReleaseExtendAwStack$Outbound = { +export type SyncReconcileRequestTargetReleaseProfileAwStack$Outbound = { condition?: { [k: string]: { [k: string]: string } } | null | undefined; resources: Array; }; /** @internal */ -export const SyncReconcileRequestTargetReleaseExtendAwStack$outboundSchema: +export const SyncReconcileRequestTargetReleaseProfileAwStack$outboundSchema: z.ZodType< - SyncReconcileRequestTargetReleaseExtendAwStack$Outbound, - SyncReconcileRequestTargetReleaseExtendAwStack + SyncReconcileRequestTargetReleaseProfileAwStack$Outbound, + SyncReconcileRequestTargetReleaseProfileAwStack > = z.object({ condition: z.nullable( z.record(z.string(), z.record(z.string(), z.string())), @@ -20063,55 +26252,208 @@ export const SyncReconcileRequestTargetReleaseExtendAwStack$outboundSchema: resources: z.array(z.string()), }); -export function syncReconcileRequestTargetReleaseExtendAwStackToJSON( - syncReconcileRequestTargetReleaseExtendAwStack: - SyncReconcileRequestTargetReleaseExtendAwStack, +export function syncReconcileRequestTargetReleaseProfileAwStackToJSON( + syncReconcileRequestTargetReleaseProfileAwStack: + SyncReconcileRequestTargetReleaseProfileAwStack, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseExtendAwStack$outboundSchema.parse( - syncReconcileRequestTargetReleaseExtendAwStack, + SyncReconcileRequestTargetReleaseProfileAwStack$outboundSchema.parse( + syncReconcileRequestTargetReleaseProfileAwStack, ), ); } /** @internal */ -export type SyncReconcileRequestTargetReleaseExtendAwBinding$Outbound = { - resource?: TargetReleaseExtendStateAwResource$Outbound | undefined; - stack?: SyncReconcileRequestTargetReleaseExtendAwStack$Outbound | undefined; +export type SyncReconcileRequestTargetReleaseProfileAwBinding$Outbound = { + resource?: TargetReleaseProfileStateAwResource$Outbound | undefined; + stack?: SyncReconcileRequestTargetReleaseProfileAwStack$Outbound | undefined; }; /** @internal */ -export const SyncReconcileRequestTargetReleaseExtendAwBinding$outboundSchema: +export const SyncReconcileRequestTargetReleaseProfileAwBinding$outboundSchema: z.ZodType< - SyncReconcileRequestTargetReleaseExtendAwBinding$Outbound, - SyncReconcileRequestTargetReleaseExtendAwBinding + SyncReconcileRequestTargetReleaseProfileAwBinding$Outbound, + SyncReconcileRequestTargetReleaseProfileAwBinding > = z.object({ - resource: z.lazy(() => TargetReleaseExtendStateAwResource$outboundSchema) + resource: z.lazy(() => TargetReleaseProfileStateAwResource$outboundSchema) .optional(), stack: z.lazy(() => - SyncReconcileRequestTargetReleaseExtendAwStack$outboundSchema + SyncReconcileRequestTargetReleaseProfileAwStack$outboundSchema ).optional(), }); -export function syncReconcileRequestTargetReleaseExtendAwBindingToJSON( - syncReconcileRequestTargetReleaseExtendAwBinding: - SyncReconcileRequestTargetReleaseExtendAwBinding, +export function syncReconcileRequestTargetReleaseProfileAwBindingToJSON( + syncReconcileRequestTargetReleaseProfileAwBinding: + SyncReconcileRequestTargetReleaseProfileAwBinding, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseExtendAwBinding$outboundSchema.parse( - syncReconcileRequestTargetReleaseExtendAwBinding, + SyncReconcileRequestTargetReleaseProfileAwBinding$outboundSchema.parse( + syncReconcileRequestTargetReleaseProfileAwBinding, ), ); } /** @internal */ -export const SyncReconcileRequestTargetReleaseExtendEffect$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestTargetReleaseExtendEffect, +export const SyncReconcileRequestTargetReleaseProfileEffect$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestTargetReleaseProfileEffect, ); /** @internal */ -export type SyncReconcileRequestTargetReleaseExtendAwGrant$Outbound = { +export type SyncReconcileRequestTargetReleaseProfileAwGrant$Outbound = { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseProfileAwGrant$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseProfileAwGrant$Outbound, + SyncReconcileRequestTargetReleaseProfileAwGrant + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileRequestTargetReleaseProfileAwGrantToJSON( + syncReconcileRequestTargetReleaseProfileAwGrant: + SyncReconcileRequestTargetReleaseProfileAwGrant, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseProfileAwGrant$outboundSchema.parse( + syncReconcileRequestTargetReleaseProfileAwGrant, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseProfileAw$Outbound = { + binding: SyncReconcileRequestTargetReleaseProfileAwBinding$Outbound; + description?: string | null | undefined; + effect?: string | undefined; + grant: SyncReconcileRequestTargetReleaseProfileAwGrant$Outbound; + label?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseProfileAw$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseProfileAw$Outbound, + SyncReconcileRequestTargetReleaseProfileAw + > = z.object({ + binding: z.lazy(() => + SyncReconcileRequestTargetReleaseProfileAwBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: SyncReconcileRequestTargetReleaseProfileEffect$outboundSchema + .optional(), + grant: z.lazy(() => + SyncReconcileRequestTargetReleaseProfileAwGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileRequestTargetReleaseProfileAwToJSON( + syncReconcileRequestTargetReleaseProfileAw: + SyncReconcileRequestTargetReleaseProfileAw, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseProfileAw$outboundSchema.parse( + syncReconcileRequestTargetReleaseProfileAw, + ), + ); +} + +/** @internal */ +export type TargetReleaseProfileStateAzureResource$Outbound = { + scope: string; +}; + +/** @internal */ +export const TargetReleaseProfileStateAzureResource$outboundSchema: z.ZodType< + TargetReleaseProfileStateAzureResource$Outbound, + TargetReleaseProfileStateAzureResource +> = z.object({ + scope: z.string(), +}); + +export function targetReleaseProfileStateAzureResourceToJSON( + targetReleaseProfileStateAzureResource: + TargetReleaseProfileStateAzureResource, +): string { + return JSON.stringify( + TargetReleaseProfileStateAzureResource$outboundSchema.parse( + targetReleaseProfileStateAzureResource, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseProfileAzureStack$Outbound = { + scope: string; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseProfileAzureStack$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseProfileAzureStack$Outbound, + SyncReconcileRequestTargetReleaseProfileAzureStack + > = z.object({ + scope: z.string(), + }); + +export function syncReconcileRequestTargetReleaseProfileAzureStackToJSON( + syncReconcileRequestTargetReleaseProfileAzureStack: + SyncReconcileRequestTargetReleaseProfileAzureStack, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseProfileAzureStack$outboundSchema.parse( + syncReconcileRequestTargetReleaseProfileAzureStack, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseProfileAzureBinding$Outbound = { + resource?: TargetReleaseProfileStateAzureResource$Outbound | undefined; + stack?: + | SyncReconcileRequestTargetReleaseProfileAzureStack$Outbound + | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseProfileAzureBinding$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseProfileAzureBinding$Outbound, + SyncReconcileRequestTargetReleaseProfileAzureBinding + > = z.object({ + resource: z.lazy(() => + TargetReleaseProfileStateAzureResource$outboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileRequestTargetReleaseProfileAzureStack$outboundSchema + ).optional(), + }); + +export function syncReconcileRequestTargetReleaseProfileAzureBindingToJSON( + syncReconcileRequestTargetReleaseProfileAzureBinding: + SyncReconcileRequestTargetReleaseProfileAzureBinding, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseProfileAzureBinding$outboundSchema.parse( + syncReconcileRequestTargetReleaseProfileAzureBinding, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseProfileAzureGrant$Outbound = { actions?: Array | null | undefined; dataActions?: Array | null | undefined; permissions?: Array | null | undefined; @@ -20120,149 +26462,269 @@ export type SyncReconcileRequestTargetReleaseExtendAwGrant$Outbound = { }; /** @internal */ -export const SyncReconcileRequestTargetReleaseExtendAwGrant$outboundSchema: +export const SyncReconcileRequestTargetReleaseProfileAzureGrant$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseProfileAzureGrant$Outbound, + SyncReconcileRequestTargetReleaseProfileAzureGrant + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileRequestTargetReleaseProfileAzureGrantToJSON( + syncReconcileRequestTargetReleaseProfileAzureGrant: + SyncReconcileRequestTargetReleaseProfileAzureGrant, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseProfileAzureGrant$outboundSchema.parse( + syncReconcileRequestTargetReleaseProfileAzureGrant, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseProfileAzure$Outbound = { + binding: SyncReconcileRequestTargetReleaseProfileAzureBinding$Outbound; + description?: string | null | undefined; + grant: SyncReconcileRequestTargetReleaseProfileAzureGrant$Outbound; + label?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseProfileAzure$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseProfileAzure$Outbound, + SyncReconcileRequestTargetReleaseProfileAzure + > = z.object({ + binding: z.lazy(() => + SyncReconcileRequestTargetReleaseProfileAzureBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileRequestTargetReleaseProfileAzureGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileRequestTargetReleaseProfileAzureToJSON( + syncReconcileRequestTargetReleaseProfileAzure: + SyncReconcileRequestTargetReleaseProfileAzure, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseProfileAzure$outboundSchema.parse( + syncReconcileRequestTargetReleaseProfileAzure, + ), + ); +} + +/** @internal */ +export type TargetReleaseProfileConditionStateResource$Outbound = { + expression: string; + title: string; +}; + +/** @internal */ +export const TargetReleaseProfileConditionStateResource$outboundSchema: z.ZodType< - SyncReconcileRequestTargetReleaseExtendAwGrant$Outbound, - SyncReconcileRequestTargetReleaseExtendAwGrant + TargetReleaseProfileConditionStateResource$Outbound, + TargetReleaseProfileConditionStateResource > = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), + expression: z.string(), + title: z.string(), }); -export function syncReconcileRequestTargetReleaseExtendAwGrantToJSON( - syncReconcileRequestTargetReleaseExtendAwGrant: - SyncReconcileRequestTargetReleaseExtendAwGrant, +export function targetReleaseProfileConditionStateResourceToJSON( + targetReleaseProfileConditionStateResource: + TargetReleaseProfileConditionStateResource, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseExtendAwGrant$outboundSchema.parse( - syncReconcileRequestTargetReleaseExtendAwGrant, + TargetReleaseProfileConditionStateResource$outboundSchema.parse( + targetReleaseProfileConditionStateResource, ), ); } /** @internal */ -export type SyncReconcileRequestTargetReleaseExtendAw$Outbound = { - binding: SyncReconcileRequestTargetReleaseExtendAwBinding$Outbound; - description?: string | null | undefined; - effect?: string | undefined; - grant: SyncReconcileRequestTargetReleaseExtendAwGrant$Outbound; - label?: string | null | undefined; -}; +export type TargetReleaseProfileStateResourceConditionUnion$Outbound = + | TargetReleaseProfileConditionStateResource$Outbound + | any; /** @internal */ -export const SyncReconcileRequestTargetReleaseExtendAw$outboundSchema: +export const TargetReleaseProfileStateResourceConditionUnion$outboundSchema: z.ZodType< - SyncReconcileRequestTargetReleaseExtendAw$Outbound, - SyncReconcileRequestTargetReleaseExtendAw - > = z.object({ - binding: z.lazy(() => - SyncReconcileRequestTargetReleaseExtendAwBinding$outboundSchema - ), - description: z.nullable(z.string()).optional(), - effect: SyncReconcileRequestTargetReleaseExtendEffect$outboundSchema - .optional(), - grant: z.lazy(() => - SyncReconcileRequestTargetReleaseExtendAwGrant$outboundSchema - ), - label: z.nullable(z.string()).optional(), - }); + TargetReleaseProfileStateResourceConditionUnion$Outbound, + TargetReleaseProfileStateResourceConditionUnion + > = z.union([ + z.lazy(() => TargetReleaseProfileConditionStateResource$outboundSchema), + z.any(), + ]); -export function syncReconcileRequestTargetReleaseExtendAwToJSON( - syncReconcileRequestTargetReleaseExtendAw: - SyncReconcileRequestTargetReleaseExtendAw, +export function targetReleaseProfileStateResourceConditionUnionToJSON( + targetReleaseProfileStateResourceConditionUnion: + TargetReleaseProfileStateResourceConditionUnion, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseExtendAw$outboundSchema.parse( - syncReconcileRequestTargetReleaseExtendAw, + TargetReleaseProfileStateResourceConditionUnion$outboundSchema.parse( + targetReleaseProfileStateResourceConditionUnion, ), ); } /** @internal */ -export type TargetReleaseExtendStateAzureResource$Outbound = { +export type TargetReleaseProfileStateGcpResource$Outbound = { + condition?: + | TargetReleaseProfileConditionStateResource$Outbound + | any + | null + | undefined; scope: string; }; /** @internal */ -export const TargetReleaseExtendStateAzureResource$outboundSchema: z.ZodType< - TargetReleaseExtendStateAzureResource$Outbound, - TargetReleaseExtendStateAzureResource +export const TargetReleaseProfileStateGcpResource$outboundSchema: z.ZodType< + TargetReleaseProfileStateGcpResource$Outbound, + TargetReleaseProfileStateGcpResource > = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => TargetReleaseProfileConditionStateResource$outboundSchema), + z.any(), + ]), + ).optional(), scope: z.string(), }); -export function targetReleaseExtendStateAzureResourceToJSON( - targetReleaseExtendStateAzureResource: TargetReleaseExtendStateAzureResource, +export function targetReleaseProfileStateGcpResourceToJSON( + targetReleaseProfileStateGcpResource: TargetReleaseProfileStateGcpResource, ): string { return JSON.stringify( - TargetReleaseExtendStateAzureResource$outboundSchema.parse( - targetReleaseExtendStateAzureResource, + TargetReleaseProfileStateGcpResource$outboundSchema.parse( + targetReleaseProfileStateGcpResource, ), ); } /** @internal */ -export type SyncReconcileRequestTargetReleaseExtendAzureStack$Outbound = { +export type TargetReleaseProfileConditionState$Outbound = { + expression: string; + title: string; +}; + +/** @internal */ +export const TargetReleaseProfileConditionState$outboundSchema: z.ZodType< + TargetReleaseProfileConditionState$Outbound, + TargetReleaseProfileConditionState +> = z.object({ + expression: z.string(), + title: z.string(), +}); + +export function targetReleaseProfileConditionStateToJSON( + targetReleaseProfileConditionState: TargetReleaseProfileConditionState, +): string { + return JSON.stringify( + TargetReleaseProfileConditionState$outboundSchema.parse( + targetReleaseProfileConditionState, + ), + ); +} + +/** @internal */ +export type TargetReleaseProfileStateConditionUnion$Outbound = + | TargetReleaseProfileConditionState$Outbound + | any; + +/** @internal */ +export const TargetReleaseProfileStateConditionUnion$outboundSchema: z.ZodType< + TargetReleaseProfileStateConditionUnion$Outbound, + TargetReleaseProfileStateConditionUnion +> = z.union([ + z.lazy(() => TargetReleaseProfileConditionState$outboundSchema), + z.any(), +]); + +export function targetReleaseProfileStateConditionUnionToJSON( + targetReleaseProfileStateConditionUnion: + TargetReleaseProfileStateConditionUnion, +): string { + return JSON.stringify( + TargetReleaseProfileStateConditionUnion$outboundSchema.parse( + targetReleaseProfileStateConditionUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseProfileGcpStack$Outbound = { + condition?: + | TargetReleaseProfileConditionState$Outbound + | any + | null + | undefined; scope: string; }; /** @internal */ -export const SyncReconcileRequestTargetReleaseExtendAzureStack$outboundSchema: +export const SyncReconcileRequestTargetReleaseProfileGcpStack$outboundSchema: z.ZodType< - SyncReconcileRequestTargetReleaseExtendAzureStack$Outbound, - SyncReconcileRequestTargetReleaseExtendAzureStack + SyncReconcileRequestTargetReleaseProfileGcpStack$Outbound, + SyncReconcileRequestTargetReleaseProfileGcpStack > = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => TargetReleaseProfileConditionState$outboundSchema), + z.any(), + ]), + ).optional(), scope: z.string(), }); -export function syncReconcileRequestTargetReleaseExtendAzureStackToJSON( - syncReconcileRequestTargetReleaseExtendAzureStack: - SyncReconcileRequestTargetReleaseExtendAzureStack, +export function syncReconcileRequestTargetReleaseProfileGcpStackToJSON( + syncReconcileRequestTargetReleaseProfileGcpStack: + SyncReconcileRequestTargetReleaseProfileGcpStack, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseExtendAzureStack$outboundSchema.parse( - syncReconcileRequestTargetReleaseExtendAzureStack, + SyncReconcileRequestTargetReleaseProfileGcpStack$outboundSchema.parse( + syncReconcileRequestTargetReleaseProfileGcpStack, ), ); } /** @internal */ -export type SyncReconcileRequestTargetReleaseExtendAzureBinding$Outbound = { - resource?: TargetReleaseExtendStateAzureResource$Outbound | undefined; - stack?: - | SyncReconcileRequestTargetReleaseExtendAzureStack$Outbound - | undefined; +export type SyncReconcileRequestTargetReleaseProfileGcpBinding$Outbound = { + resource?: TargetReleaseProfileStateGcpResource$Outbound | undefined; + stack?: SyncReconcileRequestTargetReleaseProfileGcpStack$Outbound | undefined; }; /** @internal */ -export const SyncReconcileRequestTargetReleaseExtendAzureBinding$outboundSchema: +export const SyncReconcileRequestTargetReleaseProfileGcpBinding$outboundSchema: z.ZodType< - SyncReconcileRequestTargetReleaseExtendAzureBinding$Outbound, - SyncReconcileRequestTargetReleaseExtendAzureBinding + SyncReconcileRequestTargetReleaseProfileGcpBinding$Outbound, + SyncReconcileRequestTargetReleaseProfileGcpBinding > = z.object({ - resource: z.lazy(() => TargetReleaseExtendStateAzureResource$outboundSchema) + resource: z.lazy(() => TargetReleaseProfileStateGcpResource$outboundSchema) .optional(), stack: z.lazy(() => - SyncReconcileRequestTargetReleaseExtendAzureStack$outboundSchema + SyncReconcileRequestTargetReleaseProfileGcpStack$outboundSchema ).optional(), }); -export function syncReconcileRequestTargetReleaseExtendAzureBindingToJSON( - syncReconcileRequestTargetReleaseExtendAzureBinding: - SyncReconcileRequestTargetReleaseExtendAzureBinding, +export function syncReconcileRequestTargetReleaseProfileGcpBindingToJSON( + syncReconcileRequestTargetReleaseProfileGcpBinding: + SyncReconcileRequestTargetReleaseProfileGcpBinding, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseExtendAzureBinding$outboundSchema.parse( - syncReconcileRequestTargetReleaseExtendAzureBinding, + SyncReconcileRequestTargetReleaseProfileGcpBinding$outboundSchema.parse( + syncReconcileRequestTargetReleaseProfileGcpBinding, ), ); } /** @internal */ -export type SyncReconcileRequestTargetReleaseExtendAzureGrant$Outbound = { +export type SyncReconcileRequestTargetReleaseProfileGcpGrant$Outbound = { actions?: Array | null | undefined; dataActions?: Array | null | undefined; permissions?: Array | null | undefined; @@ -20271,10 +26733,10 @@ export type SyncReconcileRequestTargetReleaseExtendAzureGrant$Outbound = { }; /** @internal */ -export const SyncReconcileRequestTargetReleaseExtendAzureGrant$outboundSchema: +export const SyncReconcileRequestTargetReleaseProfileGcpGrant$outboundSchema: z.ZodType< - SyncReconcileRequestTargetReleaseExtendAzureGrant$Outbound, - SyncReconcileRequestTargetReleaseExtendAzureGrant + SyncReconcileRequestTargetReleaseProfileGcpGrant$Outbound, + SyncReconcileRequestTargetReleaseProfileGcpGrant > = z.object({ actions: z.nullable(z.array(z.string())).optional(), dataActions: z.nullable(z.array(z.string())).optional(), @@ -20283,1541 +26745,1665 @@ export const SyncReconcileRequestTargetReleaseExtendAzureGrant$outboundSchema: residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function syncReconcileRequestTargetReleaseExtendAzureGrantToJSON( - syncReconcileRequestTargetReleaseExtendAzureGrant: - SyncReconcileRequestTargetReleaseExtendAzureGrant, +export function syncReconcileRequestTargetReleaseProfileGcpGrantToJSON( + syncReconcileRequestTargetReleaseProfileGcpGrant: + SyncReconcileRequestTargetReleaseProfileGcpGrant, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseExtendAzureGrant$outboundSchema.parse( - syncReconcileRequestTargetReleaseExtendAzureGrant, + SyncReconcileRequestTargetReleaseProfileGcpGrant$outboundSchema.parse( + syncReconcileRequestTargetReleaseProfileGcpGrant, ), ); } /** @internal */ -export type SyncReconcileRequestTargetReleaseExtendAzure$Outbound = { - binding: SyncReconcileRequestTargetReleaseExtendAzureBinding$Outbound; +export type SyncReconcileRequestTargetReleaseProfileGcp$Outbound = { + binding: SyncReconcileRequestTargetReleaseProfileGcpBinding$Outbound; description?: string | null | undefined; - grant: SyncReconcileRequestTargetReleaseExtendAzureGrant$Outbound; + grant: SyncReconcileRequestTargetReleaseProfileGcpGrant$Outbound; label?: string | null | undefined; }; /** @internal */ -export const SyncReconcileRequestTargetReleaseExtendAzure$outboundSchema: +export const SyncReconcileRequestTargetReleaseProfileGcp$outboundSchema: z.ZodType< - SyncReconcileRequestTargetReleaseExtendAzure$Outbound, - SyncReconcileRequestTargetReleaseExtendAzure + SyncReconcileRequestTargetReleaseProfileGcp$Outbound, + SyncReconcileRequestTargetReleaseProfileGcp > = z.object({ binding: z.lazy(() => - SyncReconcileRequestTargetReleaseExtendAzureBinding$outboundSchema + SyncReconcileRequestTargetReleaseProfileGcpBinding$outboundSchema ), description: z.nullable(z.string()).optional(), grant: z.lazy(() => - SyncReconcileRequestTargetReleaseExtendAzureGrant$outboundSchema + SyncReconcileRequestTargetReleaseProfileGcpGrant$outboundSchema ), label: z.nullable(z.string()).optional(), }); -export function syncReconcileRequestTargetReleaseExtendAzureToJSON( - syncReconcileRequestTargetReleaseExtendAzure: - SyncReconcileRequestTargetReleaseExtendAzure, +export function syncReconcileRequestTargetReleaseProfileGcpToJSON( + syncReconcileRequestTargetReleaseProfileGcp: + SyncReconcileRequestTargetReleaseProfileGcp, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseExtendAzure$outboundSchema.parse( - syncReconcileRequestTargetReleaseExtendAzure, + SyncReconcileRequestTargetReleaseProfileGcp$outboundSchema.parse( + syncReconcileRequestTargetReleaseProfileGcp, ), ); } /** @internal */ -export type TargetReleaseExtendConditionStateResource$Outbound = { - expression: string; - title: string; +export type SyncReconcileRequestTargetReleaseProfilePlatforms$Outbound = { + aws?: + | Array + | null + | undefined; + azure?: + | Array + | null + | undefined; + gcp?: + | Array + | null + | undefined; }; /** @internal */ -export const TargetReleaseExtendConditionStateResource$outboundSchema: +export const SyncReconcileRequestTargetReleaseProfilePlatforms$outboundSchema: z.ZodType< - TargetReleaseExtendConditionStateResource$Outbound, - TargetReleaseExtendConditionStateResource + SyncReconcileRequestTargetReleaseProfilePlatforms$Outbound, + SyncReconcileRequestTargetReleaseProfilePlatforms > = z.object({ - expression: z.string(), - title: z.string(), + aws: z.nullable( + z.array(z.lazy(() => + SyncReconcileRequestTargetReleaseProfileAw$outboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + SyncReconcileRequestTargetReleaseProfileAzure$outboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + SyncReconcileRequestTargetReleaseProfileGcp$outboundSchema + )), + ).optional(), }); -export function targetReleaseExtendConditionStateResourceToJSON( - targetReleaseExtendConditionStateResource: - TargetReleaseExtendConditionStateResource, +export function syncReconcileRequestTargetReleaseProfilePlatformsToJSON( + syncReconcileRequestTargetReleaseProfilePlatforms: + SyncReconcileRequestTargetReleaseProfilePlatforms, ): string { return JSON.stringify( - TargetReleaseExtendConditionStateResource$outboundSchema.parse( - targetReleaseExtendConditionStateResource, + SyncReconcileRequestTargetReleaseProfilePlatforms$outboundSchema.parse( + syncReconcileRequestTargetReleaseProfilePlatforms, ), ); } /** @internal */ -export type TargetReleaseExtendStateResourceConditionUnion$Outbound = - | TargetReleaseExtendConditionStateResource$Outbound - | any; +export type SyncReconcileRequestTargetReleaseProfile$Outbound = { + description: string; + id: string; + platforms: SyncReconcileRequestTargetReleaseProfilePlatforms$Outbound; +}; /** @internal */ -export const TargetReleaseExtendStateResourceConditionUnion$outboundSchema: +export const SyncReconcileRequestTargetReleaseProfile$outboundSchema: z.ZodType< + SyncReconcileRequestTargetReleaseProfile$Outbound, + SyncReconcileRequestTargetReleaseProfile +> = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncReconcileRequestTargetReleaseProfilePlatforms$outboundSchema + ), +}); + +export function syncReconcileRequestTargetReleaseProfileToJSON( + syncReconcileRequestTargetReleaseProfile: + SyncReconcileRequestTargetReleaseProfile, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseProfile$outboundSchema.parse( + syncReconcileRequestTargetReleaseProfile, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseProfileUnion$Outbound = + | SyncReconcileRequestTargetReleaseProfile$Outbound + | string; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseProfileUnion$outboundSchema: z.ZodType< - TargetReleaseExtendStateResourceConditionUnion$Outbound, - TargetReleaseExtendStateResourceConditionUnion + SyncReconcileRequestTargetReleaseProfileUnion$Outbound, + SyncReconcileRequestTargetReleaseProfileUnion > = z.union([ - z.lazy(() => TargetReleaseExtendConditionStateResource$outboundSchema), - z.any(), + z.lazy(() => SyncReconcileRequestTargetReleaseProfile$outboundSchema), + z.string(), ]); -export function targetReleaseExtendStateResourceConditionUnionToJSON( - targetReleaseExtendStateResourceConditionUnion: - TargetReleaseExtendStateResourceConditionUnion, +export function syncReconcileRequestTargetReleaseProfileUnionToJSON( + syncReconcileRequestTargetReleaseProfileUnion: + SyncReconcileRequestTargetReleaseProfileUnion, ): string { return JSON.stringify( - TargetReleaseExtendStateResourceConditionUnion$outboundSchema.parse( - targetReleaseExtendStateResourceConditionUnion, + SyncReconcileRequestTargetReleaseProfileUnion$outboundSchema.parse( + syncReconcileRequestTargetReleaseProfileUnion, ), ); } /** @internal */ -export type TargetReleaseExtendStateGcpResource$Outbound = { - condition?: - | TargetReleaseExtendConditionStateResource$Outbound - | any - | null +export type SyncReconcileRequestTargetReleasePermissions$Outbound = { + management?: + | SyncReconcileRequestTargetReleaseManagement1$Outbound + | SyncReconcileRequestTargetReleaseManagement2$Outbound + | string | undefined; - scope: string; + profiles: { + [k: string]: { + [k: string]: Array< + SyncReconcileRequestTargetReleaseProfile$Outbound | string + >; + }; + }; }; /** @internal */ -export const TargetReleaseExtendStateGcpResource$outboundSchema: z.ZodType< - TargetReleaseExtendStateGcpResource$Outbound, - TargetReleaseExtendStateGcpResource -> = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => TargetReleaseExtendConditionStateResource$outboundSchema), - z.any(), - ]), - ).optional(), - scope: z.string(), -}); +export const SyncReconcileRequestTargetReleasePermissions$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleasePermissions$Outbound, + SyncReconcileRequestTargetReleasePermissions + > = z.object({ + management: z.union([ + z.lazy(() => SyncReconcileRequestTargetReleaseManagement1$outboundSchema), + z.lazy(() => SyncReconcileRequestTargetReleaseManagement2$outboundSchema), + SyncReconcileRequestTargetReleaseManagementEnum$outboundSchema, + ]).optional(), + profiles: z.record( + z.string(), + z.record( + z.string(), + z.array( + z.union([ + z.lazy(() => + SyncReconcileRequestTargetReleaseProfile$outboundSchema + ), + z.string(), + ]), + ), + ), + ), + }); -export function targetReleaseExtendStateGcpResourceToJSON( - targetReleaseExtendStateGcpResource: TargetReleaseExtendStateGcpResource, +export function syncReconcileRequestTargetReleasePermissionsToJSON( + syncReconcileRequestTargetReleasePermissions: + SyncReconcileRequestTargetReleasePermissions, ): string { return JSON.stringify( - TargetReleaseExtendStateGcpResource$outboundSchema.parse( - targetReleaseExtendStateGcpResource, + SyncReconcileRequestTargetReleasePermissions$outboundSchema.parse( + syncReconcileRequestTargetReleasePermissions, ), ); } /** @internal */ -export type TargetReleaseExtendConditionState$Outbound = { - expression: string; - title: string; +export type SyncReconcileRequestTargetReleaseConfig$Outbound = { + id: string; + type: string; + [additionalProperties: string]: unknown; }; /** @internal */ -export const TargetReleaseExtendConditionState$outboundSchema: z.ZodType< - TargetReleaseExtendConditionState$Outbound, - TargetReleaseExtendConditionState +export const SyncReconcileRequestTargetReleaseConfig$outboundSchema: z.ZodType< + SyncReconcileRequestTargetReleaseConfig$Outbound, + SyncReconcileRequestTargetReleaseConfig > = z.object({ - expression: z.string(), - title: z.string(), + id: z.string(), + type: z.string(), + additionalProperties: z.record(z.string(), z.nullable(z.any())).optional(), +}).transform((v) => { + return { + ...v.additionalProperties, + ...remap$(v, { + additionalProperties: null, + }), + }; }); -export function targetReleaseExtendConditionStateToJSON( - targetReleaseExtendConditionState: TargetReleaseExtendConditionState, +export function syncReconcileRequestTargetReleaseConfigToJSON( + syncReconcileRequestTargetReleaseConfig: + SyncReconcileRequestTargetReleaseConfig, ): string { return JSON.stringify( - TargetReleaseExtendConditionState$outboundSchema.parse( - targetReleaseExtendConditionState, + SyncReconcileRequestTargetReleaseConfig$outboundSchema.parse( + syncReconcileRequestTargetReleaseConfig, ), ); } /** @internal */ -export type TargetReleaseExtendStateConditionUnion$Outbound = - | TargetReleaseExtendConditionState$Outbound - | any; +export type SyncReconcileRequestTargetReleaseDependency$Outbound = { + id: string; + type: string; +}; /** @internal */ -export const TargetReleaseExtendStateConditionUnion$outboundSchema: z.ZodType< - TargetReleaseExtendStateConditionUnion$Outbound, - TargetReleaseExtendStateConditionUnion -> = z.union([ - z.lazy(() => TargetReleaseExtendConditionState$outboundSchema), - z.any(), -]); +export const SyncReconcileRequestTargetReleaseDependency$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseDependency$Outbound, + SyncReconcileRequestTargetReleaseDependency + > = z.object({ + id: z.string(), + type: z.string(), + }); -export function targetReleaseExtendStateConditionUnionToJSON( - targetReleaseExtendStateConditionUnion: - TargetReleaseExtendStateConditionUnion, +export function syncReconcileRequestTargetReleaseDependencyToJSON( + syncReconcileRequestTargetReleaseDependency: + SyncReconcileRequestTargetReleaseDependency, ): string { return JSON.stringify( - TargetReleaseExtendStateConditionUnion$outboundSchema.parse( - targetReleaseExtendStateConditionUnion, + SyncReconcileRequestTargetReleaseDependency$outboundSchema.parse( + syncReconcileRequestTargetReleaseDependency, ), ); } /** @internal */ -export type SyncReconcileRequestTargetReleaseExtendGcpStack$Outbound = { - condition?: - | TargetReleaseExtendConditionState$Outbound - | any - | null - | undefined; - scope: string; +export const TargetReleaseStateLifecycle$outboundSchema: z.ZodEnum< + typeof TargetReleaseStateLifecycle +> = z.enum(TargetReleaseStateLifecycle); + +/** @internal */ +export type SyncReconcileRequestTargetReleaseResources$Outbound = { + config: SyncReconcileRequestTargetReleaseConfig$Outbound; + dependencies: Array; + enabledWhen?: string | null | undefined; + lifecycle: string; + remoteAccess?: boolean | undefined; }; /** @internal */ -export const SyncReconcileRequestTargetReleaseExtendGcpStack$outboundSchema: +export const SyncReconcileRequestTargetReleaseResources$outboundSchema: z.ZodType< - SyncReconcileRequestTargetReleaseExtendGcpStack$Outbound, - SyncReconcileRequestTargetReleaseExtendGcpStack + SyncReconcileRequestTargetReleaseResources$Outbound, + SyncReconcileRequestTargetReleaseResources > = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => TargetReleaseExtendConditionState$outboundSchema), - z.any(), - ]), - ).optional(), - scope: z.string(), + config: z.lazy(() => + SyncReconcileRequestTargetReleaseConfig$outboundSchema + ), + dependencies: z.array( + z.lazy(() => SyncReconcileRequestTargetReleaseDependency$outboundSchema), + ), + enabledWhen: z.nullable(z.string()).optional(), + lifecycle: TargetReleaseStateLifecycle$outboundSchema, + remoteAccess: z.boolean().optional(), }); -export function syncReconcileRequestTargetReleaseExtendGcpStackToJSON( - syncReconcileRequestTargetReleaseExtendGcpStack: - SyncReconcileRequestTargetReleaseExtendGcpStack, +export function syncReconcileRequestTargetReleaseResourcesToJSON( + syncReconcileRequestTargetReleaseResources: + SyncReconcileRequestTargetReleaseResources, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseExtendGcpStack$outboundSchema.parse( - syncReconcileRequestTargetReleaseExtendGcpStack, + SyncReconcileRequestTargetReleaseResources$outboundSchema.parse( + syncReconcileRequestTargetReleaseResources, ), ); } /** @internal */ -export type SyncReconcileRequestTargetReleaseExtendGcpBinding$Outbound = { - resource?: TargetReleaseExtendStateGcpResource$Outbound | undefined; - stack?: SyncReconcileRequestTargetReleaseExtendGcpStack$Outbound | undefined; +export const SyncReconcileRequestTargetReleaseSupportedPlatform$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestTargetReleaseSupportedPlatform, + ); + +/** @internal */ +export type SyncReconcileRequestTargetReleaseStack$Outbound = { + id: string; + inputs?: Array | undefined; + permissions?: + | SyncReconcileRequestTargetReleasePermissions$Outbound + | undefined; + resources: { + [k: string]: SyncReconcileRequestTargetReleaseResources$Outbound; + }; + supportedPlatforms?: Array | null | undefined; }; /** @internal */ -export const SyncReconcileRequestTargetReleaseExtendGcpBinding$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseExtendGcpBinding$Outbound, - SyncReconcileRequestTargetReleaseExtendGcpBinding - > = z.object({ - resource: z.lazy(() => TargetReleaseExtendStateGcpResource$outboundSchema) - .optional(), - stack: z.lazy(() => - SyncReconcileRequestTargetReleaseExtendGcpStack$outboundSchema - ).optional(), - }); +export const SyncReconcileRequestTargetReleaseStack$outboundSchema: z.ZodType< + SyncReconcileRequestTargetReleaseStack$Outbound, + SyncReconcileRequestTargetReleaseStack +> = z.object({ + id: z.string(), + inputs: z.array( + z.lazy(() => SyncReconcileRequestTargetReleaseInput$outboundSchema), + ).optional(), + permissions: z.lazy(() => + SyncReconcileRequestTargetReleasePermissions$outboundSchema + ).optional(), + resources: z.record( + z.string(), + z.lazy(() => SyncReconcileRequestTargetReleaseResources$outboundSchema), + ), + supportedPlatforms: z.nullable( + z.array(SyncReconcileRequestTargetReleaseSupportedPlatform$outboundSchema), + ).optional(), +}); -export function syncReconcileRequestTargetReleaseExtendGcpBindingToJSON( - syncReconcileRequestTargetReleaseExtendGcpBinding: - SyncReconcileRequestTargetReleaseExtendGcpBinding, +export function syncReconcileRequestTargetReleaseStackToJSON( + syncReconcileRequestTargetReleaseStack: + SyncReconcileRequestTargetReleaseStack, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseExtendGcpBinding$outboundSchema.parse( - syncReconcileRequestTargetReleaseExtendGcpBinding, + SyncReconcileRequestTargetReleaseStack$outboundSchema.parse( + syncReconcileRequestTargetReleaseStack, ), ); } /** @internal */ -export type SyncReconcileRequestTargetReleaseExtendGcpGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; +export type SyncReconcileRequestTargetRelease$Outbound = { + description?: string | null | undefined; + releaseId?: string | null | undefined; + stack: SyncReconcileRequestTargetReleaseStack$Outbound; + version?: string | null | undefined; }; /** @internal */ -export const SyncReconcileRequestTargetReleaseExtendGcpGrant$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseExtendGcpGrant$Outbound, - SyncReconcileRequestTargetReleaseExtendGcpGrant - > = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); +export const SyncReconcileRequestTargetRelease$outboundSchema: z.ZodType< + SyncReconcileRequestTargetRelease$Outbound, + SyncReconcileRequestTargetRelease +> = z.object({ + description: z.nullable(z.string()).optional(), + releaseId: z.nullable(z.string()).optional(), + stack: z.lazy(() => SyncReconcileRequestTargetReleaseStack$outboundSchema), + version: z.nullable(z.string()).optional(), +}); -export function syncReconcileRequestTargetReleaseExtendGcpGrantToJSON( - syncReconcileRequestTargetReleaseExtendGcpGrant: - SyncReconcileRequestTargetReleaseExtendGcpGrant, +export function syncReconcileRequestTargetReleaseToJSON( + syncReconcileRequestTargetRelease: SyncReconcileRequestTargetRelease, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseExtendGcpGrant$outboundSchema.parse( - syncReconcileRequestTargetReleaseExtendGcpGrant, + SyncReconcileRequestTargetRelease$outboundSchema.parse( + syncReconcileRequestTargetRelease, ), ); } /** @internal */ -export type SyncReconcileRequestTargetReleaseExtendGcp$Outbound = { - binding: SyncReconcileRequestTargetReleaseExtendGcpBinding$Outbound; - description?: string | null | undefined; - grant: SyncReconcileRequestTargetReleaseExtendGcpGrant$Outbound; - label?: string | null | undefined; -}; +export type SyncReconcileRequestTargetReleaseUnion$Outbound = + | SyncReconcileRequestTargetRelease$Outbound + | any; /** @internal */ -export const SyncReconcileRequestTargetReleaseExtendGcp$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseExtendGcp$Outbound, - SyncReconcileRequestTargetReleaseExtendGcp - > = z.object({ - binding: z.lazy(() => - SyncReconcileRequestTargetReleaseExtendGcpBinding$outboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncReconcileRequestTargetReleaseExtendGcpGrant$outboundSchema - ), - label: z.nullable(z.string()).optional(), - }); +export const SyncReconcileRequestTargetReleaseUnion$outboundSchema: z.ZodType< + SyncReconcileRequestTargetReleaseUnion$Outbound, + SyncReconcileRequestTargetReleaseUnion +> = z.union([ + z.lazy(() => SyncReconcileRequestTargetRelease$outboundSchema), + z.any(), +]); -export function syncReconcileRequestTargetReleaseExtendGcpToJSON( - syncReconcileRequestTargetReleaseExtendGcp: - SyncReconcileRequestTargetReleaseExtendGcp, +export function syncReconcileRequestTargetReleaseUnionToJSON( + syncReconcileRequestTargetReleaseUnion: + SyncReconcileRequestTargetReleaseUnion, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseExtendGcp$outboundSchema.parse( - syncReconcileRequestTargetReleaseExtendGcp, + SyncReconcileRequestTargetReleaseUnion$outboundSchema.parse( + syncReconcileRequestTargetReleaseUnion, ), ); } /** @internal */ -export type SyncReconcileRequestTargetReleaseExtendPlatforms$Outbound = { - aws?: - | Array +export type SyncReconcileRequestState$Outbound = { + currentRelease?: + | SyncReconcileRequestCurrentRelease$Outbound + | any | null | undefined; - azure?: - | Array + environmentInfo?: + | SyncReconcileRequestEnvironmentInfoGcp$Outbound + | SyncReconcileRequestEnvironmentInfoAzure$Outbound + | SyncReconcileRequestEnvironmentInfoLocal$Outbound + | SyncReconcileRequestEnvironmentInfoAws$Outbound + | SyncReconcileRequestEnvironmentInfoTest$Outbound + | any | null | undefined; - gcp?: - | Array + error?: SyncReconcileRequestError$Outbound | any | null | undefined; + platform: string; + protocolVersion: number; + retryRequested?: boolean | undefined; + runtimeMetadata?: + | SyncReconcileRequestRuntimeMetadata$Outbound + | any + | null + | undefined; + stackState?: SyncReconcileRequestStackState$Outbound | any | null | undefined; + status: string; + targetRelease?: + | SyncReconcileRequestTargetRelease$Outbound + | any | null | undefined; }; /** @internal */ -export const SyncReconcileRequestTargetReleaseExtendPlatforms$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseExtendPlatforms$Outbound, - SyncReconcileRequestTargetReleaseExtendPlatforms - > = z.object({ - aws: z.nullable( - z.array(z.lazy(() => - SyncReconcileRequestTargetReleaseExtendAw$outboundSchema - )), - ).optional(), - azure: z.nullable( - z.array(z.lazy(() => - SyncReconcileRequestTargetReleaseExtendAzure$outboundSchema - )), - ).optional(), - gcp: z.nullable( - z.array(z.lazy(() => - SyncReconcileRequestTargetReleaseExtendGcp$outboundSchema - )), - ).optional(), - }); +export const SyncReconcileRequestState$outboundSchema: z.ZodType< + SyncReconcileRequestState$Outbound, + SyncReconcileRequestState +> = z.object({ + currentRelease: z.nullable( + z.union([ + z.lazy(() => SyncReconcileRequestCurrentRelease$outboundSchema), + z.any(), + ]), + ).optional(), + environmentInfo: z.nullable( + z.union([ + z.lazy(() => SyncReconcileRequestEnvironmentInfoGcp$outboundSchema), + z.lazy(() => SyncReconcileRequestEnvironmentInfoAzure$outboundSchema), + z.lazy(() => SyncReconcileRequestEnvironmentInfoLocal$outboundSchema), + z.lazy(() => SyncReconcileRequestEnvironmentInfoAws$outboundSchema), + z.lazy(() => SyncReconcileRequestEnvironmentInfoTest$outboundSchema), + z.any(), + ]), + ).optional(), + error: z.nullable( + z.union([z.lazy(() => SyncReconcileRequestError$outboundSchema), z.any()]), + ).optional(), + platform: SyncReconcileRequestPlatform$outboundSchema, + protocolVersion: z.int(), + retryRequested: z.boolean().optional(), + runtimeMetadata: z.nullable( + z.union([ + z.lazy(() => SyncReconcileRequestRuntimeMetadata$outboundSchema), + z.any(), + ]), + ).optional(), + stackState: z.nullable( + z.union([ + z.lazy(() => SyncReconcileRequestStackState$outboundSchema), + z.any(), + ]), + ).optional(), + status: StateStatus$outboundSchema, + targetRelease: z.nullable( + z.union([ + z.lazy(() => SyncReconcileRequestTargetRelease$outboundSchema), + z.any(), + ]), + ).optional(), +}); -export function syncReconcileRequestTargetReleaseExtendPlatformsToJSON( - syncReconcileRequestTargetReleaseExtendPlatforms: - SyncReconcileRequestTargetReleaseExtendPlatforms, +export function syncReconcileRequestStateToJSON( + syncReconcileRequestState: SyncReconcileRequestState, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseExtendPlatforms$outboundSchema.parse( - syncReconcileRequestTargetReleaseExtendPlatforms, - ), + SyncReconcileRequestState$outboundSchema.parse(syncReconcileRequestState), ); } /** @internal */ -export type SyncReconcileRequestTargetReleaseExtend$Outbound = { - description: string; - id: string; - platforms: SyncReconcileRequestTargetReleaseExtendPlatforms$Outbound; +export const ResourceHeartbeatBackendEnum$outboundSchema: z.ZodEnum< + typeof ResourceHeartbeatBackendEnum +> = z.enum(ResourceHeartbeatBackendEnum); + +/** @internal */ +export const ResourceHeartbeatControllerPlatform$outboundSchema: z.ZodEnum< + typeof ResourceHeartbeatControllerPlatform +> = z.enum(ResourceHeartbeatControllerPlatform); + +/** @internal */ +export const DataHealth72$outboundSchema: z.ZodEnum = z + .enum(DataHealth72); + +/** @internal */ +export const StatusLifecycle72$outboundSchema: z.ZodEnum< + typeof StatusLifecycle72 +> = z.enum(StatusLifecycle72); + +/** @internal */ +export type ResourceHeartbeatStatus72$Outbound = { + health: string; + lifecycle: string; + message?: string | null | undefined; }; /** @internal */ -export const SyncReconcileRequestTargetReleaseExtend$outboundSchema: z.ZodType< - SyncReconcileRequestTargetReleaseExtend$Outbound, - SyncReconcileRequestTargetReleaseExtend +export const ResourceHeartbeatStatus72$outboundSchema: z.ZodType< + ResourceHeartbeatStatus72$Outbound, + ResourceHeartbeatStatus72 > = z.object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => - SyncReconcileRequestTargetReleaseExtendPlatforms$outboundSchema - ), + health: DataHealth72$outboundSchema, + lifecycle: StatusLifecycle72$outboundSchema, + message: z.nullable(z.string()).optional(), }); -export function syncReconcileRequestTargetReleaseExtendToJSON( - syncReconcileRequestTargetReleaseExtend: - SyncReconcileRequestTargetReleaseExtend, +export function resourceHeartbeatStatus72ToJSON( + resourceHeartbeatStatus72: ResourceHeartbeatStatus72, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseExtend$outboundSchema.parse( - syncReconcileRequestTargetReleaseExtend, - ), + ResourceHeartbeatStatus72$outboundSchema.parse(resourceHeartbeatStatus72), ); } /** @internal */ -export type SyncReconcileRequestTargetReleaseExtendUnion$Outbound = - | SyncReconcileRequestTargetReleaseExtend$Outbound - | string; +export type SyncReconcileRequestData8$Outbound = { + enabled?: boolean | null | undefined; + keyId: string; + keyOperations: Array; + keyType: string; + recoveryLevel?: string | null | undefined; + status: ResourceHeartbeatStatus72$Outbound; +}; /** @internal */ -export const SyncReconcileRequestTargetReleaseExtendUnion$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseExtendUnion$Outbound, - SyncReconcileRequestTargetReleaseExtendUnion - > = z.union([ - z.lazy(() => SyncReconcileRequestTargetReleaseExtend$outboundSchema), - z.string(), - ]); +export const SyncReconcileRequestData8$outboundSchema: z.ZodType< + SyncReconcileRequestData8$Outbound, + SyncReconcileRequestData8 +> = z.object({ + enabled: z.nullable(z.boolean()).optional(), + keyId: z.string(), + keyOperations: z.array(z.string()), + keyType: z.string(), + recoveryLevel: z.nullable(z.string()).optional(), + status: z.lazy(() => ResourceHeartbeatStatus72$outboundSchema), +}); -export function syncReconcileRequestTargetReleaseExtendUnionToJSON( - syncReconcileRequestTargetReleaseExtendUnion: - SyncReconcileRequestTargetReleaseExtendUnion, +export function syncReconcileRequestData8ToJSON( + syncReconcileRequestData8: SyncReconcileRequestData8, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseExtendUnion$outboundSchema.parse( - syncReconcileRequestTargetReleaseExtendUnion, - ), + SyncReconcileRequestData8$outboundSchema.parse(syncReconcileRequestData8), ); } /** @internal */ -export type SyncReconcileRequestTargetReleaseManagement1$Outbound = { - extend: { - [k: string]: Array< - SyncReconcileRequestTargetReleaseExtend$Outbound | string - >; - }; +export type DataAzureKeyVault2$Outbound = { + data: SyncReconcileRequestData8$Outbound; + provider: "azure-key-vault"; }; /** @internal */ -export const SyncReconcileRequestTargetReleaseManagement1$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseManagement1$Outbound, - SyncReconcileRequestTargetReleaseManagement1 - > = z.object({ - extend: z.record( - z.string(), - z.array(z.union([ - z.lazy(() => SyncReconcileRequestTargetReleaseExtend$outboundSchema), - z.string(), - ])), - ), - }); +export const DataAzureKeyVault2$outboundSchema: z.ZodType< + DataAzureKeyVault2$Outbound, + DataAzureKeyVault2 +> = z.object({ + data: z.lazy(() => SyncReconcileRequestData8$outboundSchema), + provider: z.literal("azure-key-vault"), +}); -export function syncReconcileRequestTargetReleaseManagement1ToJSON( - syncReconcileRequestTargetReleaseManagement1: - SyncReconcileRequestTargetReleaseManagement1, +export function dataAzureKeyVault2ToJSON( + dataAzureKeyVault2: DataAzureKeyVault2, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseManagement1$outboundSchema.parse( - syncReconcileRequestTargetReleaseManagement1, - ), + DataAzureKeyVault2$outboundSchema.parse(dataAzureKeyVault2), ); } /** @internal */ -export type SyncReconcileRequestTargetReleaseManagementUnion$Outbound = - | SyncReconcileRequestTargetReleaseManagement1$Outbound - | SyncReconcileRequestTargetReleaseManagement2$Outbound - | string; +export const DataHealth71$outboundSchema: z.ZodEnum = z + .enum(DataHealth71); /** @internal */ -export const SyncReconcileRequestTargetReleaseManagementUnion$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseManagementUnion$Outbound, - SyncReconcileRequestTargetReleaseManagementUnion - > = z.union([ - z.lazy(() => SyncReconcileRequestTargetReleaseManagement1$outboundSchema), - z.lazy(() => SyncReconcileRequestTargetReleaseManagement2$outboundSchema), - SyncReconcileRequestTargetReleaseManagementEnum$outboundSchema, - ]); - -export function syncReconcileRequestTargetReleaseManagementUnionToJSON( - syncReconcileRequestTargetReleaseManagementUnion: - SyncReconcileRequestTargetReleaseManagementUnion, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseManagementUnion$outboundSchema.parse( - syncReconcileRequestTargetReleaseManagementUnion, - ), - ); -} +export const StatusLifecycle71$outboundSchema: z.ZodEnum< + typeof StatusLifecycle71 +> = z.enum(StatusLifecycle71); /** @internal */ -export type TargetReleaseProfileStateAwResource$Outbound = { - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - resources: Array; +export type ResourceHeartbeatStatus71$Outbound = { + health: string; + lifecycle: string; + message?: string | null | undefined; }; /** @internal */ -export const TargetReleaseProfileStateAwResource$outboundSchema: z.ZodType< - TargetReleaseProfileStateAwResource$Outbound, - TargetReleaseProfileStateAwResource +export const ResourceHeartbeatStatus71$outboundSchema: z.ZodType< + ResourceHeartbeatStatus71$Outbound, + ResourceHeartbeatStatus71 > = z.object({ - condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) - .optional(), - resources: z.array(z.string()), + health: DataHealth71$outboundSchema, + lifecycle: StatusLifecycle71$outboundSchema, + message: z.nullable(z.string()).optional(), }); -export function targetReleaseProfileStateAwResourceToJSON( - targetReleaseProfileStateAwResource: TargetReleaseProfileStateAwResource, +export function resourceHeartbeatStatus71ToJSON( + resourceHeartbeatStatus71: ResourceHeartbeatStatus71, ): string { return JSON.stringify( - TargetReleaseProfileStateAwResource$outboundSchema.parse( - targetReleaseProfileStateAwResource, - ), + ResourceHeartbeatStatus71$outboundSchema.parse(resourceHeartbeatStatus71), ); } /** @internal */ -export type SyncReconcileRequestTargetReleaseProfileAwStack$Outbound = { - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - resources: Array; +export type SyncReconcileRequestData7$Outbound = { + algorithm?: string | null | undefined; + cryptoKeyName: string; + primaryState?: string | null | undefined; + primaryVersion?: string | null | undefined; + purpose: string; + status: ResourceHeartbeatStatus71$Outbound; }; /** @internal */ -export const SyncReconcileRequestTargetReleaseProfileAwStack$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseProfileAwStack$Outbound, - SyncReconcileRequestTargetReleaseProfileAwStack - > = z.object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); +export const SyncReconcileRequestData7$outboundSchema: z.ZodType< + SyncReconcileRequestData7$Outbound, + SyncReconcileRequestData7 +> = z.object({ + algorithm: z.nullable(z.string()).optional(), + cryptoKeyName: z.string(), + primaryState: z.nullable(z.string()).optional(), + primaryVersion: z.nullable(z.string()).optional(), + purpose: z.string(), + status: z.lazy(() => ResourceHeartbeatStatus71$outboundSchema), +}); -export function syncReconcileRequestTargetReleaseProfileAwStackToJSON( - syncReconcileRequestTargetReleaseProfileAwStack: - SyncReconcileRequestTargetReleaseProfileAwStack, +export function syncReconcileRequestData7ToJSON( + syncReconcileRequestData7: SyncReconcileRequestData7, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseProfileAwStack$outboundSchema.parse( - syncReconcileRequestTargetReleaseProfileAwStack, - ), + SyncReconcileRequestData7$outboundSchema.parse(syncReconcileRequestData7), ); } /** @internal */ -export type SyncReconcileRequestTargetReleaseProfileAwBinding$Outbound = { - resource?: TargetReleaseProfileStateAwResource$Outbound | undefined; - stack?: SyncReconcileRequestTargetReleaseProfileAwStack$Outbound | undefined; +export type DataGcpCloudKms$Outbound = { + data: SyncReconcileRequestData7$Outbound; + provider: "gcp-cloud-kms"; }; /** @internal */ -export const SyncReconcileRequestTargetReleaseProfileAwBinding$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseProfileAwBinding$Outbound, - SyncReconcileRequestTargetReleaseProfileAwBinding - > = z.object({ - resource: z.lazy(() => TargetReleaseProfileStateAwResource$outboundSchema) - .optional(), - stack: z.lazy(() => - SyncReconcileRequestTargetReleaseProfileAwStack$outboundSchema - ).optional(), - }); +export const DataGcpCloudKms$outboundSchema: z.ZodType< + DataGcpCloudKms$Outbound, + DataGcpCloudKms +> = z.object({ + data: z.lazy(() => SyncReconcileRequestData7$outboundSchema), + provider: z.literal("gcp-cloud-kms"), +}); -export function syncReconcileRequestTargetReleaseProfileAwBindingToJSON( - syncReconcileRequestTargetReleaseProfileAwBinding: - SyncReconcileRequestTargetReleaseProfileAwBinding, +export function dataGcpCloudKmsToJSON( + dataGcpCloudKms: DataGcpCloudKms, ): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseProfileAwBinding$outboundSchema.parse( - syncReconcileRequestTargetReleaseProfileAwBinding, - ), - ); + return JSON.stringify(DataGcpCloudKms$outboundSchema.parse(dataGcpCloudKms)); } /** @internal */ -export const SyncReconcileRequestTargetReleaseProfileEffect$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestTargetReleaseProfileEffect, - ); +export const DataHealth70$outboundSchema: z.ZodEnum = z + .enum(DataHealth70); /** @internal */ -export type SyncReconcileRequestTargetReleaseProfileAwGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; +export const StatusLifecycle70$outboundSchema: z.ZodEnum< + typeof StatusLifecycle70 +> = z.enum(StatusLifecycle70); + +/** @internal */ +export type ResourceHeartbeatStatus70$Outbound = { + health: string; + lifecycle: string; + message?: string | null | undefined; }; /** @internal */ -export const SyncReconcileRequestTargetReleaseProfileAwGrant$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseProfileAwGrant$Outbound, - SyncReconcileRequestTargetReleaseProfileAwGrant - > = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); +export const ResourceHeartbeatStatus70$outboundSchema: z.ZodType< + ResourceHeartbeatStatus70$Outbound, + ResourceHeartbeatStatus70 +> = z.object({ + health: DataHealth70$outboundSchema, + lifecycle: StatusLifecycle70$outboundSchema, + message: z.nullable(z.string()).optional(), +}); -export function syncReconcileRequestTargetReleaseProfileAwGrantToJSON( - syncReconcileRequestTargetReleaseProfileAwGrant: - SyncReconcileRequestTargetReleaseProfileAwGrant, +export function resourceHeartbeatStatus70ToJSON( + resourceHeartbeatStatus70: ResourceHeartbeatStatus70, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseProfileAwGrant$outboundSchema.parse( - syncReconcileRequestTargetReleaseProfileAwGrant, - ), + ResourceHeartbeatStatus70$outboundSchema.parse(resourceHeartbeatStatus70), ); } /** @internal */ -export type SyncReconcileRequestTargetReleaseProfileAw$Outbound = { - binding: SyncReconcileRequestTargetReleaseProfileAwBinding$Outbound; - description?: string | null | undefined; - effect?: string | undefined; - grant: SyncReconcileRequestTargetReleaseProfileAwGrant$Outbound; - label?: string | null | undefined; +export type SyncReconcileRequestData6$Outbound = { + enabled: boolean; + keyArn: string; + keySpec: string; + keyState: string; + keyUsage: string; + status: ResourceHeartbeatStatus70$Outbound; }; /** @internal */ -export const SyncReconcileRequestTargetReleaseProfileAw$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseProfileAw$Outbound, - SyncReconcileRequestTargetReleaseProfileAw - > = z.object({ - binding: z.lazy(() => - SyncReconcileRequestTargetReleaseProfileAwBinding$outboundSchema - ), - description: z.nullable(z.string()).optional(), - effect: SyncReconcileRequestTargetReleaseProfileEffect$outboundSchema - .optional(), - grant: z.lazy(() => - SyncReconcileRequestTargetReleaseProfileAwGrant$outboundSchema - ), - label: z.nullable(z.string()).optional(), - }); +export const SyncReconcileRequestData6$outboundSchema: z.ZodType< + SyncReconcileRequestData6$Outbound, + SyncReconcileRequestData6 +> = z.object({ + enabled: z.boolean(), + keyArn: z.string(), + keySpec: z.string(), + keyState: z.string(), + keyUsage: z.string(), + status: z.lazy(() => ResourceHeartbeatStatus70$outboundSchema), +}); -export function syncReconcileRequestTargetReleaseProfileAwToJSON( - syncReconcileRequestTargetReleaseProfileAw: - SyncReconcileRequestTargetReleaseProfileAw, +export function syncReconcileRequestData6ToJSON( + syncReconcileRequestData6: SyncReconcileRequestData6, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseProfileAw$outboundSchema.parse( - syncReconcileRequestTargetReleaseProfileAw, - ), + SyncReconcileRequestData6$outboundSchema.parse(syncReconcileRequestData6), ); } /** @internal */ -export type TargetReleaseProfileStateAzureResource$Outbound = { - scope: string; +export type DataAwsKms$Outbound = { + data: SyncReconcileRequestData6$Outbound; + provider: "aws-kms"; }; /** @internal */ -export const TargetReleaseProfileStateAzureResource$outboundSchema: z.ZodType< - TargetReleaseProfileStateAzureResource$Outbound, - TargetReleaseProfileStateAzureResource +export const DataAwsKms$outboundSchema: z.ZodType< + DataAwsKms$Outbound, + DataAwsKms > = z.object({ - scope: z.string(), + data: z.lazy(() => SyncReconcileRequestData6$outboundSchema), + provider: z.literal("aws-kms"), }); -export function targetReleaseProfileStateAzureResourceToJSON( - targetReleaseProfileStateAzureResource: - TargetReleaseProfileStateAzureResource, +export function dataAwsKmsToJSON(dataAwsKms: DataAwsKms): string { + return JSON.stringify(DataAwsKms$outboundSchema.parse(dataAwsKms)); +} + +/** @internal */ +export type SyncReconcileRequestDataUnion17$Outbound = + | DataAwsKms$Outbound + | DataGcpCloudKms$Outbound + | DataAzureKeyVault2$Outbound; + +/** @internal */ +export const SyncReconcileRequestDataUnion17$outboundSchema: z.ZodType< + SyncReconcileRequestDataUnion17$Outbound, + SyncReconcileRequestDataUnion17 +> = z.union([ + z.lazy(() => DataAwsKms$outboundSchema), + z.lazy(() => DataGcpCloudKms$outboundSchema), + z.lazy(() => DataAzureKeyVault2$outboundSchema), +]); + +export function syncReconcileRequestDataUnion17ToJSON( + syncReconcileRequestDataUnion17: SyncReconcileRequestDataUnion17, ): string { return JSON.stringify( - TargetReleaseProfileStateAzureResource$outboundSchema.parse( - targetReleaseProfileStateAzureResource, + SyncReconcileRequestDataUnion17$outboundSchema.parse( + syncReconcileRequestDataUnion17, ), ); } /** @internal */ -export type SyncReconcileRequestTargetReleaseProfileAzureStack$Outbound = { - scope: string; +export type DataKey$Outbound = { + data: + | DataAwsKms$Outbound + | DataGcpCloudKms$Outbound + | DataAzureKeyVault2$Outbound; + resourceType: "key"; }; /** @internal */ -export const SyncReconcileRequestTargetReleaseProfileAzureStack$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseProfileAzureStack$Outbound, - SyncReconcileRequestTargetReleaseProfileAzureStack - > = z.object({ - scope: z.string(), +export const DataKey$outboundSchema: z.ZodType = z + .object({ + data: z.union([ + z.lazy(() => DataAwsKms$outboundSchema), + z.lazy(() => DataGcpCloudKms$outboundSchema), + z.lazy(() => DataAzureKeyVault2$outboundSchema), + ]), + resourceType: z.literal("key"), }); -export function syncReconcileRequestTargetReleaseProfileAzureStackToJSON( - syncReconcileRequestTargetReleaseProfileAzureStack: - SyncReconcileRequestTargetReleaseProfileAzureStack, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseProfileAzureStack$outboundSchema.parse( - syncReconcileRequestTargetReleaseProfileAzureStack, - ), - ); +export function dataKeyToJSON(dataKey: DataKey): string { + return JSON.stringify(DataKey$outboundSchema.parse(dataKey)); } /** @internal */ -export type SyncReconcileRequestTargetReleaseProfileAzureBinding$Outbound = { - resource?: TargetReleaseProfileStateAzureResource$Outbound | undefined; - stack?: - | SyncReconcileRequestTargetReleaseProfileAzureStack$Outbound - | undefined; +export const SyncReconcileRequestAccessTest4$outboundSchema: z.ZodEnum< + typeof SyncReconcileRequestAccessTest4 +> = z.enum(SyncReconcileRequestAccessTest4); + +/** @internal */ +export const SyncReconcileRequestModelAvailability4$outboundSchema: z.ZodEnum< + typeof SyncReconcileRequestModelAvailability4 +> = z.enum(SyncReconcileRequestModelAvailability4); + +/** @internal */ +export const SyncReconcileRequestBlockerEnum4$outboundSchema: z.ZodEnum< + typeof SyncReconcileRequestBlockerEnum4 +> = z.enum(SyncReconcileRequestBlockerEnum4); + +/** @internal */ +export const SyncReconcileRequestClientApi4$outboundSchema: z.ZodEnum< + typeof SyncReconcileRequestClientApi4 +> = z.enum(SyncReconcileRequestClientApi4); + +/** @internal */ +export type SyncReconcileRequestModel4$Outbound = { + accessTest: string; + availability: string; + blockers: Array; + clientApis: Array; + errorCode?: string | null | undefined; + publicModelId: string; + testedAt?: string | null | undefined; }; /** @internal */ -export const SyncReconcileRequestTargetReleaseProfileAzureBinding$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseProfileAzureBinding$Outbound, - SyncReconcileRequestTargetReleaseProfileAzureBinding - > = z.object({ - resource: z.lazy(() => - TargetReleaseProfileStateAzureResource$outboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileRequestTargetReleaseProfileAzureStack$outboundSchema - ).optional(), - }); +export const SyncReconcileRequestModel4$outboundSchema: z.ZodType< + SyncReconcileRequestModel4$Outbound, + SyncReconcileRequestModel4 +> = z.object({ + accessTest: SyncReconcileRequestAccessTest4$outboundSchema, + availability: SyncReconcileRequestModelAvailability4$outboundSchema, + blockers: z.array(SyncReconcileRequestBlockerEnum4$outboundSchema), + clientApis: z.array(SyncReconcileRequestClientApi4$outboundSchema), + errorCode: z.nullable(z.string()).optional(), + publicModelId: z.string(), + testedAt: z.nullable(z.date().transform(v => v.toISOString())).optional(), +}); -export function syncReconcileRequestTargetReleaseProfileAzureBindingToJSON( - syncReconcileRequestTargetReleaseProfileAzureBinding: - SyncReconcileRequestTargetReleaseProfileAzureBinding, +export function syncReconcileRequestModel4ToJSON( + syncReconcileRequestModel4: SyncReconcileRequestModel4, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseProfileAzureBinding$outboundSchema.parse( - syncReconcileRequestTargetReleaseProfileAzureBinding, - ), + SyncReconcileRequestModel4$outboundSchema.parse(syncReconcileRequestModel4), ); } /** @internal */ -export type SyncReconcileRequestTargetReleaseProfileAzureGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; +export const SyncReconcileRequestAvailabilitySource4$outboundSchema: z.ZodEnum< + typeof SyncReconcileRequestAvailabilitySource4 +> = z.enum(SyncReconcileRequestAvailabilitySource4); + +/** @internal */ +export type SyncReconcileRequestAvailability4$Outbound = { + catalogRevision: string; + location?: string | null | undefined; + models: Array; + source: string; }; /** @internal */ -export const SyncReconcileRequestTargetReleaseProfileAzureGrant$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseProfileAzureGrant$Outbound, - SyncReconcileRequestTargetReleaseProfileAzureGrant - > = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); +export const SyncReconcileRequestAvailability4$outboundSchema: z.ZodType< + SyncReconcileRequestAvailability4$Outbound, + SyncReconcileRequestAvailability4 +> = z.object({ + catalogRevision: z.string(), + location: z.nullable(z.string()).optional(), + models: z.array(z.lazy(() => SyncReconcileRequestModel4$outboundSchema)), + source: SyncReconcileRequestAvailabilitySource4$outboundSchema, +}); -export function syncReconcileRequestTargetReleaseProfileAzureGrantToJSON( - syncReconcileRequestTargetReleaseProfileAzureGrant: - SyncReconcileRequestTargetReleaseProfileAzureGrant, +export function syncReconcileRequestAvailability4ToJSON( + syncReconcileRequestAvailability4: SyncReconcileRequestAvailability4, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseProfileAzureGrant$outboundSchema.parse( - syncReconcileRequestTargetReleaseProfileAzureGrant, + SyncReconcileRequestAvailability4$outboundSchema.parse( + syncReconcileRequestAvailability4, ), ); } /** @internal */ -export type SyncReconcileRequestTargetReleaseProfileAzure$Outbound = { - binding: SyncReconcileRequestTargetReleaseProfileAzureBinding$Outbound; - description?: string | null | undefined; - grant: SyncReconcileRequestTargetReleaseProfileAzureGrant$Outbound; - label?: string | null | undefined; -}; +export type Availability$Outbound = + | SyncReconcileRequestAvailability4$Outbound + | any; /** @internal */ -export const SyncReconcileRequestTargetReleaseProfileAzure$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseProfileAzure$Outbound, - SyncReconcileRequestTargetReleaseProfileAzure - > = z.object({ - binding: z.lazy(() => - SyncReconcileRequestTargetReleaseProfileAzureBinding$outboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncReconcileRequestTargetReleaseProfileAzureGrant$outboundSchema - ), - label: z.nullable(z.string()).optional(), - }); +export const Availability$outboundSchema: z.ZodType< + Availability$Outbound, + Availability +> = z.union([ + z.lazy(() => SyncReconcileRequestAvailability4$outboundSchema), + z.any(), +]); -export function syncReconcileRequestTargetReleaseProfileAzureToJSON( - syncReconcileRequestTargetReleaseProfileAzure: - SyncReconcileRequestTargetReleaseProfileAzure, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseProfileAzure$outboundSchema.parse( - syncReconcileRequestTargetReleaseProfileAzure, - ), - ); +export function availabilityToJSON(availability: Availability): string { + return JSON.stringify(Availability$outboundSchema.parse(availability)); } /** @internal */ -export type TargetReleaseProfileConditionStateResource$Outbound = { - expression: string; - title: string; +export const DataReason69$outboundSchema: z.ZodEnum = z + .enum(DataReason69); + +/** @internal */ +export const StatusSeverity69$outboundSchema: z.ZodEnum< + typeof StatusSeverity69 +> = z.enum(StatusSeverity69); + +/** @internal */ +export type DataCollectionIssue69$Outbound = { + message: string; + reason: string; + severity: string; + source: string; }; /** @internal */ -export const TargetReleaseProfileConditionStateResource$outboundSchema: - z.ZodType< - TargetReleaseProfileConditionStateResource$Outbound, - TargetReleaseProfileConditionStateResource - > = z.object({ - expression: z.string(), - title: z.string(), - }); +export const DataCollectionIssue69$outboundSchema: z.ZodType< + DataCollectionIssue69$Outbound, + DataCollectionIssue69 +> = z.object({ + message: z.string(), + reason: DataReason69$outboundSchema, + severity: StatusSeverity69$outboundSchema, + source: z.string(), +}); -export function targetReleaseProfileConditionStateResourceToJSON( - targetReleaseProfileConditionStateResource: - TargetReleaseProfileConditionStateResource, +export function dataCollectionIssue69ToJSON( + dataCollectionIssue69: DataCollectionIssue69, ): string { return JSON.stringify( - TargetReleaseProfileConditionStateResource$outboundSchema.parse( - targetReleaseProfileConditionStateResource, - ), + DataCollectionIssue69$outboundSchema.parse(dataCollectionIssue69), ); } /** @internal */ -export type TargetReleaseProfileStateResourceConditionUnion$Outbound = - | TargetReleaseProfileConditionStateResource$Outbound - | any; +export const DataHealth69$outboundSchema: z.ZodEnum = z + .enum(DataHealth69); /** @internal */ -export const TargetReleaseProfileStateResourceConditionUnion$outboundSchema: - z.ZodType< - TargetReleaseProfileStateResourceConditionUnion$Outbound, - TargetReleaseProfileStateResourceConditionUnion - > = z.union([ - z.lazy(() => TargetReleaseProfileConditionStateResource$outboundSchema), - z.any(), - ]); +export const StatusLifecycle69$outboundSchema: z.ZodEnum< + typeof StatusLifecycle69 +> = z.enum(StatusLifecycle69); -export function targetReleaseProfileStateResourceConditionUnionToJSON( - targetReleaseProfileStateResourceConditionUnion: - TargetReleaseProfileStateResourceConditionUnion, +/** @internal */ +export type ResourceHeartbeatStatus69$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const ResourceHeartbeatStatus69$outboundSchema: z.ZodType< + ResourceHeartbeatStatus69$Outbound, + ResourceHeartbeatStatus69 +> = z.object({ + collectionIssues: z.array(z.lazy(() => DataCollectionIssue69$outboundSchema)), + health: DataHealth69$outboundSchema, + lifecycle: StatusLifecycle69$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function resourceHeartbeatStatus69ToJSON( + resourceHeartbeatStatus69: ResourceHeartbeatStatus69, ): string { return JSON.stringify( - TargetReleaseProfileStateResourceConditionUnion$outboundSchema.parse( - targetReleaseProfileStateResourceConditionUnion, - ), + ResourceHeartbeatStatus69$outboundSchema.parse(resourceHeartbeatStatus69), ); } /** @internal */ -export type TargetReleaseProfileStateGcpResource$Outbound = { - condition?: - | TargetReleaseProfileConditionStateResource$Outbound +export type DataExternal$Outbound = { + availability?: + | SyncReconcileRequestAvailability4$Outbound | any | null | undefined; - scope: string; + provider: string; + status: ResourceHeartbeatStatus69$Outbound; + backend: "external"; }; /** @internal */ -export const TargetReleaseProfileStateGcpResource$outboundSchema: z.ZodType< - TargetReleaseProfileStateGcpResource$Outbound, - TargetReleaseProfileStateGcpResource +export const DataExternal$outboundSchema: z.ZodType< + DataExternal$Outbound, + DataExternal > = z.object({ - condition: z.nullable( + availability: z.nullable( z.union([ - z.lazy(() => TargetReleaseProfileConditionStateResource$outboundSchema), + z.lazy(() => SyncReconcileRequestAvailability4$outboundSchema), z.any(), ]), ).optional(), - scope: z.string(), + provider: z.string(), + status: z.lazy(() => ResourceHeartbeatStatus69$outboundSchema), + backend: z.literal("external"), }); -export function targetReleaseProfileStateGcpResourceToJSON( - targetReleaseProfileStateGcpResource: TargetReleaseProfileStateGcpResource, -): string { - return JSON.stringify( - TargetReleaseProfileStateGcpResource$outboundSchema.parse( - targetReleaseProfileStateGcpResource, - ), - ); +export function dataExternalToJSON(dataExternal: DataExternal): string { + return JSON.stringify(DataExternal$outboundSchema.parse(dataExternal)); } /** @internal */ -export type TargetReleaseProfileConditionState$Outbound = { - expression: string; - title: string; +export const SyncReconcileRequestAccessTest3$outboundSchema: z.ZodEnum< + typeof SyncReconcileRequestAccessTest3 +> = z.enum(SyncReconcileRequestAccessTest3); + +/** @internal */ +export const SyncReconcileRequestModelAvailability3$outboundSchema: z.ZodEnum< + typeof SyncReconcileRequestModelAvailability3 +> = z.enum(SyncReconcileRequestModelAvailability3); + +/** @internal */ +export const SyncReconcileRequestBlockerEnum3$outboundSchema: z.ZodEnum< + typeof SyncReconcileRequestBlockerEnum3 +> = z.enum(SyncReconcileRequestBlockerEnum3); + +/** @internal */ +export const SyncReconcileRequestClientApi3$outboundSchema: z.ZodEnum< + typeof SyncReconcileRequestClientApi3 +> = z.enum(SyncReconcileRequestClientApi3); + +/** @internal */ +export type SyncReconcileRequestModel3$Outbound = { + accessTest: string; + availability: string; + blockers: Array; + clientApis: Array; + errorCode?: string | null | undefined; + publicModelId: string; + testedAt?: string | null | undefined; }; /** @internal */ -export const TargetReleaseProfileConditionState$outboundSchema: z.ZodType< - TargetReleaseProfileConditionState$Outbound, - TargetReleaseProfileConditionState +export const SyncReconcileRequestModel3$outboundSchema: z.ZodType< + SyncReconcileRequestModel3$Outbound, + SyncReconcileRequestModel3 > = z.object({ - expression: z.string(), - title: z.string(), + accessTest: SyncReconcileRequestAccessTest3$outboundSchema, + availability: SyncReconcileRequestModelAvailability3$outboundSchema, + blockers: z.array(SyncReconcileRequestBlockerEnum3$outboundSchema), + clientApis: z.array(SyncReconcileRequestClientApi3$outboundSchema), + errorCode: z.nullable(z.string()).optional(), + publicModelId: z.string(), + testedAt: z.nullable(z.date().transform(v => v.toISOString())).optional(), }); -export function targetReleaseProfileConditionStateToJSON( - targetReleaseProfileConditionState: TargetReleaseProfileConditionState, +export function syncReconcileRequestModel3ToJSON( + syncReconcileRequestModel3: SyncReconcileRequestModel3, ): string { return JSON.stringify( - TargetReleaseProfileConditionState$outboundSchema.parse( - targetReleaseProfileConditionState, - ), + SyncReconcileRequestModel3$outboundSchema.parse(syncReconcileRequestModel3), ); } /** @internal */ -export type TargetReleaseProfileStateConditionUnion$Outbound = - | TargetReleaseProfileConditionState$Outbound - | any; +export const SyncReconcileRequestAvailabilitySource3$outboundSchema: z.ZodEnum< + typeof SyncReconcileRequestAvailabilitySource3 +> = z.enum(SyncReconcileRequestAvailabilitySource3); /** @internal */ -export const TargetReleaseProfileStateConditionUnion$outboundSchema: z.ZodType< - TargetReleaseProfileStateConditionUnion$Outbound, - TargetReleaseProfileStateConditionUnion -> = z.union([ - z.lazy(() => TargetReleaseProfileConditionState$outboundSchema), - z.any(), -]); +export type SyncReconcileRequestAvailability3$Outbound = { + catalogRevision: string; + location?: string | null | undefined; + models: Array; + source: string; +}; -export function targetReleaseProfileStateConditionUnionToJSON( - targetReleaseProfileStateConditionUnion: - TargetReleaseProfileStateConditionUnion, +/** @internal */ +export const SyncReconcileRequestAvailability3$outboundSchema: z.ZodType< + SyncReconcileRequestAvailability3$Outbound, + SyncReconcileRequestAvailability3 +> = z.object({ + catalogRevision: z.string(), + location: z.nullable(z.string()).optional(), + models: z.array(z.lazy(() => SyncReconcileRequestModel3$outboundSchema)), + source: SyncReconcileRequestAvailabilitySource3$outboundSchema, +}); + +export function syncReconcileRequestAvailability3ToJSON( + syncReconcileRequestAvailability3: SyncReconcileRequestAvailability3, ): string { return JSON.stringify( - TargetReleaseProfileStateConditionUnion$outboundSchema.parse( - targetReleaseProfileStateConditionUnion, + SyncReconcileRequestAvailability3$outboundSchema.parse( + syncReconcileRequestAvailability3, ), ); } /** @internal */ -export type SyncReconcileRequestTargetReleaseProfileGcpStack$Outbound = { - condition?: - | TargetReleaseProfileConditionState$Outbound - | any - | null - | undefined; - scope: string; -}; +export const DataReason68$outboundSchema: z.ZodEnum = z + .enum(DataReason68); /** @internal */ -export const SyncReconcileRequestTargetReleaseProfileGcpStack$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseProfileGcpStack$Outbound, - SyncReconcileRequestTargetReleaseProfileGcpStack - > = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => TargetReleaseProfileConditionState$outboundSchema), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncReconcileRequestTargetReleaseProfileGcpStackToJSON( - syncReconcileRequestTargetReleaseProfileGcpStack: - SyncReconcileRequestTargetReleaseProfileGcpStack, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseProfileGcpStack$outboundSchema.parse( - syncReconcileRequestTargetReleaseProfileGcpStack, - ), - ); -} +export const StatusSeverity68$outboundSchema: z.ZodEnum< + typeof StatusSeverity68 +> = z.enum(StatusSeverity68); /** @internal */ -export type SyncReconcileRequestTargetReleaseProfileGcpBinding$Outbound = { - resource?: TargetReleaseProfileStateGcpResource$Outbound | undefined; - stack?: SyncReconcileRequestTargetReleaseProfileGcpStack$Outbound | undefined; +export type DataCollectionIssue68$Outbound = { + message: string; + reason: string; + severity: string; + source: string; }; /** @internal */ -export const SyncReconcileRequestTargetReleaseProfileGcpBinding$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseProfileGcpBinding$Outbound, - SyncReconcileRequestTargetReleaseProfileGcpBinding - > = z.object({ - resource: z.lazy(() => TargetReleaseProfileStateGcpResource$outboundSchema) - .optional(), - stack: z.lazy(() => - SyncReconcileRequestTargetReleaseProfileGcpStack$outboundSchema - ).optional(), - }); +export const DataCollectionIssue68$outboundSchema: z.ZodType< + DataCollectionIssue68$Outbound, + DataCollectionIssue68 +> = z.object({ + message: z.string(), + reason: DataReason68$outboundSchema, + severity: StatusSeverity68$outboundSchema, + source: z.string(), +}); -export function syncReconcileRequestTargetReleaseProfileGcpBindingToJSON( - syncReconcileRequestTargetReleaseProfileGcpBinding: - SyncReconcileRequestTargetReleaseProfileGcpBinding, +export function dataCollectionIssue68ToJSON( + dataCollectionIssue68: DataCollectionIssue68, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseProfileGcpBinding$outboundSchema.parse( - syncReconcileRequestTargetReleaseProfileGcpBinding, - ), + DataCollectionIssue68$outboundSchema.parse(dataCollectionIssue68), ); } /** @internal */ -export type SyncReconcileRequestTargetReleaseProfileGcpGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; +export const DataHealth68$outboundSchema: z.ZodEnum = z + .enum(DataHealth68); + +/** @internal */ +export const StatusLifecycle68$outboundSchema: z.ZodEnum< + typeof StatusLifecycle68 +> = z.enum(StatusLifecycle68); + +/** @internal */ +export type ResourceHeartbeatStatus68$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; }; /** @internal */ -export const SyncReconcileRequestTargetReleaseProfileGcpGrant$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseProfileGcpGrant$Outbound, - SyncReconcileRequestTargetReleaseProfileGcpGrant - > = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); +export const ResourceHeartbeatStatus68$outboundSchema: z.ZodType< + ResourceHeartbeatStatus68$Outbound, + ResourceHeartbeatStatus68 +> = z.object({ + collectionIssues: z.array(z.lazy(() => DataCollectionIssue68$outboundSchema)), + health: DataHealth68$outboundSchema, + lifecycle: StatusLifecycle68$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); -export function syncReconcileRequestTargetReleaseProfileGcpGrantToJSON( - syncReconcileRequestTargetReleaseProfileGcpGrant: - SyncReconcileRequestTargetReleaseProfileGcpGrant, +export function resourceHeartbeatStatus68ToJSON( + resourceHeartbeatStatus68: ResourceHeartbeatStatus68, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseProfileGcpGrant$outboundSchema.parse( - syncReconcileRequestTargetReleaseProfileGcpGrant, - ), + ResourceHeartbeatStatus68$outboundSchema.parse(resourceHeartbeatStatus68), ); } /** @internal */ -export type SyncReconcileRequestTargetReleaseProfileGcp$Outbound = { - binding: SyncReconcileRequestTargetReleaseProfileGcpBinding$Outbound; - description?: string | null | undefined; - grant: SyncReconcileRequestTargetReleaseProfileGcpGrant$Outbound; - label?: string | null | undefined; +export type DataAzureFoundry$Outbound = { + accountName: string; + availability: SyncReconcileRequestAvailability3$Outbound; + endpoint?: string | null | undefined; + location?: string | null | undefined; + resourceGroup?: string | null | undefined; + status: ResourceHeartbeatStatus68$Outbound; + backend: "azureFoundry"; }; /** @internal */ -export const SyncReconcileRequestTargetReleaseProfileGcp$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseProfileGcp$Outbound, - SyncReconcileRequestTargetReleaseProfileGcp - > = z.object({ - binding: z.lazy(() => - SyncReconcileRequestTargetReleaseProfileGcpBinding$outboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncReconcileRequestTargetReleaseProfileGcpGrant$outboundSchema - ), - label: z.nullable(z.string()).optional(), - }); +export const DataAzureFoundry$outboundSchema: z.ZodType< + DataAzureFoundry$Outbound, + DataAzureFoundry +> = z.object({ + accountName: z.string(), + availability: z.lazy(() => SyncReconcileRequestAvailability3$outboundSchema), + endpoint: z.nullable(z.string()).optional(), + location: z.nullable(z.string()).optional(), + resourceGroup: z.nullable(z.string()).optional(), + status: z.lazy(() => ResourceHeartbeatStatus68$outboundSchema), + backend: z.literal("azureFoundry"), +}); -export function syncReconcileRequestTargetReleaseProfileGcpToJSON( - syncReconcileRequestTargetReleaseProfileGcp: - SyncReconcileRequestTargetReleaseProfileGcp, +export function dataAzureFoundryToJSON( + dataAzureFoundry: DataAzureFoundry, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseProfileGcp$outboundSchema.parse( - syncReconcileRequestTargetReleaseProfileGcp, - ), + DataAzureFoundry$outboundSchema.parse(dataAzureFoundry), ); } /** @internal */ -export type SyncReconcileRequestTargetReleaseProfilePlatforms$Outbound = { - aws?: - | Array - | null - | undefined; - azure?: - | Array - | null - | undefined; - gcp?: - | Array - | null - | undefined; -}; +export const SyncReconcileRequestAccessTest2$outboundSchema: z.ZodEnum< + typeof SyncReconcileRequestAccessTest2 +> = z.enum(SyncReconcileRequestAccessTest2); /** @internal */ -export const SyncReconcileRequestTargetReleaseProfilePlatforms$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseProfilePlatforms$Outbound, - SyncReconcileRequestTargetReleaseProfilePlatforms - > = z.object({ - aws: z.nullable( - z.array(z.lazy(() => - SyncReconcileRequestTargetReleaseProfileAw$outboundSchema - )), - ).optional(), - azure: z.nullable( - z.array(z.lazy(() => - SyncReconcileRequestTargetReleaseProfileAzure$outboundSchema - )), - ).optional(), - gcp: z.nullable( - z.array(z.lazy(() => - SyncReconcileRequestTargetReleaseProfileGcp$outboundSchema - )), - ).optional(), - }); +export const SyncReconcileRequestModelAvailability2$outboundSchema: z.ZodEnum< + typeof SyncReconcileRequestModelAvailability2 +> = z.enum(SyncReconcileRequestModelAvailability2); -export function syncReconcileRequestTargetReleaseProfilePlatformsToJSON( - syncReconcileRequestTargetReleaseProfilePlatforms: - SyncReconcileRequestTargetReleaseProfilePlatforms, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseProfilePlatforms$outboundSchema.parse( - syncReconcileRequestTargetReleaseProfilePlatforms, - ), - ); -} +/** @internal */ +export const SyncReconcileRequestBlockerEnum2$outboundSchema: z.ZodEnum< + typeof SyncReconcileRequestBlockerEnum2 +> = z.enum(SyncReconcileRequestBlockerEnum2); /** @internal */ -export type SyncReconcileRequestTargetReleaseProfile$Outbound = { - description: string; - id: string; - platforms: SyncReconcileRequestTargetReleaseProfilePlatforms$Outbound; +export const SyncReconcileRequestClientApi2$outboundSchema: z.ZodEnum< + typeof SyncReconcileRequestClientApi2 +> = z.enum(SyncReconcileRequestClientApi2); + +/** @internal */ +export type SyncReconcileRequestModel2$Outbound = { + accessTest: string; + availability: string; + blockers: Array; + clientApis: Array; + errorCode?: string | null | undefined; + publicModelId: string; + testedAt?: string | null | undefined; }; /** @internal */ -export const SyncReconcileRequestTargetReleaseProfile$outboundSchema: z.ZodType< - SyncReconcileRequestTargetReleaseProfile$Outbound, - SyncReconcileRequestTargetReleaseProfile +export const SyncReconcileRequestModel2$outboundSchema: z.ZodType< + SyncReconcileRequestModel2$Outbound, + SyncReconcileRequestModel2 > = z.object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => - SyncReconcileRequestTargetReleaseProfilePlatforms$outboundSchema - ), + accessTest: SyncReconcileRequestAccessTest2$outboundSchema, + availability: SyncReconcileRequestModelAvailability2$outboundSchema, + blockers: z.array(SyncReconcileRequestBlockerEnum2$outboundSchema), + clientApis: z.array(SyncReconcileRequestClientApi2$outboundSchema), + errorCode: z.nullable(z.string()).optional(), + publicModelId: z.string(), + testedAt: z.nullable(z.date().transform(v => v.toISOString())).optional(), }); -export function syncReconcileRequestTargetReleaseProfileToJSON( - syncReconcileRequestTargetReleaseProfile: - SyncReconcileRequestTargetReleaseProfile, +export function syncReconcileRequestModel2ToJSON( + syncReconcileRequestModel2: SyncReconcileRequestModel2, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseProfile$outboundSchema.parse( - syncReconcileRequestTargetReleaseProfile, - ), + SyncReconcileRequestModel2$outboundSchema.parse(syncReconcileRequestModel2), ); } /** @internal */ -export type SyncReconcileRequestTargetReleaseProfileUnion$Outbound = - | SyncReconcileRequestTargetReleaseProfile$Outbound - | string; +export const SyncReconcileRequestAvailabilitySource2$outboundSchema: z.ZodEnum< + typeof SyncReconcileRequestAvailabilitySource2 +> = z.enum(SyncReconcileRequestAvailabilitySource2); /** @internal */ -export const SyncReconcileRequestTargetReleaseProfileUnion$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseProfileUnion$Outbound, - SyncReconcileRequestTargetReleaseProfileUnion - > = z.union([ - z.lazy(() => SyncReconcileRequestTargetReleaseProfile$outboundSchema), - z.string(), - ]); +export type SyncReconcileRequestAvailability2$Outbound = { + catalogRevision: string; + location?: string | null | undefined; + models: Array; + source: string; +}; -export function syncReconcileRequestTargetReleaseProfileUnionToJSON( - syncReconcileRequestTargetReleaseProfileUnion: - SyncReconcileRequestTargetReleaseProfileUnion, +/** @internal */ +export const SyncReconcileRequestAvailability2$outboundSchema: z.ZodType< + SyncReconcileRequestAvailability2$Outbound, + SyncReconcileRequestAvailability2 +> = z.object({ + catalogRevision: z.string(), + location: z.nullable(z.string()).optional(), + models: z.array(z.lazy(() => SyncReconcileRequestModel2$outboundSchema)), + source: SyncReconcileRequestAvailabilitySource2$outboundSchema, +}); + +export function syncReconcileRequestAvailability2ToJSON( + syncReconcileRequestAvailability2: SyncReconcileRequestAvailability2, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseProfileUnion$outboundSchema.parse( - syncReconcileRequestTargetReleaseProfileUnion, + SyncReconcileRequestAvailability2$outboundSchema.parse( + syncReconcileRequestAvailability2, ), ); } /** @internal */ -export type SyncReconcileRequestTargetReleasePermissions$Outbound = { - management?: - | SyncReconcileRequestTargetReleaseManagement1$Outbound - | SyncReconcileRequestTargetReleaseManagement2$Outbound - | string - | undefined; - profiles: { - [k: string]: { - [k: string]: Array< - SyncReconcileRequestTargetReleaseProfile$Outbound | string - >; - }; - }; -}; +export const DataReason67$outboundSchema: z.ZodEnum = z + .enum(DataReason67); /** @internal */ -export const SyncReconcileRequestTargetReleasePermissions$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleasePermissions$Outbound, - SyncReconcileRequestTargetReleasePermissions - > = z.object({ - management: z.union([ - z.lazy(() => SyncReconcileRequestTargetReleaseManagement1$outboundSchema), - z.lazy(() => SyncReconcileRequestTargetReleaseManagement2$outboundSchema), - SyncReconcileRequestTargetReleaseManagementEnum$outboundSchema, - ]).optional(), - profiles: z.record( - z.string(), - z.record( - z.string(), - z.array( - z.union([ - z.lazy(() => - SyncReconcileRequestTargetReleaseProfile$outboundSchema - ), - z.string(), - ]), - ), - ), - ), - }); +export const StatusSeverity67$outboundSchema: z.ZodEnum< + typeof StatusSeverity67 +> = z.enum(StatusSeverity67); + +/** @internal */ +export type DataCollectionIssue67$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; -export function syncReconcileRequestTargetReleasePermissionsToJSON( - syncReconcileRequestTargetReleasePermissions: - SyncReconcileRequestTargetReleasePermissions, +/** @internal */ +export const DataCollectionIssue67$outboundSchema: z.ZodType< + DataCollectionIssue67$Outbound, + DataCollectionIssue67 +> = z.object({ + message: z.string(), + reason: DataReason67$outboundSchema, + severity: StatusSeverity67$outboundSchema, + source: z.string(), +}); + +export function dataCollectionIssue67ToJSON( + dataCollectionIssue67: DataCollectionIssue67, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleasePermissions$outboundSchema.parse( - syncReconcileRequestTargetReleasePermissions, - ), + DataCollectionIssue67$outboundSchema.parse(dataCollectionIssue67), ); } /** @internal */ -export type SyncReconcileRequestTargetReleaseConfig$Outbound = { - id: string; - type: string; - [additionalProperties: string]: unknown; +export const DataHealth67$outboundSchema: z.ZodEnum = z + .enum(DataHealth67); + +/** @internal */ +export const StatusLifecycle67$outboundSchema: z.ZodEnum< + typeof StatusLifecycle67 +> = z.enum(StatusLifecycle67); + +/** @internal */ +export type ResourceHeartbeatStatus67$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; }; /** @internal */ -export const SyncReconcileRequestTargetReleaseConfig$outboundSchema: z.ZodType< - SyncReconcileRequestTargetReleaseConfig$Outbound, - SyncReconcileRequestTargetReleaseConfig +export const ResourceHeartbeatStatus67$outboundSchema: z.ZodType< + ResourceHeartbeatStatus67$Outbound, + ResourceHeartbeatStatus67 > = z.object({ - id: z.string(), - type: z.string(), - additionalProperties: z.record(z.string(), z.nullable(z.any())).optional(), -}).transform((v) => { - return { - ...v.additionalProperties, - ...remap$(v, { - additionalProperties: null, - }), - }; + collectionIssues: z.array(z.lazy(() => DataCollectionIssue67$outboundSchema)), + health: DataHealth67$outboundSchema, + lifecycle: StatusLifecycle67$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), }); -export function syncReconcileRequestTargetReleaseConfigToJSON( - syncReconcileRequestTargetReleaseConfig: - SyncReconcileRequestTargetReleaseConfig, +export function resourceHeartbeatStatus67ToJSON( + resourceHeartbeatStatus67: ResourceHeartbeatStatus67, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseConfig$outboundSchema.parse( - syncReconcileRequestTargetReleaseConfig, - ), + ResourceHeartbeatStatus67$outboundSchema.parse(resourceHeartbeatStatus67), ); } /** @internal */ -export type SyncReconcileRequestTargetReleaseDependency$Outbound = { - id: string; - type: string; +export type DataGcpVertex$Outbound = { + availability: SyncReconcileRequestAvailability2$Outbound; + location: string; + project: string; + status: ResourceHeartbeatStatus67$Outbound; + backend: "gcpVertex"; }; /** @internal */ -export const SyncReconcileRequestTargetReleaseDependency$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseDependency$Outbound, - SyncReconcileRequestTargetReleaseDependency - > = z.object({ - id: z.string(), - type: z.string(), - }); +export const DataGcpVertex$outboundSchema: z.ZodType< + DataGcpVertex$Outbound, + DataGcpVertex +> = z.object({ + availability: z.lazy(() => SyncReconcileRequestAvailability2$outboundSchema), + location: z.string(), + project: z.string(), + status: z.lazy(() => ResourceHeartbeatStatus67$outboundSchema), + backend: z.literal("gcpVertex"), +}); -export function syncReconcileRequestTargetReleaseDependencyToJSON( - syncReconcileRequestTargetReleaseDependency: - SyncReconcileRequestTargetReleaseDependency, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseDependency$outboundSchema.parse( - syncReconcileRequestTargetReleaseDependency, - ), - ); +export function dataGcpVertexToJSON(dataGcpVertex: DataGcpVertex): string { + return JSON.stringify(DataGcpVertex$outboundSchema.parse(dataGcpVertex)); } /** @internal */ -export const TargetReleaseStateLifecycle$outboundSchema: z.ZodEnum< - typeof TargetReleaseStateLifecycle -> = z.enum(TargetReleaseStateLifecycle); +export const SyncReconcileRequestAccessTest1$outboundSchema: z.ZodEnum< + typeof SyncReconcileRequestAccessTest1 +> = z.enum(SyncReconcileRequestAccessTest1); /** @internal */ -export type SyncReconcileRequestTargetReleaseResources$Outbound = { - config: SyncReconcileRequestTargetReleaseConfig$Outbound; - dependencies: Array; - lifecycle: string; - remoteAccess?: boolean | undefined; +export const SyncReconcileRequestModelAvailability1$outboundSchema: z.ZodEnum< + typeof SyncReconcileRequestModelAvailability1 +> = z.enum(SyncReconcileRequestModelAvailability1); + +/** @internal */ +export const SyncReconcileRequestBlockerEnum1$outboundSchema: z.ZodEnum< + typeof SyncReconcileRequestBlockerEnum1 +> = z.enum(SyncReconcileRequestBlockerEnum1); + +/** @internal */ +export const SyncReconcileRequestClientApi1$outboundSchema: z.ZodEnum< + typeof SyncReconcileRequestClientApi1 +> = z.enum(SyncReconcileRequestClientApi1); + +/** @internal */ +export type SyncReconcileRequestModel1$Outbound = { + accessTest: string; + availability: string; + blockers: Array; + clientApis: Array; + errorCode?: string | null | undefined; + publicModelId: string; + testedAt?: string | null | undefined; }; /** @internal */ -export const SyncReconcileRequestTargetReleaseResources$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseResources$Outbound, - SyncReconcileRequestTargetReleaseResources - > = z.object({ - config: z.lazy(() => - SyncReconcileRequestTargetReleaseConfig$outboundSchema - ), - dependencies: z.array( - z.lazy(() => SyncReconcileRequestTargetReleaseDependency$outboundSchema), - ), - lifecycle: TargetReleaseStateLifecycle$outboundSchema, - remoteAccess: z.boolean().optional(), - }); +export const SyncReconcileRequestModel1$outboundSchema: z.ZodType< + SyncReconcileRequestModel1$Outbound, + SyncReconcileRequestModel1 +> = z.object({ + accessTest: SyncReconcileRequestAccessTest1$outboundSchema, + availability: SyncReconcileRequestModelAvailability1$outboundSchema, + blockers: z.array(SyncReconcileRequestBlockerEnum1$outboundSchema), + clientApis: z.array(SyncReconcileRequestClientApi1$outboundSchema), + errorCode: z.nullable(z.string()).optional(), + publicModelId: z.string(), + testedAt: z.nullable(z.date().transform(v => v.toISOString())).optional(), +}); -export function syncReconcileRequestTargetReleaseResourcesToJSON( - syncReconcileRequestTargetReleaseResources: - SyncReconcileRequestTargetReleaseResources, +export function syncReconcileRequestModel1ToJSON( + syncReconcileRequestModel1: SyncReconcileRequestModel1, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseResources$outboundSchema.parse( - syncReconcileRequestTargetReleaseResources, - ), + SyncReconcileRequestModel1$outboundSchema.parse(syncReconcileRequestModel1), ); } /** @internal */ -export const SyncReconcileRequestTargetReleaseSupportedPlatform$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestTargetReleaseSupportedPlatform, - ); +export const SyncReconcileRequestAvailabilitySource1$outboundSchema: z.ZodEnum< + typeof SyncReconcileRequestAvailabilitySource1 +> = z.enum(SyncReconcileRequestAvailabilitySource1); /** @internal */ -export type SyncReconcileRequestTargetReleaseStack$Outbound = { - id: string; - inputs?: Array | undefined; - permissions?: - | SyncReconcileRequestTargetReleasePermissions$Outbound - | undefined; - resources: { - [k: string]: SyncReconcileRequestTargetReleaseResources$Outbound; - }; - supportedPlatforms?: Array | null | undefined; +export type SyncReconcileRequestAvailability1$Outbound = { + catalogRevision: string; + location?: string | null | undefined; + models: Array; + source: string; }; /** @internal */ -export const SyncReconcileRequestTargetReleaseStack$outboundSchema: z.ZodType< - SyncReconcileRequestTargetReleaseStack$Outbound, - SyncReconcileRequestTargetReleaseStack +export const SyncReconcileRequestAvailability1$outboundSchema: z.ZodType< + SyncReconcileRequestAvailability1$Outbound, + SyncReconcileRequestAvailability1 > = z.object({ - id: z.string(), - inputs: z.array( - z.lazy(() => SyncReconcileRequestTargetReleaseInput$outboundSchema), - ).optional(), - permissions: z.lazy(() => - SyncReconcileRequestTargetReleasePermissions$outboundSchema - ).optional(), - resources: z.record( - z.string(), - z.lazy(() => SyncReconcileRequestTargetReleaseResources$outboundSchema), - ), - supportedPlatforms: z.nullable( - z.array(SyncReconcileRequestTargetReleaseSupportedPlatform$outboundSchema), - ).optional(), + catalogRevision: z.string(), + location: z.nullable(z.string()).optional(), + models: z.array(z.lazy(() => SyncReconcileRequestModel1$outboundSchema)), + source: SyncReconcileRequestAvailabilitySource1$outboundSchema, }); -export function syncReconcileRequestTargetReleaseStackToJSON( - syncReconcileRequestTargetReleaseStack: - SyncReconcileRequestTargetReleaseStack, +export function syncReconcileRequestAvailability1ToJSON( + syncReconcileRequestAvailability1: SyncReconcileRequestAvailability1, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseStack$outboundSchema.parse( - syncReconcileRequestTargetReleaseStack, + SyncReconcileRequestAvailability1$outboundSchema.parse( + syncReconcileRequestAvailability1, ), ); } /** @internal */ -export type SyncReconcileRequestTargetRelease$Outbound = { - description?: string | null | undefined; - releaseId?: string | null | undefined; - stack: SyncReconcileRequestTargetReleaseStack$Outbound; - version?: string | null | undefined; +export const DataReason66$outboundSchema: z.ZodEnum = z + .enum(DataReason66); + +/** @internal */ +export const StatusSeverity66$outboundSchema: z.ZodEnum< + typeof StatusSeverity66 +> = z.enum(StatusSeverity66); + +/** @internal */ +export type DataCollectionIssue66$Outbound = { + message: string; + reason: string; + severity: string; + source: string; }; /** @internal */ -export const SyncReconcileRequestTargetRelease$outboundSchema: z.ZodType< - SyncReconcileRequestTargetRelease$Outbound, - SyncReconcileRequestTargetRelease +export const DataCollectionIssue66$outboundSchema: z.ZodType< + DataCollectionIssue66$Outbound, + DataCollectionIssue66 > = z.object({ - description: z.nullable(z.string()).optional(), - releaseId: z.nullable(z.string()).optional(), - stack: z.lazy(() => SyncReconcileRequestTargetReleaseStack$outboundSchema), - version: z.nullable(z.string()).optional(), + message: z.string(), + reason: DataReason66$outboundSchema, + severity: StatusSeverity66$outboundSchema, + source: z.string(), }); -export function syncReconcileRequestTargetReleaseToJSON( - syncReconcileRequestTargetRelease: SyncReconcileRequestTargetRelease, +export function dataCollectionIssue66ToJSON( + dataCollectionIssue66: DataCollectionIssue66, ): string { return JSON.stringify( - SyncReconcileRequestTargetRelease$outboundSchema.parse( - syncReconcileRequestTargetRelease, - ), + DataCollectionIssue66$outboundSchema.parse(dataCollectionIssue66), ); } /** @internal */ -export type SyncReconcileRequestTargetReleaseUnion$Outbound = - | SyncReconcileRequestTargetRelease$Outbound - | any; +export const DataHealth66$outboundSchema: z.ZodEnum = z + .enum(DataHealth66); /** @internal */ -export const SyncReconcileRequestTargetReleaseUnion$outboundSchema: z.ZodType< - SyncReconcileRequestTargetReleaseUnion$Outbound, - SyncReconcileRequestTargetReleaseUnion -> = z.union([ - z.lazy(() => SyncReconcileRequestTargetRelease$outboundSchema), - z.any(), -]); +export const StatusLifecycle66$outboundSchema: z.ZodEnum< + typeof StatusLifecycle66 +> = z.enum(StatusLifecycle66); -export function syncReconcileRequestTargetReleaseUnionToJSON( - syncReconcileRequestTargetReleaseUnion: - SyncReconcileRequestTargetReleaseUnion, +/** @internal */ +export type ResourceHeartbeatStatus66$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const ResourceHeartbeatStatus66$outboundSchema: z.ZodType< + ResourceHeartbeatStatus66$Outbound, + ResourceHeartbeatStatus66 +> = z.object({ + collectionIssues: z.array(z.lazy(() => DataCollectionIssue66$outboundSchema)), + health: DataHealth66$outboundSchema, + lifecycle: StatusLifecycle66$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function resourceHeartbeatStatus66ToJSON( + resourceHeartbeatStatus66: ResourceHeartbeatStatus66, ): string { return JSON.stringify( - SyncReconcileRequestTargetReleaseUnion$outboundSchema.parse( - syncReconcileRequestTargetReleaseUnion, - ), + ResourceHeartbeatStatus66$outboundSchema.parse(resourceHeartbeatStatus66), ); } /** @internal */ -export type SyncReconcileRequestState$Outbound = { - currentRelease?: - | SyncReconcileRequestCurrentRelease$Outbound - | any - | null - | undefined; - environmentInfo?: - | SyncReconcileRequestEnvironmentInfoGcp$Outbound - | SyncReconcileRequestEnvironmentInfoAzure$Outbound - | SyncReconcileRequestEnvironmentInfoLocal$Outbound - | SyncReconcileRequestEnvironmentInfoAws$Outbound - | SyncReconcileRequestEnvironmentInfoTest$Outbound - | any - | null - | undefined; - error?: SyncReconcileRequestError$Outbound | any | null | undefined; - platform: string; - protocolVersion: number; - retryRequested?: boolean | undefined; - runtimeMetadata?: - | SyncReconcileRequestRuntimeMetadata$Outbound - | any - | null - | undefined; - stackState?: SyncReconcileRequestStackState$Outbound | any | null | undefined; - status: string; - targetRelease?: - | SyncReconcileRequestTargetRelease$Outbound - | any - | null - | undefined; +export type DataAwsBedrock$Outbound = { + availability: SyncReconcileRequestAvailability1$Outbound; + region: string; + status: ResourceHeartbeatStatus66$Outbound; + backend: "awsBedrock"; }; /** @internal */ -export const SyncReconcileRequestState$outboundSchema: z.ZodType< - SyncReconcileRequestState$Outbound, - SyncReconcileRequestState +export const DataAwsBedrock$outboundSchema: z.ZodType< + DataAwsBedrock$Outbound, + DataAwsBedrock > = z.object({ - currentRelease: z.nullable( - z.union([ - z.lazy(() => SyncReconcileRequestCurrentRelease$outboundSchema), - z.any(), - ]), - ).optional(), - environmentInfo: z.nullable( - z.union([ - z.lazy(() => SyncReconcileRequestEnvironmentInfoGcp$outboundSchema), - z.lazy(() => SyncReconcileRequestEnvironmentInfoAzure$outboundSchema), - z.lazy(() => SyncReconcileRequestEnvironmentInfoLocal$outboundSchema), - z.lazy(() => SyncReconcileRequestEnvironmentInfoAws$outboundSchema), - z.lazy(() => SyncReconcileRequestEnvironmentInfoTest$outboundSchema), - z.any(), - ]), - ).optional(), - error: z.nullable( - z.union([z.lazy(() => SyncReconcileRequestError$outboundSchema), z.any()]), - ).optional(), - platform: SyncReconcileRequestPlatform$outboundSchema, - protocolVersion: z.int(), - retryRequested: z.boolean().optional(), - runtimeMetadata: z.nullable( - z.union([ - z.lazy(() => SyncReconcileRequestRuntimeMetadata$outboundSchema), - z.any(), - ]), - ).optional(), - stackState: z.nullable( - z.union([ - z.lazy(() => SyncReconcileRequestStackState$outboundSchema), - z.any(), - ]), - ).optional(), - status: StateStatus$outboundSchema, - targetRelease: z.nullable( - z.union([ - z.lazy(() => SyncReconcileRequestTargetRelease$outboundSchema), - z.any(), - ]), - ).optional(), + availability: z.lazy(() => SyncReconcileRequestAvailability1$outboundSchema), + region: z.string(), + status: z.lazy(() => ResourceHeartbeatStatus66$outboundSchema), + backend: z.literal("awsBedrock"), }); -export function syncReconcileRequestStateToJSON( - syncReconcileRequestState: SyncReconcileRequestState, +export function dataAwsBedrockToJSON(dataAwsBedrock: DataAwsBedrock): string { + return JSON.stringify(DataAwsBedrock$outboundSchema.parse(dataAwsBedrock)); +} + +/** @internal */ +export type SyncReconcileRequestDataUnion16$Outbound = + | DataAwsBedrock$Outbound + | DataGcpVertex$Outbound + | DataAzureFoundry$Outbound + | DataExternal$Outbound; + +/** @internal */ +export const SyncReconcileRequestDataUnion16$outboundSchema: z.ZodType< + SyncReconcileRequestDataUnion16$Outbound, + SyncReconcileRequestDataUnion16 +> = z.union([ + z.lazy(() => DataAwsBedrock$outboundSchema), + z.lazy(() => DataGcpVertex$outboundSchema), + z.lazy(() => DataAzureFoundry$outboundSchema), + z.lazy(() => DataExternal$outboundSchema), +]); + +export function syncReconcileRequestDataUnion16ToJSON( + syncReconcileRequestDataUnion16: SyncReconcileRequestDataUnion16, ): string { return JSON.stringify( - SyncReconcileRequestState$outboundSchema.parse(syncReconcileRequestState), + SyncReconcileRequestDataUnion16$outboundSchema.parse( + syncReconcileRequestDataUnion16, + ), ); } /** @internal */ -export const ResourceHeartbeatBackendEnum$outboundSchema: z.ZodEnum< - typeof ResourceHeartbeatBackendEnum -> = z.enum(ResourceHeartbeatBackendEnum); +export type DataAi$Outbound = { + data: + | DataAwsBedrock$Outbound + | DataGcpVertex$Outbound + | DataAzureFoundry$Outbound + | DataExternal$Outbound; + resourceType: "ai"; +}; /** @internal */ -export const ResourceHeartbeatControllerPlatform$outboundSchema: z.ZodEnum< - typeof ResourceHeartbeatControllerPlatform -> = z.enum(ResourceHeartbeatControllerPlatform); +export const DataAi$outboundSchema: z.ZodType = z + .object({ + data: z.union([ + z.lazy(() => DataAwsBedrock$outboundSchema), + z.lazy(() => DataGcpVertex$outboundSchema), + z.lazy(() => DataAzureFoundry$outboundSchema), + z.lazy(() => DataExternal$outboundSchema), + ]), + resourceType: z.literal("ai"), + }); + +export function dataAiToJSON(dataAi: DataAi): string { + return JSON.stringify(DataAi$outboundSchema.parse(dataAi)); +} /** @internal */ export const DataReason65$outboundSchema: z.ZodEnum = z @@ -22835,46 +29421,39 @@ export function involvedObjectUnion10ToJSON( } /** @internal */ -export type SyncReconcileRequestSource10$Outbound = { +export type SourceEvent10$Outbound = { component?: string | null | undefined; host?: string | null | undefined; }; /** @internal */ -export const SyncReconcileRequestSource10$outboundSchema: z.ZodType< - SyncReconcileRequestSource10$Outbound, - SyncReconcileRequestSource10 +export const SourceEvent10$outboundSchema: z.ZodType< + SourceEvent10$Outbound, + SourceEvent10 > = z.object({ component: z.nullable(z.string()).optional(), host: z.nullable(z.string()).optional(), }); -export function syncReconcileRequestSource10ToJSON( - syncReconcileRequestSource10: SyncReconcileRequestSource10, -): string { - return JSON.stringify( - SyncReconcileRequestSource10$outboundSchema.parse( - syncReconcileRequestSource10, - ), - ); +export function sourceEvent10ToJSON(sourceEvent10: SourceEvent10): string { + return JSON.stringify(SourceEvent10$outboundSchema.parse(sourceEvent10)); } /** @internal */ -export type SourceUnion10$Outbound = - | SyncReconcileRequestSource10$Outbound - | any; +export type EventSourceUnion10$Outbound = SourceEvent10$Outbound | any; /** @internal */ -export const SourceUnion10$outboundSchema: z.ZodType< - SourceUnion10$Outbound, - SourceUnion10 -> = z.union([ - z.lazy(() => SyncReconcileRequestSource10$outboundSchema), - z.any(), -]); +export const EventSourceUnion10$outboundSchema: z.ZodType< + EventSourceUnion10$Outbound, + EventSourceUnion10 +> = z.union([z.lazy(() => SourceEvent10$outboundSchema), z.any()]); -export function sourceUnion10ToJSON(sourceUnion10: SourceUnion10): string { - return JSON.stringify(SourceUnion10$outboundSchema.parse(sourceUnion10)); +export function eventSourceUnion10ToJSON( + eventSourceUnion10: EventSourceUnion10, +): string { + return JSON.stringify( + EventSourceUnion10$outboundSchema.parse(eventSourceUnion10), + ); } /** @internal */ @@ -22887,7 +29466,7 @@ export type SyncReconcileRequestEvent13$Outbound = { message: string; raw?: any | null | undefined; reason: string; - source?: SyncReconcileRequestSource10$Outbound | any | null | undefined; + source?: SourceEvent10$Outbound | any | null | undefined; type?: string | null | undefined; }; @@ -22909,10 +29488,7 @@ export const SyncReconcileRequestEvent13$outboundSchema: z.ZodType< raw: z.nullable(z.any()).optional(), reason: z.string(), source: z.nullable( - z.union([ - z.lazy(() => SyncReconcileRequestSource10$outboundSchema), - z.any(), - ]), + z.union([z.lazy(() => SourceEvent10$outboundSchema), z.any()]), ).optional(), type: z.nullable(z.string()).optional(), }); @@ -23850,7 +30426,7 @@ export function dataGcpArtifactRegistryToJSON( } /** @internal */ -export type Repository$Outbound = { +export type SyncReconcileRequestRepository$Outbound = { createdAt: number; encryptionType?: string | null | undefined; imageTagMutability?: string | null | undefined; @@ -23863,9 +30439,9 @@ export type Repository$Outbound = { }; /** @internal */ -export const Repository$outboundSchema: z.ZodType< - Repository$Outbound, - Repository +export const SyncReconcileRequestRepository$outboundSchema: z.ZodType< + SyncReconcileRequestRepository$Outbound, + SyncReconcileRequestRepository > = z.object({ createdAt: z.number(), encryptionType: z.nullable(z.string()).optional(), @@ -23878,8 +30454,14 @@ export const Repository$outboundSchema: z.ZodType< scanOnPush: z.nullable(z.boolean()).optional(), }); -export function repositoryToJSON(repository: Repository): string { - return JSON.stringify(Repository$outboundSchema.parse(repository)); +export function syncReconcileRequestRepositoryToJSON( + syncReconcileRequestRepository: SyncReconcileRequestRepository, +): string { + return JSON.stringify( + SyncReconcileRequestRepository$outboundSchema.parse( + syncReconcileRequestRepository, + ), + ); } /** @internal */ @@ -23965,7 +30547,7 @@ export type DataAwsEcr$Outbound = { region: string; registryId: string; registryUri: string; - repositories: Array; + repositories: Array; repositoriesTruncated: boolean; repositoryCount: number; repositoryPrefix: string; @@ -23983,7 +30565,9 @@ export const DataAwsEcr$outboundSchema: z.ZodType< region: z.string(), registryId: z.string(), registryUri: z.string(), - repositories: z.array(z.lazy(() => Repository$outboundSchema)), + repositories: z.array( + z.lazy(() => SyncReconcileRequestRepository$outboundSchema), + ), repositoriesTruncated: z.boolean(), repositoryCount: z.int(), repositoryPrefix: z.string(), @@ -25675,7 +32259,7 @@ export function resourceHeartbeatStatus39ToJSON( } /** @internal */ -export type DataAzureKeyVault$Outbound = { +export type DataAzureKeyVault1$Outbound = { accessPolicyCount: number; location?: string | null | undefined; name: string; @@ -25697,9 +32281,9 @@ export type DataAzureKeyVault$Outbound = { }; /** @internal */ -export const DataAzureKeyVault$outboundSchema: z.ZodType< - DataAzureKeyVault$Outbound, - DataAzureKeyVault +export const DataAzureKeyVault1$outboundSchema: z.ZodType< + DataAzureKeyVault1$Outbound, + DataAzureKeyVault1 > = z.object({ accessPolicyCount: z.int(), location: z.nullable(z.string()).optional(), @@ -25721,11 +32305,11 @@ export const DataAzureKeyVault$outboundSchema: z.ZodType< backend: z.literal("azureKeyVault"), }); -export function dataAzureKeyVaultToJSON( - dataAzureKeyVault: DataAzureKeyVault, +export function dataAzureKeyVault1ToJSON( + dataAzureKeyVault1: DataAzureKeyVault1, ): string { return JSON.stringify( - DataAzureKeyVault$outboundSchema.parse(dataAzureKeyVault), + DataAzureKeyVault1$outboundSchema.parse(dataAzureKeyVault1), ); } @@ -25964,7 +32548,7 @@ export function dataAwsParameterStoreToJSON( export type SyncReconcileRequestDataUnion9$Outbound = | DataAwsParameterStore$Outbound | DataGcpSecretManager$Outbound - | DataAzureKeyVault$Outbound + | DataAzureKeyVault1$Outbound | DataKubernetesSecret$Outbound | DataLocal9$Outbound; @@ -25975,7 +32559,7 @@ export const SyncReconcileRequestDataUnion9$outboundSchema: z.ZodType< > = z.union([ z.lazy(() => DataAwsParameterStore$outboundSchema), z.lazy(() => DataGcpSecretManager$outboundSchema), - z.lazy(() => DataAzureKeyVault$outboundSchema), + z.lazy(() => DataAzureKeyVault1$outboundSchema), z.lazy(() => DataKubernetesSecret$outboundSchema), z.lazy(() => DataLocal9$outboundSchema), ]); @@ -25995,7 +32579,7 @@ export type DataVault$Outbound = { data: | DataAwsParameterStore$Outbound | DataGcpSecretManager$Outbound - | DataAzureKeyVault$Outbound + | DataAzureKeyVault1$Outbound | DataKubernetesSecret$Outbound | DataLocal9$Outbound; resourceType: "vault"; @@ -26009,7 +32593,7 @@ export const DataVault$outboundSchema: z.ZodType< data: z.union([ z.lazy(() => DataAwsParameterStore$outboundSchema), z.lazy(() => DataGcpSecretManager$outboundSchema), - z.lazy(() => DataAzureKeyVault$outboundSchema), + z.lazy(() => DataAzureKeyVault1$outboundSchema), z.lazy(() => DataKubernetesSecret$outboundSchema), z.lazy(() => DataLocal9$outboundSchema), ]), @@ -27759,44 +34343,39 @@ export function involvedObjectUnion9ToJSON( } /** @internal */ -export type SyncReconcileRequestSource9$Outbound = { +export type SourceEvent9$Outbound = { component?: string | null | undefined; host?: string | null | undefined; }; /** @internal */ -export const SyncReconcileRequestSource9$outboundSchema: z.ZodType< - SyncReconcileRequestSource9$Outbound, - SyncReconcileRequestSource9 +export const SourceEvent9$outboundSchema: z.ZodType< + SourceEvent9$Outbound, + SourceEvent9 > = z.object({ component: z.nullable(z.string()).optional(), host: z.nullable(z.string()).optional(), }); -export function syncReconcileRequestSource9ToJSON( - syncReconcileRequestSource9: SyncReconcileRequestSource9, -): string { - return JSON.stringify( - SyncReconcileRequestSource9$outboundSchema.parse( - syncReconcileRequestSource9, - ), - ); +export function sourceEvent9ToJSON(sourceEvent9: SourceEvent9): string { + return JSON.stringify(SourceEvent9$outboundSchema.parse(sourceEvent9)); } /** @internal */ -export type SourceUnion9$Outbound = SyncReconcileRequestSource9$Outbound | any; +export type EventSourceUnion9$Outbound = SourceEvent9$Outbound | any; /** @internal */ -export const SourceUnion9$outboundSchema: z.ZodType< - SourceUnion9$Outbound, - SourceUnion9 -> = z.union([ - z.lazy(() => SyncReconcileRequestSource9$outboundSchema), - z.any(), -]); +export const EventSourceUnion9$outboundSchema: z.ZodType< + EventSourceUnion9$Outbound, + EventSourceUnion9 +> = z.union([z.lazy(() => SourceEvent9$outboundSchema), z.any()]); -export function sourceUnion9ToJSON(sourceUnion9: SourceUnion9): string { - return JSON.stringify(SourceUnion9$outboundSchema.parse(sourceUnion9)); +export function eventSourceUnion9ToJSON( + eventSourceUnion9: EventSourceUnion9, +): string { + return JSON.stringify( + EventSourceUnion9$outboundSchema.parse(eventSourceUnion9), + ); } /** @internal */ @@ -27809,7 +34388,7 @@ export type SyncReconcileRequestEvent12$Outbound = { message: string; raw?: any | null | undefined; reason: string; - source?: SyncReconcileRequestSource9$Outbound | any | null | undefined; + source?: SourceEvent9$Outbound | any | null | undefined; type?: string | null | undefined; }; @@ -27831,10 +34410,7 @@ export const SyncReconcileRequestEvent12$outboundSchema: z.ZodType< raw: z.nullable(z.any()).optional(), reason: z.string(), source: z.nullable( - z.union([ - z.lazy(() => SyncReconcileRequestSource9$outboundSchema), - z.any(), - ]), + z.union([z.lazy(() => SourceEvent9$outboundSchema), z.any()]), ).optional(), type: z.nullable(z.string()).optional(), }); @@ -28652,7 +35228,7 @@ export function capacityBlockerUnion4ToJSON( } /** @internal */ -export type Blocker4$Outbound = { +export type DrainProgressBlocker4$Outbound = { reason: string; replicaId: string; schedulingMode: string; @@ -28661,17 +35237,23 @@ export type Blocker4$Outbound = { }; /** @internal */ -export const Blocker4$outboundSchema: z.ZodType = z - .object({ - reason: z.string(), - replicaId: z.string(), - schedulingMode: z.string(), - state: z.string(), - workloadName: z.string(), - }); +export const DrainProgressBlocker4$outboundSchema: z.ZodType< + DrainProgressBlocker4$Outbound, + DrainProgressBlocker4 +> = z.object({ + reason: z.string(), + replicaId: z.string(), + schedulingMode: z.string(), + state: z.string(), + workloadName: z.string(), +}); -export function blocker4ToJSON(blocker4: Blocker4): string { - return JSON.stringify(Blocker4$outboundSchema.parse(blocker4)); +export function drainProgressBlocker4ToJSON( + drainProgressBlocker4: DrainProgressBlocker4, +): string { + return JSON.stringify( + DrainProgressBlocker4$outboundSchema.parse(drainProgressBlocker4), + ); } /** @internal */ @@ -28681,7 +35263,7 @@ export const DrainProgressStatus4$outboundSchema: z.ZodEnum< /** @internal */ export type DrainProgress4$Outbound = { - blockers?: Array | undefined; + blockers?: Array | undefined; drainDeadlineAt?: string | null | undefined; drainRequestedAt?: string | null | undefined; drainedAt?: string | null | undefined; @@ -28697,7 +35279,8 @@ export const DrainProgress4$outboundSchema: z.ZodType< DrainProgress4$Outbound, DrainProgress4 > = z.object({ - blockers: z.array(z.lazy(() => Blocker4$outboundSchema)).optional(), + blockers: z.array(z.lazy(() => DrainProgressBlocker4$outboundSchema)) + .optional(), drainDeadlineAt: z.nullable(z.string()).optional(), drainRequestedAt: z.nullable(z.string()).optional(), drainedAt: z.nullable(z.string()).optional(), @@ -29181,7 +35764,7 @@ export function capacityBlockerUnion3ToJSON( } /** @internal */ -export type Blocker3$Outbound = { +export type DrainProgressBlocker3$Outbound = { reason: string; replicaId: string; schedulingMode: string; @@ -29190,17 +35773,23 @@ export type Blocker3$Outbound = { }; /** @internal */ -export const Blocker3$outboundSchema: z.ZodType = z - .object({ - reason: z.string(), - replicaId: z.string(), - schedulingMode: z.string(), - state: z.string(), - workloadName: z.string(), - }); +export const DrainProgressBlocker3$outboundSchema: z.ZodType< + DrainProgressBlocker3$Outbound, + DrainProgressBlocker3 +> = z.object({ + reason: z.string(), + replicaId: z.string(), + schedulingMode: z.string(), + state: z.string(), + workloadName: z.string(), +}); -export function blocker3ToJSON(blocker3: Blocker3): string { - return JSON.stringify(Blocker3$outboundSchema.parse(blocker3)); +export function drainProgressBlocker3ToJSON( + drainProgressBlocker3: DrainProgressBlocker3, +): string { + return JSON.stringify( + DrainProgressBlocker3$outboundSchema.parse(drainProgressBlocker3), + ); } /** @internal */ @@ -29210,7 +35799,7 @@ export const DrainProgressStatus3$outboundSchema: z.ZodEnum< /** @internal */ export type DrainProgress3$Outbound = { - blockers?: Array | undefined; + blockers?: Array | undefined; drainDeadlineAt?: string | null | undefined; drainRequestedAt?: string | null | undefined; drainedAt?: string | null | undefined; @@ -29226,7 +35815,8 @@ export const DrainProgress3$outboundSchema: z.ZodType< DrainProgress3$Outbound, DrainProgress3 > = z.object({ - blockers: z.array(z.lazy(() => Blocker3$outboundSchema)).optional(), + blockers: z.array(z.lazy(() => DrainProgressBlocker3$outboundSchema)) + .optional(), drainDeadlineAt: z.nullable(z.string()).optional(), drainRequestedAt: z.nullable(z.string()).optional(), drainedAt: z.nullable(z.string()).optional(), @@ -29660,7 +36250,7 @@ export function capacityBlockerUnion2ToJSON( } /** @internal */ -export type Blocker2$Outbound = { +export type DrainProgressBlocker2$Outbound = { reason: string; replicaId: string; schedulingMode: string; @@ -29669,17 +36259,23 @@ export type Blocker2$Outbound = { }; /** @internal */ -export const Blocker2$outboundSchema: z.ZodType = z - .object({ - reason: z.string(), - replicaId: z.string(), - schedulingMode: z.string(), - state: z.string(), - workloadName: z.string(), - }); +export const DrainProgressBlocker2$outboundSchema: z.ZodType< + DrainProgressBlocker2$Outbound, + DrainProgressBlocker2 +> = z.object({ + reason: z.string(), + replicaId: z.string(), + schedulingMode: z.string(), + state: z.string(), + workloadName: z.string(), +}); -export function blocker2ToJSON(blocker2: Blocker2): string { - return JSON.stringify(Blocker2$outboundSchema.parse(blocker2)); +export function drainProgressBlocker2ToJSON( + drainProgressBlocker2: DrainProgressBlocker2, +): string { + return JSON.stringify( + DrainProgressBlocker2$outboundSchema.parse(drainProgressBlocker2), + ); } /** @internal */ @@ -29689,7 +36285,7 @@ export const DrainProgressStatus2$outboundSchema: z.ZodEnum< /** @internal */ export type DrainProgress2$Outbound = { - blockers?: Array | undefined; + blockers?: Array | undefined; drainDeadlineAt?: string | null | undefined; drainRequestedAt?: string | null | undefined; drainedAt?: string | null | undefined; @@ -29705,7 +36301,8 @@ export const DrainProgress2$outboundSchema: z.ZodType< DrainProgress2$Outbound, DrainProgress2 > = z.object({ - blockers: z.array(z.lazy(() => Blocker2$outboundSchema)).optional(), + blockers: z.array(z.lazy(() => DrainProgressBlocker2$outboundSchema)) + .optional(), drainDeadlineAt: z.nullable(z.string()).optional(), drainRequestedAt: z.nullable(z.string()).optional(), drainedAt: z.nullable(z.string()).optional(), @@ -30137,7 +36734,7 @@ export function capacityBlockerUnion1ToJSON( } /** @internal */ -export type Blocker1$Outbound = { +export type DrainProgressBlocker1$Outbound = { reason: string; replicaId: string; schedulingMode: string; @@ -30146,17 +36743,23 @@ export type Blocker1$Outbound = { }; /** @internal */ -export const Blocker1$outboundSchema: z.ZodType = z - .object({ - reason: z.string(), - replicaId: z.string(), - schedulingMode: z.string(), - state: z.string(), - workloadName: z.string(), - }); +export const DrainProgressBlocker1$outboundSchema: z.ZodType< + DrainProgressBlocker1$Outbound, + DrainProgressBlocker1 +> = z.object({ + reason: z.string(), + replicaId: z.string(), + schedulingMode: z.string(), + state: z.string(), + workloadName: z.string(), +}); -export function blocker1ToJSON(blocker1: Blocker1): string { - return JSON.stringify(Blocker1$outboundSchema.parse(blocker1)); +export function drainProgressBlocker1ToJSON( + drainProgressBlocker1: DrainProgressBlocker1, +): string { + return JSON.stringify( + DrainProgressBlocker1$outboundSchema.parse(drainProgressBlocker1), + ); } /** @internal */ @@ -30166,7 +36769,7 @@ export const DrainProgressStatus1$outboundSchema: z.ZodEnum< /** @internal */ export type DrainProgress1$Outbound = { - blockers?: Array | undefined; + blockers?: Array | undefined; drainDeadlineAt?: string | null | undefined; drainRequestedAt?: string | null | undefined; drainedAt?: string | null | undefined; @@ -30182,7 +36785,8 @@ export const DrainProgress1$outboundSchema: z.ZodType< DrainProgress1$Outbound, DrainProgress1 > = z.object({ - blockers: z.array(z.lazy(() => Blocker1$outboundSchema)).optional(), + blockers: z.array(z.lazy(() => DrainProgressBlocker1$outboundSchema)) + .optional(), drainDeadlineAt: z.nullable(z.string()).optional(), drainRequestedAt: z.nullable(z.string()).optional(), drainedAt: z.nullable(z.string()).optional(), @@ -31070,44 +37674,39 @@ export function involvedObjectUnion8ToJSON( } /** @internal */ -export type SyncReconcileRequestSource8$Outbound = { +export type SourceEvent8$Outbound = { component?: string | null | undefined; host?: string | null | undefined; }; /** @internal */ -export const SyncReconcileRequestSource8$outboundSchema: z.ZodType< - SyncReconcileRequestSource8$Outbound, - SyncReconcileRequestSource8 +export const SourceEvent8$outboundSchema: z.ZodType< + SourceEvent8$Outbound, + SourceEvent8 > = z.object({ component: z.nullable(z.string()).optional(), host: z.nullable(z.string()).optional(), }); -export function syncReconcileRequestSource8ToJSON( - syncReconcileRequestSource8: SyncReconcileRequestSource8, -): string { - return JSON.stringify( - SyncReconcileRequestSource8$outboundSchema.parse( - syncReconcileRequestSource8, - ), - ); +export function sourceEvent8ToJSON(sourceEvent8: SourceEvent8): string { + return JSON.stringify(SourceEvent8$outboundSchema.parse(sourceEvent8)); } /** @internal */ -export type SourceUnion8$Outbound = SyncReconcileRequestSource8$Outbound | any; +export type EventSourceUnion8$Outbound = SourceEvent8$Outbound | any; /** @internal */ -export const SourceUnion8$outboundSchema: z.ZodType< - SourceUnion8$Outbound, - SourceUnion8 -> = z.union([ - z.lazy(() => SyncReconcileRequestSource8$outboundSchema), - z.any(), -]); +export const EventSourceUnion8$outboundSchema: z.ZodType< + EventSourceUnion8$Outbound, + EventSourceUnion8 +> = z.union([z.lazy(() => SourceEvent8$outboundSchema), z.any()]); -export function sourceUnion8ToJSON(sourceUnion8: SourceUnion8): string { - return JSON.stringify(SourceUnion8$outboundSchema.parse(sourceUnion8)); +export function eventSourceUnion8ToJSON( + eventSourceUnion8: EventSourceUnion8, +): string { + return JSON.stringify( + EventSourceUnion8$outboundSchema.parse(eventSourceUnion8), + ); } /** @internal */ @@ -31120,7 +37719,7 @@ export type SyncReconcileRequestEvent10$Outbound = { message: string; raw?: any | null | undefined; reason: string; - source?: SyncReconcileRequestSource8$Outbound | any | null | undefined; + source?: SourceEvent8$Outbound | any | null | undefined; type?: string | null | undefined; }; @@ -31142,10 +37741,7 @@ export const SyncReconcileRequestEvent10$outboundSchema: z.ZodType< raw: z.nullable(z.any()).optional(), reason: z.string(), source: z.nullable( - z.union([ - z.lazy(() => SyncReconcileRequestSource8$outboundSchema), - z.any(), - ]), + z.union([z.lazy(() => SourceEvent8$outboundSchema), z.any()]), ).optional(), type: z.nullable(z.string()).optional(), }); @@ -31752,44 +38348,39 @@ export function involvedObjectUnion7ToJSON( } /** @internal */ -export type SyncReconcileRequestSource7$Outbound = { +export type SourceEvent7$Outbound = { component?: string | null | undefined; host?: string | null | undefined; }; /** @internal */ -export const SyncReconcileRequestSource7$outboundSchema: z.ZodType< - SyncReconcileRequestSource7$Outbound, - SyncReconcileRequestSource7 +export const SourceEvent7$outboundSchema: z.ZodType< + SourceEvent7$Outbound, + SourceEvent7 > = z.object({ component: z.nullable(z.string()).optional(), host: z.nullable(z.string()).optional(), }); -export function syncReconcileRequestSource7ToJSON( - syncReconcileRequestSource7: SyncReconcileRequestSource7, -): string { - return JSON.stringify( - SyncReconcileRequestSource7$outboundSchema.parse( - syncReconcileRequestSource7, - ), - ); +export function sourceEvent7ToJSON(sourceEvent7: SourceEvent7): string { + return JSON.stringify(SourceEvent7$outboundSchema.parse(sourceEvent7)); } /** @internal */ -export type SourceUnion7$Outbound = SyncReconcileRequestSource7$Outbound | any; +export type EventSourceUnion7$Outbound = SourceEvent7$Outbound | any; /** @internal */ -export const SourceUnion7$outboundSchema: z.ZodType< - SourceUnion7$Outbound, - SourceUnion7 -> = z.union([ - z.lazy(() => SyncReconcileRequestSource7$outboundSchema), - z.any(), -]); +export const EventSourceUnion7$outboundSchema: z.ZodType< + EventSourceUnion7$Outbound, + EventSourceUnion7 +> = z.union([z.lazy(() => SourceEvent7$outboundSchema), z.any()]); -export function sourceUnion7ToJSON(sourceUnion7: SourceUnion7): string { - return JSON.stringify(SourceUnion7$outboundSchema.parse(sourceUnion7)); +export function eventSourceUnion7ToJSON( + eventSourceUnion7: EventSourceUnion7, +): string { + return JSON.stringify( + EventSourceUnion7$outboundSchema.parse(eventSourceUnion7), + ); } /** @internal */ @@ -31804,7 +38395,7 @@ export type SyncReconcileRequestEvent9$Outbound = { message: string; raw?: any | null | undefined; reason: string; - source?: SyncReconcileRequestSource7$Outbound | any | null | undefined; + source?: SourceEvent7$Outbound | any | null | undefined; type?: string | null | undefined; }; @@ -31828,10 +38419,7 @@ export const SyncReconcileRequestEvent9$outboundSchema: z.ZodType< raw: z.nullable(z.any()).optional(), reason: z.string(), source: z.nullable( - z.union([ - z.lazy(() => SyncReconcileRequestSource7$outboundSchema), - z.any(), - ]), + z.union([z.lazy(() => SourceEvent7$outboundSchema), z.any()]), ).optional(), type: z.nullable(z.string()).optional(), }); @@ -31935,6 +38523,7 @@ export type DataMachines1$Outbound = { horizonStatusMessage?: string | null | undefined; horizonStatusReason?: string | null | undefined; latestUpdateTimestamp: string; + observedImage?: string | null | undefined; status: ResourceHeartbeatStatus16$Outbound; unavailableInstances: number; backend: "machines"; @@ -31958,6 +38547,7 @@ export const DataMachines1$outboundSchema: z.ZodType< horizonStatusMessage: z.nullable(z.string()).optional(), horizonStatusReason: z.nullable(z.string()).optional(), latestUpdateTimestamp: z.string(), + observedImage: z.nullable(z.string()).optional(), status: z.lazy(() => ResourceHeartbeatStatus16$outboundSchema), unavailableInstances: z.int(), backend: z.literal("machines"), @@ -32165,44 +38755,39 @@ export function involvedObjectUnion6ToJSON( } /** @internal */ -export type SyncReconcileRequestSource6$Outbound = { +export type SourceEvent6$Outbound = { component?: string | null | undefined; host?: string | null | undefined; }; /** @internal */ -export const SyncReconcileRequestSource6$outboundSchema: z.ZodType< - SyncReconcileRequestSource6$Outbound, - SyncReconcileRequestSource6 +export const SourceEvent6$outboundSchema: z.ZodType< + SourceEvent6$Outbound, + SourceEvent6 > = z.object({ component: z.nullable(z.string()).optional(), host: z.nullable(z.string()).optional(), }); -export function syncReconcileRequestSource6ToJSON( - syncReconcileRequestSource6: SyncReconcileRequestSource6, -): string { - return JSON.stringify( - SyncReconcileRequestSource6$outboundSchema.parse( - syncReconcileRequestSource6, - ), - ); +export function sourceEvent6ToJSON(sourceEvent6: SourceEvent6): string { + return JSON.stringify(SourceEvent6$outboundSchema.parse(sourceEvent6)); } /** @internal */ -export type SourceUnion6$Outbound = SyncReconcileRequestSource6$Outbound | any; +export type EventSourceUnion6$Outbound = SourceEvent6$Outbound | any; /** @internal */ -export const SourceUnion6$outboundSchema: z.ZodType< - SourceUnion6$Outbound, - SourceUnion6 -> = z.union([ - z.lazy(() => SyncReconcileRequestSource6$outboundSchema), - z.any(), -]); +export const EventSourceUnion6$outboundSchema: z.ZodType< + EventSourceUnion6$Outbound, + EventSourceUnion6 +> = z.union([z.lazy(() => SourceEvent6$outboundSchema), z.any()]); -export function sourceUnion6ToJSON(sourceUnion6: SourceUnion6): string { - return JSON.stringify(SourceUnion6$outboundSchema.parse(sourceUnion6)); +export function eventSourceUnion6ToJSON( + eventSourceUnion6: EventSourceUnion6, +): string { + return JSON.stringify( + EventSourceUnion6$outboundSchema.parse(eventSourceUnion6), + ); } /** @internal */ @@ -32217,7 +38802,7 @@ export type SyncReconcileRequestEvent8$Outbound = { message: string; raw?: any | null | undefined; reason: string; - source?: SyncReconcileRequestSource6$Outbound | any | null | undefined; + source?: SourceEvent6$Outbound | any | null | undefined; type?: string | null | undefined; }; @@ -32241,10 +38826,7 @@ export const SyncReconcileRequestEvent8$outboundSchema: z.ZodType< raw: z.nullable(z.any()).optional(), reason: z.string(), source: z.nullable( - z.union([ - z.lazy(() => SyncReconcileRequestSource6$outboundSchema), - z.any(), - ]), + z.union([z.lazy(() => SourceEvent6$outboundSchema), z.any()]), ).optional(), type: z.nullable(z.string()).optional(), }); @@ -32348,6 +38930,7 @@ export type DataAzure1$Outbound = { horizonStatusMessage?: string | null | undefined; horizonStatusReason?: string | null | undefined; latestUpdateTimestamp: string; + observedImage?: string | null | undefined; status: ResourceHeartbeatStatus15$Outbound; unavailableInstances: number; backend: "azure"; @@ -32371,6 +38954,7 @@ export const DataAzure1$outboundSchema: z.ZodType< horizonStatusMessage: z.nullable(z.string()).optional(), horizonStatusReason: z.nullable(z.string()).optional(), latestUpdateTimestamp: z.string(), + observedImage: z.nullable(z.string()).optional(), status: z.lazy(() => ResourceHeartbeatStatus15$outboundSchema), unavailableInstances: z.int(), backend: z.literal("azure"), @@ -32578,44 +39162,39 @@ export function involvedObjectUnion5ToJSON( } /** @internal */ -export type SyncReconcileRequestSource5$Outbound = { +export type SourceEvent5$Outbound = { component?: string | null | undefined; host?: string | null | undefined; }; /** @internal */ -export const SyncReconcileRequestSource5$outboundSchema: z.ZodType< - SyncReconcileRequestSource5$Outbound, - SyncReconcileRequestSource5 +export const SourceEvent5$outboundSchema: z.ZodType< + SourceEvent5$Outbound, + SourceEvent5 > = z.object({ component: z.nullable(z.string()).optional(), host: z.nullable(z.string()).optional(), }); -export function syncReconcileRequestSource5ToJSON( - syncReconcileRequestSource5: SyncReconcileRequestSource5, -): string { - return JSON.stringify( - SyncReconcileRequestSource5$outboundSchema.parse( - syncReconcileRequestSource5, - ), - ); +export function sourceEvent5ToJSON(sourceEvent5: SourceEvent5): string { + return JSON.stringify(SourceEvent5$outboundSchema.parse(sourceEvent5)); } /** @internal */ -export type SourceUnion5$Outbound = SyncReconcileRequestSource5$Outbound | any; +export type EventSourceUnion5$Outbound = SourceEvent5$Outbound | any; /** @internal */ -export const SourceUnion5$outboundSchema: z.ZodType< - SourceUnion5$Outbound, - SourceUnion5 -> = z.union([ - z.lazy(() => SyncReconcileRequestSource5$outboundSchema), - z.any(), -]); +export const EventSourceUnion5$outboundSchema: z.ZodType< + EventSourceUnion5$Outbound, + EventSourceUnion5 +> = z.union([z.lazy(() => SourceEvent5$outboundSchema), z.any()]); -export function sourceUnion5ToJSON(sourceUnion5: SourceUnion5): string { - return JSON.stringify(SourceUnion5$outboundSchema.parse(sourceUnion5)); +export function eventSourceUnion5ToJSON( + eventSourceUnion5: EventSourceUnion5, +): string { + return JSON.stringify( + EventSourceUnion5$outboundSchema.parse(eventSourceUnion5), + ); } /** @internal */ @@ -32630,7 +39209,7 @@ export type SyncReconcileRequestEvent7$Outbound = { message: string; raw?: any | null | undefined; reason: string; - source?: SyncReconcileRequestSource5$Outbound | any | null | undefined; + source?: SourceEvent5$Outbound | any | null | undefined; type?: string | null | undefined; }; @@ -32654,10 +39233,7 @@ export const SyncReconcileRequestEvent7$outboundSchema: z.ZodType< raw: z.nullable(z.any()).optional(), reason: z.string(), source: z.nullable( - z.union([ - z.lazy(() => SyncReconcileRequestSource5$outboundSchema), - z.any(), - ]), + z.union([z.lazy(() => SourceEvent5$outboundSchema), z.any()]), ).optional(), type: z.nullable(z.string()).optional(), }); @@ -32761,6 +39337,7 @@ export type DataGcp1$Outbound = { horizonStatusMessage?: string | null | undefined; horizonStatusReason?: string | null | undefined; latestUpdateTimestamp: string; + observedImage?: string | null | undefined; status: ResourceHeartbeatStatus14$Outbound; unavailableInstances: number; backend: "gcp"; @@ -32782,6 +39359,7 @@ export const DataGcp1$outboundSchema: z.ZodType = z horizonStatusMessage: z.nullable(z.string()).optional(), horizonStatusReason: z.nullable(z.string()).optional(), latestUpdateTimestamp: z.string(), + observedImage: z.nullable(z.string()).optional(), status: z.lazy(() => ResourceHeartbeatStatus14$outboundSchema), unavailableInstances: z.int(), backend: z.literal("gcp"), @@ -32989,44 +39567,39 @@ export function involvedObjectUnion4ToJSON( } /** @internal */ -export type SyncReconcileRequestSource4$Outbound = { +export type SourceEvent4$Outbound = { component?: string | null | undefined; host?: string | null | undefined; }; /** @internal */ -export const SyncReconcileRequestSource4$outboundSchema: z.ZodType< - SyncReconcileRequestSource4$Outbound, - SyncReconcileRequestSource4 +export const SourceEvent4$outboundSchema: z.ZodType< + SourceEvent4$Outbound, + SourceEvent4 > = z.object({ component: z.nullable(z.string()).optional(), host: z.nullable(z.string()).optional(), }); -export function syncReconcileRequestSource4ToJSON( - syncReconcileRequestSource4: SyncReconcileRequestSource4, -): string { - return JSON.stringify( - SyncReconcileRequestSource4$outboundSchema.parse( - syncReconcileRequestSource4, - ), - ); +export function sourceEvent4ToJSON(sourceEvent4: SourceEvent4): string { + return JSON.stringify(SourceEvent4$outboundSchema.parse(sourceEvent4)); } /** @internal */ -export type SourceUnion4$Outbound = SyncReconcileRequestSource4$Outbound | any; +export type EventSourceUnion4$Outbound = SourceEvent4$Outbound | any; /** @internal */ -export const SourceUnion4$outboundSchema: z.ZodType< - SourceUnion4$Outbound, - SourceUnion4 -> = z.union([ - z.lazy(() => SyncReconcileRequestSource4$outboundSchema), - z.any(), -]); +export const EventSourceUnion4$outboundSchema: z.ZodType< + EventSourceUnion4$Outbound, + EventSourceUnion4 +> = z.union([z.lazy(() => SourceEvent4$outboundSchema), z.any()]); -export function sourceUnion4ToJSON(sourceUnion4: SourceUnion4): string { - return JSON.stringify(SourceUnion4$outboundSchema.parse(sourceUnion4)); +export function eventSourceUnion4ToJSON( + eventSourceUnion4: EventSourceUnion4, +): string { + return JSON.stringify( + EventSourceUnion4$outboundSchema.parse(eventSourceUnion4), + ); } /** @internal */ @@ -33041,7 +39614,7 @@ export type SyncReconcileRequestEvent6$Outbound = { message: string; raw?: any | null | undefined; reason: string; - source?: SyncReconcileRequestSource4$Outbound | any | null | undefined; + source?: SourceEvent4$Outbound | any | null | undefined; type?: string | null | undefined; }; @@ -33065,10 +39638,7 @@ export const SyncReconcileRequestEvent6$outboundSchema: z.ZodType< raw: z.nullable(z.any()).optional(), reason: z.string(), source: z.nullable( - z.union([ - z.lazy(() => SyncReconcileRequestSource4$outboundSchema), - z.any(), - ]), + z.union([z.lazy(() => SourceEvent4$outboundSchema), z.any()]), ).optional(), type: z.nullable(z.string()).optional(), }); @@ -33172,6 +39742,7 @@ export type DataAws1$Outbound = { horizonStatusMessage?: string | null | undefined; horizonStatusReason?: string | null | undefined; latestUpdateTimestamp: string; + observedImage?: string | null | undefined; status: ResourceHeartbeatStatus13$Outbound; unavailableInstances: number; backend: "aws"; @@ -33193,6 +39764,7 @@ export const DataAws1$outboundSchema: z.ZodType = z horizonStatusMessage: z.nullable(z.string()).optional(), horizonStatusReason: z.nullable(z.string()).optional(), latestUpdateTimestamp: z.string(), + observedImage: z.nullable(z.string()).optional(), status: z.lazy(() => ResourceHeartbeatStatus13$outboundSchema), unavailableInstances: z.int(), backend: z.literal("aws"), @@ -33785,44 +40357,39 @@ export function involvedObjectUnion3ToJSON( } /** @internal */ -export type SyncReconcileRequestSource3$Outbound = { +export type SourceEvent3$Outbound = { component?: string | null | undefined; host?: string | null | undefined; }; /** @internal */ -export const SyncReconcileRequestSource3$outboundSchema: z.ZodType< - SyncReconcileRequestSource3$Outbound, - SyncReconcileRequestSource3 +export const SourceEvent3$outboundSchema: z.ZodType< + SourceEvent3$Outbound, + SourceEvent3 > = z.object({ component: z.nullable(z.string()).optional(), host: z.nullable(z.string()).optional(), }); -export function syncReconcileRequestSource3ToJSON( - syncReconcileRequestSource3: SyncReconcileRequestSource3, -): string { - return JSON.stringify( - SyncReconcileRequestSource3$outboundSchema.parse( - syncReconcileRequestSource3, - ), - ); +export function sourceEvent3ToJSON(sourceEvent3: SourceEvent3): string { + return JSON.stringify(SourceEvent3$outboundSchema.parse(sourceEvent3)); } /** @internal */ -export type SourceUnion3$Outbound = SyncReconcileRequestSource3$Outbound | any; +export type EventSourceUnion3$Outbound = SourceEvent3$Outbound | any; /** @internal */ -export const SourceUnion3$outboundSchema: z.ZodType< - SourceUnion3$Outbound, - SourceUnion3 -> = z.union([ - z.lazy(() => SyncReconcileRequestSource3$outboundSchema), - z.any(), -]); +export const EventSourceUnion3$outboundSchema: z.ZodType< + EventSourceUnion3$Outbound, + EventSourceUnion3 +> = z.union([z.lazy(() => SourceEvent3$outboundSchema), z.any()]); -export function sourceUnion3ToJSON(sourceUnion3: SourceUnion3): string { - return JSON.stringify(SourceUnion3$outboundSchema.parse(sourceUnion3)); +export function eventSourceUnion3ToJSON( + eventSourceUnion3: EventSourceUnion3, +): string { + return JSON.stringify( + EventSourceUnion3$outboundSchema.parse(eventSourceUnion3), + ); } /** @internal */ @@ -33835,7 +40402,7 @@ export type SyncReconcileRequestEvent4$Outbound = { message: string; raw?: any | null | undefined; reason: string; - source?: SyncReconcileRequestSource3$Outbound | any | null | undefined; + source?: SourceEvent3$Outbound | any | null | undefined; type?: string | null | undefined; }; @@ -33857,10 +40424,7 @@ export const SyncReconcileRequestEvent4$outboundSchema: z.ZodType< raw: z.nullable(z.any()).optional(), reason: z.string(), source: z.nullable( - z.union([ - z.lazy(() => SyncReconcileRequestSource3$outboundSchema), - z.any(), - ]), + z.union([z.lazy(() => SourceEvent3$outboundSchema), z.any()]), ).optional(), type: z.nullable(z.string()).optional(), }); @@ -34352,44 +40916,39 @@ export function involvedObjectUnion2ToJSON( } /** @internal */ -export type SyncReconcileRequestSource2$Outbound = { +export type SourceEvent2$Outbound = { component?: string | null | undefined; host?: string | null | undefined; }; /** @internal */ -export const SyncReconcileRequestSource2$outboundSchema: z.ZodType< - SyncReconcileRequestSource2$Outbound, - SyncReconcileRequestSource2 +export const SourceEvent2$outboundSchema: z.ZodType< + SourceEvent2$Outbound, + SourceEvent2 > = z.object({ component: z.nullable(z.string()).optional(), host: z.nullable(z.string()).optional(), }); -export function syncReconcileRequestSource2ToJSON( - syncReconcileRequestSource2: SyncReconcileRequestSource2, -): string { - return JSON.stringify( - SyncReconcileRequestSource2$outboundSchema.parse( - syncReconcileRequestSource2, - ), - ); +export function sourceEvent2ToJSON(sourceEvent2: SourceEvent2): string { + return JSON.stringify(SourceEvent2$outboundSchema.parse(sourceEvent2)); } /** @internal */ -export type SourceUnion2$Outbound = SyncReconcileRequestSource2$Outbound | any; +export type EventSourceUnion2$Outbound = SourceEvent2$Outbound | any; /** @internal */ -export const SourceUnion2$outboundSchema: z.ZodType< - SourceUnion2$Outbound, - SourceUnion2 -> = z.union([ - z.lazy(() => SyncReconcileRequestSource2$outboundSchema), - z.any(), -]); +export const EventSourceUnion2$outboundSchema: z.ZodType< + EventSourceUnion2$Outbound, + EventSourceUnion2 +> = z.union([z.lazy(() => SourceEvent2$outboundSchema), z.any()]); -export function sourceUnion2ToJSON(sourceUnion2: SourceUnion2): string { - return JSON.stringify(SourceUnion2$outboundSchema.parse(sourceUnion2)); +export function eventSourceUnion2ToJSON( + eventSourceUnion2: EventSourceUnion2, +): string { + return JSON.stringify( + EventSourceUnion2$outboundSchema.parse(eventSourceUnion2), + ); } /** @internal */ @@ -34404,7 +40963,7 @@ export type SyncReconcileRequestEvent3$Outbound = { message: string; raw?: any | null | undefined; reason: string; - source?: SyncReconcileRequestSource2$Outbound | any | null | undefined; + source?: SourceEvent2$Outbound | any | null | undefined; type?: string | null | undefined; }; @@ -34428,10 +40987,7 @@ export const SyncReconcileRequestEvent3$outboundSchema: z.ZodType< raw: z.nullable(z.any()).optional(), reason: z.string(), source: z.nullable( - z.union([ - z.lazy(() => SyncReconcileRequestSource2$outboundSchema), - z.any(), - ]), + z.union([z.lazy(() => SourceEvent2$outboundSchema), z.any()]), ).optional(), type: z.nullable(z.string()).optional(), }); @@ -34734,7 +41290,9 @@ export type DataHorizonPlatform$Outbound = { cpu?: Cpu3$Outbound | any | null | undefined; events: Array; image?: string | null | undefined; + latestUpdateTimestamp?: string | null | undefined; memory?: Memory3$Outbound | any | null | undefined; + observedImage?: string | null | undefined; replicaUnits: Array; replicas: Replicas2$Outbound; schedulingMode: string; @@ -34753,8 +41311,10 @@ export const DataHorizonPlatform$outboundSchema: z.ZodType< .optional(), events: z.array(z.lazy(() => SyncReconcileRequestEvent3$outboundSchema)), image: z.nullable(z.string()).optional(), + latestUpdateTimestamp: z.nullable(z.string()).optional(), memory: z.nullable(z.union([z.lazy(() => Memory3$outboundSchema), z.any()])) .optional(), + observedImage: z.nullable(z.string()).optional(), replicaUnits: z.array(z.lazy(() => ReplicaUnit$outboundSchema)), replicas: z.lazy(() => Replicas2$outboundSchema), schedulingMode: SchedulingMode$outboundSchema, @@ -35313,44 +41873,39 @@ export function involvedObjectUnion1ToJSON( } /** @internal */ -export type SyncReconcileRequestSource1$Outbound = { +export type SourceEvent1$Outbound = { component?: string | null | undefined; host?: string | null | undefined; }; /** @internal */ -export const SyncReconcileRequestSource1$outboundSchema: z.ZodType< - SyncReconcileRequestSource1$Outbound, - SyncReconcileRequestSource1 +export const SourceEvent1$outboundSchema: z.ZodType< + SourceEvent1$Outbound, + SourceEvent1 > = z.object({ component: z.nullable(z.string()).optional(), host: z.nullable(z.string()).optional(), }); -export function syncReconcileRequestSource1ToJSON( - syncReconcileRequestSource1: SyncReconcileRequestSource1, -): string { - return JSON.stringify( - SyncReconcileRequestSource1$outboundSchema.parse( - syncReconcileRequestSource1, - ), - ); +export function sourceEvent1ToJSON(sourceEvent1: SourceEvent1): string { + return JSON.stringify(SourceEvent1$outboundSchema.parse(sourceEvent1)); } /** @internal */ -export type SourceUnion1$Outbound = SyncReconcileRequestSource1$Outbound | any; +export type EventSourceUnion1$Outbound = SourceEvent1$Outbound | any; /** @internal */ -export const SourceUnion1$outboundSchema: z.ZodType< - SourceUnion1$Outbound, - SourceUnion1 -> = z.union([ - z.lazy(() => SyncReconcileRequestSource1$outboundSchema), - z.any(), -]); +export const EventSourceUnion1$outboundSchema: z.ZodType< + EventSourceUnion1$Outbound, + EventSourceUnion1 +> = z.union([z.lazy(() => SourceEvent1$outboundSchema), z.any()]); -export function sourceUnion1ToJSON(sourceUnion1: SourceUnion1): string { - return JSON.stringify(SourceUnion1$outboundSchema.parse(sourceUnion1)); +export function eventSourceUnion1ToJSON( + eventSourceUnion1: EventSourceUnion1, +): string { + return JSON.stringify( + EventSourceUnion1$outboundSchema.parse(eventSourceUnion1), + ); } /** @internal */ @@ -35363,7 +41918,7 @@ export type SyncReconcileRequestEvent1$Outbound = { message: string; raw?: any | null | undefined; reason: string; - source?: SyncReconcileRequestSource1$Outbound | any | null | undefined; + source?: SourceEvent1$Outbound | any | null | undefined; type?: string | null | undefined; }; @@ -35385,10 +41940,7 @@ export const SyncReconcileRequestEvent1$outboundSchema: z.ZodType< raw: z.nullable(z.any()).optional(), reason: z.string(), source: z.nullable( - z.union([ - z.lazy(() => SyncReconcileRequestSource1$outboundSchema), - z.any(), - ]), + z.union([z.lazy(() => SourceEvent1$outboundSchema), z.any()]), ).optional(), type: z.nullable(z.string()).optional(), }); @@ -36821,7 +43373,7 @@ export function dataStorageToJSON(dataStorage: DataStorage): string { } /** @internal */ -export type SyncReconcileRequestDataUnion16$Outbound = +export type SyncReconcileRequestDataUnion18$Outbound = | DataStorage$Outbound | DataWorker$Outbound | DataContainer$Outbound @@ -36841,12 +43393,14 @@ export type SyncReconcileRequestDataUnion16$Outbound = | DataAzureResourceGroup$Outbound | DataAzureStorageAccount$Outbound | DataAzureContainerAppsEnvironment$Outbound - | DataAzureServiceBusNamespace$Outbound; + | DataAzureServiceBusNamespace$Outbound + | DataAi$Outbound + | DataKey$Outbound; /** @internal */ -export const SyncReconcileRequestDataUnion16$outboundSchema: z.ZodType< - SyncReconcileRequestDataUnion16$Outbound, - SyncReconcileRequestDataUnion16 +export const SyncReconcileRequestDataUnion18$outboundSchema: z.ZodType< + SyncReconcileRequestDataUnion18$Outbound, + SyncReconcileRequestDataUnion18 > = z.union([ z.lazy(() => DataStorage$outboundSchema), z.lazy(() => DataWorker$outboundSchema), @@ -36868,14 +43422,16 @@ export const SyncReconcileRequestDataUnion16$outboundSchema: z.ZodType< z.lazy(() => DataAzureStorageAccount$outboundSchema), z.lazy(() => DataAzureContainerAppsEnvironment$outboundSchema), z.lazy(() => DataAzureServiceBusNamespace$outboundSchema), + z.lazy(() => DataAi$outboundSchema), + z.lazy(() => DataKey$outboundSchema), ]); -export function syncReconcileRequestDataUnion16ToJSON( - syncReconcileRequestDataUnion16: SyncReconcileRequestDataUnion16, +export function syncReconcileRequestDataUnion18ToJSON( + syncReconcileRequestDataUnion18: SyncReconcileRequestDataUnion18, ): string { return JSON.stringify( - SyncReconcileRequestDataUnion16$outboundSchema.parse( - syncReconcileRequestDataUnion16, + SyncReconcileRequestDataUnion18$outboundSchema.parse( + syncReconcileRequestDataUnion18, ), ); } @@ -36938,7 +43494,9 @@ export type ResourceHeartbeat$Outbound = { | DataAzureResourceGroup$Outbound | DataAzureStorageAccount$Outbound | DataAzureContainerAppsEnvironment$Outbound - | DataAzureServiceBusNamespace$Outbound; + | DataAzureServiceBusNamespace$Outbound + | DataAi$Outbound + | DataKey$Outbound; deploymentId?: string | null | undefined; observedAt: string; raw: Array; @@ -36974,6 +43532,8 @@ export const ResourceHeartbeat$outboundSchema: z.ZodType< z.lazy(() => DataAzureStorageAccount$outboundSchema), z.lazy(() => DataAzureContainerAppsEnvironment$outboundSchema), z.lazy(() => DataAzureServiceBusNamespace$outboundSchema), + z.lazy(() => DataAi$outboundSchema), + z.lazy(() => DataKey$outboundSchema), ]), deploymentId: z.nullable(z.string()).optional(), observedAt: z.date().transform(v => v.toISOString()), diff --git a/client-sdks/platform/typescript/src/models/syncreconcileresponse.ts b/client-sdks/platform/typescript/src/models/syncreconcileresponse.ts index 695cca7cf..632fc7e7f 100644 --- a/client-sdks/platform/typescript/src/models/syncreconcileresponse.ts +++ b/client-sdks/platform/typescript/src/models/syncreconcileresponse.ts @@ -1451,6 +1451,17 @@ export type SyncReconcileResponseCurrentReleaseResources = { * The total dependencies are: resource.get_dependencies() + this list */ dependencies: Array; + /** + * Id of the boolean stack input that decides whether this resource is + * + * @remarks + * 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. + */ + enabledWhen?: string | null | undefined; /** * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ @@ -1781,95 +1792,108 @@ export type SyncReconcileResponseCurrentPlatform = ClosedEnum< typeof SyncReconcileResponseCurrentPlatform >; -export const SyncReconcileResponsePreparedStackTypeStringList = { - StringList: "stringList", +/** + * Actor that owns structural work during the initial setup phase. + */ +export const SyncReconcileResponseInitialSetupAuthority = { + ImportedHandoff: "importedHandoff", + DirectSetup: "directSetup", } as const; -export type SyncReconcileResponsePreparedStackTypeStringList = ClosedEnum< - typeof SyncReconcileResponsePreparedStackTypeStringList +/** + * Actor that owns structural work during the initial setup phase. + */ +export type SyncReconcileResponseInitialSetupAuthority = ClosedEnum< + typeof SyncReconcileResponseInitialSetupAuthority >; -export type SyncReconcileResponsePreparedStackDefaultStringList = { - type: SyncReconcileResponsePreparedStackTypeStringList; +export const SyncReconcileResponsePendingPreparedStackTypeStringList = { + StringList: "stringList", +} as const; +export type SyncReconcileResponsePendingPreparedStackTypeStringList = + ClosedEnum; + +export type SyncReconcileResponsePendingPreparedStackDefaultStringList = { + type: SyncReconcileResponsePendingPreparedStackTypeStringList; /** * String list default. */ value: Array; }; -export const SyncReconcileResponsePreparedStackTypeBoolean = { +export const SyncReconcileResponsePendingPreparedStackTypeBoolean = { Boolean: "boolean", } as const; -export type SyncReconcileResponsePreparedStackTypeBoolean = ClosedEnum< - typeof SyncReconcileResponsePreparedStackTypeBoolean +export type SyncReconcileResponsePendingPreparedStackTypeBoolean = ClosedEnum< + typeof SyncReconcileResponsePendingPreparedStackTypeBoolean >; -export type SyncReconcileResponsePreparedStackDefaultBoolean = { - type: SyncReconcileResponsePreparedStackTypeBoolean; +export type SyncReconcileResponsePendingPreparedStackDefaultBoolean = { + type: SyncReconcileResponsePendingPreparedStackTypeBoolean; /** * Boolean default. */ value: boolean; }; -export const SyncReconcileResponsePreparedStackTypeNumber = { +export const SyncReconcileResponsePendingPreparedStackTypeNumber = { Number: "number", } as const; -export type SyncReconcileResponsePreparedStackTypeNumber = ClosedEnum< - typeof SyncReconcileResponsePreparedStackTypeNumber +export type SyncReconcileResponsePendingPreparedStackTypeNumber = ClosedEnum< + typeof SyncReconcileResponsePendingPreparedStackTypeNumber >; -export type SyncReconcileResponsePreparedStackDefaultNumber = { - type: SyncReconcileResponsePreparedStackTypeNumber; +export type SyncReconcileResponsePendingPreparedStackDefaultNumber = { + type: SyncReconcileResponsePendingPreparedStackTypeNumber; /** * Number default. */ value: string; }; -export const SyncReconcileResponsePreparedStackTypeString = { +export const SyncReconcileResponsePendingPreparedStackTypeString = { String: "string", } as const; -export type SyncReconcileResponsePreparedStackTypeString = ClosedEnum< - typeof SyncReconcileResponsePreparedStackTypeString +export type SyncReconcileResponsePendingPreparedStackTypeString = ClosedEnum< + typeof SyncReconcileResponsePendingPreparedStackTypeString >; -export type SyncReconcileResponsePreparedStackDefaultString = { - type: SyncReconcileResponsePreparedStackTypeString; +export type SyncReconcileResponsePendingPreparedStackDefaultString = { + type: SyncReconcileResponsePendingPreparedStackTypeString; /** * String default. */ value: string; }; -export type SyncReconcileResponsePreparedStackDefaultUnion = - | SyncReconcileResponsePreparedStackDefaultString - | SyncReconcileResponsePreparedStackDefaultNumber - | SyncReconcileResponsePreparedStackDefaultBoolean - | SyncReconcileResponsePreparedStackDefaultStringList +export type SyncReconcileResponsePendingPreparedStackDefaultUnion = + | SyncReconcileResponsePendingPreparedStackDefaultString + | SyncReconcileResponsePendingPreparedStackDefaultNumber + | SyncReconcileResponsePendingPreparedStackDefaultBoolean + | SyncReconcileResponsePendingPreparedStackDefaultStringList | any; /** * Environment variable handling for a stack input mapping. */ -export const SyncReconcileResponsePreparedStackTypeEnvEnum = { +export const SyncReconcileResponsePendingPreparedStackTypeEnvEnum = { Plain: "plain", Secret: "secret", } as const; /** * Environment variable handling for a stack input mapping. */ -export type SyncReconcileResponsePreparedStackTypeEnvEnum = ClosedEnum< - typeof SyncReconcileResponsePreparedStackTypeEnvEnum +export type SyncReconcileResponsePendingPreparedStackTypeEnvEnum = ClosedEnum< + typeof SyncReconcileResponsePendingPreparedStackTypeEnvEnum >; -export type SyncReconcileResponsePreparedStackTypeUnion = - | SyncReconcileResponsePreparedStackTypeEnvEnum +export type SyncReconcileResponsePendingPreparedStackTypeUnion = + | SyncReconcileResponsePendingPreparedStackTypeEnvEnum | any; /** * How a resolved stack input is injected into runtime environment variables. */ -export type SyncReconcileResponsePreparedStackEnv = { +export type SyncReconcileResponsePendingPreparedStackEnv = { /** * Environment variable name. */ @@ -1878,13 +1902,17 @@ export type SyncReconcileResponsePreparedStackEnv = { * Target resource IDs or patterns. None means every env-capable resource. */ targetResources?: Array | null | undefined; - type?: SyncReconcileResponsePreparedStackTypeEnvEnum | any | null | undefined; + type?: + | SyncReconcileResponsePendingPreparedStackTypeEnvEnum + | any + | null + | undefined; }; /** * Primitive stack input kind. */ -export const SyncReconcileResponsePreparedStackKind = { +export const SyncReconcileResponsePendingPreparedStackKind = { String: "string", Secret: "secret", Number: "number", @@ -1896,14 +1924,14 @@ export const SyncReconcileResponsePreparedStackKind = { /** * Primitive stack input kind. */ -export type SyncReconcileResponsePreparedStackKind = ClosedEnum< - typeof SyncReconcileResponsePreparedStackKind +export type SyncReconcileResponsePendingPreparedStackKind = ClosedEnum< + typeof SyncReconcileResponsePendingPreparedStackKind >; /** * Represents the target cloud platform. */ -export const SyncReconcileResponsePreparedStackPlatform = { +export const SyncReconcileResponsePendingPreparedStackPlatform = { Aws: "aws", Gcp: "gcp", Azure: "azure", @@ -1915,28 +1943,28 @@ export const SyncReconcileResponsePreparedStackPlatform = { /** * Represents the target cloud platform. */ -export type SyncReconcileResponsePreparedStackPlatform = ClosedEnum< - typeof SyncReconcileResponsePreparedStackPlatform +export type SyncReconcileResponsePendingPreparedStackPlatform = ClosedEnum< + typeof SyncReconcileResponsePendingPreparedStackPlatform >; /** * Who can provide a stack input value. */ -export const SyncReconcileResponsePreparedStackProvidedBy = { +export const SyncReconcileResponsePendingPreparedStackProvidedBy = { Developer: "developer", Deployer: "deployer", } as const; /** * Who can provide a stack input value. */ -export type SyncReconcileResponsePreparedStackProvidedBy = ClosedEnum< - typeof SyncReconcileResponsePreparedStackProvidedBy +export type SyncReconcileResponsePendingPreparedStackProvidedBy = ClosedEnum< + typeof SyncReconcileResponsePendingPreparedStackProvidedBy >; /** * Portable stack input validation constraints. */ -export type SyncReconcileResponsePreparedStackValidation = { +export type SyncReconcileResponsePendingPreparedStackValidation = { /** * Semantic format hint such as url. */ @@ -1975,19 +2003,19 @@ export type SyncReconcileResponsePreparedStackValidation = { values?: Array | null | undefined; }; -export type SyncReconcileResponsePreparedStackValidationUnion = - | SyncReconcileResponsePreparedStackValidation +export type SyncReconcileResponsePendingPreparedStackValidationUnion = + | SyncReconcileResponsePendingPreparedStackValidation | any; /** * Stack input definition serialized into a release stack. */ -export type SyncReconcileResponsePreparedStackInput = { +export type SyncReconcileResponsePendingPreparedStackInput = { default?: - | SyncReconcileResponsePreparedStackDefaultString - | SyncReconcileResponsePreparedStackDefaultNumber - | SyncReconcileResponsePreparedStackDefaultBoolean - | SyncReconcileResponsePreparedStackDefaultStringList + | SyncReconcileResponsePendingPreparedStackDefaultString + | SyncReconcileResponsePendingPreparedStackDefaultNumber + | SyncReconcileResponsePendingPreparedStackDefaultBoolean + | SyncReconcileResponsePendingPreparedStackDefaultStringList | any | null | undefined; @@ -1998,7 +2026,7 @@ export type SyncReconcileResponsePreparedStackInput = { /** * Runtime env-var mappings for v1 input resolution. */ - env?: Array | undefined; + env?: Array | undefined; /** * Stable input ID used by CLI/API calls. */ @@ -2006,7 +2034,7 @@ export type SyncReconcileResponsePreparedStackInput = { /** * Primitive stack input kind. */ - kind: SyncReconcileResponsePreparedStackKind; + kind: SyncReconcileResponsePendingPreparedStackKind; /** * Human-facing field label. */ @@ -2019,35 +2047,34 @@ export type SyncReconcileResponsePreparedStackInput = { * Platforms where this input applies. */ platforms?: - | Array + | Array | null | undefined; /** * Who can provide this value. */ - providedBy: Array; + providedBy: Array; /** * Whether a resolved value is required before deployment can proceed. */ required: boolean; validation?: - | SyncReconcileResponsePreparedStackValidation + | SyncReconcileResponsePendingPreparedStackValidation | any | null | undefined; }; -export const SyncReconcileResponsePreparedStackManagementEnum = { +export const SyncReconcileResponsePendingPreparedStackManagementEnum = { Auto: "auto", } as const; -export type SyncReconcileResponsePreparedStackManagementEnum = ClosedEnum< - typeof SyncReconcileResponsePreparedStackManagementEnum ->; +export type SyncReconcileResponsePendingPreparedStackManagementEnum = + ClosedEnum; /** * AWS-specific binding specification */ -export type SyncReconcileResponsePreparedStackOverrideAwResource = { +export type SyncReconcileResponsePendingPreparedStackOverrideAwResource = { /** * Optional condition for additional filtering (rare) */ @@ -2061,7 +2088,7 @@ export type SyncReconcileResponsePreparedStackOverrideAwResource = { /** * AWS-specific binding specification */ -export type SyncReconcileResponsePreparedStackOverrideAwStack = { +export type SyncReconcileResponsePendingPreparedStackOverrideAwStack = { /** * Optional condition for additional filtering (rare) */ @@ -2075,35 +2102,36 @@ export type SyncReconcileResponsePreparedStackOverrideAwStack = { /** * Generic binding configuration for permissions */ -export type SyncReconcileResponsePreparedStackOverrideAwBinding = { +export type SyncReconcileResponsePendingPreparedStackOverrideAwBinding = { /** * AWS-specific binding specification */ - resource?: SyncReconcileResponsePreparedStackOverrideAwResource | undefined; + resource?: + | SyncReconcileResponsePendingPreparedStackOverrideAwResource + | undefined; /** * AWS-specific binding specification */ - stack?: SyncReconcileResponsePreparedStackOverrideAwStack | undefined; + stack?: SyncReconcileResponsePendingPreparedStackOverrideAwStack | undefined; }; /** * IAM effect. Defaults to Allow. */ -export const SyncReconcileResponsePreparedStackOverrideEffect = { +export const SyncReconcileResponsePendingPreparedStackOverrideEffect = { Allow: "Allow", Deny: "Deny", } as const; /** * IAM effect. Defaults to Allow. */ -export type SyncReconcileResponsePreparedStackOverrideEffect = ClosedEnum< - typeof SyncReconcileResponsePreparedStackOverrideEffect ->; +export type SyncReconcileResponsePendingPreparedStackOverrideEffect = + ClosedEnum; /** * Grant permissions for a specific cloud platform */ -export type SyncReconcileResponsePreparedStackOverrideAwGrant = { +export type SyncReconcileResponsePendingPreparedStackOverrideAwGrant = { /** * AWS IAM actions (only for AWS) */ @@ -2129,11 +2157,11 @@ export type SyncReconcileResponsePreparedStackOverrideAwGrant = { /** * AWS-specific platform permission configuration */ -export type SyncReconcileResponsePreparedStackOverrideAw = { +export type SyncReconcileResponsePendingPreparedStackOverrideAw = { /** * Generic binding configuration for permissions */ - binding: SyncReconcileResponsePreparedStackOverrideAwBinding; + binding: SyncReconcileResponsePendingPreparedStackOverrideAwBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2141,11 +2169,11 @@ export type SyncReconcileResponsePreparedStackOverrideAw = { /** * IAM effect. Defaults to Allow. */ - effect?: SyncReconcileResponsePreparedStackOverrideEffect | undefined; + effect?: SyncReconcileResponsePendingPreparedStackOverrideEffect | undefined; /** * Grant permissions for a specific cloud platform */ - grant: SyncReconcileResponsePreparedStackOverrideAwGrant; + grant: SyncReconcileResponsePendingPreparedStackOverrideAwGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2155,7 +2183,7 @@ export type SyncReconcileResponsePreparedStackOverrideAw = { /** * Azure-specific binding specification */ -export type SyncReconcileResponsePreparedStackOverrideAzureResource = { +export type SyncReconcileResponsePendingPreparedStackOverrideAzureResource = { /** * Scope (subscription/resource group/resource level) */ @@ -2165,7 +2193,7 @@ export type SyncReconcileResponsePreparedStackOverrideAzureResource = { /** * Azure-specific binding specification */ -export type SyncReconcileResponsePreparedStackOverrideAzureStack = { +export type SyncReconcileResponsePendingPreparedStackOverrideAzureStack = { /** * Scope (subscription/resource group/resource level) */ @@ -2175,23 +2203,25 @@ export type SyncReconcileResponsePreparedStackOverrideAzureStack = { /** * Generic binding configuration for permissions */ -export type SyncReconcileResponsePreparedStackOverrideAzureBinding = { +export type SyncReconcileResponsePendingPreparedStackOverrideAzureBinding = { /** * Azure-specific binding specification */ resource?: - | SyncReconcileResponsePreparedStackOverrideAzureResource + | SyncReconcileResponsePendingPreparedStackOverrideAzureResource | undefined; /** * Azure-specific binding specification */ - stack?: SyncReconcileResponsePreparedStackOverrideAzureStack | undefined; + stack?: + | SyncReconcileResponsePendingPreparedStackOverrideAzureStack + | undefined; }; /** * Grant permissions for a specific cloud platform */ -export type SyncReconcileResponsePreparedStackOverrideAzureGrant = { +export type SyncReconcileResponsePendingPreparedStackOverrideAzureGrant = { /** * AWS IAM actions (only for AWS) */ @@ -2217,11 +2247,11 @@ export type SyncReconcileResponsePreparedStackOverrideAzureGrant = { /** * Azure-specific platform permission configuration */ -export type SyncReconcileResponsePreparedStackOverrideAzure = { +export type SyncReconcileResponsePendingPreparedStackOverrideAzure = { /** * Generic binding configuration for permissions */ - binding: SyncReconcileResponsePreparedStackOverrideAzureBinding; + binding: SyncReconcileResponsePendingPreparedStackOverrideAzureBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2229,7 +2259,7 @@ export type SyncReconcileResponsePreparedStackOverrideAzure = { /** * Grant permissions for a specific cloud platform */ - grant: SyncReconcileResponsePreparedStackOverrideAzureGrant; + grant: SyncReconcileResponsePendingPreparedStackOverrideAzureGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2239,21 +2269,22 @@ export type SyncReconcileResponsePreparedStackOverrideAzure = { /** * GCP IAM condition */ -export type SyncReconcileResponsePreparedStackOverrideConditionResource = { - expression: string; - title: string; -}; +export type SyncReconcileResponsePendingPreparedStackOverrideConditionResource = + { + expression: string; + title: string; + }; -export type SyncReconcileResponsePreparedStackOverrideResourceConditionUnion = - | SyncReconcileResponsePreparedStackOverrideConditionResource +export type SyncReconcileResponsePendingPreparedStackOverrideResourceConditionUnion = + | SyncReconcileResponsePendingPreparedStackOverrideConditionResource | any; /** * GCP-specific binding specification */ -export type SyncReconcileResponsePreparedStackOverrideGcpResource = { +export type SyncReconcileResponsePendingPreparedStackOverrideGcpResource = { condition?: - | SyncReconcileResponsePreparedStackOverrideConditionResource + | SyncReconcileResponsePendingPreparedStackOverrideConditionResource | any | null | undefined; @@ -2266,21 +2297,21 @@ export type SyncReconcileResponsePreparedStackOverrideGcpResource = { /** * GCP IAM condition */ -export type SyncReconcileResponsePreparedStackOverrideConditionStack = { +export type SyncReconcileResponsePendingPreparedStackOverrideConditionStack = { expression: string; title: string; }; -export type SyncReconcileResponsePreparedStackOverrideStackConditionUnion = - | SyncReconcileResponsePreparedStackOverrideConditionStack +export type SyncReconcileResponsePendingPreparedStackOverrideStackConditionUnion = + | SyncReconcileResponsePendingPreparedStackOverrideConditionStack | any; /** * GCP-specific binding specification */ -export type SyncReconcileResponsePreparedStackOverrideGcpStack = { +export type SyncReconcileResponsePendingPreparedStackOverrideGcpStack = { condition?: - | SyncReconcileResponsePreparedStackOverrideConditionStack + | SyncReconcileResponsePendingPreparedStackOverrideConditionStack | any | null | undefined; @@ -2293,21 +2324,23 @@ export type SyncReconcileResponsePreparedStackOverrideGcpStack = { /** * Generic binding configuration for permissions */ -export type SyncReconcileResponsePreparedStackOverrideGcpBinding = { +export type SyncReconcileResponsePendingPreparedStackOverrideGcpBinding = { /** * GCP-specific binding specification */ - resource?: SyncReconcileResponsePreparedStackOverrideGcpResource | undefined; + resource?: + | SyncReconcileResponsePendingPreparedStackOverrideGcpResource + | undefined; /** * GCP-specific binding specification */ - stack?: SyncReconcileResponsePreparedStackOverrideGcpStack | undefined; + stack?: SyncReconcileResponsePendingPreparedStackOverrideGcpStack | undefined; }; /** * Grant permissions for a specific cloud platform */ -export type SyncReconcileResponsePreparedStackOverrideGcpGrant = { +export type SyncReconcileResponsePendingPreparedStackOverrideGcpGrant = { /** * AWS IAM actions (only for AWS) */ @@ -2333,11 +2366,11 @@ export type SyncReconcileResponsePreparedStackOverrideGcpGrant = { /** * GCP-specific platform permission configuration */ -export type SyncReconcileResponsePreparedStackOverrideGcp = { +export type SyncReconcileResponsePendingPreparedStackOverrideGcp = { /** * Generic binding configuration for permissions */ - binding: SyncReconcileResponsePreparedStackOverrideGcpBinding; + binding: SyncReconcileResponsePendingPreparedStackOverrideGcpBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2345,7 +2378,7 @@ export type SyncReconcileResponsePreparedStackOverrideGcp = { /** * Grant permissions for a specific cloud platform */ - grant: SyncReconcileResponsePreparedStackOverrideGcpGrant; + grant: SyncReconcileResponsePendingPreparedStackOverrideGcpGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2355,28 +2388,34 @@ export type SyncReconcileResponsePreparedStackOverrideGcp = { /** * Platform-specific permission configurations */ -export type SyncReconcileResponsePreparedStackOverridePlatforms = { +export type SyncReconcileResponsePendingPreparedStackOverridePlatforms = { /** * AWS permission configurations */ - aws?: Array | null | undefined; + aws?: + | Array + | null + | undefined; /** * Azure permission configurations */ azure?: - | Array + | Array | null | undefined; /** * GCP permission configurations */ - gcp?: Array | null | undefined; + gcp?: + | Array + | null + | undefined; }; /** * A permission set that can be applied across different cloud platforms */ -export type SyncReconcileResponsePreparedStackOverride = { +export type SyncReconcileResponsePendingPreparedStackOverride = { /** * Human-readable description of what this permission set allows */ @@ -2388,17 +2427,17 @@ export type SyncReconcileResponsePreparedStackOverride = { /** * Platform-specific permission configurations */ - platforms: SyncReconcileResponsePreparedStackOverridePlatforms; + platforms: SyncReconcileResponsePendingPreparedStackOverridePlatforms; }; /** * Reference to a permission set - either by name or inline definition */ -export type SyncReconcileResponsePreparedStackOverrideUnion = - | SyncReconcileResponsePreparedStackOverride +export type SyncReconcileResponsePendingPreparedStackOverrideUnion = + | SyncReconcileResponsePendingPreparedStackOverride | string; -export type SyncReconcileResponsePreparedStackManagement2 = { +export type SyncReconcileResponsePendingPreparedStackManagement2 = { /** * Permission profile that maps resources to permission sets * @@ -2406,14 +2445,16 @@ export type SyncReconcileResponsePreparedStackManagement2 = { * Key can be "*" for all resources or resource name for specific resource */ override: { - [k: string]: Array; + [k: string]: Array< + SyncReconcileResponsePendingPreparedStackOverride | string + >; }; }; /** * AWS-specific binding specification */ -export type SyncReconcileResponsePreparedStackExtendAwResource = { +export type SyncReconcileResponsePendingPreparedStackExtendAwResource = { /** * Optional condition for additional filtering (rare) */ @@ -2427,7 +2468,7 @@ export type SyncReconcileResponsePreparedStackExtendAwResource = { /** * AWS-specific binding specification */ -export type SyncReconcileResponsePreparedStackExtendAwStack = { +export type SyncReconcileResponsePendingPreparedStackExtendAwStack = { /** * Optional condition for additional filtering (rare) */ @@ -2441,35 +2482,37 @@ export type SyncReconcileResponsePreparedStackExtendAwStack = { /** * Generic binding configuration for permissions */ -export type SyncReconcileResponsePreparedStackExtendAwBinding = { +export type SyncReconcileResponsePendingPreparedStackExtendAwBinding = { /** * AWS-specific binding specification */ - resource?: SyncReconcileResponsePreparedStackExtendAwResource | undefined; + resource?: + | SyncReconcileResponsePendingPreparedStackExtendAwResource + | undefined; /** * AWS-specific binding specification */ - stack?: SyncReconcileResponsePreparedStackExtendAwStack | undefined; + stack?: SyncReconcileResponsePendingPreparedStackExtendAwStack | undefined; }; /** * IAM effect. Defaults to Allow. */ -export const SyncReconcileResponsePreparedStackExtendEffect = { +export const SyncReconcileResponsePendingPreparedStackExtendEffect = { Allow: "Allow", Deny: "Deny", } as const; /** * IAM effect. Defaults to Allow. */ -export type SyncReconcileResponsePreparedStackExtendEffect = ClosedEnum< - typeof SyncReconcileResponsePreparedStackExtendEffect +export type SyncReconcileResponsePendingPreparedStackExtendEffect = ClosedEnum< + typeof SyncReconcileResponsePendingPreparedStackExtendEffect >; /** * Grant permissions for a specific cloud platform */ -export type SyncReconcileResponsePreparedStackExtendAwGrant = { +export type SyncReconcileResponsePendingPreparedStackExtendAwGrant = { /** * AWS IAM actions (only for AWS) */ @@ -2495,11 +2538,11 @@ export type SyncReconcileResponsePreparedStackExtendAwGrant = { /** * AWS-specific platform permission configuration */ -export type SyncReconcileResponsePreparedStackExtendAw = { +export type SyncReconcileResponsePendingPreparedStackExtendAw = { /** * Generic binding configuration for permissions */ - binding: SyncReconcileResponsePreparedStackExtendAwBinding; + binding: SyncReconcileResponsePendingPreparedStackExtendAwBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2507,11 +2550,11 @@ export type SyncReconcileResponsePreparedStackExtendAw = { /** * IAM effect. Defaults to Allow. */ - effect?: SyncReconcileResponsePreparedStackExtendEffect | undefined; + effect?: SyncReconcileResponsePendingPreparedStackExtendEffect | undefined; /** * Grant permissions for a specific cloud platform */ - grant: SyncReconcileResponsePreparedStackExtendAwGrant; + grant: SyncReconcileResponsePendingPreparedStackExtendAwGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2521,7 +2564,7 @@ export type SyncReconcileResponsePreparedStackExtendAw = { /** * Azure-specific binding specification */ -export type SyncReconcileResponsePreparedStackExtendAzureResource = { +export type SyncReconcileResponsePendingPreparedStackExtendAzureResource = { /** * Scope (subscription/resource group/resource level) */ @@ -2531,7 +2574,7 @@ export type SyncReconcileResponsePreparedStackExtendAzureResource = { /** * Azure-specific binding specification */ -export type SyncReconcileResponsePreparedStackExtendAzureStack = { +export type SyncReconcileResponsePendingPreparedStackExtendAzureStack = { /** * Scope (subscription/resource group/resource level) */ @@ -2541,21 +2584,23 @@ export type SyncReconcileResponsePreparedStackExtendAzureStack = { /** * Generic binding configuration for permissions */ -export type SyncReconcileResponsePreparedStackExtendAzureBinding = { +export type SyncReconcileResponsePendingPreparedStackExtendAzureBinding = { /** * Azure-specific binding specification */ - resource?: SyncReconcileResponsePreparedStackExtendAzureResource | undefined; + resource?: + | SyncReconcileResponsePendingPreparedStackExtendAzureResource + | undefined; /** * Azure-specific binding specification */ - stack?: SyncReconcileResponsePreparedStackExtendAzureStack | undefined; + stack?: SyncReconcileResponsePendingPreparedStackExtendAzureStack | undefined; }; /** * Grant permissions for a specific cloud platform */ -export type SyncReconcileResponsePreparedStackExtendAzureGrant = { +export type SyncReconcileResponsePendingPreparedStackExtendAzureGrant = { /** * AWS IAM actions (only for AWS) */ @@ -2581,11 +2626,11 @@ export type SyncReconcileResponsePreparedStackExtendAzureGrant = { /** * Azure-specific platform permission configuration */ -export type SyncReconcileResponsePreparedStackExtendAzure = { +export type SyncReconcileResponsePendingPreparedStackExtendAzure = { /** * Generic binding configuration for permissions */ - binding: SyncReconcileResponsePreparedStackExtendAzureBinding; + binding: SyncReconcileResponsePendingPreparedStackExtendAzureBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2593,7 +2638,7 @@ export type SyncReconcileResponsePreparedStackExtendAzure = { /** * Grant permissions for a specific cloud platform */ - grant: SyncReconcileResponsePreparedStackExtendAzureGrant; + grant: SyncReconcileResponsePendingPreparedStackExtendAzureGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2603,21 +2648,21 @@ export type SyncReconcileResponsePreparedStackExtendAzure = { /** * GCP IAM condition */ -export type SyncReconcileResponsePreparedStackExtendConditionResource = { +export type SyncReconcileResponsePendingPreparedStackExtendConditionResource = { expression: string; title: string; }; -export type SyncReconcileResponsePreparedStackExtendResourceConditionUnion = - | SyncReconcileResponsePreparedStackExtendConditionResource +export type SyncReconcileResponsePendingPreparedStackExtendResourceConditionUnion = + | SyncReconcileResponsePendingPreparedStackExtendConditionResource | any; /** * GCP-specific binding specification */ -export type SyncReconcileResponsePreparedStackExtendGcpResource = { +export type SyncReconcileResponsePendingPreparedStackExtendGcpResource = { condition?: - | SyncReconcileResponsePreparedStackExtendConditionResource + | SyncReconcileResponsePendingPreparedStackExtendConditionResource | any | null | undefined; @@ -2630,21 +2675,21 @@ export type SyncReconcileResponsePreparedStackExtendGcpResource = { /** * GCP IAM condition */ -export type SyncReconcileResponsePreparedStackExtendConditionStack = { +export type SyncReconcileResponsePendingPreparedStackExtendConditionStack = { expression: string; title: string; }; -export type SyncReconcileResponsePreparedStackExtendStackConditionUnion = - | SyncReconcileResponsePreparedStackExtendConditionStack +export type SyncReconcileResponsePendingPreparedStackExtendStackConditionUnion = + | SyncReconcileResponsePendingPreparedStackExtendConditionStack | any; /** * GCP-specific binding specification */ -export type SyncReconcileResponsePreparedStackExtendGcpStack = { +export type SyncReconcileResponsePendingPreparedStackExtendGcpStack = { condition?: - | SyncReconcileResponsePreparedStackExtendConditionStack + | SyncReconcileResponsePendingPreparedStackExtendConditionStack | any | null | undefined; @@ -2657,21 +2702,23 @@ export type SyncReconcileResponsePreparedStackExtendGcpStack = { /** * Generic binding configuration for permissions */ -export type SyncReconcileResponsePreparedStackExtendGcpBinding = { +export type SyncReconcileResponsePendingPreparedStackExtendGcpBinding = { /** * GCP-specific binding specification */ - resource?: SyncReconcileResponsePreparedStackExtendGcpResource | undefined; + resource?: + | SyncReconcileResponsePendingPreparedStackExtendGcpResource + | undefined; /** * GCP-specific binding specification */ - stack?: SyncReconcileResponsePreparedStackExtendGcpStack | undefined; + stack?: SyncReconcileResponsePendingPreparedStackExtendGcpStack | undefined; }; /** * Grant permissions for a specific cloud platform */ -export type SyncReconcileResponsePreparedStackExtendGcpGrant = { +export type SyncReconcileResponsePendingPreparedStackExtendGcpGrant = { /** * AWS IAM actions (only for AWS) */ @@ -2697,11 +2744,11 @@ export type SyncReconcileResponsePreparedStackExtendGcpGrant = { /** * GCP-specific platform permission configuration */ -export type SyncReconcileResponsePreparedStackExtendGcp = { +export type SyncReconcileResponsePendingPreparedStackExtendGcp = { /** * Generic binding configuration for permissions */ - binding: SyncReconcileResponsePreparedStackExtendGcpBinding; + binding: SyncReconcileResponsePendingPreparedStackExtendGcpBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2709,7 +2756,7 @@ export type SyncReconcileResponsePreparedStackExtendGcp = { /** * Grant permissions for a specific cloud platform */ - grant: SyncReconcileResponsePreparedStackExtendGcpGrant; + grant: SyncReconcileResponsePendingPreparedStackExtendGcpGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2719,28 +2766,34 @@ export type SyncReconcileResponsePreparedStackExtendGcp = { /** * Platform-specific permission configurations */ -export type SyncReconcileResponsePreparedStackExtendPlatforms = { +export type SyncReconcileResponsePendingPreparedStackExtendPlatforms = { /** * AWS permission configurations */ - aws?: Array | null | undefined; + aws?: + | Array + | null + | undefined; /** * Azure permission configurations */ azure?: - | Array + | Array | null | undefined; /** * GCP permission configurations */ - gcp?: Array | null | undefined; + gcp?: + | Array + | null + | undefined; }; /** * A permission set that can be applied across different cloud platforms */ -export type SyncReconcileResponsePreparedStackExtend = { +export type SyncReconcileResponsePendingPreparedStackExtend = { /** * Human-readable description of what this permission set allows */ @@ -2752,17 +2805,17 @@ export type SyncReconcileResponsePreparedStackExtend = { /** * Platform-specific permission configurations */ - platforms: SyncReconcileResponsePreparedStackExtendPlatforms; + platforms: SyncReconcileResponsePendingPreparedStackExtendPlatforms; }; /** * Reference to a permission set - either by name or inline definition */ -export type SyncReconcileResponsePreparedStackExtendUnion = - | SyncReconcileResponsePreparedStackExtend +export type SyncReconcileResponsePendingPreparedStackExtendUnion = + | SyncReconcileResponsePendingPreparedStackExtend | string; -export type SyncReconcileResponsePreparedStackManagement1 = { +export type SyncReconcileResponsePendingPreparedStackManagement1 = { /** * Permission profile that maps resources to permission sets * @@ -2770,22 +2823,24 @@ export type SyncReconcileResponsePreparedStackManagement1 = { * Key can be "*" for all resources or resource name for specific resource */ extend: { - [k: string]: Array; + [k: string]: Array< + SyncReconcileResponsePendingPreparedStackExtend | string + >; }; }; /** * Management permissions configuration for stack management access */ -export type SyncReconcileResponsePreparedStackManagementUnion = - | SyncReconcileResponsePreparedStackManagement1 - | SyncReconcileResponsePreparedStackManagement2 - | SyncReconcileResponsePreparedStackManagementEnum; +export type SyncReconcileResponsePendingPreparedStackManagementUnion = + | SyncReconcileResponsePendingPreparedStackManagement1 + | SyncReconcileResponsePendingPreparedStackManagement2 + | SyncReconcileResponsePendingPreparedStackManagementEnum; /** * AWS-specific binding specification */ -export type SyncReconcileResponsePreparedStackProfileAwResource = { +export type SyncReconcileResponsePendingPreparedStackProfileAwResource = { /** * Optional condition for additional filtering (rare) */ @@ -2799,7 +2854,7 @@ export type SyncReconcileResponsePreparedStackProfileAwResource = { /** * AWS-specific binding specification */ -export type SyncReconcileResponsePreparedStackProfileAwStack = { +export type SyncReconcileResponsePendingPreparedStackProfileAwStack = { /** * Optional condition for additional filtering (rare) */ @@ -2813,35 +2868,37 @@ export type SyncReconcileResponsePreparedStackProfileAwStack = { /** * Generic binding configuration for permissions */ -export type SyncReconcileResponsePreparedStackProfileAwBinding = { +export type SyncReconcileResponsePendingPreparedStackProfileAwBinding = { /** * AWS-specific binding specification */ - resource?: SyncReconcileResponsePreparedStackProfileAwResource | undefined; + resource?: + | SyncReconcileResponsePendingPreparedStackProfileAwResource + | undefined; /** * AWS-specific binding specification */ - stack?: SyncReconcileResponsePreparedStackProfileAwStack | undefined; + stack?: SyncReconcileResponsePendingPreparedStackProfileAwStack | undefined; }; /** * IAM effect. Defaults to Allow. */ -export const SyncReconcileResponsePreparedStackProfileEffect = { +export const SyncReconcileResponsePendingPreparedStackProfileEffect = { Allow: "Allow", Deny: "Deny", } as const; /** * IAM effect. Defaults to Allow. */ -export type SyncReconcileResponsePreparedStackProfileEffect = ClosedEnum< - typeof SyncReconcileResponsePreparedStackProfileEffect +export type SyncReconcileResponsePendingPreparedStackProfileEffect = ClosedEnum< + typeof SyncReconcileResponsePendingPreparedStackProfileEffect >; /** * Grant permissions for a specific cloud platform */ -export type SyncReconcileResponsePreparedStackProfileAwGrant = { +export type SyncReconcileResponsePendingPreparedStackProfileAwGrant = { /** * AWS IAM actions (only for AWS) */ @@ -2867,11 +2924,11 @@ export type SyncReconcileResponsePreparedStackProfileAwGrant = { /** * AWS-specific platform permission configuration */ -export type SyncReconcileResponsePreparedStackProfileAw = { +export type SyncReconcileResponsePendingPreparedStackProfileAw = { /** * Generic binding configuration for permissions */ - binding: SyncReconcileResponsePreparedStackProfileAwBinding; + binding: SyncReconcileResponsePendingPreparedStackProfileAwBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2879,11 +2936,11 @@ export type SyncReconcileResponsePreparedStackProfileAw = { /** * IAM effect. Defaults to Allow. */ - effect?: SyncReconcileResponsePreparedStackProfileEffect | undefined; + effect?: SyncReconcileResponsePendingPreparedStackProfileEffect | undefined; /** * Grant permissions for a specific cloud platform */ - grant: SyncReconcileResponsePreparedStackProfileAwGrant; + grant: SyncReconcileResponsePendingPreparedStackProfileAwGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2893,7 +2950,7 @@ export type SyncReconcileResponsePreparedStackProfileAw = { /** * Azure-specific binding specification */ -export type SyncReconcileResponsePreparedStackProfileAzureResource = { +export type SyncReconcileResponsePendingPreparedStackProfileAzureResource = { /** * Scope (subscription/resource group/resource level) */ @@ -2903,7 +2960,7 @@ export type SyncReconcileResponsePreparedStackProfileAzureResource = { /** * Azure-specific binding specification */ -export type SyncReconcileResponsePreparedStackProfileAzureStack = { +export type SyncReconcileResponsePendingPreparedStackProfileAzureStack = { /** * Scope (subscription/resource group/resource level) */ @@ -2913,21 +2970,25 @@ export type SyncReconcileResponsePreparedStackProfileAzureStack = { /** * Generic binding configuration for permissions */ -export type SyncReconcileResponsePreparedStackProfileAzureBinding = { +export type SyncReconcileResponsePendingPreparedStackProfileAzureBinding = { /** * Azure-specific binding specification */ - resource?: SyncReconcileResponsePreparedStackProfileAzureResource | undefined; + resource?: + | SyncReconcileResponsePendingPreparedStackProfileAzureResource + | undefined; /** * Azure-specific binding specification */ - stack?: SyncReconcileResponsePreparedStackProfileAzureStack | undefined; + stack?: + | SyncReconcileResponsePendingPreparedStackProfileAzureStack + | undefined; }; /** * Grant permissions for a specific cloud platform */ -export type SyncReconcileResponsePreparedStackProfileAzureGrant = { +export type SyncReconcileResponsePendingPreparedStackProfileAzureGrant = { /** * AWS IAM actions (only for AWS) */ @@ -2953,11 +3014,11 @@ export type SyncReconcileResponsePreparedStackProfileAzureGrant = { /** * Azure-specific platform permission configuration */ -export type SyncReconcileResponsePreparedStackProfileAzure = { +export type SyncReconcileResponsePendingPreparedStackProfileAzure = { /** * Generic binding configuration for permissions */ - binding: SyncReconcileResponsePreparedStackProfileAzureBinding; + binding: SyncReconcileResponsePendingPreparedStackProfileAzureBinding; /** * Short admin-facing description of why this entry exists. */ @@ -2965,7 +3026,7 @@ export type SyncReconcileResponsePreparedStackProfileAzure = { /** * Grant permissions for a specific cloud platform */ - grant: SyncReconcileResponsePreparedStackProfileAzureGrant; + grant: SyncReconcileResponsePendingPreparedStackProfileAzureGrant; /** * Stable admin-facing label for this permission entry. */ @@ -2975,21 +3036,22 @@ export type SyncReconcileResponsePreparedStackProfileAzure = { /** * GCP IAM condition */ -export type SyncReconcileResponsePreparedStackProfileConditionResource = { - expression: string; - title: string; -}; +export type SyncReconcileResponsePendingPreparedStackProfileConditionResource = + { + expression: string; + title: string; + }; -export type SyncReconcileResponsePreparedStackProfileResourceConditionUnion = - | SyncReconcileResponsePreparedStackProfileConditionResource +export type SyncReconcileResponsePendingPreparedStackProfileResourceConditionUnion = + | SyncReconcileResponsePendingPreparedStackProfileConditionResource | any; /** * GCP-specific binding specification */ -export type SyncReconcileResponsePreparedStackProfileGcpResource = { +export type SyncReconcileResponsePendingPreparedStackProfileGcpResource = { condition?: - | SyncReconcileResponsePreparedStackProfileConditionResource + | SyncReconcileResponsePendingPreparedStackProfileConditionResource | any | null | undefined; @@ -3002,21 +3064,21 @@ export type SyncReconcileResponsePreparedStackProfileGcpResource = { /** * GCP IAM condition */ -export type SyncReconcileResponsePreparedStackProfileConditionStack = { +export type SyncReconcileResponsePendingPreparedStackProfileConditionStack = { expression: string; title: string; }; -export type SyncReconcileResponsePreparedStackProfileStackConditionUnion = - | SyncReconcileResponsePreparedStackProfileConditionStack +export type SyncReconcileResponsePendingPreparedStackProfileStackConditionUnion = + | SyncReconcileResponsePendingPreparedStackProfileConditionStack | any; /** * GCP-specific binding specification */ -export type SyncReconcileResponsePreparedStackProfileGcpStack = { +export type SyncReconcileResponsePendingPreparedStackProfileGcpStack = { condition?: - | SyncReconcileResponsePreparedStackProfileConditionStack + | SyncReconcileResponsePendingPreparedStackProfileConditionStack | any | null | undefined; @@ -3029,21 +3091,23 @@ export type SyncReconcileResponsePreparedStackProfileGcpStack = { /** * Generic binding configuration for permissions */ -export type SyncReconcileResponsePreparedStackProfileGcpBinding = { +export type SyncReconcileResponsePendingPreparedStackProfileGcpBinding = { /** * GCP-specific binding specification */ - resource?: SyncReconcileResponsePreparedStackProfileGcpResource | undefined; + resource?: + | SyncReconcileResponsePendingPreparedStackProfileGcpResource + | undefined; /** * GCP-specific binding specification */ - stack?: SyncReconcileResponsePreparedStackProfileGcpStack | undefined; + stack?: SyncReconcileResponsePendingPreparedStackProfileGcpStack | undefined; }; /** * Grant permissions for a specific cloud platform */ -export type SyncReconcileResponsePreparedStackProfileGcpGrant = { +export type SyncReconcileResponsePendingPreparedStackProfileGcpGrant = { /** * AWS IAM actions (only for AWS) */ @@ -3069,11 +3133,11 @@ export type SyncReconcileResponsePreparedStackProfileGcpGrant = { /** * GCP-specific platform permission configuration */ -export type SyncReconcileResponsePreparedStackProfileGcp = { +export type SyncReconcileResponsePendingPreparedStackProfileGcp = { /** * Generic binding configuration for permissions */ - binding: SyncReconcileResponsePreparedStackProfileGcpBinding; + binding: SyncReconcileResponsePendingPreparedStackProfileGcpBinding; /** * Short admin-facing description of why this entry exists. */ @@ -3081,7 +3145,7 @@ export type SyncReconcileResponsePreparedStackProfileGcp = { /** * Grant permissions for a specific cloud platform */ - grant: SyncReconcileResponsePreparedStackProfileGcpGrant; + grant: SyncReconcileResponsePendingPreparedStackProfileGcpGrant; /** * Stable admin-facing label for this permission entry. */ @@ -3091,28 +3155,34 @@ export type SyncReconcileResponsePreparedStackProfileGcp = { /** * Platform-specific permission configurations */ -export type SyncReconcileResponsePreparedStackProfilePlatforms = { +export type SyncReconcileResponsePendingPreparedStackProfilePlatforms = { /** * AWS permission configurations */ - aws?: Array | null | undefined; + aws?: + | Array + | null + | undefined; /** * Azure permission configurations */ azure?: - | Array + | Array | null | undefined; /** * GCP permission configurations */ - gcp?: Array | null | undefined; + gcp?: + | Array + | null + | undefined; }; /** * A permission set that can be applied across different cloud platforms */ -export type SyncReconcileResponsePreparedStackProfile = { +export type SyncReconcileResponsePendingPreparedStackProfile = { /** * Human-readable description of what this permission set allows */ @@ -3124,27 +3194,27 @@ export type SyncReconcileResponsePreparedStackProfile = { /** * Platform-specific permission configurations */ - platforms: SyncReconcileResponsePreparedStackProfilePlatforms; + platforms: SyncReconcileResponsePendingPreparedStackProfilePlatforms; }; /** * Reference to a permission set - either by name or inline definition */ -export type SyncReconcileResponsePreparedStackProfileUnion = - | SyncReconcileResponsePreparedStackProfile +export type SyncReconcileResponsePendingPreparedStackProfileUnion = + | SyncReconcileResponsePendingPreparedStackProfile | string; /** * Combined permissions configuration that contains both profiles and management */ -export type SyncReconcileResponsePreparedStackPermissions = { +export type SyncReconcileResponsePendingPreparedStackPermissions = { /** * Management permissions configuration for stack management access */ management?: - | SyncReconcileResponsePreparedStackManagement1 - | SyncReconcileResponsePreparedStackManagement2 - | SyncReconcileResponsePreparedStackManagementEnum + | SyncReconcileResponsePendingPreparedStackManagement1 + | SyncReconcileResponsePendingPreparedStackManagement2 + | SyncReconcileResponsePendingPreparedStackManagementEnum | undefined; /** * Permission profiles that define access control for compute services @@ -3154,7 +3224,9 @@ export type SyncReconcileResponsePreparedStackPermissions = { */ profiles: { [k: string]: { - [k: string]: Array; + [k: string]: Array< + SyncReconcileResponsePendingPreparedStackProfile | string + >; }; }; }; @@ -3162,7 +3234,7 @@ export type SyncReconcileResponsePreparedStackPermissions = { /** * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. */ -export type SyncReconcileResponsePreparedStackConfig = { +export type SyncReconcileResponsePendingPreparedStackConfig = { /** * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. */ @@ -3177,7 +3249,7 @@ export type SyncReconcileResponsePreparedStackConfig = { /** * Reference to a resource by its stable id and resource type. */ -export type SyncReconcileResponsePreparedStackDependency = { +export type SyncReconcileResponsePendingPreparedStackDependency = { id: string; /** * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. @@ -3188,33 +3260,44 @@ export type SyncReconcileResponsePreparedStackDependency = { /** * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ -export const SyncReconcileResponsePreparedStackLifecycle = { +export const SyncReconcileResponsePendingPreparedStackLifecycle = { Frozen: "frozen", Live: "live", } as const; /** * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ -export type SyncReconcileResponsePreparedStackLifecycle = ClosedEnum< - typeof SyncReconcileResponsePreparedStackLifecycle +export type SyncReconcileResponsePendingPreparedStackLifecycle = ClosedEnum< + typeof SyncReconcileResponsePendingPreparedStackLifecycle >; -export type SyncReconcileResponsePreparedStackResources = { +export type SyncReconcileResponsePendingPreparedStackResources = { /** * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. */ - config: SyncReconcileResponsePreparedStackConfig; + config: SyncReconcileResponsePendingPreparedStackConfig; /** * Additional dependencies for this resource beyond those defined in the resource itself. * * @remarks * The total dependencies are: resource.get_dependencies() + this list */ - dependencies: Array; + dependencies: Array; + /** + * Id of the boolean stack input that decides whether this resource is + * + * @remarks + * 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. + */ + enabledWhen?: string | null | undefined; /** * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ - lifecycle: SyncReconcileResponsePreparedStackLifecycle; + lifecycle: SyncReconcileResponsePendingPreparedStackLifecycle; /** * Enable remote bindings for this resource (BYOB use case). * @@ -3228,7 +3311,7 @@ export type SyncReconcileResponsePreparedStackResources = { /** * Represents the target cloud platform. */ -export const SyncReconcileResponsePreparedStackSupportedPlatform = { +export const SyncReconcileResponsePendingPreparedStackSupportedPlatform = { Aws: "aws", Gcp: "gcp", Azure: "azure", @@ -3240,14 +3323,13 @@ export const SyncReconcileResponsePreparedStackSupportedPlatform = { /** * Represents the target cloud platform. */ -export type SyncReconcileResponsePreparedStackSupportedPlatform = ClosedEnum< - typeof SyncReconcileResponsePreparedStackSupportedPlatform ->; +export type SyncReconcileResponsePendingPreparedStackSupportedPlatform = + ClosedEnum; /** * A bag of resources, unaware of any cloud. */ -export type SyncReconcileResponsePreparedStack = { +export type SyncReconcileResponsePendingPreparedStack = { /** * Unique identifier for the stack */ @@ -3255,105 +3337,155 @@ export type SyncReconcileResponsePreparedStack = { /** * Input definitions required before setup or deployment can proceed. */ - inputs?: Array | undefined; + inputs?: Array | undefined; /** * Combined permissions configuration that contains both profiles and management */ - permissions?: SyncReconcileResponsePreparedStackPermissions | undefined; + permissions?: + | SyncReconcileResponsePendingPreparedStackPermissions + | undefined; /** * Map of resource IDs to their configurations and lifecycle settings */ - resources: { [k: string]: SyncReconcileResponsePreparedStackResources }; + resources: { + [k: string]: SyncReconcileResponsePendingPreparedStackResources; + }; /** * Which platforms this stack supports. When None, all platforms are supported. */ supportedPlatforms?: - | Array + | Array | null | undefined; }; -export type SyncReconcileResponsePreparedStackUnion = - | SyncReconcileResponsePreparedStack +export type SyncReconcileResponsePendingPreparedStackUnion = + | SyncReconcileResponsePendingPreparedStack | any; -/** - * Runtime metadata for deployment - * - * @remarks - * - * Stores deployment state that needs to persist across step calls. - */ -export type SyncReconcileResponseRuntimeMetadata = { +export const SyncReconcileResponsePreparedStackTypeStringList = { + StringList: "stringList", +} as const; +export type SyncReconcileResponsePreparedStackTypeStringList = ClosedEnum< + typeof SyncReconcileResponsePreparedStackTypeStringList +>; + +export type SyncReconcileResponsePreparedStackDefaultStringList = { + type: SyncReconcileResponsePreparedStackTypeStringList; /** - * Hash of the environment variables snapshot that was last synced to the vault - * - * @remarks - * Used to avoid redundant sync operations during incremental deployment + * String list default. */ - lastSyncedEnvVarsHash?: string | null | undefined; + value: Array; +}; + +export const SyncReconcileResponsePreparedStackTypeBoolean = { + Boolean: "boolean", +} as const; +export type SyncReconcileResponsePreparedStackTypeBoolean = ClosedEnum< + typeof SyncReconcileResponsePreparedStackTypeBoolean +>; + +export type SyncReconcileResponsePreparedStackDefaultBoolean = { + type: SyncReconcileResponsePreparedStackTypeBoolean; /** - * Exact vault keys owned by the deployment secret synchronizer. This - * - * @remarks - * inventory lets a later snapshot delete removed keys without listing or - * touching unrelated values in the same vault. + * Boolean default. */ - lastSyncedSecretNames?: Array | undefined; - preparedStack?: SyncReconcileResponsePreparedStack | any | null | undefined; + value: boolean; +}; + +export const SyncReconcileResponsePreparedStackTypeNumber = { + Number: "number", +} as const; +export type SyncReconcileResponsePreparedStackTypeNumber = ClosedEnum< + typeof SyncReconcileResponsePreparedStackTypeNumber +>; + +export type SyncReconcileResponsePreparedStackDefaultNumber = { + type: SyncReconcileResponsePreparedStackTypeNumber; /** - * Whether cross-account registry access has been successfully granted. - * - * @remarks - * Set to true after the manager successfully sets the ECR/GAR repo policy - * for this deployment's target account. Prevents redundant API calls on - * every reconcile tick. + * Number default. */ - registryAccessGranted?: boolean | undefined; + value: string; }; -export type SyncReconcileResponseRuntimeMetadataUnion = - | SyncReconcileResponseRuntimeMetadata +export const SyncReconcileResponsePreparedStackTypeString = { + String: "string", +} as const; +export type SyncReconcileResponsePreparedStackTypeString = ClosedEnum< + typeof SyncReconcileResponsePreparedStackTypeString +>; + +export type SyncReconcileResponsePreparedStackDefaultString = { + type: SyncReconcileResponsePreparedStackTypeString; + /** + * String default. + */ + value: string; +}; + +export type SyncReconcileResponsePreparedStackDefaultUnion = + | SyncReconcileResponsePreparedStackDefaultString + | SyncReconcileResponsePreparedStackDefaultNumber + | SyncReconcileResponsePreparedStackDefaultBoolean + | SyncReconcileResponsePreparedStackDefaultStringList | any; /** - * Represents the target cloud platform. + * Environment variable handling for a stack input mapping. */ -export const SyncReconcileResponseStackStatePlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Machines: "machines", - Local: "local", - Test: "test", +export const SyncReconcileResponsePreparedStackTypeEnvEnum = { + Plain: "plain", + Secret: "secret", } as const; /** - * Represents the target cloud platform. + * Environment variable handling for a stack input mapping. */ -export type SyncReconcileResponseStackStatePlatform = ClosedEnum< - typeof SyncReconcileResponseStackStatePlatform +export type SyncReconcileResponsePreparedStackTypeEnvEnum = ClosedEnum< + typeof SyncReconcileResponsePreparedStackTypeEnvEnum >; +export type SyncReconcileResponsePreparedStackTypeUnion = + | SyncReconcileResponsePreparedStackTypeEnvEnum + | any; + /** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + * How a resolved stack input is injected into runtime environment variables. */ -export type SyncReconcileResponseStackStateConfig = { +export type SyncReconcileResponsePreparedStackEnv = { /** - * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. + * Environment variable name. */ - id: string; + name: string; /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + * Target resource IDs or patterns. None means every env-capable resource. */ - type: string; - additionalProperties?: { [k: string]: any | null } | undefined; + targetResources?: Array | null | undefined; + type?: SyncReconcileResponsePreparedStackTypeEnvEnum | any | null | undefined; }; +/** + * Primitive stack input kind. + */ +export const SyncReconcileResponsePreparedStackKind = { + String: "string", + Secret: "secret", + Number: "number", + Integer: "integer", + Boolean: "boolean", + Enum: "enum", + StringList: "stringList", +} as const; +/** + * Primitive stack input kind. + */ +export type SyncReconcileResponsePreparedStackKind = ClosedEnum< + typeof SyncReconcileResponsePreparedStackKind +>; + /** * Represents the target cloud platform. */ -export const SyncReconcileResponseControllerPlatformEnum = { +export const SyncReconcileResponsePreparedStackPlatform = { Aws: "aws", Gcp: "gcp", Azure: "azure", @@ -3365,589 +3497,505 @@ export const SyncReconcileResponseControllerPlatformEnum = { /** * Represents the target cloud platform. */ -export type SyncReconcileResponseControllerPlatformEnum = ClosedEnum< - typeof SyncReconcileResponseControllerPlatformEnum +export type SyncReconcileResponsePreparedStackPlatform = ClosedEnum< + typeof SyncReconcileResponsePreparedStackPlatform >; -export type SyncReconcileResponseControllerPlatformUnion = - | SyncReconcileResponseControllerPlatformEnum - | any; - /** - * Reference to a resource by its stable id and resource type. + * Who can provide a stack input value. */ -export type SyncReconcileResponseStackStateDependency = { - id: string; - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - type: string; -}; +export const SyncReconcileResponsePreparedStackProvidedBy = { + Developer: "developer", + Deployer: "deployer", +} as const; +/** + * Who can provide a stack input value. + */ +export type SyncReconcileResponsePreparedStackProvidedBy = ClosedEnum< + typeof SyncReconcileResponsePreparedStackProvidedBy +>; /** - * Canonical error container that provides a structured way to represent errors - * - * @remarks - * with rich metadata including error codes, human-readable messages, context, - * and chaining capabilities for error propagation. - * - * This struct is designed to be both machine-readable and user-friendly, - * supporting serialization for API responses and detailed error reporting - * in distributed systems. + * Portable stack input validation constraints. */ -export type SyncReconcileResponseStackStateError = { +export type SyncReconcileResponsePreparedStackValidation = { /** - * A unique identifier for the type of error. - * - * @remarks - * - * This should be a short, machine-readable string that can be used - * by clients to programmatically handle different error types. - * Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" + * Semantic format hint such as url. */ - code: string; + format?: string | null | undefined; /** - * Additional diagnostic information about the error context. - * - * @remarks - * - * This optional field can contain structured data providing more details - * about the error, such as validation errors, request parameters that - * caused the issue, or other relevant context information. + * Maximum number. */ - context?: any | null | undefined; + max?: string | null | undefined; /** - * Optional human-facing remediation hint. + * Maximum string-list items. */ - hint?: string | null | undefined; + maxItems?: number | null | undefined; /** - * HTTP status code for this error. - * - * @remarks - * - * Used when converting the error to an HTTP response. If None, falls back to - * the error type's default status code or 500. + * Maximum string length. */ - httpStatusCode?: number | null | undefined; + maxLength?: number | null | undefined; /** - * Indicates if this is an internal error that should not be exposed to users. - * - * @remarks - * - * When `true`, this error contains sensitive information or implementation - * details that should not be shown to end-users. Such errors should be - * logged for debugging but replaced with generic error messages in responses. + * Minimum number. */ - internal: boolean; + min?: string | null | undefined; /** - * Human-readable error message. - * - * @remarks - * - * This message should be clear and actionable for developers or end-users, - * providing context about what went wrong and potentially how to fix it. + * Minimum string-list items. */ - message: string; + minItems?: number | null | undefined; /** - * Indicates whether the operation that caused the error should be retried. - * - * @remarks - * - * When `true`, the error is transient and the operation might succeed - * if attempted again. When `false`, retrying the same operation is - * unlikely to succeed without changes. + * Minimum string length. */ - retryable: boolean; + minLength?: number | null | undefined; /** - * The underlying error that caused this error, creating an error chain. - * - * @remarks - * - * This allows for proper error propagation and debugging by maintaining - * the full context of how an error occurred through multiple layers - * of an application. + * Portable whole-value regex pattern. */ - source?: any | null | undefined; -}; - -export type SyncReconcileResponseStackStateErrorUnion = - | SyncReconcileResponseStackStateError - | any; - -/** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ -export const SyncReconcileResponseStackStateLifecycleEnum = { - Frozen: "frozen", - Live: "live", -} as const; -/** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ -export type SyncReconcileResponseStackStateLifecycleEnum = ClosedEnum< - typeof SyncReconcileResponseStackStateLifecycleEnum ->; - -export type SyncReconcileResponseLifecycleUnion = - | SyncReconcileResponseStackStateLifecycleEnum - | any; - -/** - * Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties. - */ -export type SyncReconcileResponseOutputs = { + pattern?: string | null | undefined; /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + * Allowed string enum values. */ - type: string; - additionalProperties?: { [k: string]: any | null } | undefined; + values?: Array | null | undefined; }; -export type SyncReconcileResponseOutputsUnion = - | SyncReconcileResponseOutputs +export type SyncReconcileResponsePreparedStackValidationUnion = + | SyncReconcileResponsePreparedStackValidation | any; /** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + * Stack input definition serialized into a release stack. */ -export type SyncReconcileResponsePreviousConfig = { +export type SyncReconcileResponsePreparedStackInput = { + default?: + | SyncReconcileResponsePreparedStackDefaultString + | SyncReconcileResponsePreparedStackDefaultNumber + | SyncReconcileResponsePreparedStackDefaultBoolean + | SyncReconcileResponsePreparedStackDefaultStringList + | any + | null + | undefined; /** - * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. + * Human-facing helper text. + */ + description: string; + /** + * Runtime env-var mappings for v1 input resolution. + */ + env?: Array | undefined; + /** + * Stable input ID used by CLI/API calls. */ id: string; /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + * Primitive stack input kind. */ - type: string; - additionalProperties?: { [k: string]: any | null } | undefined; -}; - -export type SyncReconcileResponsePreviousConfigUnion = - | SyncReconcileResponsePreviousConfig - | any; - -/** - * Represents the high-level status of a resource during its lifecycle. - */ -export const SyncReconcileResponseStackStateStatus = { - Pending: "pending", - Provisioning: "provisioning", - ProvisionFailed: "provision-failed", - Running: "running", - Updating: "updating", - UpdateFailed: "update-failed", - Deleting: "deleting", - DeleteFailed: "delete-failed", - TeardownRequired: "teardown-required", - Deleted: "deleted", - RefreshFailed: "refresh-failed", -} as const; -/** - * Represents the high-level status of a resource during its lifecycle. - */ -export type SyncReconcileResponseStackStateStatus = ClosedEnum< - typeof SyncReconcileResponseStackStateStatus ->; - -/** - * Represents the state of a single resource within the stack for a specific platform. - */ -export type SyncReconcileResponseStackStateResources = { + kind: SyncReconcileResponsePreparedStackKind; /** - * The platform-specific resource controller that manages this resource's lifecycle. - * - * @remarks - * This is None when the resource status is Pending. - * Stored as JSON to make the struct serializable and movable to alien-core. + * Human-facing field label. */ - internal?: any | null | undefined; + label: string; /** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + * Example placeholder shown in UI. */ - config: SyncReconcileResponseStackStateConfig; - controllerPlatform?: - | SyncReconcileResponseControllerPlatformEnum - | any + placeholder?: string | null | undefined; + /** + * Platforms where this input applies. + */ + platforms?: + | Array | null | undefined; /** - * Complete list of dependencies for this resource, including infrastructure dependencies. - * - * @remarks - * This preserves the full dependency information from the stack definition. + * Who can provide this value. */ - dependencies?: Array | undefined; - error?: SyncReconcileResponseStackStateError | any | null | undefined; + providedBy: Array; /** - * Stores the controller state that failed, used for manual retry operations. - * - * @remarks - * This allows resuming from the exact point where the failure occurred. - * Stored as JSON to make the struct serializable and movable to alien-core. + * Whether a resolved value is required before deployment can proceed. */ - lastFailedState?: any | null | undefined; - lifecycle?: - | SyncReconcileResponseStackStateLifecycleEnum + required: boolean; + validation?: + | SyncReconcileResponsePreparedStackValidation | any | null | undefined; - outputs?: SyncReconcileResponseOutputs | any | null | undefined; - previousConfig?: SyncReconcileResponsePreviousConfig | any | null | undefined; +}; + +export const SyncReconcileResponsePreparedStackManagementEnum = { + Auto: "auto", +} as const; +export type SyncReconcileResponsePreparedStackManagementEnum = ClosedEnum< + typeof SyncReconcileResponsePreparedStackManagementEnum +>; + +/** + * AWS-specific binding specification + */ +export type SyncReconcileResponsePreparedStackOverrideAwResource = { /** - * Binding parameters for remote access. - * - * @remarks - * Only populated when the resource has `remote_access: true` in its ResourceEntry. - * This is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding). - * Populated by controllers during provisioning using get_binding_params(). + * Optional condition for additional filtering (rare) */ - remoteBindingParams?: any | null | undefined; + condition?: { [k: string]: { [k: string]: string } } | null | undefined; /** - * Tracks consecutive retry attempts for the current state transition. + * Resource ARNs to bind to */ - retryAttempt?: number | undefined; + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type SyncReconcileResponsePreparedStackOverrideAwStack = { /** - * Represents the high-level status of a resource during its lifecycle. + * Optional condition for additional filtering (rare) */ - status: SyncReconcileResponseStackStateStatus; + condition?: { [k: string]: { [k: string]: string } } | null | undefined; /** - * The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE). + * Resource ARNs to bind to */ - type: string; + resources: Array; }; /** - * Represents the collective state of all resources in a stack, including platform and pending actions. + * Generic binding configuration for permissions */ -export type SyncReconcileResponseStackState = { - /** - * Represents the target cloud platform. - */ - platform: SyncReconcileResponseStackStatePlatform; +export type SyncReconcileResponsePreparedStackOverrideAwBinding = { /** - * A prefix used for resource naming to ensure uniqueness across deployments. + * AWS-specific binding specification */ - resourcePrefix: string; + resource?: SyncReconcileResponsePreparedStackOverrideAwResource | undefined; /** - * The state of individual resources, keyed by resource ID. + * AWS-specific binding specification */ - resources: { [k: string]: SyncReconcileResponseStackStateResources }; + stack?: SyncReconcileResponsePreparedStackOverrideAwStack | undefined; }; -export type SyncReconcileResponseStackStateUnion = - | SyncReconcileResponseStackState - | any; - /** - * Deployment status in the deployment lifecycle. - * - * @remarks - * - * For observe-only deployments with no release or stack state, `Running` - * means the Operator is attached. Connectivity comes from `lastHeartbeatAt`; - * resource health comes from inventory and resource heartbeat data. + * IAM effect. Defaults to Allow. */ -export const SyncReconcileResponseStatus = { - Pending: "pending", - PreflightsFailed: "preflights-failed", - InitialSetup: "initial-setup", - InitialSetupFailed: "initial-setup-failed", - Provisioning: "provisioning", - WaitingForMachines: "waiting-for-machines", - ProvisioningFailed: "provisioning-failed", - Running: "running", - RefreshFailed: "refresh-failed", - UpdatePending: "update-pending", - Updating: "updating", - UpdateFailed: "update-failed", - DeletePending: "delete-pending", - Deleting: "deleting", - DeleteFailed: "delete-failed", - TeardownRequired: "teardown-required", - TeardownFailed: "teardown-failed", - Deleted: "deleted", - Error: "error", +export const SyncReconcileResponsePreparedStackOverrideEffect = { + Allow: "Allow", + Deny: "Deny", } as const; /** - * Deployment status in the deployment lifecycle. - * - * @remarks - * - * For observe-only deployments with no release or stack state, `Running` - * means the Operator is attached. Connectivity comes from `lastHeartbeatAt`; - * resource health comes from inventory and resource heartbeat data. + * IAM effect. Defaults to Allow. */ -export type SyncReconcileResponseStatus = ClosedEnum< - typeof SyncReconcileResponseStatus ->; - -export const SyncReconcileResponseTargetReleaseTypeStringList = { - StringList: "stringList", -} as const; -export type SyncReconcileResponseTargetReleaseTypeStringList = ClosedEnum< - typeof SyncReconcileResponseTargetReleaseTypeStringList +export type SyncReconcileResponsePreparedStackOverrideEffect = ClosedEnum< + typeof SyncReconcileResponsePreparedStackOverrideEffect >; -export type SyncReconcileResponseTargetReleaseDefaultStringList = { - type: SyncReconcileResponseTargetReleaseTypeStringList; +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileResponsePreparedStackOverrideAwGrant = { /** - * String list default. + * AWS IAM actions (only for AWS) */ - value: Array; -}; - -export const SyncReconcileResponseTargetReleaseTypeBoolean = { - Boolean: "boolean", -} as const; -export type SyncReconcileResponseTargetReleaseTypeBoolean = ClosedEnum< - typeof SyncReconcileResponseTargetReleaseTypeBoolean ->; - -export type SyncReconcileResponseTargetReleaseDefaultBoolean = { - type: SyncReconcileResponseTargetReleaseTypeBoolean; + actions?: Array | null | undefined; /** - * Boolean default. + * Azure actions (only for Azure) */ - value: boolean; -}; - -export const SyncReconcileResponseTargetReleaseTypeNumber = { - Number: "number", -} as const; -export type SyncReconcileResponseTargetReleaseTypeNumber = ClosedEnum< - typeof SyncReconcileResponseTargetReleaseTypeNumber ->; - -export type SyncReconcileResponseTargetReleaseDefaultNumber = { - type: SyncReconcileResponseTargetReleaseTypeNumber; + dataActions?: Array | null | undefined; /** - * Number default. + * GCP permissions that require an exact residual custom role. */ - value: string; -}; - -export const SyncReconcileResponseTargetReleaseTypeString = { - String: "string", -} as const; -export type SyncReconcileResponseTargetReleaseTypeString = ClosedEnum< - typeof SyncReconcileResponseTargetReleaseTypeString ->; - -export type SyncReconcileResponseTargetReleaseDefaultString = { - type: SyncReconcileResponseTargetReleaseTypeString; + permissions?: Array | null | undefined; /** - * String default. + * Provider predefined roles to bind directly. */ - value: string; + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; }; -export type SyncReconcileResponseTargetReleaseDefaultUnion = - | SyncReconcileResponseTargetReleaseDefaultString - | SyncReconcileResponseTargetReleaseDefaultNumber - | SyncReconcileResponseTargetReleaseDefaultBoolean - | SyncReconcileResponseTargetReleaseDefaultStringList - | any; - -/** - * Environment variable handling for a stack input mapping. - */ -export const SyncReconcileResponseTargetReleaseTypeEnvEnum = { - Plain: "plain", - Secret: "secret", -} as const; -/** - * Environment variable handling for a stack input mapping. - */ -export type SyncReconcileResponseTargetReleaseTypeEnvEnum = ClosedEnum< - typeof SyncReconcileResponseTargetReleaseTypeEnvEnum ->; - -export type SyncReconcileResponseTargetReleaseTypeUnion = - | SyncReconcileResponseTargetReleaseTypeEnvEnum - | any; - /** - * How a resolved stack input is injected into runtime environment variables. + * AWS-specific platform permission configuration */ -export type SyncReconcileResponseTargetReleaseEnv = { +export type SyncReconcileResponsePreparedStackOverrideAw = { /** - * Environment variable name. + * Generic binding configuration for permissions */ - name: string; + binding: SyncReconcileResponsePreparedStackOverrideAwBinding; /** - * Target resource IDs or patterns. None means every env-capable resource. + * Short admin-facing description of why this entry exists. */ - targetResources?: Array | null | undefined; - type?: SyncReconcileResponseTargetReleaseTypeEnvEnum | any | null | undefined; + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: SyncReconcileResponsePreparedStackOverrideEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileResponsePreparedStackOverrideAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; }; /** - * Primitive stack input kind. - */ -export const SyncReconcileResponseTargetReleaseKind = { - String: "string", - Secret: "secret", - Number: "number", - Integer: "integer", - Boolean: "boolean", - Enum: "enum", - StringList: "stringList", -} as const; -/** - * Primitive stack input kind. + * Azure-specific binding specification */ -export type SyncReconcileResponseTargetReleaseKind = ClosedEnum< - typeof SyncReconcileResponseTargetReleaseKind ->; +export type SyncReconcileResponsePreparedStackOverrideAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; /** - * Represents the target cloud platform. - */ -export const SyncReconcileResponseTargetReleasePlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Machines: "machines", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. + * Azure-specific binding specification */ -export type SyncReconcileResponseTargetReleasePlatform = ClosedEnum< - typeof SyncReconcileResponseTargetReleasePlatform ->; +export type SyncReconcileResponsePreparedStackOverrideAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; /** - * Who can provide a stack input value. - */ -export const SyncReconcileResponseTargetReleaseProvidedBy = { - Developer: "developer", - Deployer: "deployer", -} as const; -/** - * Who can provide a stack input value. + * Generic binding configuration for permissions */ -export type SyncReconcileResponseTargetReleaseProvidedBy = ClosedEnum< - typeof SyncReconcileResponseTargetReleaseProvidedBy ->; +export type SyncReconcileResponsePreparedStackOverrideAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: + | SyncReconcileResponsePreparedStackOverrideAzureResource + | undefined; + /** + * Azure-specific binding specification + */ + stack?: SyncReconcileResponsePreparedStackOverrideAzureStack | undefined; +}; /** - * Portable stack input validation constraints. + * Grant permissions for a specific cloud platform */ -export type SyncReconcileResponseTargetReleaseValidation = { +export type SyncReconcileResponsePreparedStackOverrideAzureGrant = { /** - * Semantic format hint such as url. + * AWS IAM actions (only for AWS) */ - format?: string | null | undefined; + actions?: Array | null | undefined; /** - * Maximum number. + * Azure actions (only for Azure) */ - max?: string | null | undefined; + dataActions?: Array | null | undefined; /** - * Maximum string-list items. + * GCP permissions that require an exact residual custom role. */ - maxItems?: number | null | undefined; + permissions?: Array | null | undefined; /** - * Maximum string length. + * Provider predefined roles to bind directly. */ - maxLength?: number | null | undefined; + predefinedRoles?: Array | null | undefined; /** - * Minimum number. + * GCP residual custom permissions to pair with predefined roles. */ - min?: string | null | undefined; + residualPermissions?: Array | null | undefined; +}; + +/** + * Azure-specific platform permission configuration + */ +export type SyncReconcileResponsePreparedStackOverrideAzure = { /** - * Minimum string-list items. + * Generic binding configuration for permissions */ - minItems?: number | null | undefined; + binding: SyncReconcileResponsePreparedStackOverrideAzureBinding; /** - * Minimum string length. + * Short admin-facing description of why this entry exists. */ - minLength?: number | null | undefined; + description?: string | null | undefined; /** - * Portable whole-value regex pattern. + * Grant permissions for a specific cloud platform */ - pattern?: string | null | undefined; + grant: SyncReconcileResponsePreparedStackOverrideAzureGrant; /** - * Allowed string enum values. + * Stable admin-facing label for this permission entry. */ - values?: Array | null | undefined; + label?: string | null | undefined; }; -export type SyncReconcileResponseTargetReleaseValidationUnion = - | SyncReconcileResponseTargetReleaseValidation +/** + * GCP IAM condition + */ +export type SyncReconcileResponsePreparedStackOverrideConditionResource = { + expression: string; + title: string; +}; + +export type SyncReconcileResponsePreparedStackOverrideResourceConditionUnion = + | SyncReconcileResponsePreparedStackOverrideConditionResource | any; /** - * Stack input definition serialized into a release stack. + * GCP-specific binding specification */ -export type SyncReconcileResponseTargetReleaseInput = { - default?: - | SyncReconcileResponseTargetReleaseDefaultString - | SyncReconcileResponseTargetReleaseDefaultNumber - | SyncReconcileResponseTargetReleaseDefaultBoolean - | SyncReconcileResponseTargetReleaseDefaultStringList +export type SyncReconcileResponsePreparedStackOverrideGcpResource = { + condition?: + | SyncReconcileResponsePreparedStackOverrideConditionResource | any | null | undefined; /** - * Human-facing helper text. + * Scope (project/resource level) */ - description: string; + scope: string; +}; + +/** + * GCP IAM condition + */ +export type SyncReconcileResponsePreparedStackOverrideConditionStack = { + expression: string; + title: string; +}; + +export type SyncReconcileResponsePreparedStackOverrideStackConditionUnion = + | SyncReconcileResponsePreparedStackOverrideConditionStack + | any; + +/** + * GCP-specific binding specification + */ +export type SyncReconcileResponsePreparedStackOverrideGcpStack = { + condition?: + | SyncReconcileResponsePreparedStackOverrideConditionStack + | any + | null + | undefined; /** - * Runtime env-var mappings for v1 input resolution. + * Scope (project/resource level) */ - env?: Array | undefined; + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileResponsePreparedStackOverrideGcpBinding = { /** - * Stable input ID used by CLI/API calls. + * GCP-specific binding specification */ - id: string; + resource?: SyncReconcileResponsePreparedStackOverrideGcpResource | undefined; /** - * Primitive stack input kind. + * GCP-specific binding specification */ - kind: SyncReconcileResponseTargetReleaseKind; + stack?: SyncReconcileResponsePreparedStackOverrideGcpStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileResponsePreparedStackOverrideGcpGrant = { /** - * Human-facing field label. + * AWS IAM actions (only for AWS) */ - label: string; + actions?: Array | null | undefined; /** - * Example placeholder shown in UI. + * Azure actions (only for Azure) */ - placeholder?: string | null | undefined; + dataActions?: Array | null | undefined; /** - * Platforms where this input applies. + * GCP permissions that require an exact residual custom role. */ - platforms?: - | Array - | null - | undefined; + permissions?: Array | null | undefined; /** - * Who can provide this value. + * Provider predefined roles to bind directly. */ - providedBy: Array; + predefinedRoles?: Array | null | undefined; /** - * Whether a resolved value is required before deployment can proceed. + * GCP residual custom permissions to pair with predefined roles. */ - required: boolean; - validation?: - | SyncReconcileResponseTargetReleaseValidation - | any + residualPermissions?: Array | null | undefined; +}; + +/** + * GCP-specific platform permission configuration + */ +export type SyncReconcileResponsePreparedStackOverrideGcp = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileResponsePreparedStackOverrideGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileResponsePreparedStackOverrideGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Platform-specific permission configurations + */ +export type SyncReconcileResponsePreparedStackOverridePlatforms = { + /** + * AWS permission configurations + */ + aws?: Array | null | undefined; + /** + * Azure permission configurations + */ + azure?: + | Array | null | undefined; + /** + * GCP permission configurations + */ + gcp?: Array | null | undefined; }; -export const SyncReconcileResponseTargetReleaseManagementEnum = { - Auto: "auto", -} as const; -export type SyncReconcileResponseTargetReleaseManagementEnum = ClosedEnum< - typeof SyncReconcileResponseTargetReleaseManagementEnum ->; +/** + * A permission set that can be applied across different cloud platforms + */ +export type SyncReconcileResponsePreparedStackOverride = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: SyncReconcileResponsePreparedStackOverridePlatforms; +}; + +/** + * Reference to a permission set - either by name or inline definition + */ +export type SyncReconcileResponsePreparedStackOverrideUnion = + | SyncReconcileResponsePreparedStackOverride + | string; + +export type SyncReconcileResponsePreparedStackManagement2 = { + /** + * Permission profile that maps resources to permission sets + * + * @remarks + * Key can be "*" for all resources or resource name for specific resource + */ + override: { + [k: string]: Array; + }; +}; /** * AWS-specific binding specification */ -export type SyncReconcileResponseTargetReleaseOverrideAwResource = { +export type SyncReconcileResponsePreparedStackExtendAwResource = { /** * Optional condition for additional filtering (rare) */ @@ -3961,7 +4009,7 @@ export type SyncReconcileResponseTargetReleaseOverrideAwResource = { /** * AWS-specific binding specification */ -export type SyncReconcileResponseTargetReleaseOverrideAwStack = { +export type SyncReconcileResponsePreparedStackExtendAwStack = { /** * Optional condition for additional filtering (rare) */ @@ -3975,35 +4023,35 @@ export type SyncReconcileResponseTargetReleaseOverrideAwStack = { /** * Generic binding configuration for permissions */ -export type SyncReconcileResponseTargetReleaseOverrideAwBinding = { +export type SyncReconcileResponsePreparedStackExtendAwBinding = { /** * AWS-specific binding specification */ - resource?: SyncReconcileResponseTargetReleaseOverrideAwResource | undefined; + resource?: SyncReconcileResponsePreparedStackExtendAwResource | undefined; /** * AWS-specific binding specification */ - stack?: SyncReconcileResponseTargetReleaseOverrideAwStack | undefined; + stack?: SyncReconcileResponsePreparedStackExtendAwStack | undefined; }; /** * IAM effect. Defaults to Allow. */ -export const SyncReconcileResponseTargetReleaseOverrideEffect = { +export const SyncReconcileResponsePreparedStackExtendEffect = { Allow: "Allow", Deny: "Deny", } as const; /** * IAM effect. Defaults to Allow. */ -export type SyncReconcileResponseTargetReleaseOverrideEffect = ClosedEnum< - typeof SyncReconcileResponseTargetReleaseOverrideEffect +export type SyncReconcileResponsePreparedStackExtendEffect = ClosedEnum< + typeof SyncReconcileResponsePreparedStackExtendEffect >; /** * Grant permissions for a specific cloud platform */ -export type SyncReconcileResponseTargetReleaseOverrideAwGrant = { +export type SyncReconcileResponsePreparedStackExtendAwGrant = { /** * AWS IAM actions (only for AWS) */ @@ -4029,11 +4077,11 @@ export type SyncReconcileResponseTargetReleaseOverrideAwGrant = { /** * AWS-specific platform permission configuration */ -export type SyncReconcileResponseTargetReleaseOverrideAw = { +export type SyncReconcileResponsePreparedStackExtendAw = { /** * Generic binding configuration for permissions */ - binding: SyncReconcileResponseTargetReleaseOverrideAwBinding; + binding: SyncReconcileResponsePreparedStackExtendAwBinding; /** * Short admin-facing description of why this entry exists. */ @@ -4041,11 +4089,11 @@ export type SyncReconcileResponseTargetReleaseOverrideAw = { /** * IAM effect. Defaults to Allow. */ - effect?: SyncReconcileResponseTargetReleaseOverrideEffect | undefined; + effect?: SyncReconcileResponsePreparedStackExtendEffect | undefined; /** * Grant permissions for a specific cloud platform */ - grant: SyncReconcileResponseTargetReleaseOverrideAwGrant; + grant: SyncReconcileResponsePreparedStackExtendAwGrant; /** * Stable admin-facing label for this permission entry. */ @@ -4055,7 +4103,7 @@ export type SyncReconcileResponseTargetReleaseOverrideAw = { /** * Azure-specific binding specification */ -export type SyncReconcileResponseTargetReleaseOverrideAzureResource = { +export type SyncReconcileResponsePreparedStackExtendAzureResource = { /** * Scope (subscription/resource group/resource level) */ @@ -4065,7 +4113,7 @@ export type SyncReconcileResponseTargetReleaseOverrideAzureResource = { /** * Azure-specific binding specification */ -export type SyncReconcileResponseTargetReleaseOverrideAzureStack = { +export type SyncReconcileResponsePreparedStackExtendAzureStack = { /** * Scope (subscription/resource group/resource level) */ @@ -4075,23 +4123,21 @@ export type SyncReconcileResponseTargetReleaseOverrideAzureStack = { /** * Generic binding configuration for permissions */ -export type SyncReconcileResponseTargetReleaseOverrideAzureBinding = { +export type SyncReconcileResponsePreparedStackExtendAzureBinding = { /** * Azure-specific binding specification */ - resource?: - | SyncReconcileResponseTargetReleaseOverrideAzureResource - | undefined; + resource?: SyncReconcileResponsePreparedStackExtendAzureResource | undefined; /** * Azure-specific binding specification */ - stack?: SyncReconcileResponseTargetReleaseOverrideAzureStack | undefined; + stack?: SyncReconcileResponsePreparedStackExtendAzureStack | undefined; }; /** * Grant permissions for a specific cloud platform */ -export type SyncReconcileResponseTargetReleaseOverrideAzureGrant = { +export type SyncReconcileResponsePreparedStackExtendAzureGrant = { /** * AWS IAM actions (only for AWS) */ @@ -4117,11 +4163,11 @@ export type SyncReconcileResponseTargetReleaseOverrideAzureGrant = { /** * Azure-specific platform permission configuration */ -export type SyncReconcileResponseTargetReleaseOverrideAzure = { +export type SyncReconcileResponsePreparedStackExtendAzure = { /** * Generic binding configuration for permissions */ - binding: SyncReconcileResponseTargetReleaseOverrideAzureBinding; + binding: SyncReconcileResponsePreparedStackExtendAzureBinding; /** * Short admin-facing description of why this entry exists. */ @@ -4129,7 +4175,7 @@ export type SyncReconcileResponseTargetReleaseOverrideAzure = { /** * Grant permissions for a specific cloud platform */ - grant: SyncReconcileResponseTargetReleaseOverrideAzureGrant; + grant: SyncReconcileResponsePreparedStackExtendAzureGrant; /** * Stable admin-facing label for this permission entry. */ @@ -4139,21 +4185,21 @@ export type SyncReconcileResponseTargetReleaseOverrideAzure = { /** * GCP IAM condition */ -export type SyncReconcileResponseTargetReleaseOverrideConditionResource = { +export type SyncReconcileResponsePreparedStackExtendConditionResource = { expression: string; title: string; }; -export type SyncReconcileResponseTargetReleaseOverrideResourceConditionUnion = - | SyncReconcileResponseTargetReleaseOverrideConditionResource +export type SyncReconcileResponsePreparedStackExtendResourceConditionUnion = + | SyncReconcileResponsePreparedStackExtendConditionResource | any; /** * GCP-specific binding specification */ -export type SyncReconcileResponseTargetReleaseOverrideGcpResource = { +export type SyncReconcileResponsePreparedStackExtendGcpResource = { condition?: - | SyncReconcileResponseTargetReleaseOverrideConditionResource + | SyncReconcileResponsePreparedStackExtendConditionResource | any | null | undefined; @@ -4166,21 +4212,21 @@ export type SyncReconcileResponseTargetReleaseOverrideGcpResource = { /** * GCP IAM condition */ -export type SyncReconcileResponseTargetReleaseOverrideCondition = { +export type SyncReconcileResponsePreparedStackExtendConditionStack = { expression: string; title: string; }; -export type SyncReconcileResponseTargetReleaseOverrideConditionUnion = - | SyncReconcileResponseTargetReleaseOverrideCondition +export type SyncReconcileResponsePreparedStackExtendStackConditionUnion = + | SyncReconcileResponsePreparedStackExtendConditionStack | any; /** * GCP-specific binding specification */ -export type SyncReconcileResponseTargetReleaseOverrideGcpStack = { +export type SyncReconcileResponsePreparedStackExtendGcpStack = { condition?: - | SyncReconcileResponseTargetReleaseOverrideCondition + | SyncReconcileResponsePreparedStackExtendConditionStack | any | null | undefined; @@ -4193,21 +4239,21 @@ export type SyncReconcileResponseTargetReleaseOverrideGcpStack = { /** * Generic binding configuration for permissions */ -export type SyncReconcileResponseTargetReleaseOverrideGcpBinding = { +export type SyncReconcileResponsePreparedStackExtendGcpBinding = { /** * GCP-specific binding specification */ - resource?: SyncReconcileResponseTargetReleaseOverrideGcpResource | undefined; + resource?: SyncReconcileResponsePreparedStackExtendGcpResource | undefined; /** * GCP-specific binding specification */ - stack?: SyncReconcileResponseTargetReleaseOverrideGcpStack | undefined; + stack?: SyncReconcileResponsePreparedStackExtendGcpStack | undefined; }; /** * Grant permissions for a specific cloud platform */ -export type SyncReconcileResponseTargetReleaseOverrideGcpGrant = { +export type SyncReconcileResponsePreparedStackExtendGcpGrant = { /** * AWS IAM actions (only for AWS) */ @@ -4233,11 +4279,11 @@ export type SyncReconcileResponseTargetReleaseOverrideGcpGrant = { /** * GCP-specific platform permission configuration */ -export type SyncReconcileResponseTargetReleaseOverrideGcp = { +export type SyncReconcileResponsePreparedStackExtendGcp = { /** * Generic binding configuration for permissions */ - binding: SyncReconcileResponseTargetReleaseOverrideGcpBinding; + binding: SyncReconcileResponsePreparedStackExtendGcpBinding; /** * Short admin-facing description of why this entry exists. */ @@ -4245,7 +4291,7 @@ export type SyncReconcileResponseTargetReleaseOverrideGcp = { /** * Grant permissions for a specific cloud platform */ - grant: SyncReconcileResponseTargetReleaseOverrideGcpGrant; + grant: SyncReconcileResponsePreparedStackExtendGcpGrant; /** * Stable admin-facing label for this permission entry. */ @@ -4255,28 +4301,28 @@ export type SyncReconcileResponseTargetReleaseOverrideGcp = { /** * Platform-specific permission configurations */ -export type SyncReconcileResponseTargetReleaseOverridePlatforms = { +export type SyncReconcileResponsePreparedStackExtendPlatforms = { /** * AWS permission configurations */ - aws?: Array | null | undefined; + aws?: Array | null | undefined; /** * Azure permission configurations */ azure?: - | Array + | Array | null | undefined; /** * GCP permission configurations */ - gcp?: Array | null | undefined; + gcp?: Array | null | undefined; }; /** * A permission set that can be applied across different cloud platforms */ -export type SyncReconcileResponseTargetReleaseOverride = { +export type SyncReconcileResponsePreparedStackExtend = { /** * Human-readable description of what this permission set allows */ @@ -4288,32 +4334,40 @@ export type SyncReconcileResponseTargetReleaseOverride = { /** * Platform-specific permission configurations */ - platforms: SyncReconcileResponseTargetReleaseOverridePlatforms; + platforms: SyncReconcileResponsePreparedStackExtendPlatforms; }; /** * Reference to a permission set - either by name or inline definition */ -export type SyncReconcileResponseTargetReleaseOverrideUnion = - | SyncReconcileResponseTargetReleaseOverride +export type SyncReconcileResponsePreparedStackExtendUnion = + | SyncReconcileResponsePreparedStackExtend | string; -export type SyncReconcileResponseTargetReleaseManagement2 = { +export type SyncReconcileResponsePreparedStackManagement1 = { /** * Permission profile that maps resources to permission sets * * @remarks * Key can be "*" for all resources or resource name for specific resource */ - override: { - [k: string]: Array; + extend: { + [k: string]: Array; }; }; +/** + * Management permissions configuration for stack management access + */ +export type SyncReconcileResponsePreparedStackManagementUnion = + | SyncReconcileResponsePreparedStackManagement1 + | SyncReconcileResponsePreparedStackManagement2 + | SyncReconcileResponsePreparedStackManagementEnum; + /** * AWS-specific binding specification */ -export type SyncReconcileResponseTargetReleaseExtendAwResource = { +export type SyncReconcileResponsePreparedStackProfileAwResource = { /** * Optional condition for additional filtering (rare) */ @@ -4327,7 +4381,7 @@ export type SyncReconcileResponseTargetReleaseExtendAwResource = { /** * AWS-specific binding specification */ -export type SyncReconcileResponseTargetReleaseExtendAwStack = { +export type SyncReconcileResponsePreparedStackProfileAwStack = { /** * Optional condition for additional filtering (rare) */ @@ -4341,35 +4395,35 @@ export type SyncReconcileResponseTargetReleaseExtendAwStack = { /** * Generic binding configuration for permissions */ -export type SyncReconcileResponseTargetReleaseExtendAwBinding = { +export type SyncReconcileResponsePreparedStackProfileAwBinding = { /** * AWS-specific binding specification */ - resource?: SyncReconcileResponseTargetReleaseExtendAwResource | undefined; + resource?: SyncReconcileResponsePreparedStackProfileAwResource | undefined; /** * AWS-specific binding specification */ - stack?: SyncReconcileResponseTargetReleaseExtendAwStack | undefined; + stack?: SyncReconcileResponsePreparedStackProfileAwStack | undefined; }; /** * IAM effect. Defaults to Allow. */ -export const SyncReconcileResponseTargetReleaseExtendEffect = { +export const SyncReconcileResponsePreparedStackProfileEffect = { Allow: "Allow", Deny: "Deny", } as const; /** * IAM effect. Defaults to Allow. */ -export type SyncReconcileResponseTargetReleaseExtendEffect = ClosedEnum< - typeof SyncReconcileResponseTargetReleaseExtendEffect +export type SyncReconcileResponsePreparedStackProfileEffect = ClosedEnum< + typeof SyncReconcileResponsePreparedStackProfileEffect >; /** * Grant permissions for a specific cloud platform */ -export type SyncReconcileResponseTargetReleaseExtendAwGrant = { +export type SyncReconcileResponsePreparedStackProfileAwGrant = { /** * AWS IAM actions (only for AWS) */ @@ -4395,11 +4449,11 @@ export type SyncReconcileResponseTargetReleaseExtendAwGrant = { /** * AWS-specific platform permission configuration */ -export type SyncReconcileResponseTargetReleaseExtendAw = { +export type SyncReconcileResponsePreparedStackProfileAw = { /** * Generic binding configuration for permissions */ - binding: SyncReconcileResponseTargetReleaseExtendAwBinding; + binding: SyncReconcileResponsePreparedStackProfileAwBinding; /** * Short admin-facing description of why this entry exists. */ @@ -4407,11 +4461,11 @@ export type SyncReconcileResponseTargetReleaseExtendAw = { /** * IAM effect. Defaults to Allow. */ - effect?: SyncReconcileResponseTargetReleaseExtendEffect | undefined; + effect?: SyncReconcileResponsePreparedStackProfileEffect | undefined; /** * Grant permissions for a specific cloud platform */ - grant: SyncReconcileResponseTargetReleaseExtendAwGrant; + grant: SyncReconcileResponsePreparedStackProfileAwGrant; /** * Stable admin-facing label for this permission entry. */ @@ -4421,7 +4475,7 @@ export type SyncReconcileResponseTargetReleaseExtendAw = { /** * Azure-specific binding specification */ -export type SyncReconcileResponseTargetReleaseExtendAzureResource = { +export type SyncReconcileResponsePreparedStackProfileAzureResource = { /** * Scope (subscription/resource group/resource level) */ @@ -4431,7 +4485,7 @@ export type SyncReconcileResponseTargetReleaseExtendAzureResource = { /** * Azure-specific binding specification */ -export type SyncReconcileResponseTargetReleaseExtendAzureStack = { +export type SyncReconcileResponsePreparedStackProfileAzureStack = { /** * Scope (subscription/resource group/resource level) */ @@ -4441,21 +4495,21 @@ export type SyncReconcileResponseTargetReleaseExtendAzureStack = { /** * Generic binding configuration for permissions */ -export type SyncReconcileResponseTargetReleaseExtendAzureBinding = { +export type SyncReconcileResponsePreparedStackProfileAzureBinding = { /** * Azure-specific binding specification */ - resource?: SyncReconcileResponseTargetReleaseExtendAzureResource | undefined; + resource?: SyncReconcileResponsePreparedStackProfileAzureResource | undefined; /** * Azure-specific binding specification */ - stack?: SyncReconcileResponseTargetReleaseExtendAzureStack | undefined; + stack?: SyncReconcileResponsePreparedStackProfileAzureStack | undefined; }; /** * Grant permissions for a specific cloud platform */ -export type SyncReconcileResponseTargetReleaseExtendAzureGrant = { +export type SyncReconcileResponsePreparedStackProfileAzureGrant = { /** * AWS IAM actions (only for AWS) */ @@ -4481,11 +4535,11 @@ export type SyncReconcileResponseTargetReleaseExtendAzureGrant = { /** * Azure-specific platform permission configuration */ -export type SyncReconcileResponseTargetReleaseExtendAzure = { +export type SyncReconcileResponsePreparedStackProfileAzure = { /** * Generic binding configuration for permissions */ - binding: SyncReconcileResponseTargetReleaseExtendAzureBinding; + binding: SyncReconcileResponsePreparedStackProfileAzureBinding; /** * Short admin-facing description of why this entry exists. */ @@ -4493,7 +4547,7 @@ export type SyncReconcileResponseTargetReleaseExtendAzure = { /** * Grant permissions for a specific cloud platform */ - grant: SyncReconcileResponseTargetReleaseExtendAzureGrant; + grant: SyncReconcileResponsePreparedStackProfileAzureGrant; /** * Stable admin-facing label for this permission entry. */ @@ -4503,21 +4557,21 @@ export type SyncReconcileResponseTargetReleaseExtendAzure = { /** * GCP IAM condition */ -export type SyncReconcileResponseTargetReleaseExtendConditionResource = { +export type SyncReconcileResponsePreparedStackProfileConditionResource = { expression: string; title: string; }; -export type SyncReconcileResponseTargetReleaseExtendResourceConditionUnion = - | SyncReconcileResponseTargetReleaseExtendConditionResource +export type SyncReconcileResponsePreparedStackProfileResourceConditionUnion = + | SyncReconcileResponsePreparedStackProfileConditionResource | any; /** * GCP-specific binding specification */ -export type SyncReconcileResponseTargetReleaseExtendGcpResource = { +export type SyncReconcileResponsePreparedStackProfileGcpResource = { condition?: - | SyncReconcileResponseTargetReleaseExtendConditionResource + | SyncReconcileResponsePreparedStackProfileConditionResource | any | null | undefined; @@ -4530,21 +4584,21 @@ export type SyncReconcileResponseTargetReleaseExtendGcpResource = { /** * GCP IAM condition */ -export type SyncReconcileResponseTargetReleaseExtendCondition = { +export type SyncReconcileResponsePreparedStackProfileConditionStack = { expression: string; title: string; }; -export type SyncReconcileResponseTargetReleaseExtendConditionUnion = - | SyncReconcileResponseTargetReleaseExtendCondition +export type SyncReconcileResponsePreparedStackProfileStackConditionUnion = + | SyncReconcileResponsePreparedStackProfileConditionStack | any; /** * GCP-specific binding specification */ -export type SyncReconcileResponseTargetReleaseExtendGcpStack = { +export type SyncReconcileResponsePreparedStackProfileGcpStack = { condition?: - | SyncReconcileResponseTargetReleaseExtendCondition + | SyncReconcileResponsePreparedStackProfileConditionStack | any | null | undefined; @@ -4557,21 +4611,21 @@ export type SyncReconcileResponseTargetReleaseExtendGcpStack = { /** * Generic binding configuration for permissions */ -export type SyncReconcileResponseTargetReleaseExtendGcpBinding = { +export type SyncReconcileResponsePreparedStackProfileGcpBinding = { /** * GCP-specific binding specification */ - resource?: SyncReconcileResponseTargetReleaseExtendGcpResource | undefined; + resource?: SyncReconcileResponsePreparedStackProfileGcpResource | undefined; /** * GCP-specific binding specification */ - stack?: SyncReconcileResponseTargetReleaseExtendGcpStack | undefined; + stack?: SyncReconcileResponsePreparedStackProfileGcpStack | undefined; }; /** * Grant permissions for a specific cloud platform */ -export type SyncReconcileResponseTargetReleaseExtendGcpGrant = { +export type SyncReconcileResponsePreparedStackProfileGcpGrant = { /** * AWS IAM actions (only for AWS) */ @@ -4597,11 +4651,11 @@ export type SyncReconcileResponseTargetReleaseExtendGcpGrant = { /** * GCP-specific platform permission configuration */ -export type SyncReconcileResponseTargetReleaseExtendGcp = { +export type SyncReconcileResponsePreparedStackProfileGcp = { /** * Generic binding configuration for permissions */ - binding: SyncReconcileResponseTargetReleaseExtendGcpBinding; + binding: SyncReconcileResponsePreparedStackProfileGcpBinding; /** * Short admin-facing description of why this entry exists. */ @@ -4609,7 +4663,7 @@ export type SyncReconcileResponseTargetReleaseExtendGcp = { /** * Grant permissions for a specific cloud platform */ - grant: SyncReconcileResponseTargetReleaseExtendGcpGrant; + grant: SyncReconcileResponsePreparedStackProfileGcpGrant; /** * Stable admin-facing label for this permission entry. */ @@ -4619,28 +4673,28 @@ export type SyncReconcileResponseTargetReleaseExtendGcp = { /** * Platform-specific permission configurations */ -export type SyncReconcileResponseTargetReleaseExtendPlatforms = { +export type SyncReconcileResponsePreparedStackProfilePlatforms = { /** * AWS permission configurations */ - aws?: Array | null | undefined; + aws?: Array | null | undefined; /** * Azure permission configurations */ azure?: - | Array + | Array | null | undefined; /** * GCP permission configurations */ - gcp?: Array | null | undefined; + gcp?: Array | null | undefined; }; /** * A permission set that can be applied across different cloud platforms */ -export type SyncReconcileResponseTargetReleaseExtend = { +export type SyncReconcileResponsePreparedStackProfile = { /** * Human-readable description of what this permission set allows */ @@ -4652,417 +4706,470 @@ export type SyncReconcileResponseTargetReleaseExtend = { /** * Platform-specific permission configurations */ - platforms: SyncReconcileResponseTargetReleaseExtendPlatforms; + platforms: SyncReconcileResponsePreparedStackProfilePlatforms; }; /** * Reference to a permission set - either by name or inline definition */ -export type SyncReconcileResponseTargetReleaseExtendUnion = - | SyncReconcileResponseTargetReleaseExtend +export type SyncReconcileResponsePreparedStackProfileUnion = + | SyncReconcileResponsePreparedStackProfile | string; -export type SyncReconcileResponseTargetReleaseManagement1 = { - /** - * Permission profile that maps resources to permission sets - * - * @remarks - * Key can be "*" for all resources or resource name for specific resource - */ - extend: { - [k: string]: Array; - }; -}; - -/** - * Management permissions configuration for stack management access - */ -export type SyncReconcileResponseTargetReleaseManagementUnion = - | SyncReconcileResponseTargetReleaseManagement1 - | SyncReconcileResponseTargetReleaseManagement2 - | SyncReconcileResponseTargetReleaseManagementEnum; - /** - * AWS-specific binding specification + * Combined permissions configuration that contains both profiles and management */ -export type SyncReconcileResponseTargetReleaseProfileAwResource = { +export type SyncReconcileResponsePreparedStackPermissions = { /** - * Optional condition for additional filtering (rare) + * Management permissions configuration for stack management access */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; + management?: + | SyncReconcileResponsePreparedStackManagement1 + | SyncReconcileResponsePreparedStackManagement2 + | SyncReconcileResponsePreparedStackManagementEnum + | undefined; /** - * Resource ARNs to bind to + * Permission profiles that define access control for compute services + * + * @remarks + * Key is the profile name, value is the permission configuration */ - resources: Array; + profiles: { + [k: string]: { + [k: string]: Array; + }; + }; }; /** - * AWS-specific binding specification + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. */ -export type SyncReconcileResponseTargetReleaseProfileAwStack = { +export type SyncReconcileResponsePreparedStackConfig = { /** - * Optional condition for additional filtering (rare) + * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; + id: string; /** - * Resource ARNs to bind to + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. */ - resources: Array; + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; }; /** - * Generic binding configuration for permissions + * Reference to a resource by its stable id and resource type. */ -export type SyncReconcileResponseTargetReleaseProfileAwBinding = { - /** - * AWS-specific binding specification - */ - resource?: SyncReconcileResponseTargetReleaseProfileAwResource | undefined; +export type SyncReconcileResponsePreparedStackDependency = { + id: string; /** - * AWS-specific binding specification + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. */ - stack?: SyncReconcileResponseTargetReleaseProfileAwStack | undefined; + type: string; }; /** - * IAM effect. Defaults to Allow. + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ -export const SyncReconcileResponseTargetReleaseProfileEffect = { - Allow: "Allow", - Deny: "Deny", +export const SyncReconcileResponsePreparedStackLifecycle = { + Frozen: "frozen", + Live: "live", } as const; /** - * IAM effect. Defaults to Allow. + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ -export type SyncReconcileResponseTargetReleaseProfileEffect = ClosedEnum< - typeof SyncReconcileResponseTargetReleaseProfileEffect +export type SyncReconcileResponsePreparedStackLifecycle = ClosedEnum< + typeof SyncReconcileResponsePreparedStackLifecycle >; -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileResponseTargetReleaseProfileAwGrant = { +export type SyncReconcileResponsePreparedStackResources = { /** - * AWS IAM actions (only for AWS) + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. */ - actions?: Array | null | undefined; + config: SyncReconcileResponsePreparedStackConfig; /** - * Azure actions (only for Azure) + * Additional dependencies for this resource beyond those defined in the resource itself. + * + * @remarks + * The total dependencies are: resource.get_dependencies() + this list */ - dataActions?: Array | null | undefined; + dependencies: Array; /** - * GCP permissions that require an exact residual custom role. + * Id of the boolean stack input that decides whether this resource is + * + * @remarks + * 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. */ - permissions?: Array | null | undefined; + enabledWhen?: string | null | undefined; /** - * Provider predefined roles to bind directly. + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ - predefinedRoles?: Array | null | undefined; + lifecycle: SyncReconcileResponsePreparedStackLifecycle; /** - * GCP residual custom permissions to pair with predefined roles. + * Enable remote bindings for this resource (BYOB use case). + * + * @remarks + * When true, binding params are synced to StackState's `remote_binding_params`. + * Default: false (prevents sensitive data in synced state). */ - residualPermissions?: Array | null | undefined; + remoteAccess?: boolean | undefined; }; /** - * AWS-specific platform permission configuration + * Represents the target cloud platform. */ -export type SyncReconcileResponseTargetReleaseProfileAw = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileResponseTargetReleaseProfileAwBinding; +export const SyncReconcileResponsePreparedStackSupportedPlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Machines: "machines", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type SyncReconcileResponsePreparedStackSupportedPlatform = ClosedEnum< + typeof SyncReconcileResponsePreparedStackSupportedPlatform +>; + +/** + * A bag of resources, unaware of any cloud. + */ +export type SyncReconcileResponsePreparedStack = { /** - * Short admin-facing description of why this entry exists. + * Unique identifier for the stack */ - description?: string | null | undefined; + id: string; /** - * IAM effect. Defaults to Allow. + * Input definitions required before setup or deployment can proceed. */ - effect?: SyncReconcileResponseTargetReleaseProfileEffect | undefined; + inputs?: Array | undefined; /** - * Grant permissions for a specific cloud platform + * Combined permissions configuration that contains both profiles and management */ - grant: SyncReconcileResponseTargetReleaseProfileAwGrant; + permissions?: SyncReconcileResponsePreparedStackPermissions | undefined; /** - * Stable admin-facing label for this permission entry. + * Map of resource IDs to their configurations and lifecycle settings */ - label?: string | null | undefined; -}; - -/** - * Azure-specific binding specification - */ -export type SyncReconcileResponseTargetReleaseProfileAzureResource = { + resources: { [k: string]: SyncReconcileResponsePreparedStackResources }; /** - * Scope (subscription/resource group/resource level) + * Which platforms this stack supports. When None, all platforms are supported. */ - scope: string; + supportedPlatforms?: + | Array + | null + | undefined; }; -/** - * Azure-specific binding specification - */ -export type SyncReconcileResponseTargetReleaseProfileAzureStack = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; +export type SyncReconcileResponsePreparedStackUnion = + | SyncReconcileResponsePreparedStack + | any; /** - * Generic binding configuration for permissions + * One-shot authority for a setup re-import to replace setup-owned resources. */ -export type SyncReconcileResponseTargetReleaseProfileAzureBinding = { +export type SyncReconcileResponseSetupUpdateAuthorization = { /** - * Azure-specific binding specification + * Frozen resource projection from the last successful deployment. */ - resource?: SyncReconcileResponseTargetReleaseProfileAzureResource | undefined; + baselineFrozenDigest: string; /** - * Azure-specific binding specification + * Unique revision used by persistence layers for compare-and-swap updates. */ - stack?: SyncReconcileResponseTargetReleaseProfileAzureStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileResponseTargetReleaseProfileAzureGrant = { + nonce: string; /** - * AWS IAM actions (only for AWS) + * Release whose stack was prepared by setup. */ - actions?: Array | null | undefined; + releaseId: string; /** - * Azure actions (only for Azure) + * Exact setup artifact revision that authored this authority. */ - dataActions?: Array | null | undefined; + setupFingerprint: string; /** - * GCP permissions that require an exact residual custom role. + * Setup fingerprint contract version. */ - permissions?: Array | null | undefined; + setupFingerprintVersion: number; /** - * Provider predefined roles to bind directly. + * Stable setup target recorded on the imported deployment. */ - predefinedRoles?: Array | null | undefined; + setupTarget: string; /** - * GCP residual custom permissions to pair with predefined roles. + * Frozen resource projection prepared by the setup re-import. */ - residualPermissions?: Array | null | undefined; + targetFrozenDigest: string; }; +export type SyncReconcileResponseSetupUpdateAuthorizationUnion = + | SyncReconcileResponseSetupUpdateAuthorization + | any; + /** - * Azure-specific platform permission configuration + * Runtime metadata for deployment + * + * @remarks + * + * Stores deployment state that needs to persist across step calls. */ -export type SyncReconcileResponseTargetReleaseProfileAzure = { +export type SyncReconcileResponseRuntimeMetadata = { /** - * Generic binding configuration for permissions + * Actor that owns structural work during the initial setup phase. */ - binding: SyncReconcileResponseTargetReleaseProfileAzureBinding; + initialSetupAuthority?: + | SyncReconcileResponseInitialSetupAuthority + | undefined; /** - * Short admin-facing description of why this entry exists. + * Hash of the environment variables snapshot that was last synced to the vault + * + * @remarks + * Used to avoid redundant sync operations during incremental deployment */ - description?: string | null | undefined; + lastSyncedEnvVarsHash?: string | null | undefined; /** - * Grant permissions for a specific cloud platform + * Exact vault keys owned by the deployment secret synchronizer. This + * + * @remarks + * inventory lets a later snapshot delete removed keys without listing or + * touching unrelated values in the same vault. */ - grant: SyncReconcileResponseTargetReleaseProfileAzureGrant; + lastSyncedSecretNames?: Array | undefined; + pendingPreparedStack?: + | SyncReconcileResponsePendingPreparedStack + | any + | null + | undefined; /** - * Stable admin-facing label for this permission entry. + * Canonical resolved answers for inputs that gate Frozen resources, + * + * @remarks + * keyed by input id, recorded when the deployment is created or its + * setup import registers. + * + * A frozen gate's answer is fixed for the deployment's lifetime: the + * update path refuses input values that conflict with these, and a Live + * resource sharing such an input resolves the persisted answer forever. */ - label?: string | null | undefined; + persistedGateAnswers?: { [k: string]: boolean } | undefined; + preparedStack?: SyncReconcileResponsePreparedStack | any | null | undefined; + /** + * Whether cross-account registry access has been successfully granted. + * + * @remarks + * Set to true after the manager successfully sets the ECR/GAR repo policy + * for this deployment's target account. Prevents redundant API calls on + * every reconcile tick. + */ + registryAccessGranted?: boolean | undefined; + setupUpdateAuthorization?: + | SyncReconcileResponseSetupUpdateAuthorization + | any + | null + | undefined; }; +export type SyncReconcileResponseRuntimeMetadataUnion = + | SyncReconcileResponseRuntimeMetadata + | any; + /** - * GCP IAM condition + * Represents the target cloud platform. */ -export type SyncReconcileResponseTargetReleaseProfileConditionResource = { - expression: string; - title: string; -}; - -export type SyncReconcileResponseTargetReleaseProfileResourceConditionUnion = - | SyncReconcileResponseTargetReleaseProfileConditionResource - | any; +export const SyncReconcileResponseStackStatePlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Machines: "machines", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type SyncReconcileResponseStackStatePlatform = ClosedEnum< + typeof SyncReconcileResponseStackStatePlatform +>; /** - * GCP-specific binding specification + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. */ -export type SyncReconcileResponseTargetReleaseProfileGcpResource = { - condition?: - | SyncReconcileResponseTargetReleaseProfileConditionResource - | any - | null - | undefined; +export type SyncReconcileResponseStackStateConfig = { /** - * Scope (project/resource level) + * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. */ - scope: string; + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; }; /** - * GCP IAM condition + * Represents the target cloud platform. */ -export type SyncReconcileResponseTargetReleaseProfileCondition = { - expression: string; - title: string; -}; +export const SyncReconcileResponseControllerPlatformEnum = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Machines: "machines", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type SyncReconcileResponseControllerPlatformEnum = ClosedEnum< + typeof SyncReconcileResponseControllerPlatformEnum +>; -export type SyncReconcileResponseTargetReleaseProfileConditionUnion = - | SyncReconcileResponseTargetReleaseProfileCondition +export type SyncReconcileResponseControllerPlatformUnion = + | SyncReconcileResponseControllerPlatformEnum | any; /** - * GCP-specific binding specification + * Reference to a resource by its stable id and resource type. */ -export type SyncReconcileResponseTargetReleaseProfileGcpStack = { - condition?: - | SyncReconcileResponseTargetReleaseProfileCondition - | any - | null - | undefined; +export type SyncReconcileResponseStackStateDependency = { + id: string; /** - * Scope (project/resource level) + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. */ - scope: string; + type: string; }; /** - * Generic binding configuration for permissions + * Canonical error container that provides a structured way to represent errors + * + * @remarks + * with rich metadata including error codes, human-readable messages, context, + * and chaining capabilities for error propagation. + * + * This struct is designed to be both machine-readable and user-friendly, + * supporting serialization for API responses and detailed error reporting + * in distributed systems. */ -export type SyncReconcileResponseTargetReleaseProfileGcpBinding = { +export type SyncReconcileResponseStackStateError = { /** - * GCP-specific binding specification + * A unique identifier for the type of error. + * + * @remarks + * + * This should be a short, machine-readable string that can be used + * by clients to programmatically handle different error types. + * Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" */ - resource?: SyncReconcileResponseTargetReleaseProfileGcpResource | undefined; + code: string; /** - * GCP-specific binding specification + * Additional diagnostic information about the error context. + * + * @remarks + * + * This optional field can contain structured data providing more details + * about the error, such as validation errors, request parameters that + * caused the issue, or other relevant context information. */ - stack?: SyncReconcileResponseTargetReleaseProfileGcpStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileResponseTargetReleaseProfileGcpGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; + context?: any | null | undefined; /** - * Provider predefined roles to bind directly. + * Optional human-facing remediation hint. */ - predefinedRoles?: Array | null | undefined; + hint?: string | null | undefined; /** - * GCP residual custom permissions to pair with predefined roles. + * HTTP status code for this error. + * + * @remarks + * + * Used when converting the error to an HTTP response. If None, falls back to + * the error type's default status code or 500. */ - residualPermissions?: Array | null | undefined; -}; - -/** - * GCP-specific platform permission configuration - */ -export type SyncReconcileResponseTargetReleaseProfileGcp = { + httpStatusCode?: number | null | undefined; /** - * Generic binding configuration for permissions + * Indicates if this is an internal error that should not be exposed to users. + * + * @remarks + * + * When `true`, this error contains sensitive information or implementation + * details that should not be shown to end-users. Such errors should be + * logged for debugging but replaced with generic error messages in responses. */ - binding: SyncReconcileResponseTargetReleaseProfileGcpBinding; + internal: boolean; /** - * Short admin-facing description of why this entry exists. + * Human-readable error message. + * + * @remarks + * + * This message should be clear and actionable for developers or end-users, + * providing context about what went wrong and potentially how to fix it. */ - description?: string | null | undefined; + message: string; /** - * Grant permissions for a specific cloud platform + * Indicates whether the operation that caused the error should be retried. + * + * @remarks + * + * When `true`, the error is transient and the operation might succeed + * if attempted again. When `false`, retrying the same operation is + * unlikely to succeed without changes. */ - grant: SyncReconcileResponseTargetReleaseProfileGcpGrant; + retryable: boolean; /** - * Stable admin-facing label for this permission entry. + * The underlying error that caused this error, creating an error chain. + * + * @remarks + * + * This allows for proper error propagation and debugging by maintaining + * the full context of how an error occurred through multiple layers + * of an application. */ - label?: string | null | undefined; + source?: any | null | undefined; }; -/** - * Platform-specific permission configurations - */ -export type SyncReconcileResponseTargetReleaseProfilePlatforms = { - /** - * AWS permission configurations - */ - aws?: Array | null | undefined; - /** - * Azure permission configurations - */ - azure?: - | Array - | null - | undefined; - /** - * GCP permission configurations - */ - gcp?: Array | null | undefined; -}; +export type SyncReconcileResponseStackStateErrorUnion = + | SyncReconcileResponseStackStateError + | any; /** - * A permission set that can be applied across different cloud platforms + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ -export type SyncReconcileResponseTargetReleaseProfile = { - /** - * Human-readable description of what this permission set allows - */ - description: string; - /** - * Unique identifier for the permission set (e.g., "storage/data-read") - */ - id: string; - /** - * Platform-specific permission configurations - */ - platforms: SyncReconcileResponseTargetReleaseProfilePlatforms; -}; - +export const SyncReconcileResponseStackStateLifecycleEnum = { + Frozen: "frozen", + Live: "live", +} as const; /** - * Reference to a permission set - either by name or inline definition + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ -export type SyncReconcileResponseTargetReleaseProfileUnion = - | SyncReconcileResponseTargetReleaseProfile - | string; +export type SyncReconcileResponseStackStateLifecycleEnum = ClosedEnum< + typeof SyncReconcileResponseStackStateLifecycleEnum +>; + +export type SyncReconcileResponseLifecycleUnion = + | SyncReconcileResponseStackStateLifecycleEnum + | any; /** - * Combined permissions configuration that contains both profiles and management + * Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties. */ -export type SyncReconcileResponseTargetReleasePermissions = { - /** - * Management permissions configuration for stack management access - */ - management?: - | SyncReconcileResponseTargetReleaseManagement1 - | SyncReconcileResponseTargetReleaseManagement2 - | SyncReconcileResponseTargetReleaseManagementEnum - | undefined; +export type SyncReconcileResponseOutputs = { /** - * Permission profiles that define access control for compute services - * - * @remarks - * Key is the profile name, value is the permission configuration + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. */ - profiles: { - [k: string]: { - [k: string]: Array; - }; - }; + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; }; +export type SyncReconcileResponseOutputsUnion = + | SyncReconcileResponseOutputs + | any; + /** * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. */ -export type SyncReconcileResponseTargetReleaseConfig = { +export type SyncReconcileResponsePreviousConfig = { /** * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. */ @@ -5074,198 +5181,288 @@ export type SyncReconcileResponseTargetReleaseConfig = { additionalProperties?: { [k: string]: any | null } | undefined; }; -/** - * Reference to a resource by its stable id and resource type. - */ -export type SyncReconcileResponseTargetReleaseDependency = { - id: string; - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - type: string; -}; +export type SyncReconcileResponsePreviousConfigUnion = + | SyncReconcileResponsePreviousConfig + | any; /** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + * Represents the high-level status of a resource during its lifecycle. */ -export const SyncReconcileResponseTargetReleaseLifecycle = { - Frozen: "frozen", - Live: "live", +export const SyncReconcileResponseStackStateStatus = { + Pending: "pending", + Provisioning: "provisioning", + ProvisionFailed: "provision-failed", + Running: "running", + Updating: "updating", + UpdateFailed: "update-failed", + Deleting: "deleting", + DeleteFailed: "delete-failed", + TeardownRequired: "teardown-required", + Deleted: "deleted", + RefreshFailed: "refresh-failed", } as const; /** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + * Represents the high-level status of a resource during its lifecycle. */ -export type SyncReconcileResponseTargetReleaseLifecycle = ClosedEnum< - typeof SyncReconcileResponseTargetReleaseLifecycle +export type SyncReconcileResponseStackStateStatus = ClosedEnum< + typeof SyncReconcileResponseStackStateStatus >; -export type SyncReconcileResponseTargetReleaseResources = { +/** + * Represents the state of a single resource within the stack for a specific platform. + */ +export type SyncReconcileResponseStackStateResources = { + /** + * The platform-specific resource controller that manages this resource's lifecycle. + * + * @remarks + * This is None when the resource status is Pending. + * Stored as JSON to make the struct serializable and movable to alien-core. + */ + internal?: any | null | undefined; /** * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. */ - config: SyncReconcileResponseTargetReleaseConfig; + config: SyncReconcileResponseStackStateConfig; + controllerPlatform?: + | SyncReconcileResponseControllerPlatformEnum + | any + | null + | undefined; /** - * Additional dependencies for this resource beyond those defined in the resource itself. + * Complete list of dependencies for this resource, including infrastructure dependencies. * * @remarks - * The total dependencies are: resource.get_dependencies() + this list + * This preserves the full dependency information from the stack definition. */ - dependencies: Array; + dependencies?: Array | undefined; + error?: SyncReconcileResponseStackStateError | any | null | undefined; /** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + * Stores the controller state that failed, used for manual retry operations. + * + * @remarks + * This allows resuming from the exact point where the failure occurred. + * Stored as JSON to make the struct serializable and movable to alien-core. */ - lifecycle: SyncReconcileResponseTargetReleaseLifecycle; + lastFailedState?: any | null | undefined; + lifecycle?: + | SyncReconcileResponseStackStateLifecycleEnum + | any + | null + | undefined; + outputs?: SyncReconcileResponseOutputs | any | null | undefined; + previousConfig?: SyncReconcileResponsePreviousConfig | any | null | undefined; /** - * Enable remote bindings for this resource (BYOB use case). + * Binding parameters for remote access. * * @remarks - * When true, binding params are synced to StackState's `remote_binding_params`. - * Default: false (prevents sensitive data in synced state). + * Only populated when the resource has `remote_access: true` in its ResourceEntry. + * This is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding). + * Populated by controllers during provisioning using get_binding_params(). */ - remoteAccess?: boolean | undefined; -}; - -/** - * Represents the target cloud platform. - */ -export const SyncReconcileResponseTargetReleaseSupportedPlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Machines: "machines", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. - */ -export type SyncReconcileResponseTargetReleaseSupportedPlatform = ClosedEnum< - typeof SyncReconcileResponseTargetReleaseSupportedPlatform ->; - -/** - * A bag of resources, unaware of any cloud. - */ -export type SyncReconcileResponseTargetReleaseStack = { + remoteBindingParams?: any | null | undefined; /** - * Unique identifier for the stack + * Tracks consecutive retry attempts for the current state transition. */ - id: string; + retryAttempt?: number | undefined; /** - * Input definitions required before setup or deployment can proceed. + * Represents the high-level status of a resource during its lifecycle. */ - inputs?: Array | undefined; + status: SyncReconcileResponseStackStateStatus; /** - * Combined permissions configuration that contains both profiles and management + * The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE). */ - permissions?: SyncReconcileResponseTargetReleasePermissions | undefined; + type: string; +}; + +/** + * Represents the collective state of all resources in a stack, including platform and pending actions. + */ +export type SyncReconcileResponseStackState = { /** - * Map of resource IDs to their configurations and lifecycle settings + * Represents the target cloud platform. */ - resources: { [k: string]: SyncReconcileResponseTargetReleaseResources }; + platform: SyncReconcileResponseStackStatePlatform; /** - * Which platforms this stack supports. When None, all platforms are supported. + * A prefix used for resource naming to ensure uniqueness across deployments. */ - supportedPlatforms?: - | Array - | null - | undefined; + resourcePrefix: string; + /** + * The state of individual resources, keyed by resource ID. + */ + resources: { [k: string]: SyncReconcileResponseStackStateResources }; }; +export type SyncReconcileResponseStackStateUnion = + | SyncReconcileResponseStackState + | any; + /** - * Release metadata + * Deployment status in the deployment lifecycle. * * @remarks * - * Identifies a specific release version and includes the stack definition. - * The deployment engine uses this to track which release is currently deployed - * and which is the target. + * For observe-only deployments with no release or stack state, `Running` + * means the Operator is attached. Connectivity comes from `lastHeartbeatAt`; + * resource health comes from inventory and resource heartbeat data. */ -export type SyncReconcileResponseTargetRelease = { +export const SyncReconcileResponseStatus = { + Pending: "pending", + PreflightsFailed: "preflights-failed", + InitialSetup: "initial-setup", + InitialSetupFailed: "initial-setup-failed", + Provisioning: "provisioning", + WaitingForMachines: "waiting-for-machines", + ProvisioningFailed: "provisioning-failed", + Running: "running", + RefreshFailed: "refresh-failed", + UpdatePending: "update-pending", + Updating: "updating", + UpdateFailed: "update-failed", + DeletePending: "delete-pending", + Deleting: "deleting", + DeleteFailed: "delete-failed", + TeardownRequired: "teardown-required", + TeardownFailed: "teardown-failed", + Deleted: "deleted", + Error: "error", +} as const; +/** + * Deployment status in the deployment lifecycle. + * + * @remarks + * + * For observe-only deployments with no release or stack state, `Running` + * means the Operator is attached. Connectivity comes from `lastHeartbeatAt`; + * resource health comes from inventory and resource heartbeat data. + */ +export type SyncReconcileResponseStatus = ClosedEnum< + typeof SyncReconcileResponseStatus +>; + +export const SyncReconcileResponseTargetReleaseTypeStringList = { + StringList: "stringList", +} as const; +export type SyncReconcileResponseTargetReleaseTypeStringList = ClosedEnum< + typeof SyncReconcileResponseTargetReleaseTypeStringList +>; + +export type SyncReconcileResponseTargetReleaseDefaultStringList = { + type: SyncReconcileResponseTargetReleaseTypeStringList; /** - * Short description of the release + * String list default. */ - description?: string | null | undefined; + value: Array; +}; + +export const SyncReconcileResponseTargetReleaseTypeBoolean = { + Boolean: "boolean", +} as const; +export type SyncReconcileResponseTargetReleaseTypeBoolean = ClosedEnum< + typeof SyncReconcileResponseTargetReleaseTypeBoolean +>; + +export type SyncReconcileResponseTargetReleaseDefaultBoolean = { + type: SyncReconcileResponseTargetReleaseTypeBoolean; /** - * Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no - * - * @remarks - * Alien-assigned release — the platform resolves a release from `version`. + * Boolean default. */ - releaseId?: string | null | undefined; + value: boolean; +}; + +export const SyncReconcileResponseTargetReleaseTypeNumber = { + Number: "number", +} as const; +export type SyncReconcileResponseTargetReleaseTypeNumber = ClosedEnum< + typeof SyncReconcileResponseTargetReleaseTypeNumber +>; + +export type SyncReconcileResponseTargetReleaseDefaultNumber = { + type: SyncReconcileResponseTargetReleaseTypeNumber; /** - * A bag of resources, unaware of any cloud. + * Number default. */ - stack: SyncReconcileResponseTargetReleaseStack; + value: string; +}; + +export const SyncReconcileResponseTargetReleaseTypeString = { + String: "string", +} as const; +export type SyncReconcileResponseTargetReleaseTypeString = ClosedEnum< + typeof SyncReconcileResponseTargetReleaseTypeString +>; + +export type SyncReconcileResponseTargetReleaseDefaultString = { + type: SyncReconcileResponseTargetReleaseTypeString; /** - * Version string (e.g., 2.1.0) + * String default. */ - version?: string | null | undefined; + value: string; }; -export type SyncReconcileResponseTargetReleaseUnion = - | SyncReconcileResponseTargetRelease +export type SyncReconcileResponseTargetReleaseDefaultUnion = + | SyncReconcileResponseTargetReleaseDefaultString + | SyncReconcileResponseTargetReleaseDefaultNumber + | SyncReconcileResponseTargetReleaseDefaultBoolean + | SyncReconcileResponseTargetReleaseDefaultStringList | any; /** - * Current deployment state after reconciliation + * Environment variable handling for a stack input mapping. */ -export type SyncReconcileResponseCurrent = { - currentRelease?: SyncReconcileResponseCurrentRelease | any | null | undefined; - environmentInfo?: - | SyncReconcileResponseEnvironmentInfoGcp - | SyncReconcileResponseEnvironmentInfoAzure - | SyncReconcileResponseEnvironmentInfoLocal - | SyncReconcileResponseEnvironmentInfoAws - | SyncReconcileResponseEnvironmentInfoTest - | any - | null - | undefined; - error?: SyncReconcileResponseError | any | null | undefined; - /** - * Represents the target cloud platform. - */ - platform: SyncReconcileResponseCurrentPlatform; - /** - * Protocol version for cross-actor compatibility. - * - * @remarks - * All actors (manager, push client, agent) check this before stepping. - * Mismatched versions produce a clear error instead of silent corruption. - * See docs/02-manager/10-deployment-protocol.md. - */ - protocolVersion: number; +export const SyncReconcileResponseTargetReleaseTypeEnvEnum = { + Plain: "plain", + Secret: "secret", +} as const; +/** + * Environment variable handling for a stack input mapping. + */ +export type SyncReconcileResponseTargetReleaseTypeEnvEnum = ClosedEnum< + typeof SyncReconcileResponseTargetReleaseTypeEnvEnum +>; + +export type SyncReconcileResponseTargetReleaseTypeUnion = + | SyncReconcileResponseTargetReleaseTypeEnvEnum + | any; + +/** + * How a resolved stack input is injected into runtime environment variables. + */ +export type SyncReconcileResponseTargetReleaseEnv = { /** - * Whether a retry has been requested for a failed deployment - * - * @remarks - * When true and status is a failed state, the deployment system will retry failed resources + * Environment variable name. */ - retryRequested?: boolean | undefined; - runtimeMetadata?: - | SyncReconcileResponseRuntimeMetadata - | any - | null - | undefined; - stackState?: SyncReconcileResponseStackState | any | null | undefined; + name: string; /** - * Deployment status in the deployment lifecycle. - * - * @remarks - * - * For observe-only deployments with no release or stack state, `Running` - * means the Operator is attached. Connectivity comes from `lastHeartbeatAt`; - * resource health comes from inventory and resource heartbeat data. + * Target resource IDs or patterns. None means every env-capable resource. */ - status: SyncReconcileResponseStatus; - targetRelease?: SyncReconcileResponseTargetRelease | any | null | undefined; + targetResources?: Array | null | undefined; + type?: SyncReconcileResponseTargetReleaseTypeEnvEnum | any | null | undefined; }; +/** + * Primitive stack input kind. + */ +export const SyncReconcileResponseTargetReleaseKind = { + String: "string", + Secret: "secret", + Number: "number", + Integer: "integer", + Boolean: "boolean", + Enum: "enum", + StringList: "stringList", +} as const; +/** + * Primitive stack input kind. + */ +export type SyncReconcileResponseTargetReleaseKind = ClosedEnum< + typeof SyncReconcileResponseTargetReleaseKind +>; + /** * Represents the target cloud platform. */ -export const SyncReconcileResponseBasePlatformEnum = { +export const SyncReconcileResponseTargetReleasePlatform = { Aws: "aws", Gcp: "gcp", Azure: "azure", @@ -5277,2327 +5474,2028 @@ export const SyncReconcileResponseBasePlatformEnum = { /** * Represents the target cloud platform. */ -export type SyncReconcileResponseBasePlatformEnum = ClosedEnum< - typeof SyncReconcileResponseBasePlatformEnum +export type SyncReconcileResponseTargetReleasePlatform = ClosedEnum< + typeof SyncReconcileResponseTargetReleasePlatform >; -export type SyncReconcileResponseBasePlatformUnion = - | SyncReconcileResponseBasePlatformEnum - | any; +/** + * Who can provide a stack input value. + */ +export const SyncReconcileResponseTargetReleaseProvidedBy = { + Developer: "developer", + Deployer: "deployer", +} as const; +/** + * Who can provide a stack input value. + */ +export type SyncReconcileResponseTargetReleaseProvidedBy = ClosedEnum< + typeof SyncReconcileResponseTargetReleaseProvidedBy +>; /** - * Configuration for a single container worker cluster. - * - * @remarks - * - * Contains the cluster ID and management token needed to interact with - * the managed container control plane API for container operations. + * Portable stack input validation constraints. */ -export type SyncReconcileResponseClusters = { +export type SyncReconcileResponseTargetReleaseValidation = { /** - * Cluster ID (deterministic: workspace/project/deployment/resourceid) + * Semantic format hint such as url. */ - clusterId: string; + format?: string | null | undefined; /** - * Management token for API access (hm_...) - * - * @remarks - * Used by alien-deployment controllers to create/update containers + * Maximum number. */ - managementToken: string; -}; - -/** - * AWS Horizon machine image catalog. - */ -export type SyncReconcileResponseHorizonMachineImageAws = { + max?: string | null | undefined; /** - * AMI IDs by architecture, then AWS region. + * Maximum string-list items. */ - amis: { [k: string]: { [k: string]: string } }; -}; - -export type SyncReconcileResponseHorizonMachineImageAwsUnion = - | SyncReconcileResponseHorizonMachineImageAws - | any; - -/** - * Azure Horizon machine image entry. - */ -export type SyncReconcileResponseAzureImages = { + maxItems?: number | null | undefined; /** - * Azure Compute Gallery image version ID. + * Maximum string length. */ - imageVersionId: string; -}; - -/** - * Azure Horizon machine image catalog. - */ -export type HorizonMachineImageAzureTarget = { + maxLength?: number | null | undefined; /** - * Images by architecture. + * Minimum number. */ - images: { [k: string]: SyncReconcileResponseAzureImages }; -}; - -export type HorizonMachineImageTargetAzureUnion = - | HorizonMachineImageAzureTarget - | any; - -/** - * Base image metadata for the Horizon machine image. - */ -export type SyncReconcileResponseBaseImage = { + min?: string | null | undefined; /** - * Base OS image name. + * Minimum string-list items. */ - name: string; + minItems?: number | null | undefined; /** - * Base OS image version or channel. + * Minimum string length. */ - version: string; -}; - -/** - * GCP Horizon machine image entry. - */ -export type SyncReconcileResponseGcpImages = { + minLength?: number | null | undefined; /** - * Source image self link or image-family URL. + * Portable whole-value regex pattern. */ - sourceImage: string; -}; - -/** - * GCP Horizon machine image catalog. - */ -export type HorizonMachineImageGcpTarget = { + pattern?: string | null | undefined; /** - * Images by architecture. + * Allowed string enum values. */ - images: { [k: string]: SyncReconcileResponseGcpImages }; + values?: Array | null | undefined; }; -export type HorizonMachineImageTargetGcpUnion = - | HorizonMachineImageGcpTarget +export type SyncReconcileResponseTargetReleaseValidationUnion = + | SyncReconcileResponseTargetReleaseValidation | any; /** - * Download artifact for one horizond release platform. + * Stack input definition serialized into a release stack. */ -export type SyncReconcileResponseHorizondArtifacts = { +export type SyncReconcileResponseTargetReleaseInput = { + default?: + | SyncReconcileResponseTargetReleaseDefaultString + | SyncReconcileResponseTargetReleaseDefaultNumber + | SyncReconcileResponseTargetReleaseDefaultBoolean + | SyncReconcileResponseTargetReleaseDefaultStringList + | any + | null + | undefined; /** - * SHA-256 digest for the artifact payload. + * Human-facing helper text. */ - sha256: string; + description: string; /** - * HTTPS URL for the artifact. + * Runtime env-var mappings for v1 input resolution. */ - url: string; -}; - -/** - * Horizon machine image catalog. - * - * @remarks - * - * Platform resolves concrete provider images from this catalog during rollout. - */ -export type SyncReconcileResponseHorizonMachineImage = { - aws?: SyncReconcileResponseHorizonMachineImageAws | any | null | undefined; - azure?: HorizonMachineImageAzureTarget | any | null | undefined; + env?: Array | undefined; /** - * Base image metadata for the Horizon machine image. + * Stable input ID used by CLI/API calls. */ - baseImage: SyncReconcileResponseBaseImage; + id: string; /** - * Logical image channel, such as prod, staging, or canary. + * Primitive stack input kind. */ - channel: string; + kind: SyncReconcileResponseTargetReleaseKind; /** - * Image manifest creation timestamp. + * Human-facing field label. */ - createdAt: string; - gcp?: HorizonMachineImageGcpTarget | any | null | undefined; + label: string; /** - * Git commit SHA used to build the image. + * Example placeholder shown in UI. */ - gitSha: string; + placeholder?: string | null | undefined; /** - * Per-architecture horizond artifacts by release-platform key. + * Platforms where this input applies. */ - horizondArtifacts: { [k: string]: SyncReconcileResponseHorizondArtifacts }; + platforms?: + | Array + | null + | undefined; /** - * horizond daemon version baked into the image. + * Who can provide this value. */ - horizondVersion: string; + providedBy: Array; /** - * Published immutable machine image version. + * Whether a resolved value is required before deployment can proceed. */ - machineImageVersion: string; + required: boolean; + validation?: + | SyncReconcileResponseTargetReleaseValidation + | any + | null + | undefined; }; -export type SyncReconcileResponseHorizonMachineImageUnion = - | SyncReconcileResponseHorizonMachineImage - | any; - -export const ComputeBackendTargetType = { - Horizon: "horizon", +export const SyncReconcileResponseTargetReleaseManagementEnum = { + Auto: "auto", } as const; -export type ComputeBackendTargetType = ClosedEnum< - typeof ComputeBackendTargetType +export type SyncReconcileResponseTargetReleaseManagementEnum = ClosedEnum< + typeof SyncReconcileResponseTargetReleaseManagementEnum >; /** - * Compute backend for Container and Worker resources. - * - * @remarks - * - * Determines how compute workloads are orchestrated on cloud platforms. - * When None, the platform default is used for cloud platforms. + * AWS-specific binding specification */ -export type SyncReconcileResponseComputeBackendHorizon = { +export type SyncReconcileResponseTargetReleaseOverrideAwResource = { /** - * Cluster configurations (one per ComputeCluster resource) - * - * @remarks - * Key: ComputeCluster resource ID from stack - * Value: Cluster ID and management token for that cluster + * Optional condition for additional filtering (rare) */ - clusters: { [k: string]: SyncReconcileResponseClusters }; - horizonMachineImage?: - | SyncReconcileResponseHorizonMachineImage - | any - | null - | undefined; + condition?: { [k: string]: { [k: string]: string } } | null | undefined; /** - * Horizon control-plane API base URL. + * Resource ARNs to bind to */ - url: string; - type: ComputeBackendTargetType; + resources: Array; }; -export type SyncReconcileResponseComputeBackendUnion = - | SyncReconcileResponseComputeBackendHorizon - | any; - -/** - * Certificate status in the certificate lifecycle - */ -export const SyncReconcileResponseAliasCertificateStatus = { - Pending: "pending", - Issued: "issued", - Renewing: "renewing", - RenewalFailed: "renewal-failed", - Failed: "failed", - Deleting: "deleting", -} as const; /** - * Certificate status in the certificate lifecycle + * AWS-specific binding specification */ -export type SyncReconcileResponseAliasCertificateStatus = ClosedEnum< - typeof SyncReconcileResponseAliasCertificateStatus ->; +export type SyncReconcileResponseTargetReleaseOverrideAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; /** - * DNS record status in the DNS lifecycle + * Generic binding configuration for permissions */ -export const SyncReconcileResponseAliasDnsStatus = { - Pending: "pending", - Active: "active", - Updating: "updating", - Deleting: "deleting", - Failed: "failed", +export type SyncReconcileResponseTargetReleaseOverrideAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: SyncReconcileResponseTargetReleaseOverrideAwResource | undefined; + /** + * AWS-specific binding specification + */ + stack?: SyncReconcileResponseTargetReleaseOverrideAwStack | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const SyncReconcileResponseTargetReleaseOverrideEffect = { + Allow: "Allow", + Deny: "Deny", } as const; /** - * DNS record status in the DNS lifecycle + * IAM effect. Defaults to Allow. */ -export type SyncReconcileResponseAliasDnsStatus = ClosedEnum< - typeof SyncReconcileResponseAliasDnsStatus +export type SyncReconcileResponseTargetReleaseOverrideEffect = ClosedEnum< + typeof SyncReconcileResponseTargetReleaseOverrideEffect >; /** - * Certificate and DNS metadata for a managed hostname. - * - * @remarks - * - * Includes decrypted certificate data for issued certificates. - * Private keys are deployment-scoped secrets (like environment variables). + * Grant permissions for a specific cloud platform */ -export type SyncReconcileResponseAlias = { +export type SyncReconcileResponseTargetReleaseOverrideAwGrant = { /** - * Full PEM certificate chain (only present if status is "issued"). + * AWS IAM actions (only for AWS) */ - certificateChain?: string | null | undefined; + actions?: Array | null | undefined; /** - * Certificate ID (for tracking/logging). + * Azure actions (only for Azure) */ - certificateId: string; + dataActions?: Array | null | undefined; /** - * Certificate status in the certificate lifecycle + * GCP permissions that require an exact residual custom role. */ - certificateStatus: SyncReconcileResponseAliasCertificateStatus; + permissions?: Array | null | undefined; /** - * Last DNS error message. Present when DNS previously failed, even if status - * - * @remarks - * was reset to pending for retry. Used to surface actionable error context - * in WaitingForDns failure messages. + * Provider predefined roles to bind directly. */ - dnsError?: string | null | undefined; + predefinedRoles?: Array | null | undefined; /** - * DNS record status in the DNS lifecycle + * GCP residual custom permissions to pair with predefined roles. */ - dnsStatus: SyncReconcileResponseAliasDnsStatus; + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type SyncReconcileResponseTargetReleaseOverrideAw = { /** - * Fully qualified domain name. + * Generic binding configuration for permissions */ - fqdn: string; + binding: SyncReconcileResponseTargetReleaseOverrideAwBinding; /** - * ISO 8601 timestamp when certificate was issued (for renewal detection). + * Short admin-facing description of why this entry exists. */ - issuedAt?: string | null | undefined; + description?: string | null | undefined; /** - * Decrypted private key (only present if status is "issued"). + * IAM effect. Defaults to Allow. */ - privateKey?: string | null | undefined; + effect?: SyncReconcileResponseTargetReleaseOverrideEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileResponseTargetReleaseOverrideAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; }; /** - * Certificate status in the certificate lifecycle - */ -export const SyncReconcileResponseCertificateStatus = { - Pending: "pending", - Issued: "issued", - Renewing: "renewing", - RenewalFailed: "renewal-failed", - Failed: "failed", - Deleting: "deleting", -} as const; -/** - * Certificate status in the certificate lifecycle - */ -export type SyncReconcileResponseCertificateStatus = ClosedEnum< - typeof SyncReconcileResponseCertificateStatus ->; - -/** - * DNS record status in the DNS lifecycle - */ -export const SyncReconcileResponseDnsStatus = { - Pending: "pending", - Active: "active", - Updating: "updating", - Deleting: "deleting", - Failed: "failed", -} as const; -/** - * DNS record status in the DNS lifecycle - */ -export type SyncReconcileResponseDnsStatus = ClosedEnum< - typeof SyncReconcileResponseDnsStatus ->; - -/** - * Certificate status in the certificate lifecycle - */ -export const SyncReconcileResponseEndpointsCertificateStatus = { - Pending: "pending", - Issued: "issued", - Renewing: "renewing", - RenewalFailed: "renewal-failed", - Failed: "failed", - Deleting: "deleting", -} as const; -/** - * Certificate status in the certificate lifecycle + * Azure-specific binding specification */ -export type SyncReconcileResponseEndpointsCertificateStatus = ClosedEnum< - typeof SyncReconcileResponseEndpointsCertificateStatus ->; +export type SyncReconcileResponseTargetReleaseOverrideAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; /** - * DNS record status in the DNS lifecycle - */ -export const SyncReconcileResponseEndpointsDnsStatus = { - Pending: "pending", - Active: "active", - Updating: "updating", - Deleting: "deleting", - Failed: "failed", -} as const; -/** - * DNS record status in the DNS lifecycle + * Azure-specific binding specification */ -export type SyncReconcileResponseEndpointsDnsStatus = ClosedEnum< - typeof SyncReconcileResponseEndpointsDnsStatus ->; +export type SyncReconcileResponseTargetReleaseOverrideAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; /** - * Certificate and DNS metadata for a managed hostname. - * - * @remarks - * - * Includes decrypted certificate data for issued certificates. - * Private keys are deployment-scoped secrets (like environment variables). + * Generic binding configuration for permissions */ -export type SyncReconcileResponseEndpoints = { - /** - * Full PEM certificate chain (only present if status is "issued"). - */ - certificateChain?: string | null | undefined; +export type SyncReconcileResponseTargetReleaseOverrideAzureBinding = { /** - * Certificate ID (for tracking/logging). + * Azure-specific binding specification */ - certificateId: string; + resource?: + | SyncReconcileResponseTargetReleaseOverrideAzureResource + | undefined; /** - * Certificate status in the certificate lifecycle + * Azure-specific binding specification */ - certificateStatus: SyncReconcileResponseEndpointsCertificateStatus; + stack?: SyncReconcileResponseTargetReleaseOverrideAzureStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileResponseTargetReleaseOverrideAzureGrant = { /** - * Last DNS error message. Present when DNS previously failed, even if status - * - * @remarks - * was reset to pending for retry. Used to surface actionable error context - * in WaitingForDns failure messages. + * AWS IAM actions (only for AWS) */ - dnsError?: string | null | undefined; + actions?: Array | null | undefined; /** - * DNS record status in the DNS lifecycle + * Azure actions (only for Azure) */ - dnsStatus: SyncReconcileResponseEndpointsDnsStatus; + dataActions?: Array | null | undefined; /** - * Fully qualified domain name. + * GCP permissions that require an exact residual custom role. */ - fqdn: string; + permissions?: Array | null | undefined; /** - * ISO 8601 timestamp when certificate was issued (for renewal detection). + * Provider predefined roles to bind directly. */ - issuedAt?: string | null | undefined; + predefinedRoles?: Array | null | undefined; /** - * Decrypted private key (only present if status is "issued"). + * GCP residual custom permissions to pair with predefined roles. */ - privateKey?: string | null | undefined; + residualPermissions?: Array | null | undefined; }; /** - * Certificate and DNS metadata for a public resource. - * - * @remarks - * - * The direct fields describe the primary endpoint hostname. `endpoints` - * contains endpoint-scoped metadata keyed by endpoint name. `aliases` contains - * additional managed hostnames that route directly to the primary endpoint. + * Azure-specific platform permission configuration */ -export type DomainMetadataTargetResources = { - /** - * Additional managed hostnames for the resource. - */ - aliases?: Array | undefined; - /** - * Full PEM certificate chain (only present if status is "issued"). - */ - certificateChain?: string | null | undefined; - /** - * Certificate ID (for tracking/logging). - */ - certificateId: string; +export type SyncReconcileResponseTargetReleaseOverrideAzure = { /** - * Certificate status in the certificate lifecycle + * Generic binding configuration for permissions */ - certificateStatus: SyncReconcileResponseCertificateStatus; + binding: SyncReconcileResponseTargetReleaseOverrideAzureBinding; /** - * Last DNS error message. + * Short admin-facing description of why this entry exists. */ - dnsError?: string | null | undefined; + description?: string | null | undefined; /** - * DNS record status in the DNS lifecycle + * Grant permissions for a specific cloud platform */ - dnsStatus: SyncReconcileResponseDnsStatus; + grant: SyncReconcileResponseTargetReleaseOverrideAzureGrant; /** - * Endpoint-scoped metadata keyed by endpoint name. + * Stable admin-facing label for this permission entry. */ - endpoints?: { [k: string]: SyncReconcileResponseEndpoints } | undefined; - /** - * Fully qualified domain name. + label?: string | null | undefined; +}; + +/** + * GCP IAM condition + */ +export type SyncReconcileResponseTargetReleaseOverrideConditionResource = { + expression: string; + title: string; +}; + +export type SyncReconcileResponseTargetReleaseOverrideResourceConditionUnion = + | SyncReconcileResponseTargetReleaseOverrideConditionResource + | any; + +/** + * GCP-specific binding specification + */ +export type SyncReconcileResponseTargetReleaseOverrideGcpResource = { + condition?: + | SyncReconcileResponseTargetReleaseOverrideConditionResource + | any + | null + | undefined; + /** + * Scope (project/resource level) */ - fqdn: string; + scope: string; +}; + +/** + * GCP IAM condition + */ +export type SyncReconcileResponseTargetReleaseOverrideCondition = { + expression: string; + title: string; +}; + +export type SyncReconcileResponseTargetReleaseOverrideConditionUnion = + | SyncReconcileResponseTargetReleaseOverrideCondition + | any; + +/** + * GCP-specific binding specification + */ +export type SyncReconcileResponseTargetReleaseOverrideGcpStack = { + condition?: + | SyncReconcileResponseTargetReleaseOverrideCondition + | any + | null + | undefined; /** - * ISO 8601 timestamp when certificate was issued (for renewal detection). + * Scope (project/resource level) */ - issuedAt?: string | null | undefined; + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileResponseTargetReleaseOverrideGcpBinding = { /** - * Decrypted private key (only present if status is "issued"). + * GCP-specific binding specification */ - privateKey?: string | null | undefined; + resource?: SyncReconcileResponseTargetReleaseOverrideGcpResource | undefined; + /** + * GCP-specific binding specification + */ + stack?: SyncReconcileResponseTargetReleaseOverrideGcpStack | undefined; }; /** - * Domain metadata for auto-managed public resources (no private keys). + * Grant permissions for a specific cloud platform */ -export type SyncReconcileResponseDomainMetadata = { +export type SyncReconcileResponseTargetReleaseOverrideGcpGrant = { /** - * Base domain for auto-generated domains (e.g., "vpc.direct"). + * AWS IAM actions (only for AWS) */ - baseDomain: string; + actions?: Array | null | undefined; /** - * Hosted zone ID for DNS records. + * Azure actions (only for Azure) */ - hostedZoneId: string; + dataActions?: Array | null | undefined; /** - * Deployment public subdomain (e.g., "k8f2j3"). + * GCP permissions that require an exact residual custom role. */ - publicSubdomain: string; + permissions?: Array | null | undefined; /** - * Metadata per resource ID. + * Provider predefined roles to bind directly. */ - resources: { [k: string]: DomainMetadataTargetResources }; + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; }; -export type SyncReconcileResponseDomainMetadataUnion = - | SyncReconcileResponseDomainMetadata - | any; - -/** - * Type of environment variable - */ -export const TargetEnvironmentVariablesType = { - Plain: "plain", - Secret: "secret", -} as const; -/** - * Type of environment variable - */ -export type TargetEnvironmentVariablesType = ClosedEnum< - typeof TargetEnvironmentVariablesType ->; - /** - * Environment variable for deployment + * GCP-specific platform permission configuration */ -export type SyncReconcileResponseVariable = { +export type SyncReconcileResponseTargetReleaseOverrideGcp = { /** - * Variable name + * Generic binding configuration for permissions */ - name: string; + binding: SyncReconcileResponseTargetReleaseOverrideGcpBinding; /** - * Target resource patterns (null = all resources, Some = wildcard patterns) + * Short admin-facing description of why this entry exists. */ - targetResources?: Array | null | undefined; + description?: string | null | undefined; /** - * Type of environment variable + * Grant permissions for a specific cloud platform */ - type: TargetEnvironmentVariablesType; + grant: SyncReconcileResponseTargetReleaseOverrideGcpGrant; /** - * Variable value (decrypted - deployment has access to decryption keys) + * Stable admin-facing label for this permission entry. */ - value: string; + label?: string | null | undefined; }; /** - * Snapshot of environment variables at a point in time + * Platform-specific permission configurations */ -export type SyncReconcileResponseEnvironmentVariables = { +export type SyncReconcileResponseTargetReleaseOverridePlatforms = { /** - * ISO 8601 timestamp when snapshot was created + * AWS permission configurations */ - createdAt: string; + aws?: Array | null | undefined; /** - * Deterministic hash of all variables (for change detection) + * Azure permission configurations */ - hash: string; + azure?: + | Array + | null + | undefined; /** - * Environment variables in the snapshot + * GCP permission configurations */ - variables: Array; + gcp?: Array | null | undefined; }; /** - * Reference to a Kubernetes Secret + * A permission set that can be applied across different cloud platforms */ -export type SyncReconcileResponseDatabaseSecretRef6 = { - key: string; - name: string; -}; - -export type SyncReconcileResponseDatabase6 = { +export type SyncReconcileResponseTargetReleaseOverride = { /** - * Reference to a Kubernetes Secret + * Human-readable description of what this permission set allows */ - secretRef: SyncReconcileResponseDatabaseSecretRef6; + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: SyncReconcileResponseTargetReleaseOverridePlatforms; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Reference to a permission set - either by name or inline definition */ -export type SyncReconcileResponseDatabaseUnion5 = - | SyncReconcileResponseDatabase6 - | any +export type SyncReconcileResponseTargetReleaseOverrideUnion = + | SyncReconcileResponseTargetReleaseOverride | string; -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseHostSecretRef4 = { - key: string; - name: string; -}; - -export type SyncReconcileResponseHost4 = { +export type SyncReconcileResponseTargetReleaseManagement2 = { /** - * Reference to a Kubernetes Secret + * Permission profile that maps resources to permission sets + * + * @remarks + * Key can be "*" for all resources or resource name for specific resource */ - secretRef: SyncReconcileResponseHostSecretRef4; + override: { + [k: string]: Array; + }; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * AWS-specific binding specification */ -export type SyncReconcileResponseHostUnion4 = - | SyncReconcileResponseHost4 - | any - | string; +export type SyncReconcileResponseTargetReleaseExtendAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; /** - * Reference to a Kubernetes Secret + * AWS-specific binding specification */ -export type SyncReconcileResponsePortSecretRef5 = { - key: string; - name: string; -}; - -export type SyncReconcileResponsePort5 = { +export type SyncReconcileResponseTargetReleaseExtendAwStack = { /** - * Reference to a Kubernetes Secret + * Optional condition for additional filtering (rare) */ - secretRef: SyncReconcileResponsePortSecretRef5; + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Generic binding configuration for permissions */ -export type SyncReconcileResponsePortUnion5 = - | SyncReconcileResponsePort5 - | number - | any; +export type SyncReconcileResponseTargetReleaseExtendAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: SyncReconcileResponseTargetReleaseExtendAwResource | undefined; + /** + * AWS-specific binding specification + */ + stack?: SyncReconcileResponseTargetReleaseExtendAwStack | undefined; +}; /** - * Reference to a Kubernetes Secret + * IAM effect. Defaults to Allow. */ -export type SyncReconcileResponseUsernameSecretRef5 = { - key: string; - name: string; -}; - -export type SyncReconcileResponseUsername5 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponseUsernameSecretRef5; -}; - +export const SyncReconcileResponseTargetReleaseExtendEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * IAM effect. Defaults to Allow. */ -export type SyncReconcileResponseUsernameUnion5 = - | SyncReconcileResponseUsername5 - | any - | string; - -export const TargetTypePostgres5 = { - Postgres: "postgres", -} as const; -export type TargetTypePostgres5 = ClosedEnum; +export type SyncReconcileResponseTargetReleaseExtendEffect = ClosedEnum< + typeof SyncReconcileResponseTargetReleaseExtendEffect +>; /** - * Local embedded Postgres binding. + * Grant permissions for a specific cloud platform */ -export type SyncReconcileResponseExternalBindingsLocalPostgres = { +export type SyncReconcileResponseTargetReleaseExtendAwGrant = { /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * AWS IAM actions (only for AWS) */ - database?: SyncReconcileResponseDatabase6 | any | string | null | undefined; + actions?: Array | null | undefined; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Azure actions (only for Azure) */ - host?: SyncReconcileResponseHost4 | any | string | null | undefined; - password: string; + dataActions?: Array | null | undefined; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * GCP permissions that require an exact residual custom role. */ - port?: SyncReconcileResponsePort5 | number | any | null | undefined; + permissions?: Array | null | undefined; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Provider predefined roles to bind directly. */ - username?: SyncReconcileResponseUsername5 | any | string | null | undefined; - service: "local-postgres"; - type: TargetTypePostgres5; + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; }; /** - * Reference to a Kubernetes Secret + * AWS-specific platform permission configuration */ -export type SyncReconcileResponseDatabaseSecretRef5 = { - key: string; - name: string; -}; - -export type SyncReconcileResponseDatabase5 = { +export type SyncReconcileResponseTargetReleaseExtendAw = { /** - * Reference to a Kubernetes Secret + * Generic binding configuration for permissions */ - secretRef: SyncReconcileResponseDatabaseSecretRef5; + binding: SyncReconcileResponseTargetReleaseExtendAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: SyncReconcileResponseTargetReleaseExtendEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileResponseTargetReleaseExtendAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncReconcileResponseDatabaseUnion4 = - | SyncReconcileResponseDatabase5 - | any - | string; - -/** - * Reference to a Kubernetes Secret + * Azure-specific binding specification */ -export type SyncReconcileResponseHostSecretRef3 = { - key: string; - name: string; -}; - -export type SyncReconcileResponseHost3 = { +export type SyncReconcileResponseTargetReleaseExtendAzureResource = { /** - * Reference to a Kubernetes Secret + * Scope (subscription/resource group/resource level) */ - secretRef: SyncReconcileResponseHostSecretRef3; + scope: string; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncReconcileResponseHostUnion3 = - | SyncReconcileResponseHost3 - | any - | string; - -/** - * Reference to a Kubernetes Secret + * Azure-specific binding specification */ -export type SyncReconcileResponsePortSecretRef4 = { - key: string; - name: string; -}; - -export type SyncReconcileResponsePort4 = { +export type SyncReconcileResponseTargetReleaseExtendAzureStack = { /** - * Reference to a Kubernetes Secret + * Scope (subscription/resource group/resource level) */ - secretRef: SyncReconcileResponsePortSecretRef4; + scope: string; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncReconcileResponsePortUnion4 = - | SyncReconcileResponsePort4 - | number - | any; - -/** - * Reference to a Kubernetes Secret + * Generic binding configuration for permissions */ -export type SyncReconcileResponseUsernameSecretRef4 = { - key: string; - name: string; -}; - -export type SyncReconcileResponseUsername4 = { +export type SyncReconcileResponseTargetReleaseExtendAzureBinding = { /** - * Reference to a Kubernetes Secret + * Azure-specific binding specification */ - secretRef: SyncReconcileResponseUsernameSecretRef4; + resource?: SyncReconcileResponseTargetReleaseExtendAzureResource | undefined; + /** + * Azure-specific binding specification + */ + stack?: SyncReconcileResponseTargetReleaseExtendAzureStack | undefined; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncReconcileResponseUsernameUnion4 = - | SyncReconcileResponseUsername4 - | any - | string; - -export const TargetTypePostgres4 = { - Postgres: "postgres", -} as const; -export type TargetTypePostgres4 = ClosedEnum; - -/** - * Operator-provided / BYO database binding. + * Grant permissions for a specific cloud platform */ -export type SyncReconcileResponseExternalBindingsExternal = { +export type SyncReconcileResponseTargetReleaseExtendAzureGrant = { /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * AWS IAM actions (only for AWS) */ - database?: SyncReconcileResponseDatabase5 | any | string | null | undefined; + actions?: Array | null | undefined; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Azure actions (only for Azure) */ - host?: SyncReconcileResponseHost3 | any | string | null | undefined; + dataActions?: Array | null | undefined; /** - * Connection password as a concrete value, never an unresolved `SecretRef`: the platform - * - * @remarks - * materializes the Kubernetes secret into the pod env. The cloud variants carry a secret - * locator instead. + * GCP permissions that require an exact residual custom role. */ - password: string; + permissions?: Array | null | undefined; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Provider predefined roles to bind directly. */ - port?: SyncReconcileResponsePort4 | number | any | null | undefined; + predefinedRoles?: Array | null | undefined; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * GCP residual custom permissions to pair with predefined roles. */ - username?: SyncReconcileResponseUsername4 | any | string | null | undefined; - service: "external"; - type: TargetTypePostgres4; + residualPermissions?: Array | null | undefined; }; /** - * Reference to a Kubernetes Secret + * Azure-specific platform permission configuration */ -export type SyncReconcileResponseDatabaseSecretRef4 = { - key: string; - name: string; -}; - -export type SyncReconcileResponseDatabase4 = { +export type SyncReconcileResponseTargetReleaseExtendAzure = { /** - * Reference to a Kubernetes Secret + * Generic binding configuration for permissions */ - secretRef: SyncReconcileResponseDatabaseSecretRef4; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncReconcileResponseDatabaseUnion3 = - | SyncReconcileResponseDatabase4 - | any - | string; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseHostSecretRef2 = { - key: string; - name: string; -}; - -export type SyncReconcileResponseHost2 = { + binding: SyncReconcileResponseTargetReleaseExtendAzureBinding; /** - * Reference to a Kubernetes Secret + * Short admin-facing description of why this entry exists. */ - secretRef: SyncReconcileResponseHostSecretRef2; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncReconcileResponseHostUnion2 = - | SyncReconcileResponseHost2 - | any - | string; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponsePasswordSecretUriSecretRef = { - key: string; - name: string; -}; - -export type SyncReconcileResponsePasswordSecretUri = { + description?: string | null | undefined; /** - * Reference to a Kubernetes Secret + * Grant permissions for a specific cloud platform */ - secretRef: SyncReconcileResponsePasswordSecretUriSecretRef; + grant: SyncReconcileResponseTargetReleaseExtendAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * GCP IAM condition */ -export type SyncReconcileResponsePasswordSecretUriUnion = - | SyncReconcileResponsePasswordSecretUri - | any - | string; +export type SyncReconcileResponseTargetReleaseExtendConditionResource = { + expression: string; + title: string; +}; + +export type SyncReconcileResponseTargetReleaseExtendResourceConditionUnion = + | SyncReconcileResponseTargetReleaseExtendConditionResource + | any; /** - * Reference to a Kubernetes Secret + * GCP-specific binding specification */ -export type SyncReconcileResponsePortSecretRef3 = { - key: string; - name: string; -}; - -export type SyncReconcileResponsePort3 = { +export type SyncReconcileResponseTargetReleaseExtendGcpResource = { + condition?: + | SyncReconcileResponseTargetReleaseExtendConditionResource + | any + | null + | undefined; /** - * Reference to a Kubernetes Secret + * Scope (project/resource level) */ - secretRef: SyncReconcileResponsePortSecretRef3; + scope: string; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * GCP IAM condition */ -export type SyncReconcileResponsePortUnion3 = - | SyncReconcileResponsePort3 - | number +export type SyncReconcileResponseTargetReleaseExtendCondition = { + expression: string; + title: string; +}; + +export type SyncReconcileResponseTargetReleaseExtendConditionUnion = + | SyncReconcileResponseTargetReleaseExtendCondition | any; /** - * Reference to a Kubernetes Secret + * GCP-specific binding specification */ -export type SyncReconcileResponseUsernameSecretRef3 = { - key: string; - name: string; -}; - -export type SyncReconcileResponseUsername3 = { +export type SyncReconcileResponseTargetReleaseExtendGcpStack = { + condition?: + | SyncReconcileResponseTargetReleaseExtendCondition + | any + | null + | undefined; /** - * Reference to a Kubernetes Secret + * Scope (project/resource level) */ - secretRef: SyncReconcileResponseUsernameSecretRef3; + scope: string; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Generic binding configuration for permissions */ -export type SyncReconcileResponseUsernameUnion3 = - | SyncReconcileResponseUsername3 - | any - | string; - -export const TargetTypePostgres3 = { - Postgres: "postgres", -} as const; -export type TargetTypePostgres3 = ClosedEnum; +export type SyncReconcileResponseTargetReleaseExtendGcpBinding = { + /** + * GCP-specific binding specification + */ + resource?: SyncReconcileResponseTargetReleaseExtendGcpResource | undefined; + /** + * GCP-specific binding specification + */ + stack?: SyncReconcileResponseTargetReleaseExtendGcpStack | undefined; +}; /** - * Azure Flexible Server binding. + * Grant permissions for a specific cloud platform */ -export type SyncReconcileResponseExternalBindingsFlexibleServer = { +export type SyncReconcileResponseTargetReleaseExtendGcpGrant = { /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * AWS IAM actions (only for AWS) */ - database?: SyncReconcileResponseDatabase4 | any | string | null | undefined; + actions?: Array | null | undefined; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Azure actions (only for Azure) */ - host?: SyncReconcileResponseHost2 | any | string | null | undefined; + dataActions?: Array | null | undefined; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * GCP permissions that require an exact residual custom role. */ - passwordSecretUri?: - | SyncReconcileResponsePasswordSecretUri - | any - | string - | null - | undefined; + permissions?: Array | null | undefined; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Provider predefined roles to bind directly. */ - port?: SyncReconcileResponsePort3 | number | any | null | undefined; + predefinedRoles?: Array | null | undefined; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * GCP residual custom permissions to pair with predefined roles. */ - username?: SyncReconcileResponseUsername3 | any | string | null | undefined; - service: "flexible-server"; - type: TargetTypePostgres3; + residualPermissions?: Array | null | undefined; }; /** - * Reference to a Kubernetes Secret + * GCP-specific platform permission configuration */ -export type SyncReconcileResponseDatabaseSecretRef3 = { - key: string; - name: string; -}; - -export type SyncReconcileResponseDatabase3 = { +export type SyncReconcileResponseTargetReleaseExtendGcp = { /** - * Reference to a Kubernetes Secret + * Generic binding configuration for permissions */ - secretRef: SyncReconcileResponseDatabaseSecretRef3; + binding: SyncReconcileResponseTargetReleaseExtendGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileResponseTargetReleaseExtendGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncReconcileResponseDatabaseUnion2 = - | SyncReconcileResponseDatabase3 - | any - | string; - -/** - * Reference to a Kubernetes Secret + * Platform-specific permission configurations */ -export type SyncReconcileResponseHostSecretRef1 = { - key: string; - name: string; -}; - -export type SyncReconcileResponseHost1 = { +export type SyncReconcileResponseTargetReleaseExtendPlatforms = { /** - * Reference to a Kubernetes Secret + * AWS permission configurations */ - secretRef: SyncReconcileResponseHostSecretRef1; + aws?: Array | null | undefined; + /** + * Azure permission configurations + */ + azure?: + | Array + | null + | undefined; + /** + * GCP permission configurations + */ + gcp?: Array | null | undefined; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * A permission set that can be applied across different cloud platforms */ -export type SyncReconcileResponseHostUnion1 = - | SyncReconcileResponseHost1 - | any - | string; +export type SyncReconcileResponseTargetReleaseExtend = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: SyncReconcileResponseTargetReleaseExtendPlatforms; +}; /** - * Reference to a Kubernetes Secret + * Reference to a permission set - either by name or inline definition */ -export type SyncReconcileResponsePasswordSecretNameSecretRef = { - key: string; - name: string; -}; +export type SyncReconcileResponseTargetReleaseExtendUnion = + | SyncReconcileResponseTargetReleaseExtend + | string; -export type SyncReconcileResponsePasswordSecretName = { +export type SyncReconcileResponseTargetReleaseManagement1 = { /** - * Reference to a Kubernetes Secret + * Permission profile that maps resources to permission sets + * + * @remarks + * Key can be "*" for all resources or resource name for specific resource */ - secretRef: SyncReconcileResponsePasswordSecretNameSecretRef; + extend: { + [k: string]: Array; + }; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Management permissions configuration for stack management access */ -export type SyncReconcileResponsePasswordSecretNameUnion = - | SyncReconcileResponsePasswordSecretName - | any - | string; +export type SyncReconcileResponseTargetReleaseManagementUnion = + | SyncReconcileResponseTargetReleaseManagement1 + | SyncReconcileResponseTargetReleaseManagement2 + | SyncReconcileResponseTargetReleaseManagementEnum; /** - * Reference to a Kubernetes Secret + * AWS-specific binding specification */ -export type SyncReconcileResponsePortSecretRef2 = { - key: string; - name: string; -}; - -export type SyncReconcileResponsePort2 = { +export type SyncReconcileResponseTargetReleaseProfileAwResource = { /** - * Reference to a Kubernetes Secret + * Optional condition for additional filtering (rare) */ - secretRef: SyncReconcileResponsePortSecretRef2; + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * AWS-specific binding specification */ -export type SyncReconcileResponsePortUnion2 = - | SyncReconcileResponsePort2 - | number - | any; +export type SyncReconcileResponseTargetReleaseProfileAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; /** - * Reference to a Kubernetes Secret + * Generic binding configuration for permissions */ -export type SyncReconcileResponseUsernameSecretRef2 = { - key: string; - name: string; -}; - -export type SyncReconcileResponseUsername2 = { +export type SyncReconcileResponseTargetReleaseProfileAwBinding = { /** - * Reference to a Kubernetes Secret + * AWS-specific binding specification */ - secretRef: SyncReconcileResponseUsernameSecretRef2; + resource?: SyncReconcileResponseTargetReleaseProfileAwResource | undefined; + /** + * AWS-specific binding specification + */ + stack?: SyncReconcileResponseTargetReleaseProfileAwStack | undefined; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * IAM effect. Defaults to Allow. */ -export type SyncReconcileResponseUsernameUnion2 = - | SyncReconcileResponseUsername2 - | any - | string; - -export const TargetTypePostgres2 = { - Postgres: "postgres", +export const SyncReconcileResponseTargetReleaseProfileEffect = { + Allow: "Allow", + Deny: "Deny", } as const; -export type TargetTypePostgres2 = ClosedEnum; +/** + * IAM effect. Defaults to Allow. + */ +export type SyncReconcileResponseTargetReleaseProfileEffect = ClosedEnum< + typeof SyncReconcileResponseTargetReleaseProfileEffect +>; /** - * GCP Cloud SQL binding. + * Grant permissions for a specific cloud platform */ -export type SyncReconcileResponseExternalBindingsCloudSQL = { +export type SyncReconcileResponseTargetReleaseProfileAwGrant = { /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * AWS IAM actions (only for AWS) */ - database?: SyncReconcileResponseDatabase3 | any | string | null | undefined; + actions?: Array | null | undefined; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Azure actions (only for Azure) */ - host?: SyncReconcileResponseHost1 | any | string | null | undefined; + dataActions?: Array | null | undefined; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * GCP permissions that require an exact residual custom role. */ - passwordSecretName?: - | SyncReconcileResponsePasswordSecretName - | any - | string - | null - | undefined; + permissions?: Array | null | undefined; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Provider predefined roles to bind directly. */ - port?: SyncReconcileResponsePort2 | number | any | null | undefined; + predefinedRoles?: Array | null | undefined; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * GCP residual custom permissions to pair with predefined roles. */ - username?: SyncReconcileResponseUsername2 | any | string | null | undefined; - service: "cloud-sql"; - type: TargetTypePostgres2; + residualPermissions?: Array | null | undefined; }; /** - * Reference to a Kubernetes Secret + * AWS-specific platform permission configuration */ -export type SyncReconcileResponseClusterEndpointSecretRef = { - key: string; - name: string; -}; - -export type SyncReconcileResponseClusterEndpoint = { +export type SyncReconcileResponseTargetReleaseProfileAw = { /** - * Reference to a Kubernetes Secret + * Generic binding configuration for permissions */ - secretRef: SyncReconcileResponseClusterEndpointSecretRef; + binding: SyncReconcileResponseTargetReleaseProfileAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: SyncReconcileResponseTargetReleaseProfileEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileResponseTargetReleaseProfileAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncReconcileResponseClusterEndpointUnion = - | SyncReconcileResponseClusterEndpoint - | any - | string; - -/** - * Reference to a Kubernetes Secret + * Azure-specific binding specification */ -export type SyncReconcileResponseDatabaseSecretRef2 = { - key: string; - name: string; -}; - -export type SyncReconcileResponseDatabase2 = { +export type SyncReconcileResponseTargetReleaseProfileAzureResource = { /** - * Reference to a Kubernetes Secret + * Scope (subscription/resource group/resource level) */ - secretRef: SyncReconcileResponseDatabaseSecretRef2; + scope: string; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Azure-specific binding specification */ -export type SyncReconcileResponseDatabaseUnion1 = - | SyncReconcileResponseDatabase2 - | any - | string; +export type SyncReconcileResponseTargetReleaseProfileAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; /** - * Reference to a Kubernetes Secret + * Generic binding configuration for permissions */ -export type SyncReconcileResponsePasswordSecretArnSecretRef = { - key: string; - name: string; -}; - -export type SyncReconcileResponsePasswordSecretArn = { +export type SyncReconcileResponseTargetReleaseProfileAzureBinding = { /** - * Reference to a Kubernetes Secret + * Azure-specific binding specification */ - secretRef: SyncReconcileResponsePasswordSecretArnSecretRef; + resource?: SyncReconcileResponseTargetReleaseProfileAzureResource | undefined; + /** + * Azure-specific binding specification + */ + stack?: SyncReconcileResponseTargetReleaseProfileAzureStack | undefined; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Grant permissions for a specific cloud platform */ -export type SyncReconcileResponsePasswordSecretArnUnion = - | SyncReconcileResponsePasswordSecretArn - | any - | string; +export type SyncReconcileResponseTargetReleaseProfileAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; /** - * Reference to a Kubernetes Secret + * Azure-specific platform permission configuration */ -export type SyncReconcileResponsePortSecretRef1 = { - key: string; - name: string; -}; - -export type SyncReconcileResponsePort1 = { +export type SyncReconcileResponseTargetReleaseProfileAzure = { /** - * Reference to a Kubernetes Secret + * Generic binding configuration for permissions */ - secretRef: SyncReconcileResponsePortSecretRef1; + binding: SyncReconcileResponseTargetReleaseProfileAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileResponseTargetReleaseProfileAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * GCP IAM condition */ -export type SyncReconcileResponsePortUnion1 = - | SyncReconcileResponsePort1 - | number +export type SyncReconcileResponseTargetReleaseProfileConditionResource = { + expression: string; + title: string; +}; + +export type SyncReconcileResponseTargetReleaseProfileResourceConditionUnion = + | SyncReconcileResponseTargetReleaseProfileConditionResource | any; /** - * Reference to a Kubernetes Secret + * GCP-specific binding specification */ -export type SyncReconcileResponseUsernameSecretRef1 = { - key: string; - name: string; -}; - -export type SyncReconcileResponseUsername1 = { +export type SyncReconcileResponseTargetReleaseProfileGcpResource = { + condition?: + | SyncReconcileResponseTargetReleaseProfileConditionResource + | any + | null + | undefined; /** - * Reference to a Kubernetes Secret + * Scope (project/resource level) */ - secretRef: SyncReconcileResponseUsernameSecretRef1; + scope: string; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * GCP IAM condition */ -export type SyncReconcileResponseUsernameUnion1 = - | SyncReconcileResponseUsername1 - | any - | string; +export type SyncReconcileResponseTargetReleaseProfileCondition = { + expression: string; + title: string; +}; -export const TargetTypePostgres1 = { - Postgres: "postgres", -} as const; -export type TargetTypePostgres1 = ClosedEnum; +export type SyncReconcileResponseTargetReleaseProfileConditionUnion = + | SyncReconcileResponseTargetReleaseProfileCondition + | any; /** - * AWS Aurora Serverless v2 binding. + * GCP-specific binding specification */ -export type SyncReconcileResponseExternalBindingsAurora = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - clusterEndpoint?: - | SyncReconcileResponseClusterEndpoint +export type SyncReconcileResponseTargetReleaseProfileGcpStack = { + condition?: + | SyncReconcileResponseTargetReleaseProfileCondition | any - | string | null | undefined; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - database?: SyncReconcileResponseDatabase2 | any | string | null | undefined; - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Scope (project/resource level) */ - passwordSecretArn?: - | SyncReconcileResponsePasswordSecretArn - | any - | string - | null - | undefined; + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileResponseTargetReleaseProfileGcpBinding = { /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * GCP-specific binding specification */ - port?: SyncReconcileResponsePort1 | number | any | null | undefined; + resource?: SyncReconcileResponseTargetReleaseProfileGcpResource | undefined; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * GCP-specific binding specification */ - username?: SyncReconcileResponseUsername1 | any | string | null | undefined; - service: "aurora"; - type: TargetTypePostgres1; + stack?: SyncReconcileResponseTargetReleaseProfileGcpStack | undefined; }; /** - * Connection details for a Postgres database, one variant per backend. - */ -export type SyncReconcileResponseExternalBindingsUnion6 = - | SyncReconcileResponseExternalBindingsAurora - | SyncReconcileResponseExternalBindingsCloudSQL - | SyncReconcileResponseExternalBindingsFlexibleServer - | SyncReconcileResponseExternalBindingsExternal - | SyncReconcileResponseExternalBindingsLocalPostgres; - -/** - * Reference to a Kubernetes Secret + * Grant permissions for a specific cloud platform */ -export type SyncReconcileResponseDefaultDomainSecretRef = { - key: string; - name: string; -}; - -export type SyncReconcileResponseDefaultDomain = { +export type SyncReconcileResponseTargetReleaseProfileGcpGrant = { /** - * Reference to a Kubernetes Secret + * AWS IAM actions (only for AWS) */ - secretRef: SyncReconcileResponseDefaultDomainSecretRef; + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * GCP-specific platform permission configuration */ -export type SyncReconcileResponseDefaultDomainUnion = - | SyncReconcileResponseDefaultDomain - | any - | string; +export type SyncReconcileResponseTargetReleaseProfileGcp = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileResponseTargetReleaseProfileGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileResponseTargetReleaseProfileGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; /** - * Reference to a Kubernetes Secret + * Platform-specific permission configurations */ -export type SyncReconcileResponseEnvironmentNameSecretRef = { - key: string; - name: string; -}; - -export type SyncReconcileResponseEnvironmentName = { +export type SyncReconcileResponseTargetReleaseProfilePlatforms = { /** - * Reference to a Kubernetes Secret + * AWS permission configurations */ - secretRef: SyncReconcileResponseEnvironmentNameSecretRef; + aws?: Array | null | undefined; + /** + * Azure permission configurations + */ + azure?: + | Array + | null + | undefined; + /** + * GCP permission configurations + */ + gcp?: Array | null | undefined; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncReconcileResponseEnvironmentNameUnion = - | SyncReconcileResponseEnvironmentName - | any - | string; - -/** - * Reference to a Kubernetes Secret + * A permission set that can be applied across different cloud platforms */ -export type SyncReconcileResponseResourceGroupNameSecretRef3 = { - key: string; - name: string; -}; - -export type SyncReconcileResponseResourceGroupName3 = { +export type SyncReconcileResponseTargetReleaseProfile = { /** - * Reference to a Kubernetes Secret + * Human-readable description of what this permission set allows */ - secretRef: SyncReconcileResponseResourceGroupNameSecretRef3; + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: SyncReconcileResponseTargetReleaseProfilePlatforms; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Reference to a permission set - either by name or inline definition */ -export type SyncReconcileResponseResourceGroupNameUnion3 = - | SyncReconcileResponseResourceGroupName3 - | any +export type SyncReconcileResponseTargetReleaseProfileUnion = + | SyncReconcileResponseTargetReleaseProfile | string; /** - * Reference to a Kubernetes Secret + * Combined permissions configuration that contains both profiles and management */ -export type SyncReconcileResponseResourceIdSecretRef = { - key: string; - name: string; -}; - -export type SyncReconcileResponseResourceId = { +export type SyncReconcileResponseTargetReleasePermissions = { /** - * Reference to a Kubernetes Secret + * Management permissions configuration for stack management access */ - secretRef: SyncReconcileResponseResourceIdSecretRef; + management?: + | SyncReconcileResponseTargetReleaseManagement1 + | SyncReconcileResponseTargetReleaseManagement2 + | SyncReconcileResponseTargetReleaseManagementEnum + | undefined; + /** + * Permission profiles that define access control for compute services + * + * @remarks + * Key is the profile name, value is the permission configuration + */ + profiles: { + [k: string]: { + [k: string]: Array; + }; + }; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. */ -export type SyncReconcileResponseResourceIdUnion = - | SyncReconcileResponseResourceId - | any - | string; +export type SyncReconcileResponseTargetReleaseConfig = { + /** + * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. + */ + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; +}; /** - * Reference to a Kubernetes Secret + * Reference to a resource by its stable id and resource type. */ -export type SyncReconcileResponseStaticIpSecretRef = { - key: string; - name: string; -}; - -export type SyncReconcileResponseStaticIp = { +export type SyncReconcileResponseTargetReleaseDependency = { + id: string; /** - * Reference to a Kubernetes Secret + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. */ - secretRef: SyncReconcileResponseStaticIpSecretRef; + type: string; }; -export const TargetTypeContainerAppsEnvironment = { - ContainerAppsEnvironment: "container_apps_environment", +/** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ +export const SyncReconcileResponseTargetReleaseLifecycle = { + Frozen: "frozen", + Live: "live", } as const; -export type TargetTypeContainerAppsEnvironment = ClosedEnum< - typeof TargetTypeContainerAppsEnvironment ->; - /** - * Binding configuration for a pre-existing Azure Container Apps Environment. - * - * @remarks - * - * Used when deploying to an existing environment instead of having Alien provision one. - * This is useful for shared environments (e.g., test infrastructure) or enterprise - * setups where environments are managed by a separate team. + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ -export type SyncReconcileResponseExternalBindingsContainerAppsEnvironment = { +export type SyncReconcileResponseTargetReleaseLifecycle = ClosedEnum< + typeof SyncReconcileResponseTargetReleaseLifecycle +>; + +export type SyncReconcileResponseTargetReleaseResources = { /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. */ - defaultDomain?: - | SyncReconcileResponseDefaultDomain - | any - | string - | null - | undefined; + config: SyncReconcileResponseTargetReleaseConfig; /** - * Represents a value that can be either a concrete value, a template expression, + * Additional dependencies for this resource beyond those defined in the resource itself. * * @remarks - * or a reference to a Kubernetes Secret + * The total dependencies are: resource.get_dependencies() + this list */ - environmentName?: - | SyncReconcileResponseEnvironmentName - | any - | string - | null - | undefined; + dependencies: Array; /** - * Represents a value that can be either a concrete value, a template expression, + * Id of the boolean stack input that decides whether this resource is * * @remarks - * or a reference to a Kubernetes Secret + * 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. */ - resourceGroupName?: - | SyncReconcileResponseResourceGroupName3 - | any - | string - | null - | undefined; + enabledWhen?: string | null | undefined; /** - * Represents a value that can be either a concrete value, a template expression, + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ + lifecycle: SyncReconcileResponseTargetReleaseLifecycle; + /** + * Enable remote bindings for this resource (BYOB use case). * * @remarks - * or a reference to a Kubernetes Secret + * When true, binding params are synced to StackState's `remote_binding_params`. + * Default: false (prevents sensitive data in synced state). */ - resourceId?: - | SyncReconcileResponseResourceId - | any - | string - | null - | undefined; - staticIp?: any | null | undefined; - type: TargetTypeContainerAppsEnvironment; + remoteAccess?: boolean | undefined; }; /** - * Reference to a Kubernetes Secret + * Represents the target cloud platform. */ -export type SyncReconcileResponseDataDirSecretRef3 = { - key: string; - name: string; -}; +export const SyncReconcileResponseTargetReleaseSupportedPlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Machines: "machines", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type SyncReconcileResponseTargetReleaseSupportedPlatform = ClosedEnum< + typeof SyncReconcileResponseTargetReleaseSupportedPlatform +>; -export type SyncReconcileResponseDataDir3 = { +/** + * A bag of resources, unaware of any cloud. + */ +export type SyncReconcileResponseTargetReleaseStack = { /** - * Reference to a Kubernetes Secret + * Unique identifier for the stack */ - secretRef: SyncReconcileResponseDataDirSecretRef3; + id: string; + /** + * Input definitions required before setup or deployment can proceed. + */ + inputs?: Array | undefined; + /** + * Combined permissions configuration that contains both profiles and management + */ + permissions?: SyncReconcileResponseTargetReleasePermissions | undefined; + /** + * Map of resource IDs to their configurations and lifecycle settings + */ + resources: { [k: string]: SyncReconcileResponseTargetReleaseResources }; + /** + * Which platforms this stack supports. When None, all platforms are supported. + */ + supportedPlatforms?: + | Array + | null + | undefined; }; /** - * Represents a value that can be either a concrete value, a template expression, + * Release metadata * * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncReconcileResponseDataDirUnion2 = - | SyncReconcileResponseDataDir3 - | any - | string; - -export const TargetTypeVault5 = { - Vault: "vault", -} as const; -export type TargetTypeVault5 = ClosedEnum; - -/** - * Local development vault binding (for testing/development) + * + * Identifies a specific release version and includes the stack definition. + * The deployment engine uses this to track which release is currently deployed + * and which is the target. */ -export type SyncReconcileResponseExternalBindingsLocalVault = { +export type SyncReconcileResponseTargetRelease = { /** - * Represents a value that can be either a concrete value, a template expression, + * Short description of the release + */ + description?: string | null | undefined; + /** + * Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no * * @remarks - * or a reference to a Kubernetes Secret + * Alien-assigned release — the platform resolves a release from `version`. */ - dataDir?: SyncReconcileResponseDataDir3 | any | string | null | undefined; + releaseId?: string | null | undefined; /** - * The vault name for local storage + * A bag of resources, unaware of any cloud. */ - vaultName: string; - service: "local-vault"; - type: TargetTypeVault5; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseNamespaceSecretRef2 = { - key: string; - name: string; -}; - -export type SyncReconcileResponseNamespace2 = { + stack: SyncReconcileResponseTargetReleaseStack; /** - * Reference to a Kubernetes Secret + * Version string (e.g., 2.1.0) */ - secretRef: SyncReconcileResponseNamespaceSecretRef2; + version?: string | null | undefined; }; -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncReconcileResponseNamespaceUnion2 = - | SyncReconcileResponseNamespace2 - | any - | string; +export type SyncReconcileResponseTargetReleaseUnion = + | SyncReconcileResponseTargetRelease + | any; /** - * Reference to a Kubernetes Secret + * Current deployment state after reconciliation */ -export type SyncReconcileResponseVaultPrefixSecretRef3 = { - key: string; - name: string; -}; - -export type SyncReconcileResponseVaultPrefix3 = { +export type SyncReconcileResponseCurrent = { + currentRelease?: SyncReconcileResponseCurrentRelease | any | null | undefined; + environmentInfo?: + | SyncReconcileResponseEnvironmentInfoGcp + | SyncReconcileResponseEnvironmentInfoAzure + | SyncReconcileResponseEnvironmentInfoLocal + | SyncReconcileResponseEnvironmentInfoAws + | SyncReconcileResponseEnvironmentInfoTest + | any + | null + | undefined; + error?: SyncReconcileResponseError | any | null | undefined; /** - * Reference to a Kubernetes Secret + * Represents the target cloud platform. */ - secretRef: SyncReconcileResponseVaultPrefixSecretRef3; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncReconcileResponseVaultPrefixUnion3 = - | SyncReconcileResponseVaultPrefix3 - | any - | string; - -export const TargetTypeVault4 = { - Vault: "vault", -} as const; -export type TargetTypeVault4 = ClosedEnum; - -/** - * Kubernetes Secrets vault binding configuration - */ -export type SyncReconcileResponseExternalBindingsKubernetesSecret = { + platform: SyncReconcileResponseCurrentPlatform; /** - * Represents a value that can be either a concrete value, a template expression, + * Protocol version for cross-actor compatibility. * * @remarks - * or a reference to a Kubernetes Secret + * All actors (manager, push client, agent) check this before stepping. + * Mismatched versions produce a clear error instead of silent corruption. + * See docs/02-manager/10-deployment-protocol.md. */ - namespace?: SyncReconcileResponseNamespace2 | any | string | null | undefined; + protocolVersion: number; /** - * Represents a value that can be either a concrete value, a template expression, + * Whether a retry has been requested for a failed deployment * * @remarks - * or a reference to a Kubernetes Secret + * When true and status is a failed state, the deployment system will retry failed resources */ - vaultPrefix?: - | SyncReconcileResponseVaultPrefix3 + retryRequested?: boolean | undefined; + runtimeMetadata?: + | SyncReconcileResponseRuntimeMetadata | any - | string | null | undefined; - service: "kubernetes-secret"; - type: TargetTypeVault4; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseVaultNameSecretRef = { - key: string; - name: string; -}; - -export type SyncReconcileResponseVaultName = { + stackState?: SyncReconcileResponseStackState | any | null | undefined; /** - * Reference to a Kubernetes Secret + * Deployment status in the deployment lifecycle. + * + * @remarks + * + * For observe-only deployments with no release or stack state, `Running` + * means the Operator is attached. Connectivity comes from `lastHeartbeatAt`; + * resource health comes from inventory and resource heartbeat data. */ - secretRef: SyncReconcileResponseVaultNameSecretRef; + status: SyncReconcileResponseStatus; + targetRelease?: SyncReconcileResponseTargetRelease | any | null | undefined; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Represents the target cloud platform. */ -export type SyncReconcileResponseVaultNameUnion = - | SyncReconcileResponseVaultName - | any - | string; - -export const TargetTypeVault3 = { - Vault: "vault", +export const SyncReconcileResponseBasePlatformEnum = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Machines: "machines", + Local: "local", + Test: "test", } as const; -export type TargetTypeVault3 = ClosedEnum; +/** + * Represents the target cloud platform. + */ +export type SyncReconcileResponseBasePlatformEnum = ClosedEnum< + typeof SyncReconcileResponseBasePlatformEnum +>; + +export type SyncReconcileResponseBasePlatformUnion = + | SyncReconcileResponseBasePlatformEnum + | any; /** - * Azure Key Vault binding configuration + * Configuration for a single container worker cluster. + * + * @remarks + * + * Contains the cluster ID and management token needed to interact with + * the managed container control plane API for container operations. */ -export type SyncReconcileResponseExternalBindingsKeyVault = { +export type SyncReconcileResponseClusters = { /** - * Represents a value that can be either a concrete value, a template expression, + * Cluster ID (deterministic: workspace/project/deployment/resourceid) + */ + clusterId: string; + /** + * Management token for API access (hm_...) * * @remarks - * or a reference to a Kubernetes Secret + * Used by alien-deployment controllers to create/update containers */ - vaultName?: SyncReconcileResponseVaultName | any | string | null | undefined; - service: "key-vault"; - type: TargetTypeVault3; + managementToken: string; }; /** - * Reference to a Kubernetes Secret + * AWS Horizon machine image catalog. */ -export type SyncReconcileResponseVaultPrefixSecretRef2 = { - key: string; - name: string; -}; - -export type SyncReconcileResponseVaultPrefix2 = { +export type SyncReconcileResponseHorizonMachineImageAws = { /** - * Reference to a Kubernetes Secret + * AMI IDs by architecture, then AWS region. */ - secretRef: SyncReconcileResponseVaultPrefixSecretRef2; + amis: { [k: string]: { [k: string]: string } }; }; +export type SyncReconcileResponseHorizonMachineImageAwsUnion = + | SyncReconcileResponseHorizonMachineImageAws + | any; + /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Azure Horizon machine image entry. */ -export type SyncReconcileResponseVaultPrefixUnion2 = - | SyncReconcileResponseVaultPrefix2 - | any - | string; - -export const TargetTypeVault2 = { - Vault: "vault", -} as const; -export type TargetTypeVault2 = ClosedEnum; +export type SyncReconcileResponseAzureImages = { + /** + * Azure Compute Gallery image version ID. + */ + imageVersionId: string; +}; /** - * GCP Secret Manager vault binding configuration + * Azure Horizon machine image catalog. */ -export type SyncReconcileResponseExternalBindingsSecretManager = { +export type HorizonMachineImageAzureTarget = { /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Images by architecture. */ - vaultPrefix?: - | SyncReconcileResponseVaultPrefix2 - | any - | string - | null - | undefined; - service: "secret-manager"; - type: TargetTypeVault2; + images: { [k: string]: SyncReconcileResponseAzureImages }; }; +export type HorizonMachineImageTargetAzureUnion = + | HorizonMachineImageAzureTarget + | any; + /** - * Reference to a Kubernetes Secret + * Base image metadata for the Horizon machine image. */ -export type SyncReconcileResponseVaultPrefixSecretRef1 = { - key: string; +export type SyncReconcileResponseBaseImage = { + /** + * Base OS image name. + */ name: string; -}; - -export type SyncReconcileResponseVaultPrefix1 = { /** - * Reference to a Kubernetes Secret + * Base OS image version or channel. */ - secretRef: SyncReconcileResponseVaultPrefixSecretRef1; + version: string; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * GCP Horizon machine image entry. */ -export type SyncReconcileResponseVaultPrefixUnion1 = - | SyncReconcileResponseVaultPrefix1 - | any - | string; - -export const TargetTypeVault1 = { - Vault: "vault", -} as const; -export type TargetTypeVault1 = ClosedEnum; - -/** - * AWS SSM Parameter Store vault binding configuration - */ -export type SyncReconcileResponseExternalBindingsParameterStore = { +export type SyncReconcileResponseGcpImages = { /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Source image self link or image-family URL. */ - vaultPrefix?: - | SyncReconcileResponseVaultPrefix1 - | any - | string - | null - | undefined; - service: "parameter-store"; - type: TargetTypeVault1; + sourceImage: string; }; /** - * Represents a vault binding for secure secret management - */ -export type SyncReconcileResponseExternalBindingsUnion5 = - | SyncReconcileResponseExternalBindingsParameterStore - | SyncReconcileResponseExternalBindingsSecretManager - | SyncReconcileResponseExternalBindingsKeyVault - | SyncReconcileResponseExternalBindingsKubernetesSecret - | SyncReconcileResponseExternalBindingsLocalVault; - -/** - * Reference to a Kubernetes Secret + * GCP Horizon machine image catalog. */ -export type SyncReconcileResponseDataDirSecretRef2 = { - key: string; - name: string; -}; - -export type SyncReconcileResponseDataDir2 = { +export type HorizonMachineImageGcpTarget = { /** - * Reference to a Kubernetes Secret + * Images by architecture. */ - secretRef: SyncReconcileResponseDataDirSecretRef2; + images: { [k: string]: SyncReconcileResponseGcpImages }; }; +export type HorizonMachineImageTargetGcpUnion = + | HorizonMachineImageGcpTarget + | any; + /** - * Reference to a Kubernetes Secret + * Download artifact for one horizond release platform. */ -export type SyncReconcileResponseRegistryUrlSecretRef = { - key: string; - name: string; -}; - -export type SyncReconcileResponseRegistryUrl = { +export type SyncReconcileResponseHorizondArtifacts = { /** - * Reference to a Kubernetes Secret + * SHA-256 digest for the artifact payload. */ - secretRef: SyncReconcileResponseRegistryUrlSecretRef; + sha256: string; + /** + * HTTPS URL for the artifact. + */ + url: string; }; /** - * Represents a value that can be either a concrete value, a template expression, + * Horizon machine image catalog. * * @remarks - * or a reference to a Kubernetes Secret + * + * Platform resolves concrete provider images from this catalog during rollout. */ -export type SyncReconcileResponseRegistryUrlUnion = - | SyncReconcileResponseRegistryUrl - | any - | string; +export type SyncReconcileResponseHorizonMachineImage = { + aws?: SyncReconcileResponseHorizonMachineImageAws | any | null | undefined; + azure?: HorizonMachineImageAzureTarget | any | null | undefined; + /** + * Base image metadata for the Horizon machine image. + */ + baseImage: SyncReconcileResponseBaseImage; + /** + * Logical image channel, such as prod, staging, or canary. + */ + channel: string; + /** + * Image manifest creation timestamp. + */ + createdAt: string; + gcp?: HorizonMachineImageGcpTarget | any | null | undefined; + /** + * Git commit SHA used to build the image. + */ + gitSha: string; + /** + * Per-architecture horizond artifacts by release-platform key. + */ + horizondArtifacts: { [k: string]: SyncReconcileResponseHorizondArtifacts }; + /** + * horizond daemon version baked into the image. + */ + horizondVersion: string; + /** + * Published immutable machine image version. + */ + machineImageVersion: string; +}; -export const TargetTypeArtifactRegistry4 = { - ArtifactRegistry: "artifact_registry", +export type SyncReconcileResponseHorizonMachineImageUnion = + | SyncReconcileResponseHorizonMachineImage + | any; + +export const ComputeBackendTargetType = { + Horizon: "horizon", } as const; -export type TargetTypeArtifactRegistry4 = ClosedEnum< - typeof TargetTypeArtifactRegistry4 +export type ComputeBackendTargetType = ClosedEnum< + typeof ComputeBackendTargetType >; /** - * Local container registry binding configuration. + * Compute backend for Container and Worker resources. * * @remarks * - * The local registry runs on localhost only and does not require authentication. - * Security boundary is the OS process isolation on the customer's machine. - * External image access is secured by the manager's registry proxy (deployment tokens). + * Determines how compute workloads are orchestrated on cloud platforms. + * When None, the platform default is used for cloud platforms. */ -export type SyncReconcileResponseExternalBindingsLocal = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - dataDir?: any | null | undefined; +export type SyncReconcileResponseComputeBackendHorizon = { /** - * Represents a value that can be either a concrete value, a template expression, + * Cluster configurations (one per ComputeCluster resource) * * @remarks - * or a reference to a Kubernetes Secret + * Key: ComputeCluster resource ID from stack + * Value: Cluster ID and management token for that cluster */ - registryUrl?: - | SyncReconcileResponseRegistryUrl + clusters: { [k: string]: SyncReconcileResponseClusters }; + horizonMachineImage?: + | SyncReconcileResponseHorizonMachineImage | any - | string | null | undefined; - service: "local"; - type: TargetTypeArtifactRegistry4; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponsePullServiceAccountEmailSecretRef = { - key: string; - name: string; -}; - -export type SyncReconcileResponsePullServiceAccountEmail = { /** - * Reference to a Kubernetes Secret + * Horizon control-plane API base URL. */ - secretRef: SyncReconcileResponsePullServiceAccountEmailSecretRef; + url: string; + type: ComputeBackendTargetType; }; +export type SyncReconcileResponseComputeBackendUnion = + | SyncReconcileResponseComputeBackendHorizon + | any; + /** - * Reference to a Kubernetes Secret + * Certificate status in the certificate lifecycle */ -export type SyncReconcileResponsePushServiceAccountEmailSecretRef = { - key: string; - name: string; -}; - -export type SyncReconcileResponsePushServiceAccountEmail = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponsePushServiceAccountEmailSecretRef; -}; - +export const SyncReconcileResponseAliasCertificateStatus = { + Pending: "pending", + Issued: "issued", + Renewing: "renewing", + RenewalFailed: "renewal-failed", + Failed: "failed", + Deleting: "deleting", +} as const; /** - * Reference to a Kubernetes Secret + * Certificate status in the certificate lifecycle */ -export type SyncReconcileResponseRepositoryNameSecretRef = { - key: string; - name: string; -}; - -export type SyncReconcileResponseRepositoryName = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponseRepositoryNameSecretRef; -}; +export type SyncReconcileResponseAliasCertificateStatus = ClosedEnum< + typeof SyncReconcileResponseAliasCertificateStatus +>; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * DNS record status in the DNS lifecycle */ -export type SyncReconcileResponseRepositoryNameUnion = - | SyncReconcileResponseRepositoryName - | any - | string; - -export const TargetTypeArtifactRegistry3 = { - ArtifactRegistry: "artifact_registry", +export const SyncReconcileResponseAliasDnsStatus = { + Pending: "pending", + Active: "active", + Updating: "updating", + Deleting: "deleting", + Failed: "failed", } as const; -export type TargetTypeArtifactRegistry3 = ClosedEnum< - typeof TargetTypeArtifactRegistry3 +/** + * DNS record status in the DNS lifecycle + */ +export type SyncReconcileResponseAliasDnsStatus = ClosedEnum< + typeof SyncReconcileResponseAliasDnsStatus >; /** - * Google Artifact Registry binding configuration + * Certificate and DNS metadata for a managed hostname. + * + * @remarks + * + * Includes decrypted certificate data for issued certificates. + * Private keys are deployment-scoped secrets (like environment variables). */ -export type SyncReconcileResponseExternalBindingsGar = { - pullServiceAccountEmail?: any | null | undefined; - pushServiceAccountEmail?: any | null | undefined; +export type SyncReconcileResponseAlias = { /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Full PEM certificate chain (only present if status is "issued"). */ - repositoryName?: - | SyncReconcileResponseRepositoryName - | any - | string - | null - | undefined; - service: "gar"; - type: TargetTypeArtifactRegistry3; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseRegistryNameSecretRef = { - key: string; - name: string; -}; - -export type SyncReconcileResponseRegistryName = { + certificateChain?: string | null | undefined; /** - * Reference to a Kubernetes Secret + * Certificate ID (for tracking/logging). */ - secretRef: SyncReconcileResponseRegistryNameSecretRef; + certificateId: string; + /** + * Certificate status in the certificate lifecycle + */ + certificateStatus: SyncReconcileResponseAliasCertificateStatus; + /** + * Last DNS error message. Present when DNS previously failed, even if status + * + * @remarks + * was reset to pending for retry. Used to surface actionable error context + * in WaitingForDns failure messages. + */ + dnsError?: string | null | undefined; + /** + * DNS record status in the DNS lifecycle + */ + dnsStatus: SyncReconcileResponseAliasDnsStatus; + /** + * Fully qualified domain name. + */ + fqdn: string; + /** + * ISO 8601 timestamp when certificate was issued (for renewal detection). + */ + issuedAt?: string | null | undefined; + /** + * Decrypted private key (only present if status is "issued"). + */ + privateKey?: string | null | undefined; }; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Certificate status in the certificate lifecycle */ -export type SyncReconcileResponseRegistryNameUnion = - | SyncReconcileResponseRegistryName - | any - | string; - +export const SyncReconcileResponseCertificateStatus = { + Pending: "pending", + Issued: "issued", + Renewing: "renewing", + RenewalFailed: "renewal-failed", + Failed: "failed", + Deleting: "deleting", +} as const; /** - * Reference to a Kubernetes Secret + * Certificate status in the certificate lifecycle */ -export type SyncReconcileResponseRepositoryPrefixSecretRef2 = { - key: string; - name: string; -}; - -export type SyncReconcileResponseRepositoryPrefix2 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponseRepositoryPrefixSecretRef2; -}; +export type SyncReconcileResponseCertificateStatus = ClosedEnum< + typeof SyncReconcileResponseCertificateStatus +>; /** - * Reference to a Kubernetes Secret + * DNS record status in the DNS lifecycle */ -export type SyncReconcileResponseResourceGroupNameSecretRef2 = { - key: string; - name: string; -}; - -export type SyncReconcileResponseResourceGroupName2 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponseResourceGroupNameSecretRef2; -}; +export const SyncReconcileResponseDnsStatus = { + Pending: "pending", + Active: "active", + Updating: "updating", + Deleting: "deleting", + Failed: "failed", +} as const; +/** + * DNS record status in the DNS lifecycle + */ +export type SyncReconcileResponseDnsStatus = ClosedEnum< + typeof SyncReconcileResponseDnsStatus +>; /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Certificate status in the certificate lifecycle */ -export type SyncReconcileResponseResourceGroupNameUnion2 = - | SyncReconcileResponseResourceGroupName2 - | any - | string; +export const SyncReconcileResponseEndpointsCertificateStatus = { + Pending: "pending", + Issued: "issued", + Renewing: "renewing", + RenewalFailed: "renewal-failed", + Failed: "failed", + Deleting: "deleting", +} as const; +/** + * Certificate status in the certificate lifecycle + */ +export type SyncReconcileResponseEndpointsCertificateStatus = ClosedEnum< + typeof SyncReconcileResponseEndpointsCertificateStatus +>; -export const TargetTypeArtifactRegistry2 = { - ArtifactRegistry: "artifact_registry", +/** + * DNS record status in the DNS lifecycle + */ +export const SyncReconcileResponseEndpointsDnsStatus = { + Pending: "pending", + Active: "active", + Updating: "updating", + Deleting: "deleting", + Failed: "failed", } as const; -export type TargetTypeArtifactRegistry2 = ClosedEnum< - typeof TargetTypeArtifactRegistry2 +/** + * DNS record status in the DNS lifecycle + */ +export type SyncReconcileResponseEndpointsDnsStatus = ClosedEnum< + typeof SyncReconcileResponseEndpointsDnsStatus >; /** - * Azure Container Registry binding configuration + * Certificate and DNS metadata for a managed hostname. + * + * @remarks + * + * Includes decrypted certificate data for issued certificates. + * Private keys are deployment-scoped secrets (like environment variables). */ -export type SyncReconcileResponseExternalBindingsAcr = { +export type SyncReconcileResponseEndpoints = { /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Full PEM certificate chain (only present if status is "issued"). */ - registryName?: - | SyncReconcileResponseRegistryName - | any - | string - | null - | undefined; - repositoryPrefix?: any | null | undefined; + certificateChain?: string | null | undefined; /** - * Represents a value that can be either a concrete value, a template expression, + * Certificate ID (for tracking/logging). + */ + certificateId: string; + /** + * Certificate status in the certificate lifecycle + */ + certificateStatus: SyncReconcileResponseEndpointsCertificateStatus; + /** + * Last DNS error message. Present when DNS previously failed, even if status * * @remarks - * or a reference to a Kubernetes Secret + * was reset to pending for retry. Used to surface actionable error context + * in WaitingForDns failure messages. */ - resourceGroupName?: - | SyncReconcileResponseResourceGroupName2 - | any - | string - | null - | undefined; - service: "acr"; - type: TargetTypeArtifactRegistry2; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponsePullRoleArnSecretRef = { - key: string; - name: string; -}; - -export type SyncReconcileResponsePullRoleArn = { + dnsError?: string | null | undefined; /** - * Reference to a Kubernetes Secret + * DNS record status in the DNS lifecycle */ - secretRef: SyncReconcileResponsePullRoleArnSecretRef; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponsePushRoleArnSecretRef = { - key: string; - name: string; -}; - -export type SyncReconcileResponsePushRoleArn = { + dnsStatus: SyncReconcileResponseEndpointsDnsStatus; /** - * Reference to a Kubernetes Secret + * Fully qualified domain name. */ - secretRef: SyncReconcileResponsePushRoleArnSecretRef; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseRepositoryPrefixSecretRef1 = { - key: string; - name: string; -}; - -export type SyncReconcileResponseRepositoryPrefix1 = { + fqdn: string; /** - * Reference to a Kubernetes Secret + * ISO 8601 timestamp when certificate was issued (for renewal detection). */ - secretRef: SyncReconcileResponseRepositoryPrefixSecretRef1; + issuedAt?: string | null | undefined; + /** + * Decrypted private key (only present if status is "issued"). + */ + privateKey?: string | null | undefined; }; /** - * Represents a value that can be either a concrete value, a template expression, + * Certificate and DNS metadata for a public resource. * * @remarks - * or a reference to a Kubernetes Secret + * + * The direct fields describe the primary endpoint hostname. `endpoints` + * contains endpoint-scoped metadata keyed by endpoint name. `aliases` contains + * additional managed hostnames that route directly to the primary endpoint. */ -export type SyncReconcileResponseRepositoryPrefixUnion = - | SyncReconcileResponseRepositoryPrefix1 - | any - | string; - -export const TargetTypeArtifactRegistry1 = { - ArtifactRegistry: "artifact_registry", -} as const; -export type TargetTypeArtifactRegistry1 = ClosedEnum< - typeof TargetTypeArtifactRegistry1 ->; - -/** - * AWS ECR (Elastic Container Registry) binding configuration - */ -export type SyncReconcileResponseExternalBindingsEcr = { - pullRoleArn?: any | null | undefined; - pushRoleArn?: any | null | undefined; +export type DomainMetadataTargetResources = { /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Additional managed hostnames for the resource. */ - repositoryPrefix?: - | SyncReconcileResponseRepositoryPrefix1 - | any - | string - | null - | undefined; - service: "ecr"; - type: TargetTypeArtifactRegistry1; + aliases?: Array | undefined; + /** + * Full PEM certificate chain (only present if status is "issued"). + */ + certificateChain?: string | null | undefined; + /** + * Certificate ID (for tracking/logging). + */ + certificateId: string; + /** + * Certificate status in the certificate lifecycle + */ + certificateStatus: SyncReconcileResponseCertificateStatus; + /** + * Last DNS error message. + */ + dnsError?: string | null | undefined; + /** + * DNS record status in the DNS lifecycle + */ + dnsStatus: SyncReconcileResponseDnsStatus; + /** + * Endpoint-scoped metadata keyed by endpoint name. + */ + endpoints?: { [k: string]: SyncReconcileResponseEndpoints } | undefined; + /** + * Fully qualified domain name. + */ + fqdn: string; + /** + * ISO 8601 timestamp when certificate was issued (for renewal detection). + */ + issuedAt?: string | null | undefined; + /** + * Decrypted private key (only present if status is "issued"). + */ + privateKey?: string | null | undefined; }; /** - * Service-type based artifact registry binding that supports multiple registry providers - */ -export type SyncReconcileResponseExternalBindingsUnion4 = - | SyncReconcileResponseExternalBindingsEcr - | SyncReconcileResponseExternalBindingsAcr - | SyncReconcileResponseExternalBindingsGar - | SyncReconcileResponseExternalBindingsLocal; - -/** - * Reference to a Kubernetes Secret + * Domain metadata for auto-managed public resources (no private keys). */ -export type SyncReconcileResponseDataDirSecretRef1 = { - key: string; - name: string; -}; - -export type SyncReconcileResponseDataDir1 = { +export type SyncReconcileResponseDomainMetadata = { /** - * Reference to a Kubernetes Secret + * Base domain for auto-generated domains (e.g., "vpc.direct"). */ - secretRef: SyncReconcileResponseDataDirSecretRef1; + baseDomain: string; + /** + * Hosted zone ID for DNS records. + */ + hostedZoneId: string; + /** + * Deployment public subdomain (e.g., "k8f2j3"). + */ + publicSubdomain: string; + /** + * Metadata per resource ID. + */ + resources: { [k: string]: DomainMetadataTargetResources }; }; +export type SyncReconcileResponseDomainMetadataUnion = + | SyncReconcileResponseDomainMetadata + | any; + /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Type of environment variable */ -export type SyncReconcileResponseDataDirUnion1 = - | SyncReconcileResponseDataDir1 - | any - | string; +export const TargetEnvironmentVariablesType = { + Plain: "plain", + Secret: "secret", +} as const; +/** + * Type of environment variable + */ +export type TargetEnvironmentVariablesType = ClosedEnum< + typeof TargetEnvironmentVariablesType +>; /** - * Reference to a Kubernetes Secret + * Environment variable for deployment */ -export type SyncReconcileResponseKeyPrefixSecretRef2 = { - key: string; +export type SyncReconcileResponseVariable = { + /** + * Variable name + */ name: string; -}; - -export type SyncReconcileResponseKeyPrefix2 = { /** - * Reference to a Kubernetes Secret + * Target resource patterns (null = all resources, Some = wildcard patterns) */ - secretRef: SyncReconcileResponseKeyPrefixSecretRef2; + targetResources?: Array | null | undefined; + /** + * Type of environment variable + */ + type: TargetEnvironmentVariablesType; + /** + * Variable value (decrypted - deployment has access to decryption keys) + */ + value: string; }; -export const TargetTypeKv5 = { - Kv: "kv", -} as const; -export type TargetTypeKv5 = ClosedEnum; - /** - * Local development KV binding configuration + * Snapshot of environment variables at a point in time */ -export type SyncReconcileResponseExternalBindingsLocalKv = { +export type SyncReconcileResponseEnvironmentVariables = { /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * ISO 8601 timestamp when snapshot was created */ - dataDir?: SyncReconcileResponseDataDir1 | any | string | null | undefined; - keyPrefix?: any | null | undefined; - service: "local-kv"; - type: TargetTypeKv5; + createdAt: string; + /** + * Deterministic hash of all variables (for change detection) + */ + hash: string; + /** + * Environment variables in the snapshot + */ + variables: Array; }; /** * Reference to a Kubernetes Secret */ -export type SyncReconcileResponseConnectionUrlSecretRef = { +export type SyncReconcileResponseApiKeySecretRef = { key: string; name: string; }; -export type SyncReconcileResponseConnectionUrl = { +export type SyncReconcileResponseApiKey = { /** * Reference to a Kubernetes Secret */ - secretRef: SyncReconcileResponseConnectionUrlSecretRef; + secretRef: SyncReconcileResponseApiKeySecretRef; }; /** @@ -7606,81 +7504,54 @@ export type SyncReconcileResponseConnectionUrl = { * @remarks * or a reference to a Kubernetes Secret */ -export type SyncReconcileResponseConnectionUrlUnion = - | SyncReconcileResponseConnectionUrl +export type SyncReconcileResponseApiKeyUnion = + | SyncReconcileResponseApiKey | any | string; -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseDatabaseSecretRef1 = { - key: string; - name: string; -}; - -export type SyncReconcileResponseDatabase1 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponseDatabaseSecretRef1; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseKeyPrefixSecretRef1 = { - key: string; - name: string; -}; - -export type SyncReconcileResponseKeyPrefix1 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponseKeyPrefixSecretRef1; -}; - -export const TargetTypeKv4 = { - Kv: "kv", +export const TargetTypeAi = { + Ai: "ai", } as const; -export type TargetTypeKv4 = ClosedEnum; +export type TargetTypeAi = ClosedEnum; /** - * Redis KV binding configuration + * External AI provider binding configuration (BYO-key). + * + * @remarks + * + * The operator-supplied secret rides inside the binding via + * `BindingValue`, so it is a literal on cloud platforms and gains + * Kubernetes SecretRef resolution for free (`extract_binding_secrets` walks + * the binding JSON for `secretRef`). */ -export type SyncReconcileResponseExternalBindingsRedis = { +export type SyncReconcileResponseExternalBindingsAi = { /** * Represents a value that can be either a concrete value, a template expression, * * @remarks * or a reference to a Kubernetes Secret */ - connectionUrl?: - | SyncReconcileResponseConnectionUrl - | any - | string - | null - | undefined; - database?: any | null | undefined; - keyPrefix?: any | null | undefined; - service: "redis"; - type: TargetTypeKv4; + apiKey?: SyncReconcileResponseApiKey | any | string | null | undefined; + /** + * The external AI provider name (e.g., "openai", "anthropic") + */ + provider: string; + type: TargetTypeAi; }; /** * Reference to a Kubernetes Secret */ -export type SyncReconcileResponseAccountNameSecretRef2 = { +export type SyncReconcileResponseDatabaseSecretRef6 = { key: string; name: string; }; -export type SyncReconcileResponseAccountName2 = { +export type SyncReconcileResponseDatabase6 = { /** * Reference to a Kubernetes Secret */ - secretRef: SyncReconcileResponseAccountNameSecretRef2; + secretRef: SyncReconcileResponseDatabaseSecretRef6; }; /** @@ -7689,24 +7560,24 @@ export type SyncReconcileResponseAccountName2 = { * @remarks * or a reference to a Kubernetes Secret */ -export type SyncReconcileResponseAccountNameUnion2 = - | SyncReconcileResponseAccountName2 +export type SyncReconcileResponseDatabaseUnion5 = + | SyncReconcileResponseDatabase6 | any | string; /** * Reference to a Kubernetes Secret */ -export type SyncReconcileResponseResourceGroupNameSecretRef1 = { +export type SyncReconcileResponseHostSecretRef4 = { key: string; name: string; }; -export type SyncReconcileResponseResourceGroupName1 = { +export type SyncReconcileResponseHost4 = { /** * Reference to a Kubernetes Secret */ - secretRef: SyncReconcileResponseResourceGroupNameSecretRef1; + secretRef: SyncReconcileResponseHostSecretRef4; }; /** @@ -7715,24 +7586,24 @@ export type SyncReconcileResponseResourceGroupName1 = { * @remarks * or a reference to a Kubernetes Secret */ -export type SyncReconcileResponseResourceGroupNameUnion1 = - | SyncReconcileResponseResourceGroupName1 +export type SyncReconcileResponseHostUnion4 = + | SyncReconcileResponseHost4 | any | string; /** * Reference to a Kubernetes Secret */ -export type SyncReconcileResponseTableNameSecretRef2 = { +export type SyncReconcileResponsePortSecretRef5 = { key: string; name: string; }; -export type SyncReconcileResponseTableName2 = { +export type SyncReconcileResponsePort5 = { /** * Reference to a Kubernetes Secret */ - secretRef: SyncReconcileResponseTableNameSecretRef2; + secretRef: SyncReconcileResponsePortSecretRef5; }; /** @@ -7741,68 +7612,92 @@ export type SyncReconcileResponseTableName2 = { * @remarks * or a reference to a Kubernetes Secret */ -export type SyncReconcileResponseTableNameUnion2 = - | SyncReconcileResponseTableName2 - | any +export type SyncReconcileResponsePortUnion5 = + | SyncReconcileResponsePort5 + | number + | any; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseUsernameSecretRef5 = { + key: string; + name: string; +}; + +export type SyncReconcileResponseUsername5 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseUsernameSecretRef5; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseUsernameUnion5 = + | SyncReconcileResponseUsername5 + | any | string; -export const TargetTypeKv3 = { - Kv: "kv", +export const TargetTypePostgres5 = { + Postgres: "postgres", } as const; -export type TargetTypeKv3 = ClosedEnum; +export type TargetTypePostgres5 = ClosedEnum; /** - * Azure Table Storage KV binding configuration + * Local embedded Postgres binding. */ -export type SyncReconcileResponseExternalBindingsTablestorage = { +export type SyncReconcileResponseExternalBindingsLocalPostgres = { /** * Represents a value that can be either a concrete value, a template expression, * * @remarks * or a reference to a Kubernetes Secret */ - accountName?: - | SyncReconcileResponseAccountName2 - | any - | string - | null - | undefined; + database?: SyncReconcileResponseDatabase6 | any | string | null | undefined; /** * Represents a value that can be either a concrete value, a template expression, * * @remarks * or a reference to a Kubernetes Secret */ - resourceGroupName?: - | SyncReconcileResponseResourceGroupName1 - | any - | string - | null - | undefined; + host?: SyncReconcileResponseHost4 | any | string | null | undefined; + password: string; /** * Represents a value that can be either a concrete value, a template expression, * * @remarks * or a reference to a Kubernetes Secret */ - tableName?: SyncReconcileResponseTableName2 | any | string | null | undefined; - service: "tablestorage"; - type: TargetTypeKv3; + port?: SyncReconcileResponsePort5 | number | any | null | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + username?: SyncReconcileResponseUsername5 | any | string | null | undefined; + service: "local-postgres"; + type: TargetTypePostgres5; }; /** * Reference to a Kubernetes Secret */ -export type SyncReconcileResponseCollectionNameSecretRef = { +export type SyncReconcileResponseDatabaseSecretRef5 = { key: string; name: string; }; -export type SyncReconcileResponseCollectionName = { +export type SyncReconcileResponseDatabase5 = { /** * Reference to a Kubernetes Secret */ - secretRef: SyncReconcileResponseCollectionNameSecretRef; + secretRef: SyncReconcileResponseDatabaseSecretRef5; }; /** @@ -7811,24 +7706,24 @@ export type SyncReconcileResponseCollectionName = { * @remarks * or a reference to a Kubernetes Secret */ -export type SyncReconcileResponseCollectionNameUnion = - | SyncReconcileResponseCollectionName +export type SyncReconcileResponseDatabaseUnion4 = + | SyncReconcileResponseDatabase5 | any | string; /** * Reference to a Kubernetes Secret */ -export type SyncReconcileResponseDatabaseIdSecretRef = { +export type SyncReconcileResponseHostSecretRef3 = { key: string; name: string; }; -export type SyncReconcileResponseDatabaseId = { +export type SyncReconcileResponseHost3 = { /** * Reference to a Kubernetes Secret */ - secretRef: SyncReconcileResponseDatabaseIdSecretRef; + secretRef: SyncReconcileResponseHostSecretRef3; }; /** @@ -7837,24 +7732,24 @@ export type SyncReconcileResponseDatabaseId = { * @remarks * or a reference to a Kubernetes Secret */ -export type SyncReconcileResponseDatabaseIdUnion = - | SyncReconcileResponseDatabaseId +export type SyncReconcileResponseHostUnion3 = + | SyncReconcileResponseHost3 | any | string; /** * Reference to a Kubernetes Secret */ -export type SyncReconcileResponseProjectIdSecretRef = { +export type SyncReconcileResponsePortSecretRef4 = { key: string; name: string; }; -export type SyncReconcileResponseProjectId = { +export type SyncReconcileResponsePort4 = { /** * Reference to a Kubernetes Secret */ - secretRef: SyncReconcileResponseProjectIdSecretRef; + secretRef: SyncReconcileResponsePortSecretRef4; }; /** @@ -7863,83 +7758,158 @@ export type SyncReconcileResponseProjectId = { * @remarks * or a reference to a Kubernetes Secret */ -export type SyncReconcileResponseProjectIdUnion = - | SyncReconcileResponseProjectId +export type SyncReconcileResponsePortUnion4 = + | SyncReconcileResponsePort4 + | number + | any; + +/** + * TLS policy for an operator-provided / BYO Postgres database. + * + * @remarks + * + * Unlike libpq's ambiguous `prefer` mode, both choices map exactly to the + * connection settings exposed by every supported SDK. + */ +export const SyncReconcileResponseSslMode = { + VerifyFull: "verify-full", + Disable: "disable", +} as const; +/** + * TLS policy for an operator-provided / BYO Postgres database. + * + * @remarks + * + * Unlike libpq's ambiguous `prefer` mode, both choices map exactly to the + * connection settings exposed by every supported SDK. + */ +export type SyncReconcileResponseSslMode = ClosedEnum< + typeof SyncReconcileResponseSslMode +>; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseUsernameSecretRef4 = { + key: string; + name: string; +}; + +export type SyncReconcileResponseUsername4 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseUsernameSecretRef4; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseUsernameUnion4 = + | SyncReconcileResponseUsername4 | any | string; -export const TargetTypeKv2 = { - Kv: "kv", +export const TargetTypePostgres4 = { + Postgres: "postgres", } as const; -export type TargetTypeKv2 = ClosedEnum; +export type TargetTypePostgres4 = ClosedEnum; /** - * GCP Firestore KV binding configuration + * Operator-provided / BYO database binding. */ -export type SyncReconcileResponseExternalBindingsFirestore = { +export type SyncReconcileResponseExternalBindingsExternal = { /** * Represents a value that can be either a concrete value, a template expression, * * @remarks * or a reference to a Kubernetes Secret */ - collectionName?: - | SyncReconcileResponseCollectionName - | any - | string - | null - | undefined; + database?: SyncReconcileResponseDatabase5 | any | string | null | undefined; /** * Represents a value that can be either a concrete value, a template expression, * * @remarks * or a reference to a Kubernetes Secret */ - databaseId?: - | SyncReconcileResponseDatabaseId - | any - | string - | null - | undefined; + host?: SyncReconcileResponseHost3 | any | string | null | undefined; + /** + * Connection password as a concrete value, never an unresolved `SecretRef`: the platform + * + * @remarks + * materializes the Kubernetes secret into the pod env. The cloud variants carry a secret + * locator instead. + */ + password: string; /** * Represents a value that can be either a concrete value, a template expression, * * @remarks * or a reference to a Kubernetes Secret */ - projectId?: SyncReconcileResponseProjectId | any | string | null | undefined; - service: "firestore"; - type: TargetTypeKv2; + port?: SyncReconcileResponsePort4 | number | any | null | undefined; + /** + * TLS policy for an operator-provided / BYO Postgres database. + * + * @remarks + * + * Unlike libpq's ambiguous `prefer` mode, both choices map exactly to the + * connection settings exposed by every supported SDK. + */ + sslMode?: SyncReconcileResponseSslMode | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + username?: SyncReconcileResponseUsername4 | any | string | null | undefined; + service: "external"; + type: TargetTypePostgres4; }; /** * Reference to a Kubernetes Secret */ -export type SyncReconcileResponseEndpointUrlSecretRef = { +export type SyncReconcileResponseDatabaseSecretRef4 = { key: string; name: string; }; -export type SyncReconcileResponseEndpointUrl = { +export type SyncReconcileResponseDatabase4 = { /** * Reference to a Kubernetes Secret */ - secretRef: SyncReconcileResponseEndpointUrlSecretRef; + secretRef: SyncReconcileResponseDatabaseSecretRef4; }; +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseDatabaseUnion3 = + | SyncReconcileResponseDatabase4 + | any + | string; + /** * Reference to a Kubernetes Secret */ -export type SyncReconcileResponseRegionSecretRef = { +export type SyncReconcileResponseHostSecretRef2 = { key: string; name: string; }; -export type SyncReconcileResponseRegion = { +export type SyncReconcileResponseHost2 = { /** * Reference to a Kubernetes Secret */ - secretRef: SyncReconcileResponseRegionSecretRef; + secretRef: SyncReconcileResponseHostSecretRef2; }; /** @@ -7948,24 +7918,24 @@ export type SyncReconcileResponseRegion = { * @remarks * or a reference to a Kubernetes Secret */ -export type SyncReconcileResponseRegionUnion = - | SyncReconcileResponseRegion +export type SyncReconcileResponseHostUnion2 = + | SyncReconcileResponseHost2 | any | string; /** * Reference to a Kubernetes Secret */ -export type SyncReconcileResponseTableNameSecretRef1 = { +export type SyncReconcileResponsePasswordSecretUriSecretRef = { key: string; name: string; }; -export type SyncReconcileResponseTableName1 = { +export type SyncReconcileResponsePasswordSecretUri = { /** * Reference to a Kubernetes Secret */ - secretRef: SyncReconcileResponseTableNameSecretRef1; + secretRef: SyncReconcileResponsePasswordSecretUriSecretRef; }; /** @@ -7974,62 +7944,50 @@ export type SyncReconcileResponseTableName1 = { * @remarks * or a reference to a Kubernetes Secret */ -export type SyncReconcileResponseTableNameUnion1 = - | SyncReconcileResponseTableName1 +export type SyncReconcileResponsePasswordSecretUriUnion = + | SyncReconcileResponsePasswordSecretUri | any | string; -export const TargetTypeKv1 = { - Kv: "kv", -} as const; -export type TargetTypeKv1 = ClosedEnum; - /** - * AWS DynamoDB KV binding configuration + * Reference to a Kubernetes Secret */ -export type SyncReconcileResponseExternalBindingsDynamodb = { - endpointUrl?: any | null | undefined; - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - region?: SyncReconcileResponseRegion | any | string | null | undefined; +export type SyncReconcileResponsePortSecretRef3 = { + key: string; + name: string; +}; + +export type SyncReconcileResponsePort3 = { /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Reference to a Kubernetes Secret */ - tableName?: SyncReconcileResponseTableName1 | any | string | null | undefined; - service: "dynamodb"; - type: TargetTypeKv1; + secretRef: SyncReconcileResponsePortSecretRef3; }; /** - * Represents a KV binding for key-value storage across platforms - */ -export type SyncReconcileResponseExternalBindingsUnion3 = - | SyncReconcileResponseExternalBindingsDynamodb - | SyncReconcileResponseExternalBindingsFirestore - | SyncReconcileResponseExternalBindingsTablestorage - | SyncReconcileResponseExternalBindingsRedis - | SyncReconcileResponseExternalBindingsLocalKv; + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponsePortUnion3 = + | SyncReconcileResponsePort3 + | number + | any; /** * Reference to a Kubernetes Secret */ -export type SyncReconcileResponseQueuePathSecretRef = { +export type SyncReconcileResponseUsernameSecretRef3 = { key: string; name: string; }; -export type SyncReconcileResponseQueuePath = { +export type SyncReconcileResponseUsername3 = { /** * Reference to a Kubernetes Secret */ - secretRef: SyncReconcileResponseQueuePathSecretRef; + secretRef: SyncReconcileResponseUsernameSecretRef3; }; /** @@ -8038,44 +7996,77 @@ export type SyncReconcileResponseQueuePath = { * @remarks * or a reference to a Kubernetes Secret */ -export type SyncReconcileResponseQueuePathUnion = - | SyncReconcileResponseQueuePath +export type SyncReconcileResponseUsernameUnion3 = + | SyncReconcileResponseUsername3 | any | string; -export const TargetTypeQueue4 = { - Queue: "queue", +export const TargetTypePostgres3 = { + Postgres: "postgres", } as const; -export type TargetTypeQueue4 = ClosedEnum; +export type TargetTypePostgres3 = ClosedEnum; /** - * Local queue parameters + * Azure Flexible Server binding. */ -export type SyncReconcileResponseExternalBindingsLocalQueue = { +export type SyncReconcileResponseExternalBindingsFlexibleServer = { /** * Represents a value that can be either a concrete value, a template expression, * * @remarks * or a reference to a Kubernetes Secret */ - queuePath?: SyncReconcileResponseQueuePath | any | string | null | undefined; - service: "local-queue"; - type: TargetTypeQueue4; + database?: SyncReconcileResponseDatabase4 | any | string | null | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + host?: SyncReconcileResponseHost2 | any | string | null | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + passwordSecretUri?: + | SyncReconcileResponsePasswordSecretUri + | any + | string + | null + | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + port?: SyncReconcileResponsePort3 | number | any | null | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + username?: SyncReconcileResponseUsername3 | any | string | null | undefined; + service: "flexible-server"; + type: TargetTypePostgres3; }; /** * Reference to a Kubernetes Secret */ -export type SyncReconcileResponseNamespaceSecretRef1 = { +export type SyncReconcileResponseDatabaseSecretRef3 = { key: string; name: string; }; -export type SyncReconcileResponseNamespace1 = { +export type SyncReconcileResponseDatabase3 = { /** * Reference to a Kubernetes Secret */ - secretRef: SyncReconcileResponseNamespaceSecretRef1; + secretRef: SyncReconcileResponseDatabaseSecretRef3; }; /** @@ -8084,24 +8075,24 @@ export type SyncReconcileResponseNamespace1 = { * @remarks * or a reference to a Kubernetes Secret */ -export type SyncReconcileResponseNamespaceUnion1 = - | SyncReconcileResponseNamespace1 +export type SyncReconcileResponseDatabaseUnion2 = + | SyncReconcileResponseDatabase3 | any | string; /** * Reference to a Kubernetes Secret */ -export type SyncReconcileResponseQueueNameSecretRef = { +export type SyncReconcileResponseHostSecretRef1 = { key: string; name: string; }; -export type SyncReconcileResponseQueueName = { +export type SyncReconcileResponseHost1 = { /** * Reference to a Kubernetes Secret */ - secretRef: SyncReconcileResponseQueueNameSecretRef; + secretRef: SyncReconcileResponseHostSecretRef1; }; /** @@ -8110,51 +8101,76 @@ export type SyncReconcileResponseQueueName = { * @remarks * or a reference to a Kubernetes Secret */ -export type SyncReconcileResponseQueueNameUnion = - | SyncReconcileResponseQueueName +export type SyncReconcileResponseHostUnion1 = + | SyncReconcileResponseHost1 | any | string; -export const TargetTypeQueue3 = { - Queue: "queue", -} as const; -export type TargetTypeQueue3 = ClosedEnum; - /** - * Azure Service Bus parameters + * Reference to a Kubernetes Secret */ -export type SyncReconcileResponseExternalBindingsServicebus = { +export type SyncReconcileResponsePasswordSecretNameSecretRef = { + key: string; + name: string; +}; + +export type SyncReconcileResponsePasswordSecretName = { /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Reference to a Kubernetes Secret */ - namespace?: SyncReconcileResponseNamespace1 | any | string | null | undefined; + secretRef: SyncReconcileResponsePasswordSecretNameSecretRef; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponsePasswordSecretNameUnion = + | SyncReconcileResponsePasswordSecretName + | any + | string; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponsePortSecretRef2 = { + key: string; + name: string; +}; + +export type SyncReconcileResponsePort2 = { /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Reference to a Kubernetes Secret */ - queueName?: SyncReconcileResponseQueueName | any | string | null | undefined; - service: "servicebus"; - type: TargetTypeQueue3; + secretRef: SyncReconcileResponsePortSecretRef2; }; +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponsePortUnion2 = + | SyncReconcileResponsePort2 + | number + | any; + /** * Reference to a Kubernetes Secret */ -export type SyncReconcileResponseSubscriptionSecretRef = { +export type SyncReconcileResponseServerCaCertificatesSecretRef = { key: string; name: string; }; -export type SyncReconcileResponseSubscription = { +export type SyncReconcileResponseServerCaCertificates = { /** * Reference to a Kubernetes Secret */ - secretRef: SyncReconcileResponseSubscriptionSecretRef; + secretRef: SyncReconcileResponseServerCaCertificatesSecretRef; }; /** @@ -8163,24 +8179,24 @@ export type SyncReconcileResponseSubscription = { * @remarks * or a reference to a Kubernetes Secret */ -export type SyncReconcileResponseSubscriptionUnion = - | SyncReconcileResponseSubscription - | any - | string; +export type SyncReconcileResponseServerCaCertificatesUnion = + | SyncReconcileResponseServerCaCertificates + | Array + | any; /** * Reference to a Kubernetes Secret */ -export type SyncReconcileResponseTopicSecretRef = { +export type SyncReconcileResponseUsernameSecretRef2 = { key: string; name: string; }; -export type SyncReconcileResponseTopic = { +export type SyncReconcileResponseUsername2 = { /** * Reference to a Kubernetes Secret */ - secretRef: SyncReconcileResponseTopicSecretRef; + secretRef: SyncReconcileResponseUsernameSecretRef2; }; /** @@ -8189,28 +8205,42 @@ export type SyncReconcileResponseTopic = { * @remarks * or a reference to a Kubernetes Secret */ -export type SyncReconcileResponseTopicUnion = - | SyncReconcileResponseTopic +export type SyncReconcileResponseUsernameUnion2 = + | SyncReconcileResponseUsername2 | any | string; -export const TargetTypeQueue2 = { - Queue: "queue", +export const TargetTypePostgres2 = { + Postgres: "postgres", } as const; -export type TargetTypeQueue2 = ClosedEnum; +export type TargetTypePostgres2 = ClosedEnum; /** - * GCP Pub/Sub parameters + * GCP Cloud SQL binding. */ -export type SyncReconcileResponseExternalBindingsPubsub = { +export type SyncReconcileResponseExternalBindingsCloudSQL = { /** * Represents a value that can be either a concrete value, a template expression, * * @remarks * or a reference to a Kubernetes Secret */ - subscription?: - | SyncReconcileResponseSubscription + database?: SyncReconcileResponseDatabase3 | any | string | null | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + host?: SyncReconcileResponseHost1 | any | string | null | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + passwordSecretName?: + | SyncReconcileResponsePasswordSecretName | any | string | null @@ -8221,24 +8251,43 @@ export type SyncReconcileResponseExternalBindingsPubsub = { * @remarks * or a reference to a Kubernetes Secret */ - topic?: SyncReconcileResponseTopic | any | string | null | undefined; - service: "pubsub"; - type: TargetTypeQueue2; + port?: SyncReconcileResponsePort2 | number | any | null | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + serverCaCertificates?: + | SyncReconcileResponseServerCaCertificates + | Array + | any + | null + | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + username?: SyncReconcileResponseUsername2 | any | string | null | undefined; + service: "cloud-sql"; + type: TargetTypePostgres2; }; /** * Reference to a Kubernetes Secret */ -export type SyncReconcileResponseQueueUrlSecretRef = { +export type SyncReconcileResponseClusterEndpointSecretRef = { key: string; name: string; }; -export type SyncReconcileResponseQueueUrl = { +export type SyncReconcileResponseClusterEndpoint = { /** * Reference to a Kubernetes Secret */ - secretRef: SyncReconcileResponseQueueUrlSecretRef; + secretRef: SyncReconcileResponseClusterEndpointSecretRef; }; /** @@ -8247,53 +8296,50 @@ export type SyncReconcileResponseQueueUrl = { * @remarks * or a reference to a Kubernetes Secret */ -export type SyncReconcileResponseQueueUrlUnion = - | SyncReconcileResponseQueueUrl +export type SyncReconcileResponseClusterEndpointUnion = + | SyncReconcileResponseClusterEndpoint | any | string; -export const TargetTypeQueue1 = { - Queue: "queue", -} as const; -export type TargetTypeQueue1 = ClosedEnum; - /** - * AWS SQS queue parameters + * Reference to a Kubernetes Secret */ -export type SyncReconcileResponseExternalBindingsSqs = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - queueUrl?: SyncReconcileResponseQueueUrl | any | string | null | undefined; - service: "sqs"; - type: TargetTypeQueue1; +export type SyncReconcileResponseDatabaseSecretRef2 = { + key: string; + name: string; }; -/** - * Binding parameters for Queue at runtime or in templates. +export type SyncReconcileResponseDatabase2 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseDatabaseSecretRef2; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ -export type SyncReconcileResponseExternalBindingsUnion2 = - | SyncReconcileResponseExternalBindingsSqs - | SyncReconcileResponseExternalBindingsPubsub - | SyncReconcileResponseExternalBindingsServicebus - | SyncReconcileResponseExternalBindingsLocalQueue; +export type SyncReconcileResponseDatabaseUnion1 = + | SyncReconcileResponseDatabase2 + | any + | string; /** * Reference to a Kubernetes Secret */ -export type SyncReconcileResponseStoragePathSecretRef = { +export type SyncReconcileResponsePasswordSecretArnSecretRef = { key: string; name: string; }; -export type SyncReconcileResponseStoragePath = { +export type SyncReconcileResponsePasswordSecretArn = { /** * Reference to a Kubernetes Secret */ - secretRef: SyncReconcileResponseStoragePathSecretRef; + secretRef: SyncReconcileResponsePasswordSecretArnSecretRef; }; /** @@ -8302,49 +8348,50 @@ export type SyncReconcileResponseStoragePath = { * @remarks * or a reference to a Kubernetes Secret */ -export type SyncReconcileResponseStoragePathUnion = - | SyncReconcileResponseStoragePath +export type SyncReconcileResponsePasswordSecretArnUnion = + | SyncReconcileResponsePasswordSecretArn | any | string; -export const TargetTypeStorage4 = { - Storage: "storage", -} as const; -export type TargetTypeStorage4 = ClosedEnum; - /** - * Local filesystem storage binding configuration + * Reference to a Kubernetes Secret */ -export type SyncReconcileResponseExternalBindingsLocalStorage = { +export type SyncReconcileResponsePortSecretRef1 = { + key: string; + name: string; +}; + +export type SyncReconcileResponsePort1 = { /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Reference to a Kubernetes Secret */ - storagePath?: - | SyncReconcileResponseStoragePath - | any - | string - | null - | undefined; - service: "local-storage"; - type: TargetTypeStorage4; + secretRef: SyncReconcileResponsePortSecretRef1; }; +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponsePortUnion1 = + | SyncReconcileResponsePort1 + | number + | any; + /** * Reference to a Kubernetes Secret */ -export type SyncReconcileResponseBucketNameSecretRef2 = { +export type SyncReconcileResponseUsernameSecretRef1 = { key: string; name: string; }; -export type SyncReconcileResponseBucketName2 = { +export type SyncReconcileResponseUsername1 = { /** * Reference to a Kubernetes Secret */ - secretRef: SyncReconcileResponseBucketNameSecretRef2; + secretRef: SyncReconcileResponseUsernameSecretRef1; }; /** @@ -8353,49 +8400,92 @@ export type SyncReconcileResponseBucketName2 = { * @remarks * or a reference to a Kubernetes Secret */ -export type SyncReconcileResponseBucketNameUnion2 = - | SyncReconcileResponseBucketName2 +export type SyncReconcileResponseUsernameUnion1 = + | SyncReconcileResponseUsername1 | any | string; -export const TargetTypeStorage3 = { - Storage: "storage", +export const TargetTypePostgres1 = { + Postgres: "postgres", } as const; -export type TargetTypeStorage3 = ClosedEnum; +export type TargetTypePostgres1 = ClosedEnum; /** - * Google Cloud Storage binding configuration + * AWS Aurora Serverless v2 binding. */ -export type SyncReconcileResponseExternalBindingsGcs = { +export type SyncReconcileResponseExternalBindingsAurora = { /** * Represents a value that can be either a concrete value, a template expression, * * @remarks * or a reference to a Kubernetes Secret */ - bucketName?: - | SyncReconcileResponseBucketName2 + clusterEndpoint?: + | SyncReconcileResponseClusterEndpoint | any | string | null | undefined; - service: "gcs"; - type: TargetTypeStorage3; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + database?: SyncReconcileResponseDatabase2 | any | string | null | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + passwordSecretArn?: + | SyncReconcileResponsePasswordSecretArn + | any + | string + | null + | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + port?: SyncReconcileResponsePort1 | number | any | null | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + username?: SyncReconcileResponseUsername1 | any | string | null | undefined; + service: "aurora"; + type: TargetTypePostgres1; }; +/** + * Connection details for a Postgres database, one variant per backend. + */ +export type SyncReconcileResponseExternalBindingsUnion6 = + | SyncReconcileResponseExternalBindingsAurora + | SyncReconcileResponseExternalBindingsCloudSQL + | SyncReconcileResponseExternalBindingsFlexibleServer + | SyncReconcileResponseExternalBindingsExternal + | SyncReconcileResponseExternalBindingsLocalPostgres; + /** * Reference to a Kubernetes Secret */ -export type SyncReconcileResponseAccountNameSecretRef1 = { +export type SyncReconcileResponseDefaultDomainSecretRef = { key: string; name: string; }; -export type SyncReconcileResponseAccountName1 = { +export type SyncReconcileResponseDefaultDomain = { /** * Reference to a Kubernetes Secret */ - secretRef: SyncReconcileResponseAccountNameSecretRef1; + secretRef: SyncReconcileResponseDefaultDomainSecretRef; }; /** @@ -8404,24 +8494,24 @@ export type SyncReconcileResponseAccountName1 = { * @remarks * or a reference to a Kubernetes Secret */ -export type SyncReconcileResponseAccountNameUnion1 = - | SyncReconcileResponseAccountName1 +export type SyncReconcileResponseDefaultDomainUnion = + | SyncReconcileResponseDefaultDomain | any | string; /** * Reference to a Kubernetes Secret */ -export type SyncReconcileResponseContainerNameSecretRef = { +export type SyncReconcileResponseEnvironmentNameSecretRef = { key: string; name: string; }; -export type SyncReconcileResponseContainerName = { +export type SyncReconcileResponseEnvironmentName = { /** * Reference to a Kubernetes Secret */ - secretRef: SyncReconcileResponseContainerNameSecretRef; + secretRef: SyncReconcileResponseEnvironmentNameSecretRef; }; /** @@ -8430,61 +8520,50 @@ export type SyncReconcileResponseContainerName = { * @remarks * or a reference to a Kubernetes Secret */ -export type SyncReconcileResponseContainerNameUnion = - | SyncReconcileResponseContainerName +export type SyncReconcileResponseEnvironmentNameUnion = + | SyncReconcileResponseEnvironmentName | any | string; -export const TargetTypeStorage2 = { - Storage: "storage", -} as const; -export type TargetTypeStorage2 = ClosedEnum; - /** - * Azure Blob Storage binding configuration + * Reference to a Kubernetes Secret */ -export type SyncReconcileResponseExternalBindingsBlob = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - accountName?: - | SyncReconcileResponseAccountName1 - | any - | string - | null - | undefined; +export type SyncReconcileResponseResourceGroupNameSecretRef3 = { + key: string; + name: string; +}; + +export type SyncReconcileResponseResourceGroupName3 = { /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret + * Reference to a Kubernetes Secret */ - containerName?: - | SyncReconcileResponseContainerName - | any - | string - | null - | undefined; - service: "blob"; - type: TargetTypeStorage2; + secretRef: SyncReconcileResponseResourceGroupNameSecretRef3; }; +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseResourceGroupNameUnion3 = + | SyncReconcileResponseResourceGroupName3 + | any + | string; + /** * Reference to a Kubernetes Secret */ -export type SyncReconcileResponseBucketNameSecretRef1 = { +export type SyncReconcileResponseResourceIdSecretRef = { key: string; name: string; }; -export type SyncReconcileResponseBucketName1 = { +export type SyncReconcileResponseResourceId = { /** * Reference to a Kubernetes Secret */ - secretRef: SyncReconcileResponseBucketNameSecretRef1; + secretRef: SyncReconcileResponseResourceIdSecretRef; }; /** @@ -8493,2908 +8572,3429 @@ export type SyncReconcileResponseBucketName1 = { * @remarks * or a reference to a Kubernetes Secret */ -export type SyncReconcileResponseBucketNameUnion1 = - | SyncReconcileResponseBucketName1 +export type SyncReconcileResponseResourceIdUnion = + | SyncReconcileResponseResourceId | any | string; -export const TargetTypeStorage1 = { - Storage: "storage", +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseStaticIpSecretRef = { + key: string; + name: string; +}; + +export type SyncReconcileResponseStaticIp = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseStaticIpSecretRef; +}; + +export const TargetTypeContainerAppsEnvironment = { + ContainerAppsEnvironment: "container_apps_environment", } as const; -export type TargetTypeStorage1 = ClosedEnum; +export type TargetTypeContainerAppsEnvironment = ClosedEnum< + typeof TargetTypeContainerAppsEnvironment +>; /** - * AWS S3 storage binding configuration + * Binding configuration for a pre-existing Azure Container Apps Environment. + * + * @remarks + * + * Used when deploying to an existing environment instead of having Alien provision one. + * This is useful for shared environments (e.g., test infrastructure) or enterprise + * setups where environments are managed by a separate team. */ -export type SyncReconcileResponseExternalBindingsS3 = { +export type SyncReconcileResponseExternalBindingsContainerAppsEnvironment = { /** * Represents a value that can be either a concrete value, a template expression, * * @remarks * or a reference to a Kubernetes Secret */ - bucketName?: - | SyncReconcileResponseBucketName1 + defaultDomain?: + | SyncReconcileResponseDefaultDomain | any | string | null | undefined; - service: "s3"; - type: TargetTypeStorage1; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + environmentName?: + | SyncReconcileResponseEnvironmentName + | any + | string + | null + | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + resourceGroupName?: + | SyncReconcileResponseResourceGroupName3 + | any + | string + | null + | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + resourceId?: + | SyncReconcileResponseResourceId + | any + | string + | null + | undefined; + staticIp?: any | null | undefined; + type: TargetTypeContainerAppsEnvironment; }; /** - * Service-type based storage binding that supports multiple storage providers + * Reference to a Kubernetes Secret */ -export type SyncReconcileResponseExternalBindingsUnion1 = - | SyncReconcileResponseExternalBindingsS3 - | SyncReconcileResponseExternalBindingsBlob - | SyncReconcileResponseExternalBindingsGcs - | SyncReconcileResponseExternalBindingsLocalStorage; +export type SyncReconcileResponseDataDirSecretRef3 = { + key: string; + name: string; +}; + +export type SyncReconcileResponseDataDir3 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseDataDirSecretRef3; +}; /** - * Represents a binding to pre-existing infrastructure. + * Represents a value that can be either a concrete value, a template expression, * * @remarks - * - * The binding type must match the resource type it's applied to. - * Validated at runtime by the executor. + * or a reference to a Kubernetes Secret */ -export type SyncReconcileResponseExternalBindingsUnion7 = - | SyncReconcileResponseExternalBindingsContainerAppsEnvironment - | SyncReconcileResponseExternalBindingsS3 - | SyncReconcileResponseExternalBindingsBlob - | SyncReconcileResponseExternalBindingsGcs - | SyncReconcileResponseExternalBindingsLocalStorage - | SyncReconcileResponseExternalBindingsSqs - | SyncReconcileResponseExternalBindingsPubsub - | SyncReconcileResponseExternalBindingsServicebus - | SyncReconcileResponseExternalBindingsLocalQueue - | SyncReconcileResponseExternalBindingsDynamodb - | SyncReconcileResponseExternalBindingsFirestore - | SyncReconcileResponseExternalBindingsTablestorage - | SyncReconcileResponseExternalBindingsRedis - | SyncReconcileResponseExternalBindingsLocalKv - | SyncReconcileResponseExternalBindingsEcr - | SyncReconcileResponseExternalBindingsAcr - | SyncReconcileResponseExternalBindingsGar - | SyncReconcileResponseExternalBindingsLocal - | SyncReconcileResponseExternalBindingsParameterStore - | SyncReconcileResponseExternalBindingsSecretManager - | SyncReconcileResponseExternalBindingsKeyVault - | SyncReconcileResponseExternalBindingsKubernetesSecret - | SyncReconcileResponseExternalBindingsLocalVault - | SyncReconcileResponseExternalBindingsAurora - | SyncReconcileResponseExternalBindingsCloudSQL - | SyncReconcileResponseExternalBindingsFlexibleServer - | SyncReconcileResponseExternalBindingsExternal - | SyncReconcileResponseExternalBindingsLocalPostgres; - -export const TargetPlatformKubernetes = { - Kubernetes: "kubernetes", -} as const; -export type TargetPlatformKubernetes = ClosedEnum< - typeof TargetPlatformKubernetes ->; - -export type SyncReconcileResponseManagementConfigKubernetes = { - platform: TargetPlatformKubernetes; -}; +export type SyncReconcileResponseDataDirUnion2 = + | SyncReconcileResponseDataDir3 + | any + | string; -export const TargetPlatformAzure = { - Azure: "azure", +export const TargetTypeVault5 = { + Vault: "vault", } as const; -export type TargetPlatformAzure = ClosedEnum; +export type TargetTypeVault5 = ClosedEnum; /** - * Azure management configuration extracted from stack settings + * Local development vault binding (for testing/development) */ -export type SyncReconcileResponseManagementConfigAzure = { - /** - * The managing Azure Tenant ID for cross-tenant access - */ - managingTenantId: string; +export type SyncReconcileResponseExternalBindingsLocalVault = { /** - * OIDC issuer URL trusted by the target-side managed identity. + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ - oidcIssuer: string; + dataDir?: SyncReconcileResponseDataDir3 | any | string | null | undefined; /** - * OIDC subject claim trusted by the target-side managed identity. + * The vault name for local storage */ - oidcSubject: string; - platform: TargetPlatformAzure; + vaultName: string; + service: "local-vault"; + type: TargetTypeVault5; }; -export const TargetPlatformGcp = { - Gcp: "gcp", -} as const; -export type TargetPlatformGcp = ClosedEnum; - /** - * GCP management configuration extracted from stack settings + * Reference to a Kubernetes Secret */ -export type SyncReconcileResponseManagementConfigGcp = { +export type SyncReconcileResponseNamespaceSecretRef2 = { + key: string; + name: string; +}; + +export type SyncReconcileResponseNamespace2 = { /** - * Service account email for management roles + * Reference to a Kubernetes Secret */ - serviceAccountEmail: string; - platform: TargetPlatformGcp; + secretRef: SyncReconcileResponseNamespaceSecretRef2; }; -export const TargetPlatformAws = { - Aws: "aws", -} as const; -export type TargetPlatformAws = ClosedEnum; +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseNamespaceUnion2 = + | SyncReconcileResponseNamespace2 + | any + | string; /** - * AWS management configuration extracted from stack settings + * Reference to a Kubernetes Secret */ -export type SyncReconcileResponseManagementConfigAws = { +export type SyncReconcileResponseVaultPrefixSecretRef3 = { + key: string; + name: string; +}; + +export type SyncReconcileResponseVaultPrefix3 = { /** - * The managing AWS IAM role ARN that can assume cross-account roles + * Reference to a Kubernetes Secret */ - managingRoleArn: string; - platform: TargetPlatformAws; + secretRef: SyncReconcileResponseVaultPrefixSecretRef3; }; -export type SyncReconcileResponseManagementConfigUnion = - | SyncReconcileResponseManagementConfigAzure - | SyncReconcileResponseManagementConfigAws - | SyncReconcileResponseManagementConfigGcp - | SyncReconcileResponseManagementConfigKubernetes - | any; - /** - * OTLP log export configuration for a deployment. + * Represents a value that can be either a concrete value, a template expression, * * @remarks - * - * When set, injected compute runtimes export captured application logs - * through the given endpoint via OTLP/HTTP; which resources are injected - * is platform-dependent. Workers read auth headers from a runtime-only - * secret. Runtime-less Containers and Daemons receive standard OTEL auth - * variables only at the final hosting boundary: Local passes them directly - * to the process and Kubernetes projects them from a per-workload Secret. + * or a reference to a Kubernetes Secret */ -export type SyncReconcileResponseMonitoring = { +export type SyncReconcileResponseVaultPrefixUnion3 = + | SyncReconcileResponseVaultPrefix3 + | any + | string; + +export const TargetTypeVault4 = { + Vault: "vault", +} as const; +export type TargetTypeVault4 = ClosedEnum; + +/** + * Kubernetes Secrets vault binding configuration + */ +export type SyncReconcileResponseExternalBindingsKubernetesSecret = { /** - * Auth header value in "key=value,..." format. + * Represents a value that can be either a concrete value, a template expression, * * @remarks - * Example: "authorization=Bearer " + * or a reference to a Kubernetes Secret */ - logsAuthHeader: string; + namespace?: SyncReconcileResponseNamespace2 | any | string | null | undefined; /** - * Full OTLP logs endpoint URL. + * Represents a value that can be either a concrete value, a template expression, * * @remarks - * Example: "https:///v1/logs" + * or a reference to a Kubernetes Secret */ - logsEndpoint: string; + vaultPrefix?: + | SyncReconcileResponseVaultPrefix3 + | any + | string + | null + | undefined; + service: "kubernetes-secret"; + type: TargetTypeVault4; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseVaultNameSecretRef = { + key: string; + name: string; +}; + +export type SyncReconcileResponseVaultName = { /** - * Auth header value for the metrics endpoint in "key=value,..." format (optional). - * - * @remarks - * - * When absent, `logs_auth_header` is reused for metrics -- suitable when the same - * credential covers both signals. When present (e.g. Axiom with separate datasets), - * this value is used exclusively for metrics. - * - * Example: "authorization=Bearer ,x-axiom-dataset=" - */ - metricsAuthHeader?: string | null | undefined; - /** - * Full OTLP metrics endpoint URL (optional). - * - * @remarks - * When set, the worker runtime exports its own VM/container orchestration metrics here. - * Example: "https://api.axiom.co/v1/metrics" + * Reference to a Kubernetes Secret */ - metricsEndpoint?: string | null | undefined; + secretRef: SyncReconcileResponseVaultNameSecretRef; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseVaultNameUnion = + | SyncReconcileResponseVaultName + | any + | string; + +export const TargetTypeVault3 = { + Vault: "vault", +} as const; +export type TargetTypeVault3 = ClosedEnum; + +/** + * Azure Key Vault binding configuration + */ +export type SyncReconcileResponseExternalBindingsKeyVault = { /** - * Resource attributes attached to every OTLP signal emitted for this deployment. + * Represents a value that can be either a concrete value, a template expression, * * @remarks - * - * Platform managers use this for stable identity such as `alien.workspace_id`, - * `alien.project_id`, `alien.deployment_group_id`, and `alien.deployment_id`. - * Runtime-specific resource attributes such as `service.name` remain owned by - * the runtime/exporter. + * or a reference to a Kubernetes Secret */ - resourceAttributes?: { [k: string]: string } | undefined; + vaultName?: SyncReconcileResponseVaultName | any | string | null | undefined; + service: "key-vault"; + type: TargetTypeVault3; }; -export type SyncReconcileResponseMonitoringUnion = - | SyncReconcileResponseMonitoring - | any; - -export type SyncReconcileResponsePoolsAutoscale = { - /** - * Provider machine type selected for this deployment. - */ - machine?: string | null | undefined; - /** - * Maximum machine count. - */ - max: number; - /** - * Minimum machine count. - */ - min: number; - mode: "autoscale"; +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseVaultPrefixSecretRef2 = { + key: string; + name: string; }; -export type SyncReconcileResponsePoolsFixed = { - /** - * Provider machine type selected for this deployment. - */ - machine?: string | null | undefined; +export type SyncReconcileResponseVaultPrefix2 = { /** - * Number of machines to run. + * Reference to a Kubernetes Secret */ - machines: number; - mode: "fixed"; + secretRef: SyncReconcileResponseVaultPrefixSecretRef2; }; /** - * User-selected deployment settings for one compute pool. + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ -export type SyncReconcileResponsePoolsUnion = - | SyncReconcileResponsePoolsFixed - | SyncReconcileResponsePoolsAutoscale; +export type SyncReconcileResponseVaultPrefixUnion2 = + | SyncReconcileResponseVaultPrefix2 + | any + | string; + +export const TargetTypeVault2 = { + Vault: "vault", +} as const; +export type TargetTypeVault2 = ClosedEnum; /** - * Deployment-time compute choices for Alien-managed compute pools. - * - * @remarks - * - * Application source declares portable pool requirements. This settings - * object stores the concrete choices made for one deployment, such as the - * provider machine type and selected machine counts. + * GCP Secret Manager vault binding configuration */ -export type SyncReconcileResponseCompute = { +export type SyncReconcileResponseExternalBindingsSecretManager = { /** - * Selected compute choices keyed by pool ID. + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ - pools?: { - [k: string]: - | SyncReconcileResponsePoolsFixed - | SyncReconcileResponsePoolsAutoscale; - } | undefined; + vaultPrefix?: + | SyncReconcileResponseVaultPrefix2 + | any + | string + | null + | undefined; + service: "secret-manager"; + type: TargetTypeVault2; }; -export type SyncReconcileResponseComputeUnion = - | SyncReconcileResponseCompute - | any; - -/** - * Deployment model: how updates are delivered to the remote environment. - */ -export const SyncReconcileResponseDeploymentModel = { - Push: "push", - Pull: "pull", -} as const; /** - * Deployment model: how updates are delivered to the remote environment. + * Reference to a Kubernetes Secret */ -export type SyncReconcileResponseDeploymentModel = ClosedEnum< - typeof SyncReconcileResponseDeploymentModel ->; - -export type SyncReconcileResponseAwsStackSettings = { - certificateArn: string; +export type SyncReconcileResponseVaultPrefixSecretRef1 = { + key: string; + name: string; }; -export type SyncReconcileResponseStackSettingsAwsUnion = - | SyncReconcileResponseAwsStackSettings - | any; - -export type AzureTargetStackSettings = { - keyVaultCertificateId: string; - keyVaultResourceId?: string | null | undefined; +export type SyncReconcileResponseVaultPrefix1 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseVaultPrefixSecretRef1; }; -export type TargetStackSettingsAzureUnion = AzureTargetStackSettings | any; - -export type GcpTargetStackSettings = { - certificateName: string; -}; +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseVaultPrefixUnion1 = + | SyncReconcileResponseVaultPrefix1 + | any + | string; -export type TargetStackSettingsGcpUnion = GcpTargetStackSettings | any; +export const TargetTypeVault1 = { + Vault: "vault", +} as const; +export type TargetTypeVault1 = ClosedEnum; /** - * Namespace-scoped Kubernetes TLS Secret reference. + * AWS SSM Parameter Store vault binding configuration */ -export type SyncReconcileResponseTlsSecretRef = { - /** - * Secret namespace. Defaults to the release namespace when omitted. - */ - namespace?: string | null | undefined; +export type SyncReconcileResponseExternalBindingsParameterStore = { /** - * Secret name. + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ - secretName: string; + vaultPrefix?: + | SyncReconcileResponseVaultPrefix1 + | any + | string + | null + | undefined; + service: "parameter-store"; + type: TargetTypeVault1; }; -export type SyncReconcileResponseDomainsKubernetes = { +/** + * Represents a vault binding for secure secret management + */ +export type SyncReconcileResponseExternalBindingsUnion5 = + | SyncReconcileResponseExternalBindingsParameterStore + | SyncReconcileResponseExternalBindingsSecretManager + | SyncReconcileResponseExternalBindingsKeyVault + | SyncReconcileResponseExternalBindingsKubernetesSecret + | SyncReconcileResponseExternalBindingsLocalVault; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseDataDirSecretRef2 = { + key: string; + name: string; +}; + +export type SyncReconcileResponseDataDir2 = { /** - * Namespace-scoped Kubernetes TLS Secret reference. + * Reference to a Kubernetes Secret */ - tlsSecretRef: SyncReconcileResponseTlsSecretRef; + secretRef: SyncReconcileResponseDataDirSecretRef2; }; -export type SyncReconcileResponseDomainsKubernetesUnion = - | SyncReconcileResponseDomainsKubernetes - | any; - /** - * Platform-specific certificate references for custom domains. + * Reference to a Kubernetes Secret */ -export type SyncReconcileResponseDomainsCertificate = { - aws?: SyncReconcileResponseAwsStackSettings | any | null | undefined; - azure?: AzureTargetStackSettings | any | null | undefined; - gcp?: GcpTargetStackSettings | any | null | undefined; - kubernetes?: SyncReconcileResponseDomainsKubernetes | any | null | undefined; +export type SyncReconcileResponseRegistryUrlSecretRef = { + key: string; + name: string; }; -/** - * Custom domain configuration for a single resource. - */ -export type SyncReconcileResponseCustomDomains = { - /** - * Platform-specific certificate references for custom domains. - */ - certificate: SyncReconcileResponseDomainsCertificate; +export type SyncReconcileResponseRegistryUrl = { /** - * Fully qualified domain name to use. + * Reference to a Kubernetes Secret */ - domain: string; + secretRef: SyncReconcileResponseRegistryUrlSecretRef; }; -export const SyncReconcileResponseModeLoadBalancer = { - LoadBalancer: "loadBalancer", -} as const; -export type SyncReconcileResponseModeLoadBalancer = ClosedEnum< - typeof SyncReconcileResponseModeLoadBalancer ->; - -export type SyncReconcileResponsePublicEndpointTargetLoadBalancer = { - /** - * DNS name or URL for the external load balancer. - */ - cnameTarget: string; - mode: SyncReconcileResponseModeLoadBalancer; -}; +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseRegistryUrlUnion = + | SyncReconcileResponseRegistryUrl + | any + | string; -export const SyncReconcileResponseModeMachineAddresses = { - MachineAddresses: "machineAddresses", +export const TargetTypeArtifactRegistry4 = { + ArtifactRegistry: "artifact_registry", } as const; -export type SyncReconcileResponseModeMachineAddresses = ClosedEnum< - typeof SyncReconcileResponseModeMachineAddresses +export type TargetTypeArtifactRegistry4 = ClosedEnum< + typeof TargetTypeArtifactRegistry4 >; -export type SyncReconcileResponsePublicEndpointTargetMachineAddresses = { - mode: SyncReconcileResponseModeMachineAddresses; -}; - -export type SyncReconcileResponsePublicEndpointTargetUnion = - | SyncReconcileResponsePublicEndpointTargetLoadBalancer - | SyncReconcileResponsePublicEndpointTargetMachineAddresses - | any; - /** - * Domain configuration for the stack. + * Local container registry binding configuration. * * @remarks * - * When `custom_domains` is set, the specified resources use customer-provided - * domains and certificates. Otherwise, Alien auto-generates domains. + * The local registry runs on localhost only and does not require authentication. + * Security boundary is the OS process isolation on the customer's machine. + * External image access is secured by the manager's registry proxy (deployment tokens). */ -export type SyncReconcileResponseDomains = { +export type SyncReconcileResponseExternalBindingsLocal = { /** - * Custom domain configuration per resource ID. + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ - customDomains?: - | { [k: string]: SyncReconcileResponseCustomDomains } - | null - | undefined; - publicEndpointTarget?: - | SyncReconcileResponsePublicEndpointTargetLoadBalancer - | SyncReconcileResponsePublicEndpointTargetMachineAddresses + dataDir?: any | null | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + registryUrl?: + | SyncReconcileResponseRegistryUrl | any + | string | null | undefined; + service: "local"; + type: TargetTypeArtifactRegistry4; }; -export type SyncReconcileResponseDomainsUnion = - | SyncReconcileResponseDomains - | any; - /** - * External bindings for pre-existing infrastructure. - * - * @remarks - * Allows using existing resources (MinIO, Redis, shared Container Apps - * Environment, etc.) instead of having Alien provision them. - * Required for Kubernetes platform, optional for cloud platforms. + * Reference to a Kubernetes Secret */ -export type SyncReconcileResponseStackSettingsExternalBindings = {}; +export type SyncReconcileResponsePullServiceAccountEmailSecretRef = { + key: string; + name: string; +}; + +export type SyncReconcileResponsePullServiceAccountEmail = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponsePullServiceAccountEmailSecretRef; +}; /** - * How heartbeat health checks are handled. - */ -export const SyncReconcileResponseHeartbeats = { - Off: "off", - On: "on", -} as const; -/** - * How heartbeat health checks are handled. + * Reference to a Kubernetes Secret */ -export type SyncReconcileResponseHeartbeats = ClosedEnum< - typeof SyncReconcileResponseHeartbeats ->; +export type SyncReconcileResponsePushServiceAccountEmailSecretRef = { + key: string; + name: string; +}; + +export type SyncReconcileResponsePushServiceAccountEmail = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponsePushServiceAccountEmailSecretRef; +}; /** - * Optional provider-specific identity for a cloud-backed Kubernetes cluster. + * Reference to a Kubernetes Secret */ -export type SyncReconcileResponseCloud = { - accountId?: string | null | undefined; - clusterId?: string | null | undefined; - clusterName?: string | null | undefined; - projectId?: string | null | undefined; - region?: string | null | undefined; - resourceGroup?: string | null | undefined; - subscriptionId?: string | null | undefined; +export type SyncReconcileResponseRepositoryNameSecretRef = { + key: string; + name: string; }; -export type SyncReconcileResponseCloudUnion = SyncReconcileResponseCloud | any; +export type SyncReconcileResponseRepositoryName = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseRepositoryNameSecretRef; +}; /** - * Ownership model for the Kubernetes cluster. + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ -export const SyncReconcileResponseOwnership = { - Managed: "managed", - Existing: "existing", - External: "external", +export type SyncReconcileResponseRepositoryNameUnion = + | SyncReconcileResponseRepositoryName + | any + | string; + +export const TargetTypeArtifactRegistry3 = { + ArtifactRegistry: "artifact_registry", } as const; -/** - * Ownership model for the Kubernetes cluster. - */ -export type SyncReconcileResponseOwnership = ClosedEnum< - typeof SyncReconcileResponseOwnership +export type TargetTypeArtifactRegistry3 = ClosedEnum< + typeof TargetTypeArtifactRegistry3 >; /** - * Kubernetes cluster setup settings. + * Google Artifact Registry binding configuration */ -export type SyncReconcileResponseCluster = { - cloud?: SyncReconcileResponseCloud | any | null | undefined; +export type SyncReconcileResponseExternalBindingsGar = { + pullServiceAccountEmail?: any | null | undefined; + pushServiceAccountEmail?: any | null | undefined; /** - * Namespace where the Alien chart and application resources run. + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ - namespace?: string | null | undefined; + repositoryName?: + | SyncReconcileResponseRepositoryName + | any + | string + | null + | undefined; + service: "gar"; + type: TargetTypeArtifactRegistry3; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseRegistryNameSecretRef = { + key: string; + name: string; +}; + +export type SyncReconcileResponseRegistryName = { /** - * Ownership model for the Kubernetes cluster. + * Reference to a Kubernetes Secret */ - ownership: SyncReconcileResponseOwnership; + secretRef: SyncReconcileResponseRegistryNameSecretRef; }; -export type SyncReconcileResponseClusterUnion = - | SyncReconcileResponseCluster - | any; +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseRegistryNameUnion = + | SyncReconcileResponseRegistryName + | any + | string; -export type SyncReconcileResponseCertificateNone2 = { - mode: "none"; +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseRepositoryPrefixSecretRef2 = { + key: string; + name: string; }; -export type SyncReconcileResponseCertificateManagedTLSSecret2 = { - mode: "managedTlsSecret"; +export type SyncReconcileResponseRepositoryPrefix2 = { /** - * Secret name template. Runtime may substitute resource/deployment tokens. + * Reference to a Kubernetes Secret */ - secretNameTemplate: string; + secretRef: SyncReconcileResponseRepositoryPrefixSecretRef2; }; -export type SyncReconcileResponseCertificateAwsAcmArn2 = { - /** - * Existing ACM certificate ARN. - */ - certificateArn: string; - mode: "awsAcmArn"; +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseResourceGroupNameSecretRef2 = { + key: string; + name: string; }; -export type SyncReconcileResponseCertificateManagedAcmImport2 = { - mode: "managedAcmImport"; - /** - * ACM region. Defaults to the deployment region when omitted. - */ - region?: string | null | undefined; +export type SyncReconcileResponseResourceGroupName2 = { /** - * Tags applied to runtime-imported ACM certificates. + * Reference to a Kubernetes Secret */ - tags?: { [k: string]: string } | undefined; + secretRef: SyncReconcileResponseResourceGroupNameSecretRef2; }; /** - * Namespace-scoped Kubernetes TLS Secret reference. + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ -export type SyncReconcileResponseCertificateTLSSecretRef2 = { - /** - * Secret namespace. Defaults to the release namespace when omitted. +export type SyncReconcileResponseResourceGroupNameUnion2 = + | SyncReconcileResponseResourceGroupName2 + | any + | string; + +export const TargetTypeArtifactRegistry2 = { + ArtifactRegistry: "artifact_registry", +} as const; +export type TargetTypeArtifactRegistry2 = ClosedEnum< + typeof TargetTypeArtifactRegistry2 +>; + +/** + * Azure Container Registry binding configuration + */ +export type SyncReconcileResponseExternalBindingsAcr = { + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ - namespace?: string | null | undefined; + registryName?: + | SyncReconcileResponseRegistryName + | any + | string + | null + | undefined; + repositoryPrefix?: any | null | undefined; /** - * Secret name. + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ - secretName: string; - mode: "tlsSecretRef"; + resourceGroupName?: + | SyncReconcileResponseResourceGroupName2 + | any + | string + | null + | undefined; + service: "acr"; + type: TargetTypeArtifactRegistry2; }; /** - * Certificate publication or reference mode for Kubernetes public endpoints. + * Reference to a Kubernetes Secret */ -export type SyncReconcileResponseCertificateUnion2 = - | SyncReconcileResponseCertificateTLSSecretRef2 - | SyncReconcileResponseCertificateManagedAcmImport2 - | SyncReconcileResponseCertificateAwsAcmArn2 - | SyncReconcileResponseCertificateManagedTLSSecret2 - | SyncReconcileResponseCertificateNone2; +export type SyncReconcileResponsePullRoleArnSecretRef = { + key: string; + name: string; +}; -export const SyncReconcileResponseModeCustom = { - Custom: "custom", -} as const; -export type SyncReconcileResponseModeCustom = ClosedEnum< - typeof SyncReconcileResponseModeCustom ->; +export type SyncReconcileResponsePullRoleArn = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponsePullRoleArnSecretRef; +}; -export const SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum4 = - { - AzureApplicationGatewayForContainers: - "azureApplicationGatewayForContainers", - } as const; -export type SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum4 = - ClosedEnum< - typeof SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum4 - >; +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponsePushRoleArnSecretRef = { + key: string; + name: string; +}; -export type SyncReconcileResponseProviderAzureApplicationGatewayForContainers4 = - { - /** - * Optional ALB name when using BYO Application Gateway resources. - */ - albName?: string | null | undefined; - /** - * Optional ALB namespace when using BYO Application Gateway resources. - */ - albNamespace?: string | null | undefined; - /** - * Public or internal frontend exposure. - */ - frontend: string; - provider: - SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum4; - }; +export type SyncReconcileResponsePushRoleArn = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponsePushRoleArnSecretRef; +}; -export const SyncReconcileResponseProviderGkeGatewayEnum4 = { - GkeGateway: "gkeGateway", -} as const; -export type SyncReconcileResponseProviderGkeGatewayEnum4 = ClosedEnum< - typeof SyncReconcileResponseProviderGkeGatewayEnum4 ->; +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseRepositoryPrefixSecretRef1 = { + key: string; + name: string; +}; -export type SyncReconcileResponseProviderGkeGateway4 = { - provider: SyncReconcileResponseProviderGkeGatewayEnum4; +export type SyncReconcileResponseRepositoryPrefix1 = { /** - * Optional static address name for the Gateway frontend. + * Reference to a Kubernetes Secret */ - staticAddressName?: string | null | undefined; + secretRef: SyncReconcileResponseRepositoryPrefixSecretRef1; }; -export const SyncReconcileResponseProviderAwsAlbEnum4 = { - AwsAlb: "awsAlb", +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseRepositoryPrefixUnion = + | SyncReconcileResponseRepositoryPrefix1 + | any + | string; + +export const TargetTypeArtifactRegistry1 = { + ArtifactRegistry: "artifact_registry", } as const; -export type SyncReconcileResponseProviderAwsAlbEnum4 = ClosedEnum< - typeof SyncReconcileResponseProviderAwsAlbEnum4 +export type TargetTypeArtifactRegistry1 = ClosedEnum< + typeof TargetTypeArtifactRegistry1 >; -export type SyncReconcileResponseProviderAwsAlb4 = { - /** - * Optional ALB IP address type, such as `dualstack`. - */ - ipAddressType?: string | null | undefined; - provider: SyncReconcileResponseProviderAwsAlbEnum4; +/** + * AWS ECR (Elastic Container Registry) binding configuration + */ +export type SyncReconcileResponseExternalBindingsEcr = { + pullRoleArn?: any | null | undefined; + pushRoleArn?: any | null | undefined; /** - * Internet-facing or internal ALB scheme. + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ - scheme: string; + repositoryPrefix?: + | SyncReconcileResponseRepositoryPrefix1 + | any + | string + | null + | undefined; + service: "ecr"; + type: TargetTypeArtifactRegistry1; +}; + +/** + * Service-type based artifact registry binding that supports multiple registry providers + */ +export type SyncReconcileResponseExternalBindingsUnion4 = + | SyncReconcileResponseExternalBindingsEcr + | SyncReconcileResponseExternalBindingsAcr + | SyncReconcileResponseExternalBindingsGar + | SyncReconcileResponseExternalBindingsLocal; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseDataDirSecretRef1 = { + key: string; + name: string; +}; + +export type SyncReconcileResponseDataDir1 = { /** - * Explicit subnet IDs when the profile cannot rely on controller discovery. + * Reference to a Kubernetes Secret */ - subnetIds?: Array | undefined; + secretRef: SyncReconcileResponseDataDirSecretRef1; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseDataDirUnion1 = + | SyncReconcileResponseDataDir1 + | any + | string; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseKeyPrefixSecretRef2 = { + key: string; + name: string; +}; + +export type SyncReconcileResponseKeyPrefix2 = { /** - * ALB target type, usually `ip`. + * Reference to a Kubernetes Secret */ - targetType: string; + secretRef: SyncReconcileResponseKeyPrefixSecretRef2; }; -export type SyncReconcileResponseProviderUnion4 = - | SyncReconcileResponseProviderAwsAlb4 - | SyncReconcileResponseProviderAzureApplicationGatewayForContainers4 - | SyncReconcileResponseProviderGkeGateway4 - | any; +export const TargetTypeKv5 = { + Kv: "kv", +} as const; +export type TargetTypeKv5 = ClosedEnum; /** - * Shared Gateway API route profile values. + * Local development KV binding configuration */ -export type SyncReconcileResponseRouteGateway2 = { +export type SyncReconcileResponseExternalBindingsLocalKv = { /** - * Annotations applied to route objects. + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ - annotations?: { [k: string]: string } | undefined; + dataDir?: SyncReconcileResponseDataDir1 | any | string | null | undefined; + keyPrefix?: any | null | undefined; + service: "local-kv"; + type: TargetTypeKv5; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseConnectionUrlSecretRef = { + key: string; + name: string; +}; + +export type SyncReconcileResponseConnectionUrl = { /** - * Route controller identifier, for example a cloud Gateway controller. - */ - controller?: string | null | undefined; - /** - * GatewayClass selected for generated Gateways. - */ - gatewayClassName: string; - /** - * Labels applied to route objects. - */ - labels?: { [k: string]: string } | undefined; - /** - * Listener port, usually 443. + * Reference to a Kubernetes Secret */ - listenerPort: number; - provider?: - | SyncReconcileResponseProviderAwsAlb4 - | SyncReconcileResponseProviderAzureApplicationGatewayForContainers4 - | SyncReconcileResponseProviderGkeGateway4 - | any - | null - | undefined; - routeApi: "gateway"; + secretRef: SyncReconcileResponseConnectionUrlSecretRef; }; -export const SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum3 = - { - AzureApplicationGatewayForContainers: - "azureApplicationGatewayForContainers", - } as const; -export type SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum3 = - ClosedEnum< - typeof SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum3 - >; - -export type SyncReconcileResponseProviderAzureApplicationGatewayForContainers3 = - { - /** - * Optional ALB name when using BYO Application Gateway resources. - */ - albName?: string | null | undefined; - /** - * Optional ALB namespace when using BYO Application Gateway resources. - */ - albNamespace?: string | null | undefined; - /** - * Public or internal frontend exposure. - */ - frontend: string; - provider: - SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum3; - }; +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseConnectionUrlUnion = + | SyncReconcileResponseConnectionUrl + | any + | string; -export const SyncReconcileResponseProviderGkeGatewayEnum3 = { - GkeGateway: "gkeGateway", -} as const; -export type SyncReconcileResponseProviderGkeGatewayEnum3 = ClosedEnum< - typeof SyncReconcileResponseProviderGkeGatewayEnum3 ->; +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseDatabaseSecretRef1 = { + key: string; + name: string; +}; -export type SyncReconcileResponseProviderGkeGateway3 = { - provider: SyncReconcileResponseProviderGkeGatewayEnum3; +export type SyncReconcileResponseDatabase1 = { /** - * Optional static address name for the Gateway frontend. + * Reference to a Kubernetes Secret */ - staticAddressName?: string | null | undefined; + secretRef: SyncReconcileResponseDatabaseSecretRef1; }; -export const SyncReconcileResponseProviderAwsAlbEnum3 = { - AwsAlb: "awsAlb", -} as const; -export type SyncReconcileResponseProviderAwsAlbEnum3 = ClosedEnum< - typeof SyncReconcileResponseProviderAwsAlbEnum3 ->; +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseKeyPrefixSecretRef1 = { + key: string; + name: string; +}; -export type SyncReconcileResponseProviderAwsAlb3 = { - /** - * Optional ALB IP address type, such as `dualstack`. - */ - ipAddressType?: string | null | undefined; - provider: SyncReconcileResponseProviderAwsAlbEnum3; - /** - * Internet-facing or internal ALB scheme. - */ - scheme: string; - /** - * Explicit subnet IDs when the profile cannot rely on controller discovery. - */ - subnetIds?: Array | undefined; +export type SyncReconcileResponseKeyPrefix1 = { /** - * ALB target type, usually `ip`. + * Reference to a Kubernetes Secret */ - targetType: string; + secretRef: SyncReconcileResponseKeyPrefixSecretRef1; }; -export type SyncReconcileResponseProviderUnion3 = - | SyncReconcileResponseProviderAwsAlb3 - | SyncReconcileResponseProviderAzureApplicationGatewayForContainers3 - | SyncReconcileResponseProviderGkeGateway3 - | any; +export const TargetTypeKv4 = { + Kv: "kv", +} as const; +export type TargetTypeKv4 = ClosedEnum; /** - * Shared Ingress route profile values. + * Redis KV binding configuration */ -export type SyncReconcileResponseRouteIngress2 = { - /** - * Annotations applied to route objects. - */ - annotations?: { [k: string]: string } | undefined; - /** - * Route controller identifier, for example `eks.amazonaws.com/alb`. - */ - controller?: string | null | undefined; - /** - * `spec.ingressClassName` for generated Ingresses. - */ - ingressClassName: string; +export type SyncReconcileResponseExternalBindingsRedis = { /** - * Labels applied to route objects. + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ - labels?: { [k: string]: string } | undefined; - provider?: - | SyncReconcileResponseProviderAwsAlb3 - | SyncReconcileResponseProviderAzureApplicationGatewayForContainers3 - | SyncReconcileResponseProviderGkeGateway3 + connectionUrl?: + | SyncReconcileResponseConnectionUrl | any + | string | null | undefined; - routeApi: "ingress"; + database?: any | null | undefined; + keyPrefix?: any | null | undefined; + service: "redis"; + type: TargetTypeKv4; }; /** - * Kubernetes route API selected for public endpoints. + * Reference to a Kubernetes Secret */ -export type SyncReconcileResponseRouteUnion2 = - | SyncReconcileResponseRouteIngress2 - | SyncReconcileResponseRouteGateway2; +export type SyncReconcileResponseAccountNameSecretRef2 = { + key: string; + name: string; +}; -export type SyncReconcileResponseExposureCustom = { - /** - * Certificate publication or reference mode for Kubernetes public endpoints. - */ - certificate: - | SyncReconcileResponseCertificateTLSSecretRef2 - | SyncReconcileResponseCertificateManagedAcmImport2 - | SyncReconcileResponseCertificateAwsAcmArn2 - | SyncReconcileResponseCertificateManagedTLSSecret2 - | SyncReconcileResponseCertificateNone2; - /** - * Hostname routed by the Kubernetes public endpoint. - */ - domain: string; - mode: SyncReconcileResponseModeCustom; +export type SyncReconcileResponseAccountName2 = { /** - * Kubernetes route API selected for public endpoints. + * Reference to a Kubernetes Secret */ - route: - | SyncReconcileResponseRouteIngress2 - | SyncReconcileResponseRouteGateway2; + secretRef: SyncReconcileResponseAccountNameSecretRef2; }; -export type SyncReconcileResponseCertificateNone1 = { - mode: "none"; +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseAccountNameUnion2 = + | SyncReconcileResponseAccountName2 + | any + | string; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseResourceGroupNameSecretRef1 = { + key: string; + name: string; }; -export type SyncReconcileResponseCertificateManagedTLSSecret1 = { - mode: "managedTlsSecret"; +export type SyncReconcileResponseResourceGroupName1 = { /** - * Secret name template. Runtime may substitute resource/deployment tokens. + * Reference to a Kubernetes Secret */ - secretNameTemplate: string; + secretRef: SyncReconcileResponseResourceGroupNameSecretRef1; }; -export type SyncReconcileResponseCertificateAwsAcmArn1 = { - /** - * Existing ACM certificate ARN. - */ - certificateArn: string; - mode: "awsAcmArn"; +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseResourceGroupNameUnion1 = + | SyncReconcileResponseResourceGroupName1 + | any + | string; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseTableNameSecretRef2 = { + key: string; + name: string; }; -export type SyncReconcileResponseCertificateManagedAcmImport1 = { - mode: "managedAcmImport"; - /** - * ACM region. Defaults to the deployment region when omitted. - */ - region?: string | null | undefined; +export type SyncReconcileResponseTableName2 = { /** - * Tags applied to runtime-imported ACM certificates. + * Reference to a Kubernetes Secret */ - tags?: { [k: string]: string } | undefined; + secretRef: SyncReconcileResponseTableNameSecretRef2; }; /** - * Namespace-scoped Kubernetes TLS Secret reference. + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ -export type SyncReconcileResponseCertificateTLSSecretRef1 = { - /** - * Secret namespace. Defaults to the release namespace when omitted. - */ - namespace?: string | null | undefined; +export type SyncReconcileResponseTableNameUnion2 = + | SyncReconcileResponseTableName2 + | any + | string; + +export const TargetTypeKv3 = { + Kv: "kv", +} as const; +export type TargetTypeKv3 = ClosedEnum; + +/** + * Azure Table Storage KV binding configuration + */ +export type SyncReconcileResponseExternalBindingsTablestorage = { /** - * Secret name. + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ - secretName: string; - mode: "tlsSecretRef"; + accountName?: + | SyncReconcileResponseAccountName2 + | any + | string + | null + | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + resourceGroupName?: + | SyncReconcileResponseResourceGroupName1 + | any + | string + | null + | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + tableName?: SyncReconcileResponseTableName2 | any | string | null | undefined; + service: "tablestorage"; + type: TargetTypeKv3; }; /** - * Certificate publication or reference mode for Kubernetes public endpoints. + * Reference to a Kubernetes Secret */ -export type SyncReconcileResponseCertificateUnion1 = - | SyncReconcileResponseCertificateTLSSecretRef1 - | SyncReconcileResponseCertificateManagedAcmImport1 - | SyncReconcileResponseCertificateAwsAcmArn1 - | SyncReconcileResponseCertificateManagedTLSSecret1 - | SyncReconcileResponseCertificateNone1; - -export const SyncReconcileResponseModeGenerated = { - Generated: "generated", -} as const; -export type SyncReconcileResponseModeGenerated = ClosedEnum< - typeof SyncReconcileResponseModeGenerated ->; +export type SyncReconcileResponseCollectionNameSecretRef = { + key: string; + name: string; +}; -export const SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum2 = - { - AzureApplicationGatewayForContainers: - "azureApplicationGatewayForContainers", - } as const; -export type SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum2 = - ClosedEnum< - typeof SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum2 - >; +export type SyncReconcileResponseCollectionName = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseCollectionNameSecretRef; +}; -export type SyncReconcileResponseProviderAzureApplicationGatewayForContainers2 = - { - /** - * Optional ALB name when using BYO Application Gateway resources. - */ - albName?: string | null | undefined; - /** - * Optional ALB namespace when using BYO Application Gateway resources. - */ - albNamespace?: string | null | undefined; - /** - * Public or internal frontend exposure. - */ - frontend: string; - provider: - SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum2; - }; +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseCollectionNameUnion = + | SyncReconcileResponseCollectionName + | any + | string; -export const SyncReconcileResponseProviderGkeGatewayEnum2 = { - GkeGateway: "gkeGateway", -} as const; -export type SyncReconcileResponseProviderGkeGatewayEnum2 = ClosedEnum< - typeof SyncReconcileResponseProviderGkeGatewayEnum2 ->; +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseDatabaseIdSecretRef = { + key: string; + name: string; +}; -export type SyncReconcileResponseProviderGkeGateway2 = { - provider: SyncReconcileResponseProviderGkeGatewayEnum2; +export type SyncReconcileResponseDatabaseId = { /** - * Optional static address name for the Gateway frontend. + * Reference to a Kubernetes Secret */ - staticAddressName?: string | null | undefined; + secretRef: SyncReconcileResponseDatabaseIdSecretRef; }; -export const SyncReconcileResponseProviderAwsAlbEnum2 = { - AwsAlb: "awsAlb", -} as const; -export type SyncReconcileResponseProviderAwsAlbEnum2 = ClosedEnum< - typeof SyncReconcileResponseProviderAwsAlbEnum2 ->; +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseDatabaseIdUnion = + | SyncReconcileResponseDatabaseId + | any + | string; -export type SyncReconcileResponseProviderAwsAlb2 = { - /** - * Optional ALB IP address type, such as `dualstack`. - */ - ipAddressType?: string | null | undefined; - provider: SyncReconcileResponseProviderAwsAlbEnum2; - /** - * Internet-facing or internal ALB scheme. - */ - scheme: string; - /** - * Explicit subnet IDs when the profile cannot rely on controller discovery. - */ - subnetIds?: Array | undefined; +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseProjectIdSecretRef = { + key: string; + name: string; +}; + +export type SyncReconcileResponseProjectId = { /** - * ALB target type, usually `ip`. + * Reference to a Kubernetes Secret */ - targetType: string; + secretRef: SyncReconcileResponseProjectIdSecretRef; }; -export type SyncReconcileResponseProviderUnion2 = - | SyncReconcileResponseProviderAwsAlb2 - | SyncReconcileResponseProviderAzureApplicationGatewayForContainers2 - | SyncReconcileResponseProviderGkeGateway2 - | any; +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseProjectIdUnion = + | SyncReconcileResponseProjectId + | any + | string; + +export const TargetTypeKv2 = { + Kv: "kv", +} as const; +export type TargetTypeKv2 = ClosedEnum; /** - * Shared Gateway API route profile values. + * GCP Firestore KV binding configuration */ -export type SyncReconcileResponseRouteGateway1 = { - /** - * Annotations applied to route objects. - */ - annotations?: { [k: string]: string } | undefined; - /** - * Route controller identifier, for example a cloud Gateway controller. - */ - controller?: string | null | undefined; - /** - * GatewayClass selected for generated Gateways. - */ - gatewayClassName: string; +export type SyncReconcileResponseExternalBindingsFirestore = { /** - * Labels applied to route objects. + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ - labels?: { [k: string]: string } | undefined; + collectionName?: + | SyncReconcileResponseCollectionName + | any + | string + | null + | undefined; /** - * Listener port, usually 443. + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ - listenerPort: number; - provider?: - | SyncReconcileResponseProviderAwsAlb2 - | SyncReconcileResponseProviderAzureApplicationGatewayForContainers2 - | SyncReconcileResponseProviderGkeGateway2 + databaseId?: + | SyncReconcileResponseDatabaseId | any + | string | null | undefined; - routeApi: "gateway"; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + projectId?: SyncReconcileResponseProjectId | any | string | null | undefined; + service: "firestore"; + type: TargetTypeKv2; }; -export const SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum1 = - { - AzureApplicationGatewayForContainers: - "azureApplicationGatewayForContainers", - } as const; -export type SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum1 = - ClosedEnum< - typeof SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum1 - >; - -export type SyncReconcileResponseProviderAzureApplicationGatewayForContainers1 = - { - /** - * Optional ALB name when using BYO Application Gateway resources. - */ - albName?: string | null | undefined; - /** - * Optional ALB namespace when using BYO Application Gateway resources. - */ - albNamespace?: string | null | undefined; - /** - * Public or internal frontend exposure. - */ - frontend: string; - provider: - SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum1; - }; - -export const SyncReconcileResponseProviderGkeGatewayEnum1 = { - GkeGateway: "gkeGateway", -} as const; -export type SyncReconcileResponseProviderGkeGatewayEnum1 = ClosedEnum< - typeof SyncReconcileResponseProviderGkeGatewayEnum1 ->; +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseEndpointUrlSecretRef = { + key: string; + name: string; +}; -export type SyncReconcileResponseProviderGkeGateway1 = { - provider: SyncReconcileResponseProviderGkeGatewayEnum1; +export type SyncReconcileResponseEndpointUrl = { /** - * Optional static address name for the Gateway frontend. + * Reference to a Kubernetes Secret */ - staticAddressName?: string | null | undefined; + secretRef: SyncReconcileResponseEndpointUrlSecretRef; }; -export const SyncReconcileResponseProviderAwsAlbEnum1 = { - AwsAlb: "awsAlb", -} as const; -export type SyncReconcileResponseProviderAwsAlbEnum1 = ClosedEnum< - typeof SyncReconcileResponseProviderAwsAlbEnum1 ->; +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseRegionSecretRef = { + key: string; + name: string; +}; -export type SyncReconcileResponseProviderAwsAlb1 = { - /** - * Optional ALB IP address type, such as `dualstack`. - */ - ipAddressType?: string | null | undefined; - provider: SyncReconcileResponseProviderAwsAlbEnum1; - /** - * Internet-facing or internal ALB scheme. - */ - scheme: string; - /** - * Explicit subnet IDs when the profile cannot rely on controller discovery. - */ - subnetIds?: Array | undefined; +export type SyncReconcileResponseRegion = { /** - * ALB target type, usually `ip`. + * Reference to a Kubernetes Secret */ - targetType: string; + secretRef: SyncReconcileResponseRegionSecretRef; }; -export type SyncReconcileResponseProviderUnion1 = - | SyncReconcileResponseProviderAwsAlb1 - | SyncReconcileResponseProviderAzureApplicationGatewayForContainers1 - | SyncReconcileResponseProviderGkeGateway1 - | any; +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseRegionUnion = + | SyncReconcileResponseRegion + | any + | string; /** - * Shared Ingress route profile values. + * Reference to a Kubernetes Secret */ -export type SyncReconcileResponseRouteIngress1 = { - /** - * Annotations applied to route objects. - */ - annotations?: { [k: string]: string } | undefined; - /** - * Route controller identifier, for example `eks.amazonaws.com/alb`. - */ - controller?: string | null | undefined; - /** - * `spec.ingressClassName` for generated Ingresses. - */ - ingressClassName: string; +export type SyncReconcileResponseTableNameSecretRef1 = { + key: string; + name: string; +}; + +export type SyncReconcileResponseTableName1 = { /** - * Labels applied to route objects. + * Reference to a Kubernetes Secret */ - labels?: { [k: string]: string } | undefined; - provider?: - | SyncReconcileResponseProviderAwsAlb1 - | SyncReconcileResponseProviderAzureApplicationGatewayForContainers1 - | SyncReconcileResponseProviderGkeGateway1 - | any - | null - | undefined; - routeApi: "ingress"; + secretRef: SyncReconcileResponseTableNameSecretRef1; }; /** - * Kubernetes route API selected for public endpoints. + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ -export type SyncReconcileResponseRouteUnion1 = - | SyncReconcileResponseRouteIngress1 - | SyncReconcileResponseRouteGateway1; +export type SyncReconcileResponseTableNameUnion1 = + | SyncReconcileResponseTableName1 + | any + | string; -export type SyncReconcileResponseExposureGenerated = { +export const TargetTypeKv1 = { + Kv: "kv", +} as const; +export type TargetTypeKv1 = ClosedEnum; + +/** + * AWS DynamoDB KV binding configuration + */ +export type SyncReconcileResponseExternalBindingsDynamodb = { + endpointUrl?: any | null | undefined; /** - * Certificate publication or reference mode for Kubernetes public endpoints. + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ - certificate: - | SyncReconcileResponseCertificateTLSSecretRef1 - | SyncReconcileResponseCertificateManagedAcmImport1 - | SyncReconcileResponseCertificateAwsAcmArn1 - | SyncReconcileResponseCertificateManagedTLSSecret1 - | SyncReconcileResponseCertificateNone1; - mode: SyncReconcileResponseModeGenerated; + region?: SyncReconcileResponseRegion | any | string | null | undefined; /** - * Kubernetes route API selected for public endpoints. + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ - route: - | SyncReconcileResponseRouteIngress1 - | SyncReconcileResponseRouteGateway1; + tableName?: SyncReconcileResponseTableName1 | any | string | null | undefined; + service: "dynamodb"; + type: TargetTypeKv1; }; -export const SyncReconcileResponseModeDisabled = { - Disabled: "disabled", -} as const; -export type SyncReconcileResponseModeDisabled = ClosedEnum< - typeof SyncReconcileResponseModeDisabled ->; +/** + * Represents a KV binding for key-value storage across platforms + */ +export type SyncReconcileResponseExternalBindingsUnion3 = + | SyncReconcileResponseExternalBindingsDynamodb + | SyncReconcileResponseExternalBindingsFirestore + | SyncReconcileResponseExternalBindingsTablestorage + | SyncReconcileResponseExternalBindingsRedis + | SyncReconcileResponseExternalBindingsLocalKv; -export type SyncReconcileResponseExposureDisabled = { - mode: SyncReconcileResponseModeDisabled; +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseQueuePathSecretRef = { + key: string; + name: string; }; -export type SyncReconcileResponseExposureUnion = - | SyncReconcileResponseExposureCustom - | SyncReconcileResponseExposureGenerated - | SyncReconcileResponseExposureDisabled - | any; +export type SyncReconcileResponseQueuePath = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseQueuePathSecretRef; +}; /** - * Kubernetes runtime substrate configuration. + * Represents a value that can be either a concrete value, a template expression, * * @remarks - * - * This controls how setup chooses the cluster backing `Platform::Kubernetes` - * deployments. When omitted, cloud-backed Kubernetes deployments default to a - * managed cluster and generic/on-prem Kubernetes defaults to an external - * cluster. + * or a reference to a Kubernetes Secret */ -export type SyncReconcileResponseKubernetes = { - cluster?: SyncReconcileResponseCluster | any | null | undefined; - exposure?: - | SyncReconcileResponseExposureCustom - | SyncReconcileResponseExposureGenerated - | SyncReconcileResponseExposureDisabled - | any - | null - | undefined; -}; - -export type SyncReconcileResponseKubernetesUnion = - | SyncReconcileResponseKubernetes - | any; +export type SyncReconcileResponseQueuePathUnion = + | SyncReconcileResponseQueuePath + | any + | string; -export const TargetTypeByoVnetAzure = { - ByoVnetAzure: "byo-vnet-azure", +export const TargetTypeQueue4 = { + Queue: "queue", } as const; -export type TargetTypeByoVnetAzure = ClosedEnum; +export type TargetTypeQueue4 = ClosedEnum; -export type SyncReconcileResponseNetworkByoVnetAzure = { - /** - * Name of the dedicated classic Application Gateway subnet within the VNet. - */ - applicationGatewaySubnetName?: string | null | undefined; +/** + * Local queue parameters + */ +export type SyncReconcileResponseExternalBindingsLocalQueue = { /** - * Name of the dedicated subnet that hosts Private Endpoints (e.g. for a + * Represents a value that can be either a concrete value, a template expression, * * @remarks - * Postgres Flexible Server). A Private Endpoint must not share the private - * subnet, which is already claimed by the Container Apps environment's - * `infrastructure_subnet_id`. Required only when the stack contains a - * Postgres resource; otherwise unused. - */ - privateEndpointSubnetName?: string | null | undefined; - /** - * Name of the private subnet within the VNet - */ - privateSubnetName: string; - /** - * Name of the public subnet within the VNet + * or a reference to a Kubernetes Secret */ - publicSubnetName: string; - type: TargetTypeByoVnetAzure; - /** - * The full resource ID of the existing VNet - */ - vnetResourceId: string; + queuePath?: SyncReconcileResponseQueuePath | any | string | null | undefined; + service: "local-queue"; + type: TargetTypeQueue4; }; -export const TargetTypeByoVpcGcp = { - ByoVpcGcp: "byo-vpc-gcp", -} as const; -export type TargetTypeByoVpcGcp = ClosedEnum; +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseNamespaceSecretRef1 = { + key: string; + name: string; +}; -export type SyncReconcileResponseNetworkByoVpcGcp = { - /** - * The name of the existing VPC network - */ - networkName: string; - /** - * The region of the subnet - */ - region: string; +export type SyncReconcileResponseNamespace1 = { /** - * The name of the subnet to use + * Reference to a Kubernetes Secret */ - subnetName: string; - type: TargetTypeByoVpcGcp; + secretRef: SyncReconcileResponseNamespaceSecretRef1; }; -export const TargetTypeByoVpcAws = { - ByoVpcAws: "byo-vpc-aws", -} as const; -export type TargetTypeByoVpcAws = ClosedEnum; +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseNamespaceUnion1 = + | SyncReconcileResponseNamespace1 + | any + | string; -export type SyncReconcileResponseNetworkByoVpcAws = { - /** - * IDs of private subnets - */ - privateSubnetIds: Array; - /** - * IDs of public subnets (required for public ingress) - */ - publicSubnetIds: Array; - /** - * Optional security group IDs to use - */ - securityGroupIds?: Array | undefined; - type: TargetTypeByoVpcAws; +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseQueueNameSecretRef = { + key: string; + name: string; +}; + +export type SyncReconcileResponseQueueName = { /** - * The ID of the existing VPC + * Reference to a Kubernetes Secret */ - vpcId: string; + secretRef: SyncReconcileResponseQueueNameSecretRef; }; -export const TargetTypeCreate = { - Create: "create", +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseQueueNameUnion = + | SyncReconcileResponseQueueName + | any + | string; + +export const TargetTypeQueue3 = { + Queue: "queue", } as const; -export type TargetTypeCreate = ClosedEnum; +export type TargetTypeQueue3 = ClosedEnum; -export type SyncReconcileResponseNetworkCreate = { +/** + * Azure Service Bus parameters + */ +export type SyncReconcileResponseExternalBindingsServicebus = { /** - * Number of availability zones (default: 2). + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ - availabilityZones?: number | undefined; + namespace?: SyncReconcileResponseNamespace1 | any | string | null | undefined; /** - * VPC/VNet CIDR block. If not specified, auto-generated from stack ID + * Represents a value that can be either a concrete value, a template expression, * * @remarks - * to reduce conflicts (e.g., "10.{hash}.0.0/16"). + * or a reference to a Kubernetes Secret */ - cidr?: string | null | undefined; - type: TargetTypeCreate; + queueName?: SyncReconcileResponseQueueName | any | string | null | undefined; + service: "servicebus"; + type: TargetTypeQueue3; }; -export const TargetTypeUseDefault = { - UseDefault: "use-default", -} as const; -export type TargetTypeUseDefault = ClosedEnum; - -export type SyncReconcileResponseNetworkUseDefault = { - type: TargetTypeUseDefault; +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseSubscriptionSecretRef = { + key: string; + name: string; }; -export type SyncReconcileResponseNetworkUnion = - | SyncReconcileResponseNetworkByoVpcAws - | SyncReconcileResponseNetworkByoVpcGcp - | SyncReconcileResponseNetworkByoVnetAzure - | SyncReconcileResponseNetworkUseDefault - | SyncReconcileResponseNetworkCreate - | any; +export type SyncReconcileResponseSubscription = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseSubscriptionSecretRef; +}; /** - * How telemetry (logs, metrics, traces) is handled. + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ -export const SyncReconcileResponseTelemetry = { - Off: "off", - Auto: "auto", - ApprovalRequired: "approval-required", -} as const; +export type SyncReconcileResponseSubscriptionUnion = + | SyncReconcileResponseSubscription + | any + | string; + /** - * How telemetry (logs, metrics, traces) is handled. + * Reference to a Kubernetes Secret */ -export type SyncReconcileResponseTelemetry = ClosedEnum< - typeof SyncReconcileResponseTelemetry ->; +export type SyncReconcileResponseTopicSecretRef = { + key: string; + name: string; +}; + +export type SyncReconcileResponseTopic = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseTopicSecretRef; +}; /** - * How updates are delivered to the deployment. + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ -export const SyncReconcileResponseUpdates = { - Auto: "auto", - ApprovalRequired: "approval-required", +export type SyncReconcileResponseTopicUnion = + | SyncReconcileResponseTopic + | any + | string; + +export const TargetTypeQueue2 = { + Queue: "queue", } as const; -/** - * How updates are delivered to the deployment. - */ -export type SyncReconcileResponseUpdates = ClosedEnum< - typeof SyncReconcileResponseUpdates ->; +export type TargetTypeQueue2 = ClosedEnum; /** - * User-customizable deployment settings specified at deploy time. - * - * @remarks - * - * These settings are provided by the customer via CloudFormation parameters, - * Terraform attributes, CLI flags, or Helm values. They customize how the - * deployment runs and what capabilities are enabled. - * - * **Key distinction**: StackSettings is user-customizable, while ManagementConfig - * is platform-derived (from the Manager's ServiceAccount). + * GCP Pub/Sub parameters */ -export type SyncReconcileResponseStackSettings = { - compute?: SyncReconcileResponseCompute | any | null | undefined; - /** - * Deployment model: how updates are delivered to the remote environment. - */ - deploymentModel?: SyncReconcileResponseDeploymentModel | undefined; - domains?: SyncReconcileResponseDomains | any | null | undefined; +export type SyncReconcileResponseExternalBindingsPubsub = { /** - * External bindings for pre-existing infrastructure. + * Represents a value that can be either a concrete value, a template expression, * * @remarks - * Allows using existing resources (MinIO, Redis, shared Container Apps - * Environment, etc.) instead of having Alien provision them. - * Required for Kubernetes platform, optional for cloud platforms. - */ - externalBindings?: - | SyncReconcileResponseStackSettingsExternalBindings - | null - | undefined; - /** - * How heartbeat health checks are handled. + * or a reference to a Kubernetes Secret */ - heartbeats?: SyncReconcileResponseHeartbeats | undefined; - kubernetes?: SyncReconcileResponseKubernetes | any | null | undefined; - network?: - | SyncReconcileResponseNetworkByoVpcAws - | SyncReconcileResponseNetworkByoVpcGcp - | SyncReconcileResponseNetworkByoVnetAzure - | SyncReconcileResponseNetworkUseDefault - | SyncReconcileResponseNetworkCreate + subscription?: + | SyncReconcileResponseSubscription | any + | string | null | undefined; /** - * How telemetry (logs, metrics, traces) is handled. - */ - telemetry?: SyncReconcileResponseTelemetry | undefined; - /** - * How updates are delivered to the deployment. + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ - updates?: SyncReconcileResponseUpdates | undefined; + topic?: SyncReconcileResponseTopic | any | string | null | undefined; + service: "pubsub"; + type: TargetTypeQueue2; }; /** - * Deployment configuration - * - * @remarks - * - * Configuration for how to perform the deployment. - * Note: Credentials (ClientConfig) are passed separately to step() function. + * Reference to a Kubernetes Secret */ -export type TargetConfig = { - /** - * Allow frozen resource changes during updates - * - * @remarks - * When true, skips the frozen resources compatibility check. - * This requires running with elevated cloud credentials. - */ - allowFrozenChanges?: boolean | undefined; - basePlatform?: SyncReconcileResponseBasePlatformEnum | any | null | undefined; - computeBackend?: - | SyncReconcileResponseComputeBackendHorizon - | any - | null - | undefined; +export type SyncReconcileResponseQueueUrlSecretRef = { + key: string; + name: string; +}; + +export type SyncReconcileResponseQueueUrl = { /** - * Human-readable deployment name for cloud console metadata. - * - * @remarks - * - * This is separate from the physical resource prefix in StackState. It is - * used only for display text such as IAM role descriptions, service - * account descriptions, and custom role titles. + * Reference to a Kubernetes Secret */ - deploymentName?: string | null | undefined; + secretRef: SyncReconcileResponseQueueUrlSecretRef; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseQueueUrlUnion = + | SyncReconcileResponseQueueUrl + | any + | string; + +export const TargetTypeQueue1 = { + Queue: "queue", +} as const; +export type TargetTypeQueue1 = ClosedEnum; + +/** + * AWS SQS queue parameters + */ +export type SyncReconcileResponseExternalBindingsSqs = { /** - * Deployment token for pull authentication with the manager's registry. + * Represents a value that can be either a concrete value, a template expression, * * @remarks - * - * Used by controllers to configure registry credentials so cloud platforms - * and K8s can pull images from the manager's `/v2/` endpoint. - */ - deploymentToken?: string | null | undefined; - domainMetadata?: SyncReconcileResponseDomainMetadata | any | null | undefined; - /** - * Snapshot of environment variables at a point in time + * or a reference to a Kubernetes Secret */ - environmentVariables: SyncReconcileResponseEnvironmentVariables; + queueUrl?: SyncReconcileResponseQueueUrl | any | string | null | undefined; + service: "sqs"; + type: TargetTypeQueue1; +}; + +/** + * Binding parameters for Queue at runtime or in templates. + */ +export type SyncReconcileResponseExternalBindingsUnion2 = + | SyncReconcileResponseExternalBindingsSqs + | SyncReconcileResponseExternalBindingsPubsub + | SyncReconcileResponseExternalBindingsServicebus + | SyncReconcileResponseExternalBindingsLocalQueue; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseStoragePathSecretRef = { + key: string; + name: string; +}; + +export type SyncReconcileResponseStoragePath = { /** - * Map from resource ID to external binding. - * - * @remarks - * - * Validated at runtime: binding type must match resource type. + * Reference to a Kubernetes Secret */ - externalBindings?: { - [k: string]: - | SyncReconcileResponseExternalBindingsContainerAppsEnvironment - | SyncReconcileResponseExternalBindingsS3 - | SyncReconcileResponseExternalBindingsBlob - | SyncReconcileResponseExternalBindingsGcs - | SyncReconcileResponseExternalBindingsLocalStorage - | SyncReconcileResponseExternalBindingsSqs - | SyncReconcileResponseExternalBindingsPubsub - | SyncReconcileResponseExternalBindingsServicebus - | SyncReconcileResponseExternalBindingsLocalQueue - | SyncReconcileResponseExternalBindingsDynamodb - | SyncReconcileResponseExternalBindingsFirestore - | SyncReconcileResponseExternalBindingsTablestorage - | SyncReconcileResponseExternalBindingsRedis - | SyncReconcileResponseExternalBindingsLocalKv - | SyncReconcileResponseExternalBindingsEcr - | SyncReconcileResponseExternalBindingsAcr - | SyncReconcileResponseExternalBindingsGar - | SyncReconcileResponseExternalBindingsLocal - | SyncReconcileResponseExternalBindingsParameterStore - | SyncReconcileResponseExternalBindingsSecretManager - | SyncReconcileResponseExternalBindingsKeyVault - | SyncReconcileResponseExternalBindingsKubernetesSecret - | SyncReconcileResponseExternalBindingsLocalVault - | SyncReconcileResponseExternalBindingsAurora - | SyncReconcileResponseExternalBindingsCloudSQL - | SyncReconcileResponseExternalBindingsFlexibleServer - | SyncReconcileResponseExternalBindingsExternal - | SyncReconcileResponseExternalBindingsLocalPostgres; - } | undefined; + secretRef: SyncReconcileResponseStoragePathSecretRef; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseStoragePathUnion = + | SyncReconcileResponseStoragePath + | any + | string; + +export const TargetTypeStorage4 = { + Storage: "storage", +} as const; +export type TargetTypeStorage4 = ClosedEnum; + +/** + * Local filesystem storage binding configuration + */ +export type SyncReconcileResponseExternalBindingsLocalStorage = { /** - * DNS-style label domain used for Kubernetes resource ownership labels. + * Represents a value that can be either a concrete value, a template expression, * * @remarks - * - * Defaults to `alien.dev` when absent. Whitelabeled Operator builds set this - * so generated workloads and optional log collectors share the same label - * namespace. + * or a reference to a Kubernetes Secret */ - labelDomain?: string | null | undefined; - managementConfig?: - | SyncReconcileResponseManagementConfigAzure - | SyncReconcileResponseManagementConfigAws - | SyncReconcileResponseManagementConfigGcp - | SyncReconcileResponseManagementConfigKubernetes + storagePath?: + | SyncReconcileResponseStoragePath | any + | string | null | undefined; + service: "local-storage"; + type: TargetTypeStorage4; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseBucketNameSecretRef2 = { + key: string; + name: string; +}; + +export type SyncReconcileResponseBucketName2 = { /** - * Manager base URL (e.g., "https://manager.alien.dev"). - * - * @remarks - * - * The manager IS the container registry — its `/v2/` endpoint serves as - * the OCI Distribution API. Controllers derive the proxy host from this - * to configure pull auth (RegistryCredentials, imagePullSecrets). - * - * When None (e.g., `alien dev`), controllers use image URIs as-is. - */ - managerUrl?: string | null | undefined; - monitoring?: SyncReconcileResponseMonitoring | any | null | undefined; - /** - * Native image registry host+prefix for platforms that require it. - * - * @remarks - * - * Lambda (ECR) and Cloud Run (GAR) require native registry URIs. Other - * runtimes, including Azure Container Apps, pull through the manager's - * registry proxy. - * - * Derived by the manager from the artifact registry binding: - * - ECR: `{account_id}.dkr.ecr.{region}.amazonaws.com/{repository_prefix}` - * - GAR: `{region}-docker.pkg.dev/{project_id}/{repository_name}` + * Reference to a Kubernetes Secret */ - nativeImageHost?: string | null | undefined; + secretRef: SyncReconcileResponseBucketNameSecretRef2; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseBucketNameUnion2 = + | SyncReconcileResponseBucketName2 + | any + | string; + +export const TargetTypeStorage3 = { + Storage: "storage", +} as const; +export type TargetTypeStorage3 = ClosedEnum; + +/** + * Google Cloud Storage binding configuration + */ +export type SyncReconcileResponseExternalBindingsGcs = { /** - * When true the observe pass reports raw resources across every namespace + * Represents a value that can be either a concrete value, a template expression, * * @remarks - * (cluster scope); otherwise it stays within the operator's own namespace. - * The label selector, if any, still filters within whichever scope applies. - * Ignored by cloud observers. + * or a reference to a Kubernetes Secret */ - observeAllNamespaces?: boolean | undefined; + bucketName?: + | SyncReconcileResponseBucketName2 + | any + | string + | null + | undefined; + service: "gcs"; + type: TargetTypeStorage3; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseAccountNameSecretRef1 = { + key: string; + name: string; +}; + +export type SyncReconcileResponseAccountName1 = { /** - * Kubernetes label selector that narrows which raw resources the observe - * - * @remarks - * pass reports (e.g. `app.kubernetes.io/part-of=my-app`). `None` observes - * everything in the namespace. Ignored by cloud observers. + * Reference to a Kubernetes Secret */ - observeLabelSelector?: string | null | undefined; - /** - * Public endpoint URLs for exposed resources (optional override). - * - * @remarks - * - * Use this only when a caller already knows the public URL. Managed public - * endpoint flows should prefer `domain_metadata` plus controller-reported - * load balancer outputs so DNS, certificate renewal, and route readiness - * stay tied to the resource state. - * - * If not set, platforms determine public endpoint URLs from other sources: - * - Managed DNS/TLS flows: `domain_metadata` FQDN or load balancer DNS - * - Local: `http://localhost:{allocated_port}` - * - Custom or disabled exposure: no public endpoint URL unless a controller reports one - * - * Outer key: resource ID. Inner key: endpoint name. Value: public URL. - */ - publicEndpoints?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * User-customizable deployment settings specified at deploy time. - * - * @remarks - * - * These settings are provided by the customer via CloudFormation parameters, - * Terraform attributes, CLI flags, or Helm values. They customize how the - * deployment runs and what capabilities are enabled. - * - * **Key distinction**: StackSettings is user-customizable, while ManagementConfig - * is platform-derived (from the Manager's ServiceAccount). - */ - stackSettings?: SyncReconcileResponseStackSettings | undefined; + secretRef: SyncReconcileResponseAccountNameSecretRef1; }; -export const ReleaseInfoTypeStringList = { - StringList: "stringList", -} as const; -export type ReleaseInfoTypeStringList = ClosedEnum< - typeof ReleaseInfoTypeStringList ->; +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseAccountNameUnion1 = + | SyncReconcileResponseAccountName1 + | any + | string; -export type DefaultReleaseInfoStringList = { - type: ReleaseInfoTypeStringList; - /** - * String list default. - */ - value: Array; +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseContainerNameSecretRef = { + key: string; + name: string; }; -export const ReleaseInfoTypeBoolean = { - Boolean: "boolean", -} as const; -export type ReleaseInfoTypeBoolean = ClosedEnum; - -export type DefaultReleaseInfoBoolean = { - type: ReleaseInfoTypeBoolean; +export type SyncReconcileResponseContainerName = { /** - * Boolean default. + * Reference to a Kubernetes Secret */ - value: boolean; + secretRef: SyncReconcileResponseContainerNameSecretRef; }; -export const ReleaseInfoTypeNumber = { - Number: "number", +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseContainerNameUnion = + | SyncReconcileResponseContainerName + | any + | string; + +export const TargetTypeStorage2 = { + Storage: "storage", } as const; -export type ReleaseInfoTypeNumber = ClosedEnum; +export type TargetTypeStorage2 = ClosedEnum; -export type DefaultReleaseInfoNumber = { - type: ReleaseInfoTypeNumber; +/** + * Azure Blob Storage binding configuration + */ +export type SyncReconcileResponseExternalBindingsBlob = { /** - * Number default. + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ - value: string; + accountName?: + | SyncReconcileResponseAccountName1 + | any + | string + | null + | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + containerName?: + | SyncReconcileResponseContainerName + | any + | string + | null + | undefined; + service: "blob"; + type: TargetTypeStorage2; }; -export const ReleaseInfoTypeString = { - String: "string", -} as const; -export type ReleaseInfoTypeString = ClosedEnum; +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseBucketNameSecretRef1 = { + key: string; + name: string; +}; -export type DefaultReleaseInfoString = { - type: ReleaseInfoTypeString; +export type SyncReconcileResponseBucketName1 = { /** - * String default. + * Reference to a Kubernetes Secret */ - value: string; + secretRef: SyncReconcileResponseBucketNameSecretRef1; }; -export type ReleaseInfoDefaultUnion = - | DefaultReleaseInfoString - | DefaultReleaseInfoNumber - | DefaultReleaseInfoBoolean - | DefaultReleaseInfoStringList - | any; - -/** - * Environment variable handling for a stack input mapping. - */ -export const TypeReleaseInfoEnvEnum = { - Plain: "plain", - Secret: "secret", -} as const; /** - * Environment variable handling for a stack input mapping. + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ -export type TypeReleaseInfoEnvEnum = ClosedEnum; +export type SyncReconcileResponseBucketNameUnion1 = + | SyncReconcileResponseBucketName1 + | any + | string; -export type ReleaseInfoTypeUnion = TypeReleaseInfoEnvEnum | any; +export const TargetTypeStorage1 = { + Storage: "storage", +} as const; +export type TargetTypeStorage1 = ClosedEnum; /** - * How a resolved stack input is injected into runtime environment variables. + * AWS S3 storage binding configuration */ -export type ReleaseInfoEnv = { - /** - * Environment variable name. - */ - name: string; +export type SyncReconcileResponseExternalBindingsS3 = { /** - * Target resource IDs or patterns. None means every env-capable resource. + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret */ - targetResources?: Array | null | undefined; - type?: TypeReleaseInfoEnvEnum | any | null | undefined; + bucketName?: + | SyncReconcileResponseBucketName1 + | any + | string + | null + | undefined; + service: "s3"; + type: TargetTypeStorage1; }; /** - * Primitive stack input kind. - */ -export const ReleaseInfoKind = { - String: "string", - Secret: "secret", - Number: "number", - Integer: "integer", - Boolean: "boolean", - Enum: "enum", - StringList: "stringList", -} as const; -/** - * Primitive stack input kind. + * Service-type based storage binding that supports multiple storage providers */ -export type ReleaseInfoKind = ClosedEnum; +export type SyncReconcileResponseExternalBindingsUnion1 = + | SyncReconcileResponseExternalBindingsS3 + | SyncReconcileResponseExternalBindingsBlob + | SyncReconcileResponseExternalBindingsGcs + | SyncReconcileResponseExternalBindingsLocalStorage; /** - * Represents the target cloud platform. + * Represents a binding to pre-existing infrastructure. + * + * @remarks + * + * The binding type must match the resource type it's applied to. + * Validated at runtime by the executor. */ -export const ReleaseInfoPlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", +export type SyncReconcileResponseExternalBindingsUnion7 = + | SyncReconcileResponseExternalBindingsAi + | SyncReconcileResponseExternalBindingsContainerAppsEnvironment + | SyncReconcileResponseExternalBindingsS3 + | SyncReconcileResponseExternalBindingsBlob + | SyncReconcileResponseExternalBindingsGcs + | SyncReconcileResponseExternalBindingsLocalStorage + | SyncReconcileResponseExternalBindingsSqs + | SyncReconcileResponseExternalBindingsPubsub + | SyncReconcileResponseExternalBindingsServicebus + | SyncReconcileResponseExternalBindingsLocalQueue + | SyncReconcileResponseExternalBindingsDynamodb + | SyncReconcileResponseExternalBindingsFirestore + | SyncReconcileResponseExternalBindingsTablestorage + | SyncReconcileResponseExternalBindingsRedis + | SyncReconcileResponseExternalBindingsLocalKv + | SyncReconcileResponseExternalBindingsEcr + | SyncReconcileResponseExternalBindingsAcr + | SyncReconcileResponseExternalBindingsGar + | SyncReconcileResponseExternalBindingsLocal + | SyncReconcileResponseExternalBindingsParameterStore + | SyncReconcileResponseExternalBindingsSecretManager + | SyncReconcileResponseExternalBindingsKeyVault + | SyncReconcileResponseExternalBindingsKubernetesSecret + | SyncReconcileResponseExternalBindingsLocalVault + | SyncReconcileResponseExternalBindingsAurora + | SyncReconcileResponseExternalBindingsCloudSQL + | SyncReconcileResponseExternalBindingsFlexibleServer + | SyncReconcileResponseExternalBindingsExternal + | SyncReconcileResponseExternalBindingsLocalPostgres; + +export const TargetPlatformKubernetes = { Kubernetes: "kubernetes", - Machines: "machines", - Local: "local", - Test: "test", } as const; -/** - * Represents the target cloud platform. - */ -export type ReleaseInfoPlatform = ClosedEnum; +export type TargetPlatformKubernetes = ClosedEnum< + typeof TargetPlatformKubernetes +>; -/** - * Who can provide a stack input value. - */ -export const ReleaseInfoProvidedBy = { - Developer: "developer", - Deployer: "deployer", +export type SyncReconcileResponseManagementConfigKubernetes = { + platform: TargetPlatformKubernetes; +}; + +export const TargetPlatformAzure = { + Azure: "azure", } as const; -/** - * Who can provide a stack input value. - */ -export type ReleaseInfoProvidedBy = ClosedEnum; +export type TargetPlatformAzure = ClosedEnum; /** - * Portable stack input validation constraints. + * Azure management configuration extracted from stack settings */ -export type ValidationReleaseInfo = { - /** - * Semantic format hint such as url. - */ - format?: string | null | undefined; - /** - * Maximum number. - */ - max?: string | null | undefined; - /** - * Maximum string-list items. - */ - maxItems?: number | null | undefined; - /** - * Maximum string length. - */ - maxLength?: number | null | undefined; - /** - * Minimum number. - */ - min?: string | null | undefined; - /** - * Minimum string-list items. - */ - minItems?: number | null | undefined; +export type SyncReconcileResponseManagementConfigAzure = { /** - * Minimum string length. + * The managing Azure Tenant ID for cross-tenant access */ - minLength?: number | null | undefined; + managingTenantId: string; /** - * Portable whole-value regex pattern. + * OIDC issuer URL trusted by the target-side managed identity. */ - pattern?: string | null | undefined; + oidcIssuer: string; /** - * Allowed string enum values. + * OIDC subject claim trusted by the target-side managed identity. */ - values?: Array | null | undefined; + oidcSubject: string; + platform: TargetPlatformAzure; }; -export type ReleaseInfoValidationUnion = ValidationReleaseInfo | any; +export const TargetPlatformGcp = { + Gcp: "gcp", +} as const; +export type TargetPlatformGcp = ClosedEnum; /** - * Stack input definition serialized into a release stack. + * GCP management configuration extracted from stack settings */ -export type ReleaseInfoInput = { - default?: - | DefaultReleaseInfoString - | DefaultReleaseInfoNumber - | DefaultReleaseInfoBoolean - | DefaultReleaseInfoStringList - | any - | null - | undefined; +export type SyncReconcileResponseManagementConfigGcp = { /** - * Human-facing helper text. + * Service account email for management roles */ - description: string; + serviceAccountEmail: string; + platform: TargetPlatformGcp; +}; + +export const TargetPlatformAws = { + Aws: "aws", +} as const; +export type TargetPlatformAws = ClosedEnum; + +/** + * AWS management configuration extracted from stack settings + */ +export type SyncReconcileResponseManagementConfigAws = { /** - * Runtime env-var mappings for v1 input resolution. + * The managing AWS IAM role ARN that can assume cross-account roles */ - env?: Array | undefined; + managingRoleArn: string; + platform: TargetPlatformAws; +}; + +export type SyncReconcileResponseManagementConfigUnion = + | SyncReconcileResponseManagementConfigAzure + | SyncReconcileResponseManagementConfigAws + | SyncReconcileResponseManagementConfigGcp + | SyncReconcileResponseManagementConfigKubernetes + | any; + +/** + * OTLP log export configuration for a deployment. + * + * @remarks + * + * When set, injected compute runtimes export captured application logs + * through the given endpoint via OTLP/HTTP; which resources are injected + * is platform-dependent. Workers read auth headers from a runtime-only + * secret. Runtime-less Containers and Daemons receive standard OTEL auth + * variables only at the final hosting boundary: Local passes them directly + * to the process and Kubernetes projects them from a per-workload Secret. + */ +export type SyncReconcileResponseMonitoring = { /** - * Stable input ID used by CLI/API calls. + * Auth header value in "key=value,..." format. + * + * @remarks + * Example: "authorization=Bearer " */ - id: string; + logsAuthHeader: string; /** - * Primitive stack input kind. + * Full OTLP logs endpoint URL. + * + * @remarks + * Example: "https:///v1/logs" */ - kind: ReleaseInfoKind; + logsEndpoint: string; /** - * Human-facing field label. + * Auth header value for the metrics endpoint in "key=value,..." format (optional). + * + * @remarks + * + * When absent, `logs_auth_header` is reused for metrics -- suitable when the same + * credential covers both signals. When present (e.g. Axiom with separate datasets), + * this value is used exclusively for metrics. + * + * Example: "authorization=Bearer ,x-axiom-dataset=" */ - label: string; + metricsAuthHeader?: string | null | undefined; /** - * Example placeholder shown in UI. + * Full OTLP metrics endpoint URL (optional). + * + * @remarks + * When set, the worker runtime exports its own VM/container orchestration metrics here. + * Example: "https://api.axiom.co/v1/metrics" */ - placeholder?: string | null | undefined; + metricsEndpoint?: string | null | undefined; /** - * Platforms where this input applies. + * Resource attributes attached to every OTLP signal emitted for this deployment. + * + * @remarks + * + * Platform managers use this for stable identity such as `alien.workspace_id`, + * `alien.project_id`, `alien.deployment_group_id`, and `alien.deployment_id`. + * Runtime-specific resource attributes such as `service.name` remain owned by + * the runtime/exporter. */ - platforms?: Array | null | undefined; + resourceAttributes?: { [k: string]: string } | undefined; +}; + +export type SyncReconcileResponseMonitoringUnion = + | SyncReconcileResponseMonitoring + | any; + +/** + * Failure-domain policy selected for a compute pool. + */ +export type SyncReconcileResponseFailureDomains2 = { /** - * Who can provide this value. + * Concrete provider domains selected during setup. + * + * @remarks + * Empty delegates deterministic selection to the provider setup implementation. */ - providedBy: Array; + selectedFailureDomains?: Array | undefined; /** - * Whether a resolved value is required before deployment can proceed. + * Number of distinct failure domains across which new stateful replicas may be spread. */ - required: boolean; - validation?: ValidationReleaseInfo | any | null | undefined; + spread: number; }; -export const ManagementReleaseInfoEnum = { - Auto: "auto", -} as const; -export type ManagementReleaseInfoEnum = ClosedEnum< - typeof ManagementReleaseInfoEnum ->; +export type SyncReconcileResponseFailureDomainsUnion2 = + | SyncReconcileResponseFailureDomains2 + | any; -/** - * AWS-specific binding specification - */ -export type OverrideReleaseInfoAwResource = { +export type SyncReconcileResponsePoolsAutoscale = { + failureDomains?: + | SyncReconcileResponseFailureDomains2 + | any + | null + | undefined; /** - * Optional condition for additional filtering (rare) + * Provider machine type selected for this deployment. */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; + machine?: string | null | undefined; /** - * Resource ARNs to bind to + * Maximum machine count. */ - resources: Array; + max: number; + /** + * Minimum machine count. + */ + min: number; + mode: "autoscale"; }; /** - * AWS-specific binding specification + * Failure-domain policy selected for a compute pool. */ -export type OverrideReleaseInfoAwStack = { +export type SyncReconcileResponseFailureDomains1 = { /** - * Optional condition for additional filtering (rare) + * Concrete provider domains selected during setup. + * + * @remarks + * Empty delegates deterministic selection to the provider setup implementation. */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; + selectedFailureDomains?: Array | undefined; /** - * Resource ARNs to bind to + * Number of distinct failure domains across which new stateful replicas may be spread. */ - resources: Array; + spread: number; }; -/** - * Generic binding configuration for permissions - */ -export type OverrideReleaseInfoAwBinding = { +export type SyncReconcileResponseFailureDomainsUnion1 = + | SyncReconcileResponseFailureDomains1 + | any; + +export type SyncReconcileResponsePoolsFixed = { + failureDomains?: + | SyncReconcileResponseFailureDomains1 + | any + | null + | undefined; /** - * AWS-specific binding specification + * Provider machine type selected for this deployment. */ - resource?: OverrideReleaseInfoAwResource | undefined; + machine?: string | null | undefined; /** - * AWS-specific binding specification + * Number of machines to run. */ - stack?: OverrideReleaseInfoAwStack | undefined; + machines: number; + mode: "fixed"; }; /** - * IAM effect. Defaults to Allow. - */ -export const OverrideReleaseInfoEffect = { - Allow: "Allow", - Deny: "Deny", -} as const; -/** - * IAM effect. Defaults to Allow. + * User-selected deployment settings for one compute pool. */ -export type OverrideReleaseInfoEffect = ClosedEnum< - typeof OverrideReleaseInfoEffect ->; +export type SyncReconcileResponsePoolsUnion = + | SyncReconcileResponsePoolsFixed + | SyncReconcileResponsePoolsAutoscale; /** - * Grant permissions for a specific cloud platform + * Deployment-time compute choices for Alien-managed compute pools. + * + * @remarks + * + * Application source declares portable pool requirements. This settings + * object stores the concrete choices made for one deployment, such as the + * provider machine type and selected machine counts. */ -export type OverrideReleaseInfoAwGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; +export type SyncReconcileResponseCompute = { /** - * GCP residual custom permissions to pair with predefined roles. + * Selected compute choices keyed by pool ID. */ - residualPermissions?: Array | null | undefined; + pools?: { + [k: string]: + | SyncReconcileResponsePoolsFixed + | SyncReconcileResponsePoolsAutoscale; + } | undefined; }; +export type SyncReconcileResponseComputeUnion = + | SyncReconcileResponseCompute + | any; + /** - * AWS-specific platform permission configuration + * Deployment model: how updates are delivered to the remote environment. */ -export type OverrideReleaseInfoAw = { - /** - * Generic binding configuration for permissions - */ - binding: OverrideReleaseInfoAwBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * IAM effect. Defaults to Allow. - */ - effect?: OverrideReleaseInfoEffect | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: OverrideReleaseInfoAwGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - +export const SyncReconcileResponseDeploymentModel = { + Push: "push", + Pull: "pull", +} as const; /** - * Azure-specific binding specification + * Deployment model: how updates are delivered to the remote environment. */ -export type OverrideReleaseInfoAzureResource = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; +export type SyncReconcileResponseDeploymentModel = ClosedEnum< + typeof SyncReconcileResponseDeploymentModel +>; + +export type SyncReconcileResponseAwsStackSettings = { + certificateArn: string; }; -/** - * Azure-specific binding specification - */ -export type OverrideReleaseInfoAzureStack = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; +export type SyncReconcileResponseStackSettingsAwsUnion = + | SyncReconcileResponseAwsStackSettings + | any; + +export type AzureTargetStackSettings = { + keyVaultCertificateId: string; + keyVaultResourceId?: string | null | undefined; }; -/** - * Generic binding configuration for permissions - */ -export type OverrideReleaseInfoAzureBinding = { - /** - * Azure-specific binding specification - */ - resource?: OverrideReleaseInfoAzureResource | undefined; - /** - * Azure-specific binding specification - */ - stack?: OverrideReleaseInfoAzureStack | undefined; +export type TargetStackSettingsAzureUnion = AzureTargetStackSettings | any; + +export type GcpTargetStackSettings = { + certificateName: string; }; +export type TargetStackSettingsGcpUnion = GcpTargetStackSettings | any; + /** - * Grant permissions for a specific cloud platform + * Namespace-scoped Kubernetes TLS Secret reference. */ -export type OverrideReleaseInfoAzureGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; +export type SyncReconcileResponseTlsSecretRef = { /** - * GCP permissions that require an exact residual custom role. + * Secret namespace. Defaults to the release namespace when omitted. */ - permissions?: Array | null | undefined; + namespace?: string | null | undefined; /** - * Provider predefined roles to bind directly. + * Secret name. */ - predefinedRoles?: Array | null | undefined; + secretName: string; +}; + +export type SyncReconcileResponseDomainsKubernetes = { /** - * GCP residual custom permissions to pair with predefined roles. + * Namespace-scoped Kubernetes TLS Secret reference. */ - residualPermissions?: Array | null | undefined; + tlsSecretRef: SyncReconcileResponseTlsSecretRef; }; +export type SyncReconcileResponseDomainsKubernetesUnion = + | SyncReconcileResponseDomainsKubernetes + | any; + /** - * Azure-specific platform permission configuration + * Platform-specific certificate references for custom domains. */ -export type OverrideReleaseInfoAzure = { - /** - * Generic binding configuration for permissions - */ - binding: OverrideReleaseInfoAzureBinding; +export type SyncReconcileResponseDomainsCertificate = { + aws?: SyncReconcileResponseAwsStackSettings | any | null | undefined; + azure?: AzureTargetStackSettings | any | null | undefined; + gcp?: GcpTargetStackSettings | any | null | undefined; + kubernetes?: SyncReconcileResponseDomainsKubernetes | any | null | undefined; +}; + +/** + * Custom domain configuration for a single resource. + */ +export type SyncReconcileResponseCustomDomains = { /** - * Short admin-facing description of why this entry exists. + * Platform-specific certificate references for custom domains. */ - description?: string | null | undefined; + certificate: SyncReconcileResponseDomainsCertificate; /** - * Grant permissions for a specific cloud platform + * Fully qualified domain name to use. */ - grant: OverrideReleaseInfoAzureGrant; + domain: string; +}; + +export const SyncReconcileResponseModeLoadBalancer = { + LoadBalancer: "loadBalancer", +} as const; +export type SyncReconcileResponseModeLoadBalancer = ClosedEnum< + typeof SyncReconcileResponseModeLoadBalancer +>; + +export type SyncReconcileResponsePublicEndpointTargetLoadBalancer = { /** - * Stable admin-facing label for this permission entry. + * DNS name or URL for the external load balancer. */ - label?: string | null | undefined; + cnameTarget: string; + mode: SyncReconcileResponseModeLoadBalancer; }; -/** - * GCP IAM condition - */ -export type OverrideConditionReleaseInfoResource = { - expression: string; - title: string; +export const SyncReconcileResponseModeMachineAddresses = { + MachineAddresses: "machineAddresses", +} as const; +export type SyncReconcileResponseModeMachineAddresses = ClosedEnum< + typeof SyncReconcileResponseModeMachineAddresses +>; + +export type SyncReconcileResponsePublicEndpointTargetMachineAddresses = { + mode: SyncReconcileResponseModeMachineAddresses; }; -export type OverrideReleaseInfoResourceConditionUnion = - | OverrideConditionReleaseInfoResource +export type SyncReconcileResponsePublicEndpointTargetUnion = + | SyncReconcileResponsePublicEndpointTargetLoadBalancer + | SyncReconcileResponsePublicEndpointTargetMachineAddresses | any; /** - * GCP-specific binding specification + * Domain configuration for the stack. + * + * @remarks + * + * When `custom_domains` is set, the specified resources use customer-provided + * domains and certificates. Otherwise, Alien auto-generates domains. */ -export type OverrideReleaseInfoGcpResource = { - condition?: OverrideConditionReleaseInfoResource | any | null | undefined; +export type SyncReconcileResponseDomains = { /** - * Scope (project/resource level) + * Custom domain configuration per resource ID. */ - scope: string; -}; - -/** - * GCP IAM condition - */ -export type OverrideConditionReleaseInfo = { - expression: string; - title: string; + customDomains?: + | { [k: string]: SyncReconcileResponseCustomDomains } + | null + | undefined; + publicEndpointTarget?: + | SyncReconcileResponsePublicEndpointTargetLoadBalancer + | SyncReconcileResponsePublicEndpointTargetMachineAddresses + | any + | null + | undefined; }; -export type OverrideReleaseInfoConditionUnion = - | OverrideConditionReleaseInfo +export type SyncReconcileResponseDomainsUnion = + | SyncReconcileResponseDomains | any; /** - * GCP-specific binding specification + * External bindings for pre-existing infrastructure. + * + * @remarks + * Allows using existing resources (MinIO, Redis, shared Container Apps + * Environment, etc.) instead of having Alien provision them. + * Required for Kubernetes platform, optional for cloud platforms. */ -export type OverrideReleaseInfoGcpStack = { - condition?: OverrideConditionReleaseInfo | any | null | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; +export type SyncReconcileResponseStackSettingsExternalBindings = {}; /** - * Generic binding configuration for permissions + * How heartbeat health checks are handled. */ -export type OverrideReleaseInfoGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: OverrideReleaseInfoGcpResource | undefined; - /** - * GCP-specific binding specification - */ - stack?: OverrideReleaseInfoGcpStack | undefined; -}; +export const SyncReconcileResponseHeartbeats = { + Off: "off", + On: "on", +} as const; +/** + * How heartbeat health checks are handled. + */ +export type SyncReconcileResponseHeartbeats = ClosedEnum< + typeof SyncReconcileResponseHeartbeats +>; /** - * Grant permissions for a specific cloud platform + * Optional provider-specific identity for a cloud-backed Kubernetes cluster. */ -export type OverrideReleaseInfoGcpGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; +export type SyncReconcileResponseCloud = { + accountId?: string | null | undefined; + clusterId?: string | null | undefined; + clusterName?: string | null | undefined; + projectId?: string | null | undefined; + region?: string | null | undefined; + resourceGroup?: string | null | undefined; + subscriptionId?: string | null | undefined; }; +export type SyncReconcileResponseCloudUnion = SyncReconcileResponseCloud | any; + /** - * GCP-specific platform permission configuration + * Ownership model for the Kubernetes cluster. */ -export type OverrideReleaseInfoGcp = { - /** - * Generic binding configuration for permissions - */ - binding: OverrideReleaseInfoGcpBinding; +export const SyncReconcileResponseOwnership = { + Managed: "managed", + Existing: "existing", + External: "external", +} as const; +/** + * Ownership model for the Kubernetes cluster. + */ +export type SyncReconcileResponseOwnership = ClosedEnum< + typeof SyncReconcileResponseOwnership +>; + +/** + * Kubernetes cluster setup settings. + */ +export type SyncReconcileResponseCluster = { + cloud?: SyncReconcileResponseCloud | any | null | undefined; /** - * Short admin-facing description of why this entry exists. + * Namespace where the Alien chart and application resources run. */ - description?: string | null | undefined; + namespace?: string | null | undefined; /** - * Grant permissions for a specific cloud platform + * Ownership model for the Kubernetes cluster. */ - grant: OverrideReleaseInfoGcpGrant; + ownership: SyncReconcileResponseOwnership; +}; + +export type SyncReconcileResponseClusterUnion = + | SyncReconcileResponseCluster + | any; + +export type SyncReconcileResponseCertificateNone2 = { + mode: "none"; +}; + +export type SyncReconcileResponseCertificateManagedTLSSecret2 = { + mode: "managedTlsSecret"; /** - * Stable admin-facing label for this permission entry. + * Secret name template. Runtime may substitute resource/deployment tokens. */ - label?: string | null | undefined; + secretNameTemplate: string; }; -/** - * Platform-specific permission configurations - */ -export type OverrideReleaseInfoPlatforms = { +export type SyncReconcileResponseCertificateAwsAcmArn2 = { /** - * AWS permission configurations + * Existing ACM certificate ARN. */ - aws?: Array | null | undefined; + certificateArn: string; + mode: "awsAcmArn"; +}; + +export type SyncReconcileResponseCertificateManagedAcmImport2 = { + mode: "managedAcmImport"; /** - * Azure permission configurations + * ACM region. Defaults to the deployment region when omitted. */ - azure?: Array | null | undefined; + region?: string | null | undefined; /** - * GCP permission configurations + * Tags applied to runtime-imported ACM certificates. */ - gcp?: Array | null | undefined; + tags?: { [k: string]: string } | undefined; }; /** - * A permission set that can be applied across different cloud platforms + * Namespace-scoped Kubernetes TLS Secret reference. */ -export type OverrideReleaseInfo = { - /** - * Human-readable description of what this permission set allows - */ - description: string; +export type SyncReconcileResponseCertificateTLSSecretRef2 = { /** - * Unique identifier for the permission set (e.g., "storage/data-read") + * Secret namespace. Defaults to the release namespace when omitted. */ - id: string; + namespace?: string | null | undefined; /** - * Platform-specific permission configurations + * Secret name. */ - platforms: OverrideReleaseInfoPlatforms; + secretName: string; + mode: "tlsSecretRef"; }; /** - * Reference to a permission set - either by name or inline definition + * Certificate publication or reference mode for Kubernetes public endpoints. */ -export type ReleaseInfoOverrideUnion = OverrideReleaseInfo | string; +export type SyncReconcileResponseCertificateUnion2 = + | SyncReconcileResponseCertificateTLSSecretRef2 + | SyncReconcileResponseCertificateManagedAcmImport2 + | SyncReconcileResponseCertificateAwsAcmArn2 + | SyncReconcileResponseCertificateManagedTLSSecret2 + | SyncReconcileResponseCertificateNone2; -export type ManagementReleaseInfo2 = { +export const SyncReconcileResponseModeCustom = { + Custom: "custom", +} as const; +export type SyncReconcileResponseModeCustom = ClosedEnum< + typeof SyncReconcileResponseModeCustom +>; + +export const SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum4 = + { + AzureApplicationGatewayForContainers: + "azureApplicationGatewayForContainers", + } as const; +export type SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum4 = + ClosedEnum< + typeof SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum4 + >; + +export type SyncReconcileResponseProviderAzureApplicationGatewayForContainers4 = + { + /** + * Optional ALB name when using BYO Application Gateway resources. + */ + albName?: string | null | undefined; + /** + * Optional ALB namespace when using BYO Application Gateway resources. + */ + albNamespace?: string | null | undefined; + /** + * Public or internal frontend exposure. + */ + frontend: string; + provider: + SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum4; + }; + +export const SyncReconcileResponseProviderGkeGatewayEnum4 = { + GkeGateway: "gkeGateway", +} as const; +export type SyncReconcileResponseProviderGkeGatewayEnum4 = ClosedEnum< + typeof SyncReconcileResponseProviderGkeGatewayEnum4 +>; + +export type SyncReconcileResponseProviderGkeGateway4 = { + provider: SyncReconcileResponseProviderGkeGatewayEnum4; /** - * Permission profile that maps resources to permission sets - * - * @remarks - * Key can be "*" for all resources or resource name for specific resource + * Optional static address name for the Gateway frontend. */ - override: { [k: string]: Array }; + staticAddressName?: string | null | undefined; }; -/** - * AWS-specific binding specification - */ -export type ExtendReleaseInfoAwResource = { +export const SyncReconcileResponseProviderAwsAlbEnum4 = { + AwsAlb: "awsAlb", +} as const; +export type SyncReconcileResponseProviderAwsAlbEnum4 = ClosedEnum< + typeof SyncReconcileResponseProviderAwsAlbEnum4 +>; + +export type SyncReconcileResponseProviderAwsAlb4 = { /** - * Optional condition for additional filtering (rare) + * Optional ALB IP address type, such as `dualstack`. */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; + ipAddressType?: string | null | undefined; + provider: SyncReconcileResponseProviderAwsAlbEnum4; /** - * Resource ARNs to bind to + * Internet-facing or internal ALB scheme. */ - resources: Array; -}; - -/** - * AWS-specific binding specification - */ -export type ExtendReleaseInfoAwStack = { + scheme: string; /** - * Optional condition for additional filtering (rare) + * Explicit subnet IDs when the profile cannot rely on controller discovery. */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; + subnetIds?: Array | undefined; /** - * Resource ARNs to bind to + * ALB target type, usually `ip`. */ - resources: Array; + targetType: string; }; +export type SyncReconcileResponseProviderUnion4 = + | SyncReconcileResponseProviderAwsAlb4 + | SyncReconcileResponseProviderAzureApplicationGatewayForContainers4 + | SyncReconcileResponseProviderGkeGateway4 + | any; + /** - * Generic binding configuration for permissions + * Shared Gateway API route profile values. */ -export type ExtendReleaseInfoAwBinding = { +export type SyncReconcileResponseRouteGateway2 = { /** - * AWS-specific binding specification + * Annotations applied to route objects. */ - resource?: ExtendReleaseInfoAwResource | undefined; + annotations?: { [k: string]: string } | undefined; /** - * AWS-specific binding specification + * Route controller identifier, for example a cloud Gateway controller. */ - stack?: ExtendReleaseInfoAwStack | undefined; -}; - -/** - * IAM effect. Defaults to Allow. - */ -export const ExtendReleaseInfoEffect = { - Allow: "Allow", - Deny: "Deny", -} as const; -/** - * IAM effect. Defaults to Allow. - */ -export type ExtendReleaseInfoEffect = ClosedEnum< - typeof ExtendReleaseInfoEffect ->; - -/** - * Grant permissions for a specific cloud platform - */ -export type ExtendReleaseInfoAwGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; + controller?: string | null | undefined; /** - * GCP permissions that require an exact residual custom role. + * GatewayClass selected for generated Gateways. */ - permissions?: Array | null | undefined; + gatewayClassName: string; /** - * Provider predefined roles to bind directly. + * Labels applied to route objects. */ - predefinedRoles?: Array | null | undefined; + labels?: { [k: string]: string } | undefined; /** - * GCP residual custom permissions to pair with predefined roles. + * Listener port, usually 443. */ - residualPermissions?: Array | null | undefined; + listenerPort: number; + provider?: + | SyncReconcileResponseProviderAwsAlb4 + | SyncReconcileResponseProviderAzureApplicationGatewayForContainers4 + | SyncReconcileResponseProviderGkeGateway4 + | any + | null + | undefined; + routeApi: "gateway"; }; -/** - * AWS-specific platform permission configuration - */ -export type ExtendReleaseInfoAw = { +export const SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum3 = + { + AzureApplicationGatewayForContainers: + "azureApplicationGatewayForContainers", + } as const; +export type SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum3 = + ClosedEnum< + typeof SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum3 + >; + +export type SyncReconcileResponseProviderAzureApplicationGatewayForContainers3 = + { + /** + * Optional ALB name when using BYO Application Gateway resources. + */ + albName?: string | null | undefined; + /** + * Optional ALB namespace when using BYO Application Gateway resources. + */ + albNamespace?: string | null | undefined; + /** + * Public or internal frontend exposure. + */ + frontend: string; + provider: + SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum3; + }; + +export const SyncReconcileResponseProviderGkeGatewayEnum3 = { + GkeGateway: "gkeGateway", +} as const; +export type SyncReconcileResponseProviderGkeGatewayEnum3 = ClosedEnum< + typeof SyncReconcileResponseProviderGkeGatewayEnum3 +>; + +export type SyncReconcileResponseProviderGkeGateway3 = { + provider: SyncReconcileResponseProviderGkeGatewayEnum3; /** - * Generic binding configuration for permissions + * Optional static address name for the Gateway frontend. */ - binding: ExtendReleaseInfoAwBinding; + staticAddressName?: string | null | undefined; +}; + +export const SyncReconcileResponseProviderAwsAlbEnum3 = { + AwsAlb: "awsAlb", +} as const; +export type SyncReconcileResponseProviderAwsAlbEnum3 = ClosedEnum< + typeof SyncReconcileResponseProviderAwsAlbEnum3 +>; + +export type SyncReconcileResponseProviderAwsAlb3 = { /** - * Short admin-facing description of why this entry exists. + * Optional ALB IP address type, such as `dualstack`. */ - description?: string | null | undefined; + ipAddressType?: string | null | undefined; + provider: SyncReconcileResponseProviderAwsAlbEnum3; /** - * IAM effect. Defaults to Allow. + * Internet-facing or internal ALB scheme. */ - effect?: ExtendReleaseInfoEffect | undefined; + scheme: string; /** - * Grant permissions for a specific cloud platform + * Explicit subnet IDs when the profile cannot rely on controller discovery. */ - grant: ExtendReleaseInfoAwGrant; + subnetIds?: Array | undefined; /** - * Stable admin-facing label for this permission entry. + * ALB target type, usually `ip`. */ - label?: string | null | undefined; + targetType: string; }; +export type SyncReconcileResponseProviderUnion3 = + | SyncReconcileResponseProviderAwsAlb3 + | SyncReconcileResponseProviderAzureApplicationGatewayForContainers3 + | SyncReconcileResponseProviderGkeGateway3 + | any; + /** - * Azure-specific binding specification + * Shared Ingress route profile values. */ -export type ExtendReleaseInfoAzureResource = { +export type SyncReconcileResponseRouteIngress2 = { /** - * Scope (subscription/resource group/resource level) + * Annotations applied to route objects. */ - scope: string; -}; - -/** - * Azure-specific binding specification - */ -export type ExtendReleaseInfoAzureStack = { + annotations?: { [k: string]: string } | undefined; /** - * Scope (subscription/resource group/resource level) + * Route controller identifier, for example `eks.amazonaws.com/alb`. */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type ExtendReleaseInfoAzureBinding = { + controller?: string | null | undefined; /** - * Azure-specific binding specification + * `spec.ingressClassName` for generated Ingresses. */ - resource?: ExtendReleaseInfoAzureResource | undefined; + ingressClassName: string; /** - * Azure-specific binding specification + * Labels applied to route objects. */ - stack?: ExtendReleaseInfoAzureStack | undefined; + labels?: { [k: string]: string } | undefined; + provider?: + | SyncReconcileResponseProviderAwsAlb3 + | SyncReconcileResponseProviderAzureApplicationGatewayForContainers3 + | SyncReconcileResponseProviderGkeGateway3 + | any + | null + | undefined; + routeApi: "ingress"; }; /** - * Grant permissions for a specific cloud platform + * Kubernetes route API selected for public endpoints. */ -export type ExtendReleaseInfoAzureGrant = { +export type SyncReconcileResponseRouteUnion2 = + | SyncReconcileResponseRouteIngress2 + | SyncReconcileResponseRouteGateway2; + +export type SyncReconcileResponseExposureCustom = { /** - * AWS IAM actions (only for AWS) + * Certificate publication or reference mode for Kubernetes public endpoints. */ - actions?: Array | null | undefined; + certificate: + | SyncReconcileResponseCertificateTLSSecretRef2 + | SyncReconcileResponseCertificateManagedAcmImport2 + | SyncReconcileResponseCertificateAwsAcmArn2 + | SyncReconcileResponseCertificateManagedTLSSecret2 + | SyncReconcileResponseCertificateNone2; /** - * Azure actions (only for Azure) + * Hostname routed by the Kubernetes public endpoint. */ - dataActions?: Array | null | undefined; + domain: string; + mode: SyncReconcileResponseModeCustom; /** - * GCP permissions that require an exact residual custom role. + * Kubernetes route API selected for public endpoints. */ - permissions?: Array | null | undefined; + route: + | SyncReconcileResponseRouteIngress2 + | SyncReconcileResponseRouteGateway2; +}; + +export type SyncReconcileResponseCertificateNone1 = { + mode: "none"; +}; + +export type SyncReconcileResponseCertificateManagedTLSSecret1 = { + mode: "managedTlsSecret"; /** - * Provider predefined roles to bind directly. + * Secret name template. Runtime may substitute resource/deployment tokens. */ - predefinedRoles?: Array | null | undefined; + secretNameTemplate: string; +}; + +export type SyncReconcileResponseCertificateAwsAcmArn1 = { /** - * GCP residual custom permissions to pair with predefined roles. + * Existing ACM certificate ARN. */ - residualPermissions?: Array | null | undefined; + certificateArn: string; + mode: "awsAcmArn"; }; -/** - * Azure-specific platform permission configuration - */ -export type ExtendReleaseInfoAzure = { +export type SyncReconcileResponseCertificateManagedAcmImport1 = { + mode: "managedAcmImport"; /** - * Generic binding configuration for permissions + * ACM region. Defaults to the deployment region when omitted. */ - binding: ExtendReleaseInfoAzureBinding; + region?: string | null | undefined; /** - * Short admin-facing description of why this entry exists. + * Tags applied to runtime-imported ACM certificates. */ - description?: string | null | undefined; + tags?: { [k: string]: string } | undefined; +}; + +/** + * Namespace-scoped Kubernetes TLS Secret reference. + */ +export type SyncReconcileResponseCertificateTLSSecretRef1 = { /** - * Grant permissions for a specific cloud platform + * Secret namespace. Defaults to the release namespace when omitted. */ - grant: ExtendReleaseInfoAzureGrant; + namespace?: string | null | undefined; /** - * Stable admin-facing label for this permission entry. + * Secret name. */ - label?: string | null | undefined; + secretName: string; + mode: "tlsSecretRef"; }; /** - * GCP IAM condition + * Certificate publication or reference mode for Kubernetes public endpoints. */ -export type ExtendConditionReleaseInfoResource = { - expression: string; - title: string; -}; +export type SyncReconcileResponseCertificateUnion1 = + | SyncReconcileResponseCertificateTLSSecretRef1 + | SyncReconcileResponseCertificateManagedAcmImport1 + | SyncReconcileResponseCertificateAwsAcmArn1 + | SyncReconcileResponseCertificateManagedTLSSecret1 + | SyncReconcileResponseCertificateNone1; -export type ExtendReleaseInfoResourceConditionUnion = - | ExtendConditionReleaseInfoResource - | any; +export const SyncReconcileResponseModeGenerated = { + Generated: "generated", +} as const; +export type SyncReconcileResponseModeGenerated = ClosedEnum< + typeof SyncReconcileResponseModeGenerated +>; -/** - * GCP-specific binding specification - */ -export type ExtendReleaseInfoGcpResource = { - condition?: ExtendConditionReleaseInfoResource | any | null | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; +export const SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum2 = + { + AzureApplicationGatewayForContainers: + "azureApplicationGatewayForContainers", + } as const; +export type SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum2 = + ClosedEnum< + typeof SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum2 + >; -/** - * GCP IAM condition - */ -export type ExtendConditionReleaseInfo = { - expression: string; - title: string; -}; +export type SyncReconcileResponseProviderAzureApplicationGatewayForContainers2 = + { + /** + * Optional ALB name when using BYO Application Gateway resources. + */ + albName?: string | null | undefined; + /** + * Optional ALB namespace when using BYO Application Gateway resources. + */ + albNamespace?: string | null | undefined; + /** + * Public or internal frontend exposure. + */ + frontend: string; + provider: + SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum2; + }; -export type ExtendReleaseInfoConditionUnion = ExtendConditionReleaseInfo | any; +export const SyncReconcileResponseProviderGkeGatewayEnum2 = { + GkeGateway: "gkeGateway", +} as const; +export type SyncReconcileResponseProviderGkeGatewayEnum2 = ClosedEnum< + typeof SyncReconcileResponseProviderGkeGatewayEnum2 +>; -/** - * GCP-specific binding specification - */ -export type ExtendReleaseInfoGcpStack = { - condition?: ExtendConditionReleaseInfo | any | null | undefined; +export type SyncReconcileResponseProviderGkeGateway2 = { + provider: SyncReconcileResponseProviderGkeGatewayEnum2; /** - * Scope (project/resource level) + * Optional static address name for the Gateway frontend. */ - scope: string; + staticAddressName?: string | null | undefined; }; -/** - * Generic binding configuration for permissions - */ -export type ExtendReleaseInfoGcpBinding = { +export const SyncReconcileResponseProviderAwsAlbEnum2 = { + AwsAlb: "awsAlb", +} as const; +export type SyncReconcileResponseProviderAwsAlbEnum2 = ClosedEnum< + typeof SyncReconcileResponseProviderAwsAlbEnum2 +>; + +export type SyncReconcileResponseProviderAwsAlb2 = { /** - * GCP-specific binding specification + * Optional ALB IP address type, such as `dualstack`. */ - resource?: ExtendReleaseInfoGcpResource | undefined; + ipAddressType?: string | null | undefined; + provider: SyncReconcileResponseProviderAwsAlbEnum2; /** - * GCP-specific binding specification + * Internet-facing or internal ALB scheme. */ - stack?: ExtendReleaseInfoGcpStack | undefined; + scheme: string; + /** + * Explicit subnet IDs when the profile cannot rely on controller discovery. + */ + subnetIds?: Array | undefined; + /** + * ALB target type, usually `ip`. + */ + targetType: string; }; +export type SyncReconcileResponseProviderUnion2 = + | SyncReconcileResponseProviderAwsAlb2 + | SyncReconcileResponseProviderAzureApplicationGatewayForContainers2 + | SyncReconcileResponseProviderGkeGateway2 + | any; + /** - * Grant permissions for a specific cloud platform + * Shared Gateway API route profile values. */ -export type ExtendReleaseInfoGcpGrant = { +export type SyncReconcileResponseRouteGateway1 = { /** - * AWS IAM actions (only for AWS) + * Annotations applied to route objects. */ - actions?: Array | null | undefined; + annotations?: { [k: string]: string } | undefined; /** - * Azure actions (only for Azure) + * Route controller identifier, for example a cloud Gateway controller. */ - dataActions?: Array | null | undefined; + controller?: string | null | undefined; /** - * GCP permissions that require an exact residual custom role. + * GatewayClass selected for generated Gateways. */ - permissions?: Array | null | undefined; + gatewayClassName: string; /** - * Provider predefined roles to bind directly. + * Labels applied to route objects. */ - predefinedRoles?: Array | null | undefined; + labels?: { [k: string]: string } | undefined; /** - * GCP residual custom permissions to pair with predefined roles. + * Listener port, usually 443. */ - residualPermissions?: Array | null | undefined; + listenerPort: number; + provider?: + | SyncReconcileResponseProviderAwsAlb2 + | SyncReconcileResponseProviderAzureApplicationGatewayForContainers2 + | SyncReconcileResponseProviderGkeGateway2 + | any + | null + | undefined; + routeApi: "gateway"; }; -/** - * GCP-specific platform permission configuration - */ -export type ExtendReleaseInfoGcp = { - /** - * Generic binding configuration for permissions - */ - binding: ExtendReleaseInfoGcpBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: ExtendReleaseInfoGcpGrant; +export const SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum1 = + { + AzureApplicationGatewayForContainers: + "azureApplicationGatewayForContainers", + } as const; +export type SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum1 = + ClosedEnum< + typeof SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum1 + >; + +export type SyncReconcileResponseProviderAzureApplicationGatewayForContainers1 = + { + /** + * Optional ALB name when using BYO Application Gateway resources. + */ + albName?: string | null | undefined; + /** + * Optional ALB namespace when using BYO Application Gateway resources. + */ + albNamespace?: string | null | undefined; + /** + * Public or internal frontend exposure. + */ + frontend: string; + provider: + SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum1; + }; + +export const SyncReconcileResponseProviderGkeGatewayEnum1 = { + GkeGateway: "gkeGateway", +} as const; +export type SyncReconcileResponseProviderGkeGatewayEnum1 = ClosedEnum< + typeof SyncReconcileResponseProviderGkeGatewayEnum1 +>; + +export type SyncReconcileResponseProviderGkeGateway1 = { + provider: SyncReconcileResponseProviderGkeGatewayEnum1; /** - * Stable admin-facing label for this permission entry. + * Optional static address name for the Gateway frontend. */ - label?: string | null | undefined; + staticAddressName?: string | null | undefined; }; -/** - * Platform-specific permission configurations - */ -export type ExtendReleaseInfoPlatforms = { +export const SyncReconcileResponseProviderAwsAlbEnum1 = { + AwsAlb: "awsAlb", +} as const; +export type SyncReconcileResponseProviderAwsAlbEnum1 = ClosedEnum< + typeof SyncReconcileResponseProviderAwsAlbEnum1 +>; + +export type SyncReconcileResponseProviderAwsAlb1 = { /** - * AWS permission configurations + * Optional ALB IP address type, such as `dualstack`. */ - aws?: Array | null | undefined; + ipAddressType?: string | null | undefined; + provider: SyncReconcileResponseProviderAwsAlbEnum1; /** - * Azure permission configurations + * Internet-facing or internal ALB scheme. */ - azure?: Array | null | undefined; + scheme: string; /** - * GCP permission configurations + * Explicit subnet IDs when the profile cannot rely on controller discovery. */ - gcp?: Array | null | undefined; + subnetIds?: Array | undefined; + /** + * ALB target type, usually `ip`. + */ + targetType: string; }; +export type SyncReconcileResponseProviderUnion1 = + | SyncReconcileResponseProviderAwsAlb1 + | SyncReconcileResponseProviderAzureApplicationGatewayForContainers1 + | SyncReconcileResponseProviderGkeGateway1 + | any; + /** - * A permission set that can be applied across different cloud platforms + * Shared Ingress route profile values. */ -export type ExtendReleaseInfo = { +export type SyncReconcileResponseRouteIngress1 = { /** - * Human-readable description of what this permission set allows + * Annotations applied to route objects. */ - description: string; + annotations?: { [k: string]: string } | undefined; /** - * Unique identifier for the permission set (e.g., "storage/data-read") + * Route controller identifier, for example `eks.amazonaws.com/alb`. */ - id: string; + controller?: string | null | undefined; /** - * Platform-specific permission configurations + * `spec.ingressClassName` for generated Ingresses. */ - platforms: ExtendReleaseInfoPlatforms; + ingressClassName: string; + /** + * Labels applied to route objects. + */ + labels?: { [k: string]: string } | undefined; + provider?: + | SyncReconcileResponseProviderAwsAlb1 + | SyncReconcileResponseProviderAzureApplicationGatewayForContainers1 + | SyncReconcileResponseProviderGkeGateway1 + | any + | null + | undefined; + routeApi: "ingress"; }; /** - * Reference to a permission set - either by name or inline definition + * Kubernetes route API selected for public endpoints. */ -export type ReleaseInfoExtendUnion = ExtendReleaseInfo | string; - -export type ManagementReleaseInfo1 = { - /** - * Permission profile that maps resources to permission sets - * - * @remarks - * Key can be "*" for all resources or resource name for specific resource - */ - extend: { [k: string]: Array }; -}; - -/** - * Management permissions configuration for stack management access - */ -export type ReleaseInfoManagementUnion = - | ManagementReleaseInfo1 - | ManagementReleaseInfo2 - | ManagementReleaseInfoEnum; +export type SyncReconcileResponseRouteUnion1 = + | SyncReconcileResponseRouteIngress1 + | SyncReconcileResponseRouteGateway1; -/** - * AWS-specific binding specification - */ -export type ProfileReleaseInfoAwResource = { +export type SyncReconcileResponseExposureGenerated = { /** - * Optional condition for additional filtering (rare) + * Certificate publication or reference mode for Kubernetes public endpoints. */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; + certificate: + | SyncReconcileResponseCertificateTLSSecretRef1 + | SyncReconcileResponseCertificateManagedAcmImport1 + | SyncReconcileResponseCertificateAwsAcmArn1 + | SyncReconcileResponseCertificateManagedTLSSecret1 + | SyncReconcileResponseCertificateNone1; + mode: SyncReconcileResponseModeGenerated; /** - * Resource ARNs to bind to + * Kubernetes route API selected for public endpoints. */ - resources: Array; + route: + | SyncReconcileResponseRouteIngress1 + | SyncReconcileResponseRouteGateway1; }; -/** - * AWS-specific binding specification - */ -export type ProfileReleaseInfoAwStack = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; +export const SyncReconcileResponseModeDisabled = { + Disabled: "disabled", +} as const; +export type SyncReconcileResponseModeDisabled = ClosedEnum< + typeof SyncReconcileResponseModeDisabled +>; + +export type SyncReconcileResponseExposureDisabled = { + mode: SyncReconcileResponseModeDisabled; }; +export type SyncReconcileResponseExposureUnion = + | SyncReconcileResponseExposureCustom + | SyncReconcileResponseExposureGenerated + | SyncReconcileResponseExposureDisabled + | any; + /** - * Generic binding configuration for permissions + * Kubernetes runtime substrate configuration. + * + * @remarks + * + * This controls how setup chooses the cluster backing `Platform::Kubernetes` + * deployments. When omitted, cloud-backed Kubernetes deployments default to a + * managed cluster and generic/on-prem Kubernetes defaults to an external + * cluster. */ -export type ProfileReleaseInfoAwBinding = { - /** - * AWS-specific binding specification - */ - resource?: ProfileReleaseInfoAwResource | undefined; - /** - * AWS-specific binding specification - */ - stack?: ProfileReleaseInfoAwStack | undefined; +export type SyncReconcileResponseKubernetes = { + cluster?: SyncReconcileResponseCluster | any | null | undefined; + exposure?: + | SyncReconcileResponseExposureCustom + | SyncReconcileResponseExposureGenerated + | SyncReconcileResponseExposureDisabled + | any + | null + | undefined; }; -/** - * IAM effect. Defaults to Allow. - */ -export const ProfileReleaseInfoEffect = { - Allow: "Allow", - Deny: "Deny", +export type SyncReconcileResponseKubernetesUnion = + | SyncReconcileResponseKubernetes + | any; + +export const TargetTypeByoVnetAzure = { + ByoVnetAzure: "byo-vnet-azure", } as const; -/** - * IAM effect. Defaults to Allow. - */ -export type ProfileReleaseInfoEffect = ClosedEnum< - typeof ProfileReleaseInfoEffect ->; +export type TargetTypeByoVnetAzure = ClosedEnum; -/** - * Grant permissions for a specific cloud platform - */ -export type ProfileReleaseInfoAwGrant = { +export type SyncReconcileResponseNetworkByoVnetAzure = { /** - * AWS IAM actions (only for AWS) + * Name of the dedicated classic Application Gateway subnet within the VNet. */ - actions?: Array | null | undefined; + applicationGatewaySubnetName?: string | null | undefined; /** - * Azure actions (only for Azure) + * Name of the dedicated subnet that hosts Private Endpoints (e.g. for a + * + * @remarks + * Postgres Flexible Server). A Private Endpoint must not share the private + * subnet, which is already claimed by the Container Apps environment's + * `infrastructure_subnet_id`. Required only when the stack contains a + * Postgres resource; otherwise unused. */ - dataActions?: Array | null | undefined; + privateEndpointSubnetName?: string | null | undefined; /** - * GCP permissions that require an exact residual custom role. + * Name of the private subnet within the VNet */ - permissions?: Array | null | undefined; + privateSubnetName: string; /** - * Provider predefined roles to bind directly. + * Name of the public subnet within the VNet */ - predefinedRoles?: Array | null | undefined; + publicSubnetName: string; + type: TargetTypeByoVnetAzure; /** - * GCP residual custom permissions to pair with predefined roles. + * The full resource ID of the existing VNet */ - residualPermissions?: Array | null | undefined; + vnetResourceId: string; }; -/** - * AWS-specific platform permission configuration - */ -export type ProfileReleaseInfoAw = { - /** - * Generic binding configuration for permissions - */ - binding: ProfileReleaseInfoAwBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; +export const TargetTypeByoVpcGcp = { + ByoVpcGcp: "byo-vpc-gcp", +} as const; +export type TargetTypeByoVpcGcp = ClosedEnum; + +export type SyncReconcileResponseNetworkByoVpcGcp = { /** - * IAM effect. Defaults to Allow. + * The name of the existing VPC network */ - effect?: ProfileReleaseInfoEffect | undefined; + networkName: string; /** - * Grant permissions for a specific cloud platform + * The region of the subnet */ - grant: ProfileReleaseInfoAwGrant; + region: string; /** - * Stable admin-facing label for this permission entry. + * The name of the subnet to use */ - label?: string | null | undefined; + subnetName: string; + type: TargetTypeByoVpcGcp; }; -/** - * Azure-specific binding specification - */ -export type ProfileReleaseInfoAzureResource = { +export const TargetTypeByoVpcAws = { + ByoVpcAws: "byo-vpc-aws", +} as const; +export type TargetTypeByoVpcAws = ClosedEnum; + +export type SyncReconcileResponseNetworkByoVpcAws = { /** - * Scope (subscription/resource group/resource level) + * IDs of private subnets */ - scope: string; -}; - -/** - * Azure-specific binding specification - */ -export type ProfileReleaseInfoAzureStack = { + privateSubnetIds: Array; /** - * Scope (subscription/resource group/resource level) + * IDs of public subnets (required for public ingress) */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type ProfileReleaseInfoAzureBinding = { + publicSubnetIds: Array; /** - * Azure-specific binding specification + * Optional security group IDs to use */ - resource?: ProfileReleaseInfoAzureResource | undefined; + securityGroupIds?: Array | undefined; + type: TargetTypeByoVpcAws; /** - * Azure-specific binding specification + * The ID of the existing VPC */ - stack?: ProfileReleaseInfoAzureStack | undefined; + vpcId: string; }; -/** - * Grant permissions for a specific cloud platform - */ -export type ProfileReleaseInfoAzureGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; +export const TargetTypeCreate = { + Create: "create", +} as const; +export type TargetTypeCreate = ClosedEnum; + +export type SyncReconcileResponseNetworkCreate = { /** - * Provider predefined roles to bind directly. + * Number of availability zones (default: 2). */ - predefinedRoles?: Array | null | undefined; + availabilityZones?: number | undefined; /** - * GCP residual custom permissions to pair with predefined roles. + * VPC/VNet CIDR block. If not specified, auto-generated from stack ID + * + * @remarks + * to reduce conflicts (e.g., "10.{hash}.0.0/16"). */ - residualPermissions?: Array | null | undefined; + cidr?: string | null | undefined; + type: TargetTypeCreate; }; -/** - * Azure-specific platform permission configuration - */ -export type ProfileReleaseInfoAzure = { - /** - * Generic binding configuration for permissions - */ - binding: ProfileReleaseInfoAzureBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: ProfileReleaseInfoAzureGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; +export const TargetTypeUseDefault = { + UseDefault: "use-default", +} as const; +export type TargetTypeUseDefault = ClosedEnum; -/** - * GCP IAM condition - */ -export type ProfileConditionReleaseInfoResource = { - expression: string; - title: string; +export type SyncReconcileResponseNetworkUseDefault = { + type: TargetTypeUseDefault; }; -export type ProfileReleaseInfoResourceConditionUnion = - | ProfileConditionReleaseInfoResource +export type SyncReconcileResponseNetworkUnion = + | SyncReconcileResponseNetworkByoVpcAws + | SyncReconcileResponseNetworkByoVpcGcp + | SyncReconcileResponseNetworkByoVnetAzure + | SyncReconcileResponseNetworkUseDefault + | SyncReconcileResponseNetworkCreate | any; /** - * GCP-specific binding specification + * How telemetry (logs, metrics, traces) is handled. */ -export type ProfileReleaseInfoGcpResource = { - condition?: ProfileConditionReleaseInfoResource | any | null | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - +export const SyncReconcileResponseTelemetry = { + Off: "off", + Auto: "auto", + ApprovalRequired: "approval-required", +} as const; /** - * GCP IAM condition + * How telemetry (logs, metrics, traces) is handled. */ -export type ProfileConditionReleaseInfo = { - expression: string; - title: string; -}; - -export type ProfileReleaseInfoConditionUnion = - | ProfileConditionReleaseInfo - | any; +export type SyncReconcileResponseTelemetry = ClosedEnum< + typeof SyncReconcileResponseTelemetry +>; /** - * GCP-specific binding specification + * How updates are delivered to the deployment. */ -export type ProfileReleaseInfoGcpStack = { - condition?: ProfileConditionReleaseInfo | any | null | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - +export const SyncReconcileResponseUpdates = { + Auto: "auto", + ApprovalRequired: "approval-required", +} as const; /** - * Generic binding configuration for permissions + * How updates are delivered to the deployment. */ -export type ProfileReleaseInfoGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: ProfileReleaseInfoGcpResource | undefined; - /** - * GCP-specific binding specification - */ - stack?: ProfileReleaseInfoGcpStack | undefined; -}; +export type SyncReconcileResponseUpdates = ClosedEnum< + typeof SyncReconcileResponseUpdates +>; /** - * Grant permissions for a specific cloud platform + * User-customizable deployment settings specified at deploy time. + * + * @remarks + * + * These settings are provided by the customer via CloudFormation parameters, + * Terraform attributes, CLI flags, or Helm values. They customize how the + * deployment runs and what capabilities are enabled. + * + * **Key distinction**: StackSettings is user-customizable, while ManagementConfig + * is platform-derived (from the Manager's ServiceAccount). */ -export type ProfileReleaseInfoGcpGrant = { +export type SyncReconcileResponseStackSettings = { + compute?: SyncReconcileResponseCompute | any | null | undefined; /** - * AWS IAM actions (only for AWS) + * Deployment model: how updates are delivered to the remote environment. */ - actions?: Array | null | undefined; + deploymentModel?: SyncReconcileResponseDeploymentModel | undefined; + domains?: SyncReconcileResponseDomains | any | null | undefined; /** - * Azure actions (only for Azure) + * External bindings for pre-existing infrastructure. + * + * @remarks + * Allows using existing resources (MinIO, Redis, shared Container Apps + * Environment, etc.) instead of having Alien provision them. + * Required for Kubernetes platform, optional for cloud platforms. */ - dataActions?: Array | null | undefined; + externalBindings?: + | SyncReconcileResponseStackSettingsExternalBindings + | null + | undefined; /** - * GCP permissions that require an exact residual custom role. + * How heartbeat health checks are handled. */ - permissions?: Array | null | undefined; + heartbeats?: SyncReconcileResponseHeartbeats | undefined; + kubernetes?: SyncReconcileResponseKubernetes | any | null | undefined; + network?: + | SyncReconcileResponseNetworkByoVpcAws + | SyncReconcileResponseNetworkByoVpcGcp + | SyncReconcileResponseNetworkByoVnetAzure + | SyncReconcileResponseNetworkUseDefault + | SyncReconcileResponseNetworkCreate + | any + | null + | undefined; /** - * Provider predefined roles to bind directly. + * How telemetry (logs, metrics, traces) is handled. */ - predefinedRoles?: Array | null | undefined; + telemetry?: SyncReconcileResponseTelemetry | undefined; /** - * GCP residual custom permissions to pair with predefined roles. + * How updates are delivered to the deployment. */ - residualPermissions?: Array | null | undefined; + updates?: SyncReconcileResponseUpdates | undefined; }; /** - * GCP-specific platform permission configuration + * Deployment configuration + * + * @remarks + * + * Configuration for how to perform the deployment. + * Note: Credentials (ClientConfig) are passed separately to step() function. */ -export type ProfileReleaseInfoGcp = { +export type TargetConfig = { /** - * Generic binding configuration for permissions + * Allow frozen resource changes during updates + * + * @remarks + * When true, skips the frozen resources compatibility check. + * This requires running with elevated cloud credentials. */ - binding: ProfileReleaseInfoGcpBinding; + allowFrozenChanges?: boolean | undefined; + basePlatform?: SyncReconcileResponseBasePlatformEnum | any | null | undefined; + computeBackend?: + | SyncReconcileResponseComputeBackendHorizon + | any + | null + | undefined; /** - * Short admin-facing description of why this entry exists. + * Human-readable deployment name for cloud console metadata. + * + * @remarks + * + * This is separate from the physical resource prefix in StackState. It is + * used only for display text such as IAM role descriptions, service + * account descriptions, and custom role titles. */ - description?: string | null | undefined; + deploymentName?: string | null | undefined; /** - * Grant permissions for a specific cloud platform + * Deployment token for pull authentication with the manager's registry. + * + * @remarks + * + * Used by controllers to configure registry credentials so cloud platforms + * and K8s can pull images from the manager's `/v2/` endpoint. */ - grant: ProfileReleaseInfoGcpGrant; + deploymentToken?: string | null | undefined; + domainMetadata?: SyncReconcileResponseDomainMetadata | any | null | undefined; /** - * Stable admin-facing label for this permission entry. + * Snapshot of environment variables at a point in time */ - label?: string | null | undefined; -}; - -/** - * Platform-specific permission configurations - */ -export type ProfileReleaseInfoPlatforms = { + environmentVariables: SyncReconcileResponseEnvironmentVariables; /** - * AWS permission configurations + * Map from resource ID to external binding. + * + * @remarks + * + * Validated at runtime: binding type must match resource type. */ - aws?: Array | null | undefined; + externalBindings?: { + [k: string]: + | SyncReconcileResponseExternalBindingsAi + | SyncReconcileResponseExternalBindingsContainerAppsEnvironment + | SyncReconcileResponseExternalBindingsS3 + | SyncReconcileResponseExternalBindingsBlob + | SyncReconcileResponseExternalBindingsGcs + | SyncReconcileResponseExternalBindingsLocalStorage + | SyncReconcileResponseExternalBindingsSqs + | SyncReconcileResponseExternalBindingsPubsub + | SyncReconcileResponseExternalBindingsServicebus + | SyncReconcileResponseExternalBindingsLocalQueue + | SyncReconcileResponseExternalBindingsDynamodb + | SyncReconcileResponseExternalBindingsFirestore + | SyncReconcileResponseExternalBindingsTablestorage + | SyncReconcileResponseExternalBindingsRedis + | SyncReconcileResponseExternalBindingsLocalKv + | SyncReconcileResponseExternalBindingsEcr + | SyncReconcileResponseExternalBindingsAcr + | SyncReconcileResponseExternalBindingsGar + | SyncReconcileResponseExternalBindingsLocal + | SyncReconcileResponseExternalBindingsParameterStore + | SyncReconcileResponseExternalBindingsSecretManager + | SyncReconcileResponseExternalBindingsKeyVault + | SyncReconcileResponseExternalBindingsKubernetesSecret + | SyncReconcileResponseExternalBindingsLocalVault + | SyncReconcileResponseExternalBindingsAurora + | SyncReconcileResponseExternalBindingsCloudSQL + | SyncReconcileResponseExternalBindingsFlexibleServer + | SyncReconcileResponseExternalBindingsExternal + | SyncReconcileResponseExternalBindingsLocalPostgres; + } | undefined; /** - * Azure permission configurations + * Deployer-provided stack input values, keyed by input id. A resource + * + * @remarks + * 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. */ - azure?: Array | null | undefined; + inputValues?: { [k: string]: any | null } | undefined; /** - * GCP permission configurations + * DNS-style label domain used for Kubernetes resource ownership labels. + * + * @remarks + * + * Defaults to `alien.dev` when absent. Whitelabeled Operator builds set this + * so generated workloads and optional log collectors share the same label + * namespace. */ - gcp?: Array | null | undefined; -}; - -/** - * A permission set that can be applied across different cloud platforms - */ -export type ProfileReleaseInfo = { + labelDomain?: string | null | undefined; + managementConfig?: + | SyncReconcileResponseManagementConfigAzure + | SyncReconcileResponseManagementConfigAws + | SyncReconcileResponseManagementConfigGcp + | SyncReconcileResponseManagementConfigKubernetes + | any + | null + | undefined; /** - * Human-readable description of what this permission set allows + * Manager base URL (e.g., "https://manager.alien.dev"). + * + * @remarks + * + * The manager IS the container registry — its `/v2/` endpoint serves as + * the OCI Distribution API. Controllers derive the proxy host from this + * to configure pull auth (RegistryCredentials, imagePullSecrets). + * + * When None (e.g., `alien dev`), controllers use image URIs as-is. */ - description: string; + managerUrl?: string | null | undefined; + monitoring?: SyncReconcileResponseMonitoring | any | null | undefined; /** - * Unique identifier for the permission set (e.g., "storage/data-read") + * Native image registry host+prefix for platforms that require it. + * + * @remarks + * + * Lambda (ECR) and Cloud Run (GAR) require native registry URIs. Other + * runtimes, including Azure Container Apps, pull through the manager's + * registry proxy. + * + * Derived by the manager from the artifact registry binding: + * - ECR: `{account_id}.dkr.ecr.{region}.amazonaws.com/{repository_prefix}` + * - GAR: `{region}-docker.pkg.dev/{project_id}/{repository_name}` */ - id: string; + nativeImageHost?: string | null | undefined; /** - * Platform-specific permission configurations + * When true the observe pass reports raw resources across every namespace + * + * @remarks + * (cluster scope); otherwise it stays within the operator's own namespace. + * The label selector, if any, still filters within whichever scope applies. + * Ignored by cloud observers. */ - platforms: ProfileReleaseInfoPlatforms; -}; - -/** - * Reference to a permission set - either by name or inline definition - */ -export type ReleaseInfoProfileUnion = ProfileReleaseInfo | string; - -/** - * Combined permissions configuration that contains both profiles and management - */ -export type ReleaseInfoPermissions = { + observeAllNamespaces?: boolean | undefined; /** - * Management permissions configuration for stack management access + * Kubernetes label selector that narrows which raw resources the observe + * + * @remarks + * pass reports (e.g. `app.kubernetes.io/part-of=my-app`). `None` observes + * everything in the namespace. Ignored by cloud observers. */ - management?: - | ManagementReleaseInfo1 - | ManagementReleaseInfo2 - | ManagementReleaseInfoEnum - | undefined; + observeLabelSelector?: string | null | undefined; /** - * Permission profiles that define access control for compute services + * Public endpoint URLs for exposed resources (optional override). * * @remarks - * Key is the profile name, value is the permission configuration + * + * Use this only when a caller already knows the public URL. Managed public + * endpoint flows should prefer `domain_metadata` plus controller-reported + * load balancer outputs so DNS, certificate renewal, and route readiness + * stay tied to the resource state. + * + * If not set, platforms determine public endpoint URLs from other sources: + * - Managed DNS/TLS flows: `domain_metadata` FQDN or load balancer DNS + * - Local: `http://localhost:{allocated_port}` + * - Custom or disabled exposure: no public endpoint URL unless a controller reports one + * + * Outer key: resource ID. Inner key: endpoint name. Value: public URL. */ - profiles: { - [k: string]: { [k: string]: Array }; - }; + publicEndpoints?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * User-customizable deployment settings specified at deploy time. + * + * @remarks + * + * These settings are provided by the customer via CloudFormation parameters, + * Terraform attributes, CLI flags, or Helm values. They customize how the + * deployment runs and what capabilities are enabled. + * + * **Key distinction**: StackSettings is user-customizable, while ManagementConfig + * is platform-derived (from the Manager's ServiceAccount). + */ + stackSettings?: SyncReconcileResponseStackSettings | undefined; }; -/** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. - */ -export type ReleaseInfoConfig = { +export const ReleaseInfoTypeStringList = { + StringList: "stringList", +} as const; +export type ReleaseInfoTypeStringList = ClosedEnum< + typeof ReleaseInfoTypeStringList +>; + +export type DefaultReleaseInfoStringList = { + type: ReleaseInfoTypeStringList; /** - * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. + * String list default. */ - id: string; + value: Array; +}; + +export const ReleaseInfoTypeBoolean = { + Boolean: "boolean", +} as const; +export type ReleaseInfoTypeBoolean = ClosedEnum; + +export type DefaultReleaseInfoBoolean = { + type: ReleaseInfoTypeBoolean; /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + * Boolean default. */ - type: string; - additionalProperties?: { [k: string]: any | null } | undefined; + value: boolean; }; -/** - * Reference to a resource by its stable id and resource type. - */ -export type ReleaseInfoDependency = { - id: string; +export const ReleaseInfoTypeNumber = { + Number: "number", +} as const; +export type ReleaseInfoTypeNumber = ClosedEnum; + +export type DefaultReleaseInfoNumber = { + type: ReleaseInfoTypeNumber; /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + * Number default. */ - type: string; + value: string; +}; + +export const ReleaseInfoTypeString = { + String: "string", +} as const; +export type ReleaseInfoTypeString = ClosedEnum; + +export type DefaultReleaseInfoString = { + type: ReleaseInfoTypeString; + /** + * String default. + */ + value: string; }; +export type ReleaseInfoDefaultUnion = + | DefaultReleaseInfoString + | DefaultReleaseInfoNumber + | DefaultReleaseInfoBoolean + | DefaultReleaseInfoStringList + | any; + /** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + * Environment variable handling for a stack input mapping. */ -export const ReleaseInfoLifecycle = { - Frozen: "frozen", - Live: "live", +export const TypeReleaseInfoEnvEnum = { + Plain: "plain", + Secret: "secret", } as const; /** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + * Environment variable handling for a stack input mapping. */ -export type ReleaseInfoLifecycle = ClosedEnum; +export type TypeReleaseInfoEnvEnum = ClosedEnum; -export type ReleaseInfoResources = { - /** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. - */ - config: ReleaseInfoConfig; - /** - * Additional dependencies for this resource beyond those defined in the resource itself. - * - * @remarks - * The total dependencies are: resource.get_dependencies() + this list - */ - dependencies: Array; +export type ReleaseInfoTypeUnion = TypeReleaseInfoEnvEnum | any; + +/** + * How a resolved stack input is injected into runtime environment variables. + */ +export type ReleaseInfoEnv = { /** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + * Environment variable name. */ - lifecycle: ReleaseInfoLifecycle; + name: string; /** - * Enable remote bindings for this resource (BYOB use case). - * - * @remarks - * When true, binding params are synced to StackState's `remote_binding_params`. - * Default: false (prevents sensitive data in synced state). + * Target resource IDs or patterns. None means every env-capable resource. */ - remoteAccess?: boolean | undefined; + targetResources?: Array | null | undefined; + type?: TypeReleaseInfoEnvEnum | any | null | undefined; }; +/** + * Primitive stack input kind. + */ +export const ReleaseInfoKind = { + String: "string", + Secret: "secret", + Number: "number", + Integer: "integer", + Boolean: "boolean", + Enum: "enum", + StringList: "stringList", +} as const; +/** + * Primitive stack input kind. + */ +export type ReleaseInfoKind = ClosedEnum; + /** * Represents the target cloud platform. */ -export const ReleaseInfoSupportedPlatform = { +export const ReleaseInfoPlatform = { Aws: "aws", Gcp: "gcp", Azure: "azure", @@ -11406,928 +12006,4553 @@ export const ReleaseInfoSupportedPlatform = { /** * Represents the target cloud platform. */ -export type ReleaseInfoSupportedPlatform = ClosedEnum< - typeof ReleaseInfoSupportedPlatform ->; +export type ReleaseInfoPlatform = ClosedEnum; /** - * A bag of resources, unaware of any cloud. + * Who can provide a stack input value. */ -export type ReleaseInfoStack = { +export const ReleaseInfoProvidedBy = { + Developer: "developer", + Deployer: "deployer", +} as const; +/** + * Who can provide a stack input value. + */ +export type ReleaseInfoProvidedBy = ClosedEnum; + +/** + * Portable stack input validation constraints. + */ +export type ValidationReleaseInfo = { /** - * Unique identifier for the stack + * Semantic format hint such as url. */ - id: string; + format?: string | null | undefined; /** - * Input definitions required before setup or deployment can proceed. + * Maximum number. */ - inputs?: Array | undefined; + max?: string | null | undefined; /** - * Combined permissions configuration that contains both profiles and management + * Maximum string-list items. */ - permissions?: ReleaseInfoPermissions | undefined; + maxItems?: number | null | undefined; /** - * Map of resource IDs to their configurations and lifecycle settings + * Maximum string length. */ - resources: { [k: string]: ReleaseInfoResources }; + maxLength?: number | null | undefined; /** - * Which platforms this stack supports. When None, all platforms are supported. + * Minimum number. */ - supportedPlatforms?: Array | null | undefined; + min?: string | null | undefined; + /** + * Minimum string-list items. + */ + minItems?: number | null | undefined; + /** + * Minimum string length. + */ + minLength?: number | null | undefined; + /** + * Portable whole-value regex pattern. + */ + pattern?: string | null | undefined; + /** + * Allowed string enum values. + */ + values?: Array | null | undefined; }; +export type ReleaseInfoValidationUnion = ValidationReleaseInfo | any; + /** - * Release metadata - * - * @remarks - * - * Identifies a specific release version and includes the stack definition. - * The deployment engine uses this to track which release is currently deployed - * and which is the target. + * Stack input definition serialized into a release stack. */ -export type ReleaseInfo = { +export type ReleaseInfoInput = { + default?: + | DefaultReleaseInfoString + | DefaultReleaseInfoNumber + | DefaultReleaseInfoBoolean + | DefaultReleaseInfoStringList + | any + | null + | undefined; /** - * Short description of the release + * Human-facing helper text. */ - description?: string | null | undefined; + description: string; /** - * Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no - * - * @remarks - * Alien-assigned release — the platform resolves a release from `version`. + * Runtime env-var mappings for v1 input resolution. */ - releaseId?: string | null | undefined; + env?: Array | undefined; /** - * A bag of resources, unaware of any cloud. + * Stable input ID used by CLI/API calls. */ - stack: ReleaseInfoStack; + id: string; /** - * Version string (e.g., 2.1.0) + * Primitive stack input kind. */ - version?: string | null | undefined; + kind: ReleaseInfoKind; + /** + * Human-facing field label. + */ + label: string; + /** + * Example placeholder shown in UI. + */ + placeholder?: string | null | undefined; + /** + * Platforms where this input applies. + */ + platforms?: Array | null | undefined; + /** + * Who can provide this value. + */ + providedBy: Array; + /** + * Whether a resolved value is required before deployment can proceed. + */ + required: boolean; + validation?: ValidationReleaseInfo | any | null | undefined; }; +export const ManagementReleaseInfoEnum = { + Auto: "auto", +} as const; +export type ManagementReleaseInfoEnum = ClosedEnum< + typeof ManagementReleaseInfoEnum +>; + /** - * Target deployment if update is needed + * AWS-specific binding specification */ -export type SyncReconcileResponseTarget = { +export type OverrideReleaseInfoAwResource = { /** - * Deployment configuration - * - * @remarks - * - * Configuration for how to perform the deployment. - * Note: Credentials (ClientConfig) are passed separately to step() function. + * Optional condition for additional filtering (rare) */ - config: TargetConfig; + condition?: { [k: string]: { [k: string]: string } } | null | undefined; /** - * Release metadata - * - * @remarks - * - * Identifies a specific release version and includes the stack definition. - * The deployment engine uses this to track which release is currently deployed - * and which is the target. + * Resource ARNs to bind to */ - releaseInfo: ReleaseInfo; + resources: Array; }; /** - * State reconciliation result with optional target + * AWS-specific binding specification */ -export type SyncReconcileResponse = { +export type OverrideReleaseInfoAwStack = { /** - * Whether the state was reconciled + * Optional condition for additional filtering (rare) */ - success: boolean; + condition?: { [k: string]: { [k: string]: string } } | null | undefined; /** - * Current deployment state after reconciliation + * Resource ARNs to bind to */ - current: SyncReconcileResponseCurrent; + resources: Array; +}; + +/** + * Generic binding configuration for permissions + */ +export type OverrideReleaseInfoAwBinding = { /** - * Target deployment if update is needed + * AWS-specific binding specification */ - target?: SyncReconcileResponseTarget | undefined; + resource?: OverrideReleaseInfoAwResource | undefined; + /** + * AWS-specific binding specification + */ + stack?: OverrideReleaseInfoAwStack | undefined; }; -/** @internal */ -export const SyncReconcileResponseCurrentReleaseTypeStringList$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponseCurrentReleaseTypeStringList, - ); +/** + * IAM effect. Defaults to Allow. + */ +export const OverrideReleaseInfoEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type OverrideReleaseInfoEffect = ClosedEnum< + typeof OverrideReleaseInfoEffect +>; -/** @internal */ -export const SyncReconcileResponseCurrentReleaseDefaultStringList$inboundSchema: - z.ZodType = z - .object({ - type: SyncReconcileResponseCurrentReleaseTypeStringList$inboundSchema, - value: z.array(z.string()), - }); +/** + * Grant permissions for a specific cloud platform + */ +export type OverrideReleaseInfoAwGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type OverrideReleaseInfoAw = { + /** + * Generic binding configuration for permissions + */ + binding: OverrideReleaseInfoAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: OverrideReleaseInfoEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: OverrideReleaseInfoAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Azure-specific binding specification + */ +export type OverrideReleaseInfoAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Azure-specific binding specification + */ +export type OverrideReleaseInfoAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type OverrideReleaseInfoAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: OverrideReleaseInfoAzureResource | undefined; + /** + * Azure-specific binding specification + */ + stack?: OverrideReleaseInfoAzureStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type OverrideReleaseInfoAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * Azure-specific platform permission configuration + */ +export type OverrideReleaseInfoAzure = { + /** + * Generic binding configuration for permissions + */ + binding: OverrideReleaseInfoAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: OverrideReleaseInfoAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * GCP IAM condition + */ +export type OverrideConditionReleaseInfoResource = { + expression: string; + title: string; +}; + +export type OverrideReleaseInfoResourceConditionUnion = + | OverrideConditionReleaseInfoResource + | any; + +/** + * GCP-specific binding specification + */ +export type OverrideReleaseInfoGcpResource = { + condition?: OverrideConditionReleaseInfoResource | any | null | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * GCP IAM condition + */ +export type OverrideConditionReleaseInfo = { + expression: string; + title: string; +}; + +export type OverrideReleaseInfoConditionUnion = + | OverrideConditionReleaseInfo + | any; + +/** + * GCP-specific binding specification + */ +export type OverrideReleaseInfoGcpStack = { + condition?: OverrideConditionReleaseInfo | any | null | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type OverrideReleaseInfoGcpBinding = { + /** + * GCP-specific binding specification + */ + resource?: OverrideReleaseInfoGcpResource | undefined; + /** + * GCP-specific binding specification + */ + stack?: OverrideReleaseInfoGcpStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type OverrideReleaseInfoGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * GCP-specific platform permission configuration + */ +export type OverrideReleaseInfoGcp = { + /** + * Generic binding configuration for permissions + */ + binding: OverrideReleaseInfoGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: OverrideReleaseInfoGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Platform-specific permission configurations + */ +export type OverrideReleaseInfoPlatforms = { + /** + * AWS permission configurations + */ + aws?: Array | null | undefined; + /** + * Azure permission configurations + */ + azure?: Array | null | undefined; + /** + * GCP permission configurations + */ + gcp?: Array | null | undefined; +}; + +/** + * A permission set that can be applied across different cloud platforms + */ +export type OverrideReleaseInfo = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: OverrideReleaseInfoPlatforms; +}; + +/** + * Reference to a permission set - either by name or inline definition + */ +export type ReleaseInfoOverrideUnion = OverrideReleaseInfo | string; + +export type ManagementReleaseInfo2 = { + /** + * Permission profile that maps resources to permission sets + * + * @remarks + * Key can be "*" for all resources or resource name for specific resource + */ + override: { [k: string]: Array }; +}; + +/** + * AWS-specific binding specification + */ +export type ExtendReleaseInfoAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type ExtendReleaseInfoAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * Generic binding configuration for permissions + */ +export type ExtendReleaseInfoAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: ExtendReleaseInfoAwResource | undefined; + /** + * AWS-specific binding specification + */ + stack?: ExtendReleaseInfoAwStack | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const ExtendReleaseInfoEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type ExtendReleaseInfoEffect = ClosedEnum< + typeof ExtendReleaseInfoEffect +>; + +/** + * Grant permissions for a specific cloud platform + */ +export type ExtendReleaseInfoAwGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type ExtendReleaseInfoAw = { + /** + * Generic binding configuration for permissions + */ + binding: ExtendReleaseInfoAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: ExtendReleaseInfoEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: ExtendReleaseInfoAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Azure-specific binding specification + */ +export type ExtendReleaseInfoAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Azure-specific binding specification + */ +export type ExtendReleaseInfoAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type ExtendReleaseInfoAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: ExtendReleaseInfoAzureResource | undefined; + /** + * Azure-specific binding specification + */ + stack?: ExtendReleaseInfoAzureStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type ExtendReleaseInfoAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * Azure-specific platform permission configuration + */ +export type ExtendReleaseInfoAzure = { + /** + * Generic binding configuration for permissions + */ + binding: ExtendReleaseInfoAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: ExtendReleaseInfoAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * GCP IAM condition + */ +export type ExtendConditionReleaseInfoResource = { + expression: string; + title: string; +}; + +export type ExtendReleaseInfoResourceConditionUnion = + | ExtendConditionReleaseInfoResource + | any; + +/** + * GCP-specific binding specification + */ +export type ExtendReleaseInfoGcpResource = { + condition?: ExtendConditionReleaseInfoResource | any | null | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * GCP IAM condition + */ +export type ExtendConditionReleaseInfo = { + expression: string; + title: string; +}; + +export type ExtendReleaseInfoConditionUnion = ExtendConditionReleaseInfo | any; + +/** + * GCP-specific binding specification + */ +export type ExtendReleaseInfoGcpStack = { + condition?: ExtendConditionReleaseInfo | any | null | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type ExtendReleaseInfoGcpBinding = { + /** + * GCP-specific binding specification + */ + resource?: ExtendReleaseInfoGcpResource | undefined; + /** + * GCP-specific binding specification + */ + stack?: ExtendReleaseInfoGcpStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type ExtendReleaseInfoGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * GCP-specific platform permission configuration + */ +export type ExtendReleaseInfoGcp = { + /** + * Generic binding configuration for permissions + */ + binding: ExtendReleaseInfoGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: ExtendReleaseInfoGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Platform-specific permission configurations + */ +export type ExtendReleaseInfoPlatforms = { + /** + * AWS permission configurations + */ + aws?: Array | null | undefined; + /** + * Azure permission configurations + */ + azure?: Array | null | undefined; + /** + * GCP permission configurations + */ + gcp?: Array | null | undefined; +}; + +/** + * A permission set that can be applied across different cloud platforms + */ +export type ExtendReleaseInfo = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: ExtendReleaseInfoPlatforms; +}; + +/** + * Reference to a permission set - either by name or inline definition + */ +export type ReleaseInfoExtendUnion = ExtendReleaseInfo | string; + +export type ManagementReleaseInfo1 = { + /** + * Permission profile that maps resources to permission sets + * + * @remarks + * Key can be "*" for all resources or resource name for specific resource + */ + extend: { [k: string]: Array }; +}; + +/** + * Management permissions configuration for stack management access + */ +export type ReleaseInfoManagementUnion = + | ManagementReleaseInfo1 + | ManagementReleaseInfo2 + | ManagementReleaseInfoEnum; + +/** + * AWS-specific binding specification + */ +export type ProfileReleaseInfoAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type ProfileReleaseInfoAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * Generic binding configuration for permissions + */ +export type ProfileReleaseInfoAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: ProfileReleaseInfoAwResource | undefined; + /** + * AWS-specific binding specification + */ + stack?: ProfileReleaseInfoAwStack | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const ProfileReleaseInfoEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type ProfileReleaseInfoEffect = ClosedEnum< + typeof ProfileReleaseInfoEffect +>; + +/** + * Grant permissions for a specific cloud platform + */ +export type ProfileReleaseInfoAwGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type ProfileReleaseInfoAw = { + /** + * Generic binding configuration for permissions + */ + binding: ProfileReleaseInfoAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: ProfileReleaseInfoEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: ProfileReleaseInfoAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Azure-specific binding specification + */ +export type ProfileReleaseInfoAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Azure-specific binding specification + */ +export type ProfileReleaseInfoAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type ProfileReleaseInfoAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: ProfileReleaseInfoAzureResource | undefined; + /** + * Azure-specific binding specification + */ + stack?: ProfileReleaseInfoAzureStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type ProfileReleaseInfoAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * Azure-specific platform permission configuration + */ +export type ProfileReleaseInfoAzure = { + /** + * Generic binding configuration for permissions + */ + binding: ProfileReleaseInfoAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: ProfileReleaseInfoAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * GCP IAM condition + */ +export type ProfileConditionReleaseInfoResource = { + expression: string; + title: string; +}; + +export type ProfileReleaseInfoResourceConditionUnion = + | ProfileConditionReleaseInfoResource + | any; + +/** + * GCP-specific binding specification + */ +export type ProfileReleaseInfoGcpResource = { + condition?: ProfileConditionReleaseInfoResource | any | null | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * GCP IAM condition + */ +export type ProfileConditionReleaseInfo = { + expression: string; + title: string; +}; + +export type ProfileReleaseInfoConditionUnion = + | ProfileConditionReleaseInfo + | any; + +/** + * GCP-specific binding specification + */ +export type ProfileReleaseInfoGcpStack = { + condition?: ProfileConditionReleaseInfo | any | null | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type ProfileReleaseInfoGcpBinding = { + /** + * GCP-specific binding specification + */ + resource?: ProfileReleaseInfoGcpResource | undefined; + /** + * GCP-specific binding specification + */ + stack?: ProfileReleaseInfoGcpStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type ProfileReleaseInfoGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * GCP-specific platform permission configuration + */ +export type ProfileReleaseInfoGcp = { + /** + * Generic binding configuration for permissions + */ + binding: ProfileReleaseInfoGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: ProfileReleaseInfoGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Platform-specific permission configurations + */ +export type ProfileReleaseInfoPlatforms = { + /** + * AWS permission configurations + */ + aws?: Array | null | undefined; + /** + * Azure permission configurations + */ + azure?: Array | null | undefined; + /** + * GCP permission configurations + */ + gcp?: Array | null | undefined; +}; + +/** + * A permission set that can be applied across different cloud platforms + */ +export type ProfileReleaseInfo = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: ProfileReleaseInfoPlatforms; +}; + +/** + * Reference to a permission set - either by name or inline definition + */ +export type ReleaseInfoProfileUnion = ProfileReleaseInfo | string; + +/** + * Combined permissions configuration that contains both profiles and management + */ +export type ReleaseInfoPermissions = { + /** + * Management permissions configuration for stack management access + */ + management?: + | ManagementReleaseInfo1 + | ManagementReleaseInfo2 + | ManagementReleaseInfoEnum + | undefined; + /** + * Permission profiles that define access control for compute services + * + * @remarks + * Key is the profile name, value is the permission configuration + */ + profiles: { + [k: string]: { [k: string]: Array }; + }; +}; + +/** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ +export type ReleaseInfoConfig = { + /** + * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. + */ + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; +}; + +/** + * Reference to a resource by its stable id and resource type. + */ +export type ReleaseInfoDependency = { + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; +}; + +/** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ +export const ReleaseInfoLifecycle = { + Frozen: "frozen", + Live: "live", +} as const; +/** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ +export type ReleaseInfoLifecycle = ClosedEnum; + +export type ReleaseInfoResources = { + /** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ + config: ReleaseInfoConfig; + /** + * Additional dependencies for this resource beyond those defined in the resource itself. + * + * @remarks + * The total dependencies are: resource.get_dependencies() + this list + */ + dependencies: Array; + /** + * Id of the boolean stack input that decides whether this resource is + * + * @remarks + * 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. + */ + enabledWhen?: string | null | undefined; + /** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ + lifecycle: ReleaseInfoLifecycle; + /** + * Enable remote bindings for this resource (BYOB use case). + * + * @remarks + * When true, binding params are synced to StackState's `remote_binding_params`. + * Default: false (prevents sensitive data in synced state). + */ + remoteAccess?: boolean | undefined; +}; + +/** + * Represents the target cloud platform. + */ +export const ReleaseInfoSupportedPlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Machines: "machines", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type ReleaseInfoSupportedPlatform = ClosedEnum< + typeof ReleaseInfoSupportedPlatform +>; + +/** + * A bag of resources, unaware of any cloud. + */ +export type ReleaseInfoStack = { + /** + * Unique identifier for the stack + */ + id: string; + /** + * Input definitions required before setup or deployment can proceed. + */ + inputs?: Array | undefined; + /** + * Combined permissions configuration that contains both profiles and management + */ + permissions?: ReleaseInfoPermissions | undefined; + /** + * Map of resource IDs to their configurations and lifecycle settings + */ + resources: { [k: string]: ReleaseInfoResources }; + /** + * Which platforms this stack supports. When None, all platforms are supported. + */ + supportedPlatforms?: Array | null | undefined; +}; + +/** + * Release metadata + * + * @remarks + * + * Identifies a specific release version and includes the stack definition. + * The deployment engine uses this to track which release is currently deployed + * and which is the target. + */ +export type ReleaseInfo = { + /** + * Short description of the release + */ + description?: string | null | undefined; + /** + * Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no + * + * @remarks + * Alien-assigned release — the platform resolves a release from `version`. + */ + releaseId?: string | null | undefined; + /** + * A bag of resources, unaware of any cloud. + */ + stack: ReleaseInfoStack; + /** + * Version string (e.g., 2.1.0) + */ + version?: string | null | undefined; +}; + +/** + * Target deployment if update is needed + */ +export type SyncReconcileResponseTarget = { + /** + * Deployment configuration + * + * @remarks + * + * Configuration for how to perform the deployment. + * Note: Credentials (ClientConfig) are passed separately to step() function. + */ + config: TargetConfig; + /** + * Release metadata + * + * @remarks + * + * Identifies a specific release version and includes the stack definition. + * The deployment engine uses this to track which release is currently deployed + * and which is the target. + */ + releaseInfo: ReleaseInfo; +}; + +/** + * State reconciliation result with optional target + */ +export type SyncReconcileResponse = { + /** + * Whether the state was reconciled + */ + success: boolean; + /** + * Current deployment state after reconciliation + */ + current: SyncReconcileResponseCurrent; + /** + * Target deployment if update is needed + */ + target?: SyncReconcileResponseTarget | undefined; +}; + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseTypeStringList$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponseCurrentReleaseTypeStringList, + ); + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseDefaultStringList$inboundSchema: + z.ZodType = z + .object({ + type: SyncReconcileResponseCurrentReleaseTypeStringList$inboundSchema, + value: z.array(z.string()), + }); + +export function syncReconcileResponseCurrentReleaseDefaultStringListFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseDefaultStringList, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseDefaultStringList$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseDefaultStringList' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseTypeBoolean$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponseCurrentReleaseTypeBoolean, + ); + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseDefaultBoolean$inboundSchema: + z.ZodType = z + .object({ + type: SyncReconcileResponseCurrentReleaseTypeBoolean$inboundSchema, + value: z.boolean(), + }); + +export function syncReconcileResponseCurrentReleaseDefaultBooleanFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseDefaultBoolean, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseDefaultBoolean$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseDefaultBoolean' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseTypeNumber$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponseCurrentReleaseTypeNumber, + ); + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseDefaultNumber$inboundSchema: + z.ZodType = z + .object({ + type: SyncReconcileResponseCurrentReleaseTypeNumber$inboundSchema, + value: z.string(), + }); + +export function syncReconcileResponseCurrentReleaseDefaultNumberFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseDefaultNumber, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseDefaultNumber$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseDefaultNumber' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseTypeString$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponseCurrentReleaseTypeString, + ); + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseDefaultString$inboundSchema: + z.ZodType = z + .object({ + type: SyncReconcileResponseCurrentReleaseTypeString$inboundSchema, + value: z.string(), + }); + +export function syncReconcileResponseCurrentReleaseDefaultStringFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseDefaultString, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseDefaultString$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseDefaultString' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseDefaultUnion$inboundSchema: + z.ZodType = z.union( + [ + z.lazy(() => + SyncReconcileResponseCurrentReleaseDefaultString$inboundSchema + ), + z.lazy(() => + SyncReconcileResponseCurrentReleaseDefaultNumber$inboundSchema + ), + z.lazy(() => + SyncReconcileResponseCurrentReleaseDefaultBoolean$inboundSchema + ), + z.lazy(() => + SyncReconcileResponseCurrentReleaseDefaultStringList$inboundSchema + ), + z.any(), + ], + ); + +export function syncReconcileResponseCurrentReleaseDefaultUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseDefaultUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseDefaultUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseDefaultUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseTypeEnvEnum$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponseCurrentReleaseTypeEnvEnum, + ); + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseTypeUnion$inboundSchema: + z.ZodType = z.union([ + SyncReconcileResponseCurrentReleaseTypeEnvEnum$inboundSchema, + z.any(), + ]); + +export function syncReconcileResponseCurrentReleaseTypeUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseTypeUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseTypeUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseTypeUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseEnv$inboundSchema: z.ZodType< + SyncReconcileResponseCurrentReleaseEnv, + unknown +> = z.object({ + name: z.string(), + targetResources: z.nullable(z.array(z.string())).optional(), + type: z.nullable( + z.union([ + SyncReconcileResponseCurrentReleaseTypeEnvEnum$inboundSchema, + z.any(), + ]), + ).optional(), +}); + +export function syncReconcileResponseCurrentReleaseEnvFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseEnv$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseCurrentReleaseEnv' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseKind$inboundSchema: z.ZodEnum< + typeof SyncReconcileResponseCurrentReleaseKind +> = z.enum(SyncReconcileResponseCurrentReleaseKind); + +/** @internal */ +export const SyncReconcileResponseCurrentReleasePlatform$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponseCurrentReleasePlatform, + ); + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseProvidedBy$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponseCurrentReleaseProvidedBy, + ); + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseValidation$inboundSchema: + z.ZodType = z.object({ + format: z.nullable(z.string()).optional(), + max: z.nullable(z.string()).optional(), + maxItems: z.nullable(z.int()).optional(), + maxLength: z.nullable(z.int()).optional(), + min: z.nullable(z.string()).optional(), + minItems: z.nullable(z.int()).optional(), + minLength: z.nullable(z.int()).optional(), + pattern: z.nullable(z.string()).optional(), + values: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileResponseCurrentReleaseValidationFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseValidation, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseValidation$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseValidation' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseValidationUnion$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => SyncReconcileResponseCurrentReleaseValidation$inboundSchema), + z.any(), + ]); + +export function syncReconcileResponseCurrentReleaseValidationUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseValidationUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseValidationUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseValidationUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseInput$inboundSchema: z.ZodType< + SyncReconcileResponseCurrentReleaseInput, + unknown +> = z.object({ + default: z.nullable( + z.union([ + z.lazy(() => + SyncReconcileResponseCurrentReleaseDefaultString$inboundSchema + ), + z.lazy(() => + SyncReconcileResponseCurrentReleaseDefaultNumber$inboundSchema + ), + z.lazy(() => + SyncReconcileResponseCurrentReleaseDefaultBoolean$inboundSchema + ), + z.lazy(() => + SyncReconcileResponseCurrentReleaseDefaultStringList$inboundSchema + ), + z.any(), + ]), + ).optional(), + description: z.string(), + env: z.array( + z.lazy(() => SyncReconcileResponseCurrentReleaseEnv$inboundSchema), + ).optional(), + id: z.string(), + kind: SyncReconcileResponseCurrentReleaseKind$inboundSchema, + label: z.string(), + placeholder: z.nullable(z.string()).optional(), + platforms: z.nullable( + z.array(SyncReconcileResponseCurrentReleasePlatform$inboundSchema), + ).optional(), + providedBy: z.array( + SyncReconcileResponseCurrentReleaseProvidedBy$inboundSchema, + ), + required: z.boolean(), + validation: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseCurrentReleaseValidation$inboundSchema), + z.any(), + ]), + ).optional(), +}); + +export function syncReconcileResponseCurrentReleaseInputFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseInput, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseInput$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseInput' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseManagementEnum$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponseCurrentReleaseManagementEnum, + ); + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseOverrideAwResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncReconcileResponseCurrentReleaseOverrideAwResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseOverrideAwResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseOverrideAwResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideAwResource' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseOverrideAwStack$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncReconcileResponseCurrentReleaseOverrideAwStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseOverrideAwStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseOverrideAwStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideAwStack' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseOverrideAwBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncReconcileResponseCurrentReleaseOverrideAwResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileResponseCurrentReleaseOverrideAwStack$inboundSchema + ).optional(), + }); + +export function syncReconcileResponseCurrentReleaseOverrideAwBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseOverrideAwBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseOverrideAwBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideAwBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseOverrideEffect$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponseCurrentReleaseOverrideEffect, + ); + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseOverrideAwGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileResponseCurrentReleaseOverrideAwGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseOverrideAwGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseOverrideAwGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideAwGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseOverrideAw$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + SyncReconcileResponseCurrentReleaseOverrideAwBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: SyncReconcileResponseCurrentReleaseOverrideEffect$inboundSchema + .optional(), + grant: z.lazy(() => + SyncReconcileResponseCurrentReleaseOverrideAwGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileResponseCurrentReleaseOverrideAwFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseOverrideAw, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseOverrideAw$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideAw' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseOverrideAzureResource$inboundSchema: + z.ZodType = + z.object({ + scope: z.string(), + }); + +export function syncReconcileResponseCurrentReleaseOverrideAzureResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseOverrideAzureResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseOverrideAzureResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideAzureResource' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseOverrideAzureStack$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); + +export function syncReconcileResponseCurrentReleaseOverrideAzureStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseOverrideAzureStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseOverrideAzureStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideAzureStack' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseOverrideAzureBinding$inboundSchema: + z.ZodType = + z.object({ + resource: z.lazy(() => + SyncReconcileResponseCurrentReleaseOverrideAzureResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileResponseCurrentReleaseOverrideAzureStack$inboundSchema + ).optional(), + }); + +export function syncReconcileResponseCurrentReleaseOverrideAzureBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseOverrideAzureBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseOverrideAzureBinding$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideAzureBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseOverrideAzureGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileResponseCurrentReleaseOverrideAzureGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseOverrideAzureGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseOverrideAzureGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideAzureGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseOverrideAzure$inboundSchema: + z.ZodType = z + .object({ + binding: z.lazy(() => + SyncReconcileResponseCurrentReleaseOverrideAzureBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileResponseCurrentReleaseOverrideAzureGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileResponseCurrentReleaseOverrideAzureFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseOverrideAzure, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseOverrideAzure$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideAzure' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseOverrideConditionResource$inboundSchema: + z.ZodType< + SyncReconcileResponseCurrentReleaseOverrideConditionResource, + unknown + > = z.object({ + expression: z.string(), + title: z.string(), + }); + +export function syncReconcileResponseCurrentReleaseOverrideConditionResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseOverrideConditionResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseOverrideConditionResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideConditionResource' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseOverrideResourceConditionUnion$inboundSchema: + z.ZodType< + SyncReconcileResponseCurrentReleaseOverrideResourceConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncReconcileResponseCurrentReleaseOverrideConditionResource$inboundSchema + ), + z.any(), + ]); + +export function syncReconcileResponseCurrentReleaseOverrideResourceConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseOverrideResourceConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseOverrideResourceConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideResourceConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseOverrideGcpResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncReconcileResponseCurrentReleaseOverrideConditionResource$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncReconcileResponseCurrentReleaseOverrideGcpResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseOverrideGcpResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseOverrideGcpResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideGcpResource' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseOverrideCondition$inboundSchema: + z.ZodType = z + .object({ + expression: z.string(), + title: z.string(), + }); + +export function syncReconcileResponseCurrentReleaseOverrideConditionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseOverrideCondition, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseOverrideCondition$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideCondition' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseOverrideConditionUnion$inboundSchema: + z.ZodType< + SyncReconcileResponseCurrentReleaseOverrideConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncReconcileResponseCurrentReleaseOverrideCondition$inboundSchema + ), + z.any(), + ]); + +export function syncReconcileResponseCurrentReleaseOverrideConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseOverrideConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseOverrideConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseOverrideGcpStack$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncReconcileResponseCurrentReleaseOverrideCondition$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncReconcileResponseCurrentReleaseOverrideGcpStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseOverrideGcpStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseOverrideGcpStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideGcpStack' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseOverrideGcpBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncReconcileResponseCurrentReleaseOverrideGcpResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileResponseCurrentReleaseOverrideGcpStack$inboundSchema + ).optional(), + }); + +export function syncReconcileResponseCurrentReleaseOverrideGcpBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseOverrideGcpBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseOverrideGcpBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideGcpBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseOverrideGcpGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileResponseCurrentReleaseOverrideGcpGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseOverrideGcpGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseOverrideGcpGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideGcpGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseOverrideGcp$inboundSchema: + z.ZodType = z.object( + { + binding: z.lazy(() => + SyncReconcileResponseCurrentReleaseOverrideGcpBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileResponseCurrentReleaseOverrideGcpGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }, + ); + +export function syncReconcileResponseCurrentReleaseOverrideGcpFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseOverrideGcp, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseOverrideGcp$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideGcp' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseOverridePlatforms$inboundSchema: + z.ZodType = z + .object({ + aws: z.nullable( + z.array(z.lazy(() => + SyncReconcileResponseCurrentReleaseOverrideAw$inboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + SyncReconcileResponseCurrentReleaseOverrideAzure$inboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + SyncReconcileResponseCurrentReleaseOverrideGcp$inboundSchema + )), + ).optional(), + }); + +export function syncReconcileResponseCurrentReleaseOverridePlatformsFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseOverridePlatforms, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseOverridePlatforms$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseOverridePlatforms' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseOverride$inboundSchema: + z.ZodType = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncReconcileResponseCurrentReleaseOverridePlatforms$inboundSchema + ), + }); + +export function syncReconcileResponseCurrentReleaseOverrideFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseOverride, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseOverride$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseOverride' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseOverrideUnion$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => SyncReconcileResponseCurrentReleaseOverride$inboundSchema), + z.string(), + ]); + +export function syncReconcileResponseCurrentReleaseOverrideUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseOverrideUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseOverrideUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseManagement2$inboundSchema: + z.ZodType = z.object( + { + override: z.record( + z.string(), + z.array( + z.union([ + z.lazy(() => + SyncReconcileResponseCurrentReleaseOverride$inboundSchema + ), + z.string(), + ]), + ), + ), + }, + ); + +export function syncReconcileResponseCurrentReleaseManagement2FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseManagement2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseManagement2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseManagement2' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseExtendAwResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncReconcileResponseCurrentReleaseExtendAwResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseExtendAwResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseExtendAwResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendAwResource' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseExtendAwStack$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncReconcileResponseCurrentReleaseExtendAwStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseExtendAwStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseExtendAwStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendAwStack' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseExtendAwBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncReconcileResponseCurrentReleaseExtendAwResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileResponseCurrentReleaseExtendAwStack$inboundSchema + ).optional(), + }); + +export function syncReconcileResponseCurrentReleaseExtendAwBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseExtendAwBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseExtendAwBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendAwBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseExtendEffect$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponseCurrentReleaseExtendEffect, + ); + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseExtendAwGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileResponseCurrentReleaseExtendAwGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseExtendAwGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseExtendAwGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendAwGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseExtendAw$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + SyncReconcileResponseCurrentReleaseExtendAwBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: SyncReconcileResponseCurrentReleaseExtendEffect$inboundSchema + .optional(), + grant: z.lazy(() => + SyncReconcileResponseCurrentReleaseExtendAwGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileResponseCurrentReleaseExtendAwFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseExtendAw, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseExtendAw$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendAw' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseExtendAzureResource$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); + +export function syncReconcileResponseCurrentReleaseExtendAzureResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseExtendAzureResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseExtendAzureResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendAzureResource' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseExtendAzureStack$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); + +export function syncReconcileResponseCurrentReleaseExtendAzureStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseExtendAzureStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseExtendAzureStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendAzureStack' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseExtendAzureBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncReconcileResponseCurrentReleaseExtendAzureResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileResponseCurrentReleaseExtendAzureStack$inboundSchema + ).optional(), + }); + +export function syncReconcileResponseCurrentReleaseExtendAzureBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseExtendAzureBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseExtendAzureBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendAzureBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseExtendAzureGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileResponseCurrentReleaseExtendAzureGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseExtendAzureGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseExtendAzureGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendAzureGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseExtendAzure$inboundSchema: + z.ZodType = z.object( + { + binding: z.lazy(() => + SyncReconcileResponseCurrentReleaseExtendAzureBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileResponseCurrentReleaseExtendAzureGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }, + ); + +export function syncReconcileResponseCurrentReleaseExtendAzureFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseExtendAzure, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseExtendAzure$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendAzure' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseExtendConditionResource$inboundSchema: + z.ZodType< + SyncReconcileResponseCurrentReleaseExtendConditionResource, + unknown + > = z.object({ + expression: z.string(), + title: z.string(), + }); + +export function syncReconcileResponseCurrentReleaseExtendConditionResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseExtendConditionResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseExtendConditionResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendConditionResource' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseExtendResourceConditionUnion$inboundSchema: + z.ZodType< + SyncReconcileResponseCurrentReleaseExtendResourceConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncReconcileResponseCurrentReleaseExtendConditionResource$inboundSchema + ), + z.any(), + ]); + +export function syncReconcileResponseCurrentReleaseExtendResourceConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseExtendResourceConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseExtendResourceConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendResourceConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseExtendGcpResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncReconcileResponseCurrentReleaseExtendConditionResource$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncReconcileResponseCurrentReleaseExtendGcpResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseExtendGcpResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseExtendGcpResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendGcpResource' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseExtendCondition$inboundSchema: + z.ZodType = z + .object({ + expression: z.string(), + title: z.string(), + }); + +export function syncReconcileResponseCurrentReleaseExtendConditionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseExtendCondition, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseExtendCondition$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendCondition' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseExtendConditionUnion$inboundSchema: + z.ZodType = + z.union([ + z.lazy(() => + SyncReconcileResponseCurrentReleaseExtendCondition$inboundSchema + ), + z.any(), + ]); + +export function syncReconcileResponseCurrentReleaseExtendConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseExtendConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseExtendConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseExtendGcpStack$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncReconcileResponseCurrentReleaseExtendCondition$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncReconcileResponseCurrentReleaseExtendGcpStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseExtendGcpStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseExtendGcpStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendGcpStack' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseExtendGcpBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncReconcileResponseCurrentReleaseExtendGcpResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileResponseCurrentReleaseExtendGcpStack$inboundSchema + ).optional(), + }); + +export function syncReconcileResponseCurrentReleaseExtendGcpBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseExtendGcpBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseExtendGcpBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendGcpBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseExtendGcpGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileResponseCurrentReleaseExtendGcpGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseExtendGcpGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseExtendGcpGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendGcpGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseExtendGcp$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + SyncReconcileResponseCurrentReleaseExtendGcpBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileResponseCurrentReleaseExtendGcpGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileResponseCurrentReleaseExtendGcpFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseExtendGcp, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseExtendGcp$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendGcp' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseExtendPlatforms$inboundSchema: + z.ZodType = z + .object({ + aws: z.nullable( + z.array(z.lazy(() => + SyncReconcileResponseCurrentReleaseExtendAw$inboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + SyncReconcileResponseCurrentReleaseExtendAzure$inboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + SyncReconcileResponseCurrentReleaseExtendGcp$inboundSchema + )), + ).optional(), + }); + +export function syncReconcileResponseCurrentReleaseExtendPlatformsFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseExtendPlatforms, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseExtendPlatforms$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendPlatforms' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseExtend$inboundSchema: z.ZodType< + SyncReconcileResponseCurrentReleaseExtend, + unknown +> = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncReconcileResponseCurrentReleaseExtendPlatforms$inboundSchema + ), +}); + +export function syncReconcileResponseCurrentReleaseExtendFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseExtend, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseExtend$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseExtend' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseExtendUnion$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => SyncReconcileResponseCurrentReleaseExtend$inboundSchema), + z.string(), + ]); + +export function syncReconcileResponseCurrentReleaseExtendUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseExtendUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseExtendUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseManagement1$inboundSchema: + z.ZodType = z.object( + { + extend: z.record( + z.string(), + z.array( + z.union([ + z.lazy(() => + SyncReconcileResponseCurrentReleaseExtend$inboundSchema + ), + z.string(), + ]), + ), + ), + }, + ); + +export function syncReconcileResponseCurrentReleaseManagement1FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseManagement1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseManagement1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseManagement1' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseManagementUnion$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => + SyncReconcileResponseCurrentReleaseManagement1$inboundSchema + ), + z.lazy(() => + SyncReconcileResponseCurrentReleaseManagement2$inboundSchema + ), + SyncReconcileResponseCurrentReleaseManagementEnum$inboundSchema, + ]); + +export function syncReconcileResponseCurrentReleaseManagementUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseManagementUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseManagementUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseManagementUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseProfileAwResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncReconcileResponseCurrentReleaseProfileAwResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseProfileAwResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseProfileAwResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileAwResource' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseProfileAwStack$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncReconcileResponseCurrentReleaseProfileAwStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseProfileAwStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseProfileAwStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileAwStack' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseProfileAwBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncReconcileResponseCurrentReleaseProfileAwResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileResponseCurrentReleaseProfileAwStack$inboundSchema + ).optional(), + }); + +export function syncReconcileResponseCurrentReleaseProfileAwBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseProfileAwBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseProfileAwBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileAwBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseProfileEffect$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponseCurrentReleaseProfileEffect, + ); + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseProfileAwGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileResponseCurrentReleaseProfileAwGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseProfileAwGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseProfileAwGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileAwGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseProfileAw$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + SyncReconcileResponseCurrentReleaseProfileAwBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: SyncReconcileResponseCurrentReleaseProfileEffect$inboundSchema + .optional(), + grant: z.lazy(() => + SyncReconcileResponseCurrentReleaseProfileAwGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileResponseCurrentReleaseProfileAwFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseProfileAw, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseProfileAw$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileAw' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseProfileAzureResource$inboundSchema: + z.ZodType = + z.object({ + scope: z.string(), + }); + +export function syncReconcileResponseCurrentReleaseProfileAzureResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseProfileAzureResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseProfileAzureResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileAzureResource' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseProfileAzureStack$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); + +export function syncReconcileResponseCurrentReleaseProfileAzureStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseProfileAzureStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseProfileAzureStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileAzureStack' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseProfileAzureBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncReconcileResponseCurrentReleaseProfileAzureResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileResponseCurrentReleaseProfileAzureStack$inboundSchema + ).optional(), + }); + +export function syncReconcileResponseCurrentReleaseProfileAzureBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseProfileAzureBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseProfileAzureBinding$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileAzureBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseProfileAzureGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileResponseCurrentReleaseProfileAzureGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseProfileAzureGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseProfileAzureGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileAzureGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseProfileAzure$inboundSchema: + z.ZodType = z + .object({ + binding: z.lazy(() => + SyncReconcileResponseCurrentReleaseProfileAzureBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileResponseCurrentReleaseProfileAzureGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileResponseCurrentReleaseProfileAzureFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseProfileAzure, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseProfileAzure$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileAzure' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseProfileConditionResource$inboundSchema: + z.ZodType< + SyncReconcileResponseCurrentReleaseProfileConditionResource, + unknown + > = z.object({ + expression: z.string(), + title: z.string(), + }); + +export function syncReconcileResponseCurrentReleaseProfileConditionResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseProfileConditionResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseProfileConditionResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileConditionResource' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseProfileResourceConditionUnion$inboundSchema: + z.ZodType< + SyncReconcileResponseCurrentReleaseProfileResourceConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncReconcileResponseCurrentReleaseProfileConditionResource$inboundSchema + ), + z.any(), + ]); + +export function syncReconcileResponseCurrentReleaseProfileResourceConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseProfileResourceConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseProfileResourceConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileResourceConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseProfileGcpResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncReconcileResponseCurrentReleaseProfileConditionResource$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncReconcileResponseCurrentReleaseProfileGcpResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseProfileGcpResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseProfileGcpResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileGcpResource' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseProfileCondition$inboundSchema: + z.ZodType = z + .object({ + expression: z.string(), + title: z.string(), + }); + +export function syncReconcileResponseCurrentReleaseProfileConditionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseProfileCondition, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseProfileCondition$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileCondition' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseProfileConditionUnion$inboundSchema: + z.ZodType = + z.union([ + z.lazy(() => + SyncReconcileResponseCurrentReleaseProfileCondition$inboundSchema + ), + z.any(), + ]); + +export function syncReconcileResponseCurrentReleaseProfileConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseProfileConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseProfileConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseProfileGcpStack$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncReconcileResponseCurrentReleaseProfileCondition$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncReconcileResponseCurrentReleaseProfileGcpStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseProfileGcpStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseProfileGcpStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileGcpStack' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseProfileGcpBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncReconcileResponseCurrentReleaseProfileGcpResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileResponseCurrentReleaseProfileGcpStack$inboundSchema + ).optional(), + }); + +export function syncReconcileResponseCurrentReleaseProfileGcpBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseProfileGcpBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseProfileGcpBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileGcpBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseProfileGcpGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileResponseCurrentReleaseProfileGcpGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseProfileGcpGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseProfileGcpGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileGcpGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseProfileGcp$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + SyncReconcileResponseCurrentReleaseProfileGcpBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileResponseCurrentReleaseProfileGcpGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileResponseCurrentReleaseProfileGcpFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseProfileGcp, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseProfileGcp$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileGcp' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseProfilePlatforms$inboundSchema: + z.ZodType = z + .object({ + aws: z.nullable( + z.array(z.lazy(() => + SyncReconcileResponseCurrentReleaseProfileAw$inboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + SyncReconcileResponseCurrentReleaseProfileAzure$inboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + SyncReconcileResponseCurrentReleaseProfileGcp$inboundSchema + )), + ).optional(), + }); + +export function syncReconcileResponseCurrentReleaseProfilePlatformsFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseProfilePlatforms, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseProfilePlatforms$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseProfilePlatforms' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseProfile$inboundSchema: + z.ZodType = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncReconcileResponseCurrentReleaseProfilePlatforms$inboundSchema + ), + }); + +export function syncReconcileResponseCurrentReleaseProfileFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseProfile, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseProfile$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseProfile' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseProfileUnion$inboundSchema: + z.ZodType = z.union( + [ + z.lazy(() => SyncReconcileResponseCurrentReleaseProfile$inboundSchema), + z.string(), + ], + ); + +export function syncReconcileResponseCurrentReleaseProfileUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseProfileUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseProfileUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleasePermissions$inboundSchema: + z.ZodType = z.object( + { + management: z.union([ + z.lazy(() => + SyncReconcileResponseCurrentReleaseManagement1$inboundSchema + ), + z.lazy(() => + SyncReconcileResponseCurrentReleaseManagement2$inboundSchema + ), + SyncReconcileResponseCurrentReleaseManagementEnum$inboundSchema, + ]).optional(), + profiles: z.record( + z.string(), + z.record( + z.string(), + z.array( + z.union([ + z.lazy(() => + SyncReconcileResponseCurrentReleaseProfile$inboundSchema + ), + z.string(), + ]), + ), + ), + ), + }, + ); -export function syncReconcileResponseCurrentReleaseDefaultStringListFromJSON( +export function syncReconcileResponseCurrentReleasePermissionsFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseDefaultStringList, + SyncReconcileResponseCurrentReleasePermissions, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseDefaultStringList$inboundSchema.parse( + SyncReconcileResponseCurrentReleasePermissions$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseDefaultStringList' from JSON`, + `Failed to parse 'SyncReconcileResponseCurrentReleasePermissions' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseTypeBoolean$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponseCurrentReleaseTypeBoolean, - ); - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseDefaultBoolean$inboundSchema: - z.ZodType = z - .object({ - type: SyncReconcileResponseCurrentReleaseTypeBoolean$inboundSchema, - value: z.boolean(), - }); +export const SyncReconcileResponseCurrentReleaseConfig$inboundSchema: z.ZodType< + SyncReconcileResponseCurrentReleaseConfig, + unknown +> = collectExtraKeys$( + z.object({ + id: z.string(), + type: z.string(), + }).catchall(z.any()), + "additionalProperties", + true, +); -export function syncReconcileResponseCurrentReleaseDefaultBooleanFromJSON( +export function syncReconcileResponseCurrentReleaseConfigFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseDefaultBoolean, + SyncReconcileResponseCurrentReleaseConfig, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseDefaultBoolean$inboundSchema.parse( + SyncReconcileResponseCurrentReleaseConfig$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseDefaultBoolean' from JSON`, + `Failed to parse 'SyncReconcileResponseCurrentReleaseConfig' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseTypeNumber$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponseCurrentReleaseTypeNumber, - ); - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseDefaultNumber$inboundSchema: - z.ZodType = z - .object({ - type: SyncReconcileResponseCurrentReleaseTypeNumber$inboundSchema, - value: z.string(), - }); +export const SyncReconcileResponseCurrentReleaseDependency$inboundSchema: + z.ZodType = z.object({ + id: z.string(), + type: z.string(), + }); -export function syncReconcileResponseCurrentReleaseDefaultNumberFromJSON( +export function syncReconcileResponseCurrentReleaseDependencyFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseDefaultNumber, + SyncReconcileResponseCurrentReleaseDependency, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseDefaultNumber$inboundSchema.parse( + SyncReconcileResponseCurrentReleaseDependency$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseDefaultNumber' from JSON`, + `Failed to parse 'SyncReconcileResponseCurrentReleaseDependency' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseTypeString$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponseCurrentReleaseTypeString, +export const SyncReconcileResponseCurrentReleaseLifecycle$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponseCurrentReleaseLifecycle, ); /** @internal */ -export const SyncReconcileResponseCurrentReleaseDefaultString$inboundSchema: - z.ZodType = z - .object({ - type: SyncReconcileResponseCurrentReleaseTypeString$inboundSchema, - value: z.string(), - }); +export const SyncReconcileResponseCurrentReleaseResources$inboundSchema: + z.ZodType = z.object({ + config: z.lazy(() => + SyncReconcileResponseCurrentReleaseConfig$inboundSchema + ), + dependencies: z.array( + z.lazy(() => SyncReconcileResponseCurrentReleaseDependency$inboundSchema), + ), + enabledWhen: z.nullable(z.string()).optional(), + lifecycle: SyncReconcileResponseCurrentReleaseLifecycle$inboundSchema, + remoteAccess: z.boolean().optional(), + }); -export function syncReconcileResponseCurrentReleaseDefaultStringFromJSON( +export function syncReconcileResponseCurrentReleaseResourcesFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseDefaultString, + SyncReconcileResponseCurrentReleaseResources, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseDefaultString$inboundSchema.parse( + SyncReconcileResponseCurrentReleaseResources$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseDefaultString' from JSON`, + `Failed to parse 'SyncReconcileResponseCurrentReleaseResources' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseDefaultUnion$inboundSchema: - z.ZodType = z.union( - [ - z.lazy(() => - SyncReconcileResponseCurrentReleaseDefaultString$inboundSchema - ), - z.lazy(() => - SyncReconcileResponseCurrentReleaseDefaultNumber$inboundSchema - ), - z.lazy(() => - SyncReconcileResponseCurrentReleaseDefaultBoolean$inboundSchema - ), - z.lazy(() => - SyncReconcileResponseCurrentReleaseDefaultStringList$inboundSchema - ), - z.any(), - ], - ); +export const SyncReconcileResponseCurrentReleaseSupportedPlatform$inboundSchema: + z.ZodEnum = z + .enum(SyncReconcileResponseCurrentReleaseSupportedPlatform); -export function syncReconcileResponseCurrentReleaseDefaultUnionFromJSON( +/** @internal */ +export const SyncReconcileResponseCurrentReleaseStack$inboundSchema: z.ZodType< + SyncReconcileResponseCurrentReleaseStack, + unknown +> = z.object({ + id: z.string(), + inputs: z.array( + z.lazy(() => SyncReconcileResponseCurrentReleaseInput$inboundSchema), + ).optional(), + permissions: z.lazy(() => + SyncReconcileResponseCurrentReleasePermissions$inboundSchema + ).optional(), + resources: z.record( + z.string(), + z.lazy(() => SyncReconcileResponseCurrentReleaseResources$inboundSchema), + ), + supportedPlatforms: z.nullable( + z.array(SyncReconcileResponseCurrentReleaseSupportedPlatform$inboundSchema), + ).optional(), +}); + +export function syncReconcileResponseCurrentReleaseStackFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseDefaultUnion, + SyncReconcileResponseCurrentReleaseStack, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseDefaultUnion$inboundSchema.parse( + SyncReconcileResponseCurrentReleaseStack$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseDefaultUnion' from JSON`, + `Failed to parse 'SyncReconcileResponseCurrentReleaseStack' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseTypeEnvEnum$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponseCurrentReleaseTypeEnvEnum, +export const SyncReconcileResponseCurrentRelease$inboundSchema: z.ZodType< + SyncReconcileResponseCurrentRelease, + unknown +> = z.object({ + description: z.nullable(z.string()).optional(), + releaseId: z.nullable(z.string()).optional(), + stack: z.lazy(() => SyncReconcileResponseCurrentReleaseStack$inboundSchema), + version: z.nullable(z.string()).optional(), +}); + +export function syncReconcileResponseCurrentReleaseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentRelease$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseCurrentRelease' from JSON`, ); +} /** @internal */ -export const SyncReconcileResponseCurrentReleaseTypeUnion$inboundSchema: - z.ZodType = z.union([ - SyncReconcileResponseCurrentReleaseTypeEnvEnum$inboundSchema, - z.any(), - ]); +export const SyncReconcileResponseCurrentReleaseUnion$inboundSchema: z.ZodType< + SyncReconcileResponseCurrentReleaseUnion, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseCurrentRelease$inboundSchema), + z.any(), +]); -export function syncReconcileResponseCurrentReleaseTypeUnionFromJSON( +export function syncReconcileResponseCurrentReleaseUnionFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseTypeUnion, + SyncReconcileResponseCurrentReleaseUnion, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseTypeUnion$inboundSchema.parse( + SyncReconcileResponseCurrentReleaseUnion$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseTypeUnion' from JSON`, + `Failed to parse 'SyncReconcileResponseCurrentReleaseUnion' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseEnv$inboundSchema: z.ZodType< - SyncReconcileResponseCurrentReleaseEnv, +export const SyncReconcileResponsePlatformTest$inboundSchema: z.ZodEnum< + typeof SyncReconcileResponsePlatformTest +> = z.enum(SyncReconcileResponsePlatformTest); + +/** @internal */ +export const SyncReconcileResponseEnvironmentInfoTest$inboundSchema: z.ZodType< + SyncReconcileResponseEnvironmentInfoTest, unknown > = z.object({ - name: z.string(), - targetResources: z.nullable(z.array(z.string())).optional(), - type: z.nullable( - z.union([ - SyncReconcileResponseCurrentReleaseTypeEnvEnum$inboundSchema, - z.any(), - ]), - ).optional(), + testId: z.string(), + platform: SyncReconcileResponsePlatformTest$inboundSchema, }); -export function syncReconcileResponseCurrentReleaseEnvFromJSON( +export function syncReconcileResponseEnvironmentInfoTestFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncReconcileResponseEnvironmentInfoTest, + SDKValidationError +> { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseEnv$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseCurrentReleaseEnv' from JSON`, + SyncReconcileResponseEnvironmentInfoTest$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseEnvironmentInfoTest' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseKind$inboundSchema: z.ZodEnum< - typeof SyncReconcileResponseCurrentReleaseKind -> = z.enum(SyncReconcileResponseCurrentReleaseKind); - -/** @internal */ -export const SyncReconcileResponseCurrentReleasePlatform$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponseCurrentReleasePlatform, - ); - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseProvidedBy$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponseCurrentReleaseProvidedBy, - ); +export const SyncReconcileResponsePlatformLocal$inboundSchema: z.ZodEnum< + typeof SyncReconcileResponsePlatformLocal +> = z.enum(SyncReconcileResponsePlatformLocal); /** @internal */ -export const SyncReconcileResponseCurrentReleaseValidation$inboundSchema: - z.ZodType = z.object({ - format: z.nullable(z.string()).optional(), - max: z.nullable(z.string()).optional(), - maxItems: z.nullable(z.int()).optional(), - maxLength: z.nullable(z.int()).optional(), - min: z.nullable(z.string()).optional(), - minItems: z.nullable(z.int()).optional(), - minLength: z.nullable(z.int()).optional(), - pattern: z.nullable(z.string()).optional(), - values: z.nullable(z.array(z.string())).optional(), - }); +export const SyncReconcileResponseEnvironmentInfoLocal$inboundSchema: z.ZodType< + SyncReconcileResponseEnvironmentInfoLocal, + unknown +> = z.object({ + arch: z.string(), + hostname: z.string(), + os: z.string(), + platform: SyncReconcileResponsePlatformLocal$inboundSchema, +}); -export function syncReconcileResponseCurrentReleaseValidationFromJSON( +export function syncReconcileResponseEnvironmentInfoLocalFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseValidation, + SyncReconcileResponseEnvironmentInfoLocal, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseValidation$inboundSchema.parse( + SyncReconcileResponseEnvironmentInfoLocal$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseValidation' from JSON`, + `Failed to parse 'SyncReconcileResponseEnvironmentInfoLocal' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseValidationUnion$inboundSchema: - z.ZodType = z - .union([ - z.lazy(() => SyncReconcileResponseCurrentReleaseValidation$inboundSchema), - z.any(), - ]); +export const SyncReconcileResponseCurrentPlatformAzure$inboundSchema: z.ZodEnum< + typeof SyncReconcileResponseCurrentPlatformAzure +> = z.enum(SyncReconcileResponseCurrentPlatformAzure); -export function syncReconcileResponseCurrentReleaseValidationUnionFromJSON( +/** @internal */ +export const SyncReconcileResponseEnvironmentInfoAzure$inboundSchema: z.ZodType< + SyncReconcileResponseEnvironmentInfoAzure, + unknown +> = z.object({ + location: z.string(), + subscriptionId: z.string(), + tenantId: z.string(), + platform: SyncReconcileResponseCurrentPlatformAzure$inboundSchema, +}); + +export function syncReconcileResponseEnvironmentInfoAzureFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseValidationUnion, + SyncReconcileResponseEnvironmentInfoAzure, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseValidationUnion$inboundSchema.parse( + SyncReconcileResponseEnvironmentInfoAzure$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseValidationUnion' from JSON`, + `Failed to parse 'SyncReconcileResponseEnvironmentInfoAzure' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseInput$inboundSchema: z.ZodType< - SyncReconcileResponseCurrentReleaseInput, +export const SyncReconcileResponseCurrentPlatformGcp$inboundSchema: z.ZodEnum< + typeof SyncReconcileResponseCurrentPlatformGcp +> = z.enum(SyncReconcileResponseCurrentPlatformGcp); + +/** @internal */ +export const SyncReconcileResponseEnvironmentInfoGcp$inboundSchema: z.ZodType< + SyncReconcileResponseEnvironmentInfoGcp, unknown > = z.object({ - default: z.nullable( - z.union([ - z.lazy(() => - SyncReconcileResponseCurrentReleaseDefaultString$inboundSchema - ), - z.lazy(() => - SyncReconcileResponseCurrentReleaseDefaultNumber$inboundSchema - ), - z.lazy(() => - SyncReconcileResponseCurrentReleaseDefaultBoolean$inboundSchema - ), - z.lazy(() => - SyncReconcileResponseCurrentReleaseDefaultStringList$inboundSchema - ), - z.any(), - ]), - ).optional(), - description: z.string(), - env: z.array( - z.lazy(() => SyncReconcileResponseCurrentReleaseEnv$inboundSchema), - ).optional(), - id: z.string(), - kind: SyncReconcileResponseCurrentReleaseKind$inboundSchema, - label: z.string(), - placeholder: z.nullable(z.string()).optional(), - platforms: z.nullable( - z.array(SyncReconcileResponseCurrentReleasePlatform$inboundSchema), - ).optional(), - providedBy: z.array( - SyncReconcileResponseCurrentReleaseProvidedBy$inboundSchema, - ), - required: z.boolean(), - validation: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseCurrentReleaseValidation$inboundSchema), - z.any(), - ]), - ).optional(), + projectId: z.string(), + projectNumber: z.string(), + region: z.string(), + platform: SyncReconcileResponseCurrentPlatformGcp$inboundSchema, }); -export function syncReconcileResponseCurrentReleaseInputFromJSON( +export function syncReconcileResponseEnvironmentInfoGcpFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseInput, + SyncReconcileResponseEnvironmentInfoGcp, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseInput$inboundSchema.parse( + SyncReconcileResponseEnvironmentInfoGcp$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseInput' from JSON`, + `Failed to parse 'SyncReconcileResponseEnvironmentInfoGcp' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseManagementEnum$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponseCurrentReleaseManagementEnum, - ); +export const SyncReconcileResponseCurrentPlatformAws$inboundSchema: z.ZodEnum< + typeof SyncReconcileResponseCurrentPlatformAws +> = z.enum(SyncReconcileResponseCurrentPlatformAws); /** @internal */ -export const SyncReconcileResponseCurrentReleaseOverrideAwResource$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); +export const SyncReconcileResponseEnvironmentInfoAws$inboundSchema: z.ZodType< + SyncReconcileResponseEnvironmentInfoAws, + unknown +> = z.object({ + accountId: z.string(), + region: z.string(), + platform: SyncReconcileResponseCurrentPlatformAws$inboundSchema, +}); -export function syncReconcileResponseCurrentReleaseOverrideAwResourceFromJSON( +export function syncReconcileResponseEnvironmentInfoAwsFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseOverrideAwResource, + SyncReconcileResponseEnvironmentInfoAws, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseOverrideAwResource$inboundSchema.parse( + SyncReconcileResponseEnvironmentInfoAws$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideAwResource' from JSON`, + `Failed to parse 'SyncReconcileResponseEnvironmentInfoAws' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseOverrideAwStack$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); +export const SyncReconcileResponseEnvironmentInfoUnion$inboundSchema: z.ZodType< + SyncReconcileResponseEnvironmentInfoUnion, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseEnvironmentInfoGcp$inboundSchema), + z.lazy(() => SyncReconcileResponseEnvironmentInfoAzure$inboundSchema), + z.lazy(() => SyncReconcileResponseEnvironmentInfoLocal$inboundSchema), + z.lazy(() => SyncReconcileResponseEnvironmentInfoAws$inboundSchema), + z.lazy(() => SyncReconcileResponseEnvironmentInfoTest$inboundSchema), + z.any(), +]); -export function syncReconcileResponseCurrentReleaseOverrideAwStackFromJSON( +export function syncReconcileResponseEnvironmentInfoUnionFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseOverrideAwStack, + SyncReconcileResponseEnvironmentInfoUnion, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseOverrideAwStack$inboundSchema.parse( + SyncReconcileResponseEnvironmentInfoUnion$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideAwStack' from JSON`, + `Failed to parse 'SyncReconcileResponseEnvironmentInfoUnion' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseOverrideAwBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncReconcileResponseCurrentReleaseOverrideAwResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileResponseCurrentReleaseOverrideAwStack$inboundSchema - ).optional(), - }); +export const SyncReconcileResponseError$inboundSchema: z.ZodType< + SyncReconcileResponseError, + unknown +> = z.object({ + code: z.string(), + context: z.nullable(z.any()).optional(), + hint: z.nullable(z.string()).optional(), + httpStatusCode: z.nullable(z.int()).optional(), + internal: z.boolean(), + message: z.string(), + retryable: z.boolean().default(false), + source: z.nullable(z.any()).optional(), +}); -export function syncReconcileResponseCurrentReleaseOverrideAwBindingFromJSON( +export function syncReconcileResponseErrorFromJSON( jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseOverrideAwBinding, - SDKValidationError -> { +): SafeParseResult { return safeParse( jsonString, - (x) => - SyncReconcileResponseCurrentReleaseOverrideAwBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideAwBinding' from JSON`, + (x) => SyncReconcileResponseError$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseError' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseOverrideEffect$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponseCurrentReleaseOverrideEffect, - ); - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseOverrideAwGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); +export const SyncReconcileResponseErrorUnion$inboundSchema: z.ZodType< + SyncReconcileResponseErrorUnion, + unknown +> = z.union([z.lazy(() => SyncReconcileResponseError$inboundSchema), z.any()]); -export function syncReconcileResponseCurrentReleaseOverrideAwGrantFromJSON( +export function syncReconcileResponseErrorUnionFromJSON( jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseOverrideAwGrant, - SDKValidationError -> { +): SafeParseResult { return safeParse( jsonString, - (x) => - SyncReconcileResponseCurrentReleaseOverrideAwGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideAwGrant' from JSON`, + (x) => SyncReconcileResponseErrorUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseErrorUnion' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseOverrideAw$inboundSchema: - z.ZodType = z.object({ - binding: z.lazy(() => - SyncReconcileResponseCurrentReleaseOverrideAwBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - effect: SyncReconcileResponseCurrentReleaseOverrideEffect$inboundSchema - .optional(), - grant: z.lazy(() => - SyncReconcileResponseCurrentReleaseOverrideAwGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), +export const SyncReconcileResponseCurrentPlatform$inboundSchema: z.ZodEnum< + typeof SyncReconcileResponseCurrentPlatform +> = z.enum(SyncReconcileResponseCurrentPlatform); + +/** @internal */ +export const SyncReconcileResponseInitialSetupAuthority$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponseInitialSetupAuthority, + ); + +/** @internal */ +export const SyncReconcileResponsePendingPreparedStackTypeStringList$inboundSchema: + z.ZodEnum = z + .enum(SyncReconcileResponsePendingPreparedStackTypeStringList); + +/** @internal */ +export const SyncReconcileResponsePendingPreparedStackDefaultStringList$inboundSchema: + z.ZodType< + SyncReconcileResponsePendingPreparedStackDefaultStringList, + unknown + > = z.object({ + type: SyncReconcileResponsePendingPreparedStackTypeStringList$inboundSchema, + value: z.array(z.string()), }); -export function syncReconcileResponseCurrentReleaseOverrideAwFromJSON( +export function syncReconcileResponsePendingPreparedStackDefaultStringListFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseOverrideAw, + SyncReconcileResponsePendingPreparedStackDefaultStringList, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseOverrideAw$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideAw' from JSON`, + SyncReconcileResponsePendingPreparedStackDefaultStringList$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackDefaultStringList' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseOverrideAzureResource$inboundSchema: - z.ZodType = +export const SyncReconcileResponsePendingPreparedStackTypeBoolean$inboundSchema: + z.ZodEnum = z + .enum(SyncReconcileResponsePendingPreparedStackTypeBoolean); + +/** @internal */ +export const SyncReconcileResponsePendingPreparedStackDefaultBoolean$inboundSchema: + z.ZodType = z.object({ - scope: z.string(), + type: SyncReconcileResponsePendingPreparedStackTypeBoolean$inboundSchema, + value: z.boolean(), }); -export function syncReconcileResponseCurrentReleaseOverrideAzureResourceFromJSON( +export function syncReconcileResponsePendingPreparedStackDefaultBooleanFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseOverrideAzureResource, + SyncReconcileResponsePendingPreparedStackDefaultBoolean, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseOverrideAzureResource$inboundSchema + SyncReconcileResponsePendingPreparedStackDefaultBoolean$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideAzureResource' from JSON`, + `Failed to parse 'SyncReconcileResponsePendingPreparedStackDefaultBoolean' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseOverrideAzureStack$inboundSchema: - z.ZodType = z +export const SyncReconcileResponsePendingPreparedStackTypeNumber$inboundSchema: + z.ZodEnum = z + .enum(SyncReconcileResponsePendingPreparedStackTypeNumber); + +/** @internal */ +export const SyncReconcileResponsePendingPreparedStackDefaultNumber$inboundSchema: + z.ZodType = z .object({ - scope: z.string(), + type: SyncReconcileResponsePendingPreparedStackTypeNumber$inboundSchema, + value: z.string(), }); -export function syncReconcileResponseCurrentReleaseOverrideAzureStackFromJSON( +export function syncReconcileResponsePendingPreparedStackDefaultNumberFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseOverrideAzureStack, + SyncReconcileResponsePendingPreparedStackDefaultNumber, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseOverrideAzureStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideAzureStack' from JSON`, + SyncReconcileResponsePendingPreparedStackDefaultNumber$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackDefaultNumber' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseOverrideAzureBinding$inboundSchema: - z.ZodType = - z.object({ - resource: z.lazy(() => - SyncReconcileResponseCurrentReleaseOverrideAzureResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileResponseCurrentReleaseOverrideAzureStack$inboundSchema - ).optional(), +export const SyncReconcileResponsePendingPreparedStackTypeString$inboundSchema: + z.ZodEnum = z + .enum(SyncReconcileResponsePendingPreparedStackTypeString); + +/** @internal */ +export const SyncReconcileResponsePendingPreparedStackDefaultString$inboundSchema: + z.ZodType = z + .object({ + type: SyncReconcileResponsePendingPreparedStackTypeString$inboundSchema, + value: z.string(), }); -export function syncReconcileResponseCurrentReleaseOverrideAzureBindingFromJSON( +export function syncReconcileResponsePendingPreparedStackDefaultStringFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseOverrideAzureBinding, + SyncReconcileResponsePendingPreparedStackDefaultString, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseOverrideAzureBinding$inboundSchema + SyncReconcileResponsePendingPreparedStackDefaultString$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideAzureBinding' from JSON`, + `Failed to parse 'SyncReconcileResponsePendingPreparedStackDefaultString' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseOverrideAzureGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); +export const SyncReconcileResponsePendingPreparedStackDefaultUnion$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => + SyncReconcileResponsePendingPreparedStackDefaultString$inboundSchema + ), + z.lazy(() => + SyncReconcileResponsePendingPreparedStackDefaultNumber$inboundSchema + ), + z.lazy(() => + SyncReconcileResponsePendingPreparedStackDefaultBoolean$inboundSchema + ), + z.lazy(() => + SyncReconcileResponsePendingPreparedStackDefaultStringList$inboundSchema + ), + z.any(), + ]); -export function syncReconcileResponseCurrentReleaseOverrideAzureGrantFromJSON( +export function syncReconcileResponsePendingPreparedStackDefaultUnionFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseOverrideAzureGrant, + SyncReconcileResponsePendingPreparedStackDefaultUnion, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseOverrideAzureGrant$inboundSchema.parse( + SyncReconcileResponsePendingPreparedStackDefaultUnion$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideAzureGrant' from JSON`, + `Failed to parse 'SyncReconcileResponsePendingPreparedStackDefaultUnion' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseOverrideAzure$inboundSchema: - z.ZodType = z - .object({ - binding: z.lazy(() => - SyncReconcileResponseCurrentReleaseOverrideAzureBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncReconcileResponseCurrentReleaseOverrideAzureGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); +export const SyncReconcileResponsePendingPreparedStackTypeEnvEnum$inboundSchema: + z.ZodEnum = z + .enum(SyncReconcileResponsePendingPreparedStackTypeEnvEnum); -export function syncReconcileResponseCurrentReleaseOverrideAzureFromJSON( +/** @internal */ +export const SyncReconcileResponsePendingPreparedStackTypeUnion$inboundSchema: + z.ZodType = z + .union([ + SyncReconcileResponsePendingPreparedStackTypeEnvEnum$inboundSchema, + z.any(), + ]); + +export function syncReconcileResponsePendingPreparedStackTypeUnionFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseOverrideAzure, + SyncReconcileResponsePendingPreparedStackTypeUnion, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseOverrideAzure$inboundSchema.parse( + SyncReconcileResponsePendingPreparedStackTypeUnion$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideAzure' from JSON`, + `Failed to parse 'SyncReconcileResponsePendingPreparedStackTypeUnion' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseOverrideConditionResource$inboundSchema: - z.ZodType< - SyncReconcileResponseCurrentReleaseOverrideConditionResource, - unknown - > = z.object({ - expression: z.string(), - title: z.string(), +export const SyncReconcileResponsePendingPreparedStackEnv$inboundSchema: + z.ZodType = z.object({ + name: z.string(), + targetResources: z.nullable(z.array(z.string())).optional(), + type: z.nullable( + z.union([ + SyncReconcileResponsePendingPreparedStackTypeEnvEnum$inboundSchema, + z.any(), + ]), + ).optional(), }); -export function syncReconcileResponseCurrentReleaseOverrideConditionResourceFromJSON( +export function syncReconcileResponsePendingPreparedStackEnvFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseOverrideConditionResource, + SyncReconcileResponsePendingPreparedStackEnv, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseOverrideConditionResource$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideConditionResource' from JSON`, + SyncReconcileResponsePendingPreparedStackEnv$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackEnv' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseOverrideResourceConditionUnion$inboundSchema: - z.ZodType< - SyncReconcileResponseCurrentReleaseOverrideResourceConditionUnion, - unknown - > = z.union([ - z.lazy(() => - SyncReconcileResponseCurrentReleaseOverrideConditionResource$inboundSchema - ), - z.any(), - ]); +export const SyncReconcileResponsePendingPreparedStackKind$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponsePendingPreparedStackKind, + ); -export function syncReconcileResponseCurrentReleaseOverrideResourceConditionUnionFromJSON( +/** @internal */ +export const SyncReconcileResponsePendingPreparedStackPlatform$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponsePendingPreparedStackPlatform, + ); + +/** @internal */ +export const SyncReconcileResponsePendingPreparedStackProvidedBy$inboundSchema: + z.ZodEnum = z + .enum(SyncReconcileResponsePendingPreparedStackProvidedBy); + +/** @internal */ +export const SyncReconcileResponsePendingPreparedStackValidation$inboundSchema: + z.ZodType = z + .object({ + format: z.nullable(z.string()).optional(), + max: z.nullable(z.string()).optional(), + maxItems: z.nullable(z.int()).optional(), + maxLength: z.nullable(z.int()).optional(), + min: z.nullable(z.string()).optional(), + minItems: z.nullable(z.int()).optional(), + minLength: z.nullable(z.int()).optional(), + pattern: z.nullable(z.string()).optional(), + values: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileResponsePendingPreparedStackValidationFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseOverrideResourceConditionUnion, + SyncReconcileResponsePendingPreparedStackValidation, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseOverrideResourceConditionUnion$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideResourceConditionUnion' from JSON`, + SyncReconcileResponsePendingPreparedStackValidation$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackValidation' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseOverrideGcpResource$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.union([ - z.lazy(() => - SyncReconcileResponseCurrentReleaseOverrideConditionResource$inboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); +export const SyncReconcileResponsePendingPreparedStackValidationUnion$inboundSchema: + z.ZodType = + z.union([ + z.lazy(() => + SyncReconcileResponsePendingPreparedStackValidation$inboundSchema + ), + z.any(), + ]); -export function syncReconcileResponseCurrentReleaseOverrideGcpResourceFromJSON( +export function syncReconcileResponsePendingPreparedStackValidationUnionFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseOverrideGcpResource, + SyncReconcileResponsePendingPreparedStackValidationUnion, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseOverrideGcpResource$inboundSchema + SyncReconcileResponsePendingPreparedStackValidationUnion$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideGcpResource' from JSON`, + `Failed to parse 'SyncReconcileResponsePendingPreparedStackValidationUnion' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseOverrideCondition$inboundSchema: - z.ZodType = z - .object({ - expression: z.string(), - title: z.string(), - }); +export const SyncReconcileResponsePendingPreparedStackInput$inboundSchema: + z.ZodType = z.object( + { + default: z.nullable(z.union([ + z.lazy(() => + SyncReconcileResponsePendingPreparedStackDefaultString$inboundSchema + ), + z.lazy(() => + SyncReconcileResponsePendingPreparedStackDefaultNumber$inboundSchema + ), + z.lazy(() => + SyncReconcileResponsePendingPreparedStackDefaultBoolean$inboundSchema + ), + z.lazy(() => + SyncReconcileResponsePendingPreparedStackDefaultStringList$inboundSchema + ), + z.any(), + ])).optional(), + description: z.string(), + env: z.array(z.lazy(() => + SyncReconcileResponsePendingPreparedStackEnv$inboundSchema + )).optional(), + id: z.string(), + kind: SyncReconcileResponsePendingPreparedStackKind$inboundSchema, + label: z.string(), + placeholder: z.nullable(z.string()).optional(), + platforms: z.nullable( + z.array( + SyncReconcileResponsePendingPreparedStackPlatform$inboundSchema, + ), + ).optional(), + providedBy: z.array( + SyncReconcileResponsePendingPreparedStackProvidedBy$inboundSchema, + ), + required: z.boolean(), + validation: z.nullable(z.union([ + z.lazy(() => + SyncReconcileResponsePendingPreparedStackValidation$inboundSchema + ), + z.any(), + ])).optional(), + }, + ); -export function syncReconcileResponseCurrentReleaseOverrideConditionFromJSON( +export function syncReconcileResponsePendingPreparedStackInputFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseOverrideCondition, + SyncReconcileResponsePendingPreparedStackInput, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseOverrideCondition$inboundSchema.parse( + SyncReconcileResponsePendingPreparedStackInput$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideCondition' from JSON`, + `Failed to parse 'SyncReconcileResponsePendingPreparedStackInput' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseOverrideConditionUnion$inboundSchema: +export const SyncReconcileResponsePendingPreparedStackManagementEnum$inboundSchema: + z.ZodEnum = z + .enum(SyncReconcileResponsePendingPreparedStackManagementEnum); + +/** @internal */ +export const SyncReconcileResponsePendingPreparedStackOverrideAwResource$inboundSchema: z.ZodType< - SyncReconcileResponseCurrentReleaseOverrideConditionUnion, + SyncReconcileResponsePendingPreparedStackOverrideAwResource, unknown - > = z.union([ - z.lazy(() => - SyncReconcileResponseCurrentReleaseOverrideCondition$inboundSchema - ), - z.any(), - ]); + > = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); -export function syncReconcileResponseCurrentReleaseOverrideConditionUnionFromJSON( +export function syncReconcileResponsePendingPreparedStackOverrideAwResourceFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseOverrideConditionUnion, + SyncReconcileResponsePendingPreparedStackOverrideAwResource, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseOverrideConditionUnion$inboundSchema + SyncReconcileResponsePendingPreparedStackOverrideAwResource$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideConditionUnion' from JSON`, + `Failed to parse 'SyncReconcileResponsePendingPreparedStackOverrideAwResource' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseOverrideGcpStack$inboundSchema: - z.ZodType = z - .object({ +export const SyncReconcileResponsePendingPreparedStackOverrideAwStack$inboundSchema: + z.ZodType = + z.object({ condition: z.nullable( - z.union([ - z.lazy(() => - SyncReconcileResponseCurrentReleaseOverrideCondition$inboundSchema - ), - z.any(), - ]), + z.record(z.string(), z.record(z.string(), z.string())), ).optional(), - scope: z.string(), + resources: z.array(z.string()), }); -export function syncReconcileResponseCurrentReleaseOverrideGcpStackFromJSON( +export function syncReconcileResponsePendingPreparedStackOverrideAwStackFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseOverrideGcpStack, + SyncReconcileResponsePendingPreparedStackOverrideAwStack, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseOverrideGcpStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideGcpStack' from JSON`, + SyncReconcileResponsePendingPreparedStackOverrideAwStack$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackOverrideAwStack' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseOverrideGcpBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncReconcileResponseCurrentReleaseOverrideGcpResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileResponseCurrentReleaseOverrideGcpStack$inboundSchema - ).optional(), - }); +export const SyncReconcileResponsePendingPreparedStackOverrideAwBinding$inboundSchema: + z.ZodType< + SyncReconcileResponsePendingPreparedStackOverrideAwBinding, + unknown + > = z.object({ + resource: z.lazy(() => + SyncReconcileResponsePendingPreparedStackOverrideAwResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileResponsePendingPreparedStackOverrideAwStack$inboundSchema + ).optional(), + }); -export function syncReconcileResponseCurrentReleaseOverrideGcpBindingFromJSON( +export function syncReconcileResponsePendingPreparedStackOverrideAwBindingFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseOverrideGcpBinding, + SyncReconcileResponsePendingPreparedStackOverrideAwBinding, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseOverrideGcpBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideGcpBinding' from JSON`, + SyncReconcileResponsePendingPreparedStackOverrideAwBinding$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackOverrideAwBinding' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseOverrideGcpGrant$inboundSchema: - z.ZodType = z - .object({ +export const SyncReconcileResponsePendingPreparedStackOverrideEffect$inboundSchema: + z.ZodEnum = z + .enum(SyncReconcileResponsePendingPreparedStackOverrideEffect); + +/** @internal */ +export const SyncReconcileResponsePendingPreparedStackOverrideAwGrant$inboundSchema: + z.ZodType = + z.object({ actions: z.nullable(z.array(z.string())).optional(), dataActions: z.nullable(z.array(z.string())).optional(), permissions: z.nullable(z.array(z.string())).optional(), @@ -12335,937 +16560,1041 @@ export const SyncReconcileResponseCurrentReleaseOverrideGcpGrant$inboundSchema: residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function syncReconcileResponseCurrentReleaseOverrideGcpGrantFromJSON( +export function syncReconcileResponsePendingPreparedStackOverrideAwGrantFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseOverrideGcpGrant, + SyncReconcileResponsePendingPreparedStackOverrideAwGrant, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseOverrideGcpGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideGcpGrant' from JSON`, + SyncReconcileResponsePendingPreparedStackOverrideAwGrant$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackOverrideAwGrant' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseOverrideGcp$inboundSchema: - z.ZodType = z.object( - { +export const SyncReconcileResponsePendingPreparedStackOverrideAw$inboundSchema: + z.ZodType = z + .object({ binding: z.lazy(() => - SyncReconcileResponseCurrentReleaseOverrideGcpBinding$inboundSchema + SyncReconcileResponsePendingPreparedStackOverrideAwBinding$inboundSchema ), description: z.nullable(z.string()).optional(), + effect: + SyncReconcileResponsePendingPreparedStackOverrideEffect$inboundSchema + .optional(), grant: z.lazy(() => - SyncReconcileResponseCurrentReleaseOverrideGcpGrant$inboundSchema + SyncReconcileResponsePendingPreparedStackOverrideAwGrant$inboundSchema ), label: z.nullable(z.string()).optional(), - }, - ); + }); -export function syncReconcileResponseCurrentReleaseOverrideGcpFromJSON( +export function syncReconcileResponsePendingPreparedStackOverrideAwFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseOverrideGcp, + SyncReconcileResponsePendingPreparedStackOverrideAw, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseOverrideGcp$inboundSchema.parse( + SyncReconcileResponsePendingPreparedStackOverrideAw$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideGcp' from JSON`, + `Failed to parse 'SyncReconcileResponsePendingPreparedStackOverrideAw' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseOverridePlatforms$inboundSchema: - z.ZodType = z - .object({ - aws: z.nullable( - z.array(z.lazy(() => - SyncReconcileResponseCurrentReleaseOverrideAw$inboundSchema - )), - ).optional(), - azure: z.nullable( - z.array(z.lazy(() => - SyncReconcileResponseCurrentReleaseOverrideAzure$inboundSchema - )), - ).optional(), - gcp: z.nullable( - z.array(z.lazy(() => - SyncReconcileResponseCurrentReleaseOverrideGcp$inboundSchema - )), - ).optional(), - }); +export const SyncReconcileResponsePendingPreparedStackOverrideAzureResource$inboundSchema: + z.ZodType< + SyncReconcileResponsePendingPreparedStackOverrideAzureResource, + unknown + > = z.object({ + scope: z.string(), + }); -export function syncReconcileResponseCurrentReleaseOverridePlatformsFromJSON( +export function syncReconcileResponsePendingPreparedStackOverrideAzureResourceFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseOverridePlatforms, + SyncReconcileResponsePendingPreparedStackOverrideAzureResource, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseOverridePlatforms$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseOverridePlatforms' from JSON`, + SyncReconcileResponsePendingPreparedStackOverrideAzureResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackOverrideAzureResource' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseOverride$inboundSchema: - z.ZodType = z.object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => - SyncReconcileResponseCurrentReleaseOverridePlatforms$inboundSchema - ), +export const SyncReconcileResponsePendingPreparedStackOverrideAzureStack$inboundSchema: + z.ZodType< + SyncReconcileResponsePendingPreparedStackOverrideAzureStack, + unknown + > = z.object({ + scope: z.string(), }); -export function syncReconcileResponseCurrentReleaseOverrideFromJSON( +export function syncReconcileResponsePendingPreparedStackOverrideAzureStackFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseOverride, + SyncReconcileResponsePendingPreparedStackOverrideAzureStack, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseOverride$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseOverride' from JSON`, + SyncReconcileResponsePendingPreparedStackOverrideAzureStack$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackOverrideAzureStack' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseOverrideUnion$inboundSchema: - z.ZodType = z - .union([ - z.lazy(() => SyncReconcileResponseCurrentReleaseOverride$inboundSchema), - z.string(), - ]); +export const SyncReconcileResponsePendingPreparedStackOverrideAzureBinding$inboundSchema: + z.ZodType< + SyncReconcileResponsePendingPreparedStackOverrideAzureBinding, + unknown + > = z.object({ + resource: z.lazy(() => + SyncReconcileResponsePendingPreparedStackOverrideAzureResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileResponsePendingPreparedStackOverrideAzureStack$inboundSchema + ).optional(), + }); -export function syncReconcileResponseCurrentReleaseOverrideUnionFromJSON( +export function syncReconcileResponsePendingPreparedStackOverrideAzureBindingFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseOverrideUnion, + SyncReconcileResponsePendingPreparedStackOverrideAzureBinding, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseOverrideUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideUnion' from JSON`, + SyncReconcileResponsePendingPreparedStackOverrideAzureBinding$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackOverrideAzureBinding' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseManagement2$inboundSchema: - z.ZodType = z.object( - { - override: z.record( - z.string(), - z.array( - z.union([ - z.lazy(() => - SyncReconcileResponseCurrentReleaseOverride$inboundSchema - ), - z.string(), - ]), - ), - ), - }, - ); +export const SyncReconcileResponsePendingPreparedStackOverrideAzureGrant$inboundSchema: + z.ZodType< + SyncReconcileResponsePendingPreparedStackOverrideAzureGrant, + unknown + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); -export function syncReconcileResponseCurrentReleaseManagement2FromJSON( +export function syncReconcileResponsePendingPreparedStackOverrideAzureGrantFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseManagement2, + SyncReconcileResponsePendingPreparedStackOverrideAzureGrant, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseManagement2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseManagement2' from JSON`, + SyncReconcileResponsePendingPreparedStackOverrideAzureGrant$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackOverrideAzureGrant' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseExtendAwResource$inboundSchema: - z.ZodType = z +export const SyncReconcileResponsePendingPreparedStackOverrideAzure$inboundSchema: + z.ZodType = z .object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), + binding: z.lazy(() => + SyncReconcileResponsePendingPreparedStackOverrideAzureBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileResponsePendingPreparedStackOverrideAzureGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), }); -export function syncReconcileResponseCurrentReleaseExtendAwResourceFromJSON( +export function syncReconcileResponsePendingPreparedStackOverrideAzureFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseExtendAwResource, + SyncReconcileResponsePendingPreparedStackOverrideAzure, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseExtendAwResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendAwResource' from JSON`, + SyncReconcileResponsePendingPreparedStackOverrideAzure$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackOverrideAzure' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseExtendAwStack$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); +export const SyncReconcileResponsePendingPreparedStackOverrideConditionResource$inboundSchema: + z.ZodType< + SyncReconcileResponsePendingPreparedStackOverrideConditionResource, + unknown + > = z.object({ + expression: z.string(), + title: z.string(), + }); -export function syncReconcileResponseCurrentReleaseExtendAwStackFromJSON( +export function syncReconcileResponsePendingPreparedStackOverrideConditionResourceFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseExtendAwStack, + SyncReconcileResponsePendingPreparedStackOverrideConditionResource, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseExtendAwStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendAwStack' from JSON`, + SyncReconcileResponsePendingPreparedStackOverrideConditionResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackOverrideConditionResource' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseExtendAwBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncReconcileResponseCurrentReleaseExtendAwResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileResponseCurrentReleaseExtendAwStack$inboundSchema - ).optional(), - }); +export const SyncReconcileResponsePendingPreparedStackOverrideResourceConditionUnion$inboundSchema: + z.ZodType< + SyncReconcileResponsePendingPreparedStackOverrideResourceConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncReconcileResponsePendingPreparedStackOverrideConditionResource$inboundSchema + ), + z.any(), + ]); -export function syncReconcileResponseCurrentReleaseExtendAwBindingFromJSON( +export function syncReconcileResponsePendingPreparedStackOverrideResourceConditionUnionFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseExtendAwBinding, + SyncReconcileResponsePendingPreparedStackOverrideResourceConditionUnion, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseExtendAwBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendAwBinding' from JSON`, + SyncReconcileResponsePendingPreparedStackOverrideResourceConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackOverrideResourceConditionUnion' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseExtendEffect$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponseCurrentReleaseExtendEffect, +export const SyncReconcileResponsePendingPreparedStackOverrideGcpResource$inboundSchema: + z.ZodType< + SyncReconcileResponsePendingPreparedStackOverrideGcpResource, + unknown + > = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncReconcileResponsePendingPreparedStackOverrideConditionResource$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncReconcileResponsePendingPreparedStackOverrideGcpResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePendingPreparedStackOverrideGcpResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePendingPreparedStackOverrideGcpResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackOverrideGcpResource' from JSON`, ); +} /** @internal */ -export const SyncReconcileResponseCurrentReleaseExtendAwGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); +export const SyncReconcileResponsePendingPreparedStackOverrideConditionStack$inboundSchema: + z.ZodType< + SyncReconcileResponsePendingPreparedStackOverrideConditionStack, + unknown + > = z.object({ + expression: z.string(), + title: z.string(), + }); + +export function syncReconcileResponsePendingPreparedStackOverrideConditionStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePendingPreparedStackOverrideConditionStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePendingPreparedStackOverrideConditionStack$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackOverrideConditionStack' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePendingPreparedStackOverrideStackConditionUnion$inboundSchema: + z.ZodType< + SyncReconcileResponsePendingPreparedStackOverrideStackConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncReconcileResponsePendingPreparedStackOverrideConditionStack$inboundSchema + ), + z.any(), + ]); + +export function syncReconcileResponsePendingPreparedStackOverrideStackConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePendingPreparedStackOverrideStackConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePendingPreparedStackOverrideStackConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackOverrideStackConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePendingPreparedStackOverrideGcpStack$inboundSchema: + z.ZodType< + SyncReconcileResponsePendingPreparedStackOverrideGcpStack, + unknown + > = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncReconcileResponsePendingPreparedStackOverrideConditionStack$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); -export function syncReconcileResponseCurrentReleaseExtendAwGrantFromJSON( +export function syncReconcileResponsePendingPreparedStackOverrideGcpStackFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseExtendAwGrant, + SyncReconcileResponsePendingPreparedStackOverrideGcpStack, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseExtendAwGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendAwGrant' from JSON`, + SyncReconcileResponsePendingPreparedStackOverrideGcpStack$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackOverrideGcpStack' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseExtendAw$inboundSchema: - z.ZodType = z.object({ - binding: z.lazy(() => - SyncReconcileResponseCurrentReleaseExtendAwBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - effect: SyncReconcileResponseCurrentReleaseExtendEffect$inboundSchema - .optional(), - grant: z.lazy(() => - SyncReconcileResponseCurrentReleaseExtendAwGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), +export const SyncReconcileResponsePendingPreparedStackOverrideGcpBinding$inboundSchema: + z.ZodType< + SyncReconcileResponsePendingPreparedStackOverrideGcpBinding, + unknown + > = z.object({ + resource: z.lazy(() => + SyncReconcileResponsePendingPreparedStackOverrideGcpResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileResponsePendingPreparedStackOverrideGcpStack$inboundSchema + ).optional(), }); -export function syncReconcileResponseCurrentReleaseExtendAwFromJSON( +export function syncReconcileResponsePendingPreparedStackOverrideGcpBindingFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseExtendAw, + SyncReconcileResponsePendingPreparedStackOverrideGcpBinding, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseExtendAw$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendAw' from JSON`, + SyncReconcileResponsePendingPreparedStackOverrideGcpBinding$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackOverrideGcpBinding' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseExtendAzureResource$inboundSchema: - z.ZodType = z - .object({ - scope: z.string(), - }); +export const SyncReconcileResponsePendingPreparedStackOverrideGcpGrant$inboundSchema: + z.ZodType< + SyncReconcileResponsePendingPreparedStackOverrideGcpGrant, + unknown + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); -export function syncReconcileResponseCurrentReleaseExtendAzureResourceFromJSON( +export function syncReconcileResponsePendingPreparedStackOverrideGcpGrantFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseExtendAzureResource, + SyncReconcileResponsePendingPreparedStackOverrideGcpGrant, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseExtendAzureResource$inboundSchema + SyncReconcileResponsePendingPreparedStackOverrideGcpGrant$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendAzureResource' from JSON`, + `Failed to parse 'SyncReconcileResponsePendingPreparedStackOverrideGcpGrant' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseExtendAzureStack$inboundSchema: - z.ZodType = z +export const SyncReconcileResponsePendingPreparedStackOverrideGcp$inboundSchema: + z.ZodType = z .object({ - scope: z.string(), + binding: z.lazy(() => + SyncReconcileResponsePendingPreparedStackOverrideGcpBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileResponsePendingPreparedStackOverrideGcpGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), }); -export function syncReconcileResponseCurrentReleaseExtendAzureStackFromJSON( +export function syncReconcileResponsePendingPreparedStackOverrideGcpFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseExtendAzureStack, + SyncReconcileResponsePendingPreparedStackOverrideGcp, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseExtendAzureStack$inboundSchema.parse( + SyncReconcileResponsePendingPreparedStackOverrideGcp$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendAzureStack' from JSON`, + `Failed to parse 'SyncReconcileResponsePendingPreparedStackOverrideGcp' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseExtendAzureBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncReconcileResponseCurrentReleaseExtendAzureResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileResponseCurrentReleaseExtendAzureStack$inboundSchema - ).optional(), - }); +export const SyncReconcileResponsePendingPreparedStackOverridePlatforms$inboundSchema: + z.ZodType< + SyncReconcileResponsePendingPreparedStackOverridePlatforms, + unknown + > = z.object({ + aws: z.nullable( + z.array(z.lazy(() => + SyncReconcileResponsePendingPreparedStackOverrideAw$inboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + SyncReconcileResponsePendingPreparedStackOverrideAzure$inboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + SyncReconcileResponsePendingPreparedStackOverrideGcp$inboundSchema + )), + ).optional(), + }); -export function syncReconcileResponseCurrentReleaseExtendAzureBindingFromJSON( +export function syncReconcileResponsePendingPreparedStackOverridePlatformsFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseExtendAzureBinding, + SyncReconcileResponsePendingPreparedStackOverridePlatforms, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseExtendAzureBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendAzureBinding' from JSON`, + SyncReconcileResponsePendingPreparedStackOverridePlatforms$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackOverridePlatforms' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseExtendAzureGrant$inboundSchema: - z.ZodType = z +export const SyncReconcileResponsePendingPreparedStackOverride$inboundSchema: + z.ZodType = z .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncReconcileResponsePendingPreparedStackOverridePlatforms$inboundSchema + ), }); -export function syncReconcileResponseCurrentReleaseExtendAzureGrantFromJSON( +export function syncReconcileResponsePendingPreparedStackOverrideFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseExtendAzureGrant, + SyncReconcileResponsePendingPreparedStackOverride, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseExtendAzureGrant$inboundSchema.parse( + SyncReconcileResponsePendingPreparedStackOverride$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendAzureGrant' from JSON`, + `Failed to parse 'SyncReconcileResponsePendingPreparedStackOverride' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseExtendAzure$inboundSchema: - z.ZodType = z.object( - { - binding: z.lazy(() => - SyncReconcileResponseCurrentReleaseExtendAzureBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncReconcileResponseCurrentReleaseExtendAzureGrant$inboundSchema +export const SyncReconcileResponsePendingPreparedStackOverrideUnion$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => + SyncReconcileResponsePendingPreparedStackOverride$inboundSchema ), - label: z.nullable(z.string()).optional(), - }, - ); + z.string(), + ]); -export function syncReconcileResponseCurrentReleaseExtendAzureFromJSON( +export function syncReconcileResponsePendingPreparedStackOverrideUnionFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseExtendAzure, + SyncReconcileResponsePendingPreparedStackOverrideUnion, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseExtendAzure$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendAzure' from JSON`, + SyncReconcileResponsePendingPreparedStackOverrideUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackOverrideUnion' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseExtendConditionResource$inboundSchema: - z.ZodType< - SyncReconcileResponseCurrentReleaseExtendConditionResource, - unknown - > = z.object({ - expression: z.string(), - title: z.string(), - }); +export const SyncReconcileResponsePendingPreparedStackManagement2$inboundSchema: + z.ZodType = z + .object({ + override: z.record( + z.string(), + z.array(z.union([ + z.lazy(() => + SyncReconcileResponsePendingPreparedStackOverride$inboundSchema + ), + z.string(), + ])), + ), + }); -export function syncReconcileResponseCurrentReleaseExtendConditionResourceFromJSON( +export function syncReconcileResponsePendingPreparedStackManagement2FromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseExtendConditionResource, + SyncReconcileResponsePendingPreparedStackManagement2, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseExtendConditionResource$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendConditionResource' from JSON`, + SyncReconcileResponsePendingPreparedStackManagement2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackManagement2' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseExtendResourceConditionUnion$inboundSchema: +export const SyncReconcileResponsePendingPreparedStackExtendAwResource$inboundSchema: z.ZodType< - SyncReconcileResponseCurrentReleaseExtendResourceConditionUnion, + SyncReconcileResponsePendingPreparedStackExtendAwResource, unknown - > = z.union([ - z.lazy(() => - SyncReconcileResponseCurrentReleaseExtendConditionResource$inboundSchema - ), - z.any(), - ]); + > = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); -export function syncReconcileResponseCurrentReleaseExtendResourceConditionUnionFromJSON( +export function syncReconcileResponsePendingPreparedStackExtendAwResourceFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseExtendResourceConditionUnion, + SyncReconcileResponsePendingPreparedStackExtendAwResource, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseExtendResourceConditionUnion$inboundSchema + SyncReconcileResponsePendingPreparedStackExtendAwResource$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendResourceConditionUnion' from JSON`, + `Failed to parse 'SyncReconcileResponsePendingPreparedStackExtendAwResource' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseExtendGcpResource$inboundSchema: - z.ZodType = z +export const SyncReconcileResponsePendingPreparedStackExtendAwStack$inboundSchema: + z.ZodType = z .object({ condition: z.nullable( - z.union([ - z.lazy(() => - SyncReconcileResponseCurrentReleaseExtendConditionResource$inboundSchema - ), - z.any(), - ]), + z.record(z.string(), z.record(z.string(), z.string())), ).optional(), - scope: z.string(), + resources: z.array(z.string()), }); -export function syncReconcileResponseCurrentReleaseExtendGcpResourceFromJSON( +export function syncReconcileResponsePendingPreparedStackExtendAwStackFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseExtendGcpResource, + SyncReconcileResponsePendingPreparedStackExtendAwStack, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseExtendGcpResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendGcpResource' from JSON`, + SyncReconcileResponsePendingPreparedStackExtendAwStack$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackExtendAwStack' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseExtendCondition$inboundSchema: - z.ZodType = z - .object({ - expression: z.string(), - title: z.string(), +export const SyncReconcileResponsePendingPreparedStackExtendAwBinding$inboundSchema: + z.ZodType = + z.object({ + resource: z.lazy(() => + SyncReconcileResponsePendingPreparedStackExtendAwResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileResponsePendingPreparedStackExtendAwStack$inboundSchema + ).optional(), }); -export function syncReconcileResponseCurrentReleaseExtendConditionFromJSON( +export function syncReconcileResponsePendingPreparedStackExtendAwBindingFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseExtendCondition, + SyncReconcileResponsePendingPreparedStackExtendAwBinding, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseExtendCondition$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendCondition' from JSON`, + SyncReconcileResponsePendingPreparedStackExtendAwBinding$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackExtendAwBinding' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseExtendConditionUnion$inboundSchema: - z.ZodType = - z.union([ - z.lazy(() => - SyncReconcileResponseCurrentReleaseExtendCondition$inboundSchema - ), - z.any(), - ]); +export const SyncReconcileResponsePendingPreparedStackExtendEffect$inboundSchema: + z.ZodEnum = z + .enum(SyncReconcileResponsePendingPreparedStackExtendEffect); -export function syncReconcileResponseCurrentReleaseExtendConditionUnionFromJSON( +/** @internal */ +export const SyncReconcileResponsePendingPreparedStackExtendAwGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileResponsePendingPreparedStackExtendAwGrantFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseExtendConditionUnion, + SyncReconcileResponsePendingPreparedStackExtendAwGrant, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseExtendConditionUnion$inboundSchema + SyncReconcileResponsePendingPreparedStackExtendAwGrant$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendConditionUnion' from JSON`, + `Failed to parse 'SyncReconcileResponsePendingPreparedStackExtendAwGrant' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseExtendGcpStack$inboundSchema: - z.ZodType = z +export const SyncReconcileResponsePendingPreparedStackExtendAw$inboundSchema: + z.ZodType = z .object({ - condition: z.nullable( - z.union([ - z.lazy(() => - SyncReconcileResponseCurrentReleaseExtendCondition$inboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), + binding: z.lazy(() => + SyncReconcileResponsePendingPreparedStackExtendAwBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: + SyncReconcileResponsePendingPreparedStackExtendEffect$inboundSchema + .optional(), + grant: z.lazy(() => + SyncReconcileResponsePendingPreparedStackExtendAwGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), }); -export function syncReconcileResponseCurrentReleaseExtendGcpStackFromJSON( +export function syncReconcileResponsePendingPreparedStackExtendAwFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseExtendGcpStack, + SyncReconcileResponsePendingPreparedStackExtendAw, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseExtendGcpStack$inboundSchema.parse( + SyncReconcileResponsePendingPreparedStackExtendAw$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendGcpStack' from JSON`, + `Failed to parse 'SyncReconcileResponsePendingPreparedStackExtendAw' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseExtendGcpBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncReconcileResponseCurrentReleaseExtendGcpResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileResponseCurrentReleaseExtendGcpStack$inboundSchema - ).optional(), - }); +export const SyncReconcileResponsePendingPreparedStackExtendAzureResource$inboundSchema: + z.ZodType< + SyncReconcileResponsePendingPreparedStackExtendAzureResource, + unknown + > = z.object({ + scope: z.string(), + }); + +export function syncReconcileResponsePendingPreparedStackExtendAzureResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePendingPreparedStackExtendAzureResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePendingPreparedStackExtendAzureResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackExtendAzureResource' from JSON`, + ); +} -export function syncReconcileResponseCurrentReleaseExtendGcpBindingFromJSON( +/** @internal */ +export const SyncReconcileResponsePendingPreparedStackExtendAzureStack$inboundSchema: + z.ZodType< + SyncReconcileResponsePendingPreparedStackExtendAzureStack, + unknown + > = z.object({ + scope: z.string(), + }); + +export function syncReconcileResponsePendingPreparedStackExtendAzureStackFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseExtendGcpBinding, + SyncReconcileResponsePendingPreparedStackExtendAzureStack, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseExtendGcpBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendGcpBinding' from JSON`, + SyncReconcileResponsePendingPreparedStackExtendAzureStack$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackExtendAzureStack' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseExtendGcpGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); +export const SyncReconcileResponsePendingPreparedStackExtendAzureBinding$inboundSchema: + z.ZodType< + SyncReconcileResponsePendingPreparedStackExtendAzureBinding, + unknown + > = z.object({ + resource: z.lazy(() => + SyncReconcileResponsePendingPreparedStackExtendAzureResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileResponsePendingPreparedStackExtendAzureStack$inboundSchema + ).optional(), + }); -export function syncReconcileResponseCurrentReleaseExtendGcpGrantFromJSON( +export function syncReconcileResponsePendingPreparedStackExtendAzureBindingFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseExtendGcpGrant, + SyncReconcileResponsePendingPreparedStackExtendAzureBinding, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseExtendGcpGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendGcpGrant' from JSON`, + SyncReconcileResponsePendingPreparedStackExtendAzureBinding$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackExtendAzureBinding' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseExtendGcp$inboundSchema: - z.ZodType = z.object({ - binding: z.lazy(() => - SyncReconcileResponseCurrentReleaseExtendGcpBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncReconcileResponseCurrentReleaseExtendGcpGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), +export const SyncReconcileResponsePendingPreparedStackExtendAzureGrant$inboundSchema: + z.ZodType< + SyncReconcileResponsePendingPreparedStackExtendAzureGrant, + unknown + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function syncReconcileResponseCurrentReleaseExtendGcpFromJSON( +export function syncReconcileResponsePendingPreparedStackExtendAzureGrantFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseExtendGcp, + SyncReconcileResponsePendingPreparedStackExtendAzureGrant, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseExtendGcp$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendGcp' from JSON`, + SyncReconcileResponsePendingPreparedStackExtendAzureGrant$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackExtendAzureGrant' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseExtendPlatforms$inboundSchema: - z.ZodType = z +export const SyncReconcileResponsePendingPreparedStackExtendAzure$inboundSchema: + z.ZodType = z .object({ - aws: z.nullable( - z.array(z.lazy(() => - SyncReconcileResponseCurrentReleaseExtendAw$inboundSchema - )), - ).optional(), - azure: z.nullable( - z.array(z.lazy(() => - SyncReconcileResponseCurrentReleaseExtendAzure$inboundSchema - )), - ).optional(), - gcp: z.nullable( - z.array(z.lazy(() => - SyncReconcileResponseCurrentReleaseExtendGcp$inboundSchema - )), - ).optional(), + binding: z.lazy(() => + SyncReconcileResponsePendingPreparedStackExtendAzureBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileResponsePendingPreparedStackExtendAzureGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), }); -export function syncReconcileResponseCurrentReleaseExtendPlatformsFromJSON( +export function syncReconcileResponsePendingPreparedStackExtendAzureFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseExtendPlatforms, + SyncReconcileResponsePendingPreparedStackExtendAzure, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseExtendPlatforms$inboundSchema.parse( + SyncReconcileResponsePendingPreparedStackExtendAzure$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendPlatforms' from JSON`, + `Failed to parse 'SyncReconcileResponsePendingPreparedStackExtendAzure' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseExtend$inboundSchema: z.ZodType< - SyncReconcileResponseCurrentReleaseExtend, - unknown -> = z.object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => - SyncReconcileResponseCurrentReleaseExtendPlatforms$inboundSchema - ), -}); +export const SyncReconcileResponsePendingPreparedStackExtendConditionResource$inboundSchema: + z.ZodType< + SyncReconcileResponsePendingPreparedStackExtendConditionResource, + unknown + > = z.object({ + expression: z.string(), + title: z.string(), + }); -export function syncReconcileResponseCurrentReleaseExtendFromJSON( +export function syncReconcileResponsePendingPreparedStackExtendConditionResourceFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseExtend, + SyncReconcileResponsePendingPreparedStackExtendConditionResource, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseExtend$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseExtend' from JSON`, + SyncReconcileResponsePendingPreparedStackExtendConditionResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackExtendConditionResource' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseExtendUnion$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => SyncReconcileResponseCurrentReleaseExtend$inboundSchema), - z.string(), +export const SyncReconcileResponsePendingPreparedStackExtendResourceConditionUnion$inboundSchema: + z.ZodType< + SyncReconcileResponsePendingPreparedStackExtendResourceConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncReconcileResponsePendingPreparedStackExtendConditionResource$inboundSchema + ), + z.any(), ]); -export function syncReconcileResponseCurrentReleaseExtendUnionFromJSON( +export function syncReconcileResponsePendingPreparedStackExtendResourceConditionUnionFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseExtendUnion, + SyncReconcileResponsePendingPreparedStackExtendResourceConditionUnion, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseExtendUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendUnion' from JSON`, + SyncReconcileResponsePendingPreparedStackExtendResourceConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackExtendResourceConditionUnion' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseManagement1$inboundSchema: - z.ZodType = z.object( - { - extend: z.record( - z.string(), - z.array( - z.union([ - z.lazy(() => - SyncReconcileResponseCurrentReleaseExtend$inboundSchema - ), - z.string(), - ]), +export const SyncReconcileResponsePendingPreparedStackExtendGcpResource$inboundSchema: + z.ZodType< + SyncReconcileResponsePendingPreparedStackExtendGcpResource, + unknown + > = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncReconcileResponsePendingPreparedStackExtendConditionResource$inboundSchema ), - ), - }, - ); + z.any(), + ]), + ).optional(), + scope: z.string(), + }); -export function syncReconcileResponseCurrentReleaseManagement1FromJSON( +export function syncReconcileResponsePendingPreparedStackExtendGcpResourceFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseManagement1, + SyncReconcileResponsePendingPreparedStackExtendGcpResource, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseManagement1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseManagement1' from JSON`, + SyncReconcileResponsePendingPreparedStackExtendGcpResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackExtendGcpResource' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseManagementUnion$inboundSchema: - z.ZodType = z - .union([ - z.lazy(() => - SyncReconcileResponseCurrentReleaseManagement1$inboundSchema - ), - z.lazy(() => - SyncReconcileResponseCurrentReleaseManagement2$inboundSchema - ), - SyncReconcileResponseCurrentReleaseManagementEnum$inboundSchema, - ]); +export const SyncReconcileResponsePendingPreparedStackExtendConditionStack$inboundSchema: + z.ZodType< + SyncReconcileResponsePendingPreparedStackExtendConditionStack, + unknown + > = z.object({ + expression: z.string(), + title: z.string(), + }); -export function syncReconcileResponseCurrentReleaseManagementUnionFromJSON( +export function syncReconcileResponsePendingPreparedStackExtendConditionStackFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseManagementUnion, + SyncReconcileResponsePendingPreparedStackExtendConditionStack, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseManagementUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseManagementUnion' from JSON`, + SyncReconcileResponsePendingPreparedStackExtendConditionStack$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackExtendConditionStack' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseProfileAwResource$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); +export const SyncReconcileResponsePendingPreparedStackExtendStackConditionUnion$inboundSchema: + z.ZodType< + SyncReconcileResponsePendingPreparedStackExtendStackConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncReconcileResponsePendingPreparedStackExtendConditionStack$inboundSchema + ), + z.any(), + ]); -export function syncReconcileResponseCurrentReleaseProfileAwResourceFromJSON( +export function syncReconcileResponsePendingPreparedStackExtendStackConditionUnionFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseProfileAwResource, + SyncReconcileResponsePendingPreparedStackExtendStackConditionUnion, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseProfileAwResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileAwResource' from JSON`, + SyncReconcileResponsePendingPreparedStackExtendStackConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackExtendStackConditionUnion' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseProfileAwStack$inboundSchema: - z.ZodType = z - .object({ +export const SyncReconcileResponsePendingPreparedStackExtendGcpStack$inboundSchema: + z.ZodType = + z.object({ condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), + z.union([ + z.lazy(() => + SyncReconcileResponsePendingPreparedStackExtendConditionStack$inboundSchema + ), + z.any(), + ]), ).optional(), - resources: z.array(z.string()), + scope: z.string(), }); -export function syncReconcileResponseCurrentReleaseProfileAwStackFromJSON( +export function syncReconcileResponsePendingPreparedStackExtendGcpStackFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseProfileAwStack, + SyncReconcileResponsePendingPreparedStackExtendGcpStack, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseProfileAwStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileAwStack' from JSON`, + SyncReconcileResponsePendingPreparedStackExtendGcpStack$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackExtendGcpStack' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseProfileAwBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncReconcileResponseCurrentReleaseProfileAwResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileResponseCurrentReleaseProfileAwStack$inboundSchema - ).optional(), - }); +export const SyncReconcileResponsePendingPreparedStackExtendGcpBinding$inboundSchema: + z.ZodType< + SyncReconcileResponsePendingPreparedStackExtendGcpBinding, + unknown + > = z.object({ + resource: z.lazy(() => + SyncReconcileResponsePendingPreparedStackExtendGcpResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileResponsePendingPreparedStackExtendGcpStack$inboundSchema + ).optional(), + }); -export function syncReconcileResponseCurrentReleaseProfileAwBindingFromJSON( +export function syncReconcileResponsePendingPreparedStackExtendGcpBindingFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseProfileAwBinding, + SyncReconcileResponsePendingPreparedStackExtendGcpBinding, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseProfileAwBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileAwBinding' from JSON`, + SyncReconcileResponsePendingPreparedStackExtendGcpBinding$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackExtendGcpBinding' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseProfileEffect$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponseCurrentReleaseProfileEffect, - ); - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseProfileAwGrant$inboundSchema: - z.ZodType = z - .object({ +export const SyncReconcileResponsePendingPreparedStackExtendGcpGrant$inboundSchema: + z.ZodType = + z.object({ actions: z.nullable(z.array(z.string())).optional(), dataActions: z.nullable(z.array(z.string())).optional(), permissions: z.nullable(z.array(z.string())).optional(), @@ -13273,971 +17602,1027 @@ export const SyncReconcileResponseCurrentReleaseProfileAwGrant$inboundSchema: residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function syncReconcileResponseCurrentReleaseProfileAwGrantFromJSON( +export function syncReconcileResponsePendingPreparedStackExtendGcpGrantFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseProfileAwGrant, + SyncReconcileResponsePendingPreparedStackExtendGcpGrant, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseProfileAwGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileAwGrant' from JSON`, + SyncReconcileResponsePendingPreparedStackExtendGcpGrant$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackExtendGcpGrant' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseProfileAw$inboundSchema: - z.ZodType = z.object({ - binding: z.lazy(() => - SyncReconcileResponseCurrentReleaseProfileAwBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - effect: SyncReconcileResponseCurrentReleaseProfileEffect$inboundSchema - .optional(), - grant: z.lazy(() => - SyncReconcileResponseCurrentReleaseProfileAwGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); +export const SyncReconcileResponsePendingPreparedStackExtendGcp$inboundSchema: + z.ZodType = z + .object({ + binding: z.lazy(() => + SyncReconcileResponsePendingPreparedStackExtendGcpBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileResponsePendingPreparedStackExtendGcpGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); -export function syncReconcileResponseCurrentReleaseProfileAwFromJSON( +export function syncReconcileResponsePendingPreparedStackExtendGcpFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseProfileAw, + SyncReconcileResponsePendingPreparedStackExtendGcp, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseProfileAw$inboundSchema.parse( + SyncReconcileResponsePendingPreparedStackExtendGcp$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileAw' from JSON`, + `Failed to parse 'SyncReconcileResponsePendingPreparedStackExtendGcp' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseProfileAzureResource$inboundSchema: - z.ZodType = +export const SyncReconcileResponsePendingPreparedStackExtendPlatforms$inboundSchema: + z.ZodType = z.object({ - scope: z.string(), + aws: z.nullable( + z.array(z.lazy(() => + SyncReconcileResponsePendingPreparedStackExtendAw$inboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + SyncReconcileResponsePendingPreparedStackExtendAzure$inboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + SyncReconcileResponsePendingPreparedStackExtendGcp$inboundSchema + )), + ).optional(), }); -export function syncReconcileResponseCurrentReleaseProfileAzureResourceFromJSON( +export function syncReconcileResponsePendingPreparedStackExtendPlatformsFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseProfileAzureResource, + SyncReconcileResponsePendingPreparedStackExtendPlatforms, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseProfileAzureResource$inboundSchema + SyncReconcileResponsePendingPreparedStackExtendPlatforms$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileAzureResource' from JSON`, + `Failed to parse 'SyncReconcileResponsePendingPreparedStackExtendPlatforms' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseProfileAzureStack$inboundSchema: - z.ZodType = z +export const SyncReconcileResponsePendingPreparedStackExtend$inboundSchema: + z.ZodType = z .object({ - scope: z.string(), + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncReconcileResponsePendingPreparedStackExtendPlatforms$inboundSchema + ), }); -export function syncReconcileResponseCurrentReleaseProfileAzureStackFromJSON( +export function syncReconcileResponsePendingPreparedStackExtendFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseProfileAzureStack, + SyncReconcileResponsePendingPreparedStackExtend, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseProfileAzureStack$inboundSchema.parse( + SyncReconcileResponsePendingPreparedStackExtend$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileAzureStack' from JSON`, + `Failed to parse 'SyncReconcileResponsePendingPreparedStackExtend' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseProfileAzureBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncReconcileResponseCurrentReleaseProfileAzureResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileResponseCurrentReleaseProfileAzureStack$inboundSchema - ).optional(), - }); +export const SyncReconcileResponsePendingPreparedStackExtendUnion$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => + SyncReconcileResponsePendingPreparedStackExtend$inboundSchema + ), + z.string(), + ]); -export function syncReconcileResponseCurrentReleaseProfileAzureBindingFromJSON( +export function syncReconcileResponsePendingPreparedStackExtendUnionFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseProfileAzureBinding, + SyncReconcileResponsePendingPreparedStackExtendUnion, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseProfileAzureBinding$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileAzureBinding' from JSON`, + SyncReconcileResponsePendingPreparedStackExtendUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackExtendUnion' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseProfileAzureGrant$inboundSchema: - z.ZodType = z +export const SyncReconcileResponsePendingPreparedStackManagement1$inboundSchema: + z.ZodType = z .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), + extend: z.record( + z.string(), + z.array(z.union([ + z.lazy(() => + SyncReconcileResponsePendingPreparedStackExtend$inboundSchema + ), + z.string(), + ])), + ), }); -export function syncReconcileResponseCurrentReleaseProfileAzureGrantFromJSON( +export function syncReconcileResponsePendingPreparedStackManagement1FromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseProfileAzureGrant, + SyncReconcileResponsePendingPreparedStackManagement1, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseProfileAzureGrant$inboundSchema.parse( + SyncReconcileResponsePendingPreparedStackManagement1$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileAzureGrant' from JSON`, + `Failed to parse 'SyncReconcileResponsePendingPreparedStackManagement1' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseProfileAzure$inboundSchema: - z.ZodType = z - .object({ - binding: z.lazy(() => - SyncReconcileResponseCurrentReleaseProfileAzureBinding$inboundSchema +export const SyncReconcileResponsePendingPreparedStackManagementUnion$inboundSchema: + z.ZodType = + z.union([ + z.lazy(() => + SyncReconcileResponsePendingPreparedStackManagement1$inboundSchema ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncReconcileResponseCurrentReleaseProfileAzureGrant$inboundSchema + z.lazy(() => + SyncReconcileResponsePendingPreparedStackManagement2$inboundSchema ), - label: z.nullable(z.string()).optional(), - }); + SyncReconcileResponsePendingPreparedStackManagementEnum$inboundSchema, + ]); -export function syncReconcileResponseCurrentReleaseProfileAzureFromJSON( +export function syncReconcileResponsePendingPreparedStackManagementUnionFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseProfileAzure, + SyncReconcileResponsePendingPreparedStackManagementUnion, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseProfileAzure$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileAzure' from JSON`, + SyncReconcileResponsePendingPreparedStackManagementUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackManagementUnion' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseProfileConditionResource$inboundSchema: +export const SyncReconcileResponsePendingPreparedStackProfileAwResource$inboundSchema: z.ZodType< - SyncReconcileResponseCurrentReleaseProfileConditionResource, + SyncReconcileResponsePendingPreparedStackProfileAwResource, unknown > = z.object({ - expression: z.string(), - title: z.string(), + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), }); -export function syncReconcileResponseCurrentReleaseProfileConditionResourceFromJSON( +export function syncReconcileResponsePendingPreparedStackProfileAwResourceFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseProfileConditionResource, + SyncReconcileResponsePendingPreparedStackProfileAwResource, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseProfileConditionResource$inboundSchema + SyncReconcileResponsePendingPreparedStackProfileAwResource$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileConditionResource' from JSON`, + `Failed to parse 'SyncReconcileResponsePendingPreparedStackProfileAwResource' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseProfileResourceConditionUnion$inboundSchema: - z.ZodType< - SyncReconcileResponseCurrentReleaseProfileResourceConditionUnion, - unknown - > = z.union([ - z.lazy(() => - SyncReconcileResponseCurrentReleaseProfileConditionResource$inboundSchema - ), - z.any(), - ]); +export const SyncReconcileResponsePendingPreparedStackProfileAwStack$inboundSchema: + z.ZodType = + z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); -export function syncReconcileResponseCurrentReleaseProfileResourceConditionUnionFromJSON( +export function syncReconcileResponsePendingPreparedStackProfileAwStackFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseProfileResourceConditionUnion, + SyncReconcileResponsePendingPreparedStackProfileAwStack, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseProfileResourceConditionUnion$inboundSchema + SyncReconcileResponsePendingPreparedStackProfileAwStack$inboundSchema .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileResourceConditionUnion' from JSON`, + `Failed to parse 'SyncReconcileResponsePendingPreparedStackProfileAwStack' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseProfileGcpResource$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.union([ - z.lazy(() => - SyncReconcileResponseCurrentReleaseProfileConditionResource$inboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); +export const SyncReconcileResponsePendingPreparedStackProfileAwBinding$inboundSchema: + z.ZodType< + SyncReconcileResponsePendingPreparedStackProfileAwBinding, + unknown + > = z.object({ + resource: z.lazy(() => + SyncReconcileResponsePendingPreparedStackProfileAwResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileResponsePendingPreparedStackProfileAwStack$inboundSchema + ).optional(), + }); -export function syncReconcileResponseCurrentReleaseProfileGcpResourceFromJSON( +export function syncReconcileResponsePendingPreparedStackProfileAwBindingFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseProfileGcpResource, + SyncReconcileResponsePendingPreparedStackProfileAwBinding, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseProfileGcpResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileGcpResource' from JSON`, + SyncReconcileResponsePendingPreparedStackProfileAwBinding$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackProfileAwBinding' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseProfileCondition$inboundSchema: - z.ZodType = z - .object({ - expression: z.string(), - title: z.string(), +export const SyncReconcileResponsePendingPreparedStackProfileEffect$inboundSchema: + z.ZodEnum = z + .enum(SyncReconcileResponsePendingPreparedStackProfileEffect); + +/** @internal */ +export const SyncReconcileResponsePendingPreparedStackProfileAwGrant$inboundSchema: + z.ZodType = + z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function syncReconcileResponseCurrentReleaseProfileConditionFromJSON( +export function syncReconcileResponsePendingPreparedStackProfileAwGrantFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseProfileCondition, + SyncReconcileResponsePendingPreparedStackProfileAwGrant, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseProfileCondition$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileCondition' from JSON`, + SyncReconcileResponsePendingPreparedStackProfileAwGrant$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackProfileAwGrant' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseProfileConditionUnion$inboundSchema: - z.ZodType = - z.union([ - z.lazy(() => - SyncReconcileResponseCurrentReleaseProfileCondition$inboundSchema +export const SyncReconcileResponsePendingPreparedStackProfileAw$inboundSchema: + z.ZodType = z + .object({ + binding: z.lazy(() => + SyncReconcileResponsePendingPreparedStackProfileAwBinding$inboundSchema ), - z.any(), - ]); + description: z.nullable(z.string()).optional(), + effect: + SyncReconcileResponsePendingPreparedStackProfileEffect$inboundSchema + .optional(), + grant: z.lazy(() => + SyncReconcileResponsePendingPreparedStackProfileAwGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); -export function syncReconcileResponseCurrentReleaseProfileConditionUnionFromJSON( +export function syncReconcileResponsePendingPreparedStackProfileAwFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseProfileConditionUnion, + SyncReconcileResponsePendingPreparedStackProfileAw, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseProfileConditionUnion$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileConditionUnion' from JSON`, + SyncReconcileResponsePendingPreparedStackProfileAw$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackProfileAw' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseProfileGcpStack$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.union([ - z.lazy(() => - SyncReconcileResponseCurrentReleaseProfileCondition$inboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); +export const SyncReconcileResponsePendingPreparedStackProfileAzureResource$inboundSchema: + z.ZodType< + SyncReconcileResponsePendingPreparedStackProfileAzureResource, + unknown + > = z.object({ + scope: z.string(), + }); -export function syncReconcileResponseCurrentReleaseProfileGcpStackFromJSON( +export function syncReconcileResponsePendingPreparedStackProfileAzureResourceFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseProfileGcpStack, + SyncReconcileResponsePendingPreparedStackProfileAzureResource, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseProfileGcpStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileGcpStack' from JSON`, + SyncReconcileResponsePendingPreparedStackProfileAzureResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackProfileAzureResource' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseProfileGcpBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncReconcileResponseCurrentReleaseProfileGcpResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileResponseCurrentReleaseProfileGcpStack$inboundSchema - ).optional(), - }); +export const SyncReconcileResponsePendingPreparedStackProfileAzureStack$inboundSchema: + z.ZodType< + SyncReconcileResponsePendingPreparedStackProfileAzureStack, + unknown + > = z.object({ + scope: z.string(), + }); -export function syncReconcileResponseCurrentReleaseProfileGcpBindingFromJSON( +export function syncReconcileResponsePendingPreparedStackProfileAzureStackFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseProfileGcpBinding, + SyncReconcileResponsePendingPreparedStackProfileAzureStack, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseProfileGcpBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileGcpBinding' from JSON`, + SyncReconcileResponsePendingPreparedStackProfileAzureStack$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackProfileAzureStack' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseProfileGcpGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); +export const SyncReconcileResponsePendingPreparedStackProfileAzureBinding$inboundSchema: + z.ZodType< + SyncReconcileResponsePendingPreparedStackProfileAzureBinding, + unknown + > = z.object({ + resource: z.lazy(() => + SyncReconcileResponsePendingPreparedStackProfileAzureResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileResponsePendingPreparedStackProfileAzureStack$inboundSchema + ).optional(), + }); -export function syncReconcileResponseCurrentReleaseProfileGcpGrantFromJSON( +export function syncReconcileResponsePendingPreparedStackProfileAzureBindingFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseProfileGcpGrant, + SyncReconcileResponsePendingPreparedStackProfileAzureBinding, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseProfileGcpGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileGcpGrant' from JSON`, + SyncReconcileResponsePendingPreparedStackProfileAzureBinding$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackProfileAzureBinding' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseProfileGcp$inboundSchema: - z.ZodType = z.object({ - binding: z.lazy(() => - SyncReconcileResponseCurrentReleaseProfileGcpBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncReconcileResponseCurrentReleaseProfileGcpGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), +export const SyncReconcileResponsePendingPreparedStackProfileAzureGrant$inboundSchema: + z.ZodType< + SyncReconcileResponsePendingPreparedStackProfileAzureGrant, + unknown + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), }); -export function syncReconcileResponseCurrentReleaseProfileGcpFromJSON( +export function syncReconcileResponsePendingPreparedStackProfileAzureGrantFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseProfileGcp, + SyncReconcileResponsePendingPreparedStackProfileAzureGrant, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseProfileGcp$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileGcp' from JSON`, + SyncReconcileResponsePendingPreparedStackProfileAzureGrant$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackProfileAzureGrant' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseProfilePlatforms$inboundSchema: - z.ZodType = z +export const SyncReconcileResponsePendingPreparedStackProfileAzure$inboundSchema: + z.ZodType = z .object({ - aws: z.nullable( - z.array(z.lazy(() => - SyncReconcileResponseCurrentReleaseProfileAw$inboundSchema - )), - ).optional(), - azure: z.nullable( - z.array(z.lazy(() => - SyncReconcileResponseCurrentReleaseProfileAzure$inboundSchema - )), - ).optional(), - gcp: z.nullable( - z.array(z.lazy(() => - SyncReconcileResponseCurrentReleaseProfileGcp$inboundSchema - )), - ).optional(), + binding: z.lazy(() => + SyncReconcileResponsePendingPreparedStackProfileAzureBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileResponsePendingPreparedStackProfileAzureGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), }); -export function syncReconcileResponseCurrentReleaseProfilePlatformsFromJSON( +export function syncReconcileResponsePendingPreparedStackProfileAzureFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseProfilePlatforms, + SyncReconcileResponsePendingPreparedStackProfileAzure, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseProfilePlatforms$inboundSchema.parse( + SyncReconcileResponsePendingPreparedStackProfileAzure$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseProfilePlatforms' from JSON`, + `Failed to parse 'SyncReconcileResponsePendingPreparedStackProfileAzure' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseProfile$inboundSchema: - z.ZodType = z.object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => - SyncReconcileResponseCurrentReleaseProfilePlatforms$inboundSchema - ), +export const SyncReconcileResponsePendingPreparedStackProfileConditionResource$inboundSchema: + z.ZodType< + SyncReconcileResponsePendingPreparedStackProfileConditionResource, + unknown + > = z.object({ + expression: z.string(), + title: z.string(), }); -export function syncReconcileResponseCurrentReleaseProfileFromJSON( +export function syncReconcileResponsePendingPreparedStackProfileConditionResourceFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseProfile, + SyncReconcileResponsePendingPreparedStackProfileConditionResource, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseProfile$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseProfile' from JSON`, + SyncReconcileResponsePendingPreparedStackProfileConditionResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackProfileConditionResource' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseProfileUnion$inboundSchema: - z.ZodType = z.union( - [ - z.lazy(() => SyncReconcileResponseCurrentReleaseProfile$inboundSchema), - z.string(), - ], - ); +export const SyncReconcileResponsePendingPreparedStackProfileResourceConditionUnion$inboundSchema: + z.ZodType< + SyncReconcileResponsePendingPreparedStackProfileResourceConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncReconcileResponsePendingPreparedStackProfileConditionResource$inboundSchema + ), + z.any(), + ]); -export function syncReconcileResponseCurrentReleaseProfileUnionFromJSON( +export function syncReconcileResponsePendingPreparedStackProfileResourceConditionUnionFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseProfileUnion, + SyncReconcileResponsePendingPreparedStackProfileResourceConditionUnion, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseProfileUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileUnion' from JSON`, + SyncReconcileResponsePendingPreparedStackProfileResourceConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackProfileResourceConditionUnion' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleasePermissions$inboundSchema: - z.ZodType = z.object( - { - management: z.union([ - z.lazy(() => - SyncReconcileResponseCurrentReleaseManagement1$inboundSchema - ), +export const SyncReconcileResponsePendingPreparedStackProfileGcpResource$inboundSchema: + z.ZodType< + SyncReconcileResponsePendingPreparedStackProfileGcpResource, + unknown + > = z.object({ + condition: z.nullable( + z.union([ z.lazy(() => - SyncReconcileResponseCurrentReleaseManagement2$inboundSchema - ), - SyncReconcileResponseCurrentReleaseManagementEnum$inboundSchema, - ]).optional(), - profiles: z.record( - z.string(), - z.record( - z.string(), - z.array( - z.union([ - z.lazy(() => - SyncReconcileResponseCurrentReleaseProfile$inboundSchema - ), - z.string(), - ]), - ), + SyncReconcileResponsePendingPreparedStackProfileConditionResource$inboundSchema ), - ), - }, - ); + z.any(), + ]), + ).optional(), + scope: z.string(), + }); -export function syncReconcileResponseCurrentReleasePermissionsFromJSON( +export function syncReconcileResponsePendingPreparedStackProfileGcpResourceFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleasePermissions, + SyncReconcileResponsePendingPreparedStackProfileGcpResource, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleasePermissions$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleasePermissions' from JSON`, + SyncReconcileResponsePendingPreparedStackProfileGcpResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackProfileGcpResource' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseConfig$inboundSchema: z.ZodType< - SyncReconcileResponseCurrentReleaseConfig, - unknown -> = collectExtraKeys$( - z.object({ - id: z.string(), - type: z.string(), - }).catchall(z.any()), - "additionalProperties", - true, -); +export const SyncReconcileResponsePendingPreparedStackProfileConditionStack$inboundSchema: + z.ZodType< + SyncReconcileResponsePendingPreparedStackProfileConditionStack, + unknown + > = z.object({ + expression: z.string(), + title: z.string(), + }); -export function syncReconcileResponseCurrentReleaseConfigFromJSON( +export function syncReconcileResponsePendingPreparedStackProfileConditionStackFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseConfig, + SyncReconcileResponsePendingPreparedStackProfileConditionStack, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseConfig$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseConfig' from JSON`, + SyncReconcileResponsePendingPreparedStackProfileConditionStack$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackProfileConditionStack' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseDependency$inboundSchema: - z.ZodType = z.object({ - id: z.string(), - type: z.string(), - }); +export const SyncReconcileResponsePendingPreparedStackProfileStackConditionUnion$inboundSchema: + z.ZodType< + SyncReconcileResponsePendingPreparedStackProfileStackConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncReconcileResponsePendingPreparedStackProfileConditionStack$inboundSchema + ), + z.any(), + ]); -export function syncReconcileResponseCurrentReleaseDependencyFromJSON( +export function syncReconcileResponsePendingPreparedStackProfileStackConditionUnionFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseDependency, + SyncReconcileResponsePendingPreparedStackProfileStackConditionUnion, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseDependency$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseDependency' from JSON`, + SyncReconcileResponsePendingPreparedStackProfileStackConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackProfileStackConditionUnion' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseLifecycle$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponseCurrentReleaseLifecycle, - ); - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseResources$inboundSchema: - z.ZodType = z.object({ - config: z.lazy(() => - SyncReconcileResponseCurrentReleaseConfig$inboundSchema - ), - dependencies: z.array( - z.lazy(() => SyncReconcileResponseCurrentReleaseDependency$inboundSchema), - ), - lifecycle: SyncReconcileResponseCurrentReleaseLifecycle$inboundSchema, - remoteAccess: z.boolean().optional(), - }); +export const SyncReconcileResponsePendingPreparedStackProfileGcpStack$inboundSchema: + z.ZodType = + z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncReconcileResponsePendingPreparedStackProfileConditionStack$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); -export function syncReconcileResponseCurrentReleaseResourcesFromJSON( +export function syncReconcileResponsePendingPreparedStackProfileGcpStackFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseResources, + SyncReconcileResponsePendingPreparedStackProfileGcpStack, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseResources$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseResources' from JSON`, + SyncReconcileResponsePendingPreparedStackProfileGcpStack$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackProfileGcpStack' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseSupportedPlatform$inboundSchema: - z.ZodEnum = z - .enum(SyncReconcileResponseCurrentReleaseSupportedPlatform); - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseStack$inboundSchema: z.ZodType< - SyncReconcileResponseCurrentReleaseStack, - unknown -> = z.object({ - id: z.string(), - inputs: z.array( - z.lazy(() => SyncReconcileResponseCurrentReleaseInput$inboundSchema), - ).optional(), - permissions: z.lazy(() => - SyncReconcileResponseCurrentReleasePermissions$inboundSchema - ).optional(), - resources: z.record( - z.string(), - z.lazy(() => SyncReconcileResponseCurrentReleaseResources$inboundSchema), - ), - supportedPlatforms: z.nullable( - z.array(SyncReconcileResponseCurrentReleaseSupportedPlatform$inboundSchema), - ).optional(), -}); +export const SyncReconcileResponsePendingPreparedStackProfileGcpBinding$inboundSchema: + z.ZodType< + SyncReconcileResponsePendingPreparedStackProfileGcpBinding, + unknown + > = z.object({ + resource: z.lazy(() => + SyncReconcileResponsePendingPreparedStackProfileGcpResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileResponsePendingPreparedStackProfileGcpStack$inboundSchema + ).optional(), + }); -export function syncReconcileResponseCurrentReleaseStackFromJSON( +export function syncReconcileResponsePendingPreparedStackProfileGcpBindingFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseStack, + SyncReconcileResponsePendingPreparedStackProfileGcpBinding, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseStack' from JSON`, + SyncReconcileResponsePendingPreparedStackProfileGcpBinding$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackProfileGcpBinding' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentRelease$inboundSchema: z.ZodType< - SyncReconcileResponseCurrentRelease, - unknown -> = z.object({ - description: z.nullable(z.string()).optional(), - releaseId: z.nullable(z.string()).optional(), - stack: z.lazy(() => SyncReconcileResponseCurrentReleaseStack$inboundSchema), - version: z.nullable(z.string()).optional(), -}); +export const SyncReconcileResponsePendingPreparedStackProfileGcpGrant$inboundSchema: + z.ZodType = + z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); -export function syncReconcileResponseCurrentReleaseFromJSON( +export function syncReconcileResponsePendingPreparedStackProfileGcpGrantFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncReconcileResponsePendingPreparedStackProfileGcpGrant, + SDKValidationError +> { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentRelease$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseCurrentRelease' from JSON`, + SyncReconcileResponsePendingPreparedStackProfileGcpGrant$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackProfileGcpGrant' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentReleaseUnion$inboundSchema: z.ZodType< - SyncReconcileResponseCurrentReleaseUnion, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseCurrentRelease$inboundSchema), - z.any(), -]); +export const SyncReconcileResponsePendingPreparedStackProfileGcp$inboundSchema: + z.ZodType = z + .object({ + binding: z.lazy(() => + SyncReconcileResponsePendingPreparedStackProfileGcpBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileResponsePendingPreparedStackProfileGcpGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); -export function syncReconcileResponseCurrentReleaseUnionFromJSON( +export function syncReconcileResponsePendingPreparedStackProfileGcpFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseCurrentReleaseUnion, + SyncReconcileResponsePendingPreparedStackProfileGcp, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseCurrentReleaseUnion$inboundSchema.parse( + SyncReconcileResponsePendingPreparedStackProfileGcp$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseUnion' from JSON`, + `Failed to parse 'SyncReconcileResponsePendingPreparedStackProfileGcp' from JSON`, ); } /** @internal */ -export const SyncReconcileResponsePlatformTest$inboundSchema: z.ZodEnum< - typeof SyncReconcileResponsePlatformTest -> = z.enum(SyncReconcileResponsePlatformTest); +export const SyncReconcileResponsePendingPreparedStackProfilePlatforms$inboundSchema: + z.ZodType< + SyncReconcileResponsePendingPreparedStackProfilePlatforms, + unknown + > = z.object({ + aws: z.nullable( + z.array(z.lazy(() => + SyncReconcileResponsePendingPreparedStackProfileAw$inboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + SyncReconcileResponsePendingPreparedStackProfileAzure$inboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + SyncReconcileResponsePendingPreparedStackProfileGcp$inboundSchema + )), + ).optional(), + }); + +export function syncReconcileResponsePendingPreparedStackProfilePlatformsFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePendingPreparedStackProfilePlatforms, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePendingPreparedStackProfilePlatforms$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackProfilePlatforms' from JSON`, + ); +} /** @internal */ -export const SyncReconcileResponseEnvironmentInfoTest$inboundSchema: z.ZodType< - SyncReconcileResponseEnvironmentInfoTest, - unknown -> = z.object({ - testId: z.string(), - platform: SyncReconcileResponsePlatformTest$inboundSchema, -}); +export const SyncReconcileResponsePendingPreparedStackProfile$inboundSchema: + z.ZodType = z + .object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncReconcileResponsePendingPreparedStackProfilePlatforms$inboundSchema + ), + }); -export function syncReconcileResponseEnvironmentInfoTestFromJSON( +export function syncReconcileResponsePendingPreparedStackProfileFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseEnvironmentInfoTest, + SyncReconcileResponsePendingPreparedStackProfile, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseEnvironmentInfoTest$inboundSchema.parse( + SyncReconcileResponsePendingPreparedStackProfile$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'SyncReconcileResponseEnvironmentInfoTest' from JSON`, + `Failed to parse 'SyncReconcileResponsePendingPreparedStackProfile' from JSON`, ); } /** @internal */ -export const SyncReconcileResponsePlatformLocal$inboundSchema: z.ZodEnum< - typeof SyncReconcileResponsePlatformLocal -> = z.enum(SyncReconcileResponsePlatformLocal); - -/** @internal */ -export const SyncReconcileResponseEnvironmentInfoLocal$inboundSchema: z.ZodType< - SyncReconcileResponseEnvironmentInfoLocal, - unknown -> = z.object({ - arch: z.string(), - hostname: z.string(), - os: z.string(), - platform: SyncReconcileResponsePlatformLocal$inboundSchema, -}); +export const SyncReconcileResponsePendingPreparedStackProfileUnion$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => + SyncReconcileResponsePendingPreparedStackProfile$inboundSchema + ), + z.string(), + ]); -export function syncReconcileResponseEnvironmentInfoLocalFromJSON( +export function syncReconcileResponsePendingPreparedStackProfileUnionFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseEnvironmentInfoLocal, + SyncReconcileResponsePendingPreparedStackProfileUnion, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseEnvironmentInfoLocal$inboundSchema.parse( + SyncReconcileResponsePendingPreparedStackProfileUnion$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'SyncReconcileResponseEnvironmentInfoLocal' from JSON`, + `Failed to parse 'SyncReconcileResponsePendingPreparedStackProfileUnion' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentPlatformAzure$inboundSchema: z.ZodEnum< - typeof SyncReconcileResponseCurrentPlatformAzure -> = z.enum(SyncReconcileResponseCurrentPlatformAzure); - -/** @internal */ -export const SyncReconcileResponseEnvironmentInfoAzure$inboundSchema: z.ZodType< - SyncReconcileResponseEnvironmentInfoAzure, - unknown -> = z.object({ - location: z.string(), - subscriptionId: z.string(), - tenantId: z.string(), - platform: SyncReconcileResponseCurrentPlatformAzure$inboundSchema, -}); +export const SyncReconcileResponsePendingPreparedStackPermissions$inboundSchema: + z.ZodType = z + .object({ + management: z.union([ + z.lazy(() => + SyncReconcileResponsePendingPreparedStackManagement1$inboundSchema + ), + z.lazy(() => + SyncReconcileResponsePendingPreparedStackManagement2$inboundSchema + ), + SyncReconcileResponsePendingPreparedStackManagementEnum$inboundSchema, + ]).optional(), + profiles: z.record( + z.string(), + z.record( + z.string(), + z.array( + z.union([ + z.lazy(() => + SyncReconcileResponsePendingPreparedStackProfile$inboundSchema + ), + z.string(), + ]), + ), + ), + ), + }); -export function syncReconcileResponseEnvironmentInfoAzureFromJSON( +export function syncReconcileResponsePendingPreparedStackPermissionsFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseEnvironmentInfoAzure, + SyncReconcileResponsePendingPreparedStackPermissions, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseEnvironmentInfoAzure$inboundSchema.parse( + SyncReconcileResponsePendingPreparedStackPermissions$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'SyncReconcileResponseEnvironmentInfoAzure' from JSON`, + `Failed to parse 'SyncReconcileResponsePendingPreparedStackPermissions' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentPlatformGcp$inboundSchema: z.ZodEnum< - typeof SyncReconcileResponseCurrentPlatformGcp -> = z.enum(SyncReconcileResponseCurrentPlatformGcp); - -/** @internal */ -export const SyncReconcileResponseEnvironmentInfoGcp$inboundSchema: z.ZodType< - SyncReconcileResponseEnvironmentInfoGcp, - unknown -> = z.object({ - projectId: z.string(), - projectNumber: z.string(), - region: z.string(), - platform: SyncReconcileResponseCurrentPlatformGcp$inboundSchema, -}); +export const SyncReconcileResponsePendingPreparedStackConfig$inboundSchema: + z.ZodType = + collectExtraKeys$( + z.object({ + id: z.string(), + type: z.string(), + }).catchall(z.any()), + "additionalProperties", + true, + ); -export function syncReconcileResponseEnvironmentInfoGcpFromJSON( +export function syncReconcileResponsePendingPreparedStackConfigFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseEnvironmentInfoGcp, + SyncReconcileResponsePendingPreparedStackConfig, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseEnvironmentInfoGcp$inboundSchema.parse( + SyncReconcileResponsePendingPreparedStackConfig$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'SyncReconcileResponseEnvironmentInfoGcp' from JSON`, + `Failed to parse 'SyncReconcileResponsePendingPreparedStackConfig' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseCurrentPlatformAws$inboundSchema: z.ZodEnum< - typeof SyncReconcileResponseCurrentPlatformAws -> = z.enum(SyncReconcileResponseCurrentPlatformAws); - -/** @internal */ -export const SyncReconcileResponseEnvironmentInfoAws$inboundSchema: z.ZodType< - SyncReconcileResponseEnvironmentInfoAws, - unknown -> = z.object({ - accountId: z.string(), - region: z.string(), - platform: SyncReconcileResponseCurrentPlatformAws$inboundSchema, -}); +export const SyncReconcileResponsePendingPreparedStackDependency$inboundSchema: + z.ZodType = z + .object({ + id: z.string(), + type: z.string(), + }); -export function syncReconcileResponseEnvironmentInfoAwsFromJSON( +export function syncReconcileResponsePendingPreparedStackDependencyFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseEnvironmentInfoAws, + SyncReconcileResponsePendingPreparedStackDependency, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseEnvironmentInfoAws$inboundSchema.parse( + SyncReconcileResponsePendingPreparedStackDependency$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'SyncReconcileResponseEnvironmentInfoAws' from JSON`, + `Failed to parse 'SyncReconcileResponsePendingPreparedStackDependency' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseEnvironmentInfoUnion$inboundSchema: z.ZodType< - SyncReconcileResponseEnvironmentInfoUnion, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseEnvironmentInfoGcp$inboundSchema), - z.lazy(() => SyncReconcileResponseEnvironmentInfoAzure$inboundSchema), - z.lazy(() => SyncReconcileResponseEnvironmentInfoLocal$inboundSchema), - z.lazy(() => SyncReconcileResponseEnvironmentInfoAws$inboundSchema), - z.lazy(() => SyncReconcileResponseEnvironmentInfoTest$inboundSchema), - z.any(), -]); +export const SyncReconcileResponsePendingPreparedStackLifecycle$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponsePendingPreparedStackLifecycle, + ); -export function syncReconcileResponseEnvironmentInfoUnionFromJSON( +/** @internal */ +export const SyncReconcileResponsePendingPreparedStackResources$inboundSchema: + z.ZodType = z + .object({ + config: z.lazy(() => + SyncReconcileResponsePendingPreparedStackConfig$inboundSchema + ), + dependencies: z.array( + z.lazy(() => + SyncReconcileResponsePendingPreparedStackDependency$inboundSchema + ), + ), + enabledWhen: z.nullable(z.string()).optional(), + lifecycle: + SyncReconcileResponsePendingPreparedStackLifecycle$inboundSchema, + remoteAccess: z.boolean().optional(), + }); + +export function syncReconcileResponsePendingPreparedStackResourcesFromJSON( jsonString: string, ): SafeParseResult< - SyncReconcileResponseEnvironmentInfoUnion, + SyncReconcileResponsePendingPreparedStackResources, SDKValidationError > { return safeParse( jsonString, (x) => - SyncReconcileResponseEnvironmentInfoUnion$inboundSchema.parse( + SyncReconcileResponsePendingPreparedStackResources$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'SyncReconcileResponseEnvironmentInfoUnion' from JSON`, + `Failed to parse 'SyncReconcileResponsePendingPreparedStackResources' from JSON`, ); } /** @internal */ -export const SyncReconcileResponseError$inboundSchema: z.ZodType< - SyncReconcileResponseError, +export const SyncReconcileResponsePendingPreparedStackSupportedPlatform$inboundSchema: + z.ZodEnum = + z.enum(SyncReconcileResponsePendingPreparedStackSupportedPlatform); + +/** @internal */ +export const SyncReconcileResponsePendingPreparedStack$inboundSchema: z.ZodType< + SyncReconcileResponsePendingPreparedStack, unknown > = z.object({ - code: z.string(), - context: z.nullable(z.any()).optional(), - hint: z.nullable(z.string()).optional(), - httpStatusCode: z.nullable(z.int()).optional(), - internal: z.boolean(), - message: z.string(), - retryable: z.boolean().default(false), - source: z.nullable(z.any()).optional(), + id: z.string(), + inputs: z.array( + z.lazy(() => SyncReconcileResponsePendingPreparedStackInput$inboundSchema), + ).optional(), + permissions: z.lazy(() => + SyncReconcileResponsePendingPreparedStackPermissions$inboundSchema + ).optional(), + resources: z.record( + z.string(), + z.lazy(() => + SyncReconcileResponsePendingPreparedStackResources$inboundSchema + ), + ), + supportedPlatforms: z.nullable( + z.array( + SyncReconcileResponsePendingPreparedStackSupportedPlatform$inboundSchema, + ), + ).optional(), }); -export function syncReconcileResponseErrorFromJSON( +export function syncReconcileResponsePendingPreparedStackFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncReconcileResponsePendingPreparedStack, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncReconcileResponseError$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseError' from JSON`, + (x) => + SyncReconcileResponsePendingPreparedStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePendingPreparedStack' from JSON`, ); } -/** @internal */ -export const SyncReconcileResponseErrorUnion$inboundSchema: z.ZodType< - SyncReconcileResponseErrorUnion, - unknown -> = z.union([z.lazy(() => SyncReconcileResponseError$inboundSchema), z.any()]); - -export function syncReconcileResponseErrorUnionFromJSON( +/** @internal */ +export const SyncReconcileResponsePendingPreparedStackUnion$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => SyncReconcileResponsePendingPreparedStack$inboundSchema), + z.any(), + ]); + +export function syncReconcileResponsePendingPreparedStackUnionFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult< + SyncReconcileResponsePendingPreparedStackUnion, + SDKValidationError +> { return safeParse( jsonString, - (x) => SyncReconcileResponseErrorUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseErrorUnion' from JSON`, + (x) => + SyncReconcileResponsePendingPreparedStackUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePendingPreparedStackUnion' from JSON`, ); } -/** @internal */ -export const SyncReconcileResponseCurrentPlatform$inboundSchema: z.ZodEnum< - typeof SyncReconcileResponseCurrentPlatform -> = z.enum(SyncReconcileResponseCurrentPlatform); - /** @internal */ export const SyncReconcileResponsePreparedStackTypeStringList$inboundSchema: z.ZodEnum = z.enum( @@ -16599,6 +20984,7 @@ export const SyncReconcileResponsePreparedStackResources$inboundSchema: dependencies: z.array( z.lazy(() => SyncReconcileResponsePreparedStackDependency$inboundSchema), ), + enabledWhen: z.nullable(z.string()).optional(), lifecycle: SyncReconcileResponsePreparedStackLifecycle$inboundSchema, remoteAccess: z.boolean().optional(), }); @@ -16681,13 +21067,74 @@ export function syncReconcileResponsePreparedStackUnionFromJSON( ); } +/** @internal */ +export const SyncReconcileResponseSetupUpdateAuthorization$inboundSchema: + z.ZodType = z.object({ + baselineFrozenDigest: z.string(), + nonce: z.string(), + releaseId: z.string(), + setupFingerprint: z.string(), + setupFingerprintVersion: z.int(), + setupTarget: z.string(), + targetFrozenDigest: z.string(), + }); + +export function syncReconcileResponseSetupUpdateAuthorizationFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseSetupUpdateAuthorization, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseSetupUpdateAuthorization$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseSetupUpdateAuthorization' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseSetupUpdateAuthorizationUnion$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => SyncReconcileResponseSetupUpdateAuthorization$inboundSchema), + z.any(), + ]); + +export function syncReconcileResponseSetupUpdateAuthorizationUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseSetupUpdateAuthorizationUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseSetupUpdateAuthorizationUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseSetupUpdateAuthorizationUnion' from JSON`, + ); +} + /** @internal */ export const SyncReconcileResponseRuntimeMetadata$inboundSchema: z.ZodType< SyncReconcileResponseRuntimeMetadata, unknown > = z.object({ + initialSetupAuthority: + SyncReconcileResponseInitialSetupAuthority$inboundSchema.optional(), lastSyncedEnvVarsHash: z.nullable(z.string()).optional(), lastSyncedSecretNames: z.array(z.string()).optional(), + pendingPreparedStack: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponsePendingPreparedStack$inboundSchema), + z.any(), + ]), + ).optional(), + persistedGateAnswers: z.record(z.string(), z.boolean()).optional(), preparedStack: z.nullable( z.union([ z.lazy(() => SyncReconcileResponsePreparedStack$inboundSchema), @@ -16695,6 +21142,12 @@ export const SyncReconcileResponseRuntimeMetadata$inboundSchema: z.ZodType< ]), ).optional(), registryAccessGranted: z.boolean().optional(), + setupUpdateAuthorization: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseSetupUpdateAuthorization$inboundSchema), + z.any(), + ]), + ).optional(), }); export function syncReconcileResponseRuntimeMetadataFromJSON( @@ -19461,6 +23914,7 @@ export const SyncReconcileResponseTargetReleaseResources$inboundSchema: dependencies: z.array( z.lazy(() => SyncReconcileResponseTargetReleaseDependency$inboundSchema), ), + enabledWhen: z.nullable(z.string()).optional(), lifecycle: SyncReconcileResponseTargetReleaseLifecycle$inboundSchema, remoteAccess: z.boolean().optional(), }); @@ -20224,6 +24678,100 @@ export function syncReconcileResponseEnvironmentVariablesFromJSON( ); } +/** @internal */ +export const SyncReconcileResponseApiKeySecretRef$inboundSchema: z.ZodType< + SyncReconcileResponseApiKeySecretRef, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncReconcileResponseApiKeySecretRefFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseApiKeySecretRef$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseApiKeySecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseApiKey$inboundSchema: z.ZodType< + SyncReconcileResponseApiKey, + unknown +> = z.object({ + secretRef: z.lazy(() => SyncReconcileResponseApiKeySecretRef$inboundSchema), +}); + +export function syncReconcileResponseApiKeyFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseApiKey$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseApiKey' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseApiKeyUnion$inboundSchema: z.ZodType< + SyncReconcileResponseApiKeyUnion, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseApiKey$inboundSchema), + z.any(), + z.string(), +]); + +export function syncReconcileResponseApiKeyUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseApiKeyUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseApiKeyUnion' from JSON`, + ); +} + +/** @internal */ +export const TargetTypeAi$inboundSchema: z.ZodEnum = z + .enum(TargetTypeAi); + +/** @internal */ +export const SyncReconcileResponseExternalBindingsAi$inboundSchema: z.ZodType< + SyncReconcileResponseExternalBindingsAi, + unknown +> = z.object({ + apiKey: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseApiKey$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + provider: z.string(), + type: TargetTypeAi$inboundSchema, +}); + +export function syncReconcileResponseExternalBindingsAiFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseExternalBindingsAi, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseExternalBindingsAi$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseExternalBindingsAi' from JSON`, + ); +} + /** @internal */ export const SyncReconcileResponseDatabaseSecretRef6$inboundSchema: z.ZodType< SyncReconcileResponseDatabaseSecretRef6, @@ -20712,6 +25260,11 @@ export function syncReconcileResponsePortUnion4FromJSON( ); } +/** @internal */ +export const SyncReconcileResponseSslMode$inboundSchema: z.ZodEnum< + typeof SyncReconcileResponseSslMode +> = z.enum(SyncReconcileResponseSslMode); + /** @internal */ export const SyncReconcileResponseUsernameSecretRef4$inboundSchema: z.ZodType< SyncReconcileResponseUsernameSecretRef4, @@ -20808,6 +25361,7 @@ export const SyncReconcileResponseExternalBindingsExternal$inboundSchema: z.any(), ]), ).optional(), + sslMode: SyncReconcileResponseSslMode$inboundSchema.optional(), username: z.nullable( z.union([ z.lazy(() => SyncReconcileResponseUsername4$inboundSchema), @@ -21472,6 +26026,80 @@ export function syncReconcileResponsePortUnion2FromJSON( ); } +/** @internal */ +export const SyncReconcileResponseServerCaCertificatesSecretRef$inboundSchema: + z.ZodType = z + .object({ + key: z.string(), + name: z.string(), + }); + +export function syncReconcileResponseServerCaCertificatesSecretRefFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseServerCaCertificatesSecretRef, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseServerCaCertificatesSecretRef$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseServerCaCertificatesSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseServerCaCertificates$inboundSchema: z.ZodType< + SyncReconcileResponseServerCaCertificates, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncReconcileResponseServerCaCertificatesSecretRef$inboundSchema + ), +}); + +export function syncReconcileResponseServerCaCertificatesFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseServerCaCertificates, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseServerCaCertificates$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseServerCaCertificates' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseServerCaCertificatesUnion$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => SyncReconcileResponseServerCaCertificates$inboundSchema), + z.array(z.string()), + z.any(), + ]); + +export function syncReconcileResponseServerCaCertificatesUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseServerCaCertificatesUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseServerCaCertificatesUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseServerCaCertificatesUnion' from JSON`, + ); +} + /** @internal */ export const SyncReconcileResponseUsernameSecretRef2$inboundSchema: z.ZodType< SyncReconcileResponseUsernameSecretRef2, @@ -21574,6 +26202,13 @@ export const SyncReconcileResponseExternalBindingsCloudSQL$inboundSchema: z.any(), ]), ).optional(), + serverCaCertificates: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseServerCaCertificates$inboundSchema), + z.array(z.string()), + z.any(), + ]), + ).optional(), username: z.nullable( z.union([ z.lazy(() => SyncReconcileResponseUsername2$inboundSchema), @@ -25948,6 +30583,7 @@ export function syncReconcileResponseExternalBindingsUnion1FromJSON( /** @internal */ export const SyncReconcileResponseExternalBindingsUnion7$inboundSchema: z.ZodType = z.union([ + z.lazy(() => SyncReconcileResponseExternalBindingsAi$inboundSchema), z.lazy(() => SyncReconcileResponseExternalBindingsContainerAppsEnvironment$inboundSchema ), @@ -26216,15 +30852,70 @@ export function syncReconcileResponseMonitoringUnionFromJSON( ); } +/** @internal */ +export const SyncReconcileResponseFailureDomains2$inboundSchema: z.ZodType< + SyncReconcileResponseFailureDomains2, + unknown +> = z.object({ + selectedFailureDomains: z.array(z.string()).optional(), + spread: z.int(), +}); + +export function syncReconcileResponseFailureDomains2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseFailureDomains2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseFailureDomains2' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseFailureDomainsUnion2$inboundSchema: z.ZodType< + SyncReconcileResponseFailureDomainsUnion2, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseFailureDomains2$inboundSchema), + z.any(), +]); + +export function syncReconcileResponseFailureDomainsUnion2FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseFailureDomainsUnion2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseFailureDomainsUnion2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseFailureDomainsUnion2' from JSON`, + ); +} + /** @internal */ export const SyncReconcileResponsePoolsAutoscale$inboundSchema: z.ZodType< SyncReconcileResponsePoolsAutoscale, unknown > = z.object({ + failure_domains: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseFailureDomains2$inboundSchema), + z.any(), + ]), + ).optional(), machine: z.nullable(z.string()).optional(), max: z.int(), min: z.int(), mode: z.literal("autoscale"), +}).transform((v) => { + return remap$(v, { + "failure_domains": "failureDomains", + }); }); export function syncReconcileResponsePoolsAutoscaleFromJSON( @@ -26238,14 +30929,69 @@ export function syncReconcileResponsePoolsAutoscaleFromJSON( ); } +/** @internal */ +export const SyncReconcileResponseFailureDomains1$inboundSchema: z.ZodType< + SyncReconcileResponseFailureDomains1, + unknown +> = z.object({ + selectedFailureDomains: z.array(z.string()).optional(), + spread: z.int(), +}); + +export function syncReconcileResponseFailureDomains1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseFailureDomains1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseFailureDomains1' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseFailureDomainsUnion1$inboundSchema: z.ZodType< + SyncReconcileResponseFailureDomainsUnion1, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseFailureDomains1$inboundSchema), + z.any(), +]); + +export function syncReconcileResponseFailureDomainsUnion1FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseFailureDomainsUnion1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseFailureDomainsUnion1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseFailureDomainsUnion1' from JSON`, + ); +} + /** @internal */ export const SyncReconcileResponsePoolsFixed$inboundSchema: z.ZodType< SyncReconcileResponsePoolsFixed, unknown > = z.object({ + failure_domains: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseFailureDomains1$inboundSchema), + z.any(), + ]), + ).optional(), machine: z.nullable(z.string()).optional(), machines: z.int(), mode: z.literal("fixed"), +}).transform((v) => { + return remap$(v, { + "failure_domains": "failureDomains", + }); }); export function syncReconcileResponsePoolsFixedFromJSON( @@ -28190,13 +32936,16 @@ export const TargetConfig$inboundSchema: z.ZodType = z externalBindings: z.record( z.string(), z.union([ + z.lazy(() => SyncReconcileResponseExternalBindingsAi$inboundSchema), z.lazy(() => SyncReconcileResponseExternalBindingsContainerAppsEnvironment$inboundSchema ), z.union([ z.lazy(() => SyncReconcileResponseExternalBindingsS3$inboundSchema), z.lazy(() => SyncReconcileResponseExternalBindingsBlob$inboundSchema), - z.lazy(() => SyncReconcileResponseExternalBindingsGcs$inboundSchema), + z.lazy(() => + SyncReconcileResponseExternalBindingsGcs$inboundSchema + ), z.lazy(() => SyncReconcileResponseExternalBindingsLocalStorage$inboundSchema ), @@ -28274,6 +33023,7 @@ export const TargetConfig$inboundSchema: z.ZodType = z ]), ]), ).optional(), + inputValues: z.record(z.string(), z.nullable(z.any())).optional(), labelDomain: z.nullable(z.string()).optional(), managementConfig: z.nullable( z.union([ @@ -30092,6 +34842,7 @@ export const ReleaseInfoResources$inboundSchema: z.ZodType< > = z.object({ config: z.lazy(() => ReleaseInfoConfig$inboundSchema), dependencies: z.array(z.lazy(() => ReleaseInfoDependency$inboundSchema)), + enabledWhen: z.nullable(z.string()).optional(), lifecycle: ReleaseInfoLifecycle$inboundSchema, remoteAccess: z.boolean().optional(), }); diff --git a/client-sdks/platform/typescript/src/models/syncrenewrequest.ts b/client-sdks/platform/typescript/src/models/syncrenewrequest.ts new file mode 100644 index 000000000..6efa6109d --- /dev/null +++ b/client-sdks/platform/typescript/src/models/syncrenewrequest.ts @@ -0,0 +1,42 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; + +export type SyncRenewRequest = { + /** + * Single deployment to renew. Deprecated: use deploymentIds. Retained so a manager built against the previous API keeps renewing during rollout. + */ + deploymentId?: string | undefined; + /** + * Deployments to renew or confirm. Renewal is per deployment: the response reports each one independently. + */ + deploymentIds?: Array | undefined; + session: string; +}; + +/** @internal */ +export type SyncRenewRequest$Outbound = { + deploymentId?: string | undefined; + deploymentIds?: Array | undefined; + session: string; +}; + +/** @internal */ +export const SyncRenewRequest$outboundSchema: z.ZodType< + SyncRenewRequest$Outbound, + SyncRenewRequest +> = z.object({ + deploymentId: z.string().optional(), + deploymentIds: z.array(z.string()).optional(), + session: z.string(), +}); + +export function syncRenewRequestToJSON( + syncRenewRequest: SyncRenewRequest, +): string { + return JSON.stringify( + SyncRenewRequest$outboundSchema.parse(syncRenewRequest), + ); +} diff --git a/client-sdks/platform/typescript/src/models/updatedeploymentinputsresponse.ts b/client-sdks/platform/typescript/src/models/updatedeploymentinputsresponse.ts index 49093f2ef..dec86a04d 100644 --- a/client-sdks/platform/typescript/src/models/updatedeploymentinputsresponse.ts +++ b/client-sdks/platform/typescript/src/models/updatedeploymentinputsresponse.ts @@ -6,6 +6,10 @@ import * as z from "zod/v4"; import { safeParse } from "../lib/schemas.js"; import { ClosedEnum } from "../types/enums.js"; import { Result as SafeParseResult } from "../types/fp.js"; +import { + DeploymentUpdateOperationSummary, + DeploymentUpdateOperationSummary$inboundSchema, +} from "./deploymentupdateoperationsummary.js"; import { SDKValidationError } from "./errors/sdkvalidationerror.js"; import { StackInputValueRequest, @@ -265,6 +269,14 @@ export type UpdateDeploymentInputsResponseInput = { | undefined; }; +export const UpdateDeploymentInputsResponseOutcome = { + Accepted: "accepted", + Unchanged: "unchanged", +} as const; +export type UpdateDeploymentInputsResponseOutcome = ClosedEnum< + typeof UpdateDeploymentInputsResponseOutcome +>; + export type UpdateDeploymentInputsResponse = { inputs: Array; /** @@ -276,6 +288,8 @@ export type UpdateDeploymentInputsResponse = { */ providedInputIds: Array; runtimeUpdateRequested: boolean; + outcome: UpdateDeploymentInputsResponseOutcome; + operation: DeploymentUpdateOperationSummary | null; }; /** @internal */ @@ -584,6 +598,11 @@ export function updateDeploymentInputsResponseInputFromJSON( ); } +/** @internal */ +export const UpdateDeploymentInputsResponseOutcome$inboundSchema: z.ZodEnum< + typeof UpdateDeploymentInputsResponseOutcome +> = z.enum(UpdateDeploymentInputsResponseOutcome); + /** @internal */ export const UpdateDeploymentInputsResponse$inboundSchema: z.ZodType< UpdateDeploymentInputsResponse, @@ -595,6 +614,8 @@ export const UpdateDeploymentInputsResponse$inboundSchema: z.ZodType< values: z.record(z.string(), StackInputValueRequest$inboundSchema), providedInputIds: z.array(z.string()), runtimeUpdateRequested: z.boolean(), + outcome: UpdateDeploymentInputsResponseOutcome$inboundSchema, + operation: z.nullable(DeploymentUpdateOperationSummary$inboundSchema), }); export function updateDeploymentInputsResponseFromJSON( diff --git a/client-sdks/platform/typescript/src/models/updateoperationspolicyrequest.ts b/client-sdks/platform/typescript/src/models/updateoperationspolicyrequest.ts new file mode 100644 index 000000000..7f5e9efc8 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/updateoperationspolicyrequest.ts @@ -0,0 +1,40 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { + OperationsPolicyRule, + OperationsPolicyRule$Outbound, + OperationsPolicyRule$outboundSchema, +} from "./operationspolicyrule.js"; + +export type UpdateOperationsPolicyRequest = { + /** + * The full rule set (replaces the previous one). + */ + rules: Array; +}; + +/** @internal */ +export type UpdateOperationsPolicyRequest$Outbound = { + rules: Array; +}; + +/** @internal */ +export const UpdateOperationsPolicyRequest$outboundSchema: z.ZodType< + UpdateOperationsPolicyRequest$Outbound, + UpdateOperationsPolicyRequest +> = z.object({ + rules: z.array(OperationsPolicyRule$outboundSchema), +}); + +export function updateOperationsPolicyRequestToJSON( + updateOperationsPolicyRequest: UpdateOperationsPolicyRequest, +): string { + return JSON.stringify( + UpdateOperationsPolicyRequest$outboundSchema.parse( + updateOperationsPolicyRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/updateworkspacesettingsrequest.ts b/client-sdks/platform/typescript/src/models/updateworkspacesettingsrequest.ts new file mode 100644 index 000000000..5aba546c0 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/updateworkspacesettingsrequest.ts @@ -0,0 +1,65 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { ClosedEnum } from "../types/enums.js"; + +/** + * 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. + */ +export const UpdateWorkspaceSettingsRequestDebugPermissionMode = { + Auto: "auto", + Ask: "ask", +} as const; +/** + * 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. + */ +export type UpdateWorkspaceSettingsRequestDebugPermissionMode = ClosedEnum< + typeof UpdateWorkspaceSettingsRequestDebugPermissionMode +>; + +export type UpdateWorkspaceSettingsRequest = { + /** + * 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. + */ + debugPermissionMode?: + | UpdateWorkspaceSettingsRequestDebugPermissionMode + | undefined; + /** + * Turn the ai-agent on (`true`) or off (`false`) for this workspace. + */ + enabled?: boolean | undefined; +}; + +/** @internal */ +export const UpdateWorkspaceSettingsRequestDebugPermissionMode$outboundSchema: + z.ZodEnum = z.enum( + UpdateWorkspaceSettingsRequestDebugPermissionMode, + ); + +/** @internal */ +export type UpdateWorkspaceSettingsRequest$Outbound = { + debugPermissionMode?: string | undefined; + enabled?: boolean | undefined; +}; + +/** @internal */ +export const UpdateWorkspaceSettingsRequest$outboundSchema: z.ZodType< + UpdateWorkspaceSettingsRequest$Outbound, + UpdateWorkspaceSettingsRequest +> = z.object({ + debugPermissionMode: + UpdateWorkspaceSettingsRequestDebugPermissionMode$outboundSchema.optional(), + enabled: z.boolean().optional(), +}); + +export function updateWorkspaceSettingsRequestToJSON( + updateWorkspaceSettingsRequest: UpdateWorkspaceSettingsRequest, +): string { + return JSON.stringify( + UpdateWorkspaceSettingsRequest$outboundSchema.parse( + updateWorkspaceSettingsRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/workspaceinvitation.ts b/client-sdks/platform/typescript/src/models/workspaceinvitation.ts new file mode 100644 index 000000000..386b747ad --- /dev/null +++ b/client-sdks/platform/typescript/src/models/workspaceinvitation.ts @@ -0,0 +1,82 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { ClosedEnum } from "../types/enums.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; +import { WorkspaceRole, WorkspaceRole$inboundSchema } from "./workspacerole.js"; + +export const WorkspaceInvitationStatus = { + Pending: "pending", + Accepted: "accepted", + Revoked: "revoked", + Expired: "expired", +} as const; +export type WorkspaceInvitationStatus = ClosedEnum< + typeof WorkspaceInvitationStatus +>; + +export const DeliveryStatus = { + Pending: "pending", + Sent: "sent", + Failed: "failed", +} as const; +export type DeliveryStatus = ClosedEnum; + +export type WorkspaceInvitation = { + /** + * Unique identifier for the workspace invitation. + */ + id: string; + email: string; + /** + * Role for workspace-scoped service accounts + */ + role: WorkspaceRole; + status: WorkspaceInvitationStatus; + deliveryStatus: DeliveryStatus; + expiresAt: Date; + lastSentAt: Date | null; + createdAt: Date; + inviteUrl: string; +}; + +/** @internal */ +export const WorkspaceInvitationStatus$inboundSchema: z.ZodEnum< + typeof WorkspaceInvitationStatus +> = z.enum(WorkspaceInvitationStatus); + +/** @internal */ +export const DeliveryStatus$inboundSchema: z.ZodEnum = z + .enum(DeliveryStatus); + +/** @internal */ +export const WorkspaceInvitation$inboundSchema: z.ZodType< + WorkspaceInvitation, + unknown +> = z.object({ + id: z.string(), + email: z.string(), + role: WorkspaceRole$inboundSchema, + status: WorkspaceInvitationStatus$inboundSchema, + deliveryStatus: DeliveryStatus$inboundSchema, + expiresAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), + lastSentAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + createdAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), + inviteUrl: z.string(), +}); + +export function workspaceInvitationFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => WorkspaceInvitation$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'WorkspaceInvitation' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/workspaceinvitationpreview.ts b/client-sdks/platform/typescript/src/models/workspaceinvitationpreview.ts new file mode 100644 index 000000000..b4ee12f22 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/workspaceinvitationpreview.ts @@ -0,0 +1,126 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { ClosedEnum } from "../types/enums.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; +import { WorkspaceRole, WorkspaceRole$inboundSchema } from "./workspacerole.js"; + +export const WorkspaceInvitationPreviewKind = { + Email: "email", + Link: "link", +} as const; +export type WorkspaceInvitationPreviewKind = ClosedEnum< + typeof WorkspaceInvitationPreviewKind +>; + +export type WorkspaceInvitationPreviewWorkspace = { + /** + * Unique identifier for the workspace. + */ + id: string; + name: string; + logoUrl: string | null; +}; + +export type Inviter = { + name: string; + image: string | null; +}; + +export const WorkspaceInvitationPreviewState = { + Active: "active", + Accepted: "accepted", + Expired: "expired", + Revoked: "revoked", +} as const; +export type WorkspaceInvitationPreviewState = ClosedEnum< + typeof WorkspaceInvitationPreviewState +>; + +export type WorkspaceInvitationPreview = { + kind: WorkspaceInvitationPreviewKind; + workspace: WorkspaceInvitationPreviewWorkspace; + inviter: Inviter | null; + /** + * Role for workspace-scoped service accounts + */ + role: WorkspaceRole; + expiresAt: Date; + state: WorkspaceInvitationPreviewState; + emailHint: string | null; +}; + +/** @internal */ +export const WorkspaceInvitationPreviewKind$inboundSchema: z.ZodEnum< + typeof WorkspaceInvitationPreviewKind +> = z.enum(WorkspaceInvitationPreviewKind); + +/** @internal */ +export const WorkspaceInvitationPreviewWorkspace$inboundSchema: z.ZodType< + WorkspaceInvitationPreviewWorkspace, + unknown +> = z.object({ + id: z.string(), + name: z.string(), + logoUrl: z.nullable(z.string()), +}); + +export function workspaceInvitationPreviewWorkspaceFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + WorkspaceInvitationPreviewWorkspace$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'WorkspaceInvitationPreviewWorkspace' from JSON`, + ); +} + +/** @internal */ +export const Inviter$inboundSchema: z.ZodType = z.object({ + name: z.string(), + image: z.nullable(z.string()), +}); + +export function inviterFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Inviter$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Inviter' from JSON`, + ); +} + +/** @internal */ +export const WorkspaceInvitationPreviewState$inboundSchema: z.ZodEnum< + typeof WorkspaceInvitationPreviewState +> = z.enum(WorkspaceInvitationPreviewState); + +/** @internal */ +export const WorkspaceInvitationPreview$inboundSchema: z.ZodType< + WorkspaceInvitationPreview, + unknown +> = z.object({ + kind: WorkspaceInvitationPreviewKind$inboundSchema, + workspace: z.lazy(() => WorkspaceInvitationPreviewWorkspace$inboundSchema), + inviter: z.nullable(z.lazy(() => Inviter$inboundSchema)), + role: WorkspaceRole$inboundSchema, + expiresAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), + state: WorkspaceInvitationPreviewState$inboundSchema, + emailHint: z.nullable(z.string()), +}); + +export function workspaceInvitationPreviewFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => WorkspaceInvitationPreview$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'WorkspaceInvitationPreview' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/workspaceinvitelink.ts b/client-sdks/platform/typescript/src/models/workspaceinvitelink.ts new file mode 100644 index 000000000..57b23dfd8 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/workspaceinvitelink.ts @@ -0,0 +1,51 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; +import { WorkspaceRole, WorkspaceRole$inboundSchema } from "./workspacerole.js"; + +export type WorkspaceInviteLink = { + /** + * Unique identifier for the workspace invite link. + */ + id: string; + /** + * Role for workspace-scoped service accounts + */ + role: WorkspaceRole; + expiresAt: Date; + createdAt: Date; + useCount: number; + lastUsedAt: Date | null; + inviteUrl: string; +}; + +/** @internal */ +export const WorkspaceInviteLink$inboundSchema: z.ZodType< + WorkspaceInviteLink, + unknown +> = z.object({ + id: z.string(), + role: WorkspaceRole$inboundSchema, + expiresAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), + createdAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), + useCount: z.int(), + lastUsedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ), + inviteUrl: z.string(), +}); + +export function workspaceInviteLinkFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => WorkspaceInviteLink$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'WorkspaceInviteLink' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/sdk/agentsessions.ts b/client-sdks/platform/typescript/src/sdk/agentsessions.ts new file mode 100644 index 000000000..104158b92 --- /dev/null +++ b/client-sdks/platform/typescript/src/sdk/agentsessions.ts @@ -0,0 +1,85 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { agentSessionsApprove } from "../funcs/agentSessionsApprove.js"; +import { agentSessionsEvents } from "../funcs/agentSessionsEvents.js"; +import { agentSessionsGet } from "../funcs/agentSessionsGet.js"; +import { agentSessionsList } from "../funcs/agentSessionsList.js"; +import { agentSessionsStop } from "../funcs/agentSessionsStop.js"; +import { ClientSDK, RequestOptions } from "../lib/sdks.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { unwrapAsync } from "../types/fp.js"; + +export class AgentSessions extends ClientSDK { + /** + * List ai-agent monitor sessions for this workspace. Newest first, capped at 50. + */ + async list( + request?: operations.ListAgentSessionsRequest | undefined, + options?: RequestOptions, + ): Promise { + return unwrapAsync(agentSessionsList( + this, + request, + options, + )); + } + + /** + * Retrieve one ai-agent monitor session by id. + */ + async get( + request: operations.GetAgentSessionRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(agentSessionsGet( + this, + request, + options, + )); + } + + /** + * 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. + */ + async events( + request: operations.ListAgentSessionEventsRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(agentSessionsEvents( + this, + request, + options, + )); + } + + /** + * 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. + */ + async approve( + request: operations.ApproveAgentSessionRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(agentSessionsApprove( + this, + request, + options, + )); + } + + /** + * 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. + */ + async stop( + request: operations.StopAgentSessionRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(agentSessionsStop( + this, + request, + options, + )); + } +} diff --git a/client-sdks/platform/typescript/src/sdk/commands.ts b/client-sdks/platform/typescript/src/sdk/commands.ts index 900d5e87b..942a1411c 100644 --- a/client-sdks/platform/typescript/src/sdk/commands.ts +++ b/client-sdks/platform/typescript/src/sdk/commands.ts @@ -2,6 +2,7 @@ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. */ +import { commandsBootstrap } from "../funcs/commandsBootstrap.js"; import { commandsComplete } from "../funcs/commandsComplete.js"; import { commandsCreate } from "../funcs/commandsCreate.js"; import { commandsDispatch } from "../funcs/commandsDispatch.js"; @@ -18,6 +19,20 @@ import * as operations from "../models/operations/index.js"; import { unwrapAsync } from "../types/fp.js"; export class Commands extends ClientSDK { + /** + * Resolve a deployment's current manager and mint a five-minute command capability. Sender tokens can dispatch and observe commands only for this deployment. Receiver tokens can lease and complete commands only for the resolved Container or Daemon target. + */ + async bootstrap( + request: models.CommandBootstrapRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(commandsBootstrap( + this, + request, + options, + )); + } + /** * Retrieve commands. Use for dashboard analytics and command history. */ diff --git a/client-sdks/platform/typescript/src/sdk/containerregistry.ts b/client-sdks/platform/typescript/src/sdk/containerregistry.ts new file mode 100644 index 000000000..e049a5537 --- /dev/null +++ b/client-sdks/platform/typescript/src/sdk/containerregistry.ts @@ -0,0 +1,130 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { containerRegistryApplyContainerRegistryManagerSnapshot } from "../funcs/containerRegistryApplyContainerRegistryManagerSnapshot.js"; +import { containerRegistryCreateContainerRegistryCredential } from "../funcs/containerRegistryCreateContainerRegistryCredential.js"; +import { containerRegistryCreateContainerRegistryRepository } from "../funcs/containerRegistryCreateContainerRegistryRepository.js"; +import { containerRegistryDeleteContainerRegistryRepository } from "../funcs/containerRegistryDeleteContainerRegistryRepository.js"; +import { containerRegistryGetContainerRegistry } from "../funcs/containerRegistryGetContainerRegistry.js"; +import { containerRegistryGetContainerRegistryManagerSnapshot } from "../funcs/containerRegistryGetContainerRegistryManagerSnapshot.js"; +import { containerRegistryPutContainerRegistry } from "../funcs/containerRegistryPutContainerRegistry.js"; +import { containerRegistryRevokeContainerRegistry } from "../funcs/containerRegistryRevokeContainerRegistry.js"; +import { containerRegistryRevokeContainerRegistryCredential } from "../funcs/containerRegistryRevokeContainerRegistryCredential.js"; +import { containerRegistryVerifyContainerRegistry } from "../funcs/containerRegistryVerifyContainerRegistry.js"; +import { ClientSDK, RequestOptions } from "../lib/sdks.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { unwrapAsync } from "../types/fp.js"; + +export class ContainerRegistry extends ClientSDK { + async getContainerRegistry( + request: operations.GetContainerRegistryRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(containerRegistryGetContainerRegistry( + this, + request, + options, + )); + } + + async putContainerRegistry( + request: operations.PutContainerRegistryRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(containerRegistryPutContainerRegistry( + this, + request, + options, + )); + } + + async createContainerRegistryRepository( + request: operations.CreateContainerRegistryRepositoryRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(containerRegistryCreateContainerRegistryRepository( + this, + request, + options, + )); + } + + async createContainerRegistryCredential( + request: operations.CreateContainerRegistryCredentialRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(containerRegistryCreateContainerRegistryCredential( + this, + request, + options, + )); + } + + async revokeContainerRegistryCredential( + request: operations.RevokeContainerRegistryCredentialRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(containerRegistryRevokeContainerRegistryCredential( + this, + request, + options, + )); + } + + async deleteContainerRegistryRepository( + request: operations.DeleteContainerRegistryRepositoryRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(containerRegistryDeleteContainerRegistryRepository( + this, + request, + options, + )); + } + + async verifyContainerRegistry( + request: operations.VerifyContainerRegistryRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(containerRegistryVerifyContainerRegistry( + this, + request, + options, + )); + } + + async revokeContainerRegistry( + request: operations.RevokeContainerRegistryRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(containerRegistryRevokeContainerRegistry( + this, + request, + options, + )); + } + + async getContainerRegistryManagerSnapshot( + request: operations.GetContainerRegistryManagerSnapshotRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(containerRegistryGetContainerRegistryManagerSnapshot( + this, + request, + options, + )); + } + + async applyContainerRegistryManagerSnapshot( + request: operations.ApplyContainerRegistryManagerSnapshotRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(containerRegistryApplyContainerRegistryManagerSnapshot( + this, + request, + options, + )); + } +} diff --git a/client-sdks/platform/typescript/src/sdk/deploymentgroups.ts b/client-sdks/platform/typescript/src/sdk/deploymentgroups.ts index 99618c114..183555c79 100644 --- a/client-sdks/platform/typescript/src/sdk/deploymentgroups.ts +++ b/client-sdks/platform/typescript/src/sdk/deploymentgroups.ts @@ -6,14 +6,14 @@ import { deploymentGroupsCreateDeploymentGroup } from "../funcs/deploymentGroups import { deploymentGroupsCreateDeploymentGroupToken } from "../funcs/deploymentGroupsCreateDeploymentGroupToken.js"; import { deploymentGroupsCreateFirstPartyDeploymentSession } from "../funcs/deploymentGroupsCreateFirstPartyDeploymentSession.js"; import { deploymentGroupsDeleteDeploymentGroup } from "../funcs/deploymentGroupsDeleteDeploymentGroup.js"; -import { deploymentGroupsDeleteDirectAnthropicBinding } from "../funcs/deploymentGroupsDeleteDirectAnthropicBinding.js"; +import { deploymentGroupsDeleteExternalAIBinding } from "../funcs/deploymentGroupsDeleteExternalAIBinding.js"; import { deploymentGroupsEnsureDeploymentGroupByExternalId } from "../funcs/deploymentGroupsEnsureDeploymentGroupByExternalId.js"; import { deploymentGroupsEnsureDeploymentGroupByName } from "../funcs/deploymentGroupsEnsureDeploymentGroupByName.js"; import { deploymentGroupsGetDeploymentGroup } from "../funcs/deploymentGroupsGetDeploymentGroup.js"; import { deploymentGroupsGetDeploymentGroupByExternalId } from "../funcs/deploymentGroupsGetDeploymentGroupByExternalId.js"; -import { deploymentGroupsGetDirectAnthropicBinding } from "../funcs/deploymentGroupsGetDirectAnthropicBinding.js"; +import { deploymentGroupsGetExternalAIBinding } from "../funcs/deploymentGroupsGetExternalAIBinding.js"; import { deploymentGroupsListDeploymentGroups } from "../funcs/deploymentGroupsListDeploymentGroups.js"; -import { deploymentGroupsPutDirectAnthropicBinding } from "../funcs/deploymentGroupsPutDirectAnthropicBinding.js"; +import { deploymentGroupsPutExternalAIBinding } from "../funcs/deploymentGroupsPutExternalAIBinding.js"; import { deploymentGroupsSetDeploymentGroupExternalId } from "../funcs/deploymentGroupsSetDeploymentGroupExternalId.js"; import { deploymentGroupsUpdateDeploymentGroup } from "../funcs/deploymentGroupsUpdateDeploymentGroup.js"; import { ClientSDK, RequestOptions } from "../lib/sdks.js"; @@ -183,13 +183,13 @@ export class DeploymentGroups extends ClientSDK { } /** - * Get direct Anthropic connection state + * Get external AI connection state */ - async getDirectAnthropicBinding( - request: operations.GetDirectAnthropicBindingRequest, + async getExternalAIBinding( + request: operations.GetExternalAIBindingRequest, options?: RequestOptions, - ): Promise { - return unwrapAsync(deploymentGroupsGetDirectAnthropicBinding( + ): Promise { + return unwrapAsync(deploymentGroupsGetExternalAIBinding( this, request, options, @@ -197,13 +197,13 @@ export class DeploymentGroups extends ClientSDK { } /** - * Connect or rotate a direct Anthropic workspace key + * Connect or rotate an external AI provider key */ - async putDirectAnthropicBinding( - request: operations.PutDirectAnthropicBindingRequest, + async putExternalAIBinding( + request: operations.PutExternalAIBindingRequest, options?: RequestOptions, - ): Promise { - return unwrapAsync(deploymentGroupsPutDirectAnthropicBinding( + ): Promise { + return unwrapAsync(deploymentGroupsPutExternalAIBinding( this, request, options, @@ -211,13 +211,13 @@ export class DeploymentGroups extends ClientSDK { } /** - * Revoke the direct Anthropic connection + * Revoke the external AI connection */ - async deleteDirectAnthropicBinding( - request: operations.DeleteDirectAnthropicBindingRequest, + async deleteExternalAIBinding( + request: operations.DeleteExternalAIBindingRequest, options?: RequestOptions, ): Promise { - return unwrapAsync(deploymentGroupsDeleteDirectAnthropicBinding( + return unwrapAsync(deploymentGroupsDeleteExternalAIBinding( this, request, options, diff --git a/client-sdks/platform/typescript/src/sdk/deployments.ts b/client-sdks/platform/typescript/src/sdk/deployments.ts index 43f3c8098..87a1ec14b 100644 --- a/client-sdks/platform/typescript/src/sdk/deployments.ts +++ b/client-sdks/platform/typescript/src/sdk/deployments.ts @@ -19,6 +19,7 @@ import { deploymentsPinRelease } from "../funcs/deploymentsPinRelease.js"; import { deploymentsRedeploy } from "../funcs/deploymentsRedeploy.js"; import { deploymentsRetry } from "../funcs/deploymentsRetry.js"; import { deploymentsSetFirstPartyDeploymentInputs } from "../funcs/deploymentsSetFirstPartyDeploymentInputs.js"; +import { deploymentsSetReleaseChannel } from "../funcs/deploymentsSetReleaseChannel.js"; import { deploymentsUpdateEnvironmentVariables } from "../funcs/deploymentsUpdateEnvironmentVariables.js"; import { deploymentsUpdateInputs } from "../funcs/deploymentsUpdateInputs.js"; import { ClientSDK, RequestOptions } from "../lib/sdks.js"; @@ -225,6 +226,17 @@ export class Deployments extends ClientSDK { )); } + async setReleaseChannel( + request: operations.SetDeploymentReleaseChannelRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(deploymentsSetReleaseChannel( + this, + request, + options, + )); + } + /** * Retry a failed deployment operation. Uses alien-infra's retry mechanisms to resume from exact failure point. */ diff --git a/client-sdks/platform/typescript/src/sdk/managers.ts b/client-sdks/platform/typescript/src/sdk/managers.ts index e590e4d28..72918e81c 100644 --- a/client-sdks/platform/typescript/src/sdk/managers.ts +++ b/client-sdks/platform/typescript/src/sdk/managers.ts @@ -5,6 +5,7 @@ import { managersCancelSetup } from "../funcs/managersCancelSetup.js"; import { managersCreate } from "../funcs/managersCreate.js"; import { managersDelete } from "../funcs/managersDelete.js"; +import { managersGenerateManagerBindingToken } from "../funcs/managersGenerateManagerBindingToken.js"; import { managersGenerateManagerToken } from "../funcs/managersGenerateManagerToken.js"; import { managersGet } from "../funcs/managersGet.js"; import { managersGetDeployment } from "../funcs/managersGetDeployment.js"; @@ -221,6 +222,20 @@ export class Managers extends ClientSDK { )); } + /** + * Generate a short-lived deployment-scoped token for resolving opted-in remote bindings through the currently assigned manager. + */ + async generateManagerBindingToken( + request: operations.GenerateManagerBindingTokenRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(managersGenerateManagerBindingToken( + this, + request, + options, + )); + } + /** * Resolve decrypted project-level Google Cloud OAuth provider settings for a manager-side deployment bootstrap. */ diff --git a/client-sdks/platform/typescript/src/sdk/operations.ts b/client-sdks/platform/typescript/src/sdk/operations.ts new file mode 100644 index 000000000..99048fe62 --- /dev/null +++ b/client-sdks/platform/typescript/src/sdk/operations.ts @@ -0,0 +1,160 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { operationsCreateAccessRequest } from "../funcs/operationsCreateAccessRequest.js"; +import { operationsCreateBundleUploadUrl } from "../funcs/operationsCreateBundleUploadUrl.js"; +import { operationsGetAccessRequestCoordinates } from "../funcs/operationsGetAccessRequestCoordinates.js"; +import { operationsGetPolicy } from "../funcs/operationsGetPolicy.js"; +import { operationsInvoke } from "../funcs/operationsInvoke.js"; +import { operationsListPlugins } from "../funcs/operationsListPlugins.js"; +import { operationsPublishPlugin } from "../funcs/operationsPublishPlugin.js"; +import { operationsQueueAccessRequest } from "../funcs/operationsQueueAccessRequest.js"; +import { operationsSetPluginEnabled } from "../funcs/operationsSetPluginEnabled.js"; +import { operationsUpdatePolicy } from "../funcs/operationsUpdatePolicy.js"; +import { ClientSDK, RequestOptions } from "../lib/sdks.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { unwrapAsync } from "../types/fp.js"; + +export class Operations extends ClientSDK { + /** + * List available operations plugins (builtin + custom) for a project, with their operations and risk tiers. + */ + async listPlugins( + request: operations.ListOperationsPluginsRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(operationsListPlugins( + this, + request, + options, + )); + } + + /** + * Register a custom operations plugin whose bundle ZIP has already been uploaded to S3 (see POST /plugins/upload-url). Replaces any existing plugin of the same name in that project. New custom plugins are enabled by default. + */ + async publishPlugin( + request: operations.PublishOperationsPluginRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(operationsPublishPlugin( + this, + request, + options, + )); + } + + /** + * Get a presigned S3 URL to upload a custom operations plugin bundle ZIP. Upload the ZIP with a PUT to the returned url (sending the given Content-Type), then call POST /plugins to register it. + */ + async createBundleUploadUrl( + request: operations.CreateOperationsBundleUploadUrlRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(operationsCreateBundleUploadUrl( + this, + request, + options, + )); + } + + /** + * Enable or disable an operations plugin (builtin or custom) for a project. Only enabled plugins are baked into the operator image and can be invoked. + */ + async setPluginEnabled( + request: operations.SetOperationsPluginEnabledRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(operationsSetPluginEnabled( + this, + request, + options, + )); + } + + /** + * Get a project's per-command approval policy. Mirrors what the operator enforces: `plugin/operation` / `plugin/*` / `*` patterns → auto | manual. + */ + async getPolicy( + request: operations.GetOperationsPolicyRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(operationsGetPolicy( + this, + request, + options, + )); + } + + /** + * Replace a project's per-command approval policy (full rule set). Patterns are `plugin/operation`, `plugin/*`, or `*`; each maps to auto | manual. + */ + async updatePolicy( + request: operations.UpdateOperationsPolicyRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(operationsUpdatePolicy( + this, + request, + options, + )); + } + + /** + * Invoke a plugin operation against a deployment. Honors the project's per-command approval policy. + */ + async invoke( + request: operations.InvokeOperationRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(operationsInvoke( + this, + request, + options, + )); + } + + /** + * Create a pending access request covering a remediation plan's commands. Awaits the engineer gate before it is queued for the operator. + */ + async createAccessRequest( + request?: operations.CreateAccessRequestRequest | undefined, + options?: RequestOptions, + ): Promise { + return unwrapAsync(operationsCreateAccessRequest( + this, + request, + options, + )); + } + + /** + * Engineer gate — approve a pending access request, queuing it for the operator to materialize. Records who queued it. + */ + async queueAccessRequest( + request: operations.QueueAccessRequestRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(operationsQueueAccessRequest( + this, + request, + options, + )); + } + + /** + * The customer's kubectl approve command for a queued access request, or null until the operator has materialized the grant CR and reported its coordinates. Polled by the Slack handler to update the access-plan card. + */ + async getAccessRequestCoordinates( + request: operations.GetAccessRequestCoordinatesRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(operationsGetAccessRequestCoordinates( + this, + request, + options, + )); + } +} diff --git a/client-sdks/platform/typescript/src/sdk/projects.ts b/client-sdks/platform/typescript/src/sdk/projects.ts index 2b7cdfd2d..d66af6628 100644 --- a/client-sdks/platform/typescript/src/sdk/projects.ts +++ b/client-sdks/platform/typescript/src/sdk/projects.ts @@ -2,18 +2,25 @@ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. */ -import { projectsConfigureCustomerKey } from "../funcs/projectsConfigureCustomerKey.js"; -import { projectsConfigureCustomerModels } from "../funcs/projectsConfigureCustomerModels.js"; +import { projectsConfigureBuckets } from "../funcs/projectsConfigureBuckets.js"; +import { projectsConfigureDeployments } from "../funcs/projectsConfigureDeployments.js"; +import { projectsConfigureKeys } from "../funcs/projectsConfigureKeys.js"; +import { projectsConfigureModels } from "../funcs/projectsConfigureModels.js"; +import { projectsConfigureRegistry } from "../funcs/projectsConfigureRegistry.js"; +import { projectsConfigureSource } from "../funcs/projectsConfigureSource.js"; import { projectsCreate } from "../funcs/projectsCreate.js"; import { projectsCreateFromTemplate } from "../funcs/projectsCreateFromTemplate.js"; import { projectsDelete } from "../funcs/projectsDelete.js"; import { projectsGet } from "../funcs/projectsGet.js"; import { projectsGetActiveRelease } from "../funcs/projectsGetActiveRelease.js"; +import { projectsGetAiUsage } from "../funcs/projectsGetAiUsage.js"; +import { projectsGetCapabilityOverview } from "../funcs/projectsGetCapabilityOverview.js"; import { projectsGetDeploymentLinkSetup } from "../funcs/projectsGetDeploymentLinkSetup.js"; import { projectsGetDeploymentPortalDomain } from "../funcs/projectsGetDeploymentPortalDomain.js"; import { projectsGetGcpOAuthProvider } from "../funcs/projectsGetGcpOAuthProvider.js"; import { projectsGetTemplateUrls } from "../funcs/projectsGetTemplateUrls.js"; import { projectsList } from "../funcs/projectsList.js"; +import { projectsSetCapabilities } from "../funcs/projectsSetCapabilities.js"; import { projectsUpdate } from "../funcs/projectsUpdate.js"; import { projectsUpdateGcpOAuthProvider } from "../funcs/projectsUpdateGcpOAuthProvider.js"; import { ClientSDK, RequestOptions } from "../lib/sdks.js"; @@ -120,6 +127,20 @@ export class Projects extends ClientSDK { )); } + /** + * Connect a GitHub repository or Alien template to an existing project and configure its release workflow. + */ + async configureSource( + request: operations.ConfigureProjectSourceRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(projectsConfigureSource( + this, + request, + options, + )); + } + /** * Get the deployment portal domain binding for a project. */ @@ -177,7 +198,7 @@ export class Projects extends ClientSDK { } /** - * 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. + * Get the production channel's current release. When deploymentId is provided, returns that deployment's effective release: its pin, or its followed channel's current release. */ async getActiveRelease( request: operations.GetProjectActiveReleaseRequest, @@ -190,14 +211,42 @@ export class Projects extends ClientSDK { )); } + /** + * Set the capabilities offered by a Project. Removing a capability prevents new setup without deleting existing customer resources. + */ + async setCapabilities( + request: operations.SetProjectCapabilitiesRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(projectsSetCapabilities( + this, + request, + options, + )); + } + + /** + * Enable deployments for a Project. + */ + async configureDeployments( + request: operations.ConfigureProjectDeploymentsRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(projectsConfigureDeployments( + this, + request, + options, + )); + } + /** * Configure customer-owned model providers without requiring an application Release. */ - async configureCustomerModels( - request: operations.ConfigureProjectCustomerModelsRequest, + async configureModels( + request: operations.ConfigureProjectModelsRequest, options?: RequestOptions, - ): Promise { - return unwrapAsync(projectsConfigureCustomerModels( + ): Promise { + return unwrapAsync(projectsConfigureModels( this, request, options, @@ -207,11 +256,64 @@ export class Projects extends ClientSDK { /** * Enable customer-owned application encryption without requiring an application Release. */ - async configureCustomerKey( - request: operations.ConfigureProjectCustomerKeyRequest, + async configureKeys( + request: operations.ConfigureProjectKeysRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(projectsConfigureKeys( + this, + request, + options, + )); + } + + /** + * Enable buckets without requiring a project Release. + */ + async configureBuckets( + request: operations.ConfigureProjectBucketsRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(projectsConfigureBuckets( + this, + request, + options, + )); + } + + /** + * Enable customer-owned container registries without requiring an application Release. + */ + async configureRegistry( + request: operations.ConfigureProjectRegistryRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(projectsConfigureRegistry( + this, + request, + options, + )); + } + + /** + * Get safe, server-derived capability status for a Project. + */ + async getCapabilityOverview( + request: operations.GetProjectCapabilityOverviewRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(projectsGetCapabilityOverview( + this, + request, + options, + )); + } + + async getAiUsage( + request: operations.GetProjectAiUsageRequest, options?: RequestOptions, - ): Promise { - return unwrapAsync(projectsConfigureCustomerKey( + ): Promise { + return unwrapAsync(projectsGetAiUsage( this, request, options, diff --git a/client-sdks/platform/typescript/src/sdk/releasechannels.ts b/client-sdks/platform/typescript/src/sdk/releasechannels.ts new file mode 100644 index 000000000..c344ee83b --- /dev/null +++ b/client-sdks/platform/typescript/src/sdk/releasechannels.ts @@ -0,0 +1,64 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { releaseChannelsCreate } from "../funcs/releaseChannelsCreate.js"; +import { releaseChannelsDelete } from "../funcs/releaseChannelsDelete.js"; +import { releaseChannelsList } from "../funcs/releaseChannelsList.js"; +import { ClientSDK, RequestOptions } from "../lib/sdks.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { unwrapAsync } from "../types/fp.js"; + +export class ReleaseChannels extends ClientSDK { + /** + * List release channels + * + * @remarks + * List the release channels configured for a project. + */ + async list( + request: operations.ListReleaseChannelsRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(releaseChannelsList( + this, + request, + options, + )); + } + + /** + * Create a release channel + * + * @remarks + * Create a release channel for a project. + */ + async create( + request: operations.CreateReleaseChannelRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(releaseChannelsCreate( + this, + request, + options, + )); + } + + /** + * Delete a release channel + * + * @remarks + * Delete a release channel from a project. + */ + async delete( + request: operations.DeleteReleaseChannelRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(releaseChannelsDelete( + this, + request, + options, + )); + } +} diff --git a/client-sdks/platform/typescript/src/sdk/releases.ts b/client-sdks/platform/typescript/src/sdk/releases.ts index bae3f7737..b852c9b86 100644 --- a/client-sdks/platform/typescript/src/sdk/releases.ts +++ b/client-sdks/platform/typescript/src/sdk/releases.ts @@ -7,6 +7,8 @@ import { releasesGet } from "../funcs/releasesGet.js"; import { releasesList } from "../funcs/releasesList.js"; import { releasesListAuthors } from "../funcs/releasesListAuthors.js"; import { releasesListBranches } from "../funcs/releasesListBranches.js"; +import { releasesListDeployments } from "../funcs/releasesListDeployments.js"; +import { releasesPromote } from "../funcs/releasesPromote.js"; import { ClientSDK, RequestOptions } from "../lib/sdks.js"; import * as models from "../models/index.js"; import * as operations from "../models/operations/index.js"; @@ -82,4 +84,29 @@ export class Releases extends ClientSDK { options, )); } + + /** + * List the project's deployments with their rollout state relative to this release. + */ + async listDeployments( + request: operations.ListReleaseDeploymentsRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(releasesListDeployments( + this, + request, + options, + )); + } + + async promote( + request: operations.PromoteReleaseRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(releasesPromote( + this, + request, + options, + )); + } } diff --git a/client-sdks/platform/typescript/src/sdk/remotebindings.ts b/client-sdks/platform/typescript/src/sdk/remotebindings.ts new file mode 100644 index 000000000..302457b1a --- /dev/null +++ b/client-sdks/platform/typescript/src/sdk/remotebindings.ts @@ -0,0 +1,28 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { remoteBindingsCreateExternalAccess } from "../funcs/remoteBindingsCreateExternalAccess.js"; +import { ClientSDK, RequestOptions } from "../lib/sdks.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { unwrapAsync } from "../types/fp.js"; + +export class RemoteBindings extends ClientSDK { + /** + * Create short-lived Remote Bindings access for a external resource + * + * @remarks + * Selects a connected external resource by Project and external ID, then returns a short-lived deployment-scoped Manager capability. The caller never receives the external cloud credentials from Platform. + */ + async createExternalAccess( + request: operations.CreateRemoteBindingsExternalAccessRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(remoteBindingsCreateExternalAccess( + this, + request, + options, + )); + } +} diff --git a/client-sdks/platform/typescript/src/sdk/resources.ts b/client-sdks/platform/typescript/src/sdk/resources.ts index 43533cab5..17427a982 100644 --- a/client-sdks/platform/typescript/src/sdk/resources.ts +++ b/client-sdks/platform/typescript/src/sdk/resources.ts @@ -33,9 +33,6 @@ export class Resources extends ClientSDK { )); } - /** - * List distinct deployments that have commands, including deployment group info. Use for filter dropdowns in the dashboard. - */ async listDeployments( request: operations.ListResourceDeploymentsRequest, options?: RequestOptions, diff --git a/client-sdks/platform/typescript/src/sdk/sdk.ts b/client-sdks/platform/typescript/src/sdk/sdk.ts index 248c65603..71a4882ce 100644 --- a/client-sdks/platform/typescript/src/sdk/sdk.ts +++ b/client-sdks/platform/typescript/src/sdk/sdk.ts @@ -2,12 +2,34 @@ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. */ -import { ClientSDK } from "../lib/sdks.js"; +import { acceptWorkspaceInvitation } from "../funcs/acceptWorkspaceInvitation.js"; +import { continueAwsVirtualKey } from "../funcs/continueAwsVirtualKey.js"; +import { createAwsVirtualKey } from "../funcs/createAwsVirtualKey.js"; +import { createWorkspaceInvitation } from "../funcs/createWorkspaceInvitation.js"; +import { createWorkspaceInviteLink } from "../funcs/createWorkspaceInviteLink.js"; +import { decommissionAwsVirtualKey } from "../funcs/decommissionAwsVirtualKey.js"; +import { finalizeAwsVirtualKeyDeletion } from "../funcs/finalizeAwsVirtualKeyDeletion.js"; +import { getAwsVirtualKey } from "../funcs/getAwsVirtualKey.js"; +import { getWorkspaceInvitationPreview } from "../funcs/getWorkspaceInvitationPreview.js"; +import { getWorkspaceInviteLink } from "../funcs/getWorkspaceInviteLink.js"; +import { listAwsVirtualKeys } from "../funcs/listAwsVirtualKeys.js"; +import { listWorkspaceInvitations } from "../funcs/listWorkspaceInvitations.js"; +import { resendWorkspaceInvitation } from "../funcs/resendWorkspaceInvitation.js"; +import { restoreAwsVirtualKey } from "../funcs/restoreAwsVirtualKey.js"; +import { revokeWorkspaceInvitation } from "../funcs/revokeWorkspaceInvitation.js"; +import { revokeWorkspaceInviteLink } from "../funcs/revokeWorkspaceInviteLink.js"; +import { rotateAwsVirtualKeyCredential } from "../funcs/rotateAwsVirtualKeyCredential.js"; +import { ClientSDK, RequestOptions } from "../lib/sdks.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { unwrapAsync } from "../types/fp.js"; +import { AgentSessions } from "./agentsessions.js"; import { ApiKeys } from "./apikeys.js"; import { Auth } from "./auth.js"; import { Billing } from "./billing.js"; import { CloudRegions } from "./cloudregions.js"; import { Commands } from "./commands.js"; +import { ContainerRegistry } from "./containerregistry.js"; import { DebugSessions } from "./debugsessions.js"; import { Deployment } from "./deployment.js"; import { DeploymentGroups } from "./deploymentgroups.js"; @@ -16,12 +38,17 @@ import { Domains } from "./domains.js"; import { Events } from "./events.js"; import { Machines } from "./machines.js"; import { Managers } from "./managers.js"; +import { Operations } from "./operations.js"; import { OperatorManifests } from "./operatormanifests.js"; import { Packages } from "./packages.js"; import { Projects } from "./projects.js"; +import { ReleaseChannels } from "./releasechannels.js"; import { Releases } from "./releases.js"; +import { RemoteBindings } from "./remotebindings.js"; import { Resolve } from "./resolve.js"; import { Resources } from "./resources.js"; +import { SetupLinks } from "./setuplinks.js"; +import { SlackIntegration } from "./slackintegration.js"; import { Sync } from "./sync.js"; import { User } from "./user.js"; import { Workspaces } from "./workspaces.js"; @@ -47,11 +74,26 @@ export class Alien extends ClientSDK { return (this._projects ??= new Projects(this._options)); } + private _remoteBindings?: RemoteBindings; + get remoteBindings(): RemoteBindings { + return (this._remoteBindings ??= new RemoteBindings(this._options)); + } + private _deploymentGroups?: DeploymentGroups; get deploymentGroups(): DeploymentGroups { return (this._deploymentGroups ??= new DeploymentGroups(this._options)); } + private _setupLinks?: SetupLinks; + get setupLinks(): SetupLinks { + return (this._setupLinks ??= new SetupLinks(this._options)); + } + + private _containerRegistry?: ContainerRegistry; + get containerRegistry(): ContainerRegistry { + return (this._containerRegistry ??= new ContainerRegistry(this._options)); + } + private _packages?: Packages; get packages(): Packages { return (this._packages ??= new Packages(this._options)); @@ -62,6 +104,11 @@ export class Alien extends ClientSDK { return (this._releases ??= new Releases(this._options)); } + private _releaseChannels?: ReleaseChannels; + get releaseChannels(): ReleaseChannels { + return (this._releaseChannels ??= new ReleaseChannels(this._options)); + } + private _deployments?: Deployments; get deployments(): Deployments { return (this._deployments ??= new Deployments(this._options)); @@ -112,6 +159,21 @@ export class Alien extends ClientSDK { return (this._deployment ??= new Deployment(this._options)); } + private _slackIntegration?: SlackIntegration; + get slackIntegration(): SlackIntegration { + return (this._slackIntegration ??= new SlackIntegration(this._options)); + } + + private _agentSessions?: AgentSessions; + get agentSessions(): AgentSessions { + return (this._agentSessions ??= new AgentSessions(this._options)); + } + + private _operations?: Operations; + get operations(): Operations { + return (this._operations ??= new Operations(this._options)); + } + private _sync?: Sync; get sync(): Sync { return (this._sync ??= new Sync(this._options)); @@ -136,4 +198,191 @@ export class Alien extends ClientSDK { get billing(): Billing { return (this._billing ??= new Billing(this._options)); } + + async getWorkspaceInvitationPreview( + request: operations.GetWorkspaceInvitationPreviewRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(getWorkspaceInvitationPreview( + this, + request, + options, + )); + } + + async acceptWorkspaceInvitation( + request: operations.AcceptWorkspaceInvitationRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(acceptWorkspaceInvitation( + this, + request, + options, + )); + } + + async listWorkspaceInvitations( + request: operations.ListWorkspaceInvitationsRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(listWorkspaceInvitations( + this, + request, + options, + )); + } + + async createWorkspaceInvitation( + request: operations.CreateWorkspaceInvitationRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(createWorkspaceInvitation( + this, + request, + options, + )); + } + + async resendWorkspaceInvitation( + request: operations.ResendWorkspaceInvitationRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(resendWorkspaceInvitation( + this, + request, + options, + )); + } + + async revokeWorkspaceInvitation( + request: operations.RevokeWorkspaceInvitationRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(revokeWorkspaceInvitation( + this, + request, + options, + )); + } + + async getWorkspaceInviteLink( + request: operations.GetWorkspaceInviteLinkRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(getWorkspaceInviteLink( + this, + request, + options, + )); + } + + async createWorkspaceInviteLink( + request: operations.CreateWorkspaceInviteLinkRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(createWorkspaceInviteLink( + this, + request, + options, + )); + } + + async revokeWorkspaceInviteLink( + request: operations.RevokeWorkspaceInviteLinkRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(revokeWorkspaceInviteLink( + this, + request, + options, + )); + } + + async listAwsVirtualKeys( + request: operations.ListAwsVirtualKeysRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(listAwsVirtualKeys( + this, + request, + options, + )); + } + + async createAwsVirtualKey( + request?: operations.CreateAwsVirtualKeyRequest | undefined, + options?: RequestOptions, + ): Promise { + return unwrapAsync(createAwsVirtualKey( + this, + request, + options, + )); + } + + async rotateAwsVirtualKeyCredential( + request: operations.RotateAwsVirtualKeyCredentialRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(rotateAwsVirtualKeyCredential( + this, + request, + options, + )); + } + + async restoreAwsVirtualKey( + request: operations.RestoreAwsVirtualKeyRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(restoreAwsVirtualKey( + this, + request, + options, + )); + } + + async finalizeAwsVirtualKeyDeletion( + request: operations.FinalizeAwsVirtualKeyDeletionRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(finalizeAwsVirtualKeyDeletion( + this, + request, + options, + )); + } + + async decommissionAwsVirtualKey( + request: operations.DecommissionAwsVirtualKeyRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(decommissionAwsVirtualKey( + this, + request, + options, + )); + } + + async getAwsVirtualKey( + request: operations.GetAwsVirtualKeyRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(getAwsVirtualKey( + this, + request, + options, + )); + } + + async continueAwsVirtualKey( + request: operations.ContinueAwsVirtualKeyRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(continueAwsVirtualKey( + this, + request, + options, + )); + } } diff --git a/client-sdks/platform/typescript/src/sdk/slackintegration.ts b/client-sdks/platform/typescript/src/sdk/slackintegration.ts new file mode 100644 index 000000000..342764b21 --- /dev/null +++ b/client-sdks/platform/typescript/src/sdk/slackintegration.ts @@ -0,0 +1,87 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { slackIntegrationInstallUrl } from "../funcs/slackIntegrationInstallUrl.js"; +import { slackIntegrationListChannels } from "../funcs/slackIntegrationListChannels.js"; +import { slackIntegrationSetNotificationChannel } from "../funcs/slackIntegrationSetNotificationChannel.js"; +import { slackIntegrationStatus } from "../funcs/slackIntegrationStatus.js"; +import { slackIntegrationUninstall } from "../funcs/slackIntegrationUninstall.js"; +import { ClientSDK, RequestOptions } from "../lib/sdks.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { unwrapAsync } from "../types/fp.js"; + +export class SlackIntegration extends ClientSDK { + /** + * Generate the Slack OAuth consent URL for this workspace. + */ + async installUrl( + request?: operations.SlackIntegrationInstallUrlRequest | undefined, + options?: RequestOptions, + ): Promise { + return unwrapAsync(slackIntegrationInstallUrl( + this, + request, + options, + )); + } + + /** + * Return the Slack install for this workspace (if any). + */ + async status( + request?: operations.SlackIntegrationStatusRequest | undefined, + options?: RequestOptions, + ): Promise { + return unwrapAsync(slackIntegrationStatus( + this, + request, + options, + )); + } + + /** + * List public Slack channels for this workspace's install. Used by the dashboard's notification-channel picker. + */ + async listChannels( + request?: operations.SlackIntegrationChannelsRequest | undefined, + options?: RequestOptions, + ): Promise { + return unwrapAsync(slackIntegrationListChannels( + this, + request, + options, + )); + } + + /** + * Configure which Slack channel receives ai-agent monitor reports. + */ + async setNotificationChannel( + request?: + | operations.SlackIntegrationSetNotificationChannelRequest + | undefined, + options?: RequestOptions, + ): Promise { + return unwrapAsync(slackIntegrationSetNotificationChannel( + this, + request, + options, + )); + } + + /** + * Uninstall the Slack integration for this workspace. Revokes the bot token at Slack and deletes the row. + */ + async uninstall( + request?: operations.SlackIntegrationUninstallRequest | undefined, + options?: RequestOptions, + ): Promise { + return unwrapAsync(slackIntegrationUninstall( + this, + request, + options, + )); + } +} diff --git a/client-sdks/platform/typescript/src/sdk/sync.ts b/client-sdks/platform/typescript/src/sdk/sync.ts index 8def35f66..a096f738c 100644 --- a/client-sdks/platform/typescript/src/sdk/sync.ts +++ b/client-sdks/platform/typescript/src/sdk/sync.ts @@ -7,6 +7,7 @@ import { syncContext } from "../funcs/syncContext.js"; import { syncList } from "../funcs/syncList.js"; import { syncReconcile } from "../funcs/syncReconcile.js"; import { syncRelease } from "../funcs/syncRelease.js"; +import { syncRenew } from "../funcs/syncRenew.js"; import { ClientSDK, RequestOptions } from "../lib/sdks.js"; import * as models from "../models/index.js"; import * as operations from "../models/operations/index.js"; @@ -69,6 +70,17 @@ export class Sync extends ClientSDK { )); } + async renew( + request: operations.SyncRenewRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(syncRenew( + this, + request, + options, + )); + } + /** * Release a deployment lock. Must be called after processing an acquired deployment, even if processing failed. This is critical to avoid deadlocks. */ diff --git a/client-sdks/platform/typescript/src/sdk/workspaces.ts b/client-sdks/platform/typescript/src/sdk/workspaces.ts index 70087d484..1598a6b82 100644 --- a/client-sdks/platform/typescript/src/sdk/workspaces.ts +++ b/client-sdks/platform/typescript/src/sdk/workspaces.ts @@ -6,11 +6,13 @@ import { workspacesAddMember } from "../funcs/workspacesAddMember.js"; import { workspacesDelete } from "../funcs/workspacesDelete.js"; import { workspacesDismissOnboarding } from "../funcs/workspacesDismissOnboarding.js"; import { workspacesGet } from "../funcs/workspacesGet.js"; +import { workspacesGetSettings } from "../funcs/workspacesGetSettings.js"; import { workspacesList } from "../funcs/workspacesList.js"; import { workspacesListMembers } from "../funcs/workspacesListMembers.js"; import { workspacesRemoveMember } from "../funcs/workspacesRemoveMember.js"; import { workspacesUpdate } from "../funcs/workspacesUpdate.js"; import { workspacesUpdateMember } from "../funcs/workspacesUpdateMember.js"; +import { workspacesUpdateSettings } from "../funcs/workspacesUpdateSettings.js"; import { ClientSDK, RequestOptions } from "../lib/sdks.js"; import * as models from "../models/index.js"; import * as operations from "../models/operations/index.js"; @@ -142,4 +144,32 @@ export class Workspaces extends ClientSDK { options, )); } + + /** + * Read the ai-agent settings for a workspace. Returns defaults (`enabled: true`, `debugPermissionMode: auto`) when the workspace has never customized them. + */ + async getSettings( + request: operations.GetWorkspaceSettingsRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(workspacesGetSettings( + this, + request, + options, + )); + } + + /** + * 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). + */ + async updateSettings( + request: operations.UpdateWorkspaceSettingsRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(workspacesUpdateSettings( + this, + request, + options, + )); + } } diff --git a/client-sdks/platform/typescript/tsconfig.json b/client-sdks/platform/typescript/tsconfig.json index c51c3bf21..feac75510 100644 --- a/client-sdks/platform/typescript/tsconfig.json +++ b/client-sdks/platform/typescript/tsconfig.json @@ -13,7 +13,6 @@ "declaration": true, "declarationMap": true, "sourceMap": true, - "rootDir": "src", "outDir": "esm", diff --git a/crates/alien-ai-gateway/src/error.rs b/crates/alien-ai-gateway/src/error.rs index c4b673172..8859950e4 100644 --- a/crates/alien-ai-gateway/src/error.rs +++ b/crates/alien-ai-gateway/src/error.rs @@ -48,13 +48,40 @@ pub enum ErrorData { /// The requested model is not in the catalog for this binding's cloud. #[error( code = "GATEWAY_MODEL_NOT_AVAILABLE", - message = "Model '{model}' is not available on binding '{binding}'", + message = "Model '{model}' is not available for this customer's AI connection", retryable = "false", internal = "false", - http_status_code = 404 + http_status_code = 404, + hint = "Choose a model returned by GET /v1/models, or update the customer's provider access." )] ModelNotAvailable { model: String, binding: String }, + /// The provider reports that the model exists but customer action is required. + #[error( + code = "GATEWAY_MODEL_ACCESS_REQUIRED", + message = "Model '{model}' requires customer action: {reason}", + retryable = "false", + internal = "false", + http_status_code = 403, + hint = "Update the customer's provider access, then wait for Alien to verify the model." + )] + ModelAccessRequired { + model: String, + binding: String, + reason: String, + }, + + /// The last provider observation could not determine whether the model is usable. + #[error( + code = "GATEWAY_MODEL_AVAILABILITY_UNKNOWN", + message = "Alien could not verify whether model '{model}' is available for this customer", + retryable = "true", + internal = "false", + http_status_code = 503, + hint = "Retry after the customer's model availability is checked again." + )] + ModelAvailabilityUnknown { model: String, binding: String }, + /// The upstream cloud endpoint could not be reached. Not internal: the 502 and /// its message (a cloud endpoint host, never a credential) are safe to surface, /// and `internal = true` would collapse this to a generic 500 at the client. diff --git a/crates/alien-ai-gateway/src/lib.rs b/crates/alien-ai-gateway/src/lib.rs index 339b32ffc..7f02c46be 100644 --- a/crates/alien-ai-gateway/src/lib.rs +++ b/crates/alien-ai-gateway/src/lib.rs @@ -18,8 +18,10 @@ pub use creds::{ pub use error::{ErrorData, Result}; pub use router::{ build_router, build_router_with_availability, build_router_with_availability_and_observer, - build_router_with_observer, route_from_direct_anthropic, route_from_direct_openai, - AvailableModels, GatewayRoute, GatewayTarget, + build_router_with_observed_models, build_router_with_observed_models_and_observer, + build_router_with_observer, route_from_direct_anthropic, route_from_direct_databricks, + route_from_direct_openai, AvailableModels, GatewayRoute, GatewayTarget, + ObservedModelAvailability, ObservedModels, }; pub use usage::{ parse_ai_token_usage, AiTokenUsage, AiUsageClientApi, AiUsageEvent, AiUsageObserver, diff --git a/crates/alien-ai-gateway/src/router/mod.rs b/crates/alien-ai-gateway/src/router/mod.rs index 09d772d42..923042e52 100644 --- a/crates/alien-ai-gateway/src/router/mod.rs +++ b/crates/alien-ai-gateway/src/router/mod.rs @@ -82,6 +82,7 @@ where pub enum GatewayTarget { Cloud(Platform), DirectAnthropic, + DirectDatabricks, DirectOpenAi, } @@ -138,18 +139,86 @@ pub fn route_from_direct_openai( }) } +/// Build a Databricks Unity AI Gateway route for one validated workspace. +/// +/// Databricks uses an OpenAI-compatible request and bearer credential, but its +/// upstream host belongs to the customer's workspace. Only canonical Databricks +/// workspace hosts are accepted so this cannot become a generic bearer-token proxy. +pub fn route_from_direct_databricks( + name: impl Into, + workspace_url: &str, + access_token: impl Into, +) -> Result { + let name = name.into(); + let mut upstream = reqwest::Url::parse(workspace_url) + .into_alien_error() + .context(ErrorData::BindingConfigInvalid { + binding: name.clone(), + message: "the Databricks workspace URL is invalid".to_string(), + })?; + let route_name = upstream.host_str().map(str::to_string).ok_or_else(|| { + AlienError::new(ErrorData::BindingConfigInvalid { + binding: name.clone(), + message: "the Databricks workspace URL has no host".to_string(), + }) + })?; + let valid_host = [ + ".cloud.databricks.com", + ".azuredatabricks.net", + ".gcp.databricks.com", + ] + .iter() + .any(|suffix| route_name.ends_with(suffix)); + if upstream.scheme() != "https" + || !valid_host + || upstream.port().is_some() + || !upstream.username().is_empty() + || upstream.password().is_some() + || upstream.query().is_some() + || upstream.fragment().is_some() + { + return Err(AlienError::new(ErrorData::BindingConfigInvalid { + binding: name, + message: "the Databricks workspace URL must be an HTTPS Databricks workspace host" + .to_string(), + })); + } + upstream.set_path(""); + + Ok(GatewayRoute { + name, + target: GatewayTarget::DirectDatabricks, + region: None, + project: None, + azure_endpoint: None, + cred: AmbientCred::OpenAiApiKey(OpenAiApiKeyCred::new(access_token)?), + upstream_base_override: Some(upstream.to_string().trim_end_matches('/').to_string()), + }) +} + struct AppState { routes: HashMap, client: reqwest::Client, /// Account-specific, read-only control-plane observations supplied by the /// hosted route resolver. `None` keeps embedded gateways catalog-only. - available_models: Option, + observed_models: Option, usage_observer: Option>, } /// Available public model IDs keyed by binding name. pub type AvailableModels = HashMap>; +/// Request-time access state for one model in a resolved customer connection. +#[derive(Clone, Debug, PartialEq, Eq)] +pub enum ObservedModelAvailability { + Available, + Blocked { reason: String }, + Unknown, +} + +/// Observed public model access keyed by binding name and public model ID. +pub type ObservedModels = HashMap>; + /// Build the axum router serving every binding under `//...`: /// `POST //v1/chat/completions` (OpenAI), `POST //v1/messages` /// (Anthropic), and `GET //v1/models`. @@ -171,7 +240,19 @@ pub fn build_router_with_availability( routes: Vec, available_models: AvailableModels, ) -> Router { - build_router_inner(routes, Some(available_models), None) + build_router_inner( + routes, + Some(observed_from_available(available_models)), + None, + ) +} + +/// Build a router that preserves provider-reported model blocker state. +pub fn build_router_with_observed_models( + routes: Vec, + observed_models: ObservedModels, +) -> Router { + build_router_inner(routes, Some(observed_models), None) } /// Build a hosted router with both bounded model availability and usage observation. @@ -180,12 +261,25 @@ pub fn build_router_with_availability_and_observer( available_models: AvailableModels, usage_observer: Arc, ) -> Router { - build_router_inner(routes, Some(available_models), Some(usage_observer)) + build_router_inner( + routes, + Some(observed_from_available(available_models)), + Some(usage_observer), + ) +} + +/// Build a hosted router that preserves provider-reported model blocker state. +pub fn build_router_with_observed_models_and_observer( + routes: Vec, + observed_models: ObservedModels, + usage_observer: Arc, +) -> Router { + build_router_inner(routes, Some(observed_models), Some(usage_observer)) } fn build_router_inner( routes: Vec, - available_models: Option, + observed_models: Option, usage_observer: Option>, ) -> Router { let routes: HashMap = @@ -193,7 +287,7 @@ fn build_router_inner( let state = Arc::new(AppState { routes, client: reqwest::Client::new(), - available_models, + observed_models, usage_observer, }); Router::new() @@ -208,11 +302,32 @@ fn build_router_inner( .with_state(state) } +fn observed_from_available(available_models: AvailableModels) -> ObservedModels { + available_models + .into_iter() + .map(|(binding, models)| { + ( + binding, + models + .into_iter() + .map(|model| (model, ObservedModelAvailability::Available)) + .collect(), + ) + }) + .collect() +} + /// Parse a proxied request body as JSON and pull out its required `model` field. /// Both the chat/completions|messages handler and the Responses handler route on /// the request's `model`, so they share this preamble. +/// +/// AI SDK conventions namespace model ids as `vendor/model` (for example +/// `openai/gpt-5.6-luna`). The gateway's namespace is `byo/` — every model runs +/// on the caller's own provider account — so `byo/` is accepted as an alias +/// for the bare catalog id, and the payload is normalized so downstream routing, +/// availability checks, and usage reporting all see one spelling. fn parse_model_request(body: &[u8]) -> Result<(Value, String)> { - let payload: Value = + let mut payload: Value = serde_json::from_slice(body) .into_alien_error() .context(ErrorData::InvalidRequest { @@ -227,6 +342,14 @@ fn parse_model_request(body: &[u8]) -> Result<(Value, String)> { }) })? .to_string(); + let model = match model.strip_prefix("byo/") { + Some(bare) => { + let bare = bare.to_string(); + payload["model"] = Value::String(bare.clone()); + bare + } + None => model, + }; Ok((payload, model)) } @@ -428,11 +551,10 @@ async fn proxy( ensure_model_available(&state, &binding, &model)?; if client_api != ClientApi::OpenAiChatCompletions { return Err(AlienError::new(ErrorData::InvalidRequest { - message: format!( - "direct OpenAI chat completions use /{binding}/v1/chat/completions" - ), + message: "direct OpenAI chat completions use /v1/chat/completions".to_string(), })); } + ensure_direct_openai_client_api(&model, &binding, ClientApi::OpenAiChatCompletions)?; let descriptor = AiUsageContext::new( &binding, AiUsageProvider::OpenAi, @@ -448,9 +570,51 @@ async fn proxy( &model, "/v1/chat/completions", ) - .await; + .await?; return Ok(observe_response( - response?, + response, + state.usage_observer.as_ref(), + descriptor, + )); + } + GatewayTarget::DirectDatabricks => { + ensure_model_available(&state, &binding, &model)?; + let direct = ensure_direct_databricks_client_api(&model, &binding, client_api)?; + let provider_model = direct.upstream_id; + let descriptor = AiUsageContext::new( + &binding, + AiUsageProvider::Databricks, + &model, + provider_model, + usage_client_api(client_api), + None, + ); + let response = match client_api { + ClientApi::OpenAiChatCompletions => { + proxy_direct_openai( + &state.client, + route, + payload, + provider_model, + "/ai-gateway/mlflow/v1/chat/completions", + ) + .await? + } + ClientApi::AnthropicMessages => { + proxy_direct_anthropic_at( + &state.client, + route, + payload, + provider_model, + &headers, + "/ai-gateway/anthropic/v1/messages", + ) + .await? + } + ClientApi::OpenAiResponses => unreachable!("handled by proxy_responses"), + }; + return Ok(observe_response( + response, state.usage_observer.as_ref(), descriptor, )); @@ -459,7 +623,9 @@ async fn proxy( } let cloud = match route.target { GatewayTarget::Cloud(cloud) => cloud, - GatewayTarget::DirectAnthropic | GatewayTarget::DirectOpenAi => { + GatewayTarget::DirectAnthropic + | GatewayTarget::DirectDatabricks + | GatewayTarget::DirectOpenAi => { unreachable!("handled above") } }; @@ -489,7 +655,7 @@ async fn proxy( }; return Err(AlienError::new(ErrorData::InvalidRequest { message: format!( - "model `{model}` is not supported by this client API; send it to /{binding}/{expected_path}" + "model `{model}` is not supported by this client API; send it to /{expected_path}" ), })); } @@ -584,26 +750,85 @@ async fn proxy_responses( let cloud = match route.target { GatewayTarget::Cloud(cloud) => cloud, GatewayTarget::DirectAnthropic => { - return Err(AlienError::new(ErrorData::ModelNotAvailable { - model, - binding, - })) + ensure_model_available(&state, &binding, &model)?; + return Err(AlienError::new(ErrorData::InvalidRequest { + message: format!( + "model `{model}` is not supported by this client API; send it to /v1/messages" + ), + })); } GatewayTarget::DirectOpenAi => { ensure_model_available(&state, &binding, &model)?; - return proxy_direct_openai(&state.client, route, payload, &model, "/v1/responses") - .await; + ensure_direct_openai_client_api(&model, &binding, ClientApi::OpenAiResponses)?; + let descriptor = AiUsageContext::new( + &binding, + AiUsageProvider::OpenAi, + &model, + &model, + AiUsageClientApi::OpenAiResponses, + None, + ); + let response = + proxy_direct_openai(&state.client, route, payload, &model, "/v1/responses").await?; + return Ok(observe_response( + response, + state.usage_observer.as_ref(), + descriptor, + )); + } + GatewayTarget::DirectDatabricks => { + ensure_model_available(&state, &binding, &model)?; + let provider_model = + ensure_direct_databricks_client_api(&model, &binding, ClientApi::OpenAiResponses)? + .upstream_id + .to_string(); + payload["model"] = Value::String(provider_model.clone()); + let descriptor = AiUsageContext::new( + &binding, + AiUsageProvider::Databricks, + &model, + &provider_model, + AiUsageClientApi::OpenAiResponses, + None, + ); + let response = proxy_direct_openai( + &state.client, + route, + payload, + &provider_model, + "/ai-gateway/mlflow/v1/responses", + ) + .await?; + return Ok(observe_response( + response, + state.usage_observer.as_ref(), + descriptor, + )); } }; - let catalog_model = ai_catalog::resolve_for(&model, cloud) - .filter(|model| model.client_apis.contains(&ClientApi::OpenAiResponses)) - .ok_or_else(|| { - AlienError::new(ErrorData::ModelNotAvailable { - model: model.clone(), - binding: binding.clone(), - }) - })?; + let catalog_model = ai_catalog::resolve_for(&model, cloud).ok_or_else(|| { + AlienError::new(ErrorData::ModelNotAvailable { + model: model.clone(), + binding: binding.clone(), + }) + })?; ensure_model_available(&state, &binding, &model)?; + if !catalog_model + .client_apis + .contains(&ClientApi::OpenAiResponses) + { + let expected_path = match catalog_model.client_apis.first() { + Some(ClientApi::OpenAiChatCompletions) => "v1/chat/completions", + Some(ClientApi::AnthropicMessages) => "v1/messages", + Some(ClientApi::OpenAiResponses) => "v1/responses", + None => "v1/models", + }; + return Err(AlienError::new(ErrorData::InvalidRequest { + message: format!( + "model `{model}` is not supported by this client API; send it to /{expected_path}" + ), + })); + } let target = ai_catalog::responses_target(catalog_model.public_id).ok_or_else(|| { AlienError::new(ErrorData::ModelNotAvailable { model: model.clone(), @@ -656,7 +881,9 @@ async fn proxy_responses( } /// `GET //v1/models`: the qualified catalog, intersected with the bounded -/// account observation when the hosted control plane supplied one. +/// account observation when the hosted control plane supplied one. Ids are +/// listed in the `byo/` namespace — the spelling the chat endpoints accept — +/// and the bare id remains accepted as an alias. async fn list_models( State(state): State>, Path(binding): Path, @@ -666,8 +893,8 @@ async fn list_models( binding: binding.clone(), }) })?; - let allowed = state - .available_models + let observed = state + .observed_models .as_ref() .map(|by_binding| by_binding.get(&binding)); @@ -675,13 +902,15 @@ async fn list_models( GatewayTarget::Cloud(cloud) => ai_catalog::models_for(cloud) .into_iter() .filter(|model| { - allowed.is_none_or(|models| { - models.is_some_and(|models| models.contains(model.public_id)) + observed.is_none_or(|models| { + models.is_some_and(|models| { + models.get(model.public_id) == Some(&ObservedModelAvailability::Available) + }) }) }) .map(|model| { json!({ - "id": model.public_id, + "id": format!("byo/{}", model.public_id), "object": "model", "provider": model.provider(), "displayName": model.display_name(), @@ -691,13 +920,15 @@ async fn list_models( GatewayTarget::DirectAnthropic => ai_catalog::direct_anthropic_models() .into_iter() .filter(|model| { - allowed.is_none_or(|models| { - models.is_some_and(|models| models.contains(model.public_id)) + observed.is_none_or(|models| { + models.is_some_and(|models| { + models.get(model.public_id) == Some(&ObservedModelAvailability::Available) + }) }) }) .map(|model| { json!({ - "id": model.public_id, + "id": format!("byo/{}", model.public_id), "object": "model", "provider": "anthropic", "displayName": model.display_name(), @@ -705,17 +936,20 @@ async fn list_models( }) .collect(), GatewayTarget::DirectOpenAi => { - let mut models = allowed + let mut models = observed .into_iter() .flatten() .flat_map(|models| models.iter()) + .filter_map(|(model, availability)| { + (availability == &ObservedModelAvailability::Available).then_some(model) + }) .collect::>(); models.sort(); models .into_iter() .map(|model| { json!({ - "id": model, + "id": format!("byo/{model}"), "object": "model", "provider": "openai", "displayName": model, @@ -723,28 +957,116 @@ async fn list_models( }) .collect() } + GatewayTarget::DirectDatabricks => { + let mut models = observed + .into_iter() + .flatten() + .flat_map(|models| models.iter()) + .filter_map(|(model, availability)| { + (availability == &ObservedModelAvailability::Available).then_some(model) + }) + .collect::>(); + models.sort(); + models + .into_iter() + .map(|model| { + json!({ + "id": format!("byo/{model}"), + "object": "model", + "provider": "databricks", + "displayName": model, + }) + }) + .collect() + } }; Ok(Json(json!({ "object": "list", "data": data })).into_response()) } fn ensure_model_available(state: &AppState, binding: &str, model: &str) -> Result<()> { - if state.available_models.as_ref().is_some_and(|by_binding| { - !by_binding - .get(binding) - .is_some_and(|models| models.contains(model)) - }) { - return Err(AlienError::new(ErrorData::ModelNotAvailable { + let Some(by_binding) = state.observed_models.as_ref() else { + return Ok(()); + }; + match by_binding.get(binding).and_then(|models| models.get(model)) { + Some(ObservedModelAvailability::Available) => Ok(()), + Some(ObservedModelAvailability::Blocked { reason }) => { + Err(AlienError::new(ErrorData::ModelAccessRequired { + model: model.to_string(), + binding: binding.to_string(), + reason: reason.clone(), + })) + } + Some(ObservedModelAvailability::Unknown) => { + Err(AlienError::new(ErrorData::ModelAvailabilityUnknown { + model: model.to_string(), + binding: binding.to_string(), + })) + } + None => Err(AlienError::new(ErrorData::ModelNotAvailable { model: model.to_string(), binding: binding.to_string(), - })); + })), + } +} + +fn ensure_direct_openai_client_api( + model: &str, + binding: &str, + client_api: ClientApi, +) -> Result<()> { + let direct = ai_catalog::resolve_direct_openai(model).ok_or_else(|| { + AlienError::new(ErrorData::ModelNotAvailable { + model: model.to_string(), + binding: binding.to_string(), + }) + })?; + if direct.client_apis.contains(&client_api) { + return Ok(()); + } + let expected_path = match direct.client_apis.first() { + Some(ClientApi::OpenAiChatCompletions) => "v1/chat/completions", + Some(ClientApi::OpenAiResponses) => "v1/responses", + Some(ClientApi::AnthropicMessages) => "v1/messages", + None => "v1/models", + }; + Err(AlienError::new(ErrorData::InvalidRequest { + message: format!( + "model `{model}` is not supported by this client API; send it to /{expected_path}" + ), + })) +} + +fn ensure_direct_databricks_client_api( + model: &str, + binding: &str, + client_api: ClientApi, +) -> Result<&'static ai_catalog::DirectDatabricksModel> { + let direct = ai_catalog::resolve_direct_databricks(model).ok_or_else(|| { + AlienError::new(ErrorData::ModelNotAvailable { + model: model.to_string(), + binding: binding.to_string(), + }) + })?; + if direct.client_apis.contains(&client_api) { + return Ok(direct); } - Ok(()) + let expected_path = match direct.client_apis.first() { + Some(ClientApi::OpenAiChatCompletions) => "v1/chat/completions", + Some(ClientApi::OpenAiResponses) => "v1/responses", + Some(ClientApi::AnthropicMessages) => "v1/messages", + None => "v1/models", + }; + Err(AlienError::new(ErrorData::InvalidRequest { + message: format!( + "model `{model}` is not supported by this client API; send it to /{expected_path}" + ), + })) } async fn proxy_direct_anthropic( client: &reqwest::Client, route: &GatewayRoute, - mut payload: Value, + payload: Value, model: &str, headers: &HeaderMap, ) -> Result { @@ -754,7 +1076,26 @@ async fn proxy_direct_anthropic( binding: route.name.clone(), }) })?; - payload["model"] = Value::String(direct.upstream_id.to_string()); + proxy_direct_anthropic_at( + client, + route, + payload, + direct.upstream_id, + headers, + "/v1/messages", + ) + .await +} + +async fn proxy_direct_anthropic_at( + client: &reqwest::Client, + route: &GatewayRoute, + mut payload: Value, + provider_model: &str, + headers: &HeaderMap, + path: &str, +) -> Result { + payload["model"] = Value::String(provider_model.to_string()); let body = serde_json::to_vec(&payload) .into_alien_error() .context(ErrorData::Other { @@ -764,7 +1105,7 @@ async fn proxy_direct_anthropic( .upstream_base_override .as_deref() .unwrap_or("https://api.anthropic.com"); - let url = format!("{}/v1/messages", base.trim_end_matches('/')); + let url = format!("{}{}", base.trim_end_matches('/'), path); let version = headers .get("anthropic-version") .and_then(|value| value.to_str().ok()) @@ -815,7 +1156,9 @@ pub(crate) fn upstream_target( ) -> Result<(String, &'static str)> { let cloud = match route.target { GatewayTarget::Cloud(cloud) => cloud, - GatewayTarget::DirectAnthropic | GatewayTarget::DirectOpenAi => { + GatewayTarget::DirectAnthropic + | GatewayTarget::DirectDatabricks + | GatewayTarget::DirectOpenAi => { return Err(AlienError::new(ErrorData::Other { message: "direct providers do not use a cloud upstream target".to_string(), })) @@ -891,6 +1234,8 @@ fn parse_stream_flag(value: Option) -> Result { #[cfg(test)] mod tests { use std::net::Ipv4Addr; + use std::sync::mpsc; + use std::time::Duration; use aws_credential_types::provider::SharedCredentialsProvider; use aws_credential_types::Credentials; @@ -901,6 +1246,15 @@ mod tests { use super::*; use crate::creds::{AwsSigV4Cred, BearerTokenCred}; + use crate::usage::{AiTokenUsage, AiUsageEvent, AiUsageOutcome}; + + struct TestUsageObserver(mpsc::Sender); + + impl AiUsageObserver for TestUsageObserver { + fn observe(&self, event: AiUsageEvent) { + let _ = self.0.send(event); + } + } fn test_aws_cred() -> AmbientCred { let creds = Credentials::new( @@ -951,6 +1305,215 @@ mod tests { } } + fn direct_openai_route(upstream: &str) -> GatewayRoute { + let mut route = route_from_direct_openai("llm", "sk-test").expect("direct OpenAI route"); + route.upstream_base_override = Some(upstream.to_string()); + route + } + + fn direct_databricks_route(upstream: &str) -> GatewayRoute { + let mut route = route_from_direct_databricks( + "llm", + "https://dbc-123.cloud.databricks.com", + "temporary-oauth-token", + ) + .expect("direct Databricks route"); + route.upstream_base_override = Some(upstream.to_string()); + route + } + + #[tokio::test] + async fn databricks_responses_rewrites_the_public_model_id() { + let server = MockServer::start_async().await; + let upstream = server + .mock_async(|when, then| { + when.method(POST) + .path("/ai-gateway/mlflow/v1/responses") + .header("authorization", "Bearer temporary-oauth-token") + .body_contains("databricks-gpt-5-6-sol"); + then.status(200) + .header("content-type", "application/json") + .json_body(json!({"id": "response", "output": []})); + }) + .await; + let url = serve(build_router_with_availability( + vec![direct_databricks_route(&server.base_url())], + HashMap::from([( + "llm".to_string(), + HashSet::from(["gpt-5.6-sol".to_string()]), + )]), + )) + .await; + + let response = reqwest::Client::new() + .post(format!("{url}/llm/v1/responses")) + .json(&json!({"model": "gpt-5.6-sol", "input": "ping"})) + .send() + .await + .expect("proxy response"); + + assert_eq!(response.status(), 200); + upstream.assert_async().await; + } + + #[tokio::test] + async fn databricks_chat_rewrites_the_public_model_id() { + let server = MockServer::start_async().await; + let upstream = server + .mock_async(|when, then| { + when.method(POST) + .path("/ai-gateway/mlflow/v1/chat/completions") + .header("authorization", "Bearer temporary-oauth-token") + .body_contains("databricks-gemma-3-12b"); + then.status(200) + .header("content-type", "application/json") + .json_body(json!({"id": "completion", "choices": []})); + }) + .await; + let url = serve(build_router_with_availability( + vec![direct_databricks_route(&server.base_url())], + HashMap::from([( + "llm".to_string(), + HashSet::from(["gemma-3-12b".to_string()]), + )]), + )) + .await; + + let response = reqwest::Client::new() + .post(format!("{url}/llm/v1/chat/completions")) + .json(&json!({"model": "gemma-3-12b", "messages": []})) + .send() + .await + .expect("proxy response"); + + assert_eq!(response.status(), 200); + upstream.assert_async().await; + } + + #[tokio::test] + async fn databricks_messages_rewrites_claude_and_forwards_version() { + let server = MockServer::start_async().await; + let upstream = server + .mock_async(|when, then| { + when.method(POST) + .path("/ai-gateway/anthropic/v1/messages") + .header("authorization", "Bearer temporary-oauth-token") + .header("anthropic-version", "2023-06-01") + .body_contains("databricks-claude-sonnet-5"); + then.status(200) + .header("content-type", "application/json") + .json_body(json!({"id": "message", "content": []})); + }) + .await; + let url = serve(build_router_with_availability( + vec![direct_databricks_route(&server.base_url())], + HashMap::from([( + "llm".to_string(), + HashSet::from(["claude-sonnet-5".to_string()]), + )]), + )) + .await; + + let response = reqwest::Client::new() + .post(format!("{url}/llm/v1/messages")) + .header("anthropic-version", "2023-06-01") + .json(&json!({"model": "claude-sonnet-5", "max_tokens": 16, "messages": []})) + .send() + .await + .expect("proxy response"); + + assert_eq!(response.status(), 200); + upstream.assert_async().await; + } + + #[tokio::test] + async fn observes_usage_from_a_completed_response_body() { + let server = MockServer::start_async().await; + let upstream = server + .mock_async(|when, then| { + when.method(POST).path("/v1/chat/completions"); + then.status(200) + .header("content-type", "application/json") + .json_body(json!({ + "id": "response", + "usage": { + "prompt_tokens": 13, + "completion_tokens": 5, + "prompt_tokens_details": { "cached_tokens": 3 } + } + })); + }) + .await; + let (sender, receiver) = mpsc::channel(); + let observer: Arc = Arc::new(TestUsageObserver(sender)); + let url = serve(build_router_with_observer( + vec![direct_openai_route(&server.base_url())], + observer, + )) + .await; + + let response = reqwest::Client::new() + .post(format!("{url}/llm/v1/chat/completions")) + .json(&json!({ "model": "gpt-4.1-mini", "messages": [] })) + .send() + .await + .expect("proxy response"); + let body = response.bytes().await.expect("response body"); + assert!(body + .windows(b"prompt_tokens".len()) + .any(|part| part == b"prompt_tokens")); + + let event = receiver + .recv_timeout(Duration::from_secs(1)) + .expect("completed usage observation"); + assert_eq!(event.provider, AiUsageProvider::OpenAi); + assert_eq!(event.public_model, "gpt-4.1-mini"); + assert_eq!(event.client_api, AiUsageClientApi::OpenAiChatCompletions); + assert_eq!(event.outcome, AiUsageOutcome::Success); + assert_eq!(event.status, 200); + assert_eq!(event.tokens.input_tokens, Some(13)); + assert_eq!(event.tokens.output_tokens, Some(5)); + assert_eq!(event.tokens.cache_read_tokens, Some(3)); + upstream.assert_async().await; + } + + #[tokio::test] + async fn observes_sanitized_provider_failures_without_parsing_the_error_body() { + let server = MockServer::start_async().await; + server + .mock_async(|when, then| { + when.method(POST).path("/v1/chat/completions"); + then.status(429) + .header("retry-after", "2") + .json_body(json!({ "secret_provider_detail": "must not escape" })); + }) + .await; + let (sender, receiver) = mpsc::channel(); + let observer: Arc = Arc::new(TestUsageObserver(sender)); + let url = serve(build_router_with_observer( + vec![direct_openai_route(&server.base_url())], + observer, + )) + .await; + + let response = reqwest::Client::new() + .post(format!("{url}/llm/v1/chat/completions")) + .json(&json!({ "model": "gpt-4.1-mini", "messages": [] })) + .send() + .await + .expect("proxy response"); + assert_eq!(response.status(), 429); + let body = response.text().await.expect("safe error body"); + assert!(!body.contains("secret_provider_detail")); + + let event = receiver + .recv_timeout(Duration::from_secs(1)) + .expect("provider error observation"); + assert_eq!(event.outcome, AiUsageOutcome::ProviderError); + assert_eq!(event.status, 429); + assert_eq!(event.tokens, AiTokenUsage::default()); + } + #[test] fn gcp_vertex_url_regional_vs_global() { // A region prefixes the host; `global` uses the un-prefixed host. The path always @@ -1260,6 +1823,45 @@ mod tests { mock.assert_async().await; } + #[tokio::test] + async fn byo_namespace_routes_like_the_bare_model_id() { + let server = MockServer::start_async().await; + let mock = server + .mock_async(|when, then| { + when.method(POST) + .path("/openai/v1/chat/completions") + // The namespace never reaches the provider: the body carries the + // rewritten upstream id, exactly as for the bare public id. + .body_contains("openai.gpt-oss-20b-1:0") + .header_exists("authorization"); + then.status(200) + .header("content-type", "application/json") + .body(r#"{"id":"cmpl-1","choices":[{"message":{"content":"pong"}}]}"#); + }) + .await; + + let url = serve(build_router(vec![aws_route(&server.base_url())])).await; + let resp = reqwest::Client::new() + .post(format!("{url}/llm/v1/chat/completions")) + .json(&json!({"model":"byo/gpt-oss-20b","messages":[{"role":"user","content":"hi"}]})) + .send() + .await + .expect("proxy request"); + + assert_eq!(resp.status(), 200); + mock.assert_async().await; + + // The namespace is `byo/` only — any other vendor prefix stays an unknown model, + // so ids never resolve to a provider the customer didn't connect. + let resp = reqwest::Client::new() + .post(format!("{url}/llm/v1/chat/completions")) + .json(&json!({"model":"openai/gpt-oss-20b","messages":[]})) + .send() + .await + .expect("proxy request"); + assert_eq!(resp.status(), 404); + } + #[tokio::test] async fn responses_only_models_are_refused_on_chat_completions() { // A chat-completions client will ask for one of these as soon as they list, @@ -1318,7 +1920,7 @@ mod tests { .text() .await .expect("chat error body") - .contains("/llm/v1/messages")); + .contains("/v1/messages")); let openai_model_on_messages = client .post(format!("{url}/llm/v1/messages")) @@ -1331,7 +1933,21 @@ mod tests { .text() .await .expect("messages error body") - .contains("/llm/v1/chat/completions")); + .contains("/v1/chat/completions")); + + let gcp_url = serve(build_router(vec![gcp_route("global")])).await; + let gemini_on_responses = client + .post(format!("{gcp_url}/llm/v1/responses")) + .json(&json!({"model":"gemini-2.5-flash","input":"hi"})) + .send() + .await + .expect("responses request"); + assert_eq!(gemini_on_responses.status(), 400); + assert!(gemini_on_responses + .text() + .await + .expect("responses error body") + .contains("/v1/chat/completions")); upstream.assert_hits_async(0).await; } @@ -2129,7 +2745,7 @@ mod tests { } #[tokio::test] - async fn claude_over_responses_is_404() { + async fn claude_over_responses_names_the_messages_api() { // Claude on mantle is Messages-only; a Claude id over /v1/responses must be // rejected by the gateway, not forwarded. let server = MockServer::start_async().await; @@ -2140,14 +2756,11 @@ mod tests { .send() .await .expect("proxy request"); - assert_eq!(resp.status(), 404); - // The mock upstream answers unmatched requests with its own 404, so the - // status alone cannot prove the gateway rejected the model rather than - // forwarding the request — the body must carry the gateway's error code. + assert_eq!(resp.status(), 400); let body = resp.text().await.expect("response body"); assert!( - body.contains("GATEWAY_MODEL_NOT_AVAILABLE"), - "the 404 must be the gateway's own rejection, not a forwarded upstream 404: {body}" + body.contains("GATEWAY_INVALID_REQUEST") && body.contains("/v1/messages"), + "the response must name the supported Messages endpoint: {body}" ); } @@ -2195,8 +2808,8 @@ mod tests { .collect(); assert!( - ids.contains(&"gpt-5.6-sol"), - "gpt-5.6-sol must be listed: {ids:?}" + ids.contains(&"byo/gpt-5.6-sol"), + "byo/gpt-5.6-sol must be listed: {ids:?}" ); assert_eq!( responses.hits_async().await, @@ -2207,8 +2820,8 @@ mod tests { .as_array() .unwrap() .iter() - .find(|m| m["id"] == "gpt-5.6-sol") - .expect("gpt-5.6-sol entry"); + .find(|m| m["id"] == "byo/gpt-5.6-sol") + .expect("byo/gpt-5.6-sol entry"); assert_eq!(sol["displayName"], "GPT-5.6 Sol"); } @@ -2240,11 +2853,11 @@ mod tests { let data = body["data"].as_array().unwrap(); let ids: Vec<&str> = data.iter().map(|m| m["id"].as_str().unwrap()).collect(); - assert_eq!(ids, vec!["gpt-oss-20b"]); + assert_eq!(ids, vec!["byo/gpt-oss-20b"]); let gpt = data .iter() - .find(|m| m["id"] == "gpt-oss-20b") - .expect("gpt-oss-20b entry"); + .find(|m| m["id"] == "byo/gpt-oss-20b") + .expect("byo/gpt-oss-20b entry"); assert_eq!(gpt["provider"], "openai"); assert_eq!(gpt["displayName"], "GPT-OSS 20B"); assert_eq!( @@ -2267,6 +2880,55 @@ mod tests { ); } + #[tokio::test] + async fn observed_model_blockers_are_actionable_and_unknown_is_retryable() { + let server = MockServer::start_async().await; + let observed = HashMap::from([( + "llm".to_string(), + HashMap::from([ + ( + "gpt-oss-20b".to_string(), + ObservedModelAvailability::Blocked { + reason: "provider agreement required".to_string(), + }, + ), + ( + "gpt-oss-120b".to_string(), + ObservedModelAvailability::Unknown, + ), + ]), + )]); + let url = serve(build_router_with_observed_models( + vec![aws_route(&server.base_url())], + observed, + )) + .await; + let client = reqwest::Client::new(); + + let blocked = client + .post(format!("{url}/llm/v1/chat/completions")) + .json(&json!({ "model": "gpt-oss-20b", "messages": [] })) + .send() + .await + .unwrap(); + assert_eq!(blocked.status(), StatusCode::FORBIDDEN); + let blocked_body = blocked.text().await.unwrap(); + assert!(blocked_body.contains("GATEWAY_MODEL_ACCESS_REQUIRED")); + assert!(blocked_body.contains("provider agreement required")); + assert!(blocked_body.contains("\"retryable\":false")); + + let unknown = client + .post(format!("{url}/llm/v1/chat/completions")) + .json(&json!({ "model": "gpt-oss-120b", "messages": [] })) + .send() + .await + .unwrap(); + assert_eq!(unknown.status(), StatusCode::SERVICE_UNAVAILABLE); + let unknown_body = unknown.text().await.unwrap(); + assert!(unknown_body.contains("GATEWAY_MODEL_AVAILABILITY_UNKNOWN")); + assert!(unknown_body.contains("\"retryable\":true")); + } + #[tokio::test] async fn provider_error_body_never_reaches_the_caller() { const PAYLOAD_CANARY: &str = "seeded-prompt-canary-7d84b1"; diff --git a/crates/alien-ai-gateway/src/usage.rs b/crates/alien-ai-gateway/src/usage.rs index d3233ebb4..689d51dc8 100644 --- a/crates/alien-ai-gateway/src/usage.rs +++ b/crates/alien-ai-gateway/src/usage.rs @@ -29,6 +29,7 @@ pub enum AiUsageProvider { GcpVertex, AzureFoundry, Anthropic, + Databricks, #[serde(rename = "openai")] OpenAi, } diff --git a/crates/alien-ai-gateway/tests/integration.rs b/crates/alien-ai-gateway/tests/integration.rs index a9505cb1d..dd865680a 100644 --- a/crates/alien-ai-gateway/tests/integration.rs +++ b/crates/alien-ai-gateway/tests/integration.rs @@ -134,10 +134,10 @@ async fn routes_two_clouds_with_rewrite_auth_and_passthrough() { .iter() .map(|m| m["id"].as_str().unwrap()) .collect(); - assert!(aws_ids.contains(&"gpt-oss-20b")); - assert!(aws_ids.contains(&"claude-opus-4.8")); + assert!(aws_ids.contains(&"byo/gpt-oss-20b")); + assert!(aws_ids.contains(&"byo/claude-opus-4.8")); assert!( - !aws_ids.contains(&"gpt-4.1"), + !aws_ids.contains(&"byo/gpt-4.1"), "AWS catalog must not list the Azure model" ); @@ -155,9 +155,9 @@ async fn routes_two_clouds_with_rewrite_auth_and_passthrough() { .iter() .map(|m| m["id"].as_str().unwrap()) .collect(); - assert!(az_ids.contains(&"gpt-4.1")); + assert!(az_ids.contains(&"byo/gpt-4.1")); assert!( - !az_ids.contains(&"gpt-oss-20b"), + !az_ids.contains(&"byo/gpt-oss-20b"), "Azure catalog must not list the AWS model" ); } @@ -312,7 +312,7 @@ async fn direct_openai_is_fixed_to_openai_endpoints_and_injects_bearer_auth() { when.method(POST) .path("/v1/chat/completions") .header("authorization", "Bearer sk-proj-test-secret") - .body_contains("gpt-5"); + .body_contains("gpt-4.1-mini"); then.status(200) .header("content-type", "application/json") .body(r#"{"id":"chat_direct","choices":[]}"#); @@ -323,7 +323,7 @@ async fn direct_openai_is_fixed_to_openai_endpoints_and_injects_bearer_auth() { when.method(POST) .path("/v1/responses") .header("authorization", "Bearer sk-proj-test-secret") - .body_contains("gpt-5"); + .body_contains("gpt-4.1-mini"); then.status(200) .header("content-type", "application/json") .body(r#"{"id":"resp_direct","output":[]}"#); @@ -338,7 +338,7 @@ async fn direct_openai_is_fixed_to_openai_endpoints_and_injects_bearer_auth() { let chat_response = client .post(format!("{base}/direct/v1/chat/completions")) - .json(&json!({"model": "gpt-5", "messages": []})) + .json(&json!({"model": "gpt-4.1-mini", "messages": []})) .send() .await .expect("chat request"); @@ -346,7 +346,7 @@ async fn direct_openai_is_fixed_to_openai_endpoints_and_injects_bearer_auth() { let responses_response = client .post(format!("{base}/direct/v1/responses")) - .json(&json!({"model": "gpt-5", "input": "hello"})) + .json(&json!({"model": "gpt-4.1-mini", "input": "hello"})) .send() .await .expect("responses request"); @@ -354,11 +354,12 @@ async fn direct_openai_is_fixed_to_openai_endpoints_and_injects_bearer_auth() { let wrong_protocol = client .post(format!("{base}/direct/v1/messages")) - .json(&json!({"model": "gpt-5", "messages": []})) + .json(&json!({"model": "gpt-4.1-mini", "messages": []})) .send() .await .expect("wrong protocol response"); assert_eq!(wrong_protocol.status(), 400); + assert_eq!(chat.hits_async().await, 1); chat.assert_async().await; responses.assert_async().await; assert!(route_from_direct_openai("direct", "contains whitespace").is_err()); diff --git a/crates/alien-bindings-node/src/error.rs b/crates/alien-bindings-node/src/error.rs index 3ec69125c..7a64641fe 100644 --- a/crates/alien-bindings-node/src/error.rs +++ b/crates/alien-bindings-node/src/error.rs @@ -16,7 +16,8 @@ //! structured `context` can reach JS as first-class properties — the only //! channel that carries arbitrary data is the `reason` (the JS `message`). //! We therefore serialize a compact, stable JSON envelope -//! (`{ code, message, context, retryable }`) into `reason`. The TypeScript layer +//! (`{ code, message, context, retryable, internal, httpStatusCode, hint }`) into +//! `reason`. The TypeScript layer //! recovers the structured error with a single `JSON.parse(err.message)` — no //! regex, no message scraping — and re-throws a proper `AlienError`. //! @@ -34,6 +35,7 @@ use serde::Serialize; /// (snake_case, e.g. `binding_name` / `env_var`), exactly as produced by /// `AlienErrorData::context()`. #[derive(Debug, Serialize)] +#[serde(rename_all = "camelCase")] struct ErrorEnvelope<'a> { /// Machine-readable alien error code (e.g. `BINDING_NOT_CONFIGURED`). code: &'a str, @@ -44,6 +46,14 @@ struct ErrorEnvelope<'a> { context: Option<&'a serde_json::Value>, /// Whether the underlying operation is retryable. retryable: bool, + /// Whether the error contains details that must not be exposed externally. + internal: bool, + /// HTTP status associated with the failure, when available. + #[serde(skip_serializing_if = "Option::is_none")] + http_status_code: Option, + /// Optional human-facing remediation guidance. + #[serde(skip_serializing_if = "Option::is_none")] + hint: Option<&'a str>, } /// Serialize an `AlienError` into a `napi::Error` carrying the structured @@ -59,6 +69,9 @@ pub fn map_alien_error(err: AlienError) -> napi::Error { message: &err.message, context: err.context.as_ref(), retryable: err.retryable, + internal: err.internal, + http_status_code: err.http_status_code, + hint: err.hint.as_deref(), }; // Serialization of this fixed, owned shape cannot realistically fail; fall // back to the bare message so an error is never swallowed. @@ -70,9 +83,9 @@ pub fn map_alien_error(err: AlienError) -> napi::Error { /// methods on a storage binding) into a `napi::Error`. /// /// If an `AlienError` is found anywhere in the error's source chain it is passed -/// through unchanged (a provider that already produced a structured error keeps -/// its code/context). Otherwise the error is wrapped as -/// `STORAGE_OPERATION_FAILED`, naming the binding and the operation. +/// through unchanged. Provider errors are otherwise classified without copying +/// their message into the public error: those messages may contain object URLs, +/// cloud identities, or provider troubleshooting links. pub fn map_object_store_error( err: object_store::Error, binding_name: &str, @@ -81,10 +94,25 @@ pub fn map_object_store_error( if let Some(alien) = alien_error_in_chain(&err) { return map_alien_error(alien); } - let wrapped = AlienError::new(ErrorData::StorageOperationFailed { - binding_name: binding_name.to_string(), - operation: format!("{operation}: {err}"), - }); + let binding_name = binding_name.to_string(); + let operation = operation.to_string(); + let wrapped = match err { + object_store::Error::PermissionDenied { .. } + | object_store::Error::Unauthenticated { .. } => { + AlienError::new(ErrorData::StorageAccessDenied { + binding_name, + operation, + }) + } + object_store::Error::NotFound { .. } => AlienError::new(ErrorData::StorageObjectNotFound { + binding_name, + operation, + }), + _ => AlienError::new(ErrorData::StorageOperationFailed { + binding_name, + operation, + }), + }; map_alien_error(wrapped) } @@ -227,28 +255,68 @@ mod tests { assert_eq!(envelope_of(¬_retryable)["retryable"], false); } - /// A raw `object_store::Error` with no alien error in its chain is wrapped - /// as STORAGE_OPERATION_FAILED, naming the binding, and the operation - /// description is preserved. #[test] - fn map_object_store_error_wraps_as_storage_operation_failed() { + fn map_alien_error_preserves_security_and_http_metadata() { + let mut error = AlienError::new(ErrorData::RemoteAccessFailed { + operation: "authorize remote access".to_string(), + }); + error.retryable = false; + error.internal = false; + error.http_status_code = Some(401); + error.hint = Some("Create or enable a Remote Bindings API key".to_string()); + + let envelope = envelope_of(&map_alien_error(error)); + + assert_eq!(envelope["retryable"], false); + assert_eq!(envelope["internal"], false); + assert_eq!(envelope["httpStatusCode"], 401); + assert_eq!( + envelope["hint"], + "Create or enable a Remote Bindings API key" + ); + } + + /// Missing objects retain useful classification without exposing provider + /// response details or object paths. + #[test] + fn map_object_store_error_classifies_not_found_safely() { let err = object_store::Error::NotFound { path: "greeting.txt".to_string(), - source: "missing".into(), + source: "provider detail with a secret URL".into(), }; let napi_err = map_object_store_error(err, "files", "get"); let env = envelope_of(&napi_err); - assert_eq!(env["code"], "STORAGE_OPERATION_FAILED"); + assert_eq!(env["code"], "STORAGE_OBJECT_NOT_FOUND"); + assert_eq!(env["retryable"], false); + assert_eq!(env["httpStatusCode"], 404); assert_eq!(env["context"]["binding_name"], "files"); - assert!( - env["context"]["operation"] - .as_str() - .expect("operation is a string") - .starts_with("get:"), - "operation should be prefixed with the op name, got {:?}", - env["context"]["operation"] - ); + assert_eq!(env["context"]["operation"], "get"); + let serialized = env.to_string(); + assert!(!serialized.contains("greeting.txt")); + assert!(!serialized.contains("secret URL")); + } + + /// Permission failures are permanent until the customer repairs IAM and + /// must not disclose the provider identity, request URL, or object path. + #[test] + fn map_object_store_error_classifies_access_denied_safely() { + let err = object_store::Error::PermissionDenied { + path: "private/customer/object.txt".to_string(), + source: "service-account@example.test denied at https://provider.invalid".into(), + }; + let napi_err = map_object_store_error(err, "storage", "put"); + + let env = envelope_of(&napi_err); + assert_eq!(env["code"], "STORAGE_ACCESS_DENIED"); + assert_eq!(env["retryable"], false); + assert_eq!(env["httpStatusCode"], 403); + assert_eq!(env["context"]["binding_name"], "storage"); + assert_eq!(env["context"]["operation"], "put"); + let serialized = env.to_string(); + assert!(!serialized.contains("object.txt")); + assert!(!serialized.contains("service-account")); + assert!(!serialized.contains("provider.invalid")); } /// An `AlienError` boxed inside an `object_store::Error` passes through with diff --git a/crates/alien-bindings-node/src/kv.rs b/crates/alien-bindings-node/src/kv.rs index 8bab2c493..662a9f9ce 100644 --- a/crates/alien-bindings-node/src/kv.rs +++ b/crates/alien-bindings-node/src/kv.rs @@ -61,7 +61,7 @@ fn put_options( Some(other) => { return Err(napi::Error::from_reason(format!( "unsupported KV put condition '{other}'" - ))) + ))); } }; if ttl_secs.is_none() && matches!(condition, PutCondition::None) { diff --git a/crates/alien-bindings-node/src/lib.rs b/crates/alien-bindings-node/src/lib.rs index f9d2f1ee4..8254f0750 100644 --- a/crates/alien-bindings-node/src/lib.rs +++ b/crates/alien-bindings-node/src/lib.rs @@ -142,6 +142,27 @@ pub struct RemoteBindingsHandle { #[cfg(feature = "platform-sdk")] #[napi] impl RemoteBindingsHandle { + /// Select a customer's Storage deployment by Project and external ID. + #[napi(factory)] + pub async fn for_environment( + project: String, + external_id: String, + token: String, + api_base_url: Option, + ) -> napi::Result { + let bindings = RemoteBindings::for_environment( + &project, + &external_id, + &token, + api_base_url.as_deref(), + ) + .await + .map_err(map_alien_error)?; + Ok(Self { + inner: Arc::new(bindings), + }) + } + /// Discover a deployment's assigned manager and create remote bindings. #[napi(factory)] pub async fn for_deployment( diff --git a/crates/alien-bindings-node/src/queue.rs b/crates/alien-bindings-node/src/queue.rs index aa0456144..7d8959289 100644 --- a/crates/alien-bindings-node/src/queue.rs +++ b/crates/alien-bindings-node/src/queue.rs @@ -2,9 +2,9 @@ //! trait, including payload (JSON/text) marshalling. use crate::error::map_alien_error; +use alien_bindings::BoundQueue; use alien_bindings::error::ErrorData; use alien_bindings::traits::{MessagePayload, QueueMessage}; -use alien_bindings::BoundQueue; use alien_error::AlienError; use napi_derive::napi; diff --git a/crates/alien-bindings-node/src/remote_storage.rs b/crates/alien-bindings-node/src/remote_storage.rs index 22224d4c3..de74f3dcf 100644 --- a/crates/alien-bindings-node/src/remote_storage.rs +++ b/crates/alien-bindings-node/src/remote_storage.rs @@ -3,8 +3,8 @@ use crate::error::map_object_store_error; use crate::storage::{ - object_attributes_to_js, object_meta_to_js, object_store_put_options, put_result_to_js, ObjectMetaJs, StorageGetResultJs, StorageHeadResultJs, StoragePutOptionsJs, StoragePutResultJs, + object_attributes_to_js, object_meta_to_js, object_store_put_options, put_result_to_js, }; use alien_bindings::RemoteStorage; use futures::StreamExt; diff --git a/crates/alien-bindings-node/src/storage.rs b/crates/alien-bindings-node/src/storage.rs index 8cd32e1e4..f4fcf58a6 100644 --- a/crates/alien-bindings-node/src/storage.rs +++ b/crates/alien-bindings-node/src/storage.rs @@ -2,9 +2,9 @@ //! `ObjectStore` supertrait plus the inherent presigned-request methods. use crate::error::{map_alien_error, map_object_store_error}; +use alien_bindings::Storage; use alien_bindings::error::ErrorData; use alien_bindings::presigned::PresignedRequest; -use alien_bindings::Storage; use alien_error::AlienError; use futures::StreamExt; use napi::bindgen_prelude::Buffer; diff --git a/crates/alien-bindings/src/error.rs b/crates/alien-bindings/src/error.rs index 3178d4085..c340a34d9 100644 --- a/crates/alien-bindings/src/error.rs +++ b/crates/alien-bindings/src/error.rs @@ -98,6 +98,37 @@ pub enum ErrorData { operation: String, }, + /// Storage credentials are missing permission for an operation. + #[error( + code = "STORAGE_ACCESS_DENIED", + message = "Storage access denied for binding '{binding_name}' while attempting to {operation}", + retryable = "false", + internal = "false", + http_status_code = 403, + hint = "Check that the customer's Storage connection is active and its Access identity still has the required permissions." + )] + StorageAccessDenied { + /// Name of the storage binding. + binding_name: String, + /// Provider-independent operation name. + operation: String, + }, + + /// The requested object does not exist. + #[error( + code = "STORAGE_OBJECT_NOT_FOUND", + message = "Storage object not found for binding '{binding_name}' while attempting to {operation}", + retryable = "false", + internal = "false", + http_status_code = 404 + )] + StorageObjectNotFound { + /// Name of the storage binding. + binding_name: String, + /// Provider-independent operation name. + operation: String, + }, + /// Build operation failed due to provider issues. #[error( code = "BUILD_OPERATION_FAILED", diff --git a/crates/alien-bindings/src/remote.rs b/crates/alien-bindings/src/remote.rs index 913a7242c..015a336bf 100644 --- a/crates/alien-bindings/src/remote.rs +++ b/crates/alien-bindings/src/remote.rs @@ -27,8 +27,8 @@ use access::{ManagerResolverKind, RemoteBindingSource}; #[cfg(test)] use access::{ - authenticated_http_client, validate_manager_url, validate_platform_base_url, DiscoveredManager, - GeneratedManagerBindingResolver, ManagerBindingResolver, + DiscoveredManager, GeneratedManagerBindingResolver, ManagerBindingResolver, + authenticated_http_client, validate_manager_url, validate_platform_base_url, }; const INITIAL_REFRESH_RETRY_DELAY_SECONDS: i64 = 5; @@ -78,6 +78,32 @@ impl RemoteBindingsProvider { Self::discover(deployment_id, token, api_base_url, Arc::new(SystemClock)).await } + /// Selects a external environment's Storage deployment by Project and external ID and + /// creates a lazy remote provider. + pub(crate) async fn for_remote_environment( + project: &str, + external_id: &str, + token: &str, + api_base_url: Option<&str>, + ) -> Result { + let clock: Arc = Arc::new(SystemClock); + Ok(Self { + source: Arc::new( + RemoteBindingSource::discover_external_environment( + project, + external_id, + token, + api_base_url, + ManagerResolverKind::Generated, + clock.clone(), + ) + .await?, + ), + resolvers: RwLock::new(HashMap::new()), + clock, + }) + } + fn from_manager_access( deployment_id: &str, manager_url: &str, @@ -257,6 +283,27 @@ pub trait RemoteStorage: Send + Sync + fmt::Debug { } impl RemoteBindings { + /// Selects an external environment's Storage deployment by stable application external + /// ID and discovers its assigned Manager through the Platform API. + pub async fn for_environment( + project: &str, + external_id: &str, + token: &str, + api_base_url: Option<&str>, + ) -> Result { + Ok(Self { + provider: Arc::new( + RemoteBindingsProvider::for_remote_environment( + project, + external_id, + token, + api_base_url, + ) + .await?, + ), + }) + } + /// Discovers the deployment's assigned manager through the Platform API. pub async fn for_deployment( deployment_id: &str, @@ -839,7 +886,6 @@ impl RemoteStorageResolver { state.record_failure(error.clone(), now); if let Some(provider) = state.unexpired(now) { debug!( - deployment_id = %self.source.deployment_id, resource_id = %self.resource_id, "Remote binding refresh failed before lease expiry; using cached credentials" ); diff --git a/crates/alien-bindings/src/remote/access.rs b/crates/alien-bindings/src/remote/access.rs index b232ddbe3..e7dff0602 100644 --- a/crates/alien-bindings/src/remote/access.rs +++ b/crates/alien-bindings/src/remote/access.rs @@ -25,7 +25,7 @@ const MANAGER_TOKEN_REFRESH_SKEW_SECONDS: i64 = 30; const REMOTE_REQUEST_TIMEOUT: Duration = Duration::from_secs(30); pub(super) struct RemoteBindingSource { - pub(super) deployment_id: String, + access_selector: PlatformAccessSelector, platform: Option, manager: RwLock, manager_refresh_lock: Mutex<()>, @@ -34,6 +34,17 @@ pub(super) struct RemoteBindingSource { clock: Arc, } +#[derive(Debug)] +enum PlatformAccessSelector { + Deployment { + deployment_id: String, + }, + ExternalEnvironment { + project: String, + external_id: String, + }, +} + pub(super) enum ManagerResolverKind { Generated, #[cfg(test)] @@ -55,6 +66,7 @@ pub(super) struct GeneratedManagerBindingResolver; #[derive(Clone)] pub(super) struct DiscoveredManager { + pub(super) deployment_id: String, pub(super) url: reqwest::Url, pub(super) http: reqwest::Client, pub(super) refresh_at: DateTime, @@ -75,7 +87,7 @@ impl fmt::Debug for DiscoveredManager { impl fmt::Debug for RemoteBindingSource { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { f.debug_struct("RemoteBindingSource") - .field("deployment_id", &self.deployment_id) + .field("access_selector", &self.access_selector) .field("manager", &"") .finish() } @@ -111,7 +123,53 @@ impl RemoteBindingSource { .await?; Ok(Self { - deployment_id: deployment_id.to_string(), + access_selector: PlatformAccessSelector::Deployment { + deployment_id: deployment_id.to_string(), + }, + platform: Some(platform), + manager: RwLock::new(manager), + manager_refresh_lock: Mutex::new(()), + allow_insecure_manager_url, + manager_resolver, + clock, + }) + } + + pub(super) async fn discover_external_environment( + project: &str, + external_id: &str, + platform_token: &str, + api_base_url: Option<&str>, + resolver_kind: ManagerResolverKind, + clock: Arc, + ) -> Result { + let base_url = api_base_url.unwrap_or(DEFAULT_PLATFORM_API_URL); + let allow_insecure_manager_url = match api_base_url { + Some(base_url) => validate_platform_base_url(base_url)?, + None => false, + }; + let platform_http = authenticated_http_client(platform_token, "Platform API")?; + let platform = alien_platform_api::Client::new_with_client(base_url, platform_http); + let manager_resolver: Arc = match resolver_kind { + ManagerResolverKind::Generated => Arc::new(GeneratedManagerBindingResolver), + #[cfg(test)] + ManagerResolverKind::LocalFixture => Arc::new(LocalFixtureManagerBindingResolver), + }; + let manager = discover_external_environment_manager_access( + &platform, + project, + external_id, + allow_insecure_manager_url, + clock.as_ref(), + 0, + ) + .await?; + + Ok(Self { + access_selector: PlatformAccessSelector::ExternalEnvironment { + project: project.to_string(), + external_id: external_id.to_string(), + }, platform: Some(platform), manager: RwLock::new(manager), manager_refresh_lock: Mutex::new(()), @@ -140,9 +198,12 @@ impl RemoteBindingSource { let url = validate_manager_url(manager_url, allow_insecure)?; let http = authenticated_http_client(manager_token, "assigned Manager")?; Ok(Self { - deployment_id: deployment_id.to_string(), + access_selector: PlatformAccessSelector::Deployment { + deployment_id: deployment_id.to_string(), + }, platform: None, manager: RwLock::new(DiscoveredManager { + deployment_id: deployment_id.to_string(), url, http, refresh_at: expires_at, @@ -183,14 +244,32 @@ impl RemoteBindingSource { }) })?; let next_generation = self.manager.read().await.generation.wrapping_add(1); - let manager = discover_manager_access( - platform, - &self.deployment_id, - self.allow_insecure_manager_url, - self.clock.as_ref(), - next_generation, - ) - .await?; + let manager = match &self.access_selector { + PlatformAccessSelector::Deployment { deployment_id } => { + discover_manager_access( + platform, + deployment_id, + self.allow_insecure_manager_url, + self.clock.as_ref(), + next_generation, + ) + .await? + } + PlatformAccessSelector::ExternalEnvironment { + project, + external_id, + } => { + discover_external_environment_manager_access( + platform, + project, + external_id, + self.allow_insecure_manager_url, + self.clock.as_ref(), + next_generation, + ) + .await? + } + }; *self.manager.write().await = manager.clone(); Ok(manager) } @@ -222,14 +301,14 @@ impl RemoteBindingSource { let manager = self.manager_access().await?; match self .manager_resolver - .resolve(&manager, &self.deployment_id, selector) + .resolve(&manager, &manager.deployment_id, selector) .await { Ok(binding) => Ok(binding), Err(error) if self.platform.is_some() && is_auth_or_assignment_rejection(&error) => { let manager = self.refresh_after_rejection(manager.generation).await?; self.manager_resolver - .resolve(&manager, &self.deployment_id, selector) + .resolve(&manager, &manager.deployment_id, selector) .await } Err(error) => Err(error), @@ -386,6 +465,64 @@ async fn discover_manager_access( .min(MANAGER_ACCESS_MAX_AGE_SECONDS * 1_000); Ok(DiscoveredManager { + deployment_id: deployment_id.to_string(), + url: manager_url, + http, + refresh_at: requested_at + ChronoDuration::milliseconds(refresh_delay_millis), + generation, + }) +} + +async fn discover_external_environment_manager_access( + platform: &alien_platform_api::Client, + project: &str, + external_id: &str, + allow_insecure: bool, + clock: &dyn Clock, + generation: u64, +) -> Result { + let requested_at = clock.now(); + let response = platform + .create_remote_bindings_external_access() + .id_or_name(project) + .body( + alien_platform_api::types::RemoteBindingsExternalAccessRequest::builder() + .capability( + alien_platform_api::types::RemoteBindingsExternalAccessRequestCapability::Storage, + ) + .external_id(external_id), + ) + .send() + .await + .into_sdk_error() + .map_err(into_remote_error)? + .into_inner(); + + let expires_in = response.expires_in.ok_or_else(|| { + invalid_manager_access_response("external environment access response omitted its expiry") + })?; + let lifetime_millis = positive_duration_millis(expires_in).ok_or_else(|| { + invalid_manager_access_response( + "external environment access response has an invalid expiry", + ) + })?; + if response.access_token.trim().is_empty() { + return Err(invalid_manager_access_response( + "external environment access response returned an empty token", + )); + } + let manager_url = validate_manager_url(&response.manager_url, allow_insecure)?; + let http = authenticated_http_client(&response.access_token, "manager binding API")?; + let skew_millis = lifetime_millis + .saturating_div(5) + .min(MANAGER_TOKEN_REFRESH_SKEW_SECONDS * 1_000) + .max(1); + let refresh_delay_millis = lifetime_millis + .saturating_sub(skew_millis) + .min(MANAGER_ACCESS_MAX_AGE_SECONDS * 1_000); + + Ok(DiscoveredManager { + deployment_id: response.deployment_id.to_string(), url: manager_url, http, refresh_at: requested_at + ChronoDuration::milliseconds(refresh_delay_millis), diff --git a/crates/alien-bindings/src/remote/tests.rs b/crates/alien-bindings/src/remote/tests.rs index 2eb8149b0..644061970 100644 --- a/crates/alien-bindings/src/remote/tests.rs +++ b/crates/alien-bindings/src/remote/tests.rs @@ -8,8 +8,8 @@ use axum::response::{IntoResponse, Response}; use axum::routing::{get, post}; use axum::{Json, Router}; use futures::future::join_all; -use object_store::path::Path; use object_store::PutPayload; +use object_store::path::Path; use serde_json::json; use tempfile::TempDir; @@ -24,6 +24,7 @@ const DEPLOYMENT_GROUP_ID: &str = "dg_dddddddddddddddddddddddddddd"; const WORKSPACE_ID: &str = "ws_eeeeeeeeeeeeeeeeeeeeeeee"; const PLATFORM_TOKEN: &str = "platform-secret-token"; const GENERATED_MANAGER_TOKEN: &str = "generated-manager-token"; +const EXTERNAL_ID: &str = "environment_123"; #[derive(Clone)] struct ManagerAssignment { @@ -170,6 +171,26 @@ impl Fixture { ) } + async fn remote_environment_provider(&self) -> Arc { + let clock: Arc = self.clock.clone(); + Arc::new(RemoteBindingsProvider { + source: Arc::new( + RemoteBindingSource::discover_external_environment( + PROJECT_ID, + EXTERNAL_ID, + PLATFORM_TOKEN, + Some(&self.api_url), + ManagerResolverKind::LocalFixture, + clock.clone(), + ) + .await + .expect("discover external environment manager access"), + ), + resolvers: RwLock::new(HashMap::new()), + clock, + }) + } + fn set_manager_expiry(&self, expires_at: DateTime) { *self .manager @@ -239,6 +260,10 @@ async fn spawn_server(app: Router) -> String { async fn spawn_platform_server(state: PlatformFixtureState) -> String { let app = Router::new() .route("/v1/deployments/{id}", get(deployment_handler)) + .route( + "/v1/projects/{id}/remote-bindings/access", + post(customer_access_handler), + ) .route( "/v1/managers/{id}/binding-token", post(binding_token_handler), @@ -247,6 +272,55 @@ async fn spawn_platform_server(state: PlatformFixtureState) -> String { spawn_server(app).await } +async fn customer_access_handler( + State(state): State, + AxumPath(id): AxumPath, + headers: HeaderMap, + Json(body): Json, +) -> Response { + state + .requests + .lock() + .expect("platform requests lock") + .push(RecordedRequest { + method: "POST".to_string(), + path: format!("/v1/projects/{id}/remote-bindings/access"), + authorization: authorization(&headers), + body: Some(body.clone()), + }); + let expected_authorization = format!("Bearer {PLATFORM_TOKEN}"); + if authorization(&headers).as_deref() != Some(expected_authorization.as_str()) { + return StatusCode::UNAUTHORIZED.into_response(); + } + if id != PROJECT_ID || body != json!({ "externalId": EXTERNAL_ID, "capability": "storage" }) { + return StatusCode::BAD_REQUEST.into_response(); + } + let assignment = state + .assignment + .read() + .expect("manager assignment read lock") + .clone(); + let token_number = state.token_calls.fetch_add(1, Ordering::SeqCst) + 1; + let access_token = format!("manager-binding-token-{token_number}"); + *assignment + .expected_token + .write() + .expect("expected manager token write lock") = access_token.clone(); + let expires_in = *state + .token_expires_in + .read() + .expect("binding token expiry read lock"); + Json(json!({ + "deploymentId": DEPLOYMENT_ID, + "resourceId": "storage", + "accessToken": access_token, + "expiresIn": expires_in, + "tokenType": "Bearer", + "managerUrl": assignment.url, + })) + .into_response() +} + async fn spawn_manager_server(state: ManagerFixtureState) -> String { let app = Router::new() .route("/v1/bindings/resolve", post(resolve_handler)) @@ -895,9 +969,11 @@ fn remote_lease_validation_rejects_refreshable_or_overbroad_credentials() { let error = validate_aws_remote_client_config(&aws, at(3600)) .expect_err("AWS credentials expiring before the lease must fail closed"); assert_eq!(error.code, "REMOTE_ACCESS_FAILED"); - assert!(error - .message - .contains("credential expires before its lease")); + assert!( + error + .message + .contains("credential expires before its lease") + ); let aws = alien_core::AwsClientConfig { account_id: "123456789012".to_string(), diff --git a/crates/alien-bindings/src/remote/tests/access_behavior.rs b/crates/alien-bindings/src/remote/tests/access_behavior.rs index d31395a90..46a3c1694 100644 --- a/crates/alien-bindings/src/remote/tests/access_behavior.rs +++ b/crates/alien-bindings/src/remote/tests/access_behavior.rs @@ -1,5 +1,32 @@ use super::*; +#[tokio::test] +async fn customer_access_uses_external_id_and_refreshes_the_manager_lease() { + let fixture = Fixture::new(at(0), at(3600)).await; + let provider = fixture.remote_environment_provider().await; + + provider + .load_storage("storage") + .await + .expect("external environment Storage should resolve"); + fixture.clock.set(at(270)); + provider + .load_storage("archive") + .await + .expect("external environment manager access should refresh"); + + let requests = fixture + .platform_requests + .lock() + .expect("platform requests lock"); + assert_eq!(requests.len(), 2); + assert!(requests.iter().all(|request| { + request.path == format!("/v1/projects/{PROJECT_ID}/remote-bindings/access") + && request.body == Some(json!({ "externalId": EXTERNAL_ID, "capability": "storage" })) + })); + assert_eq!(fixture.token_calls.load(Ordering::SeqCst), 2); +} + #[tokio::test] async fn manager_access_token_refreshes_with_skew_without_forwarding_platform_token() { let fixture = Fixture::new(at(0), at(3600)).await; diff --git a/crates/alien-bindings/src/remote/tests/manager_contract.rs b/crates/alien-bindings/src/remote/tests/manager_contract.rs index 876bf3174..88d3dd360 100644 --- a/crates/alien-bindings/src/remote/tests/manager_contract.rs +++ b/crates/alien-bindings/src/remote/tests/manager_contract.rs @@ -89,6 +89,7 @@ async fn generated_manager_adapter_decodes_cloud_lease_and_structured_error() { let adapter = GeneratedManagerBindingResolver; let manager_url = reqwest::Url::parse(&manager_url).expect("valid manager URL"); let manager = DiscoveredManager { + deployment_id: DEPLOYMENT_ID.to_string(), url: manager_url, http: authenticated_http_client(GENERATED_MANAGER_TOKEN, "generated manager fixture") .expect("build generated contract client"), diff --git a/crates/alien-build/src/toolchain/rust.rs b/crates/alien-build/src/toolchain/rust.rs index 950f77ca7..c58904279 100644 --- a/crates/alien-build/src/toolchain/rust.rs +++ b/crates/alien-build/src/toolchain/rust.rs @@ -117,7 +117,7 @@ impl RustToolchain { async fn resolve_build_strategy(&self, target: BinaryTarget) -> Result { let host = BuildHost::current(); if target == BinaryTarget::DarwinArm64 - && !matches!(host, BuildHost::DarwinArm64) + && !matches!(host, BuildHost::DarwinArm64 | BuildHost::DarwinX64) { return Err(AlienError::new(ErrorData::ImageBuildFailed { resource_name: self.binary_name.clone(), diff --git a/crates/alien-cli/src/commands/onboard.rs b/crates/alien-cli/src/commands/onboard.rs index 4ebfea6f3..8710352bb 100644 --- a/crates/alien-cli/src/commands/onboard.rs +++ b/crates/alien-cli/src/commands/onboard.rs @@ -1,7 +1,7 @@ use crate::error::{ErrorData, Result}; use crate::execution_context::ExecutionMode; use crate::output::{can_prompt, print_json, prompt_text}; -use crate::ui::{accent, command, contextual_heading, dim_label, success_line, FixedSteps}; +use crate::ui::{FixedSteps, accent, command, contextual_heading, dim_label, success_line}; use alien_core::{Platform, Stack, StackInputDefinition, StackInputKind, StackInputProvider}; use alien_error::{AlienError, Context, IntoAlienError}; use clap::{Parser, ValueEnum}; @@ -213,10 +213,10 @@ async fn onboard_platform(args: OnboardArgs, ctx: ExecutionMode, name: String) - .iter() .map(|item| alien_platform_api::types::DeploymentSetupItemSelection { item: match item { - OnboardSetupItem::Application => alien_platform_api::types::DeploymentSetupItemSelectionItem::AlienStack, + OnboardSetupItem::Application => alien_platform_api::types::DeploymentSetupItemSelectionItem::Deployment, OnboardSetupItem::Models => alien_platform_api::types::DeploymentSetupItemSelectionItem::Models, OnboardSetupItem::Keys => alien_platform_api::types::DeploymentSetupItemSelectionItem::Keys, - OnboardSetupItem::Storage => alien_platform_api::types::DeploymentSetupItemSelectionItem::Storage, + OnboardSetupItem::Storage => alien_platform_api::types::DeploymentSetupItemSelectionItem::Bucket, OnboardSetupItem::Registry => alien_platform_api::types::DeploymentSetupItemSelectionItem::Registry, }, release_channel: None, @@ -247,7 +247,9 @@ async fn onboard_platform(args: OnboardArgs, ctx: ExecutionMode, name: String) - "name": name, "externalId": external_id, "deploymentLink": deployment_link, - "token": response.token, + "setupItems": args.setup_items.iter().map(onboard_setup_item_name).collect::>(), + "readiness": "setup_pending", + "nextAction": "Share deploymentLink with the customer's admin, then run `alien deployments ls` to check readiness.", "maxDeployments": args.max_deployments, "platforms": selected_platforms.iter().map(|platform| platform.as_str()).collect::>(), "subdomain": public_subdomain, @@ -278,6 +280,16 @@ async fn onboard_platform(args: OnboardArgs, ctx: ExecutionMode, name: String) - Ok(()) } +fn onboard_setup_item_name(item: &OnboardSetupItem) -> &'static str { + match item { + OnboardSetupItem::Application => "application", + OnboardSetupItem::Models => "models", + OnboardSetupItem::Keys => "keys", + OnboardSetupItem::Storage => "storage", + OnboardSetupItem::Registry => "registry", + } +} + #[cfg(feature = "platform")] struct ActiveReleaseStackInputs { supported_platforms: Vec, @@ -296,8 +308,8 @@ async fn fetch_available_setup( workspace_query: Option<&str>, project_id: &str, ) -> Result { - use alien_platform_api::types::DeploymentLinkSetupResponseSetupItemsItem; use alien_platform_api::SdkResultExt; + use alien_platform_api::types::DeploymentLinkSetupResponseSetupItemsItem; let mut request = client .get_project_deployment_link_setup() @@ -318,10 +330,10 @@ async fn fetch_available_setup( .setup_items .iter() .map(|item| match item { - DeploymentLinkSetupResponseSetupItemsItem::AlienStack => OnboardSetupItem::Application, + DeploymentLinkSetupResponseSetupItemsItem::Deployment => OnboardSetupItem::Application, DeploymentLinkSetupResponseSetupItemsItem::Models => OnboardSetupItem::Models, DeploymentLinkSetupResponseSetupItemsItem::Keys => OnboardSetupItem::Keys, - DeploymentLinkSetupResponseSetupItemsItem::Storage => OnboardSetupItem::Storage, + DeploymentLinkSetupResponseSetupItemsItem::Bucket => OnboardSetupItem::Storage, DeploymentLinkSetupResponseSetupItemsItem::Registry => OnboardSetupItem::Registry, }) .collect(); @@ -360,7 +372,9 @@ fn validate_setup_items( field: "setup-items".to_string(), message: format!( "{} is not configured for this Project. Configure it in the Dashboard before creating the setup link.", - item.to_possible_value().expect("ValueEnum variants have names").get_name() + item.to_possible_value() + .expect("ValueEnum variants have names") + .get_name() ), })); } @@ -997,8 +1011,8 @@ fn platform_setup_environment_variables( /// Standalone/Dev mode: use manager API, show CLI command. async fn onboard_standalone(args: OnboardArgs, ctx: ExecutionMode, name: String) -> Result<()> { - use alien_manager_api::types::CreateDeploymentGroupRequest; use alien_manager_api::SdkResultExt; + use alien_manager_api::types::CreateDeploymentGroupRequest; if !args.env_vars.is_empty() || !args.secret_vars.is_empty() { return Err(AlienError::new(ErrorData::ConfigurationError { @@ -1224,6 +1238,23 @@ mod tests { ); } + #[test] + fn setup_item_names_are_stable_for_json_output() { + assert_eq!( + [ + OnboardSetupItem::Application, + OnboardSetupItem::Models, + OnboardSetupItem::Keys, + OnboardSetupItem::Storage, + OnboardSetupItem::Registry, + ] + .iter() + .map(onboard_setup_item_name) + .collect::>(), + ["application", "models", "keys", "storage", "registry"] + ); + } + #[test] fn customer_names_become_safe_internal_environment_names() { assert_eq!(customer_environment_name("Acme Corp"), "acme-corp"); @@ -1289,9 +1320,10 @@ mod tests { .expect_err("missing required input should fail"); assert!(err.to_string().contains("Missing developer input")); - assert!(err - .to_string() - .contains("--secret-input controlPlaneApiKey=...")); + assert!( + err.to_string() + .contains("--secret-input controlPlaneApiKey=...") + ); } #[test] @@ -1332,9 +1364,10 @@ mod tests { ) .expect_err("missing required local input should fail"); - assert!(err - .to_string() - .contains("--secret-input tailscaleAuthKey=...")); + assert!( + err.to_string() + .contains("--secret-input tailscaleAuthKey=...") + ); assert!(err.to_string().contains("--platforms aws")); } diff --git a/crates/alien-cli/src/commands/platform/login.rs b/crates/alien-cli/src/commands/platform/login.rs index 50beed5f6..93b08ee5f 100644 --- a/crates/alien-cli/src/commands/platform/login.rs +++ b/crates/alien-cli/src/commands/platform/login.rs @@ -33,10 +33,14 @@ pub async fn login_task(_args: LoginArgs, ctx: ExecutionMode) -> Result<()> { println!("{}", contextual_heading("Logged in to", &workspace, &[])); println!("{}", success_line("Workspace ready.")); + println!("{}", dim_label("Next")); + println!(" {} Link a project directory", command("alien link")); println!( - "{} run {} in a project directory or {}.", - dim_label("Next"), - command("alien link"), + " {} Set up customer models", + command("alien --project onboard --setup-items models") + ); + println!( + " {} Publish an application", command("alien release --project ") ); diff --git a/crates/alien-cli/src/project_link.rs b/crates/alien-cli/src/project_link.rs index 789ac08e2..cd2d95e4c 100644 --- a/crates/alien-cli/src/project_link.rs +++ b/crates/alien-cli/src/project_link.rs @@ -6,8 +6,8 @@ use crate::git_utils; use crate::interaction::InteractionMode; use crate::output::{can_prompt, prompt_confirm, prompt_select, prompt_text}; use alien_error::{AlienError, Context, ContextError, IntoAlienError}; -use alien_platform_api::types; use alien_platform_api::SdkResultExt; +use alien_platform_api::types; use serde::{Deserialize, Serialize}; use std::fs; use std::path::Path; @@ -349,7 +349,7 @@ pub async fn create_new_project( .transpose()?, deployment_portal_appearance: None, packages_config: None, - customer_connections: None, + project_capabilities: None, default_managers: None, deployment_count: Some(0.0), latest_release: None.into(), diff --git a/crates/alien-cloudformation/src/emitters/aws/ai.rs b/crates/alien-cloudformation/src/emitters/aws/ai.rs index 879a4e45c..a03f77938 100644 --- a/crates/alien-cloudformation/src/emitters/aws/ai.rs +++ b/crates/alien-cloudformation/src/emitters/aws/ai.rs @@ -22,7 +22,7 @@ use crate::{ }; use alien_core::{ import::EmitContext, Ai, ErrorData, PermissionProfile, PermissionSetReference, RemoteBindings, - Result, + RemoteStackManagement, Result, }; use alien_error::{AlienError, Context, IntoAlienError}; use alien_permissions::{generators::AwsCloudFormationPermissionsGenerator, BindingTarget}; @@ -130,6 +130,15 @@ fn ai_permission_owners(ctx: &EmitContext<'_>) -> Vec<(String, Vec) -> Vec<(String, Vec Vec { + profile + .0 + .get("*") + .into_iter() + .flatten() + .filter(|permission_ref| permission_ref.id().starts_with("ai/")) + .cloned() + .collect() +} + +fn remote_stack_management_role_id(ctx: &EmitContext<'_>) -> Option { + ctx.stack.resources().find_map(|(id, entry)| { + (entry.config.resource_type() == RemoteStackManagement::RESOURCE_TYPE) + .then(|| { + ctx.name_for(id).map(|logical_id| { + if logical_id == "Management" { + "ManagementRole".to_string() + } else { + format!("{logical_id}Role") + } + }) + }) + .flatten() + }) +} + fn remote_bindings_role_id(ctx: &EmitContext<'_>) -> Option { ctx.stack.resources().find_map(|(id, entry)| { (entry.config.resource_type() == RemoteBindings::RESOURCE_TYPE) diff --git a/crates/alien-cloudformation/src/emitters/aws/key.rs b/crates/alien-cloudformation/src/emitters/aws/key.rs index 69b7d46f8..4ec773bcc 100644 --- a/crates/alien-cloudformation/src/emitters/aws/key.rs +++ b/crates/alien-cloudformation/src/emitters/aws/key.rs @@ -3,7 +3,9 @@ use crate::{ emitters::aws::helpers::{required_logical_id, resource_config, tags}, template::{CfExpression, CfResource}, }; -use alien_core::{import::EmitContext, ErrorData, Key, RemoteBindings, Result}; +use alien_core::{ + import::EmitContext, ErrorData, Key, RemoteBindings, RemoteStackManagement, Result, +}; use alien_error::AlienError; #[derive(Debug, Clone, Copy, Default)] @@ -29,6 +31,9 @@ impl CfEmitter for AwsKeyEmitter { key.update_replace_policy = Some("Retain".to_string()); let mut resources = vec![key]; + if management_has_key_permission(ctx) { + resources.push(management_metadata_policy(ctx, logical_id)?); + } if alien_core::remote_bindings::remote_binding_for_entry(ctx.resource).is_some() { resources.push(remote_access_policy(ctx, logical_id)?); } @@ -53,6 +58,73 @@ impl CfEmitter for AwsKeyEmitter { } } +fn management_has_key_permission(ctx: &EmitContext<'_>) -> bool { + ctx.stack + .management() + .profile() + .and_then(|profile| profile.0.get(ctx.resource_id)) + .is_some_and(|refs| { + refs.iter() + .any(|reference| reference.id() == "key/management") + }) +} + +fn management_role_id(ctx: &EmitContext<'_>) -> Option { + ctx.stack.resources().find_map(|(id, entry)| { + (entry.config.resource_type() == RemoteStackManagement::RESOURCE_TYPE) + .then(|| { + ctx.name_for(id).map(|logical_id| { + if logical_id == "Management" { + "ManagementRole".to_string() + } else { + format!("{logical_id}Role") + } + }) + }) + .flatten() + }) +} + +fn management_metadata_policy(ctx: &EmitContext<'_>, key_id: &str) -> Result { + let role_id = management_role_id(ctx).ok_or_else(|| { + AlienError::new(ErrorData::GenericError { + message: "managed Key has no Management identity".to_string(), + }) + })?; + let mut policy = CfResource::new( + format!("{key_id}ManagementMetadataPolicy"), + "AWS::IAM::Policy".to_string(), + ); + policy.properties.insert( + "PolicyName".to_string(), + CfExpression::sub(format!( + "${{AWS::StackName}}-{}-key-metadata", + ctx.resource_id + )), + ); + policy.properties.insert( + "Roles".to_string(), + CfExpression::list([CfExpression::ref_(&role_id)]), + ); + policy.properties.insert( + "PolicyDocument".to_string(), + CfExpression::object([ + ("Version", CfExpression::from("2012-10-17")), + ( + "Statement", + CfExpression::list([CfExpression::object([ + ("Effect", CfExpression::from("Allow")), + ("Action", CfExpression::from("kms:DescribeKey")), + ("Resource", CfExpression::get_att(key_id, "Arn")), + ])]), + ), + ]), + ); + policy.depends_on.push(role_id); + policy.depends_on.push(key_id.to_string()); + Ok(policy) +} + fn root_key_policy() -> CfExpression { CfExpression::object([ ("Version", CfExpression::from("2012-10-17")), diff --git a/crates/alien-cloudformation/tests/generator/aws_ai_tests.rs b/crates/alien-cloudformation/tests/generator/aws_ai_tests.rs index c996f529a..7aa61ea8a 100644 --- a/crates/alien-cloudformation/tests/generator/aws_ai_tests.rs +++ b/crates/alien-cloudformation/tests/generator/aws_ai_tests.rs @@ -3,7 +3,8 @@ use super::helpers::render_built_ins; use alien_cloudformation::RegistrationMode; use alien_core::{ - Ai, PermissionProfile, RemoteBindings, ResourceLifecycle, ServiceAccount, Stack, StackSettings, + Ai, PermissionProfile, PermissionSetReference, RemoteBindings, RemoteStackManagement, + ResourceLifecycle, ServiceAccount, Stack, StackSettings, }; #[test] @@ -86,16 +87,23 @@ fn aws_ai_without_permissions_emits_no_iam_policy() { #[test] fn aws_remote_ai_permissions_attach_to_access_role() { - let stack = Stack::new("remote-ai".to_string()) + let mut stack = Stack::new("remote-ai".to_string()) .add_with_remote_access( Ai::new("models".to_string()).build(), ResourceLifecycle::Frozen, ) + .add( + RemoteStackManagement::new("management".to_string()).build(), + ResourceLifecycle::Frozen, + ) .add( RemoteBindings::new("access".to_string()).build(), ResourceLifecycle::Frozen, ) .build(); + stack.permissions.management = alien_core::ManagementPermissions::Extend( + PermissionProfile::new().global([PermissionSetReference::from_name("ai/heartbeat")]), + ); let yaml = render_built_ins( &stack, @@ -105,4 +113,12 @@ fn aws_remote_ai_permissions_attach_to_access_role() { ); assert!(yaml.contains("bedrock:InvokeModel")); assert!(yaml.contains("AccessRole")); + assert!(yaml.contains("ManagementRole")); + assert!(yaml.contains("bedrock:GetFoundationModelAvailability")); + + let management_policy = yaml + .split("ModelsManagementRoleAiPermission") + .nth(1) + .expect("management AI policy"); + assert!(management_policy.contains("bedrock:GetFoundationModelAvailability")); } diff --git a/crates/alien-cloudformation/tests/generator/aws_data_layer_tests.rs b/crates/alien-cloudformation/tests/generator/aws_data_layer_tests.rs index fccbab71d..1ce1cafe6 100644 --- a/crates/alien-cloudformation/tests/generator/aws_data_layer_tests.rs +++ b/crates/alien-cloudformation/tests/generator/aws_data_layer_tests.rs @@ -3,9 +3,9 @@ use super::helpers::{custom_resource_registration, render_built_ins, render_built_ins_template}; use alien_cloudformation::RegistrationMode; use alien_core::{ - Key, Kv, LifecycleRule, PermissionProfile, Queue, RemoteBindings, RemoteStackManagement, - ResourceLifecycle, ResourceRef, ServiceAccount, Stack, StackSettings, Storage, Vault, Worker, - WorkerCode, WorkerTrigger, + Key, Kv, LifecycleRule, PermissionProfile, PermissionSetReference, Queue, RemoteBindings, + RemoteStackManagement, ResourceLifecycle, ResourceRef, ServiceAccount, Stack, StackSettings, + Storage, Vault, Worker, WorkerCode, WorkerTrigger, }; #[test] @@ -15,11 +15,20 @@ fn aws_key_template_is_valid_and_retained() { Key::new("customer-key".to_string()).build(), ResourceLifecycle::Frozen, ) + .add( + RemoteStackManagement::new("management".to_string()).build(), + ResourceLifecycle::Frozen, + ) .add( RemoteBindings::new("access".to_string()).build(), ResourceLifecycle::Frozen, ) .build(); + stack.permissions.management = + alien_core::ManagementPermissions::Extend(PermissionProfile::new().resource( + "customer-key", + [PermissionSetReference::from_name("key/management")], + )); stack .resources .get_mut("customer-key") @@ -44,6 +53,39 @@ fn aws_key_template_is_valid_and_retained() { assert_eq!(key.update_replace_policy.as_deref(), Some("Retain")); assert!(yaml.contains("kms:Encrypt")); assert!(yaml.contains("kms:Decrypt")); + assert!(yaml.contains("kms:DescribeKey")); + + let metadata_policy = template + .resources + .values() + .find(|resource| resource.logical_id == "CustomerKeyManagementMetadataPolicy") + .expect("key metadata policy should render"); + let metadata_policy_json = + serde_json::to_value(&metadata_policy.properties).expect("serialize metadata policy"); + assert_eq!( + metadata_policy_json["Roles"], + serde_json::json!([{ "Ref": "ManagementRole" }]) + ); + assert_eq!( + metadata_policy_json["PolicyDocument"]["Statement"][0]["Action"], + "kms:DescribeKey" + ); + assert_eq!( + metadata_policy_json["PolicyDocument"]["Statement"][0]["Resource"], + serde_json::json!({ "Fn::GetAtt": ["CustomerKey", "Arn"] }) + ); + + let cryptography_policy = template + .resources + .values() + .find(|resource| resource.logical_id == "CustomerKeyRemoteCryptographyPolicy") + .expect("key cryptography policy should render"); + let cryptography_policy_json = serde_json::to_value(&cryptography_policy.properties) + .expect("serialize cryptography policy"); + assert_eq!( + cryptography_policy_json["Roles"], + serde_json::json!([{ "Ref": "AccessRole" }]) + ); } #[test] diff --git a/crates/alien-core/src/ai_catalog.rs b/crates/alien-core/src/ai_catalog.rs index 259ee4a36..62e5e8bfe 100644 --- a/crates/alien-core/src/ai_catalog.rs +++ b/crates/alien-core/src/ai_catalog.rs @@ -71,6 +71,26 @@ pub struct DirectAnthropicModel { pub upstream_id: &'static str, } +/// One OpenAI model qualified through the Gateway's direct-provider route. +/// +/// OpenAI's account model listing also contains embeddings, image, audio, +/// moderation, realtime, and other APIs. Keep this list explicit so +/// `GET /v1/models` never claims that an observed provider model is callable +/// through Chat Completions or Responses when it is not. +#[derive(Debug, Clone, Copy)] +pub struct DirectOpenAiModel { + pub public_id: &'static str, + pub client_apis: &'static [ClientApi], +} + +/// One Databricks-hosted model service qualified through Unity AI Gateway. +#[derive(Debug, Clone, Copy)] +pub struct DirectDatabricksModel { + pub public_id: &'static str, + pub upstream_id: &'static str, + pub client_apis: &'static [ClientApi], +} + impl DirectAnthropicModel { pub fn display_name(&self) -> &'static str { resolve(self.public_id) @@ -131,7 +151,6 @@ impl CatalogModel { "deepseek-v3.2" => "DeepSeek V3.2", "qwen3-32b" => "Qwen3 32B", "qwen3-coder-30b" => "Qwen3 Coder 30B", - "qwen3-coder-next" => "Qwen3 Coder Next", "qwen3-next-80b" => "Qwen3 Next 80B", "qwen3-vl-235b" => "Qwen3 VL 235B", "mistral-large-3" => "Mistral Large 3", @@ -161,14 +180,10 @@ impl CatalogModel { "claude-opus-4.7" => "Claude Opus 4.7", "claude-opus-4.6" => "Claude Opus 4.6", "claude-opus-4.5" => "Claude Opus 4.5", - "claude-opus-4.1" => "Claude Opus 4.1", "claude-sonnet-4.6" => "Claude Sonnet 4.6", "claude-sonnet-4.5" => "Claude Sonnet 4.5", "claude-haiku-4.5" => "Claude Haiku 4.5", "claude-fable-5" => "Claude Fable 5", - "claude-mythos-5" => "Claude Mythos 5", - "claude-sonnet-4" => "Claude Sonnet 4", - "claude-3-haiku" => "Claude 3 Haiku", "gemini-2.5-pro" => "Gemini 2.5 Pro", "gemini-2.5-flash" => "Gemini 2.5 Flash", "gemini-2.5-flash-lite" => "Gemini 2.5 Flash Lite", @@ -292,13 +307,6 @@ static CATALOG: &[CatalogModel] = &[ client_apis: &[ClientApi::OpenAiChatCompletions], provider_api: ProviderApi::OpenAi, }, - CatalogModel { - public_id: "qwen3-coder-next", - cloud: Platform::Aws, - upstream_id: "qwen.qwen3-coder-next", - client_apis: &[ClientApi::OpenAiChatCompletions], - provider_api: ProviderApi::OpenAi, - }, CatalogModel { public_id: "qwen3-next-80b", cloud: Platform::Aws, @@ -508,13 +516,6 @@ static CATALOG: &[CatalogModel] = &[ client_apis: &[ClientApi::AnthropicMessages], provider_api: ProviderApi::Anthropic, }, - CatalogModel { - public_id: "claude-opus-4.1", - cloud: Platform::Aws, - upstream_id: "anthropic.claude-opus-4-1-20250805-v1:0", - client_apis: &[ClientApi::AnthropicMessages], - provider_api: ProviderApi::Anthropic, - }, CatalogModel { public_id: "claude-sonnet-4.6", cloud: Platform::Aws, @@ -543,27 +544,6 @@ static CATALOG: &[CatalogModel] = &[ client_apis: &[ClientApi::AnthropicMessages], provider_api: ProviderApi::Anthropic, }, - CatalogModel { - public_id: "claude-mythos-5", - cloud: Platform::Aws, - upstream_id: "anthropic.claude-mythos-5", - client_apis: &[ClientApi::AnthropicMessages], - provider_api: ProviderApi::Anthropic, - }, - CatalogModel { - public_id: "claude-sonnet-4", - cloud: Platform::Aws, - upstream_id: "anthropic.claude-sonnet-4-20250514-v1:0", - client_apis: &[ClientApi::AnthropicMessages], - provider_api: ProviderApi::Anthropic, - }, - CatalogModel { - public_id: "claude-3-haiku", - cloud: Platform::Aws, - upstream_id: "anthropic.claude-3-haiku-20240307-v1:0", - client_apis: &[ClientApi::AnthropicMessages], - provider_api: ProviderApi::Anthropic, - }, // GCP Vertex, Gemini. The OpenAI-compatible Vertex endpoint expects the `google/` prefix. // The 2.5 family serves in-region; the 3.x models serve on the `global` location. CatalogModel { @@ -605,6 +585,13 @@ static CATALOG: &[CatalogModel] = &[ // in the `:rawPredict` URL path (`publishers/anthropic/models/`); models past // Sonnet 4.5 carry no date suffix, older ones keep an `@` version. Needs // Claude model access granted on the deployment's project. + CatalogModel { + public_id: "claude-opus-5", + cloud: Platform::Gcp, + upstream_id: "claude-opus-5", + client_apis: &[ClientApi::AnthropicMessages], + provider_api: ProviderApi::Anthropic, + }, CatalogModel { public_id: "claude-sonnet-5", cloud: Platform::Gcp, @@ -699,6 +686,13 @@ static CATALOG: &[CatalogModel] = &[ // perform, so Claude deployments are created in the Foundry portal. These stay // in the catalog as the deployment-name mapping. The resource heartbeat lists // actual deployments, so the gateway omits Claude until that deployment exists. + CatalogModel { + public_id: "claude-opus-5", + cloud: Platform::Azure, + upstream_id: "claude-opus-5", + client_apis: &[ClientApi::AnthropicMessages], + provider_api: ProviderApi::Anthropic, + }, CatalogModel { public_id: "claude-sonnet-5", cloud: Platform::Azure, @@ -767,7 +761,7 @@ static CATALOG: &[CatalogModel] = &[ /// Changes whenever public model ids or their supported client APIs change. /// Heartbeat consumers use this to distinguish an old observation from a /// current catalog without duplicating the catalog in durable state. -pub const AI_CATALOG_REVISION: &str = "2026-08-05.1"; +pub const AI_CATALOG_REVISION: &str = "2026-08-09.1"; /// Azure deployments to create at provision time: (deployment name, model name, /// model version). The deployment name is the catalog `upstream_id`. The version @@ -805,10 +799,6 @@ static DIRECT_ANTHROPIC_MODELS: &[DirectAnthropicModel] = &[ public_id: "claude-opus-4.5", upstream_id: "claude-opus-4-5", }, - DirectAnthropicModel { - public_id: "claude-opus-4.1", - upstream_id: "claude-opus-4-1-20250805", - }, DirectAnthropicModel { public_id: "claude-sonnet-4.6", upstream_id: "claude-sonnet-4-6", @@ -825,17 +815,198 @@ static DIRECT_ANTHROPIC_MODELS: &[DirectAnthropicModel] = &[ public_id: "claude-fable-5", upstream_id: "claude-fable-5", }, - DirectAnthropicModel { - public_id: "claude-mythos-5", - upstream_id: "claude-mythos-5", +]; + +/// Direct OpenAI models qualified end to end through the Gateway. +/// +/// Add a model only after exercising every client API listed for it against a +/// real provider account. Provider discovery is then used as the account-level +/// availability filter; discovery alone is not sufficient to expose a model. +/// +/// Every entry below was exercised live (2026-08-09) against both +/// `/v1/chat/completions` and `/v1/responses`. Note the GPT-5 family answers +/// both APIs here, unlike on bedrock-mantle where it is Responses-only. +static DIRECT_OPENAI_MODELS: &[DirectOpenAiModel] = &[ + DirectOpenAiModel { + public_id: "gpt-5.6-sol", + client_apis: &[ClientApi::OpenAiChatCompletions, ClientApi::OpenAiResponses], }, - DirectAnthropicModel { - public_id: "claude-sonnet-4", - upstream_id: "claude-sonnet-4-20250514", + DirectOpenAiModel { + public_id: "gpt-5.6-terra", + client_apis: &[ClientApi::OpenAiChatCompletions, ClientApi::OpenAiResponses], }, - DirectAnthropicModel { - public_id: "claude-3-haiku", - upstream_id: "claude-3-haiku-20240307", + DirectOpenAiModel { + public_id: "gpt-5.6-luna", + client_apis: &[ClientApi::OpenAiChatCompletions, ClientApi::OpenAiResponses], + }, + DirectOpenAiModel { + public_id: "gpt-5.5", + client_apis: &[ClientApi::OpenAiChatCompletions, ClientApi::OpenAiResponses], + }, + DirectOpenAiModel { + public_id: "gpt-5.4", + client_apis: &[ClientApi::OpenAiChatCompletions, ClientApi::OpenAiResponses], + }, + DirectOpenAiModel { + public_id: "gpt-4.1", + client_apis: &[ClientApi::OpenAiChatCompletions, ClientApi::OpenAiResponses], + }, + DirectOpenAiModel { + public_id: "gpt-4.1-mini", + client_apis: &[ClientApi::OpenAiChatCompletions, ClientApi::OpenAiResponses], + }, + DirectOpenAiModel { + public_id: "gpt-4o-mini", + client_apis: &[ClientApi::OpenAiChatCompletions, ClientApi::OpenAiResponses], + }, +]; + +/// Generally available Databricks-hosted text-generation models that have an +/// exact Alien public-model ID, reviewed against Databricks' supported-models +/// catalog on 2026-08-10. Preview, deprecated, embedding, and image-generation +/// models are intentionally excluded. Credential verification is separate from +/// model access: Databricks can accept OAuth while a service is disabled by quota. +/// Source: +static DIRECT_DATABRICKS_MODELS: &[DirectDatabricksModel] = &[ + DirectDatabricksModel { + public_id: "gpt-5.6-sol", + upstream_id: "databricks-gpt-5-6-sol", + client_apis: &[ClientApi::OpenAiChatCompletions, ClientApi::OpenAiResponses], + }, + DirectDatabricksModel { + public_id: "gpt-5.6-terra", + upstream_id: "databricks-gpt-5-6-terra", + client_apis: &[ClientApi::OpenAiChatCompletions, ClientApi::OpenAiResponses], + }, + DirectDatabricksModel { + public_id: "gpt-5.6-luna", + upstream_id: "databricks-gpt-5-6-luna", + client_apis: &[ClientApi::OpenAiChatCompletions, ClientApi::OpenAiResponses], + }, + DirectDatabricksModel { + public_id: "gpt-5.5", + upstream_id: "databricks-gpt-5-5", + client_apis: &[ClientApi::OpenAiResponses], + }, + DirectDatabricksModel { + public_id: "gpt-5.4", + upstream_id: "databricks-gpt-5-4", + client_apis: &[ClientApi::OpenAiChatCompletions, ClientApi::OpenAiResponses], + }, + DirectDatabricksModel { + public_id: "claude-haiku-4.5", + upstream_id: "databricks-claude-haiku-4-5", + client_apis: &[ + ClientApi::OpenAiChatCompletions, + ClientApi::OpenAiResponses, + ClientApi::AnthropicMessages, + ], + }, + DirectDatabricksModel { + public_id: "claude-opus-5", + upstream_id: "databricks-claude-opus-5", + client_apis: &[ + ClientApi::OpenAiChatCompletions, + ClientApi::OpenAiResponses, + ClientApi::AnthropicMessages, + ], + }, + DirectDatabricksModel { + public_id: "claude-sonnet-5", + upstream_id: "databricks-claude-sonnet-5", + client_apis: &[ + ClientApi::OpenAiChatCompletions, + ClientApi::OpenAiResponses, + ClientApi::AnthropicMessages, + ], + }, + DirectDatabricksModel { + public_id: "claude-sonnet-4.6", + upstream_id: "databricks-claude-sonnet-4-6", + client_apis: &[ + ClientApi::OpenAiChatCompletions, + ClientApi::OpenAiResponses, + ClientApi::AnthropicMessages, + ], + }, + DirectDatabricksModel { + public_id: "claude-sonnet-4.5", + upstream_id: "databricks-claude-sonnet-4-5", + client_apis: &[ + ClientApi::OpenAiChatCompletions, + ClientApi::OpenAiResponses, + ClientApi::AnthropicMessages, + ], + }, + DirectDatabricksModel { + public_id: "claude-fable-5", + upstream_id: "databricks-claude-fable-5", + client_apis: &[ + ClientApi::OpenAiChatCompletions, + ClientApi::OpenAiResponses, + ClientApi::AnthropicMessages, + ], + }, + DirectDatabricksModel { + public_id: "claude-opus-4.8", + upstream_id: "databricks-claude-opus-4-8", + client_apis: &[ + ClientApi::OpenAiChatCompletions, + ClientApi::OpenAiResponses, + ClientApi::AnthropicMessages, + ], + }, + DirectDatabricksModel { + public_id: "claude-opus-4.7", + upstream_id: "databricks-claude-opus-4-7", + client_apis: &[ + ClientApi::OpenAiChatCompletions, + ClientApi::OpenAiResponses, + ClientApi::AnthropicMessages, + ], + }, + DirectDatabricksModel { + public_id: "claude-opus-4.6", + upstream_id: "databricks-claude-opus-4-6", + client_apis: &[ + ClientApi::OpenAiChatCompletions, + ClientApi::OpenAiResponses, + ClientApi::AnthropicMessages, + ], + }, + DirectDatabricksModel { + public_id: "claude-opus-4.5", + upstream_id: "databricks-claude-opus-4-5", + client_apis: &[ + ClientApi::OpenAiChatCompletions, + ClientApi::OpenAiResponses, + ClientApi::AnthropicMessages, + ], + }, + DirectDatabricksModel { + public_id: "gemini-3.5-flash", + upstream_id: "databricks-gemini-3-5-flash", + client_apis: &[ClientApi::OpenAiChatCompletions, ClientApi::OpenAiResponses], + }, + DirectDatabricksModel { + public_id: "gemini-3.1-flash-lite", + upstream_id: "databricks-gemini-3-1-flash-lite", + client_apis: &[ClientApi::OpenAiChatCompletions, ClientApi::OpenAiResponses], + }, + DirectDatabricksModel { + public_id: "gpt-oss-120b", + upstream_id: "databricks-gpt-oss-120b", + client_apis: &[ClientApi::OpenAiChatCompletions, ClientApi::OpenAiResponses], + }, + DirectDatabricksModel { + public_id: "gpt-oss-20b", + upstream_id: "databricks-gpt-oss-20b", + client_apis: &[ClientApi::OpenAiChatCompletions, ClientApi::OpenAiResponses], + }, + DirectDatabricksModel { + public_id: "gemma-3-12b", + upstream_id: "databricks-gemma-3-12b", + client_apis: &[ClientApi::OpenAiChatCompletions, ClientApi::OpenAiResponses], }, ]; @@ -928,6 +1099,26 @@ pub fn resolve_direct_anthropic(public_id: &str) -> Option<&'static DirectAnthro .find(|model| model.public_id == public_id) } +pub fn direct_openai_models() -> Vec<&'static DirectOpenAiModel> { + DIRECT_OPENAI_MODELS.iter().collect() +} + +pub fn resolve_direct_openai(public_id: &str) -> Option<&'static DirectOpenAiModel> { + DIRECT_OPENAI_MODELS + .iter() + .find(|model| model.public_id == public_id) +} + +pub fn direct_databricks_models() -> Vec<&'static DirectDatabricksModel> { + DIRECT_DATABRICKS_MODELS.iter().collect() +} + +pub fn resolve_direct_databricks(public_id: &str) -> Option<&'static DirectDatabricksModel> { + DIRECT_DATABRICKS_MODELS + .iter() + .find(|model| model.public_id == public_id) +} + /// The catalog model for a public id, or `None` if it is not exposed. /// /// First match: for an id serving on more than one cloud this is the AWS entry; @@ -1069,6 +1260,47 @@ mod tests { assert!(resolve_direct_anthropic("claude-not-real").is_none()); } + #[test] + fn direct_openai_models_are_unique_and_have_qualified_apis() { + let mut public_ids = std::collections::HashSet::new(); + for model in DIRECT_OPENAI_MODELS { + assert!(public_ids.insert(model.public_id)); + assert!(!model.client_apis.is_empty()); + assert_eq!( + resolve_direct_openai(model.public_id) + .expect("direct model must resolve") + .client_apis, + model.client_apis + ); + } + assert!(resolve_direct_openai("text-embedding-3-small").is_none()); + assert!(resolve_direct_openai("gpt-image-1").is_none()); + } + + #[test] + fn direct_databricks_models_are_unique_and_resolve_to_provider_ids() { + let mut public_ids = std::collections::HashSet::new(); + for model in DIRECT_DATABRICKS_MODELS { + assert!(public_ids.insert(model.public_id)); + assert!(model.upstream_id.starts_with("databricks-")); + assert!(!model.client_apis.is_empty()); + assert_eq!( + resolve_direct_databricks(model.public_id) + .expect("direct Databricks model must resolve") + .upstream_id, + model.upstream_id + ); + } + assert!(resolve_direct_databricks("bge-large-en").is_none()); + assert!(resolve_direct_databricks("databricks-genie").is_none()); + assert_eq!( + resolve_direct_databricks("gpt-5.5") + .expect("GPT-5.5 must resolve") + .client_apis, + &[ClientApi::OpenAiResponses] + ); + } + use super::*; #[test] diff --git a/crates/alien-core/src/build_targets.rs b/crates/alien-core/src/build_targets.rs index dd43bc487..5f62623a5 100644 --- a/crates/alien-core/src/build_targets.rs +++ b/crates/alien-core/src/build_targets.rs @@ -27,10 +27,13 @@ pub enum BuildHost { LinuxArm64, /// Windows x86-64. WindowsX64, + /// Windows ARM64. + WindowsArm64, + /// macOS x86-64. + DarwinX64, /// macOS ARM64. DarwinArm64, - /// A host Alien does not support. This includes Darwin x64 and Windows ARM64, for which - /// Alien does not publish native runtime targets. + /// A host Alien does not recognize. Unsupported, } @@ -41,6 +44,8 @@ impl BuildHost { ("linux", "x86_64") => Self::LinuxX64, ("linux", "aarch64") => Self::LinuxArm64, ("windows", "x86_64") => Self::WindowsX64, + ("windows", "aarch64") => Self::WindowsArm64, + ("macos", "x86_64") => Self::DarwinX64, ("macos", "aarch64") => Self::DarwinArm64, _ => Self::Unsupported, } @@ -52,6 +57,8 @@ impl BuildHost { Self::LinuxX64 => "linux-x64", Self::LinuxArm64 => "linux-arm64", Self::WindowsX64 => "windows-x64", + Self::WindowsArm64 => "windows-arm64", + Self::DarwinX64 => "darwin-x64", Self::DarwinArm64 => "darwin-arm64", Self::Unsupported => "unsupported", } @@ -187,7 +194,9 @@ impl BinaryTarget { (Self::LinuxX64, BuildHost::LinuxX64) | (Self::LinuxArm64, BuildHost::LinuxArm64) | (Self::WindowsX64, BuildHost::WindowsX64) - | (Self::DarwinArm64, BuildHost::DarwinArm64) => CargoBuildStrategy::Native, + | (Self::DarwinArm64, BuildHost::DarwinArm64 | BuildHost::DarwinX64) => { + CargoBuildStrategy::Native + } (Self::WindowsX64, _) => CargoBuildStrategy::Xwin, (Self::LinuxX64 | Self::LinuxArm64, _) => CargoBuildStrategy::Zigbuild, // The Rust target alone is insufficient off macOS: an Apple SDK is also required. @@ -319,26 +328,12 @@ impl BinaryTarget { /// Detect the current OS target pub fn current_os() -> Self { - #[cfg(all(target_os = "windows", target_arch = "x86_64"))] - return Self::WindowsX64; - - #[cfg(all(target_os = "linux", target_arch = "x86_64"))] - return Self::LinuxX64; - - #[cfg(all(target_os = "linux", target_arch = "aarch64"))] - return Self::LinuxArm64; - - #[cfg(all(target_os = "macos", target_arch = "aarch64"))] - return Self::DarwinArm64; - - #[cfg(not(any( - all(target_os = "windows", target_arch = "x86_64"), - all(target_os = "linux", target_arch = "x86_64"), - all(target_os = "linux", target_arch = "aarch64"), - all(target_os = "macos", target_arch = "aarch64") - )))] - { - panic!("Alien does not support native binaries on this host") + match BuildHost::current() { + BuildHost::WindowsX64 => Self::WindowsX64, + BuildHost::LinuxX64 => Self::LinuxX64, + BuildHost::LinuxArm64 => Self::LinuxArm64, + BuildHost::DarwinArm64 => Self::DarwinArm64, + host => panic!("unsupported Alien host: {}", host.id()), } } } @@ -442,7 +437,7 @@ mod tests { CargoBuildStrategy::Xwin ); assert_eq!( - BinaryTarget::DarwinArm64.cargo_build_strategy_for(BuildHost::DarwinArm64), + BinaryTarget::DarwinArm64.cargo_build_strategy_for(BuildHost::DarwinX64), CargoBuildStrategy::Native ); } diff --git a/crates/alien-infra/src/ai/aws.rs b/crates/alien-infra/src/ai/aws.rs index aea0f6333..9e040e04f 100644 --- a/crates/alien-infra/src/ai/aws.rs +++ b/crates/alien-infra/src/ai/aws.rs @@ -84,7 +84,15 @@ async fn observe_bedrock_availability( region: &str, ) -> AiAvailabilityObservation { let tested_at = Utc::now(); - let candidates = ai_catalog::models_for(Platform::Aws); + // The GPT-5 family is served by bedrock-mantle, which has no foundation-model + // record: `GetFoundationModelAvailability` rejects those ids outright + // (verified live 2026-08-09 — `openai.gpt-5.6-sol` returns + // ValidationException while `openai.gpt-oss-20b-1:0` returns AVAILABLE). + // Probing them anyway reported every one as a failed observation on every + // account, so they are reported unknown-but-not-broken instead. + let (mantle_only, candidates): (Vec<_>, Vec<_>) = ai_catalog::models_for(Platform::Aws) + .into_iter() + .partition(|model| model.provider_api == ai_catalog::ProviderApi::OpenAiResponses); // The qualified catalog contains many models. Keep the observation fast but // avoid turning one heartbeat into an unbounded provider request burst. let mut responses = Vec::with_capacity(candidates.len()); @@ -102,24 +110,36 @@ async fn observe_bedrock_availability( }); responses.extend(futures::future::join_all(requests).await); } - let models = responses + let mut models: Vec = mantle_only .into_iter() - .map(|(model, result)| match result { - Ok(response) => classify_bedrock_availability(model, &response, tested_at), - Err(error) => { - warn!(model = model.public_id, %error, "Bedrock availability observation failed"); - AiModelAvailabilityObservation { - public_model_id: model.public_id.to_string(), - client_apis: model.client_apis.to_vec(), - availability: AiModelAvailability::Unknown, - blockers: vec![AiAvailabilityBlocker::ObservationFailed], - access_test: AiAccessTest::NotChecked, - tested_at: Some(tested_at), - error_code: Some("bedrock-observation-failed".to_string()), - } - } + .map(|model| AiModelAvailabilityObservation { + public_model_id: model.public_id.to_string(), + client_apis: model.client_apis.to_vec(), + availability: AiModelAvailability::Unknown, + // No blocker: nothing is wrong with the account, the control plane + // simply cannot answer for a mantle-served model. The gateway's own + // call is the first authoritative signal. + blockers: Vec::new(), + access_test: AiAccessTest::NotChecked, + tested_at: Some(tested_at), + error_code: None, }) .collect(); + models.extend(responses.into_iter().map(|(model, result)| match result { + Ok(response) => classify_bedrock_availability(model, &response, tested_at), + Err(error) => { + warn!(model = model.public_id, %error, "Bedrock availability observation failed"); + AiModelAvailabilityObservation { + public_model_id: model.public_id.to_string(), + client_apis: model.client_apis.to_vec(), + availability: AiModelAvailability::Unknown, + blockers: vec![AiAvailabilityBlocker::ObservationFailed], + access_test: AiAccessTest::NotChecked, + tested_at: Some(tested_at), + error_code: Some("bedrock-observation-failed".to_string()), + } + } + })); AiAvailabilityObservation { source: AiAvailabilitySource::AwsBedrock, catalog_revision: ai_catalog::AI_CATALOG_REVISION.to_string(), diff --git a/crates/alien-infra/src/ai/gcp.rs b/crates/alien-infra/src/ai/gcp.rs index 3fae10b58..259f4b907 100644 --- a/crates/alien-infra/src/ai/gcp.rs +++ b/crates/alien-infra/src/ai/gcp.rs @@ -33,6 +33,10 @@ pub struct GcpAiController { const AVAILABILITY_REFRESH_INTERVAL: chrono::Duration = chrono::Duration::minutes(15); +/// Vertex location used for inference. See `create_start` for why this is not +/// the deployment's region. +const VERTEX_LOCATION: &str = "global"; + fn publisher_model_present(models: &[PublisherModel], publisher: &str, upstream_id: &str) -> bool { let model_id = upstream_id .strip_prefix("google/") @@ -169,7 +173,20 @@ impl GcpAiController { let config = ctx.desired_resource_config::()?; self.project = Some(gcp_config.project_id.clone()); - self.location = Some(gcp_config.region.clone()); + // Vertex serves models per location, and the deployment's own region is + // usually the wrong one: verified live 2026-08-09 against + // alien-test-target, `claude-haiku-4.5` resolves in `us-central1` but + // 404s in `us-east4`, `us-east5`, and `europe-west1`, while every + // catalog model — including Gemini 3.x, which Google serves nowhere + // else — resolves on `global`. Availability is observed against the + // global Model Garden, so routing anywhere else reports models as + // available and then fails the request. + // + // `global` is also Google's recommended endpoint and carries no pricing + // premium; regional and multi-region endpoints add 10%. A deployment + // that needs single-region data residency for inference will need an + // explicit opt-in here rather than silently losing most of the catalog. + self.location = Some(VERTEX_LOCATION.to_string()); info!( id = %config.id, diff --git a/crates/alien-infra/src/remote_stack_management/gcp.rs b/crates/alien-infra/src/remote_stack_management/gcp.rs index b7184c9a7..4493158f7 100644 --- a/crates/alien-infra/src/remote_stack_management/gcp.rs +++ b/crates/alien-infra/src/remote_stack_management/gcp.rs @@ -425,35 +425,12 @@ impl GcpRemoteStackManagementController { #[handler(state = Ready, on_failure = RefreshFailed, status = ResourceStatus::Running)] async fn ready(&mut self, ctx: &ResourceControllerContext<'_>) -> Result { - let gcp_config = ctx.get_gcp_config()?; - let client = ctx.service_provider.get_gcp_iam_client(gcp_config)?; - let config = ctx.desired_resource_config::()?; - - // Heartbeat check: verify service account still exists - if let Some(service_account_email) = &self.service_account_email { - let sa = client - .get_service_account(service_account_email.clone()) - .await - .context(ErrorData::CloudPlatformError { - message: "Failed to get management service account during heartbeat check" - .to_string(), - resource_id: Some(config.id.clone()), - })?; - - // Check if service account email matches what we expect - if let Some(fetched_email) = &sa.email { - if fetched_email != service_account_email { - return Err(AlienError::new(ErrorData::ResourceDrift { - resource_id: config.id.clone(), - message: format!( - "Management service account email changed from {} to {}", - service_account_email, fetched_email - ), - })); - } - } - } - + // The Manager has already proved that it can impersonate this identity + // before entering the resource loop. Requiring the management identity + // to inspect its own IAM record adds an unrelated + // `iam.serviceAccounts.get` permission and makes least-privilege + // imported deployments fail refresh. Resources using the identity + // perform their own provider-specific health checks. emit_gcp_remote_stack_management_heartbeat(ctx, self); Ok(HandlerAction::Continue { @@ -679,7 +656,7 @@ fn emit_gcp_remote_stack_management_heartbeat( health: ObservedHealth::Healthy, lifecycle: ProviderLifecycleState::Running, message: controller.service_account_email.as_ref().map(|email| { - format!("GCP management service account '{}' is reachable", email) + format!("GCP management service account '{}' is configured", email) }), stale: false, partial: false, diff --git a/crates/alien-manager/src/builder.rs b/crates/alien-manager/src/builder.rs index 0eacc8938..8f0bad50f 100644 --- a/crates/alien-manager/src/builder.rs +++ b/crates/alien-manager/src/builder.rs @@ -50,8 +50,8 @@ pub struct AlienManagerBuilder { /// proprietary controllers (`container`, `compute-cluster`) before /// passing it in here. import_registry: Option>, - customer_registry_broker: - Option>, + external_registry_broker: + Option>, } impl AlienManagerBuilder { @@ -75,7 +75,7 @@ impl AlienManagerBuilder { bindings_provider_override: None, target_bindings_providers_override: None, import_registry: None, - customer_registry_broker: None, + external_registry_broker: None, } } @@ -182,12 +182,12 @@ impl AlienManagerBuilder { self } - /// Install a private authorization/routing adapter for customer OCI paths. - pub fn customer_registry_broker( + /// Install a private authorization/routing adapter for external OCI paths. + pub fn external_registry_broker( mut self, - broker: Arc, + broker: Arc, ) -> Self { - self.customer_registry_broker = Some(broker); + self.external_registry_broker = Some(broker); self } @@ -610,7 +610,7 @@ impl AlienManagerBuilder { /// or via a convenience method like `with_standalone_defaults()`). Missing /// providers produce a clear error. pub async fn build(self) -> crate::error::Result { - validate_customer_registry_base_url(&self.config, self.customer_registry_broker.is_some())?; + validate_external_registry_base_url(&self.config, self.external_registry_broker.is_some())?; macro_rules! require_provider { ($field:expr, $name:literal) => { @@ -661,30 +661,30 @@ impl AlienManagerBuilder { self.platform_routes, self.dev_status_tx, self.import_registry, - self.customer_registry_broker, + self.external_registry_broker, ) .await } } -fn validate_customer_registry_base_url( +fn validate_external_registry_base_url( config: &ManagerConfig, - customer_registry_enabled: bool, + external_registry_enabled: bool, ) -> crate::error::Result<()> { - if !customer_registry_enabled { + if !external_registry_enabled { return Ok(()); } let base_url = config.base_url.as_deref().ok_or_else(|| { AlienError::new(ErrorData::ServerInitFailed { reason: - "base_url must be explicitly configured when customer registry routing is enabled" + "base_url must be explicitly configured when external registry routing is enabled" .to_string(), }) })?; let parsed = reqwest::Url::parse(base_url).map_err(|_| { AlienError::new(ErrorData::ServerInitFailed { - reason: "base_url must be an absolute HTTP or HTTPS URL when customer registry routing is enabled" + reason: "base_url must be an absolute HTTP or HTTPS URL when external registry routing is enabled" .to_string(), }) })?; @@ -697,7 +697,7 @@ fn validate_customer_registry_base_url( || parsed.fragment().is_some() { return Err(AlienError::new(ErrorData::ServerInitFailed { - reason: "base_url must be an origin-only HTTP or HTTPS URL when customer registry routing is enabled" + reason: "base_url must be an origin-only HTTP or HTTPS URL when external registry routing is enabled" .to_string(), })); } @@ -706,34 +706,36 @@ fn validate_customer_registry_base_url( #[cfg(test)] mod tests { - use super::validate_customer_registry_base_url; + use super::validate_external_registry_base_url; use crate::config::ManagerConfig; #[test] - fn customer_registry_requires_an_explicit_origin() { + fn external_registry_requires_an_explicit_origin() { let config = ManagerConfig::default(); - assert!(validate_customer_registry_base_url(&config, false).is_ok()); - - let error = validate_customer_registry_base_url(&config, true) - .expect_err("customer registry must not advertise the localhost fallback"); - assert!(error - .to_string() - .contains("base_url must be explicitly configured")); + assert!(validate_external_registry_base_url(&config, false).is_ok()); + + let error = validate_external_registry_base_url(&config, true) + .expect_err("external registry must not advertise the localhost fallback"); + assert!( + error + .to_string() + .contains("base_url must be explicitly configured") + ); let mut configured = config; configured.base_url = Some("https://manager.example.com".to_string()); - validate_customer_registry_base_url(&configured, true) + validate_external_registry_base_url(&configured, true) .expect("an explicit HTTPS manager origin is valid"); configured.base_url = Some("https://manager.example.com/".to_string()); - validate_customer_registry_base_url(&configured, true) + validate_external_registry_base_url(&configured, true) .expect("a trailing root slash is still an origin-only URL"); configured.base_url = Some("https://manager.example.com/path".to_string()); - assert!(validate_customer_registry_base_url(&configured, true).is_err()); + assert!(validate_external_registry_base_url(&configured, true).is_err()); configured.base_url = Some("https://user@manager.example.com/path".to_string()); - assert!(validate_customer_registry_base_url(&configured, true).is_err()); + assert!(validate_external_registry_base_url(&configured, true).is_err()); } } @@ -786,8 +788,8 @@ async fn finalize( platform_routes: Option>, dev_status_tx: Option>, import_registry_override: Option>, - customer_registry_broker: Option< - Arc, + external_registry_broker: Option< + Arc, >, ) -> crate::error::Result { use alien_commands::server::CommandServer; @@ -830,7 +832,7 @@ async fn finalize( credential_cache: Arc::new(crate::routes::registry_proxy::CredentialCache::new()), pull_validation_cache: Arc::new(crate::routes::registry_proxy::PullValidationCache::new()), registry_routing_table: server_bindings.registry_routing_table.clone(), - customer_registry_broker, + external_registry_broker, // Built-in importer registry covers every OSS `(ResourceType, // Platform)` pair across AWS / GCP / Azure (see // `alien_infra::ImporterRegistry::built_in`). Embedders that need diff --git a/crates/alien-manager/src/routes/bindings.rs b/crates/alien-manager/src/routes/bindings.rs index 9942e5221..d68b03208 100644 --- a/crates/alien-manager/src/routes/bindings.rs +++ b/crates/alien-manager/src/routes/bindings.rs @@ -5,7 +5,7 @@ //! binding topology together with materialized, short-lived credentials. use alien_bindings::{ - traits::ArtifactRegistry as ArtifactRegistryApi, BindingsProvider, BindingsProviderApi, + BindingsProvider, BindingsProviderApi, traits::ArtifactRegistry as ArtifactRegistryApi, }; use alien_core::{ Ai, AiBinding, ArtifactRegistry, ArtifactRegistryBinding, AwsClientConfig, AwsCredentials, @@ -15,24 +15,24 @@ use alien_core::{ }; use alien_error::{Context, ContextError, IntoAlienError}; use axum::{ + Router, extract::{Json, State}, - http::{header::CACHE_CONTROL, header::PRAGMA, HeaderMap}, + http::{HeaderMap, header::CACHE_CONTROL, header::PRAGMA}, response::{IntoResponse, Response}, routing::post, - Router, }; use chrono::{DateTime, SecondsFormat, Utc}; use serde::{Deserialize, Serialize}; use std::{collections::HashMap, sync::Arc}; -use super::{auth, current_release_resource, load_current_release, AppState}; +use super::{AppState, auth, current_release_resource, load_current_release}; use crate::credential_materialization::{ - materialize_remote_binding_lease, MaterializedCredentialLease, RemoteBindingCredentialScope, + MaterializedCredentialLease, RemoteBindingCredentialScope, materialize_remote_binding_lease, }; use crate::error::ErrorData; use crate::traits::{ - deployment_status_from_record, CredentialResolver, DeploymentRecord, DeploymentStore, - ReleaseStore, + CredentialResolver, DeploymentRecord, DeploymentStore, ReleaseStore, + deployment_status_from_record, }; /// The remote client refreshes five minutes before this server-provided hint. @@ -649,7 +649,7 @@ async fn resolve_binding( return ErrorData::bad_request( "Specify exactly one of resourceId or kind when resolving a remote binding", ) - .into_response() + .into_response(); } }; if !state @@ -694,11 +694,11 @@ async fn resolve_binding( alien_core::remote_bindings::RemoteBindingKind::Ai => { remote_ai_binding(&deployment, &resource_id).map(ResolvedRemoteBinding::Ai) } - alien_core::remote_bindings::RemoteBindingKind::ArtifactRegistry => Err( - ErrorData::bad_request( + alien_core::remote_bindings::RemoteBindingKind::ArtifactRegistry => { + Err(ErrorData::bad_request( "Remote ArtifactRegistry credentials are available only to the Manager's local OCI operation broker", - ), - ), + )) + } }; let binding = match binding { Ok(binding) => binding, @@ -718,7 +718,7 @@ async fn resolve_binding( deployment_id: deployment.id.clone(), platform: deployment.platform, }) - .into_response() + .into_response(); } }; let lease = match materialize_remote_binding_lease(resolved, scope).await { @@ -1015,7 +1015,7 @@ impl LocalArtifactRegistryResolver { other => { return Err(ErrorData::bad_request(format!( "Remote ArtifactRegistry is not supported for deployment platform '{other}'" - ))) + ))); } }; let source = self diff --git a/crates/alien-manager/src/routes/build_config.rs b/crates/alien-manager/src/routes/build_config.rs index 566a0e941..6f57b8108 100644 --- a/crates/alien-manager/src/routes/build_config.rs +++ b/crates/alien-manager/src/routes/build_config.rs @@ -4,15 +4,15 @@ //! determine where to push images without hardcoding the repo path. use axum::{ + Json, Router, extract::{Query, State}, http::{HeaderMap, StatusCode}, response::{IntoResponse, Response}, routing::get, - Json, Router, }; use serde::{Deserialize, Serialize}; -use super::{auth, AppState}; +use super::{AppState, auth}; use crate::error::ErrorData; #[derive(Debug, Deserialize)] @@ -57,7 +57,7 @@ async fn get_build_config( StatusCode::BAD_REQUEST, format!("Unknown platform: {}", platform_str), ) - .into_response() + .into_response(); } }; diff --git a/crates/alien-manager/src/routes/commands.rs b/crates/alien-manager/src/routes/commands.rs index 0efd162c4..803ba672d 100644 --- a/crates/alien-manager/src/routes/commands.rs +++ b/crates/alien-manager/src/routes/commands.rs @@ -4,11 +4,11 @@ //! following the same pattern as `sync.rs` and `deployments.rs`. use axum::{ + Router, extract::{Json, Path, Query, State}, http::{HeaderMap, StatusCode}, response::{IntoResponse, Response}, routing::{get, post, put}, - Router, }; use serde::Deserialize; @@ -18,7 +18,7 @@ use alien_commands::types::*; use crate::error::ErrorData; -use super::{auth, AppState}; +use super::{AppState, auth}; // --- Helpers --- @@ -319,7 +319,7 @@ async fn get_command_status( command_id: command_id.clone(), }, ) - .into_response() + .into_response(); } Err(e) => return e.into_response(), }; @@ -360,7 +360,7 @@ async fn upload_complete( command_id: command_id.clone(), }, ) - .into_response() + .into_response(); } Err(e) => return e.into_response(), }; @@ -428,7 +428,7 @@ async fn submit_response( command_id: command_id.clone(), }, ) - .into_response() + .into_response(); } Err(e) => return e.into_response(), }; @@ -628,7 +628,7 @@ async fn release_lease( return alien_error::AlienError::new(alien_commands::error::ErrorData::LeaseNotFound { lease_id: lease_id.clone(), }) - .into_response() + .into_response(); } Err(e) => return e.into_response(), }; @@ -643,7 +643,7 @@ async fn release_lease( return alien_error::AlienError::new( alien_commands::error::ErrorData::CommandNotFound { command_id }, ) - .into_response() + .into_response(); } Err(e) => return e.into_response(), }; @@ -664,7 +664,7 @@ async fn release_lease( mod tests { use super::*; use alien_commands::test_utils::{ - test_storage_create_command, test_upload_complete_request, TestCommandServer, + TestCommandServer, test_storage_create_command, test_upload_complete_request, }; use chrono::Utc; diff --git a/crates/alien-manager/src/routes/credentials.rs b/crates/alien-manager/src/routes/credentials.rs index a550550a7..d876177cd 100644 --- a/crates/alien-manager/src/routes/credentials.rs +++ b/crates/alien-manager/src/routes/credentials.rs @@ -1,15 +1,15 @@ //! Credential resolution and minting endpoints. -use alien_bindings::traits::ImpersonationRequest; use alien_bindings::ServiceAccountInfo; +use alien_bindings::traits::ImpersonationRequest; use alien_core::{ClientConfig, Container, Daemon, Platform, ServiceAccount, Worker}; use alien_error::ContextError; use axum::{ + Router, extract::{Json, State}, - http::{header::CACHE_CONTROL, header::PRAGMA, HeaderMap}, + http::{HeaderMap, header::CACHE_CONTROL, header::PRAGMA}, response::{IntoResponse, Response}, routing::post, - Router, }; use chrono::{SecondsFormat, Utc}; use serde::{Deserialize, Serialize}; @@ -21,7 +21,7 @@ use crate::error::ErrorData; use crate::ids::sha256_hash; use crate::traits::DeploymentRecord; -use super::{auth, current_release_resource, load_current_release, AppState}; +use super::{AppState, auth, current_release_resource, load_current_release}; // --- Mint constants --- @@ -191,7 +191,7 @@ async fn mint_credentials( "Service-account binding '{}' not available for {}: {}", req.binding_name, platform, e.message )) - .into_response() + .into_response(); } }; @@ -209,7 +209,7 @@ async fn mint_credentials( req.binding_name ), }) - .into_response() + .into_response(); } }; @@ -230,7 +230,7 @@ async fn mint_credentials( req.binding_name ), }) - .into_response() + .into_response(); } }; @@ -264,7 +264,7 @@ async fn mint_credentials( return ErrorData::internal( "Local credential mint fallback returned a non-local client config", ) - .into_response() + .into_response(); } Err(e) => return e.into_response(), } @@ -465,8 +465,8 @@ fn principal_from_client_config(config: &ClientConfig) -> String { #[cfg(test)] mod tests { use super::{ - clamp_duration, mint_session_name, principal_from_client_config, principal_from_info, - truncate_session_name, MintCredentialsResponse, MAX_SESSION_NAME_LEN, + MAX_SESSION_NAME_LEN, MintCredentialsResponse, clamp_duration, mint_session_name, + principal_from_client_config, principal_from_info, truncate_session_name, }; use alien_bindings::ServiceAccountInfo; use alien_bindings::{ diff --git a/crates/alien-manager/src/routes/deployment_groups.rs b/crates/alien-manager/src/routes/deployment_groups.rs index b20bcbd4d..122519c3f 100644 --- a/crates/alien-manager/src/routes/deployment_groups.rs +++ b/crates/alien-manager/src/routes/deployment_groups.rs @@ -1,11 +1,11 @@ //! Deployment group REST API endpoints. use axum::{ + Json, Router, extract::{Path, State}, http::HeaderMap, response::{IntoResponse, Response}, routing::{get, post}, - Json, Router, }; use serde::{Deserialize, Serialize}; @@ -15,7 +15,7 @@ use crate::traits::{ CreateDeploymentGroupParams, CreateTokenParams, DeploymentGroupRecord, TokenType, }; -use super::{auth, AppState}; +use super::{AppState, auth}; // --- Request / Response types --- diff --git a/crates/alien-manager/src/routes/deployments.rs b/crates/alien-manager/src/routes/deployments.rs index bf1f49b4e..3b25d3ac7 100644 --- a/crates/alien-manager/src/routes/deployments.rs +++ b/crates/alien-manager/src/routes/deployments.rs @@ -1,18 +1,18 @@ //! Deployment REST API endpoints. use axum::{ + Json, Router, extract::{Path, State}, - http::{request::Parts, HeaderMap, StatusCode}, + http::{HeaderMap, StatusCode, request::Parts}, response::{IntoResponse, Response}, routing::{get, post}, - Json, Router, }; use serde::{Deserialize, Serialize}; use alien_core::{ - import::ImportSourceKind, is_valid_resource_prefix, ContainerOutputs, DaemonOutputs, - DeploymentModel, EnvironmentVariable, Platform, PublicEndpointOutput, StackSettings, - StackState, WorkerOutputs, RESOURCE_PREFIX_ERROR_MESSAGE, + ContainerOutputs, DaemonOutputs, DeploymentModel, EnvironmentVariable, Platform, + PublicEndpointOutput, RESOURCE_PREFIX_ERROR_MESSAGE, StackSettings, StackState, WorkerOutputs, + import::ImportSourceKind, is_valid_resource_prefix, }; use crate::error::ErrorData; @@ -21,7 +21,7 @@ use crate::traits::{ CreateDeploymentParams, CreateTokenParams, DeploymentFilter, DeploymentRecord, TokenType, }; -use super::{auth, AppState}; +use super::{AppState, auth}; // --- Request / Response types --- @@ -941,8 +941,10 @@ mod tests { let error = stack_settings_for_platform(Platform::Machines, Some(requested)) .expect_err("machines deployments should reject pull mode"); - assert!(error - .to_string() - .contains("must use deploymentModel 'push'")); + assert!( + error + .to_string() + .contains("must use deploymentModel 'push'") + ); } } diff --git a/crates/alien-manager/src/routes/install.rs b/crates/alien-manager/src/routes/install.rs index 4554e3102..9d7b9b9ce 100644 --- a/crates/alien-manager/src/routes/install.rs +++ b/crates/alien-manager/src/routes/install.rs @@ -7,9 +7,9 @@ //! (defaults to `latest`). use axum::{ + Router, extract::{Query, State}, response::{IntoResponse, Response}, - Router, }; use http::header; use serde::Deserialize; diff --git a/crates/alien-manager/src/routes/mod.rs b/crates/alien-manager/src/routes/mod.rs index 0d1cdfc69..b9e2f5346 100644 --- a/crates/alien-manager/src/routes/mod.rs +++ b/crates/alien-manager/src/routes/mod.rs @@ -26,16 +26,16 @@ pub mod auth; use std::collections::HashMap; use std::sync::Arc; -use alien_bindings::traits::Kv; use alien_bindings::BindingsProviderApi; +use alien_bindings::traits::Kv; use alien_commands::server::{CommandServer, HasCommandServer}; use alien_core::{Platform, ResourceEntry, Stack}; use alien_error::{AlienError, Context}; use axum::{ - routing::{get, post}, Router, + routing::{get, post}, }; -use http::{header, Method}; +use http::{Method, header}; use tower_http::cors::{AllowOrigin, CorsLayer}; use crate::auth::{Authz, Subject}; @@ -71,7 +71,7 @@ pub struct AppState { /// Routing table mapping repo path prefixes to upstream registries. pub registry_routing_table: Arc, /// Optional private adapter for the disjoint `customer/` OCI namespace. - pub customer_registry_broker: Option>, + pub external_registry_broker: Option>, /// Registry of per-`(ResourceType, Platform)` importers used by the /// stack-import endpoint to translate setup-artifact payloads /// (CFN Custom Resource, Terraform provider, Helm chart) into typed diff --git a/crates/alien-manager/src/routes/platforms.rs b/crates/alien-manager/src/routes/platforms.rs index f407cb5fa..8c19a09f3 100644 --- a/crates/alien-manager/src/routes/platforms.rs +++ b/crates/alien-manager/src/routes/platforms.rs @@ -4,15 +4,15 @@ //! so the CLI can auto-discover which platforms to build and release for. use axum::{ + Json, Router, extract::State, http::HeaderMap, response::{IntoResponse, Response}, routing::get, - Json, Router, }; use serde::Serialize; -use super::{auth, AppState}; +use super::{AppState, auth}; use crate::error::ErrorData; #[derive(Debug, Serialize)] diff --git a/crates/alien-manager/src/routes/registry_proxy.rs b/crates/alien-manager/src/routes/registry_proxy.rs index f4c0cccbb..9188f74ee 100644 --- a/crates/alien-manager/src/routes/registry_proxy.rs +++ b/crates/alien-manager/src/routes/registry_proxy.rs @@ -21,13 +21,13 @@ use std::sync::Arc; use std::time::{Duration, Instant}; use async_trait::async_trait; +use axum::Router; use axum::body::Body; use axum::extract::{OriginalUri, Path, Query, State}; use axum::http::{HeaderMap, StatusCode}; use axum::response::{IntoResponse, Response}; use axum::routing::get; -use axum::Router; -use base64::{engine::general_purpose::URL_SAFE_NO_PAD, Engine as _}; +use base64::{Engine as _, engine::general_purpose::URL_SAFE_NO_PAD}; use hmac::{Hmac, Mac}; use serde::{Deserialize, Serialize}; use sha2::Sha256; @@ -35,10 +35,10 @@ use tokio::sync::OwnedSemaphorePermit; use tracing::{debug, warn}; use url::Url; +use alien_bindings::BindingsProviderApi; use alien_bindings::traits::{ ArtifactRegistry, ArtifactRegistryCredentials, ArtifactRegistryPermissions, }; -use alien_bindings::BindingsProviderApi; use alien_core::Platform; use super::AppState; @@ -53,16 +53,16 @@ const UPLOAD_SESSION_REPO_PARAM: &str = "_alien_repo"; const UPLOAD_SESSION_EXPIRES_PARAM: &str = "_alien_exp"; const UPLOAD_SESSION_SIGNATURE_PARAM: &str = "_alien_sig"; const UPLOAD_SESSION_SIGNING_CONTEXT: &[u8] = b"registry-upload-session-signing"; -const CUSTOMER_UPLOAD_SESSION_PREFIX: &str = "customer-v1:"; +const EXTERNAL_UPLOAD_SESSION_PREFIX: &str = "external-v1:"; #[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub enum CustomerRegistryOperation { +pub enum ExternalRegistryOperation { Pull, Push, } #[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub enum CustomerRegistryAccessError { +pub enum ExternalRegistryAccessError { Unauthorized, Denied, NotFound, @@ -71,18 +71,18 @@ pub enum CustomerRegistryAccessError { } /// Opaque admission permits held until the proxied response body finishes. -pub struct CustomerRegistryAdmission { +pub struct ExternalRegistryAdmission { _permits: Vec, } -impl CustomerRegistryAdmission { +impl ExternalRegistryAdmission { pub fn new(permits: Vec) -> Self { Self { _permits: permits } } } #[derive(Clone)] -pub struct CustomerRegistryTarget { +pub struct ExternalRegistryTarget { pub route_id: String, pub credential_id: String, pub desired_revision: u64, @@ -91,25 +91,25 @@ pub struct CustomerRegistryTarget { pub external_repository: String, pub upstream_repository: String, pub artifact_registry: Arc, - pub admission: Option>, + pub admission: Option>, } -/// Private embedders may authorize the reserved `customer/` namespace and +/// Private embedders may authorize the reserved `external/` namespace and /// return an in-memory upstream. Implementations must retain only bounded, /// short-lived cloud credentials and must not return them to the OCI client. #[async_trait] -pub trait CustomerRegistryBroker: Send + Sync { +pub trait ExternalRegistryBroker: Send + Sync { async fn authenticate_probe( &self, authorization: Option<&str>, - ) -> Result<(), CustomerRegistryAccessError>; + ) -> Result<(), ExternalRegistryAccessError>; async fn authorize( &self, authorization: Option<&str>, repository: &str, - operation: CustomerRegistryOperation, - ) -> Result; + operation: ExternalRegistryOperation, + ) -> Result; /// Resolve a still-active route for a Manager-signed upload-session URL. /// The session HMAC authenticates the request; this call rechecks current @@ -118,14 +118,14 @@ pub trait CustomerRegistryBroker: Send + Sync { &self, repository: &str, credential_id: &str, - ) -> Result; + ) -> Result; /// Record one successful manifest operation. Private adapters may use a /// matching push+pull digest as their end-to-end readiness signal. async fn record_manifest_success( &self, - target: &CustomerRegistryTarget, - operation: CustomerRegistryOperation, + target: &ExternalRegistryTarget, + operation: ExternalRegistryOperation, digest: &str, ); } @@ -222,9 +222,9 @@ impl RegistryRoutingTable { fn validate_unique_prefixes(routes: &[RegistryRoute]) -> Result<(), String> { let mut seen: HashMap<&str, &RegistryRoute> = HashMap::new(); for route in routes { - if route.prefix == "customer" || route.prefix.starts_with("customer/") { + if route.prefix == "external" || route.prefix.starts_with("external/") { return Err(format!( - "Artifact registry prefix '{}' overlaps the reserved customer namespace", + "Artifact registry prefix '{}' overlaps the reserved external namespace", route.prefix )); } @@ -269,11 +269,7 @@ fn project_id_after_prefix<'a>(repo_name: &'a str, prefix: &str) -> Option<&'a s &rest[1..] }; let pid = suffix.split('/').next()?; - if pid.is_empty() { - None - } else { - Some(pid) - } + if pid.is_empty() { None } else { Some(pid) } } // --------------------------------------------------------------------------- @@ -480,8 +476,8 @@ fn oci_error(status: StatusCode, code: &'static str, message: impl Into) /// `GET /v2/` — OCI Distribution spec requires this endpoint to exist. async fn version_check(State(state): State, headers: HeaderMap) -> Response { - let customer_error = if basic_authorization(&headers).is_some() { - if let Some(broker) = &state.customer_registry_broker { + let external_error = if basic_authorization(&headers).is_some() { + if let Some(broker) = &state.external_registry_broker { match broker .authenticate_probe( headers @@ -500,14 +496,14 @@ async fn version_check(State(state): State, headers: HeaderMap) -> Res None }; // Docker uses Basic auth for both ordinary Deployment-token pulls and the - // reserved customer registry. The version probe has no repository path to + // reserved external registry. The version probe has no repository path to // distinguish them, so accept either credential system here. Repository // requests remain authorized by their exact namespace-specific path. if super::auth::require_auth(&state, &headers).await.is_ok() { return (StatusCode::OK, "{}").into_response(); } - if let Some(error) = customer_error { - return customer_registry_error(error); + if let Some(error) = external_error { + return external_registry_error(error); } oci_error( StatusCode::UNAUTHORIZED, @@ -571,8 +567,8 @@ async fn proxy_push( // Signed-URL bypass: the path's repo is implied by the signature, // not by Bearer auth. Trust the signature's repo. session.repository.clone() - } else if is_customer_repository(&unsigned_repo_name) { - // The private customer broker owns authentication for its reserved + } else if is_external_repository(&unsigned_repo_name) { + // The private external broker owns authentication for its reserved // namespace. An OCI Basic credential is intentionally not an Alien // API token and must never be sent through the internal token store. unsigned_repo_name @@ -587,15 +583,15 @@ async fn proxy_push( unsigned_repo_name }; - if is_customer_repository(&repo_name) { - if let Err(response) = validate_customer_request_target(&original_uri, &headers) { + if is_external_repository(&repo_name) { + if let Err(response) = validate_external_request_target(&original_uri, &headers) { return response; } - let Some(broker) = &state.customer_registry_broker else { - return customer_registry_error(CustomerRegistryAccessError::NotFound); + let Some(broker) = &state.external_registry_broker else { + return external_registry_error(ExternalRegistryAccessError::NotFound); }; let target = if let Some(session) = &signed_session { - let Some(credential_id) = session.customer_credential_id() else { + let Some(credential_id) = session.external_credential_id() else { return invalid_upload_session_auth(); }; broker @@ -608,13 +604,13 @@ async fn proxy_push( .get("authorization") .and_then(|value| value.to_str().ok()), &repo_name, - CustomerRegistryOperation::Push, + ExternalRegistryOperation::Push, ) .await }; let target = match target { Ok(target) => target, - Err(error) => return customer_registry_error(error), + Err(error) => return external_registry_error(error), }; if let Some(session) = &signed_session { if !session.matches(&target) { @@ -629,9 +625,9 @@ async fn proxy_push( if signed_session.is_some() && (upstream_query.contains_key("mount") || upstream_query.contains_key("from")) { - return customer_registry_error(CustomerRegistryAccessError::Denied); + return external_registry_error(ExternalRegistryAccessError::Denied); } - if let Err(error) = authorize_and_rewrite_customer_mount( + if let Err(error) = authorize_and_rewrite_external_mount( broker, headers .get("authorization") @@ -643,7 +639,7 @@ async fn proxy_push( ) .await { - return customer_registry_error(error); + return external_registry_error(error); } let qs = query_string(&upstream_query); let oci_path = format!("{}{}", oci_path_str, qs); @@ -651,10 +647,10 @@ async fn proxy_push( // Axum strips the nested `/v2/` route prefix before this handler. // The signed path may be provider-internal rather than the logical // repository (GAR uses `pkg` for an upload session). Its HMAC and - // embedded customer identity bind it to this exact target, while + // embedded external identity bind it to this exact target, while // raw forwarding remains pinned to the configured endpoint. let upstream_path = format!("/v2/{oci_path}"); - return forward_customer_to_upstream_raw( + return forward_external_to_upstream_raw( &state, &method, &upstream_path, @@ -664,7 +660,7 @@ async fn proxy_push( ) .await; } - return forward_customer_to_upstream( + return forward_external_to_upstream( &state, &method, &oci_path, @@ -747,14 +743,14 @@ async fn proxy_upload_session( }; let repo_name = session.repository.clone(); - if is_customer_repository(&repo_name) { - if let Err(response) = validate_customer_request_target(&original_uri, &headers) { + if is_external_repository(&repo_name) { + if let Err(response) = validate_external_request_target(&original_uri, &headers) { return response; } - let Some(broker) = &state.customer_registry_broker else { - return customer_registry_error(CustomerRegistryAccessError::NotFound); + let Some(broker) = &state.external_registry_broker else { + return external_registry_error(ExternalRegistryAccessError::NotFound); }; - let Some(credential_id) = session.customer_credential_id() else { + let Some(credential_id) = session.external_credential_id() else { return invalid_upload_session_auth(); }; let target = match broker @@ -762,7 +758,7 @@ async fn proxy_upload_session( .await { Ok(target) => target, - Err(error) => return customer_registry_error(error), + Err(error) => return external_registry_error(error), }; if !session.matches(&target) { return invalid_upload_session_auth(); @@ -770,7 +766,7 @@ async fn proxy_upload_session( let upstream_query = strip_upload_session_auth_params(&query); let qs = query_string(&upstream_query); let full_path = format!("{}{}", original_uri.path(), qs); - return forward_customer_to_upstream_raw( + return forward_external_to_upstream_raw( &state, &method, &full_path, @@ -821,12 +817,12 @@ async fn proxy_pull( ) -> Response { let oci_path_str = path.trim_start_matches('/'); let repo_name = extract_repo_name(oci_path_str); - if is_customer_repository(&repo_name) { - if let Err(response) = validate_customer_request_target(&original_uri, &headers) { + if is_external_repository(&repo_name) { + if let Err(response) = validate_external_request_target(&original_uri, &headers) { return response; } - let Some(broker) = &state.customer_registry_broker else { - return customer_registry_error(CustomerRegistryAccessError::NotFound); + let Some(broker) = &state.external_registry_broker else { + return external_registry_error(ExternalRegistryAccessError::NotFound); }; let target = match broker .authorize( @@ -834,15 +830,15 @@ async fn proxy_pull( .get("authorization") .and_then(|value| value.to_str().ok()), &repo_name, - CustomerRegistryOperation::Pull, + ExternalRegistryOperation::Pull, ) .await { Ok(target) => target, - Err(error) => return customer_registry_error(error), + Err(error) => return external_registry_error(error), }; let oci_path = format!("{}{}", oci_path_str, query_string(&query)); - return forward_customer_to_upstream(&state, &method, &oci_path, &headers, None, &target) + return forward_external_to_upstream(&state, &method, &oci_path, &headers, None, &target) .await; } let subject = match super::auth::require_auth(&state, &headers).await { @@ -858,8 +854,8 @@ async fn proxy_pull( forward_to_upstream(&state, &method, &oci_path, &headers, None, None).await } -fn is_customer_repository(repository: &str) -> bool { - repository == "customer" || repository.starts_with("customer/") +fn is_external_repository(repository: &str) -> bool { + repository == "external" || repository.starts_with("external/") } fn basic_authorization(headers: &HeaderMap) -> Option<&str> { @@ -869,29 +865,29 @@ fn basic_authorization(headers: &HeaderMap) -> Option<&str> { .filter(|value| value.starts_with("Basic ")) } -fn customer_registry_error(error: CustomerRegistryAccessError) -> Response { +fn external_registry_error(error: ExternalRegistryAccessError) -> Response { match error { - CustomerRegistryAccessError::Unauthorized => oci_error( + ExternalRegistryAccessError::Unauthorized => oci_error( StatusCode::UNAUTHORIZED, "UNAUTHORIZED", "Invalid container registry credential", ), - CustomerRegistryAccessError::Denied => oci_error( + ExternalRegistryAccessError::Denied => oci_error( StatusCode::FORBIDDEN, "DENIED", "Container registry access denied", ), - CustomerRegistryAccessError::NotFound => oci_error( + ExternalRegistryAccessError::NotFound => oci_error( StatusCode::NOT_FOUND, "NAME_UNKNOWN", "Container repository not found", ), - CustomerRegistryAccessError::Unavailable => oci_error( + ExternalRegistryAccessError::Unavailable => oci_error( StatusCode::SERVICE_UNAVAILABLE, "UNAVAILABLE", "Container registry route is unavailable", ), - CustomerRegistryAccessError::RateLimited => oci_error( + ExternalRegistryAccessError::RateLimited => oci_error( StatusCode::TOO_MANY_REQUESTS, "TOOMANYREQUESTS", "Container registry concurrency limit reached", @@ -899,7 +895,7 @@ fn customer_registry_error(error: CustomerRegistryAccessError) -> Response { } } -fn validate_customer_request_target( +fn validate_external_request_target( uri: &axum::http::Uri, headers: &HeaderMap, ) -> Result<(), Response> { @@ -927,7 +923,7 @@ fn validate_customer_request_target( .split('/') .any(|component| component == "." || component == "..") { - return Err(customer_registry_error(CustomerRegistryAccessError::Denied)); + return Err(external_registry_error(ExternalRegistryAccessError::Denied)); } let header_bytes = headers @@ -937,42 +933,42 @@ fn validate_customer_request_target( if header_bytes > MAX_HEADER_BYTES || (headers.contains_key("content-length") && headers.contains_key("transfer-encoding")) { - return Err(customer_registry_error(CustomerRegistryAccessError::Denied)); + return Err(external_registry_error(ExternalRegistryAccessError::Denied)); } let mut keys = std::collections::HashSet::new(); for parameter in query.split('&').filter(|parameter| !parameter.is_empty()) { let raw_key = parameter.split_once('=').map_or(parameter, |(key, _)| key); let key = urlencoding::decode(raw_key) - .map_err(|_| customer_registry_error(CustomerRegistryAccessError::Denied))?; + .map_err(|_| external_registry_error(ExternalRegistryAccessError::Denied))?; if !keys.insert(key.into_owned()) { - return Err(customer_registry_error(CustomerRegistryAccessError::Denied)); + return Err(external_registry_error(ExternalRegistryAccessError::Denied)); } } Ok(()) } -async fn forward_customer_to_upstream( +async fn forward_external_to_upstream( state: &AppState, method: &axum::http::Method, oci_path: &str, original_headers: &HeaderMap, body: Option, - target: &CustomerRegistryTarget, + target: &ExternalRegistryTarget, ) -> Response { let Some(rewritten) = rewrite_oci_repository( oci_path, &target.external_repository, &target.upstream_repository, ) else { - return customer_registry_error(CustomerRegistryAccessError::Denied); + return external_registry_error(ExternalRegistryAccessError::Denied); }; let operation = if *method == axum::http::Method::GET || *method == axum::http::Method::HEAD { - CustomerRegistryOperation::Pull + ExternalRegistryOperation::Pull } else { - CustomerRegistryOperation::Push + ExternalRegistryOperation::Push }; - let upload_session_identity = customer_upload_session_identity(target); + let upload_session_identity = external_upload_session_identity(target); let response = forward_with_artifact_registry( state, method, @@ -992,7 +988,7 @@ async fn forward_customer_to_upstream( .get("docker-content-digest") .and_then(|value| value.to_str().ok()) .filter(|value| valid_manifest_digest(value)), - &state.customer_registry_broker, + &state.external_registry_broker, ) { broker .record_manifest_success(target, operation, digest) @@ -1002,15 +998,15 @@ async fn forward_customer_to_upstream( response } -async fn forward_customer_to_upstream_raw( +async fn forward_external_to_upstream_raw( state: &AppState, method: &axum::http::Method, raw_path: &str, original_headers: &HeaderMap, body: Option, - target: &CustomerRegistryTarget, + target: &ExternalRegistryTarget, ) -> Response { - let upload_session_identity = customer_upload_session_identity(target); + let upload_session_identity = external_upload_session_identity(target); forward_raw_with_artifact_registry( state, method, @@ -1039,14 +1035,14 @@ fn valid_manifest_digest(digest: &str) -> bool { && digest[7..].bytes().all(|byte| byte.is_ascii_hexdigit()) } -async fn authorize_and_rewrite_customer_mount( - broker: &Arc, +async fn authorize_and_rewrite_external_mount( + broker: &Arc, authorization: Option<&str>, method: &axum::http::Method, path: &str, - destination: &CustomerRegistryTarget, + destination: &ExternalRegistryTarget, query: &mut HashMap, -) -> Result<(), CustomerRegistryAccessError> { +) -> Result<(), ExternalRegistryAccessError> { let mount = query.get("mount"); let source = query.get("from"); if mount.is_none() && source.is_none() { @@ -1056,19 +1052,19 @@ async fn authorize_and_rewrite_customer_mount( || !path.ends_with("/blobs/uploads/") || !mount.is_some_and(|digest| valid_manifest_digest(digest)) { - return Err(CustomerRegistryAccessError::Denied); + return Err(ExternalRegistryAccessError::Denied); } - let source = source.ok_or(CustomerRegistryAccessError::Denied)?; - let external_source = if is_customer_repository(source) { + let source = source.ok_or(ExternalRegistryAccessError::Denied)?; + let external_source = if is_external_repository(source) { source.clone() } else { - format!("customer/{}/{}", destination.route_id, source) + format!("external/{}/{}", destination.route_id, source) }; let source = broker .authorize( authorization, &external_source, - CustomerRegistryOperation::Pull, + ExternalRegistryOperation::Pull, ) .await?; if source.route_id != destination.route_id @@ -1077,7 +1073,7 @@ async fn authorize_and_rewrite_customer_mount( || source.artifact_registry.registry_endpoint() != destination.artifact_registry.registry_endpoint() { - return Err(CustomerRegistryAccessError::Denied); + return Err(ExternalRegistryAccessError::Denied); } query.insert("from".to_string(), source.upstream_repository); Ok(()) @@ -1128,7 +1124,7 @@ async fn forward_with_artifact_registry( upload_session_repo: Option<&str>, artifact_registry: Arc, upstream_repository: &str, - admission: Option>, + admission: Option>, ) -> Response { let upstream_endpoint = artifact_registry.registry_endpoint(); @@ -1248,7 +1244,7 @@ async fn forward_raw_with_artifact_registry( upload_session_repo: Option<&str>, artifact_registry: Arc, upstream_repository: &str, - admission: Option>, + admission: Option>, ) -> Response { let upstream_endpoint = artifact_registry.registry_endpoint(); if upstream_endpoint.is_empty() { @@ -1331,7 +1327,7 @@ async fn forward_request( original_headers: &HeaderMap, body: Option, upload_session_repo: Option<&str>, - admission: Option>, + admission: Option>, ) -> Response { debug!(%method, "Forwarding registry request to upstream"); @@ -1472,7 +1468,7 @@ fn upload_session_proxy_base( upload_session_repo: Option<&str>, ) -> String { if upload_session_repo - .is_some_and(|repository| repository.starts_with(CUSTOMER_UPLOAD_SESSION_PREFIX)) + .is_some_and(|repository| repository.starts_with(EXTERNAL_UPLOAD_SESSION_PREFIX)) { configured_base_url.to_string() } else { @@ -1565,7 +1561,7 @@ fn rewrite_location_with_upload_session_auth( #[derive(Debug, Serialize, Deserialize)] #[serde(rename_all = "camelCase", deny_unknown_fields)] -struct CustomerUploadSessionContext { +struct ExternalUploadSessionContext { repository: String, route_id: String, credential_id: String, @@ -1577,18 +1573,18 @@ struct CustomerUploadSessionContext { struct VerifiedUploadSession { repository: String, - customer: Option, + external: Option, } impl VerifiedUploadSession { - fn customer_credential_id(&self) -> Option<&str> { - self.customer + fn external_credential_id(&self) -> Option<&str> { + self.external .as_ref() .map(|context| context.credential_id.as_str()) } - fn matches(&self, target: &CustomerRegistryTarget) -> bool { - self.customer.as_ref().is_none_or(|context| { + fn matches(&self, target: &ExternalRegistryTarget) -> bool { + self.external.as_ref().is_none_or(|context| { context.repository == target.external_repository && context.route_id == target.route_id && context.credential_id == target.credential_id @@ -1600,8 +1596,8 @@ impl VerifiedUploadSession { } } -fn customer_upload_session_identity(target: &CustomerRegistryTarget) -> String { - let context = CustomerUploadSessionContext { +fn external_upload_session_identity(target: &ExternalRegistryTarget) -> String { + let context = ExternalUploadSessionContext { repository: target.external_repository.clone(), route_id: target.route_id.clone(), credential_id: target.credential_id.clone(), @@ -1610,26 +1606,26 @@ fn customer_upload_session_identity(target: &CustomerRegistryTarget) -> String { upstream_repository: target.upstream_repository.clone(), upstream_endpoint: target.artifact_registry.registry_endpoint(), }; - let encoded = serde_json::to_vec(&context).expect("customer upload session context serializes"); + let encoded = serde_json::to_vec(&context).expect("external upload session context serializes"); format!( "{}{}", - CUSTOMER_UPLOAD_SESSION_PREFIX, + EXTERNAL_UPLOAD_SESSION_PREFIX, URL_SAFE_NO_PAD.encode(encoded) ) } fn parse_upload_session_identity(identity: &str) -> Option { - let Some(encoded) = identity.strip_prefix(CUSTOMER_UPLOAD_SESSION_PREFIX) else { + let Some(encoded) = identity.strip_prefix(EXTERNAL_UPLOAD_SESSION_PREFIX) else { return Some(VerifiedUploadSession { repository: identity.to_string(), - customer: None, + external: None, }); }; let encoded = URL_SAFE_NO_PAD.decode(encoded).ok()?; - let customer = serde_json::from_slice::(&encoded).ok()?; + let external = serde_json::from_slice::(&encoded).ok()?; Some(VerifiedUploadSession { - repository: customer.repository.clone(), - customer: Some(customer), + repository: external.repository.clone(), + external: Some(external), }) } @@ -1789,14 +1785,14 @@ async fn validate_pull_access( StatusCode::FORBIDDEN, "DENIED", "Registry proxy pulls require a deployment token", - )) + )); } Scope::Commands { .. } => { return Err(oci_error( StatusCode::FORBIDDEN, "DENIED", "Command credentials cannot access the registry proxy", - )) + )); } Scope::Deployment { project_id, @@ -2212,14 +2208,14 @@ mod tests { } } - fn customer_target() -> CustomerRegistryTarget { - CustomerRegistryTarget { + fn external_target() -> ExternalRegistryTarget { + ExternalRegistryTarget { route_id: "rgw_route".to_string(), credential_id: "rgc_credential".to_string(), desired_revision: 7, resource_revision: "rel_resource".to_string(), logical_repository: "api".to_string(), - external_repository: "customer/rgw_route/api".to_string(), + external_repository: "external/rgw_route/api".to_string(), upstream_repository: "upstream-api".to_string(), artifact_registry: Arc::new(SessionTestRegistry("https://registry.example")), admission: None, @@ -2229,11 +2225,11 @@ mod tests { struct SessionTestBroker; #[async_trait] - impl CustomerRegistryBroker for SessionTestBroker { + impl ExternalRegistryBroker for SessionTestBroker { async fn authenticate_probe( &self, _: Option<&str>, - ) -> Result<(), CustomerRegistryAccessError> { + ) -> Result<(), ExternalRegistryAccessError> { Ok(()) } @@ -2241,13 +2237,13 @@ mod tests { &self, _: Option<&str>, repository: &str, - _: CustomerRegistryOperation, - ) -> Result { + _: ExternalRegistryOperation, + ) -> Result { let parts = repository.split('/').collect::>(); - if parts.len() != 3 || parts[0] != "customer" { - return Err(CustomerRegistryAccessError::NotFound); + if parts.len() != 3 || parts[0] != "external" { + return Err(ExternalRegistryAccessError::NotFound); } - let mut target = customer_target(); + let mut target = external_target(); target.route_id = parts[1].to_string(); target.logical_repository = parts[2].to_string(); target.external_repository = repository.to_string(); @@ -2259,14 +2255,14 @@ mod tests { &self, _: &str, _: &str, - ) -> Result { + ) -> Result { unimplemented!() } async fn record_manifest_success( &self, - _: &CustomerRegistryTarget, - _: CustomerRegistryOperation, + _: &ExternalRegistryTarget, + _: ExternalRegistryOperation, _: &str, ) { } @@ -2379,11 +2375,11 @@ mod tests { } #[test] - fn customer_upload_continuations_ignore_forwarded_origin() { + fn external_upload_continuations_ignore_forwarded_origin() { let mut headers = HeaderMap::new(); headers.insert("x-forwarded-host", "attacker.example".parse().unwrap()); headers.insert("x-forwarded-proto", "https".parse().unwrap()); - let identity = customer_upload_session_identity(&customer_target()); + let identity = external_upload_session_identity(&external_target()); assert_eq!( upload_session_proxy_base(&headers, "https://manager.example.com", Some(&identity)), @@ -2436,9 +2432,11 @@ mod tests { } assert_eq!(generation_count.load(Ordering::SeqCst), 1); - assert!(cache - .get("https://ecr.example.test:alien-e2e:PushPull") - .is_some()); + assert!( + cache + .get("https://ecr.example.test:alien-e2e:PushPull") + .is_some() + ); } // ----------------------------------------------------------------------- @@ -2602,32 +2600,32 @@ mod tests { } #[test] - fn registry_routing_table_reserves_customer_namespace_for_private_adapter() { + fn registry_routing_table_reserves_external_namespace_for_private_adapter() { let result = RegistryRoutingTable::new(vec![registry_route( - "customer/internal", + "external/internal", Platform::Aws, "aws", )]); let Err(error) = result else { - panic!("customer namespace must be reserved"); + panic!("external namespace must be reserved"); }; - assert!(error.contains("reserved customer namespace")); + assert!(error.contains("reserved external namespace")); } #[test] - fn customer_repository_rewrite_changes_only_the_parsed_repository() { + fn external_repository_rewrite_changes_only_the_parsed_repository() { assert_eq!( rewrite_oci_repository( - "customer/route_1/team/api/manifests/latest", - "customer/route_1/team/api", + "external/route_1/team/api/manifests/latest", + "external/route_1/team/api", "upstream/team-api" ), Some("upstream/team-api/manifests/latest".to_string()) ); assert_eq!( rewrite_oci_repository( - "customer/route_2/team/api/manifests/latest", - "customer/route_1/team/api", + "external/route_2/team/api/manifests/latest", + "external/route_1/team/api", "upstream/team-api" ), None @@ -2635,18 +2633,18 @@ mod tests { } #[tokio::test] - async fn customer_cross_repository_mount_authorizes_and_rewrites_the_source() { - let broker: Arc = Arc::new(SessionTestBroker); - let destination = customer_target(); + async fn external_cross_repository_mount_authorizes_and_rewrites_the_source() { + let broker: Arc = Arc::new(SessionTestBroker); + let destination = external_target(); let mut query = HashMap::from([ ("mount".to_string(), format!("sha256:{}", "a".repeat(64))), ("from".to_string(), "source".to_string()), ]); - authorize_and_rewrite_customer_mount( + authorize_and_rewrite_external_mount( &broker, Some("Basic unused"), &axum::http::Method::POST, - "customer/rgw_route/api/blobs/uploads/", + "external/rgw_route/api/blobs/uploads/", &destination, &mut query, ) @@ -2657,44 +2655,48 @@ mod tests { Some("upstream-source") ); - query.insert("from".to_string(), "customer/rgw_other/source".to_string()); + query.insert("from".to_string(), "external/rgw_other/source".to_string()); assert_eq!( - authorize_and_rewrite_customer_mount( + authorize_and_rewrite_external_mount( &broker, Some("Basic unused"), &axum::http::Method::POST, - "customer/rgw_route/api/blobs/uploads/", + "external/rgw_route/api/blobs/uploads/", &destination, &mut query, ) .await, - Err(CustomerRegistryAccessError::Denied) + Err(ExternalRegistryAccessError::Denied) ); } #[test] - fn customer_request_target_rejects_ambiguous_paths_queries_and_framing() { + fn external_request_target_rejects_ambiguous_paths_queries_and_framing() { let headers = HeaderMap::new(); - assert!(validate_customer_request_target( - &"/v2/customer/rgw/api/manifests/latest".parse().unwrap(), - &headers, - ) - .is_ok()); + assert!( + validate_external_request_target( + &"/v2/external/rgw/api/manifests/latest".parse().unwrap(), + &headers, + ) + .is_ok() + ); for target in [ - "/v2/customer/rgw/api%2Fescape/manifests/latest", - "/v2/customer/rgw/%2e%2e/manifests/latest", - "/v2/customer/rgw/api/manifests/latest?from=a&from=b", + "/v2/external/rgw/api%2Fescape/manifests/latest", + "/v2/external/rgw/%2e%2e/manifests/latest", + "/v2/external/rgw/api/manifests/latest?from=a&from=b", ] { - assert!(validate_customer_request_target(&target.parse().unwrap(), &headers).is_err()); + assert!(validate_external_request_target(&target.parse().unwrap(), &headers).is_err()); } let mut conflicting = HeaderMap::new(); conflicting.insert("content-length", "1".parse().unwrap()); conflicting.insert("transfer-encoding", "chunked".parse().unwrap()); - assert!(validate_customer_request_target( - &"/v2/customer/rgw/api/blobs/uploads/".parse().unwrap(), - &conflicting, - ) - .is_err()); + assert!( + validate_external_request_target( + &"/v2/external/rgw/api/blobs/uploads/".parse().unwrap(), + &conflicting, + ) + .is_err() + ); } #[test] @@ -2872,11 +2874,11 @@ mod tests { } #[test] - fn customer_upload_session_is_bound_to_credential_route_revision_and_upstream() { + fn external_upload_session_is_bound_to_credential_route_revision_and_upstream() { let signing_key = b"test-registry-upload-session-key"; - let path = "/v2/customer/rgw_route/api/blobs/uploads/session-1"; - let target = customer_target(); - let identity = customer_upload_session_identity(&target); + let path = "/v2/external/rgw_route/api/blobs/uploads/session-1"; + let target = external_target(); + let identity = external_upload_session_identity(&target); let expires_at = chrono::Utc::now().timestamp() + UPLOAD_SESSION_TTL_SECONDS; let signature = sign_upload_session(signing_key, path, &identity, expires_at); let query = HashMap::from([ @@ -2893,27 +2895,27 @@ mod tests { ]); let session = verify_upload_session_auth(signing_key, path, &query) - .expect("valid customer session should verify"); - assert_eq!(session.customer_credential_id(), Some("rgc_credential")); + .expect("valid external session should verify"); + assert_eq!(session.external_credential_id(), Some("rgc_credential")); assert!(session.matches(&target)); - let mut changed = customer_target(); + let mut changed = external_target(); changed.credential_id = "rgc_rotated".to_string(); assert!(!session.matches(&changed)); - let mut changed = customer_target(); + let mut changed = external_target(); changed.desired_revision += 1; assert!(!session.matches(&changed)); - let mut changed = customer_target(); + let mut changed = external_target(); changed.resource_revision = "rel_replaced".to_string(); assert!(!session.matches(&changed)); - let mut changed = customer_target(); + let mut changed = external_target(); changed.upstream_repository = "other-upstream".to_string(); assert!(!session.matches(&changed)); - let mut changed = customer_target(); + let mut changed = external_target(); changed.artifact_registry = Arc::new(SessionTestRegistry("https://other.example")); assert!(!session.matches(&changed)); } diff --git a/crates/alien-manager/src/routes/releases.rs b/crates/alien-manager/src/routes/releases.rs index 096140419..a0368e127 100644 --- a/crates/alien-manager/src/routes/releases.rs +++ b/crates/alien-manager/src/routes/releases.rs @@ -1,11 +1,11 @@ //! Releases REST API endpoints. use axum::{ + Json, Router, extract::{Path, State}, http::{HeaderMap, StatusCode}, response::{IntoResponse, Response}, routing::{get, post}, - Json, Router, }; use serde::{Deserialize, Serialize}; @@ -16,7 +16,7 @@ use alien_core::{Platform, Stack}; use crate::error::ErrorData; use crate::traits::{CreateReleaseParams, ReleaseRecord}; -use super::{auth, AppState}; +use super::{AppState, auth}; // --- Request / Response types --- diff --git a/crates/alien-manager/src/routes/stack.rs b/crates/alien-manager/src/routes/stack.rs index fc9b60b1d..c50a91ec8 100644 --- a/crates/alien-manager/src/routes/stack.rs +++ b/crates/alien-manager/src/routes/stack.rs @@ -26,28 +26,29 @@ use std::collections::HashMap; use axum::{ + Router, extract::{Json, State}, http::{HeaderMap, StatusCode}, response::{IntoResponse, Response}, routing::post, - Router, }; use sha2::{Digest, Sha256}; use alien_core::{ + AwsEnvironmentInfo, AzureEnvironmentInfo, DeploymentConfig, DeploymentStatus, EnvironmentInfo, + EnvironmentVariablesSnapshot, ExternalBindings, GcpEnvironmentInfo, KubernetesCluster, + Platform, RESOURCE_PREFIX_ERROR_MESSAGE, RemoteStackManagement, ResourceLifecycle, + ResourceStatus, RuntimeMetadata, SetupUpdateAuthorization, Stack, StackResourceState, + StackState, import::{ - ImportContext, ImportedResource, StackImportRequest, StackImportResponse, - CURRENT_SETUP_IMPORT_FORMAT_VERSION, MIN_SUPPORTED_SETUP_IMPORT_FORMAT_VERSION, + CURRENT_SETUP_IMPORT_FORMAT_VERSION, ImportContext, ImportedResource, + MIN_SUPPORTED_SETUP_IMPORT_FORMAT_VERSION, StackImportRequest, StackImportResponse, }, - is_valid_resource_prefix, AwsEnvironmentInfo, AzureEnvironmentInfo, DeploymentConfig, - DeploymentStatus, EnvironmentInfo, EnvironmentVariablesSnapshot, ExternalBindings, - GcpEnvironmentInfo, KubernetesCluster, Platform, RemoteStackManagement, ResourceLifecycle, - ResourceStatus, RuntimeMetadata, SetupUpdateAuthorization, Stack, StackResourceState, - StackState, RESOURCE_PREFIX_ERROR_MESSAGE, + is_valid_resource_prefix, }; use alien_error::AlienError; -use super::{auth, AppState}; +use super::{AppState, auth}; use crate::auth::{Scope, Subject}; use crate::error::ErrorData; use crate::ids; diff --git a/crates/alien-manager/src/routes/sync.rs b/crates/alien-manager/src/routes/sync.rs index 5b7a31095..3dac17ac6 100644 --- a/crates/alien-manager/src/routes/sync.rs +++ b/crates/alien-manager/src/routes/sync.rs @@ -1,11 +1,11 @@ //! State sync endpoints for deployment loop coordination. use axum::{ + Router, extract::{Json, State}, http::{HeaderMap, StatusCode}, response::{IntoResponse, Response}, routing::post, - Router, }; use serde::{Deserialize, Deserializer, Serialize}; @@ -15,9 +15,9 @@ fn deserialize_bool_or_null<'de, D: Deserializer<'de>>(deserializer: D) -> Resul } use alien_core::{ - sync::{OperatorCapabilityReport, TargetDeployment}, DeploymentConfig, DeploymentModel, DeploymentState, DeploymentStatus, EnvironmentVariable, EnvironmentVariablesSnapshot, ObservedInventoryBatch, Platform, ReleaseInfo, ResourceHeartbeat, + sync::{OperatorCapabilityReport, TargetDeployment}, }; use alien_error::AlienError; @@ -28,7 +28,7 @@ use crate::traits::{ DeploymentRecord, ReconcileData, ReleaseRecord, TokenType, }; -use super::{auth, AppState}; +use super::{AppState, auth}; // --- Request / Response types --- @@ -568,9 +568,9 @@ async fn release( #[cfg(test)] mod tests { use alien_core::{ - DeploymentConfig, DeploymentState, DeploymentStatus, EnvironmentVariablesSnapshot, - ExternalBindings, Platform, ResourceHeartbeatData, RuntimeMetadata, StackSettings, - StackState, CURRENT_DEPLOYMENT_PROTOCOL_VERSION, + CURRENT_DEPLOYMENT_PROTOCOL_VERSION, DeploymentConfig, DeploymentState, DeploymentStatus, + EnvironmentVariablesSnapshot, ExternalBindings, Platform, ResourceHeartbeatData, + RuntimeMetadata, StackSettings, StackState, }; use chrono::Utc; use serde_json::json; @@ -579,11 +579,11 @@ mod tests { use crate::traits::DeploymentRecord; use super::{ + AgentSyncRequest, InitialDesiredRelease, InitializeRequest, ReconcileRequest, build_target_deployment_config, deployment_needs_target, deployment_state_from_record, deployment_target_release_id, management_platform, preserve_recorded_gate_answers, release_stack_platform, should_ignore_agent_state_report, should_return_current_state_for_agent_sync, validate_initialize_base_platform, - AgentSyncRequest, InitialDesiredRelease, InitializeRequest, ReconcileRequest, }; #[test] diff --git a/crates/alien-manager/src/routes/telemetry.rs b/crates/alien-manager/src/routes/telemetry.rs index da952c99a..92193dc8c 100644 --- a/crates/alien-manager/src/routes/telemetry.rs +++ b/crates/alien-manager/src/routes/telemetry.rs @@ -4,18 +4,18 @@ //! Deployment ID is extracted from the auth subject (deployment token). use axum::{ + Json, body::Bytes, extract::State, http::HeaderMap, response::{IntoResponse, Response}, - Json, }; use serde::Serialize; use crate::error::ErrorData; use crate::traits::{TelemetryCaller, TelemetrySignal}; -use super::{auth, AppState}; +use super::{AppState, auth}; #[derive(Debug, Serialize)] pub struct TelemetryResponse { @@ -80,7 +80,7 @@ async fn ingest( } => (deployment_id.clone(), project_id.clone()), _ => { return ErrorData::forbidden("Telemetry ingestion requires a deployment token") - .into_response() + .into_response(); } }; diff --git a/crates/alien-manager/src/routes/tokens.rs b/crates/alien-manager/src/routes/tokens.rs index e85df28bd..a20263654 100644 --- a/crates/alien-manager/src/routes/tokens.rs +++ b/crates/alien-manager/src/routes/tokens.rs @@ -1,18 +1,18 @@ //! Token management REST API endpoints. use axum::{ + Json, Router, extract::{Path, State}, http::HeaderMap, response::{IntoResponse, Response}, routing::get, - Json, Router, }; use serde::Serialize; use crate::error::ErrorData; use crate::traits::TokenRecord; -use super::{auth, AppState}; +use super::{AppState, auth}; // --- Response types --- diff --git a/crates/alien-manager/src/routes/vault.rs b/crates/alien-manager/src/routes/vault.rs index 492917854..16bb2ab05 100644 --- a/crates/alien-manager/src/routes/vault.rs +++ b/crates/alien-manager/src/routes/vault.rs @@ -8,20 +8,20 @@ //! `GET /v1/deployments/{id}/vault/{vault_name}/secrets/{key}` — get a secret use alien_bindings::{BindingsProvider, BindingsProviderApi}; -use alien_core::{bindings::VaultBinding, ManagementPermissions, Platform, Stack, StackState}; +use alien_core::{ManagementPermissions, Platform, Stack, StackState, bindings::VaultBinding}; use alien_error::{Context, ContextError, IntoAlienError}; use axum::{ + Json, Router, extract::{Path, State}, http::HeaderMap, routing::put, - Json, Router, }; use serde::{Deserialize, Serialize}; use std::{collections::HashMap, sync::Arc}; use tracing::{error, info}; -use super::auth; use super::AppState; +use super::auth; use crate::error::{ErrorData, Result}; use crate::traits::DeploymentRecord; @@ -284,8 +284,8 @@ async fn get_secret( #[cfg(test)] mod tests { use alien_core::{ - bindings::VaultBinding, permissions::PermissionProfile, Resource, ResourceStatus, Stack, - StackResourceState, Vault, + Resource, ResourceStatus, Stack, StackResourceState, Vault, bindings::VaultBinding, + permissions::PermissionProfile, }; use super::*; diff --git a/crates/alien-manager/src/routes/whoami.rs b/crates/alien-manager/src/routes/whoami.rs index 205a0e5f8..16176fd95 100644 --- a/crates/alien-manager/src/routes/whoami.rs +++ b/crates/alien-manager/src/routes/whoami.rs @@ -1,15 +1,15 @@ //! Whoami endpoint — returns identity from the unified auth Subject. use axum::{ + Json, Router, extract::State, http::HeaderMap, response::{IntoResponse, Response}, routing::get, - Json, Router, }; use serde::Serialize; -use super::{auth, AppState}; +use super::{AppState, auth}; use crate::auth::{Scope, SubjectKind}; use crate::error::ErrorData; @@ -95,7 +95,7 @@ async fn whoami(State(state): State, headers: HeaderMap) -> Response { ), Scope::Commands { .. } => { return ErrorData::forbidden("Command credentials cannot inspect manager identity") - .into_response() + .into_response(); } }; diff --git a/crates/alien-manager/tests/credentials_mint.rs b/crates/alien-manager/tests/credentials_mint.rs index 2b47baf6f..36a370aeb 100644 --- a/crates/alien-manager/tests/credentials_mint.rs +++ b/crates/alien-manager/tests/credentials_mint.rs @@ -20,37 +20,37 @@ use std::sync::atomic::{AtomicUsize, Ordering}; use std::sync::{Arc, Mutex}; use async_trait::async_trait; -use axum::body::{to_bytes, Body}; +use axum::body::{Body, to_bytes}; use axum::http::{Request, StatusCode}; use http::header; use sha2::{Digest, Sha256}; use tower::ServiceExt; +use alien_bindings::BindingsProviderApi; use alien_bindings::error::{ErrorData as BindingErrorData, Result as BindingResult}; use alien_bindings::traits::{ AwsServiceAccountInfo, AzureServiceAccountInfo, Binding, GcpServiceAccountInfo, ImpersonationRequest, ServiceAccount, ServiceAccountInfo, }; -use alien_bindings::BindingsProviderApi; use alien_bindings::{providers::kv::local::LocalKv, providers::storage::local::LocalStorage}; +use alien_commands::InMemoryCommandRegistry; use alien_commands::dispatchers::NullCommandDispatcher; use alien_commands::server::{CommandDispatcher, CommandRegistry, CommandServer}; -use alien_commands::InMemoryCommandRegistry; use alien_core::{ - AwsClientConfig, AwsCredentials, AzureClientConfig, AzureCredentials, ClientConfig, Container, - ContainerCode, GcpClientConfig, GcpCredentials, PermissionProfile, Platform, Resource, - ResourceLifecycle, ResourceSpec, ResourceStatus, RuntimeMetadata, - ServiceAccount as ServiceAccountResource, Stack, StackResourceState, StackSettings, StackState, - Storage, CURRENT_DEPLOYMENT_PROTOCOL_VERSION, + AwsClientConfig, AwsCredentials, AzureClientConfig, AzureCredentials, + CURRENT_DEPLOYMENT_PROTOCOL_VERSION, ClientConfig, Container, ContainerCode, GcpClientConfig, + GcpCredentials, PermissionProfile, Platform, Resource, ResourceLifecycle, ResourceSpec, + ResourceStatus, RuntimeMetadata, ServiceAccount as ServiceAccountResource, Stack, + StackResourceState, StackSettings, StackState, Storage, }; use alien_error::AlienError; use alien_manager::auth::{Authz, Subject}; use alien_manager::config::ManagerConfig; use alien_manager::providers::{NullTelemetryBackend, OssAuthz}; +use alien_manager::routes::AppState; use alien_manager::routes::registry_proxy::{ CredentialCache, PullValidationCache, RegistryRoutingTable, }; -use alien_manager::routes::AppState; use alien_manager::stores::sqlite::{ SqliteDatabase, SqliteDeploymentStore, SqliteReleaseStore, SqliteTokenStore, }; @@ -486,7 +486,7 @@ async fn build( registry_routing_table: Arc::new( RegistryRoutingTable::new(vec![]).expect("empty routing table is unambiguous"), ), - customer_registry_broker: None, + external_registry_broker: None, import_registry: Arc::new(alien_infra::ImporterRegistry::built_in()), }; diff --git a/crates/alien-manager/tests/credentials_mint_bootstrap.rs b/crates/alien-manager/tests/credentials_mint_bootstrap.rs index 134ed8541..30043f661 100644 --- a/crates/alien-manager/tests/credentials_mint_bootstrap.rs +++ b/crates/alien-manager/tests/credentials_mint_bootstrap.rs @@ -32,29 +32,28 @@ use std::time::Duration; use sha2::{Digest, Sha256}; use tracing_subscriber::fmt::MakeWriter; +use alien_bindings::BindingsProvider; use alien_bindings::providers::kv::local::LocalKv; use alien_bindings::providers::storage::local::LocalStorage; use alien_bindings::traits::BindingsProviderApi; -use alien_bindings::BindingsProvider; +use alien_commands::InMemoryCommandRegistry; use alien_commands::dispatchers::NullCommandDispatcher; use alien_commands::server::{CommandDispatcher, CommandRegistry, CommandServer}; -use alien_commands::InMemoryCommandRegistry; use alien_core::{ - Container, ContainerCode, PermissionProfile, Platform, ResourceLifecycle, ResourceSpec, - RuntimeMetadata, ServiceAccount, Stack, StackSettings, StackState, - CURRENT_DEPLOYMENT_PROTOCOL_VERSION, ENV_ALIEN_DEPLOYMENT_ID, + CURRENT_DEPLOYMENT_PROTOCOL_VERSION, Container, ContainerCode, ENV_ALIEN_DEPLOYMENT_ID, ENV_ALIEN_DEPLOYMENT_SERVICE_ACCOUNT, ENV_ALIEN_DEPLOYMENT_TOKEN, ENV_ALIEN_DEPLOYMENT_TYPE, - ENV_ALIEN_MANAGER_URL, ENV_ALIEN_RESOURCE_ID, + ENV_ALIEN_MANAGER_URL, ENV_ALIEN_RESOURCE_ID, PermissionProfile, Platform, ResourceLifecycle, + ResourceSpec, RuntimeMetadata, ServiceAccount, Stack, StackSettings, StackState, }; use alien_manager::auth::Subject; use alien_manager::config::ManagerConfig; use alien_manager::providers::local_credentials::LocalCredentialResolver; use alien_manager::providers::token_db_validator::TokenDbValidator; use alien_manager::providers::{NullTelemetryBackend, OssAuthz}; +use alien_manager::routes::AppState; use alien_manager::routes::registry_proxy::{ CredentialCache, PullValidationCache, RegistryRoutingTable, }; -use alien_manager::routes::AppState; use alien_manager::stores::sqlite::{ SqliteDatabase, SqliteDeploymentStore, SqliteReleaseStore, SqliteTokenStore, }; @@ -192,7 +191,7 @@ async fn build() -> Fixture { registry_routing_table: Arc::new( RegistryRoutingTable::new(vec![]).expect("empty routing table is unambiguous"), ), - customer_registry_broker: None, + external_registry_broker: None, import_registry: Arc::new(alien_infra::ImporterRegistry::built_in()), }; diff --git a/crates/alien-manager/tests/registry_proxy_cloud_test.rs b/crates/alien-manager/tests/registry_proxy_cloud_test.rs index de4b43001..aabd392c1 100644 --- a/crates/alien-manager/tests/registry_proxy_cloud_test.rs +++ b/crates/alien-manager/tests/registry_proxy_cloud_test.rs @@ -30,11 +30,12 @@ use alien_gcp_clients::{ ArtifactRegistryApi as GcpArtifactRegistryApi, ArtifactRegistryClient, GcpClientConfig, GcpCredentials, }; +use alien_manager::AlienManagerBuilder; use alien_manager::auth::{Role, Scope, Subject, SubjectKind}; use alien_manager::config::ManagerConfig; use alien_manager::routes::registry_proxy::{ - CustomerRegistryAccessError, CustomerRegistryBroker, CustomerRegistryOperation, - CustomerRegistryTarget, + ExternalRegistryAccessError, ExternalRegistryBroker, ExternalRegistryOperation, + ExternalRegistryTarget, }; use alien_manager::stores::sqlite::{ SqliteDatabase, SqliteDeploymentStore, SqliteReleaseStore, SqliteTokenStore, @@ -43,7 +44,6 @@ use alien_manager::traits::{ CreateDeploymentGroupParams, CreateDeploymentParams, CreateReleaseParams, CreateTokenParams, DeploymentStore, ReconcileData, ReleaseStore, TokenStore, TokenType, }; -use alien_manager::AlienManagerBuilder; use async_trait::async_trait; use futures_util::FutureExt as _; use sha2::{Digest, Sha256}; @@ -239,21 +239,21 @@ struct CloudProxyTest { _state_dir: tempfile::TempDir, } -struct StaticCustomerBroker { +struct StaticExternalBroker { authorization: String, - target: CustomerRegistryTarget, + target: ExternalRegistryTarget, } #[async_trait] -impl CustomerRegistryBroker for StaticCustomerBroker { +impl ExternalRegistryBroker for StaticExternalBroker { async fn authenticate_probe( &self, authorization: Option<&str>, - ) -> Result<(), CustomerRegistryAccessError> { + ) -> Result<(), ExternalRegistryAccessError> { if authorization == Some(self.authorization.as_str()) { Ok(()) } else { - Err(CustomerRegistryAccessError::Unauthorized) + Err(ExternalRegistryAccessError::Unauthorized) } } @@ -261,11 +261,11 @@ impl CustomerRegistryBroker for StaticCustomerBroker { &self, authorization: Option<&str>, repository: &str, - _operation: CustomerRegistryOperation, - ) -> Result { + _operation: ExternalRegistryOperation, + ) -> Result { self.authenticate_probe(authorization).await?; if repository != self.target.external_repository { - return Err(CustomerRegistryAccessError::NotFound); + return Err(ExternalRegistryAccessError::NotFound); } Ok(self.target.clone()) } @@ -274,19 +274,19 @@ impl CustomerRegistryBroker for StaticCustomerBroker { &self, repository: &str, credential_id: &str, - ) -> Result { + ) -> Result { if repository != self.target.external_repository || credential_id != self.target.credential_id { - return Err(CustomerRegistryAccessError::Denied); + return Err(ExternalRegistryAccessError::Denied); } Ok(self.target.clone()) } async fn record_manifest_success( &self, - _target: &CustomerRegistryTarget, - _operation: CustomerRegistryOperation, + _target: &ExternalRegistryTarget, + _operation: ExternalRegistryOperation, _digest: &str, ) { } @@ -313,7 +313,7 @@ impl CloudProxyTest { .await } - async fn start_customer( + async fn start_external( platform: Platform, binding_env_var: &str, binding_json: &str, @@ -338,7 +338,7 @@ impl CloudProxyTest { binding_json: &str, env_vars: HashMap, base_url_override: Option<(String, u16)>, - customer: Option<(String, String)>, + external: Option<(String, String)>, ) -> Self { let port = base_url_override .as_ref() @@ -428,25 +428,25 @@ impl CloudProxyTest { }; let toml_config = alien_manager::standalone_config::ManagerTomlConfig::default(); - let customer_broker = if let Some((upstream_repository, password)) = customer { + let external_broker = if let Some((upstream_repository, password)) = external { let artifact_registry = bindings_provider .load_artifact_registry("artifacts") .await - .expect("Failed to load customer ArtifactRegistry binding"); - Some(Arc::new(StaticCustomerBroker { + .expect("Failed to load external ArtifactRegistry binding"); + Some(Arc::new(StaticExternalBroker { authorization: format!("Basic {}", base64_encode(&format!("alien:{password}"))), - target: CustomerRegistryTarget { + target: ExternalRegistryTarget { route_id: "cloudroute".to_string(), credential_id: "cloudcredential".to_string(), desired_revision: 1, resource_revision: "cloud-resource-v1".to_string(), logical_repository: "application".to_string(), - external_repository: "customer/cloudroute/application".to_string(), + external_repository: "external/cloudroute/application".to_string(), upstream_repository, artifact_registry, admission: None, }, - }) as Arc) + }) as Arc) } else { None }; @@ -457,8 +457,8 @@ impl CloudProxyTest { .with_standalone_defaults(&toml_config) .await .unwrap(); - if let Some(broker) = customer_broker { - builder = builder.customer_registry_broker(broker); + if let Some(broker) = external_broker { + builder = builder.external_registry_broker(broker); } let server = builder.build().await.unwrap(); @@ -670,9 +670,9 @@ impl CloudProxyTest { info!(%repo_name, %tag, "Pull through proxy with deployment token succeeded"); } - async fn customer_push_and_pull(&self, password: &str, tag: &str) { - let repository = "customer/cloudroute/application"; - println!("Customer registry test tag: {tag}"); + async fn external_push_and_pull(&self, password: &str, tag: &str) { + let repository = "external/cloudroute/application"; + println!("External registry test tag: {tag}"); let manager_host = self.manager_url.trim_start_matches("http://"); let client = reqwest::Client::new(); let denied = client @@ -683,17 +683,17 @@ impl CloudProxyTest { .basic_auth("alien", Some("wrong-password")) .send() .await - .expect("Denied customer request should complete"); + .expect("Denied external request should complete"); assert_eq!(denied.status(), reqwest::StatusCode::UNAUTHORIZED); let wrong_route = client .get(format!( - "{}/v2/customer/other-route/application/manifests/missing", + "{}/v2/external/other-route/application/manifests/missing", self.manager_url )) .basic_auth("alien", Some(password)) .send() .await - .expect("Wrong-route customer request should complete"); + .expect("Wrong-route external request should complete"); assert_eq!(wrong_route.status(), reqwest::StatusCode::NOT_FOUND); let (image_name, tar_path) = build_test_image(manager_host, repository, &tag, 64).await; @@ -709,7 +709,7 @@ impl CloudProxyTest { }, ) .await - .expect("Customer push through proxy should succeed"); + .expect("External push through proxy should succeed"); let response = client .get(format!( @@ -724,10 +724,10 @@ impl CloudProxyTest { ) .send() .await - .expect("Customer manifest request should complete"); + .expect("External manifest request should complete"); assert!( response.status().is_success(), - "Customer manifest pull should succeed: {}", + "External manifest pull should succeed: {}", response.status() ); let advertised_digest = response @@ -742,8 +742,8 @@ impl CloudProxyTest { assert_eq!(advertised_digest, computed_digest); } serde_json::from_slice::(&manifest) - .expect("Pulled customer manifest should be valid JSON"); - info!(%repository, %tag, %computed_digest, "Customer push and pull succeeded"); + .expect("Pulled external manifest should be valid JSON"); + info!(%repository, %tag, %computed_digest, "External push and pull succeeded"); } } @@ -780,10 +780,10 @@ async fn delete_ecr_test_image( .build(), ) .await - .expect("AWS customer registry test image should be deleted"); + .expect("AWS external registry test image should be deleted"); assert!( response.failures.is_empty(), - "AWS customer registry cleanup failed: {:?}", + "AWS external registry cleanup failed: {:?}", response.failures ); } @@ -813,11 +813,11 @@ async fn delete_gar_test_package( package.to_string(), ) .await - .expect("GCP customer registry test package deletion should start"); + .expect("GCP external registry test package deletion should start"); } fn base64_encode(input: &str) -> String { - use base64::engine::{general_purpose::STANDARD, Engine}; + use base64::engine::{Engine, general_purpose::STANDARD}; STANDARD.encode(input.as_bytes()) } @@ -864,7 +864,7 @@ async fn test_proxy_push_pull_ecr() { } #[tokio::test] -async fn test_customer_proxy_push_pull_ecr() { +async fn test_external_proxy_push_pull_ecr() { let _guard = cloud_proxy_env_lock().await; load_test_env(); @@ -888,8 +888,8 @@ async fn test_customer_proxy_push_pull_ecr() { ("ALIEN_DEPLOYMENT_TYPE".into(), "aws".into()), ]); let password = format!("registry-{}", uuid::Uuid::new_v4()); - let tag = format!("customer-cloud-{}", &uuid::Uuid::new_v4().to_string()[..8]); - let test = CloudProxyTest::start_customer( + let tag = format!("external-cloud-{}", &uuid::Uuid::new_v4().to_string()[..8]); + let test = CloudProxyTest::start_external( Platform::Aws, "ALIEN_AWS_ARTIFACTS_BINDING", &binding.to_string(), @@ -898,7 +898,7 @@ async fn test_customer_proxy_push_pull_ecr() { password.clone(), ) .await; - let result = std::panic::AssertUnwindSafe(test.customer_push_and_pull(&password, &tag)) + let result = std::panic::AssertUnwindSafe(test.external_push_and_pull(&password, &tag)) .catch_unwind() .await; delete_ecr_test_image( @@ -965,7 +965,7 @@ async fn test_proxy_push_pull_gar() { } #[tokio::test] -async fn test_customer_proxy_push_pull_gar() { +async fn test_external_proxy_push_pull_gar() { let _guard = cloud_proxy_env_lock().await; load_test_env(); @@ -976,7 +976,7 @@ async fn test_customer_proxy_push_pull_gar() { let push_sa = require_env!("E2E_GCP_AR_PUSH_SA_EMAIL"); let pull_sa = require_env!("E2E_GCP_AR_PULL_SA_EMAIL"); let gar_repo_name = gar_repo_url.rsplit('/').next().unwrap_or("alien-e2e"); - let package = format!("customer-cloud-{}", &uuid::Uuid::new_v4().to_string()[..8]); + let package = format!("external-cloud-{}", &uuid::Uuid::new_v4().to_string()[..8]); let binding = serde_json::json!({ "service": "gar", "repositoryName": gar_repo_name, @@ -990,7 +990,7 @@ async fn test_customer_proxy_push_pull_gar() { ("ALIEN_DEPLOYMENT_TYPE".into(), "gcp".into()), ]); let password = format!("registry-{}", uuid::Uuid::new_v4()); - let test = CloudProxyTest::start_customer( + let test = CloudProxyTest::start_external( Platform::Gcp, "ALIEN_GCP_ARTIFACTS_BINDING", &binding.to_string(), @@ -999,7 +999,7 @@ async fn test_customer_proxy_push_pull_gar() { password.clone(), ) .await; - let result = std::panic::AssertUnwindSafe(test.customer_push_and_pull(&password, "verified")) + let result = std::panic::AssertUnwindSafe(test.external_push_and_pull(&password, "verified")) .catch_unwind() .await; delete_gar_test_package( diff --git a/crates/alien-manager/tests/stack_import.rs b/crates/alien-manager/tests/stack_import.rs index 7581edb44..f68e4e57b 100644 --- a/crates/alien-manager/tests/stack_import.rs +++ b/crates/alien-manager/tests/stack_import.rs @@ -12,16 +12,16 @@ use std::collections::HashMap; use std::sync::Arc; -use axum::body::{to_bytes, Body}; +use axum::body::{Body, to_bytes}; use axum::http::{Request, StatusCode}; use http::header; use sha2::{Digest, Sha256}; use tower::ServiceExt; use alien_bindings::providers::{kv::local::LocalKv, storage::local::LocalStorage}; +use alien_commands::InMemoryCommandRegistry; use alien_commands::dispatchers::NullCommandDispatcher; use alien_commands::server::{CommandDispatcher, CommandRegistry, CommandServer}; -use alien_commands::InMemoryCommandRegistry; use alien_core::import::{ ImportSourceKind, ImportedResource, KubernetesClusterImportData, StackImportRequest, StackImportResponse, @@ -39,10 +39,10 @@ use alien_core::{ use alien_manager::auth::Authz; use alien_manager::config::ManagerConfig; use alien_manager::providers::{NullTelemetryBackend, OssAuthz}; +use alien_manager::routes::AppState; use alien_manager::routes::registry_proxy::{ CredentialCache, PullValidationCache, RegistryRoutingTable, }; -use alien_manager::routes::AppState; use alien_manager::stores::sqlite::{ SqliteDatabase, SqliteDeploymentStore, SqliteReleaseStore, SqliteTokenStore, }; @@ -192,7 +192,7 @@ async fn make_fixture_for_platform(platform: Platform, seeded_stack: Option, depends_on: &[Expression], input_values: Expression, - setup_only: bool, ) -> Body { let depends_on_attr = (!depends_on.is_empty()).then(|| { attr( @@ -2734,14 +2736,7 @@ fn registration_body( ), attr("platform", expr::raw("local.deployment_platform")), attr("region", expr::raw("local.deployment_region")), - attr( - "management_url", - if setup_only { - Expression::String(String::new()) - } else { - expr::raw("var.management_url") - }, - ), + attr("management_url", expr::raw("var.management_url")), attr( "management_config", expr::raw("jsondecode(jsonencode(local.deployment_management_config))"), @@ -2812,14 +2807,7 @@ fn registration_body( .unwrap_or_default(), ))), ), - ( - "management_url", - if setup_only { - Expression::String(String::new()) - } else { - expr::raw("var.management_url") - }, - ), + ("management_url", expr::raw("var.management_url")), ( "management_config", expr::raw("local.deployment_management_config"), @@ -3192,7 +3180,7 @@ fn readme_required_inputs(has_registration: bool) -> String { fn readme_common_inputs(setup_only: bool) -> String { if setup_only { - return "Common optional settings:\n\n- `resource_prefix`: stable physical-name prefix. Leave empty to generate one." + return "Common optional settings:\n\n- `resource_prefix`: stable physical-name prefix. Leave empty to generate one.\n- `management_url`: management endpoint used to register this deployment. The generated installation snippet supplies the endpoint selected for the deployment target." .to_string(); } "Common optional settings:\n\n- `resource_prefix`: stable physical-name prefix. Leave empty to generate one.\n- `management_url`: optional management endpoint used by pull-style runtimes.\n- `deployment_model`: `push` or `pull`.\n- `updates_mode`: `auto` or `approval-required`.\n- `telemetry_mode`: `off`, `auto`, or `approval-required`.\n- `heartbeats_mode`: `off` or `on`.\n- `advanced_settings_json`: complete advanced deployment settings JSON. Most installs should keep the generated default.\n- `advanced_settings_overlay_json`: partial advanced settings merged over package defaults, preserving generated values such as compute selections.".to_string() @@ -3329,7 +3317,6 @@ mod tests { Some(®istration), &[], Expression::Object(Default::default()), - false, )) .expect("registration render"); assert!(registration_body.contains("resource \"example_app_deployment\" \"this\"")); diff --git a/crates/alien-terraform/tests/generator/azure_data_layer_tests.rs b/crates/alien-terraform/tests/generator/azure_data_layer_tests.rs index 7e2e7736b..17a9c021e 100644 --- a/crates/alien-terraform/tests/generator/azure_data_layer_tests.rs +++ b/crates/alien-terraform/tests/generator/azure_data_layer_tests.rs @@ -17,7 +17,7 @@ use alien_core::{ PermissionProfile, Queue, RemoteBindings, RemoteStackManagement, ResourceLifecycle, ResourceRef, ServiceAccount, Stack, StackSettings, Storage, Vault, }; -use alien_terraform::{TerraformOptions, TerraformTarget, TfRegistry, generate_terraform_module}; +use alien_terraform::{generate_terraform_module, TerraformOptions, TerraformTarget, TfRegistry}; fn resource_group() -> AzureResourceGroup { AzureResourceGroup::new("default-resource-group".to_string()).build() diff --git a/crates/alien-terraform/tests/generator/gcp_data_layer_tests.rs b/crates/alien-terraform/tests/generator/gcp_data_layer_tests.rs index e6f406ed6..d4002d54e 100644 --- a/crates/alien-terraform/tests/generator/gcp_data_layer_tests.rs +++ b/crates/alien-terraform/tests/generator/gcp_data_layer_tests.rs @@ -424,5 +424,13 @@ fn gcp_remote_ai_invoke_permissions_attach_to_access_identity() { assert!(rendered.contains("aiplatform.endpoints.predict")); assert!(rendered.contains("google_service_account.access.email")); + assert!( + rendered.contains("variable \"management_url\""), + "setup-only modules must accept the Manager selected for their deployment target" + ); + assert!( + rendered.contains("management_url = var.management_url"), + "registration must use the selected Manager rather than an empty URL" + ); assert_terraform_valid(&module, "gcp_remote_ai_invoke_permissions"); } diff --git a/crates/alien-terraform/tests/generator/snapshots/generator__generator__helpers__aws_byo_bucket.snap b/crates/alien-terraform/tests/generator/snapshots/generator__generator__helpers__aws_byo_bucket.snap index 7415b6129..2b3925054 100644 --- a/crates/alien-terraform/tests/generator/snapshots/generator__generator__helpers__aws_byo_bucket.snap +++ b/crates/alien-terraform/tests/generator/snapshots/generator__generator__helpers__aws_byo_bucket.snap @@ -41,6 +41,12 @@ variable "token" { sensitive = true } +variable "management_url" { + type = string + description = "Management endpoint used to register this deployment." + default = "" +} + variable "aws_region" { type = string description = "AWS region used by the AWS provider." @@ -172,7 +178,7 @@ resource "terraform_data" "deployment_registration" { setup_import_format_version = 1 setup_fingerprint = "" setup_fingerprint_version = 0 - management_url = "" + management_url = var.management_url management_config = local.deployment_management_config stack_settings = local.deployment_settings resources = local.deployment_resources @@ -288,6 +294,7 @@ Required: Common optional settings: - `resource_prefix`: stable physical-name prefix. Leave empty to generate one. +- `management_url`: management endpoint used to register this deployment. The generated installation snippet supplies the endpoint selected for the deployment target. AWS settings: diff --git a/crates/alien-terraform/tests/generator/snapshots/generator__generator__helpers__azure_byo_bucket.snap b/crates/alien-terraform/tests/generator/snapshots/generator__generator__helpers__azure_byo_bucket.snap index babff6ea0..172578e90 100644 --- a/crates/alien-terraform/tests/generator/snapshots/generator__generator__helpers__azure_byo_bucket.snap +++ b/crates/alien-terraform/tests/generator/snapshots/generator__generator__helpers__azure_byo_bucket.snap @@ -41,6 +41,12 @@ variable "token" { sensitive = true } +variable "management_url" { + type = string + description = "Management endpoint used to register this deployment." + default = "" +} + variable "azure_location" { type = string description = "Azure location." @@ -275,7 +281,7 @@ resource "terraform_data" "deployment_registration" { setup_import_format_version = 1 setup_fingerprint = "" setup_fingerprint_version = 0 - management_url = "" + management_url = var.management_url management_config = local.deployment_management_config stack_settings = local.deployment_settings resources = local.deployment_resources @@ -383,6 +389,7 @@ Required: Common optional settings: - `resource_prefix`: stable physical-name prefix. Leave empty to generate one. +- `management_url`: management endpoint used to register this deployment. The generated installation snippet supplies the endpoint selected for the deployment target. Azure settings: diff --git a/crates/alien-terraform/tests/generator/snapshots/generator__generator__helpers__gcp_byo_bucket.snap b/crates/alien-terraform/tests/generator/snapshots/generator__generator__helpers__gcp_byo_bucket.snap index db82e7a1c..448e64742 100644 --- a/crates/alien-terraform/tests/generator/snapshots/generator__generator__helpers__gcp_byo_bucket.snap +++ b/crates/alien-terraform/tests/generator/snapshots/generator__generator__helpers__gcp_byo_bucket.snap @@ -45,6 +45,12 @@ variable "token" { sensitive = true } +variable "management_url" { + type = string + description = "Management endpoint used to register this deployment." + default = "" +} + variable "gcp_project" { type = string description = "GCP project ID." @@ -202,7 +208,7 @@ resource "terraform_data" "deployment_registration" { setup_import_format_version = 1 setup_fingerprint = "" setup_fingerprint_version = 0 - management_url = "" + management_url = var.management_url management_config = local.deployment_management_config stack_settings = local.deployment_settings resources = local.deployment_resources @@ -311,6 +317,7 @@ Required: Common optional settings: - `resource_prefix`: stable physical-name prefix. Leave empty to generate one. +- `management_url`: management endpoint used to register this deployment. The generated installation snippet supplies the endpoint selected for the deployment target. GCP settings: diff --git a/crates/alien-terraform/tests/generator/snapshots/generator__generator__helpers__gcp_storage_remote_access.snap b/crates/alien-terraform/tests/generator/snapshots/generator__generator__helpers__gcp_storage_remote_access.snap index 1b3395ecd..3c0fc3994 100644 --- a/crates/alien-terraform/tests/generator/snapshots/generator__generator__helpers__gcp_storage_remote_access.snap +++ b/crates/alien-terraform/tests/generator/snapshots/generator__generator__helpers__gcp_storage_remote_access.snap @@ -45,6 +45,12 @@ variable "token" { sensitive = true } +variable "management_url" { + type = string + description = "Management endpoint used to register this deployment." + default = "" +} + variable "gcp_project" { type = string description = "GCP project ID." @@ -285,7 +291,7 @@ resource "terraform_data" "deployment_registration" { setup_import_format_version = 1 setup_fingerprint = "" setup_fingerprint_version = 0 - management_url = "" + management_url = var.management_url management_config = local.deployment_management_config stack_settings = local.deployment_settings resources = local.deployment_resources @@ -400,6 +406,7 @@ Required: Common optional settings: - `resource_prefix`: stable physical-name prefix. Leave empty to generate one. +- `management_url`: management endpoint used to register this deployment. The generated installation snippet supplies the endpoint selected for the deployment target. GCP settings: diff --git a/packages/bindings/scripts/remote-storage-smoke-lib.mjs b/packages/bindings/scripts/remote-storage-smoke-lib.mjs index 0293d4a2f..9a87a5d22 100644 --- a/packages/bindings/scripts/remote-storage-smoke-lib.mjs +++ b/packages/bindings/scripts/remote-storage-smoke-lib.mjs @@ -1,11 +1,6 @@ import assert from "node:assert/strict" -const requiredEnvironmentVariables = [ - "ALIEN_API_URL", - "ALIEN_API_KEY", - "ALIEN_DEPLOYMENT_ID", - "ALIEN_STORAGE_BINDING", -] +const requiredEnvironmentVariables = ["ALIEN_API_URL", "ALIEN_API_KEY", "ALIEN_STORAGE_BINDING"] const payload = Buffer.from("alien remote storage smoke") const attributes = { @@ -19,7 +14,7 @@ const attributes = { * @typedef {object} RemoteStorageSmokeConfig * @property {string} apiUrl * @property {string} apiKey - * @property {string} deploymentId + * @property {{type: "deployment", deploymentId: string} | {type: "customer", project: string, externalId: string}} selector * @property {string} storageBinding */ @@ -38,10 +33,19 @@ export function readRemoteStorageSmokeConfig(environment) { if (!value) throw new Error(`${name} is required`) return value } + const deploymentId = environment.ALIEN_DEPLOYMENT_ID?.trim() + const project = environment.ALIEN_PROJECT?.trim() + const externalId = environment.ALIEN_EXTERNAL_ID?.trim() + const hasCustomerSelector = Boolean(project && externalId) + if (Boolean(deploymentId) === hasCustomerSelector) { + throw new Error("Set either ALIEN_DEPLOYMENT_ID or both ALIEN_PROJECT and ALIEN_EXTERNAL_ID") + } return { apiUrl: required("ALIEN_API_URL"), apiKey: required("ALIEN_API_KEY"), - deploymentId: required("ALIEN_DEPLOYMENT_ID"), + selector: deploymentId + ? { type: "deployment", deploymentId } + : { type: "customer", project, externalId }, storageBinding: required("ALIEN_STORAGE_BINDING"), } } diff --git a/packages/bindings/scripts/remote-storage-smoke.mjs b/packages/bindings/scripts/remote-storage-smoke.mjs index e0e1c857b..bebb511d6 100644 --- a/packages/bindings/scripts/remote-storage-smoke.mjs +++ b/packages/bindings/scripts/remote-storage-smoke.mjs @@ -3,11 +3,19 @@ import { Bindings } from "../dist/index.js" import { readRemoteStorageSmokeConfig, verifyRemoteStorage } from "./remote-storage-smoke-lib.mjs" const config = readRemoteStorageSmokeConfig(process.env) -const bindings = await Bindings.forRemoteDeployment({ - apiBaseUrl: config.apiUrl, - deploymentId: config.deploymentId, - token: config.apiKey, -}) +const bindings = + config.selector.type === "customer" + ? await Bindings.forRemoteCustomer({ + apiBaseUrl: config.apiUrl, + project: config.selector.project, + externalId: config.selector.externalId, + token: config.apiKey, + }) + : await Bindings.forRemoteDeployment({ + apiBaseUrl: config.apiUrl, + deploymentId: config.selector.deploymentId, + token: config.apiKey, + }) const storage = bindings.storage(config.storageBinding) const object = `alien-e2e/remote-storage-smoke/${randomUUID()}/payload.txt` diff --git a/packages/bindings/scripts/remote-storage-smoke.test.mjs b/packages/bindings/scripts/remote-storage-smoke.test.mjs index 3df4e4f33..18bb6e087 100644 --- a/packages/bindings/scripts/remote-storage-smoke.test.mjs +++ b/packages/bindings/scripts/remote-storage-smoke.test.mjs @@ -70,11 +70,48 @@ describe("remote Storage smoke", () => { ).toEqual({ apiUrl: "https://api.example.com", apiKey: "token_123", - deploymentId: "dep_123", + selector: { type: "deployment", deploymentId: "dep_123" }, storageBinding: "archive", }) }) + it("accepts a stable Project and external-ID selector", () => { + expect( + readRemoteStorageSmokeConfig({ + ALIEN_API_URL: "https://api.example.com", + ALIEN_API_KEY: "token_123", + ALIEN_PROJECT: "customer-files", + ALIEN_EXTERNAL_ID: "customer_123", + ALIEN_STORAGE_BINDING: "storage", + }), + ).toMatchObject({ + selector: { + type: "customer", + project: "customer-files", + externalId: "customer_123", + }, + }) + }) + + it("rejects missing or ambiguous selectors", () => { + const common = { + ALIEN_API_URL: "https://api.example.com", + ALIEN_API_KEY: "token_123", + ALIEN_STORAGE_BINDING: "storage", + } + expect(() => readRemoteStorageSmokeConfig(common)).toThrow( + "Set either ALIEN_DEPLOYMENT_ID or both ALIEN_PROJECT and ALIEN_EXTERNAL_ID", + ) + expect(() => + readRemoteStorageSmokeConfig({ + ...common, + ALIEN_DEPLOYMENT_ID: "dep_123", + ALIEN_PROJECT: "customer-files", + ALIEN_EXTERNAL_ID: "customer_123", + }), + ).toThrow("Set either ALIEN_DEPLOYMENT_ID or both ALIEN_PROJECT and ALIEN_EXTERNAL_ID") + }) + it("checks every remote operation and verifies deletion", async () => { const fixture = fakeStorage() diff --git a/packages/bindings/src/__tests__/errors.test.ts b/packages/bindings/src/__tests__/errors.test.ts index e2cd32157..9b56580a4 100644 --- a/packages/bindings/src/__tests__/errors.test.ts +++ b/packages/bindings/src/__tests__/errors.test.ts @@ -25,13 +25,16 @@ describe("unwrapNapiError", () => { expect(err.retryable).toBe(false) }) - it("preserves code, context, and retryable for other envelope codes", () => { + it("preserves all structured metadata for other envelope codes", () => { const err = unwrapNapiError( napiError({ code: "STORAGE_OPERATION_FAILED", message: "get failed", context: { binding_name: "files", operation: "get" }, retryable: true, + internal: false, + httpStatusCode: 503, + hint: "Retry after the customer finishes setup", }), ) @@ -39,6 +42,9 @@ describe("unwrapNapiError", () => { expect(err.code).toBe("STORAGE_OPERATION_FAILED") expect(err.message).toBe("get failed") expect(err.retryable).toBe(true) + expect(err.internal).toBe(false) + expect(err.httpStatusCode).toBe(503) + expect(err.hint).toBe("Retry after the customer finishes setup") expect(err.context).toEqual({ binding_name: "files", operation: "get" }) }) diff --git a/packages/bindings/src/__tests__/factories.test.ts b/packages/bindings/src/__tests__/factories.test.ts index d71d72c45..c83416493 100644 --- a/packages/bindings/src/__tests__/factories.test.ts +++ b/packages/bindings/src/__tests__/factories.test.ts @@ -16,6 +16,9 @@ import type { function unusedRemoteBindingsHandle(): NativeAddon["RemoteBindingsHandle"] { return { + async forCustomer(): Promise { + throw new Error("unused") + }, async forDeployment(): Promise { throw new Error("unused") }, diff --git a/packages/bindings/src/__tests__/loader.test.ts b/packages/bindings/src/__tests__/loader.test.ts index 8f7f3bdc8..fddad8d7f 100644 --- a/packages/bindings/src/__tests__/loader.test.ts +++ b/packages/bindings/src/__tests__/loader.test.ts @@ -28,6 +28,9 @@ function addonReporting(version: string): NativeAddon { } const RemoteBindingsHandle: NativeAddon["RemoteBindingsHandle"] = { + async forCustomer(): Promise { + throw new Error("not used by version validation") + }, async forDeployment(): Promise { throw new Error("not used by version validation") }, diff --git a/packages/bindings/src/__tests__/remote.test.ts b/packages/bindings/src/__tests__/remote.test.ts index 93ecc8292..4993002f8 100644 --- a/packages/bindings/src/__tests__/remote.test.ts +++ b/packages/bindings/src/__tests__/remote.test.ts @@ -94,6 +94,13 @@ function fakeRemoteAddon() { } class FakeRemoteBindingsHandle implements RawRemoteBindingsHandle { + static forCustomer: ( + project: string, + externalId: string, + token: string, + apiBaseUrl?: string, + ) => Promise + static forDeployment: ( deploymentId: string, token: string, @@ -110,6 +117,15 @@ function fakeRemoteAddon() { const forRemoteDeployment = vi.fn< (deploymentId: string, token: string, apiBaseUrl?: string) => Promise >(async () => new FakeRemoteBindingsHandle()) + const forRemoteCustomer = vi.fn< + ( + project: string, + externalId: string, + token: string, + apiBaseUrl?: string, + ) => Promise + >(async () => new FakeRemoteBindingsHandle()) + FakeRemoteBindingsHandle.forCustomer = forRemoteCustomer FakeRemoteBindingsHandle.forDeployment = forRemoteDeployment return { @@ -118,6 +134,7 @@ function fakeRemoteAddon() { RemoteBindingsHandle: FakeRemoteBindingsHandle, version: () => "test", }, + forRemoteCustomer, forRemoteDeployment, resolveStorage, head, @@ -131,6 +148,28 @@ beforeEach(() => { loadAddon.mockReset() }) +describe("Bindings.forRemoteCustomer", () => { + it("forwards the Project, external ID, token, and API base URL", async () => { + const fixture = fakeRemoteAddon() + loadAddon.mockReturnValue(fixture.addon) + + const bindings = await Bindings.forRemoteCustomer({ + project: "customer-files", + externalId: "customer_123", + token: "token_123", + apiBaseUrl: "https://api.example.com", + }) + + expect(fixture.forRemoteCustomer).toHaveBeenCalledWith( + "customer-files", + "customer_123", + "token_123", + "https://api.example.com", + ) + expect(bindings.storage("storage")).toBeDefined() + }) +}) + describe("Bindings.forRemoteDeployment", () => { it("forwards discovery arguments and exposes only remote Storage", async () => { const fixture = fakeRemoteAddon() diff --git a/packages/bindings/src/errors.ts b/packages/bindings/src/errors.ts index 21b2719b8..c34b189c1 100644 --- a/packages/bindings/src/errors.ts +++ b/packages/bindings/src/errors.ts @@ -6,7 +6,7 @@ * `"GenericFailure"` and carries no information. The addon instead serializes a * structured envelope into the JS `err.message`: * - * { code, message, context?, retryable } + * { code, message, context?, retryable, internal, httpStatusCode?, hint? } * * where `context` keys are snake_case (e.g. `binding_name`, `env_var`). * `unwrapNapiError` recovers that envelope with a single `JSON.parse` — never by @@ -92,6 +92,9 @@ interface NapiErrorEnvelope { message: string context?: Record retryable?: boolean + internal?: boolean + httpStatusCode?: number + hint?: string | null } /** @@ -126,7 +129,7 @@ function parseEnvelope(rawMessage: string): NapiErrorEnvelope | undefined { * becomes {@link BindingNotConfiguredError} (with `binding` / `envVar` mapped * from the envelope's snake_case context); every other envelope code becomes a * generic `AlienError` that preserves the `code`, `message`, `context`, and - * `retryable` flag. + * `retryable`, `internal`, `httpStatusCode`, and `hint` metadata. * - A non-envelope message (napi-internal error) is wrapped as a generic * `BINDINGS_ERROR`, preserving the original message. */ @@ -165,7 +168,9 @@ export function unwrapNapiError(err: unknown): AlienError { code: envelope.code, message: envelope.message ?? rawMessage, retryable: envelope.retryable ?? false, - internal: false, + internal: envelope.internal ?? false, + httpStatusCode: envelope.httpStatusCode, + hint: envelope.hint, context, }) } diff --git a/packages/bindings/src/loader.ts b/packages/bindings/src/loader.ts index 2348f1932..71fc09868 100644 --- a/packages/bindings/src/loader.ts +++ b/packages/bindings/src/loader.ts @@ -199,6 +199,12 @@ export interface RawBindingsHandleConstructor { /** Native remote bindings class. */ export interface RawRemoteBindingsHandleConstructor { + forCustomer( + project: string, + externalId: string, + token: string, + apiBaseUrl?: string, + ): Promise forDeployment( deploymentId: string, token: string, diff --git a/packages/bindings/src/remote.ts b/packages/bindings/src/remote.ts index e22aec499..1d84123fd 100644 --- a/packages/bindings/src/remote.ts +++ b/packages/bindings/src/remote.ts @@ -44,6 +44,18 @@ export interface RemoteDeploymentBindingsOptions { apiBaseUrl?: string } +/** Options for accessing a customer's Storage by stable application ID. */ +export interface RemoteCustomerBindingsOptions { + /** Project name or ID containing the customer connection. */ + project: string + /** Stable, non-secret customer ID used when creating the Deployment Link. */ + externalId: string + /** Project-scoped Remote Bindings API token. */ + token: string + /** Override the Alien API base URL. */ + apiBaseUrl?: string +} + /** Remote bindings for an existing deployment. */ export class Bindings { readonly #storage: (name: string) => RemoteStorage @@ -60,6 +72,22 @@ export class Bindings { this.#ai = ai } + /** Select a customer's Storage by Project and stable external ID. */ + static async forRemoteCustomer(options: RemoteCustomerBindingsOptions): Promise { + try { + const addon = loadAddon() + const bindings = await addon.RemoteBindingsHandle.forCustomer( + options.project, + options.externalId, + options.token, + options.apiBaseUrl, + ) + return Bindings.fromRemoteHandle(bindings) + } catch (error) { + throw unwrapNapiError(error) + } + } + /** Discover the deployment's manager and prepare remote Storage bindings. */ static async forRemoteDeployment(options: RemoteDeploymentBindingsOptions): Promise { try { @@ -69,27 +97,33 @@ export class Bindings { options.token, options.apiBaseUrl, ) - return new Bindings( - createRemoteStorageFactory(bindings), - createRemoteKeyFactory(bindings), - async () => { - const lease = await bindings.ai() - return { - resourceId: lease.resourceId, - binding: aiBindingSchema.parse(JSON.parse(lease.bindingJson)), - clientConfig: remoteClientConfigSchema.parse(JSON.parse(lease.clientConfigJson)), - expiresAt: z.iso - .datetime({ offset: true }) - .transform(value => new Date(value)) - .parse(lease.expiresAt), - } - }, - ) + return Bindings.fromRemoteHandle(bindings) } catch (error) { throw unwrapNapiError(error) } } + private static fromRemoteHandle( + bindings: import("./loader.js").RawRemoteBindingsHandle, + ): Bindings { + return new Bindings( + createRemoteStorageFactory(bindings), + createRemoteKeyFactory(bindings), + async () => { + const lease = await bindings.ai() + return { + resourceId: lease.resourceId, + binding: aiBindingSchema.parse(JSON.parse(lease.bindingJson)), + clientConfig: remoteClientConfigSchema.parse(JSON.parse(lease.clientConfigJson)), + expiresAt: z.iso + .datetime({ offset: true }) + .transform(value => new Date(value)) + .parse(lease.expiresAt), + } + }, + ) + } + /** Resolve a remote Storage binding by resource name. */ storage(name: string): RemoteStorage { return this.#storage(name) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 32fd13fdd..aeec3a4be 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -66,20 +66,20 @@ importers: specifier: ^9.19.0 version: 9.39.5(jiti@2.7.0) globals: - specifier: ^17.0.0 - version: 17.10.0 + specifier: ^15.14.0 + version: 15.15.0 typescript: - specifier: ~5.9.0 - version: 5.9.3 + specifier: ~5.8.3 + version: 5.8.3 typescript-eslint: specifier: ^8.26.0 - version: 8.67.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) + version: 8.67.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.8.3) crates/alien-bindings-node: devDependencies: '@napi-rs/cli': specifier: ^3.0.0 - version: 3.8.6(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)(@types/node@24.13.3) + version: 3.8.6(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@24.13.3) packages/ai-gateway: dependencies: @@ -2796,6 +2796,10 @@ packages: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} + globals@15.15.0: + resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} + engines: {node: '>=18'} + globals@17.10.0: resolution: {integrity: sha512-V0kztuWST2k8A/VbxAY8+L+7+Rgo3fyA24IHRLrZp7HOzJjV0gHSaZUjK9lpP/IrBSNite2tZ1prhRkinRu1CA==} engines: {node: '>=18'} @@ -5188,6 +5192,37 @@ snapshots: - '@types/node' - supports-color + '@napi-rs/cli@3.8.6(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@24.13.3)': + dependencies: + '@inquirer/prompts': 8.5.2(@types/node@24.13.3) + '@napi-rs/cross-toolchain': 1.0.3 + '@napi-rs/wasm-tools': 1.1.0 + '@octokit/rest': 22.0.1 + clipanion: 4.0.0-rc.4(typanion@3.14.0) + colorette: 2.0.20 + es-toolkit: 1.50.0 + js-yaml: 4.3.1 + obug: 2.1.4 + semver: 7.8.5 + typanion: 3.14.0 + typescript: 6.0.3 + optionalDependencies: + '@emnapi/core': 1.9.2 + '@emnapi/runtime': 1.9.2 + transitivePeerDependencies: + - '@napi-rs/cross-toolchain-arm64-target-aarch64' + - '@napi-rs/cross-toolchain-arm64-target-armv7' + - '@napi-rs/cross-toolchain-arm64-target-ppc64le' + - '@napi-rs/cross-toolchain-arm64-target-s390x' + - '@napi-rs/cross-toolchain-arm64-target-x86_64' + - '@napi-rs/cross-toolchain-x64-target-aarch64' + - '@napi-rs/cross-toolchain-x64-target-armv7' + - '@napi-rs/cross-toolchain-x64-target-ppc64le' + - '@napi-rs/cross-toolchain-x64-target-s390x' + - '@napi-rs/cross-toolchain-x64-target-x86_64' + - '@types/node' + - supports-color + '@napi-rs/cross-toolchain@1.0.3': dependencies: '@napi-rs/lzma': 1.5.1 @@ -5833,6 +5868,22 @@ snapshots: '@types/statuses@2.0.6': optional: true + '@typescript-eslint/eslint-plugin@8.67.0(@typescript-eslint/parser@8.67.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.8.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.8.3)': + dependencies: + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.67.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.67.0 + '@typescript-eslint/type-utils': 8.67.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.8.3) + '@typescript-eslint/utils': 8.67.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.67.0 + eslint: 9.39.5(jiti@2.7.0) + ignore: 7.0.6 + natural-compare: 1.4.0 + ts-api-utils: 2.5.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/eslint-plugin@8.67.0(@typescript-eslint/parser@8.67.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 @@ -5849,6 +5900,18 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/parser@8.67.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.8.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.67.0 + '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/typescript-estree': 8.67.0(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.67.0 + debug: 4.4.3 + eslint: 9.39.5(jiti@2.7.0) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/parser@8.67.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3)': dependencies: '@typescript-eslint/scope-manager': 8.67.0 @@ -5861,6 +5924,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/project-service@8.67.0(typescript@5.8.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.67.0(typescript@5.8.3) + '@typescript-eslint/types': 8.67.0 + debug: 4.4.3 + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/project-service@8.67.0(typescript@5.9.3)': dependencies: '@typescript-eslint/tsconfig-utils': 8.67.0(typescript@5.9.3) @@ -5875,10 +5947,26 @@ snapshots: '@typescript-eslint/types': 8.67.0 '@typescript-eslint/visitor-keys': 8.67.0 + '@typescript-eslint/tsconfig-utils@8.67.0(typescript@5.8.3)': + dependencies: + typescript: 5.8.3 + '@typescript-eslint/tsconfig-utils@8.67.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 + '@typescript-eslint/type-utils@8.67.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.8.3)': + dependencies: + '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/typescript-estree': 8.67.0(typescript@5.8.3) + '@typescript-eslint/utils': 8.67.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.8.3) + debug: 4.4.3 + eslint: 9.39.5(jiti@2.7.0) + ts-api-utils: 2.5.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/type-utils@8.67.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3)': dependencies: '@typescript-eslint/types': 8.67.0 @@ -5893,6 +5981,21 @@ snapshots: '@typescript-eslint/types@8.67.0': {} + '@typescript-eslint/typescript-estree@8.67.0(typescript@5.8.3)': + dependencies: + '@typescript-eslint/project-service': 8.67.0(typescript@5.8.3) + '@typescript-eslint/tsconfig-utils': 8.67.0(typescript@5.8.3) + '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/visitor-keys': 8.67.0 + debug: 4.4.3 + minimatch: 10.2.6 + semver: 7.8.5 + tinyglobby: 0.2.17 + ts-api-utils: 2.5.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/typescript-estree@8.67.0(typescript@5.9.3)': dependencies: '@typescript-eslint/project-service': 8.67.0(typescript@5.9.3) @@ -5908,6 +6011,17 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/utils@8.67.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.8.3)': + dependencies: + '@eslint-community/eslint-utils': 4.10.1(eslint@9.39.5(jiti@2.7.0)) + '@typescript-eslint/scope-manager': 8.67.0 + '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/typescript-estree': 8.67.0(typescript@5.8.3) + eslint: 9.39.5(jiti@2.7.0) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/utils@8.67.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.10.1(eslint@9.39.5(jiti@2.7.0)) @@ -6564,6 +6678,8 @@ snapshots: globals@14.0.0: {} + globals@15.15.0: {} + globals@17.10.0: {} globby@11.1.0: @@ -7561,6 +7677,10 @@ snapshots: ts-algebra@1.2.2: {} + ts-api-utils@2.5.0(typescript@5.8.3): + dependencies: + typescript: 5.8.3 + ts-api-utils@2.5.0(typescript@5.9.3): dependencies: typescript: 5.9.3 @@ -7664,6 +7784,17 @@ snapshots: type@2.7.3: {} + typescript-eslint@8.67.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.8.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.67.0(@typescript-eslint/parser@8.67.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.8.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.8.3) + '@typescript-eslint/parser': 8.67.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.8.3) + '@typescript-eslint/typescript-estree': 8.67.0(typescript@5.8.3) + '@typescript-eslint/utils': 8.67.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.8.3) + eslint: 9.39.5(jiti@2.7.0) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + typescript-eslint@8.67.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3): dependencies: '@typescript-eslint/eslint-plugin': 8.67.0(@typescript-eslint/parser@8.67.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3)